decocms 4.404.0 → 4.405.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/assets/{AlertCircle-BbNYew1e.js → AlertCircle-DsUEjB1y.js} +1 -1
- package/dist/client/assets/{AreaChart-CyrIzzBK.js → AreaChart-BRDOpSI-.js} +1 -1
- package/dist/client/assets/{ArrowLeft-ez9Y1Onk.js → ArrowLeft-CxRjfeZc.js} +1 -1
- package/dist/client/assets/{ArrowRight-E6fKygmt.js → ArrowRight-eKUb0n2T.js} +1 -1
- package/dist/client/assets/{ArrowUp-BiIj6tlg.js → ArrowUp-CX6DmOcK.js} +1 -1
- package/dist/client/assets/{CartesianChart-DDqoeeEY.js → CartesianChart-CqtpuEW2.js} +1 -1
- package/dist/client/assets/{Check-CapvsdGu.js → Check-C47vZGc9.js} +1 -1
- package/dist/client/assets/{CheckCircle-B1OVLKZR.js → CheckCircle-bbegiaBM.js} +1 -1
- package/dist/client/assets/{ChevronUp-ChAmXWjD.js → ChevronUp-CpSCTQZS.js} +1 -1
- package/dist/client/assets/{Copy01-DDkSTuTY.js → Copy01-BJU01N4U.js} +1 -1
- package/dist/client/assets/{CreditCard01-OHGsZ6Bw.js → CreditCard01-DC24GL_m.js} +1 -1
- package/dist/client/assets/{DotsVertical-5emZ3MQ9.js → DotsVertical-DZNzJWKj.js} +1 -1
- package/dist/client/assets/{ErrorBarContext-BePb3GYh.js → ErrorBarContext-DSBwGBE1.js} +1 -1
- package/dist/client/assets/{Eye-BrViZp-5.js → Eye-CNkWuzWx.js} +1 -1
- package/dist/client/assets/{Globe04-CAYZzkRC.js → Globe04-DhVTbcPw.js} +1 -1
- package/dist/client/assets/{Image01-SKNmlwlF.js → Image01-B3RqtHm-.js} +1 -1
- package/dist/client/assets/{Key01-CXg7nR14.js → Key01-Cp3mTBvm.js} +1 -1
- package/dist/client/assets/{LayoutLeft-nHNyhUOC.js → LayoutLeft-R0hY03zy.js} +1 -1
- package/dist/client/assets/{Line-bJ3m68oK.js → Line-CH538az5.js} +1 -1
- package/dist/client/assets/{Link01-Byw0zCMT.js → Link01-B54Jeukm.js} +1 -1
- package/dist/client/assets/{LinkExternal01-CFar3COz.js → LinkExternal01-ZYxwJi4c.js} +1 -1
- package/dist/client/assets/{Monitor01-CFnDja5J.js → Monitor01-DKi30I8e.js} +1 -1
- package/dist/client/assets/{Palette-DwexJoWb.js → Palette-CB7RyOHv.js} +1 -1
- package/dist/client/assets/{Plus-CrWT7UIJ.js → Plus-K9ZpzFJZ.js} +1 -1
- package/dist/client/assets/{SearchMd-CVxuC9Yh.js → SearchMd-Bs1QtwQ9.js} +1 -1
- package/dist/client/assets/{Sector-8R3-bNXY.js → Sector-DPVvirap.js} +1 -1
- package/dist/client/assets/{Share07-BY2hIBvI.js → Share07-BSBmBJl6.js} +1 -1
- package/dist/client/assets/{Sun-B2sJ8Eow.js → Sun-Dp-NCeHB.js} +1 -1
- package/dist/client/assets/{Tool01-CjL9B5Pb.js → Tool01-Cg6st-mQ.js} +1 -1
- package/dist/client/assets/{Trash01-DGERm_SA.js → Trash01-Pso5bybc.js} +1 -1
- package/dist/client/assets/{Upload01-BMWzLzBx.js → Upload01-JoSAzPxB.js} +1 -1
- package/dist/client/assets/{User01-B6jvxPbq.js → User01-B6NQ0PY-.js} +1 -1
- package/dist/client/assets/{UserSquare-BGTYrtN8.js → UserSquare-JAwDD8yK.js} +1 -1
- package/dist/client/assets/{Users01-lstimZpI.js → Users01-DdaptQvV.js} +1 -1
- package/dist/client/assets/{X-DZouMoq2.js → X-Cf3B8UPs.js} +1 -1
- package/dist/client/assets/{XClose-BWjIThCL.js → XClose-Db8fLrAk.js} +1 -1
- package/dist/client/assets/{Zap-CAIuML8h.js → Zap-CGkZfZn3.js} +1 -1
- package/dist/client/assets/{ZoomOut-kCU9bgKm.js → ZoomOut-CqDz8pWP.js} +1 -1
- package/dist/client/assets/{access-gate-CXWsTo2H.js → access-gate-CpD0T0Z7.js} +1 -1
- package/dist/client/assets/{add-connection-dialog-BvYu9ZLH.js → add-connection-dialog-BvGiaD4j.js} +1 -1
- package/dist/client/assets/{agent-analytics-BAC6sZrC.js → agent-analytics-DJ0jHUU_.js} +1 -1
- package/dist/client/assets/agent-app-s83EqitU.js +1 -0
- package/dist/client/assets/{agent-assets-Cgl-_NqO.js → agent-assets-Y6S9Evzj.js} +1 -1
- package/dist/client/assets/{agent-automation-uZpVL-6r.js → agent-automation-DS33AtWX.js} +1 -1
- package/dist/client/assets/{agent-automations-DO5z0Q_f.js → agent-automations-D5Cs6slq.js} +1 -1
- package/dist/client/assets/{agent-connect-sources-DcEjSsA2.js → agent-connect-sources-C19Ncb9i.js} +1 -1
- package/dist/client/assets/agent-deck-WZJTTBYj.js +1 -0
- package/dist/client/assets/{agent-e2e-D5oWT2cu.js → agent-e2e-DiFXrwdb.js} +1 -1
- package/dist/client/assets/{agent-experiments-BMX32UgF.js → agent-experiments-krT8jDwR.js} +1 -1
- package/dist/client/assets/{agent-file-kq412zIx.js → agent-file-_AMAGkCi.js} +1 -1
- package/dist/client/assets/{agent-git-DHhLQdWz.js → agent-git-Nuk-Z_IW.js} +1 -1
- package/dist/client/assets/{agent-hosting-CM21tZ8K.js → agent-hosting-37l2SBDK.js} +1 -1
- package/dist/client/assets/{agent-icon-Cmy8McnK.js → agent-icon-2JtFJ4_g.js} +1 -1
- package/dist/client/assets/agent-library-file-jhD05a-J.js +1 -0
- package/dist/client/assets/{agent-monitor-DmocYJA8.js → agent-monitor-BPp6ZGvE.js} +1 -1
- package/dist/client/assets/{agent-overview-BXOXzWwO.js → agent-overview-D6EMAXSv.js} +1 -1
- package/dist/client/assets/agent-settings-C7Qj41jR.js +1 -0
- package/dist/client/assets/{agent-site-editor-HS5VxqRS.js → agent-site-editor-DeGeacW9.js} +1 -1
- package/dist/client/assets/agent-site-editor-code-3cz8fGiG.js +2 -0
- package/dist/client/assets/{agent-site-editor-content-CODZYLvh.js → agent-site-editor-content-1fuHnPdU.js} +3 -3
- package/dist/client/assets/{agent-site-editor-preview-D-YxKY7I.js → agent-site-editor-preview-Cw6g-T0N.js} +3 -3
- package/dist/client/assets/agent-view-Dvx7sTES.js +1 -0
- package/dist/client/assets/{agent-view-guard-DbiXXwvF.js → agent-view-guard-z6x7Nm-M.js} +1 -1
- package/dist/client/assets/{agents-list-CyrikF26.js → agents-list-CL1iCZzE.js} +1 -1
- package/dist/client/assets/{ai-providers-icLargnn.js → ai-providers-C5ektYHB.js} +1 -1
- package/dist/client/assets/{alert-CiBA0aDn.js → alert-Dl6kFooW.js} +1 -1
- package/dist/client/assets/{alert-dialog-CQJ6L-fd.js → alert-dialog-i3oXAGgD.js} +1 -1
- package/dist/client/assets/{analytics-sections-BoMA3rRV.js → analytics-sections-qrxE64IW.js} +1 -1
- package/dist/client/assets/api-keys-CRIX4At_.js +1 -0
- package/dist/client/assets/{api-keys-bUSBPRtA.js → api-keys-DGIbcgfp.js} +1 -1
- package/dist/client/assets/app-editor-Jk9A4xW_.js +1 -0
- package/dist/client/assets/{asset-utils-CWpboJeO.js → asset-utils-B6oJ7SUl.js} +1 -1
- package/dist/client/assets/{auth-Cyn2xymY.js → auth-DZGX-aYF.js} +1 -1
- package/dist/client/assets/{auth-catchall-CwaYWibx.js → auth-catchall-Cjy0xwd1.js} +1 -1
- package/dist/client/assets/{auth-entry-BHe_YWyE.js → auth-entry-OuVKDzQ_.js} +1 -1
- package/dist/client/assets/{auth-split-layout-Zg5hezNy.js → auth-split-layout-BnmWVJas.js} +1 -1
- package/dist/client/assets/{authenticate-and-persist-oauth-BvIb3Xk5.js → authenticate-and-persist-oauth-CbvB7TLO.js} +1 -1
- package/dist/client/assets/{automation-list-row-DddaztKP.js → automation-list-row-OQeKNB2H.js} +1 -1
- package/dist/client/assets/{automation-runs-oAMRwC7o.js → automation-runs-BM7Yw2Eq.js} +1 -1
- package/dist/client/assets/{automations-qQTVYfDL.js → automations-efhes8rR.js} +1 -1
- package/dist/client/assets/{autosend-CFp_YbNU.js → autosend-DJOIimLd.js} +1 -1
- package/dist/client/assets/{avatar-Bbn37Vzx.js → avatar-FPeNmw2i.js} +1 -1
- package/dist/client/assets/{badge-CrCnpvUj.js → badge-Bm2rr-BJ.js} +1 -1
- package/dist/client/assets/{block-document-hfus3v0u.js → block-document-BBVUlehr.js} +1 -1
- package/dist/client/assets/{blocks-preview-workspace-context-CNOGiw3w.js → blocks-preview-workspace-context-C2RrHeY4.js} +1 -1
- package/dist/client/assets/{buckets-BIbh8I2I.js → buckets-C3-HQjpu.js} +1 -1
- package/dist/client/assets/{build-improve-prompt-doc-lPD5ppsw.js → build-improve-prompt-doc-BF8D4qJT.js} +1 -1
- package/dist/client/assets/{calendar-PNSW4-z7.js → calendar-CcQzKXt2.js} +1 -1
- package/dist/client/assets/{capability-load-error-CVvco4Ot.js → capability-load-error-CIXQEGJJ.js} +1 -1
- package/dist/client/assets/{cards-BkCGO6Kt.js → cards-Ba18JLi3.js} +1 -1
- package/dist/client/assets/{category-editor-B4zAIYVR.js → category-editor-8gMuA_qk.js} +1 -1
- package/dist/client/assets/{chart-BisoenwS.js → chart-CMWlO3gW.js} +1 -1
- package/dist/client/assets/{chat-context-DUOWaPKi.js → chat-context-gHGpwBR0.js} +1 -1
- package/dist/client/assets/{chat-draft-BVdC4I7_.js → chat-draft-DALA5d_a.js} +1 -1
- package/dist/client/assets/{checkbox-eIasmi-8.js → checkbox-X3rwkbl_.js} +1 -1
- package/dist/client/assets/{choose-editor-BoaZ_w_l.js → choose-editor-DkEu4jVj.js} +1 -1
- package/dist/client/assets/{claim-phase-copy-WG8f16_j.js → claim-phase-copy-Cm4suJFn.js} +1 -1
- package/dist/client/assets/{cli-auth-success-CNqNgFdk.js → cli-auth-success-Da8SJJAt.js} +1 -1
- package/dist/client/assets/{client-icons-D9zQlbJS.js → client-icons-Dxr8Yq32.js} +1 -1
- package/dist/client/assets/{collapsible-pZTQk4TI.js → collapsible-K7HXR552.js} +1 -1
- package/dist/client/assets/{collection-detail-CHdyjTCh.js → collection-detail-BZUXDRPJ.js} +1 -1
- package/dist/client/assets/{collection-display-button-CQNehznu.js → collection-display-button-BjojfXU0.js} +1 -1
- package/dist/client/assets/{collection-search-CLjQtaPy.js → collection-search-CkBXUEir.js} +1 -1
- package/dist/client/assets/{collection-table-wrapper-C0pPgW_S.js → collection-table-wrapper-DN6s2ezH.js} +1 -1
- package/dist/client/assets/{collection-tabs-mguLm2RL.js → collection-tabs-h69TId83.js} +1 -1
- package/dist/client/assets/{combobox-BifSrqJF.js → combobox-Dtm1D1Gx.js} +1 -1
- package/dist/client/assets/{command-Cvu7KW7q.js → command-CVsrsI4m.js} +1 -1
- package/dist/client/assets/{companion-mcps-section-RXkfUsB4.js → companion-mcps-section-BuP-DvjF.js} +1 -1
- package/dist/client/assets/{connect-B0PiTR8n.js → connect-BoYDAi_l.js} +1 -1
- package/dist/client/assets/{connect-layout-BpZBikOw.js → connect-layout-DoSkHXO9.js} +1 -1
- package/dist/client/assets/{connection-card-A6aYN3Ch.js → connection-card-KAiDM8CK.js} +1 -1
- package/dist/client/assets/{connection-detail-DeIZFNSH.js → connection-detail-CzNkVerg.js} +1 -1
- package/dist/client/assets/{connection-form-helpers-D81_RJtX.js → connection-form-helpers-DXZ3P4tF.js} +1 -1
- package/dist/client/assets/{connection-B88XtkV2.js → connection-hgnPVi5k.js} +1 -1
- package/dist/client/assets/{connections-Ii4Fhwk2.js → connections-CnlMLJZm.js} +1 -1
- package/dist/client/assets/{context-QsmYUpSB.js → context-Bd72LbTF.js} +1 -1
- package/dist/client/assets/{create-organization-dialog-C_uXNh4Y.js → create-organization-dialog-i0CZVTID.js} +1 -1
- package/dist/client/assets/{decopilot-lzqAroU6.js → decopilot-BI4MNQek.js} +1 -1
- package/dist/client/assets/{dialog-Co6zFTX7.js → dialog-Dz5U96w4.js} +1 -1
- package/dist/client/assets/{discover-B4MDVt_D.js → discover-najCHmTL.js} +1 -1
- package/dist/client/assets/{domain-settings-DdvXZBk0.js → domain-settings-DNwTY7PM.js} +1 -1
- package/dist/client/assets/{download-app-dialog-C1apE888.js → download-app-dialog-DGOmfby-.js} +1 -1
- package/dist/client/assets/{drawer-DWByFqsm.js → drawer-D10zZUJc.js} +1 -1
- package/dist/client/assets/{editor-DB4WW31s.js → editor-D2xPr_F4.js} +1 -1
- package/dist/client/assets/{empty-state-B_zfMTAY.js → empty-state-C3Y4Vd_i.js} +1 -1
- package/dist/client/assets/{empty-state-6SR7W13N.js → empty-state-C9c8w1ej.js} +1 -1
- package/dist/client/assets/{extract-connection-data-BZ39OCYI.js → extract-connection-data-DHIKYRMr.js} +1 -1
- package/dist/client/assets/{feature-gate-U11G36VB.js → feature-gate-B48tqaZu.js} +1 -1
- package/dist/client/assets/{feature-paywall-rYbT6jro.js → feature-paywall-qXQ1HIVx.js} +1 -1
- package/dist/client/assets/{file-explorer-ESJbsuX7.js → file-explorer-DSXowg_W.js} +1 -1
- package/dist/client/assets/{file-preview-B-s3azNt.js → file-preview-C6JgW7Ry.js} +1 -1
- package/dist/client/assets/{file-share-button-DjI7bSLZ.js → file-share-button-CXdrjH5i.js} +1 -1
- package/dist/client/assets/{file-type-icon-3LjfdOqY.js → file-type-icon-C5jBCqyr.js} +1 -1
- package/dist/client/assets/{folder-icon-pOMyK4Xx.js → folder-icon-CLfej4Jo.js} +1 -1
- package/dist/client/assets/{form-CR07LiEf.js → form-dzTiwEC8.js} +1 -1
- package/dist/client/assets/{gateway-client-CvspeF7R.js → gateway-client-CQ99_F9N.js} +1 -1
- package/dist/client/assets/{general-Dr7N1IOz.js → general-BOFVBpvc.js} +1 -1
- package/dist/client/assets/{github-icon-BFVkYGiB.js → github-icon-DQKhcsF7.js} +1 -1
- package/dist/client/assets/{home-DsC0PAQ2.js → home-BJL80DBy.js} +1 -1
- package/dist/client/assets/{hooks-vxTM1gXs.js → hooks-CIjNCBKM.js} +1 -1
- package/dist/client/assets/{icon-button-D2WBOak9.js → icon-button-BTyh33gY.js} +1 -1
- package/dist/client/assets/{index-BuEPLkrP.js → index-3B-rQ9Sg.js} +1 -1
- package/dist/client/assets/{index-DVzaRP6y.js → index-BwIM1E_p.js} +1 -1
- package/dist/client/assets/{index-CeZiK-yi.js → index-C8m20OOl.js} +1 -1
- package/dist/client/assets/{index-DIchPxE-.js → index-CDrqgvtL.js} +1 -1
- package/dist/client/assets/{index-BI8cotxY.js → index-CHgxICOu.js} +1 -1
- package/dist/client/assets/{index-oInLRegO.js → index-CKFxHbnr.js} +41 -41
- package/dist/client/assets/{index-C6YWxuEI.js → index-CUHMaDus.js} +1 -1
- package/dist/client/assets/{index-DUUPpuUX.js → index-CWhfWvDv.js} +1 -1
- package/dist/client/assets/{index-C1j5wK2H.js → index-D6K21KS-.js} +1 -1
- package/dist/client/assets/{index-CDs-itgn.js → index-DRZWAo_x.js} +1 -1
- package/dist/client/assets/{index-Bk4CLjGS.js → index-DYsgV6Ph.js} +1 -1
- package/dist/client/assets/{index-i8l1CBWn.js → index-DsMZ3RYm.js} +1 -1
- package/dist/client/assets/{index-D5YihiGB.js → index-fDTFynqB.js} +1 -1
- package/dist/client/assets/{index-redirect-BwnEa2Q5.js → index-redirect-DdIeh8Z8.js} +1 -1
- package/dist/client/assets/{index-BH02SjQa.js → index-vfgVsYie.js} +1 -1
- package/dist/client/assets/{infiniteQueryObserver-Cuusnxij.js → infiniteQueryObserver-DhhqlhlM.js} +1 -1
- package/dist/client/assets/{infra-billing-BK1JVegc.js → infra-billing-CvukVSxB.js} +1 -1
- package/dist/client/assets/{input-g-_2Ow3k.js → input-BwYzPEPU.js} +1 -1
- package/dist/client/assets/{input-DN8Quxr_.js → input-CkB9UxHQ.js} +1 -1
- package/dist/client/assets/{input-DeNzjyfg.js → input-DxQMUEiU.js} +1 -1
- package/dist/client/assets/{integration-icon-Uz5RxAVi.js → integration-icon-B1VfMW51.js} +1 -1
- package/dist/client/assets/{label-Be1evrK0.js → label-Byavsfld.js} +1 -1
- package/dist/client/assets/{last-preview-page-B6MFR7mx.js → last-preview-page-DUWcbCE7.js} +1 -1
- package/dist/client/assets/{layout-Cb-X3TEf.js → layout-B-sEL084.js} +1 -1
- package/dist/client/assets/{legacy-agents-deep-CxR0cfBP.js → legacy-agents-deep-DQRfRExe.js} +1 -1
- package/dist/client/assets/{legacy-main-redirect-DqgHqeYi.js → legacy-main-redirect-DEsEEeKY.js} +1 -1
- package/dist/client/assets/{library-eEt5Ayu-.js → library-DT6klu8j.js} +1 -1
- package/dist/client/assets/{login-DrVcYPbR.js → login-MIjocvdU.js} +1 -1
- package/dist/client/assets/{markdown-3kIoJtjQ.js → markdown-CtPprix1.js} +1 -1
- package/dist/client/assets/{mcp-app-renderer-JNmWwrWf.js → mcp-app-renderer-Cu2_lqRx.js} +1 -1
- package/dist/client/assets/{mcp-oauth-DkrJY4dD.js → mcp-oauth-t4nAyfWQ.js} +1 -1
- package/dist/client/assets/{members-DnZjaQ1T.js → members-C0H81MGh.js} +1 -1
- package/dist/client/assets/{message-templates-DUtCxF4i.js → message-templates-BLVZkLuU.js} +1 -1
- package/dist/client/assets/{mini-report-page-B4J2AhL2.js → mini-report-page-B0R6DrC-.js} +1 -1
- package/dist/client/assets/mock-board-DkPAOTPZ.js +10 -0
- package/dist/client/assets/{monaco-editor-DHJIGXAo.js → monaco-editor-CviGEIDQ.js} +1 -1
- package/dist/client/assets/{monitoring-stats-row-BJsXZ4tn.js → monitoring-stats-row-DKRFV8Sj.js} +1 -1
- package/dist/client/assets/{multi-select-BfYtzZ_c.js → multi-select-CASCfNC5.js} +1 -1
- package/dist/client/assets/{mustache-CGHah8NU.js → mustache-xJcbJqt3.js} +1 -1
- package/dist/client/assets/{oauth-callback-CUYnm623.js → oauth-callback-DgK7voTw.js} +1 -1
- package/dist/client/assets/{oauth-callback-ai-provider-Bm5TDAIT.js → oauth-callback-ai-provider-C7khkRGZ.js} +1 -1
- package/dist/client/assets/{onboarding-BPgw_GvO.js → onboarding-ByYhY5XE.js} +1 -1
- package/dist/client/assets/{optimistic-project-sidebar-views-DHStkeWV.js → optimistic-project-sidebar-views-B_oHISvm.js} +1 -1
- package/dist/client/assets/{org-file-open-context-DA2DiiBk.js → org-file-open-context-Bwu-baYU.js} +1 -1
- package/dist/client/assets/{organization-choice-lTUDkT9X.js → organization-choice-CCBX3ogL.js} +1 -1
- package/dist/client/assets/{orgs-K2SiByKT.js → orgs-AS92pNs0.js} +1 -1
- package/dist/client/assets/{page-seo-form-C6QKL4-m.js → page-seo-form-D5Sws58P.js} +1 -1
- package/dist/client/assets/{pair-ZHGt6bef.js → pair-MV6enRyS.js} +1 -1
- package/dist/client/assets/{plan-ladder-BmO6LQXU.js → plan-ladder-Czwx75Rs.js} +1 -1
- package/dist/client/assets/{popover-COlLm0r0.js → popover-BdCX7ryo.js} +1 -1
- package/dist/client/assets/{post-calendar-CaFAM92h.js → post-calendar-B-Mf8ZWz.js} +1 -1
- package/dist/client/assets/{post-editor-BZYloy2g.js → post-editor-Ar3Q7Pip.js} +1 -1
- package/dist/client/assets/{preview-content-BR4RbkDm.js → preview-content-s5k1Cbyz.js} +1 -1
- package/dist/client/assets/{preview-dialog-BwQkmkta.js → preview-dialog-DuTtXNNd.js} +1 -1
- package/dist/client/assets/{profile-C7Xv3F-Y.js → profile-CzeUr_Ho.js} +1 -1
- package/dist/client/assets/{project-app-view-BjFT7eiW.js → project-app-view-CoKvxaNv.js} +1 -1
- package/dist/client/assets/{project-feed-C5enZNe6.js → project-feed-Bffo6UQZ.js} +1 -1
- package/dist/client/assets/{project-icon-BdOYvLpp.js → project-icon-Be-Ni96A.js} +1 -1
- package/dist/client/assets/project-reports-DGtApGn_.js +1 -0
- package/dist/client/assets/project-tasks-C6bTWPYs.js +1 -0
- package/dist/client/assets/{prompts-C-re156T.js → prompts-bcmTsSOK.js} +1 -1
- package/dist/client/assets/record-editor-BmfhaIV0.js +1 -0
- package/dist/client/assets/{redirect-editor-B7Rn2j3q.js → redirect-editor-CffiC-_L.js} +1 -1
- package/dist/client/assets/{reports-o_5q4e3r.js → reports-B9J-0pwm.js} +1 -1
- package/dist/client/assets/reports-D__MXfnc.js +1 -0
- package/dist/client/assets/{reports-onboarding-o8YDthiF.js → reports-onboarding-BaQ-4i_2.js} +1 -1
- package/dist/client/assets/{reports-tab-Di1avIHr.js → reports-tab-CyOnuHv8.js} +2 -2
- package/dist/client/assets/{repositories-D0EGMPZ0.js → repositories-Bbpp5SgW.js} +1 -1
- package/dist/client/assets/{repository-import-picker-DbE5qt2Q.js → repository-import-picker-B5FDCmL1.js} +1 -1
- package/dist/client/assets/{repository-picker-ttYZl_VU.js → repository-picker-Hzd_E6oP.js} +1 -1
- package/dist/client/assets/{require-capability-cFAfNeHI.js → require-capability-BiVnHM5-.js} +1 -1
- package/dist/client/assets/{required-auth-layout-CyPDzKJB.js → required-auth-layout-BIF9HPgK.js} +1 -1
- package/dist/client/assets/{reset-password-B08n6w8p.js → reset-password-B1vGE6sA.js} +1 -1
- package/dist/client/assets/{resizable-C2ZZg82t.js → resizable-eQlpFDx1.js} +1 -1
- package/dist/client/assets/{resolve-tab-icon-CBXDCirr.js → resolve-tab-icon-CRRFoIat.js} +1 -1
- package/dist/client/assets/{review-settings-Bafj1hN2.js → review-settings-CCgGhKT8.js} +1 -1
- package/dist/client/assets/{rich-text-link-control-QVLwQ_g7.js → rich-text-link-control-z-Yv55rX.js} +1 -1
- package/dist/client/assets/{roles-Brz4rEHD.js → roles-CpvpHgz9.js} +1 -1
- package/dist/client/assets/{route-iXKvUaiv.js → route-8dVhoFE6.js} +1 -1
- package/dist/client/assets/{route-D7tF1uJe.js → route-CE5dJ4Bv.js} +1 -1
- package/dist/client/assets/{route-aMHk5C5-.js → route-DJiiQ0FB.js} +1 -1
- package/dist/client/assets/{route-page-header-DUQyJQ1r.js → route-page-header-CU_K_kqW.js} +1 -1
- package/dist/client/assets/{runnable-block-editor-O1sQLoUa.js → runnable-block-editor-DO1y86de.js} +1 -1
- package/dist/client/assets/{sandbox-lifecycle-context-BGf3c59K.js → sandbox-lifecycle-context-uLRMQhBA.js} +1 -1
- package/dist/client/assets/{schema-BUeJ0pO6.js → schema-CnqoZ8XQ.js} +1 -1
- package/dist/client/assets/{scroll-area-Bi7CwTF7.js → scroll-area-mXx1_HGL.js} +1 -1
- package/dist/client/assets/{search-input-D8YyIx5o.js → search-input-CrsnKDit.js} +1 -1
- package/dist/client/assets/{search-toggle-ga33xasT.js → search-toggle-CQ_ABEOc.js} +1 -1
- package/dist/client/assets/{secret-picker-VrIRp4P8.js → secret-picker-DftAn2T4.js} +1 -1
- package/dist/client/assets/{secrets-D59kHqnX.js → secrets-BenDeLd0.js} +1 -1
- package/dist/client/assets/{sections-editor-B0UHb4kn.js → sections-editor-CPzIAZe_.js} +1 -1
- package/dist/client/assets/{select-DMFXyiyi.js → select-BxPDCCiu.js} +1 -1
- package/dist/client/assets/{select-model-CWZYRt6y.js → select-model-DqVMLwya.js} +1 -1
- package/dist/client/assets/{seo-editor-CkF_wa8A.js → seo-editor-CMhOrU3n.js} +1 -1
- package/dist/client/assets/{separator-BmxJoEMj.js → separator-BGdDqiZ3.js} +1 -1
- package/dist/client/assets/{settings-tab-ClonbMIR.js → settings-tab-CnB_ZxAu.js} +1 -1
- package/dist/client/assets/{sheet-C3oOEvZN.js → sheet-BtadI1Rc.js} +1 -1
- package/dist/client/assets/{shell-layout-DM5WIQIJ.js → shell-layout-DLejAPNB.js} +1 -1
- package/dist/client/assets/{skill-preview-BiwkN-Il.js → skill-preview-BFvfROVY.js} +1 -1
- package/dist/client/assets/{skills-DRGo4Ure.js → skills-DbhvAlhu.js} +1 -1
- package/dist/client/assets/{sso-Df8abmv9.js → sso-KEEpxd2V.js} +1 -1
- package/dist/client/assets/{suggestion-aPccODil.js → suggestion-BmwmNKL9.js} +1 -1
- package/dist/client/assets/{switch-C0HRK106.js → switch-C-nd7OoO.js} +1 -1
- package/dist/client/assets/{synced-repos-CiNb59uv.js → synced-repos-C9tzSlRg.js} +1 -1
- package/dist/client/assets/{tab-icon-glyph-TyAyK-DT.js → tab-icon-glyph-kI1zUO91.js} +1 -1
- package/dist/client/assets/{table-DRvQpNV6.js → table-Bkx16DCE.js} +1 -1
- package/dist/client/assets/{tabs-jHa9G-vf.js → tabs-D4SJ_C0_.js} +1 -1
- package/dist/client/assets/task-board-BiZDtBvo.js +1 -0
- package/dist/client/assets/{task-route-Bp1cgZUA.js → task-route-CP0YfIgz.js} +1 -1
- package/dist/client/assets/{task-status-oiK7INsX.js → task-status-B6r3yHWv.js} +1 -1
- package/dist/client/assets/{taskboard-analytics-xpnr-0qC.js → taskboard-analytics-DmlVpaFB.js} +1 -1
- package/dist/client/assets/tasks-BvH9oEPg.js +1 -0
- package/dist/client/assets/{tasks-BDyHrg5B.js → tasks-DnfB9nFq.js} +1 -1
- package/dist/client/assets/{textarea-D5Eclrlp.js → textarea-DNWE-6Y9.js} +1 -1
- package/dist/client/assets/{thread-analytics-BfheS9dM.js → thread-analytics-CP3fz6fJ.js} +1 -1
- package/dist/client/assets/{thread-button-BH-_he_P.js → thread-button-FFo62BGk.js} +1 -1
- package/dist/client/assets/{thread-intent-CkoGvx8c.js → thread-intent-Bq726Q6v.js} +1 -1
- package/dist/client/assets/{thread-route-BJqMY0AQ.js → thread-route-B-izFvIN.js} +1 -1
- package/dist/client/assets/{thread-route-CGYm3fF8.js → thread-route-Dd8d9CtW.js} +1 -1
- package/dist/client/assets/{thread-sheet-body-5pQe3GSc.js → thread-sheet-body-Bgz2ZRh4.js} +1 -1
- package/dist/client/assets/{toggle-group-CHmpxRzg.js → toggle-group-C87FhCR6.js} +1 -1
- package/dist/client/assets/{toolbar-icon-button-BSvcTlnJ.js → toolbar-icon-button-C5f-3a6j.js} +1 -1
- package/dist/client/assets/{tooltip-Cj1caoDj.js → tooltip-FnCBMECQ.js} +1 -1
- package/dist/client/assets/{track-DL1Ik-aq.js → track-FnF5w7SG.js} +1 -1
- package/dist/client/assets/{types-DrNJI_4G.js → types-BDMWnOnU.js} +1 -1
- package/dist/client/assets/{usage-stats-F7lEx0gp.js → usage-stats-PqvLrMvL.js} +1 -1
- package/dist/client/assets/{use-ai-providers-DD6uRv7t.js → use-ai-providers-DX5RCTyk.js} +1 -1
- package/dist/client/assets/{use-automations-Bghm_ev7.js → use-automations-B52bw_uU.js} +1 -1
- package/dist/client/assets/{use-autosave-DL8SsAJe.js → use-autosave-Cr1_mFYt.js} +1 -1
- package/dist/client/assets/{use-connect-companion-Bg5qSD0k.js → use-connect-companion-BMwg9HX5.js} +1 -1
- package/dist/client/assets/{use-connection-D1_P2UM7.js → use-connection-f-a8Qdyq.js} +1 -1
- package/dist/client/assets/{use-copy-tkmTe99_.js → use-copy-CtPa5sGC.js} +1 -1
- package/dist/client/assets/{use-create-virtual-mcp-Cu165Xq3.js → use-create-virtual-mcp-BnP_uBRN.js} +1 -1
- package/dist/client/assets/{use-date-fns-locale-Cy_ZOEN3.js → use-date-fns-locale-u1XmWKbn.js} +1 -1
- package/dist/client/assets/{use-debounced-autosave-Dkasmyrk.js → use-debounced-autosave-BnUeJQls.js} +1 -1
- package/dist/client/assets/{use-debounced-value-B-XggGv3.js → use-debounced-value-D_DsKTtH.js} +1 -1
- package/dist/client/assets/{use-deco-credits-C9d7yr9E.js → use-deco-credits-DxZywp4f.js} +1 -1
- package/dist/client/assets/{use-decopilot-events-CLlGlKKA.js → use-decopilot-events-V3tZf_dX.js} +1 -1
- package/dist/client/assets/{use-delete-connection-BXeFewuz.js → use-delete-connection-ClW0p9w1.js} +1 -1
- package/dist/client/assets/{use-deployment-admin-D1OnMxdQ.js → use-deployment-admin-D2HwbKOU.js} +1 -1
- package/dist/client/assets/{use-entitlements-Du-stDmT.js → use-entitlements-CRnZA3kQ.js} +1 -1
- package/dist/client/assets/{use-fast-preview-draft-url-Cu3j9blF.js → use-fast-preview-draft-url-DGcapIoW.js} +1 -1
- package/dist/client/assets/{use-file-configs-Y_eOk11s.js → use-file-configs-BFXH2dey.js} +1 -1
- package/dist/client/assets/{use-in-settings-CHHpBmp_.js → use-in-settings-Go9vg8-w.js} +1 -1
- package/dist/client/assets/{use-infinite-scroll-Cs2QqMJ2.js → use-infinite-scroll-DN7aYmR0.js} +1 -1
- package/dist/client/assets/{use-join-requests-D1fqDIoF.js → use-join-requests-DpMQ4JQd.js} +1 -1
- package/dist/client/assets/{use-main-panel-tabs-0qXXzcWV.js → use-main-panel-tabs-DwGgMMyl.js} +1 -1
- package/dist/client/assets/{use-mcp-auth-status-DFlWa_9i.js → use-mcp-auth-status-BSKhuKI8.js} +1 -1
- package/dist/client/assets/{use-mcp-client-BYq8F19a.js → use-mcp-client-BbE5oF5S.js} +1 -1
- package/dist/client/assets/{use-mcp-prompts-B_O4_Eqa.js → use-mcp-prompts-OVQRwZ_K.js} +1 -1
- package/dist/client/assets/{use-mcp-tools-Igf_NQxw.js → use-mcp-tools-NGNtMvWY.js} +1 -1
- package/dist/client/assets/{use-members-ge_cM2s0.js → use-members-CmZKIOqi.js} +1 -1
- package/dist/client/assets/{use-mobile-oRi4pmRL.js → use-mobile-DMGxFZym.js} +1 -1
- package/dist/client/assets/{use-navigate-to-agent-CkBwcPWu.js → use-navigate-to-agent-IjoqsC0h.js} +1 -1
- package/dist/client/assets/{use-open-billing-url-BdwulaF1.js → use-open-billing-url-BbRW82Lk.js} +1 -1
- package/dist/client/assets/{use-org-auth-client-Bb0pQPV4.js → use-org-auth-client-CZApnVJs.js} +1 -1
- package/dist/client/assets/{use-org-fs-DzuidZRI.js → use-org-fs-COWrCwL3.js} +1 -1
- package/dist/client/assets/{use-org-sso-sxxqv7vp.js → use-org-sso-BZq8Xs3N.js} +1 -1
- package/dist/client/assets/{use-organization-roles-BUUeB7bt.js → use-organization-roles-DJmiqdhn.js} +1 -1
- package/dist/client/assets/{use-organization-settings-CgmxRFUz.js → use-organization-settings-WcEHLqay.js} +1 -1
- package/dist/client/assets/{use-panel-navigate-C1DdIaZR.js → use-panel-navigate-F2B5eu7B.js} +1 -1
- package/dist/client/assets/{use-project-native-view-presence-DOMgNBIw.js → use-project-native-view-presence-D919Yq9m.js} +1 -1
- package/dist/client/assets/{use-project-scope-BHSj7jFR.js → use-project-scope-CCu6T1jl.js} +1 -1
- package/dist/client/assets/{use-releases-BS8V6pHg.js → use-releases-aCBEyP2H.js} +1 -1
- package/dist/client/assets/{use-reports-diagnostic-DiF2Fjnq.js → use-reports-diagnostic-CvnCzOKZ.js} +1 -1
- package/dist/client/assets/{use-route-default-main-tMpRLh5c.js → use-route-default-main-Kkt1_YCq.js} +1 -1
- package/dist/client/assets/{use-secrets-gEhG4Eql.js → use-secrets-D53eEmvY.js} +1 -1
- package/dist/client/assets/{use-section-preview-base-CmkVZE89.js → use-section-preview-base-4k4D7MWH.js} +1 -1
- package/dist/client/assets/{use-session-runtime-BDM1EdKf.js → use-session-runtime-DtQVGbHh.js} +1 -1
- package/dist/client/assets/{use-tags-BqhD54NY.js → use-tags-FWLb-Jps.js} +1 -1
- package/dist/client/assets/{use-task-board-analytics-K1WeUBKl.js → use-task-board-analytics-DTSpZdm9.js} +1 -1
- package/dist/client/assets/{use-task-metadata-tyRgew5h.js → use-task-metadata-Cz142Q4d.js} +1 -1
- package/dist/client/assets/{use-thread-analytics-DRPR7i2Q.js → use-thread-analytics-BCI9hL1f.js} +1 -1
- package/dist/client/assets/{use-thread-outputs-C4IALELC.js → use-thread-outputs-CuBHQW76.js} +1 -1
- package/dist/client/assets/{use-virtual-mcp-D0flWviz.js → use-virtual-mcp-DTQxhTEh.js} +1 -1
- package/dist/client/assets/useInfiniteQuery-ESd3SKYM.js +1 -0
- package/dist/client/assets/{useQueries-CRr6ONcA.js → useQueries-lYCE6ZBe.js} +1 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-BeckhPCo.js +1 -0
- package/dist/client/assets/{users-BNsUtLHb.js → users-Caiu8Aay.js} +1 -1
- package/dist/client/assets/{utils-CAJo3oRt.js → utils-D_RcVxGX.js} +1 -1
- package/dist/client/assets/{variant-calendar-CRiZPDRr.js → variant-calendar-BGSsg1ox.js} +1 -1
- package/dist/client/assets/{variant-matcher-override-CQ9lwDkv.js → variant-matcher-override-BhczYSjn.js} +1 -1
- package/dist/client/assets/{view-mode-toggle-Dj27LOnW.js → view-mode-toggle-CA00KZ7m.js} +1 -1
- package/dist/client/assets/{virtual-mcp-dmsusViQ.js → virtual-mcp-BcOOKIcs.js} +1 -1
- package/dist/client/index.html +1 -1
- package/dist/server/cli.js +1 -1
- package/dist/server/server.js +1 -1
- package/package.json +1 -1
- package/dist/client/assets/agent-app-Br7Vg4dZ.js +0 -1
- package/dist/client/assets/agent-deck-uRRglpGW.js +0 -1
- package/dist/client/assets/agent-library-file-CnkVrwOu.js +0 -1
- package/dist/client/assets/agent-settings-BCpoXgn0.js +0 -1
- package/dist/client/assets/agent-site-editor-code-DtyXglJi.js +0 -2
- package/dist/client/assets/agent-view-BGZLiigf.js +0 -1
- package/dist/client/assets/api-keys-BwjlpjJ4.js +0 -1
- package/dist/client/assets/app-editor-D9iKqtWe.js +0 -1
- package/dist/client/assets/mock-board-BbmAbRkf.js +0 -10
- package/dist/client/assets/project-reports-D9u_NGy1.js +0 -1
- package/dist/client/assets/project-tasks-B7vVW0WN.js +0 -1
- package/dist/client/assets/record-editor-B31N5BVz.js +0 -1
- package/dist/client/assets/reports-nNyk3Ys-.js +0 -1
- package/dist/client/assets/task-board-FWoiIhQM.js +0 -1
- package/dist/client/assets/tasks-B8WE3oRT.js +0 -1
- package/dist/client/assets/useInfiniteQuery-BpcJR9xI.js +0 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-ByHovaCi.js +0 -1
package/dist/server/server.js
CHANGED
|
@@ -3703,7 +3703,7 @@ Respond with ONLY a JSON object of this shape, and nothing else:
|
|
|
3703
3703
|
${J.join(`
|
|
3704
3704
|
`)}`:X}function xh6($){let Z=new Set;for(let Q of $)for(let Y of Q.split(`
|
|
3705
3705
|
`)){let X=Y.trim();if(/^Co-authored-by:\s/i.test(X))Z.add(X)}return[...Z]}var _48=200,qh6=12,Ih6,kh6=300,mk0=3;var QU1=D(()=>{iZ();D8();ck0();Ih6={aheadBy:0,behindBy:0,files:[]}});function yh6($){if(!$||$.includes(".."))return!1;return fh6.test($)}function b48($){return gh6.includes($)}function YU1($){let Z=typeof $.__resolveType==="string"?$.__resolveType:null;if(!Z||!yh6(Z))return null;let{__resolveType:Q,...Y}=$;return{resolveType:Z,payload:Y}}function XU1($,Z){return`${$.replace(/\/+$/,"")}/deco/invoke/${Z}`}var fh6,gh6;var x48=D(()=>{fh6=/^[\w./@-]+$/;gh6=["vtex/loaders/intelligentSearch/productList.ts","vtex/loaders/categories/tree.ts"]});function Z40($,Z){let Q=$?.githubRepo;if(!Q?.owner||!Q?.name)return null;if(!Q.connectionId)return Q;if(!Z.includes(Q.connectionId))return null;return Q}async function y48($,Z,Q,Y){let X=$.organization?.id;if(!X)throw new zE(j7);let J=await Qj($.storage,X,Y);if(J&&await gB($.storage,J)){let F=await aF($,J,{forceRefresh:!0}).catch((U)=>{throw new zE(U instanceof Error?U.message:j7)});await f48($,Z,Q,F);return}let G=Y.connectionId??J?.legacyConnectionId;if(!G)throw new zE("Push requires a connected git account. Connect the repository's provider for this project and restart the sandbox.");await Ac({ctx:$,connectionId:G,organizationId:X,forceRefresh:!0,onLegacyMintError:(F)=>{let U=F instanceof Error?F.message:j7;throw new zE(U)}});let{cloneUrl:W,gitUserName:K,gitUserEmail:H}=await eF(G,Y.owner,Y.name,$.db,$.vault).catch((F)=>{let{code:U,message:N}=aU$(F instanceof Error?F.message:String(F));throw U?new zE(N):F});await f48($,Z,Q,{cloneUrl:W,gitUserName:K,gitUserEmail:H})}async function f48($,Z,Q,Y){let{cloneUrl:X,gitUserName:J,gitUserEmail:G}=Y,W=ji($),K=await Z.proxyDaemonRequest(Q,"/_sandbox/config",{method:"PUT",headers:new Headers({"content-type":"application/json"}),body:JSON.stringify({git:{repository:{cloneUrl:X},identity:{userName:J,userEmail:G}},...W?{operator:W}:{}})});if(!K.ok){let H=await qj(K,hh6).catch(()=>K.statusText);throw Error(`Failed to refresh sandbox git credentials (${K.status}): ${H}`)}}var hh6=10485760,zE;var JU1=D(()=>{WW();vk0();_00();gW0();qe();iZ();zE=class zE extends Error{constructor($){super($);this.name="GitPushAuthError"}}});function lh6($){let Z=$.startsWith("thread:")?$.slice(7):$;if(!Z||Z.length>255||Z.includes("..")||Z.startsWith("/")||Z.endsWith("/")||Z.endsWith(".lock")||!uh6.test(Z))throw Error(`Invalid branch name: ${$}`)}function Uy($){return AbortSignal.any([$.req.raw.signal,AbortSignal.timeout(ch6)])}async function dh6($,Z){let Q=$.var.studioContext,Y=WU(Z.branch),X=$.req.query("thread")??Y,J=X&&X===Y?Z.branchThread:X?await Q.storage.threads.get(X).catch(()=>null):null,G=J?.virtual_mcp_id===Z.virtualMcpId?J:null,W=yx(G?.metadata?.runtime);if(W)return W;let K=M20(Z.virtualMcpMetadata),H=K==="cms"?await fF1(Q,{claimName:Z.claimName}):"alive",F=K==="cms"&&H!=="alive"?"cms":"sandbox",U=!!G&&(H==="gone"||H==="alive"&&K==="cms");if(U&&G)v00(Q,G.id,F);if(K==="cms")console.log("sandbox proxy: no runtime stamp",{route:$.req.path,method:$.req.method,reason:G?"unstamped":"threadless",liveness:H,resolved:F,stamped:U});return F}async function ih6($){let Z=$.get("vmClaim");if(Z.runner)return Z.runner;try{return await IX($.var.studioContext)}catch{return null}}function Ny($){let{runner:Z}=$.get("vmClaim");if(!Z)return $.json({error:"No sandbox runner configured"},503);return Z}async function Ti($){let{virtualMcpMetadata:Z,connectionIds:Q}=$.get("vmClaim"),Y=$.var.studioContext,X=Z40(Z,Q);if(!X)throw new y0({provider:"github",status:404,message:"Project has no GitHub repository"});let J=K0(Y);return Ec(Y,J.id,X)}function WU1($,Z){let Q=Z instanceof Error?Z.message:String(Z),Y=EF$(Z);if(Y!==void 0)return $.json({error:Q},429,{...$9,...Y===null?{}:{"Retry-After":String(Math.ceil(Y/1000))}});if(Z instanceof t6)return $.json({error:Q},409,$9);let X=UW(Z);if(X!==null){let J=X===404?404:X===409||X===422?409:502;return $.json({error:Q},J,$9)}return $.json({error:Q},502,$9)}async function GU1($,Z,Q){let Y;try{Y=await fetch(Z,Q)}catch{return $.json({error:"Preview unreachable"},502)}let X;try{X=await Y.text()}catch{return $.json({error:"Preview unreachable"},502)}return new Response(X,{status:Y.status,headers:{"content-type":Y.headers.get("content-type")??"application/json"}})}async function l48($){try{let Z=await Ti($),Q=await dk0(Z,$.get("vmClaim").branch);return $.json(Q,200,$9)}catch(Z){return WU1($,Z)}}function Q40($,Z){let Y=(nk0.get($)??Promise.resolve()).catch(()=>{}).then(Z),X=Y.catch(()=>{});return nk0.set($,X),X.finally(()=>{if(nk0.get($)===X)nk0.delete($)}),Y}async function $Q($,Z,Q){if(!Q?.runner&&$.get("vmClaim").runtime==="cms")return $.json({error:"sandbox not found: this session is sandbox-less"},404,$9);let Y=Q?.runner??Ny($);if(Y instanceof Response)return Y;let{claimName:X,userId:J,projectRef:G}=$.get("vmClaim"),W=Q?.method??"POST",K=null,H=new Headers;if(Q?.jsonBody!==void 0)K=Q.jsonBody,H.set("content-type","application/json");else if(Q?.forwardJsonBody)K=await $.req.text(),H.set("content-type","application/json");let F=Q?.signal,U={method:W,headers:H,body:K,...F?{signal:F}:{}},N=async()=>{let B=await Y.proxyDaemonRequest(X,Z,U);if(Q?.map404to410&&B.status===404){try{await B.body?.cancel()}catch{}if(await Y.adoptLiveClaim({userId:J,projectRef:G},X))B=await Y.proxyDaemonRequest(X,Z,U);if(B.status===404){try{await B.body?.cancel()}catch{}return new Response(JSON.stringify({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."}),{status:410,headers:{"content-type":"application/json",...$9}})}}let O=await B.text(),L=Q?.redactRepoDir?ph6(O):O,w=B.headers.get("content-type")??"application/json";return new Response(L,{status:B.status,headers:{"content-type":w,...$9}})};try{if(F){let B=N();return B.catch(()=>{}),await Promise.race([B,new Promise((L,w)=>{if(F.aborted)return w(F.reason);F.addEventListener("abort",()=>w(F.reason),{once:!0})})])}return await N()}catch(B){let O=B instanceof Error?B.message:String(B);return $.json({error:`Daemon unreachable: ${O}`},502)}}function ph6($){try{let Z=JSON.parse($);if(Z&&typeof Z==="object"&&!Array.isArray(Z)&&"repoDir"in Z)return JSON.stringify({...Z,repoDir:null})}catch{}return $}async function tk0($,Z,Q,Y="GET",X){let J=await $.proxyDaemonRequest(Z,Q,{method:Y,headers:new Headers,body:null});if(J.status===404&&X){try{await J.body?.cancel()}catch{}if(await $.adoptLiveClaim(X,Z))J=await $.proxyDaemonRequest(Z,Q,{method:Y,headers:new Headers,body:null})}if(J.status===404){try{await J.body?.cancel()}catch{}throw Error("SANDBOX_GONE")}let G=await J.text();if(!J.ok){let W=`Daemon error (${J.status})`;try{W=JSON.parse(G).error??W}catch{}throw Error(W)}return JSON.parse(G)}function nh6($){return c48.includes($)}var uh6,g48=524288,h48=65536,ch6=1e4,u48=2000,mh6,nk0,$9,c48,m48=()=>{let $=new Q1;$.use("/:virtualMcpId/:branch/*",mh6),$.post("/:virtualMcpId/:branch/write",(Q)=>$Q(Q,"/_sandbox/write",{forwardJsonBody:!0,signal:Uy(Q)})),$.post("/:virtualMcpId/:branch/unlink",(Q)=>$Q(Q,"/_sandbox/unlink",{forwardJsonBody:!0,signal:Uy(Q)})),$.post("/:virtualMcpId/:branch/mkdir",(Q)=>$Q(Q,"/_sandbox/mkdir",{forwardJsonBody:!0,signal:Uy(Q)})),$.post("/:virtualMcpId/:branch/rename",(Q)=>$Q(Q,"/_sandbox/rename",{forwardJsonBody:!0,signal:Uy(Q)})),$.post("/:virtualMcpId/:branch/read",(Q)=>$Q(Q,"/_sandbox/read",{forwardJsonBody:!0,signal:Uy(Q)})),$.post("/:virtualMcpId/:branch/glob",(Q)=>$Q(Q,"/_sandbox/glob",{forwardJsonBody:!0,signal:Uy(Q)})),$.post("/:virtualMcpId/:branch/grep",(Q)=>$Q(Q,"/_sandbox/grep",{forwardJsonBody:!0,signal:Uy(Q)})),$.post("/:virtualMcpId/:branch/exec/:script",async(Q)=>{let Y=Q.req.param("script");if(!Y)return Q.json({error:"missing script name"},400);return $Q(Q,`/_sandbox/exec/${encodeURIComponent(Y)}`)}),$.post("/:virtualMcpId/:branch/exec/:script/kill",async(Q)=>{let Y=Q.req.param("script");if(!Y)return Q.json({error:"missing script name"},400);return $Q(Q,`/_sandbox/exec/${encodeURIComponent(Y)}/kill`)}),$.get("/:virtualMcpId/:branch/config",(Q)=>$Q(Q,"/_sandbox/config",{method:"GET",map404to410:!0,redactRepoDir:!0})),$.put("/:virtualMcpId/:branch/config",(Q)=>$Q(Q,"/_sandbox/config",{method:"PUT",forwardJsonBody:!0,map404to410:!0})),$.post("/:virtualMcpId/:branch/setup/:step",async(Q)=>{let Y=Q.req.param("step");if(!Y||!nh6(Y))return Q.json({error:`step must be one of: ${c48.join(", ")}`},400);let X=Q.get("vmClaim"),J=await fF1(Q.var.studioContext,{claimName:X.claimName})==="gone"?null:await ih6(Q);if(!J)return Q.json({error:"sandbox not found: nothing is running at this ref"},404,$9);if(Y==="start"){let G=K0(Q.var.studioContext),W=Qm(X.virtualMcpMetadata);try{await A20({ctx:Q.var.studioContext,runner:J,handle:X.claimName,orgId:G.id,userId:X.callerUserId,entries:W})}catch(K){let H=K instanceof Error?K.message:String(K);return Q.json({error:`Failed to push env to daemon: ${H}`},502)}}return $Q(Q,`/_sandbox/setup/${Y}`,{signal:Q.req.raw.signal,map404to410:!0,runner:J})}),$.get("/:virtualMcpId/:branch/events",(Q)=>{let Y=Q.get("vmClaim");if(!Y.runner)return xO(Q,async(X)=>{await X.writeSSE({event:"phase",data:JSON.stringify({kind:"failed",reason:"unknown",message:"No sandbox runner configured on this studio instance."})})});return u88(Q,{ctx:Q.var.studioContext,claimName:Y.claimName,runner:Y.runner,virtualMcpId:Y.virtualMcpId,branch:Y.branch,userId:Y.userId,projectRef:Y.projectRef,virtualMcpMetadata:Y.virtualMcpMetadata})}),$.get("/:virtualMcpId/:branch/git/status",(Q)=>{if(Q.get("vmClaim").runtime==="cms")return l48(Q);return Z(Q)});let Z=(Q)=>$Q(Q,"/_sandbox/git/status",{method:"GET",map404to410:!0,signal:AbortSignal.any([Q.req.raw.signal,AbortSignal.timeout(u48)])});return $.post("/:virtualMcpId/:branch/git/status",(Q)=>{if(Q.get("vmClaim").runtime==="cms")return l48(Q);return $Q(Q,"/_sandbox/git/status",{map404to410:!0,signal:AbortSignal.any([Q.req.raw.signal,AbortSignal.timeout(u48)])})}),$.post("/:virtualMcpId/:branch/git/diff",async(Q)=>{let Y=Q.get("vmClaim");if(Y.runtime==="cms")try{let X=await Q.req.json().catch(()=>({})),J=await Ti(Q),G=await ik0(J,Y.branch,X.base);return Q.json(G,200,$9)}catch(X){return WU1(Q,X)}return $Q(Q,"/_sandbox/git/diff",{forwardJsonBody:!0,map404to410:!0})}),$.post("/:virtualMcpId/:branch/git/publish",async(Q)=>{if(Q.get("vmClaim").runtime==="cms")return Q.json({ok:!0},200,$9);let Y=Ny(Q);if(Y instanceof Response)return Y;let{claimName:X,virtualMcpMetadata:J,connectionIds:G}=Q.get("vmClaim"),W=Q.var.studioContext;return Q40(X,async()=>{try{await yF1(W,Y,X);let K=Z40(J,G);if(K)await y48(W,Y,X,K)}catch(K){if(K instanceof zE)return Q.json({error:K.message},403,$9);let H=K instanceof Error?K.message:String(K);return Q.json({error:H},502,$9)}return $Q(Q,"/_sandbox/git/publish",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/discard",async(Q)=>{let Y=Q.get("vmClaim");if(Y.runtime==="cms")return Q40(Y.claimName,async()=>{let X=await Q.req.json().catch(()=>({})),J=Array.isArray(X.filepaths)?X.filepaths.filter((G)=>typeof G==="string"):[];if(J.length===0)return Q.json({error:"filepaths is required"},400,$9);try{let G=await Ti(Q);return await v48(G,Y.branch,J),Q.json({ok:!0},200,$9)}catch(G){let W=UW(G)===409||G instanceof t6?409:502,K=G instanceof Error?G.message:String(G);return Q.json({error:K},W,$9)}});return Q40(Y.claimName,()=>$Q(Q,"/_sandbox/git/discard",{forwardJsonBody:!0,map404to410:!0}))}),$.post("/:virtualMcpId/:branch/git/rebase",async(Q)=>{let Y=Q.get("vmClaim");if(Y.runtime==="cms")return Q40(Y.claimName,async()=>{try{let W=await Q.req.json().catch(()=>({})),K=await Ti(Q),H=W.base??await K.getDefaultBranch();return await pk0(K,Y.branch,H),Q.json({ok:!0},200,$9)}catch(W){return WU1(Q,W)}});let X=Ny(Q);if(X instanceof Response)return X;let{claimName:J}=Q.get("vmClaim"),G=Q.var.studioContext;return Q40(J,async()=>{try{await yF1(G,X,J)}catch(W){let K=W instanceof Error?W.message:String(W);return Q.json({error:K},502,$9)}return $Q(Q,"/_sandbox/git/rebase",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/suggest-commit",I5({maxSize:g48,onError:(Q)=>Q.json({error:"Payload too large"},413,$9)}),async(Q)=>{let Y=Q.get("vmClaim"),X=null;if(Y.runtime!=="cms"){let H=Ny(Q);if(H instanceof Response)return H;X=H}let{claimName:J,userId:G,projectRef:W}=Y,K=Q.var.studioContext;try{let H=await Q.req.json().catch(()=>({})),F=H.status,U=H.diff,N=U!=null&&typeof U.diffs==="object"&&U.diffs!==null,[B,O]=uF1(F)&&N?[F,U]:X?await Promise.all([tk0(X,J,"/_sandbox/git/status","GET",{userId:G,projectRef:W}),tk0(X,J,"/_sandbox/git/diff","GET",{userId:G,projectRef:W})]):await(async()=>{let w=await Ti(Q);return Promise.all([dk0(w,Y.branch),ik0(w,Y.branch)])})();await hK(K,K0(K).id,"suggesting a commit message");let L=await i88(K,B,O);return Q.json(L,200,$9)}catch(H){let F=H instanceof Error?H.message:String(H);if(F==="SANDBOX_GONE")return Q.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,$9);return Q.json({error:F},502,$9)}}),$.post("/:virtualMcpId/:branch/git/judge-review",I5({maxSize:g48,onError:(Q)=>Q.json({error:"Payload too large"},413,$9)}),async(Q)=>{let Y=Q.get("vmClaim"),X=null;if(Y.runtime!=="cms"){let H=Ny(Q);if(H instanceof Response)return H;X=H}let{claimName:J,userId:G,projectRef:W}=Y,K=Q.var.studioContext;try{let H=await Q.req.json().catch(()=>({})),F=H.status,U=H.diff,N=U!=null&&typeof U.diffs==="object"&&U.diffs!==null,[B,O]=uF1(F)&&N?[F,U]:X?await Promise.all([tk0(X,J,"/_sandbox/git/status","GET",{userId:G,projectRef:W}),tk0(X,J,"/_sandbox/git/diff","GET",{userId:G,projectRef:W})]):await(async()=>{let w=await Ti(Q);return Promise.all([dk0(w,Y.branch),ik0(w,Y.branch)])})();await hK(K,K0(K).id,"judging whether a change needs review");let L=await n88(K,B,O,typeof H.language==="string"?H.language:void 0);return Q.json(L,200,$9)}catch(H){let F=H instanceof Error?H.message:String(H);if(F==="SANDBOX_GONE")return Q.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,$9);return Q.json({error:F},502,$9)}}),$.get("/:virtualMcpId/:branch/preview-fetch",async(Q)=>{let Y=Ny(Q);if(Y instanceof Response)return Y;let{claimName:X}=Q.get("vmClaim"),J=Q.req.query("path");if(!J||!J.startsWith("/")||J.startsWith("//")||J.includes("..")||J.includes("\\"))return Q.json({error:"Path not allowed"},403);let G;try{G=await Y.getPreviewUrl(X)}catch{return Q.json({error:"Preview not available"},502)}if(!G)return Q.json({error:"Preview not available"},502);let W=G.replace(/\/+$/,"");return GU1(Q,`${W}${J}`)}),$.post("/:virtualMcpId/:branch/preview-invoke",I5({maxSize:h48,onError:(Q)=>Q.json({error:"Payload too large"},413)}),async(Q)=>{let Y=Ny(Q);if(Y instanceof Response)return Y;let{claimName:X}=Q.get("vmClaim"),J;try{J=await Y.getPreviewUrl(X)}catch{return Q.json({error:"Preview not available"},502)}if(!J)return Q.json({error:"Preview not available"},502);let G;try{G=await Q.req.json()}catch{return Q.json({error:"Invalid JSON body"},400)}if(!G||typeof G!=="object"||Array.isArray(G))return Q.json({error:"Invalid JSON body"},400);let W=YU1(G);if(!W)return Q.json({error:"Invalid or missing __resolveType"},400);let K=XU1(J,W.resolveType);return GU1(Q,K,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(W.payload),signal:AbortSignal.timeout(30000)})}),$.post("/:virtualMcpId/:branch/catalog-invoke",I5({maxSize:h48,onError:(Q)=>Q.json({error:"Payload too large"},413)}),async(Q)=>{let{runner:Y,claimName:X,virtualMcpMetadata:J}=Q.get("vmClaim"),G;try{G=Y?await Y.getPreviewUrl(X):Ym(J)}catch{return Q.json({error:"Preview not available"},502)}if(!G)return Q.json({error:"Preview not available"},502);let W;try{W=await Q.req.json()}catch{return Q.json({error:"Invalid JSON body"},400)}if(!W||typeof W!=="object"||Array.isArray(W))return Q.json({error:"Invalid JSON body"},400);let K=YU1(W);if(!K)return Q.json({error:"Invalid or missing __resolveType"},400);if(!b48(K.resolveType))return Q.json({error:"resolveType not allowed"},403);let H=XU1(G,K.resolveType);return GU1(Q,H,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(K.payload),signal:AbortSignal.timeout(30000)})}),$};var d48=D(()=>{G8();fW();wi();xF1();k00();y88();jW();Xm();g88();QH();gF();h88();l88();Q51();C00();mF1();t88();iZ();w5();QU1();x48();q20();JU1();uh6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;mh6=_k0(async($,Z)=>{let Q=$.var.studioContext;try{a(Q)}catch{return $.json({error:"Unauthorized"},401)}let Y=p0(Q);if(!Y)return $.json({error:"Unauthorized"},401);let X;try{X=K0(Q)}catch{return $.json({error:"Organization scope required"},403)}let J=$.req.param("virtualMcpId"),G=$.req.param("branch");if(!J||!G)return $.json({error:"virtualMcpId and branch are required"},400);try{lh6(G)}catch(L){let w=L instanceof Error?L.message:String(L);return $.json({error:w},400)}let W=await Q.storage.virtualMcps.findById(J);if(!W||W.organization_id!==X.id)return $.json({error:"Virtual MCP not found"},404);let K=re({orgId:X.id,virtualMcpId:J,branch:G}),H=await V41(Q,G),F=k41(H,Y),U=f88({userId:F,projectRef:K}),N=W.metadata??null,B=await dh6($,{claimName:U,branch:G,virtualMcpId:J,sandboxUserId:F,virtualMcpMetadata:N,branchThread:H});if(B==="cms")return $.set("vmClaim",{claimName:U,callerUserId:Y,runner:null,virtualMcpId:J,branch:G,userId:F,projectRef:K,virtualMcpMetadata:N,connectionIds:W.connections?.map((L)=>L.connection_id)??[],runtime:B}),Z();let O;try{O=await IX(Q)}catch{O=null}if(!O)return $.json({error:"No sandbox runner found"},404);return $.set("vmClaim",{claimName:U,callerUserId:Y,runner:O,virtualMcpId:J,branch:G,userId:F,projectRef:K,virtualMcpMetadata:N,connectionIds:W.connections?.map((L)=>L.connection_id)??[],runtime:B}),Z()});nk0=new Map;$9={"Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache"};c48=["clone","install","start"]});function i48($,Z,Q){let Y=KU1.get($);if(!Y)Y={pending:null,running:!1},KU1.set($,Y);if(!Y.pending)Y.pending={set:new Map,del:new Set,deps:Z,resolvers:[],rejecters:[]};let X=Y.pending;X.deps=Z;for(let[G,W]of Object.entries(Q.set??{}))X.set.set(G,W),X.del.delete(G);for(let G of Q.delete??[])X.del.add(G),X.set.delete(G);let J=new Promise((G,W)=>{X.resolvers.push(G),X.rejecters.push(W)});if(!Y.running)oh6($,Y);return J}async function oh6($,Z){Z.running=!0;try{while(Z.pending){let Q=Z.pending;Z.pending=null;try{let Y=await rh6(Q);for(let X of Q.resolvers)X(Y)}catch(Y){for(let X of Q.rejecters)X(Y)}}}finally{if(Z.running=!1,!Z.pending)KU1.delete($)}}async function rh6($){let{client:Z,branch:Q,packagePath:Y}=$.deps,X=new Map;for(let J=0;;J++){let G=await Ai(Z,Q),W=await Z.listDecofileEntries(G,Y),K=eF1(W,Y),H=[],F=new Map(K.map((N)=>[N.path,{stem:N.stem,sha:N.sha}]));for(let[N,B]of $.set){let O=$U1(K,N),L=`${JSON.stringify(B,null,2)}
|
|
3706
|
-
`;await V48(Z.repo,L);let w=O[0]??`${lk0(Y)}/${pF1(N)}.json`;H.push({path:w,content:L});let j=w.slice(w.lastIndexOf("/")+1,-5);F.set(w,{stem:j,content:L});for(let E of O.slice(1))H.push({path:E,deleted:!0}),F.delete(E)}for(let N of $.del)for(let B of $U1(K,N))H.push({path:B,deleted:!0}),F.delete(B);if(H.length===0)return G;let U=Y?`${Y}/.deco/blocks.gen.json`:".deco/blocks.gen.json";if(W.some((N)=>N.type==="blob"&&N.path===U)){let N=await k48(Z,F.values(),X),{decofile:B,skipped:O}=t80(N);if(O.length>0)console.warn("decofile gen: dropped blocks that were not valid JSON",{repo:cK(Z.repo),branch:Q,packagePath:Y,blocks:O.map((L)=>L.key)});H.push({path:U,content:B})}try{let{sha:N}=await Z.commitFiles({branch:Q,message:sh6($),expectedHead:G,changes:H});return N}catch(N){if(!(N instanceof t6)||J>=th6-1)throw N;await i$(QQ(2000,200,J,2,0.5))}}}function sh6($){let Z=(X)=>{let J=X.slice(0,3).join(", ");return X.length>3?`${J} (+${X.length-3} more)`:J},Q=[];if($.set.size>0)Q.push(`update ${Z([...$.set.keys()])}`);if($.del.size>0)Q.push(`delete ${Z([...$.del])}`);let Y=`chore(decofile): ${Q.join("; ")}`;return s81(Y,$.deps.coAuthor)}var th6=3,KU1;var p48=D(()=>{FA0();xk0();T6();D8();iZ();ck0();KU1=new Map});import{createHmac as n48,randomBytes as ah6,timingSafeEqual as eh6}from"crypto";function t48(){if(ok0)return ok0;let $;try{let Z=E0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return ok0=$?Buffer.from($):ah6(32),ok0}function HU1($){let Z=$.nowMs??Date.now(),Q={o:$.organizationId,m:$.virtualMcpId,b:$.branch,e:Math.floor((Z+$u6)/1000)},Y=Buffer.from(JSON.stringify(Q)).toString("base64url"),X=n48("sha256",t48()).update(Y).digest("base64url");return`${Y}.${X}`}function o48($,Z){let Q=$.indexOf(".");if(Q<0)return!1;let Y=$.slice(0,Q),X=Buffer.from($.slice(Q+1)),J=Buffer.from(n48("sha256",t48()).update(Y).digest("base64url"));if(X.length!==J.length||!eh6(X,J))return!1;let G;try{G=JSON.parse(Buffer.from(Y,"base64url").toString())}catch{return!1}let W=Math.floor((Z.nowMs??Date.now())/1000);return G.o===Z.organizationId&&G.m===Z.virtualMcpId&&G.b===Z.branch&&typeof G.e==="number"&&G.e>=W}var $u6=21600000,ok0=null;var r48=D(()=>{F$()});function rk0($){return $&&typeof $==="object"&&!Array.isArray($)?$:null}function Zu6($){for(let[Z,Q]of Object.entries($)){if(!Z.startsWith("collections/blog/posts/"))continue;let Y=rk0(Q)?.__resolveType;if(typeof Y==="string"&&Y)return Y}return"blog/loaders/Blogpost.ts"}function s48($){let Z;try{Z=rk0(JSON.parse($))}catch{return $}if(!Z)return $;let Q=Zu6(Z),Y={...Z},X=0;for(let[J,G]of Object.entries(Z)){if(!J.startsWith("blog-manager/posts/"))continue;let W=rk0(G),K=W&&rk0(W.post);if(!K)continue;if(K.status==="archived")continue;if(typeof K.slug!=="string"||!K.slug)continue;let F=`collections/blog/posts/${J.slice(19)}`;if(Object.hasOwn(Y,F))continue;Y[F]={name:F,__resolveType:Q,["post"]:{...K,status:"published"}},X++}return X>0?JSON.stringify(Y):$}import{z as Ri}from"zod";function Yu6($){return $.length>0&&$.length<=255&&!$.includes("..")&&!$.endsWith("/")&&!$.endsWith(".lock")&&Qu6.test($)}function Q68($){return $.req.header("x-forwarded-host")??new URL($.req.url).host}async function Y40($){let Z=$.get("decofileScope");return Ec($.var.studioContext,Z.organizationId,Z.githubRepo)}function X40($,Z){let Q=Z instanceof Error?Z.message:String(Z);if(Z instanceof t6)return $.json({error:Q},409);let Y=UW(Z);if(Y!==null){let X=Y===404?404:Y===409||Y===422?409:502;return $.json({error:Q},X)}return $.json({error:Q},500)}function Y68(){let $=new Q1;return $.use("/:virtualMcpId/:branch",Z68),$.use("/:virtualMcpId/:branch/*",Z68),$.get("/:virtualMcpId/:branch",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await Y40(Z),X=await S48(Y,Q.branch,Q.packagePath,{createBranchIfMissing:!!Q.userId}),J={ETag:`"${X.sha}"`,"Cache-Control":"no-store","Access-Control-Allow-Origin":"*"};if(Z.req.header("if-none-match")===`"${X.sha}"`)return Z.body(null,304,J);if(!Q.userId)return Z.body(s48(X.decofile),200,{...J,"content-type":"application/json"});let G=HU1({organizationId:Q.organizationId,virtualMcpId:Q.virtualMcpId,branch:Q.branch});return Z.body(`{"version":${JSON.stringify(X.sha)},"token":${JSON.stringify(G)},"apiHost":${JSON.stringify(Q68(Z))},"decofile":${X.decofile}}`,200,{...J,"content-type":"application/json"})}catch(Y){return X40(Z,Y)}}),$.get("/:virtualMcpId/:branch/meta",async(Z)=>{let Q=Z.get("decofileScope"),Y=Q.packagePath?`${Q.packagePath}/.deco/meta.gen.json`:".deco/meta.gen.json";try{let X=await Y40(Z),J=await X.readFileAtRef(Q.branch,Y);if(J===null){let G=await X.getDefaultBranch();if(G!==Q.branch)J=await X.readFileAtRef(G,Y)}if(J===null)return Z.json({error:"meta.gen.json not committed"},404);return Z.body(J,200,{"content-type":"application/json","Cache-Control":"no-store","Access-Control-Allow-Origin":"*"})}catch(X){return X40(Z,X)}}),$.patch("/:virtualMcpId/:branch",Ju6,async(Z)=>{let Q=Z.get("decofileScope"),Y=Z.var.studioContext,X=Gu6.safeParse(await Z.req.json().catch(()=>null));if(!X.success)return Z.json({error:"Invalid body",details:X.error.issues},400);let J;try{J=o80(X.data)}catch(G){if(G instanceof r80)return Z.json({error:G.message},400);throw G}for(let G of[...Object.keys(J.set??{}),...J.delete??[]])try{bk0(G)}catch(W){let K=W instanceof Error?W.message:String(W);return Z.json({error:K},400)}for(let[G,W]of Object.entries(J.set??{})){if(typeof W!=="object"||W===null||Array.isArray(W))return Z.json({error:`Block "${G}" must be a JSON object`},400);if(iF1(G))return Z.json({error:`Block key "${G}" collides with a framework resolver module and cannot be written`},400)}try{let G=await Y40(Z),W=await i48(`${Q.organizationId}/${Q.virtualMcpId}/${Q.branch}`,{client:G,branch:Q.branch,packagePath:Q.packagePath,coAuthor:ji(Y)},J),K=HU1({organizationId:Q.organizationId,virtualMcpId:Q.virtualMcpId,branch:Q.branch});return Z.json({version:W,token:K,apiHost:Q68(Z)})}catch(G){return X40(Z,G)}}),$.post("/:virtualMcpId/:branch/publish",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await Y40(Z),X=await Y.getDefaultBranch();if(X===Q.branch)return Z.json({error:"Branch is already the default branch"},400);let J=`chore(decofile): publish ${Q.branch}`;try{let G;try{G=await Y.mergeBranches(X,Q.branch,J)}catch(W){if(UW(W)!==409)throw W;await pk0(Y,Q.branch,X),G=await Y.mergeBranches(X,Q.branch,J)}return G?Z.json({result:"merged",sha:G}):Z.json({result:"up-to-date"})}catch(G){if(UW(G)===409)return Z.json({error:"merge-conflict"},409);if(UW(G)===405){let K=await Y.findOpenChangeRequest(X,Q.branch)??await Y.createChangeRequest({base:X,head:Q.branch,title:`Publish ${Q.branch}`});return Z.json({result:"pull-request",number:K.number,url:K.url})}throw G}}catch(Y){return X40(Z,Y)}}),$.get("/:virtualMcpId/:branch/status",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await Y40(Z),X=await Y.getDefaultBranch();if(X===Q.branch)return Z.json({baseBranch:X,aheadBy:0,behindBy:0});try{let{aheadBy:J,behindBy:G}=await Y.compare(X,Q.branch);return Z.json({baseBranch:X,aheadBy:J,behindBy:G})}catch(J){if(UW(J)===404)return Z.json({baseBranch:X,aheadBy:0,behindBy:0});throw J}}catch(Y){return X40(Z,Y)}}),$}var Qu6,a48=500,e48=1048576,$68=1024,Xu6=8388608,Ju6,Gu6,Z68;var X68=D(()=>{q20();xk0();G8();fW();xF1();vk0();JU1();iZ();p48();r48();QU1();ck0();gF();Qu6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;Ju6=I5({maxSize:Xu6,onError:($)=>$.json({error:"Payload too large"},413)}),Gu6=Ri.object({set:Ri.record(Ri.string(),Ri.unknown()).optional(),delete:Ri.array(Ri.string()).optional()}).refine(($)=>Object.keys($.set??{}).length>0||($.delete?.length??0)>0,{message:"Patch must set or delete at least one block"}).refine(($)=>Object.keys($.set??{}).length+($.delete?.length??0)<=a48,{message:`Patch cannot touch more than ${a48} blocks`}).refine(($)=>Object.values($.set??{}).every((Z)=>JSON.stringify(Z).length<=e48),{message:`Each block must be at most ${e48} bytes`}).refine(($)=>[...Object.keys($.set??{}),...$.delete??[]].every((Z)=>Z.length<=$68),{message:`Each block key must be at most ${$68} characters`}),Z68=_k0(async($,Z)=>{let Q=$.var.studioContext,Y=Q.organization;if(!Y)return $.json({error:"Organization scope required"},500);let X=$.req.param("virtualMcpId"),J=$.req.param("branch");if(!X||!J)return $.json({error:"virtualMcpId and branch are required"},400);if(!Yu6(J))return $.json({error:`Invalid branch name: ${J}`},400);let G=Q.auth?.user?.id??null;if(!G){let B=$.req.query("token");if(!($.req.method==="GET"&&!$.req.path.match(/\/(publish|status)$/)))return $.json({error:"Unauthorized"},401);if(!B||!o48(B,{organizationId:Y.id,virtualMcpId:X,branch:J}))return $.json({error:"Unauthorized"},401)}if(!await QW(Q,Y.id,"cms"))return $.json({error:"This organization's plan does not include the CMS",code:"feature_not_in_plan"},403);let W=await Q.storage.virtualMcps.findById(X);if(!W||W.organization_id!==Y.id)return $.json({error:"Virtual MCP not found"},404);let K=W.metadata??null;if(!Ym(K))return $.json({error:"Project has no preview server configured"},404);let F=W.connections?.map((B)=>B.connection_id)??[],U=Z40(K,F);if(!U)return $.json({error:"Project has no GitHub repository"},404);let N=K?.runtime;return $.set("decofileScope",{organizationId:Y.id,virtualMcpId:X,branch:J,packagePath:N?.path?.replace(/^\/+|\/+$/g,"")||null,githubRepo:U,userId:G}),Z()})});var J68=($)=>{let Z=new Q1;if(Z.use("*",od),Z.use("*",_e$),Z.route("/",lV0()),Z.route("/",O08()),Z.route("/",$08()),Z.route("/",T88()),Z.route("/",D88()),Z.route("/",P88()),Z.route("/",w88()),Z.route("/",kk0()),Z.route("/tools",S88()),Z.route("/",I88()),Z.route("/",n$8({kvStorage:$.kvStorage})),Z.route("/",i$8()),Z.route("/fs",G88({getConnection:$.getNatsConnection})),Z.route("/sandbox",m48()),Z.route("/decofile",Y68()),Z.route("/",N88()),Z.route("/",K88()),Z.route("/deco-sites",mV0()),Z.route("/hosting",me$()),Z.route("/monitor",re$()),Z.route("/sso",fV0()),Z.route("/",Sk0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",ge$()),$.mountDevAssets)Z.route("/dev-assets",nV0({orgFromPath:!0}));return Z.use("/mcp/:connectionId?",$.mcpAuth),Z.use("/mcp/:connectionId/ui-resource",$.mcpAuth),Z.use("/mcp/gateway/:virtualMcpId?",$.mcpAuth),Z.use("/mcp/virtual-mcp/:virtualMcpId?",$.mcpAuth),Z.use("/mcp/self",$.mcpAuth),Z.use("/mcp/task-run/:threadId",$.mcpAuth),Z.route("/",gr$()),Z.get("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",$.betterAuthProtectedResourceHandler),Z.get("/mcp/.well-known/oauth-protected-resource",$.betterAuthProtectedResourceHandler),Z.route("/mcp/task-run",F88()),Z.route("/mcp",vR0()),Z.route("/mcp/self",qk0()),Z.route("/mcp",fR0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var G68=D(()=>{G8();ve$();RV0();he$();QH1();de$();se$();tV0();ef();sK1();WH1();p$8();t$8();W88();H88();u10();iK1();yR0();MF1();U88();B88();L88();j88();kF1();R88();V88();SF1();C88();CF1();bR0();d48();X68()});function Wu6($){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 Ku6=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},W68=()=>{let $=new Q1;return $.use("*",Ku6),$.get("/",async(Z)=>{let Q=E0(),Y=Q.decoSupabaseUrl,X=Q.decoSupabaseServiceKey;if(!Y||!X)return Z.json({apps:[]});try{let J=await lJ(Y,X,"apps?select=name,title,description,logo,category,vendors(alias,url)");return Z.json({apps:Wu6(J)})}catch(J){return console.error("[deco-apps] GET error:",J),Z.json({error:"Failed to fetch apps"},502)}}),$};var K68=D(()=>{G8();F$();kI0()});import{z as b1}from"zod";function iU($,Z="invalid_request_error",Q=null,Y=null){return{error:{message:$,type:Z,param:Q,code:Y}}}function ju6($){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 Eu6($,Z,Q){try{return JSON.parse($)}catch{throw new U68(`Invalid JSON in tool call arguments for function '${Q}' (tool_call_id: ${Z}): ${$}`)}}function zu6($){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:Eu6(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 Pu6($){let Z=$.map((Q)=>{let Y=Q.function.parameters?AF(Q.function.parameters):AF({type:"object",properties:{}});return[Q.function.name,c$({description:Q.function.description,inputSchema:Y})]});return Object.fromEntries(Z)}function Au6($){if(!$)return;return{openai:{response_format:$}}}function Tu6(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function H68($,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 F68($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var Hu6=256,Fu6,Uu6,Nu6,Bu6,Ou6,Du6,Lu6,wu6,U68,N68,B68;var O68=D(()=>{v4();G8();wi();NH();Fu6=b1.object({type:b1.literal("function"),function:b1.object({name:b1.string(),description:b1.string().optional(),parameters:b1.record(b1.string(),b1.unknown()).optional()})}),Uu6=b1.object({id:b1.string(),type:b1.literal("function"),function:b1.object({name:b1.string(),arguments:b1.string()})}),Nu6=b1.discriminatedUnion("role",[b1.object({role:b1.literal("system"),content:b1.string(),name:b1.string().optional()}),b1.object({role:b1.literal("user"),content:b1.union([b1.string(),b1.array(b1.union([b1.object({type:b1.literal("text"),text:b1.string()}),b1.object({type:b1.literal("image_url"),image_url:b1.object({url:b1.string(),detail:b1.string().optional()})})]))]),name:b1.string().optional()}),b1.object({role:b1.literal("assistant"),content:b1.string().nullable().optional(),name:b1.string().optional(),tool_calls:b1.array(Uu6).optional()}),b1.object({role:b1.literal("tool"),content:b1.string(),tool_call_id:b1.string()})]),Bu6=b1.object({type:b1.literal("text")}),Ou6=b1.object({type:b1.literal("json_object")}),Du6=b1.object({type:b1.literal("json_schema"),json_schema:b1.object({name:b1.string(),description:b1.string().optional(),schema:b1.record(b1.string(),b1.unknown()),strict:b1.boolean().optional()})}),Lu6=b1.union([Bu6,Ou6,Du6]),wu6=b1.object({model:b1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:b1.array(Nu6),stream:b1.boolean().optional().default(!1),temperature:b1.number().min(0).max(2).optional(),max_tokens:b1.number().positive().optional(),top_p:b1.number().min(0).max(1).optional(),frequency_penalty:b1.number().min(-2).max(2).optional(),presence_penalty:b1.number().min(-2).max(2).optional(),stop:b1.union([b1.string(),b1.array(b1.string())]).optional(),tools:b1.array(Fu6).optional(),tool_choice:b1.union([b1.literal("auto"),b1.literal("none"),b1.literal("required"),b1.object({type:b1.literal("function"),function:b1.object({name:b1.string()})})]).optional(),response_format:Lu6.optional(),user:b1.string().optional()});U68=class U68 extends Error{constructor($){super($);this.name="MessageConversionError"}};N68=new Q1;N68.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),Q=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(iU("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(iU("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(iU("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Y=await $.req.json(),X=wu6.safeParse(Y);if(!X.success){let w=X.error.issues[0]??{message:"Invalid request",path:[]};return $.json(iU(`Invalid request: ${w.message}`,"invalid_request_error",w.path.length>0?w.path.join("."):null),400)}let J=X.data,G=ju6(J.model);if(!G)return $.json(iU("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)=>xz(E.providerId));if(!j)return $.json(iU("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(iU(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(K),U=zu6(J.messages),N=J.tools?Pu6(J.tools):void 0,B=Au6(J.response_format),O=Tu6(),L=Math.floor(Date.now()/1000);if(J.stream)return xO($,async(w)=>{let j=H68(F,U,N,J,B,$.req.raw.signal);try{let E=Zm(j),z=!1,T=0,P="",A=async()=>{if(P.length===0)return;let q=P;P="",await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{content:q},finish_reason:null}]})})};for await(let q of E.stream){if(!z&&(q.type==="text-delta"||q.type==="tool-call"))await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),z=!0;if(q.type==="text-delta"){if(P+=q.text,P.length>=Hu6)await A()}else if(q.type==="tool-call"){await A();let x=T++;await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{tool_calls:[{index:x,id:q.toolCallId,type:"function",function:{name:q.toolName,arguments:JSON.stringify(q.input)}}]},finish_reason:null}]})})}else if(q.type==="finish")await A(),await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{},finish_reason:F68(q.finishReason)}],usage:q.totalUsage?{prompt_tokens:q.totalUsage.inputTokens??0,completion_tokens:q.totalUsage.outputTokens??0,total_tokens:q.totalUsage.totalTokens??0}:void 0})})}await A(),await w.writeSSE({data:"[DONE]"})}catch(E){let z=E;console.error("[openai-compat:stream] Error:",z.message),await w.writeSSE({data:JSON.stringify({error:{message:z.message,type:"server_error"}})})}});else{let w=H68(F,U,N,J,B,$.req.raw.signal),j=await FU(w),E={role:"assistant",content:j.text||null};if(j.toolCalls&&j.toolCalls.length>0)E.tool_calls=j.toolCalls.map((z)=>({id:z.toolCallId,type:"function",function:{name:z.toolName,arguments:JSON.stringify("input"in z?z.input:{})}})),E.content=null;return $.json({id:O,object:"chat.completion",created:L,model:J.model,choices:[{index:0,message:E,finish_reason:F68(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(iU("Request aborted","invalid_request_error"),400);if(X.name==="MessageConversionError")return $.json(iU(X.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",X.message,X.stack),$.json(iU(X.message,"server_error"),500)}});B68=N68});function Ru6($){if(typeof $!=="object"||$===null)return!1;let Q=$.githubRepo?.url;return typeof Q==="string"&&Q.length>0}function D68(){let $=new Q1;return $.use("*",async(Z,Q)=>{await Q(),Z.header("Cache-Control","private, no-store"),Z.header("Vary","Cookie")}),$.get("/",async(Z)=>{let Q=Z.get("studioContext"),Y=p0(Q);if(!Y)return Z.json({error:"Authentication required"},401);let J=(Z.req.query("site")??"").trim().toLowerCase();if(!WZ(J))return Z.json({error:"Invalid site slug"},400);let G=await Q.db.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["organization.id as id","organization.slug as slug","organization.name as name","organization.metadata as metadata"]).where("member.userId","=",Y).execute(),W=[];for(let H of G){if(!H.slug||P9(H))continue;let F=await Q.storage.virtualMcps.list(H.id);for(let U of F){if(_A(U)!==J)continue;if(!Ru6(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 L68=D(()=>{G8();fG()});var j68;var w68=D(()=>{j68={name:"decocms",version:"4.404.0",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^4.0.58","@ai-sdk/google":"^4.0.76","@ai-sdk/openai":"^4.0.71","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^3.1.0","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^4.0.17","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^7.0.107","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});function Iu6(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??Mu6}}var E68,Mu6="https://ph.studio.decocms.com",z68;var P68=D(()=>{G8();Ur();Qf();E9();F$();CK1();w68();E68=new Q1;E68.get("/",($)=>{let Z={version:j68.version,theme:H$$(),...RK().logo&&{logo:RK().logo},...WO()&&{internalUrl:lc1()},...E0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!E0().firecrawlApiKey,hostingEnabled:!!E0().controlplaneRestUrl&&!!E0().controlplaneServiceToken,hostingControlPlaneGa:E0().hostingControlPlaneGa,monitorEnabled:!!E0().clickhouseAnalyticsUrl&&!!E0().clickhouseAnalyticsPassword,monitorGa:E0().monitorGa,plansEnabled:E0().plansEnabled,auth:Va$(),posthog:Iu6(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:nO()}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});z68=E68});function By($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function FU1($){return(By($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((Q)=>Q.charAt(0).toUpperCase()+Q.slice(1)).join(" ")}function A68($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(By($))}&sz=${Z}`}function Vu6($,Z){let Q=$.trim();if(Q.length<=Z)return Q;let Y=Q.slice(0,Z-1),X=Y.lastIndexOf(" ");return`${(X>Z*0.6?Y.slice(0,X):Y).trimEnd()}\u2026`}function T68($){let{brand:Z,domain:Q,score:Y}=$,X=typeof Y==="number"?`${Z} Deco Score \u2014 ${Math.round(Y)}/100 \xB7 decocms`:`${Z} Deco Score \xB7 decocms`,J=Vu6(`How does ${Q} really perform? See the full ${Z} Deco Score \u2014 SEO, performance, conversion & AEO signals scored by decocms.`,200);return{title:X,description:J}}import{z as D$}from"zod";var ku6,R68;var q68=D(()=>{ku6=D$.object({check_id:D$.string(),title:D$.string(),description:D$.string().optional(),impact:D$.string().optional(),why:D$.string().optional(),category:D$.string(),severity:D$.string(),value_band:D$.string().optional(),value_driver:D$.string().optional(),controllability:D$.string().optional(),pages:D$.array(D$.string()),tasks:D$.array(D$.string()),evidence:D$.string(),sample_scope:D$.string().optional(),sources:D$.array(D$.string())}),R68=D$.object({domain:D$.string(),brand:D$.string(),favicon:D$.string().optional(),scanned_at:D$.string().nullable(),lang:D$.string(),score:D$.number().nullable(),band:D$.string().nullable(),totals:D$.object({measured:D$.number(),registry_total:D$.number(),passed:D$.number(),failed:D$.number(),blocked:D$.number()}),buckets:D$.array(D$.object({id:D$.enum(["critical","important","worth"]),label:D$.string(),items:D$.array(ku6)})),passing:D$.object({count:D$.number(),items:D$.array(D$.object({check_id:D$.string(),title:D$.string()}))}),not_measured:D$.object({count:D$.number(),groups:D$.array(D$.object({reason:D$.string(),label:D$.string(),count:D$.number(),checks:D$.array(D$.string())}))}),categories:D$.array(D$.object({key:D$.string(),label:D$.string(),score:D$.number().nullable(),band:D$.string().nullable(),pass:D$.number(),fail:D$.number()})),screenshots:D$.array(D$.object({url:D$.string(),page_type:D$.string().optional(),viewport:D$.enum(["desktop","mobile"]),image_url:D$.string()}))})});function M68($,Z,Q){let Y=Q?`?${new URLSearchParams({lang:Q}).toString()}`:"";return`${uK({})}/api/v2/public/diagnostics/${encodeURIComponent($)}/onepager${Z}${Y}`}async function sk0($,Z={}){let Q=await fetch(M68($,"",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 R68.parse(await Q.json())}async function I68($,Z={}){let Q=await fetch(M68($,".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 UU1=D(()=>{q68();jw()});import{join as V68}from"path";async function Cu6($){try{let Z=await sk0($,{signal:AbortSignal.timeout(Su6)});if(!Z?.scanned_at)return null;return{brand:Z.brand.trim()||FU1($),...Z.score!==null?{score:Z.score}:{}}}catch{return null}}function iJ($){return $.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""")}function _u6($,Z){let Q=By($),Y=Z?.brand?.trim()||FU1(Q),X=A68(Q,128),G=`${(E0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(Q)}`,{title:W,description:K}=T68({brand:Y,domain:Q,score:Z?.score}),H=`${G}/og.png`,F=`${Y} Deco Score by decocms`;return[`<title>${iJ(W)}</title>`,`<meta name="description" content="${iJ(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="${iJ(W)}" />`,`<meta property="og:description" content="${iJ(K)}" />`,`<meta property="og:url" content="${iJ(G)}" />`,`<meta property="og:image" content="${iJ(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${iJ(F)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${iJ(W)}" />`,`<meta name="twitter:description" content="${iJ(K)}" />`,`<meta name="twitter:image" content="${iJ(H)}" />`,`<meta name="twitter:image:alt" content="${iJ(F)}" />`,`<link rel="canonical" href="${iJ(G)}" />`,`<link rel="alternate" type="text/markdown" href="${iJ(G)}.md" />`,`<link rel="icon" href="${iJ(X)}" sizes="any" />`].join(`
|
|
3706
|
+
`;await V48(Z.repo,L);let w=O[0]??`${lk0(Y)}/${pF1(N)}.json`;H.push({path:w,content:L});let j=w.slice(w.lastIndexOf("/")+1,-5);F.set(w,{stem:j,content:L});for(let E of O.slice(1))H.push({path:E,deleted:!0}),F.delete(E)}for(let N of $.del)for(let B of $U1(K,N))H.push({path:B,deleted:!0}),F.delete(B);if(H.length===0)return G;let U=Y?`${Y}/.deco/blocks.gen.json`:".deco/blocks.gen.json";if(W.some((N)=>N.type==="blob"&&N.path===U)){let N=await k48(Z,F.values(),X),{decofile:B,skipped:O}=t80(N);if(O.length>0)console.warn("decofile gen: dropped blocks that were not valid JSON",{repo:cK(Z.repo),branch:Q,packagePath:Y,blocks:O.map((L)=>L.key)});H.push({path:U,content:B})}try{let{sha:N}=await Z.commitFiles({branch:Q,message:sh6($),expectedHead:G,changes:H});return N}catch(N){if(!(N instanceof t6)||J>=th6-1)throw N;await i$(QQ(2000,200,J,2,0.5))}}}function sh6($){let Z=(X)=>{let J=X.slice(0,3).join(", ");return X.length>3?`${J} (+${X.length-3} more)`:J},Q=[];if($.set.size>0)Q.push(`update ${Z([...$.set.keys()])}`);if($.del.size>0)Q.push(`delete ${Z([...$.del])}`);let Y=`chore(decofile): ${Q.join("; ")}`;return s81(Y,$.deps.coAuthor)}var th6=3,KU1;var p48=D(()=>{FA0();xk0();T6();D8();iZ();ck0();KU1=new Map});import{createHmac as n48,randomBytes as ah6,timingSafeEqual as eh6}from"crypto";function t48(){if(ok0)return ok0;let $;try{let Z=E0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return ok0=$?Buffer.from($):ah6(32),ok0}function HU1($){let Z=$.nowMs??Date.now(),Q={o:$.organizationId,m:$.virtualMcpId,b:$.branch,e:Math.floor((Z+$u6)/1000)},Y=Buffer.from(JSON.stringify(Q)).toString("base64url"),X=n48("sha256",t48()).update(Y).digest("base64url");return`${Y}.${X}`}function o48($,Z){let Q=$.indexOf(".");if(Q<0)return!1;let Y=$.slice(0,Q),X=Buffer.from($.slice(Q+1)),J=Buffer.from(n48("sha256",t48()).update(Y).digest("base64url"));if(X.length!==J.length||!eh6(X,J))return!1;let G;try{G=JSON.parse(Buffer.from(Y,"base64url").toString())}catch{return!1}let W=Math.floor((Z.nowMs??Date.now())/1000);return G.o===Z.organizationId&&G.m===Z.virtualMcpId&&G.b===Z.branch&&typeof G.e==="number"&&G.e>=W}var $u6=21600000,ok0=null;var r48=D(()=>{F$()});function rk0($){return $&&typeof $==="object"&&!Array.isArray($)?$:null}function Zu6($){for(let[Z,Q]of Object.entries($)){if(!Z.startsWith("collections/blog/posts/"))continue;let Y=rk0(Q)?.__resolveType;if(typeof Y==="string"&&Y)return Y}return"blog/loaders/Blogpost.ts"}function s48($){let Z;try{Z=rk0(JSON.parse($))}catch{return $}if(!Z)return $;let Q=Zu6(Z),Y={...Z},X=0;for(let[J,G]of Object.entries(Z)){if(!J.startsWith("blog-manager/posts/"))continue;let W=rk0(G),K=W&&rk0(W.post);if(!K)continue;if(K.status==="archived")continue;if(typeof K.slug!=="string"||!K.slug)continue;let F=`collections/blog/posts/${J.slice(19)}`;if(Object.hasOwn(Y,F))continue;Y[F]={name:F,__resolveType:Q,["post"]:{...K,status:"published"}},X++}return X>0?JSON.stringify(Y):$}import{z as Ri}from"zod";function Yu6($){return $.length>0&&$.length<=255&&!$.includes("..")&&!$.endsWith("/")&&!$.endsWith(".lock")&&Qu6.test($)}function Q68($){return $.req.header("x-forwarded-host")??new URL($.req.url).host}async function Y40($){let Z=$.get("decofileScope");return Ec($.var.studioContext,Z.organizationId,Z.githubRepo)}function X40($,Z){let Q=Z instanceof Error?Z.message:String(Z);if(Z instanceof t6)return $.json({error:Q},409);let Y=UW(Z);if(Y!==null){let X=Y===404?404:Y===409||Y===422?409:502;return $.json({error:Q},X)}return $.json({error:Q},500)}function Y68(){let $=new Q1;return $.use("/:virtualMcpId/:branch",Z68),$.use("/:virtualMcpId/:branch/*",Z68),$.get("/:virtualMcpId/:branch",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await Y40(Z),X=await S48(Y,Q.branch,Q.packagePath,{createBranchIfMissing:!!Q.userId}),J={ETag:`"${X.sha}"`,"Cache-Control":"no-store","Access-Control-Allow-Origin":"*"};if(Z.req.header("if-none-match")===`"${X.sha}"`)return Z.body(null,304,J);if(!Q.userId)return Z.body(s48(X.decofile),200,{...J,"content-type":"application/json"});let G=HU1({organizationId:Q.organizationId,virtualMcpId:Q.virtualMcpId,branch:Q.branch});return Z.body(`{"version":${JSON.stringify(X.sha)},"token":${JSON.stringify(G)},"apiHost":${JSON.stringify(Q68(Z))},"decofile":${X.decofile}}`,200,{...J,"content-type":"application/json"})}catch(Y){return X40(Z,Y)}}),$.get("/:virtualMcpId/:branch/meta",async(Z)=>{let Q=Z.get("decofileScope"),Y=Q.packagePath?`${Q.packagePath}/.deco/meta.gen.json`:".deco/meta.gen.json";try{let X=await Y40(Z),J=await X.readFileAtRef(Q.branch,Y);if(J===null){let G=await X.getDefaultBranch();if(G!==Q.branch)J=await X.readFileAtRef(G,Y)}if(J===null)return Z.json({error:"meta.gen.json not committed"},404);return Z.body(J,200,{"content-type":"application/json","Cache-Control":"no-store","Access-Control-Allow-Origin":"*"})}catch(X){return X40(Z,X)}}),$.patch("/:virtualMcpId/:branch",Ju6,async(Z)=>{let Q=Z.get("decofileScope"),Y=Z.var.studioContext,X=Gu6.safeParse(await Z.req.json().catch(()=>null));if(!X.success)return Z.json({error:"Invalid body",details:X.error.issues},400);let J;try{J=o80(X.data)}catch(G){if(G instanceof r80)return Z.json({error:G.message},400);throw G}for(let G of[...Object.keys(J.set??{}),...J.delete??[]])try{bk0(G)}catch(W){let K=W instanceof Error?W.message:String(W);return Z.json({error:K},400)}for(let[G,W]of Object.entries(J.set??{})){if(typeof W!=="object"||W===null||Array.isArray(W))return Z.json({error:`Block "${G}" must be a JSON object`},400);if(iF1(G))return Z.json({error:`Block key "${G}" collides with a framework resolver module and cannot be written`},400)}try{let G=await Y40(Z),W=await i48(`${Q.organizationId}/${Q.virtualMcpId}/${Q.branch}`,{client:G,branch:Q.branch,packagePath:Q.packagePath,coAuthor:ji(Y)},J),K=HU1({organizationId:Q.organizationId,virtualMcpId:Q.virtualMcpId,branch:Q.branch});return Z.json({version:W,token:K,apiHost:Q68(Z)})}catch(G){return X40(Z,G)}}),$.post("/:virtualMcpId/:branch/publish",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await Y40(Z),X=await Y.getDefaultBranch();if(X===Q.branch)return Z.json({error:"Branch is already the default branch"},400);let J=`chore(decofile): publish ${Q.branch}`;try{let G;try{G=await Y.mergeBranches(X,Q.branch,J)}catch(W){if(UW(W)!==409)throw W;await pk0(Y,Q.branch,X),G=await Y.mergeBranches(X,Q.branch,J)}return G?Z.json({result:"merged",sha:G}):Z.json({result:"up-to-date"})}catch(G){if(UW(G)===409)return Z.json({error:"merge-conflict"},409);if(UW(G)===405){let K=await Y.findOpenChangeRequest(X,Q.branch)??await Y.createChangeRequest({base:X,head:Q.branch,title:`Publish ${Q.branch}`});return Z.json({result:"pull-request",number:K.number,url:K.url})}throw G}}catch(Y){return X40(Z,Y)}}),$.get("/:virtualMcpId/:branch/status",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await Y40(Z),X=await Y.getDefaultBranch();if(X===Q.branch)return Z.json({baseBranch:X,aheadBy:0,behindBy:0});try{let{aheadBy:J,behindBy:G}=await Y.compare(X,Q.branch);return Z.json({baseBranch:X,aheadBy:J,behindBy:G})}catch(J){if(UW(J)===404)return Z.json({baseBranch:X,aheadBy:0,behindBy:0});throw J}}catch(Y){return X40(Z,Y)}}),$}var Qu6,a48=500,e48=1048576,$68=1024,Xu6=8388608,Ju6,Gu6,Z68;var X68=D(()=>{q20();xk0();G8();fW();xF1();vk0();JU1();iZ();p48();r48();QU1();ck0();gF();Qu6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;Ju6=I5({maxSize:Xu6,onError:($)=>$.json({error:"Payload too large"},413)}),Gu6=Ri.object({set:Ri.record(Ri.string(),Ri.unknown()).optional(),delete:Ri.array(Ri.string()).optional()}).refine(($)=>Object.keys($.set??{}).length>0||($.delete?.length??0)>0,{message:"Patch must set or delete at least one block"}).refine(($)=>Object.keys($.set??{}).length+($.delete?.length??0)<=a48,{message:`Patch cannot touch more than ${a48} blocks`}).refine(($)=>Object.values($.set??{}).every((Z)=>JSON.stringify(Z).length<=e48),{message:`Each block must be at most ${e48} bytes`}).refine(($)=>[...Object.keys($.set??{}),...$.delete??[]].every((Z)=>Z.length<=$68),{message:`Each block key must be at most ${$68} characters`}),Z68=_k0(async($,Z)=>{let Q=$.var.studioContext,Y=Q.organization;if(!Y)return $.json({error:"Organization scope required"},500);let X=$.req.param("virtualMcpId"),J=$.req.param("branch");if(!X||!J)return $.json({error:"virtualMcpId and branch are required"},400);if(!Yu6(J))return $.json({error:`Invalid branch name: ${J}`},400);let G=Q.auth?.user?.id??null;if(!G){let B=$.req.query("token");if(!($.req.method==="GET"&&!$.req.path.match(/\/(publish|status)$/)))return $.json({error:"Unauthorized"},401);if(!B||!o48(B,{organizationId:Y.id,virtualMcpId:X,branch:J}))return $.json({error:"Unauthorized"},401)}if(!await QW(Q,Y.id,"cms"))return $.json({error:"This organization's plan does not include the CMS",code:"feature_not_in_plan"},403);let W=await Q.storage.virtualMcps.findById(X);if(!W||W.organization_id!==Y.id)return $.json({error:"Virtual MCP not found"},404);let K=W.metadata??null;if(!Ym(K))return $.json({error:"Project has no preview server configured"},404);let F=W.connections?.map((B)=>B.connection_id)??[],U=Z40(K,F);if(!U)return $.json({error:"Project has no GitHub repository"},404);let N=K?.runtime;return $.set("decofileScope",{organizationId:Y.id,virtualMcpId:X,branch:J,packagePath:N?.path?.replace(/^\/+|\/+$/g,"")||null,githubRepo:U,userId:G}),Z()})});var J68=($)=>{let Z=new Q1;if(Z.use("*",od),Z.use("*",_e$),Z.route("/",lV0()),Z.route("/",O08()),Z.route("/",$08()),Z.route("/",T88()),Z.route("/",D88()),Z.route("/",P88()),Z.route("/",w88()),Z.route("/",kk0()),Z.route("/tools",S88()),Z.route("/",I88()),Z.route("/",n$8({kvStorage:$.kvStorage})),Z.route("/",i$8()),Z.route("/fs",G88({getConnection:$.getNatsConnection})),Z.route("/sandbox",m48()),Z.route("/decofile",Y68()),Z.route("/",N88()),Z.route("/",K88()),Z.route("/deco-sites",mV0()),Z.route("/hosting",me$()),Z.route("/monitor",re$()),Z.route("/sso",fV0()),Z.route("/",Sk0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",ge$()),$.mountDevAssets)Z.route("/dev-assets",nV0({orgFromPath:!0}));return Z.use("/mcp/:connectionId?",$.mcpAuth),Z.use("/mcp/:connectionId/ui-resource",$.mcpAuth),Z.use("/mcp/gateway/:virtualMcpId?",$.mcpAuth),Z.use("/mcp/virtual-mcp/:virtualMcpId?",$.mcpAuth),Z.use("/mcp/self",$.mcpAuth),Z.use("/mcp/task-run/:threadId",$.mcpAuth),Z.route("/",gr$()),Z.get("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",$.betterAuthProtectedResourceHandler),Z.get("/mcp/.well-known/oauth-protected-resource",$.betterAuthProtectedResourceHandler),Z.route("/mcp/task-run",F88()),Z.route("/mcp",vR0()),Z.route("/mcp/self",qk0()),Z.route("/mcp",fR0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var G68=D(()=>{G8();ve$();RV0();he$();QH1();de$();se$();tV0();ef();sK1();WH1();p$8();t$8();W88();H88();u10();iK1();yR0();MF1();U88();B88();L88();j88();kF1();R88();V88();SF1();C88();CF1();bR0();d48();X68()});function Wu6($){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 Ku6=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},W68=()=>{let $=new Q1;return $.use("*",Ku6),$.get("/",async(Z)=>{let Q=E0(),Y=Q.decoSupabaseUrl,X=Q.decoSupabaseServiceKey;if(!Y||!X)return Z.json({apps:[]});try{let J=await lJ(Y,X,"apps?select=name,title,description,logo,category,vendors(alias,url)");return Z.json({apps:Wu6(J)})}catch(J){return console.error("[deco-apps] GET error:",J),Z.json({error:"Failed to fetch apps"},502)}}),$};var K68=D(()=>{G8();F$();kI0()});import{z as b1}from"zod";function iU($,Z="invalid_request_error",Q=null,Y=null){return{error:{message:$,type:Z,param:Q,code:Y}}}function ju6($){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 Eu6($,Z,Q){try{return JSON.parse($)}catch{throw new U68(`Invalid JSON in tool call arguments for function '${Q}' (tool_call_id: ${Z}): ${$}`)}}function zu6($){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:Eu6(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 Pu6($){let Z=$.map((Q)=>{let Y=Q.function.parameters?AF(Q.function.parameters):AF({type:"object",properties:{}});return[Q.function.name,c$({description:Q.function.description,inputSchema:Y})]});return Object.fromEntries(Z)}function Au6($){if(!$)return;return{openai:{response_format:$}}}function Tu6(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function H68($,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 F68($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var Hu6=256,Fu6,Uu6,Nu6,Bu6,Ou6,Du6,Lu6,wu6,U68,N68,B68;var O68=D(()=>{v4();G8();wi();NH();Fu6=b1.object({type:b1.literal("function"),function:b1.object({name:b1.string(),description:b1.string().optional(),parameters:b1.record(b1.string(),b1.unknown()).optional()})}),Uu6=b1.object({id:b1.string(),type:b1.literal("function"),function:b1.object({name:b1.string(),arguments:b1.string()})}),Nu6=b1.discriminatedUnion("role",[b1.object({role:b1.literal("system"),content:b1.string(),name:b1.string().optional()}),b1.object({role:b1.literal("user"),content:b1.union([b1.string(),b1.array(b1.union([b1.object({type:b1.literal("text"),text:b1.string()}),b1.object({type:b1.literal("image_url"),image_url:b1.object({url:b1.string(),detail:b1.string().optional()})})]))]),name:b1.string().optional()}),b1.object({role:b1.literal("assistant"),content:b1.string().nullable().optional(),name:b1.string().optional(),tool_calls:b1.array(Uu6).optional()}),b1.object({role:b1.literal("tool"),content:b1.string(),tool_call_id:b1.string()})]),Bu6=b1.object({type:b1.literal("text")}),Ou6=b1.object({type:b1.literal("json_object")}),Du6=b1.object({type:b1.literal("json_schema"),json_schema:b1.object({name:b1.string(),description:b1.string().optional(),schema:b1.record(b1.string(),b1.unknown()),strict:b1.boolean().optional()})}),Lu6=b1.union([Bu6,Ou6,Du6]),wu6=b1.object({model:b1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:b1.array(Nu6),stream:b1.boolean().optional().default(!1),temperature:b1.number().min(0).max(2).optional(),max_tokens:b1.number().positive().optional(),top_p:b1.number().min(0).max(1).optional(),frequency_penalty:b1.number().min(-2).max(2).optional(),presence_penalty:b1.number().min(-2).max(2).optional(),stop:b1.union([b1.string(),b1.array(b1.string())]).optional(),tools:b1.array(Fu6).optional(),tool_choice:b1.union([b1.literal("auto"),b1.literal("none"),b1.literal("required"),b1.object({type:b1.literal("function"),function:b1.object({name:b1.string()})})]).optional(),response_format:Lu6.optional(),user:b1.string().optional()});U68=class U68 extends Error{constructor($){super($);this.name="MessageConversionError"}};N68=new Q1;N68.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),Q=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(iU("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(iU("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(iU("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Y=await $.req.json(),X=wu6.safeParse(Y);if(!X.success){let w=X.error.issues[0]??{message:"Invalid request",path:[]};return $.json(iU(`Invalid request: ${w.message}`,"invalid_request_error",w.path.length>0?w.path.join("."):null),400)}let J=X.data,G=ju6(J.model);if(!G)return $.json(iU("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)=>xz(E.providerId));if(!j)return $.json(iU("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(iU(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(K),U=zu6(J.messages),N=J.tools?Pu6(J.tools):void 0,B=Au6(J.response_format),O=Tu6(),L=Math.floor(Date.now()/1000);if(J.stream)return xO($,async(w)=>{let j=H68(F,U,N,J,B,$.req.raw.signal);try{let E=Zm(j),z=!1,T=0,P="",A=async()=>{if(P.length===0)return;let q=P;P="",await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{content:q},finish_reason:null}]})})};for await(let q of E.stream){if(!z&&(q.type==="text-delta"||q.type==="tool-call"))await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),z=!0;if(q.type==="text-delta"){if(P+=q.text,P.length>=Hu6)await A()}else if(q.type==="tool-call"){await A();let x=T++;await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{tool_calls:[{index:x,id:q.toolCallId,type:"function",function:{name:q.toolName,arguments:JSON.stringify(q.input)}}]},finish_reason:null}]})})}else if(q.type==="finish")await A(),await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{},finish_reason:F68(q.finishReason)}],usage:q.totalUsage?{prompt_tokens:q.totalUsage.inputTokens??0,completion_tokens:q.totalUsage.outputTokens??0,total_tokens:q.totalUsage.totalTokens??0}:void 0})})}await A(),await w.writeSSE({data:"[DONE]"})}catch(E){let z=E;console.error("[openai-compat:stream] Error:",z.message),await w.writeSSE({data:JSON.stringify({error:{message:z.message,type:"server_error"}})})}});else{let w=H68(F,U,N,J,B,$.req.raw.signal),j=await FU(w),E={role:"assistant",content:j.text||null};if(j.toolCalls&&j.toolCalls.length>0)E.tool_calls=j.toolCalls.map((z)=>({id:z.toolCallId,type:"function",function:{name:z.toolName,arguments:JSON.stringify("input"in z?z.input:{})}})),E.content=null;return $.json({id:O,object:"chat.completion",created:L,model:J.model,choices:[{index:0,message:E,finish_reason:F68(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(iU("Request aborted","invalid_request_error"),400);if(X.name==="MessageConversionError")return $.json(iU(X.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",X.message,X.stack),$.json(iU(X.message,"server_error"),500)}});B68=N68});function Ru6($){if(typeof $!=="object"||$===null)return!1;let Q=$.githubRepo?.url;return typeof Q==="string"&&Q.length>0}function D68(){let $=new Q1;return $.use("*",async(Z,Q)=>{await Q(),Z.header("Cache-Control","private, no-store"),Z.header("Vary","Cookie")}),$.get("/",async(Z)=>{let Q=Z.get("studioContext"),Y=p0(Q);if(!Y)return Z.json({error:"Authentication required"},401);let J=(Z.req.query("site")??"").trim().toLowerCase();if(!WZ(J))return Z.json({error:"Invalid site slug"},400);let G=await Q.db.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["organization.id as id","organization.slug as slug","organization.name as name","organization.metadata as metadata"]).where("member.userId","=",Y).execute(),W=[];for(let H of G){if(!H.slug||P9(H))continue;let F=await Q.storage.virtualMcps.list(H.id);for(let U of F){if(_A(U)!==J)continue;if(!Ru6(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 L68=D(()=>{G8();fG()});var j68;var w68=D(()=>{j68={name:"decocms",version:"4.405.0",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^4.0.58","@ai-sdk/google":"^4.0.76","@ai-sdk/openai":"^4.0.71","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^3.1.0","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^4.0.17","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^7.0.107","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});function Iu6(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??Mu6}}var E68,Mu6="https://ph.studio.decocms.com",z68;var P68=D(()=>{G8();Ur();Qf();E9();F$();CK1();w68();E68=new Q1;E68.get("/",($)=>{let Z={version:j68.version,theme:H$$(),...RK().logo&&{logo:RK().logo},...WO()&&{internalUrl:lc1()},...E0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!E0().firecrawlApiKey,hostingEnabled:!!E0().controlplaneRestUrl&&!!E0().controlplaneServiceToken,hostingControlPlaneGa:E0().hostingControlPlaneGa,monitorEnabled:!!E0().clickhouseAnalyticsUrl&&!!E0().clickhouseAnalyticsPassword,monitorGa:E0().monitorGa,plansEnabled:E0().plansEnabled,auth:Va$(),posthog:Iu6(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:nO()}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});z68=E68});function By($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function FU1($){return(By($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((Q)=>Q.charAt(0).toUpperCase()+Q.slice(1)).join(" ")}function A68($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(By($))}&sz=${Z}`}function Vu6($,Z){let Q=$.trim();if(Q.length<=Z)return Q;let Y=Q.slice(0,Z-1),X=Y.lastIndexOf(" ");return`${(X>Z*0.6?Y.slice(0,X):Y).trimEnd()}\u2026`}function T68($){let{brand:Z,domain:Q,score:Y}=$,X=typeof Y==="number"?`${Z} Deco Score \u2014 ${Math.round(Y)}/100 \xB7 decocms`:`${Z} Deco Score \xB7 decocms`,J=Vu6(`How does ${Q} really perform? See the full ${Z} Deco Score \u2014 SEO, performance, conversion & AEO signals scored by decocms.`,200);return{title:X,description:J}}import{z as D$}from"zod";var ku6,R68;var q68=D(()=>{ku6=D$.object({check_id:D$.string(),title:D$.string(),description:D$.string().optional(),impact:D$.string().optional(),why:D$.string().optional(),category:D$.string(),severity:D$.string(),value_band:D$.string().optional(),value_driver:D$.string().optional(),controllability:D$.string().optional(),pages:D$.array(D$.string()),tasks:D$.array(D$.string()),evidence:D$.string(),sample_scope:D$.string().optional(),sources:D$.array(D$.string())}),R68=D$.object({domain:D$.string(),brand:D$.string(),favicon:D$.string().optional(),scanned_at:D$.string().nullable(),lang:D$.string(),score:D$.number().nullable(),band:D$.string().nullable(),totals:D$.object({measured:D$.number(),registry_total:D$.number(),passed:D$.number(),failed:D$.number(),blocked:D$.number()}),buckets:D$.array(D$.object({id:D$.enum(["critical","important","worth"]),label:D$.string(),items:D$.array(ku6)})),passing:D$.object({count:D$.number(),items:D$.array(D$.object({check_id:D$.string(),title:D$.string()}))}),not_measured:D$.object({count:D$.number(),groups:D$.array(D$.object({reason:D$.string(),label:D$.string(),count:D$.number(),checks:D$.array(D$.string())}))}),categories:D$.array(D$.object({key:D$.string(),label:D$.string(),score:D$.number().nullable(),band:D$.string().nullable(),pass:D$.number(),fail:D$.number()})),screenshots:D$.array(D$.object({url:D$.string(),page_type:D$.string().optional(),viewport:D$.enum(["desktop","mobile"]),image_url:D$.string()}))})});function M68($,Z,Q){let Y=Q?`?${new URLSearchParams({lang:Q}).toString()}`:"";return`${uK({})}/api/v2/public/diagnostics/${encodeURIComponent($)}/onepager${Z}${Y}`}async function sk0($,Z={}){let Q=await fetch(M68($,"",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 R68.parse(await Q.json())}async function I68($,Z={}){let Q=await fetch(M68($,".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 UU1=D(()=>{q68();jw()});import{join as V68}from"path";async function Cu6($){try{let Z=await sk0($,{signal:AbortSignal.timeout(Su6)});if(!Z?.scanned_at)return null;return{brand:Z.brand.trim()||FU1($),...Z.score!==null?{score:Z.score}:{}}}catch{return null}}function iJ($){return $.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""")}function _u6($,Z){let Q=By($),Y=Z?.brand?.trim()||FU1(Q),X=A68(Q,128),G=`${(E0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(Q)}`,{title:W,description:K}=T68({brand:Y,domain:Q,score:Z?.score}),H=`${G}/og.png`,F=`${Y} Deco Score by decocms`;return[`<title>${iJ(W)}</title>`,`<meta name="description" content="${iJ(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="${iJ(W)}" />`,`<meta property="og:description" content="${iJ(K)}" />`,`<meta property="og:url" content="${iJ(G)}" />`,`<meta property="og:image" content="${iJ(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${iJ(F)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${iJ(W)}" />`,`<meta name="twitter:description" content="${iJ(K)}" />`,`<meta name="twitter:image" content="${iJ(H)}" />`,`<meta name="twitter:image:alt" content="${iJ(F)}" />`,`<link rel="canonical" href="${iJ(G)}" />`,`<link rel="alternate" type="text/markdown" href="${iJ(G)}.md" />`,`<link rel="icon" href="${iJ(X)}" sizes="any" />`].join(`
|
|
3707
3707
|
`)}function vu6($,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}
|
|
3708
3708
|
</head>`)}function k68($){let Z=new Q1;return Z.get("/:domain/og.png",async(Q)=>{let Y=By(Q.req.param("domain")),X=async()=>{let J=$?Bun.file(V68($,"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(`${uK({})}/api/v2/public/diagnostics/${encodeURIComponent(Y)}/og.png`,{signal:AbortSignal.timeout(bu6)}),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=By(Q.req.param("file").replace(/\.md$/,""));try{let X=await I68(Y,{lang:Q.req.query("lang")?.trim()||void 0,signal:AbortSignal.timeout(xu6)});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=$?V68($,"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 Cu6(By(Y)),K=_u6(Y,W);return Q.html(vu6(G,K),200,{"Cache-Control":"public, max-age=0, s-maxage=300"})}catch{return Q.html(G)}}),Z}var Su6=2500,bu6=1e4,xu6=1e4;var S68=D(()=>{G8();jw();UU1();F$()});function ak0($,Z){return fetch(`${uK({})}${$}`,Z)}async function fu6($,Z){let Q=await sk0($,{lang:Z});if(!Q)return{status:"not_found",report:null};return Q.scanned_at?{status:"ready",report:Q}:{status:"empty",report:null}}function gu6($){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 yu6,yO,C68=async($,Z)=>{if(!$.get("reportUser"))return $.json({error:"Authentication required"},401);await Z();return},_68;var v68=D(()=>{G8();hG();jw();UU1();yu6=new Set(["complete","errored","terminated","unknown"]);yO=new Q1;yO.use("*",async($,Z)=>{let Q=await C8.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});yO.use("/link-token/*",C68);yO.use("/suggest",C68);yO.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 fu6(Z,Q))}catch{return $.json({error:"report read failed"},502)}});yO.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}=gu6(Q);if(!Y)return $.json({error:"domain is required"},400);let J=Z?.email;try{let G=await ak0("/api/v2/diagnostics/run",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${EA({})}`},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)}});yO.get("/status",async($)=>{let Z=$.req.query("id");if(!Z)return $.json({error:"id is required"},400);try{let Q=await ak0(`/api/v2/diagnostics/status?id=${encodeURIComponent(Z)}`,{headers:{Authorization:`Bearer ${EA({})}`}});if(!Q.ok)return $.json({error:`status HTTP ${Q.status}`},502);let X=(await Q.json()).status??"unknown",J={done:yu6.has(X),status:X};return $.json(J)}catch{return $.json({error:"status failed"},502)}});yO.get("/link-token/:id",async($)=>{let Z=$.req.param("id");try{let Q=await ak0(`/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)}});yO.get("/suggest",async($)=>{let Z=($.req.query("q")??"").trim().slice(0,64);if(Z.length<2)return $.json({suggestions:[]});try{let Q=await ak0(`/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:[]})}});_68=yO});var hu6=1048576,NU1;var b68=D(()=>{G8();fW();F$();LK1();NU1=new Q1;NU1.post("/webhook",I5({maxSize:hu6,onError:($)=>$.json({error:"payload too large"},413)}),async($)=>{let Z=E0().stripeWebhookSecret;if(!Z)return $.json({error:"stripe billing not configured"},503);let Q=await $.req.text();if(!ls$(Q,$.req.header("stripe-signature"),Z))return $.json({error:"invalid signature"},400);let X=cs$(Q);if(!X)return $.json({error:"invalid payload"},400);let J=await ms$(X);return console.log("stripe webhook",{eventId:X.id,type:X.type,livemode:X.livemode,...J}),$.json({received:!0})})});import{timingSafeEqual as uu6}from"crypto";function mu6($,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 uu6(Buffer.from(X),Buffer.from(Y))}function du6($,Z){let Q=Z,Y=Q?.repository?.name,X=Q?.repository?.owner?.login;if(typeof Y!=="string"||typeof X!=="string")return[];let J=[];if($==="check_suite"){if(Q.action!=="completed")return[];let G=Q.check_suite?.pull_requests;for(let W of Array.isArray(G)?G:[]){let K=W?.number;if(typeof K==="number")J.push(K)}}else if($==="issue_comment"&&Q.issue?.pull_request){let G=Q.issue.number;if(typeof G==="number")J.push(G)}return[...new Set(J)].map((G)=>({repoOwner:X,repoName:Y,number:G}))}function x68($){let Z=new Q1;return Z.post("/webhook",I5({maxSize:lu6,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(!mu6(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"&&!cu6.has(J??""))return Q.json({ok:!0,ignored:"event"});let G;try{G=JSON.parse(X)}catch{return Q.json({error:"invalid payload"},400)}if(J==="push"){let H=G.ref,F=G.repository?.full_name;if(!H||!F)return Q.json({ok:!0,ignored:"shape"});let N=(await T41())?.markTenantPoolsDirty(F,H)??[];return Q.json({ok:!0,pools:N})}let W=du6(J??"",G);if(W.length===0)return Q.json({ok:!0,ignored:"no-pr"});let K=await iu6($,W);return Q.json({ok:!0,refreshed:K})}),Z}async function iu6($,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 vV$(K,G.organizationId,G.taskBoardItemId)!==null)Q++}catch(W){console.error(`[github-webhook] pr card refresh failed for ${G.taskBoardItemId}:`,W)}}return Q}var lu6=5242880,cu6;var f68=D(()=>{G8();fW();QH();z7();cu6=new Set(["check_suite","issue_comment"])});function y68($){let Z=new qO($.db,new FG($.encryptionKey)),Q=new Q1;return Q.get("/attachments/:token",async(Y)=>{let X=tM$(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 _Q(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 g68=D(()=>{G8();vz();V51();kj()});function h68($){let Z=new qO($.db,new FG($.encryptionKey));async function Q(X,J){let G=Ln$(J);if(!G)return;let W=await Z.getByWebhookSecret(X);if(!W?.enabled)return;let K=await PW($.db,W.organizationId);if(!K)return;if(await _I0(K,W,G)==="started")console.log(`[jira-webhook] started a run for ${G.issueKey} entering "${G.toStatus}"`)}let Y=new Q1;return Y.post("/webhook/:secret",I5({maxSize:pu6}),async(X)=>{let J=X.req.param("secret");if(!await Z.getByWebhookSecret(J))return X.json({error:"Unknown webhook"},404);let W;try{W=await X.req.json()}catch{return X.json({error:"Body must be JSON"},400)}return Q(J,W).catch((K)=>{console.error("[jira-webhook] trigger failed",K)}),X.body(null,202)}),Y}var pu6=1048576;var u68=D(()=>{G8();fW();vz();vI0();rx()});import{DBOS as ek0,SchedulerMode as nu6}from"@dbos-inc/dbos-sdk";function c68($){OU1=$}function m68(){if(!OU1)throw Error("[jira-trigger] runtime not initialized \u2014 setJiraTriggerSweepRuntime() must run before the workflow fires");return OU1}function d68(){let $=m68();return new qO($.db,new FG($.encryptionKey))}async function ru6($,Z){try{let Q=await d68().getById($);if(!Q?.enabled||!Q.boardId)return{integrationId:$,started:0};let Y=await PW(m68().db,Q.organizationId);if(!Y)return{integrationId:$,started:0};if((await Y.storage.jiraIntegrations.listAutomations(Q.organizationId)).length===0)return{integrationId:$,started:0};let J=new _Q(Q.siteUrl,Q.email,Q.apiToken),W=`(${await J.getBoardScopeJql(Q.boardId)}) AND status CHANGED AFTER "-${l68}m"`,K=0,H;for(let F=0;F<ou6;F++){let U=await J.searchIssues({jql:W,nextPageToken:H,expandChangelog:!0});for(let N of U.issues){let B=wn$(N,N.changelog?.histories??[],Z);for(let O of B)if(await _I0(Y,Q,O)==="started")K++}if(H=U.nextPageToken??void 0,!H)break}return{integrationId:$,started:K}}catch(Q){return{integrationId:$,started:0,error:Q instanceof Error?Q.message:String(Q)}}}async function su6($,Z){let Q=new Date($.getTime()-l68*60000),Y=await ek0.runStep(()=>d68().listEnabledIds(),{name:"loadJiraIntegrations"});if(Y.length===0)return;let X=await Promise.all(Y.map((J)=>ek0.runStep(()=>ru6(J,Q),{name:`sweepJira:${J}`})));for(let J of X)if(J.error)console.warn(`[jira-trigger] integration ${J.integrationId} failed: ${J.error}`);else if(J.started>0)console.log(`[jira-trigger] integration ${J.integrationId} started ${J.started} run(s) the webhook missed`)}function i68(){if(BU1)return;BU1=ek0.registerWorkflow(su6,{name:"jiraTriggerSweepWorkflow"}),ek0.registerScheduled(BU1,{name:"jiraTriggerSweepWorkflow",crontab:tu6,mode:nu6.ExactlyOncePerIntervalWhenActive})}var tu6="7-59/10 * * * *",l68=35,ou6=5,OU1=null,BU1=null;var p68=D(()=>{vz();rx();kj();vI0()});function n68($,Z){if(Z.startsWith("text/html")||Z.startsWith("image/svg"))$.set("Content-Security-Policy","sandbox allow-scripts allow-modals allow-same-origin")}var t68,au6,eu6,o68;var r68=D(()=>{G8();TK();qm();el();t68=new Q1,au6=["range","if-none-match","if-modified-since"],eu6=["content-type","content-length","content-range","accept-ranges","etag","last-modified"];t68.get("/:org/files/*",async($)=>{let Z=$.get("studioContext"),Q=Z.organization?.id;if(!Z.auth?.user?.id){if(td($))return $.redirect(`/login?next=${encodeURIComponent($.req.path)}`,302);throw new A$(401,{message:"Authentication required"})}if(!Q)throw new A$(401,{message:"Organization context required"});let Y=$.req.path.replace(/^.*\/files\//,"");if(!Y)throw new A$(400,{message:"Missing file key"});let X=await E10(Y,Z);if(!X)throw new A$(503,{message:"Object storage not configured"});if(X.startsWith("data:")&&JW()){let K=X.match(/^data:([^;]+);base64,(.+)$/s);if(!K)throw new A$(500,{message:"Invalid data URL from storage"});let[,H,F]=K,U=Buffer.from(F,"base64"),N=new Headers({"Content-Type":H,"Cache-Control":"private, max-age=86400"});return n68(N,H),new Response(U,{status:200,headers:N})}let J=new Headers;for(let K of au6){let H=$.req.header(K);if(H)J.set(K,H)}let G=await fetch(X,{headers:J});if(G.status===403||G.status===404)throw new A$(404,{message:"File not found"});if(!G.ok&&G.status!==304&&G.status!==416)throw console.error(`[files] upstream storage error ${G.status} for key:`,Y),new A$(502,{message:"Upstream storage error"});let W=new Headers;for(let K of eu6){let H=G.headers.get(K);if(H)W.set(K,H)}return W.set("Cache-Control","private, max-age=86400"),n68(W,W.get("content-type")??""),new Response(G.body,{status:G.status,headers:W})});o68=t68});var J40=b((Oy)=>{var $l6=Oy&&Oy.__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]}),Zl6=Oy&&Oy.__exportStar||function($,Z){for(var Q in $)if(Q!=="default"&&!Object.prototype.hasOwnProperty.call(Z,Q))$l6(Z,$,Q)};Object.defineProperty(Oy,"__esModule",{value:!0});Zl6($G(),Oy)});var e68=b((s68)=>{Object.defineProperty(s68,"__esModule",{value:!0});s68.version=void 0;s68.version="3.4.0"});var Q58=b((pU)=>{var Ql6=pU&&pU.__importDefault||function($){return $&&$.__esModule?$:{default:$}};Object.defineProperty(pU,"__esModule",{value:!0});pU.NodeTransport=pU.VERSION=void 0;pU.nodeResolveHost=Kl6;var m5=J40(),Yl6=q0("net"),DU1=q0("tls"),Xl6=q0("path"),$58=q0("fs"),Jl6=Ql6(q0("dns")),Gl6=e68();pU.VERSION=Gl6.version;var Wl6="nats.js";class Z58{socket;version;lang;yields=[];signal=(0,m5.deferred)();closedNotification=(0,m5.deferred)();options;connected=!1;tlsName="";done=!1;closeError;constructor(){this.lang=Wl6,this.version=pU.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,m5.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 m5.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 m5.errors.ConnectionError("error connecting - node provided an undefined error");let{code:G}=J,W=G==="ECONNREFUSED"?new m5.errors.ConnectionError("connection refused",{cause:J}):J;throw this.socket?.destroy(),W}}dial($){let Z=(0,m5.deferred)(),Q,Y=(0,Yl6.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,m5.deferred)(),Z;return this.socket.on("data",(Q)=>{this.yields.push(Q);let Y=m5.DataBuffer.concat(...this.yields),X=(0,m5.extractProtocolMessage)(Y);if(X!=="")try{let J=m5.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,m5.deferred)();try{if($=(0,Xl6.resolve)($),!(0,$58.existsSync)($))Z.reject(Error(`${$} doesn't exist`));(0,$58.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,m5.extend)(Q,this.options.tls,X)}catch(X){return Promise.reject(new m5.errors.ConnectionError(X.message,{cause:X}))}let Y=(0,m5.deferred)();try{let X=(0,DU1.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 m5.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,m5.extend)(Z,this.options.tls,Y)}catch(Y){return Promise.reject(new m5.errors.ConnectionError(Y.message,{cause:Y}))}let Q=(0,m5.deferred)();try{let Y=(0,DU1.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 m5.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,m5.render)($[Z])}`);yield $[Z]}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,m5.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 DU1.TLSSocket}_send($){if(this.isClosed||this.socket===void 0)return Promise.resolve();if(this.options.debug)console.info(`< ${(0,m5.render)($)}`);let Z=(0,m5.deferred)();try{this.socket.write($,(Q)=>{if(Q){if(this.options.debug)console.error(`!!! ${(0,m5.render)($)}: ${Q}`);return Z.reject(Q)}return Z.resolve()})}catch(Q){if(this.options.debug)console.error(`!!! ${(0,m5.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}}pU.NodeTransport=Z58;function Kl6($){let Z=(0,m5.deferred)();return Jl6.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 W58=b((G58)=>{Object.defineProperty(G58,"__esModule",{value:!0});G58.connect=Hl6;var Y58=Q58(),X58=J40(),J58=J40();function Hl6($={}){if((0,J58.hasWsProtocol)($))return Promise.reject(J58.errors.InvalidArgumentError.format("servers","node client doesn't support websockets, use the 'wsconnect' function instead"));return(0,X58.setTransportFactory)({factory:()=>{return new Y58.NodeTransport},dnsResolveFn:Y58.nodeResolveHost}),X58.NatsConnectionImpl.connect($)}});var K58=b((gO)=>{var Ul6=gO&&gO.__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]}),Nl6=gO&&gO.__exportStar||function($,Z){for(var Q in $)if(Q!=="default"&&!Object.prototype.hasOwnProperty.call(Z,Q))Ul6(Z,$,Q)};Object.defineProperty(gO,"__esModule",{value:!0});gO.connect=void 0;var Bl6=W58();Object.defineProperty(gO,"connect",{enumerable:!0,get:function(){return Bl6.connect}});Nl6(J40(),gO)});function N58($){let Z=$?.connectFn??wl6,Q=null,Y=null,X=!1,J=!1,G=!1,W=[];function K(){return Q!==null&&!Q.isClosed()&&!Q.isDraining()&&!G}function H(){console.log(`[NatsProvider] fireReady: ${W.length} callbacks`);for(let N of W)try{N()}catch{}}function F(N){(async()=>{for await(let B of N.status())if(B.type==="disconnect")console.log("[NatsProvider] Disconnected"),G=!0;else if(B.type==="reconnect")console.log("[NatsProvider] Reconnected, re-firing ready callbacks"),G=!1,Y=null,H()})().catch(()=>{})}async function U(N,B){let O=0;while(!J)try{Q=await Z({servers:N,timeout:Ll6,reconnect:!0,maxReconnectAttempts:-1,...B?{authenticator:B}:{}}),console.log(`[NatsProvider] Connected to ${Q.getServer()} after ${O} attempt(s)`),Y=null,G=!1,F(Q),H();return}catch{O++;let L=QQ(Dl6,Ol6,O-1,2,0.5);await i$(L)}}return{init(N,B){if(X)return;X=!0,J=!1;let O=B?.creds?H58.credsAuthenticator(new TextEncoder().encode(B.creds)):void 0;U(N,O).catch(()=>{})},isConnected(){return K()},getConnection(){return K()?Q:null},getJetStream(){if(!K())return null;if(!Y)Y=U58.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 wl6($){return F58.connect($)}var H58,F58,U58,Ol6=100,Dl6=3000,Ll6=3000;var B58=D(()=>{D8();H58=C($p(),1),F58=C(K58(),1),U58=C(GN(),1)});function $S0($){let Z=$?.ttlMs??60000,Q=$?.maxSize??1e4,Y=$?.updateRecencyOnGet??!1,X=new Map;function J(){if(X.size<=Q)return;let G=Date.now();for(let[W,K]of X)if(K.expiresAt<=G)X.delete(W);while(X.size>Q){let W=X.keys().next().value;if(W===void 0)break;X.delete(W)}}return{get(G){let W=X.get(G);if(!W)return;if(W.expiresAt<=Date.now()){X.delete(G);return}if(Y)X.delete(G),X.set(G,W);return W.value},set(G,W){X.delete(G),X.set(G,{value:W,expiresAt:Date.now()+Z}),J()},delete(G){X.delete(G)},clear(){X.clear()},size(){return X.size}}}function ZS0($,Z){return`${$}.${Z}`}class LU1{cache;constructor($){this.cache=$S0({ttlMs:$?.ttlMs??jl6,maxSize:$?.maxSize??El6})}async get($,Z){return this.cache.get(ZS0($,Z))??null}async set($,Z,Q){this.cache.set(ZS0($,Z),Q)}async invalidate($,Z){this.cache.delete(ZS0($,Z)),this.cache.delete(ZS0($,`${Z}:decisions`))}teardown(){this.cache.clear()}}var jl6=600000,El6=5000;var O58=()=>{};function QS0($,Z){return`${$}:${Z}`}function wU1($){let Z=$S0({ttlMs:$?.ttlMs??zl6,maxSize:$?.maxSize??Pl6}),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(D58,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(QS0(K,H))},set(K,H,F){Z.set(QS0(K,H),F)},invalidate(K,H){Z.delete(QS0(K,H)),W(K,H)},start(){if(G)return;let K=Q?.();if(!K)return;G=K.subscribe(D58),(async()=>{for await(let H of G)try{let F=JSON.parse(J.decode(H.data));if(F.originId===Y)continue;Z.delete(QS0(F.organizationId,F.keyId))}catch{}})().catch(console.error)},teardown(){G?.unsubscribe(),G=null,Z.clear()}}}var D58="studio.ai-provider-keys.invalidate",zl6=30000,Pl6=5000;var L58=()=>{};class jU1{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 w58=($)=>{let Z;return()=>Z??=$()},EU1,zU1;var j58=D(()=>{C6();EU1=w58(()=>z$.createHistogram("decopilot.stream.encode_ms",{description:"Per-chunk JSON.stringify+encode time for decopilot stream",unit:"ms"})),zU1=w58(()=>z$.createCounter("decopilot.stream.published_chunks",{description:"Logical decopilot stream chunks published to JetStream",unit:"{chunks}"}))});function Vl6($=P58){return{name:EU,subjects:[`${_Z1}.>`],storage:MH.StorageType.File,max_age:Rl6,max_bytes:Ml6,max_msgs_per_subject:Il6,discard:MH.DiscardPolicy.Old,retention:MH.RetentionPolicy.Limits,duplicate_window:ql6,num_replicas:$}}class A58{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 E58($){let Z=z58.headers();for(let[Q,Y]of Object.entries($))Z.set(Q,Y);return Z}function _l6($,Z){let Q=0;return{publish(Y,X,J,G){Y.publish(X,J,G?{headers:G}:void 0).catch((W)=>{if(Q++,Tl6().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 vl6($,Z){return $.info?.cluster?Z:1}function bl6($){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 PU1{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=Vl6(X);try{await Y.streams.info(EU),await Y.streams.update(EU,J)}catch(G){if(G instanceof Error&&G.message.includes("stream not found"))await Y.streams.add(J),await Y.streams.update(EU,J);else if(G instanceof Error&&/can ?not change.*storage|storage type/i.test(G.message))await Y.streams.delete(EU),await Y.streams.add(J);else throw G}},Q=await g8(async()=>{let Y=this.options.getJetStreamManager?await this.options.getJetStreamManager():await MH.jetstreamManager($),X=vl6($,P58);try{await Z(Y,X)}catch(J){if(X<=1||!bl6(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:bm});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=_l6(Z,Y),G=!1,W=()=>{if(G)return;G=!0;let H=wC$(Z);X.publish(H.subject,H.data).catch(()=>{})};Q.addEventListener("abort",W,{once:!0});let K=(H)=>{let F=performance.now(),U=bZ1(H,{runId:Z}),N=performance.now()-F;EU1().record(N),zU1().add(1,{"org.id":Y??"unknown"}),Cl6?.record(N,U.reduce((B,O)=>B+O.data.length,0));for(let B of U)J.publish(X,B.subject,B.data,B.headers?E58(B.headers):void 0)};return(async()=>{let H=$.getReader(),F=0,U=0,N;try{while(!0){let{done:B,value:O}=await H.read();if(B)break;if(K(O),U++,++F>=64)F=0,await new Promise((L)=>setImmediate(L))}}catch(B){N=B,console.warn(`[Decopilot] stream pump error for thread ${Z}:`,B?.message??B)}finally{if(H.releaseLock(),W(),Sl6)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 g8(()=>$.publish(Z.subject,Z.data,{...Z.headers?{headers:E58(Z.headers)}:{},...Z.msgId?{msgID:Z.msgId}:{}}),{maxAttempts:6,minTimeout:250,maxTimeout:5000,jitter:0.5,isRetriable:bm}),!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=bZ1(Z,{runId:$,dedup:Q});EU1().record(performance.now()-X),zU1().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=LC$({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"?MH.DeliverPolicy.New:MH.DeliverPolicy.All,J=Q?.closeOnDone??!1,G=yj($),W;try{W=await g8(async()=>{return(await Y.consumers.get(EU,{filter_subjects:G,deliver_policy:X})).consume()},{maxAttempts:6,minTimeout:250,maxTimeout:5000,jitter:0.5,isRetriable:bm})}catch(L){return console.warn("[Decopilot] JetStream tail unavailable (non-critical):",L?.message??L),null}let F=QR0({messages:async function*(){try{for await(let L of W)yield{subject:L.subject,data:L.data,headers:L.headers}}finally{W.stop()}}(),onCancel:()=>W.stop()}).pipeThrough(aT0()).pipeThrough(eT0()).getReader(),U=!1,N=()=>{if(U)return;U=!0;try{F.releaseLock()}catch{}},B=!1,O=()=>{if(B)return;B=!0,W.stop(),F.cancel().catch(()=>{}),N()};return Z?.addEventListener("abort",O,{once:!0}),new ReadableStream({async pull(L){for(;;){let{done:w,value:j}=await F.read();if(w){O(),L.close();return}let E=j;if(E.kind==="done"){if(J){O(),L.close();return}continue}L.enqueue(E.chunk);return}},cancel(){O()}})}purge($){if(!this.jsm)return;this.jsm.streams.purge(EU,{filter:yj($)}).catch(()=>{})}teardown(){this.js=null,this.jsm=null}}var MH,z58,Al6=($)=>{let Z;return()=>Z??=$()},Tl6,Rl6=86400000000000,ql6=120000000000,Ml6=4294967296,P58,Il6=500000,kl6,Sl6,Cl6;var T58=D(()=>{D8();xZ1();YR0();$R0();C6();j58();MH=C(GN(),1),z58=C($p(),1),Tl6=Al6(()=>z$.createCounter("decopilot.stream.publish_errors",{description:"Number of JetStream publish failures for decopilot stream chunks",unit:"{errors}"})),P58=Math.max(1,Number(process.env.DECOPILOT_STREAM_REPLICAS??3)||3);kl6=process.env.STREAM_ENCODE_TRACE==="1",Sl6=process.env.DECOPILOT_STREAM_TRACE==="1";Cl6=kl6?new A58:null});function YS0($,Z,Q,Y){if(!Y)return!1;return $.emit(Z,nH(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 R58=D(()=>{e8()});class AU1{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 xl6($,Z){let Q=$.startsWith("thread:")?YH($):$;return[...new Set([Z,Q].filter((Y)=>!!Y))]}async function TU1($,Z){let Q=Z.organizationId;try{let Y=await $.storage.taskBoard.linkedThreadIds(Z.id,Q);for(let X of Y){let J=await KU($,X);if(!J?.owner||!J?.name)continue;let G=await $.storage.threads.get(X),W=await hc($,{threadId:X,runBranch:G?.branch}),K=xl6(W,await AA0($,X)),H=await Pe($,Q,s11(J)).catch(()=>null);if(!H){console.warn(`[task-board] no credential for ${J.owner}/${J.name} \u2014 `+`cannot look up ${Z.id}'s change request by branch`);continue}for(let F of K){let U=await H.readForBranch(F).catch(()=>null);if(!U)continue;return await $.storage.taskBoard.linkPr({taskBoardItemId:Z.id,organizationId:Q,url:U.url,prNumber:U.number,repo:H.repo}),await $.storage.taskBoard.openReviewCycleIfInProgress(Z.id,Q),await aG(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 q58=D(()=>{iZ();jW();z7()});async function M58($,Z,Q){let Y=Z.organizationId;if(!VX(Z))return!1;if(!sx(Q))return!1;if(await $.storage.taskBoard.hasHumanRejectedDone(Z.id,Y))return!1;let X=await $.storage.organizationSettings.get(Y),J=oF(X?.flags),G=await $.storage.taskBoard.update(Z.id,Y,{status:J},Z.updatedBy);return await o6($,{taskBoardItemId:Z.id,action:"status_changed",actorId:null,data:{from:Z.status,to:J,reason:"pr_merged"}}),E8(Y,G),console.log(`[task-board-review-sweeper] ${Z.id}: linked PR already merged \u2014 moved to ${J}`),!0}var I58=D(()=>{C4();_Y();Em();WH();V9()});function cl6($){return $ instanceof zX}function V58($,Z){return Z-$>=ul6}class RU1{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??fl6;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??gl6,Q=this.options.itemIntervalMs??yl6,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()-A51),l91);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()-ll6));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 g91(this.taskBoard,X,Y),await h91(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!==T$.progress||VX(W)||W.assigneeId!==j8)continue;let K=await this.contextFactory(J,W.assignedBy??W.createdBy);if(!K)continue;if(await TU1(K,W)){if(await this.taskBoard.clearSweepBudget(X,J),await this.reconcileItem(X,J,Z))Q++;continue}if(!V58(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.advanceToReviewIfInProgress(X,J,W.updatedBy);if(!F)continue;await this.taskBoard.recordActivity({taskBoardItemId:X,action:"status_changed",actorId:null,data:{from:T$.progress,to:T$.review,reason:H}}).catch(()=>{}),E8(J,F),await KH(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!==T$.progress||G.assigneeId!==j8)continue;let W=await this.contextFactory(X,G.assignedBy??G.createdBy);if(!W)continue;await HH(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),cl6(G)){await this.returnToTodo(Y,X,G instanceof Error?G.message:String(G));continue}await this.taskBoard.scheduleRunRetry(Y,X,J,new Date(Date.now()+hl6)).catch((W)=>console.error(`[task-board-review-sweeper] re-arming ${Y} failed`,W))}return Z}async returnToTodo($,Z,Q){try{let Y=await this.taskBoard.getById($,Z);if(!Y||Y.status!==T$.progress)return;let X=await this.taskBoard.returnToTodoAfterFailure($,Z,Y.updatedBy);if(!X)return;await this.taskBoard.recordActivity({taskBoardItemId:$,action:"status_changed",actorId:null,data:{from:"in_progress",to:"todo",reason:Q}}).catch(()=>{}),E8(Z,X)}catch(Y){console.error(`[task-board-review-sweeper] returning ${$} to todo failed`,Y)}}async handOffReviewWithoutPr($,Z){let Q=await this.taskBoard.listActivity(Z.id,Z.organizationId);if(!V58(SB(Q,Z.reviewCycleStartedAt),Date.now()))return;await KH($,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(!VX(Y))return!1;let X=Y.assigneeId===j8,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 TU1(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 Am(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 M58(G,Y,W))return!0;if(await P_$(G,Y))return!0;if(await this.resolveConflictFromSweep(G,Y,W))return!0;if(!X)return!1;if(!b91(W))return!1;return await zm(G,Y,{previewMatchesHead:x91(W)}),!0}async resolveConflictFromSweep($,Z,Q){let Y=Q.find((X)=>X.state!=="closed"&&X.conflict===!0);if(!Y)return!1;return await vj($,Z.organizationId,Z,{pr:{number:Y.number,url:Y.url},conflict:!0}).catch((X)=>{return console.error("[task-board-review-sweeper] conflict resolve failed",X),!1})}dispose(){if(this.timer)clearInterval(this.timer),this.timer=null}}var fl6=60000,yl6=300000,gl6=50,hl6=60000,ul6=900000,ll6=120000;var k58=D(()=>{C4();OT0();q58();wU();S10();WH();I58();V9();FW();c91();z7();Q10();Pm()});import{readdir as ml6,rm as XS0}from"fs/promises";import{join as JS0}from"path";async function GS0($){let Z=new Date;Z.setUTCDate(Z.getUTCDate()-dl6),Z.setUTCHours(0,0,0,0);let Q=0;try{let Y=await Dy($);for(let X of Y)if(/^\d{4}$/.test(X))Q+=await S58($,X,Z);else if(!X.startsWith(".")){let J=JS0($,X),G=await Dy(J);for(let K of G){if(!/^\d{4}$/.test(K))continue;Q+=await S58(J,K,Z)}if((await Dy(J)).length===0)await XS0(J,{recursive:!0,force:!0})}}catch(Y){console.warn("monitoring retention cleanup failed:",Y)}return Q}async function S58($,Z,Q){let Y=0,X=JS0($,Z),J=await Dy(X);for(let W of J){if(!/^\d{2}$/.test(W))continue;let K=JS0(X,W),H=await Dy(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=JS0(K,U);await XS0(B,{recursive:!0,force:!0}),Y++}}if((await Dy(K)).length===0)await XS0(K,{recursive:!0,force:!0})}if((await Dy(X)).length===0)await XS0(X,{recursive:!0,force:!0});return Y}async function Dy($){try{return(await ml6($)).filter((Q)=>!Q.startsWith("."))}catch{return[]}}var dl6=30;var qU1=()=>{};import{DBOS as MU1,SchedulerMode as il6}from"@dbos-inc/dbos-sdk";async function nl6(){let $=[uW(),Ry(),eU()],Z=0;for(let Q of $)try{Z+=await GS0(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 tl6($,Z){await MU1.runStep(()=>nl6(),{name:"monitoringRetention"})}function _58(){if(C58)return;C58=!0;let $=MU1.registerWorkflow(tl6,{name:"monitoringRetentionWorkflow"});MU1.registerScheduled($,{name:"monitoringRetentionWorkflow",crontab:pl6,mode:il6.ExactlyOncePerIntervalWhenActive})}var pl6="23 4 * * *",C58=!1;var v58=D(()=>{D3();qU1()});function b58($){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 vQ.create();X.auth.user={id:Q,role:Y.role},X.organization={id:Y.orgId,slug:Y.orgSlug,name:Y.orgName};let J=await kA($.db,Z,Y.role);return X.boundAuth=KK1({auth:X.authInstance,headers:new Headers,role:Y.role,permissions:J,userId:Q}),X.access=new OP(Q,void 0,X.boundAuth,Y.role,"self"),_j(X,{id:Y.orgId,slug:Y.orgSlug}),X}}var x58=D(()=>{BK();pF()});function ol6(){return[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}]}function rl6(){return{services:ol6(),migrationsStatus:"pending",serverUrl:null,logs:[]}}function al6(){for(let $ of sl6)$()}function f58($){let Z=[...IU1.logs,$];IU1={...IU1,logs:Z.length>500?Z.slice(-500):Z},al6()}function VU1(){return el6}var IU1,sl6,el6=!1;var kU1=D(()=>{IU1=rl6(),sl6=new Set});import{EventEmitter as $c6}from"events";var SU1;var y58=D(()=>{kU1();SU1=new $c6;SU1.on("request",($)=>{f58($)})});function g58(){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=qi(N.params.name),O=N.params.arguments||{},L=Object.keys(O).map((j)=>qi(j)),w=L.length>0?L.slice(0,3).join(",")+(L.length>3?"\u2026":""):"";J=`${Z9.tool}${B}${Z9.dim}(${w})${Z9.reset}`}else if(N.method)J=`${Z9.dim}${qi(N.method)}${Z9.reset}`}}catch{}}let W=qi(X);if(X.startsWith("/mcp/conn_")){let F=X.split("/")[2]??"";W=`/mcp/${Z9.mcp}${qi(F.slice(0,12))}\u2026${Z9.reset}`}else if(X==="/mcp")W=`${Z9.mcp}/mcp${Z9.reset}`;else if(X==="/mcp/registry")W=`${Z9.mcp}/mcp/registry${Z9.reset}`;let K=Qc6(Y),H=G?"\u25C0":"\u2190";if(!VU1())console.log(`${Z9.dim}${H}${Z9.reset} ${K}${Y}${Z9.reset} ${W}${J?` ${J}`:""}`);try{await Z()}finally{let F=Date.now()-Q,U=$.res.status,N=Zc6(U),B=F<1000?`${F}ms`:`${(F/1000).toFixed(1)}s`,O=G?"\u25B6":"\u2192";if(!VU1())console.log(`${Z9.dim}${O}${Z9.reset} ${K}${Y}${Z9.reset} ${W}${J?` ${J}`:""} ${N}${U}${Z9.reset} ${Z9.duration}${B}${Z9.reset}`);SU1.emit("request",{method:Y,path:qi(X),status:U,duration:F,timestamp:new Date})}}}var Z9,Zc6=($)=>{if($>=500)return Z9.serverError;if($>=400)return Z9.clientError;if($>=300)return Z9.redirect;return Z9.ok},Qc6=($)=>{return Z9[$]||Z9.reset},qi=($)=>{return $.replace(/\r/g,"").replace(/\n/g,"").replace(/\x1b\[[0-9;]*m/g,"").replace(/[\x00-\x1f\x7f-\x9f]/g,"")};var h58=D(()=>{kU1();y58();Z9={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 m58}from"crypto";import{mkdir as Yc6,readdir as Xc6,rm as u58,stat as d58}from"fs/promises";import{join as _U1,relative as Jc6}from"path";import{z as s$}from"zod";function p58($){let Z=$.replace(/[^a-zA-Z0-9_-]/g,"_");return _U1(Gc6,Z)}function n58($){return $.replace(/^\/+/,"").replace(/\.\./g,"")}function CU1($,Z){let Q=p58($),Y=n58(Z);return _U1(Q,Y)}function Wc6($,Z,Q,Y){let X=E0().encryptionKey||"dev-secret",J=`${$}:${Z}:${Q}:${Y}`;return m58("sha256",X).update(J).digest("hex")}function c58($,Z,Q,Y,X){let J=Math.floor(Date.now()/1000)+Y,G=Wc6(Z,Q,J,X),W=new URL(`/api/dev-assets/${Z}/${n58(Q)}`,$);return W.searchParams.set("expires",J.toString()),W.searchParams.set("signature",G),W.searchParams.set("method",X),W.toString()}function t58($,Z,Q){let Y=`${$}:${Z.getTime()}:${Q}`;return`"${m58("md5","etag").update(Y).digest("hex")}"`}async function o58($,Z,Q,Y,X){try{let J=await Xc6($,{withFileTypes:!0});for(let G of J){let W=_U1($,G.name),H=Jc6(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 o58(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 d58(W);X.objects.push({key:H,size:F.size,lastModified:F.mtime.toISOString(),etag:t58(W,F.mtime,F.size)})}catch{}}}}catch{}}function r58($,Z){let Y=K0($).id;return[{name:"LIST_OBJECTS",description:"List objects in the local assets directory with pagination support",inputSchema:s$.object({prefix:s$.string().optional(),maxKeys:s$.number().optional().default(1000),continuationToken:s$.string().optional(),delimiter:s$.string().optional()}),outputSchema:s$.object({objects:s$.array(s$.object({key:s$.string(),size:s$.number(),lastModified:s$.string(),etag:s$.string()})),nextContinuationToken:s$.string().optional(),isTruncated:s$.boolean(),commonPrefixes:s$.array(s$.string()).optional()}),handler:async(X)=>{let J=X,G=J.prefix||"",W=J.maxKeys??1000,K=J.delimiter,H=J.continuationToken,F=p58(Y);await Yc6(F,{recursive:!0});let U={objects:[],commonPrefixes:new Set};await o58(F,F,G,K,U),U.objects.sort((w,j)=>w.key.localeCompare(j.key));let N=0;if(H){if(N=U.objects.findIndex((w)=>w.key>H),N===-1)N=U.objects.length}let B=U.objects.slice(N,N+W),O=N+W<U.objects.length,L=O?B[B.length-1]?.key:void 0;return{objects:B,isTruncated:O,nextContinuationToken:L,commonPrefixes:Array.from(U.commonPrefixes).sort()}}},{name:"GET_OBJECT_METADATA",description:"Get metadata for a file in the local assets directory",inputSchema:s$.object({key:s$.string()}),outputSchema:s$.object({contentType:s$.string().optional(),contentLength:s$.number(),lastModified:s$.string(),etag:s$.string(),metadata:s$.record(s$.string(),s$.string()).optional()}),handler:async(X)=>{let J=X,G=CU1(Y,J.key),W=await d58(G);return{contentType:JH1(J.key),contentLength:W.size,lastModified:W.mtime.toISOString(),etag:t58(G,W.mtime,W.size)}}},{name:"GET_PRESIGNED_URL",description:"Generate a presigned URL for downloading a file from local storage",inputSchema:s$.object({key:s$.string(),expiresIn:s$.number().optional()}),outputSchema:s$.object({url:s$.string(),expiresIn:s$.number()}),handler:async(X)=>{let J=X,G=zO(J.expiresIn,l58);return{url:c58(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:s$.object({key:s$.string(),expiresIn:s$.number().optional(),contentType:s$.string().optional()}),outputSchema:s$.object({url:s$.string(),expiresIn:s$.number()}),handler:async(X)=>{let J=X,G=zO(J.expiresIn,l58);return{url:c58(Z,Y,J.key,G,"PUT"),expiresIn:G}}},{name:"DELETE_OBJECT",description:"Delete a single file from local storage",inputSchema:s$.object({key:s$.string()}),outputSchema:s$.object({success:s$.boolean(),key:s$.string()}),handler:async(X)=>{let J=X,G=CU1(Y,J.key);try{return await u58(G),{success:!0,key:J.key}}catch{return{success:!1,key:J.key}}}},{name:"DELETE_OBJECTS",description:"Delete multiple files from local storage",inputSchema:s$.object({keys:s$.array(s$.string()).max(1000)}),outputSchema:s$.object({deleted:s$.array(s$.string()),errors:s$.array(s$.object({key:s$.string(),message:s$.string()}))}),handler:async(X)=>{let J=X,G=[],W=[];return await Promise.all(J.keys.map(async(K)=>{let H=CU1(Y,K);try{await u58(H),G.push(K)}catch(F){W.push({key:K,message:F instanceof Error?F.message:"Unknown error"})}})),{deleted:G,errors:W}}}]}async function vU1($,Z,Q){let Y=r58(Z,Q),X=new IL({name:"dev-assets-mcp",version:"1.0.0"},{capabilities:{tools:{}},jsonSchemaValidator:PZ});for(let G of Y){let W="shape"in G.inputSchema?G.inputSchema.shape:s$.object({}).shape,K=G.outputSchema&&"shape"in G.outputSchema?G.outputSchema.shape:s$.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 Y3({enableJsonResponse:$.headers.get("Accept")?.includes("application/json")??!1});return await X.connect(J),MW(X,J,$,"mcp:dev-assets")}async function s58($,Z,Q,Y){let J=r58(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 Gc6="./data/assets",l58=3600,i58,a58;var e58=D(()=>{F$();lm();G8();mY0();um();aX();PO();tV0();i58=new Q1;i58.all("/",async($)=>{let Z=$.get("studioContext"),Q=new URL($.req.url),Y=`${Q.protocol}//${Q.host}`;return vU1($.req.raw,Z,Y)});a58=i58});var $98={};M6($98,{mountDevRoutes:()=>Kc6});function Kc6($,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 vU1(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 s58(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",a58);let Q=new Q1;Q.use("*",RH({mountPath:"/api/dev-assets"})),Q.route("/",nV0({orgFromPath:!1})),$.route("/api/dev-assets",Q)}var Z98=D(()=>{G8();aK1();tV0();e58()});var U98={};M6(U98,{watchHandler:()=>F98,resolveCorsOrigin:()=>K98,isSsoExemptPath:()=>G98,isAllowedOAuthRedirectUri:()=>H98,createApp:()=>jc6});import{readFileSync as Hc6}from"fs";import{PrometheusSerializer as Fc6}from"@opentelemetry/exporter-prometheus";import{DBOS as hO}from"@dbos-inc/dbos-sdk";import{oAuthDiscoveryMetadata as Bc6,oAuthProtectedResourceMetadata as Oc6}from"better-auth/plugins";async function Uc6($){let Z=$.connect(),Q;try{Q=await Promise.race([Z,Y98(Q98)])}catch{return Z.then((Y)=>Y.release(!0)).catch(()=>{}),!1}try{return await Promise.race([Q.query("SELECT 1"),Y98(Q98)]),Q.release(),!0}catch{return Q.release(!0),!1}}function Y98($){return new Promise((Z,Q)=>setTimeout(()=>Q(Error("pg health-check timeout")),$))}function G98($){return $.startsWith("/api/org-sso/")||/^\/api\/[^/]+\/sso\//.test($)||$.startsWith("/api/auth/")||$.startsWith("/api/tools/management")||$.startsWith("/oauth-proxy/")||/^\/api\/[^/]+\/oauth-proxy\//.test($)||$.startsWith(`${vV0}/`)||$.startsWith(`${IV0}/`)}function W98($){return $==="local.studio.decocms.com"}function K98($,{baseUrl:Z,requestOrigin:Q}){let Y;try{Y=new URL($).hostname}catch{return null}if(Y==="localhost"||Y==="127.0.0.1")return $;if(W98(Y))return $;let X=Z??Q;try{if(new URL(X).origin===$)return $}catch{}return null}function H98($,Z){return $.origin===new URL(Z).origin||$.hostname==="localhost"||W98($.hostname)}async function jc6($={}){let Z=$.database??P8(),Q=!1;e5.stop().catch((Q0)=>{console.error("[SSEHub] Error stopping previous broadcast (HMR cleanup):",Q0)});let Y,X,J,G,W=new LU1,K,H,F,U=null;if($.disableNats)K=wU1(),Y={get:async()=>null,set:async()=>{},invalidate:async()=>{},teardown:()=>{}},X=null,J=null,G=new h10,H={start:async()=>{},broadcast:()=>{},stop:async()=>{}},F={init:async()=>{},pump:(Q0)=>{return(async()=>{let w0=Q0.getReader();try{while(!0){let{done:e}=await w0.read();if(e)break}}catch{}finally{w0.releaseLock()}})()},publishRawChunk:async()=>!1,publishDone:async()=>!1,createTailStream:async()=>null,purge:()=>{},teardown:()=>{}};else{U=N58();let Q0=E0().natsCredsPath,w0;if(Q0)try{w0=Hc6(Q0,"utf8")}catch(f0){console.error(`[app] failed to read NATS_CREDS at ${Q0}; connecting anonymously`,f0)}U.init(E0().natsUrls,w0?{creds:w0}:void 0);let e=me0()?new Me0({getJetStream:()=>U.getJetStream()}):null;e?.init().catch(()=>{}),Y=e;let i=new g41({getJetStream:()=>U.getJetStream()});i.init().catch(()=>{}),X=i;let m0=new ex(V91,{getJetStream:()=>U.getJetStream()}),I0=new ex(Y10,{getJetStream:()=>U.getJetStream()});m0.init().catch(()=>{}),I0.init().catch(()=>{}),J={reads:m0,cards:I0};let t0=new LQ1({getJetStream:()=>U.getJetStream()});t0.init().catch(()=>{}),G=t0,K=wU1({getConnection:()=>U.getConnection()}),H=new jU1({getConnection:()=>U.getConnection()}),F=new PU1({getConnection:()=>U.getConnection(),getJetStream:()=>U.getJetStream()}),Ha$(U),U.onReady(()=>{e?.init().catch((f0)=>{console.error("[McpListCache] Deferred init failed:",f0)}),i.init().catch((f0)=>{console.error("[SkillCatalogCache] Deferred init failed:",f0)}),m0.init().catch((f0)=>{console.error("[PrReadCache] Deferred init failed:",f0)}),I0.init().catch((f0)=>{console.error("[PrCardCache] Deferred init failed:",f0)}),t0.init().catch((f0)=>{console.error("[ConnectionCircuitStore] Deferred init failed:",f0)}),K.start(),gK$(()=>U.getConnection()),F.init().catch((f0)=>{console.warn("[Decopilot] StreamBuffer init failed (late-join disabled):",f0)})})}if(PE)await PE();Ie0(Y),u41(X),k91(J),wQ1(G);let B={storage:new Fh(Z.db),sseHub:e5,onThreadFinished:async(Q0,w0)=>Rm(new sG(Z.db),Q0,w0,new DG(Z.db))},O=new lZ1(B),L=new J80(Z.db),w=new AU1(L);w.start(),E_$(H),H.start((Q0)=>{lT0(Q0),O.execute({type:"CANCEL",taskId:Q0}).catch((w0)=>{console.error("[Decopilot] CancelBroadcast execute failed:",w0)})}).catch((Q0)=>{console.error("[Decopilot] CancelBroadcast start failed:",Q0)}),U?.onReady(()=>{H.start().catch((Q0)=>{console.error("[CancelBroadcast] Deferred start failed:",Q0)})});let j=()=>U?.getConnection()??null;tK1(j),U?.onReady(()=>tK1(j)),oQ1(j),U?.onReady(()=>oQ1(j)),F.init().catch((Q0)=>{console.warn("[Decopilot] StreamBuffer init failed, attach/late-join disabled:",Q0)}),PE=async()=>{await O.stopAll(),O.dispose(),w.dispose(),H.stop().catch(()=>{}),qe$(),F.teardown(),Y?.teardown(),X?.teardown(),J?.reads.teardown(),J?.cards.teardown(),W.teardown(),K.teardown(),hK$(),G.teardown(),Ie0(null),u41(null),k91(null),wQ1(null)};let E=new Q1;if(E.use("*",BQ1({enabled:(Q0)=>nd(Q0,"debug")==="1"})),E.use("*",VS0),E.use("/*",Xa$({origin:(Q0,w0)=>K98(Q0,{baseUrl:E0().baseUrl,requestOrigin:new URL(w0.req.url).origin}),credentials:!0,allowMethods:["GET","POST","PUT","DELETE","OPTIONS"],allowHeaders:["Content-Type","Authorization","mcp-protocol-version"],exposeHeaders:["WWW-Authenticate"]})),E.use("*",async(Q0,w0)=>{if(await w0(),Q0.req.path.includes("/files/"))return;if(Q0.req.path.includes("/fs/")&&Q0.req.path.endsWith("/read"))return;Q0.header("X-Frame-Options","DENY"),Q0.header("Content-Security-Policy","frame-ancestors 'none'")}),!E0().noTui)E.use("*",g58());E.use("*",async(Q0,w0)=>{if(await w0(),xi(Q0.req.path))return;if(Q0.res.status>=500){let i=await Q0.res.clone().text();console.error(`[5xx Response] ${Q0.req.method} ${Q0.req.path} - ${Q0.res.status}:`,i)}}),E.get(mY.HEALTH,(Q0)=>{if(Q)return Q0.json({status:"shutting_down"},503);return Q0.json({status:"ok"})}),E.get(mY.HEALTH_LIVE,(Q0)=>{return Q0.json({status:"ok"})}),E.get(mY.HEALTH_READY,async(Q0)=>{if(Q)return Q0.json({status:"shutting_down"},503);let w0={};if(w0.postgres={status:await Uc6(Z.pool)?"up":"down"},U)w0.nats=U.isConnected()?{status:"up"}:{status:"down"};else w0.nats={status:"down"};let e=w0.postgres.status==="up",i=e?200:503;return Q0.json({status:e?"ready":"not_ready",services:w0},i)}),E.get(mY.METRICS,async(Q0)=>{try{let w0=await _S0.collect(),e=Nc6.serialize(w0.resourceMetrics);return Q0.text(e,200,{"Content-Type":"text/plain; version=0.0.4; charset=utf-8"})}catch(w0){return console.error("Failed to collect metrics:",w0),Q0.text("# Error collecting metrics",500)}});let z=1800000;E.get(`${mY.DBOS_QUEUE_DEPTH_PREFIX}:queueName`,async(Q0)=>{let w0=Q0.req.param("queueName");if(!Dc6.has(w0))return Q0.json({error:`Unknown queue: ${w0}`},404);let[e,i]=await Promise.all([hO.listQueuedWorkflows({queueName:w0,status:"ENQUEUED",loadInput:!1,loadOutput:!1}),hO.listQueuedWorkflows({queueName:w0,status:"PENDING",loadInput:!1,loadOutput:!1,dequeuedAfter:new Date(Date.now()-z).toISOString()})]);return Q0.json({queue_length:e.length,in_flight:i.length})}),E.route("/api/config",z68),E.route("/api/_reports",_68),E.route("/api/_stripe",NU1),E.route("/api/_github",x68({taskBoard:()=>n,contextFactory:()=>g})),E.route("/api/_git",Zi);let T={db:Z.db,encryptionKey:E0().encryptionKey};E.route("/api/_jira",h68(T)),E.route("/api/_jira",y68(T)),E.route("/report",k68($.clientDir)),E.route("/api/auth/custom",ka$),E.route("/api/auth/desktop",va$),E.all("/api/auth/admin/*",Ue$),E.all("/api/auth/*",async(Q0)=>{return await C8.handler(Q0.req.raw)});let P=yr$();P.use("/.well-known/oauth-protected-resource/mcp/:connectionId",j80),P.use("/mcp/:connectionId/.well-known/oauth-protected-resource",j80),E.route("/",P),E.get("/.well-known/oauth-protected-resource/api/:org/mcp/:connectionId",Z80),E.route("/",cr$()),E.use("/oauth-proxy/:connectionId/*",j80),E.all("/oauth-proxy/:connectionId/*",X98);let A=async(Q0)=>{let e=await Lc6()(Q0.req.raw),i=await e.json();return Response.json(i,e)};E.use("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",j80),E.get("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",A);let q=async(Q0)=>{let e=await wc6()(Q0.req.raw),i=await e.json();return Response.json(i,e)};E.get("/.well-known/oauth-authorization-server/*/:gateway?/:connectionId?",q);let x=Ga$({ttlMs:120000}),_=await Cs$({db:Z.db,auth:C8,encryption:{key:E0().encryptionKey},observability:{tracer:tO,meter:z$},modelListCache:W,providerKeyCache:K,memberRoleCache:x});vQ.set(_),Sc1({db:Z.db,baseUrl:x5()}),_s$({db:Z.db}),fs$({db:Z.db}),ds$({db:Z.db}),c68({db:Z.db,encryptionKey:E0().encryptionKey}),rI$({db:Z.db}),rs$({db:Z.db}),EV$({db:Z.db});let V=_Q0(Z.db),y=new Bo(Z.db),g=b58({db:Z.db});HQ1({storage:V,studioContextFactory:g}),sZ1({systemDatabaseUrl:nt0(E0().databaseUrl,E0().databasePgSsl),studioContextFactory:g,deps:{runRegistry:O,cancelBroadcast:H,streamBuffer:F,sseHub:e5}}),dZ1({dispatchRunFn:HC$,studioContextFactory:g,deps:{runRegistry:O,cancelBroadcast:H,streamBuffer:F,sseHub:e5}});let l=new Fh(Z.db),n=new sG(Z.db),p=new DG(Z.db),F0=new RU1(n,g,p);if(E0().taskBoardReviewSweeperEnabled){F0.start();let Q0=PE;PE=async()=>{await Q0?.(),F0.dispose()}}SC$({getJetStream:()=>U?.getJetStream()??null,getJetStreamManager:async()=>{let Q0=U?.getConnection();return Q0?await J98.jetstreamManager(Q0):null},messageParts:l.messageParts(),resolveRun:async(Q0)=>{let w0=await Z.db.selectFrom("threads").select(["organization_id","created_by","message_storage_version","status","run_fence_token","title"]).where("id","=",Q0).executeTakeFirst();return w0?{orgId:w0.organization_id,createdBy:w0.created_by,version:w0.message_storage_version??1,status:w0.status,runFenceToken:w0.run_fence_token,title:w0.title??null}:null},completeRunIfNotCompleted:async(Q0,w0)=>{let e=await l.completeRunIfNotCompleted(Q0,w0);if(YS0(e5,w0,Q0,e),e)await Rm(n,Q0,w0,p);return e},markRunRequiresAction:async(Q0,w0)=>{let e=await l.requiresActionIfInProgress(Q0,w0);return YS0(e5,w0,Q0,e),e},markRunFailed:async(Q0,w0,e,i)=>{let m0=await l.markRunFailed(Q0,w0,e,i);if(YS0(e5,w0,Q0,m0),m0)await Rm(n,Q0,w0,p);return m0},clearSynthesizedError:async(Q0,w0)=>{await l.messageParts().replaceMessageParts(Q0,fj(Q0,w0),[])},persistTitle:(Q0,w0,e)=>l.update(Q0,w0,{title:e}),onTitleUpdated:async({runId:Q0,orgId:w0,title:e})=>{let i=await l.get(Q0,w0).catch(()=>null);e5.emit(w0,nH(Q0,i?.status??"in_progress",{title:e,virtualMcpId:i?.virtual_mcp_id??void 0,createdBy:i?.created_by,triggerId:i?.trigger_id,branch:i?.branch??null,harnessId:i?.harness_id??void 0,createdAt:i?.created_at,updatedAt:i?.updated_at}))},bumpProgress:async({runId:Q0,orgId:w0})=>{await l.bumpProgress(Q0,w0)},recordCompleted:async({runId:Q0,orgId:w0,distinctId:e,usage:i})=>{v1.capture({distinctId:e,event:"chat_message_completed",groups:{organization:w0},properties:{organization_id:w0,thread_id:Q0,transport:"projector",input_tokens:i.inputTokens,output_tokens:i.outputTokens,total_tokens:i.totalTokens}})},recordFailed:async({runId:Q0,orgId:w0,distinctId:e,reason:i,kind:m0})=>{v1.capture({distinctId:e,event:"chat_message_failed",groups:{organization:w0},properties:{organization_id:w0,thread_id:Q0,transport:"projector",error_category:m0,error_message:i}})},purgeRun:async(Q0)=>{F.purge(Q0)}}),xS$({studioContextFactory:g,systemDatabaseUrl:nt0(E0().databaseUrl,E0().databasePgSsl),streamBuffer:F}),_58(),Cc1(),bs$(),gs$(),ps$(),i68(),ZV$(),as$(),zV$();let V0=async(Q0,w0,e)=>{let i=await V.findById(Q0,w0);if(!i)throw Error("Automation not found");return NQ1({automationId:i.id,organizationId:i.organization_id,triggerId:null})},G0=new ed(V,({automation:Q0,trigger:w0,contextMessages:e,idempotencyKey:i})=>g10({automationId:Q0.id,organizationId:Q0.organization_id,triggerId:w0.id,contextMessages:e},{idempotencyKey:i})),H0=[uW(),Ry(),eU()];for(let Q0 of H0)GS0(Q0).then(()=>{}).catch((w0)=>console.error("[monitoring] Retention cleanup failed:",w0));let X0=()=>C8.api.deleteAllExpiredApiKeys().catch((Q0)=>console.error("[auth] Expired API key cleanup failed:",Q0));X0(),setInterval(X0,86400000).unref(),E.use("*",async(Q0,w0)=>{if(MS0(Q0.req.path))return w0();let e={measure:async(m0,I0)=>{qW(Q0,m0);try{return await I0()}finally{X3(Q0,m0)}}},i=await vQ.create(Q0.req.raw,{timings:e});i.automationRunner=V0,Q0.set("studioContext",i);try{await w0()}finally{let m0=i.pendingRevalidations;if(m0.length>0)Promise.race([Promise.allSettled(m0),i$(30000)]).catch((t0)=>console.error("[studio] revalidation cleanup error:",t0))}}),E.use("/api/:org/decopilot/*",od),E.use("/api/:org/v1/*",od),E.use("/api/:org/files/*",od),E.use("*",async(Q0,w0)=>{if(G98(Q0.req.path))return w0();let e=Q0.get("studioContext");if(!e?.organization?.id||!e?.auth?.user?.id)return w0();if(!(await e.storage.orgSsoConfig.getByOrgId(e.organization.id))?.enforced)return w0();if(!await e.storage.orgSsoSessions.isValid(e.auth.user.id,e.organization.id))return Q0.json({error:"SSO authentication required for this organization"},403);return w0()});let Z0=new Q1;Z0.use("*",RH({mountPath:"/api/org-sso"})),Z0.route("/",fV0()),E.route("/api/org-sso",Z0),E.get("/api/tools/management",(Q0)=>{return Q0.json({tools:Vi0,grouped:BP()})}),E.use("/mcp/*",async(Q0,w0)=>{qW(Q0,"mcp");try{return await w0()}finally{X3(Q0,"mcp")}});let Y0=async(Q0,w0)=>{let e=Q0.var.studioContext;if(!e.auth.user?.id&&!e.auth.apiKey?.id){let i=new URL(Q0.req.url),m0=Q0.req.header("x-forwarded-proto")?.split(",")[0]?.trim(),I0=m0?`${m0}://${i.host}`:i.origin;return Q0.res=new Response(null,{status:401,headers:{"WWW-Authenticate":`Bearer realm="mcp",resource_metadata="${I0}${i.pathname}/.well-known/oauth-protected-resource"`}})}return await w0()};if(E.use("/mcp/:connectionId?",Y0),E.use("/mcp/gateway/:virtualMcpId?",Y0),E.use("/mcp/virtual-mcp/:virtualMcpId?",Y0),E.use("/mcp/self",Y0),JW()){let{mountDevRoutes:Q0}=(Z98(),OS0($98));Q0(E,Y0)}let o=new Q1;o.use("*",RH({mountPath:"/mcp"})),o.route("/",vR0()),E.route("/mcp",o);let J0=new Q1;J0.use("*",RH({mountPath:"/mcp/self"})),J0.route("/",qk0()),E.route("/mcp/self",J0);let c0=new Q1;c0.use("*",RH({mountPath:"/mcp"})),c0.route("/",fR0()),E.route("/mcp",c0),E.use("/api/:org/models/*",async(Q0,w0)=>{qW(Q0,"llm_models");try{return await w0()}finally{X3(Q0,"llm_models")}});let k0=Ie$({cancelBroadcast:H,streamBuffer:F,runRegistry:O});E.route("/api",k0),E.route("/api",o68);let j1=new Q1;j1.use("*",RH({mountPath:"/api"})),j1.route("/",kk0()),E.route("/api",j1),E.route("/api",B68);let d0=new Q1;d0.use("*",RH({mountPath:"/api"})),d0.route("/",Sk0({tokenStorage:y,automationEventDispatcher:G0})),E.route("/api",d0);let L0=new Do(Z.db),j0=new Q1;j0.use("*",RH({mountPath:"/api"})),j0.route("/",lV0()),E.route("/api",j0),E.route("/api/deco-sites",le$()),E.route("/api/deco-apps",W68());let a0=new Q1;a0.use("*",RH({mountPath:"/api/deco-sites"})),a0.route("/",mV0()),E.route("/api/deco-sites",a0),E.route(vV0,Ne$()),E.route(E88,A88()),E.route("/api/_editor-resolve",D68()),E.route(xa$,fa$()),E.route(IV0,pa$());let P1=J68({kvStorage:L0,runRegistry:O,streamBuffer:F,sseHub:e5,cancelBroadcast:H,tokenStorage:y,automationEventDispatcher:G0,mountDevAssets:JW(),mcpAuth:Y0,oauthProxyHandler:X98,watchHandler:F98,betterAuthProtectedResourceHandler:A,getNatsConnection:()=>U?.getConnection()??null});return E.route("/api/:org",P1),E.notFound((Q0)=>{return Q0.json({error:"Not Found",path:Q0.req.path},404)}),E.onError(Se$),Object.assign(E,{markShuttingDown:()=>{Q=!0},shutdown:async()=>{if(console.log("[shutdown] Stopping workers..."),await Promise.allSettled([e5.stop(),PE?Promise.resolve(PE()).finally(()=>{PE=null}):Promise.resolve()]),U)await U.drain().catch((Q0)=>console.error("[shutdown] NATS drain error:",Q0));console.log("[shutdown] Flushing telemetry..."),await fX().catch((Q0)=>console.error("[shutdown] Telemetry flush error:",Q0)),console.log("[shutdown] Closing database..."),await q4$(Z).catch((Q0)=>console.error("[shutdown] Database close error:",Q0)),console.log("[shutdown] Cleanup complete.")},initDbos:async()=>{await hO.registerQueue(O3,{partitionQueue:!0,concurrency:GQ1,minPollingIntervalMs:WQ1}),await hO.registerQueue(B3,{partitionQueue:!0,concurrency:oZ1,priorityEnabled:!0}),await hO.registerQueue(sU,{workerConcurrency:E0().decopilotMaxConcurrentHostedRuns,priorityEnabled:!0}),await hO.registerQueue(aU,{workerConcurrency:E0().sandboxMaxConcurrentHostedRuns,priorityEnabled:!0}),await hO.registerQueue(pO,{partitionQueue:!0,concurrency:bS$}),await hO.registerQueue(ME,jV$),await eK1(V),await Promise.allSettled(["automations-gate","automations-global","jira-push"].map((Q0)=>hO.deleteQueue(Q0))),await KQ1(Z.pool),p9$().catch((Q0)=>{console.error("[studio-pack-backfill] failed:",Q0)}),_c1().catch((Q0)=>{console.error("[org-fs] public-sets boot sync kick failed:",Q0)})}})}var J98,Q98=5000,PE=null,X98=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 vQ.create($.req.raw),$.set("studioContext",X);let J=$.req.param("org")?X.organization?.id:void 0,G=await X.storage.connections.findById(Z,J);if(!G?.connection_url)return $.json({error:"Connection not found"},404);if(Y==="register"&&G.oauth_config?.clientId){let y=await $.req.json().catch(()=>({}));return $.json({...typeof y==="object"&&y!==null?y:{},client_id:G.oauth_config.clientId,...G.oauth_config.clientSecret?{client_secret:G.oauth_config.clientSecret}:{},client_secret_expires_at:0})}let W=await md(G.connection_url),K,H=new URL(G.connection_url),U=(typeof G.metadata?.oauthResource==="string"&&G.metadata.oauthResource.length>0?G.metadata.oauthResource:void 0)??G.connection_url;if(W.ok)K=(await W.json()).authorization_servers?.[0];if(!K)K=H.origin;let N=await Q80(K);if(!N.ok)return $.json({error:"Failed to get auth server metadata"},502);let B=await N.json(),O;if(Y==="authorize")O=B.authorization_endpoint;else if(Y==="token")O=B.token_endpoint;else if(Y==="register")O=B.registration_endpoint;if(!O)return $.json({error:`Unknown OAuth endpoint: ${Y}`},404);let L=lr$(O);if(L)return L;let w=new URL(O),j=new URL($.req.url);if(w.search=j.search,Y==="authorize"){let y=w.searchParams.get("redirect_uri");if(y){let g=E0().baseUrl??j.origin;try{if(!H98(new URL(y),g))return $.json({error:"invalid_request",error_description:"redirect_uri is not allowed"},400)}catch{return $.json({error:"invalid_request",error_description:"redirect_uri is malformed"},400)}w.searchParams.set("redirect_uri",y)}if(w.searchParams.has("resource"))w.searchParams.set("resource",U);if($a$(G.connection_url))w.searchParams.set("auto_personal","true"),w.searchParams.set("force_new","true");return $.redirect(w.toString(),302)}let E={Accept:$.req.header("Accept")||"application/json"},z=$.req.header("Content-Type");if(z)E["Content-Type"]=z;let T=$.req.header("Authorization");if(T)E.Authorization=T;let P,A=null,q=null;if($.req.method!=="GET"&&$.req.method!=="HEAD")if(Y==="token"&&z?.includes("application/x-www-form-urlencoded")){if(T?.toLowerCase().startsWith("basic "))try{let p=atob(T.slice(6).trim()),F0=p.indexOf(":");if(F0!==-1){let V0=decodeURIComponent(p.slice(0,F0)),G0=decodeURIComponent(p.slice(F0+1));A=V0||null,q=G0||null}}catch{}let y=await $.req.formData();if(y.has("resource"))y.set("resource",U);let g=y.get("client_id"),l=y.get("client_secret");if(typeof g==="string"&&g)A=g;if(typeof l==="string"&&l)q=l;let n=new URLSearchParams;for(let[p,F0]of y.entries())n.append(p,F0.toString());P=n.toString()}else if(Y==="register"&&z?.toLowerCase().includes("application/json")){let y=await X.db.selectFrom("organization").select(["id","slug","name"]).where("id","=",G.organization_id).executeTakeFirst(),g=await $.req.text(),l={};try{l=g?JSON.parse(g):{}}catch{P=g}let n=typeof l==="object"&&l!==null&&!Array.isArray(l);if(P===void 0&&!n)P=g;if(P===void 0){let p=l,F0=p.metadata&&typeof p.metadata==="object"?p.metadata:{};p.metadata={...F0,organization_id:G.organization_id,...y?.slug?{organization_slug:y.slug}:{},...y?.name?{organization_name:y.name}:{}},P=JSON.stringify(p),E["Content-Type"]="application/json"}}else P=$.req.raw.body??void 0;let x=await fetch(w.toString(),{method:$.req.method,headers:E,body:P,duplex:"half",redirect:"manual"}),_=new Headers,V=["connection","keep-alive","transfer-encoding","content-encoding","content-length"];for(let[y,g]of x.headers.entries())if(!V.includes(y.toLowerCase()))_.set(y,g);if(Y==="token"&&x.ok){let y=await x.text();try{let g=JSON.parse(y);if(typeof g.access_token==="string"&&g.access_token){let l=typeof g.expires_in==="number"?new Date(Date.now()+g.expires_in*1000):null,n=null;try{n=await dd(G.connection_url)??O}catch{n=O}let p={connectionId:Z,accessToken:g.access_token,refreshToken:typeof g.refresh_token==="string"?g.refresh_token:null,scope:typeof g.scope==="string"?g.scope:null,expiresAt:l,clientId:A,clientSecret:q,tokenEndpoint:n};await new F9(X.db,X.vault).upsert(p)}}catch(g){console.error("[oauth-proxy] failed to persist downstream token:",g)}return new Response(y,{status:x.status,statusText:x.statusText,headers:_})}return new Response(x.body,{status:x.status,statusText:x.statusText,headers:_})},F98=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&&(!DU(Y)||!await LU(Z)))return $.json({error:"forbidden"},403);let W=G?a20:Y;if(G)XO({action:"watch_all_orgs",actorUserId:Q,actorOrgId:Y,targetOrgId:"all"});let K=crypto.randomUUID();return xO($,async(H)=>{if(await H.writeSSE({event:"connected",data:JSON.stringify({listenerId:K,organizationId:Y,typePatterns:J,connectedAt:new Date().toISOString()})}),!e5.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(()=>{e5.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),e5.remove(W,K)})},30000);await new Promise((N)=>{H.onAbort(()=>{clearInterval(U),e5.remove(W,K),N()})})})},Nc6,Dc6,Lc6=()=>Oc6(C8),wc6=()=>Bc6(C8);var N98=D(()=>{D8();F$();vc1();xs$();hs$();ns$();d10();U91();es$();Q10();E9();el();e8();G8();AV0();Ja$();OQ1();hG();pF();RK1();m3();C6();U6();CK1();ba$();ya$();na$();yK1();Be$();iK1();Ve$();sK1();iK();GV0();aK1();Ce$();RV0();G68();QH1();K68();bR0();u10();O68();yR0();CF1();L68();kF1();P68();S68();v68();b68();f68();g68();u68();p68();WH1();r68();SF1();MF1();P40();B58();DJ();xA0();C91();ga();ua();EQ1();O58();L58();oK1();T58();cZ1();R58();rn();wo();YO();V9();iW1();k58();v58();LJ0();qU1();D3();$H1();QO();hZ1();LJ0();sT0();Li0();wi0();x58();Fu();h58();wi();RK1();wm();_m();cT0();J98=C(GN(),1);Nc6=new Fc6,Dc6=new Set([O3,B3,sU,aU,pO,ME])});var L98={};M6(L98,{resolveClientDir:()=>qc6,resolveAssetPathWithTraversalCheck:()=>D98,isPathWithinDirectory:()=>O98,createAssetHandler:()=>Mc6});import{resolve as G40,dirname as Ec6,join as zc6,extname as Pc6,basename as Ac6,sep as B98}from"path";function Tc6($,Z){if($===Z||Ac6($)==="index.html")return{"Cache-Control":"no-cache"};if($.includes(`${B98}assets${B98}`))return{"Cache-Control":"public, max-age=31536000, immutable"};return{}}function O98($,Z){let Q=G40(Z),Y=G40($);return Y===Q||Y.startsWith(Q+"/")}function D98({requestPath:$,clientDir:Z}){let Q=$.startsWith("/")?$.slice(1):$,Y=G40(Z,Q);if(!O98(Y,Z))return null;return Y}function qc6($,Z="../client"){let Q=new URL($),Y=Ec6(Q.pathname);return G40(Y,Z)}function Mc6($={}){let{env:Z="production",clientDir:Q=Rc6,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=D98({requestPath:W,clientDir:Q});if(!K)return null;let H=zc6(K,"index.html"),F=G40(Q,"index.html"),U=J.headers.get("accept"),B=U?.includes("text/html")||U?.includes("*/*")&&["",".html"].includes(Pc6(K))?[H,F]:[];for(let O of[K,...B])try{let L=Bun.file(O);if(await L.exists())return new Response(L,{headers:Tc6(O,F)})}catch{}if(W.includes("/assets/"))return new Response("Not Found",{status:404,headers:{"Cache-Control":"no-store"}});return null}}var Rc6="./dist/client";var w98=()=>{};var j98={};M6(j98,{tryUpgradePreviewWs:()=>vc6,tryHandlePreviewHttp:()=>_c6,previewWebSocketHandler:()=>bc6,parsePreviewBaseDomain:()=>Cc6,isPreviewWsData:()=>WS0,extractHandleFromHost:()=>bU1});function kc6($){if($.method!=="GET")return!1;return($.headers.get("accept")??"").includes("text/html")}function Sc6(){return new Response(Vc6,{status:503,headers:{"content-type":"text/html; charset=utf-8","cache-control":"no-store","retry-after":"1","access-control-allow-origin":"*"}})}function Cc6($){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 bU1($,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 _c6($,Z){let Q=bU1($.headers.get("host"),Z.baseDomain);if(!Q)return null;let Y=await Z.getRunner();if(!Y)return K40(503,"preview proxy not configured");let X=await Y.proxyPreviewRequest(Q,$);if(X.headers.get(Vx)&&kc6($))return Sc6();return X.headers.delete(Vx),X}function K40($,Z){return new Response(JSON.stringify({error:Z}),{status:$,headers:{"content-type":"application/json","access-control-allow-origin":"*"}})}function WS0($){return typeof $==="object"&&$!==null&&$.kind==="preview"}async function vc6($,Z,Q){if(($.headers.get("upgrade")??"").toLowerCase()!=="websocket")return null;let Y=bU1($.headers.get("host"),Q.baseDomain);if(!Y)return null;let X=await Q.getRunner();if(!X)return K40(503,"preview proxy not configured");let J=await X.resolvePreviewUpstreamUrl(Y);if(!J)return K40(404,"sandbox not found");let G=new URL($.url);if(G.pathname.startsWith("/_sandbox"))return K40(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 K40(426,"upgrade failed");return}function W40($,Z,Q,Y){if(Z.closed)return;Z.closed=!0;try{$.close(Q,Y)}catch{}try{Z.upstream?.close()}catch{}}var Ic6=256,Vc6='<!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>',bc6;var E98=D(()=>{j41();bc6={open($){let Z=$.data;if(!WS0(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)}`),W40($,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)=>{W40($,Z,Y.code||1000,Y.reason||"")}),Q.addEventListener("error",()=>{W40($,Z,1011,"upstream error")})},message($,Z){let Q=$.data;if(!WS0(Q))return;let Y=Q.upstream;if(Y&&Y.readyState===WebSocket.OPEN){Y.send(Z);return}if(Q.pending.length>=Ic6){W40($,Q,1011,"preview ws backlog overflow");return}Q.pending.push(Z)},close($){let Z=$.data;if(!WS0(Z))return;W40($,Z,1000,"")}}});var T98={};M6(T98,{printBanner:()=>fc6,bannerLines:()=>A98,BANNER_LINES:()=>z98,BANNER_GRADIENT:()=>P98});function xc6($){let Z=Number.parseInt($.slice(1),16);return[Z>>16&255,Z>>8&255,Z&255]}function A98($){let Z=z98.map((Q,Y)=>{let[X,J,G]=xc6(P98[Y]);return`\x1B[38;2;${X};${J};${G}m${Q}\x1B[39m`});if($!==void 0)Z.push(`\x1B[2m v${$}\x1B[22m`);return Z}function fc6($){console.log("");for(let Z of A98($))console.log(Z);console.log("")}var z98,P98;var R98=D(()=>{z98=[" \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588 ","\u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588 \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588 "," \u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2588 \u2591 \u2588\u2588\u2588 \u2591\u2591\u2591 \u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2591\u2591\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591 \u2588\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588 "," \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2591 ","\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591 "],P98=["#00ff64","#00ee5e","#00dc56","#00c84e","#00b444","#00a03c","#008832","#006e28"]});D8();var nU1="13";function tU1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:nU1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}D8();import c98 from"pg";var oU1=8314027461559302n,m98=600000,d98=500;async function rU1($,Z){let{databaseUrl:Q,lockTimeoutMs:Y=m98}=$,X=$.log??((K)=>console.log(K)),J=new c98.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",[oU1.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 i$(d98)}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)",[oU1.toString()])}catch{}await J.end().catch(()=>{})}}F$();jS0();C6();function cZ8(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function xS0($,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 vN1(){let $=cZ8();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:xS0($,"--cpu-prof-dir")??process.cwd(),name:xS0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(xS0($,"--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.'}))}gS0();var R40;function cN1(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let Q=kE();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(()=>{}),R40=setInterval(()=>void Z().catch(()=>{}),$),R40.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(R40)clearInterval(R40)}}import*as iZ8 from"bun:jsc";var{startSamplingProfiler:pZ8,samplingProfilerStackTraces:nZ8}=iZ8;function mN1(){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{pZ8()}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=nZ8()?.traces??[]}catch{}if(G>$&&W.length>0){let K=new Map;for(let F of W){let U=F.frames.find((O)=>O.sourceURL&&!/Unknown Executable/.test(O.category??""))??F.frames[0];if(!U)continue;let N=(U.sourceURL??"?").replace(/^.*\/node_modules\//,"node_modules/"),B=`${U.name??"?"} @ ${N}:${U.line??"?"}`;K.set(B,(K.get(B)??0)+1)}let H=[...K.entries()].sort((F,U)=>U[1]-F[1]).slice(0,8).map(([F,U])=>({frame:F,count:U}));console.warn(JSON.stringify({msg:"stall-stack",ts:new Date().toISOString(),lagMs:Math.round(G),samplesInWindow:W.length,top:H}))}Q=setTimeout(X,Z),Q.unref?.()};return Q=setTimeout(X,Z),Q.unref?.(),()=>{if(Q)clearTimeout(Q)}}function dN1(){vN1();let $=[cN1(),lN1(),mN1()];return()=>{for(let Z of $)Z()}}import{existsSync as dc6}from"fs";var pJ=E0();SN1();var{DBOS:H40,DBOSClient:yc6}=await import("@dbos-inc/dbos-sdk");function uU1($,Z){if(!Z)return $;let Q=new URL($);if(!Q.searchParams.has("sslmode"))Q.searchParams.set("sslmode","verify-full");return Q.toString()}var gc6=[O3,B3,sU,aU,pO,ME],hc6=pJ.dispatchRole==="worker"?gc6:pJ.dispatchRole==="api"?[]:void 0;H40.setConfig(tU1({systemDatabaseUrl:uU1(pJ.databaseUrl,pJ.databasePgSsl),poolSize:pJ.dbosPoolSize,executorID:pJ.podName,listenQueues:hc6}));var{createApp:uc6}=await Promise.resolve().then(() => (N98(),U98)),{isServerPath:lc6}=await Promise.resolve().then(() => (P40(),BN1)),{createAssetHandler:cc6,resolveClientDir:k98}=await Promise.resolve().then(() => (w98(),L98)),mc6=pJ.port,q98=k98(import.meta.url,"../client"),S98=dc6(q98)?q98:k98(import.meta.url,"../dist/client"),ic6=cc6({clientDir:S98,isServerPath:lc6}),pc6={"X-Frame-Options":"DENY","Content-Security-Policy":"frame-ancestors 'none'"};function nc6($){let Z=new Headers($.headers);for(let[Q,Y]of Object.entries(pc6))Z.set(Q,Y);return new Response($.body,{status:$.status,statusText:$.statusText,headers:Z})}var{parsePreviewBaseDomain:tc6,tryHandlePreviewHttp:oc6,tryUpgradePreviewWs:rc6,previewWebSocketHandler:xU1,isPreviewWsData:fU1}=await Promise.resolve().then(() => (E98(),j98)),{getOrInitSharedRunner:C98}=await Promise.resolve().then(() => (QH(),kE$)),_98=tc6(process.env.STUDIO_SANDBOX_PREVIEW_URL_PATTERN),M98={baseDomain:_98??"",getRunner:C98};if(process.env.STUDIO_SANDBOX_TENANT_POOLS?.trim())C98().catch(($)=>{console.warn("[lifecycle] eager sandbox provider init for tenant pools failed:",$ instanceof Error?$.message:String($))});var KS0=await uc6({clientDir:S98}),yU1=process.env.DBOS_CONDUCTOR_KEY?.trim(),I98=process.env.DBOS_CONDUCTOR_URL?.trim();await rU1({databaseUrl:uU1(pJ.databaseUrl,pJ.databasePgSsl)},()=>H40.launch({...yU1?{conductorKey:yU1}:{},...yU1&&I98?{conductorURL:I98}:{}}));console.log(`[dbos] application version: ${H40.applicationVersion}`);var gU1=5,hU1=0;await g8(async()=>{hU1++;try{return await KS0.initDbos()}catch($){let Z=hU1>=gU1?"giving up":"retrying";throw console.warn(`[dbos] initDbos attempt ${hU1}/${gU1} failed, ${Z}`,$),$}},{maxAttempts:gU1,minTimeout:1000,maxTimeout:1e4,jitter:0.5});if(!pJ.isCli){let{bannerLines:$}=await Promise.resolve().then(() => (R98(),T98));console.log("");for(let Z of $())console.log(Z)}var sc6=Bun.serve({idleTimeout:0,port:mc6,hostname:"0.0.0.0",fetch:async($,Z)=>{if(_98){let Y=await rc6($,Z,M98);if(Y===void 0)return;if(Y)return Y;let X=await oc6($,M98);if(X)return X}let Q=await ic6($);if(Q)return nc6(Q);return KS0.fetch($,{server:Z})},websocket:{open($){if(fU1($.data))xU1.open($)},message($,Z){if(fU1($.data))xU1.message($,Z)},close($){if(fU1($.data))xU1.close($)}},development:!1}),ac6=dN1();if(pJ.localMode)Promise.resolve().then(() => (Qf(),kT0)).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(() => (Qf(),kT0));Z()}catch{}});var V98=!1;async function ec6($){let Z;try{Z=await yc6.create({systemDatabaseUrl:uU1(pJ.databaseUrl,pJ.databasePgSsl),systemDatabaseSchemaName:"dbos"});let Q=await Z.listWorkflows({status:"PENDING",queueName:B3,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:B3}),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 HS0($){if(V98)return;V98=!0,console.log(`
|
|
3709
3709
|
[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{ac6(),KS0.markShuttingDown();let J=aU1(pJ.dispatchRole,Q,process.env.SHUTDOWN_DRAIN_MS);await i$(J),await sc6.stop(!0);let G=H40.executorID;await H40.shutdown(),await ec6(G),await KS0.shutdown()}catch(J){console.error("[shutdown] Error during shutdown:",J),X=1}clearTimeout(Y),process.exit(X)}process.on("SIGTERM",()=>HS0("SIGTERM"));process.on("SIGINT",()=>HS0("SIGINT"));process.on("SIGHUP",()=>HS0("SIGHUP"));process.on("unhandledRejection",($)=>{console.error("[process] Unhandled rejection:",$)});process.on("uncaughtException",($)=>{console.error("[process] Uncaught exception:",$),HS0("uncaughtException")});
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c,j as s,M as u}from"./index-oInLRegO.js";import{ChatLayout as f}from"./index-C6YWxuEI.js";import{a as x}from"./thread-route-CGYm3fF8.js";import{u as g}from"./use-task-metadata-tyRgew5h.js";import{AppViewContent as h}from"./project-app-view-BjFT7eiW.js";import"./use-mobile-oRi4pmRL.js";import"./thread-button-BH-_he_P.js";import"./use-in-settings-CHHpBmp_.js";import"./sheet-C3oOEvZN.js";import"./X-DZouMoq2.js";import"./tooltip-Cj1caoDj.js";import"./index-DVzaRP6y.js";import"./use-panel-navigate-C1DdIaZR.js";import"./use-project-scope-BHSj7jFR.js";import"./use-virtual-mcp-D0flWviz.js";import"./use-mcp-client-BYq8F19a.js";import"./auth-Cyn2xymY.js";import"./github-repo-BknN0SVI.js";import"./use-route-default-main-tMpRLh5c.js";import"./hooks-vxTM1gXs.js";import"./backoff-8mStPHYB.js";import"./task-board-FWoiIhQM.js";import"./schema-BUeJ0pO6.js";import"./agent-icon-Cmy8McnK.js";import"./AlertCircle-BbNYew1e.js";import"./Tool01-CjL9B5Pb.js";import"./ArrowUp-BiIj6tlg.js";import"./ArrowLeft-ez9Y1Onk.js";import"./ArrowRight-E6fKygmt.js";import"./ZoomOut-kCU9bgKm.js";import"./Globe04-CAYZzkRC.js";import"./CheckCircle-B1OVLKZR.js";import"./Check-CapvsdGu.js";import"./ChevronUp-ChAmXWjD.js";import"./UserSquare-BGTYrtN8.js";import"./Copy01-DDkSTuTY.js";import"./CreditCard01-OHGsZ6Bw.js";import"./DotsVertical-5emZ3MQ9.js";import"./Eye-BrViZp-5.js";import"./Share07-BY2hIBvI.js";import"./XClose-BWjIThCL.js";import"./Image01-SKNmlwlF.js";import"./Key01-CXg7nR14.js";import"./LayoutLeft-nHNyhUOC.js";import"./Link01-Byw0zCMT.js";import"./LinkExternal01-CFar3COz.js";import"./Monitor01-CFnDja5J.js";import"./Sun-B2sJ8Eow.js";import"./Palette-DwexJoWb.js";import"./Plus-CrWT7UIJ.js";import"./SearchMd-CVxuC9Yh.js";import"./Trash01-DGERm_SA.js";import"./Upload01-BMWzLzBx.js";import"./User01-B6jvxPbq.js";import"./Users01-lstimZpI.js";import"./Zap-CAIuML8h.js";import"./toolbar-icon-button-BSvcTlnJ.js";import"./shell-layout-DM5WIQIJ.js";import"./avatar-Bbn37Vzx.js";import"./download-app-dialog-C1apE888.js";import"./dialog-Co6zFTX7.js";import"./command-Cvu7KW7q.js";import"./index-C1j5wK2H.js";import"./integration-icon-Uz5RxAVi.js";import"./project-icon-BdOYvLpp.js";import"./use-is-desktop-app-BNujXJc_.js";import"./required-auth-layout-CyPDzKJB.js";import"./autosend-CFp_YbNU.js";import"./use-org-sso-sxxqv7vp.js";import"./resizable-C2ZZg82t.js";import"./route-page-header-DUQyJQ1r.js";import"./gateway-client-CvspeF7R.js";import"./tool-namespace-DmnQIdtF.js";import"./use-mcp-tools-Igf_NQxw.js";import"./sandbox-lifecycle-context-BGf3c59K.js";import"./use-session-runtime-BDM1EdKf.js";import"./thread-intent-CkoGvx8c.js";import"./slugify-CEUa2lfQ.js";import"./chat-context-DUOWaPKi.js";import"./use-entitlements-Du-stDmT.js";import"./use-ai-providers-DD6uRv7t.js";import"./location-oTTXFrSF.js";import"./use-decopilot-events-CLlGlKKA.js";import"./use-organization-settings-CgmxRFUz.js";import"./sandbox-url-D3mC8qhT.js";import"./sandbox-start-errors-BK_aDCyt.js";import"./content-blocks-o63cs2vh.js";import"./mcp-app-renderer-JNmWwrWf.js";import"./types-DrNJI_4G.js";import"./site-url-en5df9c-.js";import"./use-connect-companion-Bg5qSD0k.js";import"./companions-core-BnuxEm_5.js";import"./metadata-D72DunRR.js";import"./github-repo-scope-C8GSbvaz.js";import"./form-CR07LiEf.js";import"./label-Be1evrK0.js";import"./input-DN8Quxr_.js";import"./use-debounced-value-B-XggGv3.js";import"./provision-repo-scoped-github-connection-B6zdkC6p.js";import"./useQueries-CRr6ONcA.js";import"./authenticate-and-persist-oauth-BvIb3Xk5.js";import"./mcp-oauth-DkrJY4dD.js";import"./track-DL1Ik-aq.js";import"./extract-connection-data-BZ39OCYI.js";import"./connection-B88XtkV2.js";const $=u("/shell/$org/org-shell/agent-shell/projects/$agentId/apps/$connectionId/$toolName");function j(){const t=c.c(9),{connectionId:o,toolName:r}=$.useParams(),l=x(),i=g(l);let p;t[0]!==o||t[1]!==i?.expanded_tools||t[2]!==r?(p=i?.expanded_tools?.find(a=>a.appId===o&&a.toolName===r),t[0]=o,t[1]=i?.expanded_tools,t[2]=r,t[3]=p):p=t[3];const d=p,e=`${o}:${r}`,n=d?.args;let m;return t[4]!==o||t[5]!==e||t[6]!==n||t[7]!==r?(m=s.jsx(h,{connectionId:o,toolName:r,args:n},e),t[4]=o,t[5]=e,t[6]=n,t[7]=r,t[8]=m):m=t[8],m}function $o(){const t=c.c(1);let o;return t[0]===Symbol.for("react.memo_cache_sentinel")?(o=s.jsx(f.Content,{children:s.jsx(j,{})}),t[0]=o):o=t[0],o}export{$o as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c,j as e,aP as b,u as g}from"./index-oInLRegO.js";import{ChatLayout as j}from"./index-C6YWxuEI.js";import{F as v,H as S}from"./file-share-button-DjI7bSLZ.js";import{u as k,b as y,e as _}from"./use-org-fs-DzuidZRI.js";import{S as P}from"./settings-tab-ClonbMIR.js";import{b as w}from"./thread-route-CGYm3fF8.js";import"./use-mobile-oRi4pmRL.js";import"./thread-button-BH-_he_P.js";import"./use-in-settings-CHHpBmp_.js";import"./sheet-C3oOEvZN.js";import"./X-DZouMoq2.js";import"./tooltip-Cj1caoDj.js";import"./index-DVzaRP6y.js";import"./use-panel-navigate-C1DdIaZR.js";import"./use-project-scope-BHSj7jFR.js";import"./use-virtual-mcp-D0flWviz.js";import"./use-mcp-client-BYq8F19a.js";import"./auth-Cyn2xymY.js";import"./github-repo-BknN0SVI.js";import"./use-route-default-main-tMpRLh5c.js";import"./hooks-vxTM1gXs.js";import"./backoff-8mStPHYB.js";import"./task-board-FWoiIhQM.js";import"./schema-BUeJ0pO6.js";import"./agent-icon-Cmy8McnK.js";import"./AlertCircle-BbNYew1e.js";import"./Tool01-CjL9B5Pb.js";import"./ArrowUp-BiIj6tlg.js";import"./ArrowLeft-ez9Y1Onk.js";import"./ArrowRight-E6fKygmt.js";import"./ZoomOut-kCU9bgKm.js";import"./Globe04-CAYZzkRC.js";import"./CheckCircle-B1OVLKZR.js";import"./Check-CapvsdGu.js";import"./ChevronUp-ChAmXWjD.js";import"./UserSquare-BGTYrtN8.js";import"./Copy01-DDkSTuTY.js";import"./CreditCard01-OHGsZ6Bw.js";import"./DotsVertical-5emZ3MQ9.js";import"./Eye-BrViZp-5.js";import"./Share07-BY2hIBvI.js";import"./XClose-BWjIThCL.js";import"./Image01-SKNmlwlF.js";import"./Key01-CXg7nR14.js";import"./LayoutLeft-nHNyhUOC.js";import"./Link01-Byw0zCMT.js";import"./LinkExternal01-CFar3COz.js";import"./Monitor01-CFnDja5J.js";import"./Sun-B2sJ8Eow.js";import"./Palette-DwexJoWb.js";import"./Plus-CrWT7UIJ.js";import"./SearchMd-CVxuC9Yh.js";import"./Trash01-DGERm_SA.js";import"./Upload01-BMWzLzBx.js";import"./User01-B6jvxPbq.js";import"./Users01-lstimZpI.js";import"./Zap-CAIuML8h.js";import"./toolbar-icon-button-BSvcTlnJ.js";import"./shell-layout-DM5WIQIJ.js";import"./avatar-Bbn37Vzx.js";import"./download-app-dialog-C1apE888.js";import"./dialog-Co6zFTX7.js";import"./command-Cvu7KW7q.js";import"./index-C1j5wK2H.js";import"./integration-icon-Uz5RxAVi.js";import"./project-icon-BdOYvLpp.js";import"./use-is-desktop-app-BNujXJc_.js";import"./required-auth-layout-CyPDzKJB.js";import"./autosend-CFp_YbNU.js";import"./use-org-sso-sxxqv7vp.js";import"./resizable-C2ZZg82t.js";import"./route-page-header-DUQyJQ1r.js";import"./input-DN8Quxr_.js";import"./popover-COlLm0r0.js";import"./extract-connection-data-BZ39OCYI.js";import"./metadata-D72DunRR.js";import"./connection-B88XtkV2.js";import"./chat-context-DUOWaPKi.js";import"./thread-intent-CkoGvx8c.js";import"./slugify-CEUa2lfQ.js";import"./use-entitlements-Du-stDmT.js";import"./use-ai-providers-DD6uRv7t.js";import"./location-oTTXFrSF.js";import"./use-decopilot-events-CLlGlKKA.js";import"./use-organization-settings-CgmxRFUz.js";import"./build-improve-prompt-doc-lPD5ppsw.js";import"./empty-state-B_zfMTAY.js";import"./use-date-fns-locale-Cy_ZOEN3.js";import"./differenceInSeconds-C3x8sHUj.js";import"./use-connection-D1_P2UM7.js";import"./mcp-oauth-DkrJY4dD.js";import"./alert-dialog-CQJ6L-fd.js";import"./textarea-D5Eclrlp.js";import"./use-debounced-autosave-Dkasmyrk.js";import"./add-connection-dialog-BvYu9ZLH.js";import"./collection-search-CLjQtaPy.js";import"./connection-card-A6aYN3Ch.js";import"./useInfiniteQuery-BpcJR9xI.js";import"./infiniteQueryObserver-Cuusnxij.js";import"./connection-slug-CITJ0kGN.js";import"./drawer-DWByFqsm.js";import"./form-CR07LiEf.js";import"./label-Be1evrK0.js";import"./select-DMFXyiyi.js";import"./connection-form-helpers-D81_RJtX.js";import"./authenticate-and-persist-oauth-BvIb3Xk5.js";import"./collection-tabs-mguLm2RL.js";import"./badge-CrCnpvUj.js";import"./use-infinite-scroll-Cs2QqMJ2.js";import"./useSuspenseInfiniteQuery-ByHovaCi.js";import"./file-type-icon-3LjfdOqY.js";import"./checkbox-eIasmi-8.js";import"./search-input-D8YyIx5o.js";import"./use-mcp-auth-status-DFlWa_9i.js";import"./types-DrNJI_4G.js";import"./use-mcp-tools-Igf_NQxw.js";import"./use-mcp-prompts-B_O4_Eqa.js";import"./utils-CVEq3hMx.js";import"./switch-C0HRK106.js";import"./scroll-area-Bi7CwTF7.js";import"./use-project-native-view-presence-DOMgNBIw.js";import"./match-site-slug-config-D3fUJ6vX.js";import"./use-file-configs-Y_eOk11s.js";import"./site-slug-DebpOoQq.js";import"./optimistic-project-sidebar-views-DHStkeWV.js";import"./virtual-mcp-dmsusViQ.js";import"./repository-import-picker-DbE5qt2Q.js";import"./use-navigate-to-agent-CkBwcPWu.js";import"./repository-picker-ttYZl_VU.js";import"./github-icon-BFVkYGiB.js";import"./use-debounced-value-B-XggGv3.js";import"./sandbox-url-D3mC8qhT.js";import"./secret-picker-VrIRp4P8.js";import"./use-secrets-gEhG4Eql.js";import"./omit-sandbox-map-jj4lCB2U.js";import"./serial-task-queue-CGOeQgpr.js";const x="home";function M(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(M,{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 E(){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=w(),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(P,{virtualMcpId:p}),i[1]=o,i[2]=p,i[3]=m):m=i[3],m}function pr(){const i=c.c(1);let t;return i[0]===Symbol.for("react.memo_cache_sentinel")?(t=e.jsx(j.Content,{children:e.jsx(E,{})}),i[0]=t):t=i[0],t}export{pr as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as n,j as s,u as a}from"./index-oInLRegO.js";import{ChatLayout as l}from"./index-C6YWxuEI.js";import{L as c}from"./preview-content-BR4RbkDm.js";import{a as f}from"./use-panel-navigate-C1DdIaZR.js";import{S as u}from"./settings-tab-ClonbMIR.js";import{b as h}from"./thread-route-CGYm3fF8.js";import"./use-mobile-oRi4pmRL.js";import"./thread-button-BH-_he_P.js";import"./use-in-settings-CHHpBmp_.js";import"./sheet-C3oOEvZN.js";import"./X-DZouMoq2.js";import"./tooltip-Cj1caoDj.js";import"./index-DVzaRP6y.js";import"./use-route-default-main-tMpRLh5c.js";import"./hooks-vxTM1gXs.js";import"./use-mcp-client-BYq8F19a.js";import"./auth-Cyn2xymY.js";import"./backoff-8mStPHYB.js";import"./task-board-FWoiIhQM.js";import"./schema-BUeJ0pO6.js";import"./agent-icon-Cmy8McnK.js";import"./AlertCircle-BbNYew1e.js";import"./Tool01-CjL9B5Pb.js";import"./ArrowUp-BiIj6tlg.js";import"./ArrowLeft-ez9Y1Onk.js";import"./ArrowRight-E6fKygmt.js";import"./ZoomOut-kCU9bgKm.js";import"./Globe04-CAYZzkRC.js";import"./CheckCircle-B1OVLKZR.js";import"./Check-CapvsdGu.js";import"./ChevronUp-ChAmXWjD.js";import"./UserSquare-BGTYrtN8.js";import"./Copy01-DDkSTuTY.js";import"./CreditCard01-OHGsZ6Bw.js";import"./DotsVertical-5emZ3MQ9.js";import"./Eye-BrViZp-5.js";import"./Share07-BY2hIBvI.js";import"./XClose-BWjIThCL.js";import"./Image01-SKNmlwlF.js";import"./Key01-CXg7nR14.js";import"./LayoutLeft-nHNyhUOC.js";import"./Link01-Byw0zCMT.js";import"./LinkExternal01-CFar3COz.js";import"./Monitor01-CFnDja5J.js";import"./Sun-B2sJ8Eow.js";import"./Palette-DwexJoWb.js";import"./Plus-CrWT7UIJ.js";import"./SearchMd-CVxuC9Yh.js";import"./Trash01-DGERm_SA.js";import"./Upload01-BMWzLzBx.js";import"./User01-B6jvxPbq.js";import"./Users01-lstimZpI.js";import"./Zap-CAIuML8h.js";import"./toolbar-icon-button-BSvcTlnJ.js";import"./shell-layout-DM5WIQIJ.js";import"./avatar-Bbn37Vzx.js";import"./download-app-dialog-C1apE888.js";import"./dialog-Co6zFTX7.js";import"./use-project-scope-BHSj7jFR.js";import"./use-virtual-mcp-D0flWviz.js";import"./github-repo-BknN0SVI.js";import"./command-Cvu7KW7q.js";import"./index-C1j5wK2H.js";import"./integration-icon-Uz5RxAVi.js";import"./project-icon-BdOYvLpp.js";import"./use-is-desktop-app-BNujXJc_.js";import"./required-auth-layout-CyPDzKJB.js";import"./autosend-CFp_YbNU.js";import"./use-org-sso-sxxqv7vp.js";import"./resizable-C2ZZg82t.js";import"./route-page-header-DUQyJQ1r.js";import"./file-preview-B-s3azNt.js";import"./use-org-fs-DzuidZRI.js";import"./utils-CAJo3oRt.js";import"./editor-DB4WW31s.js";import"./file-type-icon-3LjfdOqY.js";import"./markdown-3kIoJtjQ.js";import"./org-file-open-context-DA2DiiBk.js";import"./file-share-button-DjI7bSLZ.js";import"./input-DN8Quxr_.js";import"./popover-COlLm0r0.js";import"./location-oTTXFrSF.js";import"./extract-connection-data-BZ39OCYI.js";import"./metadata-D72DunRR.js";import"./connection-B88XtkV2.js";import"./chat-context-DUOWaPKi.js";import"./thread-intent-CkoGvx8c.js";import"./slugify-CEUa2lfQ.js";import"./use-entitlements-Du-stDmT.js";import"./use-ai-providers-DD6uRv7t.js";import"./use-decopilot-events-CLlGlKKA.js";import"./use-organization-settings-CgmxRFUz.js";import"./build-improve-prompt-doc-lPD5ppsw.js";import"./empty-state-B_zfMTAY.js";import"./use-date-fns-locale-Cy_ZOEN3.js";import"./differenceInSeconds-C3x8sHUj.js";import"./use-connection-D1_P2UM7.js";import"./mcp-oauth-DkrJY4dD.js";import"./alert-dialog-CQJ6L-fd.js";import"./textarea-D5Eclrlp.js";import"./use-debounced-autosave-Dkasmyrk.js";import"./add-connection-dialog-BvYu9ZLH.js";import"./collection-search-CLjQtaPy.js";import"./connection-card-A6aYN3Ch.js";import"./useInfiniteQuery-BpcJR9xI.js";import"./infiniteQueryObserver-Cuusnxij.js";import"./connection-slug-CITJ0kGN.js";import"./drawer-DWByFqsm.js";import"./form-CR07LiEf.js";import"./label-Be1evrK0.js";import"./select-DMFXyiyi.js";import"./connection-form-helpers-D81_RJtX.js";import"./authenticate-and-persist-oauth-BvIb3Xk5.js";import"./collection-tabs-mguLm2RL.js";import"./badge-CrCnpvUj.js";import"./use-infinite-scroll-Cs2QqMJ2.js";import"./useSuspenseInfiniteQuery-ByHovaCi.js";import"./checkbox-eIasmi-8.js";import"./search-input-D8YyIx5o.js";import"./use-mcp-auth-status-DFlWa_9i.js";import"./types-DrNJI_4G.js";import"./use-mcp-tools-Igf_NQxw.js";import"./use-mcp-prompts-B_O4_Eqa.js";import"./utils-CVEq3hMx.js";import"./switch-C0HRK106.js";import"./scroll-area-Bi7CwTF7.js";import"./use-project-native-view-presence-DOMgNBIw.js";import"./match-site-slug-config-D3fUJ6vX.js";import"./use-file-configs-Y_eOk11s.js";import"./site-slug-DebpOoQq.js";import"./optimistic-project-sidebar-views-DHStkeWV.js";import"./virtual-mcp-dmsusViQ.js";import"./repository-import-picker-DbE5qt2Q.js";import"./use-navigate-to-agent-CkBwcPWu.js";import"./repository-picker-ttYZl_VU.js";import"./github-icon-BFVkYGiB.js";import"./use-debounced-value-B-XggGv3.js";import"./sandbox-url-D3mC8qhT.js";import"./secret-picker-VrIRp4P8.js";import"./use-secrets-gEhG4Eql.js";import"./omit-sandbox-map-jj4lCB2U.js";import"./serial-task-queue-CGOeQgpr.js";function b(r){const t=n.c(4),{previewPath:m,onClose:p,showSeeInLibrary:o}=r,i=o===void 0?!1:o;let e;return t[0]!==p||t[1]!==m||t[2]!==i?(e=s.jsx("div",{className:"flex h-full w-full flex-col bg-background",children:s.jsx(c,{previewPath:m,onClose:p,showSeeInLibrary:i,variant:"panel"})}),t[0]=p,t[1]=m,t[2]=i,t[3]=e):e=t[3],e}function x(r){const t=n.c(5),{path:m}=r,{closePanel:p}=f();let o;t[0]!==p?(o=()=>p(),t[0]=p,t[1]=o):o=t[1];const i=o;let e;return t[2]!==i||t[3]!==m?(e=s.jsx(b,{previewPath:m,onClose:i,showSeeInLibrary:!0}),t[2]=i,t[3]=m,t[4]=e):e=t[4],e}function y(){const r=n.c(4);let t;r[0]===Symbol.for("react.memo_cache_sentinel")?(t={strict:!1},r[0]=t):t=r[0];const m=a(t),p=h(),o="path"in m&&typeof m.path=="string"?m.path:void 0;let i;return r[1]!==o||r[2]!==p?(i=o?s.jsx(x,{path:o},o):s.jsx(u,{virtualMcpId:p}),r[1]=o,r[2]=p,r[3]=i):i=r[3],i}function Yr(){const r=n.c(1);let t;return r[0]===Symbol.for("react.memo_cache_sentinel")?(t=s.jsx(l.Content,{children:s.jsx(y,{})}),r[0]=t):t=r[0],t}export{Yr as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as m,j as i}from"./index-oInLRegO.js";import{ChatLayout as p}from"./index-C6YWxuEI.js";import{S as e}from"./settings-tab-ClonbMIR.js";import{b as n}from"./thread-route-CGYm3fF8.js";import"./use-mobile-oRi4pmRL.js";import"./thread-button-BH-_he_P.js";import"./use-in-settings-CHHpBmp_.js";import"./sheet-C3oOEvZN.js";import"./X-DZouMoq2.js";import"./tooltip-Cj1caoDj.js";import"./index-DVzaRP6y.js";import"./use-panel-navigate-C1DdIaZR.js";import"./use-project-scope-BHSj7jFR.js";import"./use-virtual-mcp-D0flWviz.js";import"./use-mcp-client-BYq8F19a.js";import"./auth-Cyn2xymY.js";import"./github-repo-BknN0SVI.js";import"./use-route-default-main-tMpRLh5c.js";import"./hooks-vxTM1gXs.js";import"./backoff-8mStPHYB.js";import"./task-board-FWoiIhQM.js";import"./schema-BUeJ0pO6.js";import"./agent-icon-Cmy8McnK.js";import"./AlertCircle-BbNYew1e.js";import"./Tool01-CjL9B5Pb.js";import"./ArrowUp-BiIj6tlg.js";import"./ArrowLeft-ez9Y1Onk.js";import"./ArrowRight-E6fKygmt.js";import"./ZoomOut-kCU9bgKm.js";import"./Globe04-CAYZzkRC.js";import"./CheckCircle-B1OVLKZR.js";import"./Check-CapvsdGu.js";import"./ChevronUp-ChAmXWjD.js";import"./UserSquare-BGTYrtN8.js";import"./Copy01-DDkSTuTY.js";import"./CreditCard01-OHGsZ6Bw.js";import"./DotsVertical-5emZ3MQ9.js";import"./Eye-BrViZp-5.js";import"./Share07-BY2hIBvI.js";import"./XClose-BWjIThCL.js";import"./Image01-SKNmlwlF.js";import"./Key01-CXg7nR14.js";import"./LayoutLeft-nHNyhUOC.js";import"./Link01-Byw0zCMT.js";import"./LinkExternal01-CFar3COz.js";import"./Monitor01-CFnDja5J.js";import"./Sun-B2sJ8Eow.js";import"./Palette-DwexJoWb.js";import"./Plus-CrWT7UIJ.js";import"./SearchMd-CVxuC9Yh.js";import"./Trash01-DGERm_SA.js";import"./Upload01-BMWzLzBx.js";import"./User01-B6jvxPbq.js";import"./Users01-lstimZpI.js";import"./Zap-CAIuML8h.js";import"./toolbar-icon-button-BSvcTlnJ.js";import"./shell-layout-DM5WIQIJ.js";import"./avatar-Bbn37Vzx.js";import"./download-app-dialog-C1apE888.js";import"./dialog-Co6zFTX7.js";import"./command-Cvu7KW7q.js";import"./index-C1j5wK2H.js";import"./integration-icon-Uz5RxAVi.js";import"./project-icon-BdOYvLpp.js";import"./use-is-desktop-app-BNujXJc_.js";import"./required-auth-layout-CyPDzKJB.js";import"./autosend-CFp_YbNU.js";import"./use-org-sso-sxxqv7vp.js";import"./resizable-C2ZZg82t.js";import"./route-page-header-DUQyJQ1r.js";import"./extract-connection-data-BZ39OCYI.js";import"./metadata-D72DunRR.js";import"./connection-B88XtkV2.js";import"./chat-context-DUOWaPKi.js";import"./thread-intent-CkoGvx8c.js";import"./slugify-CEUa2lfQ.js";import"./use-entitlements-Du-stDmT.js";import"./use-ai-providers-DD6uRv7t.js";import"./location-oTTXFrSF.js";import"./use-decopilot-events-CLlGlKKA.js";import"./use-organization-settings-CgmxRFUz.js";import"./build-improve-prompt-doc-lPD5ppsw.js";import"./empty-state-B_zfMTAY.js";import"./use-date-fns-locale-Cy_ZOEN3.js";import"./differenceInSeconds-C3x8sHUj.js";import"./use-connection-D1_P2UM7.js";import"./mcp-oauth-DkrJY4dD.js";import"./alert-dialog-CQJ6L-fd.js";import"./textarea-D5Eclrlp.js";import"./use-debounced-autosave-Dkasmyrk.js";import"./add-connection-dialog-BvYu9ZLH.js";import"./collection-search-CLjQtaPy.js";import"./connection-card-A6aYN3Ch.js";import"./useInfiniteQuery-BpcJR9xI.js";import"./infiniteQueryObserver-Cuusnxij.js";import"./connection-slug-CITJ0kGN.js";import"./drawer-DWByFqsm.js";import"./form-CR07LiEf.js";import"./label-Be1evrK0.js";import"./input-DN8Quxr_.js";import"./select-DMFXyiyi.js";import"./connection-form-helpers-D81_RJtX.js";import"./authenticate-and-persist-oauth-BvIb3Xk5.js";import"./collection-tabs-mguLm2RL.js";import"./badge-CrCnpvUj.js";import"./use-infinite-scroll-Cs2QqMJ2.js";import"./useSuspenseInfiniteQuery-ByHovaCi.js";import"./file-type-icon-3LjfdOqY.js";import"./use-org-fs-DzuidZRI.js";import"./checkbox-eIasmi-8.js";import"./search-input-D8YyIx5o.js";import"./use-mcp-auth-status-DFlWa_9i.js";import"./types-DrNJI_4G.js";import"./use-mcp-tools-Igf_NQxw.js";import"./use-mcp-prompts-B_O4_Eqa.js";import"./utils-CVEq3hMx.js";import"./switch-C0HRK106.js";import"./popover-COlLm0r0.js";import"./scroll-area-Bi7CwTF7.js";import"./use-project-native-view-presence-DOMgNBIw.js";import"./match-site-slug-config-D3fUJ6vX.js";import"./use-file-configs-Y_eOk11s.js";import"./site-slug-DebpOoQq.js";import"./optimistic-project-sidebar-views-DHStkeWV.js";import"./virtual-mcp-dmsusViQ.js";import"./repository-import-picker-DbE5qt2Q.js";import"./use-navigate-to-agent-CkBwcPWu.js";import"./repository-picker-ttYZl_VU.js";import"./github-icon-BFVkYGiB.js";import"./use-debounced-value-B-XggGv3.js";import"./sandbox-url-D3mC8qhT.js";import"./secret-picker-VrIRp4P8.js";import"./use-secrets-gEhG4Eql.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 zo(){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{zo as default};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/file-explorer-ESJbsuX7.js","assets/index-oInLRegO.js","assets/index-DFsKuQKl.css","assets/agent-icon-Cmy8McnK.js","assets/AlertCircle-BbNYew1e.js","assets/Tool01-CjL9B5Pb.js","assets/ArrowUp-BiIj6tlg.js","assets/ArrowLeft-ez9Y1Onk.js","assets/ArrowRight-E6fKygmt.js","assets/ZoomOut-kCU9bgKm.js","assets/Globe04-CAYZzkRC.js","assets/CheckCircle-B1OVLKZR.js","assets/Check-CapvsdGu.js","assets/ChevronUp-ChAmXWjD.js","assets/UserSquare-BGTYrtN8.js","assets/Copy01-DDkSTuTY.js","assets/CreditCard01-OHGsZ6Bw.js","assets/DotsVertical-5emZ3MQ9.js","assets/Eye-BrViZp-5.js","assets/Share07-BY2hIBvI.js","assets/XClose-BWjIThCL.js","assets/Image01-SKNmlwlF.js","assets/Key01-CXg7nR14.js","assets/LayoutLeft-nHNyhUOC.js","assets/Link01-Byw0zCMT.js","assets/LinkExternal01-CFar3COz.js","assets/Monitor01-CFnDja5J.js","assets/Sun-B2sJ8Eow.js","assets/Palette-DwexJoWb.js","assets/Plus-CrWT7UIJ.js","assets/SearchMd-CVxuC9Yh.js","assets/Trash01-DGERm_SA.js","assets/Upload01-BMWzLzBx.js","assets/User01-B6jvxPbq.js","assets/Users01-lstimZpI.js","assets/X-DZouMoq2.js","assets/Zap-CAIuML8h.js","assets/scroll-area-Bi7CwTF7.js","assets/select-DMFXyiyi.js","assets/index-DVzaRP6y.js","assets/tooltip-Cj1caoDj.js","assets/chat-context-DUOWaPKi.js","assets/use-panel-navigate-C1DdIaZR.js","assets/thread-route-CGYm3fF8.js","assets/use-project-scope-BHSj7jFR.js","assets/use-virtual-mcp-D0flWviz.js","assets/use-mcp-client-BYq8F19a.js","assets/auth-Cyn2xymY.js","assets/github-repo-BknN0SVI.js","assets/autosend-CFp_YbNU.js","assets/thread-intent-CkoGvx8c.js","assets/slugify-CEUa2lfQ.js","assets/hooks-vxTM1gXs.js","assets/backoff-8mStPHYB.js","assets/task-board-FWoiIhQM.js","assets/schema-BUeJ0pO6.js","assets/use-is-desktop-app-BNujXJc_.js","assets/use-entitlements-Du-stDmT.js","assets/use-ai-providers-DD6uRv7t.js","assets/location-oTTXFrSF.js","assets/use-decopilot-events-CLlGlKKA.js","assets/use-organization-settings-CgmxRFUz.js","assets/editor-DB4WW31s.js","assets/shell-layout-DM5WIQIJ.js","assets/avatar-Bbn37Vzx.js","assets/download-app-dialog-C1apE888.js","assets/dialog-Co6zFTX7.js","assets/command-Cvu7KW7q.js","assets/index-C1j5wK2H.js","assets/integration-icon-Uz5RxAVi.js","assets/project-icon-BdOYvLpp.js","assets/required-auth-layout-CyPDzKJB.js","assets/use-org-sso-sxxqv7vp.js","assets/shell-layout-CE2Eihra.css","assets/save-changes-debug-nBi-n9eV.js","assets/sandbox-git-api-B1R0585s.js","assets/sandbox-url-D3mC8qhT.js","assets/input-DN8Quxr_.js","assets/alert-dialog-CQJ6L-fd.js","assets/utils-CAJo3oRt.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{c as _,m as w,K as P,b as F,X as R,j as p,r as k,aF as A,h as N,u as q}from"./index-oInLRegO.js";import{A as C}from"./agent-view-guard-DbiXXwvF.js";import{F as B}from"./feature-gate-U11G36VB.js";import{b as K}from"./chat-context-DUOWaPKi.js";import{d as M,c as $}from"./sandbox-lifecycle-context-BGf3c59K.js";import{b as z}from"./sandbox-url-D3mC8qhT.js";import{E as G}from"./empty-state-B_zfMTAY.js";import{u as L}from"./use-is-desktop-app-BNujXJc_.js";import"./use-main-panel-tabs-0qXXzcWV.js";import"./use-route-default-main-tMpRLh5c.js";import"./Share07-BY2hIBvI.js";import"./Monitor01-CFnDja5J.js";import"./use-connection-D1_P2UM7.js";import"./use-mcp-client-BYq8F19a.js";import"./auth-Cyn2xymY.js";import"./use-mcp-tools-Igf_NQxw.js";import"./use-virtual-mcp-D0flWviz.js";import"./types-DrNJI_4G.js";import"./utils-CVEq3hMx.js";import"./use-project-scope-BHSj7jFR.js";import"./github-repo-BknN0SVI.js";import"./index-i8l1CBWn.js";import"./ArrowUp-BiIj6tlg.js";import"./gateway-client-CvspeF7R.js";import"./tooltip-Cj1caoDj.js";import"./index-DVzaRP6y.js";import"./dialog-Co6zFTX7.js";import"./X-DZouMoq2.js";import"./drawer-DWByFqsm.js";import"./collection-search-CLjQtaPy.js";import"./SearchMd-CVxuC9Yh.js";import"./use-mobile-oRi4pmRL.js";import"./use-mcp-prompts-B_O4_Eqa.js";import"./index-DIchPxE-.js";import"./form-CR07LiEf.js";import"./label-Be1evrK0.js";import"./input-DN8Quxr_.js";import"./org-file-open-context-DA2DiiBk.js";import"./use-panel-navigate-C1DdIaZR.js";import"./thread-route-CGYm3fF8.js";import"./input-DeNzjyfg.js";import"./shell-layout-DM5WIQIJ.js";import"./avatar-Bbn37Vzx.js";import"./User01-B6jvxPbq.js";import"./Globe04-CAYZzkRC.js";import"./UserSquare-BGTYrtN8.js";import"./agent-icon-Cmy8McnK.js";import"./AlertCircle-BbNYew1e.js";import"./Tool01-CjL9B5Pb.js";import"./ArrowLeft-ez9Y1Onk.js";import"./ArrowRight-E6fKygmt.js";import"./ZoomOut-kCU9bgKm.js";import"./CheckCircle-B1OVLKZR.js";import"./Check-CapvsdGu.js";import"./ChevronUp-ChAmXWjD.js";import"./Copy01-DDkSTuTY.js";import"./CreditCard01-OHGsZ6Bw.js";import"./DotsVertical-5emZ3MQ9.js";import"./Eye-BrViZp-5.js";import"./XClose-BWjIThCL.js";import"./Image01-SKNmlwlF.js";import"./Key01-CXg7nR14.js";import"./LayoutLeft-nHNyhUOC.js";import"./Link01-Byw0zCMT.js";import"./LinkExternal01-CFar3COz.js";import"./Sun-B2sJ8Eow.js";import"./Palette-DwexJoWb.js";import"./Plus-CrWT7UIJ.js";import"./Trash01-DGERm_SA.js";import"./Upload01-BMWzLzBx.js";import"./Users01-lstimZpI.js";import"./Zap-CAIuML8h.js";import"./download-app-dialog-C1apE888.js";import"./command-Cvu7KW7q.js";import"./index-C1j5wK2H.js";import"./integration-icon-Uz5RxAVi.js";import"./project-icon-BdOYvLpp.js";import"./hooks-vxTM1gXs.js";import"./backoff-8mStPHYB.js";import"./task-board-FWoiIhQM.js";import"./schema-BUeJ0pO6.js";import"./required-auth-layout-CyPDzKJB.js";import"./autosend-CFp_YbNU.js";import"./use-org-sso-sxxqv7vp.js";import"./chat-draft-BVdC4I7_.js";import"./use-session-runtime-BDM1EdKf.js";import"./thread-intent-CkoGvx8c.js";import"./slugify-CEUa2lfQ.js";import"./select-DMFXyiyi.js";import"./usage-stats-F7lEx0gp.js";import"./use-copy-tkmTe99_.js";import"./markdown-3kIoJtjQ.js";import"./format-time-BtXRrtv4.js";import"./differenceInSeconds-C3x8sHUj.js";import"./use-entitlements-Du-stDmT.js";import"./tabs-jHa9G-vf.js";import"./use-deco-credits-C9d7yr9E.js";import"./use-ai-providers-DD6uRv7t.js";import"./toggle-group-CHmpxRzg.js";import"./tool-namespace-DmnQIdtF.js";import"./use-open-billing-url-BdwulaF1.js";import"./decopilot-lzqAroU6.js";import"./checkbox-eIasmi-8.js";import"./ai-providers-logos-DD3qZ33J.js";import"./popover-COlLm0r0.js";import"./use-organization-settings-CgmxRFUz.js";import"./index-CDs-itgn.js";import"./input-g-_2Ow3k.js";import"./suggestion-aPccODil.js";import"./use-org-fs-DzuidZRI.js";import"./question-004-sINsf4GQ.js";import"./use-members-ge_cM2s0.js";import"./use-org-auth-client-Bb0pQPV4.js";import"./feature-paywall-rYbT6jro.js";import"./plan-ladder-BmO6LQXU.js";import"./add-connection-dialog-BvYu9ZLH.js";import"./extract-connection-data-BZ39OCYI.js";import"./metadata-D72DunRR.js";import"./connection-B88XtkV2.js";import"./connection-card-A6aYN3Ch.js";import"./useInfiniteQuery-BpcJR9xI.js";import"./infiniteQueryObserver-Cuusnxij.js";import"./connection-slug-CITJ0kGN.js";import"./textarea-D5Eclrlp.js";import"./connection-form-helpers-D81_RJtX.js";import"./authenticate-and-persist-oauth-BvIb3Xk5.js";import"./mcp-oauth-DkrJY4dD.js";import"./collection-tabs-mguLm2RL.js";import"./badge-CrCnpvUj.js";import"./use-infinite-scroll-Cs2QqMJ2.js";import"./useSuspenseInfiniteQuery-ByHovaCi.js";import"./pair-ZHGt6bef.js";import"./collapsible-pZTQk4TI.js";import"./content-blocks-o63cs2vh.js";import"./mcp-app-renderer-JNmWwrWf.js";import"./omit-sandbox-map-jj4lCB2U.js";import"./sheet-C3oOEvZN.js";import"./use-navigate-to-agent-CkBwcPWu.js";import"./use-thread-outputs-C4IALELC.js";import"./file-type-icon-3LjfdOqY.js";import"./resolve-tab-icon-CBXDCirr.js";import"./use-task-metadata-tyRgew5h.js";import"./use-project-native-view-presence-DOMgNBIw.js";import"./match-site-slug-config-D3fUJ6vX.js";import"./use-file-configs-Y_eOk11s.js";import"./site-slug-DebpOoQq.js";import"./virtual-mcp-dmsusViQ.js";import"./location-oTTXFrSF.js";import"./use-decopilot-events-CLlGlKKA.js";import"./sandbox-start-errors-BK_aDCyt.js";function V(e){const t=_.c(14),{orgSlug:m,virtualMcpId:i,branch:o,threadId:r,enabled:b}=e,s=b===void 0?!0:b;let l;t[0]!==o||t[1]!==m||t[2]!==r||t[3]!==i?(l=P.sandboxRepoDir(m,i,o,r),t[0]=o,t[1]=m,t[2]=r,t[3]=i,t[4]=l):l=t[4];let n;t[5]!==o||t[6]!==m||t[7]!==r||t[8]!==i?(n=async()=>{const h=z({orgSlug:m,virtualMcpId:i,branch:o,threadId:r},"config"),c=await fetch(h);return c.ok?(await c.json()).repoDir??null:null},t[5]=o,t[6]=m,t[7]=r,t[8]=i,t[9]=n):n=t[9];let a;return t[10]!==s||t[11]!==l||t[12]!==n?(a={queryKey:l,queryFn:n,enabled:s,staleTime:1/0},t[10]=s,t[11]=l,t[12]=n,t[13]=a):a=t[13],w(a).data??null}const O=k.lazy(()=>A(()=>import("./file-explorer-ESJbsuX7.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])).then(e=>({default:e.FileExplorer})));function Q(e){const t=_.c(26),{openPath:m}=e,i=F(),{org:o}=R(),{currentBranch:r,taskId:b,virtualMcpId:s}=K(),l=L(),n=M(),a=$();n.vmEntry,a.lifecycle.phase;const D=l,h=s??"",c=r??"",g=b??null,E=D;let y;t[0]!==o.slug||t[1]!==h||t[2]!==c||t[3]!==g||t[4]!==E?(y={orgSlug:o.slug,virtualMcpId:h,branch:c,threadId:g,enabled:E},t[0]=o.slug,t[1]=h,t[2]=c,t[3]=g,t[4]=E,t[5]=y):y=t[5],V(y);const I=null;if(!s||!r){let d;t[6]!==i?(d=i("mainPanelTabs.codeTab.noSandboxToBrowse"),t[6]=i,t[7]=d):d=t[7];let x;t[8]!==i?(x=i("mainPanelTabs.codeTab.noSandboxToBrowseDescription"),t[8]=i,t[9]=x):x=t[9];let j;return t[10]!==d||t[11]!==x?(j=p.jsx(G,{className:"h-full",title:d,description:x}),t[10]=d,t[11]=x,t[12]=j):j=t[12],j}let u;t[13]!==I||t[14]!==i?(u=I,t[13]=I,t[14]=i,t[15]=u):u=t[15];let S;t[16]===Symbol.for("react.memo_cache_sentinel")?(S=p.jsx("div",{className:"h-full flex items-center justify-center",children:p.jsx(N,{className:"size-5 text-muted-foreground"})}),t[16]=S):S=t[16];const T=b??null;let f;t[17]!==r||t[18]!==m||t[19]!==o.slug||t[20]!==T||t[21]!==s?(f=p.jsx("div",{className:"flex-1 relative overflow-hidden bg-background",children:p.jsx(k.Suspense,{fallback:S,children:p.jsx(O,{orgSlug:o.slug,virtualMcpId:s,branch:r,threadId:T,openPath:m})})}),t[17]=r,t[18]=m,t[19]=o.slug,t[20]=T,t[21]=s,t[22]=f):f=t[22];let v;return t[23]!==u||t[24]!==f?(v=p.jsxs("div",{className:"flex flex-col w-full h-full",children:[u,f]}),t[23]=u,t[24]=f,t[25]=v):v=t[25],v}function Cr(){const e=_.c(3);let t;e[0]===Symbol.for("react.memo_cache_sentinel")?(t={strict:!1},e[0]=t):t=e[0];const m=q(t),o=("file"in m&&typeof m.file=="string"?m.file:void 0)??null;let r;return e[1]!==o?(r=p.jsx(C,{tabId:"code",children:p.jsx(B,{feature:"cms",children:p.jsx(Q,{openPath:o})})}),e[1]=o,e[2]=r):r=e[2],r}export{Cr as default};
|