decocms 4.532.5 → 4.532.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/assets/{ActiveShapeUtils-DBB_x8Gs.js → ActiveShapeUtils-CaEgEZvI.js} +1 -1
- package/dist/client/assets/{AlertCircle-BgO0RShT.js → AlertCircle-jOIG9xCe.js} +1 -1
- package/dist/client/assets/{AreaChart-DKpy9mUx.js → AreaChart-DvTTFEFt.js} +1 -1
- package/dist/client/assets/{ArrowLeft-CLIbFvcM.js → ArrowLeft-_8Uks4vi.js} +1 -1
- package/dist/client/assets/{ArrowUp-DGj1a1JQ.js → ArrowUp-DLq2nLX8.js} +1 -1
- package/dist/client/assets/{BarChart-D7kmxRhA.js → BarChart-CVlhINWt.js} +1 -1
- package/dist/client/assets/{Building02-DTlG5UDd.js → Building02-ZfhRNnW3.js} +1 -1
- package/dist/client/assets/{CartesianChart-BAgzcFkw.js → CartesianChart-BMMqKooR.js} +1 -1
- package/dist/client/assets/{CategoricalChart-1w257zDj.js → CategoricalChart-BLs4G68N.js} +1 -1
- package/dist/client/assets/{CheckCircle-BoFFOiJR.js → CheckCircle-CCfdUgg-.js} +1 -1
- package/dist/client/assets/{ChevronSelectorVertical-DYan7Eqw.js → ChevronSelectorVertical-CLCDTwgL.js} +1 -1
- package/dist/client/assets/{ChevronUp-DQBYMpqT.js → ChevronUp-BdV3030b.js} +1 -1
- package/dist/client/assets/{Copy01-BPOEtZ0I.js → Copy01-BrgkQFI1.js} +1 -1
- package/dist/client/assets/{CreditCard01-BgcDg6Po.js → CreditCard01-DkLMbgPJ.js} +1 -1
- package/dist/client/assets/{DotsVertical-bVrzKljT.js → DotsVertical-NceXVduW.js} +1 -1
- package/dist/client/assets/{ErrorBarContext-F07hkAp5.js → ErrorBarContext-CDV9mdj1.js} +1 -1
- package/dist/client/assets/{Globe04-DROK8sB6.js → Globe04-FNU0EBeA.js} +1 -1
- package/dist/client/assets/{Image01-CYMd4B2w.js → Image01-vCYTOYb-.js} +1 -1
- package/dist/client/assets/{Key01-CcnI3N_J.js → Key01-fvkjmlGO.js} +1 -1
- package/dist/client/assets/{Link01-BaCE2stQ.js → Link01-Cev0isOx.js} +1 -1
- package/dist/client/assets/{LinkBroken01-BCegKYMu.js → LinkBroken01-PWwgvIAl.js} +1 -1
- package/dist/client/assets/{Minus-YbXjN_Ds.js → Minus-W1OtKmpt.js} +1 -1
- package/dist/client/assets/{Monitor01-aloCOxdR.js → Monitor01-BjrEH76P.js} +1 -1
- package/dist/client/assets/{Play-CKfAabLj.js → Play-CfW34NqC.js} +1 -1
- package/dist/client/assets/{Plus-DifrnWDP.js → Plus-D6jTbSjz.js} +1 -1
- package/dist/client/assets/{ReferenceLine-BjTHivV7.js → ReferenceLine-DNFdKvEw.js} +1 -1
- package/dist/client/assets/{SearchMd-OM6lL3Xq.js → SearchMd-C0QgVvIZ.js} +1 -1
- package/dist/client/assets/{Sector-aZQlOyVI.js → Sector-B69UBy8k.js} +1 -1
- package/dist/client/assets/{ShoppingBag01-EO0f4EEB.js → ShoppingBag01-BIiKiz9O.js} +1 -1
- package/dist/client/assets/{Sun-tqaV4Ycc.js → Sun-CSsYOi-m.js} +1 -1
- package/dist/client/assets/{SwitchHorizontal01-VCz6eoXn.js → SwitchHorizontal01-DHiD77xh.js} +1 -1
- package/dist/client/assets/{Tool01-CDUtHuFU.js → Tool01-6PhR3Zen.js} +1 -1
- package/dist/client/assets/{Trash01-VJJht0QK.js → Trash01-CQPAs_-c.js} +1 -1
- package/dist/client/assets/{Upload01-Dxk-zD3u.js → Upload01-C-WB_MYj.js} +1 -1
- package/dist/client/assets/{UserSquare-DoHQfmRI.js → UserSquare-Ci6Vs_7m.js} +1 -1
- package/dist/client/assets/{Users01-CS7GcqAQ.js → Users01-VusgyHQ_.js} +1 -1
- package/dist/client/assets/{XClose-B88tJS8W.js → XClose-Bq0oxdBl.js} +1 -1
- package/dist/client/assets/{ZoomOut-Dg4JYL36.js → ZoomOut-B-NyeUhx.js} +1 -1
- package/dist/client/assets/{access-gate-DE8upkjE.js → access-gate-B4u9zTxN.js} +1 -1
- package/dist/client/assets/{add-connection-dialog-DxVAYgn3.js → add-connection-dialog-BsZp1K8x.js} +1 -1
- package/dist/client/assets/{agent-analytics-CxXcJA46.js → agent-analytics-BJFArwTy.js} +1 -1
- package/dist/client/assets/agent-app-D3WD7R7r.js +1 -0
- package/dist/client/assets/{agent-assets-2QbtIHgO.js → agent-assets-OCgwdlFL.js} +1 -1
- package/dist/client/assets/{agent-automation-Dw4OjqvF.js → agent-automation-DWLId-8n.js} +1 -1
- package/dist/client/assets/{agent-automations-CZq7e0tO.js → agent-automations-BbedFyS2.js} +1 -1
- package/dist/client/assets/{agent-calendar-CGPFAwP8.js → agent-calendar-1Wbidj3r.js} +1 -1
- package/dist/client/assets/{agent-connect-sources-CwNcGkc9.js → agent-connect-sources-ZNRG50jr.js} +1 -1
- package/dist/client/assets/agent-deck-BYKAvJ1l.js +1 -0
- package/dist/client/assets/{agent-e2e-tTccsl2f.js → agent-e2e-RhEj2JKY.js} +1 -1
- package/dist/client/assets/agent-experiments-BZ26UMwX.js +1 -0
- package/dist/client/assets/{agent-file-BXmbhJ0A.js → agent-file-7rtwstMm.js} +1 -1
- package/dist/client/assets/{agent-hosting-DFmxpM7m.js → agent-hosting-BNvt-sLY.js} +1 -1
- package/dist/client/assets/{agent-icon-CA2ls6V4.js → agent-icon-DZaQgedH.js} +1 -1
- package/dist/client/assets/agent-library-Vsns06T7.js +1 -0
- package/dist/client/assets/agent-library-file-B3BfnQSq.js +1 -0
- package/dist/client/assets/agent-monitor-BvzYxPND.js +1 -0
- package/dist/client/assets/{agent-overview-DMIGbWhh.js → agent-overview-ezR2wizT.js} +1 -1
- package/dist/client/assets/{agent-releases-TfhRok_k.js → agent-releases-DAzK0i9-.js} +1 -1
- package/dist/client/assets/agent-settings-Ts8YYqLg.js +1 -0
- package/dist/client/assets/{agent-site-editor-vIA92dqf.js → agent-site-editor-CRAYRh8u.js} +1 -1
- package/dist/client/assets/agent-site-editor-code-Bh0XxrD7.js +2 -0
- package/dist/client/assets/agent-site-editor-content-zNmDDpgr.js +1 -0
- package/dist/client/assets/agent-site-editor-preview-BTfJt6gb.js +1 -0
- package/dist/client/assets/agent-view-BhicZJ_m.js +1 -0
- package/dist/client/assets/{agent-view-guard-CTViio6x.js → agent-view-guard-BYlnx8ey.js} +1 -1
- package/dist/client/assets/{agents-list-DF0DX580.js → agents-list-C2WTCsvS.js} +1 -1
- package/dist/client/assets/{ai-providers-CQbH_x8n.js → ai-providers-B5GOh9nc.js} +1 -1
- package/dist/client/assets/{alert-D3Vs7Hmm.js → alert-BiFRSxzn.js} +1 -1
- package/dist/client/assets/{analytics-sections-C4W8AGNp.js → analytics-sections-BWVAR_AK.js} +1 -1
- package/dist/client/assets/{api-keys-CxMUc2ge.js → api-keys-DBaowngP.js} +1 -1
- package/dist/client/assets/api-keys-sfoKmkCw.js +1 -0
- package/dist/client/assets/{app-editor-BmqQZaqc.js → app-editor-C4ezWxp1.js} +1 -1
- package/dist/client/assets/{asset-utils-O6X_dwt-.js → asset-utils-CO7YyrzG.js} +1 -1
- package/dist/client/assets/{auth-B2v1KOAc.js → auth-Dt4Bt9uU.js} +1 -1
- package/dist/client/assets/{auth-catchall-BGsoBMku.js → auth-catchall-BQwv93_V.js} +1 -1
- package/dist/client/assets/{auth-entry-CAB8qpvf.js → auth-entry-CGm-IlH8.js} +1 -1
- package/dist/client/assets/{auth-split-layout-Baxd24ro.js → auth-split-layout-CciG8j1A.js} +1 -1
- package/dist/client/assets/{authenticate-and-persist-oauth-UWCdGiT0.js → authenticate-and-persist-oauth-CpA_y6h5.js} +1 -1
- package/dist/client/assets/{automation-list-row-DLHQbxMG.js → automation-list-row-j7-nDQSC.js} +1 -1
- package/dist/client/assets/{automation-runs-DUVVTfNU.js → automation-runs-CZa8ZYjg.js} +1 -1
- package/dist/client/assets/{automations-B9kCc45C.js → automations-BJqFZ_RC.js} +1 -1
- package/dist/client/assets/{autosend-BUHDH46M.js → autosend-Dlj7a5ki.js} +1 -1
- package/dist/client/assets/{badge-B275lbPZ.js → badge-D75N0A5V.js} +1 -1
- package/dist/client/assets/{block-document-Ud-Pjgh_.js → block-document-BzQcJvEw.js} +1 -1
- package/dist/client/assets/{blocks-preview-workspace-context-Cfqwt0fl.js → blocks-preview-workspace-context-BH9CZ1Sh.js} +1 -1
- package/dist/client/assets/{blocks-tab-states-DhPO3927.js → blocks-tab-states-BCs3jAKi.js} +1 -1
- package/dist/client/assets/{blog-schema-CxYprLcJ.js → blog-schema-BZiz_P3C.js} +1 -1
- package/dist/client/assets/{buckets-Ctl6DyfN.js → buckets-ruGHyjqH.js} +1 -1
- package/dist/client/assets/{build-improve-prompt-doc-B1ctgI5i.js → build-improve-prompt-doc-C2vRe40c.js} +1 -1
- package/dist/client/assets/{calendar-BF6y0Z9x.js → calendar-BuApW2el.js} +1 -1
- package/dist/client/assets/{capability-load-error-DLAPLAgw.js → capability-load-error-Cjx_YomY.js} +1 -1
- package/dist/client/assets/{category-editor-BWhnsKFl.js → category-editor-BX05PNR9.js} +1 -1
- package/dist/client/assets/{cdn-tab-DNzFiD5m.js → cdn-tab-CQiLr5VD.js} +1 -1
- package/dist/client/assets/{chart-BV2fH_6W.js → chart-RIuC025E.js} +1 -1
- package/dist/client/assets/{chat-context-CRAqcBEA.js → chat-context-CvGFWv-h.js} +1 -1
- package/dist/client/assets/{chat-draft-D8MxxmMn.js → chat-draft-79guk-Wd.js} +1 -1
- package/dist/client/assets/{checkbox-z1yY0VbG.js → checkbox-DGP86Cq2.js} +1 -1
- package/dist/client/assets/{choose-editor-BfJ_uy-r.js → choose-editor-BZx3WDkU.js} +1 -1
- package/dist/client/assets/{cli-auth-success-BXP6hdAw.js → cli-auth-success-BbIR5eLw.js} +1 -1
- package/dist/client/assets/{client-icons-CZJL6jbw.js → client-icons-DVVzXauu.js} +1 -1
- package/dist/client/assets/{cms-settings-editor-CykKSUR_.js → cms-settings-editor-zWjP_MSw.js} +1 -1
- package/dist/client/assets/{collapsible-TgXdzaTW.js → collapsible-DT2lPC2i.js} +1 -1
- package/dist/client/assets/{collection-detail-C50ZKf3h.js → collection-detail-CDAsZNtZ.js} +1 -1
- package/dist/client/assets/{collection-display-button-C1BGad1J.js → collection-display-button-CkzLqa8z.js} +1 -1
- package/dist/client/assets/{collection-search-Dxv0FJfh.js → collection-search-DdYo6ZJM.js} +1 -1
- package/dist/client/assets/{collection-table-wrapper-BQz4wQv6.js → collection-table-wrapper-DOE2xCN7.js} +1 -1
- package/dist/client/assets/{collection-tabs-k2c4oB2_.js → collection-tabs-D2GKtGRE.js} +1 -1
- package/dist/client/assets/{column-rules-IZdAS5gT.js → column-rules-COOGrYaE.js} +1 -1
- package/dist/client/assets/{combobox-CXI3q8SD.js → combobox-BpHVcxdl.js} +1 -1
- package/dist/client/assets/{command-6ewscZzU.js → command-BPrKG1um.js} +1 -1
- package/dist/client/assets/{companion-mcps-section-DoFZott1.js → companion-mcps-section-C34v2ZVp.js} +1 -1
- package/dist/client/assets/{config-DvYJzFe4.js → config-CrE-5lEN.js} +1 -1
- package/dist/client/assets/{connect-D2juww-N.js → connect-DIR96ZjB.js} +1 -1
- package/dist/client/assets/{connect-layout-DSU6EVHj.js → connect-layout-D_R5PTBQ.js} +1 -1
- package/dist/client/assets/{connect-source-dialog-BYzD_cCd.js → connect-source-dialog-BtO2E5rg.js} +1 -1
- package/dist/client/assets/{connection--HCyemnh.js → connection-VR1-8TY_.js} +1 -1
- package/dist/client/assets/{connection-card-CJzQ1R1a.js → connection-card-m08LCCLa.js} +1 -1
- package/dist/client/assets/{connection-detail-DwxIR5Sg.js → connection-detail-BR4VlVh4.js} +1 -1
- package/dist/client/assets/{connection-form-helpers-BhmC9tzU.js → connection-form-helpers-5fcC6G7T.js} +1 -1
- package/dist/client/assets/{connections-BbTMsfM2.js → connections-CNFBHUoQ.js} +1 -1
- package/dist/client/assets/{content-tab-C4xTdHdc.js → content-tab-CxBlYet7.js} +3 -3
- package/dist/client/assets/{context-BpAOIYxL.js → context-DNy7BuDU.js} +1 -1
- package/dist/client/assets/{context-menu-ClCy32tB.js → context-menu-BvMdHD-C.js} +1 -1
- package/dist/client/assets/{context-shell-AlLqYzkU.js → context-shell-CNGcDLrO.js} +3 -3
- package/dist/client/assets/{core.esm-BXQfTZkM.js → core.esm-BIBcQwfP.js} +1 -1
- package/dist/client/assets/{create-organization-dialog-BY6IHR1p.js → create-organization-dialog-BaaEyeFH.js} +1 -1
- package/dist/client/assets/{daily-pulse-BWeLPl82.js → daily-pulse-CMR9-GnX.js} +1 -1
- package/dist/client/assets/{discover-CCHDOxkE.js → discover-ClGyGe3-.js} +1 -1
- package/dist/client/assets/{domain-settings-BrlbYDBP.js → domain-settings-DMd56nMZ.js} +1 -1
- package/dist/client/assets/{drawer-C8pd-9h5.js → drawer-BbHWEcoO.js} +1 -1
- package/dist/client/assets/{editor-BQUfQi3X.js → editor-BQnQRfuC.js} +1 -1
- package/dist/client/assets/{editor-classes-DeM_8BMv.js → editor-classes-CjarBUxd.js} +1 -1
- package/dist/client/assets/{empty-state-DnXn-oXP.js → empty-state-DSOiHjIr.js} +1 -1
- package/dist/client/assets/{empty-state-P8DRc5l5.js → empty-state-DbHzf9GG.js} +1 -1
- package/dist/client/assets/{experiments-tab-Dj_UXlje.js → experiments-tab-Bp5-LE9m.js} +1 -1
- package/dist/client/assets/{experiments-tab-choice-CkKpewiH.js → experiments-tab-choice-BtQeitL5.js} +1 -1
- package/dist/client/assets/{extract-connection-data-Bv4y_ppm.js → extract-connection-data-3Hme2Zoo.js} +1 -1
- package/dist/client/assets/{feature-gate-CeySSZwi.js → feature-gate-B4PWnNtI.js} +1 -1
- package/dist/client/assets/{feature-paywall-DtZqXAFQ.js → feature-paywall-unKuVWEv.js} +1 -1
- package/dist/client/assets/{file-explorer-CPhsOyRV.js → file-explorer-B6_6d9ym.js} +1 -1
- package/dist/client/assets/{file-preview-B58y6F5R.js → file-preview-CvVeo5lb.js} +1 -1
- package/dist/client/assets/{file-share-button-Cvb6TL3d.js → file-share-button-B2eb16IR.js} +1 -1
- package/dist/client/assets/{file-type-icon-qeWcetSB.js → file-type-icon-BLyYqjqs.js} +1 -1
- package/dist/client/assets/{folder-icon-DN6fGLYE.js → folder-icon-DVsxlA37.js} +1 -1
- package/dist/client/assets/{form-BIDT1Ue4.js → form-3bkiF7gA.js} +1 -1
- package/dist/client/assets/{general-D_xrCx6_.js → general-BBW186Xk.js} +1 -1
- package/dist/client/assets/{held-block-view-DAPwji26.js → held-block-view-DKSlN_M8.js} +3 -3
- package/dist/client/assets/{home-BgI7ZNrl.js → home-BwQwFYqB.js} +1 -1
- package/dist/client/assets/{hosted-publish-feedback-BFYHRRPf.js → hosted-publish-feedback-DMwKmJc6.js} +1 -1
- package/dist/client/assets/{icon-button-DSMd1qL1.js → icon-button-C7r3KkLl.js} +1 -1
- package/dist/client/assets/{index-BCDmEpzR.js → index-B-myEQ-9.js} +1 -1
- package/dist/client/assets/{index-oqricAgA.js → index-B1iuWsoy.js} +1 -1
- package/dist/client/assets/{index-B_Vz7pw9.js → index-BT5RfFsD.js} +1 -1
- package/dist/client/assets/{index-Cu6YVL4w.js → index-BTDTw5bI.js} +1 -1
- package/dist/client/assets/{index-BG1gU17W.js → index-BaHr9Mli.js} +1 -1
- package/dist/client/assets/{index-BxQkdZTK.js → index-BiNrH4hx.js} +1 -1
- package/dist/client/assets/{index-COUcDTIR.js → index-CAQmqKZU.js} +1 -1
- package/dist/client/assets/{index-BDmPHxvf.js → index-CIeIfvHH.js} +1 -1
- package/dist/client/assets/{index-DX3l6VgM.js → index-CfC1PX7J.js} +1 -1
- package/dist/client/assets/{index-H6qehDl6.js → index-D0G7YkWj.js} +1 -1
- package/dist/client/assets/{index-Bk9GYF9h.js → index-D36RGabD.js} +1 -1
- package/dist/client/assets/{index-O_xtfziX.js → index-D5-rPFl4.js} +1 -1
- package/dist/client/assets/{index-CWPTQWeO.js → index-EE1WZwgi.js} +1 -1
- package/dist/client/assets/{index-BqutwFSm.js → index-Eerqiqov.js} +3 -3
- package/dist/client/assets/{index-B94uTMNH.js → index-b5BVAi8c.js} +1 -1
- package/dist/client/assets/{index-redirect-Bt4gzxaD.js → index-redirect-CfxRp26H.js} +1 -1
- package/dist/client/assets/{infiniteQueryObserver-DCWN2zRB.js → infiniteQueryObserver-iS78U_ZL.js} +1 -1
- package/dist/client/assets/{infra-billing-ywaH9jxg.js → infra-billing-Do3_PCQa.js} +1 -1
- package/dist/client/assets/{input-CsD5Q7QM.js → input-BAOR7gdz.js} +3 -3
- package/dist/client/assets/{input-CpuPl1VL.js → input-DHL7GZ6i.js} +1 -1
- package/dist/client/assets/{integration-icon-C_aSliEO.js → integration-icon-hnsUAm4P.js} +1 -1
- package/dist/client/assets/{jira-icon-CYte4ad8.js → jira-icon-anvLEqTG.js} +1 -1
- package/dist/client/assets/{label-Ce-ZCIZn.js → label-Xa3-kfx-.js} +1 -1
- package/dist/client/assets/{layout-BN3gCJyG.js → layout-BNnl1pe_.js} +1 -1
- package/dist/client/assets/{legacy-agents-deep-mrP4uzb7.js → legacy-agents-deep-CFLUUxZv.js} +1 -1
- package/dist/client/assets/{legacy-main-redirect-skPOzTvI.js → legacy-main-redirect-C7qbhkZW.js} +1 -1
- package/dist/client/assets/library-B56igKFJ.js +1 -0
- package/dist/client/assets/{login-Bqng4rrv.js → login-C0varsfP.js} +1 -1
- package/dist/client/assets/{markdown-Y9FReFEe.js → markdown-DIA98dM4.js} +1 -1
- package/dist/client/assets/{mcp-app-renderer-DrWXODkj.js → mcp-app-renderer-RoNKZSiQ.js} +1 -1
- package/dist/client/assets/{mcp-oauth-Mf3yN31G.js → mcp-oauth-BLWkV7q2.js} +1 -1
- package/dist/client/assets/{mcp-oauth-B1ojmT8l.js → mcp-oauth-CKJml8s4.js} +1 -1
- package/dist/client/assets/{members-Bl1zRjVM.js → members-l0Uk-01a.js} +1 -1
- package/dist/client/assets/{memory-MKr86D-6.js → memory-Dku-PynJ.js} +1 -1
- package/dist/client/assets/{mini-report-page-CJr2XkWD.js → mini-report-page-Dg68LsyX.js} +1 -1
- package/dist/client/assets/{mock-board-CtHapNeM.js → mock-board-sdDWQCOi.js} +3 -3
- package/dist/client/assets/{monaco-editor-fuZZsh6j.js → monaco-editor-BiT8gsWu.js} +1 -1
- package/dist/client/assets/{monitoring-CmKUhbQ7.js → monitoring-DIpVFk3x.js} +1 -1
- package/dist/client/assets/{monitoring-stats-row-CfiYSb9F.js → monitoring-stats-row-GbEs0vfi.js} +1 -1
- package/dist/client/assets/{multi-select-BqD525y_.js → multi-select-CeVCMpnB.js} +1 -1
- package/dist/client/assets/{mustache-XoR-PEeZ.js → mustache-C5PE2AcG.js} +1 -1
- package/dist/client/assets/{named-rule-uses-BbtWVVld.js → named-rule-uses-BbiJYV7K.js} +1 -1
- package/dist/client/assets/{new-project-dialog-BRBdOtjX.js → new-project-dialog-DcTSDqB4.js} +1 -1
- package/dist/client/assets/{oauth-callback-CZuAW6K7.js → oauth-callback-D1IcQ0gF.js} +1 -1
- package/dist/client/assets/{oauth-callback-ai-provider-6NJDakak.js → oauth-callback-ai-provider-pOfP7Wuq.js} +1 -1
- package/dist/client/assets/{onboarding-aHBbCiCh.js → onboarding-VScNPjdc.js} +1 -1
- package/dist/client/assets/{openai-conversation-Ds3XswsL.js → openai-conversation-Dp0LJtYI.js} +1 -1
- package/dist/client/assets/{optimistic-project-sidebar-views-w9Ct7FMs.js → optimistic-project-sidebar-views-SslPXcWG.js} +1 -1
- package/dist/client/assets/{order-monitor-day-CA2fWj1y.js → order-monitor-day-BBzImHhI.js} +1 -1
- package/dist/client/assets/{organization-choice-D4aq2Nxu.js → organization-choice-Cl7qE_RO.js} +1 -1
- package/dist/client/assets/{orgs-kp47NygQ.js → orgs-Sl5FOyjY.js} +1 -1
- package/dist/client/assets/{page-seo-form-C-3Oyqrm.js → page-seo-form-B35bS6Dz.js} +1 -1
- package/dist/client/assets/{pair-Dc1F6KjY.js → pair-BFZ1-7EF.js} +1 -1
- package/dist/client/assets/{parse-sections-CRdFubPB.js → parse-sections-D5OscMYn.js} +1 -1
- package/dist/client/assets/{plan-CmzQmIDy.js → plan-DgYeg1Ok.js} +1 -1
- package/dist/client/assets/{plan-ladder-Dqd8xMeE.js → plan-ladder-BdEpibHS.js} +1 -1
- package/dist/client/assets/{popover-VBk0ee-p.js → popover-Cbt_vWk8.js} +1 -1
- package/dist/client/assets/{post-calendar-DwNGscjq.js → post-calendar-D7bgMx0p.js} +1 -1
- package/dist/client/assets/{post-editor-BEoWoH05.js → post-editor-Ib_8CS-D.js} +1 -1
- package/dist/client/assets/{preview-content-DRmpsOLy.js → preview-content-cH2oId8v.js} +1 -1
- package/dist/client/assets/{preview-dialog-dWAdST9o.js → preview-dialog-B0HSIZGb.js} +1 -1
- package/dist/client/assets/{preview-panel-BJLsJJcg.js → preview-panel-DpPhUwWS.js} +1 -1
- package/dist/client/assets/{preview-tab-DZ8ks1YP.js → preview-tab-CDaNYmuf.js} +3 -3
- package/dist/client/assets/{product-picker-dialog-MPHTgKXX.js → product-picker-dialog-C0lhSxiS.js} +1 -1
- package/dist/client/assets/{profile-Dd0_s4VG.js → profile-DAd5_CmP.js} +1 -1
- package/dist/client/assets/{project-app-view-BtOq7ZWp.js → project-app-view-DqngjGIv.js} +1 -1
- package/dist/client/assets/{project-apps-CqjnVLMe.js → project-apps-CzIX1SOl.js} +1 -1
- package/dist/client/assets/project-feed-D-6gHRtu.js +1 -0
- package/dist/client/assets/{project-icon-DtQEqIYx.js → project-icon-CSGa4vs9.js} +1 -1
- package/dist/client/assets/project-reports--BggROx1.js +1 -0
- package/dist/client/assets/project-tasks-BtH26LId.js +1 -0
- package/dist/client/assets/{projects-cYRTCGsM.js → projects--zQcNRJ7.js} +1 -1
- package/dist/client/assets/{projects-empty-state-CaYoBzMW.js → projects-empty-state-DZbm-x_w.js} +1 -1
- package/dist/client/assets/{prompts-Sb2iWGQw.js → prompts-BQQpsOSB.js} +1 -1
- package/dist/client/assets/record-editor-DDElm_gy.js +1 -0
- package/dist/client/assets/{redirect-editor-BG_05zsK.js → redirect-editor-DhQU6lBj.js} +1 -1
- package/dist/client/assets/{releases-api-RCTgo6g_.js → releases-api-BbcN2ds5.js} +1 -1
- package/dist/client/assets/reports-BLMli2Ob.js +1 -0
- package/dist/client/assets/{reports-CtmBtrB8.js → reports-BSzjfrfU.js} +1 -1
- package/dist/client/assets/{reports-onboarding-BzWzS8Md.js → reports-onboarding-B1l96Ujh.js} +1 -1
- package/dist/client/assets/{reports-tab-BTBssl4Z.js → reports-tab-BkMuhd4d.js} +2 -2
- package/dist/client/assets/repositories-BKjfiom2.js +1 -0
- package/dist/client/assets/{repositories-BKZPSNVR.js → repositories-Dl4QDB4s.js} +1 -1
- package/dist/client/assets/{repository-binding-UPUU8iTD.js → repository-binding-KZB58w-2.js} +1 -1
- package/dist/client/assets/{repository-import-picker-Cgqnl0_u.js → repository-import-picker-DYPUFMdx.js} +1 -1
- package/dist/client/assets/{repository-picker-BGNbJ5FK.js → repository-picker-B02wIamX.js} +1 -1
- package/dist/client/assets/{require-capability-Fl7myTcy.js → require-capability-CljEbxi5.js} +1 -1
- package/dist/client/assets/{required-auth-layout-DGUYFPwh.js → required-auth-layout-CmXM02vz.js} +1 -1
- package/dist/client/assets/{reset-password-vxbjXaOx.js → reset-password-Bd10KjY-.js} +1 -1
- package/dist/client/assets/{resizable-2wUgP6NM.js → resizable-CXIZE_hW.js} +1 -1
- package/dist/client/assets/{resolve-tab-icon-CXm2cUKs.js → resolve-tab-icon-Dpgdgm-t.js} +1 -1
- package/dist/client/assets/{review-settings-BMj11lsi.js → review-settings-cy271krk.js} +1 -1
- package/dist/client/assets/{roles-D4Qgb0OR.js → roles-PkGKwJOl.js} +1 -1
- package/dist/client/assets/{route-B3dhLyR7.js → route-CR5LF-A_.js} +1 -1
- package/dist/client/assets/route-DLCKqdUY.js +1 -0
- package/dist/client/assets/{route-BhW-SwkC.js → route-esd8fOd_.js} +1 -1
- package/dist/client/assets/{sandbox-lifecycle-context-BrAJV0hd.js → sandbox-lifecycle-context-BQlCmryG.js} +1 -1
- package/dist/client/assets/{schema-7_06wAgs.js → schema-D5akFAgF.js} +1 -1
- package/dist/client/assets/{schema-DHeACN0H.js → schema-DBB7PEat.js} +1 -1
- package/dist/client/assets/{scroll-area-56TNtyKH.js → scroll-area-CBIqjbuN.js} +1 -1
- package/dist/client/assets/{search-input-Zdy1mSae.js → search-input-CkkobQWH.js} +1 -1
- package/dist/client/assets/{search-toggle-DkaLKnSY.js → search-toggle-DTZ5LcBf.js} +1 -1
- package/dist/client/assets/{secret-picker-B5fM64mM.js → secret-picker-7fFaVsab.js} +1 -1
- package/dist/client/assets/{secrets-DyW2ssCW.js → secrets-hIiUhz6W.js} +1 -1
- package/dist/client/assets/{section-array-field-rBWQHh7r.js → section-array-field-BWDrSXQo.js} +1 -1
- package/dist/client/assets/{sections-DlaCV9cl.js → sections-CQ-Lj8q1.js} +1 -1
- package/dist/client/assets/{sections-editor-BDKjqTEY.js → sections-editor-DV8WlU6x.js} +1 -1
- package/dist/client/assets/{select-qBldsuZB.js → select-DP0eyC6X.js} +1 -1
- package/dist/client/assets/{select-model-TCy_ghzu.js → select-model-C3jHcZMF.js} +1 -1
- package/dist/client/assets/{seo-editor-BLOTxVNW.js → seo-editor-CZdRbo95.js} +1 -1
- package/dist/client/assets/{separator-DZ0CgMqF.js → separator-B1lWsFYM.js} +1 -1
- package/dist/client/assets/settings-tab-PcrvpSlL.js +1 -0
- package/dist/client/assets/{sheet-D-DL4PyF.js → sheet-CUAyRITn.js} +1 -1
- package/dist/client/assets/{shell-layout-DKjamnSj.js → shell-layout-C7s-5JS_.js} +1 -1
- package/dist/client/assets/{site-draft-actions-DQJmjCxq.js → site-draft-actions-0o1aJ_Ii.js} +1 -1
- package/dist/client/assets/{site-draft-view-C5NGRcIz.js → site-draft-view-D3ClHIAK.js} +2 -2
- package/dist/client/assets/site-editor-_Yy0JEP2.js +1 -0
- package/dist/client/assets/{site-editor-toast-UJBsXoYS.js → site-editor-toast-Bqjpfikq.js} +1 -1
- package/dist/client/assets/{skills-De822NM4.js → skills-DTOIb5fj.js} +1 -1
- package/dist/client/assets/{slider-DKsnyXsn.js → slider-BXuOFsbm.js} +1 -1
- package/dist/client/assets/{sortable.esm-BPDXfku7.js → sortable.esm-DeloZlht.js} +1 -1
- package/dist/client/assets/{sso-ClBwUtr5.js → sso-C-Cu1NgK.js} +1 -1
- package/dist/client/assets/{suggestion-CgPYCK9k.js → suggestion-DYg6WYnB.js} +1 -1
- package/dist/client/assets/{switch-CZb-mYsM.js → switch-CUfqF0u0.js} +1 -1
- package/dist/client/assets/{symbol-CyQNqsns.js → symbol-Y0_sDhOG.js} +1 -1
- package/dist/client/assets/{synced-repos-D4QeoEDp.js → synced-repos-D6AR2hcP.js} +1 -1
- package/dist/client/assets/{tab-icon-glyph-DSl4L3DW.js → tab-icon-glyph-D0eLYAJw.js} +1 -1
- package/dist/client/assets/{table-V2ahNRZT.js → table-DzquLl7H.js} +1 -1
- package/dist/client/assets/{tabs-Cb1EEFWU.js → tabs-CxqBR9sE.js} +1 -1
- package/dist/client/assets/{task-assignee-avatar-Wqv60Mfs.js → task-assignee-avatar-BFX0H7zg.js} +1 -1
- package/dist/client/assets/{task-board-Cp4gjjuc.js → task-board-BNvtXGbP.js} +1 -1
- package/dist/client/assets/{task-route-DKYWwLvg.js → task-route-DF62oKjR.js} +1 -1
- package/dist/client/assets/{task-status-Ne5UIAX6.js → task-status-CTUPBrLv.js} +1 -1
- package/dist/client/assets/{taskboard-analytics-adljo_lT.js → taskboard-analytics-D2sJfyE9.js} +1 -1
- package/dist/client/assets/tasks-Bvf0_0rU.js +1 -0
- package/dist/client/assets/{tasks--ex7OH66.js → tasks-CTFSddHq.js} +1 -1
- package/dist/client/assets/{textarea-DIMcwKj_.js → textarea-DvlUXyij.js} +1 -1
- package/dist/client/assets/{thread-analytics-CqnVp9Hp.js → thread-analytics-D2EbCjiW.js} +1 -1
- package/dist/client/assets/{thread-intent-BdGEZQ5d.js → thread-intent-2QF6UB5v.js} +1 -1
- package/dist/client/assets/{thread-route-DPiunvH4.js → thread-route-BcSR1m2U.js} +1 -1
- package/dist/client/assets/{thread-route-BGD5ZDLj.js → thread-route-CH3h5qSV.js} +1 -1
- package/dist/client/assets/{thread-sheet-body-DFdozxob.js → thread-sheet-body-O6gj82sE.js} +1 -1
- package/dist/client/assets/{time-range-picker-CyphWImg.js → time-range-picker-Dgucnv9O.js} +1 -1
- package/dist/client/assets/{toggle-group-DQ8R6Md0.js → toggle-group-DwpQikZN.js} +1 -1
- package/dist/client/assets/{tool-namespace-BWBiQhUq.js → tool-namespace-DanZwx0o.js} +1 -1
- package/dist/client/assets/{toolbar-icon-button-C7qFILLP.js → toolbar-icon-button-BP54TQcq.js} +1 -1
- package/dist/client/assets/{tooltip-RrBkgkDb.js → tooltip-BeUMsxMI.js} +1 -1
- package/dist/client/assets/{tooltipContext-C2tBhXWj.js → tooltipContext-BE-wVVaN.js} +1 -1
- package/dist/client/assets/{track-C7T3Q_NS.js → track-DLlAvgye.js} +1 -1
- package/dist/client/assets/{types-CRdMnwkp.js → types-Cgw14OXs.js} +1 -1
- package/dist/client/assets/{url-slug-DUBa3zVK.js → url-slug-DwegcalB.js} +1 -1
- package/dist/client/assets/{usage-stats-C9C7AU7H.js → usage-stats-DUSZbgQM.js} +1 -1
- package/dist/client/assets/{use-ai-providers-DVBJIa-_.js → use-ai-providers-BOLylj9n.js} +1 -1
- package/dist/client/assets/{use-apply-named-rule-CjRIJJWs.js → use-apply-named-rule-DZIa-otS.js} +1 -1
- package/dist/client/assets/{use-automations-DIvmuRlE.js → use-automations-xMTC389u.js} +1 -1
- package/dist/client/assets/{use-autosave-D0tBxxQ8.js → use-autosave-BK1o7sId.js} +1 -1
- package/dist/client/assets/{use-chat-layout-state-Aa4VqEQx.js → use-chat-layout-state-BtaZCsN0.js} +1 -1
- package/dist/client/assets/{use-clock-tick-UQl4M1J5.js → use-clock-tick-CViWLJW6.js} +1 -1
- package/dist/client/assets/{use-cms-publish-actions-c5y_nfEn.js → use-cms-publish-actions-B2liybYe.js} +1 -1
- package/dist/client/assets/{use-connect-companion-BPn2REj-.js → use-connect-companion-DjNwgdvN.js} +1 -1
- package/dist/client/assets/{use-connection-DVSix2AF.js → use-connection-CUQEiOKF.js} +1 -1
- package/dist/client/assets/{use-copy-C6zGg71V.js → use-copy-BuVlDvqK.js} +1 -1
- package/dist/client/assets/{use-create-virtual-mcp-5nIGXG87.js → use-create-virtual-mcp-CMOkfmhX.js} +1 -1
- package/dist/client/assets/{use-date-fns-locale-DS-Izx-9.js → use-date-fns-locale-CgxGKPOF.js} +1 -1
- package/dist/client/assets/{use-debounced-autosave-DwOKfyXg.js → use-debounced-autosave-Cnvr2tML.js} +1 -1
- package/dist/client/assets/{use-debounced-value-Chk6vawl.js → use-debounced-value-T1nAopdz.js} +1 -1
- package/dist/client/assets/{use-deco-credits-B32-9i_a.js → use-deco-credits-Dnc_MUtc.js} +1 -1
- package/dist/client/assets/{use-decopilot-events-B5qoi0Wr.js → use-decopilot-events-U5tAu9TR.js} +1 -1
- package/dist/client/assets/{use-delete-connection-DLjMAPog.js → use-delete-connection-DL_8OV14.js} +1 -1
- package/dist/client/assets/{use-deployment-admin-CuHcgI6F.js → use-deployment-admin-mCVhcBbt.js} +1 -1
- package/dist/client/assets/{use-fast-preview-draft-url-eu2nT6W8.js → use-fast-preview-draft-url-B892eFex.js} +1 -1
- package/dist/client/assets/{use-file-configs-Cr0gwmd8.js → use-file-configs-zjL2Msx1.js} +1 -1
- package/dist/client/assets/{use-inbox-feed-D4K-P1LA.js → use-inbox-feed-BkBIKtGQ.js} +1 -1
- package/dist/client/assets/{use-infinite-scroll-asA1-tf9.js → use-infinite-scroll-BEBXnjbr.js} +1 -1
- package/dist/client/assets/{use-join-requests-CkkZxs_r.js → use-join-requests-CStaZ0cx.js} +1 -1
- package/dist/client/assets/{use-main-panel-tabs-Dy-Y3oMc.js → use-main-panel-tabs-CtFzsSwR.js} +1 -1
- package/dist/client/assets/{use-mcp-auth-status-DqE0wx72.js → use-mcp-auth-status-CX42fxSK.js} +1 -1
- package/dist/client/assets/{use-mcp-client-liHKfpfj.js → use-mcp-client-C7hfgna6.js} +1 -1
- package/dist/client/assets/{use-mcp-prompts-cYDRO3Kp.js → use-mcp-prompts-DG16xOih.js} +1 -1
- package/dist/client/assets/{use-mcp-tools-iSL8qiEx.js → use-mcp-tools-DHAm-mZ9.js} +1 -1
- package/dist/client/assets/{use-mobile-XeH7HFdg.js → use-mobile-OZeYs1sc.js} +1 -1
- package/dist/client/assets/{use-move-blocks-Bkqfi8fY.js → use-move-blocks-DZRs2Tq4.js} +1 -1
- package/dist/client/assets/{use-navigate-to-agent-Ba4TBBON.js → use-navigate-to-agent-BTGHN1oT.js} +1 -1
- package/dist/client/assets/{use-org-fs-DNlQgLUG.js → use-org-fs-DuMRrW4w.js} +1 -1
- package/dist/client/assets/{use-org-repo-syncs-MkA3X0Ud.js → use-org-repo-syncs-DuwuKFY_.js} +1 -1
- package/dist/client/assets/{use-org-sso-ZqYOnTZ9.js → use-org-sso-ColRK-4Z.js} +1 -1
- package/dist/client/assets/{use-organization-roles-cbSQbTbx.js → use-organization-roles-BNigfcRy.js} +1 -1
- package/dist/client/assets/{use-organization-settings-C_uyrpUI.js → use-organization-settings-CklqK5BR.js} +1 -1
- package/dist/client/assets/{use-panel-navigate-DIX895ki.js → use-panel-navigate-BOjorSi_.js} +1 -1
- package/dist/client/assets/{use-project-native-view-presence-r0Gkk_5E.js → use-project-native-view-presence-CpqSv0YX.js} +1 -1
- package/dist/client/assets/{use-project-scope-C98g-M0M.js → use-project-scope-OhYmpl-f.js} +1 -1
- package/dist/client/assets/{use-recent-apps-Bp9mI3Hn.js → use-recent-apps-BeUhaRzW.js} +1 -1
- package/dist/client/assets/{use-releases-RUoL1asP.js → use-releases-BLEwTEPV.js} +1 -1
- package/dist/client/assets/{use-reports-diagnostic-CJqF-DdT.js → use-reports-diagnostic-CtztGq91.js} +1 -1
- package/dist/client/assets/{use-sandbox-events-COXHFEXL.js → use-sandbox-events-BVKGc322.js} +1 -1
- package/dist/client/assets/{use-secrets-BLT_VvH0.js → use-secrets-DylsrZo5.js} +1 -1
- package/dist/client/assets/{use-section-preview-base-BHeBUNI1.js → use-section-preview-base-h_pomxT5.js} +1 -1
- package/dist/client/assets/{use-session-runtime-Cass8jgv.js → use-session-runtime-BlwCZ3_M.js} +1 -1
- package/dist/client/assets/{use-sidebar-collapsed-DTxIOS-x.js → use-sidebar-collapsed-DcUeoIyv.js} +1 -1
- package/dist/client/assets/{use-tags-CrjLMu_-.js → use-tags-CG8gfaqc.js} +1 -1
- package/dist/client/assets/{use-task-board-analytics-C2n2_51H.js → use-task-board-analytics-BcQ8xsa4.js} +1 -1
- package/dist/client/assets/{use-task-board-events-D5XnGFaO.js → use-task-board-events-Uth7T32r.js} +1 -1
- package/dist/client/assets/{use-task-board-item-prs-CSoHUx1b.js → use-task-board-item-prs-X8lLBwzK.js} +1 -1
- package/dist/client/assets/{use-task-metadata-C7aK-HiB.js → use-task-metadata-J0TFwvf-.js} +1 -1
- package/dist/client/assets/{use-thread-analytics-u-QN-pcv.js → use-thread-analytics-D_7l5iPc.js} +1 -1
- package/dist/client/assets/{use-thread-outputs-BkxphpfI.js → use-thread-outputs-Cfs5YYcH.js} +1 -1
- package/dist/client/assets/useInfiniteQuery-BeSDpZ7K.js +1 -0
- package/dist/client/assets/{useQueries-Rmt36TSN.js → useQueries-CGzYxGrD.js} +1 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-CQ7lINLo.js +1 -0
- package/dist/client/assets/{users-DaTm0LIa.js → users-DQmvpPZK.js} +1 -1
- package/dist/client/assets/{utils-DF3h1YFq.js → utils-VIj0edpp.js} +1 -1
- package/dist/client/assets/{variant-calendar-6x1UYIC-.js → variant-calendar-FArzy9OJ.js} +1 -1
- package/dist/client/assets/{variant-matcher-override-nKaBGWQ5.js → variant-matcher-override-BcRlTW4r.js} +1 -1
- package/dist/client/assets/{view-header-DhqNDwWw.js → view-header-2IYyW_vA.js} +1 -1
- package/dist/client/assets/{virtual-mcp-Bp27ph4n.js → virtual-mcp-BTjE71TS.js} +1 -1
- package/dist/client/assets/{watch-sse-pool-62BerBh7.js → watch-sse-pool-6Jke1Dx5.js} +1 -1
- package/dist/client/index.html +1 -1
- package/dist/server/server.js +1 -1
- package/package.json +1 -1
- package/dist/client/assets/agent-app-C7973U1b.js +0 -1
- package/dist/client/assets/agent-deck-DO5ISfla.js +0 -1
- package/dist/client/assets/agent-experiments-ZN8qK48q.js +0 -1
- package/dist/client/assets/agent-library-CZ7enUY0.js +0 -1
- package/dist/client/assets/agent-library-file-Isa4z3AB.js +0 -1
- package/dist/client/assets/agent-monitor-C2K3A6Za.js +0 -1
- package/dist/client/assets/agent-settings-ChMTEbgI.js +0 -1
- package/dist/client/assets/agent-site-editor-code-C_tlYT7V.js +0 -2
- package/dist/client/assets/agent-site-editor-content-BacOmakn.js +0 -1
- package/dist/client/assets/agent-site-editor-preview-WL-FCHY4.js +0 -1
- package/dist/client/assets/agent-view-BkMQ3DXr.js +0 -1
- package/dist/client/assets/api-keys-BDj5b6nN.js +0 -1
- package/dist/client/assets/library-C8H8nQx2.js +0 -1
- package/dist/client/assets/project-feed-CykWxmDT.js +0 -1
- package/dist/client/assets/project-reports-BMBo-hKU.js +0 -1
- package/dist/client/assets/project-tasks-DVakkLu4.js +0 -1
- package/dist/client/assets/record-editor-B606zRBI.js +0 -1
- package/dist/client/assets/reports-BsuVeMpD.js +0 -1
- package/dist/client/assets/repositories-CNBPJbW9.js +0 -1
- package/dist/client/assets/route-D6RbDGc3.js +0 -1
- package/dist/client/assets/settings-tab-DU-L5-CZ.js +0 -1
- package/dist/client/assets/site-editor-BfXsVuJf.js +0 -1
- package/dist/client/assets/tasks-D4NYojIN.js +0 -1
- package/dist/client/assets/useInfiniteQuery-BYZFn0Hg.js +0 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-BjfsGxpD.js +0 -1
package/dist/server/server.js
CHANGED
|
@@ -4556,7 +4556,7 @@ ${X}`:`${Y}
|
|
|
4556
4556
|
|
|
4557
4557
|
${X}
|
|
4558
4558
|
${J.slice(Y.length).trimStart()}`}function HE8($){return $?.match(fF5)?.[1]?.toLowerCase()??null}async function uF5($,Z,Q){let[Y,X]=await Promise.all([$.client.listDecofileEntries(Z,$.packagePath),$.client.listDecofileEntries(Q,$.packagePath)]),J=new Map(WW(Y,$.packagePath).map((H)=>[H.path,H.sha])),G=WW(X,$.packagePath),W=new Set(G.map((H)=>H.path)),K=[];for(let H of G){if(J.get(H.path)===H.sha)continue;K.push({path:H.path,copyFromRef:Q})}for(let H of J.keys())if(!W.has(H))K.push({path:H,deleted:!0});return{changes:K,tree:Y,next:G.map((H)=>({stem:H.stem,sha:H.sha}))}}async function KE8($,Z){try{return await ZY0($.client,$.packagePath,Z)}catch(Q){if(Q instanceof g2)return null;throw Q}}async function FE8($,Z,Q){let Y=YO($.packagePath),[X,J]=await Promise.all([$.client.getEntriesAtPaths(Z,[Y]),$.client.getEntriesAtPaths(Q,[Y])]);if(X.get(Y)?.sha===J.get(Y)?.sha)return!1;let[G,W]=await Promise.all([KE8($,Z),KE8($,Q)]);return G!==W}async function UE8($,Z){if(!oB0(Z))throw new Bl;if(!await jq1($.store,$.site,Z))throw new Bl}async function NE8($,Z){await UE8($,Z);let Q=await C5($.client,$.mainBranch);return FE8($,Q,Z)}async function BE8($,Z,Q={},Y={}){await UE8($,Z);let X=await $.client.readCommit(Z);if(!X)throw new Bl;let J=await C5($.client,$.mainBranch),G=await uF5($,J,Z);if(G.changes.length===0)return{result:"up-to-date"};let W=await FE8($,J,Z);if(W)console.info("hosted reapply: schema differs",{site:$.site,target:Z,head:J});let K=await wq1($,J,G,hF5(X,Z,Q.coAuthor));return{result:"merged",sha:K,release:await Xh0($,K,Y),schemaChanged:W}}var Bl,xF5="Reapplied-From",fF5;var Tq1=L(()=>{Ap();W5();iK();JB();YY0();Yh0();WE8();Bl=class Bl extends Error{constructor(){super("This commit has no release");this.name="NotPublishedError"}};fF5=/^Reapplied-From:\s*([0-9a-f]{40})\s*$/im});async function DE8($,Z,Q){let[Y,X,J]=await Promise.all([QY0($.store,$.site),G2$($.store,$.site),Z.listCommits({ref:$.mainBranch,since:mF5,cursor:Q,limit:lF5})]),G=new Map(J.items.map((H)=>[H.sha,H.date])),W=J.items.map((H)=>HE8(H.body));await Promise.all([...new Set(W)].filter((H)=>H!==null&&!G.has(H)).map(async(H)=>{let F=await $.client.readCommit(H).catch(()=>null);if(F)G.set(H,F.date)}));let K=J.items.map((H,F)=>{let U=W[F];return{sha:H.sha,date:H.date,message:H.message,author:H.author.name??H.author.login,hasRelease:X.has(H.sha),reapplyOf:U?{sha:U,date:G.get(U)??null}:null}});return{current:Y,commits:K,nextCursor:J.nextCursor}}async function LE8($){let Z=await C5($.client,$.mainBranch),Q=await Eq1($,Z);return Pq1($,{revision:Z,schemaHash:Q,publishedAt:new Date().toISOString()})}var lF5=50,mF5="1970-01-01T00:00:00Z";var OE8=L(()=>{W5();JB();YY0();Tq1()});function jE8($){return`site-tokens:${$}`}function cF5($){let Z=$?.tokens;if(!Array.isArray(Z))return[];return Z.filter((Q)=>typeof Q==="object"&&Q!==null&&typeof Q.kid==="string"&&typeof Q.iat==="number")}function wE8($){return crypto.subtle.importKey("pkcs8",Buffer.from($,"base64"),{name:"Ed25519"},!1,["sign"])}async function dF5($,Z){let Q=(J)=>qq1(new TextEncoder().encode(JSON.stringify(J))),Y=`${Q({alg:"EdDSA",typ:"JWT"})}.${Q({site:Z.site,kid:Z.kid,iat:Z.iat})}`,X=await crypto.subtle.sign({name:"Ed25519"},$,new TextEncoder().encode(Y));return`${Y}.${qq1(X)}`}function EE8($){let Z=async(Q,Y)=>cF5(await $.kv.get(Q,jE8(Y)));return{list:Z,async issue(Q,Y){let X=await Z(Q,Y),J={kid:qq1(crypto.getRandomValues(new Uint8Array(16))),iat:Math.floor(Date.now()/1000)},G=await dF5(await $.signingKey(),{site:Y,...J});return await $.kv.set(Q,jE8(Y),{tokens:[...X,J]}),{token:G,record:J}}}}var qq1=($)=>Buffer.from($ instanceof Uint8Array?$:new Uint8Array($)).toString("base64url");function pF5(){let $=cq();return $?{store:$,purge:$h0()}:null}async function Fh0($){let Z=$.var.delivery();if(!Z)return null;let Q=$.get("hostedProject"),Y=await $.var.repoClientFor($.var.studioContext,Q.organizationId,Q.repository);return{client:Y,packagePath:Q.packagePath,mainBranch:await Y.getDefaultBranch(),store:Z.store,purge:Z.purge,site:Q.site,previewHosts:await Zh0({site:Q.site,metadata:Q.metadata,domains:$.var.siteDomains})}}function PE8($){let Z=B0().siteTokenSigningKey;if(!Z)return null;return EE8({kv:$.var.studioContext.storage.kv,signingKey:()=>wE8(Z)})}function ds($,Z){let Q=Z instanceof Error?Z.message:String(Z);if(Z instanceof g2)return $.json({error:Q},409);if(Z instanceof Jh0)return console.error("hosted: latest.json update failed",{error:Q}),$.json({error:"latest-update-failed"},502);let Y=x3(Z);if(Y!==null)return $.json({error:Q},Y===404?404:502);return console.error("hosted: request failed",{error:Q}),$.json({error:Q},500)}function zE8($={}){let Z=new $1,Q=$.repoClientFor??y3,Y=$.insightsFor??HE$,X=$.delivery??pF5;return Z.use("*",async(J,G)=>{J.set("repoClientFor",Q),J.set("delivery",X),J.set("siteDomains",$.siteDomains),await G()}),Z.use("/:virtualMcpId/*",iF5),Z.get("/:virtualMcpId/releases",async(J)=>{try{let G=await Fh0(J);if(!G)return J.json(Hh0,503);let W=J.get("hostedProject"),K=await Y(J.var.studioContext,W.organizationId,W.repository);return J.json(await DE8(G,K,J.req.query("cursor")??null),200,{"Cache-Control":"no-store"})}catch(G){return ds(J,G)}}),Z.post("/:virtualMcpId/releases/retry",async(J)=>{try{let G=await Fh0(J);if(!G)return J.json(Hh0,503);let W=await J.req.json().catch(()=>({})),K=await LE8(G),H=J.var.studioContext.auth?.user?.id;if(typeof W.branch==="string"&&W.branch&&typeof W.draftEtag==="string"&&W.draftEtag&&H){let F=J.get("hostedProject");await zq1(G,eB0({kv:J.var.studioContext.storage.kv,store:G.store}),{organizationId:F.organizationId,virtualMcpId:F.virtualMcpId,branch:W.branch,site:F.site,editor:H},W.draftEtag)}return J.json({current:K})}catch(G){return ds(J,G)}}),Z.get("/:virtualMcpId/releases/:sha/reapply",async(J)=>{try{let G=await Fh0(J);if(!G)return J.json(Hh0,503);return J.json({schemaChanged:await NE8(G,J.req.param("sha"))})}catch(G){if(G instanceof Bl)return J.json({error:G.message},404);return ds(J,G)}}),Z.post("/:virtualMcpId/releases/:sha/reapply",async(J)=>{try{let G=await Fh0(J);if(!G)return J.json(Hh0,503);let W=await BE8(G,J.req.param("sha"),{coAuthor:NO(J.var.studioContext)});return J.json(W)}catch(G){if(G instanceof Bl)return J.json({error:G.message},404);if(G instanceof Nl)return J.json({error:"main-moved"},409);return ds(J,G)}}),Z.get("/:virtualMcpId/site-tokens",async(J)=>{let G=J.get("hostedProject"),W=PE8(J);if(!W)return J.json({error:"site tokens not configured"},503);return J.json({site:G.site,tokens:await W.list(G.organizationId,G.site)})}),Z.post("/:virtualMcpId/site-tokens",async(J)=>{let G=J.get("hostedProject"),W=PE8(J);if(!W)return J.json({error:"site tokens not configured"},503);try{let K=await J.var.repoClientFor(J.var.studioContext,G.organizationId,G.repository),H=await dq(K,G.packagePath,await K.getDefaultBranch());if(await hi(J.var.studioContext.storage.virtualMcps,{id:G.virtualMcpId,organizationId:G.organizationId,metadata:G.metadata},H,J.var.studioContext.auth?.user?.id??"system"),!H)return J.json({error:"not a Blocks v8 site"},409);return J.json(await W.issue(G.organizationId,G.site))}catch(K){return ds(J,K)}}),Z}var iF5,Hh0;var AE8=L(()=>{hF();H8();gg0();C3();uF();W5();JB();Hq1();$D0();YY0();Oq1();Yh0();OE8();Tq1();n40();iq();gi();l1();lP();iF5=Ss(async($,Z)=>{let Q=$.var.studioContext,Y=Q.organization;if(!Y)return $.json({error:"Organization scope required"},500);if(!Q.auth?.user?.id)return $.json({error:"Unauthorized"},401);if(!await qQ(Q,Y.id,"cms"))return $.json({error:"This organization's plan does not include the CMS",code:"feature_not_in_plan"},403);let X=$.req.param("virtualMcpId")??"",J=await Q.storage.virtualMcps.findById(X);if(!J||J.organization_id!==Y.id)return $.json({error:"Virtual MCP not found"},404);if(!CQ(await e7(Q),X))return $.json({error:"Virtual MCP not found"},404);let G=J.metadata??null,W=NW(G,J.connections?.map((H)=>H.connection_id)??[]);if(!W)return $.json({error:"Project has no repository"},404);try{let H=await $.var.repoClientFor(Q,Y.id,W);if(!await QD0({projects:Q.storage.virtualMcps,project:{id:X,organizationId:Y.id,metadata:G},by:Q.auth.user.id,client:H,mainBranch:await H.getDefaultBranch()}))return $.json({error:"Not found"},404)}catch(H){return ds($,H)}let K=await ZD0(Q.storage.orgSites,X,Y.id);if(!K)return $.json(yi,409);return $.set("hostedProject",{organizationId:Y.id,virtualMcpId:X,site:K,packagePath:GB(G),repository:W,metadata:G}),Z()}),Hh0={error:"hosted delivery not configured"}});var TE8=($)=>{let Z=new $1;if(Z.use("*",Zs),Z.use("*",vN8),Z.route("/",SN8($.voiceSessions)),Z.route("/",dy0()),Z.route("/",wB8()),Z.route("/",CB8()),Z.route("/",BB8()),Z.route("/",bO8()),Z.route("/",fO8()),Z.route("/",MO8()),Z.route("/",_O8()),Z.route("/",IO8()),Z.route("/",xg0()),Z.route("/tools",cO8()),Z.route("/",uO8()),Z.route("/",GO8({kvStorage:$.kvStorage})),Z.route("/",XO8()),Z.route("/fs",jO8({getConnection:$.getNatsConnection})),Z.route("/sandbox",Hw8()),Z.route("/decofile",QE8()),Z.route("/hosted",zE8()),Z.route("/",TO8()),Z.route("/",EO8()),Z.route("/deco-sites",py0()),Z.route("/hosting",dN8()),Z.route("/monitor",QB8()),Z.route("/order-monitor",HB8()),Z.route("/sso",gy0()),Z.route("/",fg0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",hN8()),$.mountDevAssets)Z.route("/dev-assets",ey0({orgFromPath:!0}));Z.use("/mcp/:connectionId?",$.mcpAuth),Z.use("/mcp/:connectionId/ui-resource",$.mcpAuth),Z.use("/mcp/gateway/:virtualMcpId?",$.mcpAuth),Z.use("/mcp/virtual-mcp/:virtualMcpId?",$.mcpAuth),Z.use("/mcp/self",$.mcpAuth);for(let Q of AT1)Z.use(`${Q}/:threadId`,$.mcpAuth);Z.route("/",TG8()),Z.get("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",$.betterAuthProtectedResourceHandler),Z.get("/mcp/.well-known/oauth-protected-resource",$.betterAuthProtectedResourceHandler);for(let Q of AT1)Z.route(Q,zO8());return Z.route("/mcp",Qx0()),Z.route("/mcp/self",Sg0()),Z.route("/mcp",Jx0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var qE8=L(()=>{H8();_N8();bN8();Vy0();uN8();o21();iN8();YB8();FB8();$g0();C2();d21();EB8();ZA1();JO8();WO8();wO8();PO8();GZ0();x21();Gx0();zT1();AO8();qO8();VO8();kO8();RT1();xO8();yO8();lO8();MT1();dO8();VT1();Yx0();Fw8();YE8();AE8()});import{z as Dl}from"zod";class Rq1{adapter;getConnection;kvPromise;constructor($,Z){this.adapter=$;this.getConnection=Z}kv(){let $=this.getConnection();if(!$||$.isClosed())throw new R1(503,{message:"Voice transport is unavailable"});return this.kvPromise??=new VE8.Kvm(Uh0.jetstream($)).create("STUDIO_VOICE_SESSIONS",{storage:Uh0.StorageType.Memory,ttl:IE8.nanos(SO),max_bytes:10485760}).catch((Z)=>{throw this.kvPromise=void 0,Z}),this.kvPromise}async conversationAgent($){let Z=await this.kv(),Q=`agent.${$.conversationKey}`,Y=Date.now()+45000;while(Date.now()<Y){let X=await Z.get(Q),J=X?.operation==="PUT"?ME8.parse(X.json()):null;if(J?.state==="ready")return J.agentId;if(J?.state==="creating"&&J.expiresAt>Date.now()){await G$(200);continue}let G=RE8.encode(JSON.stringify({state:"creating",expiresAt:Date.now()+40000})),W;try{W=X&&J?await Z.update(Q,G,X.revision):await Z.create(Q,G)}catch{await G$(200);continue}try{let K=await $.ensureConversationAgent();return await Z.update(Q,RE8.encode(JSON.stringify({state:"ready",agentId:K})),W),K}catch(K){throw await Z.delete(Q,{previousSeq:W}).catch(()=>{}),K}}throw new R1(503,{message:"Voice conversation is starting; try again"})}async createSession($){let Z=this.adapter.forConversationModel($.model),Q=await this.conversationAgent(Z);try{return{provider:"elevenlabs",conversationToken:await Z.createConversationToken(Q)}}catch(Y){let X=await this.kv(),J=`agent.${Z.conversationKey}`,G=await X.get(J),W=G?.operation==="PUT"?ME8.parse(G.json()):null;if(G&&W?.state==="ready"&&W.agentId===Q)await X.delete(J,{previousSeq:G.revision}).catch(()=>{});throw Y}}}var Uh0,VE8,IE8,RE8,ME8;var kE8=L(()=>{K3();SB();g$();Uh0=_(pH(),1),VE8=_(jq(),1),IE8=_(KA(),1),RE8=new TextEncoder,ME8=Dl.discriminatedUnion("state",[Dl.object({state:Dl.literal("ready"),agentId:Dl.string()}),Dl.object({state:Dl.literal("creating"),expiresAt:Dl.number()})])});import{z as is}from"zod";function nF5($){return{model:$.model,instructions:`${sd$}
|
|
4559
|
-
Start in ${$.language==="pt"?"Brazilian Portuguese":"English"}, and follow the user's language.`,delegation:{type:"client"},audio:{output:{voice:$.voice}},store:!1}}class Mq1{config;constructor($){this.config=$}async createSession(){return{provider:"openai",transport:"webrtc"}}async negotiate($){let Z=await fetch("https://api.openai.com/v1/live/sessions",{method:"POST",headers:{Authorization:`Bearer ${this.config.apiKey}`,"Content-Type":"application/json","OpenAI-Safety-Identifier":$.safetyIdentifier},body:JSON.stringify({session:nF5({...this.config,language:$.language,model:$.model}),transport:{type:"webrtc",sdp:$.sdp}}),signal:AbortSignal.timeout(15000)});if(!Z.ok)throw await Z.body?.cancel(),Error(`OpenAI Live request failed (${Z.status})`);return{sdp:is.object({session:is.object({id:is.string().min(1)}),transport:is.object({type:is.literal("webrtc"),sdp:is.string().min(1).max(1e5)})}).parse(await Z.json()).transport.sdp}}}var CE8=L(()=>{SB()});var SE8;var _E8=L(()=>{SE8=[{name:"delegate_to_agent",description:"Submit a complete request to the selected Studio agent. Returns after acceptance while work continues in the background. Results arrive later.",parameters:{type:"object",properties:{request:{type:"string",description:"The complete user request, with relevant conversational details. Preserve intent and constraints."}},required:["request"]}},{name:"get_agent_status",description:"Read the current chat's work status and known results. This does not track independent organization tasks; delegate fresh task-status queries to the Studio agent. Use when asked, never poll.",parameters:{type:"object",properties:{}}},{name:"stop_agent_work",description:"Request cancellation in the current chat ONLY when the user explicitly asks. Speaking over the companion is not cancellation. To stop independent tasks, delegate that request to the Studio agent.",parameters:{type:"object",properties:{}}}]});function Vq1($){return{conversation_config:{agent:{first_message:"",language:"en",prompt:{prompt:td$,llm:$.conversationModel,thinking_budget:0,max_tokens:512,tools:SE8.map((Z)=>({...Z,type:"client",expects_response:!0,response_timeout_secs:Z.name==="delegate_to_agent"?20:5,...Z.name==="delegate_to_agent"?{execution_mode:"async",interruption_mode:"allow",pre_tool_speech:"off"}:{}}))}},asr:{provider:"scribe_realtime",quality:"high"},turn:{turn_eagerness:"normal",turn_timeout:-1,silence_end_call_timeout:-1},tts:{voice_id:$.voiceId,model_id:$.model},conversation:{max_duration_seconds:SO/1000,client_events:["audio","interruption","user_transcript","agent_response","client_tool_call","vad_score"]}},platform_settings:{auth:{enable_auth:!0},privacy:{record_voice:!1,retention_days:1,delete_audio:!0,delete_transcript_and_pii:!0},overrides:{conversation_config_override:{agent:{language:!0}}}}}}var vE8=L(()=>{SB();_E8()});import{z as sJ}from"zod";import{createHash as tF5,createHmac as oF5}from"crypto";class Nh0{config;conversationKey;configurationKey;constructor($){this.config=$;this.configurationKey=tF5("sha256").update(JSON.stringify(Vq1($))).digest("hex"),this.conversationKey=oF5("sha256",$.apiKey).update(this.configurationKey).digest("hex")}forConversationModel($){return $===this.config.conversationModel?this:new Nh0({...this.config,conversationModel:$})}async request($,Z,Q){let Y=await fetch(`https://api.elevenlabs.io/v1${$}`,{method:Z===void 0?"GET":"POST",headers:{"xi-api-key":this.config.apiKey,"Content-Type":"application/json"},body:JSON.stringify(Z),signal:Q});if(!Y.ok)throw await Y.body?.cancel(),Error(`ElevenLabs request failed (${Y.status})`);return Y}async ensureConversationAgent(){let $=`Studio voice ${this.configurationKey.slice(0,24)}`,Z=await this.request(`/convai/agents?search=${encodeURIComponent($)}&page_size=100`,void 0,AbortSignal.timeout(15000)),{agents:Q}=sJ.object({agents:sJ.array(sJ.object({agent_id:sJ.string(),name:sJ.string()}))}).parse(await Z.json()),Y=Q.find((J)=>J.name===$);if(Y){let J=await this.request(`/convai/agents/${encodeURIComponent(Y.agent_id)}`,void 0,AbortSignal.timeout(15000));return sJ.object({platform_settings:sJ.object({auth:sJ.object({enable_auth:sJ.literal(!0)})})}).parse(await J.json()),Y.agent_id}let X=await this.request("/convai/agents/create",{name:$,...Vq1(this.config)},AbortSignal.timeout(15000));return sJ.object({agent_id:sJ.string().min(1)}).parse(await X.json()).agent_id}async createConversationToken($){let Z=await this.request(`/convai/conversation/token?agent_id=${encodeURIComponent($)}`,void 0,AbortSignal.timeout(15000));return sJ.object({token:sJ.string().min(1)}).parse(await Z.json()).token}async createTranscriptionToken(){let $=await this.request("/single-use-token/realtime_scribe",{},AbortSignal.timeout(15000));return sJ.object({token:sJ.string().min(1)}).parse(await $.json()).token}synthesize($,Z){return this.request(`/text-to-speech/${encodeURIComponent(this.config.voiceId)}/stream?output_format=mp3_44100_128`,{text:$,model_id:this.config.model},AbortSignal.any([Z,AbortSignal.timeout(60000)]))}}var bE8=L(()=>{vE8()});import{createHmac as sF5,timingSafeEqual as aF5}from"crypto";import{z as ps}from"zod";function fE8($,Z){if(!Z)throw Error("Voice requires a shared authentication secret");return sF5("sha256",Z).update(`studio-voice-session:v1:${$}`).digest("base64url")}function yE8($,Z){let Q=Buffer.from(JSON.stringify(xE8.parse($))).toString("base64url");return`${Q}.${fE8(Q,Z)}`}function gE8($,Z,Q=Date.now()){if(!Z||$.length>4096)return null;let Y=$.split(".");if(Y.length!==2)return null;let[X,J]=Y;if(!X||!J)return null;let G=Buffer.from(fE8(X,Z)),W=Buffer.from(J);if(W.length!==G.length||!aF5(W,G))return null;try{let K=xE8.safeParse(JSON.parse(Buffer.from(X,"base64url").toString()));if(!K.success||K.data.expiresAt<=Q||K.data.expiresAt>Q+SO)return null;return K.data}catch{return null}}var xE8;var hE8=L(()=>{SB();xE8=ps.object({sessionId:ps.string().uuid(),organizationId:ps.string().min(1).max(256),userId:ps.string().min(1).max(256),threadId:ps.string().min(1).max(256),expiresAt:ps.number().int().positive()})});import{z as Iq1}from"zod";function uE8($,Z){if(Z?.voice_model!=null&&Z.voice_provider==null)throw Error("A voice model override requires a provider");let Q=Z?.voice_provider??$.voiceConversationProvider;return kq1.parse({provider:Q,model:Z?.voice_model??(Q==="openai"?$.openaiLiveModel:$.elevenlabsConversationModel)})}var kq1;var lE8=L(()=>{kq1=Iq1.object({provider:Iq1.enum(["elevenlabs","openai"]),model:Iq1.string().trim().min(1).max(128)})});import{createHash as rF5}from"crypto";import{z as ns}from"zod";function ts($){return`user.${rF5("sha256").update(JSON.stringify([$.organizationId,$.userId])).digest("hex")}`}class Sq1{deps;kvPromise;constructor($){this.deps=$}kv(){let $=this.deps.getConnection();if(!$||$.isClosed())throw new R1(503,{message:"Voice transport is unavailable"});return this.kvPromise??=new mE8.Kvm(Dh0.jetstream($)).create("STUDIO_VOICE_SESSIONS",{storage:Dh0.StorageType.Memory,ttl:cE8.nanos(SO),max_bytes:10485760}).catch((Z)=>{throw this.kvPromise=void 0,Z}),this.kvPromise}adapter(){if(!this.deps.adapter)throw new R1(503,{message:"Voice is not configured on this deployment"});return this.deps.adapter}async create($,Z=!1,Q="en",Y){let X;if(Z)try{X=uE8(this.deps.defaults,Y)}catch{throw new R1(503,{message:"Voice configuration is invalid"})}let J=X?this.deps.conversationAdapters[X.provider]:this.adapter();if(!J)throw new R1(503,{message:"Voice is not configured on this deployment"});let G={...$,sessionId:crypto.randomUUID(),expiresAt:Date.now()+SO},W=yE8(G,this.deps.secret),K=await this.kv(),H=ts(G),F=await K.get(H),U=F?.operation==="PUT"?Bh0.parse(F.json()):null,N=Cq1.encode(JSON.stringify({sessionId:G.sessionId,expiresAt:G.expiresAt,conversation:X,characters:0,requests:0}));try{if(F&&U&&U.expiresAt<=Date.now())await K.update(H,N,F.revision);else await K.create(H,N)}catch{throw new R1(409,{message:"Close your other voice session before starting a new one"})}try{if(X&&"createSession"in J){let D=await J.createSession({language:Q,model:X.model,safetyIdentifier:ts($)});return{token:W,...D,expiresAt:G.expiresAt}}let B=await this.adapter().createTranscriptionToken();return{token:W,transcriptionToken:B,expiresAt:G.expiresAt}}catch(B){throw await this.release(G),B}}authorize($,Z){let Q=gE8(Z,this.deps.secret);if(!Q||Q.organizationId!==$.organizationId||Q.userId!==$.userId||Q.threadId!==$.threadId)throw new R1(403,{message:"Invalid voice session"});return Q}async connect($,Z){let Q=this.authorize($,Z.token),Y=await this.kv(),X=ts(Q),J=await Y.get(X),G=J?.operation==="PUT"?Bh0.parse(J.json()):null;if(!J||!G||G.sessionId!==Q.sessionId||G.expiresAt<=Date.now())throw new R1(403,{message:"Voice session expired"});let W=G.conversation?this.deps.conversationAdapters[G.conversation.provider]:null;if(!W?.negotiate||!G.conversation)throw new R1(409,{message:"Voice session does not support SDP negotiation"});if(G.connected)throw new R1(409,{message:"Voice session already connected"});try{await Y.update(X,Cq1.encode(JSON.stringify({...G,connected:!0})),J.revision)}catch{throw new R1(409,{message:"Voice session is busy"})}return W.negotiate({sdp:Z.sdp,language:Z.language,model:G.conversation.model,safetyIdentifier:X})}async speak($,Z,Q,Y){let X=this.authorize($,Z),J=await this.kv(),G=ts(X);for(let W=0;;W++){let K=await J.get(G),H=K?.operation==="PUT"?Bh0.parse(K.json()):null;if(!K||!H||H.sessionId!==X.sessionId||H.expiresAt<=Date.now())throw new R1(403,{message:"Voice session expired"});if(H.characters+Q.length>24000||H.requests>=120)throw new R1(429,{message:"Voice session speech limit reached"});try{await J.update(G,Cq1.encode(JSON.stringify({...H,characters:H.characters+Q.length,requests:H.requests+1})),K.revision);break}catch{if(W>=2)throw new R1(409,{message:"Voice session is busy"})}}return this.adapter().synthesize(Q,Y)}async release($){let Z=await this.kv(),Q=await Z.get(ts($));if(Q?.operation==="PUT"&&Bh0.parse(Q.json()).sessionId===$.sessionId)await Z.delete(ts($),{previousSeq:Q.revision})}async revoke($,Z){await this.release(this.authorize($,Z))}}var Dh0,mE8,cE8,Bh0,Cq1;var dE8=L(()=>{K3();SB();hE8();lE8();Dh0=_(pH(),1),mE8=_(jq(),1),cE8=_(KA(),1),Bh0=ns.object({sessionId:ns.string().uuid(),expiresAt:ns.number(),connected:ns.boolean().optional(),conversation:kq1.optional(),characters:ns.number().int().nonnegative(),requests:ns.number().int().nonnegative()}),Cq1=new TextEncoder});import{z as c1}from"zod";function LD($,Z="invalid_request_error",Q=null,Y=null){return{error:{message:$,type:Z,param:Q,code:Y}}}function KU5($){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 HU5($,Z,Q){try{return JSON.parse($)}catch{throw new nE8(`Invalid JSON in tool call arguments for function '${Q}' (tool_call_id: ${Z}): ${$}`)}}function FU5($){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:HU5(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 UU5($){let Z=$.map((Q)=>{let Y=Q.function.parameters?IN(Q.function.parameters):IN({type:"object",properties:{}});return[Q.function.name,a$({description:Q.function.description,inputSchema:Y})]});return Object.fromEntries(Z)}function NU5($){if(!$)return;return{openai:{response_format:$}}}function BU5(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function iE8($,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 pE8($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var eF5=256,$U5,ZU5,QU5,YU5,XU5,JU5,GU5,WU5,nE8,tE8,oE8;var sE8=L(()=>{u4();H8();Cs();DU();$U5=c1.object({type:c1.literal("function"),function:c1.object({name:c1.string(),description:c1.string().optional(),parameters:c1.record(c1.string(),c1.unknown()).optional()})}),ZU5=c1.object({id:c1.string(),type:c1.literal("function"),function:c1.object({name:c1.string(),arguments:c1.string()})}),QU5=c1.discriminatedUnion("role",[c1.object({role:c1.literal("system"),content:c1.string(),name:c1.string().optional()}),c1.object({role:c1.literal("user"),content:c1.union([c1.string(),c1.array(c1.union([c1.object({type:c1.literal("text"),text:c1.string()}),c1.object({type:c1.literal("image_url"),image_url:c1.object({url:c1.string(),detail:c1.string().optional()})})]))]),name:c1.string().optional()}),c1.object({role:c1.literal("assistant"),content:c1.string().nullable().optional(),name:c1.string().optional(),tool_calls:c1.array(ZU5).optional()}),c1.object({role:c1.literal("tool"),content:c1.string(),tool_call_id:c1.string()})]),YU5=c1.object({type:c1.literal("text")}),XU5=c1.object({type:c1.literal("json_object")}),JU5=c1.object({type:c1.literal("json_schema"),json_schema:c1.object({name:c1.string(),description:c1.string().optional(),schema:c1.record(c1.string(),c1.unknown()),strict:c1.boolean().optional()})}),GU5=c1.union([YU5,XU5,JU5]),WU5=c1.object({model:c1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:c1.array(QU5),stream:c1.boolean().optional().default(!1),temperature:c1.number().min(0).max(2).optional(),max_tokens:c1.number().positive().optional(),top_p:c1.number().min(0).max(1).optional(),frequency_penalty:c1.number().min(-2).max(2).optional(),presence_penalty:c1.number().min(-2).max(2).optional(),stop:c1.union([c1.string(),c1.array(c1.string())]).optional(),tools:c1.array($U5).optional(),tool_choice:c1.union([c1.literal("auto"),c1.literal("none"),c1.literal("required"),c1.object({type:c1.literal("function"),function:c1.object({name:c1.string()})})]).optional(),response_format:GU5.optional(),user:c1.string().optional()});nE8=class nE8 extends Error{constructor($){super($);this.name="MessageConversionError"}};tE8=new $1;tE8.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),Q=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(LD("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(LD("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(LD("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Y=await $.req.json(),X=WU5.safeParse(Y);if(!X.success){let j=X.error.issues[0]??{message:"Invalid request",path:[]};return $.json(LD(`Invalid request: ${j.message}`,"invalid_request_error",j.path.length>0?j.path.join("."):null),400)}let J=X.data,G=KU5(J.model);if(!G)return $.json(LD("Invalid model format. Expected 'model_id' or 'credential_id:model_id' (e.g., 'claude-sonnet-4-6' or 'key_abc123:claude-sonnet-4-6')","invalid_request_error","model"),400);let{credentialId:W}=G,{modelId:K}=G;if(!W){let w=(await Z.storage.aiProviderKeys.list({organizationId:Z.organization.id})).find((E)=>UT(E.providerId));if(!w)return $.json(LD("No AI provider credentials configured for this organization. Add a credential in settings or specify one explicitly via 'credential_id:model_id'.","invalid_request_error","model"),400);W=w.id}let H;try{H=await Z.aiProviders.activate(W,Z.organization.id)}catch{return $.json(LD(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(K),U=FU5(J.messages),N=J.tools?UU5(J.tools):void 0,B=NU5(J.response_format),D=BU5(),O=Math.floor(Date.now()/1000);if(J.stream)return kj($,async(j)=>{let w=iE8(F,U,N,J,B,$.req.raw.signal);try{let E=qn(w),P=!1,T=0,z="",A=async()=>{if(z.length===0)return;let M=z;z="",await j.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:O,model:J.model,choices:[{index:0,delta:{content:M},finish_reason:null}]})})};for await(let M of E.stream){if(!P&&(M.type==="text-delta"||M.type==="tool-call"))await j.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:O,model:J.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),P=!0;if(M.type==="text-delta"){if(z+=M.text,z.length>=eF5)await A()}else if(M.type==="tool-call"){await A();let f=T++;await j.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:O,model:J.model,choices:[{index:0,delta:{tool_calls:[{index:f,id:M.toolCallId,type:"function",function:{name:M.toolName,arguments:JSON.stringify(M.input)}}]},finish_reason:null}]})})}else if(M.type==="finish")await A(),await j.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:O,model:J.model,choices:[{index:0,delta:{},finish_reason:pE8(M.finishReason)}],usage:M.totalUsage?{prompt_tokens:M.totalUsage.inputTokens??0,completion_tokens:M.totalUsage.outputTokens??0,total_tokens:M.totalUsage.totalTokens??0}:void 0})})}await A(),await j.writeSSE({data:"[DONE]"})}catch(E){let P=E;console.error("[openai-compat:stream] Error:",P.message),await j.writeSSE({data:JSON.stringify({error:{message:P.message,type:"server_error"}})})}});else{let j=iE8(F,U,N,J,B,$.req.raw.signal),w=await bO(j),E={role:"assistant",content:w.text||null};if(w.toolCalls&&w.toolCalls.length>0)E.tool_calls=w.toolCalls.map((P)=>({id:P.toolCallId,type:"function",function:{name:P.toolName,arguments:JSON.stringify("input"in P?P.input:{})}})),E.content=null;return $.json({id:D,object:"chat.completion",created:O,model:J.model,choices:[{index:0,message:E,finish_reason:pE8(w.finishReason)}],usage:{prompt_tokens:w.usage?.inputTokens??0,completion_tokens:w.usage?.outputTokens??0,total_tokens:w.usage?.totalTokens??0}})}}catch(Y){let X=Y;if(X.name==="AbortError")return $.json(LD("Request aborted","invalid_request_error"),400);if(X.name==="MessageConversionError")return $.json(LD(X.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",X.message,X.stack),$.json(LD(X.message,"server_error"),500)}});oE8=tE8});function DU5($){if(typeof $!=="object"||$===null)return!1;let Q=$.repository?.url;return typeof Q==="string"&&Q.length>0}function aE8(){let $=new $1;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=k0(Q);if(!Y)return Z.json({error:"Authentication required"},401);let J=(Z.req.query("site")??"").trim().toLowerCase();if(!l5(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||_9(H))continue;let F=await Q.storage.virtualMcps.list(H.id);for(let U of F){if(vT(U)!==J)continue;if(!DU5(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 rE8=L(()=>{H8();KX()});var Lh0;var _q1=L(()=>{Lh0={name:"decocms",version:"4.532.5",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run dev:server","dev:server":"NODE_ENV=development bun --env-file=.env --watch run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^4.0.58","@ai-sdk/google":"^4.0.76","@ai-sdk/openai":"^4.0.71","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^3.1.0","@opentelemetry/core":"^2.6.0",kysely:"^0.28.12","posthog-node":"^5.0.0"},devDependencies:{"@ai-sdk/provider":"^4.0.17","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/blocks":"8.8.0","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^7.0.107","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});function jU5(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??OU5}}var eE8,OU5="https://ph.studio.decocms.com",$P8;var ZP8=L(()=>{H8();je();dh();B9();l1();Zj();E21();_q1();eE8=new $1;eE8.get("/",($)=>{let Z={version:Lh0.version,theme:P4$(),...GF().logo&&{logo:GF().logo},...pO()&&{internalUrl:P8$()},...B0().enableDecoImport&&{enableDecoImport:!0},hostingEnabled:!!B0().controlplaneRestUrl&&!!B0().controlplaneServiceToken,hostingControlPlaneGa:B0().hostingControlPlaneGa,monitorEnabled:!!B0().clickhouseAnalyticsUrl&&!!B0().clickhouseAnalyticsPassword,monitorGa:B0().monitorGa,orderMonitorEnabled:!!B0().orderMonitorIngestUrl&&xW(),plansEnabled:B0().plansEnabled,auth:PU8(),posthog:jU5(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:_U()}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});$P8=eE8});import{z as M$}from"zod";var wU5,QP8;var YP8=L(()=>{wU5=M$.object({check_id:M$.string(),title:M$.string(),description:M$.string().optional(),impact:M$.string().optional(),why:M$.string().optional(),category:M$.string(),severity:M$.string(),value_band:M$.string().optional(),value_driver:M$.string().optional(),controllability:M$.string().optional(),pages:M$.array(M$.string()),tasks:M$.array(M$.string()),evidence:M$.string(),sample_scope:M$.string().optional(),sources:M$.array(M$.string())}),QP8=M$.object({domain:M$.string(),brand:M$.string(),favicon:M$.string().optional(),scanned_at:M$.string().nullable(),lang:M$.string(),score:M$.number().nullable(),band:M$.string().nullable(),totals:M$.object({measured:M$.number(),registry_total:M$.number(),passed:M$.number(),failed:M$.number(),blocked:M$.number()}),buckets:M$.array(M$.object({id:M$.enum(["critical","important","worth"]),label:M$.string(),items:M$.array(wU5)})),passing:M$.object({count:M$.number(),items:M$.array(M$.object({check_id:M$.string(),title:M$.string()}))}),not_measured:M$.object({count:M$.number(),groups:M$.array(M$.object({reason:M$.string(),label:M$.string(),count:M$.number(),checks:M$.array(M$.string())}))}),categories:M$.array(M$.object({key:M$.string(),label:M$.string(),score:M$.number().nullable(),band:M$.string().nullable(),pass:M$.number(),fail:M$.number()})),screenshots:M$.array(M$.object({url:M$.string(),page_type:M$.string().optional(),viewport:M$.enum(["desktop","mobile"]),image_url:M$.string()}))})});function XP8($,Z,Q){let Y=Q?`?${new URLSearchParams({lang:Q}).toString()}`:"";return`${bK({})}/api/v2/public/diagnostics/${encodeURIComponent($)}/onepager${Z}${Y}`}async function Oh0($,Z={}){let Q=await fetch(XP8($,"",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 QP8.parse(await Q.json())}async function JP8($,Z={}){let Q=await fetch(XP8($,".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 vq1=L(()=>{YP8();mL()});import{join as GP8}from"path";async function PU5($){try{let Z=await Oh0($,{signal:AbortSignal.timeout(EU5)});if(!Z?.scanned_at)return null;return{brand:Z.brand.trim()||lw1($),...Z.score!==null?{score:Z.score}:{}}}catch{return null}}function BG($){return $.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""")}function zU5($,Z){let Q=Au($),Y=Z?.brand?.trim()||lw1(Q),X=EJ8(Q,128),G=`${(B0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(Q)}`,{title:W,description:K}=PJ8({brand:Y,domain:Q,score:Z?.score}),H=`${G}/og.png`,F=`${Y} Deco Score by decocms`;return[`<title>${BG(W)}</title>`,`<meta name="description" content="${BG(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="${BG(W)}" />`,`<meta property="og:description" content="${BG(K)}" />`,`<meta property="og:url" content="${BG(G)}" />`,`<meta property="og:image" content="${BG(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${BG(F)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${BG(W)}" />`,`<meta name="twitter:description" content="${BG(K)}" />`,`<meta name="twitter:image" content="${BG(H)}" />`,`<meta name="twitter:image:alt" content="${BG(F)}" />`,`<link rel="canonical" href="${BG(G)}" />`,`<link rel="alternate" type="text/markdown" href="${BG(G)}.md" />`,`<link rel="icon" href="${BG(X)}" sizes="any" />`].join(`
|
|
4559
|
+
Start in ${$.language==="pt"?"Brazilian Portuguese":"English"}, and follow the user's language.`,delegation:{type:"client"},audio:{output:{voice:$.voice}},store:!1}}class Mq1{config;constructor($){this.config=$}async createSession(){return{provider:"openai",transport:"webrtc"}}async negotiate($){let Z=await fetch("https://api.openai.com/v1/live/sessions",{method:"POST",headers:{Authorization:`Bearer ${this.config.apiKey}`,"Content-Type":"application/json","OpenAI-Safety-Identifier":$.safetyIdentifier},body:JSON.stringify({session:nF5({...this.config,language:$.language,model:$.model}),transport:{type:"webrtc",sdp:$.sdp}}),signal:AbortSignal.timeout(15000)});if(!Z.ok)throw await Z.body?.cancel(),Error(`OpenAI Live request failed (${Z.status})`);return{sdp:is.object({session:is.object({id:is.string().min(1)}),transport:is.object({type:is.literal("webrtc"),sdp:is.string().min(1).max(1e5)})}).parse(await Z.json()).transport.sdp}}}var CE8=L(()=>{SB()});var SE8;var _E8=L(()=>{SE8=[{name:"delegate_to_agent",description:"Submit a complete request to the selected Studio agent. Returns after acceptance while work continues in the background. Results arrive later.",parameters:{type:"object",properties:{request:{type:"string",description:"The complete user request, with relevant conversational details. Preserve intent and constraints."}},required:["request"]}},{name:"get_agent_status",description:"Read the current chat's work status and known results. This does not track independent organization tasks; delegate fresh task-status queries to the Studio agent. Use when asked, never poll.",parameters:{type:"object",properties:{}}},{name:"stop_agent_work",description:"Request cancellation in the current chat ONLY when the user explicitly asks. Speaking over the companion is not cancellation. To stop independent tasks, delegate that request to the Studio agent.",parameters:{type:"object",properties:{}}}]});function Vq1($){return{conversation_config:{agent:{first_message:"",language:"en",prompt:{prompt:td$,llm:$.conversationModel,thinking_budget:0,max_tokens:512,tools:SE8.map((Z)=>({...Z,type:"client",expects_response:!0,response_timeout_secs:Z.name==="delegate_to_agent"?20:5,...Z.name==="delegate_to_agent"?{execution_mode:"async",interruption_mode:"allow",pre_tool_speech:"off"}:{}}))}},asr:{provider:"scribe_realtime",quality:"high"},turn:{turn_eagerness:"normal",turn_timeout:-1,silence_end_call_timeout:-1},tts:{voice_id:$.voiceId,model_id:$.model},conversation:{max_duration_seconds:SO/1000,client_events:["audio","interruption","user_transcript","agent_response","client_tool_call","vad_score"]}},platform_settings:{auth:{enable_auth:!0},privacy:{record_voice:!1,retention_days:1,delete_audio:!0,delete_transcript_and_pii:!0},overrides:{conversation_config_override:{agent:{language:!0}}}}}}var vE8=L(()=>{SB();_E8()});import{z as sJ}from"zod";import{createHash as tF5,createHmac as oF5}from"crypto";class Nh0{config;conversationKey;configurationKey;constructor($){this.config=$;this.configurationKey=tF5("sha256").update(JSON.stringify(Vq1($))).digest("hex"),this.conversationKey=oF5("sha256",$.apiKey).update(this.configurationKey).digest("hex")}forConversationModel($){return $===this.config.conversationModel?this:new Nh0({...this.config,conversationModel:$})}async request($,Z,Q){let Y=await fetch(`https://api.elevenlabs.io/v1${$}`,{method:Z===void 0?"GET":"POST",headers:{"xi-api-key":this.config.apiKey,"Content-Type":"application/json"},body:JSON.stringify(Z),signal:Q});if(!Y.ok)throw await Y.body?.cancel(),Error(`ElevenLabs request failed (${Y.status})`);return Y}async ensureConversationAgent(){let $=`Studio voice ${this.configurationKey.slice(0,24)}`,Z=await this.request(`/convai/agents?search=${encodeURIComponent($)}&page_size=100`,void 0,AbortSignal.timeout(15000)),{agents:Q}=sJ.object({agents:sJ.array(sJ.object({agent_id:sJ.string(),name:sJ.string()}))}).parse(await Z.json()),Y=Q.find((J)=>J.name===$);if(Y){let J=await this.request(`/convai/agents/${encodeURIComponent(Y.agent_id)}`,void 0,AbortSignal.timeout(15000));return sJ.object({platform_settings:sJ.object({auth:sJ.object({enable_auth:sJ.literal(!0)})})}).parse(await J.json()),Y.agent_id}let X=await this.request("/convai/agents/create",{name:$,...Vq1(this.config)},AbortSignal.timeout(15000));return sJ.object({agent_id:sJ.string().min(1)}).parse(await X.json()).agent_id}async createConversationToken($){let Z=await this.request(`/convai/conversation/token?agent_id=${encodeURIComponent($)}`,void 0,AbortSignal.timeout(15000));return sJ.object({token:sJ.string().min(1)}).parse(await Z.json()).token}async createTranscriptionToken(){let $=await this.request("/single-use-token/realtime_scribe",{},AbortSignal.timeout(15000));return sJ.object({token:sJ.string().min(1)}).parse(await $.json()).token}synthesize($,Z){return this.request(`/text-to-speech/${encodeURIComponent(this.config.voiceId)}/stream?output_format=mp3_44100_128`,{text:$,model_id:this.config.model},AbortSignal.any([Z,AbortSignal.timeout(60000)]))}}var bE8=L(()=>{vE8()});import{createHmac as sF5,timingSafeEqual as aF5}from"crypto";import{z as ps}from"zod";function fE8($,Z){if(!Z)throw Error("Voice requires a shared authentication secret");return sF5("sha256",Z).update(`studio-voice-session:v1:${$}`).digest("base64url")}function yE8($,Z){let Q=Buffer.from(JSON.stringify(xE8.parse($))).toString("base64url");return`${Q}.${fE8(Q,Z)}`}function gE8($,Z,Q=Date.now()){if(!Z||$.length>4096)return null;let Y=$.split(".");if(Y.length!==2)return null;let[X,J]=Y;if(!X||!J)return null;let G=Buffer.from(fE8(X,Z)),W=Buffer.from(J);if(W.length!==G.length||!aF5(W,G))return null;try{let K=xE8.safeParse(JSON.parse(Buffer.from(X,"base64url").toString()));if(!K.success||K.data.expiresAt<=Q||K.data.expiresAt>Q+SO)return null;return K.data}catch{return null}}var xE8;var hE8=L(()=>{SB();xE8=ps.object({sessionId:ps.string().uuid(),organizationId:ps.string().min(1).max(256),userId:ps.string().min(1).max(256),threadId:ps.string().min(1).max(256),expiresAt:ps.number().int().positive()})});import{z as Iq1}from"zod";function uE8($,Z){if(Z?.voice_model!=null&&Z.voice_provider==null)throw Error("A voice model override requires a provider");let Q=Z?.voice_provider??$.voiceConversationProvider;return kq1.parse({provider:Q,model:Z?.voice_model??(Q==="openai"?$.openaiLiveModel:$.elevenlabsConversationModel)})}var kq1;var lE8=L(()=>{kq1=Iq1.object({provider:Iq1.enum(["elevenlabs","openai"]),model:Iq1.string().trim().min(1).max(128)})});import{createHash as rF5}from"crypto";import{z as ns}from"zod";function ts($){return`user.${rF5("sha256").update(JSON.stringify([$.organizationId,$.userId])).digest("hex")}`}class Sq1{deps;kvPromise;constructor($){this.deps=$}kv(){let $=this.deps.getConnection();if(!$||$.isClosed())throw new R1(503,{message:"Voice transport is unavailable"});return this.kvPromise??=new mE8.Kvm(Dh0.jetstream($)).create("STUDIO_VOICE_SESSIONS",{storage:Dh0.StorageType.Memory,ttl:cE8.nanos(SO),max_bytes:10485760}).catch((Z)=>{throw this.kvPromise=void 0,Z}),this.kvPromise}adapter(){if(!this.deps.adapter)throw new R1(503,{message:"Voice is not configured on this deployment"});return this.deps.adapter}async create($,Z=!1,Q="en",Y){let X;if(Z)try{X=uE8(this.deps.defaults,Y)}catch{throw new R1(503,{message:"Voice configuration is invalid"})}let J=X?this.deps.conversationAdapters[X.provider]:this.adapter();if(!J)throw new R1(503,{message:"Voice is not configured on this deployment"});let G={...$,sessionId:crypto.randomUUID(),expiresAt:Date.now()+SO},W=yE8(G,this.deps.secret),K=await this.kv(),H=ts(G),F=await K.get(H),U=F?.operation==="PUT"?Bh0.parse(F.json()):null,N=Cq1.encode(JSON.stringify({sessionId:G.sessionId,expiresAt:G.expiresAt,conversation:X,characters:0,requests:0}));try{if(F&&U&&U.expiresAt<=Date.now())await K.update(H,N,F.revision);else await K.create(H,N)}catch{throw new R1(409,{message:"Close your other voice session before starting a new one"})}try{if(X&&"createSession"in J){let D=await J.createSession({language:Q,model:X.model,safetyIdentifier:ts($)});return{token:W,...D,expiresAt:G.expiresAt}}let B=await this.adapter().createTranscriptionToken();return{token:W,transcriptionToken:B,expiresAt:G.expiresAt}}catch(B){throw await this.release(G),B}}authorize($,Z){let Q=gE8(Z,this.deps.secret);if(!Q||Q.organizationId!==$.organizationId||Q.userId!==$.userId||Q.threadId!==$.threadId)throw new R1(403,{message:"Invalid voice session"});return Q}async connect($,Z){let Q=this.authorize($,Z.token),Y=await this.kv(),X=ts(Q),J=await Y.get(X),G=J?.operation==="PUT"?Bh0.parse(J.json()):null;if(!J||!G||G.sessionId!==Q.sessionId||G.expiresAt<=Date.now())throw new R1(403,{message:"Voice session expired"});let W=G.conversation?this.deps.conversationAdapters[G.conversation.provider]:null;if(!W?.negotiate||!G.conversation)throw new R1(409,{message:"Voice session does not support SDP negotiation"});if(G.connected)throw new R1(409,{message:"Voice session already connected"});try{await Y.update(X,Cq1.encode(JSON.stringify({...G,connected:!0})),J.revision)}catch{throw new R1(409,{message:"Voice session is busy"})}return W.negotiate({sdp:Z.sdp,language:Z.language,model:G.conversation.model,safetyIdentifier:X})}async speak($,Z,Q,Y){let X=this.authorize($,Z),J=await this.kv(),G=ts(X);for(let W=0;;W++){let K=await J.get(G),H=K?.operation==="PUT"?Bh0.parse(K.json()):null;if(!K||!H||H.sessionId!==X.sessionId||H.expiresAt<=Date.now())throw new R1(403,{message:"Voice session expired"});if(H.characters+Q.length>24000||H.requests>=120)throw new R1(429,{message:"Voice session speech limit reached"});try{await J.update(G,Cq1.encode(JSON.stringify({...H,characters:H.characters+Q.length,requests:H.requests+1})),K.revision);break}catch{if(W>=2)throw new R1(409,{message:"Voice session is busy"})}}return this.adapter().synthesize(Q,Y)}async release($){let Z=await this.kv(),Q=await Z.get(ts($));if(Q?.operation==="PUT"&&Bh0.parse(Q.json()).sessionId===$.sessionId)await Z.delete(ts($),{previousSeq:Q.revision})}async revoke($,Z){await this.release(this.authorize($,Z))}}var Dh0,mE8,cE8,Bh0,Cq1;var dE8=L(()=>{K3();SB();hE8();lE8();Dh0=_(pH(),1),mE8=_(jq(),1),cE8=_(KA(),1),Bh0=ns.object({sessionId:ns.string().uuid(),expiresAt:ns.number(),connected:ns.boolean().optional(),conversation:kq1.optional(),characters:ns.number().int().nonnegative(),requests:ns.number().int().nonnegative()}),Cq1=new TextEncoder});import{z as c1}from"zod";function LD($,Z="invalid_request_error",Q=null,Y=null){return{error:{message:$,type:Z,param:Q,code:Y}}}function KU5($){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 HU5($,Z,Q){try{return JSON.parse($)}catch{throw new nE8(`Invalid JSON in tool call arguments for function '${Q}' (tool_call_id: ${Z}): ${$}`)}}function FU5($){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:HU5(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 UU5($){let Z=$.map((Q)=>{let Y=Q.function.parameters?IN(Q.function.parameters):IN({type:"object",properties:{}});return[Q.function.name,a$({description:Q.function.description,inputSchema:Y})]});return Object.fromEntries(Z)}function NU5($){if(!$)return;return{openai:{response_format:$}}}function BU5(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function iE8($,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 pE8($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var eF5=256,$U5,ZU5,QU5,YU5,XU5,JU5,GU5,WU5,nE8,tE8,oE8;var sE8=L(()=>{u4();H8();Cs();DU();$U5=c1.object({type:c1.literal("function"),function:c1.object({name:c1.string(),description:c1.string().optional(),parameters:c1.record(c1.string(),c1.unknown()).optional()})}),ZU5=c1.object({id:c1.string(),type:c1.literal("function"),function:c1.object({name:c1.string(),arguments:c1.string()})}),QU5=c1.discriminatedUnion("role",[c1.object({role:c1.literal("system"),content:c1.string(),name:c1.string().optional()}),c1.object({role:c1.literal("user"),content:c1.union([c1.string(),c1.array(c1.union([c1.object({type:c1.literal("text"),text:c1.string()}),c1.object({type:c1.literal("image_url"),image_url:c1.object({url:c1.string(),detail:c1.string().optional()})})]))]),name:c1.string().optional()}),c1.object({role:c1.literal("assistant"),content:c1.string().nullable().optional(),name:c1.string().optional(),tool_calls:c1.array(ZU5).optional()}),c1.object({role:c1.literal("tool"),content:c1.string(),tool_call_id:c1.string()})]),YU5=c1.object({type:c1.literal("text")}),XU5=c1.object({type:c1.literal("json_object")}),JU5=c1.object({type:c1.literal("json_schema"),json_schema:c1.object({name:c1.string(),description:c1.string().optional(),schema:c1.record(c1.string(),c1.unknown()),strict:c1.boolean().optional()})}),GU5=c1.union([YU5,XU5,JU5]),WU5=c1.object({model:c1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:c1.array(QU5),stream:c1.boolean().optional().default(!1),temperature:c1.number().min(0).max(2).optional(),max_tokens:c1.number().positive().optional(),top_p:c1.number().min(0).max(1).optional(),frequency_penalty:c1.number().min(-2).max(2).optional(),presence_penalty:c1.number().min(-2).max(2).optional(),stop:c1.union([c1.string(),c1.array(c1.string())]).optional(),tools:c1.array($U5).optional(),tool_choice:c1.union([c1.literal("auto"),c1.literal("none"),c1.literal("required"),c1.object({type:c1.literal("function"),function:c1.object({name:c1.string()})})]).optional(),response_format:GU5.optional(),user:c1.string().optional()});nE8=class nE8 extends Error{constructor($){super($);this.name="MessageConversionError"}};tE8=new $1;tE8.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),Q=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(LD("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(LD("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(LD("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Y=await $.req.json(),X=WU5.safeParse(Y);if(!X.success){let j=X.error.issues[0]??{message:"Invalid request",path:[]};return $.json(LD(`Invalid request: ${j.message}`,"invalid_request_error",j.path.length>0?j.path.join("."):null),400)}let J=X.data,G=KU5(J.model);if(!G)return $.json(LD("Invalid model format. Expected 'model_id' or 'credential_id:model_id' (e.g., 'claude-sonnet-4-6' or 'key_abc123:claude-sonnet-4-6')","invalid_request_error","model"),400);let{credentialId:W}=G,{modelId:K}=G;if(!W){let w=(await Z.storage.aiProviderKeys.list({organizationId:Z.organization.id})).find((E)=>UT(E.providerId));if(!w)return $.json(LD("No AI provider credentials configured for this organization. Add a credential in settings or specify one explicitly via 'credential_id:model_id'.","invalid_request_error","model"),400);W=w.id}let H;try{H=await Z.aiProviders.activate(W,Z.organization.id)}catch{return $.json(LD(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(K),U=FU5(J.messages),N=J.tools?UU5(J.tools):void 0,B=NU5(J.response_format),D=BU5(),O=Math.floor(Date.now()/1000);if(J.stream)return kj($,async(j)=>{let w=iE8(F,U,N,J,B,$.req.raw.signal);try{let E=qn(w),P=!1,T=0,z="",A=async()=>{if(z.length===0)return;let M=z;z="",await j.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:O,model:J.model,choices:[{index:0,delta:{content:M},finish_reason:null}]})})};for await(let M of E.stream){if(!P&&(M.type==="text-delta"||M.type==="tool-call"))await j.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:O,model:J.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),P=!0;if(M.type==="text-delta"){if(z+=M.text,z.length>=eF5)await A()}else if(M.type==="tool-call"){await A();let f=T++;await j.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:O,model:J.model,choices:[{index:0,delta:{tool_calls:[{index:f,id:M.toolCallId,type:"function",function:{name:M.toolName,arguments:JSON.stringify(M.input)}}]},finish_reason:null}]})})}else if(M.type==="finish")await A(),await j.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:O,model:J.model,choices:[{index:0,delta:{},finish_reason:pE8(M.finishReason)}],usage:M.totalUsage?{prompt_tokens:M.totalUsage.inputTokens??0,completion_tokens:M.totalUsage.outputTokens??0,total_tokens:M.totalUsage.totalTokens??0}:void 0})})}await A(),await j.writeSSE({data:"[DONE]"})}catch(E){let P=E;console.error("[openai-compat:stream] Error:",P.message),await j.writeSSE({data:JSON.stringify({error:{message:P.message,type:"server_error"}})})}});else{let j=iE8(F,U,N,J,B,$.req.raw.signal),w=await bO(j),E={role:"assistant",content:w.text||null};if(w.toolCalls&&w.toolCalls.length>0)E.tool_calls=w.toolCalls.map((P)=>({id:P.toolCallId,type:"function",function:{name:P.toolName,arguments:JSON.stringify("input"in P?P.input:{})}})),E.content=null;return $.json({id:D,object:"chat.completion",created:O,model:J.model,choices:[{index:0,message:E,finish_reason:pE8(w.finishReason)}],usage:{prompt_tokens:w.usage?.inputTokens??0,completion_tokens:w.usage?.outputTokens??0,total_tokens:w.usage?.totalTokens??0}})}}catch(Y){let X=Y;if(X.name==="AbortError")return $.json(LD("Request aborted","invalid_request_error"),400);if(X.name==="MessageConversionError")return $.json(LD(X.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",X.message,X.stack),$.json(LD(X.message,"server_error"),500)}});oE8=tE8});function DU5($){if(typeof $!=="object"||$===null)return!1;let Q=$.repository?.url;return typeof Q==="string"&&Q.length>0}function aE8(){let $=new $1;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=k0(Q);if(!Y)return Z.json({error:"Authentication required"},401);let J=(Z.req.query("site")??"").trim().toLowerCase();if(!l5(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||_9(H))continue;let F=await Q.storage.virtualMcps.list(H.id);for(let U of F){if(vT(U)!==J)continue;if(!DU5(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 rE8=L(()=>{H8();KX()});var Lh0;var _q1=L(()=>{Lh0={name:"decocms",version:"4.532.6",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run dev:server","dev:server":"NODE_ENV=development bun --env-file=.env --watch run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^4.0.58","@ai-sdk/google":"^4.0.76","@ai-sdk/openai":"^4.0.71","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^3.1.0","@opentelemetry/core":"^2.6.0",kysely:"^0.28.12","posthog-node":"^5.0.0"},devDependencies:{"@ai-sdk/provider":"^4.0.17","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/blocks":"8.8.0","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^7.0.107","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});function jU5(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??OU5}}var eE8,OU5="https://ph.studio.decocms.com",$P8;var ZP8=L(()=>{H8();je();dh();B9();l1();Zj();E21();_q1();eE8=new $1;eE8.get("/",($)=>{let Z={version:Lh0.version,theme:P4$(),...GF().logo&&{logo:GF().logo},...pO()&&{internalUrl:P8$()},...B0().enableDecoImport&&{enableDecoImport:!0},hostingEnabled:!!B0().controlplaneRestUrl&&!!B0().controlplaneServiceToken,hostingControlPlaneGa:B0().hostingControlPlaneGa,monitorEnabled:!!B0().clickhouseAnalyticsUrl&&!!B0().clickhouseAnalyticsPassword,monitorGa:B0().monitorGa,orderMonitorEnabled:!!B0().orderMonitorIngestUrl&&xW(),plansEnabled:B0().plansEnabled,auth:PU8(),posthog:jU5(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:_U()}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});$P8=eE8});import{z as M$}from"zod";var wU5,QP8;var YP8=L(()=>{wU5=M$.object({check_id:M$.string(),title:M$.string(),description:M$.string().optional(),impact:M$.string().optional(),why:M$.string().optional(),category:M$.string(),severity:M$.string(),value_band:M$.string().optional(),value_driver:M$.string().optional(),controllability:M$.string().optional(),pages:M$.array(M$.string()),tasks:M$.array(M$.string()),evidence:M$.string(),sample_scope:M$.string().optional(),sources:M$.array(M$.string())}),QP8=M$.object({domain:M$.string(),brand:M$.string(),favicon:M$.string().optional(),scanned_at:M$.string().nullable(),lang:M$.string(),score:M$.number().nullable(),band:M$.string().nullable(),totals:M$.object({measured:M$.number(),registry_total:M$.number(),passed:M$.number(),failed:M$.number(),blocked:M$.number()}),buckets:M$.array(M$.object({id:M$.enum(["critical","important","worth"]),label:M$.string(),items:M$.array(wU5)})),passing:M$.object({count:M$.number(),items:M$.array(M$.object({check_id:M$.string(),title:M$.string()}))}),not_measured:M$.object({count:M$.number(),groups:M$.array(M$.object({reason:M$.string(),label:M$.string(),count:M$.number(),checks:M$.array(M$.string())}))}),categories:M$.array(M$.object({key:M$.string(),label:M$.string(),score:M$.number().nullable(),band:M$.string().nullable(),pass:M$.number(),fail:M$.number()})),screenshots:M$.array(M$.object({url:M$.string(),page_type:M$.string().optional(),viewport:M$.enum(["desktop","mobile"]),image_url:M$.string()}))})});function XP8($,Z,Q){let Y=Q?`?${new URLSearchParams({lang:Q}).toString()}`:"";return`${bK({})}/api/v2/public/diagnostics/${encodeURIComponent($)}/onepager${Z}${Y}`}async function Oh0($,Z={}){let Q=await fetch(XP8($,"",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 QP8.parse(await Q.json())}async function JP8($,Z={}){let Q=await fetch(XP8($,".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 vq1=L(()=>{YP8();mL()});import{join as GP8}from"path";async function PU5($){try{let Z=await Oh0($,{signal:AbortSignal.timeout(EU5)});if(!Z?.scanned_at)return null;return{brand:Z.brand.trim()||lw1($),...Z.score!==null?{score:Z.score}:{}}}catch{return null}}function BG($){return $.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""")}function zU5($,Z){let Q=Au($),Y=Z?.brand?.trim()||lw1(Q),X=EJ8(Q,128),G=`${(B0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(Q)}`,{title:W,description:K}=PJ8({brand:Y,domain:Q,score:Z?.score}),H=`${G}/og.png`,F=`${Y} Deco Score by decocms`;return[`<title>${BG(W)}</title>`,`<meta name="description" content="${BG(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="${BG(W)}" />`,`<meta property="og:description" content="${BG(K)}" />`,`<meta property="og:url" content="${BG(G)}" />`,`<meta property="og:image" content="${BG(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${BG(F)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${BG(W)}" />`,`<meta name="twitter:description" content="${BG(K)}" />`,`<meta name="twitter:image" content="${BG(H)}" />`,`<meta name="twitter:image:alt" content="${BG(F)}" />`,`<link rel="canonical" href="${BG(G)}" />`,`<link rel="alternate" type="text/markdown" href="${BG(G)}.md" />`,`<link rel="icon" href="${BG(X)}" sizes="any" />`].join(`
|
|
4560
4560
|
`)}function AU5($,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}
|
|
4561
4561
|
</head>`)}function WP8($){let Z=new $1;return Z.get("/:domain/og.png",async(Q)=>{let Y=Au(Q.req.param("domain")),X=async()=>{let J=$?Bun.file(GP8($,"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(`${bK({})}/api/v2/public/diagnostics/${encodeURIComponent(Y)}/og.png`,{signal:AbortSignal.timeout(TU5)}),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=Au(Q.req.param("file").replace(/\.md$/,""));try{let X=await JP8(Y,{lang:Q.req.query("lang")?.trim()||void 0,signal:AbortSignal.timeout(qU5)});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=$?GP8($,"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 PU5(Au(Y)),K=zU5(Y,W);return Q.html(AU5(G,K),200,{"Cache-Control":"public, max-age=0, s-maxage=300"})}catch{return Q.html(G)}}),Z}var EU5=2500,TU5=1e4,qU5=1e4;var KP8=L(()=>{H8();mL();vq1();l1()});function jh0($,Z){return fetch(`${bK({})}${$}`,Z)}async function RU5($,Z){let Q=await Oh0($,{lang:Z});if(!Q)return{status:"not_found",report:null};return Q.scanned_at?{status:"ready",report:Q}:{status:"empty",report:null}}function IU5($){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 MU5,VU5=8192,_j,HP8=async($,Z)=>{if(!$.get("reportUser"))return $.json({error:"Authentication required"},401);await Z();return},FP8;var UP8=L(()=>{H8();HG();$H();mL();vq1();MU5=new Set(["complete","errored","terminated","unknown"]);_j=new $1;_j.use("*",async($,Z)=>{let Q=await U4.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});_j.use("/link-token/*",HP8);_j.use("/suggest",HP8);_j.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 RU5(Z,Q))}catch{return $.json({error:"report read failed"},502)}});_j.post("/run",b6({maxSize:VU5,onError:($)=>$.json({error:"request body too large"},413)}),async($)=>{let Z=$.get("reportUser"),Q;try{Q=await $.req.json()}catch{return $.json({error:"invalid JSON"},400)}let{domain:Y,distinctId:X}=IU5(Q);if(!Y)return $.json({error:"domain is required"},400);let J=Z?.email;try{let G=await jh0("/api/v2/diagnostics/run",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${mE({})}`},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)}});_j.get("/status",async($)=>{let Z=$.req.query("id");if(!Z)return $.json({error:"id is required"},400);try{let Q=await jh0(`/api/v2/diagnostics/status?id=${encodeURIComponent(Z)}`,{headers:{Authorization:`Bearer ${mE({})}`}});if(!Q.ok)return $.json({error:`status HTTP ${Q.status}`},502);let X=(await Q.json()).status??"unknown",J={done:MU5.has(X),status:X};return $.json(J)}catch{return $.json({error:"status failed"},502)}});_j.get("/link-token/:id",async($)=>{let Z=$.req.param("id");try{let Q=await jh0(`/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)}});_j.get("/suggest",async($)=>{let Z=($.req.query("q")??"").trim().slice(0,64);if(Z.length<2)return $.json({suggestions:[]});try{let Q=await jh0(`/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:[]})}});FP8=_j});var kU5=1048576,bq1;var NP8=L(()=>{H8();HG();l1();X21();bq1=new $1;bq1.post("/webhook",b6({maxSize:kU5,onError:($)=>$.json({error:"payload too large"},413)}),async($)=>{let Z=B0().stripeWebhookSecret;if(!Z)return $.json({error:"stripe billing not configured"},503);let Q=await $.req.text();if(!vF8(Q,$.req.header("stripe-signature"),Z))return $.json({error:"invalid signature"},400);let X=bF8(Q);if(!X)return $.json({error:"invalid payload"},400);let J=await xF8(X);return console.log("stripe webhook",{eventId:X.id,type:X.type,livemode:X.livemode,...J}),$.json({received:!0})})});import{timingSafeEqual as CU5}from"crypto";function vU5($,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 CU5(Buffer.from(X),Buffer.from(Y))}function bU5($,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 BP8($){let Z=new $1;return Z.post("/webhook",b6({maxSize:SU5,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(!vU5(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"&&!_U5.has(J??""))return Q.json({ok:!0,ignored:"event"});let G;try{G=JSON.parse(X)}catch{return Q.json({error:"invalid payload"},400)}if(J==="push"){let H=G.ref,F=G.repository?.full_name;if(!H||!F)return Q.json({ok:!0,ignored:"shape"});return d60().then((U)=>U?.markTenantPoolsDirty(`https://github.com/${F}`,H)).catch((U)=>console.warn(`[github-webhook] tenant pool refresh for ${F}@${H} failed: ${U instanceof Error?U.message:String(U)}`)),Q.json({ok:!0})}let W=bU5(J??"",G);if(W.length===0)return Q.json({ok:!0,ignored:"no-pr"});let K=await xU5($,W);return Q.json({ok:!0,refreshed:K})}),Z}async function xU5($,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 K.storage.demoBoard.frozenItemIds(G.organizationId)).has(G.taskBoardItemId))continue;if(await Qv0(K,G.organizationId,G.taskBoardItemId)!==null)Q++}catch(W){console.error(`[github-webhook] pr card refresh failed for ${G.taskBoardItemId}:`,W)}}return Q}var SU5=5242880,_U5;var DP8=L(()=>{H8();HG();bX();I7();_U5=new Set(["check_suite","issue_comment"])});import{DBOS as fq1,SchedulerMode as fU5}from"@dbos-inc/dbos-sdk";async function gU5(){try{return await hU5()}catch($){return console.warn(`[sandbox-credential-push] push failed: ${$ instanceof Error?$.message:String($)}`),null}}async function hU5(){if(!c60())return null;let[{RemoteSandboxProvider:$},{SandboxProviderRouter:Z}]=await Promise.all([Promise.resolve().then(() => (uK1(),hK1)),Promise.resolve().then(() => (gK1(),yK1))]),Q=await d60(),Y=Q instanceof Z?Q.providers.kubernetes:Q;if(!(Y instanceof $))return null;let{db:X}=E8(),{sandboxes:J,pools:G}=await Y.list(),W=Date.now(),K=Vm$({sandboxes:J,pools:G,records:await Im$(X,J,G),legacyPools:qC0(process.env.STUDIO_SANDBOX_TENANT_POOLS),now:W}),{batches:H,failed:F}=await km$(K,iO0(X,new UJ(B0().encryptionKey)),{now:W,orgFsLifetimeMs:VC0}),U=0,N=0,B=0;for(let D of H)try{let O=await Y.pushCredentials(D);U+=O.stored,N+=O.kept}catch(O){B++,console.warn(`[sandbox-credential-push] a push batch failed: ${O instanceof Error?O.message:String(O)}`)}return{sandboxes:J.length,pushed:U,kept:N,refused:K.refused,failed:F+B}}async function uU5($,Z){let Q=await fq1.runStep(gU5,{name:"pushSandboxCredentials"});if(Q&&(Q.refused>0||Q.failed>0))console.warn(`[sandbox-credential-push] ${Q.sandboxes} sandboxes: pushed ${Q.pushed}, kept ${Q.kept}, refused ${Q.refused}, failed ${Q.failed}`)}function LP8(){if(xq1)return;if(!B0().agentSandboxEnabled||!c60())return;xq1=fq1.registerWorkflow(uU5,{name:"sandboxCredentialPushWorkflow"}),fq1.registerScheduled(xq1,{name:"sandboxCredentialPushWorkflow",crontab:yU5,mode:fU5.ExactlyOncePerIntervalWhenActive})}var yU5="1,11,21,31,41,51 * * * *",xq1=null;var OP8=L(()=>{vG();kw();R31();IC0();RC0();bX();l1()});function jP8($){let Z=new Oj($.db,new UJ($.encryptionKey)),Q=new $1;return Q.get("/attachments/:token",async(Y)=>{let X=Fr$(Y.req.param("token"));if(!X)return Y.json({error:"Invalid or expired link"},404);let J=await Z.getByOrg(X.organizationId);if(!J)return Y.json({error:"Jira is not connected"},404);let W=await new QQ(J.siteUrl,J.email,J.apiToken).downloadAttachment(X.attachmentId);if(!W.ok||!W.body)return Y.json({error:"Jira refused the download"},502);let K=new Headers;for(let H of["content-type","content-length","content-disposition"]){let F=W.headers.get(H);if(F)K.set(H,F)}return K.set("cache-control","no-store"),new Response(W.body,{status:200,headers:K})}),Q}var wP8=L(()=>{H8();kw();OU1();fO()});function wh0(){try{return B0().jiraSettleSeconds*1000}catch{return hz}}function EP8($,Z){let Q=Z.windowMs??hz,Y=$.at(-1);if(!Y)return null;if(Z.changeId!==void 0&&Y.id!==Z.changeId)return{kind:"superseded"};if(Z.now!==void 0&&Z.now-Y.at<Q)return{kind:"moving"};let X=lU5($,Q);if((X.id&&Y.toId?X.id===Y.toId:!1)||!X.id&&X.name===Y.to)return{kind:"returned",change:Y};return{kind:"moved",change:Y,from:X}}function lU5($,Z){for(let Y=$.length-2;Y>=0;Y--){let X=$[Y],J=$[Y+1];if(X&&J&&J.at-X.at>=Z)return{id:X.toId,name:X.to}}let Q=$[0];return{id:Q?.fromId??null,name:Q?.from??null}}var yq1=L(()=>{tO();l1()});function PP8($){if(typeof $!=="object"||$===null)return null;let Z=$;if(Z.webhookEvent!=="jira:issue_updated")return null;let Q=Z.issue?.id,Y=Z.issue?.key,X=Z.changelog?.id;if(typeof Q!=="string"&&typeof Q!=="number"||typeof Y!=="string"||typeof X!=="string"&&typeof X!=="number")return null;let J=Z.changelog?.items?.find((G)=>G.field==="status");if(!J||typeof J.toString!=="string")return null;return{issueId:String(Q),issueKey:Y,toStatus:J.toString,changelogId:String(X)}}async function gq1($,Z,Q){if(!Z.enabled)return"disabled";let Y=Z.organizationId,X=new QQ(Z.siteUrl,Z.email,Z.apiToken),J=EP8(await X.listStatusChanges(Q.issueId),{changeId:Q.changelogId,now:Q.now,windowMs:wh0()});if(!J)return"no_rule";if(J.kind!=="moved")return J.kind;let{change:G,from:W}=J,K=(await $.storage.automations.listJiraTransitionTriggers(Y,{jiraStatus:G.to,activeOnly:!0})).map((N)=>({...N,from:gz(N)})),H=e88(K)&&Z.boardId?r88(await X.getBoardColumnStatusIds(Z.boardId),W.id,G.toId):null,F=a88(K,W.name,H);if(!F)return"no_rule";if(!await $.storage.jiraIntegrations.claimTrigger(Y,Q.issueId,G.id))return"duplicate";return await NH({automationId:F.automation_id,organizationId:Y,triggerId:F.id,target:{kind:"jira",issues:[Q.issueId],move:{toStatus:G.to,fromStatus:W.name,movedBy:G.by,movedAt:new Date(G.at).toISOString()},eventKey:G.id}},{idempotencyKey:`jira:${F.id}:${G.id}`}),"fired"}var hq1=L(()=>{UU();fO();Ft();yq1()});import{DBOS as l2,SchedulerMode as mU5}from"@dbos-inc/dbos-sdk";function zP8($){lq1=$}function cq1(){if(!lq1)throw Error("[jira-trigger] runtime not initialized \u2014 setJiraTriggerSweepRuntime() must run before the workflow fires");return lq1}function dq1(){let $=cq1();return new Oj($.db,new UJ($.encryptionKey))}async function nU5($){try{let Z=await dq1().getById($);if(!Z?.enabled||!Z.boardId)return{integrationId:$,fired:0};let Q=await yY(cq1().db,Z.organizationId);if(!Q)return{integrationId:$,fired:0};if((await Q.storage.automations.listJiraTransitionTriggers(Z.organizationId,{activeOnly:!0})).length===0)return{integrationId:$,fired:0};let X=new QQ(Z.siteUrl,Z.email,Z.apiToken),G=`(${await X.getBoardScopeJql(Z.boardId)}) AND status CHANGED AFTER "-${dU5}m"`,W=0,K;for(let H=0;H<iU5;H++){let F=await X.searchIssues({jql:G,nextPageToken:K});for(let U of F.issues)if(await gq1(Q,Z,{issueId:U.id,now:Date.now()})==="fired")W++;if(K=F.nextPageToken??void 0,!K)break}return{integrationId:$,fired:W}}catch(Z){return{integrationId:$,fired:0,error:Z instanceof Error?Z.message:String(Z)}}}async function tU5($,Z){let Q=await l2.runStep(()=>dq1().listEnabledIds(),{name:"loadJiraIntegrations"});if(Q.length===0)return;let Y=await Promise.all(Q.map((X)=>l2.runStep(()=>nU5(X),{name:`sweepJira:${X}`})));for(let X of Y)if(X.error)console.warn(`[jira-trigger] integration ${X.integrationId} failed: ${X.error}`);else if(X.fired>0)console.log(`[jira-trigger] integration ${X.integrationId} fired ${X.fired} automation(s) the webhook missed`)}async function oU5($,Z){try{let Q=await dq1().getById($);if(!Q?.enabled)return"disabled";let Y=await yY(cq1().db,Q.organizationId);if(!Y)return"disabled";let X=await gq1(Y,Q,{issueId:Z.issueId,changelogId:Z.changelogId});if(X==="fired")console.log(`[jira-trigger] fired an automation for ${Z.issueKey} after it settled`);else if(X==="returned")console.log(`[jira-trigger] ${Z.issueKey} went back where it was before settling in "${Z.toStatus}"; no fire`);return X}catch(Q){return console.error(`[jira-trigger] settling ${Z.issueKey} failed`,Q instanceof Error?Q.message:Q),"error"}}async function sU5($,Z){await l2.sleep(wh0()+pU5),await l2.runStep(()=>oU5($,Z),{name:"settleJiraMove"})}async function AP8($,Z){if(!mq1)throw Error("[jira-trigger] settle workflow is not registered");await l2.startWorkflow(mq1,{workflowID:`jira-settle:${$}:${Z.changelogId}`})($,Z)}function TP8(){if(uq1)return;mq1=l2.registerWorkflow(sU5,{name:"jiraSettleWorkflow"}),uq1=l2.registerWorkflow(tU5,{name:"jiraTriggerSweepWorkflow"}),l2.registerScheduled(uq1,{name:"jiraTriggerSweepWorkflow",crontab:cU5,mode:mU5.ExactlyOncePerIntervalWhenActive})}var cU5="*/5 * * * *",dU5=20,iU5=5,pU5=5000,lq1=null,mq1=null,uq1=null;var iq1=L(()=>{kw();mO();fO();yq1();hq1()});function qP8($){let Z=new Oj($.db,new UJ($.encryptionKey)),Q=Iz($.db);async function Y(J,G){let W=PP8(G);if(!W)return;let K=await Z.getByWebhookSecret(J);if(!K?.enabled)return;if((await Q.listJiraTransitionTriggers(K.organizationId,{activeOnly:!0})).length===0)return;await AP8(K.id,W)}let X=new $1;return X.post("/webhook/:secret",b6({maxSize:aU5}),async(J)=>{let G=J.req.param("secret");if(!await Z.getByWebhookSecret(G))return J.json({error:"Unknown webhook"},404);let K;try{K=await J.req.json()}catch{return J.json({error:"Body must be JSON"},400)}return Y(G,K).catch((H)=>{console.error("[jira-webhook] trigger failed",H)}),J.body(null,202)}),X}var aU5=1048576;var RP8=L(()=>{H8();HG();kw();iq1();hq1();c50()});function MP8($,Z){if(Z.startsWith("text/html")||Z.startsWith("image/svg"))$.set("Content-Security-Policy","sandbox allow-scripts allow-modals allow-same-origin")}var VP8,rU5,eU5,IP8;var kP8=L(()=>{H8();K3();an();Ti();VP8=new $1,rU5=["range","if-none-match","if-modified-since"],eU5=["content-type","content-length","content-range","accept-ranges","etag","last-modified"];VP8.get("/:org/files/*",async($)=>{let Z=$.get("studioContext"),Q=Z.organization?.id;if(!Z.auth?.user?.id){if($s($))return $.redirect(`/login?next=${encodeURIComponent($.req.path)}`,302);throw new R1(401,{message:"Authentication required"})}if(!Q)throw new R1(401,{message:"Organization context required"});let Y=$.req.path.replace(/^.*\/files\//,"");if(!Y)throw new R1(400,{message:"Missing file key"});let X=await I90(Y,Z);if(!X)throw new R1(503,{message:"Object storage not configured"});if(X.startsWith("data:")&&mK()){let K=X.match(/^data:([^;]+);base64,(.+)$/s);if(!K)throw new R1(500,{message:"Invalid data URL from storage"});let[,H,F]=K,U=Buffer.from(F,"base64"),N=new Headers({"Content-Type":H,"Cache-Control":"private, max-age=86400"});return MP8(N,H),new Response(U,{status:200,headers:N})}let J=new Headers;for(let K of rU5){let H=$.req.header(K);if(H)J.set(K,H)}let G=await fetch(X,{headers:J});if(G.status===403||G.status===404)throw new R1(404,{message:"File not found"});if(!G.ok&&G.status!==304&&G.status!==416)throw console.error(`[files] upstream storage error ${G.status} for key:`,Y),new R1(502,{message:"Upstream storage error"});let W=new Headers;for(let K of eU5){let H=G.headers.get(K);if(H)W.set(K,H)}return W.set("Cache-Control","private, max-age=86400"),MP8(W,W.get("content-type")??""),new Response(G.body,{status:G.status,headers:W})});IP8=VP8});var GY0=y((Ll)=>{var $N5=Ll&&Ll.__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]}),ZN5=Ll&&Ll.__exportStar||function($,Z){for(var Q in $)if(Q!=="default"&&!Object.prototype.hasOwnProperty.call(Z,Q))$N5(Z,$,Q)};Object.defineProperty(Ll,"__esModule",{value:!0});ZN5(zG(),Ll)});var _P8=y((CP8)=>{Object.defineProperty(CP8,"__esModule",{value:!0});CP8.version=void 0;CP8.version="3.4.0"});var xP8=y((OD)=>{var QN5=OD&&OD.__importDefault||function($){return $&&$.__esModule?$:{default:$}};Object.defineProperty(OD,"__esModule",{value:!0});OD.NodeTransport=OD.VERSION=void 0;OD.nodeResolveHost=KN5;var H9=GY0(),YN5=M0("net"),pq1=M0("tls"),XN5=M0("path"),vP8=M0("fs"),JN5=QN5(M0("dns")),GN5=_P8();OD.VERSION=GN5.version;var WN5="nats.js";class bP8{socket;version;lang;yields=[];signal=(0,H9.deferred)();closedNotification=(0,H9.deferred)();options;connected=!1;tlsName="";done=!1;closeError;constructor(){this.lang=WN5,this.version=OD.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,H9.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 H9.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 H9.errors.ConnectionError("error connecting - node provided an undefined error");let{code:G}=J,W=G==="ECONNREFUSED"?new H9.errors.ConnectionError("connection refused",{cause:J}):J;throw this.socket?.destroy(),W}}dial($){let Z=(0,H9.deferred)(),Q,Y=(0,YN5.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,H9.deferred)(),Z;return this.socket.on("data",(Q)=>{this.yields.push(Q);let Y=H9.DataBuffer.concat(...this.yields),X=(0,H9.extractProtocolMessage)(Y);if(X!=="")try{let J=H9.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,H9.deferred)();try{if($=(0,XN5.resolve)($),!(0,vP8.existsSync)($))Z.reject(Error(`${$} doesn't exist`));(0,vP8.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,H9.extend)(Q,this.options.tls,X)}catch(X){return Promise.reject(new H9.errors.ConnectionError(X.message,{cause:X}))}let Y=(0,H9.deferred)();try{let X=(0,pq1.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 H9.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,H9.extend)(Z,this.options.tls,Y)}catch(Y){return Promise.reject(new H9.errors.ConnectionError(Y.message,{cause:Y}))}let Q=(0,H9.deferred)();try{let Y=(0,pq1.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 H9.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,H9.render)($[Z])}`);yield $[Z]}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,H9.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 pq1.TLSSocket}_send($){if(this.isClosed||this.socket===void 0)return Promise.resolve();if(this.options.debug)console.info(`< ${(0,H9.render)($)}`);let Z=(0,H9.deferred)();try{this.socket.write($,(Q)=>{if(Q){if(this.options.debug)console.error(`!!! ${(0,H9.render)($)}: ${Q}`);return Z.reject(Q)}return Z.resolve()})}catch(Q){if(this.options.debug)console.error(`!!! ${(0,H9.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}}OD.NodeTransport=bP8;function KN5($){let Z=(0,H9.deferred)();return JN5.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 uP8=y((hP8)=>{Object.defineProperty(hP8,"__esModule",{value:!0});hP8.connect=HN5;var fP8=xP8(),yP8=GY0(),gP8=GY0();function HN5($={}){if((0,gP8.hasWsProtocol)($))return Promise.reject(gP8.errors.InvalidArgumentError.format("servers","node client doesn't support websockets, use the 'wsconnect' function instead"));return(0,yP8.setTransportFactory)({factory:()=>{return new fP8.NodeTransport},dnsResolveFn:fP8.nodeResolveHost}),yP8.NatsConnectionImpl.connect($)}});var lP8=y((vj)=>{var UN5=vj&&vj.__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]}),NN5=vj&&vj.__exportStar||function($,Z){for(var Q in $)if(Q!=="default"&&!Object.prototype.hasOwnProperty.call(Z,Q))UN5(Z,$,Q)};Object.defineProperty(vj,"__esModule",{value:!0});vj.connect=void 0;var BN5=uP8();Object.defineProperty(vj,"connect",{enumerable:!0,get:function(){return BN5.connect}});NN5(GY0(),vj)});function dP8($){let Z=$?.connectFn??jN5,Q=null,Y=null,X=!1,J=!1,G=!1,W=[];function K(){return Q!==null&&!Q.isClosed()&&!Q.isDraining()&&!G}function H(){console.log(`[NatsProvider] fireReady: ${W.length} callbacks`);for(let N of W)try{N()}catch{}}function F(N){(async()=>{for await(let B of N.status())if(B.type==="disconnect")console.log("[NatsProvider] Disconnected"),G=!0;else if(B.type==="reconnect")console.log("[NatsProvider] Reconnected, re-firing ready callbacks"),G=!1,Y=null,H()})().catch(()=>{})}async function U(N,B){let D=0;while(!J)try{Q=await Z({servers:N,timeout:ON5,reconnect:!0,maxReconnectAttempts:-1,...B?{authenticator:B}:{}}),console.log(`[NatsProvider] Connected to ${Q.getServer()} after ${D} attempt(s)`),Y=null,G=!1,F(Q),H();return}catch{D++;let O=b7(LN5,DN5,D-1,2,0.5);await G$(O)}}return{init(N,B){if(X)return;X=!0,J=!1;let D=B?.creds?Eh0.credsAuthenticator(new TextEncoder().encode(B.creds)):B?.user?Eh0.usernamePasswordAuthenticator(B.user,B.password):void 0;U(N,D).catch(()=>{})},isConnected(){return K()},getConnection(){return K()?Q:null},getJetStream(){if(!K())return null;if(!Y)Y=cP8.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 jN5($){return mP8.connect($)}var Eh0,mP8,cP8,DN5=100,LN5=3000,ON5=3000;var iP8=L(()=>{g$();Eh0=_(KA(),1),mP8=_(lP8(),1),cP8=_(pH(),1)});function Ph0($,Z){return`${$}.${Z}`}class nq1{cache;constructor($){this.cache=XB({ttlMs:$?.ttlMs??wN5,maxSize:$?.maxSize??EN5})}async get($,Z){return this.cache.get(Ph0($,Z))??null}async set($,Z,Q){this.cache.set(Ph0($,Z),Q)}async invalidate($,Z){this.cache.delete(Ph0($,Z)),this.cache.delete(Ph0($,`${Z}:decisions`))}teardown(){this.cache.clear()}}var wN5=600000,EN5=5000;var pP8=()=>{};function zh0($,Z){return`${$}:${Z}`}function tq1($){let Z=XB({ttlMs:$?.ttlMs??PN5,maxSize:$?.maxSize??zN5}),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(nP8,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(zh0(K,H))},set(K,H,F){Z.set(zh0(K,H),F)},invalidate(K,H){Z.delete(zh0(K,H)),W(K,H)},start(){if(G)return;let K=Q?.();if(!K)return;G=K.subscribe(nP8),(async()=>{for await(let H of G)try{let F=JSON.parse(J.decode(H.data));if(F.originId===Y)continue;Z.delete(zh0(F.organizationId,F.keyId))}catch{}})().catch(console.error)},teardown(){G?.unsubscribe(),G=null,Z.clear()}}}var nP8="studio.ai-provider-keys.invalidate",PN5=30000,zN5=5000;var tP8=()=>{};class oq1{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 oP8=($)=>{let Z;return()=>Z??=$()},sq1,aq1;var sP8=L(()=>{y6();sq1=oP8(()=>W$.createHistogram("decopilot.stream.encode_ms",{description:"Per-chunk JSON.stringify+encode time for decopilot stream",unit:"ms"})),aq1=oP8(()=>W$.createCounter("decopilot.stream.published_chunks",{description:"Logical decopilot stream chunks published to JetStream",unit:"{chunks}"}))});function IN5($=eP8){return{name:dB,subjects:[`${KD1}.>`],storage:kU.StorageType.File,max_age:qN5,max_bytes:MN5,max_msgs_per_subject:VN5,discard:kU.DiscardPolicy.Old,retention:kU.RetentionPolicy.Limits,duplicate_window:RN5,num_replicas:$}}class $z8{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 aP8($){let Z=rP8.headers();for(let[Q,Y]of Object.entries($))Z.set(Q,Y);return Z}function _N5($,Z){let Q=0;return{publish(Y,X,J,G){Y.publish(X,J,G?{headers:G}:void 0).catch((W)=>{if(Q++,TN5().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 vN5($,Z){return $.info?.cluster?Z:1}function bN5($){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 rq1{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=IN5(X);try{await Y.streams.info(dB),await Y.streams.update(dB,J)}catch(G){if(G instanceof Error&&G.message.includes("stream not found"))await Y.streams.add(J),await Y.streams.update(dB,J);else if(G instanceof Error&&/can ?not change.*storage|storage type/i.test(G.message))await Y.streams.delete(dB),await Y.streams.add(J);else throw G}},Q=await $8(async()=>{let Y=this.options.getJetStreamManager?await this.options.getJetStreamManager():await kU.jetstreamManager($),X=vN5($,eP8);try{await Z(Y,X)}catch(J){if(X<=1||!bN5(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:Ht});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=_N5(Z,Y),G=!1,W=()=>{if(G)return;G=!0;let H=M88(Z);X.publish(H.subject,H.data).catch(()=>{})};Q.addEventListener("abort",W,{once:!0});let K=(H)=>{let F=performance.now(),U=FD1(H,{runId:Z}),N=performance.now()-F;sq1().record(N),aq1().add(1,{"org.id":Y??"unknown"}),SN5?.record(N,U.reduce((B,D)=>B+D.data.length,0));for(let B of U)J.publish(X,B.subject,B.data,B.headers?aP8(B.headers):void 0)};return(async()=>{let H=$.getReader(),F=0,U=0,N;try{while(!0){let{done:B,value:D}=await H.read();if(B)break;if(K(D),U++,++F>=64)F=0,await new Promise((O)=>setImmediate(O))}}catch(B){N=B,console.warn(`[Decopilot] stream pump error for thread ${Z}:`,B?.message??B)}finally{if(H.releaseLock(),W(),CN5)console.warn(JSON.stringify({msg:"decopilot-stream-diag",event:"pump-done",taskId:Z,publishedChunks:U,publishErrors:J.errorCount}))}if(N!==void 0)throw N})()}async publishSerialized($,Z){try{return await $8(()=>$.publish(Z.subject,Z.data,{...Z.headers?{headers:aP8(Z.headers)}:{},...Z.msgId?{msgID:Z.msgId}:{}}),{maxAttempts:6,minTimeout:250,maxTimeout:5000,jitter:0.5,isRetriable:Ht}),!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=FD1(Z,{runId:$,dedup:Q});sq1().record(performance.now()-X),aq1().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=R88({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"?kU.DeliverPolicy.New:kU.DeliverPolicy.All,J=Q?.closeOnDone??!1,G=yz($),W;try{W=await $8(async()=>{return(await Y.consumers.get(dB,{filter_subjects:G,deliver_policy:X})).consume()},{maxAttempts:6,minTimeout:250,maxTimeout:5000,jitter:0.5,isRetriable:Ht})}catch(O){return console.warn("[Decopilot] JetStream tail unavailable (non-critical):",O?.message??O),null}let F=rv0({messages:async function*(){try{for await(let O of W)yield{subject:O.subject,data:O.data,headers:O.headers}}finally{W.stop()}}(),onCancel:()=>W.stop()}).pipeThrough(tv0()).pipeThrough(ov0()).getReader(),U=!1,N=()=>{if(U)return;U=!0;try{F.releaseLock()}catch{}},B=!1,D=()=>{if(B)return;B=!0,W.stop(),F.cancel().catch(()=>{}),N()};return Z?.addEventListener("abort",D,{once:!0}),new ReadableStream({async pull(O){for(;;){let{done:j,value:w}=await F.read();if(j){D(),O.close();return}let E=w;if(E.kind==="done"){if(J){D(),O.close();return}continue}O.enqueue(E.chunk);return}},cancel(){D()}})}purge($){if(!this.jsm)return;this.jsm.streams.purge(dB,{filter:yz($)}).catch(()=>{})}teardown(){this.js=null,this.jsm=null}}var kU,rP8,AN5=($)=>{let Z;return()=>Z??=$()},TN5,qN5=86400000000000,RN5=120000000000,MN5=4294967296,eP8,VN5=500000,kN5,CN5,SN5;var Zz8=L(()=>{g$();UD1();ev0();sv0();y6();sP8();kU=_(pH(),1),rP8=_(KA(),1),TN5=AN5(()=>W$.createCounter("decopilot.stream.publish_errors",{description:"Number of JetStream publish failures for decopilot stream chunks",unit:"{errors}"})),eP8=Math.max(1,Number(process.env.DECOPILOT_STREAM_REPLICAS??3)||3);kN5=process.env.STREAM_ENCODE_TRACE==="1",CN5=process.env.DECOPILOT_STREAM_TRACE==="1";SN5=kN5?new $z8:null});function Ah0($,Z,Q,Y){if(!Y)return!1;return $.emit(Z,$N(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 Qz8=L(()=>{q8()});class eq1{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 xN5($,Z,Q={}){let Y=$.startsWith("thread:")?YU($,Q):$;return[...new Set([Z,Y].filter((X)=>!!X))]}async function $R1($,Z){let Q=Z.organizationId;try{let Y=await $.storage.taskBoard.linkedThreadIds(Z.id,Q);for(let X of Y){let J=await XU($,X);if(!J?.owner||!J?.name)continue;let G=await $.storage.threads.get(X),W=await CB($,{threadId:X,runBranch:G?.branch}),K=await O80($,Q,sN0(J)).catch(()=>null);if(!K){console.warn(`[task-board] no credential for ${J.owner}/${J.name} \u2014 `+`cannot look up ${Z.id}'s change request by branch`);continue}let H=xN5(W,await aC0($,X),{flat:Nh(K.repo.provider)});for(let F of H){let U=await K.readForBranch(F).catch(()=>null);if(!U)continue;return await $.storage.taskBoard.linkPr({taskBoardItemId:Z.id,organizationId:Q,url:U.url,prNumber:U.number,repo:K.repo}),await $.storage.taskBoard.openReviewCycleIfInProgress(Z.id,Q),await dJ(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 Yz8=L(()=>{W5();yQ();I7()});async function Xz8($,Z,Q){let Y=Z.organizationId;if(!cJ(Z))return!1;if(!lh(Q))return!1;if(!await Ac($,Y,oe))return!1;if(await $.storage.taskBoard.hasHumanRejectedDone(Z.id,Y))return!1;let X=Q1.shipped,J=await $.storage.taskBoard.update(Z.id,Y,{status:X},Z.updatedBy);return await J9($,{taskBoardItemId:Z.id,action:"status_changed",actorId:null,data:{from:Z.status,to:X,reason:"pr_merged"}}),r$(Y,J),console.log(`[task-board-review-sweeper] ${Z.id}: linked PR already merged \u2014 moved to ${X}`),!0}var Jz8=L(()=>{N3();I8();gX();mn();FU();F5()});function Gz8($,Z){return Z-$>=uN5}class ZR1{taskBoard;contextFactory;options;timer=null;running=!1;cursor=null;constructor($,Z,Q={}){this.taskBoard=$;this.contextFactory=Z;this.options=Q}start(){if(this.timer)return;let $=this.options.intervalMs??fN5;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??gN5,Q=this.options.itemIntervalMs??yN5,Y=new Date(Date.now()-Q),X=await this.taskBoard.listItemsPendingReview(Z,this.cursor,Y),J=X.at(-1);this.cursor=X.length===Z&&J?{updatedAt:J.updatedAt,id:J.id}:null;for(let{id:G,organizationId:W}of X)try{if(await this.reconcileItem(G,W,Y))$++}catch(K){console.error(`[task-board-review-sweeper] ${G} failed`,K)}await this.reapAbandonedThreads(Z),$+=await this.dispatchDueRetries(Z),await this.reactToUnhandledFailures(Z),$+=await this.settleFinishedRunsWithoutPr(Z,Y)}catch(Z){console.error("[task-board-review-sweeper] sweep failed",Z)}finally{this.running=!1}return $}async reapAbandonedThreads($){try{let Z=await this.taskBoard.failAbandonedLinkedThreads($,new Date(Date.now()-HU1),{neverStarted:gN1,stalled:IB1});for(let Q of Z)console.warn(`[task-board-review-sweeper] failed abandoned thread ${Q.threadId} on ${Q.itemId}`)}catch(Z){console.error("[task-board-review-sweeper] reaping failed",Z)}}async reactToUnhandledFailures($){let Z=await this.taskBoard.listItemsStuckAfterFailure($,new Date(Date.now()-lN5));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 yN1(this.taskBoard,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!==Q1.progress||cJ(W)||W.assigneeId!==u$)continue;let K=await this.contextFactory(J,W.assignedBy??W.createdBy);if(!K)continue;if(await $R1(K,W)){if(await this.taskBoard.clearSweepBudget(X,J),await this.reconcileItem(X,J,Z))Q++;continue}if(!Gz8(G.getTime(),Date.now()))continue;let H="the run finished without opening a pull request \u2014 there is "+"nothing for a reviewer to review",F=await this.taskBoard.advanceFromProgress(X,J,Q1.review,W.updatedBy);if(!F)continue;await this.taskBoard.recordActivity({taskBoardItemId:X,action:"status_changed",actorId:null,data:{from:Q1.progress,to:Q1.review,reason:H}}).catch(()=>{}),r$(J,F),await uB(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!==Q1.progress||G.assigneeId!==u$)continue;let W=await this.contextFactory(X,G.assignedBy??G.createdBy);if(!W)continue;await cO(W,G,{runClass:"retry"}),Z++,console.warn(`[task-board-review-sweeper] re-dispatched ${Y} after a failure (attempt ${J})`)}catch(G){console.error(`[task-board-review-sweeper] retry dispatch for ${Y} failed`,G),await this.taskBoard.scheduleRunRetry(Y,X,J,new Date(Date.now()+hN5)).catch((W)=>console.error(`[task-board-review-sweeper] re-arming ${Y} failed`,W))}return Z}async handOffReviewWithoutPr($,Z){let Q=await this.taskBoard.listActivity(Z.id,Z.organizationId);if(!Gz8(FL(Q,Z.reviewCycleStartedAt),Date.now()))return;await uB($,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(!cJ(Y))return!1;let X=Y.assigneeId===u$,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 $R1(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 pn(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 Xz8(G,Y,W))return!0;if(!X)return!1;if(await R08(G,Y))return!0;if(!vN1(W))return!1;return await dn(G,Y,{previewMatchesHead:bN1(W)}),!0}dispose(){if(this.timer)clearInterval(this.timer),this.timer=null}}var fN5=60000,yN5=300000,gN5=50,hN5=60000,uN5=900000,lN5=120000;var Wz8=L(()=>{I8();n_0();Yz8();lB();sn();FU();Jz8();F5();hN1();kB1();I7();e50()});async function Kz8($,Z,Q=hz){return await Fz8($,Z,Q,{})}async function Hz8($,Z,Q,Y=hz){return await Fz8($,Q,Y,{activityId:Z})}async function Fz8($,Z,Q,Y){let X=await $.automations.findActiveBoardColumnTriggers();if(X.length===0)return 0;let J=new Map;for(let K of X){let H=K.automation.organization_id;J.set(H,[...J.get(H)??[],K])}let G=await $.taskBoard.listSettledTransitions({organizationIds:[...J.keys()],since:new Date(Z-mN5),settledBefore:new Date(Z-Q),limit:cN5,...Y}),W=0;for(let K of G)try{let H=(J.get(K.organizationId)??[]).filter((U)=>U.column_key===K.to&&Date.parse(U.created_at)<Date.parse(K.occurredAt));if(H.length===0)continue;let F=await dN5($.taskBoard,K,Q);for(let U of H){if(!Z48(U,{from:F,to:K.to}))continue;if(!await $.automations.claimTriggerFire(U.id,K.activityId))continue;await $.fire({automationId:U.automation_id,organizationId:K.organizationId,triggerId:U.id,target:{kind:"card",itemId:K.itemId,columnKey:K.to,eventKey:K.activityId,movedBy:K.actorId}},{idempotencyKey:`board:${U.id}:${K.activityId}`}),W++}}catch(H){console.error(`[automations] board transition ${K.activityId} failed`,H)}return W}async function dN5($,Z,Q){let X=(await $.listActivity(Z.itemId,Z.organizationId)).flatMap((J)=>{let G=J.data;if(J.action!=="status_changed"||typeof G?.to!=="string")return[];let W=typeof G.from==="string"?G.from:null;return W===G.to?[]:[{from:W,to:G.to,occurredAt:J.occurredAt}]});return X.length>0?Q48(X,Q):Z.from}var mN5=1800000,cN5=200;var Uz8=L(()=>{tO()});import{DBOS as m2,DBOSClient as iN5,SchedulerMode as pN5}from"@dbos-inc/dbos-sdk";function Nz8($){bj=$}async function oN5($){if(!bj)return 0;try{return await Hz8(bj,$,Date.now(),bj.settleMs)}catch(Z){return console.error(`[automations] settling board move ${$} failed`,Z),0}}async function sN5(){if(!bj)return 0;try{return await Kz8(bj,Date.now(),bj.settleMs)}catch($){return console.error("[automations] board transition sweep failed",$),0}}async function aN5($){await m2.sleep((bj?.settleMs??hz)+tN5),await m2.runStep(()=>oN5($),{name:"settleBoardMove"})}async function rN5($,Z){let Q=await m2.runStep(()=>sN5(),{name:"sweepBoardMoves"});if(Q>0)console.log(`[automations] board transition sweep fired ${Q} trigger(s) the settle wait missed`)}async function Dz8($){let Z=bj;if(!Z||!YR1)return;if(!await Z.automations.hasActiveBoardColumnTrigger($.taskBoardItemId,$.to))return;let Q=`board-settle:${$.activityId}`;if(!m2.isWithinWorkflow()){await m2.startWorkflow(YR1,{workflowID:Q,queueName:o2})($.activityId);return}let Y=await iN5.create({systemDatabaseUrl:Z.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:1});try{await Y.enqueue({workflowName:Bz8,queueName:o2,workflowID:Q},$.activityId)}finally{await Y.destroy()}}function Lz8(){if(QR1)return;YR1=m2.registerWorkflow(aN5,{name:Bz8}),QR1=m2.registerWorkflow(rN5,{name:"boardTransitionSweepWorkflow"}),m2.registerScheduled(QR1,{name:"boardTransitionSweepWorkflow",crontab:nN5,mode:pN5.ExactlyOncePerIntervalWhenActive})}var nN5="*/5 * * * *",tN5=2000,bj=null,Bz8="boardTransitionSettleWorkflow",YR1=null,QR1=null;var Oz8=L(()=>{tO();Uz8()});import{readdir as eN5,rm as Th0}from"fs/promises";import{join as qh0}from"path";async function Rh0($){let Z=new Date;Z.setUTCDate(Z.getUTCDate()-$B5),Z.setUTCHours(0,0,0,0);let Q=0;try{let Y=await Ol($);for(let X of Y)if(/^\d{4}$/.test(X))Q+=await jz8($,X,Z);else if(!X.startsWith(".")){let J=qh0($,X),G=await Ol(J);for(let K of G){if(!/^\d{4}$/.test(K))continue;Q+=await jz8(J,K,Z)}if((await Ol(J)).length===0)await Th0(J,{recursive:!0,force:!0})}}catch(Y){console.warn("monitoring retention cleanup failed:",Y)}return Q}async function jz8($,Z,Q){let Y=0,X=qh0($,Z),J=await Ol(X);for(let W of J){if(!/^\d{2}$/.test(W))continue;let K=qh0(X,W),H=await Ol(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=qh0(K,U);await Th0(B,{recursive:!0,force:!0}),Y++}}if((await Ol(K)).length===0)await Th0(K,{recursive:!0,force:!0})}if((await Ol(X)).length===0)await Th0(X,{recursive:!0,force:!0});return Y}async function Ol($){try{return(await eN5($)).filter((Q)=>!Q.startsWith("."))}catch{return[]}}var $B5=30;var XR1=()=>{};import{DBOS as JR1,SchedulerMode as ZB5}from"@dbos-inc/dbos-sdk";async function YB5(){let $=[gH(),Rl(),RD()],Z=0;for(let Q of $)try{Z+=await Rh0(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 XB5($,Z){await JR1.runStep(()=>YB5(),{name:"monitoringRetention"})}function Ez8(){if(wz8)return;wz8=!0;let $=JR1.registerWorkflow(XB5,{name:"monitoringRetentionWorkflow"});JR1.registerScheduled($,{name:"monitoringRetentionWorkflow",crontab:QB5,mode:ZB5.ExactlyOncePerIntervalWhenActive})}var QB5="23 4 * * *",wz8=!1;var Pz8=L(()=>{sW();XR1()});function zz8($){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 gY.create();X.auth.user={id:Q,role:Y.role},X.organization={id:Y.orgId,slug:Y.orgSlug,name:Y.orgName};let J=await EP($.db,Z,Y.role);return X.boundAuth=hz1({auth:X.authInstance,headers:new Headers,role:Y.role,permissions:J,userId:Q}),X.access=new uT(Q,void 0,X.boundAuth,Y.role,"self"),bz(X,{id:Y.orgId,slug:Y.orgSlug}),X}}var Az8=L(()=>{jQ();fF()});function Tz8(){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=WY0(N.params.name),D=N.params.arguments||{},O=Object.keys(D).map((w)=>WY0(w)),j=O.length>0?O.slice(0,3).join(",")+(O.length>3?"\u2026":""):"";J=`${E9.tool}${B}${E9.dim}(${j})${E9.reset}`}else if(N.method)J=`${E9.dim}${WY0(N.method)}${E9.reset}`}}catch{}}let W=WY0(X);if(X.startsWith("/mcp/conn_")){let F=X.split("/")[2]??"";W=`/mcp/${E9.mcp}${WY0(F.slice(0,12))}\u2026${E9.reset}`}else if(X==="/mcp")W=`${E9.mcp}/mcp${E9.reset}`;else if(X==="/mcp/registry")W=`${E9.mcp}/mcp/registry${E9.reset}`;let K=GB5(Y),H=G?"\u25C0":"\u2190";console.log(`${E9.dim}${H}${E9.reset} ${K}${Y}${E9.reset} ${W}${J?` ${J}`:""}`);try{await Z()}finally{let F=Date.now()-Q,U=$.res.status,N=JB5(U),B=F<1000?`${F}ms`:`${(F/1000).toFixed(1)}s`,D=G?"\u25B6":"\u2192";console.log(`${E9.dim}${D}${E9.reset} ${K}${Y}${E9.reset} ${W}${J?` ${J}`:""} ${N}${U}${E9.reset} ${E9.duration}${B}${E9.reset}`)}}}var E9,JB5=($)=>{if($>=500)return E9.serverError;if($>=400)return E9.clientError;if($>=300)return E9.redirect;return E9.ok},GB5=($)=>{return E9[$]||E9.reset},WY0=($)=>{return $.replace(/\r/g,"").replace(/\n/g,"").replace(/\x1b\[[0-9;]*m/g,"").replace(/[\x00-\x1f\x7f-\x9f]/g,"")};var qz8=L(()=>{E9={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 Iz8}from"crypto";import{mkdir as WB5,readdir as KB5,rm as Rz8,stat as kz8}from"fs/promises";import{join as WR1,relative as HB5}from"path";import{z as W8}from"zod";function Sz8($){let Z=$.replace(/[^a-zA-Z0-9_-]/g,"_");return WR1(FB5,Z)}function _z8($){return $.replace(/^\/+/,"").replace(/\.\./g,"")}function GR1($,Z){let Q=Sz8($),Y=_z8(Z);return WR1(Q,Y)}function UB5($,Z,Q,Y){let X=B0().encryptionKey||"dev-secret",J=`${$}:${Z}:${Q}:${Y}`;return Iz8("sha256",X).update(J).digest("hex")}function Vz8($,Z,Q,Y,X){let J=Math.floor(Date.now()/1000)+Y,G=UB5(Z,Q,J,X),W=new URL(`/api/dev-assets/${Z}/${_z8(Q)}`,$);return W.searchParams.set("expires",J.toString()),W.searchParams.set("signature",G),W.searchParams.set("method",X),W.toString()}function vz8($,Z,Q){let Y=`${$}:${Z.getTime()}:${Q}`;return`"${Iz8("md5","etag").update(Y).digest("hex")}"`}async function bz8($,Z,Q,Y,X){try{let J=await KB5($,{withFileTypes:!0});for(let G of J){let W=WR1($,G.name),H=HB5(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 bz8(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 kz8(W);X.objects.push({key:H,size:F.size,lastModified:F.mtime.toISOString(),etag:vz8(W,F.mtime,F.size)})}catch{}}}}catch{}}function xz8($,Z){let Y=Z0($).id;return[{name:"LIST_OBJECTS",description:"List objects in the local assets directory with pagination support",inputSchema:W8.object({prefix:W8.string().optional(),maxKeys:W8.number().optional().default(1000),continuationToken:W8.string().optional(),delimiter:W8.string().optional()}),outputSchema:W8.object({objects:W8.array(W8.object({key:W8.string(),size:W8.number(),lastModified:W8.string(),etag:W8.string()})),nextContinuationToken:W8.string().optional(),isTruncated:W8.boolean(),commonPrefixes:W8.array(W8.string()).optional()}),handler:async(X)=>{let J=X,G=J.prefix||"",W=J.maxKeys??1000,K=J.delimiter,H=J.continuationToken,F=Sz8(Y);await WB5(F,{recursive:!0});let U={objects:[],commonPrefixes:new Set};await bz8(F,F,G,K,U),U.objects.sort((j,w)=>j.key.localeCompare(w.key));let N=0;if(H){if(N=U.objects.findIndex((j)=>j.key>H),N===-1)N=U.objects.length}let B=U.objects.slice(N,N+W),D=N+W<U.objects.length,O=D?B[B.length-1]?.key:void 0;return{objects:B,isTruncated:D,nextContinuationToken:O,commonPrefixes:Array.from(U.commonPrefixes).sort()}}},{name:"GET_OBJECT_METADATA",description:"Get metadata for a file in the local assets directory",inputSchema:W8.object({key:W8.string()}),outputSchema:W8.object({contentType:W8.string().optional(),contentLength:W8.number(),lastModified:W8.string(),etag:W8.string(),metadata:W8.record(W8.string(),W8.string()).optional()}),handler:async(X)=>{let J=X,G=GR1(Y,J.key),W=await kz8(G);return{contentType:e21(J.key),contentLength:W.size,lastModified:W.mtime.toISOString(),etag:vz8(G,W.mtime,W.size)}}},{name:"GET_PRESIGNED_URL",description:"Generate a presigned URL for downloading a file from local storage",inputSchema:W8.object({key:W8.string(),expiresIn:W8.number().optional()}),outputSchema:W8.object({url:W8.string(),expiresIn:W8.number()}),handler:async(X)=>{let J=X,G=Yj(J.expiresIn,Mz8);return{url:Vz8(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:W8.object({key:W8.string(),expiresIn:W8.number().optional(),contentType:W8.string().optional()}),outputSchema:W8.object({url:W8.string(),expiresIn:W8.number()}),handler:async(X)=>{let J=X,G=Yj(J.expiresIn,Mz8);return{url:Vz8(Z,Y,J.key,G,"PUT"),expiresIn:G}}},{name:"DELETE_OBJECT",description:"Delete a single file from local storage",inputSchema:W8.object({key:W8.string()}),outputSchema:W8.object({success:W8.boolean(),key:W8.string()}),handler:async(X)=>{let J=X,G=GR1(Y,J.key);try{return await Rz8(G),{success:!0,key:J.key}}catch{return{success:!1,key:J.key}}}},{name:"DELETE_OBJECTS",description:"Delete multiple files from local storage",inputSchema:W8.object({keys:W8.array(W8.string()).max(1000)}),outputSchema:W8.object({deleted:W8.array(W8.string()),errors:W8.array(W8.object({key:W8.string(),message:W8.string()}))}),handler:async(X)=>{let J=X,G=[],W=[];return await Promise.all(J.keys.map(async(K)=>{let H=GR1(Y,K);try{await Rz8(H),G.push(K)}catch(F){W.push({key:K,message:F instanceof Error?F.message:"Unknown error"})}})),{deleted:G,errors:W}}}]}async function KR1($,Z,Q){let Y=xz8(Z,Q),X=new KE({name:"dev-assets-mcp",version:"1.0.0"},{capabilities:{tools:{}},jsonSchemaValidator:SZ});for(let G of Y){let W="shape"in G.inputSchema?G.inputSchema.shape:W8.object({}).shape,K=G.outputSchema&&"shape"in G.outputSchema?G.outputSchema.shape:W8.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 CW({enableJsonResponse:$.headers.get("Accept")?.includes("application/json")??!1});return await X.connect(J),AH(X,J,$,"mcp:dev-assets")}async function fz8($,Z,Q,Y){let J=xz8(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 FB5="./data/assets",Mz8=3600,Cz8,yz8;var gz8=L(()=>{l1();It();H8();CH0();Vt();PJ();Xj();$g0();Cz8=new $1;Cz8.all("/",async($)=>{let Z=$.get("studioContext"),Q=new URL($.req.url),Y=`${Q.protocol}//${Q.host}`;return KR1($.req.raw,Z,Y)});yz8=Cz8});var hz8={};P6(hz8,{mountDevRoutes:()=>NB5});function NB5($,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 KR1(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 fz8(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",yz8);let Q=new $1;Q.use("*",RU({mountPath:"/api/dev-assets"})),Q.route("/",ey0({orgFromPath:!1})),$.route("/api/dev-assets",Q)}var uz8=L(()=>{H8();i21();$g0();gz8()});var sz8={};P6(sz8,{watchHandler:()=>oz8,resolveVoiceSigningSecret:()=>pz8,resolveCorsOrigin:()=>nz8,isSsoExemptPath:()=>iz8,isAllowedOAuthRedirectUri:()=>tz8,createApp:()=>TB5});import{readFileSync as BB5}from"fs";import{randomBytes as DB5}from"crypto";import{PrometheusSerializer as LB5}from"@opentelemetry/exporter-prometheus";import{DBOS as jD}from"@dbos-inc/dbos-sdk";import{oAuthDiscoveryMetadata as wB5,oAuthProtectedResourceMetadata as EB5}from"better-auth/plugins";async function OB5($){let Z=$.connect(),Q;try{Q=await Promise.race([Z,mz8(lz8)])}catch{return Z.then((Y)=>Y.release(!0)).catch(()=>{}),!1}try{return await Promise.race([Q.query("SELECT 1"),mz8(lz8)]),Q.release(),!0}catch{return Q.release(!0),!1}}function mz8($){return new Promise((Z,Q)=>setTimeout(()=>Q(Error("pg health-check timeout")),$))}function iz8($){return $.startsWith("/api/org-sso/")||/^\/api\/[^/]+\/sso\//.test($)||$.startsWith("/api/auth/")||$.startsWith("/api/tools/management")||$.startsWith("/oauth-proxy/")||/^\/api\/[^/]+\/oauth-proxy\//.test($)||$.startsWith(`${xy0}/`)||$.startsWith(`${ky0}/`)}function pz8($){let Z=$.studioJwtSecret||$.betterAuthSecret;if(Z)return Z;return console.warn("STUDIO_JWT_SECRET/BETTER_AUTH_SECRET not set - generating a random secret for voice sessions (not persistent across restarts)"),DB5(32).toString("base64")}function nz8($,{baseUrl:Z,requestOrigin:Q}){let Y;try{Y=new URL($).hostname}catch{return null}if(Y==="localhost"||Y==="127.0.0.1")return $;let X=Z??Q;try{if(new URL(X).origin===$)return $}catch{}return null}function tz8($,Z){return $.origin===new URL(Z).origin||$.hostname==="localhost"}async function TB5($={}){let Z=$.database??E8(),Q=!1;_6.stop().catch((h)=>{console.error("[SSEHub] Error stopping previous broadcast (HMR cleanup):",h)});let Y,X,J,G,W=new nq1,K,H,F,U=null;if($.disableNats)K=tq1(),Y={get:async()=>null,set:async()=>{},invalidate:async()=>{},teardown:()=>{}},X=null,J=null,G=new JZ0,H={start:async()=>{},broadcast:()=>{},stop:async()=>{}},F={init:async()=>{},pump:(h)=>{return(async()=>{let U0=h.getReader();try{while(!0){let{done:N0}=await U0.read();if(N0)break}}catch{}finally{U0.releaseLock()}})()},publishRawChunk:async()=>!1,publishDone:async()=>!1,createTailStream:async()=>null,purge:()=>{},teardown:()=>{}};else{U=dP8();let h=B0().natsCredsPath,U0;if(h)try{U0=BB5(h,"utf8")}catch(k$){console.error(`[app] failed to read NATS_CREDS at ${h}; connecting anonymously`,k$)}U.init(B0().natsUrls,{creds:U0,user:B0().natsUser,password:B0().natsPassword});let N0=L91()?new Z91({getJetStream:()=>U.getJetStream(),selfListVersion:Lh0.version}):null;N0?.init().catch(()=>{}),Y=N0;let q0=new OZ1({getJetStream:()=>U.getJetStream()});q0.init().catch(()=>{}),X=q0;let y0=new mh(VN1,{getJetStream:()=>U.getJetStream()}),T1=new mh($90,{getJetStream:()=>U.getJetStream()});y0.init().catch(()=>{}),T1.init().catch(()=>{}),J={reads:y0,cards:T1};let Q8=new xO1({getJetStream:()=>U.getJetStream()});Q8.init().catch(()=>{}),G=Q8,K=tq1({getConnection:()=>U.getConnection()}),H=new oq1({getConnection:()=>U.getConnection()}),F=new rq1({getConnection:()=>U.getConnection(),getJetStream:()=>U.getJetStream()}),ZU8(U),U.onReady(()=>{N0?.init().catch((k$)=>{console.error("[McpListCache] Deferred init failed:",k$)}),q0.init().catch((k$)=>{console.error("[SkillCatalogCache] Deferred init failed:",k$)}),y0.init().catch((k$)=>{console.error("[PrReadCache] Deferred init failed:",k$)}),T1.init().catch((k$)=>{console.error("[PrCardCache] Deferred init failed:",k$)}),Q8.init().catch((k$)=>{console.error("[ConnectionCircuitStore] Deferred init failed:",k$)}),K.start(),yj$(()=>U.getConnection()),F.init().catch((k$)=>{console.warn("[Decopilot] StreamBuffer init failed (late-join disabled):",k$)})})}if(c2)await c2();Q91(Y),wZ1(X),aZ1(()=>U?.getConnection()??null),IN1(J),fO1(G);let B={storage:new hn(Z.db),sseHub:_6,onThreadFinished:async(h,U0)=>tn(new FH(Z.db),h,U0)},D=new _B1(B),O=new o70(Z.db),j=new eq1(O);j.start(),H48(H),H.start((h)=>{gv0(h),D.execute({type:"CANCEL",taskId:h}).catch((U0)=>{console.error("[Decopilot] CancelBroadcast execute failed:",U0)})}).catch((h)=>{console.error("[Decopilot] CancelBroadcast start failed:",h)}),U?.onReady(()=>{H.start().catch((h)=>{console.error("[CancelBroadcast] Deferred start failed:",h)})});let w=()=>U?.getConnection()??null;h21(w),U?.onReady(()=>h21(w)),jj1(w),U?.onReady(()=>jj1(w)),F.init().catch((h)=>{console.warn("[Decopilot] StreamBuffer init failed, attach/late-join disabled:",h)}),c2=async()=>{await D.stopAll(),D.dispose(),j.dispose(),H.stop().catch(()=>{}),zN8(),F.teardown(),Y?.teardown(),X?.teardown(),J?.reads.teardown(),J?.cards.teardown(),W.teardown(),K.teardown(),gj$(),G.teardown(),Q91(null),wZ1(null),aZ1(null),IN1(null),fO1(null)};let E=new $1;if(E.use("*",_O1({enabled:(h)=>eo(h,"debug")==="1"})),E.use("*",nh0),E.use("/*",sF8({origin:(h,U0)=>nz8(h,{baseUrl:B0().baseUrl,requestOrigin:new URL(U0.req.url).origin}),credentials:!0,allowMethods:["GET","POST","PUT","DELETE","OPTIONS"],allowHeaders:["Content-Type","Authorization","mcp-protocol-version"],exposeHeaders:["WWW-Authenticate"]})),E.use("*",async(h,U0)=>{if(await U0(),h.req.path.includes("/files/"))return;if(h.req.path.includes("/fs/")&&h.req.path.endsWith("/read"))return;h.header("X-Frame-Options","DENY"),h.header("Content-Security-Policy","frame-ancestors 'none'")}),B0().nodeEnv==="development")E.use("*",Tz8());E.use("*",async(h,U0)=>{if(await U0(),Xa(h.req.path))return;if(h.res.status>=500){let q0=await h.res.clone().text();console.error(`[5xx Response] ${h.req.method} ${h.req.path} - ${h.res.status}:`,q0)}}),E.get(eX.HEALTH,(h)=>{if(Q)return h.json({status:"shutting_down"},503);return h.json({status:"ok"})}),E.get(eX.HEALTH_LIVE,(h)=>{return h.json({status:"ok"})}),E.get(eX.HEALTH_READY,async(h)=>{if(Q)return h.json({status:"shutting_down"},503);let U0={};if(U0.postgres={status:await OB5(Z.pool)?"up":"down"},U)U0.nats=U.isConnected()?{status:"up"}:{status:"down"};else U0.nats={status:"down"};let N0=U0.postgres.status==="up",q0=N0?200:503;return h.json({status:N0?"ready":"not_ready",services:U0},q0)}),E.get(eX.METRICS,async(h)=>{try{let U0=await ah0.collect(),N0=jB5.serialize(U0.resourceMetrics);return h.text(N0,200,{"Content-Type":"text/plain; version=0.0.4; charset=utf-8"})}catch(U0){return console.error("Failed to collect metrics:",U0),h.text("# Error collecting metrics",500)}});let P=1800000;E.get(`${eX.DBOS_QUEUE_DEPTH_PREFIX}:queueName`,async(h)=>{let U0=h.req.param("queueName");if(!PB5.has(U0))return h.json({error:`Unknown queue: ${U0}`},404);let[N0,q0]=await Promise.all([jD.listQueuedWorkflows({queueName:U0,status:"ENQUEUED",loadInput:!1,loadOutput:!1}),jD.listQueuedWorkflows({queueName:U0,status:"PENDING",loadInput:!1,loadOutput:!1,dequeuedAfter:new Date(Date.now()-P).toISOString()})]);return h.json({queue_length:N0.length,in_flight:q0.length})}),E.route("/api/config",$P8),E.route("/api/_reports",FP8),E.route("/api/_stripe",bq1),E.route("/api/_github",BP8({taskBoard:()=>m,contextFactory:()=>b})),E.route("/api/_git",Bs);let T={db:Z.db,encryptionKey:B0().encryptionKey};E.route("/api/_jira",qP8(T)),E.route("/api/_jira",jP8(T)),E.route("/report",WP8($.clientDir)),E.route("/api/auth/custom",zU8),E.all("/api/auth/admin/*",KN8),E.all("/api/auth/*",async(h)=>{return await U4.handler(h.req.raw)});let z=AG8();z.use("/.well-known/oauth-protected-resource/mcp/:connectionId",GQ0),z.use("/mcp/:connectionId/.well-known/oauth-protected-resource",GQ0),E.route("/",z),E.get("/.well-known/oauth-protected-resource/api/:org/mcp/:connectionId",fZ0),E.route("/",VG8()),E.use("/oauth-proxy/:connectionId/*",GQ0),E.all("/oauth-proxy/:connectionId/*",cz8);let A=async(h)=>{let N0=await zB5()(h.req.raw),q0=await N0.json();return Response.json(q0,N0)};E.use("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",GQ0),E.get("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",A);let M=async(h)=>{let N0=await AB5()(h.req.raw),q0=await N0.json();return Response.json(q0,N0)};E.get("/.well-known/oauth-authorization-server/*/:gateway?/:connectionId?",M);let f=rF8({ttlMs:120000}),S=await WF8({db:Z.db,auth:U4,encryption:{key:B0().encryptionKey},observability:{tracer:mj,meter:W$},modelListCache:W,providerKeyCache:K,memberRoleCache:f});gY.set(S),W8$({db:Z.db,baseUrl:z5()}),KF8({db:Z.db}),NF8({db:Z.db}),OF8({db:Z.db}),IF8({db:Z.db}),fF8({db:Z.db}),zP8({db:Z.db,encryptionKey:B0().encryptionKey}),Le$({db:Z.db}),mF8({db:Z.db}),re$({db:Z.db});let V=Iz(Z.db),v=new p70(Z.db),b=zz8({db:Z.db});lD1({storage:V,studioContextFactory:b,orgContextFactory:(h)=>yY(Z.db,h),systemDatabaseUrl:Ce(B0().databaseUrl,B0().databasePgSsl)}),TD1({systemDatabaseUrl:Ce(B0().databaseUrl,B0().databasePgSsl),studioContextFactory:b,deps:{runRegistry:D,cancelBroadcast:H,streamBuffer:F,sseHub:_6}}),jD1({dispatchRunFn:w88,studioContextFactory:b,deps:{runRegistry:D,cancelBroadcast:H,streamBuffer:F,sseHub:_6}});let u=new hn(Z.db),m=new FH(Z.db),i=new ZR1(m,b);if(B0().taskBoardReviewSweeperEnabled){i.start();let h=c2;c2=async()=>{await h?.(),i.dispose()}}Nz8({automations:V,taskBoard:m,fire:NH,systemDatabaseUrl:Ce(B0().databaseUrl,B0().databasePgSsl),settleMs:B0().boardTransitionSettleSeconds*1000}),Ce$(Dz8),h88({getJetStream:()=>U?.getJetStream()??null,getJetStreamManager:async()=>{let h=U?.getConnection();return h?await dz8.jetstreamManager(h):null},messageParts:u.messageParts(),resolveRun:async(h)=>{let U0=await Z.db.selectFrom("threads").select(["organization_id","created_by","message_storage_version","status","run_fence_token","title"]).where("id","=",h).executeTakeFirst();return U0?{orgId:U0.organization_id,createdBy:U0.created_by,version:U0.message_storage_version??1,status:U0.status,runFenceToken:U0.run_fence_token,title:U0.title??null}:null},completeRunIfNotCompleted:async(h,U0)=>{let N0=await u.completeRunIfNotCompleted(h,U0);if(Ah0(_6,U0,h,N0),N0)await tn(m,h,U0);return N0},markRunRequiresAction:async(h,U0)=>{let N0=await u.requiresActionIfInProgress(h,U0);return Ah0(_6,U0,h,N0),N0},markRunFailed:async(h,U0,N0,q0)=>{let y0=await u.markRunFailed(h,U0,N0,q0);if(Ah0(_6,U0,h,y0),y0)await tn(m,h,U0);return y0},clearSynthesizedError:async(h,U0)=>{await u.messageParts().replaceMessageParts(h,fz(h,U0),[])},persistTitle:(h,U0,N0)=>u.update(h,U0,{title:N0}),onTitleUpdated:async({runId:h,orgId:U0,title:N0})=>{let q0=await u.get(h,U0).catch(()=>null);_6.emit(U0,$N(h,q0?.status??"in_progress",{title:N0,virtualMcpId:q0?.virtual_mcp_id??void 0,createdBy:q0?.created_by,triggerId:q0?.trigger_id,branch:q0?.branch??null,harnessId:q0?.harness_id??void 0,createdAt:q0?.created_at,updatedAt:q0?.updated_at}))},bumpProgress:async({runId:h,orgId:U0})=>{await u.bumpProgress(h,U0)},recordCompleted:async({runId:h,orgId:U0,distinctId:N0,usage:q0})=>{m1.capture({distinctId:N0,event:"chat_message_completed",groups:{organization:U0},properties:{organization_id:U0,thread_id:h,transport:"projector",input_tokens:q0.inputTokens,output_tokens:q0.outputTokens,total_tokens:q0.totalTokens}})},recordFailed:async({runId:h,orgId:U0,distinctId:N0,reason:q0,kind:y0})=>{m1.capture({distinctId:N0,event:"chat_message_failed",groups:{organization:U0},properties:{organization_id:U0,thread_id:h,transport:"projector",error_category:y0,error_message:q0}})},purgeRun:async(h)=>{F.purge(h)}}),l$8({studioContextFactory:b,systemDatabaseUrl:Ce(B0().databaseUrl,B0().databasePgSsl),streamBuffer:F}),Ez8(),K8$(),FF8(),DF8(),wF8(),CF8(),gF8(),TP8(),Lz8(),Pe$(),dF8(),ee$(),LP8();let G0=async(h,U0,N0)=>{let q0=await V.findById(h,U0);if(!q0)throw Error("Automation not found");return pD1({automationId:q0.id,organizationId:q0.organization_id,triggerId:null})},I0=new Gs(V,({automation:h,trigger:U0,contextMessages:N0,idempotencyKey:q0})=>NH({automationId:h.id,organizationId:h.organization_id,triggerId:U0.id,contextMessages:N0},{idempotencyKey:q0})),X0=[gH(),Rl(),RD()];for(let h of X0)Rh0(h).then(()=>{}).catch((U0)=>console.error("[monitoring] Retention cleanup failed:",U0));let H0=()=>U4.api.deleteAllExpiredApiKeys().catch((h)=>console.error("[auth] Expired API key cleanup failed:",h));H0(),setInterval(H0,86400000).unref(),E.use("*",async(h,U0)=>{if(ih0(h.req.path))return U0();let N0={measure:async(y0,T1)=>{zH(h,y0);try{return await T1()}finally{SW(h,y0)}}},q0=await gY.create(h.req.raw,{timings:N0});q0.automationRunner=G0,h.set("studioContext",q0);try{await U0()}finally{let y0=q0.pendingRevalidations;if(y0.length>0)Promise.race([Promise.allSettled(y0),G$(30000)]).catch((Q8)=>console.error("[studio] revalidation cleanup error:",Q8))}}),E.use("/api/:org/decopilot/*",Zs),E.use("/api/:org/v1/*",Zs),E.use("/api/:org/files/*",Zs),E.use("*",async(h,U0)=>{if(iz8(h.req.path))return U0();let N0=h.get("studioContext");if(!N0?.organization?.id||!N0?.auth?.user?.id)return U0();if(!(await N0.storage.orgSsoConfig.getByOrgId(N0.organization.id))?.enforced)return U0();if(!await N0.storage.orgSsoSessions.isValid(N0.auth.user.id,N0.organization.id))return h.json({error:"SSO authentication required for this organization"},403);return U0()});let s=new $1;s.use("*",RU({mountPath:"/api/org-sso"})),s.route("/",gy0()),E.route("/api/org-sso",s),E.get("/api/tools/management",(h)=>{return h.json({tools:Oe,grouped:YT()})}),E.use("/mcp/*",async(h,U0)=>{zH(h,"mcp");try{return await U0()}finally{SW(h,"mcp")}});let o=async(h,U0)=>{let N0=h.var.studioContext;if(!N0.auth.user?.id&&!N0.auth.apiKey?.id){let q0=new URL(h.req.url),y0=h.req.header("x-forwarded-proto")?.split(",")[0]?.trim(),T1=y0?`${y0}://${q0.host}`:q0.origin;return h.res=new Response(null,{status:401,headers:{"WWW-Authenticate":`Bearer realm="mcp",resource_metadata="${T1}${q0.pathname}/.well-known/oauth-protected-resource"`}})}return await U0()};if(E.use("/mcp/:connectionId?",o),E.use("/mcp/gateway/:virtualMcpId?",o),E.use("/mcp/virtual-mcp/:virtualMcpId?",o),E.use("/mcp/self",o),mK()){let{mountDevRoutes:h}=(uz8(),vh0(hz8));h(E,o)}let r=new $1;r.use("*",RU({mountPath:"/mcp"})),r.route("/",Qx0()),E.route("/mcp",r);let Q0=new $1;Q0.use("*",RU({mountPath:"/mcp/self"})),Q0.route("/",Sg0()),E.route("/mcp/self",Q0);let J0=new $1;J0.use("*",RU({mountPath:"/mcp"})),J0.route("/",Jx0()),E.route("/mcp",J0),E.use("/api/:org/models/*",async(h,U0)=>{zH(h,"llm_models");try{return await U0()}finally{SW(h,"llm_models")}});let u0=VN8({cancelBroadcast:H,streamBuffer:F,runRegistry:D});E.route("/api",u0),E.route("/api",IP8);let C0=new $1;C0.use("*",RU({mountPath:"/api"})),C0.route("/",xg0()),E.route("/api",C0),E.route("/api",oE8);let Y1=new $1;Y1.use("*",RU({mountPath:"/api"})),Y1.route("/",fg0({tokenStorage:v,automationEventDispatcher:I0})),E.route("/api",Y1);let i0=new n70(Z.db),j0=new $1;j0.use("*",RU({mountPath:"/api"})),j0.route("/",dy0()),E.route("/api",j0),E.route("/api/deco-sites",mN8());let E0=new $1;E0.use("*",RU({mountPath:"/api/deco-sites"})),E0.route("/",py0()),E.route("/api/deco-sites",E0),E.route(xy0,HN8()),E.route(CO8,vO8()),E.route("/api/_editor-resolve",aE8()),E.route(VU8,IU8()),E.route(ky0,cU8());let m0=B0(),B1=m0.elevenlabsApiKey?new Nh0({apiKey:m0.elevenlabsApiKey,model:m0.elevenlabsVoiceModel,conversationModel:m0.elevenlabsConversationModel,voiceId:m0.elevenlabsVoiceId}):null,H1={openai:m0.openaiLiveApiKey?new Mq1({apiKey:m0.openaiLiveApiKey,voice:m0.openaiLiveVoice}):null,elevenlabs:B1?new Rq1(B1,()=>U?.getConnection()??null):null},_0=new Sq1({adapter:B1,conversationAdapters:H1,defaults:m0,secret:pz8(m0),getConnection:()=>U?.getConnection()??null}),c0=TE8({voiceSessions:_0,kvStorage:i0,runRegistry:D,streamBuffer:F,sseHub:_6,cancelBroadcast:H,tokenStorage:v,automationEventDispatcher:I0,mountDevAssets:mK(),mcpAuth:o,oauthProxyHandler:cz8,watchHandler:oz8,betterAuthProtectedResourceHandler:A,getNatsConnection:()=>U?.getConnection()??null});return E.route("/api/:org",c0),E.notFound((h)=>{return h.json({error:"Not Found",path:h.req.path},404)}),E.onError(kN8),Object.assign(E,{markShuttingDown:()=>{Q=!0},shutdown:async()=>{if(console.log("[shutdown] Stopping workers..."),await Promise.allSettled([_6.stop(),c2?Promise.resolve(c2()).finally(()=>{c2=null}):Promise.resolve()]),U)await U.drain().catch((h)=>console.error("[shutdown] NATS drain error:",h));console.log("[shutdown] Flushing telemetry..."),await rJ().catch((h)=>console.error("[shutdown] Telemetry flush error:",h)),console.log("[shutdown] Closing database..."),await f5$(Z).catch((h)=>console.error("[shutdown] Database close error:",h)),console.log("[shutdown] Cleanup complete.")},initDbos:async()=>{await jD.registerQueue(jG,{partitionQueue:!0,concurrency:gD1,minPollingIntervalMs:hD1}),await jD.registerQueue(oW,{partitionQueue:!0,concurrency:zD1,priorityEnabled:!0}),await jD.registerQueue(AD,{workerConcurrency:B0().decopilotMaxConcurrentHostedRuns,priorityEnabled:!0}),await jD.registerQueue(TD,{workerConcurrency:B0().sandboxMaxConcurrentHostedRuns,priorityEnabled:!0}),await jD.registerQueue(lj,{partitionQueue:!0,concurrency:u$8}),await jD.registerQueue(t2,ae$),await jD.registerQueue(o2),await p21(V),await Promise.allSettled(["automations-gate","automations-global","jira-push"].map((h)=>jD.deleteQueue(h))),await uD1(Z.pool),PK$().catch((h)=>{console.error("[studio-pack-backfill] failed:",h)}),zc(Z.db).catch((h)=>{console.error("[automations] built-in seed failed:",h)}),H8$().catch((h)=>{console.error("[org-fs] public-sets boot sync kick failed:",h)})}})}var dz8,lz8=5000,c2=null,cz8=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 gY.create($.req.raw),$.set("studioContext",X);let J=$.req.param("org")?X.organization?.id:void 0,G=await X.storage.connections.findById(Z,J);if(!G?.connection_url)return $.json({error:"Connection not found"},404);if(Y==="register"&&G.oauth_config?.clientId){let v=await $.req.json().catch(()=>({}));return $.json({...typeof v==="object"&&v!==null?v:{},client_id:G.oauth_config.clientId,...G.oauth_config.clientSecret?{client_secret:G.oauth_config.clientSecret}:{},client_secret_expires_at:0})}let W=await Jo(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=iE1(await W.json());if(!K)K=H.origin;let N=await yZ0(K);if(!N.ok)return $.json({error:"Failed to get auth server metadata"},502);let B=await N.json(),D;if(Y==="authorize")D=B.authorization_endpoint;else if(Y==="token")D=B.token_endpoint;else if(Y==="register")D=B.registration_endpoint;if(!D)return $.json({error:`Unknown OAuth endpoint: ${Y}`},404);let O=MG8(D);if(O)return O;let j=new URL(D),w=new URL($.req.url);if(j.search=w.search,Y==="authorize"){let v=j.searchParams.get("redirect_uri");if(v){let b=B0().baseUrl??w.origin;try{if(!tz8(new URL(v),b))return $.json({error:"invalid_request",error_description:"redirect_uri is not allowed"},400)}catch{return $.json({error:"invalid_request",error_description:"redirect_uri is malformed"},400)}j.searchParams.set("redirect_uri",v)}if(j.searchParams.has("resource"))j.searchParams.set("resource",U);if(pF8(G.connection_url))j.searchParams.set("auto_personal","true"),j.searchParams.set("force_new","true");return $.redirect(j.toString(),302)}let E={Accept:$.req.header("Accept")||"application/json"},P=$.req.header("Content-Type");if(P)E["Content-Type"]=P;let T=$.req.header("Authorization");if(T)E.Authorization=T;let z,A=null,M=null;if($.req.method!=="GET"&&$.req.method!=="HEAD")if(Y==="token"&&P?.includes("application/x-www-form-urlencoded")){if(T?.toLowerCase().startsWith("basic "))try{let i=atob(T.slice(6).trim()),G0=i.indexOf(":");if(G0!==-1){let I0=decodeURIComponent(i.slice(0,G0)),X0=decodeURIComponent(i.slice(G0+1));A=I0||null,M=X0||null}}catch{}let v=await $.req.formData();if(v.has("resource"))v.set("resource",U);let b=v.get("client_id"),u=v.get("client_secret");if(typeof b==="string"&&b)A=b;if(typeof u==="string"&&u)M=u;let m=new URLSearchParams;for(let[i,G0]of v.entries())m.append(i,G0.toString());z=m.toString()}else if(Y==="register"&&P?.toLowerCase().includes("application/json")){let v=await X.db.selectFrom("organization").select(["id","slug","name"]).where("id","=",G.organization_id).executeTakeFirst(),b=await $.req.text(),u={};try{u=b?JSON.parse(b):{}}catch{z=b}let m=typeof u==="object"&&u!==null&&!Array.isArray(u);if(z===void 0&&!m)z=b;if(z===void 0){let i=u,G0=i.metadata&&typeof i.metadata==="object"?i.metadata:{};i.metadata={...G0,organization_id:G.organization_id,...v?.slug?{organization_slug:v.slug}:{},...v?.name?{organization_name:v.name}:{}},z=JSON.stringify(i),E["Content-Type"]="application/json"}}else z=$.req.raw.body??void 0;let f=await fetch(j.toString(),{method:$.req.method,headers:E,body:z,duplex:"half",redirect:"manual"}),S=new Headers,V=["connection","keep-alive","transfer-encoding","content-encoding","content-length"];for(let[v,b]of f.headers.entries())if(!V.includes(v.toLowerCase()))S.set(v,b);if(Y==="token"&&f.ok){let v=await f.text();try{let b=JSON.parse(v);if(typeof b.access_token==="string"&&b.access_token){let u=typeof b.expires_in==="number"?new Date(Date.now()+b.expires_in*1000):null,m=null;try{m=await Q2(G.connection_url)??D}catch{m=D}let i={connectionId:Z,accessToken:b.access_token,refreshToken:typeof b.refresh_token==="string"?b.refresh_token:null,scope:typeof b.scope==="string"?b.scope:null,expiresAt:u,clientId:A,clientSecret:M,tokenEndpoint:m};await new Y9(X.db,X.vault).upsert(i)}}catch(b){console.error("[oauth-proxy] failed to persist downstream token:",b)}return new Response(v,{status:f.status,statusText:f.statusText,headers:S})}return new Response(f.body,{status:f.status,statusText:f.statusText,headers:S})},oz8=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&&(!gB(Y)||!await hB(Z)))return $.json({error:"forbidden"},403);let W=G?S_0:Y;if(G)lO({action:"watch_all_orgs",actorUserId:Q,actorOrgId:Y,targetOrgId:"all"});let K=crypto.randomUUID();return kj($,async(H)=>{if(await H.writeSSE({event:"connected",data:JSON.stringify({listenerId:K,organizationId:Y,typePatterns:J,connectedAt:new Date().toISOString()})}),!_6.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(()=>{_6.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),_6.remove(W,K)})},30000);await new Promise((N)=>{H.onAbort(()=>{clearInterval(U),_6.remove(W,K),N()})})})},jB5,PB5,zB5=()=>EB5(U4),AB5=()=>wB5(U4);var az8=L(()=>{g$();l1();F8$();UF8();LF8();EF8();SF8();hF8();BZ0();QN1();iF8();e50();B9();Ti();q8();H8();Ry0();aF8();vO1();$H();fF();N21();vG();y6();K6();E21();kU8();dU8();M21();FN8();x21();c21();d21();uK();gZ0();i21();CN8();Vy0();qE8();kE8();CE8();bE8();dE8();o21();Yx0();GZ0();sE8();Gx0();VT1();rE8();RT1();ZP8();KP8();UP8();NP8();DP8();OP8();wP8();RP8();iq1();ZA1();kP8();MT1();zT1();AY0();iP8();_q1();VJ();XB0();b80();CN1();u$0();m$0();gO1();pP8();tP8();u21();Zz8();Iv0();Qz8();o50();uO();F5();Tz1();Wz8();Oz8();N3();mO();Pz8();JF0();XR1();sW();n21();gO();LD1();JF0();x90();c50();Kz1();Az8();vw();qz8();Cs();N21();un();Gt();hv0();dz8=_(pH(),1);jB5=new LB5,PB5=new Set([jG,oW,AD,TD,lj,t2])});var Z28={};P6(Z28,{resolveClientDir:()=>CB5,resolveAssetPathWithTraversalCheck:()=>$28,isPathWithinDirectory:()=>ez8,createAssetHandler:()=>SB5});import{resolve as KY0,dirname as qB5,join as RB5,extname as MB5,basename as VB5,sep as rz8}from"path";function IB5($,Z){if($===Z||VB5($)==="index.html")return{"Cache-Control":"no-cache"};if($.includes(`${rz8}assets${rz8}`))return{"Cache-Control":"public, max-age=31536000, immutable"};return{}}function ez8($,Z){let Q=KY0(Z),Y=KY0($);return Y===Q||Y.startsWith(Q+"/")}function $28({requestPath:$,clientDir:Z}){let Q=$.startsWith("/")?$.slice(1):$,Y=KY0(Z,Q);if(!ez8(Y,Z))return null;return Y}function CB5($,Z="../client"){let Q=new URL($),Y=qB5(Q.pathname);return KY0(Y,Z)}function SB5($={}){let{env:Z="production",clientDir:Q=kB5,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=$28({requestPath:W,clientDir:Q});if(!K)return null;let H=RB5(K,"index.html"),F=KY0(Q,"index.html"),U=J.headers.get("accept"),B=U?.includes("text/html")||U?.includes("*/*")&&["",".html"].includes(MB5(K))?[H,F]:[];for(let D of[K,...B])try{let O=Bun.file(D);if(await O.exists())return new Response(O,{headers:IB5(D,F)})}catch{}if(W.includes("/assets/"))return new Response("Not Found",{status:404,headers:{"Cache-Control":"no-store"}});return null}}var kB5="./dist/client";var Q28=()=>{};var Y28={};P6(Y28,{tryUpgradePreviewWs:()=>lB5,tryHandlePreviewHttp:()=>yB5,previewWebSocketHandler:()=>mB5,parsePreviewBaseDomain:()=>fB5,isPreviewWsData:()=>Mh0,extractHandleFromHost:()=>HR1});function bB5($){if($.method!=="GET")return!1;return($.headers.get("accept")??"").includes("text/html")}function xB5(){return new Response(vB5,{status:503,headers:{"content-type":"text/html; charset=utf-8","cache-control":"no-store","retry-after":"1","access-control-allow-origin":"*"}})}function fB5($){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 HR1($,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 yB5($,Z){let Q=HR1($.headers.get("host"),Z.baseDomain);if(!Q)return null;let{handle:Y,slug:X}=S31(Q),J=await Z.getRunner();if(!J)return FY0(503,"preview proxy not configured");let G=await J.proxyPreviewRequest(Y,X?uB5($,X):$);if(G.headers.get(np)&&bB5($))return xB5();return G.headers.delete(np),G}function hB5($){return{protocols:$.upstreamProtocols,headers:{[C31]:$.appSlug}}}function uB5($,Z){let Q=new Headers($.headers);return Q.set(C31,Z),new Request($,{headers:Q})}function FY0($,Z){return new Response(JSON.stringify({error:Z}),{status:$,headers:{"content-type":"application/json","access-control-allow-origin":"*"}})}function Mh0($){return typeof $==="object"&&$!==null&&$.kind==="preview"}async function lB5($,Z,Q){if(($.headers.get("upgrade")??"").toLowerCase()!=="websocket")return null;let Y=HR1($.headers.get("host"),Q.baseDomain);if(!Y)return null;let{handle:X,slug:J}=S31(Y),G=await Q.getRunner();if(!G)return FY0(503,"preview proxy not configured");let W=await G.resolvePreviewUpstreamUrl(X);if(!W)return FY0(404,"sandbox not found");let K=new URL($.url);if(K.pathname.startsWith("/_sandbox"))return FY0(404,"not found");let H=`${W.replace(/^http/,"ws")}${K.pathname}${K.search}`,F=$.headers.get("sec-websocket-protocol"),U=F?F.split(",").map((D)=>D.trim()).filter(Boolean):[],N={kind:"preview",upstreamUrl:H,upstreamProtocols:U,...J?{appSlug:J}:{},pending:[],upstream:null,closed:!1};if(!Z.upgrade($,{data:N}))return FY0(426,"upgrade failed");return}function HY0($,Z,Q,Y){if(Z.closed)return;Z.closed=!0;try{$.close(Q,Y)}catch{}try{Z.upstream?.close()}catch{}}var _B5=256,vB5='<!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>',gB5,mB5;var X28=L(()=>{f60();gB5=WebSocket;mB5={open($){let Z=$.data;if(!Mh0(Z))return;let Q;try{Q=Z.appSlug?new gB5(Z.upstreamUrl,hB5(Z)):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)}`),HY0($,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)=>{HY0($,Z,Y.code||1000,Y.reason||"")}),Q.addEventListener("error",()=>{HY0($,Z,1011,"upstream error")})},message($,Z){let Q=$.data;if(!Mh0(Q))return;let Y=Q.upstream;if(Y&&Y.readyState===WebSocket.OPEN){Y.send(Z);return}if(Q.pending.length>=_B5){HY0($,Q,1011,"preview ws backlog overflow");return}Q.pending.push(Z)},close($){let Z=$.data;if(!Mh0(Z))return;HY0($,Z,1000,"")}}});g$();var AR1="14";function TR1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:AR1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}g$();import A28 from"pg";var qR1=8314027461559302n,T28=600000,q28=500;async function RR1($,Z){let{databaseUrl:Q,lockTimeoutMs:Y=T28}=$,X=$.log??((K)=>console.log(K)),J=new A28.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",[qR1.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 G$(q28)}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)",[qR1.toString()])}catch{}await J.end().catch(()=>{})}}l1();yh0();y6();function AA8(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function $u0($,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 WM1(){let $=AA8();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:$u0($,"--cpu-prof-dir")??process.cwd(),name:$u0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number($u0($,"--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.'}))}Yu0();var RY0;function OM1(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let Q=r2();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(()=>{}),RY0=setInterval(()=>void Z().catch(()=>{}),$),RY0.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(RY0)clearInterval(RY0)}}import*as RA8 from"bun:jsc";var{startSamplingProfiler:MA8,samplingProfilerStackTraces:VA8}=RA8;function jM1(){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{MA8()}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=VA8()?.traces??[]}catch{}if(G>$&&W.length>0){let K=new Map;for(let F of W){let U=F.frames.find((D)=>D.sourceURL&&!/Unknown Executable/.test(D.category??""))??F.frames[0];if(!U)continue;let N=(U.sourceURL??"?").replace(/^.*\/node_modules\//,"node_modules/"),B=`${U.name??"?"} @ ${N}:${U.line??"?"}`;K.set(B,(K.get(B)??0)+1)}let H=[...K.entries()].sort((F,U)=>U[1]-F[1]).slice(0,8).map(([F,U])=>({frame:F,count:U}));console.warn(JSON.stringify({msg:"stall-stack",ts:new Date().toISOString(),lagMs:Math.round(G),samplesInWindow:W.length,top:H}))}Q=setTimeout(X,Z),Q.unref?.()};return Q=setTimeout(X,Z),Q.unref?.(),()=>{if(Q)clearTimeout(Q)}}function wM1(){WM1();let $=[OM1(),LM1(),jM1()];return()=>{for(let Z of $)Z()}}import{existsSync as sB5}from"fs";var nW=B0();XM1();var{DBOS:UY0,DBOSClient:cB5}=await import("@dbos-inc/dbos-sdk");function LR1($,Z){if(!Z)return $;let Q=new URL($);if(!Q.searchParams.has("sslmode"))Q.searchParams.set("sslmode","verify-full");return Q.toString()}var dB5=[jG,oW,AD,TD,lj,t2,o2],iB5=nW.dispatchRole==="worker"?dB5:nW.dispatchRole==="api"?[]:void 0;UY0.setConfig(TR1({systemDatabaseUrl:LR1(nW.databaseUrl,nW.databasePgSsl),poolSize:nW.dbosPoolSize,executorID:nW.podName,listenQueues:iB5}));var{createApp:pB5}=await Promise.resolve().then(() => (az8(),sz8)),{isServerPath:nB5}=await Promise.resolve().then(() => (AY0(),lR1)),{createAssetHandler:tB5,resolveClientDir:H28}=await Promise.resolve().then(() => (Q28(),Z28)),oB5=nW.port,J28=H28(import.meta.url,"../client"),F28=sB5(J28)?J28:H28(import.meta.url,"../dist/client"),aB5=tB5({clientDir:F28,isServerPath:nB5}),rB5={"X-Frame-Options":"DENY","Content-Security-Policy":"frame-ancestors 'none'"};function eB5($){let Z=new Headers($.headers);for(let[Q,Y]of Object.entries(rB5))Z.set(Q,Y);return new Response($.body,{status:$.status,statusText:$.statusText,headers:Z})}var{parsePreviewBaseDomain:$D5,tryHandlePreviewHttp:ZD5,tryUpgradePreviewWs:QD5,previewWebSocketHandler:FR1,isPreviewWsData:UR1}=await Promise.resolve().then(() => (X28(),Y28)),{getOrInitSharedRunner:U28}=await Promise.resolve().then(() => (bX(),dc$)),N28=$D5(process.env.STUDIO_SANDBOX_PREVIEW_URL_PATTERN),G28={baseDomain:N28??"",getRunner:U28};if(process.env.STUDIO_SANDBOX_TENANT_POOLS?.trim())U28().catch(($)=>{console.warn("[lifecycle] eager sandbox provider init for tenant pools failed:",$ instanceof Error?$.message:String($))});var Vh0=await pB5({clientDir:F28}),NR1=process.env.DBOS_CONDUCTOR_KEY?.trim(),W28=process.env.DBOS_CONDUCTOR_URL?.trim();await RR1({databaseUrl:LR1(nW.databaseUrl,nW.databasePgSsl)},()=>UY0.launch({...NR1?{conductorKey:NR1}:{},...NR1&&W28?{conductorURL:W28}:{}}));console.log(`[dbos] application version: ${UY0.applicationVersion}`);var BR1=5,DR1=0;await $8(async()=>{DR1++;try{return await Vh0.initDbos()}catch($){let Z=DR1>=BR1?"giving up":"retrying";throw console.warn(`[dbos] initDbos attempt ${DR1}/${BR1} failed, ${Z}`,$),$}},{maxAttempts:BR1,minTimeout:1000,maxTimeout:1e4,jitter:0.5});var YD5=Bun.serve({idleTimeout:0,port:oB5,hostname:"0.0.0.0",fetch:async($,Z)=>{if(N28){let Y=await QD5($,Z,G28);if(Y===void 0)return;if(Y)return Y;let X=await ZD5($,G28);if(X)return X}let Q=await aB5($);if(Q)return eB5(Q);return Vh0.fetch($,{server:Z})},websocket:{open($){if(UR1($.data))FR1.open($)},message($,Z){if(UR1($.data))FR1.message($,Z)},close($){if(UR1($.data))FR1.close($)}},development:!1}),XD5=wM1();if(nW.localMode)Promise.resolve().then(() => (dh(),zv0)).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(() => (dh(),zv0));Z()}catch{}});var K28=!1;async function JD5($){let Z;try{Z=await cB5.create({systemDatabaseUrl:LR1(nW.databaseUrl,nW.databasePgSsl),systemDatabaseSchemaName:"dbos"});let Q=await Z.listWorkflows({status:"PENDING",queueName:oW,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:oW}),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 Ih0($){if(K28)return;K28=!0,console.log(`
|
|
4562
4562
|
[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{XD5(),Vh0.markShuttingDown();let J=MR1(nW.dispatchRole,Q,process.env.SHUTDOWN_DRAIN_MS);await G$(J),await YD5.stop(!0);let G=UY0.executorID;await UY0.shutdown(),await JD5(G),await Vh0.shutdown()}catch(J){console.error("[shutdown] Error during shutdown:",J),X=1}clearTimeout(Y),process.exit(X)}process.on("SIGTERM",()=>Ih0("SIGTERM"));process.on("SIGINT",()=>Ih0("SIGINT"));process.on("SIGHUP",()=>Ih0("SIGHUP"));process.on("unhandledRejection",($)=>{console.error("[process] Unhandled rejection:",$)});process.on("uncaughtException",($)=>{console.error("[process] Uncaught exception:",$),Ih0("uncaughtException")});
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as d,j as a,a2 as g}from"./index-BqutwFSm.js";import{C as x}from"./index-DX3l6VgM.js";import{a as h}from"./thread-route-DPiunvH4.js";import{u as $}from"./use-task-metadata-C7aK-HiB.js";import{AppViewContent as A}from"./project-app-view-BtOq7ZWp.js";import"./use-mobile-XeH7HFdg.js";import"./use-sidebar-collapsed-DTxIOS-x.js";import"./use-chat-layout-state-Aa4VqEQx.js";import"./use-panel-navigate-DIX895ki.js";import"./use-project-scope-C98g-M0M.js";import"./repository-binding-UPUU8iTD.js";import"./use-mcp-client-liHKfpfj.js";import"./auth-B2v1KOAc.js";import"./thread-intent-BdGEZQ5d.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./watch-sse-pool-62BerBh7.js";import"./task-board-Cp4gjjuc.js";import"./schema-DHeACN0H.js";import"./slugify-CEUa2lfQ.js";import"./agent-icon-CA2ls6V4.js";import"./AlertCircle-BgO0RShT.js";import"./Tool01-CDUtHuFU.js";import"./ArrowUp-DGj1a1JQ.js";import"./ArrowLeft-CLIbFvcM.js";import"./LinkBroken01-BCegKYMu.js";import"./ShoppingBag01-EO0f4EEB.js";import"./ZoomOut-Dg4JYL36.js";import"./Building02-DTlG5UDd.js";import"./CheckCircle-BoFFOiJR.js";import"./ChevronUp-DQBYMpqT.js";import"./ChevronSelectorVertical-DYan7Eqw.js";import"./UserSquare-DoHQfmRI.js";import"./Copy01-BPOEtZ0I.js";import"./CreditCard01-BgcDg6Po.js";import"./DotsVertical-bVrzKljT.js";import"./Image01-CYMd4B2w.js";import"./Globe04-DROK8sB6.js";import"./SwitchHorizontal01-VCz6eoXn.js";import"./Key01-CcnI3N_J.js";import"./Link01-BaCE2stQ.js";import"./Minus-YbXjN_Ds.js";import"./Monitor01-aloCOxdR.js";import"./Sun-tqaV4Ycc.js";import"./Play-CKfAabLj.js";import"./Plus-DifrnWDP.js";import"./SearchMd-OM6lL3Xq.js";import"./Trash01-VJJht0QK.js";import"./Upload01-Dxk-zD3u.js";import"./Users01-CS7GcqAQ.js";import"./XClose-B88tJS8W.js";import"./tooltip-RrBkgkDb.js";import"./index-oqricAgA.js";import"./toolbar-icon-button-C7qFILLP.js";import"./shell-layout-DKjamnSj.js";import"./use-deployment-admin-CuHcgI6F.js";import"./admin-fetch-BhTJlAsX.js";import"./use-clock-tick-UQl4M1J5.js";import"./command-6ewscZzU.js";import"./index-B94uTMNH.js";import"./integration-icon-C_aSliEO.js";import"./project-icon-DtQEqIYx.js";import"./new-project-dialog-BRBdOtjX.js";import"./label-Ce-ZCIZn.js";import"./repository-import-picker-Cgqnl0_u.js";import"./use-navigate-to-agent-Ba4TBBON.js";import"./repository-picker-BGNbJ5FK.js";import"./useInfiniteQuery-BYZFn0Hg.js";import"./infiniteQueryObserver-DCWN2zRB.js";import"./collection-search-Dxv0FJfh.js";import"./use-debounced-value-Chk6vawl.js";import"./use-organization-settings-C_uyrpUI.js";import"./required-auth-layout-DGUYFPwh.js";import"./autosend-BUHDH46M.js";import"./use-org-sso-ZqYOnTZ9.js";import"./sheet-D-DL4PyF.js";import"./resizable-2wUgP6NM.js";import"./tool-namespace-BWBiQhUq.js";import"./use-mcp-tools-iSL8qiEx.js";import"./content-blocks-o63cs2vh.js";import"./mcp-app-renderer-DrWXODkj.js";import"./types-CRdMnwkp.js";import"./chat-context-CRAqcBEA.js";import"./use-decopilot-events-B5qoi0Wr.js";import"./use-ai-providers-DVBJIa-_.js";import"./location-V0VwTJTt.js";import"./task-route-DKYWwLvg.js";import"./task-key-BCHdFiOO.js";import"./core.esm-BXQfTZkM.js";import"./connect-source-dialog-BYzD_cCd.js";import"./site-url-en5df9c-.js";import"./use-connect-companion-BPn2REj-.js";import"./companions-core-DzyeM-yJ.js";import"./metadata-D72DunRR.js";import"./github-repo-scope-ByTYKy_L.js";import"./form-BIDT1Ue4.js";import"./icon-button-DSMd1qL1.js";import"./provision-repo-scoped-github-connection-lckxpDHD.js";import"./useQueries-Rmt36TSN.js";import"./authenticate-and-persist-oauth-UWCdGiT0.js";import"./mcp-oauth-Mf3yN31G.js";import"./mcp-oauth-B1ojmT8l.js";import"./track-C7T3Q_NS.js";import"./extract-connection-data-Bv4y_ppm.js";import"./connection--HCyemnh.js";import"./url-slug-DUBa3zVK.js";const l=g("/shell/$org/org-shell/agent-shell/projects/$agentId/apps/$connectionId/$toolName");function j(){const t=d.c(10),{connectionId:o,toolName:r}=l.useParams(),{args:i}=l.useSearch(),u=h(),e=$(u);let p;t[0]!==o||t[1]!==e?.expanded_tools||t[2]!==r?(p=e?.expanded_tools?.find(c=>c.appId===o&&c.toolName===r),t[0]=o,t[1]=e?.expanded_tools,t[2]=r,t[3]=p):p=t[3];const f=p,s=`${o}:${r}`,n=f?.args;let m;return t[4]!==i||t[5]!==o||t[6]!==s||t[7]!==n||t[8]!==r?(m=a.jsx(A,{connectionId:o,toolName:r,args:n,searchArgs:i},s),t[4]=i,t[5]=o,t[6]=s,t[7]=n,t[8]=r,t[9]=m):m=t[9],m}function jo(){const t=d.c(1);let o;return t[0]===Symbol.for("react.memo_cache_sentinel")?(o=a.jsx(x.Content,{children:a.jsx(j,{})}),t[0]=o):o=t[0],o}export{jo as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c,j as e,bB as b,u as g}from"./index-BqutwFSm.js";import{C as j}from"./index-DX3l6VgM.js";import{F as v,H as S}from"./file-share-button-Cvb6TL3d.js";import{u as k,b as y,e as _}from"./use-org-fs-DNlQgLUG.js";import{S as w}from"./settings-tab-DU-L5-CZ.js";import{b as M}from"./thread-route-DPiunvH4.js";import"./use-mobile-XeH7HFdg.js";import"./use-sidebar-collapsed-DTxIOS-x.js";import"./use-chat-layout-state-Aa4VqEQx.js";import"./use-panel-navigate-DIX895ki.js";import"./use-project-scope-C98g-M0M.js";import"./repository-binding-UPUU8iTD.js";import"./use-mcp-client-liHKfpfj.js";import"./auth-B2v1KOAc.js";import"./thread-intent-BdGEZQ5d.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./watch-sse-pool-62BerBh7.js";import"./task-board-Cp4gjjuc.js";import"./schema-DHeACN0H.js";import"./slugify-CEUa2lfQ.js";import"./agent-icon-CA2ls6V4.js";import"./AlertCircle-BgO0RShT.js";import"./Tool01-CDUtHuFU.js";import"./ArrowUp-DGj1a1JQ.js";import"./ArrowLeft-CLIbFvcM.js";import"./LinkBroken01-BCegKYMu.js";import"./ShoppingBag01-EO0f4EEB.js";import"./ZoomOut-Dg4JYL36.js";import"./Building02-DTlG5UDd.js";import"./CheckCircle-BoFFOiJR.js";import"./ChevronUp-DQBYMpqT.js";import"./ChevronSelectorVertical-DYan7Eqw.js";import"./UserSquare-DoHQfmRI.js";import"./Copy01-BPOEtZ0I.js";import"./CreditCard01-BgcDg6Po.js";import"./DotsVertical-bVrzKljT.js";import"./Image01-CYMd4B2w.js";import"./Globe04-DROK8sB6.js";import"./SwitchHorizontal01-VCz6eoXn.js";import"./Key01-CcnI3N_J.js";import"./Link01-BaCE2stQ.js";import"./Minus-YbXjN_Ds.js";import"./Monitor01-aloCOxdR.js";import"./Sun-tqaV4Ycc.js";import"./Play-CKfAabLj.js";import"./Plus-DifrnWDP.js";import"./SearchMd-OM6lL3Xq.js";import"./Trash01-VJJht0QK.js";import"./Upload01-Dxk-zD3u.js";import"./Users01-CS7GcqAQ.js";import"./XClose-B88tJS8W.js";import"./tooltip-RrBkgkDb.js";import"./index-oqricAgA.js";import"./toolbar-icon-button-C7qFILLP.js";import"./shell-layout-DKjamnSj.js";import"./use-deployment-admin-CuHcgI6F.js";import"./admin-fetch-BhTJlAsX.js";import"./use-clock-tick-UQl4M1J5.js";import"./command-6ewscZzU.js";import"./index-B94uTMNH.js";import"./integration-icon-C_aSliEO.js";import"./project-icon-DtQEqIYx.js";import"./new-project-dialog-BRBdOtjX.js";import"./label-Ce-ZCIZn.js";import"./repository-import-picker-Cgqnl0_u.js";import"./use-navigate-to-agent-Ba4TBBON.js";import"./repository-picker-BGNbJ5FK.js";import"./useInfiniteQuery-BYZFn0Hg.js";import"./infiniteQueryObserver-DCWN2zRB.js";import"./collection-search-Dxv0FJfh.js";import"./use-debounced-value-Chk6vawl.js";import"./use-organization-settings-C_uyrpUI.js";import"./required-auth-layout-DGUYFPwh.js";import"./autosend-BUHDH46M.js";import"./use-org-sso-ZqYOnTZ9.js";import"./sheet-D-DL4PyF.js";import"./resizable-2wUgP6NM.js";import"./popover-VBk0ee-p.js";import"./index-BG1gU17W.js";import"./extract-connection-data-Bv4y_ppm.js";import"./metadata-D72DunRR.js";import"./connection--HCyemnh.js";import"./url-slug-DUBa3zVK.js";import"./chat-context-CRAqcBEA.js";import"./use-decopilot-events-B5qoi0Wr.js";import"./use-ai-providers-DVBJIa-_.js";import"./location-V0VwTJTt.js";import"./build-improve-prompt-doc-B1ctgI5i.js";import"./empty-state-P8DRc5l5.js";import"./use-date-fns-locale-DS-Izx-9.js";import"./mcp-oauth-Mf3yN31G.js";import"./mcp-oauth-B1ojmT8l.js";import"./textarea-DIMcwKj_.js";import"./use-connection-DVSix2AF.js";import"./use-debounced-autosave-DwOKfyXg.js";import"./add-connection-dialog-DxVAYgn3.js";import"./connection-card-CJzQ1R1a.js";import"./connection-slug-CITJ0kGN.js";import"./drawer-C8pd-9h5.js";import"./form-BIDT1Ue4.js";import"./select-qBldsuZB.js";import"./index-BdQq_4o_.js";import"./schema-7_06wAgs.js";import"./connection-form-helpers-BhmC9tzU.js";import"./authenticate-and-persist-oauth-UWCdGiT0.js";import"./collection-tabs-k2c4oB2_.js";import"./badge-B275lbPZ.js";import"./use-infinite-scroll-asA1-tf9.js";import"./useSuspenseInfiniteQuery-BjfsGxpD.js";import"./file-type-icon-qeWcetSB.js";import"./checkbox-z1yY0VbG.js";import"./search-input-Zdy1mSae.js";import"./use-mcp-auth-status-DqE0wx72.js";import"./types-CRdMnwkp.js";import"./use-mcp-tools-iSL8qiEx.js";import"./use-mcp-prompts-cYDRO3Kp.js";import"./utils-CVEq3hMx.js";import"./switch-CZb-mYsM.js";import"./scroll-area-56TNtyKH.js";import"./experiments-tab-choice-CkKpewiH.js";import"./use-project-native-view-presence-r0Gkk_5E.js";import"./match-site-slug-config-D3fUJ6vX.js";import"./use-file-configs-Cr0gwmd8.js";import"./site-slug-DebpOoQq.js";import"./optimistic-project-sidebar-views-w9Ct7FMs.js";import"./sections-DlaCV9cl.js";import"./use-copy-C6zGg71V.js";import"./virtual-mcp-Bp27ph4n.js";import"./sandbox-url-D3mC8qhT.js";import"./secret-picker-B5fM64mM.js";import"./use-secrets-BLT_VvH0.js";import"./omit-sandbox-map-jj4lCB2U.js";import"./app-preview-url-9Od4s8Sz.js";import"./serial-task-queue-CGOeQgpr.js";const x="home";function P(i){const t=c.c(5),{label:r}=i;let p;t[0]===Symbol.for("react.memo_cache_sentinel")?(p=e.jsx(b,{className:"aspect-video w-2/3 max-w-xl"}),t[0]=p):p=t[0];let o;t[1]!==r?(o=r&&e.jsx("p",{className:"text-xs text-muted-foreground",children:r}),t[1]=r,t[2]=o):o=t[2];let m;return t[3]!==o?(m=e.jsxs("div",{className:"flex h-full w-full flex-col items-center justify-center gap-3 bg-background",children:[p,o]}),t[3]=o,t[4]=m):m=t[4],m}function D(i){const t=c.c(15),{path:r}=i;let p;t[0]===Symbol.for("react.memo_cache_sentinel")?(p={refetchIntervalWhenAbsent:2e3},t[0]=p):p=t[0];const o=k(x,r,p),m=y(x)(r);if(o.isPending||!o.data){const h=!o.isPending&&!o.data?"Waiting for the deck to sync…":void 0;let l;return t[1]!==h?(l=e.jsx(P,{label:h}),t[1]=h,t[2]=l):l=t[2],l}let s;t[3]!==o.data?(s=_(o.data),t[3]=o.data,t[4]=s):s=t[4];const f=o.data.shareMode??"private",u=o.data.effectivePublic??!1,d=window.location.origin+m;let a;t[5]!==r||t[6]!==f||t[7]!==u||t[8]!==d?(a=e.jsx(v,{volume:x,path:r,shareMode:f,effectivePublic:u,url:d}),t[5]=r,t[6]=f,t[7]=u,t[8]=d,t[9]=a):a=t[9];let n;return t[10]!==r||t[11]!==m||t[12]!==s||t[13]!==a?(n=e.jsx(S,{readUrl:m,marker:s,title:r,savePath:r,trailing:a}),t[10]=r,t[11]=m,t[12]=s,t[13]=a,t[14]=n):n=t[14],n}function C(){const i=c.c(4);let t;i[0]===Symbol.for("react.memo_cache_sentinel")?(t={strict:!1},i[0]=t):t=i[0];const r=g(t),p=M(),o="path"in r&&typeof r.path=="string"?r.path:void 0;let m;return i[1]!==o||i[2]!==p?(m=o?e.jsx(D,{path:o},o):e.jsx(w,{virtualMcpId:p}),i[1]=o,i[2]=p,i[3]=m):m=i[3],m}function mr(){const i=c.c(1);let t;return i[0]===Symbol.for("react.memo_cache_sentinel")?(t=e.jsx(j.Content,{children:e.jsx(C,{})}),i[0]=t):t=i[0],t}export{mr as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as m,j as i}from"./index-BqutwFSm.js";import{C as n}from"./index-DX3l6VgM.js";import{S as a}from"./site-draft-actions-DQJmjCxq.js";import{E as c,a as l}from"./experiments-tab-Dj_UXlje.js";import{S as u}from"./settings-tab-DU-L5-CZ.js";import{e as f}from"./use-organization-settings-C_uyrpUI.js";import{b as x}from"./thread-route-DPiunvH4.js";import{u as b,b as j,h as d}from"./experiments-tab-choice-CkKpewiH.js";import"./use-mobile-XeH7HFdg.js";import"./use-sidebar-collapsed-DTxIOS-x.js";import"./use-chat-layout-state-Aa4VqEQx.js";import"./use-panel-navigate-DIX895ki.js";import"./use-project-scope-C98g-M0M.js";import"./repository-binding-UPUU8iTD.js";import"./use-mcp-client-liHKfpfj.js";import"./auth-B2v1KOAc.js";import"./thread-intent-BdGEZQ5d.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./watch-sse-pool-62BerBh7.js";import"./task-board-Cp4gjjuc.js";import"./schema-DHeACN0H.js";import"./slugify-CEUa2lfQ.js";import"./agent-icon-CA2ls6V4.js";import"./AlertCircle-BgO0RShT.js";import"./Tool01-CDUtHuFU.js";import"./ArrowUp-DGj1a1JQ.js";import"./ArrowLeft-CLIbFvcM.js";import"./LinkBroken01-BCegKYMu.js";import"./ShoppingBag01-EO0f4EEB.js";import"./ZoomOut-Dg4JYL36.js";import"./Building02-DTlG5UDd.js";import"./CheckCircle-BoFFOiJR.js";import"./ChevronUp-DQBYMpqT.js";import"./ChevronSelectorVertical-DYan7Eqw.js";import"./UserSquare-DoHQfmRI.js";import"./Copy01-BPOEtZ0I.js";import"./CreditCard01-BgcDg6Po.js";import"./DotsVertical-bVrzKljT.js";import"./Image01-CYMd4B2w.js";import"./Globe04-DROK8sB6.js";import"./SwitchHorizontal01-VCz6eoXn.js";import"./Key01-CcnI3N_J.js";import"./Link01-BaCE2stQ.js";import"./Minus-YbXjN_Ds.js";import"./Monitor01-aloCOxdR.js";import"./Sun-tqaV4Ycc.js";import"./Play-CKfAabLj.js";import"./Plus-DifrnWDP.js";import"./SearchMd-OM6lL3Xq.js";import"./Trash01-VJJht0QK.js";import"./Upload01-Dxk-zD3u.js";import"./Users01-CS7GcqAQ.js";import"./XClose-B88tJS8W.js";import"./tooltip-RrBkgkDb.js";import"./index-oqricAgA.js";import"./toolbar-icon-button-C7qFILLP.js";import"./shell-layout-DKjamnSj.js";import"./use-deployment-admin-CuHcgI6F.js";import"./admin-fetch-BhTJlAsX.js";import"./use-clock-tick-UQl4M1J5.js";import"./command-6ewscZzU.js";import"./index-B94uTMNH.js";import"./integration-icon-C_aSliEO.js";import"./project-icon-DtQEqIYx.js";import"./new-project-dialog-BRBdOtjX.js";import"./label-Ce-ZCIZn.js";import"./repository-import-picker-Cgqnl0_u.js";import"./use-navigate-to-agent-Ba4TBBON.js";import"./repository-picker-BGNbJ5FK.js";import"./useInfiniteQuery-BYZFn0Hg.js";import"./infiniteQueryObserver-DCWN2zRB.js";import"./collection-search-Dxv0FJfh.js";import"./use-debounced-value-Chk6vawl.js";import"./required-auth-layout-DGUYFPwh.js";import"./autosend-BUHDH46M.js";import"./use-org-sso-ZqYOnTZ9.js";import"./sheet-D-DL4PyF.js";import"./resizable-2wUgP6NM.js";import"./separator-DZ0CgMqF.js";import"./chat-context-CRAqcBEA.js";import"./use-decopilot-events-B5qoi0Wr.js";import"./use-ai-providers-DVBJIa-_.js";import"./location-V0VwTJTt.js";import"./site-editor-toast-UJBsXoYS.js";import"./use-session-runtime-Cass8jgv.js";import"./sandbox-url-D3mC8qhT.js";import"./utils-DF3h1YFq.js";import"./use-sandbox-events-COXHFEXL.js";import"./sandbox-git-api-DcqI6XE4.js";import"./popover-VBk0ee-p.js";import"./tabs-Cb1EEFWU.js";import"./active-indicator-CCMhAsc_.js";import"./use-releases-RUoL1asP.js";import"./serial-task-queue-CGOeQgpr.js";import"./virtual-mcp-Bp27ph4n.js";import"./url-slug-DUBa3zVK.js";import"./use-fast-preview-draft-url-eu2nT6W8.js";import"./section-preview-url-7zfngvgW.js";import"./preview-link-C762yHOt.js";import"./variant-draft-pointer-BeAKcq_c.js";import"./parse-sections-CRdFubPB.js";import"./index-BxQkdZTK.js";import"./tool-namespace-BWBiQhUq.js";import"./drawer-C8pd-9h5.js";import"./use-mcp-prompts-cYDRO3Kp.js";import"./usage-stats-C9C7AU7H.js";import"./form-BIDT1Ue4.js";import"./utils-CVEq3hMx.js";import"./markdown-Y9FReFEe.js";import"./use-copy-C6zGg71V.js";import"./input-CsD5Q7QM.js";import"./icon-button-DSMd1qL1.js";import"./file-type-icon-qeWcetSB.js";import"./chat-draft-D8MxxmMn.js";import"./select-qBldsuZB.js";import"./index-BdQq_4o_.js";import"./use-deco-credits-B32-9i_a.js";import"./toggle-group-DQ8R6Md0.js";import"./index-Cu6YVL4w.js";import"./checkbox-z1yY0VbG.js";import"./ai-providers-logos-DD3qZ33J.js";import"./input-CpuPl1VL.js";import"./suggestion-CgPYCK9k.js";import"./use-org-fs-DNlQgLUG.js";import"./question-004-sINsf4GQ.js";import"./feature-paywall-DtZqXAFQ.js";import"./plan-ladder-Dqd8xMeE.js";import"./add-connection-dialog-DxVAYgn3.js";import"./extract-connection-data-Bv4y_ppm.js";import"./metadata-D72DunRR.js";import"./connection--HCyemnh.js";import"./connection-card-CJzQ1R1a.js";import"./connection-slug-CITJ0kGN.js";import"./textarea-DIMcwKj_.js";import"./use-connection-DVSix2AF.js";import"./schema-7_06wAgs.js";import"./connection-form-helpers-BhmC9tzU.js";import"./authenticate-and-persist-oauth-UWCdGiT0.js";import"./mcp-oauth-Mf3yN31G.js";import"./mcp-oauth-B1ojmT8l.js";import"./collection-tabs-k2c4oB2_.js";import"./badge-B275lbPZ.js";import"./use-infinite-scroll-asA1-tf9.js";import"./useSuspenseInfiniteQuery-BjfsGxpD.js";import"./use-task-board-events-D5XnGFaO.js";import"./pair-Dc1F6KjY.js";import"./collapsible-TgXdzaTW.js";import"./content-blocks-o63cs2vh.js";import"./mcp-app-renderer-DrWXODkj.js";import"./types-CRdMnwkp.js";import"./omit-sandbox-map-jj4lCB2U.js";import"./use-thread-outputs-BkxphpfI.js";import"./hosted-publish-feedback-BFYHRRPf.js";import"./use-cms-publish-actions-c5y_nfEn.js";import"./named-rule-uses-BbtWVVld.js";import"./device-hint-SeLRi17j.js";import"./editor-BQUfQi3X.js";import"./section-array-field-rBWQHh7r.js";import"./alert-D3Vs7Hmm.js";import"./save-changes-debug-nBi-n9eV.js";import"./releases-api-RCTgo6g_.js";import"./sandbox-lifecycle-context-BrAJV0hd.js";import"./sandbox-start-errors-BK_aDCyt.js";import"./table-V2ahNRZT.js";import"./empty-state-DnXn-oXP.js";import"./site-slug-DebpOoQq.js";import"./blocks-tab-states-DhPO3927.js";import"./slider-DKsnyXsn.js";import"./index-H6qehDl6.js";import"./tooltipContext-C2tBhXWj.js";import"./CategoricalChart-1w257zDj.js";import"./index-BCDmEpzR.js";import"./ActiveShapeUtils-DBB_x8Gs.js";import"./Sector-aZQlOyVI.js";import"./symbol-CyQNqsns.js";import"./empty-state-P8DRc5l5.js";import"./view-header-DhqNDwWw.js";import"./site-draft-view-C5NGRcIz.js";import"./use-apply-named-rule-CjRIJJWs.js";import"./use-move-blocks-Bkqfi8fY.js";import"./search-toggle-DkaLKnSY.js";import"./use-task-board-item-prs-CSoHUx1b.js";import"./index-BG1gU17W.js";import"./build-improve-prompt-doc-B1ctgI5i.js";import"./use-date-fns-locale-DS-Izx-9.js";import"./use-debounced-autosave-DwOKfyXg.js";import"./search-input-Zdy1mSae.js";import"./use-mcp-auth-status-DqE0wx72.js";import"./use-mcp-tools-iSL8qiEx.js";import"./switch-CZb-mYsM.js";import"./scroll-area-56TNtyKH.js";import"./use-project-native-view-presence-r0Gkk_5E.js";import"./match-site-slug-config-D3fUJ6vX.js";import"./use-file-configs-Cr0gwmd8.js";import"./optimistic-project-sidebar-views-w9Ct7FMs.js";import"./sections-DlaCV9cl.js";import"./secret-picker-B5fM64mM.js";import"./use-secrets-BLT_VvH0.js";import"./app-preview-url-9Od4s8Sz.js";function E(){const t=m.c(5),r=x(),p=f(),e=b(r),s=j(r);switch(d({orgEnabled:p.experiments,siteMajor:e,lastFoundV8:s})){case"tab":{let o;return t[0]!==r?(o=i.jsx(l,{virtualMcpId:r}),t[0]=r,t[1]=o):o=t[1],o}case"loading":{let o;return t[2]===Symbol.for("react.memo_cache_sentinel")?(o=i.jsx(c,{}),t[2]=o):o=t[2],o}case"settings":{let o;return t[3]!==r?(o=i.jsx(u,{virtualMcpId:r}),t[3]=r,t[4]=o):o=t[4],o}}}function mi(){const t=m.c(1);let r;return t[0]===Symbol.for("react.memo_cache_sentinel")?(r=i.jsx(n.Content,{actions:i.jsx(a,{blocksOnly:!0}),children:i.jsx(E,{})}),t[0]=r):r=t[0],r}export{mi as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as E,a4 as F,q as I,K as P,m as N,as as S,f4 as b,b as v,ad as g,u as _,j as u}from"./index-BqutwFSm.js";import{C}from"./index-DX3l6VgM.js";import{C as h,L as j,p as L}from"./context-shell-AlLqYzkU.js";import{c as O,d as R,H as V,e as M}from"./location-V0VwTJTt.js";import{m as q}from"./use-org-fs-DNlQgLUG.js";import{u as D}from"./use-project-scope-C98g-M0M.js";import{V as w}from"./index-BG1gU17W.js";import"./use-mobile-XeH7HFdg.js";import"./use-sidebar-collapsed-DTxIOS-x.js";import"./use-chat-layout-state-Aa4VqEQx.js";import"./thread-route-DPiunvH4.js";import"./use-panel-navigate-DIX895ki.js";import"./thread-intent-BdGEZQ5d.js";import"./use-mcp-client-liHKfpfj.js";import"./auth-B2v1KOAc.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./watch-sse-pool-62BerBh7.js";import"./task-board-Cp4gjjuc.js";import"./schema-DHeACN0H.js";import"./slugify-CEUa2lfQ.js";import"./agent-icon-CA2ls6V4.js";import"./AlertCircle-BgO0RShT.js";import"./Tool01-CDUtHuFU.js";import"./ArrowUp-DGj1a1JQ.js";import"./ArrowLeft-CLIbFvcM.js";import"./LinkBroken01-BCegKYMu.js";import"./ShoppingBag01-EO0f4EEB.js";import"./ZoomOut-Dg4JYL36.js";import"./Building02-DTlG5UDd.js";import"./CheckCircle-BoFFOiJR.js";import"./ChevronUp-DQBYMpqT.js";import"./ChevronSelectorVertical-DYan7Eqw.js";import"./UserSquare-DoHQfmRI.js";import"./Copy01-BPOEtZ0I.js";import"./CreditCard01-BgcDg6Po.js";import"./DotsVertical-bVrzKljT.js";import"./Image01-CYMd4B2w.js";import"./Globe04-DROK8sB6.js";import"./SwitchHorizontal01-VCz6eoXn.js";import"./Key01-CcnI3N_J.js";import"./Link01-BaCE2stQ.js";import"./Minus-YbXjN_Ds.js";import"./Monitor01-aloCOxdR.js";import"./Sun-tqaV4Ycc.js";import"./Play-CKfAabLj.js";import"./Plus-DifrnWDP.js";import"./SearchMd-OM6lL3Xq.js";import"./Trash01-VJJht0QK.js";import"./Upload01-Dxk-zD3u.js";import"./Users01-CS7GcqAQ.js";import"./XClose-B88tJS8W.js";import"./tooltip-RrBkgkDb.js";import"./index-oqricAgA.js";import"./toolbar-icon-button-C7qFILLP.js";import"./shell-layout-DKjamnSj.js";import"./use-deployment-admin-CuHcgI6F.js";import"./admin-fetch-BhTJlAsX.js";import"./use-clock-tick-UQl4M1J5.js";import"./command-6ewscZzU.js";import"./index-B94uTMNH.js";import"./integration-icon-C_aSliEO.js";import"./project-icon-DtQEqIYx.js";import"./new-project-dialog-BRBdOtjX.js";import"./label-Ce-ZCIZn.js";import"./repository-import-picker-Cgqnl0_u.js";import"./use-navigate-to-agent-Ba4TBBON.js";import"./repository-binding-UPUU8iTD.js";import"./repository-picker-BGNbJ5FK.js";import"./useInfiniteQuery-BYZFn0Hg.js";import"./infiniteQueryObserver-DCWN2zRB.js";import"./collection-search-Dxv0FJfh.js";import"./use-debounced-value-Chk6vawl.js";import"./use-organization-settings-C_uyrpUI.js";import"./required-auth-layout-DGUYFPwh.js";import"./autosend-BUHDH46M.js";import"./use-org-sso-ZqYOnTZ9.js";import"./sheet-D-DL4PyF.js";import"./resizable-2wUgP6NM.js";import"./icon-button-DSMd1qL1.js";import"./search-input-Zdy1mSae.js";import"./search-toggle-DkaLKnSY.js";import"./chat-context-CRAqcBEA.js";import"./use-decopilot-events-B5qoi0Wr.js";import"./use-ai-providers-DVBJIa-_.js";import"./use-org-repo-syncs-MkA3X0Ud.js";import"./textarea-DIMcwKj_.js";import"./markdown-Y9FReFEe.js";import"./use-copy-C6zGg71V.js";import"./file-share-button-Cvb6TL3d.js";import"./popover-VBk0ee-p.js";import"./preview-dialog-dWAdST9o.js";import"./preview-content-DRmpsOLy.js";import"./file-preview-B58y6F5R.js";import"./utils-DF3h1YFq.js";import"./editor-BQUfQi3X.js";import"./file-type-icon-qeWcetSB.js";import"./folder-icon-DN6fGLYE.js";import"./empty-state-DnXn-oXP.js";import"./toggle-group-DQ8R6Md0.js";import"./active-indicator-CCMhAsc_.js";import"./table-V2ahNRZT.js";import"./require-capability-Fl7myTcy.js";import"./access-gate-DE8upkjE.js";import"./capability-load-error-DLAPLAgw.js";import"./sections-DlaCV9cl.js";import"./empty-state-P8DRc5l5.js";import"./extract-connection-data-Bv4y_ppm.js";import"./metadata-D72DunRR.js";import"./connection--HCyemnh.js";import"./url-slug-DUBa3zVK.js";import"./build-improve-prompt-doc-B1ctgI5i.js";import"./use-date-fns-locale-DS-Izx-9.js";import"./mcp-oauth-Mf3yN31G.js";import"./mcp-oauth-B1ojmT8l.js";import"./use-connection-DVSix2AF.js";import"./use-debounced-autosave-DwOKfyXg.js";import"./add-connection-dialog-DxVAYgn3.js";import"./connection-card-CJzQ1R1a.js";import"./connection-slug-CITJ0kGN.js";import"./drawer-C8pd-9h5.js";import"./form-BIDT1Ue4.js";import"./select-qBldsuZB.js";import"./index-BdQq_4o_.js";import"./schema-7_06wAgs.js";import"./connection-form-helpers-BhmC9tzU.js";import"./authenticate-and-persist-oauth-UWCdGiT0.js";import"./collection-tabs-k2c4oB2_.js";import"./badge-B275lbPZ.js";import"./use-infinite-scroll-asA1-tf9.js";import"./useSuspenseInfiniteQuery-BjfsGxpD.js";import"./checkbox-z1yY0VbG.js";import"./use-mcp-auth-status-DqE0wx72.js";import"./types-CRdMnwkp.js";import"./use-mcp-tools-iSL8qiEx.js";import"./use-mcp-prompts-cYDRO3Kp.js";import"./utils-CVEq3hMx.js";import"./switch-CZb-mYsM.js";import"./scroll-area-56TNtyKH.js";import"./experiments-tab-choice-CkKpewiH.js";import"./use-project-native-view-presence-r0Gkk_5E.js";import"./match-site-slug-config-D3fUJ6vX.js";import"./use-file-configs-Cr0gwmd8.js";import"./site-slug-DebpOoQq.js";import"./optimistic-project-sidebar-views-w9Ct7FMs.js";import"./virtual-mcp-Bp27ph4n.js";import"./sandbox-url-D3mC8qhT.js";import"./secret-picker-B5fM64mM.js";import"./use-secrets-BLT_VvH0.js";import"./omit-sandbox-map-jj4lCB2U.js";import"./app-preview-url-9Od4s8Sz.js";import"./serial-task-queue-CGOeQgpr.js";function A(t){const i=E.c(14),{org:o}=F(),r=I();let m;i[0]!==o.id||i[1]!==t?(m=P.projectFolderEnsure(o.id,t?.id??"",t?O(t):""),i[0]=o.id,i[1]=t,i[2]=m):m=i[2];let e;i[3]!==o.id||i[4]!==o.slug||i[5]!==t?.id||i[6]!==r?(e=async()=>{const l=await S(o.slug,"PROJECT_FOLDER_ENSURE",{id:t?.id??""});return l.created&&(q(r,o.id,V),b(r,o.id,"VIRTUAL_MCP")),l},i[3]=o.id,i[4]=o.slug,i[5]=t?.id,i[6]=r,i[7]=e):e=i[7];let s;i[8]!==t?(s=!!t&&!R(t),i[8]=t,i[9]=s):s=i[9];let p;i[10]!==m||i[11]!==e||i[12]!==s?(p={queryKey:m,queryFn:e,enabled:s,staleTime:Number.POSITIVE_INFINITY,gcTime:Number.POSITIVE_INFINITY,retry:!1},i[10]=m,i[11]=e,i[12]=s,i[13]=p):p=i[13],N(p)}function Lo(){const t=E.c(24),{project:i}=D(),o=v(),r=g();let m;t[0]===Symbol.for("react.memo_cache_sentinel")?(m={strict:!1},t[0]=m):m=t[0];const{section:e}=_(m);A(i);const s=i?.id??"pending";let p;t[1]!==i?(p=i?M(i):void 0,t[1]=i,t[2]=p):p=t[2];let l;t[3]!==i?.title||t[4]!==r||t[5]!==o?(l=r?o("sidebar.navDestinations.context"):i?.title??void 0,t[3]=i?.title,t[4]=r,t[5]=o,t[6]=l):l=t[6];const y=r?"dialog":void 0;let d;t[7]!==r||t[8]!==s||t[9]!==p||t[10]!==l||t[11]!==y?(d=u.jsx(j,{root:p,rootLabel:l,filePreview:y,context:r},s),t[7]=r,t[8]=s,t[9]=p,t[10]=l,t[11]=y,t[12]=d):d=t[12];const n=d;if(!r){let T;return t[13]!==n?(T=u.jsx(C.Content,{children:n}),t[13]=n,t[14]=T):T=t[14],T}let f;t[15]!==e?(f=L(e),t[15]=e,t[16]=f):f=t[16];const a=f;let c;t[17]!==a||t[18]!==n||t[19]!==i?(c=a==="files"?n:i?u.jsx(w,{virtualMcpId:i.id,contextSection:a}):null,t[17]=a,t[18]=n,t[19]=i,t[20]=c):c=t[20];let x;return t[21]!==a||t[22]!==c?(x=u.jsx(C.Content,{children:u.jsx(h,{scope:"project",section:a,children:c})}),t[21]=a,t[22]=c,t[23]=x):x=t[23],x}export{Lo as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as a,j as e,u as n}from"./index-BqutwFSm.js";import{C as c}from"./index-DX3l6VgM.js";import{L as l}from"./preview-panel-BJLsJJcg.js";import{a as u}from"./use-panel-navigate-DIX895ki.js";import{S as f}from"./settings-tab-DU-L5-CZ.js";import{b as h}from"./thread-route-DPiunvH4.js";import"./use-mobile-XeH7HFdg.js";import"./use-sidebar-collapsed-DTxIOS-x.js";import"./use-chat-layout-state-Aa4VqEQx.js";import"./thread-intent-BdGEZQ5d.js";import"./use-mcp-client-liHKfpfj.js";import"./auth-B2v1KOAc.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./watch-sse-pool-62BerBh7.js";import"./task-board-Cp4gjjuc.js";import"./schema-DHeACN0H.js";import"./slugify-CEUa2lfQ.js";import"./agent-icon-CA2ls6V4.js";import"./AlertCircle-BgO0RShT.js";import"./Tool01-CDUtHuFU.js";import"./ArrowUp-DGj1a1JQ.js";import"./ArrowLeft-CLIbFvcM.js";import"./LinkBroken01-BCegKYMu.js";import"./ShoppingBag01-EO0f4EEB.js";import"./ZoomOut-Dg4JYL36.js";import"./Building02-DTlG5UDd.js";import"./CheckCircle-BoFFOiJR.js";import"./ChevronUp-DQBYMpqT.js";import"./ChevronSelectorVertical-DYan7Eqw.js";import"./UserSquare-DoHQfmRI.js";import"./Copy01-BPOEtZ0I.js";import"./CreditCard01-BgcDg6Po.js";import"./DotsVertical-bVrzKljT.js";import"./Image01-CYMd4B2w.js";import"./Globe04-DROK8sB6.js";import"./SwitchHorizontal01-VCz6eoXn.js";import"./Key01-CcnI3N_J.js";import"./Link01-BaCE2stQ.js";import"./Minus-YbXjN_Ds.js";import"./Monitor01-aloCOxdR.js";import"./Sun-tqaV4Ycc.js";import"./Play-CKfAabLj.js";import"./Plus-DifrnWDP.js";import"./SearchMd-OM6lL3Xq.js";import"./Trash01-VJJht0QK.js";import"./Upload01-Dxk-zD3u.js";import"./Users01-CS7GcqAQ.js";import"./XClose-B88tJS8W.js";import"./tooltip-RrBkgkDb.js";import"./index-oqricAgA.js";import"./toolbar-icon-button-C7qFILLP.js";import"./shell-layout-DKjamnSj.js";import"./use-deployment-admin-CuHcgI6F.js";import"./admin-fetch-BhTJlAsX.js";import"./use-project-scope-C98g-M0M.js";import"./repository-binding-UPUU8iTD.js";import"./use-clock-tick-UQl4M1J5.js";import"./command-6ewscZzU.js";import"./index-B94uTMNH.js";import"./integration-icon-C_aSliEO.js";import"./project-icon-DtQEqIYx.js";import"./new-project-dialog-BRBdOtjX.js";import"./label-Ce-ZCIZn.js";import"./repository-import-picker-Cgqnl0_u.js";import"./use-navigate-to-agent-Ba4TBBON.js";import"./repository-picker-BGNbJ5FK.js";import"./useInfiniteQuery-BYZFn0Hg.js";import"./infiniteQueryObserver-DCWN2zRB.js";import"./collection-search-Dxv0FJfh.js";import"./use-debounced-value-Chk6vawl.js";import"./use-organization-settings-C_uyrpUI.js";import"./required-auth-layout-DGUYFPwh.js";import"./autosend-BUHDH46M.js";import"./use-org-sso-ZqYOnTZ9.js";import"./sheet-D-DL4PyF.js";import"./resizable-2wUgP6NM.js";import"./preview-content-DRmpsOLy.js";import"./icon-button-DSMd1qL1.js";import"./file-share-button-Cvb6TL3d.js";import"./use-org-fs-DNlQgLUG.js";import"./popover-VBk0ee-p.js";import"./file-preview-B58y6F5R.js";import"./utils-DF3h1YFq.js";import"./editor-BQUfQi3X.js";import"./file-type-icon-qeWcetSB.js";import"./markdown-Y9FReFEe.js";import"./use-copy-C6zGg71V.js";import"./location-V0VwTJTt.js";import"./index-BG1gU17W.js";import"./extract-connection-data-Bv4y_ppm.js";import"./metadata-D72DunRR.js";import"./connection--HCyemnh.js";import"./url-slug-DUBa3zVK.js";import"./chat-context-CRAqcBEA.js";import"./use-decopilot-events-B5qoi0Wr.js";import"./use-ai-providers-DVBJIa-_.js";import"./build-improve-prompt-doc-B1ctgI5i.js";import"./empty-state-P8DRc5l5.js";import"./use-date-fns-locale-DS-Izx-9.js";import"./mcp-oauth-Mf3yN31G.js";import"./mcp-oauth-B1ojmT8l.js";import"./textarea-DIMcwKj_.js";import"./use-connection-DVSix2AF.js";import"./use-debounced-autosave-DwOKfyXg.js";import"./add-connection-dialog-DxVAYgn3.js";import"./connection-card-CJzQ1R1a.js";import"./connection-slug-CITJ0kGN.js";import"./drawer-C8pd-9h5.js";import"./form-BIDT1Ue4.js";import"./select-qBldsuZB.js";import"./index-BdQq_4o_.js";import"./schema-7_06wAgs.js";import"./connection-form-helpers-BhmC9tzU.js";import"./authenticate-and-persist-oauth-UWCdGiT0.js";import"./collection-tabs-k2c4oB2_.js";import"./badge-B275lbPZ.js";import"./use-infinite-scroll-asA1-tf9.js";import"./useSuspenseInfiniteQuery-BjfsGxpD.js";import"./checkbox-z1yY0VbG.js";import"./search-input-Zdy1mSae.js";import"./use-mcp-auth-status-DqE0wx72.js";import"./types-CRdMnwkp.js";import"./use-mcp-tools-iSL8qiEx.js";import"./use-mcp-prompts-cYDRO3Kp.js";import"./utils-CVEq3hMx.js";import"./switch-CZb-mYsM.js";import"./scroll-area-56TNtyKH.js";import"./experiments-tab-choice-CkKpewiH.js";import"./use-project-native-view-presence-r0Gkk_5E.js";import"./match-site-slug-config-D3fUJ6vX.js";import"./use-file-configs-Cr0gwmd8.js";import"./site-slug-DebpOoQq.js";import"./optimistic-project-sidebar-views-w9Ct7FMs.js";import"./sections-DlaCV9cl.js";import"./virtual-mcp-Bp27ph4n.js";import"./sandbox-url-D3mC8qhT.js";import"./secret-picker-B5fM64mM.js";import"./use-secrets-BLT_VvH0.js";import"./omit-sandbox-map-jj4lCB2U.js";import"./app-preview-url-9Od4s8Sz.js";import"./serial-task-queue-CGOeQgpr.js";function b(r){const t=a.c(5),{path:m}=r,{closePanel:p}=u();let o;t[0]!==p?(o=()=>p(),t[0]=p,t[1]=o):o=t[1];const i=o;let s;return t[2]!==i||t[3]!==m?(s=e.jsx(l,{previewPath:m,onClose:i,showSeeInLibrary:!0}),t[2]=i,t[3]=m,t[4]=s):s=t[4],s}function x(){const r=a.c(4);let t;r[0]===Symbol.for("react.memo_cache_sentinel")?(t={strict:!1},r[0]=t):t=r[0];const m=n(t),p=h(),o="path"in m&&typeof m.path=="string"?m.path:void 0;let i;return r[1]!==o||r[2]!==p?(i=o?e.jsx(b,{path:o},o):e.jsx(f,{virtualMcpId:p}),r[1]=o,r[2]=p,r[3]=i):i=r[3],i}function Xr(){const r=a.c(1);let t;return r[0]===Symbol.for("react.memo_cache_sentinel")?(t=e.jsx(c.Content,{children:e.jsx(x,{})}),r[0]=t):t=r[0],t}export{Xr as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as e,j as r,bU as n}from"./index-BqutwFSm.js";import{C as s}from"./index-DX3l6VgM.js";import{C as a}from"./cdn-tab-DNzFiD5m.js";import{S as c}from"./settings-tab-DU-L5-CZ.js";import{e as u}from"./use-organization-settings-C_uyrpUI.js";import{b as l}from"./thread-route-DPiunvH4.js";import{F as f}from"./feature-gate-CeySSZwi.js";import"./use-mobile-XeH7HFdg.js";import"./use-sidebar-collapsed-DTxIOS-x.js";import"./use-chat-layout-state-Aa4VqEQx.js";import"./use-panel-navigate-DIX895ki.js";import"./use-project-scope-C98g-M0M.js";import"./repository-binding-UPUU8iTD.js";import"./use-mcp-client-liHKfpfj.js";import"./auth-B2v1KOAc.js";import"./thread-intent-BdGEZQ5d.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./watch-sse-pool-62BerBh7.js";import"./task-board-Cp4gjjuc.js";import"./schema-DHeACN0H.js";import"./slugify-CEUa2lfQ.js";import"./agent-icon-CA2ls6V4.js";import"./AlertCircle-BgO0RShT.js";import"./Tool01-CDUtHuFU.js";import"./ArrowUp-DGj1a1JQ.js";import"./ArrowLeft-CLIbFvcM.js";import"./LinkBroken01-BCegKYMu.js";import"./ShoppingBag01-EO0f4EEB.js";import"./ZoomOut-Dg4JYL36.js";import"./Building02-DTlG5UDd.js";import"./CheckCircle-BoFFOiJR.js";import"./ChevronUp-DQBYMpqT.js";import"./ChevronSelectorVertical-DYan7Eqw.js";import"./UserSquare-DoHQfmRI.js";import"./Copy01-BPOEtZ0I.js";import"./CreditCard01-BgcDg6Po.js";import"./DotsVertical-bVrzKljT.js";import"./Image01-CYMd4B2w.js";import"./Globe04-DROK8sB6.js";import"./SwitchHorizontal01-VCz6eoXn.js";import"./Key01-CcnI3N_J.js";import"./Link01-BaCE2stQ.js";import"./Minus-YbXjN_Ds.js";import"./Monitor01-aloCOxdR.js";import"./Sun-tqaV4Ycc.js";import"./Play-CKfAabLj.js";import"./Plus-DifrnWDP.js";import"./SearchMd-OM6lL3Xq.js";import"./Trash01-VJJht0QK.js";import"./Upload01-Dxk-zD3u.js";import"./Users01-CS7GcqAQ.js";import"./XClose-B88tJS8W.js";import"./tooltip-RrBkgkDb.js";import"./index-oqricAgA.js";import"./toolbar-icon-button-C7qFILLP.js";import"./shell-layout-DKjamnSj.js";import"./use-deployment-admin-CuHcgI6F.js";import"./admin-fetch-BhTJlAsX.js";import"./use-clock-tick-UQl4M1J5.js";import"./command-6ewscZzU.js";import"./index-B94uTMNH.js";import"./integration-icon-C_aSliEO.js";import"./project-icon-DtQEqIYx.js";import"./new-project-dialog-BRBdOtjX.js";import"./label-Ce-ZCIZn.js";import"./repository-import-picker-Cgqnl0_u.js";import"./use-navigate-to-agent-Ba4TBBON.js";import"./repository-picker-BGNbJ5FK.js";import"./useInfiniteQuery-BYZFn0Hg.js";import"./infiniteQueryObserver-DCWN2zRB.js";import"./collection-search-Dxv0FJfh.js";import"./use-debounced-value-Chk6vawl.js";import"./required-auth-layout-DGUYFPwh.js";import"./autosend-BUHDH46M.js";import"./use-org-sso-ZqYOnTZ9.js";import"./sheet-D-DL4PyF.js";import"./resizable-2wUgP6NM.js";import"./chart-BV2fH_6W.js";import"./index-BCDmEpzR.js";import"./symbol-CyQNqsns.js";import"./CategoricalChart-1w257zDj.js";import"./empty-state-DnXn-oXP.js";import"./popover-VBk0ee-p.js";import"./select-qBldsuZB.js";import"./index-BdQq_4o_.js";import"./site-slug-DebpOoQq.js";import"./experiments-tab-choice-CkKpewiH.js";import"./AreaChart-DKpy9mUx.js";import"./CartesianChart-BAgzcFkw.js";import"./ReferenceLine-BjTHivV7.js";import"./order-monitor-day-CA2fWj1y.js";import"./badge-B275lbPZ.js";import"./calendar-BF6y0Z9x.js";import"./useQueries-Rmt36TSN.js";import"./ErrorBarContext-F07hkAp5.js";import"./ActiveShapeUtils-DBB_x8Gs.js";import"./Sector-aZQlOyVI.js";import"./index-BG1gU17W.js";import"./extract-connection-data-Bv4y_ppm.js";import"./metadata-D72DunRR.js";import"./connection--HCyemnh.js";import"./url-slug-DUBa3zVK.js";import"./chat-context-CRAqcBEA.js";import"./use-decopilot-events-B5qoi0Wr.js";import"./use-ai-providers-DVBJIa-_.js";import"./location-V0VwTJTt.js";import"./build-improve-prompt-doc-B1ctgI5i.js";import"./empty-state-P8DRc5l5.js";import"./use-date-fns-locale-DS-Izx-9.js";import"./mcp-oauth-Mf3yN31G.js";import"./mcp-oauth-B1ojmT8l.js";import"./textarea-DIMcwKj_.js";import"./use-connection-DVSix2AF.js";import"./use-debounced-autosave-DwOKfyXg.js";import"./add-connection-dialog-DxVAYgn3.js";import"./connection-card-CJzQ1R1a.js";import"./connection-slug-CITJ0kGN.js";import"./drawer-C8pd-9h5.js";import"./form-BIDT1Ue4.js";import"./schema-7_06wAgs.js";import"./connection-form-helpers-BhmC9tzU.js";import"./authenticate-and-persist-oauth-UWCdGiT0.js";import"./collection-tabs-k2c4oB2_.js";import"./use-infinite-scroll-asA1-tf9.js";import"./useSuspenseInfiniteQuery-BjfsGxpD.js";import"./file-type-icon-qeWcetSB.js";import"./use-org-fs-DNlQgLUG.js";import"./checkbox-z1yY0VbG.js";import"./search-input-Zdy1mSae.js";import"./use-mcp-auth-status-DqE0wx72.js";import"./types-CRdMnwkp.js";import"./use-mcp-tools-iSL8qiEx.js";import"./use-mcp-prompts-cYDRO3Kp.js";import"./utils-CVEq3hMx.js";import"./switch-CZb-mYsM.js";import"./scroll-area-56TNtyKH.js";import"./use-project-native-view-presence-r0Gkk_5E.js";import"./match-site-slug-config-D3fUJ6vX.js";import"./use-file-configs-Cr0gwmd8.js";import"./optimistic-project-sidebar-views-w9Ct7FMs.js";import"./sections-DlaCV9cl.js";import"./use-copy-C6zGg71V.js";import"./virtual-mcp-Bp27ph4n.js";import"./sandbox-url-D3mC8qhT.js";import"./secret-picker-B5fM64mM.js";import"./use-secrets-BLT_VvH0.js";import"./omit-sandbox-map-jj4lCB2U.js";import"./app-preview-url-9Od4s8Sz.js";import"./serial-task-queue-CGOeQgpr.js";import"./feature-paywall-DtZqXAFQ.js";import"./plan-ladder-Dqd8xMeE.js";function x(){const t=e.c(4),o=l(),p=u(),i=n();let m;return t[0]!==i||t[1]!==p.monitor||t[2]!==o?(m=p.monitor&&(i.monitorEnabled===!0||i.auth.localMode===!0)?r.jsx(a,{virtualMcpId:o}):r.jsx(c,{virtualMcpId:o}),t[0]=i,t[1]=p.monitor,t[2]=o,t[3]=m):m=t[3],m}function er(){const t=e.c(1);let o;return t[0]===Symbol.for("react.memo_cache_sentinel")?(o=r.jsx(s.Content,{children:r.jsx(f,{feature:"monitoring",children:r.jsx(x,{})})}),t[0]=o):o=t[0],o}export{er as default};
|