decocms 4.502.2 → 4.502.3
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-BmpX0aJ4.js → ActiveShapeUtils-BSxdgR9C.js} +1 -1
- package/dist/client/assets/{AlertCircle-BugQG9bV.js → AlertCircle-ezsenyDA.js} +1 -1
- package/dist/client/assets/{AreaChart-C2JGxQiA.js → AreaChart-ZKSUgQFl.js} +1 -1
- package/dist/client/assets/{ArrowLeft-BsOtfvqw.js → ArrowLeft-XWagtiKt.js} +1 -1
- package/dist/client/assets/{ArrowUp-BM60-fZY.js → ArrowUp-1Pn6KcFo.js} +1 -1
- package/dist/client/assets/{BarChart-B7UShXEl.js → BarChart-DJ64O8MN.js} +1 -1
- package/dist/client/assets/{Building02-DqK4SREZ.js → Building02-DVmqpekj.js} +1 -1
- package/dist/client/assets/{CategoricalChart-B4irlNQB.js → CategoricalChart-CNSzufmI.js} +1 -1
- package/dist/client/assets/{CheckCircle-DIUFnJQp.js → CheckCircle-CN4P8qA2.js} +1 -1
- package/dist/client/assets/{ChevronSelectorVertical-CRMiEVEY.js → ChevronSelectorVertical-t7oZTVYb.js} +1 -1
- package/dist/client/assets/{ChevronUp-C9gm2RHA.js → ChevronUp-DgF_0akr.js} +1 -1
- package/dist/client/assets/{Copy01-BrqDGrTX.js → Copy01-DD7TBaxd.js} +1 -1
- package/dist/client/assets/{CreditCard01-C7MhbtAI.js → CreditCard01-BqWXWcAN.js} +1 -1
- package/dist/client/assets/{DotsVertical-DjBJNxxU.js → DotsVertical-D63daqR4.js} +1 -1
- package/dist/client/assets/{ErrorBarContext-Duc4DanJ.js → ErrorBarContext-B4iJvc9K.js} +1 -1
- package/dist/client/assets/{Globe04-Bi1qDXFD.js → Globe04-CAZFyv9C.js} +1 -1
- package/dist/client/assets/{Image01-LmX-9DTg.js → Image01-BmLj4iEQ.js} +1 -1
- package/dist/client/assets/{Key01-D7fc2of0.js → Key01-BCoXSbsF.js} +1 -1
- package/dist/client/assets/{Link01-UOxGnkqg.js → Link01-DKrKZRUt.js} +1 -1
- package/dist/client/assets/{LinkBroken01-D4fcNp0y.js → LinkBroken01-DQvdTTgG.js} +1 -1
- package/dist/client/assets/{Monitor01-zCUpqs5C.js → Monitor01-BL49Kh8w.js} +1 -1
- package/dist/client/assets/{Play-BaMMHzUS.js → Play-3PdWOSem.js} +1 -1
- package/dist/client/assets/{Plus-DBwsZRbL.js → Plus-BGSMJ3F-.js} +1 -1
- package/dist/client/assets/{SearchMd-Cz9CjV4u.js → SearchMd-gvLMH1IR.js} +1 -1
- package/dist/client/assets/{Sector-DRzP1YgK.js → Sector-B3DAIw7y.js} +1 -1
- package/dist/client/assets/{ShoppingBag01-FE4oAEwY.js → ShoppingBag01-4HryX9q-.js} +1 -1
- package/dist/client/assets/{Sun-lUDK8Dny.js → Sun-xJ1qtoxz.js} +1 -1
- package/dist/client/assets/{SwitchHorizontal01-BLoNOmQx.js → SwitchHorizontal01-CL7aXkdk.js} +1 -1
- package/dist/client/assets/{Tool01-BYtrXXg0.js → Tool01-DmCjPcwM.js} +1 -1
- package/dist/client/assets/{Trash01-DmGIq4LE.js → Trash01-B0MFAKuS.js} +1 -1
- package/dist/client/assets/{Upload01-B1KubIEG.js → Upload01-AYcSEbb9.js} +1 -1
- package/dist/client/assets/{User01-DxYW6D1x.js → User01-CvrqyM7d.js} +1 -1
- package/dist/client/assets/{UserSquare-B3hi5v4G.js → UserSquare-Bkrct5dy.js} +1 -1
- package/dist/client/assets/{Users01-Dg9yGM1q.js → Users01-DavPAvfh.js} +1 -1
- package/dist/client/assets/{XAxis-BriqOO10.js → XAxis-FlBA9n9J.js} +1 -1
- package/dist/client/assets/{XClose-D_NlSxSm.js → XClose-BIF2YR7O.js} +1 -1
- package/dist/client/assets/{ZoomOut-BpMDqvoU.js → ZoomOut-C8fNa3eF.js} +1 -1
- package/dist/client/assets/{access-gate-DawpkWaC.js → access-gate-BZb7qW2_.js} +1 -1
- package/dist/client/assets/{add-connection-dialog-lyugU_mj.js → add-connection-dialog-7u1gOtS6.js} +1 -1
- package/dist/client/assets/{agent-analytics-DEQNBU8x.js → agent-analytics-VOh2JKx_.js} +1 -1
- package/dist/client/assets/agent-app-Cy-7mlbG.js +1 -0
- package/dist/client/assets/{agent-assets-DpD_FYPJ.js → agent-assets-DfhNQhte.js} +1 -1
- package/dist/client/assets/{agent-automation-y8Q_blPP.js → agent-automation-aOpYgFy7.js} +1 -1
- package/dist/client/assets/{agent-automations-G_wOHGxQ.js → agent-automations-x4khpOSq.js} +1 -1
- package/dist/client/assets/{agent-connect-sources-0w-hFhuF.js → agent-connect-sources-CrF1lRWL.js} +1 -1
- package/dist/client/assets/agent-deck-u2JWs68G.js +1 -0
- package/dist/client/assets/{agent-e2e-DDS2OBYo.js → agent-e2e-CHwlZzp2.js} +1 -1
- package/dist/client/assets/{agent-experiments-CDaNVjiN.js → agent-experiments-DX3CG9k0.js} +1 -1
- package/dist/client/assets/{agent-file-CZwBMDPX.js → agent-file-D1m_qTrV.js} +1 -1
- package/dist/client/assets/{agent-hosting-CDM9c3HL.js → agent-hosting-Dcgfj4zI.js} +1 -1
- package/dist/client/assets/{agent-icon-Cwi3uRdu.js → agent-icon-D4A6sHBt.js} +1 -1
- package/dist/client/assets/agent-library-D67pzeYP.js +1 -0
- package/dist/client/assets/agent-library-file-CZJsu_ea.js +1 -0
- package/dist/client/assets/{agent-monitor-DgbGzFfm.js → agent-monitor-douBnctS.js} +1 -1
- package/dist/client/assets/{agent-overview-D7sXtedV.js → agent-overview-B5GH8Rkv.js} +1 -1
- package/dist/client/assets/{agent-releases-DBGhKiDv.js → agent-releases-BlVq1e_9.js} +1 -1
- package/dist/client/assets/agent-settings-5-SGNKaX.js +1 -0
- package/dist/client/assets/{agent-site-editor-CPneBPX9.js → agent-site-editor-C8GxpVWe.js} +3 -3
- package/dist/client/assets/agent-site-editor-code-D4faSpmS.js +2 -0
- package/dist/client/assets/agent-site-editor-content-BmAOigay.js +1 -0
- package/dist/client/assets/agent-site-editor-preview-DiMqUzkm.js +1 -0
- package/dist/client/assets/agent-view-CK7HM1il.js +1 -0
- package/dist/client/assets/{agent-view-guard-B7DCW97m.js → agent-view-guard-BqFtgH83.js} +1 -1
- package/dist/client/assets/{agents-list-WKtrnsCY.js → agents-list-DRk1BKzK.js} +1 -1
- package/dist/client/assets/{ai-providers-gwsES712.js → ai-providers-C1NEDtlg.js} +1 -1
- package/dist/client/assets/{alert-DD0xrZ6s.js → alert-Jt-lWiyr.js} +1 -1
- package/dist/client/assets/{alert-dialog-Cww2cCKj.js → alert-dialog-Bw24kVyb.js} +1 -1
- package/dist/client/assets/{analytics-sections-fsDdSYtz.js → analytics-sections-CSGEHq6o.js} +1 -1
- package/dist/client/assets/{api-keys-C4RupExd.js → api-keys-Dl5THCry.js} +1 -1
- package/dist/client/assets/api-keys-rr9eHiX_.js +1 -0
- package/dist/client/assets/{app-editor-BunD9Cep.js → app-editor-CwYBhRA6.js} +1 -1
- package/dist/client/assets/{asset-utils-B7vSk_IG.js → asset-utils-DWQUDlWC.js} +1 -1
- package/dist/client/assets/{auth-d1Zn25hw.js → auth-CxFoeet-.js} +1 -1
- package/dist/client/assets/{auth-catchall-DXOnI1Dn.js → auth-catchall-wTTbbvcB.js} +1 -1
- package/dist/client/assets/{auth-entry-QKE13w72.js → auth-entry-CHhgR4id.js} +1 -1
- package/dist/client/assets/{auth-split-layout-BOn9jzuY.js → auth-split-layout-DHbd5zbD.js} +1 -1
- package/dist/client/assets/{authenticate-and-persist-oauth-p8iXxMbw.js → authenticate-and-persist-oauth-D6-DRm7Z.js} +1 -1
- package/dist/client/assets/{automation-list-row-aeiODfl-.js → automation-list-row-BVDOJL2t.js} +1 -1
- package/dist/client/assets/{automation-runs-gnGbUEYl.js → automation-runs-jswuOSPW.js} +1 -1
- package/dist/client/assets/{automations-D6uaxrsR.js → automations-BPz-wjFv.js} +1 -1
- package/dist/client/assets/{autosend-DkgNxXhw.js → autosend-BP7dIixd.js} +1 -1
- package/dist/client/assets/{avatar-Bp-EkB-V.js → avatar-BmEw6w6S.js} +1 -1
- package/dist/client/assets/{badge-BIePf0xK.js → badge-DEUubLaF.js} +1 -1
- package/dist/client/assets/{block-document-D9afNZe_.js → block-document-Bybf3vEH.js} +1 -1
- package/dist/client/assets/{blocks-preview-workspace-context-CVDMxLIY.js → blocks-preview-workspace-context--3frzfSc.js} +1 -1
- package/dist/client/assets/{blocks-tab-states-Dgf9O_BB.js → blocks-tab-states-naQuVzsL.js} +3 -3
- package/dist/client/assets/{blog-schema-D_8LQntk.js → blog-schema-Cp6WcU58.js} +1 -1
- package/dist/client/assets/{board-analytics-QsikkAwD.js → board-analytics-C8ltYk1N.js} +1 -1
- package/dist/client/assets/{buckets-CELYezv2.js → buckets-bUK4w-wv.js} +1 -1
- package/dist/client/assets/{build-improve-prompt-doc-d10qBCA_.js → build-improve-prompt-doc-BhyCVv20.js} +1 -1
- package/dist/client/assets/{calendar-BnpyhDmY.js → calendar-9j-mqApB.js} +1 -1
- package/dist/client/assets/{capability-load-error-D8PnCnVx.js → capability-load-error-yDSS8G5I.js} +1 -1
- package/dist/client/assets/{category-editor-BosHSdme.js → category-editor-CsYCI60-.js} +1 -1
- package/dist/client/assets/{chart-Bv9NYntf.js → chart-DezRUEbd.js} +1 -1
- package/dist/client/assets/{chat-context-CKK4nwlA.js → chat-context-CkzpVzP2.js} +1 -1
- package/dist/client/assets/{chat-draft-BMAMpVi3.js → chat-draft-DWoo8adU.js} +1 -1
- package/dist/client/assets/{checkbox-Dwjm_TLd.js → checkbox-JNUYg61n.js} +1 -1
- package/dist/client/assets/{choose-editor-CZoejY4P.js → choose-editor-DOmwg3bb.js} +1 -1
- package/dist/client/assets/{cli-auth-success-B_GTleKO.js → cli-auth-success-CqsVLwAX.js} +1 -1
- package/dist/client/assets/{client-icons-rqhSDiCg.js → client-icons-Bwor7VIE.js} +1 -1
- package/dist/client/assets/cms-settings-editor-BQ-ZfMjM.js +1 -0
- package/dist/client/assets/{collapsible-BEHE2idT.js → collapsible-Dzdq3pSP.js} +1 -1
- package/dist/client/assets/{collection-detail-CEB1twCS.js → collection-detail-Cgelc8Mb.js} +1 -1
- package/dist/client/assets/{collection-display-button-CZETvC3F.js → collection-display-button-ByLAV5dY.js} +1 -1
- package/dist/client/assets/{collection-search-mDMHjO22.js → collection-search-Bett-OVD.js} +1 -1
- package/dist/client/assets/{collection-table-wrapper-BTz_B-8u.js → collection-table-wrapper-BwA0TEGQ.js} +1 -1
- package/dist/client/assets/{collection-tabs-C8f6Only.js → collection-tabs-DXjqVmA6.js} +1 -1
- package/dist/client/assets/{column-rules-CHHzpXer.js → column-rules-2b0FUhGT.js} +1 -1
- package/dist/client/assets/{combobox-DsvKNdY8.js → combobox-CTVgkErb.js} +1 -1
- package/dist/client/assets/{command-D2C8egnH.js → command-MB9q2Bfp.js} +1 -1
- package/dist/client/assets/{companion-mcps-section-980W-E9y.js → companion-mcps-section-WvUH8gDg.js} +1 -1
- package/dist/client/assets/{config-Df4GVvvj.js → config-BAMpwNkJ.js} +1 -1
- package/dist/client/assets/{connect-BCz-doDt.js → connect-BiJ195BR.js} +1 -1
- package/dist/client/assets/{connect-layout-dj6lGUOP.js → connect-layout-D-p04rP3.js} +1 -1
- package/dist/client/assets/{connection-CXmYeQRu.js → connection-DBgzwh-b.js} +1 -1
- package/dist/client/assets/{connection-card-BnbrpDH3.js → connection-card-C7m_7jQA.js} +1 -1
- package/dist/client/assets/{connection-detail-DgPXb5ec.js → connection-detail-BSvB999D.js} +1 -1
- package/dist/client/assets/{connection-form-helpers-a4JD1Ns8.js → connection-form-helpers-DJxQ1TYC.js} +1 -1
- package/dist/client/assets/{connections-Cywtpg_p.js → connections-BH5Tkpsh.js} +1 -1
- package/dist/client/assets/{content-tab-DJpFcjvc.js → content-tab-dqeIiRI4.js} +3 -3
- package/dist/client/assets/{context-D3qk5qiN.js → context-CtsgmNcA.js} +1 -1
- package/dist/client/assets/{context-menu-BAv_ihvH.js → context-menu-DMMg9CvV.js} +1 -1
- package/dist/client/assets/{core.esm-D0fLNP6n.js → core.esm-DEpuNZ-Z.js} +1 -1
- package/dist/client/assets/{create-organization-dialog-Dz2w339w.js → create-organization-dialog-dwl05WWi.js} +1 -1
- package/dist/client/assets/{daily-pulse-BvFEfYSA.js → daily-pulse-ZuOVF8uj.js} +1 -1
- package/dist/client/assets/{discover-LQfpS4xG.js → discover-BWl5fHPo.js} +1 -1
- package/dist/client/assets/{domain-settings-B0WV9_Uz.js → domain-settings-CPOfvf7F.js} +1 -1
- package/dist/client/assets/{drawer-C7TJoqXz.js → drawer-0WwoG1lv.js} +1 -1
- package/dist/client/assets/{editor-r9_MTJH5.js → editor-DMSnXQVS.js} +1 -1
- package/dist/client/assets/{editor-classes-B9HFPeRc.js → editor-classes-_D3aVIkt.js} +1 -1
- package/dist/client/assets/{empty-state-DXyqmsSi.js → empty-state-Ch_8FU-6.js} +1 -1
- package/dist/client/assets/{empty-state-ChkfcEnf.js → empty-state-D86dkAEs.js} +1 -1
- package/dist/client/assets/{extract-connection-data-B2gWRdBp.js → extract-connection-data-CienK9Kp.js} +1 -1
- package/dist/client/assets/{feature-gate-B6qb42zy.js → feature-gate-DxADFYEr.js} +1 -1
- package/dist/client/assets/{feature-paywall-DXx7v-jJ.js → feature-paywall-Bl1dj-EJ.js} +1 -1
- package/dist/client/assets/{file-explorer-B67HF6Wo.js → file-explorer-CByrrLxR.js} +1 -1
- package/dist/client/assets/{file-preview-Baou4Z0N.js → file-preview-DTJTxkww.js} +1 -1
- package/dist/client/assets/{file-share-button-DtVBXYxU.js → file-share-button-DS4I5txo.js} +1 -1
- package/dist/client/assets/{file-type-icon-C2mdy7vI.js → file-type-icon-CkYEjqoY.js} +1 -1
- package/dist/client/assets/flat-project-BwbxsLnc.js +1 -0
- package/dist/client/assets/{folder-icon-Bqx-rRTJ.js → folder-icon-CbWhX04z.js} +1 -1
- package/dist/client/assets/{form-DDdiF5DN.js → form-QiGH5N0B.js} +1 -1
- package/dist/client/assets/{general-JuFqcNqn.js → general-EGzzrvYz.js} +1 -1
- package/dist/client/assets/{home-UcHgTtiG.js → home-Bch3495O.js} +1 -1
- package/dist/client/assets/{hosted-publish-feedback-5DTVDnQ-.js → hosted-publish-feedback-CkiqNKkc.js} +1 -1
- package/dist/client/assets/{icon-button-DfjCa6Mk.js → icon-button-D8YCRkH3.js} +1 -1
- package/dist/client/assets/{index-D5I6z1z8.js → index-2oVSUqBv.js} +1 -1
- package/dist/client/assets/{index-BHzdhQYD.js → index-BHsQFo2r.js} +1 -1
- package/dist/client/assets/{index-sLNiMwXT.js → index-BQmgF11e.js} +1 -1
- package/dist/client/assets/{index-DCg7x8H-.js → index-BhNYHVP1.js} +1 -1
- package/dist/client/assets/{index-BlWeDA0T.js → index-C4rtGZhj.js} +3 -3
- package/dist/client/assets/{index-CCq4aC_-.js → index-C7oyzWQm.js} +3 -3
- package/dist/client/assets/{index-DrHP_BcE.js → index-C9L_7jwF.js} +1 -1
- package/dist/client/assets/{index-2M41MwRq.js → index-CsA2bVbS.js} +1 -1
- package/dist/client/assets/{index-BuXV8w2T.js → index-CswhgI6v.js} +1 -1
- package/dist/client/assets/{index-BOey0PQ3.js → index-CuaYFVYi.js} +1 -1
- package/dist/client/assets/{index-D1I5UKBv.js → index-DMvNt2yg.js} +1 -1
- package/dist/client/assets/{index-Cb4Qh-54.js → index-DtX8u4h5.js} +1 -1
- package/dist/client/assets/{index-CYLF_RCH.js → index-NEsUnXIa.js} +1 -1
- package/dist/client/assets/{index-BVXKUS4M.js → index-i3pR_VKW.js} +1 -1
- package/dist/client/assets/{index-redirect-BL8ikpY8.js → index-redirect-Ced0s2QX.js} +1 -1
- package/dist/client/assets/{index-LPxqYo8X.js → index-x_aJQLvk.js} +1 -1
- package/dist/client/assets/{infiniteQueryObserver-C9osZa8h.js → infiniteQueryObserver-DRgbaZZO.js} +1 -1
- package/dist/client/assets/{infra-billing-Cs3idU5N.js → infra-billing-DtIbIUN4.js} +1 -1
- package/dist/client/assets/{input-BSKhVE-B.js → input-Aj2kXTDz.js} +1 -1
- package/dist/client/assets/{input-3uLsKqBB.js → input-BXtqV7BY.js} +3 -3
- package/dist/client/assets/{integration-icon-BRfynNZ5.js → integration-icon-B-VuBONI.js} +1 -1
- package/dist/client/assets/{jira-icon-KByV_Mf3.js → jira-icon-hzyShKUY.js} +1 -1
- package/dist/client/assets/{label-CCf767lm.js → label-BjPw9Rfi.js} +1 -1
- package/dist/client/assets/{layout-COMw43Ge.js → layout-5pLw498Y.js} +1 -1
- package/dist/client/assets/{legacy-agents-deep-bTO0GYdo.js → legacy-agents-deep-CxZxvx2y.js} +1 -1
- package/dist/client/assets/{legacy-main-redirect-TCc947lk.js → legacy-main-redirect-C7tMt1xT.js} +1 -1
- package/dist/client/assets/library-iXbb4Z9h.js +1 -0
- package/dist/client/assets/{library-tab-BGwlABCU.js → library-tab-CMc2XXjq.js} +1 -1
- package/dist/client/assets/{login-Cs3tkGZ_.js → login-Jzazo7Mm.js} +1 -1
- package/dist/client/assets/{markdown-BRIlR7nZ.js → markdown-Fzwq5r4L.js} +1 -1
- package/dist/client/assets/{mcp-app-renderer-BdWVQtZT.js → mcp-app-renderer-CLrd0dRs.js} +1 -1
- package/dist/client/assets/{mcp-oauth-Wpa3RhmZ.js → mcp-oauth-Biav5sbQ.js} +1 -1
- package/dist/client/assets/{mcp-oauth-CbRV1ySf.js → mcp-oauth-xTPg9JeG.js} +1 -1
- package/dist/client/assets/{members-D2nKnBqd.js → members-CdvpgtKw.js} +1 -1
- package/dist/client/assets/{memory-BOidyMfA.js → memory-y9e4Ido5.js} +1 -1
- package/dist/client/assets/{mini-report-page-Dvm9KZA4.js → mini-report-page-MTRv9XKL.js} +1 -1
- package/dist/client/assets/{mock-board-D7x3oR1J.js → mock-board-CMGHUOrw.js} +1 -1
- package/dist/client/assets/{monaco-editor-CGec7a_K.js → monaco-editor-BfdWIqSi.js} +1 -1
- package/dist/client/assets/{monitoring-stats-row-BBfe42aa.js → monitoring-stats-row-DxnqczB_.js} +1 -1
- package/dist/client/assets/{multi-select-CWeD2kOU.js → multi-select-BHYZFxI5.js} +1 -1
- package/dist/client/assets/{mustache-CwHM8aj-.js → mustache-DhZE0kvx.js} +1 -1
- package/dist/client/assets/{new-project-dialog-D9WaXvgl.js → new-project-dialog-D0Tv538i.js} +1 -1
- package/dist/client/assets/{oauth-callback-ai-provider-CgO92uMO.js → oauth-callback-ai-provider-DrLQ8Q2N.js} +1 -1
- package/dist/client/assets/{oauth-callback-BdiwSco0.js → oauth-callback-po8q6AyA.js} +1 -1
- package/dist/client/assets/{onboarding-C0FoRXam.js → onboarding-DrXh1YvN.js} +1 -1
- package/dist/client/assets/{openai-conversation-DScTerkb.js → openai-conversation-BH8Fgesh.js} +1 -1
- package/dist/client/assets/{optimistic-project-sidebar-views--iSxVboR.js → optimistic-project-sidebar-views-D__5Cr6g.js} +1 -1
- package/dist/client/assets/{organization-choice-BfKg9bh6.js → organization-choice-C0En1OpW.js} +1 -1
- package/dist/client/assets/{orgs-DuBdGAZM.js → orgs-CK_DfZKd.js} +1 -1
- package/dist/client/assets/{page-seo-form-DobjM56n.js → page-seo-form-D1btP2ap.js} +1 -1
- package/dist/client/assets/{pair-Boroas12.js → pair-xLeCyNWu.js} +1 -1
- package/dist/client/assets/{plan-ladder-DRlbA6Oe.js → plan-ladder-DzICO7G_.js} +1 -1
- package/dist/client/assets/{popover-C86-20Mm.js → popover-BpfU2ryl.js} +1 -1
- package/dist/client/assets/{post-calendar-BCVyphrd.js → post-calendar-KeJhSxdr.js} +1 -1
- package/dist/client/assets/{post-editor-BcCUjE05.js → post-editor-CwWzdA0E.js} +1 -1
- package/dist/client/assets/{preview-content-Dk4Scdb5.js → preview-content-CcwX4f0y.js} +1 -1
- package/dist/client/assets/{preview-dialog-BP2Zt8Py.js → preview-dialog-B4mPpBCx.js} +1 -1
- package/dist/client/assets/{preview-panel-BGjEJtqj.js → preview-panel-DBxZxCWH.js} +1 -1
- package/dist/client/assets/{preview-tab-DJ2raYQ6.js → preview-tab-aiSzbsJL.js} +3 -3
- package/dist/client/assets/{product-picker-dialog-g66EoJ_T.js → product-picker-dialog-BiyexHdY.js} +1 -1
- package/dist/client/assets/{profile-BT5VjyCv.js → profile-DQcWjPxa.js} +1 -1
- package/dist/client/assets/{project-app-view-DmFCm9cm.js → project-app-view-Cfg5pwFE.js} +1 -1
- package/dist/client/assets/{project-feed-B4yf-56T.js → project-feed-CGmAQDLM.js} +1 -1
- package/dist/client/assets/{project-icon-CJp8KUWK.js → project-icon-BLicVbcB.js} +1 -1
- package/dist/client/assets/project-reports-BT-5gixX.js +1 -0
- package/dist/client/assets/project-tasks-BVM_y4Ay.js +1 -0
- package/dist/client/assets/{projects-7LPBT4kF.js → projects-BuXCzkbr.js} +1 -1
- package/dist/client/assets/{projects-empty-state-Bwas41PR.js → projects-empty-state-CRQsU5Mq.js} +1 -1
- package/dist/client/assets/{prompts-BVvVWZvL.js → prompts-CyMiInu-.js} +1 -1
- package/dist/client/assets/record-editor-Bh24cg7u.js +1 -0
- package/dist/client/assets/{redirect-editor-CBUBt5If.js → redirect-editor-Cft_OJ74.js} +1 -1
- package/dist/client/assets/{reports-BEw3YAN9.js → reports-DINK48W4.js} +1 -1
- package/dist/client/assets/reports-EeF58y4M.js +1 -0
- package/dist/client/assets/{reports-onboarding-C2RC2ok9.js → reports-onboarding-BlMHj-cr.js} +1 -1
- package/dist/client/assets/{reports-tab-cAMVw7Rk.js → reports-tab-CSLImW5W.js} +2 -2
- package/dist/client/assets/{repositories-C9isGzNA.js → repositories-CSth04qV.js} +1 -1
- package/dist/client/assets/{repository-binding-Ds0zXEVH.js → repository-binding-C-QRBZ2o.js} +1 -1
- package/dist/client/assets/{repository-import-picker-CJrt2Qyf.js → repository-import-picker-Ck-W8Fet.js} +1 -1
- package/dist/client/assets/{repository-picker-DoUZKYGY.js → repository-picker-D0Kp2t1m.js} +1 -1
- package/dist/client/assets/{require-capability-Canamm7b.js → require-capability-vyLDKVOB.js} +1 -1
- package/dist/client/assets/{required-auth-layout-CoQlG-uh.js → required-auth-layout-BLCp7vSK.js} +1 -1
- package/dist/client/assets/{reset-password-BIKAyV8Z.js → reset-password-DXNPcDpp.js} +1 -1
- package/dist/client/assets/{resizable-Bu_8_8YG.js → resizable-DwozeJKF.js} +1 -1
- package/dist/client/assets/{resolve-tab-icon-BYZBv0qd.js → resolve-tab-icon-CEo8MQEa.js} +1 -1
- package/dist/client/assets/{review-settings-dkP8FuZW.js → review-settings-BebeoRFU.js} +1 -1
- package/dist/client/assets/{roles-B5cvsmrd.js → roles-D-CzNTdG.js} +1 -1
- package/dist/client/assets/{route-1w9x4x4x.js → route-BWjfp1kO.js} +1 -1
- package/dist/client/assets/{route-BhzRlDpl.js → route-D1sLLo_F.js} +1 -1
- package/dist/client/assets/route-nPXlAoyw.js +1 -0
- package/dist/client/assets/{sandbox-lifecycle-context-DHjDdwbp.js → sandbox-lifecycle-context-BS-O8VCE.js} +1 -1
- package/dist/client/assets/{schema-DO5D2eCO.js → schema-BfTWP2eM.js} +1 -1
- package/dist/client/assets/{schema-D-34ICTJ.js → schema-CaduOy_B.js} +1 -1
- package/dist/client/assets/{scroll-area-BjUjV0Z5.js → scroll-area-HU3PM_-R.js} +1 -1
- package/dist/client/assets/{search-input-BaljBVL8.js → search-input-gCUrqSdC.js} +1 -1
- package/dist/client/assets/{search-toggle-BagUH5ou.js → search-toggle-BT0XOqxY.js} +1 -1
- package/dist/client/assets/{secret-ciphertext-B8vjXVJK.js → secret-ciphertext-DZXGQ0YC.js} +1 -1
- package/dist/client/assets/{secret-picker-CNgtWTyP.js → secret-picker-B2mcOvDG.js} +1 -1
- package/dist/client/assets/{secrets-Bgw4Vhpc.js → secrets-De4gayfI.js} +1 -1
- package/dist/client/assets/{sections-editor-DrdT1MI7.js → sections-editor-ZFiUMhtI.js} +1 -1
- package/dist/client/assets/{select-B54nmexC.js → select-B08ML6hj.js} +1 -1
- package/dist/client/assets/{select-model-BoCP7Le0.js → select-model-DPot5KJo.js} +1 -1
- package/dist/client/assets/{seo-editor-CReMwULk.js → seo-editor-SsRbvjPL.js} +1 -1
- package/dist/client/assets/{separator-BeOkUBr0.js → separator-B8ZUCiwI.js} +1 -1
- package/dist/client/assets/{settings-tab-D75yr9EZ.js → settings-tab-BWigvuuU.js} +1 -1
- package/dist/client/assets/{sheet-2W5SODwA.js → sheet-BgQYccYB.js} +1 -1
- package/dist/client/assets/{shell-layout-xMF7zZJW.js → shell-layout-28JRcfGc.js} +1 -1
- package/dist/client/assets/site-editor-Dpbvs0CS.js +1 -0
- package/dist/client/assets/{site-editor-toast-B6rO5nP0.js → site-editor-toast-BKnWJ7cQ.js} +1 -1
- package/dist/client/assets/{skills-C1sp0eJN.js → skills-pJFxGkQF.js} +1 -1
- package/dist/client/assets/{slider-BpixRq8v.js → slider-DjnSjzoJ.js} +1 -1
- package/dist/client/assets/{sortable.esm-B1VIDqmY.js → sortable.esm-vimQurcR.js} +1 -1
- package/dist/client/assets/{sso-B50YHclH.js → sso-COuGQVy-.js} +1 -1
- package/dist/client/assets/{suggestion-DjstHMLc.js → suggestion-DCMEkjoc.js} +1 -1
- package/dist/client/assets/{switch-ZvhKKFCY.js → switch-D548fZxN.js} +1 -1
- package/dist/client/assets/{symbol-CRqLTukg.js → symbol-d_WIAIBz.js} +1 -1
- package/dist/client/assets/{synced-repos-D0e12nej.js → synced-repos-DXRVRdeV.js} +1 -1
- package/dist/client/assets/{tab-icon-glyph-By9Irlxn.js → tab-icon-glyph-Cn1hJWKm.js} +1 -1
- package/dist/client/assets/{table-iG31aWmE.js → table-CI1oZOKj.js} +1 -1
- package/dist/client/assets/{tabs-CtKgNHMr.js → tabs-D9YXIhLT.js} +1 -1
- package/dist/client/assets/{task-board-C00mxWAh.js → task-board-DVS-070d.js} +1 -1
- package/dist/client/assets/{task-route-BCPomVVQ.js → task-route-BTeUbfS2.js} +1 -1
- package/dist/client/assets/{task-status-BDiexprl.js → task-status-CtMWxsza.js} +1 -1
- package/dist/client/assets/taskboard-analytics-BluYo63O.js +1 -0
- package/dist/client/assets/{tasks-AIRARaPK.js → tasks-CoTUYQBN.js} +1 -1
- package/dist/client/assets/tasks-Da9LhO-m.js +1 -0
- package/dist/client/assets/{textarea-BLu1V32o.js → textarea-Cm9WuKCc.js} +1 -1
- package/dist/client/assets/{thread-analytics-BMKFoeky.js → thread-analytics-C8KbYKAA.js} +1 -1
- package/dist/client/assets/{thread-intent-9GHukD-s.js → thread-intent-DWGyzG2H.js} +1 -1
- package/dist/client/assets/{thread-route-B1NXGQXt.js → thread-route-B_o5Zjl2.js} +1 -1
- package/dist/client/assets/{thread-route-CW7xmu6G.js → thread-route-CHlbKw5S.js} +1 -1
- package/dist/client/assets/{thread-sheet-body-rJHE2tap.js → thread-sheet-body-BkMk6e3g.js} +1 -1
- package/dist/client/assets/{time-range-picker-CNeKIOXx.js → time-range-picker-GZrtbU09.js} +1 -1
- package/dist/client/assets/{toggle-group-BLxmrLuD.js → toggle-group-CVV3QgOq.js} +1 -1
- package/dist/client/assets/{tool-namespace-Cu-DNTic.js → tool-namespace-JguyqV9V.js} +1 -1
- package/dist/client/assets/{toolbar-icon-button-670IDOJM.js → toolbar-icon-button-DJJccvHi.js} +1 -1
- package/dist/client/assets/{tooltip-B6W7NpVz.js → tooltip-knB_BmiO.js} +1 -1
- package/dist/client/assets/{tooltipContext-BWgKo-Vc.js → tooltipContext-B1sYDOEv.js} +1 -1
- package/dist/client/assets/{track-j7cOVNc5.js → track-BChCsB4E.js} +1 -1
- package/dist/client/assets/{types-C4NGZqb0.js → types-Tl69lmSm.js} +1 -1
- package/dist/client/assets/{url-slug-CCgQongS.js → url-slug-CzQ7Mi0G.js} +1 -1
- package/dist/client/assets/{usage-stats-2c6yVTyC.js → usage-stats-D0e4-Doz.js} +1 -1
- package/dist/client/assets/{use-ai-providers-BWqKJRmf.js → use-ai-providers-BLLCJ82i.js} +1 -1
- package/dist/client/assets/{use-app-takeover-DUugSHjQ.js → use-app-takeover-rF8JMh38.js} +1 -1
- package/dist/client/assets/{use-automations-DOCjbfCs.js → use-automations-st590zyh.js} +1 -1
- package/dist/client/assets/{use-autosave-BpEFoeBr.js → use-autosave-go0omyd9.js} +1 -1
- package/dist/client/assets/{use-chat-navigation-CmNsxQBq.js → use-chat-navigation-DrhyLHlD.js} +1 -1
- package/dist/client/assets/{use-clock-tick-B2MqiplU.js → use-clock-tick-DissHE7g.js} +1 -1
- package/dist/client/assets/{use-connect-companion-DCgJdQ-W.js → use-connect-companion-z1pYEImn.js} +1 -1
- package/dist/client/assets/{use-connection-BDpvwZcn.js → use-connection-mfEI4HYb.js} +1 -1
- package/dist/client/assets/{use-copy-_ycKA-XN.js → use-copy-BCgrYqWn.js} +1 -1
- package/dist/client/assets/{use-create-virtual-mcp-CXKmymqn.js → use-create-virtual-mcp-vIbXVTWJ.js} +1 -1
- package/dist/client/assets/{use-date-fns-locale-fMKfOMsB.js → use-date-fns-locale-CykwPDZa.js} +1 -1
- package/dist/client/assets/{use-debounced-autosave-B9xt5l_2.js → use-debounced-autosave-Xfan-H8l.js} +1 -1
- package/dist/client/assets/{use-debounced-value-ByyoTH63.js → use-debounced-value-BQw-U7yI.js} +1 -1
- package/dist/client/assets/{use-deco-credits-CT_j_qxS.js → use-deco-credits-yhiLjBMs.js} +1 -1
- package/dist/client/assets/{use-decopilot-events-Bd-4vex6.js → use-decopilot-events--SDGmxUY.js} +1 -1
- package/dist/client/assets/{use-delete-connection-DJ4nDOEg.js → use-delete-connection-BL-nx9aS.js} +1 -1
- package/dist/client/assets/{use-deployment-admin-BoLt0KCx.js → use-deployment-admin-Bj--7auC.js} +1 -1
- package/dist/client/assets/{use-ensure-project-folder-Dd1Qlz-V.js → use-ensure-project-folder-pIwHCsD5.js} +1 -1
- package/dist/client/assets/{use-fast-preview-draft-url-DZRNnF9t.js → use-fast-preview-draft-url-CQyP80WK.js} +1 -1
- package/dist/client/assets/{use-file-configs-DgLGloNq.js → use-file-configs-4iMZ7Oja.js} +1 -1
- package/dist/client/assets/{use-infinite-scroll-F7T2FF-S.js → use-infinite-scroll-BfZrsHvo.js} +1 -1
- package/dist/client/assets/{use-join-requests-DqXVwXAp.js → use-join-requests-aVVPMK5j.js} +1 -1
- package/dist/client/assets/{use-main-panel-tabs-CAJkn_vg.js → use-main-panel-tabs-uwm6yOAh.js} +1 -1
- package/dist/client/assets/{use-mcp-auth-status-2eKyky0r.js → use-mcp-auth-status-BSsISA4U.js} +1 -1
- package/dist/client/assets/{use-mcp-client-B333X4fs.js → use-mcp-client-iEvULqcR.js} +1 -1
- package/dist/client/assets/{use-mcp-prompts-P2KMjN9W.js → use-mcp-prompts-aNIE_qf0.js} +1 -1
- package/dist/client/assets/{use-mcp-tools-56vayh3K.js → use-mcp-tools-v8AMxGBw.js} +1 -1
- package/dist/client/assets/{use-members-DfdZqgw8.js → use-members-B2pgOmcT.js} +1 -1
- package/dist/client/assets/{use-mobile-hkvDmO1w.js → use-mobile-DR0ou4Mg.js} +1 -1
- package/dist/client/assets/{use-navigate-to-agent-Dzg43OKn.js → use-navigate-to-agent-ChjWG67f.js} +1 -1
- package/dist/client/assets/{use-open-billing-url-DJYL8W0U.js → use-open-billing-url-B2DuyyPV.js} +1 -1
- package/dist/client/assets/{use-org-auth-client-DROvF2zH.js → use-org-auth-client-Cy1K9alo.js} +1 -1
- package/dist/client/assets/{use-org-fs-D6VAaLCr.js → use-org-fs-B0T2bC7C.js} +1 -1
- package/dist/client/assets/{use-org-repo-syncs-DlDJxigu.js → use-org-repo-syncs-CDhTlqqP.js} +1 -1
- package/dist/client/assets/{use-org-sso-CH28wOEA.js → use-org-sso-dcnzEZJT.js} +1 -1
- package/dist/client/assets/{use-organization-roles-BQ-3VnZ-.js → use-organization-roles-DjUZ-DE_.js} +1 -1
- package/dist/client/assets/{use-organization-settings-DxTssZLI.js → use-organization-settings-CHQPn47n.js} +1 -1
- package/dist/client/assets/{use-panel-navigate-C2cHRlDL.js → use-panel-navigate-CTGXxycL.js} +1 -1
- package/dist/client/assets/{use-project-native-view-presence-bO2szMt1.js → use-project-native-view-presence-CIKytFPd.js} +1 -1
- package/dist/client/assets/{use-project-scope-BROCSZWk.js → use-project-scope-Z7wAK5MJ.js} +1 -1
- package/dist/client/assets/{use-recent-apps-DhLr7_TT.js → use-recent-apps-oeEnkRiE.js} +1 -1
- package/dist/client/assets/{use-releases-D6ba4LWy.js → use-releases-BWxjuvCL.js} +1 -1
- package/dist/client/assets/{use-reports-diagnostic-BYrSJ1-D.js → use-reports-diagnostic-xbuM_E_0.js} +1 -1
- package/dist/client/assets/{use-secrets-znuJNv0F.js → use-secrets-qjgwykUa.js} +1 -1
- package/dist/client/assets/{use-section-preview-base-CDeugTlj.js → use-section-preview-base-B5MZ5VcF.js} +1 -1
- package/dist/client/assets/{use-tags-frFveynu.js → use-tags-BH3EMa60.js} +1 -1
- package/dist/client/assets/{use-task-board-analytics-BLvo5Ioy.js → use-task-board-analytics-Tx5Fx3q9.js} +1 -1
- package/dist/client/assets/{use-task-board-events-BNCUuZ7v.js → use-task-board-events-CFP9J6zo.js} +1 -1
- package/dist/client/assets/{use-task-board-item-prs-C03gSLLs.js → use-task-board-item-prs-iw8jFozb.js} +1 -1
- package/dist/client/assets/{use-task-board-items-gTQZEpDz.js → use-task-board-items-BgANW4xl.js} +1 -1
- package/dist/client/assets/{use-task-metadata-D3ZyQdu3.js → use-task-metadata-Byl1laHV.js} +1 -1
- package/dist/client/assets/{use-thread-analytics-pc4Cx2fq.js → use-thread-analytics-BMao9ena.js} +1 -1
- package/dist/client/assets/{use-thread-outputs-BwFYAN97.js → use-thread-outputs-CnXr-3J8.js} +1 -1
- package/dist/client/assets/useInfiniteQuery-CH2YwNOR.js +1 -0
- package/dist/client/assets/{useQueries-6AB3hL0G.js → useQueries-Cc_lhKs7.js} +1 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-9FV3iOtp.js +1 -0
- package/dist/client/assets/{users-DsZm3Nkx.js → users-zpa5Z81C.js} +1 -1
- package/dist/client/assets/{utils-D-T02kS4.js → utils-DdBqTK5U.js} +1 -1
- package/dist/client/assets/{variant-calendar-DoUmbH6Q.js → variant-calendar-BVMnrVNl.js} +1 -1
- package/dist/client/assets/{variant-draft-pointer-CGTqYMj8.js → variant-draft-pointer-DXvQS9LN.js} +1 -1
- package/dist/client/assets/{view-mode-toggle-BM2WBWnv.js → view-mode-toggle-B-G_ZgpR.js} +1 -1
- package/dist/client/assets/{virtual-mcp-CM_cNcV_.js → virtual-mcp-B_ndt1aK.js} +1 -1
- package/dist/client/assets/{watch-sse-pool-C1f9T3Cq.js → watch-sse-pool-BGVIlM9_.js} +1 -1
- package/dist/client/index.html +1 -1
- package/dist/server/server.js +1 -1
- package/package.json +1 -1
- package/dist/client/assets/agent-app-B_p1zClu.js +0 -1
- package/dist/client/assets/agent-deck-Bv4Ea3n5.js +0 -1
- package/dist/client/assets/agent-library-B8Kx2dH6.js +0 -1
- package/dist/client/assets/agent-library-file-D6BfiqFR.js +0 -1
- package/dist/client/assets/agent-settings-CYtLsqfY.js +0 -1
- package/dist/client/assets/agent-site-editor-code-CoA0Y8Pm.js +0 -2
- package/dist/client/assets/agent-site-editor-content-B6s0vW0K.js +0 -1
- package/dist/client/assets/agent-site-editor-preview-Deycj8Hn.js +0 -1
- package/dist/client/assets/agent-view-DKBEZHZf.js +0 -1
- package/dist/client/assets/api-keys-DIX6Wq_J.js +0 -1
- package/dist/client/assets/cms-settings-editor-B950DCbJ.js +0 -1
- package/dist/client/assets/flat-project-CqneD8tb.js +0 -1
- package/dist/client/assets/library-D9_ShewK.js +0 -1
- package/dist/client/assets/project-reports-D8ocu1pR.js +0 -1
- package/dist/client/assets/project-tasks-DJVmaqrl.js +0 -1
- package/dist/client/assets/record-editor-DywGKfn_.js +0 -1
- package/dist/client/assets/reports-wAXvk8Rj.js +0 -1
- package/dist/client/assets/route-y_BiPuKo.js +0 -1
- package/dist/client/assets/site-editor-BpVflMAH.js +0 -1
- package/dist/client/assets/taskboard-analytics-dOoDSrcB.js +0 -1
- package/dist/client/assets/tasks-D17PyrkT.js +0 -1
- package/dist/client/assets/useInfiniteQuery-Z8R3F4Sd.js +0 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-CccYtrDO.js +0 -1
package/dist/server/server.js
CHANGED
|
@@ -4376,7 +4376,7 @@ ${X}`:`${Y}
|
|
|
4376
4376
|
|
|
4377
4377
|
${X}
|
|
4378
4378
|
${J.slice(Y.length).trimStart()}`}function RL8($){return $?.match(CG5)?.[1]?.toLowerCase()??null}async function bG5($,Z,Q){let[Y,X]=await Promise.all([$.client.listDecofileEntries(Z,$.packagePath),$.client.listDecofileEntries(Q,$.packagePath)]),J=new Map(vK(Y,$.packagePath).map((H)=>[H.path,H.sha])),G=vK(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 qL8($,Z){try{return await e70($.client,$.packagePath,Z)}catch(Q){if(Q instanceof ro)return null;throw Q}}async function ML8($,Z,Q){let Y=YP($.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([qL8($,Z),qL8($,Q)]);return G!==W}async function VL8($,Z){if(!hB0(Z))throw new Vu;if(!await m21($.store,$.site,Z))throw new Vu}async function IL8($,Z){await VL8($,Z);let Q=await e5($.client,$.mainBranch);return ML8($,Q,Z)}async function kL8($,Z,Q={},Y={}){await VL8($,Z);let X=await $.client.readCommit(Z);if(!X)throw new Vu;let J=await e5($.client,$.mainBranch),G=await bG5($,J,Z);if(G.changes.length===0)return{result:"up-to-date"};let W=await ML8($,J,Z);if(W)console.info("hosted reapply: schema differs",{site:$.site,target:Z,head:J});let K=await d21($,J,G,vG5(X,Z,Q.coAuthor));return{result:"merged",sha:K,release:await n21($,K,Y),schemaChanged:W}}var Vu,ZQ0="Reapply: ",IG5,kG5="Reapplied-From",CG5;var r21=L(()=>{cp();T5();CF();tN();$Q0();Ry0();Vu=class Vu extends Error{constructor(){super("This commit has no release");this.name="NotPublishedError"}};IG5=/^chore\(decofile\):/,CG5=/^Reapplied-From:\s*([0-9a-f]{40})\s*$/im});async function CL8($,Z,Q){let[Y,X,J]=await Promise.all([FL8($.store,$.site),jT$($.store,$.site),Z.listCommits({ref:$.mainBranch,since:fG5,cursor:Q,limit:xG5})]),G=new Map(J.items.map((H)=>[H.sha,H.date])),W=J.items.map((H)=>RL8(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 SL8($){let Z=await e5($.client,$.mainBranch),Q=await i21($,Z),Y={revision:Z,schemaHash:Q,publishedAt:new Date().toISOString()};return await p21($,Y),Y}var xG5=50,fG5="1970-01-01T00:00:00Z";var _L8=L(()=>{T5();tN();$Q0();r21()});function vL8($){return`site-tokens:${$}`}function yG5($){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 bL8($){return crypto.subtle.importKey("pkcs8",Buffer.from($,"base64"),{name:"Ed25519"},!1,["sign"])}async function gG5($,Z){let Q=(J)=>a21(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}.${a21(X)}`}function xL8($){let Z=async(Q,Y)=>yG5(await $.kv.get(Q,vL8(Y)));return{list:Z,async issue(Q,Y){let X=await Z(Q,Y),J={kid:a21(crypto.getRandomValues(new Uint8Array(16))),iat:Math.floor(Date.now()/1000)},G=await gG5(await $.signingKey(),{site:Y,...J});return await $.kv.set(Q,vL8(Y),{tokens:[...X,J]}),{token:G,record:J}}}}var a21=($)=>Buffer.from($ instanceof Uint8Array?$:new Uint8Array($)).toString("base64url");function uG5(){let $=Qp();return $?{store:$,purge:Ay0()}:null}async function Cy0($){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 fL8($){let Z=B0().siteTokenSigningKey;if(!Z)return null;return xL8({kv:$.var.studioContext.storage.kv,signingKey:()=>bL8(Z)})}function Zs($,Z){let Q=Z instanceof Error?Z.message:String(Z);if(Z instanceof ro)return $.json({error:Q},409);if(Z instanceof My0)return console.error("hosted: latest.json update failed",{error:Q}),$.json({error:"latest-update-failed"},502);let Y=IG(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 yL8($={}){let Z=new Z1,Q=$.repoClientFor??CG,Y=$.insightsFor??SA$,X=$.delivery??uG5;return Z.use("*",async(J,G)=>{J.set("repoClientFor",Q),J.set("delivery",X),await G()}),Z.use("/:virtualMcpId/*",hG5),Z.get("/:virtualMcpId/releases",async(J)=>{try{let G=await Cy0(J);if(!G)return J.json(ky0,503);let W=J.get("hostedProject"),K=await Y(J.var.studioContext,W.organizationId,W.repository);return J.json(await CL8(G,K,J.req.query("cursor")??null),200,{"Cache-Control":"no-store"})}catch(G){return Zs(J,G)}}),Z.post("/:virtualMcpId/releases/retry",async(J)=>{try{let G=await Cy0(J);if(!G)return J.json(ky0,503);return J.json({current:await SL8(G)})}catch(G){return Zs(J,G)}}),Z.get("/:virtualMcpId/releases/:sha/reapply",async(J)=>{try{let G=await Cy0(J);if(!G)return J.json(ky0,503);return J.json({schemaChanged:await IL8(G,J.req.param("sha"))})}catch(G){if(G instanceof Vu)return J.json({error:G.message},404);return Zs(J,G)}}),Z.post("/:virtualMcpId/releases/:sha/reapply",async(J)=>{try{let G=await Cy0(J);if(!G)return J.json(ky0,503);let W=await kL8(G,J.req.param("sha"),{coAuthor:iL(J.var.studioContext)});return J.json(W)}catch(G){if(G instanceof Vu)return J.json({error:G.message},404);if(G instanceof ao)return J.json({error:"main-moved"},409);return Zs(J,G)}}),Z.get("/:virtualMcpId/site-tokens",async(J)=>{let G=J.get("hostedProject"),W=fL8(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=fL8(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 hq(K,G.packagePath,await K.getDefaultBranch());if(await Jp(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 Zs(J,K)}}),Z}var hG5,ky0;var gL8=L(()=>{RF();G8();Gy0();RK();MF();T5();tN();c21();$Q0();Ry0();_L8();r21();E60();uq();Xp();i1();wR();hG5=fo(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 UX(Q,Y.id,"cms"))return $.json({error:"This organization's plan does not include the CMS",code:"feature_not_in_plan"},403);let X=$.req.param("virtualMcpId")??"",J=await Q.storage.virtualMcps.findById(X);if(!J||J.organization_id!==Y.id)return $.json({error:"Virtual MCP not found"},404);if(!MQ(await r7(Q),X))return $.json({error:"Virtual MCP not found"},404);let G=J.metadata??null,W=a3(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 mB0({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 Zs($,H)}let K=await cB0(Q.storage.orgSites,X,Y.id);if(!K)return $.json(Yp,409);return $.set("hostedProject",{organizationId:Y.id,virtualMcpId:X,site:K,packagePath:oN(G),repository:W,metadata:G}),Z()}),ky0={error:"hosted delivery not configured"}});var hL8=($)=>{let Z=new Z1;if(Z.use("*",No),Z.use("*",wH8),Z.route("/",LH8($.voiceSessions)),Z.route("/",Lf0()),Z.route("/",dH8()),Z.route("/",QF8()),Z.route("/",hH8()),Z.route("/",GB8()),Z.route("/",KB8()),Z.route("/",aN8()),Z.route("/",XB8()),Z.route("/",$B8()),Z.route("/",Yy0()),Z.route("/tools",LB8()),Z.route("/",NB8()),Z.route("/",_N8({kvStorage:$.kvStorage})),Z.route("/",CN8()),Z.route("/fs",mN8({getConnection:$.getNatsConnection})),Z.route("/sandbox",dD8()),Z.route("/decofile",AL8()),Z.route("/hosted",yL8()),Z.route("/",oN8()),Z.route("/",iN8()),Z.route("/deco-sites",wf0()),Z.route("/hosting",IH8()),Z.route("/monitor",xH8()),Z.route("/sso",Hf0()),Z.route("/",Xy0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",TH8()),$.mountDevAssets)Z.route("/dev-assets",zf0({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 oz1)Z.use(`${Q}/:threadId`,$.mcpAuth);Z.route("/",N38()),Z.get("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",$.betterAuthProtectedResourceHandler),Z.get("/mcp/.well-known/oauth-protected-resource",$.betterAuthProtectedResourceHandler);for(let Q of oz1)Z.route(Q,nN8());return Z.route("/mcp",jb0()),Z.route("/mcp/self",ef0()),Z.route("/mcp",zb0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var uL8=L(()=>{G8();OH8();jH8();ax0();qH8();TP1();kH8();fH8();Af0();ez();jP1();iH8();IP1();SN8();vN8();dN8();pN8();qZ0();HP1();Ab0();tz1();tN8();sN8();eN8();ZB8();az1();WB8();HB8();BB8();ez1();OB8();$21();Eb0();iD8();TL8();gL8()});import{z as Iu}from"zod";class e21{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 mL8.Kvm(Sy0.jetstream($)).create("STUDIO_VOICE_SESSIONS",{storage:Sy0.StorageType.Memory,ttl:dL8.nanos(FO),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"?cL8.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=lL8.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,lL8.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"?cL8.parse(G.json()):null;if(G&&W?.state==="ready"&&W.agentId===Q)await X.delete(J,{previousSeq:G.revision}).catch(()=>{});throw Y}}}var Sy0,mL8,dL8,lL8,cL8;var iL8=L(()=>{FG();AB();n$();Sy0=_(kH(),1),mL8=_(Lq(),1),dL8=_(C2(),1),lL8=new TextEncoder,cL8=Iu.discriminatedUnion("state",[Iu.object({state:Iu.literal("ready"),agentId:Iu.string()}),Iu.object({state:Iu.literal("creating"),expiresAt:Iu.number()})])});import{z as Qs}from"zod";function lG5($){return{model:$.model,instructions:`${On$}
|
|
4379
|
-
Start in ${$.language==="pt"?"Brazilian Portuguese":"English"}, and follow the user's language.`,delegation:{type:"client"},audio:{output:{voice:$.voice}},store:!1}}class $A1{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:lG5({...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:Qs.object({session:Qs.object({id:Qs.string().min(1)}),transport:Qs.object({type:Qs.literal("webrtc"),sdp:Qs.string().min(1).max(1e5)})}).parse(await Z.json()).transport.sdp}}}var pL8=L(()=>{AB()});var nL8;var tL8=L(()=>{nL8=[{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 ZA1($){return{conversation_config:{agent:{first_message:"",language:"en",prompt:{prompt:Dn$,llm:$.conversationModel,thinking_budget:0,max_tokens:512,tools:nL8.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:FO/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 oL8=L(()=>{AB();tL8()});import{z as mJ}from"zod";import{createHash as cG5,createHmac as mG5}from"crypto";class _y0{config;conversationKey;configurationKey;constructor($){this.config=$;this.configurationKey=cG5("sha256").update(JSON.stringify(ZA1($))).digest("hex"),this.conversationKey=mG5("sha256",$.apiKey).update(this.configurationKey).digest("hex")}forConversationModel($){return $===this.config.conversationModel?this:new _y0({...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}=mJ.object({agents:mJ.array(mJ.object({agent_id:mJ.string(),name:mJ.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 mJ.object({platform_settings:mJ.object({auth:mJ.object({enable_auth:mJ.literal(!0)})})}).parse(await J.json()),Y.agent_id}let X=await this.request("/convai/agents/create",{name:$,...ZA1(this.config)},AbortSignal.timeout(15000));return mJ.object({agent_id:mJ.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 mJ.object({token:mJ.string().min(1)}).parse(await Z.json()).token}async createTranscriptionToken(){let $=await this.request("/single-use-token/realtime_scribe",{},AbortSignal.timeout(15000));return mJ.object({token:mJ.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 sL8=L(()=>{oL8()});import{createHmac as dG5,timingSafeEqual as iG5}from"crypto";import{z as Ys}from"zod";function aL8($,Z){if(!Z)throw Error("Voice requires a shared authentication secret");return dG5("sha256",Z).update(`studio-voice-session:v1:${$}`).digest("base64url")}function eL8($,Z){let Q=Buffer.from(JSON.stringify(rL8.parse($))).toString("base64url");return`${Q}.${aL8(Q,Z)}`}function $O8($,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(aL8(X,Z)),W=Buffer.from(J);if(W.length!==G.length||!iG5(W,G))return null;try{let K=rL8.safeParse(JSON.parse(Buffer.from(X,"base64url").toString()));if(!K.success||K.data.expiresAt<=Q||K.data.expiresAt>Q+FO)return null;return K.data}catch{return null}}var rL8;var ZO8=L(()=>{AB();rL8=Ys.object({sessionId:Ys.string().uuid(),organizationId:Ys.string().min(1).max(256),userId:Ys.string().min(1).max(256),threadId:Ys.string().min(1).max(256),expiresAt:Ys.number().int().positive()})});import{z as QA1}from"zod";function QO8($,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 YA1.parse({provider:Q,model:Z?.voice_model??(Q==="openai"?$.openaiLiveModel:$.elevenlabsConversationModel)})}var YA1;var YO8=L(()=>{YA1=QA1.object({provider:QA1.enum(["elevenlabs","openai"]),model:QA1.string().trim().min(1).max(128)})});import{createHash as pG5}from"crypto";import{z as Xs}from"zod";function Js($){return`user.${pG5("sha256").update(JSON.stringify([$.organizationId,$.userId])).digest("hex")}`}class JA1{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 XO8.Kvm(by0.jetstream($)).create("STUDIO_VOICE_SESSIONS",{storage:by0.StorageType.Memory,ttl:JO8.nanos(FO),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=QO8(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()+FO},W=eL8(G,this.deps.secret),K=await this.kv(),H=Js(G),F=await K.get(H),U=F?.operation==="PUT"?vy0.parse(F.json()):null,N=XA1.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:Js($)});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=$O8(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=Js(Q),J=await Y.get(X),G=J?.operation==="PUT"?vy0.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,XA1.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=Js(X);for(let W=0;;W++){let K=await J.get(G),H=K?.operation==="PUT"?vy0.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,XA1.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(Js($));if(Q?.operation==="PUT"&&vy0.parse(Q.json()).sessionId===$.sessionId)await Z.delete(Js($),{previousSeq:Q.revision})}async revoke($,Z){await this.release(this.authorize($,Z))}}var by0,XO8,JO8,vy0,XA1;var GO8=L(()=>{FG();AB();ZO8();YO8();by0=_(kH(),1),XO8=_(Lq(),1),JO8=_(C2(),1),vy0=Xs.object({sessionId:Xs.string().uuid(),expiresAt:Xs.number(),connected:Xs.boolean().optional(),conversation:YA1.optional(),characters:Xs.number().int().nonnegative(),requests:Xs.number().int().nonnegative()}),XA1=new TextEncoder});function nG5($){return $.filter((Z)=>Z.vendors?.alias).map((Z)=>({name:Z.name,title:Z.title,description:Z.description,logo:Z.logo,category:Z.category,vendor:{alias:Z.vendors.alias,url:Z.vendors.url}}))}var tG5=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},WO8=()=>{let $=new Z1;return $.use("*",tG5),$.get("/",async(Z)=>{let Q=B0(),Y=Q.decoSupabaseUrl,X=Q.decoSupabaseServiceKey;if(!Y||!X)return Z.json({apps:[]});try{let J=await wX(Y,X,"apps?select=name,title,description,logo,category,vendors(alias,url)");return Z.json({apps:nG5(J)})}catch(J){return console.error("[deco-apps] GET error:",J),Z.json({error:"Failed to fetch apps"},502)}}),$};var KO8=L(()=>{G8();i1();T60()});import{z as c1}from"zod";function nB($,Z="invalid_request_error",Q=null,Y=null){return{error:{message:$,type:Z,param:Q,code:Y}}}function X35($){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 J35($,Z,Q){try{return JSON.parse($)}catch{throw new UO8(`Invalid JSON in tool call arguments for function '${Q}' (tool_call_id: ${Z}): ${$}`)}}function G35($){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:J35(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 W35($){let Z=$.map((Q)=>{let Y=Q.function.parameters?wN(Q.function.parameters):wN({type:"object",properties:{}});return[Q.function.name,o$({description:Q.function.description,inputSchema:Y})]});return Object.fromEntries(Z)}function K35($){if(!$)return;return{openai:{response_format:$}}}function H35(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function HO8($,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 FO8($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var oG5=256,sG5,rG5,aG5,eG5,$35,Z35,Q35,Y35,UO8,NO8,BO8;var DO8=L(()=>{l4();G8();xo();YU();sG5=c1.object({type:c1.literal("function"),function:c1.object({name:c1.string(),description:c1.string().optional(),parameters:c1.record(c1.string(),c1.unknown()).optional()})}),rG5=c1.object({id:c1.string(),type:c1.literal("function"),function:c1.object({name:c1.string(),arguments:c1.string()})}),aG5=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(rG5).optional()}),c1.object({role:c1.literal("tool"),content:c1.string(),tool_call_id:c1.string()})]),eG5=c1.object({type:c1.literal("text")}),$35=c1.object({type:c1.literal("json_object")}),Z35=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()})}),Q35=c1.union([eG5,$35,Z35]),Y35=c1.object({model:c1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:c1.array(aG5),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(sG5).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:Q35.optional(),user:c1.string().optional()});UO8=class UO8 extends Error{constructor($){super($);this.name="MessageConversionError"}};NO8=new Z1;NO8.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),Q=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(nB("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(nB("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(nB("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Y=await $.req.json(),X=Y35.safeParse(Y);if(!X.success){let w=X.error.issues[0]??{message:"Invalid request",path:[]};return $.json(nB(`Invalid request: ${w.message}`,"invalid_request_error",w.path.length>0?w.path.join("."):null),400)}let J=X.data,G=X35(J.model);if(!G)return $.json(nB("Invalid model format. Expected 'model_id' or 'credential_id:model_id' (e.g., 'claude-sonnet-4-6' or 'key_abc123:claude-sonnet-4-6')","invalid_request_error","model"),400);let{credentialId:W}=G,{modelId:K}=G;if(!W){let j=(await Z.storage.aiProviderKeys.list({organizationId:Z.organization.id})).find((E)=>TA(E.providerId));if(!j)return $.json(nB("No AI provider credentials configured for this organization. Add a credential in settings or specify one explicitly via 'credential_id:model_id'.","invalid_request_error","model"),400);W=j.id}let H;try{H=await Z.aiProviders.activate(W,Z.organization.id)}catch{return $.json(nB(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(K),U=G35(J.messages),N=J.tools?W35(J.tools):void 0,B=K35(J.response_format),D=H35(),O=Math.floor(Date.now()/1000);if(J.stream)return $w($,async(w)=>{let j=HO8(F,U,N,J,B,$.req.raw.signal);try{let E=dn(j),P=!1,T=0,z="",A=async()=>{if(z.length===0)return;let R=z;z="",await w.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 w.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>=oG5)await A()}else if(R.type==="tool-call"){await A();let f=T++;await w.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 w.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:O,model:J.model,choices:[{index:0,delta:{},finish_reason:FO8(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 w.writeSSE({data:"[DONE]"})}catch(E){let P=E;console.error("[openai-compat:stream] Error:",P.message),await w.writeSSE({data:JSON.stringify({error:{message:P.message,type:"server_error"}})})}});else{let w=HO8(F,U,N,J,B,$.req.raw.signal),j=await DO(w),E={role:"assistant",content:j.text||null};if(j.toolCalls&&j.toolCalls.length>0)E.tool_calls=j.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:FO8(j.finishReason)}],usage:{prompt_tokens:j.usage?.inputTokens??0,completion_tokens:j.usage?.outputTokens??0,total_tokens:j.usage?.totalTokens??0}})}}catch(Y){let X=Y;if(X.name==="AbortError")return $.json(nB("Request aborted","invalid_request_error"),400);if(X.name==="MessageConversionError")return $.json(nB(X.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",X.message,X.stack),$.json(nB(X.message,"server_error"),500)}});BO8=NO8});function F35($){if(typeof $!=="object"||$===null)return!1;let Q=$.repository?.url;return typeof Q==="string"&&Q.length>0}function LO8(){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=_0(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||u9(H))continue;let F=await Q.storage.virtualMcps.list(H.id);for(let U of F){if(IA(U)!==J)continue;if(!F35(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 OO8=L(()=>{G8();oY()});var xy0;var GA1=L(()=>{xy0={name:"decocms",version:"4.502.2",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run 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.4.0","@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 B35(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??N35}}var wO8,N35="https://ph.studio.decocms.com",jO8;var EO8=L(()=>{G8();t00();hh();P9();i1();oE1();GA1();wO8=new Z1;wO8.get("/",($)=>{let Z={version:xy0.version,theme:VG$(),...GF().logo&&{logo:GF().logo},...qO()&&{internalUrl:t0$()},...B0().enableDecoImport&&{enableDecoImport:!0},hostingEnabled:!!B0().controlplaneRestUrl&&!!B0().controlplaneServiceToken,hostingControlPlaneGa:B0().hostingControlPlaneGa,monitorEnabled:!!B0().clickhouseAnalyticsUrl&&!!B0().clickhouseAnalyticsPassword,monitorGa:B0().monitorGa,plansEnabled:B0().plansEnabled,auth:WK8(),posthog:B35(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:wU()}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});jO8=wO8});import{z as R$}from"zod";var D35,PO8;var zO8=L(()=>{D35=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())}),PO8=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(D35)})),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 AO8($,Z,Q){let Y=Q?`?${new URLSearchParams({lang:Q}).toString()}`:"";return`${MK({})}/api/v2/public/diagnostics/${encodeURIComponent($)}/onepager${Z}${Y}`}async function fy0($,Z={}){let Q=await fetch(AO8($,"",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 PO8.parse(await Q.json())}async function TO8($,Z={}){let Q=await fetch(AO8($,".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 WA1=L(()=>{zO8();RL()});import{join as qO8}from"path";async function O35($){try{let Z=await fy0($,{signal:AbortSignal.timeout(L35)});if(!Z?.scanned_at)return null;return{brand:Z.brand.trim()||dw1($),...Z.score!==null?{score:Z.score}:{}}}catch{return null}}function eG($){return $.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""")}function w35($,Z){let Q=Ku($),Y=Z?.brand?.trim()||dw1(Q),X=GJ8(Q,128),G=`${(B0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(Q)}`,{title:W,description:K}=WJ8({brand:Y,domain:Q,score:Z?.score}),H=`${G}/og.png`,F=`${Y} Deco Score by decocms`;return[`<title>${eG(W)}</title>`,`<meta name="description" content="${eG(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="${eG(W)}" />`,`<meta property="og:description" content="${eG(K)}" />`,`<meta property="og:url" content="${eG(G)}" />`,`<meta property="og:image" content="${eG(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${eG(F)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${eG(W)}" />`,`<meta name="twitter:description" content="${eG(K)}" />`,`<meta name="twitter:image" content="${eG(H)}" />`,`<meta name="twitter:image:alt" content="${eG(F)}" />`,`<link rel="canonical" href="${eG(G)}" />`,`<link rel="alternate" type="text/markdown" href="${eG(G)}.md" />`,`<link rel="icon" href="${eG(X)}" sizes="any" />`].join(`
|
|
4379
|
+
Start in ${$.language==="pt"?"Brazilian Portuguese":"English"}, and follow the user's language.`,delegation:{type:"client"},audio:{output:{voice:$.voice}},store:!1}}class $A1{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:lG5({...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:Qs.object({session:Qs.object({id:Qs.string().min(1)}),transport:Qs.object({type:Qs.literal("webrtc"),sdp:Qs.string().min(1).max(1e5)})}).parse(await Z.json()).transport.sdp}}}var pL8=L(()=>{AB()});var nL8;var tL8=L(()=>{nL8=[{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 ZA1($){return{conversation_config:{agent:{first_message:"",language:"en",prompt:{prompt:Dn$,llm:$.conversationModel,thinking_budget:0,max_tokens:512,tools:nL8.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:FO/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 oL8=L(()=>{AB();tL8()});import{z as mJ}from"zod";import{createHash as cG5,createHmac as mG5}from"crypto";class _y0{config;conversationKey;configurationKey;constructor($){this.config=$;this.configurationKey=cG5("sha256").update(JSON.stringify(ZA1($))).digest("hex"),this.conversationKey=mG5("sha256",$.apiKey).update(this.configurationKey).digest("hex")}forConversationModel($){return $===this.config.conversationModel?this:new _y0({...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}=mJ.object({agents:mJ.array(mJ.object({agent_id:mJ.string(),name:mJ.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 mJ.object({platform_settings:mJ.object({auth:mJ.object({enable_auth:mJ.literal(!0)})})}).parse(await J.json()),Y.agent_id}let X=await this.request("/convai/agents/create",{name:$,...ZA1(this.config)},AbortSignal.timeout(15000));return mJ.object({agent_id:mJ.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 mJ.object({token:mJ.string().min(1)}).parse(await Z.json()).token}async createTranscriptionToken(){let $=await this.request("/single-use-token/realtime_scribe",{},AbortSignal.timeout(15000));return mJ.object({token:mJ.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 sL8=L(()=>{oL8()});import{createHmac as dG5,timingSafeEqual as iG5}from"crypto";import{z as Ys}from"zod";function aL8($,Z){if(!Z)throw Error("Voice requires a shared authentication secret");return dG5("sha256",Z).update(`studio-voice-session:v1:${$}`).digest("base64url")}function eL8($,Z){let Q=Buffer.from(JSON.stringify(rL8.parse($))).toString("base64url");return`${Q}.${aL8(Q,Z)}`}function $O8($,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(aL8(X,Z)),W=Buffer.from(J);if(W.length!==G.length||!iG5(W,G))return null;try{let K=rL8.safeParse(JSON.parse(Buffer.from(X,"base64url").toString()));if(!K.success||K.data.expiresAt<=Q||K.data.expiresAt>Q+FO)return null;return K.data}catch{return null}}var rL8;var ZO8=L(()=>{AB();rL8=Ys.object({sessionId:Ys.string().uuid(),organizationId:Ys.string().min(1).max(256),userId:Ys.string().min(1).max(256),threadId:Ys.string().min(1).max(256),expiresAt:Ys.number().int().positive()})});import{z as QA1}from"zod";function QO8($,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 YA1.parse({provider:Q,model:Z?.voice_model??(Q==="openai"?$.openaiLiveModel:$.elevenlabsConversationModel)})}var YA1;var YO8=L(()=>{YA1=QA1.object({provider:QA1.enum(["elevenlabs","openai"]),model:QA1.string().trim().min(1).max(128)})});import{createHash as pG5}from"crypto";import{z as Xs}from"zod";function Js($){return`user.${pG5("sha256").update(JSON.stringify([$.organizationId,$.userId])).digest("hex")}`}class JA1{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 XO8.Kvm(by0.jetstream($)).create("STUDIO_VOICE_SESSIONS",{storage:by0.StorageType.Memory,ttl:JO8.nanos(FO),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=QO8(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()+FO},W=eL8(G,this.deps.secret),K=await this.kv(),H=Js(G),F=await K.get(H),U=F?.operation==="PUT"?vy0.parse(F.json()):null,N=XA1.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:Js($)});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=$O8(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=Js(Q),J=await Y.get(X),G=J?.operation==="PUT"?vy0.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,XA1.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=Js(X);for(let W=0;;W++){let K=await J.get(G),H=K?.operation==="PUT"?vy0.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,XA1.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(Js($));if(Q?.operation==="PUT"&&vy0.parse(Q.json()).sessionId===$.sessionId)await Z.delete(Js($),{previousSeq:Q.revision})}async revoke($,Z){await this.release(this.authorize($,Z))}}var by0,XO8,JO8,vy0,XA1;var GO8=L(()=>{FG();AB();ZO8();YO8();by0=_(kH(),1),XO8=_(Lq(),1),JO8=_(C2(),1),vy0=Xs.object({sessionId:Xs.string().uuid(),expiresAt:Xs.number(),connected:Xs.boolean().optional(),conversation:YA1.optional(),characters:Xs.number().int().nonnegative(),requests:Xs.number().int().nonnegative()}),XA1=new TextEncoder});function nG5($){return $.filter((Z)=>Z.vendors?.alias).map((Z)=>({name:Z.name,title:Z.title,description:Z.description,logo:Z.logo,category:Z.category,vendor:{alias:Z.vendors.alias,url:Z.vendors.url}}))}var tG5=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},WO8=()=>{let $=new Z1;return $.use("*",tG5),$.get("/",async(Z)=>{let Q=B0(),Y=Q.decoSupabaseUrl,X=Q.decoSupabaseServiceKey;if(!Y||!X)return Z.json({apps:[]});try{let J=await wX(Y,X,"apps?select=name,title,description,logo,category,vendors(alias,url)");return Z.json({apps:nG5(J)})}catch(J){return console.error("[deco-apps] GET error:",J),Z.json({error:"Failed to fetch apps"},502)}}),$};var KO8=L(()=>{G8();i1();T60()});import{z as c1}from"zod";function nB($,Z="invalid_request_error",Q=null,Y=null){return{error:{message:$,type:Z,param:Q,code:Y}}}function X35($){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 J35($,Z,Q){try{return JSON.parse($)}catch{throw new UO8(`Invalid JSON in tool call arguments for function '${Q}' (tool_call_id: ${Z}): ${$}`)}}function G35($){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:J35(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 W35($){let Z=$.map((Q)=>{let Y=Q.function.parameters?wN(Q.function.parameters):wN({type:"object",properties:{}});return[Q.function.name,o$({description:Q.function.description,inputSchema:Y})]});return Object.fromEntries(Z)}function K35($){if(!$)return;return{openai:{response_format:$}}}function H35(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function HO8($,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 FO8($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var oG5=256,sG5,rG5,aG5,eG5,$35,Z35,Q35,Y35,UO8,NO8,BO8;var DO8=L(()=>{l4();G8();xo();YU();sG5=c1.object({type:c1.literal("function"),function:c1.object({name:c1.string(),description:c1.string().optional(),parameters:c1.record(c1.string(),c1.unknown()).optional()})}),rG5=c1.object({id:c1.string(),type:c1.literal("function"),function:c1.object({name:c1.string(),arguments:c1.string()})}),aG5=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(rG5).optional()}),c1.object({role:c1.literal("tool"),content:c1.string(),tool_call_id:c1.string()})]),eG5=c1.object({type:c1.literal("text")}),$35=c1.object({type:c1.literal("json_object")}),Z35=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()})}),Q35=c1.union([eG5,$35,Z35]),Y35=c1.object({model:c1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:c1.array(aG5),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(sG5).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:Q35.optional(),user:c1.string().optional()});UO8=class UO8 extends Error{constructor($){super($);this.name="MessageConversionError"}};NO8=new Z1;NO8.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),Q=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(nB("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(nB("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(nB("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Y=await $.req.json(),X=Y35.safeParse(Y);if(!X.success){let w=X.error.issues[0]??{message:"Invalid request",path:[]};return $.json(nB(`Invalid request: ${w.message}`,"invalid_request_error",w.path.length>0?w.path.join("."):null),400)}let J=X.data,G=X35(J.model);if(!G)return $.json(nB("Invalid model format. Expected 'model_id' or 'credential_id:model_id' (e.g., 'claude-sonnet-4-6' or 'key_abc123:claude-sonnet-4-6')","invalid_request_error","model"),400);let{credentialId:W}=G,{modelId:K}=G;if(!W){let j=(await Z.storage.aiProviderKeys.list({organizationId:Z.organization.id})).find((E)=>TA(E.providerId));if(!j)return $.json(nB("No AI provider credentials configured for this organization. Add a credential in settings or specify one explicitly via 'credential_id:model_id'.","invalid_request_error","model"),400);W=j.id}let H;try{H=await Z.aiProviders.activate(W,Z.organization.id)}catch{return $.json(nB(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(K),U=G35(J.messages),N=J.tools?W35(J.tools):void 0,B=K35(J.response_format),D=H35(),O=Math.floor(Date.now()/1000);if(J.stream)return $w($,async(w)=>{let j=HO8(F,U,N,J,B,$.req.raw.signal);try{let E=dn(j),P=!1,T=0,z="",A=async()=>{if(z.length===0)return;let R=z;z="",await w.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 w.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>=oG5)await A()}else if(R.type==="tool-call"){await A();let f=T++;await w.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 w.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:O,model:J.model,choices:[{index:0,delta:{},finish_reason:FO8(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 w.writeSSE({data:"[DONE]"})}catch(E){let P=E;console.error("[openai-compat:stream] Error:",P.message),await w.writeSSE({data:JSON.stringify({error:{message:P.message,type:"server_error"}})})}});else{let w=HO8(F,U,N,J,B,$.req.raw.signal),j=await DO(w),E={role:"assistant",content:j.text||null};if(j.toolCalls&&j.toolCalls.length>0)E.tool_calls=j.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:FO8(j.finishReason)}],usage:{prompt_tokens:j.usage?.inputTokens??0,completion_tokens:j.usage?.outputTokens??0,total_tokens:j.usage?.totalTokens??0}})}}catch(Y){let X=Y;if(X.name==="AbortError")return $.json(nB("Request aborted","invalid_request_error"),400);if(X.name==="MessageConversionError")return $.json(nB(X.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",X.message,X.stack),$.json(nB(X.message,"server_error"),500)}});BO8=NO8});function F35($){if(typeof $!=="object"||$===null)return!1;let Q=$.repository?.url;return typeof Q==="string"&&Q.length>0}function LO8(){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=_0(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||u9(H))continue;let F=await Q.storage.virtualMcps.list(H.id);for(let U of F){if(IA(U)!==J)continue;if(!F35(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 OO8=L(()=>{G8();oY()});var xy0;var GA1=L(()=>{xy0={name:"decocms",version:"4.502.3",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.4.0","@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 B35(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??N35}}var wO8,N35="https://ph.studio.decocms.com",jO8;var EO8=L(()=>{G8();t00();hh();P9();i1();oE1();GA1();wO8=new Z1;wO8.get("/",($)=>{let Z={version:xy0.version,theme:VG$(),...GF().logo&&{logo:GF().logo},...qO()&&{internalUrl:t0$()},...B0().enableDecoImport&&{enableDecoImport:!0},hostingEnabled:!!B0().controlplaneRestUrl&&!!B0().controlplaneServiceToken,hostingControlPlaneGa:B0().hostingControlPlaneGa,monitorEnabled:!!B0().clickhouseAnalyticsUrl&&!!B0().clickhouseAnalyticsPassword,monitorGa:B0().monitorGa,plansEnabled:B0().plansEnabled,auth:WK8(),posthog:B35(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:wU()}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});jO8=wO8});import{z as R$}from"zod";var D35,PO8;var zO8=L(()=>{D35=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())}),PO8=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(D35)})),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 AO8($,Z,Q){let Y=Q?`?${new URLSearchParams({lang:Q}).toString()}`:"";return`${MK({})}/api/v2/public/diagnostics/${encodeURIComponent($)}/onepager${Z}${Y}`}async function fy0($,Z={}){let Q=await fetch(AO8($,"",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 PO8.parse(await Q.json())}async function TO8($,Z={}){let Q=await fetch(AO8($,".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 WA1=L(()=>{zO8();RL()});import{join as qO8}from"path";async function O35($){try{let Z=await fy0($,{signal:AbortSignal.timeout(L35)});if(!Z?.scanned_at)return null;return{brand:Z.brand.trim()||dw1($),...Z.score!==null?{score:Z.score}:{}}}catch{return null}}function eG($){return $.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""")}function w35($,Z){let Q=Ku($),Y=Z?.brand?.trim()||dw1(Q),X=GJ8(Q,128),G=`${(B0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(Q)}`,{title:W,description:K}=WJ8({brand:Y,domain:Q,score:Z?.score}),H=`${G}/og.png`,F=`${Y} Deco Score by decocms`;return[`<title>${eG(W)}</title>`,`<meta name="description" content="${eG(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="${eG(W)}" />`,`<meta property="og:description" content="${eG(K)}" />`,`<meta property="og:url" content="${eG(G)}" />`,`<meta property="og:image" content="${eG(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${eG(F)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${eG(W)}" />`,`<meta name="twitter:description" content="${eG(K)}" />`,`<meta name="twitter:image" content="${eG(H)}" />`,`<meta name="twitter:image:alt" content="${eG(F)}" />`,`<link rel="canonical" href="${eG(G)}" />`,`<link rel="alternate" type="text/markdown" href="${eG(G)}.md" />`,`<link rel="icon" href="${eG(X)}" sizes="any" />`].join(`
|
|
4380
4380
|
`)}function j35($,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}
|
|
4381
4381
|
</head>`)}function RO8($){let Z=new Z1;return Z.get("/:domain/og.png",async(Q)=>{let Y=Ku(Q.req.param("domain")),X=async()=>{let J=$?Bun.file(qO8($,"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(`${MK({})}/api/v2/public/diagnostics/${encodeURIComponent(Y)}/og.png`,{signal:AbortSignal.timeout(E35)}),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=Ku(Q.req.param("file").replace(/\.md$/,""));try{let X=await TO8(Y,{lang:Q.req.query("lang")?.trim()||void 0,signal:AbortSignal.timeout(P35)});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=$?qO8($,"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 O35(Ku(Y)),K=w35(Y,W);return Q.html(j35(G,K),200,{"Cache-Control":"public, max-age=0, s-maxage=300"})}catch{return Q.html(G)}}),Z}var L35=2500,E35=1e4,P35=1e4;var MO8=L(()=>{G8();RL();WA1();i1()});function yy0($,Z){return fetch(`${MK({})}${$}`,Z)}async function z35($,Z){let Q=await fy0($,{lang:Z});if(!Q)return{status:"not_found",report:null};return Q.scanned_at?{status:"ready",report:Q}:{status:"empty",report:null}}function T35($){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 A35,Qw,VO8=async($,Z)=>{if(!$.get("reportUser"))return $.json({error:"Authentication required"},401);await Z();return},IO8;var kO8=L(()=>{G8();lK();RL();WA1();A35=new Set(["complete","errored","terminated","unknown"]);Qw=new Z1;Qw.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});Qw.use("/link-token/*",VO8);Qw.use("/suggest",VO8);Qw.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 z35(Z,Q))}catch{return $.json({error:"report read failed"},502)}});Qw.post("/run",async($)=>{let Z=$.get("reportUser"),Q;try{Q=await $.req.json()}catch{return $.json({error:"invalid JSON"},400)}let{domain:Y,distinctId:X}=T35(Q);if(!Y)return $.json({error:"domain is required"},400);let J=Z?.email;try{let G=await yy0("/api/v2/diagnostics/run",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${nE({})}`},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)}});Qw.get("/status",async($)=>{let Z=$.req.query("id");if(!Z)return $.json({error:"id is required"},400);try{let Q=await yy0(`/api/v2/diagnostics/status?id=${encodeURIComponent(Z)}`,{headers:{Authorization:`Bearer ${nE({})}`}});if(!Q.ok)return $.json({error:`status HTTP ${Q.status}`},502);let X=(await Q.json()).status??"unknown",J={done:A35.has(X),status:X};return $.json(J)}catch{return $.json({error:"status failed"},502)}});Qw.get("/link-token/:id",async($)=>{let Z=$.req.param("id");try{let Q=await yy0(`/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)}});Qw.get("/suggest",async($)=>{let Z=($.req.query("q")??"").trim().slice(0,64);if(Z.length<2)return $.json({suggestions:[]});try{let Q=await yy0(`/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:[]})}});IO8=Qw});var q35=1048576,KA1;var CO8=L(()=>{G8();IW();i1();bE1();KA1=new Z1;KA1.post("/webhook",u6({maxSize:q35,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(!PW8(Q,$.req.header("stripe-signature"),Z))return $.json({error:"invalid signature"},400);let X=zW8(Q);if(!X)return $.json({error:"invalid payload"},400);let J=await AW8(X);return console.log("stripe webhook",{eventId:X.id,type:X.type,livemode:X.livemode,...J}),$.json({received:!0})})});import{timingSafeEqual as R35}from"crypto";function I35($,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 R35(Buffer.from(X),Buffer.from(Y))}function k35($,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 SO8($){let Z=new Z1;return Z.post("/webhook",u6({maxSize:M35,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(!I35(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"&&!V35.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 j50().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=k35(J??"",G);if(W.length===0)return Q.json({ok:!0,ignored:"no-pr"});let K=await C35($,W);return Q.json({ok:!0,refreshed:K})}),Z}async function C35($,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 f$8(K,G.organizationId,G.taskBoardItemId)!==null)Q++}catch(W){console.error(`[github-webhook] pr card refresh failed for ${G.taskBoardItemId}:`,W)}}return Q}var M35=5242880,V35;var _O8=L(()=>{G8();IW();VX();fQ();V35=new Set(["check_suite","issue_comment"])});import{DBOS as FA1,SchedulerMode as S35}from"@dbos-inc/dbos-sdk";async function v35(){try{return await b35()}catch($){return console.warn(`[sandbox-credential-push] push failed: ${$ instanceof Error?$.message:String($)}`),null}}async function b35(){if(!w50())return null;let[{RemoteSandboxProvider:$},{SandboxProviderRouter:Z}]=await Promise.all([Promise.resolve().then(() => (YH1(),QH1)),Promise.resolve().then(() => (ZH1(),$H1))]),Q=await j50(),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=nd$({sandboxes:J,pools:G,records:await td$(X,J,G),legacyPools:UC0(process.env.STUDIO_SANDBOX_TENANT_POOLS),now:W}),{batches:H,failed:F}=await od$(K,bO0(X,new YJ(B0().encryptionKey)),{now:W,orgFsLifetimeMs:DC0}),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 x35($,Z){let Q=await FA1.runStep(v35,{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 vO8(){if(HA1)return;if(!B0().agentSandboxEnabled||!w50())return;HA1=FA1.registerWorkflow(x35,{name:"sandboxCredentialPushWorkflow"}),FA1.registerScheduled(HA1,{name:"sandboxCredentialPushWorkflow",crontab:_35,mode:S35.ExactlyOncePerIntervalWhenActive})}var _35="1-59/10 * * * *",HA1=null;var bO8=L(()=>{R3();ew();mG1();LC0();NC0();VX();i1()});function xO8($){let Z=new lO($.db,new YJ($.encryptionKey)),Q=new Z1;return Q.get("/attachments/:token",async(Y)=>{let X=c08(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 QQ(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 fO8=L(()=>{G8();ew();CU1();LO()});function gy0(){try{return B0().jiraSettleSeconds*1000}catch{return yz}}function yO8($,Z){let Q=Z.windowMs??yz,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=f35($,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 f35($,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 UA1=L(()=>{MO();i1()});function gO8($){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 NA1($,Z,Q){if(!Z.enabled)return"disabled";let Y=Z.organizationId,X=new QQ(Z.siteUrl,Z.email,Z.apiToken),J=yO8(await X.listStatusChanges(Q.issueId),{changeId:Q.changelogId,now:Q.now,windowMs:gy0()});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:fz(N)})),H=k58(K)&&Z.boardId?I58(await X.getBoardColumnStatusIds(Z.boardId),W.id,G.toId):null,F=V58(K,W.name,H);if(!F)return"no_rule";if(!await $.storage.jiraIntegrations.claimTrigger(Y,Q.issueId,G.id))return"duplicate";return await aK({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 BA1=L(()=>{ZU();LO();It();UA1()});import{DBOS as H2,SchedulerMode as y35}from"@dbos-inc/dbos-sdk";function hO8($){LA1=$}function wA1(){if(!LA1)throw Error("[jira-trigger] runtime not initialized \u2014 setJiraTriggerSweepRuntime() must run before the workflow fires");return LA1}function jA1(){let $=wA1();return new lO($.db,new YJ($.encryptionKey))}async function c35($){try{let Z=await jA1().getById($);if(!Z?.enabled||!Z.boardId)return{integrationId:$,fired:0};let Q=await UW(wA1().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 QQ(Z.siteUrl,Z.email,Z.apiToken),G=`(${await X.getBoardScopeJql(Z.boardId)}) AND status CHANGED AFTER "-${h35}m"`,W=0,K;for(let H=0;H<u35;H++){let F=await X.searchIssues({jql:G,nextPageToken:K});for(let U of F.issues)if(await NA1(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 m35($,Z){let Q=await H2.runStep(()=>jA1().listEnabledIds(),{name:"loadJiraIntegrations"});if(Q.length===0)return;let Y=await Promise.all(Q.map((X)=>H2.runStep(()=>c35(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 d35($,Z){try{let Q=await jA1().getById($);if(!Q?.enabled)return"disabled";let Y=await UW(wA1().db,Q.organizationId);if(!Y)return"disabled";let X=await NA1(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 i35($,Z){await H2.sleep(gy0()+l35),await H2.runStep(()=>d35($,Z),{name:"settleJiraMove"})}async function uO8($,Z){if(!OA1)throw Error("[jira-trigger] settle workflow is not registered");await H2.startWorkflow(OA1,{workflowID:`jira-settle:${$}:${Z.changelogId}`})($,Z)}function lO8(){if(DA1)return;OA1=H2.registerWorkflow(i35,{name:"jiraSettleWorkflow"}),DA1=H2.registerWorkflow(m35,{name:"jiraTriggerSweepWorkflow"}),H2.registerScheduled(DA1,{name:"jiraTriggerSweepWorkflow",crontab:g35,mode:y35.ExactlyOncePerIntervalWhenActive})}var g35="*/5 * * * *",h35=20,u35=5,l35=5000,LA1=null,OA1=null,DA1=null;var EA1=L(()=>{ew();xh();LO();UA1();BA1()});function cO8($){let Z=new lO($.db,new YJ($.encryptionKey)),Q=lj($.db);async function Y(J,G){let W=gO8(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 uO8(K.id,W)}let X=new Z1;return X.post("/webhook/:secret",u6({maxSize:p35}),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 p35=1048576;var mO8=L(()=>{G8();IW();ew();EA1();BA1();se()});function dO8($,Z){if(Z.startsWith("text/html")||Z.startsWith("image/svg"))$.set("Content-Security-Policy","sandbox allow-scripts allow-modals allow-same-origin")}var iO8,n35,t35,pO8;var nO8=L(()=>{G8();FG();Lt();Vi();iO8=new Z1,n35=["range","if-none-match","if-modified-since"],t35=["content-type","content-length","content-range","accept-ranges","etag","last-modified"];iO8.get("/:org/files/*",async($)=>{let Z=$.get("studioContext"),Q=Z.organization?.id;if(!Z.auth?.user?.id){if(Uo($))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 a90(Y,Z);if(!X)throw new R1(503,{message:"Object storage not configured"});if(X.startsWith("data:")&&kK()){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 dO8(N,H),new Response(U,{status:200,headers:N})}let J=new Headers;for(let K of n35){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 t35){let H=G.headers.get(K);if(H)W.set(K,H)}return W.set("Cache-Control","private, max-age=86400"),dO8(W,W.get("content-type")??""),new Response(G.body,{status:G.status,headers:W})});pO8=iO8});var QQ0=y((ku)=>{var o35=ku&&ku.__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]}),s35=ku&&ku.__exportStar||function($,Z){for(var Q in $)if(Q!=="default"&&!Object.prototype.hasOwnProperty.call(Z,Q))o35(Z,$,Q)};Object.defineProperty(ku,"__esModule",{value:!0});s35(W3(),ku)});var sO8=y((tO8)=>{Object.defineProperty(tO8,"__esModule",{value:!0});tO8.version=void 0;tO8.version="3.4.0"});var eO8=y((tB)=>{var r35=tB&&tB.__importDefault||function($){return $&&$.__esModule?$:{default:$}};Object.defineProperty(tB,"__esModule",{value:!0});tB.NodeTransport=tB.VERSION=void 0;tB.nodeResolveHost=YW5;var J9=QQ0(),a35=V0("net"),PA1=V0("tls"),e35=V0("path"),rO8=V0("fs"),$W5=r35(V0("dns")),ZW5=sO8();tB.VERSION=ZW5.version;var QW5="nats.js";class aO8{socket;version;lang;yields=[];signal=(0,J9.deferred)();closedNotification=(0,J9.deferred)();options;connected=!1;tlsName="";done=!1;closeError;constructor(){this.lang=QW5,this.version=tB.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,a35.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,e35.resolve)($),!(0,rO8.existsSync)($))Z.reject(Error(`${$} doesn't exist`));(0,rO8.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,PA1.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,PA1.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 PA1.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}}tB.NodeTransport=aO8;function YW5($){let Z=(0,J9.deferred)();return $W5.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 Xw8=y((Yw8)=>{Object.defineProperty(Yw8,"__esModule",{value:!0});Yw8.connect=XW5;var $w8=eO8(),Zw8=QQ0(),Qw8=QQ0();function XW5($={}){if((0,Qw8.hasWsProtocol)($))return Promise.reject(Qw8.errors.InvalidArgumentError.format("servers","node client doesn't support websockets, use the 'wsconnect' function instead"));return(0,Zw8.setTransportFactory)({factory:()=>{return new $w8.NodeTransport},dnsResolveFn:$w8.nodeResolveHost}),Zw8.NatsConnectionImpl.connect($)}});var Jw8=y((Yw)=>{var GW5=Yw&&Yw.__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]}),WW5=Yw&&Yw.__exportStar||function($,Z){for(var Q in $)if(Q!=="default"&&!Object.prototype.hasOwnProperty.call(Z,Q))GW5(Z,$,Q)};Object.defineProperty(Yw,"__esModule",{value:!0});Yw.connect=void 0;var KW5=Xw8();Object.defineProperty(Yw,"connect",{enumerable:!0,get:function(){return KW5.connect}});WW5(QQ0(),Yw)});function Kw8($){let Z=$?.connectFn??NW5,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:UW5,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=C7(FW5,HW5,D-1,2,0.5);await J$(O)}}return{init(N,B){if(X)return;X=!0,J=!1;let D=B?.creds?hy0.credsAuthenticator(new TextEncoder().encode(B.creds)):B?.user?hy0.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=Ww8.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 NW5($){return Gw8.connect($)}var hy0,Gw8,Ww8,HW5=100,FW5=3000,UW5=3000;var Hw8=L(()=>{n$();hy0=_(C2(),1),Gw8=_(Jw8(),1),Ww8=_(kH(),1)});function uy0($,Z){return`${$}.${Z}`}class zA1{cache;constructor($){this.cache=qP({ttlMs:$?.ttlMs??BW5,maxSize:$?.maxSize??DW5})}async get($,Z){return this.cache.get(uy0($,Z))??null}async set($,Z,Q){this.cache.set(uy0($,Z),Q)}async invalidate($,Z){this.cache.delete(uy0($,Z)),this.cache.delete(uy0($,`${Z}:decisions`))}teardown(){this.cache.clear()}}var BW5=600000,DW5=5000;var Fw8=()=>{};function ly0($,Z){return`${$}:${Z}`}function AA1($){let Z=qP({ttlMs:$?.ttlMs??LW5,maxSize:$?.maxSize??OW5}),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(Uw8,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(ly0(K,H))},set(K,H,F){Z.set(ly0(K,H),F)},invalidate(K,H){Z.delete(ly0(K,H)),W(K,H)},start(){if(G)return;let K=Q?.();if(!K)return;G=K.subscribe(Uw8),(async()=>{for await(let H of G)try{let F=JSON.parse(J.decode(H.data));if(F.originId===Y)continue;Z.delete(ly0(F.organizationId,F.keyId))}catch{}})().catch(console.error)},teardown(){G?.unsubscribe(),G=null,Z.clear()}}}var Uw8="studio.ai-provider-keys.invalidate",LW5=30000,OW5=5000;var Nw8=()=>{};class TA1{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 Bw8=($)=>{let Z;return()=>Z??=$()},qA1,RA1;var Dw8=L(()=>{v6();qA1=Bw8(()=>G$.createHistogram("decopilot.stream.encode_ms",{description:"Per-chunk JSON.stringify+encode time for decopilot stream",unit:"ms"})),RA1=Bw8(()=>G$.createCounter("decopilot.stream.published_chunks",{description:"Logical decopilot stream chunks published to JetStream",unit:"{chunks}"}))});function TW5($=ww8){return{name:_B,subjects:[`${ED1}.>`],storage:DU.StorageType.File,max_age:EW5,max_bytes:zW5,max_msgs_per_subject:AW5,discard:DU.DiscardPolicy.Old,retention:DU.RetentionPolicy.Limits,duplicate_window:PW5,num_replicas:$}}class jw8{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 Lw8($){let Z=Ow8.headers();for(let[Q,Y]of Object.entries($))Z.set(Q,Y);return Z}function VW5($,Z){let Q=0;return{publish(Y,X,J,G){Y.publish(X,J,G?{headers:G}:void 0).catch((W)=>{if(Q++,jW5().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 IW5($,Z){return $.info?.cluster?Z:1}function kW5($){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 MA1{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=TW5(X);try{await Y.streams.info(_B),await Y.streams.update(_B,J)}catch(G){if(G instanceof Error&&G.message.includes("stream not found"))await Y.streams.add(J),await Y.streams.update(_B,J);else if(G instanceof Error&&/can ?not change.*storage|storage type/i.test(G.message))await Y.streams.delete(_B),await Y.streams.add(J);else throw G}},Q=await D8(async()=>{let Y=this.options.getJetStreamManager?await this.options.getJetStreamManager():await DU.jetstreamManager($),X=IW5($,ww8);try{await Z(Y,X)}catch(J){if(X<=1||!kW5(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:Vt});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=VW5(Z,Y),G=!1,W=()=>{if(G)return;G=!0;let H=Q58(Z);X.publish(H.subject,H.data).catch(()=>{})};Q.addEventListener("abort",W,{once:!0});let K=(H)=>{let F=performance.now(),U=zD1(H,{runId:Z}),N=performance.now()-F;qA1().record(N),RA1().add(1,{"org.id":Y??"unknown"}),MW5?.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?Lw8(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(),RW5)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 D8(()=>$.publish(Z.subject,Z.data,{...Z.headers?{headers:Lw8(Z.headers)}:{},...Z.msgId?{msgID:Z.msgId}:{}}),{maxAttempts:6,minTimeout:250,maxTimeout:5000,jitter:0.5,isRetriable:Vt}),!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=zD1(Z,{runId:$,dedup:Q});qA1().record(performance.now()-X),RA1().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=Z58({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"?DU.DeliverPolicy.New:DU.DeliverPolicy.All,J=Q?.closeOnDone??!1,G=xz($),W;try{W=await D8(async()=>{return(await Y.consumers.get(_B,{filter_subjects:G,deliver_policy:X})).consume()},{maxAttempts:6,minTimeout:250,maxTimeout:5000,jitter:0.5,isRetriable:Vt})}catch(O){return console.warn("[Decopilot] JetStream tail unavailable (non-critical):",O?.message??O),null}let F=fv0({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(_v0()).pipeThrough(vv0()).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:w,value:j}=await F.read();if(w){D(),O.close();return}let E=j;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(_B,{filter:xz($)}).catch(()=>{})}teardown(){this.js=null,this.jsm=null}}var DU,Ow8,wW5=($)=>{let Z;return()=>Z??=$()},jW5,EW5=86400000000000,PW5=120000000000,zW5=4294967296,ww8,AW5=500000,qW5,RW5,MW5;var Ew8=L(()=>{n$();AD1();yv0();bv0();v6();Dw8();DU=_(kH(),1),Ow8=_(C2(),1),jW5=wW5(()=>G$.createCounter("decopilot.stream.publish_errors",{description:"Number of JetStream publish failures for decopilot stream chunks",unit:"{errors}"})),ww8=Math.max(1,Number(process.env.DECOPILOT_STREAM_REPLICAS??3)||3);qW5=process.env.STREAM_ENCODE_TRACE==="1",RW5=process.env.DECOPILOT_STREAM_TRACE==="1";MW5=qW5?new jw8:null});function cy0($,Z,Q,Y){if(!Y)return!1;return $.emit(Z,fU(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 Pw8=L(()=>{q8()});class VA1{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 CW5($,Z,Q={}){let Y=$.startsWith("thread:")?pF($,Q):$;return[...new Set([Z,Y].filter((X)=>!!X))]}async function IA1($,Z){let Q=Z.organizationId;try{let Y=await $.storage.taskBoard.linkedThreadIds(Z.id,Q);for(let X of Y){let J=await PB($,X);if(!J?.owner||!J?.name)continue;let G=await $.storage.threads.get(X),W=await zB($,{threadId:X,runBranch:G?.branch}),K=await B40($,Q,VB0(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=CW5(W,await gC0($,X),{flat:Fh(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 NW(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 zw8=L(()=>{T5();xQ();fQ()});async function Aw8($,Z,Q){let Y=Z.organizationId;if(!gJ(Z))return!1;if(!fh(Q))return!1;if(!await Pd($,Y,L10))return!1;if(await $.storage.taskBoard.hasHumanRejectedDone(Z.id,Y))return!1;let X=F1.shipped,J=await $.storage.taskBoard.update(Z.id,Y,{status:X},Z.updatedBy);return await Z9($,{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 Tw8=L(()=>{DG();m8();_X();Wt();eF();Q9()});function yW5($){return $ instanceof zX}function qw8($,Z){return Z-$>=xW5}class kA1{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??SW5;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??vW5,Q=this.options.itemIntervalMs??_W5,Y=new Date(Date.now()-Q),X=await this.taskBoard.listItemsPendingReview(Z,this.cursor,Y),J=X.at(-1);this.cursor=X.length===Z&&J?{updatedAt:J.updatedAt,id:J.id}:null;for(let{id:G,organizationId:W}of X)try{if(await this.reconcileItem(G,W,Y))$++}catch(K){console.error(`[task-board-review-sweeper] ${G} failed`,K)}await this.reapNeverStartedThreads(Z),$+=await this.dispatchDueRetries(Z),await this.reactToUnhandledFailures(Z),$+=await this.settleFinishedRunsWithoutPr(Z,Y)}catch(Z){console.error("[task-board-review-sweeper] sweep failed",Z)}finally{this.running=!1}return $}async reapNeverStartedThreads($){try{let Z=await this.taskBoard.failNeverStartedLinkedThreads($,new Date(Date.now()-TU1),oN1);for(let Q of Z)console.warn(`[task-board-review-sweeper] failed never-started thread ${Q.threadId} on ${Q.itemId}`)}catch(Z){console.error("[task-board-review-sweeper] reaping failed",Z)}}async reactToUnhandledFailures($){let Z=await this.taskBoard.listItemsStuckAfterFailure($,new Date(Date.now()-fW5));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 nN1(this.taskBoard,X,Y),await tN1(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!==F1.progress||gJ(W)||W.assigneeId!==F8)continue;let K=await this.contextFactory(J,W.assignedBy??W.createdBy);if(!K)continue;if(await IA1(K,W)){if(await this.taskBoard.clearSweepBudget(X,J),await this.reconcileItem(X,J,Z))Q++;continue}if(!qw8(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,F1.review,W.updatedBy);if(!F)continue;await this.taskBoard.recordActivity({taskBoardItemId:X,action:"status_changed",actorId:null,data:{from:F1.progress,to:F1.review,reason:H}}).catch(()=>{}),j8(J,F),await $U(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!==F1.progress||G.assigneeId!==F8)continue;let W=await this.contextFactory(X,G.assignedBy??G.createdBy);if(!W)continue;await PO(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),yW5(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()+bW5)).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!==F1.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:F1.progress,to:F1.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(!qw8(XL(Q,Z.reviewCycleStartedAt),Date.now()))return;await $U($,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(!gJ(Y))return!1;let X=Y.assigneeId===F8,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 IA1(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 Ft(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 Aw8(G,Y,W))return!0;if(!X)return!1;if(await a$8(G,Y))return!0;if(!mN1(W))return!1;return await Ht(G,Y,{previewMatchesHead:dN1(W)}),!0}dispose(){if(this.timer)clearInterval(this.timer),this.timer=null}}var SW5=60000,_W5=300000,vW5=50,bW5=60000,xW5=900000,fW5=120000;var Rw8=L(()=>{m8();S_0();zw8();zO();Dt();eF();Tw8();Q9();$W();sN1();fQ();T90()});async function Mw8($,Z,Q=yz){return await Iw8($,Z,Q,{})}async function Vw8($,Z,Q,Y=yz){return await Iw8($,Q,Y,{activityId:Z})}async function Iw8($,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-gW5),settledBefore:new Date(Z-Q),limit:hW5,...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 uW5($.taskBoard,K,Q);for(let U of H){if(!S58(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 uW5($,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?_58(X,Q):Z.from}var gW5=1800000,hW5=200;var kw8=L(()=>{MO()});import{DBOS as F2,DBOSClient as lW5,SchedulerMode as cW5}from"@dbos-inc/dbos-sdk";function Cw8($){Xw=$}async function iW5($){if(!Xw)return 0;try{return await Vw8(Xw,$,Date.now(),Xw.settleMs)}catch(Z){return console.error(`[automations] settling board move ${$} failed`,Z),0}}async function pW5(){if(!Xw)return 0;try{return await Mw8(Xw,Date.now(),Xw.settleMs)}catch($){return console.error("[automations] board transition sweep failed",$),0}}async function nW5($){await F2.sleep((Xw?.settleMs??yz)+dW5),await F2.runStep(()=>iW5($),{name:"settleBoardMove"})}async function tW5($,Z){let Q=await F2.runStep(()=>pW5(),{name:"sweepBoardMoves"});if(Q>0)console.log(`[automations] board transition sweep fired ${Q} trigger(s) the settle wait missed`)}async function _w8($){let Z=Xw;if(!Z||!SA1)return;if(!await Z.automations.hasActiveBoardColumnTrigger($.taskBoardItemId,$.to))return;let Q=`board-settle:${$.activityId}`;if(!F2.isWithinWorkflow()){await F2.startWorkflow(SA1,{workflowID:Q,queueName:w2})($.activityId);return}let Y=await lW5.create({systemDatabaseUrl:Z.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:1});try{await Y.enqueue({workflowName:Sw8,queueName:w2,workflowID:Q},$.activityId)}finally{await Y.destroy()}}function vw8(){if(CA1)return;SA1=F2.registerWorkflow(nW5,{name:Sw8}),CA1=F2.registerWorkflow(tW5,{name:"boardTransitionSweepWorkflow"}),F2.registerScheduled(CA1,{name:"boardTransitionSweepWorkflow",crontab:mW5,mode:cW5.ExactlyOncePerIntervalWhenActive})}var mW5="*/5 * * * *",dW5=2000,Xw=null,Sw8="boardTransitionSettleWorkflow",SA1=null,CA1=null;var bw8=L(()=>{MO();kw8()});import{readdir as oW5,rm as my0}from"fs/promises";import{join as dy0}from"path";async function iy0($){let Z=new Date;Z.setUTCDate(Z.getUTCDate()-sW5),Z.setUTCHours(0,0,0,0);let Q=0;try{let Y=await Cu($);for(let X of Y)if(/^\d{4}$/.test(X))Q+=await xw8($,X,Z);else if(!X.startsWith(".")){let J=dy0($,X),G=await Cu(J);for(let K of G){if(!/^\d{4}$/.test(K))continue;Q+=await xw8(J,K,Z)}if((await Cu(J)).length===0)await my0(J,{recursive:!0,force:!0})}}catch(Y){console.warn("monitoring retention cleanup failed:",Y)}return Q}async function xw8($,Z,Q){let Y=0,X=dy0($,Z),J=await Cu(X);for(let W of J){if(!/^\d{2}$/.test(W))continue;let K=dy0(X,W),H=await Cu(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=dy0(K,U);await my0(B,{recursive:!0,force:!0}),Y++}}if((await Cu(K)).length===0)await my0(K,{recursive:!0,force:!0})}if((await Cu(X)).length===0)await my0(X,{recursive:!0,force:!0});return Y}async function Cu($){try{return(await oW5($)).filter((Q)=>!Q.startsWith("."))}catch{return[]}}var sW5=30;var _A1=()=>{};import{DBOS as vA1,SchedulerMode as rW5}from"@dbos-inc/dbos-sdk";async function eW5(){let $=[zH(),hu(),QD()],Z=0;for(let Q of $)try{Z+=await iy0(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 $K5($,Z){await vA1.runStep(()=>eW5(),{name:"monitoringRetention"})}function yw8(){if(fw8)return;fw8=!0;let $=vA1.registerWorkflow($K5,{name:"monitoringRetentionWorkflow"});vA1.registerScheduled($,{name:"monitoringRetentionWorkflow",crontab:aW5,mode:rW5.ExactlyOncePerIntervalWhenActive})}var aW5="23 4 * * *",fw8=!1;var gw8=L(()=>{fW();_A1()});function hw8($){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 CY.create();X.auth.user={id:Q,role:Y.role},X.organization={id:Y.orgId,slug:Y.orgSlug,name:Y.orgName};let J=await QP($.db,Z,Y.role);return X.boundAuth=ME1({auth:X.authInstance,headers:new Headers,role:Y.role,permissions:J,userId:Q}),X.access=new GT(Q,void 0,X.boundAuth,Y.role,"self"),Sz(X,{id:Y.orgId,slug:Y.orgSlug}),X}}var uw8=L(()=>{JJ();lN()});function lw8(){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=YQ0(N.params.name),D=N.params.arguments||{},O=Object.keys(D).map((j)=>YQ0(j)),w=O.length>0?O.slice(0,3).join(",")+(O.length>3?"\u2026":""):"";J=`${L9.tool}${B}${L9.dim}(${w})${L9.reset}`}else if(N.method)J=`${L9.dim}${YQ0(N.method)}${L9.reset}`}}catch{}}let W=YQ0(X);if(X.startsWith("/mcp/conn_")){let F=X.split("/")[2]??"";W=`/mcp/${L9.mcp}${YQ0(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=QK5(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=ZK5(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,ZK5=($)=>{if($>=500)return L9.serverError;if($>=400)return L9.clientError;if($>=300)return L9.redirect;return L9.ok},QK5=($)=>{return L9[$]||L9.reset},YQ0=($)=>{return $.replace(/\r/g,"").replace(/\n/g,"").replace(/\x1b\[[0-9;]*m/g,"").replace(/[\x00-\x1f\x7f-\x9f]/g,"")};var cw8=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 pw8}from"crypto";import{mkdir as YK5,readdir as XK5,rm as mw8,stat as nw8}from"fs/promises";import{join as xA1,relative as JK5}from"path";import{z as Y8}from"zod";function ow8($){let Z=$.replace(/[^a-zA-Z0-9_-]/g,"_");return xA1(GK5,Z)}function sw8($){return $.replace(/^\/+/,"").replace(/\.\./g,"")}function bA1($,Z){let Q=ow8($),Y=sw8(Z);return xA1(Q,Y)}function WK5($,Z,Q,Y){let X=B0().encryptionKey||"dev-secret",J=`${$}:${Z}:${Q}:${Y}`;return pw8("sha256",X).update(J).digest("hex")}function iw8($,Z,Q,Y,X){let J=Math.floor(Date.now()/1000)+Y,G=WK5(Z,Q,J,X),W=new URL(`/api/dev-assets/${Z}/${sw8(Q)}`,$);return W.searchParams.set("expires",J.toString()),W.searchParams.set("signature",G),W.searchParams.set("method",X),W.toString()}function rw8($,Z,Q){let Y=`${$}:${Z.getTime()}:${Q}`;return`"${pw8("md5","etag").update(Y).digest("hex")}"`}async function aw8($,Z,Q,Y,X){try{let J=await XK5($,{withFileTypes:!0});for(let G of J){let W=xA1($,G.name),H=JK5(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 aw8(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 nw8(W);X.objects.push({key:H,size:F.size,lastModified:F.mtime.toISOString(),etag:rw8(W,F.mtime,F.size)})}catch{}}}}catch{}}function ew8($,Z){let Y=Q0($).id;return[{name:"LIST_OBJECTS",description:"List objects in the local assets directory with pagination support",inputSchema:Y8.object({prefix:Y8.string().optional(),maxKeys:Y8.number().optional().default(1000),continuationToken:Y8.string().optional(),delimiter:Y8.string().optional()}),outputSchema:Y8.object({objects:Y8.array(Y8.object({key:Y8.string(),size:Y8.number(),lastModified:Y8.string(),etag:Y8.string()})),nextContinuationToken:Y8.string().optional(),isTruncated:Y8.boolean(),commonPrefixes:Y8.array(Y8.string()).optional()}),handler:async(X)=>{let J=X,G=J.prefix||"",W=J.maxKeys??1000,K=J.delimiter,H=J.continuationToken,F=ow8(Y);await YK5(F,{recursive:!0});let U={objects:[],commonPrefixes:new Set};await aw8(F,F,G,K,U),U.objects.sort((w,j)=>w.key.localeCompare(j.key));let N=0;if(H){if(N=U.objects.findIndex((w)=>w.key>H),N===-1)N=U.objects.length}let B=U.objects.slice(N,N+W),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:Y8.object({key:Y8.string()}),outputSchema:Y8.object({contentType:Y8.string().optional(),contentLength:Y8.number(),lastModified:Y8.string(),etag:Y8.string(),metadata:Y8.record(Y8.string(),Y8.string()).optional()}),handler:async(X)=>{let J=X,G=bA1(Y,J.key),W=await nw8(G);return{contentType:MP1(J.key),contentLength:W.size,lastModified:W.mtime.toISOString(),etag:rw8(G,W.mtime,W.size)}}},{name:"GET_PRESIGNED_URL",description:"Generate a presigned URL for downloading a file from local storage",inputSchema:Y8.object({key:Y8.string(),expiresIn:Y8.number().optional()}),outputSchema:Y8.object({url:Y8.string(),expiresIn:Y8.number()}),handler:async(X)=>{let J=X,G=bO(J.expiresIn,dw8);return{url:iw8(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:Y8.object({key:Y8.string(),expiresIn:Y8.number().optional(),contentType:Y8.string().optional()}),outputSchema:Y8.object({url:Y8.string(),expiresIn:Y8.number()}),handler:async(X)=>{let J=X,G=bO(J.expiresIn,dw8);return{url:iw8(Z,Y,J.key,G,"PUT"),expiresIn:G}}},{name:"DELETE_OBJECT",description:"Delete a single file from local storage",inputSchema:Y8.object({key:Y8.string()}),outputSchema:Y8.object({success:Y8.boolean(),key:Y8.string()}),handler:async(X)=>{let J=X,G=bA1(Y,J.key);try{return await mw8(G),{success:!0,key:J.key}}catch{return{success:!1,key:J.key}}}},{name:"DELETE_OBJECTS",description:"Delete multiple files from local storage",inputSchema:Y8.object({keys:Y8.array(Y8.string()).max(1000)}),outputSchema:Y8.object({deleted:Y8.array(Y8.string()),errors:Y8.array(Y8.object({key:Y8.string(),message:Y8.string()}))}),handler:async(X)=>{let J=X,G=[],W=[];return await Promise.all(J.keys.map(async(K)=>{let H=bA1(Y,K);try{await mw8(H),G.push(K)}catch(F){W.push({key:K,message:F instanceof Error?F.message:"Unknown error"})}})),{deleted:G,errors:W}}}]}async function fA1($,Z,Q){let Y=ew8(Z,Q),X=new $E({name:"dev-assets-mcp",version:"1.0.0"},{capabilities:{tools:{}},jsonSchemaValidator:ZZ});for(let G of Y){let W="shape"in G.inputSchema?G.inputSchema.shape:Y8.object({}).shape,K=G.outputSchema&&"shape"in G.outputSchema?G.outputSchema.shape:Y8.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 jW({enableJsonResponse:$.headers.get("Accept")?.includes("application/json")??!1});return await X.connect(J),WH(X,J,$,"mcp:dev-assets")}async function $j8($,Z,Q,Y){let J=ew8(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 GK5="./data/assets",dw8=3600,tw8,Zj8;var Qj8=L(()=>{i1();gt();G8();iK0();yt();FJ();xO();Af0();tw8=new Z1;tw8.all("/",async($)=>{let Z=$.get("studioContext"),Q=new URL($.req.url),Y=`${Q.protocol}//${Q.host}`;return fA1($.req.raw,Z,Y)});Zj8=tw8});var Yj8={};O6(Yj8,{mountDevRoutes:()=>KK5});function KK5($,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 fA1(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 $j8(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",Zj8);let Q=new Z1;Q.use("*",FU({mountPath:"/api/dev-assets"})),Q.route("/",zf0({orgFromPath:!1})),$.route("/api/dev-assets",Q)}var Xj8=L(()=>{G8();EP1();Af0();Qj8()});var Dj8={};O6(Dj8,{watchHandler:()=>Bj8,resolveVoiceSigningSecret:()=>Fj8,resolveCorsOrigin:()=>Uj8,isSsoExemptPath:()=>Hj8,isAllowedOAuthRedirectUri:()=>Nj8,createApp:()=>EK5});import{readFileSync as HK5}from"fs";import{randomBytes as FK5}from"crypto";import{PrometheusSerializer as UK5}from"@opentelemetry/exporter-prometheus";import{DBOS as oB}from"@dbos-inc/dbos-sdk";import{oAuthDiscoveryMetadata as DK5,oAuthProtectedResourceMetadata as LK5}from"better-auth/plugins";async function NK5($){let Z=$.connect(),Q;try{Q=await Promise.race([Z,Gj8(Jj8)])}catch{return Z.then((Y)=>Y.release(!0)).catch(()=>{}),!1}try{return await Promise.race([Q.query("SELECT 1"),Gj8(Jj8)]),Q.release(),!0}catch{return Q.release(!0),!1}}function Gj8($){return new Promise((Z,Q)=>setTimeout(()=>Q(Error("pg health-check timeout")),$))}function Hj8($){return $.startsWith("/api/org-sso/")||/^\/api\/[^/]+\/sso\//.test($)||$.startsWith("/api/auth/")||$.startsWith("/api/tools/management")||$.startsWith("/oauth-proxy/")||/^\/api\/[^/]+\/oauth-proxy\//.test($)||$.startsWith(`${Gf0}/`)||$.startsWith(`${$f0}/`)}function Fj8($){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)"),FK5(32).toString("base64")}function Uj8($,{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 Nj8($,Z){return $.origin===new URL(Z).origin||$.hostname==="localhost"}async function EK5($={}){let Z=$.database??E8(),Q=!1;h6.stop().catch((F0)=>{console.error("[SSEHub] Error stopping previous broadcast (HMR cleanup):",F0)});let Y,X,J,G,W=new zA1,K,H,F,U=null;if($.disableNats)K=AA1(),Y={get:async()=>null,set:async()=>{},invalidate:async()=>{},teardown:()=>{}},X=null,J=null,G=new TZ0,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=Kw8();let F0=B0().natsCredsPath,G0;if(F0)try{G0=HK5(F0,"utf8")}catch(U8){console.error(`[app] failed to read NATS_CREDS at ${F0}; connecting anonymously`,U8)}U.init(B0().natsUrls,{creds:G0,user:B0().natsUser,password:B0().natsPassword});let P0=s91()?new b91({getJetStream:()=>U.getJetStream(),selfListVersion:xy0.version}):null;P0?.init().catch(()=>{}),Y=P0;let z0=new PZ1({getJetStream:()=>U.getJetStream()});z0.init().catch(()=>{}),X=z0;let w1=new yh(yN1,{getJetStream:()=>U.getJetStream()}),b$=new yh(q90,{getJetStream:()=>U.getJetStream()});w1.init().catch(()=>{}),b$.init().catch(()=>{}),J={reads:w1,cards:b$};let s$=new JO1({getJetStream:()=>U.getJetStream()});s$.init().catch(()=>{}),G=s$,K=AA1({getConnection:()=>U.getConnection()}),H=new TA1({getConnection:()=>U.getConnection()}),F=new MA1({getConnection:()=>U.getConnection(),getJetStream:()=>U.getJetStream()}),cW8(U),U.onReady(()=>{P0?.init().catch((U8)=>{console.error("[McpListCache] Deferred init failed:",U8)}),z0.init().catch((U8)=>{console.error("[SkillCatalogCache] Deferred init failed:",U8)}),w1.init().catch((U8)=>{console.error("[PrReadCache] Deferred init failed:",U8)}),b$.init().catch((U8)=>{console.error("[PrCardCache] Deferred init failed:",U8)}),s$.init().catch((U8)=>{console.error("[ConnectionCircuitStore] Deferred init failed:",U8)}),K.start(),Dz$(()=>U.getConnection()),F.init().catch((U8)=>{console.warn("[Decopilot] StreamBuffer init failed (late-join disabled):",U8)})})}if(U2)await U2();x91(Y),AZ1(X),qZ1(()=>U?.getConnection()??null),gN1(J),GO1(G);let B={storage:new Ic(Z.db),sseHub:h6,onThreadFinished:async(F0,G0)=>Nt(new FW(Z.db),F0,G0,new q3(Z.db))},D=new lB1(B),O=new aZ0(Z.db),w=new VA1(O);w.start(),h58(H),H.start((F0)=>{zv0(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 j=()=>U?.getConnection()??null;BP1(j),U?.onReady(()=>BP1(j)),uO1(j),U?.onReady(()=>uO1(j)),F.init().catch((F0)=>{console.warn("[Decopilot] StreamBuffer init failed, attach/late-join disabled:",F0)}),U2=async()=>{await D.stopAll(),D.dispose(),w.dispose(),H.stop().catch(()=>{}),JH8(),F.teardown(),Y?.teardown(),X?.teardown(),J?.reads.teardown(),J?.cards.teardown(),W.teardown(),K.teardown(),Lz$(),G.teardown(),x91(null),AZ1(null),qZ1(null),gN1(null),GO1(null)};let E=new Z1;if(E.use("*",QO1({enabled:(F0)=>Fo(F0,"debug")==="1"})),E.use("*",Bg0),E.use("/*",yW8({origin:(F0,G0)=>Uj8(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("*",lw8());E.use("*",async(F0,G0)=>{if(await G0(),Ls(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(iX.HEALTH,(F0)=>{if(Q)return F0.json({status:"shutting_down"},503);return F0.json({status:"ok"})}),E.get(iX.HEALTH_LIVE,(F0)=>{return F0.json({status:"ok"})}),E.get(iX.HEALTH_READY,async(F0)=>{if(Q)return F0.json({status:"shutting_down"},503);let G0={};if(G0.postgres={status:await NK5(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(iX.METRICS,async(F0)=>{try{let G0=await wg0.collect(),P0=BK5.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(`${iX.DBOS_QUEUE_DEPTH_PREFIX}:queueName`,async(F0)=>{let G0=F0.req.param("queueName");if(!OK5.has(G0))return F0.json({error:`Unknown queue: ${G0}`},404);let[P0,z0]=await Promise.all([oB.listQueuedWorkflows({queueName:G0,status:"ENQUEUED",loadInput:!1,loadOutput:!1}),oB.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",jO8),E.route("/api/_reports",IO8),E.route("/api/_stripe",KA1),E.route("/api/_github",SO8({taskBoard:()=>c,contextFactory:()=>b})),E.route("/api/_git",jo);let T={db:Z.db,encryptionKey:B0().encryptionKey};E.route("/api/_jira",cO8(T)),E.route("/api/_jira",xO8(T)),E.route("/report",RO8($.clientDir)),E.route("/api/auth/custom",KK8),E.all("/api/auth/admin/*",pK8),E.all("/api/auth/*",async(F0)=>{return await B4.handler(F0.req.raw)});let z=U38();z.use("/.well-known/oauth-protected-resource/mcp/:connectionId",H70),z.use("/mcp/:connectionId/.well-known/oauth-protected-resource",H70),E.route("/",z),E.get("/.well-known/oauth-protected-resource/api/:org/mcp/:connectionId",oZ0),E.route("/",O38()),E.use("/oauth-proxy/:connectionId/*",H70),E.all("/oauth-proxy/:connectionId/*",Wj8);let A=async(F0)=>{let P0=await wK5()(F0.req.raw),z0=await P0.json();return Response.json(z0,P0)};E.use("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",H70),E.get("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",A);let R=async(F0)=>{let P0=await jK5()(F0.req.raw),z0=await P0.json();return Response.json(z0,P0)};E.get("/.well-known/oauth-authorization-server/*/:gateway?/:connectionId?",R);let f=hW8({ttlMs:120000}),S=await FW8({db:Z.db,auth:B4,encryption:{key:B0().encryptionKey},observability:{tracer:Nw,meter:G$},modelListCache:W,providerKeyCache:K,memberRoleCache:f});CY.set(S),x0$({db:Z.db,baseUrl:B5()}),UW8({db:Z.db}),LW8({db:Z.db}),TW8({db:Z.db}),hO8({db:Z.db,encryptionKey:B0().encryptionKey}),i18({db:Z.db}),kW8({db:Z.db}),A$8({db:Z.db});let V=lj(Z.db),v=new re(Z.db),b=hw8({db:Z.db});rD1({storage:V,studioContextFactory:b,orgContextFactory:(F0)=>UW(Z.db,F0),systemDatabaseUrl:W10(B0().databaseUrl,B0().databasePgSsl)}),bD1({systemDatabaseUrl:W10(B0().databaseUrl,B0().databasePgSsl),studioContextFactory:b,deps:{runRegistry:D,cancelBroadcast:H,streamBuffer:F,sseHub:h6}}),ID1({dispatchRunFn:t68,studioContextFactory:b,deps:{runRegistry:D,cancelBroadcast:H,streamBuffer:F,sseHub:h6}});let h=new Ic(Z.db),c=new FW(Z.db),i=new q3(Z.db),W0=new kA1(c,b,i);if(B0().taskBoardReviewSweeperEnabled){W0.start();let F0=U2;U2=async()=>{await F0?.(),W0.dispose()}}Cw8({automations:V,taskBoard:c,fire:aK,systemDatabaseUrl:W10(B0().databaseUrl,B0().databasePgSsl),settleMs:B0().boardTransitionSettleSeconds*1000}),$$8(_w8),L58({getJetStream:()=>U?.getJetStream()??null,getJetStreamManager:async()=>{let F0=U?.getConnection();return F0?await Kj8.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(cy0(h6,G0,F0,P0),P0)await Nt(c,F0,G0,i);return P0},markRunRequiresAction:async(F0,G0)=>{let P0=await h.requiresActionIfInProgress(F0,G0);return cy0(h6,G0,F0,P0),P0},markRunFailed:async(F0,G0,P0,z0)=>{let w1=await h.markRunFailed(F0,G0,P0,z0);if(cy0(h6,G0,F0,w1),w1)await Nt(c,F0,G0,i);return w1},clearSynthesizedError:async(F0,G0)=>{await h.messageParts().replaceMessageParts(F0,bz(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);h6.emit(G0,fU(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})=>{l1.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:w1})=>{l1.capture({distinctId:P0,event:"chat_message_failed",groups:{organization:G0},properties:{organization_id:G0,thread_id:F0,transport:"projector",error_category:w1,error_message:z0}})},purgeRun:async(F0)=>{F.purge(F0)}}),w68({studioContextFactory:b,systemDatabaseUrl:W10(B0().databaseUrl,B0().databasePgSsl),streamBuffer:F}),yw8(),f0$(),BW8(),wW8(),RW8(),lO8(),vw8(),s18(),SW8(),T$8(),vO8();let C0=async(F0,G0,P0)=>{let z0=await V.findById(F0,G0);if(!z0)throw Error("Automation not found");return QL1({automationId:z0.id,organizationId:z0.organization_id,triggerId:null})},J0=new Oo(V,({automation:F0,trigger:G0,contextMessages:P0,idempotencyKey:z0})=>aK({automationId:F0.id,organizationId:F0.organization_id,triggerId:G0.id,contextMessages:P0},{idempotencyKey:z0})),U0=[zH(),hu(),QD()];for(let F0 of U0)iy0(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(Ug0(F0.req.path))return G0();let P0={measure:async(w1,b$)=>{GH(F0,w1);try{return await b$()}finally{EW(F0,w1)}}},z0=await CY.create(F0.req.raw,{timings:P0});z0.automationRunner=C0,F0.set("studioContext",z0);try{await G0()}finally{let w1=z0.pendingRevalidations;if(w1.length>0)Promise.race([Promise.allSettled(w1),J$(30000)]).catch((s$)=>console.error("[studio] revalidation cleanup error:",s$))}}),E.use("/api/:org/decopilot/*",No),E.use("/api/:org/v1/*",No),E.use("/api/:org/files/*",No),E.use("*",async(F0,G0)=>{if(Hj8(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("*",FU({mountPath:"/api/org-sso"})),t.route("/",Hf0()),E.route("/api/org-sso",t),E.get("/api/tools/management",(F0)=>{return F0.json({tools:Q00,grouped:XT()})}),E.use("/mcp/*",async(F0,G0)=>{GH(F0,"mcp");try{return await G0()}finally{EW(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),w1=F0.req.header("x-forwarded-proto")?.split(",")[0]?.trim(),b$=w1?`${w1}://${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),kK()){let{mountDevRoutes:F0}=(Xj8(),ey0(Yj8));F0(E,r)}let $0=new Z1;$0.use("*",FU({mountPath:"/mcp"})),$0.route("/",jb0()),E.route("/mcp",$0);let X0=new Z1;X0.use("*",FU({mountPath:"/mcp/self"})),X0.route("/",ef0()),E.route("/mcp/self",X0);let h0=new Z1;h0.use("*",FU({mountPath:"/mcp"})),h0.route("/",zb0()),E.route("/mcp",h0),E.use("/api/:org/models/*",async(F0,G0)=>{GH(F0,"llm_models");try{return await G0()}finally{EW(F0,"llm_models")}});let k0=UH8({cancelBroadcast:H,streamBuffer:F,runRegistry:D});E.route("/api",k0),E.route("/api",pO8);let K1=new Z1;K1.use("*",FU({mountPath:"/api"})),K1.route("/",Yy0()),E.route("/api",K1),E.route("/api",BO8);let c0=new Z1;c0.use("*",FU({mountPath:"/api"})),c0.route("/",Xy0({tokenStorage:v,automationEventDispatcher:J0})),E.route("/api",c0);let w0=new ae(Z.db),E0=new Z1;E0.use("*",FU({mountPath:"/api"})),E0.route("/",Lf0()),E.route("/api",E0),E.route("/api/deco-sites",MH8()),E.route("/api/deco-apps",WO8());let n0=new Z1;n0.use("*",FU({mountPath:"/api/deco-sites"})),n0.route("/",wf0()),E.route("/api/deco-sites",n0),E.route(Gf0,nK8()),E.route(QB8,JB8()),E.route("/api/_editor-resolve",LO8()),E.route(UK8,NK8()),E.route($f0,VK8());let O1=B0(),o0=O1.elevenlabsApiKey?new _y0({apiKey:O1.elevenlabsApiKey,model:O1.elevenlabsVoiceModel,conversationModel:O1.elevenlabsConversationModel,voiceId:O1.elevenlabsVoiceId}):null,b0={openai:O1.openaiLiveApiKey?new $A1({apiKey:O1.openaiLiveApiKey,voice:O1.openaiLiveVoice}):null,elevenlabs:o0?new e21(o0,()=>U?.getConnection()??null):null},d0=new JA1({adapter:o0,conversationAdapters:b0,defaults:O1,secret:Fj8(O1),getConnection:()=>U?.getConnection()??null}),i0=hL8({voiceSessions:d0,kvStorage:w0,runRegistry:D,streamBuffer:F,sseHub:h6,cancelBroadcast:H,tokenStorage:v,automationEventDispatcher:J0,mountDevAssets:kK(),mcpAuth:r,oauthProxyHandler:Wj8,watchHandler:Bj8,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(BH8),Object.assign(E,{markShuttingDown:()=>{Q=!0},shutdown:async()=>{if(console.log("[shutdown] Stopping workers..."),await Promise.allSettled([h6.stop(),U2?Promise.resolve(U2()).finally(()=>{U2=null}):Promise.resolve()]),U)await U.drain().catch((F0)=>console.error("[shutdown] NATS drain error:",F0));console.log("[shutdown] Flushing telemetry..."),await iJ().catch((F0)=>console.error("[shutdown] Telemetry flush error:",F0)),console.log("[shutdown] Closing database..."),await mW$(Z).catch((F0)=>console.error("[shutdown] Database close error:",F0)),console.log("[shutdown] Cleanup complete.")},initDbos:async()=>{await oB.registerQueue(Y3,{partitionQueue:!0,concurrency:tD1,minPollingIntervalMs:oD1}),await oB.registerQueue(bW,{partitionQueue:!0,concurrency:_D1,priorityEnabled:!0}),await oB.registerQueue($D,{workerConcurrency:B0().decopilotMaxConcurrentHostedRuns,priorityEnabled:!0}),await oB.registerQueue(ZD,{workerConcurrency:B0().sandboxMaxConcurrentHostedRuns,priorityEnabled:!0}),await oB.registerQueue(Uw,{partitionQueue:!0,concurrency:O68}),await oB.registerQueue(O2,z$8),await oB.registerQueue(w2),await PP1(V),await Promise.allSettled(["automations-gate","automations-global","jira-push"].map((F0)=>oB.deleteQueue(F0))),await sD1(Z.pool),TU$().catch((F0)=>{console.error("[studio-pack-backfill] failed:",F0)}),Ed(Z.db).catch((F0)=>{console.error("[automations] built-in seed failed:",F0)}),y0$().catch((F0)=>{console.error("[org-fs] public-sets boot sync kick failed:",F0)})}})}var Kj8,Jj8=5000,U2=null,Wj8=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 CY.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 Wo(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=oj1(await W.json());if(!K)K=H.origin;let N=await sZ0(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=L38(D);if(O)return O;let w=new URL(D),j=new URL($.req.url);if(w.search=j.search,Y==="authorize"){let v=w.searchParams.get("redirect_uri");if(v){let b=B0().baseUrl??j.origin;try{if(!Nj8(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)}w.searchParams.set("redirect_uri",v)}if(w.searchParams.has("resource"))w.searchParams.set("resource",U);if(vW8(G.connection_url))w.searchParams.set("auto_personal","true"),w.searchParams.set("force_new","true");return $.redirect(w.toString(),302)}let E={Accept:$.req.header("Accept")||"application/json"},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 i=atob(T.slice(6).trim()),W0=i.indexOf(":");if(W0!==-1){let C0=decodeURIComponent(i.slice(0,W0)),J0=decodeURIComponent(i.slice(W0+1));A=C0||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 c=new URLSearchParams;for(let[i,W0]of v.entries())c.append(i,W0.toString());z=c.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 c=typeof h==="object"&&h!==null&&!Array.isArray(h);if(z===void 0&&!c)z=b;if(z===void 0){let i=h,W0=i.metadata&&typeof i.metadata==="object"?i.metadata:{};i.metadata={...W0,organization_id:G.organization_id,...v?.slug?{organization_slug:v.slug}:{},...v?.name?{organization_name:v.name}:{}},z=JSON.stringify(i),E["Content-Type"]="application/json"}}else z=$.req.raw.body??void 0;let f=await fetch(w.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,c=null;try{c=await rz(G.connection_url)??D}catch{c=D}let i={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:c};await new a5(X.db,X.vault).upsert(i)}}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})},Bj8=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&&(!IB(Y)||!await kB(Z)))return $.json({error:"forbidden"},403);let W=G?w_0:Y;if(G)EO({action:"watch_all_orgs",actorUserId:Q,actorOrgId:Y,targetOrgId:"all"});let K=crypto.randomUUID();return $w($,async(H)=>{if(await H.writeSSE({event:"connected",data:JSON.stringify({listenerId:K,organizationId:Y,typePatterns:J,connectedAt:new Date().toISOString()})}),!h6.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(()=>{h6.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),h6.remove(W,K)})},30000);await new Promise((N)=>{H.onAbort(()=>{clearInterval(U),h6.remove(W,K),N()})})})},BK5,OK5,wK5=()=>LK5(B4),jK5=()=>DK5(B4);var Lj8=L(()=>{n$();i1();g0$();DW8();jW8();MW8();CZ0();wN1();_W8();T90();P9();Vi();q8();G8();sx0();gW8();YO1();lK();lN();cE1();R3();v6();Q6();oE1();BK8();IK8();$P1();tK8();HP1();wP1();jP1();CK();rZ0();EP1();DH8();ax0();uL8();iL8();pL8();sL8();GO8();TP1();KO8();Eb0();qZ0();DO8();Ab0();$21();OO8();az1();EO8();MO8();kO8();CO8();_O8();bO8();fO8();mO8();EA1();IP1();nO8();ez1();tz1();jQ0();Hw8();GA1();AJ();rN0();x80();uN1();k80();S80();KO1();Fw8();Nw8();DP1();Ew8();Fv0();Pw8();va();Z00();jO();Q9();FE1();Rw8();bw8();DG();xh();gw8();jF0();_A1();fW();zP1();wO();MD1();jF0();Sv0();se();je0();uw8();cj();cw8();xo();cE1();Jt();qt();Av0();Kj8=_(kH(),1);BK5=new UK5,OK5=new Set([Y3,bW,$D,ZD,Uw,O2])});var Ej8={};O6(Ej8,{resolveClientDir:()=>MK5,resolveAssetPathWithTraversalCheck:()=>jj8,isPathWithinDirectory:()=>wj8,createAssetHandler:()=>VK5});import{resolve as XQ0,dirname as PK5,join as zK5,extname as AK5,basename as TK5,sep as Oj8}from"path";function qK5($,Z){if($===Z||TK5($)==="index.html")return{"Cache-Control":"no-cache"};if($.includes(`${Oj8}assets${Oj8}`))return{"Cache-Control":"public, max-age=31536000, immutable"};return{}}function wj8($,Z){let Q=XQ0(Z),Y=XQ0($);return Y===Q||Y.startsWith(Q+"/")}function jj8({requestPath:$,clientDir:Z}){let Q=$.startsWith("/")?$.slice(1):$,Y=XQ0(Z,Q);if(!wj8(Y,Z))return null;return Y}function MK5($,Z="../client"){let Q=new URL($),Y=PK5(Q.pathname);return XQ0(Y,Z)}function VK5($={}){let{env:Z="production",clientDir:Q=RK5,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=jj8({requestPath:W,clientDir:Q});if(!K)return null;let H=zK5(K,"index.html"),F=XQ0(Q,"index.html"),U=J.headers.get("accept"),B=U?.includes("text/html")||U?.includes("*/*")&&["",".html"].includes(AK5(K))?[H,F]:[];for(let D of[K,...B])try{let O=Bun.file(D);if(await O.exists())return new Response(O,{headers:qK5(D,F)})}catch{}if(W.includes("/assets/"))return new Response("Not Found",{status:404,headers:{"Cache-Control":"no-store"}});return null}}var RK5="./dist/client";var Pj8=()=>{};var zj8={};O6(zj8,{tryUpgradePreviewWs:()=>bK5,tryHandlePreviewHttp:()=>vK5,previewWebSocketHandler:()=>xK5,parsePreviewBaseDomain:()=>_K5,isPreviewWsData:()=>py0,extractHandleFromHost:()=>yA1});function CK5($){if($.method!=="GET")return!1;return($.headers.get("accept")??"").includes("text/html")}function SK5(){return new Response(kK5,{status:503,headers:{"content-type":"text/html; charset=utf-8","cache-control":"no-store","retry-after":"1","access-control-allow-origin":"*"}})}function _K5($){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 yA1($,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 vK5($,Z){let Q=yA1($.headers.get("host"),Z.baseDomain);if(!Q)return null;let Y=await Z.getRunner();if(!Y)return GQ0(503,"preview proxy not configured");let X=await Y.proxyPreviewRequest(Q,$);if(X.headers.get(Bn)&&CK5($))return SK5();return X.headers.delete(Bn),X}function GQ0($,Z){return new Response(JSON.stringify({error:Z}),{status:$,headers:{"content-type":"application/json","access-control-allow-origin":"*"}})}function py0($){return typeof $==="object"&&$!==null&&$.kind==="preview"}async function bK5($,Z,Q){if(($.headers.get("upgrade")??"").toLowerCase()!=="websocket")return null;let Y=yA1($.headers.get("host"),Q.baseDomain);if(!Y)return null;let X=await Q.getRunner();if(!X)return GQ0(503,"preview proxy not configured");let J=await X.resolvePreviewUpstreamUrl(Y);if(!J)return GQ0(404,"sandbox not found");let G=new URL($.url);if(G.pathname.startsWith("/_sandbox"))return GQ0(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 GQ0(426,"upgrade failed");return}function JQ0($,Z,Q,Y){if(Z.closed)return;Z.closed=!0;try{$.close(Q,Y)}catch{}try{Z.upstream?.close()}catch{}}var IK5=256,kK5='<!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>',xK5;var Aj8=L(()=>{F50();xK5={open($){let Z=$.data;if(!py0(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)}`),JQ0($,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)=>{JQ0($,Z,Y.code||1000,Y.reason||"")}),Q.addEventListener("error",()=>{JQ0($,Z,1011,"upstream error")})},message($,Z){let Q=$.data;if(!py0(Q))return;let Y=Q.upstream;if(Y&&Y.readyState===WebSocket.OPEN){Y.send(Z);return}if(Q.pending.length>=IK5){JQ0($,Q,1011,"preview ws backlog overflow");return}Q.pending.push(Z)},close($){let Z=$.data;if(!py0(Z))return;JQ0($,Z,1000,"")}}});n$();var sA1="13";function rA1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:sA1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}n$();import uj8 from"pg";var aA1=8314027461559302n,lj8=600000,cj8=500;async function eA1($,Z){let{databaseUrl:Q,lockTimeoutMs:Y=lj8}=$,X=$.log??((K)=>console.log(K)),J=new uj8.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",[aA1.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$(cj8)}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)",[aA1.toString()])}catch{}await J.end().catch(()=>{})}}i1();Yg0();v6();function uE8(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function Pg0($,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 xT1(){let $=uE8();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:Pg0($,"--cpu-prof-dir")??process.cwd(),name:Pg0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(Pg0($,"--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.'}))}Tg0();var zQ0;function dT1(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let Q=P2();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(()=>{}),zQ0=setInterval(()=>void Z().catch(()=>{}),$),zQ0.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(zQ0)clearInterval(zQ0)}}import*as mE8 from"bun:jsc";var{startSamplingProfiler:dE8,samplingProfilerStackTraces:iE8}=mE8;function iT1(){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{dE8()}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=iE8()?.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 pT1(){xT1();let $=[dT1(),mT1(),iT1()];return()=>{for(let Z of $)Z()}}import{existsSync as mK5}from"fs";var _W=B0();_T1();var{DBOS:WQ0,DBOSClient:fK5}=await import("@dbos-inc/dbos-sdk");function mA1($,Z){if(!Z)return $;let Q=new URL($);if(!Q.searchParams.has("sslmode"))Q.searchParams.set("sslmode","verify-full");return Q.toString()}var yK5=[Y3,bW,$D,ZD,Uw,O2,w2],gK5=_W.dispatchRole==="worker"?yK5:_W.dispatchRole==="api"?[]:void 0;WQ0.setConfig(rA1({systemDatabaseUrl:mA1(_W.databaseUrl,_W.databasePgSsl),poolSize:_W.dbosPoolSize,executorID:_W.podName,listenQueues:gK5}));var{createApp:hK5}=await Promise.resolve().then(() => (Lj8(),Dj8)),{isServerPath:uK5}=await Promise.resolve().then(() => (jQ0(),LT1)),{createAssetHandler:lK5,resolveClientDir:Vj8}=await Promise.resolve().then(() => (Pj8(),Ej8)),cK5=_W.port,Tj8=Vj8(import.meta.url,"../client"),Ij8=mK5(Tj8)?Tj8:Vj8(import.meta.url,"../dist/client"),dK5=lK5({clientDir:Ij8,isServerPath:uK5}),iK5={"X-Frame-Options":"DENY","Content-Security-Policy":"frame-ancestors 'none'"};function pK5($){let Z=new Headers($.headers);for(let[Q,Y]of Object.entries(iK5))Z.set(Q,Y);return new Response($.body,{status:$.status,statusText:$.statusText,headers:Z})}var{parsePreviewBaseDomain:nK5,tryHandlePreviewHttp:tK5,tryUpgradePreviewWs:oK5,previewWebSocketHandler:gA1,isPreviewWsData:hA1}=await Promise.resolve().then(() => (Aj8(),zj8)),{getOrInitSharedRunner:kj8}=await Promise.resolve().then(() => (VX(),Hp$)),Cj8=nK5(process.env.STUDIO_SANDBOX_PREVIEW_URL_PATTERN),qj8={baseDomain:Cj8??"",getRunner:kj8};if(process.env.STUDIO_SANDBOX_TENANT_POOLS?.trim())kj8().catch(($)=>{console.warn("[lifecycle] eager sandbox provider init for tenant pools failed:",$ instanceof Error?$.message:String($))});var ny0=await hK5({clientDir:Ij8}),uA1=process.env.DBOS_CONDUCTOR_KEY?.trim(),Rj8=process.env.DBOS_CONDUCTOR_URL?.trim();await eA1({databaseUrl:mA1(_W.databaseUrl,_W.databasePgSsl)},()=>WQ0.launch({...uA1?{conductorKey:uA1}:{},...uA1&&Rj8?{conductorURL:Rj8}:{}}));console.log(`[dbos] application version: ${WQ0.applicationVersion}`);var lA1=5,cA1=0;await D8(async()=>{cA1++;try{return await ny0.initDbos()}catch($){let Z=cA1>=lA1?"giving up":"retrying";throw console.warn(`[dbos] initDbos attempt ${cA1}/${lA1} failed, ${Z}`,$),$}},{maxAttempts:lA1,minTimeout:1000,maxTimeout:1e4,jitter:0.5});var sK5=Bun.serve({idleTimeout:0,port:cK5,hostname:"0.0.0.0",fetch:async($,Z)=>{if(Cj8){let Y=await oK5($,Z,qj8);if(Y===void 0)return;if(Y)return Y;let X=await tK5($,qj8);if(X)return X}let Q=await dK5($);if(Q)return pK5(Q);return ny0.fetch($,{server:Z})},websocket:{open($){if(hA1($.data))gA1.open($)},message($,Z){if(hA1($.data))gA1.message($,Z)},close($){if(hA1($.data))gA1.close($)}},development:!1}),rK5=pT1();if(_W.localMode)Promise.resolve().then(() => (hh(),Yv0)).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(() => (hh(),Yv0));Z()}catch{}});var Mj8=!1;async function aK5($){let Z;try{Z=await fK5.create({systemDatabaseUrl:mA1(_W.databaseUrl,_W.databasePgSsl),systemDatabaseSchemaName:"dbos"});let Q=await Z.listWorkflows({status:"PENDING",queueName:bW,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:bW}),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 ty0($){if(Mj8)return;Mj8=!0,console.log(`
|
|
4382
4382
|
[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{rK5(),ny0.markShuttingDown();let J=$T1(_W.dispatchRole,Q,process.env.SHUTDOWN_DRAIN_MS);await J$(J),await sK5.stop(!0);let G=WQ0.executorID;await WQ0.shutdown(),await aK5(G),await ny0.shutdown()}catch(J){console.error("[shutdown] Error during shutdown:",J),X=1}clearTimeout(Y),process.exit(X)}process.on("SIGTERM",()=>ty0("SIGTERM"));process.on("SIGINT",()=>ty0("SIGINT"));process.on("SIGHUP",()=>ty0("SIGHUP"));process.on("unhandledRejection",($)=>{console.error("[process] Unhandled rejection:",$)});process.on("uncaughtException",($)=>{console.error("[process] Uncaught exception:",$),ty0("uncaughtException")});
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c,j as s,a0 as u}from"./index-BlWeDA0T.js";import{C as f}from"./index-Cb4Qh-54.js";import{a as x}from"./thread-route-CW7xmu6G.js";import{u as g}from"./use-task-metadata-D3ZyQdu3.js";import{AppViewContent as h}from"./project-app-view-DmFCm9cm.js";import"./use-mobile-hkvDmO1w.js";import"./use-app-takeover-DUugSHjQ.js";import"./sheet-2W5SODwA.js";import"./tooltip-B6W7NpVz.js";import"./index-DrHP_BcE.js";import"./use-project-native-view-presence-bO2szMt1.js";import"./use-panel-navigate-C2cHRlDL.js";import"./use-project-scope-BROCSZWk.js";import"./repository-binding-Ds0zXEVH.js";import"./use-mcp-client-B333X4fs.js";import"./auth-d1Zn25hw.js";import"./thread-intent-9GHukD-s.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./watch-sse-pool-C1f9T3Cq.js";import"./task-board-C00mxWAh.js";import"./schema-DO5D2eCO.js";import"./slugify-CEUa2lfQ.js";import"./use-file-configs-DgLGloNq.js";import"./use-organization-settings-DxTssZLI.js";import"./site-slug-DebpOoQq.js";import"./agent-icon-Cwi3uRdu.js";import"./AlertCircle-BugQG9bV.js";import"./Tool01-BYtrXXg0.js";import"./ArrowUp-BM60-fZY.js";import"./ArrowLeft-BsOtfvqw.js";import"./LinkBroken01-D4fcNp0y.js";import"./ShoppingBag01-FE4oAEwY.js";import"./ZoomOut-BpMDqvoU.js";import"./Building02-DqK4SREZ.js";import"./CheckCircle-DIUFnJQp.js";import"./ChevronUp-C9gm2RHA.js";import"./ChevronSelectorVertical-CRMiEVEY.js";import"./UserSquare-B3hi5v4G.js";import"./Copy01-BrqDGrTX.js";import"./CreditCard01-C7MhbtAI.js";import"./DotsVertical-DjBJNxxU.js";import"./Image01-LmX-9DTg.js";import"./Globe04-Bi1qDXFD.js";import"./SwitchHorizontal01-BLoNOmQx.js";import"./Key01-D7fc2of0.js";import"./Link01-UOxGnkqg.js";import"./Monitor01-zCUpqs5C.js";import"./Sun-lUDK8Dny.js";import"./Play-BaMMHzUS.js";import"./Plus-DBwsZRbL.js";import"./SearchMd-Cz9CjV4u.js";import"./Trash01-DmGIq4LE.js";import"./Upload01-B1KubIEG.js";import"./User01-DxYW6D1x.js";import"./Users01-Dg9yGM1q.js";import"./XClose-D_NlSxSm.js";import"./toolbar-icon-button-670IDOJM.js";import"./shell-layout-xMF7zZJW.js";import"./avatar-Bp-EkB-V.js";import"./use-clock-tick-B2MqiplU.js";import"./command-D2C8egnH.js";import"./index-BHzdhQYD.js";import"./integration-icon-BRfynNZ5.js";import"./project-icon-CJp8KUWK.js";import"./new-project-dialog-D9WaXvgl.js";import"./label-CCf767lm.js";import"./repository-import-picker-CJrt2Qyf.js";import"./use-navigate-to-agent-Dzg43OKn.js";import"./repository-picker-DoUZKYGY.js";import"./useInfiniteQuery-Z8R3F4Sd.js";import"./infiniteQueryObserver-C9osZa8h.js";import"./collection-search-mDMHjO22.js";import"./use-debounced-value-ByyoTH63.js";import"./required-auth-layout-CoQlG-uh.js";import"./autosend-DkgNxXhw.js";import"./use-org-sso-CH28wOEA.js";import"./resizable-Bu_8_8YG.js";import"./icon-button-DfjCa6Mk.js";import"./tool-namespace-Cu-DNTic.js";import"./use-mcp-tools-56vayh3K.js";import"./content-blocks-o63cs2vh.js";import"./mcp-app-renderer-BdWVQtZT.js";import"./types-C4NGZqb0.js";import"./chat-context-CKK4nwlA.js";import"./use-decopilot-events-Bd-4vex6.js";import"./use-ai-providers-BWqKJRmf.js";import"./use-chat-navigation-CmNsxQBq.js";import"./location-BjlyegC2.js";import"./task-route-BCPomVVQ.js";import"./core.esm-D0fLNP6n.js";import"./site-url-en5df9c-.js";import"./use-connect-companion-DCgJdQ-W.js";import"./companions-core-DzyeM-yJ.js";import"./metadata-D72DunRR.js";import"./github-repo-scope-ByTYKy_L.js";import"./form-DDdiF5DN.js";import"./provision-repo-scoped-github-connection-lckxpDHD.js";import"./useQueries-6AB3hL0G.js";import"./authenticate-and-persist-oauth-p8iXxMbw.js";import"./mcp-oauth-Wpa3RhmZ.js";import"./mcp-oauth-CbRV1ySf.js";import"./track-j7cOVNc5.js";import"./extract-connection-data-B2gWRdBp.js";import"./connection-CXmYeQRu.js";import"./url-slug-CCgQongS.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 jo(){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{jo as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c,j as e,b1 as b,u as g}from"./index-BlWeDA0T.js";import{C as j}from"./index-Cb4Qh-54.js";import{F as v,H as S}from"./file-share-button-DtVBXYxU.js";import{u as k,b as y,e as _}from"./use-org-fs-D6VAaLCr.js";import{S as w}from"./settings-tab-D75yr9EZ.js";import{b as M}from"./thread-route-CW7xmu6G.js";import"./use-mobile-hkvDmO1w.js";import"./use-app-takeover-DUugSHjQ.js";import"./sheet-2W5SODwA.js";import"./tooltip-B6W7NpVz.js";import"./index-DrHP_BcE.js";import"./use-project-native-view-presence-bO2szMt1.js";import"./use-panel-navigate-C2cHRlDL.js";import"./use-project-scope-BROCSZWk.js";import"./repository-binding-Ds0zXEVH.js";import"./use-mcp-client-B333X4fs.js";import"./auth-d1Zn25hw.js";import"./thread-intent-9GHukD-s.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./watch-sse-pool-C1f9T3Cq.js";import"./task-board-C00mxWAh.js";import"./schema-DO5D2eCO.js";import"./slugify-CEUa2lfQ.js";import"./use-file-configs-DgLGloNq.js";import"./use-organization-settings-DxTssZLI.js";import"./site-slug-DebpOoQq.js";import"./agent-icon-Cwi3uRdu.js";import"./AlertCircle-BugQG9bV.js";import"./Tool01-BYtrXXg0.js";import"./ArrowUp-BM60-fZY.js";import"./ArrowLeft-BsOtfvqw.js";import"./LinkBroken01-D4fcNp0y.js";import"./ShoppingBag01-FE4oAEwY.js";import"./ZoomOut-BpMDqvoU.js";import"./Building02-DqK4SREZ.js";import"./CheckCircle-DIUFnJQp.js";import"./ChevronUp-C9gm2RHA.js";import"./ChevronSelectorVertical-CRMiEVEY.js";import"./UserSquare-B3hi5v4G.js";import"./Copy01-BrqDGrTX.js";import"./CreditCard01-C7MhbtAI.js";import"./DotsVertical-DjBJNxxU.js";import"./Image01-LmX-9DTg.js";import"./Globe04-Bi1qDXFD.js";import"./SwitchHorizontal01-BLoNOmQx.js";import"./Key01-D7fc2of0.js";import"./Link01-UOxGnkqg.js";import"./Monitor01-zCUpqs5C.js";import"./Sun-lUDK8Dny.js";import"./Play-BaMMHzUS.js";import"./Plus-DBwsZRbL.js";import"./SearchMd-Cz9CjV4u.js";import"./Trash01-DmGIq4LE.js";import"./Upload01-B1KubIEG.js";import"./User01-DxYW6D1x.js";import"./Users01-Dg9yGM1q.js";import"./XClose-D_NlSxSm.js";import"./toolbar-icon-button-670IDOJM.js";import"./shell-layout-xMF7zZJW.js";import"./avatar-Bp-EkB-V.js";import"./use-clock-tick-B2MqiplU.js";import"./command-D2C8egnH.js";import"./index-BHzdhQYD.js";import"./integration-icon-BRfynNZ5.js";import"./project-icon-CJp8KUWK.js";import"./new-project-dialog-D9WaXvgl.js";import"./label-CCf767lm.js";import"./repository-import-picker-CJrt2Qyf.js";import"./use-navigate-to-agent-Dzg43OKn.js";import"./repository-picker-DoUZKYGY.js";import"./useInfiniteQuery-Z8R3F4Sd.js";import"./infiniteQueryObserver-C9osZa8h.js";import"./collection-search-mDMHjO22.js";import"./use-debounced-value-ByyoTH63.js";import"./required-auth-layout-CoQlG-uh.js";import"./autosend-DkgNxXhw.js";import"./use-org-sso-CH28wOEA.js";import"./resizable-Bu_8_8YG.js";import"./icon-button-DfjCa6Mk.js";import"./popover-C86-20Mm.js";import"./extract-connection-data-B2gWRdBp.js";import"./metadata-D72DunRR.js";import"./connection-CXmYeQRu.js";import"./url-slug-CCgQongS.js";import"./chat-context-CKK4nwlA.js";import"./use-decopilot-events-Bd-4vex6.js";import"./use-ai-providers-BWqKJRmf.js";import"./use-chat-navigation-CmNsxQBq.js";import"./location-BjlyegC2.js";import"./build-improve-prompt-doc-d10qBCA_.js";import"./empty-state-ChkfcEnf.js";import"./use-date-fns-locale-fMKfOMsB.js";import"./differenceInSeconds-C3x8sHUj.js";import"./mcp-oauth-Wpa3RhmZ.js";import"./mcp-oauth-CbRV1ySf.js";import"./alert-dialog-Cww2cCKj.js";import"./textarea-BLu1V32o.js";import"./use-connection-BDpvwZcn.js";import"./use-debounced-autosave-B9xt5l_2.js";import"./add-connection-dialog-lyugU_mj.js";import"./connection-card-BnbrpDH3.js";import"./connection-slug-CITJ0kGN.js";import"./drawer-C7TJoqXz.js";import"./form-DDdiF5DN.js";import"./select-B54nmexC.js";import"./index-BdQq_4o_.js";import"./schema-D-34ICTJ.js";import"./connection-form-helpers-a4JD1Ns8.js";import"./authenticate-and-persist-oauth-p8iXxMbw.js";import"./collection-tabs-C8f6Only.js";import"./badge-BIePf0xK.js";import"./use-infinite-scroll-F7T2FF-S.js";import"./useSuspenseInfiniteQuery-CccYtrDO.js";import"./file-type-icon-C2mdy7vI.js";import"./checkbox-Dwjm_TLd.js";import"./search-input-BaljBVL8.js";import"./use-mcp-auth-status-2eKyky0r.js";import"./types-C4NGZqb0.js";import"./use-mcp-tools-56vayh3K.js";import"./use-mcp-prompts-P2KMjN9W.js";import"./utils-CVEq3hMx.js";import"./switch-ZvhKKFCY.js";import"./scroll-area-BjUjV0Z5.js";import"./optimistic-project-sidebar-views--iSxVboR.js";import"./format-time-CAj8AQXM.js";import"./use-copy-_ycKA-XN.js";import"./virtual-mcp-CM_cNcV_.js";import"./sandbox-url-D3mC8qhT.js";import"./secret-picker-CNgtWTyP.js";import"./use-secrets-znuJNv0F.js";import"./omit-sandbox-map-jj4lCB2U.js";import"./serial-task-queue-CGOeQgpr.js";const x="home";function P(i){const t=c.c(5),{label:r}=i;let p;t[0]===Symbol.for("react.memo_cache_sentinel")?(p=e.jsx(b,{className:"aspect-video w-2/3 max-w-xl"}),t[0]=p):p=t[0];let o;t[1]!==r?(o=r&&e.jsx("p",{className:"text-xs text-muted-foreground",children:r}),t[1]=r,t[2]=o):o=t[2];let m;return t[3]!==o?(m=e.jsxs("div",{className:"flex h-full w-full flex-col items-center justify-center gap-3 bg-background",children:[p,o]}),t[3]=o,t[4]=m):m=t[4],m}function D(i){const t=c.c(15),{path:r}=i;let p;t[0]===Symbol.for("react.memo_cache_sentinel")?(p={refetchIntervalWhenAbsent:2e3},t[0]=p):p=t[0];const o=k(x,r,p),m=y(x)(r);if(o.isPending||!o.data){const h=!o.isPending&&!o.data?"Waiting for the deck to sync…":void 0;let l;return t[1]!==h?(l=e.jsx(P,{label:h}),t[1]=h,t[2]=l):l=t[2],l}let s;t[3]!==o.data?(s=_(o.data),t[3]=o.data,t[4]=s):s=t[4];const f=o.data.shareMode??"private",u=o.data.effectivePublic??!1,d=window.location.origin+m;let a;t[5]!==r||t[6]!==f||t[7]!==u||t[8]!==d?(a=e.jsx(v,{volume:x,path:r,shareMode:f,effectivePublic:u,url:d}),t[5]=r,t[6]=f,t[7]=u,t[8]=d,t[9]=a):a=t[9];let n;return t[10]!==r||t[11]!==m||t[12]!==s||t[13]!==a?(n=e.jsx(S,{readUrl:m,marker:s,title:r,savePath:r,trailing:a}),t[10]=r,t[11]=m,t[12]=s,t[13]=a,t[14]=n):n=t[14],n}function C(){const i=c.c(4);let t;i[0]===Symbol.for("react.memo_cache_sentinel")?(t={strict:!1},i[0]=t):t=i[0];const r=g(t),p=M(),o="path"in r&&typeof r.path=="string"?r.path:void 0;let m;return i[1]!==o||i[2]!==p?(m=o?e.jsx(D,{path:o},o):e.jsx(w,{virtualMcpId:p}),i[1]=o,i[2]=p,i[3]=m):m=i[3],m}function rr(){const i=c.c(1);let t;return i[0]===Symbol.for("react.memo_cache_sentinel")?(t=e.jsx(j.Content,{children:e.jsx(C,{})}),i[0]=t):t=i[0],t}export{rr as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as s,j as e}from"./index-BlWeDA0T.js";import{C as a}from"./index-Cb4Qh-54.js";import{L as n}from"./library-tab-BGwlABCU.js";import{u as c}from"./use-ensure-project-folder-Dd1Qlz-V.js";import{u}from"./use-project-scope-BROCSZWk.js";import{p as l}from"./location-BjlyegC2.js";import"./use-mobile-hkvDmO1w.js";import"./use-app-takeover-DUugSHjQ.js";import"./sheet-2W5SODwA.js";import"./tooltip-B6W7NpVz.js";import"./index-DrHP_BcE.js";import"./use-project-native-view-presence-bO2szMt1.js";import"./thread-route-CW7xmu6G.js";import"./use-panel-navigate-C2cHRlDL.js";import"./thread-intent-9GHukD-s.js";import"./use-mcp-client-B333X4fs.js";import"./auth-d1Zn25hw.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./watch-sse-pool-C1f9T3Cq.js";import"./task-board-C00mxWAh.js";import"./schema-DO5D2eCO.js";import"./slugify-CEUa2lfQ.js";import"./use-file-configs-DgLGloNq.js";import"./use-organization-settings-DxTssZLI.js";import"./repository-binding-Ds0zXEVH.js";import"./site-slug-DebpOoQq.js";import"./agent-icon-Cwi3uRdu.js";import"./AlertCircle-BugQG9bV.js";import"./Tool01-BYtrXXg0.js";import"./ArrowUp-BM60-fZY.js";import"./ArrowLeft-BsOtfvqw.js";import"./LinkBroken01-D4fcNp0y.js";import"./ShoppingBag01-FE4oAEwY.js";import"./ZoomOut-BpMDqvoU.js";import"./Building02-DqK4SREZ.js";import"./CheckCircle-DIUFnJQp.js";import"./ChevronUp-C9gm2RHA.js";import"./ChevronSelectorVertical-CRMiEVEY.js";import"./UserSquare-B3hi5v4G.js";import"./Copy01-BrqDGrTX.js";import"./CreditCard01-C7MhbtAI.js";import"./DotsVertical-DjBJNxxU.js";import"./Image01-LmX-9DTg.js";import"./Globe04-Bi1qDXFD.js";import"./SwitchHorizontal01-BLoNOmQx.js";import"./Key01-D7fc2of0.js";import"./Link01-UOxGnkqg.js";import"./Monitor01-zCUpqs5C.js";import"./Sun-lUDK8Dny.js";import"./Play-BaMMHzUS.js";import"./Plus-DBwsZRbL.js";import"./SearchMd-Cz9CjV4u.js";import"./Trash01-DmGIq4LE.js";import"./Upload01-B1KubIEG.js";import"./User01-DxYW6D1x.js";import"./Users01-Dg9yGM1q.js";import"./XClose-D_NlSxSm.js";import"./toolbar-icon-button-670IDOJM.js";import"./shell-layout-xMF7zZJW.js";import"./avatar-Bp-EkB-V.js";import"./use-clock-tick-B2MqiplU.js";import"./command-D2C8egnH.js";import"./index-BHzdhQYD.js";import"./integration-icon-BRfynNZ5.js";import"./project-icon-CJp8KUWK.js";import"./new-project-dialog-D9WaXvgl.js";import"./label-CCf767lm.js";import"./repository-import-picker-CJrt2Qyf.js";import"./use-navigate-to-agent-Dzg43OKn.js";import"./repository-picker-DoUZKYGY.js";import"./useInfiniteQuery-Z8R3F4Sd.js";import"./infiniteQueryObserver-C9osZa8h.js";import"./collection-search-mDMHjO22.js";import"./use-debounced-value-ByyoTH63.js";import"./required-auth-layout-CoQlG-uh.js";import"./autosend-DkgNxXhw.js";import"./use-org-sso-CH28wOEA.js";import"./resizable-Bu_8_8YG.js";import"./icon-button-DfjCa6Mk.js";import"./search-toggle-BagUH5ou.js";import"./alert-dialog-Cww2cCKj.js";import"./use-chat-navigation-CmNsxQBq.js";import"./use-org-fs-D6VAaLCr.js";import"./use-org-repo-syncs-DlDJxigu.js";import"./textarea-BLu1V32o.js";import"./markdown-BRIlR7nZ.js";import"./use-copy-_ycKA-XN.js";import"./file-share-button-DtVBXYxU.js";import"./popover-C86-20Mm.js";import"./preview-dialog-BP2Zt8Py.js";import"./preview-content-Dk4Scdb5.js";import"./file-preview-Baou4Z0N.js";import"./utils-D-T02kS4.js";import"./editor-r9_MTJH5.js";import"./file-type-icon-C2mdy7vI.js";import"./folder-icon-Bqx-rRTJ.js";import"./empty-state-DXyqmsSi.js";import"./view-mode-toggle-BM2WBWnv.js";import"./format-time-CAj8AQXM.js";import"./differenceInSeconds-C3x8sHUj.js";import"./table-iG31aWmE.js";import"./use-members-DfdZqgw8.js";import"./use-org-auth-client-DROvF2zH.js";function no(){const t=s.c(6),{project:o}=u();c(o);const m=o?.id??"pending";let r;t[0]!==o?(r=o?l(o):void 0,t[0]=o,t[1]=r):r=t[1];const p=o?.title??void 0;let i;return t[2]!==m||t[3]!==r||t[4]!==p?(i=e.jsx(a.Content,{children:e.jsx(n,{root:r,rootLabel:p},m)}),t[2]=m,t[3]=r,t[4]=p,t[5]=i):i=t[5],i}export{no as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as a,j as e,u as n}from"./index-BlWeDA0T.js";import{C as c}from"./index-Cb4Qh-54.js";import{L as l}from"./preview-panel-BGjEJtqj.js";import{a as u}from"./use-panel-navigate-C2cHRlDL.js";import{S as f}from"./settings-tab-D75yr9EZ.js";import{b as h}from"./thread-route-CW7xmu6G.js";import"./use-mobile-hkvDmO1w.js";import"./use-app-takeover-DUugSHjQ.js";import"./sheet-2W5SODwA.js";import"./tooltip-B6W7NpVz.js";import"./index-DrHP_BcE.js";import"./use-project-native-view-presence-bO2szMt1.js";import"./thread-intent-9GHukD-s.js";import"./use-mcp-client-B333X4fs.js";import"./auth-d1Zn25hw.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./watch-sse-pool-C1f9T3Cq.js";import"./task-board-C00mxWAh.js";import"./schema-DO5D2eCO.js";import"./slugify-CEUa2lfQ.js";import"./use-file-configs-DgLGloNq.js";import"./use-organization-settings-DxTssZLI.js";import"./repository-binding-Ds0zXEVH.js";import"./site-slug-DebpOoQq.js";import"./agent-icon-Cwi3uRdu.js";import"./AlertCircle-BugQG9bV.js";import"./Tool01-BYtrXXg0.js";import"./ArrowUp-BM60-fZY.js";import"./ArrowLeft-BsOtfvqw.js";import"./LinkBroken01-D4fcNp0y.js";import"./ShoppingBag01-FE4oAEwY.js";import"./ZoomOut-BpMDqvoU.js";import"./Building02-DqK4SREZ.js";import"./CheckCircle-DIUFnJQp.js";import"./ChevronUp-C9gm2RHA.js";import"./ChevronSelectorVertical-CRMiEVEY.js";import"./UserSquare-B3hi5v4G.js";import"./Copy01-BrqDGrTX.js";import"./CreditCard01-C7MhbtAI.js";import"./DotsVertical-DjBJNxxU.js";import"./Image01-LmX-9DTg.js";import"./Globe04-Bi1qDXFD.js";import"./SwitchHorizontal01-BLoNOmQx.js";import"./Key01-D7fc2of0.js";import"./Link01-UOxGnkqg.js";import"./Monitor01-zCUpqs5C.js";import"./Sun-lUDK8Dny.js";import"./Play-BaMMHzUS.js";import"./Plus-DBwsZRbL.js";import"./SearchMd-Cz9CjV4u.js";import"./Trash01-DmGIq4LE.js";import"./Upload01-B1KubIEG.js";import"./User01-DxYW6D1x.js";import"./Users01-Dg9yGM1q.js";import"./XClose-D_NlSxSm.js";import"./toolbar-icon-button-670IDOJM.js";import"./shell-layout-xMF7zZJW.js";import"./avatar-Bp-EkB-V.js";import"./use-project-scope-BROCSZWk.js";import"./use-clock-tick-B2MqiplU.js";import"./command-D2C8egnH.js";import"./index-BHzdhQYD.js";import"./integration-icon-BRfynNZ5.js";import"./project-icon-CJp8KUWK.js";import"./new-project-dialog-D9WaXvgl.js";import"./label-CCf767lm.js";import"./repository-import-picker-CJrt2Qyf.js";import"./use-navigate-to-agent-Dzg43OKn.js";import"./repository-picker-DoUZKYGY.js";import"./useInfiniteQuery-Z8R3F4Sd.js";import"./infiniteQueryObserver-C9osZa8h.js";import"./collection-search-mDMHjO22.js";import"./use-debounced-value-ByyoTH63.js";import"./required-auth-layout-CoQlG-uh.js";import"./autosend-DkgNxXhw.js";import"./use-org-sso-CH28wOEA.js";import"./resizable-Bu_8_8YG.js";import"./icon-button-DfjCa6Mk.js";import"./preview-content-Dk4Scdb5.js";import"./file-share-button-DtVBXYxU.js";import"./use-org-fs-D6VAaLCr.js";import"./popover-C86-20Mm.js";import"./file-preview-Baou4Z0N.js";import"./utils-D-T02kS4.js";import"./editor-r9_MTJH5.js";import"./file-type-icon-C2mdy7vI.js";import"./markdown-BRIlR7nZ.js";import"./use-copy-_ycKA-XN.js";import"./location-BjlyegC2.js";import"./extract-connection-data-B2gWRdBp.js";import"./metadata-D72DunRR.js";import"./connection-CXmYeQRu.js";import"./url-slug-CCgQongS.js";import"./chat-context-CKK4nwlA.js";import"./use-decopilot-events-Bd-4vex6.js";import"./use-ai-providers-BWqKJRmf.js";import"./use-chat-navigation-CmNsxQBq.js";import"./build-improve-prompt-doc-d10qBCA_.js";import"./empty-state-ChkfcEnf.js";import"./use-date-fns-locale-fMKfOMsB.js";import"./differenceInSeconds-C3x8sHUj.js";import"./mcp-oauth-Wpa3RhmZ.js";import"./mcp-oauth-CbRV1ySf.js";import"./alert-dialog-Cww2cCKj.js";import"./textarea-BLu1V32o.js";import"./use-connection-BDpvwZcn.js";import"./use-debounced-autosave-B9xt5l_2.js";import"./add-connection-dialog-lyugU_mj.js";import"./connection-card-BnbrpDH3.js";import"./connection-slug-CITJ0kGN.js";import"./drawer-C7TJoqXz.js";import"./form-DDdiF5DN.js";import"./select-B54nmexC.js";import"./index-BdQq_4o_.js";import"./schema-D-34ICTJ.js";import"./connection-form-helpers-a4JD1Ns8.js";import"./authenticate-and-persist-oauth-p8iXxMbw.js";import"./collection-tabs-C8f6Only.js";import"./badge-BIePf0xK.js";import"./use-infinite-scroll-F7T2FF-S.js";import"./useSuspenseInfiniteQuery-CccYtrDO.js";import"./checkbox-Dwjm_TLd.js";import"./search-input-BaljBVL8.js";import"./use-mcp-auth-status-2eKyky0r.js";import"./types-C4NGZqb0.js";import"./use-mcp-tools-56vayh3K.js";import"./use-mcp-prompts-P2KMjN9W.js";import"./utils-CVEq3hMx.js";import"./switch-ZvhKKFCY.js";import"./scroll-area-BjUjV0Z5.js";import"./optimistic-project-sidebar-views--iSxVboR.js";import"./format-time-CAj8AQXM.js";import"./virtual-mcp-CM_cNcV_.js";import"./sandbox-url-D3mC8qhT.js";import"./secret-picker-CNgtWTyP.js";import"./use-secrets-znuJNv0F.js";import"./omit-sandbox-map-jj4lCB2U.js";import"./serial-task-queue-CGOeQgpr.js";function b(r){const t=a.c(5),{path:m}=r,{closePanel:p}=u();let o;t[0]!==p?(o=()=>p(),t[0]=p,t[1]=o):o=t[1];const i=o;let s;return t[2]!==i||t[3]!==m?(s=e.jsx(l,{previewPath:m,onClose:i,showSeeInLibrary:!0}),t[2]=i,t[3]=m,t[4]=s):s=t[4],s}function x(){const r=a.c(4);let t;r[0]===Symbol.for("react.memo_cache_sentinel")?(t={strict:!1},r[0]=t):t=r[0];const m=n(t),p=h(),o="path"in m&&typeof m.path=="string"?m.path:void 0;let i;return r[1]!==o||r[2]!==p?(i=o?e.jsx(b,{path:o},o):e.jsx(f,{virtualMcpId:p}),r[1]=o,r[2]=p,r[3]=i):i=r[3],i}function Qr(){const r=a.c(1);let t;return r[0]===Symbol.for("react.memo_cache_sentinel")?(t=e.jsx(c.Content,{children:e.jsx(x,{})}),r[0]=t):t=r[0],t}export{Qr as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as m,j as i}from"./index-BlWeDA0T.js";import{C as p}from"./index-Cb4Qh-54.js";import{S as e}from"./settings-tab-D75yr9EZ.js";import{b as n}from"./thread-route-CW7xmu6G.js";import"./use-mobile-hkvDmO1w.js";import"./use-app-takeover-DUugSHjQ.js";import"./sheet-2W5SODwA.js";import"./tooltip-B6W7NpVz.js";import"./index-DrHP_BcE.js";import"./use-project-native-view-presence-bO2szMt1.js";import"./use-panel-navigate-C2cHRlDL.js";import"./use-project-scope-BROCSZWk.js";import"./repository-binding-Ds0zXEVH.js";import"./use-mcp-client-B333X4fs.js";import"./auth-d1Zn25hw.js";import"./thread-intent-9GHukD-s.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./watch-sse-pool-C1f9T3Cq.js";import"./task-board-C00mxWAh.js";import"./schema-DO5D2eCO.js";import"./slugify-CEUa2lfQ.js";import"./use-file-configs-DgLGloNq.js";import"./use-organization-settings-DxTssZLI.js";import"./site-slug-DebpOoQq.js";import"./agent-icon-Cwi3uRdu.js";import"./AlertCircle-BugQG9bV.js";import"./Tool01-BYtrXXg0.js";import"./ArrowUp-BM60-fZY.js";import"./ArrowLeft-BsOtfvqw.js";import"./LinkBroken01-D4fcNp0y.js";import"./ShoppingBag01-FE4oAEwY.js";import"./ZoomOut-BpMDqvoU.js";import"./Building02-DqK4SREZ.js";import"./CheckCircle-DIUFnJQp.js";import"./ChevronUp-C9gm2RHA.js";import"./ChevronSelectorVertical-CRMiEVEY.js";import"./UserSquare-B3hi5v4G.js";import"./Copy01-BrqDGrTX.js";import"./CreditCard01-C7MhbtAI.js";import"./DotsVertical-DjBJNxxU.js";import"./Image01-LmX-9DTg.js";import"./Globe04-Bi1qDXFD.js";import"./SwitchHorizontal01-BLoNOmQx.js";import"./Key01-D7fc2of0.js";import"./Link01-UOxGnkqg.js";import"./Monitor01-zCUpqs5C.js";import"./Sun-lUDK8Dny.js";import"./Play-BaMMHzUS.js";import"./Plus-DBwsZRbL.js";import"./SearchMd-Cz9CjV4u.js";import"./Trash01-DmGIq4LE.js";import"./Upload01-B1KubIEG.js";import"./User01-DxYW6D1x.js";import"./Users01-Dg9yGM1q.js";import"./XClose-D_NlSxSm.js";import"./toolbar-icon-button-670IDOJM.js";import"./shell-layout-xMF7zZJW.js";import"./avatar-Bp-EkB-V.js";import"./use-clock-tick-B2MqiplU.js";import"./command-D2C8egnH.js";import"./index-BHzdhQYD.js";import"./integration-icon-BRfynNZ5.js";import"./project-icon-CJp8KUWK.js";import"./new-project-dialog-D9WaXvgl.js";import"./label-CCf767lm.js";import"./repository-import-picker-CJrt2Qyf.js";import"./use-navigate-to-agent-Dzg43OKn.js";import"./repository-picker-DoUZKYGY.js";import"./useInfiniteQuery-Z8R3F4Sd.js";import"./infiniteQueryObserver-C9osZa8h.js";import"./collection-search-mDMHjO22.js";import"./use-debounced-value-ByyoTH63.js";import"./required-auth-layout-CoQlG-uh.js";import"./autosend-DkgNxXhw.js";import"./use-org-sso-CH28wOEA.js";import"./resizable-Bu_8_8YG.js";import"./icon-button-DfjCa6Mk.js";import"./extract-connection-data-B2gWRdBp.js";import"./metadata-D72DunRR.js";import"./connection-CXmYeQRu.js";import"./url-slug-CCgQongS.js";import"./chat-context-CKK4nwlA.js";import"./use-decopilot-events-Bd-4vex6.js";import"./use-ai-providers-BWqKJRmf.js";import"./use-chat-navigation-CmNsxQBq.js";import"./location-BjlyegC2.js";import"./build-improve-prompt-doc-d10qBCA_.js";import"./empty-state-ChkfcEnf.js";import"./use-date-fns-locale-fMKfOMsB.js";import"./differenceInSeconds-C3x8sHUj.js";import"./mcp-oauth-Wpa3RhmZ.js";import"./mcp-oauth-CbRV1ySf.js";import"./alert-dialog-Cww2cCKj.js";import"./textarea-BLu1V32o.js";import"./use-connection-BDpvwZcn.js";import"./use-debounced-autosave-B9xt5l_2.js";import"./add-connection-dialog-lyugU_mj.js";import"./connection-card-BnbrpDH3.js";import"./connection-slug-CITJ0kGN.js";import"./drawer-C7TJoqXz.js";import"./form-DDdiF5DN.js";import"./select-B54nmexC.js";import"./index-BdQq_4o_.js";import"./schema-D-34ICTJ.js";import"./connection-form-helpers-a4JD1Ns8.js";import"./authenticate-and-persist-oauth-p8iXxMbw.js";import"./collection-tabs-C8f6Only.js";import"./badge-BIePf0xK.js";import"./use-infinite-scroll-F7T2FF-S.js";import"./useSuspenseInfiniteQuery-CccYtrDO.js";import"./file-type-icon-C2mdy7vI.js";import"./use-org-fs-D6VAaLCr.js";import"./checkbox-Dwjm_TLd.js";import"./search-input-BaljBVL8.js";import"./use-mcp-auth-status-2eKyky0r.js";import"./types-C4NGZqb0.js";import"./use-mcp-tools-56vayh3K.js";import"./use-mcp-prompts-P2KMjN9W.js";import"./utils-CVEq3hMx.js";import"./switch-ZvhKKFCY.js";import"./popover-C86-20Mm.js";import"./scroll-area-BjUjV0Z5.js";import"./optimistic-project-sidebar-views--iSxVboR.js";import"./format-time-CAj8AQXM.js";import"./use-copy-_ycKA-XN.js";import"./virtual-mcp-CM_cNcV_.js";import"./sandbox-url-D3mC8qhT.js";import"./secret-picker-CNgtWTyP.js";import"./use-secrets-znuJNv0F.js";import"./omit-sandbox-map-jj4lCB2U.js";import"./serial-task-queue-CGOeQgpr.js";function s(){const t=m.c(2),o=n();let r;return t[0]!==o?(r=i.jsx(e,{virtualMcpId:o}),t[0]=o,t[1]=r):r=t[1],r}function ko(){const t=m.c(1);let o;return t[0]===Symbol.for("react.memo_cache_sentinel")?(o=i.jsx(p.Content,{children:i.jsx(s,{})}),t[0]=o):o=t[0],o}export{ko as default};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/file-explorer-B67HF6Wo.js","assets/index-BlWeDA0T.js","assets/index-m9hX09uY.css","assets/agent-icon-Cwi3uRdu.js","assets/AlertCircle-BugQG9bV.js","assets/Tool01-BYtrXXg0.js","assets/ArrowUp-BM60-fZY.js","assets/ArrowLeft-BsOtfvqw.js","assets/LinkBroken01-D4fcNp0y.js","assets/ShoppingBag01-FE4oAEwY.js","assets/ZoomOut-BpMDqvoU.js","assets/Building02-DqK4SREZ.js","assets/CheckCircle-DIUFnJQp.js","assets/ChevronUp-C9gm2RHA.js","assets/ChevronSelectorVertical-CRMiEVEY.js","assets/UserSquare-B3hi5v4G.js","assets/Copy01-BrqDGrTX.js","assets/CreditCard01-C7MhbtAI.js","assets/DotsVertical-DjBJNxxU.js","assets/Image01-LmX-9DTg.js","assets/Globe04-Bi1qDXFD.js","assets/SwitchHorizontal01-BLoNOmQx.js","assets/Key01-D7fc2of0.js","assets/Link01-UOxGnkqg.js","assets/Monitor01-zCUpqs5C.js","assets/Sun-lUDK8Dny.js","assets/Play-BaMMHzUS.js","assets/Plus-DBwsZRbL.js","assets/SearchMd-Cz9CjV4u.js","assets/Trash01-DmGIq4LE.js","assets/Upload01-B1KubIEG.js","assets/User01-DxYW6D1x.js","assets/Users01-Dg9yGM1q.js","assets/XClose-D_NlSxSm.js","assets/scroll-area-BjUjV0Z5.js","assets/index-BdQq_4o_.js","assets/tooltip-B6W7NpVz.js","assets/index-DrHP_BcE.js","assets/chat-context-CKK4nwlA.js","assets/use-panel-navigate-C2cHRlDL.js","assets/thread-route-CW7xmu6G.js","assets/use-project-scope-BROCSZWk.js","assets/repository-binding-Ds0zXEVH.js","assets/use-mcp-client-B333X4fs.js","assets/auth-d1Zn25hw.js","assets/autosend-DkgNxXhw.js","assets/thread-intent-9GHukD-s.js","assets/delay-CnY5UFtP.js","assets/backoff-CrEUbyZT.js","assets/watch-sse-pool-C1f9T3Cq.js","assets/task-board-C00mxWAh.js","assets/schema-DO5D2eCO.js","assets/slugify-CEUa2lfQ.js","assets/use-decopilot-events-Bd-4vex6.js","assets/use-ai-providers-BWqKJRmf.js","assets/use-chat-navigation-CmNsxQBq.js","assets/location-BjlyegC2.js","assets/use-organization-settings-DxTssZLI.js","assets/editor-r9_MTJH5.js","assets/shell-layout-xMF7zZJW.js","assets/avatar-Bp-EkB-V.js","assets/use-clock-tick-B2MqiplU.js","assets/command-D2C8egnH.js","assets/index-BHzdhQYD.js","assets/integration-icon-BRfynNZ5.js","assets/project-icon-CJp8KUWK.js","assets/new-project-dialog-D9WaXvgl.js","assets/label-CCf767lm.js","assets/repository-import-picker-CJrt2Qyf.js","assets/use-navigate-to-agent-Dzg43OKn.js","assets/repository-picker-DoUZKYGY.js","assets/useInfiniteQuery-Z8R3F4Sd.js","assets/infiniteQueryObserver-C9osZa8h.js","assets/collection-search-mDMHjO22.js","assets/use-debounced-value-ByyoTH63.js","assets/required-auth-layout-CoQlG-uh.js","assets/use-org-sso-CH28wOEA.js","assets/shell-layout-CE2Eihra.css","assets/save-changes-debug-nBi-n9eV.js","assets/sandbox-git-api-CRxdlhrN.js","assets/sandbox-url-D3mC8qhT.js","assets/alert-dialog-Cww2cCKj.js","assets/context-menu-BAv_ihvH.js","assets/utils-D-T02kS4.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{c as d,b,a2 as j,j as r,r as x,aZ as g,h as _,u as T}from"./index-BlWeDA0T.js";import{A as v}from"./agent-view-guard-B7DCW97m.js";import{F as E}from"./feature-gate-B6qb42zy.js";import{c as S}from"./chat-context-CKK4nwlA.js";import{E as P}from"./empty-state-ChkfcEnf.js";import"./use-main-panel-tabs-CAJkn_vg.js";import"./use-project-native-view-presence-bO2szMt1.js";import"./thread-route-CW7xmu6G.js";import"./use-panel-navigate-C2cHRlDL.js";import"./use-project-scope-BROCSZWk.js";import"./repository-binding-Ds0zXEVH.js";import"./use-mcp-client-B333X4fs.js";import"./auth-d1Zn25hw.js";import"./thread-intent-9GHukD-s.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./watch-sse-pool-C1f9T3Cq.js";import"./task-board-C00mxWAh.js";import"./schema-DO5D2eCO.js";import"./slugify-CEUa2lfQ.js";import"./use-file-configs-DgLGloNq.js";import"./use-organization-settings-DxTssZLI.js";import"./site-slug-DebpOoQq.js";import"./agent-icon-Cwi3uRdu.js";import"./AlertCircle-BugQG9bV.js";import"./Tool01-BYtrXXg0.js";import"./ArrowUp-BM60-fZY.js";import"./ArrowLeft-BsOtfvqw.js";import"./LinkBroken01-D4fcNp0y.js";import"./ShoppingBag01-FE4oAEwY.js";import"./ZoomOut-BpMDqvoU.js";import"./Building02-DqK4SREZ.js";import"./CheckCircle-DIUFnJQp.js";import"./ChevronUp-C9gm2RHA.js";import"./ChevronSelectorVertical-CRMiEVEY.js";import"./UserSquare-B3hi5v4G.js";import"./Copy01-BrqDGrTX.js";import"./CreditCard01-C7MhbtAI.js";import"./DotsVertical-DjBJNxxU.js";import"./Image01-LmX-9DTg.js";import"./Globe04-Bi1qDXFD.js";import"./SwitchHorizontal01-BLoNOmQx.js";import"./Key01-D7fc2of0.js";import"./Link01-UOxGnkqg.js";import"./Monitor01-zCUpqs5C.js";import"./Sun-lUDK8Dny.js";import"./Play-BaMMHzUS.js";import"./Plus-DBwsZRbL.js";import"./SearchMd-Cz9CjV4u.js";import"./Trash01-DmGIq4LE.js";import"./Upload01-B1KubIEG.js";import"./User01-DxYW6D1x.js";import"./Users01-Dg9yGM1q.js";import"./XClose-D_NlSxSm.js";import"./use-connection-BDpvwZcn.js";import"./use-mcp-tools-56vayh3K.js";import"./types-C4NGZqb0.js";import"./utils-CVEq3hMx.js";import"./index-BVXKUS4M.js";import"./sandbox-url-D3mC8qhT.js";import"./tool-namespace-Cu-DNTic.js";import"./tooltip-B6W7NpVz.js";import"./index-DrHP_BcE.js";import"./drawer-C7TJoqXz.js";import"./collection-search-mDMHjO22.js";import"./use-mobile-hkvDmO1w.js";import"./use-mcp-prompts-P2KMjN9W.js";import"./usage-stats-2c6yVTyC.js";import"./form-DDdiF5DN.js";import"./label-CCf767lm.js";import"./markdown-BRIlR7nZ.js";import"./use-copy-_ycKA-XN.js";import"./location-BjlyegC2.js";import"./format-time-CAj8AQXM.js";import"./differenceInSeconds-C3x8sHUj.js";import"./use-decopilot-events-Bd-4vex6.js";import"./input-3uLsKqBB.js";import"./icon-button-DfjCa6Mk.js";import"./file-type-icon-C2mdy7vI.js";import"./use-chat-navigation-CmNsxQBq.js";import"./autosend-DkgNxXhw.js";import"./shell-layout-xMF7zZJW.js";import"./avatar-Bp-EkB-V.js";import"./use-clock-tick-B2MqiplU.js";import"./command-D2C8egnH.js";import"./index-BHzdhQYD.js";import"./integration-icon-BRfynNZ5.js";import"./project-icon-CJp8KUWK.js";import"./new-project-dialog-D9WaXvgl.js";import"./repository-import-picker-CJrt2Qyf.js";import"./use-navigate-to-agent-Dzg43OKn.js";import"./repository-picker-DoUZKYGY.js";import"./useInfiniteQuery-Z8R3F4Sd.js";import"./infiniteQueryObserver-C9osZa8h.js";import"./use-debounced-value-ByyoTH63.js";import"./required-auth-layout-CoQlG-uh.js";import"./use-org-sso-CH28wOEA.js";import"./chat-draft-BMAMpVi3.js";import"./select-B54nmexC.js";import"./index-BdQq_4o_.js";import"./tabs-CtKgNHMr.js";import"./use-deco-credits-CT_j_qxS.js";import"./use-ai-providers-BWqKJRmf.js";import"./toggle-group-BLxmrLuD.js";import"./use-open-billing-url-DJYL8W0U.js";import"./index-sLNiMwXT.js";import"./checkbox-Dwjm_TLd.js";import"./ai-providers-logos-DD3qZ33J.js";import"./popover-C86-20Mm.js";import"./input-BSKhVE-B.js";import"./suggestion-DjstHMLc.js";import"./use-org-fs-D6VAaLCr.js";import"./question-004-sINsf4GQ.js";import"./use-members-DfdZqgw8.js";import"./use-org-auth-client-DROvF2zH.js";import"./feature-paywall-DXx7v-jJ.js";import"./plan-ladder-DRlbA6Oe.js";import"./add-connection-dialog-lyugU_mj.js";import"./extract-connection-data-B2gWRdBp.js";import"./metadata-D72DunRR.js";import"./connection-CXmYeQRu.js";import"./url-slug-CCgQongS.js";import"./connection-card-BnbrpDH3.js";import"./connection-slug-CITJ0kGN.js";import"./textarea-BLu1V32o.js";import"./schema-D-34ICTJ.js";import"./connection-form-helpers-a4JD1Ns8.js";import"./authenticate-and-persist-oauth-p8iXxMbw.js";import"./mcp-oauth-Wpa3RhmZ.js";import"./mcp-oauth-CbRV1ySf.js";import"./collection-tabs-C8f6Only.js";import"./badge-BIePf0xK.js";import"./use-infinite-scroll-F7T2FF-S.js";import"./useSuspenseInfiniteQuery-CccYtrDO.js";import"./use-task-board-events-BNCUuZ7v.js";import"./pair-Boroas12.js";import"./collapsible-BEHE2idT.js";import"./content-blocks-o63cs2vh.js";import"./mcp-app-renderer-BdWVQtZT.js";import"./omit-sandbox-map-jj4lCB2U.js";import"./sheet-2W5SODwA.js";import"./use-thread-outputs-BwFYAN97.js";import"./resolve-tab-icon-BYZBv0qd.js";import"./use-task-metadata-D3ZyQdu3.js";import"./preview-source-BsRLGWUP.js";import"./virtual-mcp-CM_cNcV_.js";const y=x.lazy(()=>g(()=>import("./file-explorer-B67HF6Wo.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83])).then(o=>({default:o.FileExplorer})));function w(o){const t=d.c(14),{openPath:m}=o,p=b(),{org:e}=j(),{currentBranch:i,taskId:h,virtualMcpId:a}=S();if(!a||!i){let s;t[0]!==p?(s=p("mainPanelTabs.codeTab.noSandboxToBrowse"),t[0]=p,t[1]=s):s=t[1];let l;t[2]!==p?(l=p("mainPanelTabs.codeTab.noSandboxToBrowseDescription"),t[2]=p,t[3]=l):l=t[3];let f;return t[4]!==s||t[5]!==l?(f=r.jsx(P,{className:"h-full",title:s,description:l}),t[4]=s,t[5]=l,t[6]=f):f=t[6],f}let n;t[7]===Symbol.for("react.memo_cache_sentinel")?(n=r.jsx("div",{className:"h-full flex items-center justify-center",children:r.jsx(_,{className:"size-5 text-muted-foreground"})}),t[7]=n):n=t[7];const u=h??null;let c;return t[8]!==i||t[9]!==m||t[10]!==e.slug||t[11]!==u||t[12]!==a?(c=r.jsx("div",{className:"flex flex-col w-full h-full",children:r.jsx("div",{className:"flex-1 relative overflow-hidden bg-background",children:r.jsx(x.Suspense,{fallback:n,children:r.jsx(y,{orgSlug:e.slug,virtualMcpId:a,branch:i,threadId:u,openPath:m})})})}),t[8]=i,t[9]=m,t[10]=e.slug,t[11]=u,t[12]=a,t[13]=c):c=t[13],c}function ur(){const o=d.c(3);let t;o[0]===Symbol.for("react.memo_cache_sentinel")?(t={strict:!1},o[0]=t):t=o[0];const m=T(t),e=("file"in m&&typeof m.file=="string"?m.file:void 0)??null;let i;return o[1]!==e?(i=r.jsx(v,{tabId:"code",children:r.jsx(E,{feature:"cms",children:r.jsx(w,{openPath:e})})}),o[1]=e,o[2]=i):i=o[2],i}export{ur as default};
|