decocms 4.204.25 → 4.204.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/assets/{AlertCircle-wimzgvZu.js → AlertCircle-DPNBJH8m.js} +1 -1
- package/dist/client/assets/{AreaChart-DYFJmn4K.js → AreaChart-D_UbtC-a.js} +1 -1
- package/dist/client/assets/{ArrowLeft-C8kyZTJ9.js → ArrowLeft-D5vfg3uK.js} +1 -1
- package/dist/client/assets/{ArrowUp-BxRz28Q2.js → ArrowUp-B4KcZBvg.js} +1 -1
- package/dist/client/assets/{ArrowUpRight-CUGvArlr.js → ArrowUpRight-DXWjExcd.js} +1 -1
- package/dist/client/assets/{Check-BbX8sU8a.js → Check-D5Ed0y6x.js} +1 -1
- package/dist/client/assets/{CheckCircle-B5CqC1-2.js → CheckCircle-vOYrIitU.js} +1 -1
- package/dist/client/assets/{ChevronDown-DIB7wUZV.js → ChevronDown-Bl0rRCkK.js} +1 -1
- package/dist/client/assets/{ChevronRight-5kY-OPqF.js → ChevronRight-DNyRZSbB.js} +1 -1
- package/dist/client/assets/{ChevronUp-Dxwmapm8.js → ChevronUp-ZiLZFAOQ.js} +1 -1
- package/dist/client/assets/{Copy01-C-Eav9bE.js → Copy01-C9sQ9bF2.js} +1 -1
- package/dist/client/assets/{CpuChip01-5AkEwh7u.js → CpuChip01-hTkzRHfm.js} +1 -1
- package/dist/client/assets/{CreditCard01-B-B2Qymr.js → CreditCard01-Bhuksz8Z.js} +1 -1
- package/dist/client/assets/{DotsVertical-CEZUOict.js → DotsVertical-ChReskfC.js} +1 -1
- package/dist/client/assets/{Eye-Cv0QwocI.js → Eye-Ds4sxQW2.js} +1 -1
- package/dist/client/assets/{FilterLines-DBlfnICD.js → FilterLines-Cc1OtqTi.js} +1 -1
- package/dist/client/assets/{Globe01-Cias8vZi.js → Globe01-Cm_t_Z97.js} +1 -1
- package/dist/client/assets/{Globe04-DyQIOtYZ.js → Globe04-UKseLtKG.js} +1 -1
- package/dist/client/assets/{HardDrive-DByK71ga.js → HardDrive-qhtNyx47.js} +1 -1
- package/dist/client/assets/{Key01-B8yw67z-.js → Key01-BErpOZ1r.js} +1 -1
- package/dist/client/assets/{LayoutLeft-DzkX5WA7.js → LayoutLeft-q17bNZPJ.js} +1 -1
- package/dist/client/assets/{LinkExternal01-mHT-dj4W.js → LinkExternal01-DQgKEoX0.js} +1 -1
- package/dist/client/assets/{LogOut01-TLmjvvz6.js → LogOut01-BoDycTVj.js} +1 -1
- package/dist/client/assets/{Monitor01-CBQ5WCCw.js → Monitor01-Cul-o4cL.js} +1 -1
- package/dist/client/assets/{Palette-Bx3UArbG.js → Palette-C3AGT5oL.js} +1 -1
- package/dist/client/assets/{Play-CK0ZJpS0.js → Play-5-bfxaHP.js} +1 -1
- package/dist/client/assets/{Plus-DLulWsbz.js → Plus-DXQKo5tf.js} +1 -1
- package/dist/client/assets/{SearchLg-Ccvs9iR_.js → SearchLg-BvKsBwgJ.js} +1 -1
- package/dist/client/assets/{SearchMd-B7aCsqxU.js → SearchMd-wCVc-rNX.js} +1 -1
- package/dist/client/assets/{Settings02-DfuZOy75.js → Settings02-QqmHI5eA.js} +1 -1
- package/dist/client/assets/{Share07-Ciowxkxo.js → Share07-CqGBM9Q_.js} +1 -1
- package/dist/client/assets/{Shield01-v58PE0LY.js → Shield01-Cvh0Wa1j.js} +1 -1
- package/dist/client/assets/{Star01-x6XRzPVY.js → Star01-0RMuFaY9.js} +1 -1
- package/dist/client/assets/{Stars01-CKqm1KPB.js → Stars01-Wvphr348.js} +1 -1
- package/dist/client/assets/{Stars02-DDPtDUBS.js → Stars02-BlAniLg3.js} +1 -1
- package/dist/client/assets/{Sun-cetkvy72.js → Sun-6YkWK1iN.js} +1 -1
- package/dist/client/assets/{SwitchHorizontal01-CK9A4Fcm.js → SwitchHorizontal01-BfsIp21i.js} +1 -1
- package/dist/client/assets/{Tool01-s3PrnC5p.js → Tool01-B0mx3ej7.js} +1 -1
- package/dist/client/assets/{Tool02-D0hFAIIB.js → Tool02-BvMV8bmN.js} +1 -1
- package/dist/client/assets/{Trash01-Bxazdrgh.js → Trash01-BokzPIGv.js} +1 -1
- package/dist/client/assets/{TrendUp01-COXcXtZa.js → TrendUp01-BBGlger-.js} +1 -1
- package/dist/client/assets/{Upload01-D9xVj1bk.js → Upload01-BRKIwio8.js} +1 -1
- package/dist/client/assets/{User01-2mAUqANK.js → User01-Bvv0KHXi.js} +1 -1
- package/dist/client/assets/{Users01-mXoLaVLL.js → Users01-D1JfQ572.js} +1 -1
- package/dist/client/assets/{Users03-CFOL0qC7.js → Users03-DuLX8eaw.js} +1 -1
- package/dist/client/assets/{X-0QSzFQ0e.js → X-BTY_A0Oc.js} +1 -1
- package/dist/client/assets/{XCircle-BCeFuoF4.js → XCircle-C0ACA6Yf.js} +1 -1
- package/dist/client/assets/{XClose-CnFxPlQN.js → XClose-WGYgJLTH.js} +1 -1
- package/dist/client/assets/{Zap-CFfwy7rT.js → Zap-nZsM1SyL.js} +1 -1
- package/dist/client/assets/{ZapSquare-BZigc_WM.js → ZapSquare-BE8Mz2Ev.js} +1 -1
- package/dist/client/assets/{access-gate-C9Asyvxl.js → access-gate-C_dPeKEI.js} +1 -1
- package/dist/client/assets/{agent-icon-D5k9Yf1-.js → agent-icon-BuOj8uAL.js} +1 -1
- package/dist/client/assets/{agents-list-ByVypPTR.js → agents-list-ySfMTTAB.js} +1 -1
- package/dist/client/assets/{ai-providers-CNl9u_1I.js → ai-providers-QgMky1Oh.js} +1 -1
- package/dist/client/assets/{alert-UnPw8_FN.js → alert-D1rPlgpE.js} +1 -1
- package/dist/client/assets/{alert-dialog-QBFUKuzM.js → alert-dialog-Bc0ScbCu.js} +1 -1
- package/dist/client/assets/{app-editor-CSZxudL_.js → app-editor-DNhnQZat.js} +1 -1
- package/dist/client/assets/{auth-BwHH0y12.js → auth-DbQOgMXU.js} +1 -1
- package/dist/client/assets/{auth-catchall-ugo6JL-x.js → auth-catchall-FX8EbhUO.js} +1 -1
- package/dist/client/assets/{auth-entry-CDB4fIx_.js → auth-entry-wM814I9p.js} +1 -1
- package/dist/client/assets/{auth-split-layout-YYyN3zd5.js → auth-split-layout-F9Okkfnf.js} +1 -1
- package/dist/client/assets/{authenticate-and-persist-oauth-CxfiAulM.js → authenticate-and-persist-oauth-Dq3o6LJo.js} +1 -1
- package/dist/client/assets/{automation-list-row-ynj8UypC.js → automation-list-row-CckTVG3S.js} +1 -1
- package/dist/client/assets/{automation-runs-CYg3u92z.js → automation-runs-lfct1F9f.js} +1 -1
- package/dist/client/assets/{automations-ubfrP07k.js → automations-D4IXCfuu.js} +1 -1
- package/dist/client/assets/{avatar-C7O_7s8Y.js → avatar-_tV5ASFb.js} +1 -1
- package/dist/client/assets/{badge-BePAhzav.js → badge-D8judhNs.js} +1 -1
- package/dist/client/assets/{billing-BZz8W2lN.js → billing-B_fymUe3.js} +1 -1
- package/dist/client/assets/{block-document-XVL7C__h.js → block-document-DJk1hMqR.js} +1 -1
- package/dist/client/assets/{brand-context-CZ0w1ol2.js → brand-context-CdQwqFXz.js} +1 -1
- package/dist/client/assets/{buckets-C_e4BYm9.js → buckets-Lq0JtroN.js} +1 -1
- package/dist/client/assets/{bulk-category-panel-DfeVCV-r.js → bulk-category-panel-D6Rn3UQ0.js} +1 -1
- package/dist/client/assets/{capability-load-error-ClZ34AnC.js → capability-load-error-DE-zz3Vy.js} +1 -1
- package/dist/client/assets/{card-BgxpVqwi.js → card-CCexd1qV.js} +1 -1
- package/dist/client/assets/{cards-CuRbAyvA.js → cards-DCqwk4c_.js} +1 -1
- package/dist/client/assets/{category-editor-Cz7PrgTD.js → category-editor-BJUkyyCy.js} +1 -1
- package/dist/client/assets/{chat-context-D4ErHhzk.js → chat-context-LrkdBR20.js} +1 -1
- package/dist/client/assets/{checkbox-BJPDxNYJ.js → checkbox-C87aTqoN.js} +1 -1
- package/dist/client/assets/{cli-auth-success-CDER29YI.js → cli-auth-success-B_l4H0pK.js} +1 -1
- package/dist/client/assets/{collection-detail-B_UXN1dW.js → collection-detail-BiiiHs7e.js} +1 -1
- package/dist/client/assets/{collection-display-button-DbilXnD2.js → collection-display-button-DvlgxKVw.js} +1 -1
- package/dist/client/assets/{collection-search-BWjmHVVU.js → collection-search-FFM6ys1W.js} +1 -1
- package/dist/client/assets/{collection-table-wrapper-TLejtjRQ.js → collection-table-wrapper-BvGv-w0W.js} +1 -1
- package/dist/client/assets/{collection-tabs-CcfrhIoL.js → collection-tabs-B3sqc7Oj.js} +1 -1
- package/dist/client/assets/{command-Do0yCPtF.js → command-Cr0DlOG1.js} +1 -1
- package/dist/client/assets/{commerce-onboarding-CCpMoisQ.js → commerce-onboarding-CHZko2Oq.js} +1 -1
- package/dist/client/assets/{connect-BpPPMFoA.js → connect-BiI1UwlN.js} +1 -1
- package/dist/client/assets/{connection-DG9Vo3Xx.js → connection-BthOJQeu.js} +1 -1
- package/dist/client/assets/connection-card-BpL8rX4c.js +1 -0
- package/dist/client/assets/{connection-detail-Csr6WY9M.js → connection-detail-DZgV0jwE.js} +1 -1
- package/dist/client/assets/{connection-form-helpers-DaLtCTHe.js → connection-form-helpers-C1AB6OWz.js} +1 -1
- package/dist/client/assets/connections-BMaJSL7N.js +1 -0
- package/dist/client/assets/{decopilot-sse-pool-ClMQJmXb.js → decopilot-sse-pool-BpBeIp9p.js} +1 -1
- package/dist/client/assets/{dialog-Ds_JVWLW.js → dialog-D9aqvrUn.js} +1 -1
- package/dist/client/assets/{domain-settings-CjdrxvK7.js → domain-settings-CNMf5PAQ.js} +1 -1
- package/dist/client/assets/{drawer-BTRJT6hW.js → drawer-DMiG-D7S.js} +1 -1
- package/dist/client/assets/{dropdown-menu-Usfj1mSf.js → dropdown-menu-Dl9ed7qy.js} +1 -1
- package/dist/client/assets/{empty-state-sd4QJe0K.js → empty-state-CD5pxU2t.js} +1 -1
- package/dist/client/assets/{extract-connection-data-DeUQwuq8.js → extract-connection-data-DBdkErK8.js} +1 -1
- package/dist/client/assets/{file-explorer-3OY4Xu3c.js → file-explorer-E4KPKGe2.js} +1 -1
- package/dist/client/assets/{file-type-icon-DAyj-28J.js → file-type-icon-B1SoEGrL.js} +1 -1
- package/dist/client/assets/{form-CfaA3lSt.js → form-DFQ1OvIa.js} +1 -1
- package/dist/client/assets/{general-VfNnulz2.js → general-3L3S2yz0.js} +1 -1
- package/dist/client/assets/{github-repo-picker-Bx6cLIE7.js → github-repo-picker-DHc8euEZ.js} +1 -1
- package/dist/client/assets/{hooks-BPIjYplB.js → hooks-Dkx3L-5C.js} +1 -1
- package/dist/client/assets/{index-CWFURxE5.js → index-B2wrU9iy.js} +3 -3
- package/dist/client/assets/{index-4gHqTGxW.js → index-BF-wNBYA.js} +1 -1
- package/dist/client/assets/{index-Bv0V5uTE.js → index-BmOd8SJT.js} +1 -1
- package/dist/client/assets/{index-9OwfR-AW.js → index-C9Xc9QJf.js} +1 -1
- package/dist/client/assets/{index-BB7e6NhC.js → index-CBxl69n_.js} +1 -1
- package/dist/client/assets/{index-PyQXd693.js → index-CmegeJWN.js} +5 -5
- package/dist/client/assets/{index-C79ewblz.js → index-DGH253FR.js} +1 -1
- package/dist/client/assets/{index-BUqOj9Ap.js → index-DX4JoL4X.js} +1 -1
- package/dist/client/assets/{index-DASRiv4L.js → index-Dr-ceP6z.js} +1 -1
- package/dist/client/assets/{index-B-ybNXZS.js → index-G3GxOTj4.js} +1 -1
- package/dist/client/assets/{index-redirect-DjDnuFpv.js → index-redirect-BjJX1-JA.js} +1 -1
- package/dist/client/assets/{input-BC-hLWXi.js → input-CPkidnDS.js} +1 -1
- package/dist/client/assets/{integration-icon-TZ7b4Gge.js → integration-icon-DH7cOQG7.js} +1 -1
- package/dist/client/assets/{invite-member-dialog-CFBThDg-.js → invite-member-dialog-CmNyS1DN.js} +1 -1
- package/dist/client/assets/{label-zLTYNiKk.js → label-BO0J6qs6.js} +1 -1
- package/dist/client/assets/{layout-8YBwWm-o.js → layout-KYV6Af4V.js} +1 -1
- package/dist/client/assets/{login-BXRuwzAs.js → login-CwnTXAzE.js} +1 -1
- package/dist/client/assets/{mcp-oauth-SAGexOC9.js → mcp-oauth-DW66Q-SF.js} +1 -1
- package/dist/client/assets/{members-CR-Hzuwz.js → members-D4ayJ3GM.js} +1 -1
- package/dist/client/assets/{monaco-editor-mWVc9KL-.js → monaco-editor-XjHDbpmk.js} +1 -1
- package/dist/client/assets/{monitoring-stats-row-DAix-IL5.js → monitoring-stats-row-nn3Pe6cj.js} +1 -1
- package/dist/client/assets/{multi-select-BXHZx3nf.js → multi-select-CRkyOjHU.js} +1 -1
- package/dist/client/assets/{oauth-callback-DC9ih8_8.js → oauth-callback-Db-ZiUZO.js} +1 -1
- package/dist/client/assets/{oauth-callback-ai-provider-CR68mF3u.js → oauth-callback-ai-provider-BvE50pkP.js} +1 -1
- package/dist/client/assets/{onboarding-CBcrwADg.js → onboarding-ClHFg1KN.js} +1 -1
- package/dist/client/assets/{org-layout-C2RlPc5u.js → org-layout-CQ4chpWv.js} +1 -1
- package/dist/client/assets/{organization-choice-BdoWNFcE.js → organization-choice-kIcl3GPL.js} +1 -1
- package/dist/client/assets/{orgs-BzMhjxbV.js → orgs-BDiO5QWA.js} +1 -1
- package/dist/client/assets/{page-seo-form-Db8swNXT.js → page-seo-form-U7Cv-4m-.js} +1 -1
- package/dist/client/assets/{popover-DTmLg8Fl.js → popover-DhF8rtcM.js} +1 -1
- package/dist/client/assets/{post-editor-DrHxT0Ow.js → post-editor-Db1hPHLA.js} +1 -1
- package/dist/client/assets/{primitives-CdTjH80J.js → primitives-Y_CTVEV_.js} +1 -1
- package/dist/client/assets/{profile-B0e6TSuo.js → profile-DCKk0CPj.js} +1 -1
- package/dist/client/assets/{project-app-view-D3lvcxO8.js → project-app-view-Cphacqh5.js} +1 -1
- package/dist/client/assets/record-editor-CnRO16ro.js +1 -0
- package/dist/client/assets/{redirect-editor-Xm3-Jsg6.js → redirect-editor-C6CXBB3a.js} +1 -1
- package/dist/client/assets/registry-Bn_yhVw3.js +2 -0
- package/dist/client/assets/{registry-layout-BVRDXJ0V.js → registry-layout-CiYgKuM3.js} +1 -1
- package/dist/client/assets/{reports-CfbJgb--.js → reports-Bw6Px3e9.js} +1 -1
- package/dist/client/assets/{require-capability-DgghUPxH.js → require-capability-NoEAj6kQ.js} +1 -1
- package/dist/client/assets/{required-auth-layout-DaFZDfeZ.js → required-auth-layout-DAH0IblX.js} +1 -1
- package/dist/client/assets/{reset-password-D7sSqXrn.js → reset-password-Cfwwx9Ys.js} +1 -1
- package/dist/client/assets/{roles-_m4J68a5.js → roles-CbbSoumX.js} +1 -1
- package/dist/client/assets/{search-input-B982Thib.js → search-input-DRvNtCEq.js} +1 -1
- package/dist/client/assets/{secrets-3AUETR6z.js → secrets-1clAbsE0.js} +1 -1
- package/dist/client/assets/{sections-editor-B0Gn1z5s.js → sections-editor-DgfsFI3O.js} +1 -1
- package/dist/client/assets/{select-model-CDqSGnEj.js → select-model-CvirgHEG.js} +1 -1
- package/dist/client/assets/{select-BlSDBhtd.js → select-r59wllxk.js} +1 -1
- package/dist/client/assets/{self-tool-result-Dwh2regJ.js → self-tool-result-Culw2UgF.js} +1 -1
- package/dist/client/assets/{seo-editor-DAuQJ149.js → seo-editor-DT5KFGBO.js} +1 -1
- package/dist/client/assets/{settings-layout-MvVx6-8o.js → settings-layout-DuxZ6bN6.js} +1 -1
- package/dist/client/assets/{settings-section-DfXgOw3y.js → settings-section-I9BqQLNc.js} +1 -1
- package/dist/client/assets/{shell-controls-CYFFM82h.js → shell-controls-CIF4lLBf.js} +1 -1
- package/dist/client/assets/{shell-layout-wu-Q81Fy.js → shell-layout-bftFb9R_.js} +1 -1
- package/dist/client/assets/{sidebar-BuXr18nB.js → sidebar-DMEFaUxH.js} +1 -1
- package/dist/client/assets/{skeleton-Cr6hfWGK.js → skeleton-B-VaatWE.js} +1 -1
- package/dist/client/assets/{spinner-CfCZo-Xg.js → spinner-BvBqGmFf.js} +1 -1
- package/dist/client/assets/{sso-C1hnBhkE.js → sso-CgL3jm8B.js} +1 -1
- package/dist/client/assets/{store-Dut1dXFs.js → store-CpuHnr7D.js} +1 -1
- package/dist/client/assets/store-registry-6ix-jKVx.js +2 -0
- package/dist/client/assets/{studio-tools-C_8nk3fC.js → studio-tools-D2tIom5i.js} +1 -1
- package/dist/client/assets/{switch-UuXB9t12.js → switch-DrqzT-XZ.js} +1 -1
- package/dist/client/assets/{synced-repos-BdJuHfuc.js → synced-repos-7ZT6zSbJ.js} +1 -1
- package/dist/client/assets/{tab-id-BhUAuKkI.js → tab-id-B1hQEP_J.js} +1 -1
- package/dist/client/assets/{table-DsYIwsXW.js → table-Da0h1AH9.js} +1 -1
- package/dist/client/assets/{tabs-DVJdZB-O.js → tabs-DSufWlUD.js} +1 -1
- package/dist/client/assets/{textarea-BKsLfFgu.js → textarea-0GKwxwbs.js} +1 -1
- package/dist/client/assets/{toggle-group-BUEvNLTz.js → toggle-group-hu9g4imV.js} +1 -1
- package/dist/client/assets/{toolbar-j8-4Mv0S.js → toolbar-CzR9dGOY.js} +1 -1
- package/dist/client/assets/{tooltip-RX9RRp3i.js → tooltip-_9asqZGo.js} +1 -1
- package/dist/client/assets/{use-ai-providers-WvmtwCdE.js → use-ai-providers-DjvY_UbV.js} +1 -1
- package/dist/client/assets/{use-automations-CKd87q-w.js → use-automations-DvequBjJ.js} +1 -1
- package/dist/client/assets/{use-autosave-DgJuiTCA.js → use-autosave-Bf94B8Ek.js} +1 -1
- package/dist/client/assets/{use-capability-CoiAhrlX.js → use-capability--7D6K3Ow.js} +1 -1
- package/dist/client/assets/{use-clock-tick-f6-qK6g_.js → use-clock-tick-D_PJDC4y.js} +1 -1
- package/dist/client/assets/{use-connection-DUQfJcYU.js → use-connection-CmtTybZz.js} +1 -1
- package/dist/client/assets/{use-copy-VFxJjIkK.js → use-copy-CwOZl7d_.js} +1 -1
- package/dist/client/assets/{use-create-virtual-mcp-CcVv9Na5.js → use-create-virtual-mcp-D3kxmTS9.js} +1 -1
- package/dist/client/assets/{use-debounced-autosave-gURZDv5h.js → use-debounced-autosave-BSSv7iOl.js} +1 -1
- package/dist/client/assets/{use-debounced-value-pbOSOxa_.js → use-debounced-value-BAGfAQ1h.js} +1 -1
- package/dist/client/assets/{use-deco-credits-DbRXvNFn.js → use-deco-credits-CQDdGcFM.js} +1 -1
- package/dist/client/assets/{use-decopilot-events-Ct9RAvYt.js → use-decopilot-events-C_R3p3dq.js} +1 -1
- package/dist/client/assets/{use-delete-connection-CNncERVS.js → use-delete-connection-C5rI24Jw.js} +1 -1
- package/dist/client/assets/{use-deployment-admin-DuRsHUxX.js → use-deployment-admin-BwLkGIlt.js} +1 -1
- package/dist/client/assets/{use-file-configs-BCVf-X5U.js → use-file-configs-DdmaN3nN.js} +1 -1
- package/dist/client/assets/{use-infinite-scroll-D7oOGxDU.js → use-infinite-scroll-D_pD0eB_.js} +1 -1
- package/dist/client/assets/{use-join-requests-DQmWzlu7.js → use-join-requests-B0gXJhbT.js} +1 -1
- package/dist/client/assets/{use-mcp-client-gVBIjm1O.js → use-mcp-client-eUuy7e0N.js} +1 -1
- package/dist/client/assets/{use-mcp-tools-t7TMHD-A.js → use-mcp-tools-DK29reVg.js} +1 -1
- package/dist/client/assets/{use-members-DhOZD3Ob.js → use-members-B1JGaOR4.js} +1 -1
- package/dist/client/assets/{use-mobile-Kj5lmQlg.js → use-mobile-BmVcTNR8.js} +1 -1
- package/dist/client/assets/{use-navigate-to-agent-DAqCNXcO.js → use-navigate-to-agent-H1aB2l--.js} +1 -1
- package/dist/client/assets/{use-open-billing-url-HL-gcjl5.js → use-open-billing-url-DsfEeAcf.js} +1 -1
- package/dist/client/assets/{use-org-auth-client-mCOapRor.js → use-org-auth-client-wCRKJvZa.js} +1 -1
- package/dist/client/assets/{use-org-sso-KVkHS4MF.js → use-org-sso-BEJ1_jDN.js} +1 -1
- package/dist/client/assets/{use-organization-roles-B2_f5O8_.js → use-organization-roles-n-YHYydM.js} +1 -1
- package/dist/client/assets/{use-organization-settings-DXDO0DzM.js → use-organization-settings-15mx1gFy.js} +1 -1
- package/dist/client/assets/{use-registry-connections-C2nuPYBV.js → use-registry-connections-CVdejzEl.js} +1 -1
- package/dist/client/assets/{use-secrets-CR26sE9M.js → use-secrets-CKFwoIEP.js} +1 -1
- package/dist/client/assets/{use-section-preview-base-BUQqoHHU.js → use-section-preview-base-Cd8QinTq.js} +1 -1
- package/dist/client/assets/{use-status-sounds-CCrm5Vt-.js → use-status-sounds-Bea3DnIL.js} +1 -1
- package/dist/client/assets/{use-tags-DknSxODJ.js → use-tags-DGJ7b_6L.js} +1 -1
- package/dist/client/assets/{use-view-mode-DrqbEY8s.js → use-view-mode-B6U9h-zG.js} +1 -1
- package/dist/client/assets/{use-virtual-mcp-CEFBLBW8.js → use-virtual-mcp-3lNvOqGc.js} +1 -1
- package/dist/client/assets/useInfiniteQuery-OC1C857S.js +1 -0
- package/dist/client/assets/{useRouterState-Co7vtWAz.js → useRouterState-BCGWq2u1.js} +1 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-Dqh-yah6.js +1 -0
- package/dist/client/assets/{users-CnM8hQJY.js → users-CZhj5MDh.js} +1 -1
- package/dist/client/assets/{variant-calendar-CTHBRg2u.js → variant-calendar-B6FP44fD.js} +1 -1
- package/dist/client/assets/{view-mode-toggle-ijG_HRfq.js → view-mode-toggle-DW8HwE-P.js} +1 -1
- package/dist/client/index.html +1 -1
- package/dist/server/cli.js +1 -1
- package/dist/server/server.js +1 -1
- package/package.json +1 -1
- package/dist/client/assets/connection-card-DTbyA9u1.js +0 -1
- package/dist/client/assets/connections-DFfiTXnA.js +0 -1
- package/dist/client/assets/record-editor-C73RJRo4.js +0 -1
- package/dist/client/assets/registry-Bjpnu96L.js +0 -2
- package/dist/client/assets/store-registry-csS_PU6w.js +0 -2
- package/dist/client/assets/useInfiniteQuery-RTORf-dV.js +0 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-CQRsUOfS.js +0 -1
package/dist/server/cli.js
CHANGED
|
@@ -1332,7 +1332,7 @@ Usage: deco services <up|down|status>`),process.exit(1)}}var pc1=O(()=>{Vx()});f
|
|
|
1332
1332
|
`.execute($);if(Number(W.rows[0]?.cnt)===0){console.warn(`Failed to migrate ${J}/${K}, keeping in old table`);continue}}await Qb`
|
|
1333
1333
|
DELETE FROM kysely_migration WHERE name = ${X}
|
|
1334
1334
|
`.execute($)}}async function Nn1($){await pc6($),await tc6($);let Z=new Hn1({db:$,provider:{getMigrations:()=>Promise.resolve(rl0)}}),{error:X,results:Q}=await Z.migrateToLatest(),Y=0;if(Q?.forEach((G)=>{if(G.status==="Success")Y++;else if(G.status==="Error")console.error(`Failed to execute migration "${G.migrationName}"`)}),X)throw console.error("Failed to migrate"),console.error(X),X;return Y}async function oc6($){let{keepOpen:Z=!1,database:X,skipBetterAuth:Q=!1}=$??{},Y="skipped";if(!Q&&!X)Y=await Ph0();let G=X??U6(),J=async()=>{if(!Z&&!X)await Lw(G).catch((K)=>{console.warn("Warning: Error closing database:",K)})};try{let K=await Nn1(G.db);return await J(),{betterAuth:Y,kysely:K}}catch(K){throw await J(),K}}async function rc6(){let $=U6(),Z=new Hn1({db:$.db,provider:{getMigrations:()=>Promise.resolve(rl0)}}),{error:X,results:Q}=await Z.migrateDown();if(Q?.forEach((Y)=>{if(Y.status==="Success")console.log(`\u2705 Migration "${Y.migrationName}" rolled back successfully`);else if(Y.status==="Error")console.error(`\u274C Failed to rollback migration "${Y.migrationName}"`)}),X)throw console.error("Failed to rollback migration"),console.error(X),X}var wn1=O(()=>{Wn1();Ah0();o7()});async function Z90($){let Z={...process.env},X=t00($,Z);console.log(MF1(X.settings.encryptionKey));let Q=X.settings.betterAuthSecret||(X.settings.localMode?Rd1(X.settings.dataDir):""),{ensureServices:Y}=await Promise.resolve().then(() => (N50(),U50)),{outputs:G,services:J}=await Y({home:X.settings.dataDir,externalDatabaseUrl:X.externalDatabaseUrl,externalNatsUrl:X.externalNatsUrl});if(!X.skipMigrations){let{migrateBetterAuth:W}=await Promise.resolve().then(() => (Ah0(),qd1));await W(G.databaseUrl);let{createDatabase:H}=await Promise.resolve().then(() => (o7(),ll1)),{migrateToLatest:U}=await Promise.resolve().then(() => (wn1(),Fn1)),N=H(G.databaseUrl);await U({keepOpen:!0,database:N,skipBetterAuth:!0})}let K={...X.settings,betterAuthSecret:Q,databaseUrl:G.databaseUrl,natsUrls:G.natsUrls,...G.s3?{s3Endpoint:G.s3.endpoint,s3Bucket:G.s3.bucket,s3AccessKeyId:G.s3.accessKeyId,s3SecretAccessKey:G.s3.secretAccessKey,s3ForcePathStyle:G.s3.forcePathStyle}:{},...G.natsTunnel?{natsPublicUrl:G.natsTunnel.publicUrl,natsAccountJwt:G.natsTunnel.accountJwt,natsAccountSigningKey:G.natsTunnel.accountSigningKey,natsOperatorJwt:G.natsTunnel.operatorJwt,natsTunnelPublicEnabled:!0,natsCredsPath:G.natsTunnel.credsPath}:{}};return tc1(K),{settings:K,services:J.map((W)=>({name:W.name==="PostgreSQL"?"Postgres":W.name,port:W.port})),managedServiceNames:J.filter((W)=>W.owner==="managed").map((W)=>W.name)}}var al0=O(()=>{Vx();Id1();b8()});var Ln1={};B0(Ln1,{updateService:()=>oD,subscribeCliState:()=>$d0,setTuiConsoleIntercepted:()=>X90,setServerUrl:()=>_m,setMigrationsDone:()=>Cm,setDevMode:()=>ec6,resetCliStateForTests:()=>ac6,isTuiConsoleIntercepted:()=>Q90,getCliState:()=>el0,addLogEntry:()=>Pw});function Bn1(){return{services:[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}],migrationsStatus:"pending",serverUrl:null,logs:[]}}function ac6(){_Q=Bn1()}function sc6(){return[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}]}function Sm(){for(let $ of sl0)$()}function el0(){return _Q}function $d0($){return sl0.add($),()=>sl0.delete($)}function oD($){_Q={..._Q,services:_Q.services.map((Z)=>Z.name===$.name?$:Z)},Sm()}function Cm(){_Q={..._Q,migrationsStatus:"done"},Sm()}function _m($){_Q={..._Q,serverUrl:$},Sm()}function Pw($){let Z=[..._Q.logs,$];_Q={..._Q,logs:Z.length>500?Z.slice(-500):Z},Sm()}function ec6(){_Q={..._Q,services:[...sc6(),{name:"API",status:"pending",port:0},{name:"Vite",status:"pending",port:0}]},Sm()}function X90($){On1=$}function Q90(){return On1}var _Q,sl0,On1=!1;var rD=O(()=>{_Q=Bn1();sl0=new Set});import{createServer as Dn1}from"net";function $l6($){return new Promise((Z)=>{let X=Dn1();X.once("error",()=>Z(!1)),X.listen($,"0.0.0.0",()=>{X.close(()=>Z(!0))})})}async function vm($){if(await $l6($))return $;let Z=await new Promise((X,Q)=>{let Y=Dn1();Y.once("error",Q),Y.listen(0,"0.0.0.0",()=>{let G=Y.address(),J=typeof G==="object"&&G?G.port:0;Y.close(()=>X(J))})});return console.warn(`Port ${$} is in use, using port ${Z} instead.`),Z}var Zd0=()=>{};function xm($){return $.replace(/\x1b\[[0-9;]*m/g,"")}var Xd0={};B0(Xd0,{startDevServer:()=>Xl6});import{join as Zl6}from"path";function En1($){let Z=$.getReader(),X=new TextDecoder,Q="";function Y(){let G=Q.split(`
|
|
1335
|
-
`);Q=G.pop()??"";for(let J of G){let K=xm(J).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;Pw({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:K})}}(async()=>{for(;;){let{done:G,value:J}=await Z.read();if(G)break;Q+=X.decode(J,{stream:!0}),Y()}if(Q.trim()){let G=xm(Q).replace(/^\[\d+\]\s*/,"").trim();if(G)Pw({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:G})}})()}async function Xl6($){let{baseUrl:Z,noTui:X}=$,Q=process.env.HOST==="0.0.0.0"&&Boolean(process.env.PORT),Y=Q?process.env.PORT:$.vitePort,G=Z||`http://localhost:${Y}`,J=Q?await vm(Number(Y)+1):await vm(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await Z90({port:String(J),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let L of W)oD({name:L.name,status:"ready",port:L.port});Cm();let U=Zl6(import.meta.dir,"..","..","..","..",".."),N=X===!0,F=Bun.spawn(["bun","run","dev:servers"],{cwd:U,env:{...process.env,PORT:String(K.port),VITE_PORT:String(Y),DATABASE_URL:K.databaseUrl,NATS_URL:K.natsUrls.join(","),NODE_ENV:K.nodeEnv,BASE_URL:G,DECOCMS_LOCAL_MODE:String(K.localMode),DECOCMS_HOME:K.dataDir,DATA_DIR:K.dataDir,DECO_CLI:"1",...K.betterAuthSecret?{BETTER_AUTH_SECRET:K.betterAuthSecret}:{},...K.s3Endpoint?{S3_ENDPOINT:K.s3Endpoint,S3_BUCKET:K.s3Bucket??"",S3_ACCESS_KEY_ID:K.s3AccessKeyId??"",S3_SECRET_ACCESS_KEY:K.s3SecretAccessKey??"",S3_FORCE_PATH_STYLE:String(K.s3ForcePathStyle)}:{},...K.natsPublicUrl&&K.natsAccountJwt&&K.natsAccountSigningKey?{NATS_PUBLIC_URL:K.natsPublicUrl,NATS_ACCOUNT_JWT:K.natsAccountJwt,NATS_ACCOUNT_SIGNING_KEY:K.natsAccountSigningKey,NATS_OPERATOR_JWT:K.natsOperatorJwt??"",NATS_TUNNEL_PUBLIC_ENABLED:"true",...K.natsCredsPath?{NATS_CREDS:K.natsCredsPath}:{}}:{}},stdio:["inherit",N?"inherit":"pipe",N?"inherit":"pipe"]});if(!N)En1(F.stdout),En1(F.stderr);_m(G),oD({name:"Vite",status:"ready",port:Number(Y)}),oD({name:"API",status:"ready",port:Number(K.port)});let B=async(L)=>{if(F.kill(L),await F.exited,H.length>0){let{stopServices:D}=await Promise.resolve().then(() => (N50(),U50));await D(K.dataDir)}};return process.on("SIGINT",()=>B("SIGINT")),process.on("SIGTERM",()=>B("SIGTERM")),{port:Number(Y),process:F}}var Qd0=O(()=>{al0();rD();Zd0()});var Y90;var Yd0=O(()=>{Y90={name:"decocms",version:"4.204.25",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.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":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@nats-io/jwt":"0.0.10-5","@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:"^6.0.208","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"}}});import{Box as Yl6,Text as zn1}from"ink";import{jsx as Gl6,jsxs as jn1}from"react/jsx-runtime";function Pn1({version:$}){return jn1(Yl6,{flexDirection:"column",marginTop:1,children:[_50.map((Z,X)=>Gl6(zn1,{color:v50[X],children:Z},X)),jn1(zn1,{dimColor:!0,children:[" v",$]})]})}var An1=O(()=>{zm()});import{Box as aD,Text as Aw}from"ink";import{Spinner as Jl6}from"@inkjs/ui";import{jsx as lY,jsxs as Yb}from"react/jsx-runtime";function Tn1({status:$}){if($==="pending")return lY(Jl6,{label:""});return lY(Aw,{color:"green",children:"\u2713"})}function Kl6($){return`${$.name}: ${$.port||"...."}`}function Rn1({services:$,migrationsStatus:Z,home:X,serverUrl:Q}){return Yb(aD,{flexDirection:"column",paddingBottom:1,children:[lY(Pn1,{version:Y90.version}),lY(aD,{marginBottom:1,children:lY(Aw,{dimColor:!0,children:"\u2500".repeat(80)})}),lY(aD,{children:Yb(Aw,{dimColor:!0,children:["Home: ",X]})}),Yb(aD,{gap:2,children:[$.map((Y)=>Yb(aD,{gap:1,children:[lY(Aw,{children:Kl6(Y)}),lY(Tn1,{status:Y.status})]},Y.name)),Yb(aD,{gap:1,children:[lY(Aw,{children:"Migrations"}),lY(Tn1,{status:Z})]})]}),lY(aD,{children:Q?Yb(Aw,{children:["Open in browser: ",lY(Aw,{color:"cyan",children:Q})]}):lY(Aw,{dimColor:!0,children:"Starting..."})})]})}var In1=O(()=>{Yd0();An1()});import{Box as Wl6,Text as fm}from"ink";import{jsx as Gd0,jsxs as Jd0}from"react/jsx-runtime";function Hl6($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function qn1({logs:$}){return Gd0(Wl6,{flexDirection:"column",children:$.map((Z,X)=>{if(Z.rawLine)return Gd0(fm,{dimColor:!0,children:Z.rawLine},X);let Q=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return Jd0(fm,{children:[Jd0(fm,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),Gd0(fm,{color:Hl6(Z.status),children:Z.status}),Jd0(fm,{dimColor:!0,children:[" ",Q.padStart(8)]})]},X)})})}var Mn1=()=>{};var Kd0={};B0(Kd0,{App:()=>Fl6});import{Box as Ul6}from"ink";import{useSyncExternalStore as Nl6}from"react";import{jsx as kn1,jsxs as wl6}from"react/jsx-runtime";function Fl6({home:$}){let Z=Nl6($d0,el0);return wl6(Ul6,{flexDirection:"column",children:[kn1(Rn1,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),kn1(qn1,{logs:Z.logs})]})}var Wd0=O(()=>{In1();Mn1();rD()});var OJ="thread-gate",xU="decopilot-hosted-harness",tG="automations",Tw="background-tools";var Vn1="7";function Sn1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:Vn1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var Cn1=()=>{};function Bl6(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function Hd0($,Z){for(let X=0;X<$.length;X++){let Q=$[X];if(Q===void 0)continue;if(Q===Z)return $[X+1];if(Q.startsWith(`${Z}=`))return Q.slice(Z.length+1)}return}function _n1(){let $=Bl6();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:Hd0($,"--cpu-prof-dir")??process.cwd(),name:Hd0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(Hd0($,"--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.'}))}function vn1(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let X=iD();if(!X)return;let Q={};try{let{heapStats:Y}=await import("bun:jsc"),G=Y(),J=Object.entries(G.objectTypeCounts).sort((K,W)=>W[1]-K[1]).slice(0,20);Q={objectCount:G.objectCount,heapSize:G.heapSize,top:Object.fromEntries(J)}}catch{}console.log(JSON.stringify({msg:"heap-watch",ts:new Date().toISOString(),uptimeS:Math.round(process.uptime()),rss:X.rss,heapUsed:X.heapUsed,heapTotal:X.heapTotal,external:X.external,arrayBuffers:X.arrayBuffers,...Q}))};return Z().catch(()=>{}),G90=setInterval(()=>void Z().catch(()=>{}),$),G90.unref?.(),process.on("SIGUSR2",()=>{try{let X=Bun.generateHeapSnapshot("v8"),Q=typeof X==="string"?X:JSON.stringify(X),Y=`/tmp/heap-${process.pid}-${Date.now()}.heapsnapshot`;Bun.write(Y,Q),console.log(JSON.stringify({msg:"heap-snapshot-written",path:Y}))}catch(X){console.error("[heap-watch] snapshot failed:",X)}}),()=>{if(G90)clearInterval(G90)}}var G90;var xn1=()=>{};import*as Ol6 from"bun:jsc";function fn1(){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{Ll6()}catch(G){return console.error("[stall-watchdog] failed to start sampling profiler:",G),()=>{}}let X,Q=performance.now()+Z,Y=()=>{let G=performance.now(),J=G-Q;Q=G+Z;let K=[];try{K=Dl6()?.traces??[]}catch{}if(J>$&&K.length>0){let W=new Map;for(let U of K){let N=U.frames.find((B)=>B.sourceURL&&!/Unknown Executable/.test(B.category??""))??U.frames[0];if(!N)continue;let F=(N.sourceURL??"?").replace(/^.*\/node_modules\//,"node_modules/"),w=`${N.name??"?"} @ ${F}:${N.line??"?"}`;W.set(w,(W.get(w)??0)+1)}let H=[...W.entries()].sort((U,N)=>N[1]-U[1]).slice(0,8).map(([U,N])=>({frame:U,count:N}));console.warn(JSON.stringify({msg:"stall-stack",ts:new Date().toISOString(),lagMs:Math.round(J),samplesInWindow:K.length,top:H}))}X=setTimeout(Y,Z),X.unref?.()};return X=setTimeout(Y,Z),X.unref?.(),()=>{if(X)clearTimeout(X)}}var Ll6,Dl6;var bn1=O(()=>{({startSamplingProfiler:Ll6,samplingProfilerStackTraces:Dl6}=Ol6)});function yn1(){_n1();let $=[vn1(),xl1(),fn1()];return()=>{for(let Z of $)Z()}}var gn1=O(()=>{Nh0();xn1();bn1()});var sD=_((hn1)=>{Object.defineProperty(hn1,"__esModule",{value:!0});hn1.RepublishHeaders=hn1.DirectMsgHeaders=hn1.JsHeaders=hn1.AdvisoryKind=void 0;hn1.isOrderedPushConsumerOptions=El6;hn1.isPullConsumer=zl6;hn1.isPushConsumer=jl6;hn1.isBoundPushConsumerOptions=Pl6;function El6($){if($&&typeof $==="object")return"name_prefix"in $||"deliver_subject_prefix"in $||"filter_subjects"in $||"filter_subject"in $||"deliver_policy"in $||"opt_start_seq"in $||"opt_start_time"in $||"replay_policy"in $||"inactive_threshold"in $||"headers_only"in $||"deliver_prefix"in $;return!1}function zl6($){return $.isPullConsumer()}function jl6($){return $.isPushConsumer()}function Pl6($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}hn1.AdvisoryKind={API:"api_audit",StreamAction:"stream_action",ConsumerAction:"consumer_action",SnapshotCreate:"snapshot_create",SnapshotComplete:"snapshot_complete",RestoreCreate:"restore_create",RestoreComplete:"restore_complete",MaxDeliver:"max_deliver",Terminated:"terminated",Ack:"consumer_ack",StreamLeaderElected:"stream_leader_elected",StreamQuorumLost:"stream_quorum_lost",ConsumerLeaderElected:"consumer_leader_elected",ConsumerQuorumLost:"consumer_quorum_lost"};hn1.JsHeaders={StreamSourceHdr:"Nats-Stream-Source",LastConsumerSeqHdr:"Nats-Last-Consumer",LastStreamSeqHdr:"Nats-Last-Stream",ConsumerStalledHdr:"Nats-Consumer-Stalled",MessageSizeHdr:"Nats-Msg-Size",RollupHdr:"Nats-Rollup",RollupValueSubject:"sub",RollupValueAll:"all",PendingMessagesHdr:"Nats-Pending-Messages",PendingBytesHdr:"Nats-Pending-Bytes",RequiredApiLevel:"Nats-Required-Api-Level"};hn1.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};hn1.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var dY=_((cn1)=>{Object.defineProperty(cn1,"__esModule",{value:!0});cn1.TD=cn1.TE=cn1.Empty=void 0;cn1.encode=Sl6;cn1.decode=Cl6;cn1.Empty=new Uint8Array(0);cn1.TE=new TextEncoder;cn1.TD=new TextDecoder;function Vl6(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let X=new Uint8Array(Z),Q=0;for(let Y=0;Y<$.length;Y++)X.set($[Y],Q),Q+=$[Y].length;return X}function Sl6(...$){let Z=[];for(let X=0;X<$.length;X++)Z.push(cn1.TE.encode($[X]));if(Z.length===0)return cn1.Empty;if(Z.length===1)return Z[0];return Vl6(...Z)}function Cl6($){if(!$||$.length===0)return"";return cn1.TD.decode($)}});var mY=_((mn1)=>{Object.defineProperty(mn1,"__esModule",{value:!0});mn1.errors=mn1.PermissionViolationError=mn1.NoRespondersError=mn1.TimeoutError=mn1.RequestError=mn1.ProtocolError=mn1.ConnectionError=mn1.DrainingConnectionError=mn1.ClosedConnectionError=mn1.AuthorizationError=mn1.UserAuthenticationExpiredError=mn1.InvalidOperationError=mn1.InvalidArgumentError=mn1.InvalidSubjectError=void 0;class Nd0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}mn1.InvalidSubjectError=Nd0;class J90 extends Error{constructor($,Z){super($,Z);this.name="InvalidArgumentError"}static format($,Z,X){if(Array.isArray(Z)&&Z.length>1)Z=Z[0];if(Array.isArray($))$=$.map((Q)=>`'${Q}'`),$=$.join(",");else $=`'${$}'`;return new J90(`${$} ${Z}`,X)}}mn1.InvalidArgumentError=J90;class Fd0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}mn1.InvalidOperationError=Fd0;class K90 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new K90($);return null}}mn1.UserAuthenticationExpiredError=K90;class W90 extends Error{constructor($,Z){super($,Z);this.name="AuthorizationError"}static parse($){let Z=["authorization violation","account authentication expired","authentication timeout"],X=$.toLowerCase();for(let Q=0;Q<Z.length;Q++)if(X.indexOf(Z[Q])!==-1)return new W90($);return null}}mn1.AuthorizationError=W90;class wd0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}mn1.ClosedConnectionError=wd0;class Bd0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}mn1.DrainingConnectionError=Bd0;class Od0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}mn1.ConnectionError=Od0;class Ld0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}mn1.ProtocolError=Ld0;class Dd0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof H90}}mn1.RequestError=Dd0;class Ed0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}mn1.TimeoutError=Ed0;class H90 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}mn1.NoRespondersError=H90;class U90 extends Error{operation;subject;queue;constructor($,Z,X,Q,Y){super($,Y);this.name="PermissionViolationError",this.operation=Z,this.subject=X,this.queue=Q}static parse($){if(($?$.toLowerCase():"").indexOf("permissions violation")===-1)return null;let X="publish",Q="",Y=void 0,G=$.match(/(Publish|Subscription) to "(\S+)"/);if(G){if(X=G[1].toLowerCase(),Q=G[2],X==="subscription"){let J=$.match(/using queue "(\S+)"/);if(J)Y=J[1]}}return new U90($,X,Q,Y)}}mn1.PermissionViolationError=U90;mn1.errors={AuthorizationError:W90,ClosedConnectionError:wd0,ConnectionError:Od0,DrainingConnectionError:Bd0,InvalidArgumentError:J90,InvalidOperationError:Fd0,InvalidSubjectError:Nd0,NoRespondersError:H90,PermissionViolationError:U90,ProtocolError:Ld0,RequestError:Dd0,TimeoutError:Ed0,UserAuthenticationExpiredError:K90}});var LJ=_((on1)=>{Object.defineProperty(on1,"__esModule",{value:!0});on1.SimpleMutex=on1.Perf=void 0;on1.extend=tl6;on1.render=ol6;on1.timeout=rl6;on1.delay=al6;on1.deadline=sl6;on1.deferred=jd0;on1.debugDeferred=el6;on1.shuffle=$d6;on1.collect=Zd6;on1.jitter=tn1;on1.backoff=Xd6;on1.nanos=Qd6;on1.millis=Yd6;on1.randomToken=Kd6;var pl6=dY(),zd0=mY();function tl6($,...Z){for(let X=0;X<Z.length;X++){let Q=Z[X];Object.keys(Q).forEach(function(Y){$[Y]=Q[Y]})}return $}function ol6($){return pl6.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function rl6($,Z=!0){let X=Z?new zd0.TimeoutError:null,Q,Y,G=new Promise((J,K)=>{Q={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(X===null)K(new zd0.TimeoutError);else K(X)},$)});return Object.assign(G,Q)}function al6($=0){let Z,X=new Promise((Q)=>{let Y=setTimeout(()=>{Q()},$);Z={cancel:()=>{if(Y)clearTimeout(Y),Q()}}});return Object.assign(X,Z)}async function sl6($,Z=1000){let X=jd0(),Q=setTimeout(()=>{X.reject(new zd0.TimeoutError)},Z);try{return await Promise.race([$,X])}finally{clearTimeout(Q)}}function jd0(){let $={},Z=new Promise((X,Q)=>{$={resolve:X,reject:Q}});return Object.assign(Z,$)}function el6(){let $={},Z=new Promise((X,Q)=>{$={resolve:(Y)=>{console.trace("resolve",Y),X(Y)},reject:(Y)=>{console.trace("reject"),Q(Y)}}});return Object.assign(Z,$)}function $d6($){for(let Z=$.length-1;Z>0;Z--){let X=Math.floor(Math.random()*(Z+1));[$[Z],$[X]]=[$[X],$[Z]]}return $}async function Zd6($){let Z=[];for await(let X of $)Z.push(X);return Z}class nn1{timers;measures;constructor(){this.timers=new Map,this.measures=new Map}mark($){this.timers.set($,performance.now())}measure($,Z,X){let Q=this.timers.get(Z);if(Q===void 0)throw Error(`${Z} is not defined`);let Y=this.timers.get(X);if(Y===void 0)throw Error(`${X} is not defined`);this.measures.set($,Y-Q)}getEntries(){let $=[];return this.measures.forEach((Z,X)=>{$.push({name:X,duration:Z})}),$}}on1.Perf=nn1;class pn1{max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=jd0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}on1.SimpleMutex=pn1;function tn1($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function Xd6($=[0,250,250,500,500,3000,5000]){if(!Array.isArray($))$=[0,250,250,500,500,3000,5000];let Z=$.length-1;return{backoff(X){return tn1(X>Z?$[Z]:$[X])}}}function Qd6($){return $*1e6}function Yd6($){return Math.floor($/1e6)}var Gd6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",fU=new Uint8Array(62);for(let $=0;$<62;$++)fU[$]=Gd6.charCodeAt($);var Jd6=218340105584896;function Kd6(){let $=Math.floor(Math.random()*Jd6),Z=$%62,X=fU[Z];$=($-Z)/62,Z=$%62;let Q=fU[Z];$=($-Z)/62,Z=$%62;let Y=fU[Z];$=($-Z)/62,Z=$%62;let G=fU[Z];$=($-Z)/62,Z=$%62;let J=fU[Z];$=($-Z)/62,Z=$%62;let K=fU[Z];$=($-Z)/62,Z=$%62;let W=fU[Z];$=($-Z)/62;let H=fU[$];return String.fromCharCode(X,Q,Y,G,J,K,W,H)}});var Qp1=_((Zp1)=>{Object.defineProperty(Zp1,"__esModule",{value:!0});Zp1.nuid=Zp1.NuidImpl=void 0;var Td6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",Rw=62,F90=12,en1=10,an1=33,Rd6=333,sn1=F90+en1,Ad0=new Uint8Array(Rw);for(let $=0;$<Rw;$++)Ad0[$]=Td6.charCodeAt($);var N90=4294967296,$p1=BigInt(Rw)**BigInt(en1),bm=Number($p1/(1n<<32n)),Pd0=Number($p1%(1n<<32n));function Id6($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function qd6($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else Id6($)}class Td0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(sn1),this.cbuf=new Uint8Array(F90),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(bm+1)),this.seqLo=Math.floor(Math.random()*N90);while($++<8&&this.seqHi===bm&&this.seqLo>=Pd0);if(this.seqHi===bm&&this.seqLo>=Pd0)this.seqLo=0;this.inc=Math.random()*(Rd6-an1)+an1|0}setPre(){qd6(this.cbuf);for(let $=0;$<F90;$++)this.buf[$]=Ad0[this.cbuf[$]%Rw]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let X=sn1-1;X>=F90;X--){let Q=Math.floor($/Rw),G=($-Q*Rw)*N90+Z,J=Math.floor(G/Rw),K=G-J*Rw;this.buf[X]=Ad0[K],$=Q,Z=J}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=N90)this.seqLo-=N90,this.seqHi+=1;if(this.seqHi>bm||this.seqHi===bm&&this.seqLo>=Pd0)this.setPre(),this.initSeqAndInc();this.fillSeq();let $=this.buf;return String.fromCharCode($[0],$[1],$[2],$[3],$[4],$[5],$[6],$[7],$[8],$[9],$[10],$[11],$[12],$[13],$[14],$[15],$[16],$[17],$[18],$[19],$[20],$[21])}reset(){this.init()}}Zp1.NuidImpl=Td0;Zp1.nuid=new Td0});var Kp1=_((Gp1)=>{Object.defineProperty(Gp1,"__esModule",{value:!0});Gp1.nuid=Gp1.Nuid=void 0;var Yp1=Qp1();Gp1.Nuid=Yp1.NuidImpl;Gp1.nuid=Yp1.nuid});var B90=_((w90)=>{Object.defineProperty(w90,"__esModule",{value:!0});w90.nuid=w90.Nuid=void 0;var Wp1=Kp1();Object.defineProperty(w90,"Nuid",{enumerable:!0,get:function(){return Wp1.Nuid}});Object.defineProperty(w90,"nuid",{enumerable:!0,get:function(){return Wp1.nuid}})});var Iw=_((Hp1)=>{Object.defineProperty(Hp1,"__esModule",{value:!0});Hp1.DEFAULT_HOST=Hp1.DEFAULT_PORT=Hp1.Match=void 0;Hp1.syncIterator=_d6;Hp1.createInbox=vd6;var Sd6=B90(),Cd6=mY();Hp1.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function _d6($){let Z=$[Symbol.asyncIterator]();return{async next(){let X=await Z.next();if(X.done)return Promise.resolve(null);return Promise.resolve(X.value)}}}function vd6($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw Cd6.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${Sd6.nuid.next()}`}Hp1.DEFAULT_PORT=4222;Hp1.DEFAULT_HOST="127.0.0.1"});var ym=_((wp1)=>{Object.defineProperty(wp1,"__esModule",{value:!0});wp1.DataBuffer=void 0;var Np1=dY();class Fp1{buffers;byteLength;constructor(){this.buffers=[],this.byteLength=0}static concat(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let X=new Uint8Array(Z),Q=0;for(let Y=0;Y<$.length;Y++)X.set($[Y],Q),Q+=$[Y].length;return X}static fromAscii($){if(!$)$="";return Np1.TE.encode($)}static toAscii($){return Np1.TD.decode($)}reset(){this.buffers.length=0,this.byteLength=0}pack(){if(this.buffers.length>1){let $=new Uint8Array(this.byteLength),Z=0;for(let X=0;X<this.buffers.length;X++)$.set(this.buffers[X],Z),Z+=this.buffers[X].length;this.buffers.length=0,this.buffers.push($)}}shift(){if(this.buffers.length){let $=this.buffers.shift();if($)return this.byteLength-=$.length,$}return new Uint8Array(0)}drain($){if(this.buffers.length){this.pack();let Z=this.buffers.pop();if(Z){let X=this.byteLength;if($===void 0||$>X)$=X;let Q=Z.subarray(0,$);if(X>$)this.buffers.push(Z.subarray($));return this.byteLength=X-$,Q}}return new Uint8Array(0)}fill($,...Z){if($)this.buffers.push($),this.byteLength+=$.length;for(let X=0;X<Z.length;X++)if(Z[X]&&Z[X].length)this.buffers.push(Z[X]),this.byteLength+=Z[X].length}peek(){if(this.buffers.length)return this.pack(),this.buffers[0];return new Uint8Array(0)}size(){return this.byteLength}length(){return this.buffers.length}}wp1.DataBuffer=Fp1});var eD=_((Lp1)=>{Object.defineProperty(Lp1,"__esModule",{value:!0});Lp1.LF=Lp1.CR=Lp1.CRLF=Lp1.CR_LF_LEN=Lp1.CR_LF=void 0;Lp1.setTransportFactory=cd6;Lp1.defaultPort=ld6;Lp1.getUrlParseFn=dd6;Lp1.newTransport=md6;Lp1.getResolveFn=id6;Lp1.protoLen=Op1;Lp1.extractProtocolMessage=nd6;var gd6=dY(),hd6=Iw(),ud6=ym(),iY;function cd6($){iY=$}function ld6(){return iY!==void 0&&iY.defaultPort!==void 0?iY.defaultPort:hd6.DEFAULT_PORT}function dd6(){return iY!==void 0&&iY.urlParseFn?iY.urlParseFn:void 0}function md6(){if(!iY||typeof iY.factory!=="function")throw Error("transport fn is not set");return iY.factory()}function id6(){return iY!==void 0&&iY.dnsResolveFn?iY.dnsResolveFn:void 0}Lp1.CR_LF=`\r
|
|
1335
|
+
`);Q=G.pop()??"";for(let J of G){let K=xm(J).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;Pw({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:K})}}(async()=>{for(;;){let{done:G,value:J}=await Z.read();if(G)break;Q+=X.decode(J,{stream:!0}),Y()}if(Q.trim()){let G=xm(Q).replace(/^\[\d+\]\s*/,"").trim();if(G)Pw({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:G})}})()}async function Xl6($){let{baseUrl:Z,noTui:X}=$,Q=process.env.HOST==="0.0.0.0"&&Boolean(process.env.PORT),Y=Q?process.env.PORT:$.vitePort,G=Z||`http://localhost:${Y}`,J=Q?await vm(Number(Y)+1):await vm(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await Z90({port:String(J),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let L of W)oD({name:L.name,status:"ready",port:L.port});Cm();let U=Zl6(import.meta.dir,"..","..","..","..",".."),N=X===!0,F=Bun.spawn(["bun","run","dev:servers"],{cwd:U,env:{...process.env,PORT:String(K.port),VITE_PORT:String(Y),DATABASE_URL:K.databaseUrl,NATS_URL:K.natsUrls.join(","),NODE_ENV:K.nodeEnv,BASE_URL:G,DECOCMS_LOCAL_MODE:String(K.localMode),DECOCMS_HOME:K.dataDir,DATA_DIR:K.dataDir,DECO_CLI:"1",...K.betterAuthSecret?{BETTER_AUTH_SECRET:K.betterAuthSecret}:{},...K.s3Endpoint?{S3_ENDPOINT:K.s3Endpoint,S3_BUCKET:K.s3Bucket??"",S3_ACCESS_KEY_ID:K.s3AccessKeyId??"",S3_SECRET_ACCESS_KEY:K.s3SecretAccessKey??"",S3_FORCE_PATH_STYLE:String(K.s3ForcePathStyle)}:{},...K.natsPublicUrl&&K.natsAccountJwt&&K.natsAccountSigningKey?{NATS_PUBLIC_URL:K.natsPublicUrl,NATS_ACCOUNT_JWT:K.natsAccountJwt,NATS_ACCOUNT_SIGNING_KEY:K.natsAccountSigningKey,NATS_OPERATOR_JWT:K.natsOperatorJwt??"",NATS_TUNNEL_PUBLIC_ENABLED:"true",...K.natsCredsPath?{NATS_CREDS:K.natsCredsPath}:{}}:{}},stdio:["inherit",N?"inherit":"pipe",N?"inherit":"pipe"]});if(!N)En1(F.stdout),En1(F.stderr);_m(G),oD({name:"Vite",status:"ready",port:Number(Y)}),oD({name:"API",status:"ready",port:Number(K.port)});let B=async(L)=>{if(F.kill(L),await F.exited,H.length>0){let{stopServices:D}=await Promise.resolve().then(() => (N50(),U50));await D(K.dataDir)}};return process.on("SIGINT",()=>B("SIGINT")),process.on("SIGTERM",()=>B("SIGTERM")),{port:Number(Y),process:F}}var Qd0=O(()=>{al0();rD();Zd0()});var Y90;var Yd0=O(()=>{Y90={name:"decocms",version:"4.204.26",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.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":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@nats-io/jwt":"0.0.10-5","@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:"^6.0.208","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"}}});import{Box as Yl6,Text as zn1}from"ink";import{jsx as Gl6,jsxs as jn1}from"react/jsx-runtime";function Pn1({version:$}){return jn1(Yl6,{flexDirection:"column",marginTop:1,children:[_50.map((Z,X)=>Gl6(zn1,{color:v50[X],children:Z},X)),jn1(zn1,{dimColor:!0,children:[" v",$]})]})}var An1=O(()=>{zm()});import{Box as aD,Text as Aw}from"ink";import{Spinner as Jl6}from"@inkjs/ui";import{jsx as lY,jsxs as Yb}from"react/jsx-runtime";function Tn1({status:$}){if($==="pending")return lY(Jl6,{label:""});return lY(Aw,{color:"green",children:"\u2713"})}function Kl6($){return`${$.name}: ${$.port||"...."}`}function Rn1({services:$,migrationsStatus:Z,home:X,serverUrl:Q}){return Yb(aD,{flexDirection:"column",paddingBottom:1,children:[lY(Pn1,{version:Y90.version}),lY(aD,{marginBottom:1,children:lY(Aw,{dimColor:!0,children:"\u2500".repeat(80)})}),lY(aD,{children:Yb(Aw,{dimColor:!0,children:["Home: ",X]})}),Yb(aD,{gap:2,children:[$.map((Y)=>Yb(aD,{gap:1,children:[lY(Aw,{children:Kl6(Y)}),lY(Tn1,{status:Y.status})]},Y.name)),Yb(aD,{gap:1,children:[lY(Aw,{children:"Migrations"}),lY(Tn1,{status:Z})]})]}),lY(aD,{children:Q?Yb(Aw,{children:["Open in browser: ",lY(Aw,{color:"cyan",children:Q})]}):lY(Aw,{dimColor:!0,children:"Starting..."})})]})}var In1=O(()=>{Yd0();An1()});import{Box as Wl6,Text as fm}from"ink";import{jsx as Gd0,jsxs as Jd0}from"react/jsx-runtime";function Hl6($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function qn1({logs:$}){return Gd0(Wl6,{flexDirection:"column",children:$.map((Z,X)=>{if(Z.rawLine)return Gd0(fm,{dimColor:!0,children:Z.rawLine},X);let Q=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return Jd0(fm,{children:[Jd0(fm,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),Gd0(fm,{color:Hl6(Z.status),children:Z.status}),Jd0(fm,{dimColor:!0,children:[" ",Q.padStart(8)]})]},X)})})}var Mn1=()=>{};var Kd0={};B0(Kd0,{App:()=>Fl6});import{Box as Ul6}from"ink";import{useSyncExternalStore as Nl6}from"react";import{jsx as kn1,jsxs as wl6}from"react/jsx-runtime";function Fl6({home:$}){let Z=Nl6($d0,el0);return wl6(Ul6,{flexDirection:"column",children:[kn1(Rn1,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),kn1(qn1,{logs:Z.logs})]})}var Wd0=O(()=>{In1();Mn1();rD()});var OJ="thread-gate",xU="decopilot-hosted-harness",tG="automations",Tw="background-tools";var Vn1="7";function Sn1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:Vn1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var Cn1=()=>{};function Bl6(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function Hd0($,Z){for(let X=0;X<$.length;X++){let Q=$[X];if(Q===void 0)continue;if(Q===Z)return $[X+1];if(Q.startsWith(`${Z}=`))return Q.slice(Z.length+1)}return}function _n1(){let $=Bl6();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:Hd0($,"--cpu-prof-dir")??process.cwd(),name:Hd0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(Hd0($,"--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.'}))}function vn1(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let X=iD();if(!X)return;let Q={};try{let{heapStats:Y}=await import("bun:jsc"),G=Y(),J=Object.entries(G.objectTypeCounts).sort((K,W)=>W[1]-K[1]).slice(0,20);Q={objectCount:G.objectCount,heapSize:G.heapSize,top:Object.fromEntries(J)}}catch{}console.log(JSON.stringify({msg:"heap-watch",ts:new Date().toISOString(),uptimeS:Math.round(process.uptime()),rss:X.rss,heapUsed:X.heapUsed,heapTotal:X.heapTotal,external:X.external,arrayBuffers:X.arrayBuffers,...Q}))};return Z().catch(()=>{}),G90=setInterval(()=>void Z().catch(()=>{}),$),G90.unref?.(),process.on("SIGUSR2",()=>{try{let X=Bun.generateHeapSnapshot("v8"),Q=typeof X==="string"?X:JSON.stringify(X),Y=`/tmp/heap-${process.pid}-${Date.now()}.heapsnapshot`;Bun.write(Y,Q),console.log(JSON.stringify({msg:"heap-snapshot-written",path:Y}))}catch(X){console.error("[heap-watch] snapshot failed:",X)}}),()=>{if(G90)clearInterval(G90)}}var G90;var xn1=()=>{};import*as Ol6 from"bun:jsc";function fn1(){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{Ll6()}catch(G){return console.error("[stall-watchdog] failed to start sampling profiler:",G),()=>{}}let X,Q=performance.now()+Z,Y=()=>{let G=performance.now(),J=G-Q;Q=G+Z;let K=[];try{K=Dl6()?.traces??[]}catch{}if(J>$&&K.length>0){let W=new Map;for(let U of K){let N=U.frames.find((B)=>B.sourceURL&&!/Unknown Executable/.test(B.category??""))??U.frames[0];if(!N)continue;let F=(N.sourceURL??"?").replace(/^.*\/node_modules\//,"node_modules/"),w=`${N.name??"?"} @ ${F}:${N.line??"?"}`;W.set(w,(W.get(w)??0)+1)}let H=[...W.entries()].sort((U,N)=>N[1]-U[1]).slice(0,8).map(([U,N])=>({frame:U,count:N}));console.warn(JSON.stringify({msg:"stall-stack",ts:new Date().toISOString(),lagMs:Math.round(J),samplesInWindow:K.length,top:H}))}X=setTimeout(Y,Z),X.unref?.()};return X=setTimeout(Y,Z),X.unref?.(),()=>{if(X)clearTimeout(X)}}var Ll6,Dl6;var bn1=O(()=>{({startSamplingProfiler:Ll6,samplingProfilerStackTraces:Dl6}=Ol6)});function yn1(){_n1();let $=[vn1(),xl1(),fn1()];return()=>{for(let Z of $)Z()}}var gn1=O(()=>{Nh0();xn1();bn1()});var sD=_((hn1)=>{Object.defineProperty(hn1,"__esModule",{value:!0});hn1.RepublishHeaders=hn1.DirectMsgHeaders=hn1.JsHeaders=hn1.AdvisoryKind=void 0;hn1.isOrderedPushConsumerOptions=El6;hn1.isPullConsumer=zl6;hn1.isPushConsumer=jl6;hn1.isBoundPushConsumerOptions=Pl6;function El6($){if($&&typeof $==="object")return"name_prefix"in $||"deliver_subject_prefix"in $||"filter_subjects"in $||"filter_subject"in $||"deliver_policy"in $||"opt_start_seq"in $||"opt_start_time"in $||"replay_policy"in $||"inactive_threshold"in $||"headers_only"in $||"deliver_prefix"in $;return!1}function zl6($){return $.isPullConsumer()}function jl6($){return $.isPushConsumer()}function Pl6($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}hn1.AdvisoryKind={API:"api_audit",StreamAction:"stream_action",ConsumerAction:"consumer_action",SnapshotCreate:"snapshot_create",SnapshotComplete:"snapshot_complete",RestoreCreate:"restore_create",RestoreComplete:"restore_complete",MaxDeliver:"max_deliver",Terminated:"terminated",Ack:"consumer_ack",StreamLeaderElected:"stream_leader_elected",StreamQuorumLost:"stream_quorum_lost",ConsumerLeaderElected:"consumer_leader_elected",ConsumerQuorumLost:"consumer_quorum_lost"};hn1.JsHeaders={StreamSourceHdr:"Nats-Stream-Source",LastConsumerSeqHdr:"Nats-Last-Consumer",LastStreamSeqHdr:"Nats-Last-Stream",ConsumerStalledHdr:"Nats-Consumer-Stalled",MessageSizeHdr:"Nats-Msg-Size",RollupHdr:"Nats-Rollup",RollupValueSubject:"sub",RollupValueAll:"all",PendingMessagesHdr:"Nats-Pending-Messages",PendingBytesHdr:"Nats-Pending-Bytes",RequiredApiLevel:"Nats-Required-Api-Level"};hn1.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};hn1.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var dY=_((cn1)=>{Object.defineProperty(cn1,"__esModule",{value:!0});cn1.TD=cn1.TE=cn1.Empty=void 0;cn1.encode=Sl6;cn1.decode=Cl6;cn1.Empty=new Uint8Array(0);cn1.TE=new TextEncoder;cn1.TD=new TextDecoder;function Vl6(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let X=new Uint8Array(Z),Q=0;for(let Y=0;Y<$.length;Y++)X.set($[Y],Q),Q+=$[Y].length;return X}function Sl6(...$){let Z=[];for(let X=0;X<$.length;X++)Z.push(cn1.TE.encode($[X]));if(Z.length===0)return cn1.Empty;if(Z.length===1)return Z[0];return Vl6(...Z)}function Cl6($){if(!$||$.length===0)return"";return cn1.TD.decode($)}});var mY=_((mn1)=>{Object.defineProperty(mn1,"__esModule",{value:!0});mn1.errors=mn1.PermissionViolationError=mn1.NoRespondersError=mn1.TimeoutError=mn1.RequestError=mn1.ProtocolError=mn1.ConnectionError=mn1.DrainingConnectionError=mn1.ClosedConnectionError=mn1.AuthorizationError=mn1.UserAuthenticationExpiredError=mn1.InvalidOperationError=mn1.InvalidArgumentError=mn1.InvalidSubjectError=void 0;class Nd0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}mn1.InvalidSubjectError=Nd0;class J90 extends Error{constructor($,Z){super($,Z);this.name="InvalidArgumentError"}static format($,Z,X){if(Array.isArray(Z)&&Z.length>1)Z=Z[0];if(Array.isArray($))$=$.map((Q)=>`'${Q}'`),$=$.join(",");else $=`'${$}'`;return new J90(`${$} ${Z}`,X)}}mn1.InvalidArgumentError=J90;class Fd0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}mn1.InvalidOperationError=Fd0;class K90 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new K90($);return null}}mn1.UserAuthenticationExpiredError=K90;class W90 extends Error{constructor($,Z){super($,Z);this.name="AuthorizationError"}static parse($){let Z=["authorization violation","account authentication expired","authentication timeout"],X=$.toLowerCase();for(let Q=0;Q<Z.length;Q++)if(X.indexOf(Z[Q])!==-1)return new W90($);return null}}mn1.AuthorizationError=W90;class wd0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}mn1.ClosedConnectionError=wd0;class Bd0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}mn1.DrainingConnectionError=Bd0;class Od0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}mn1.ConnectionError=Od0;class Ld0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}mn1.ProtocolError=Ld0;class Dd0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof H90}}mn1.RequestError=Dd0;class Ed0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}mn1.TimeoutError=Ed0;class H90 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}mn1.NoRespondersError=H90;class U90 extends Error{operation;subject;queue;constructor($,Z,X,Q,Y){super($,Y);this.name="PermissionViolationError",this.operation=Z,this.subject=X,this.queue=Q}static parse($){if(($?$.toLowerCase():"").indexOf("permissions violation")===-1)return null;let X="publish",Q="",Y=void 0,G=$.match(/(Publish|Subscription) to "(\S+)"/);if(G){if(X=G[1].toLowerCase(),Q=G[2],X==="subscription"){let J=$.match(/using queue "(\S+)"/);if(J)Y=J[1]}}return new U90($,X,Q,Y)}}mn1.PermissionViolationError=U90;mn1.errors={AuthorizationError:W90,ClosedConnectionError:wd0,ConnectionError:Od0,DrainingConnectionError:Bd0,InvalidArgumentError:J90,InvalidOperationError:Fd0,InvalidSubjectError:Nd0,NoRespondersError:H90,PermissionViolationError:U90,ProtocolError:Ld0,RequestError:Dd0,TimeoutError:Ed0,UserAuthenticationExpiredError:K90}});var LJ=_((on1)=>{Object.defineProperty(on1,"__esModule",{value:!0});on1.SimpleMutex=on1.Perf=void 0;on1.extend=tl6;on1.render=ol6;on1.timeout=rl6;on1.delay=al6;on1.deadline=sl6;on1.deferred=jd0;on1.debugDeferred=el6;on1.shuffle=$d6;on1.collect=Zd6;on1.jitter=tn1;on1.backoff=Xd6;on1.nanos=Qd6;on1.millis=Yd6;on1.randomToken=Kd6;var pl6=dY(),zd0=mY();function tl6($,...Z){for(let X=0;X<Z.length;X++){let Q=Z[X];Object.keys(Q).forEach(function(Y){$[Y]=Q[Y]})}return $}function ol6($){return pl6.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function rl6($,Z=!0){let X=Z?new zd0.TimeoutError:null,Q,Y,G=new Promise((J,K)=>{Q={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(X===null)K(new zd0.TimeoutError);else K(X)},$)});return Object.assign(G,Q)}function al6($=0){let Z,X=new Promise((Q)=>{let Y=setTimeout(()=>{Q()},$);Z={cancel:()=>{if(Y)clearTimeout(Y),Q()}}});return Object.assign(X,Z)}async function sl6($,Z=1000){let X=jd0(),Q=setTimeout(()=>{X.reject(new zd0.TimeoutError)},Z);try{return await Promise.race([$,X])}finally{clearTimeout(Q)}}function jd0(){let $={},Z=new Promise((X,Q)=>{$={resolve:X,reject:Q}});return Object.assign(Z,$)}function el6(){let $={},Z=new Promise((X,Q)=>{$={resolve:(Y)=>{console.trace("resolve",Y),X(Y)},reject:(Y)=>{console.trace("reject"),Q(Y)}}});return Object.assign(Z,$)}function $d6($){for(let Z=$.length-1;Z>0;Z--){let X=Math.floor(Math.random()*(Z+1));[$[Z],$[X]]=[$[X],$[Z]]}return $}async function Zd6($){let Z=[];for await(let X of $)Z.push(X);return Z}class nn1{timers;measures;constructor(){this.timers=new Map,this.measures=new Map}mark($){this.timers.set($,performance.now())}measure($,Z,X){let Q=this.timers.get(Z);if(Q===void 0)throw Error(`${Z} is not defined`);let Y=this.timers.get(X);if(Y===void 0)throw Error(`${X} is not defined`);this.measures.set($,Y-Q)}getEntries(){let $=[];return this.measures.forEach((Z,X)=>{$.push({name:X,duration:Z})}),$}}on1.Perf=nn1;class pn1{max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=jd0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}on1.SimpleMutex=pn1;function tn1($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function Xd6($=[0,250,250,500,500,3000,5000]){if(!Array.isArray($))$=[0,250,250,500,500,3000,5000];let Z=$.length-1;return{backoff(X){return tn1(X>Z?$[Z]:$[X])}}}function Qd6($){return $*1e6}function Yd6($){return Math.floor($/1e6)}var Gd6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",fU=new Uint8Array(62);for(let $=0;$<62;$++)fU[$]=Gd6.charCodeAt($);var Jd6=218340105584896;function Kd6(){let $=Math.floor(Math.random()*Jd6),Z=$%62,X=fU[Z];$=($-Z)/62,Z=$%62;let Q=fU[Z];$=($-Z)/62,Z=$%62;let Y=fU[Z];$=($-Z)/62,Z=$%62;let G=fU[Z];$=($-Z)/62,Z=$%62;let J=fU[Z];$=($-Z)/62,Z=$%62;let K=fU[Z];$=($-Z)/62,Z=$%62;let W=fU[Z];$=($-Z)/62;let H=fU[$];return String.fromCharCode(X,Q,Y,G,J,K,W,H)}});var Qp1=_((Zp1)=>{Object.defineProperty(Zp1,"__esModule",{value:!0});Zp1.nuid=Zp1.NuidImpl=void 0;var Td6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",Rw=62,F90=12,en1=10,an1=33,Rd6=333,sn1=F90+en1,Ad0=new Uint8Array(Rw);for(let $=0;$<Rw;$++)Ad0[$]=Td6.charCodeAt($);var N90=4294967296,$p1=BigInt(Rw)**BigInt(en1),bm=Number($p1/(1n<<32n)),Pd0=Number($p1%(1n<<32n));function Id6($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function qd6($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else Id6($)}class Td0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(sn1),this.cbuf=new Uint8Array(F90),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(bm+1)),this.seqLo=Math.floor(Math.random()*N90);while($++<8&&this.seqHi===bm&&this.seqLo>=Pd0);if(this.seqHi===bm&&this.seqLo>=Pd0)this.seqLo=0;this.inc=Math.random()*(Rd6-an1)+an1|0}setPre(){qd6(this.cbuf);for(let $=0;$<F90;$++)this.buf[$]=Ad0[this.cbuf[$]%Rw]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let X=sn1-1;X>=F90;X--){let Q=Math.floor($/Rw),G=($-Q*Rw)*N90+Z,J=Math.floor(G/Rw),K=G-J*Rw;this.buf[X]=Ad0[K],$=Q,Z=J}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=N90)this.seqLo-=N90,this.seqHi+=1;if(this.seqHi>bm||this.seqHi===bm&&this.seqLo>=Pd0)this.setPre(),this.initSeqAndInc();this.fillSeq();let $=this.buf;return String.fromCharCode($[0],$[1],$[2],$[3],$[4],$[5],$[6],$[7],$[8],$[9],$[10],$[11],$[12],$[13],$[14],$[15],$[16],$[17],$[18],$[19],$[20],$[21])}reset(){this.init()}}Zp1.NuidImpl=Td0;Zp1.nuid=new Td0});var Kp1=_((Gp1)=>{Object.defineProperty(Gp1,"__esModule",{value:!0});Gp1.nuid=Gp1.Nuid=void 0;var Yp1=Qp1();Gp1.Nuid=Yp1.NuidImpl;Gp1.nuid=Yp1.nuid});var B90=_((w90)=>{Object.defineProperty(w90,"__esModule",{value:!0});w90.nuid=w90.Nuid=void 0;var Wp1=Kp1();Object.defineProperty(w90,"Nuid",{enumerable:!0,get:function(){return Wp1.Nuid}});Object.defineProperty(w90,"nuid",{enumerable:!0,get:function(){return Wp1.nuid}})});var Iw=_((Hp1)=>{Object.defineProperty(Hp1,"__esModule",{value:!0});Hp1.DEFAULT_HOST=Hp1.DEFAULT_PORT=Hp1.Match=void 0;Hp1.syncIterator=_d6;Hp1.createInbox=vd6;var Sd6=B90(),Cd6=mY();Hp1.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function _d6($){let Z=$[Symbol.asyncIterator]();return{async next(){let X=await Z.next();if(X.done)return Promise.resolve(null);return Promise.resolve(X.value)}}}function vd6($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw Cd6.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${Sd6.nuid.next()}`}Hp1.DEFAULT_PORT=4222;Hp1.DEFAULT_HOST="127.0.0.1"});var ym=_((wp1)=>{Object.defineProperty(wp1,"__esModule",{value:!0});wp1.DataBuffer=void 0;var Np1=dY();class Fp1{buffers;byteLength;constructor(){this.buffers=[],this.byteLength=0}static concat(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let X=new Uint8Array(Z),Q=0;for(let Y=0;Y<$.length;Y++)X.set($[Y],Q),Q+=$[Y].length;return X}static fromAscii($){if(!$)$="";return Np1.TE.encode($)}static toAscii($){return Np1.TD.decode($)}reset(){this.buffers.length=0,this.byteLength=0}pack(){if(this.buffers.length>1){let $=new Uint8Array(this.byteLength),Z=0;for(let X=0;X<this.buffers.length;X++)$.set(this.buffers[X],Z),Z+=this.buffers[X].length;this.buffers.length=0,this.buffers.push($)}}shift(){if(this.buffers.length){let $=this.buffers.shift();if($)return this.byteLength-=$.length,$}return new Uint8Array(0)}drain($){if(this.buffers.length){this.pack();let Z=this.buffers.pop();if(Z){let X=this.byteLength;if($===void 0||$>X)$=X;let Q=Z.subarray(0,$);if(X>$)this.buffers.push(Z.subarray($));return this.byteLength=X-$,Q}}return new Uint8Array(0)}fill($,...Z){if($)this.buffers.push($),this.byteLength+=$.length;for(let X=0;X<Z.length;X++)if(Z[X]&&Z[X].length)this.buffers.push(Z[X]),this.byteLength+=Z[X].length}peek(){if(this.buffers.length)return this.pack(),this.buffers[0];return new Uint8Array(0)}size(){return this.byteLength}length(){return this.buffers.length}}wp1.DataBuffer=Fp1});var eD=_((Lp1)=>{Object.defineProperty(Lp1,"__esModule",{value:!0});Lp1.LF=Lp1.CR=Lp1.CRLF=Lp1.CR_LF_LEN=Lp1.CR_LF=void 0;Lp1.setTransportFactory=cd6;Lp1.defaultPort=ld6;Lp1.getUrlParseFn=dd6;Lp1.newTransport=md6;Lp1.getResolveFn=id6;Lp1.protoLen=Op1;Lp1.extractProtocolMessage=nd6;var gd6=dY(),hd6=Iw(),ud6=ym(),iY;function cd6($){iY=$}function ld6(){return iY!==void 0&&iY.defaultPort!==void 0?iY.defaultPort:hd6.DEFAULT_PORT}function dd6(){return iY!==void 0&&iY.urlParseFn?iY.urlParseFn:void 0}function md6(){if(!iY||typeof iY.factory!=="function")throw Error("transport fn is not set");return iY.factory()}function id6(){return iY!==void 0&&iY.dnsResolveFn?iY.dnsResolveFn:void 0}Lp1.CR_LF=`\r
|
|
1336
1336
|
`;Lp1.CR_LF_LEN=Lp1.CR_LF.length;Lp1.CRLF=ud6.DataBuffer.fromAscii(Lp1.CR_LF);Lp1.CR=new Uint8Array(Lp1.CRLF)[0];Lp1.LF=new Uint8Array(Lp1.CRLF)[1];function Op1($){for(let Z=0;Z<$.length;Z++){let X=Z+1;if($.byteLength>X&&$[Z]===Lp1.CR&&$[X]===Lp1.LF)return X+1}return 0}function nd6($){let Z=Op1($);if(Z>0){let Q=new Uint8Array($).slice(0,Z);return gd6.TD.decode(Q)}return""}});var kd0=_((Rp1)=>{Object.defineProperty(Rp1,"__esModule",{value:!0});Rp1.ipV4=Pp1;Rp1.isIP=Qm6;Rp1.parseIP=Ap1;var gm=4,$E=16,O90=48,jp1=57,Ep1=65,Zm6=70,zp1=97,Xm6=102,Md0=16777215;function Pp1($,Z,X,Q){let Y=new Uint8Array($E);return[0,0,0,0,0,0,0,0,0,0,255,255].forEach((J,K)=>{Y[K]=J}),Y[12]=$,Y[13]=Z,Y[14]=X,Y[15]=Q,Y}function Qm6($){return Ap1($)!==void 0}function Ap1($){for(let Z=0;Z<$.length;Z++)switch($[Z]){case".":return Tp1($);case":":return Ym6($)}return}function Tp1($){let Z=new Uint8Array(gm);for(let X=0;X<gm;X++){if($.length===0)return;if(X>0){if($[0]!==".")return;$=$.substring(1)}let{n:Q,c:Y,ok:G}=Gm6($);if(!G||Q>255)return;$=$.substring(Y),Z[X]=Q}return Pp1(Z[0],Z[1],Z[2],Z[3])}function Ym6($){let Z=new Uint8Array($E),X=-1;if($.length>=2&&$[0]===":"&&$[1]===":"){if(X=0,$=$.substring(2),$.length===0)return Z}let Q=0;while(Q<$E){let{n:Y,c:G,ok:J}=Jm6($);if(!J||Y>65535)return;if(G<$.length&&$[G]==="."){if(X<0&&Q!=$E-gm)return;if(Q+gm>$E)return;let K=Tp1($);if(K===void 0)return;Z[Q]=K[12],Z[Q+1]=K[13],Z[Q+2]=K[14],Z[Q+3]=K[15],$="",Q+=gm;break}if(Z[Q]=Y>>8,Z[Q+1]=Y,Q+=2,$=$.substring(G),$.length===0)break;if($[0]!==":"||$.length==1)return;if($=$.substring(1),$[0]===":"){if(X>=0)return;if(X=Q,$=$.substring(1),$.length===0)break}}if($.length!==0)return;if(Q<$E){if(X<0)return;let Y=$E-Q;for(let G=Q-1;G>=X;G--)Z[G+Y]=Z[G];for(let G=X+Y-1;G>=X;G--)Z[G]=0}else if(X>=0)return;return Z}function Gm6($){let Z=0,X=0;for(Z=0;Z<$.length&&O90<=$.charCodeAt(Z)&&$.charCodeAt(Z)<=jp1;Z++)if(X=X*10+($.charCodeAt(Z)-O90),X>=Md0)return{n:Md0,c:Z,ok:!1};if(Z===0)return{n:0,c:0,ok:!1};return{n:X,c:Z,ok:!0}}function Jm6($){let Z=0,X=0;for(X=0;X<$.length;X++){if(O90<=$.charCodeAt(X)&&$.charCodeAt(X)<=jp1)Z*=16,Z+=$.charCodeAt(X)-O90;else if(zp1<=$.charCodeAt(X)&&$.charCodeAt(X)<=Xm6)Z*=16,Z+=$.charCodeAt(X)-zp1+10;else if(Ep1<=$.charCodeAt(X)&&$.charCodeAt(X)<=Zm6)Z*=16,Z+=$.charCodeAt(X)-Ep1+10;else break;if(Z>=Md0)return{n:0,c:X,ok:!1}}if(X===0)return{n:0,c:X,ok:!1};return{n:Z,c:X,ok:!0}}});var xd0=_((qp1)=>{Object.defineProperty(qp1,"__esModule",{value:!0});qp1.Servers=qp1.ServerImpl=void 0;qp1.isIPV4OrHostname=Ip1;qp1.hostPort=vd0;var Vd0=eD(),Sd0=LJ(),Cd0=kd0(),Um6=Iw(),Nm6=mY();function Ip1($){if($.indexOf("[")!==-1||$.indexOf("::")!==-1)return!1;if($.indexOf(".")!==-1)return!0;if($.split(":").length<=2)return!0;return!1}function _d0($){return!Ip1($)}function Fm6($){let X=$.toUpperCase().indexOf("::FFFF:");if(X!==-1&&$.indexOf(".")!==-1){let Q=$.substring(X+7);return Q=Q.replace("[",""),Q.replace("]","")}return $}function vd0($){if($=$.trim(),$.match(/^(.*:\/\/)(.*)/m))$=$.replace(/^(.*:\/\/)(.*)/gm,"$2");if($=Fm6($),_d0($)&&$.indexOf("[")===-1)$=`[${$}]`;let Z=_d0($)?$.match(/(]:)(\d+)/):$.match(/(:)(\d+)/),X=Z&&Z.length===3&&Z[1]&&Z[2]?parseInt(Z[2]):Um6.DEFAULT_PORT,Y=new URL(`${X===80?"https":"http"}://${$}`);Y.port=`${X}`;let G=Y.hostname;if(G.charAt(0)==="[")G=G.substring(1,G.length-1);return{listen:Y.host,hostname:G,port:X}}class Gb{src;listen;hostname;port;didConnect;reconnects;lastConnect;gossiped;tlsName;resolves;constructor($,Z=!1){this.src=$,this.tlsName="";let X=vd0($);this.listen=X.listen,this.hostname=X.hostname,this.port=X.port,this.didConnect=!1,this.reconnects=0,this.lastConnect=0,this.gossiped=Z}toString(){return this.listen}async resolve($){if(!$.fn||$.resolve===!1)return[this];let Z=[];if((0,Cd0.isIP)(this.hostname))return[this];else{let X=await $.fn(this.hostname);if($.debug)console.log(`resolve ${this.hostname} = ${X.join(",")}`);for(let Q of X){let Y=this.port===80?"https":"http",G=new URL(`${Y}://${_d0(Q)?"["+Q+"]":Q}`);G.port=`${this.port}`;let J=new Gb(G.host,!1);J.tlsName=this.hostname,Z.push(J)}}if($.randomize)(0,Sd0.shuffle)(Z);return this.resolves=Z,Z}}qp1.ServerImpl=Gb;class L90{firstSelect;servers;currentServer;tlsName;randomize;constructor($={}){this.firstSelect=!0,this.servers=[],this.tlsName="",this.randomize=$.randomize||!1}setServers($){if(!Array.isArray($)||$.length===0)throw Nm6.InvalidArgumentError.format("servers","cannot be empty");let Z=(0,Vd0.getUrlParseFn)(),X=new Map;for(let Y of this.servers)X.set(Y.listen,Y);let Q=[];for(let Y of $){Y=Z?Z(Y):Y;let{listen:G}=vd0(Y),J=X.get(G);if(J)J.gossiped=!1,Q.push(J);else Q.push(new Gb(Y))}if(this.randomize)(0,Sd0.shuffle)(Q);if(this.servers=Q,this.currentServer===void 0||!Q.includes(this.currentServer))this.currentServer=Q[0],this.firstSelect=!0}clear(){this.servers.length=0}updateTLSName(){let $=this.getCurrentServer();if(!(0,Cd0.isIP)($.hostname))this.tlsName=$.hostname,this.servers.forEach((Z)=>{if(Z.gossiped)Z.tlsName=this.tlsName})}getCurrentServer(){return this.currentServer}addServer($,Z=!1){let X=(0,Vd0.getUrlParseFn)();$=X?X($):$;let Q=new Gb($,Z);if((0,Cd0.isIP)(Q.hostname))Q.tlsName=this.tlsName;this.servers.push(Q)}selectServer(){if(this.firstSelect)return this.firstSelect=!1,this.currentServer;let $=this.servers.shift();if($)this.servers.push($),this.currentServer=$;return $}removeCurrentServer(){this.removeServer(this.currentServer)}removeServer($){if($){let Z=this.servers.indexOf($);this.servers.splice(Z,1)}}snapshot(){return L90.freezeAll(this.servers)}snapshotForHandler(){let $=this.currentServer;if(!$)return this.snapshot();let Z=this.servers.indexOf($);if(Z<=0)return this.snapshot();return L90.freezeAll([$,...this.servers.slice(0,Z),...this.servers.slice(Z+1)])}static freezeAll($){return $.map((Z)=>Object.freeze({hostname:Z.hostname,port:Z.port,listen:Z.listen,src:Z.src,tlsName:Z.tlsName,reconnects:Z.reconnects,lastConnect:Z.lastConnect,gossiped:Z.gossiped,didConnect:Z.didConnect}))}find($){return this.servers.find((Z)=>Z.listen===$.listen)}setCurrent($){this.currentServer=$}length(){return this.servers.length}next(){return this.servers.length?this.servers[0]:void 0}getServers(){return this.servers}update($,Z){let X=[],Q=[],Y=(0,Vd0.getUrlParseFn)(),G=new Map;if($.connect_urls&&$.connect_urls.length>0)$.connect_urls.forEach((K)=>{K=Y?Y(K,Z):K;let W=new Gb(K,!0);G.set(K,W)});let J=[];if(this.servers.forEach((K,W)=>{let H=K.listen;if(K.gossiped&&this.currentServer.listen!==H&&G.get(H)===void 0)J.push(W);G.delete(H)}),J.reverse(),J.forEach((K)=>{let W=this.servers.splice(K,1);Q=Q.concat(W[0].listen)}),G.forEach((K,W)=>{this.servers.push(K),X.push(W)}),this.randomize&&X.length>0){let K=this.currentServer,W=this.servers.filter((H)=>H!==K);(0,Sd0.shuffle)(W),this.servers=K?[K,...W]:W}return{added:X,deleted:Q}}}qp1.Servers=L90});var D90=_((Sp1)=>{Object.defineProperty(Sp1,"__esModule",{value:!0});Sp1.QueuedIteratorImpl=void 0;var fd0=LJ(),kp1=mY();class Vp1{inflight;processed;received;noIterator;iterClosed;done;signal;yields;filtered;pendingFiltered;ctx;_data;err;time;profile;yielding;didBreak;constructor(){this.inflight=0,this.filtered=0,this.pendingFiltered=0,this.processed=0,this.received=0,this.noIterator=!1,this.done=!1,this.signal=(0,fd0.deferred)(),this.yields=[],this.iterClosed=(0,fd0.deferred)(),this.time=0,this.yielding=!1,this.didBreak=!1,this.profile=!1}[Symbol.asyncIterator](){return this.iterate()}push($){if(this.done)return;if(this.didBreak){if(typeof $==="function"){let Z=$;try{Z()}catch(X){}}return}if(typeof $==="function")this.pendingFiltered++;this.yields.push($),this.signal.resolve()}async*iterate(){if(this.noIterator)throw new kp1.InvalidOperationError("iterator cannot be used when a callback is registered");if(this.yielding)throw new kp1.InvalidOperationError("iterator is already yielding");this.yielding=!0;try{while(!0){if(this.yields.length===0)await this.signal;if(this.err)throw this.err;let $=this.yields;this.inflight=$.length,this.yields=[];for(let Z=0;Z<$.length;Z++){if(typeof $[Z]==="function"){this.pendingFiltered--;let Q=$[Z];try{Q()}catch(Y){throw Y}if(this.err)throw this.err;continue}this.processed++,this.inflight--;let X=this.profile?Date.now():0;yield $[Z],this.time=this.profile?Date.now()-X:0}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,fd0.deferred)()}}finally{this.didBreak=!0,this.stop()}}stop($){if(this.done)return;this.err=$,this.done=!0,this.signal.resolve(),this.iterClosed.resolve($)}getProcessed(){return this.noIterator?this.received:this.processed}getPending(){return this.yields.length+this.inflight-this.pendingFiltered}getReceived(){return this.received-this.filtered}}Sp1.QueuedIteratorImpl=Vp1});var bd0=_((xp1)=>{Object.defineProperty(xp1,"__esModule",{value:!0});xp1.MuxSubscription=void 0;var Lm6=Iw(),_p1=mY();class vp1{baseInbox;reqs;constructor(){this.reqs=new Map}size(){return this.reqs.size}init($){return this.baseInbox=`${(0,Lm6.createInbox)($)}.`,this.baseInbox}add($){if(!isNaN($.received))$.received=0;this.reqs.set($.token,$)}get($){return this.reqs.get($)}cancel($){this.reqs.delete($.token)}getToken($){let Z=$.subject||"";if(Z.indexOf(this.baseInbox)===0)return Z.substring(this.baseInbox.length);return null}all(){return Array.from(this.reqs.values())}handleError($,Z){if($)return this.all().forEach((X)=>{X.resolver(Z,{})}),!0;if(Z.operation==="publish"){let X=this.all().find((Q)=>{return Q.requestSubject===Z.subject});if(X)return X.resolver(Z,{}),!0}return!1}dispatcher(){return($,Z)=>{let X=this.getToken(Z);if(X){let Q=this.get(X);if(Q){if($===null)$=Z?.data?.length===0&&Z.headers?.code===503?new _p1.NoRespondersError(Q.requestSubject):null;Q.resolver($,Z)}}}}close(){let $=new _p1.RequestError("connection closed");this.reqs.forEach((Z)=>{Z.resolver($,{})})}}xp1.MuxSubscription=vp1});var yd0=_((yp1)=>{Object.defineProperty(yp1,"__esModule",{value:!0});yp1.Heartbeat=void 0;var Dm6=LJ();class bp1{ph;interval;maxOut;timer;pendings;constructor($,Z,X){this.ph=$,this.interval=Z,this.maxOut=X,this.pendings=[]}start(){this.cancel(),this._schedule()}cancel($){if(this.timer)clearTimeout(this.timer),this.timer=void 0;if(this._reset(),$)this.ph.disconnect()}_schedule(){this.timer=setTimeout(()=>{if(this.ph.dispatchStatus({type:"ping",pendingPings:this.pendings.length+1}),this.pendings.length===this.maxOut){this.cancel(!0);return}let $=(0,Dm6.deferred)();this.ph.flush($).then(()=>{this._reset()}).catch(()=>{this.cancel()}),this.pendings.push($),this._schedule()},this.interval)}_reset(){this.pendings=this.pendings.filter(($)=>{return $.resolve(),!1})}}yp1.Heartbeat=bp1});var ud0=_((lp1)=>{Object.defineProperty(lp1,"__esModule",{value:!0});lp1.DenoBuffer=lp1.MAX_SIZE=lp1.AssertionError=void 0;lp1.assert=up1;lp1.concat=cp1;lp1.append=zm6;lp1.readAll=jm6;lp1.writeAll=Pm6;var Em6=dY();class gd0 extends Error{constructor($){super($);this.name="AssertionError"}}lp1.AssertionError=gd0;function up1($,Z="Assertion failed."){if(!$)throw new gd0(Z)}var hp1=32768;lp1.MAX_SIZE=4294967294;function E90($,Z,X=0){let Q=Z.byteLength-X;if($.byteLength>Q)$=$.subarray(0,Q);return Z.set($,X),$.byteLength}function cp1($,Z){if($===void 0&&Z===void 0)return new Uint8Array(0);if($===void 0)return Z;if(Z===void 0)return $;let X=new Uint8Array($.length+Z.length);return X.set($,0),X.set(Z,$.length),X}function zm6($,Z){return cp1($,Uint8Array.of(Z))}class hd0{_buf;_off;constructor($){if(this._off=0,$==null){this._buf=new Uint8Array(0);return}this._buf=new Uint8Array($)}bytes($={copy:!0}){if($.copy===!1)return this._buf.subarray(this._off);return this._buf.slice(this._off)}empty(){return this._buf.byteLength<=this._off}get length(){return this._buf.byteLength-this._off}get capacity(){return this._buf.buffer.byteLength}truncate($){if($===0){this.reset();return}if($<0||$>this.length)throw Error("bytes.Buffer: truncation out of range");this._reslice(this._off+$)}reset(){this._reslice(0),this._off=0}_tryGrowByReslice($){let Z=this._buf.byteLength;if($<=this.capacity-Z)return this._reslice(Z+$),Z;return-1}_reslice($){up1($<=this._buf.buffer.byteLength),this._buf=new Uint8Array(this._buf.buffer,0,$)}readByte(){let $=new Uint8Array(1);if(this.read($))return $[0];return null}read($){if(this.empty()){if(this.reset(),$.byteLength===0)return 0;return null}let Z=E90(this._buf.subarray(this._off),$);return this._off+=Z,Z}writeByte($){return this.write(Uint8Array.of($))}writeString($){return this.write(Em6.TE.encode($))}write($){let Z=this._grow($.byteLength);return E90($,this._buf,Z)}_grow($){let Z=this.length;if(Z===0&&this._off!==0)this.reset();let X=this._tryGrowByReslice($);if(X>=0)return X;let Q=this.capacity;if($<=Math.floor(Q/2)-Z)E90(this._buf.subarray(this._off),this._buf);else if(Q+$>lp1.MAX_SIZE)throw Error("The buffer cannot be grown beyond the maximum size.");else{let Y=new Uint8Array(Math.min(2*Q+$,lp1.MAX_SIZE));E90(this._buf.subarray(this._off),Y),this._buf=Y}return this._off=0,this._reslice(Math.min(Z+$,lp1.MAX_SIZE)),Z}grow($){if($<0)throw Error("Buffer._grow: negative count");let Z=this._grow($);this._reslice(Z)}readFrom($){let Z=0,X=new Uint8Array(hp1);while(!0){let Q=this.capacity-this.length<hp1,Y=Q?X:new Uint8Array(this._buf.buffer,this.length),G=$.read(Y);if(G===null)return Z;if(Q)this.write(Y.subarray(0,G));else this._reslice(this.length+G);Z+=G}}}lp1.DenoBuffer=hd0;function jm6($){let Z=new hd0;return Z.readFrom($),Z.bytes()}function Pm6($,Z){let X=0;while(X<Z.length)X+=$.write(Z.subarray(X))}});var dd0=_((pp1)=>{Object.defineProperty(pp1,"__esModule",{value:!0});pp1.cc=pp1.State=pp1.Parser=pp1.Kind=void 0;pp1.describe=km6;var cd0=ud0(),ld0=dY();pp1.Kind={OK:0,ERR:1,MSG:2,INFO:3,PING:4,PONG:5};function km6($){let Z,X="";switch($.kind){case pp1.Kind.MSG:Z="MSG";break;case pp1.Kind.OK:Z="OK";break;case pp1.Kind.ERR:Z="ERR",X=ld0.TD.decode($.data);break;case pp1.Kind.PING:Z="PING";break;case pp1.Kind.PONG:Z="PONG";break;case pp1.Kind.INFO:Z="INFO",X=ld0.TD.decode($.data)}return`${Z}: ${X}`}function mp1(){let $={};return $.sid=-1,$.hdr=-1,$.size=-1,$}var ip1=48,Vm6=57,Jb=67108864;class np1{dispatcher;state;as;drop;hdr;ma;argBuf;msgBuf;constructor($){this.dispatcher=$,this.state=pp1.State.OP_START,this.as=0,this.drop=0,this.hdr=0}parse($){let Z;for(Z=0;Z<$.length;Z++){let X=$[Z];switch(this.state){case pp1.State.OP_START:switch(X){case pp1.cc.M:case pp1.cc.m:this.state=pp1.State.OP_M,this.hdr=-1,this.ma=mp1();break;case pp1.cc.H:case pp1.cc.h:this.state=pp1.State.OP_H,this.hdr=0,this.ma=mp1();break;case pp1.cc.P:case pp1.cc.p:this.state=pp1.State.OP_P;break;case pp1.cc.PLUS:this.state=pp1.State.OP_PLUS;break;case pp1.cc.MINUS:this.state=pp1.State.OP_MINUS;break;case pp1.cc.I:case pp1.cc.i:this.state=pp1.State.OP_I;break;default:throw this.fail($.subarray(Z))}break;case pp1.State.OP_H:switch(X){case pp1.cc.M:case pp1.cc.m:this.state=pp1.State.OP_M;break;default:throw this.fail($.subarray(Z))}break;case pp1.State.OP_M:switch(X){case pp1.cc.S:case pp1.cc.s:this.state=pp1.State.OP_MS;break;default:throw this.fail($.subarray(Z))}break;case pp1.State.OP_MS:switch(X){case pp1.cc.G:case pp1.cc.g:this.state=pp1.State.OP_MSG;break;default:throw this.fail($.subarray(Z))}break;case pp1.State.OP_MSG:switch(X){case pp1.cc.SPACE:case pp1.cc.TAB:this.state=pp1.State.OP_MSG_SPC;break;default:throw this.fail($.subarray(Z))}break;case pp1.State.OP_MSG_SPC:switch(X){case pp1.cc.SPACE:case pp1.cc.TAB:continue;default:this.state=pp1.State.MSG_ARG,this.as=Z}break;case pp1.State.MSG_ARG:switch(X){case pp1.cc.CR:this.drop=1;break;case pp1.cc.NL:{let Q=this.argBuf?this.argBuf.bytes():$.subarray(this.as,Z-this.drop);this.processMsgArgs(Q),this.drop=0,this.as=Z+1,this.state=pp1.State.MSG_PAYLOAD,Z=this.as+this.ma.size-1;break}default:if(this.argBuf)this.argBuf.writeByte(X)}break;case pp1.State.MSG_PAYLOAD:if(this.msgBuf)if(this.msgBuf.length>=this.ma.size){let Q=this.msgBuf.bytes({copy:!1});this.dispatcher.push({kind:pp1.Kind.MSG,msg:this.ma,data:Q}),this.argBuf=void 0,this.msgBuf=void 0,this.state=pp1.State.MSG_END}else{let Q=this.ma.size-this.msgBuf.length,Y=$.length-Z;if(Y<Q)Q=Y;if(Q>0)this.msgBuf.write($.subarray(Z,Z+Q)),Z=Z+Q-1;else this.msgBuf.writeByte(X)}else if(Z-this.as>=this.ma.size)this.dispatcher.push({kind:pp1.Kind.MSG,msg:this.ma,data:$.subarray(this.as,Z)}),this.argBuf=void 0,this.msgBuf=void 0,this.state=pp1.State.MSG_END;break;case pp1.State.MSG_END:switch(X){case pp1.cc.NL:this.drop=0,this.as=Z+1,this.state=pp1.State.OP_START;break;default:continue}break;case pp1.State.OP_PLUS:switch(X){case pp1.cc.O:case pp1.cc.o:this.state=pp1.State.OP_PLUS_O;break;default:throw this.fail($.subarray(Z))}break;case pp1.State.OP_PLUS_O:switch(X){case pp1.cc.K:case pp1.cc.k:this.state=pp1.State.OP_PLUS_OK;break;default:throw this.fail($.subarray(Z))}break;case pp1.State.OP_PLUS_OK:switch(X){case pp1.cc.NL:this.dispatcher.push({kind:pp1.Kind.OK}),this.drop=0,this.state=pp1.State.OP_START;break}break;case pp1.State.OP_MINUS:switch(X){case pp1.cc.E:case pp1.cc.e:this.state=pp1.State.OP_MINUS_E;break;default:throw this.fail($.subarray(Z))}break;case pp1.State.OP_MINUS_E:switch(X){case pp1.cc.R:case pp1.cc.r:this.state=pp1.State.OP_MINUS_ER;break;default:throw this.fail($.subarray(Z))}break;case pp1.State.OP_MINUS_ER:switch(X){case pp1.cc.R:case pp1.cc.r:this.state=pp1.State.OP_MINUS_ERR;break;default:throw this.fail($.subarray(Z))}break;case pp1.State.OP_MINUS_ERR:switch(X){case pp1.cc.SPACE:case pp1.cc.TAB:this.state=pp1.State.OP_MINUS_ERR_SPC;break;default:throw this.fail($.subarray(Z))}break;case pp1.State.OP_MINUS_ERR_SPC:switch(X){case pp1.cc.SPACE:case pp1.cc.TAB:continue;default:this.state=pp1.State.MINUS_ERR_ARG,this.as=Z}break;case pp1.State.MINUS_ERR_ARG:switch(X){case pp1.cc.CR:this.drop=1;break;case pp1.cc.NL:{let Q;if(this.argBuf)Q=this.argBuf.bytes(),this.argBuf=void 0;else Q=$.subarray(this.as,Z-this.drop);this.dispatcher.push({kind:pp1.Kind.ERR,data:Q}),this.drop=0,this.as=Z+1,this.state=pp1.State.OP_START;break}default:if(this.argBuf)this.argBuf.write(Uint8Array.of(X))}break;case pp1.State.OP_P:switch(X){case pp1.cc.I:case pp1.cc.i:this.state=pp1.State.OP_PI;break;case pp1.cc.O:case pp1.cc.o:this.state=pp1.State.OP_PO;break;default:throw this.fail($.subarray(Z))}break;case pp1.State.OP_PO:switch(X){case pp1.cc.N:case pp1.cc.n:this.state=pp1.State.OP_PON;break;default:throw this.fail($.subarray(Z))}break;case pp1.State.OP_PON:switch(X){case pp1.cc.G:case pp1.cc.g:this.state=pp1.State.OP_PONG;break;default:throw this.fail($.subarray(Z))}break;case pp1.State.OP_PONG:switch(X){case pp1.cc.NL:this.dispatcher.push({kind:pp1.Kind.PONG}),this.drop=0,this.state=pp1.State.OP_START;break}break;case pp1.State.OP_PI:switch(X){case pp1.cc.N:case pp1.cc.n:this.state=pp1.State.OP_PIN;break;default:throw this.fail($.subarray(Z))}break;case pp1.State.OP_PIN:switch(X){case pp1.cc.G:case pp1.cc.g:this.state=pp1.State.OP_PING;break;default:throw this.fail($.subarray(Z))}break;case pp1.State.OP_PING:switch(X){case pp1.cc.NL:this.dispatcher.push({kind:pp1.Kind.PING}),this.drop=0,this.state=pp1.State.OP_START;break}break;case pp1.State.OP_I:switch(X){case pp1.cc.N:case pp1.cc.n:this.state=pp1.State.OP_IN;break;default:throw this.fail($.subarray(Z))}break;case pp1.State.OP_IN:switch(X){case pp1.cc.F:case pp1.cc.f:this.state=pp1.State.OP_INF;break;default:throw this.fail($.subarray(Z))}break;case pp1.State.OP_INF:switch(X){case pp1.cc.O:case pp1.cc.o:this.state=pp1.State.OP_INFO;break;default:throw this.fail($.subarray(Z))}break;case pp1.State.OP_INFO:switch(X){case pp1.cc.SPACE:case pp1.cc.TAB:this.state=pp1.State.OP_INFO_SPC;break;default:throw this.fail($.subarray(Z))}break;case pp1.State.OP_INFO_SPC:switch(X){case pp1.cc.SPACE:case pp1.cc.TAB:continue;default:this.state=pp1.State.INFO_ARG,this.as=Z}break;case pp1.State.INFO_ARG:switch(X){case pp1.cc.CR:this.drop=1;break;case pp1.cc.NL:{let Q;if(this.argBuf)Q=this.argBuf.bytes(),this.argBuf=void 0;else Q=$.subarray(this.as,Z-this.drop);this.dispatcher.push({kind:pp1.Kind.INFO,data:Q}),this.drop=0,this.as=Z+1,this.state=pp1.State.OP_START;break}default:if(this.argBuf)this.argBuf.writeByte(X)}break;default:throw this.fail($.subarray(Z))}}if((this.state===pp1.State.MSG_ARG||this.state===pp1.State.MINUS_ERR_ARG||this.state===pp1.State.INFO_ARG)&&!this.argBuf)this.argBuf=new cd0.DenoBuffer($.subarray(this.as,Z-this.drop));if(this.state===pp1.State.MSG_PAYLOAD&&!this.msgBuf){if(!this.argBuf)this.cloneMsgArg();this.msgBuf=new cd0.DenoBuffer($.subarray(this.as))}}cloneMsgArg(){let $=this.ma.subject.length,Z=this.ma.reply?this.ma.reply.length:0,X=new Uint8Array($+Z);if(X.set(this.ma.subject),this.ma.reply)X.set(this.ma.reply,$);if(this.argBuf=new cd0.DenoBuffer(X),this.ma.subject=X.subarray(0,$),this.ma.reply)this.ma.reply=X.subarray($)}processMsgArgs($){if(this.hdr>=0)return this.processHeaderMsgArgs($);let Z=[],X=-1;for(let Q=0;Q<$.length;Q++)switch($[Q]){case pp1.cc.SPACE:case pp1.cc.TAB:case pp1.cc.CR:case pp1.cc.NL:if(X>=0)Z.push($.subarray(X,Q)),X=-1;break;default:if(X<0)X=Q}if(X>=0)Z.push($.subarray(X));switch(Z.length){case 3:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=void 0,this.ma.size=this.protoParseInt(Z[2],Jb);break;case 4:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=Z[2],this.ma.size=this.protoParseInt(Z[3],Jb);break;default:throw this.fail($,"processMsgArgs Parse Error")}if(this.ma.sid<0)throw this.fail($,"processMsgArgs Bad or Missing Sid Error");if(this.ma.size<0)throw this.fail($,"processMsgArgs Bad or Missing Size Error")}fail($,Z=""){if(!Z)Z=`parse error [${this.state}]`;else Z=`${Z} [${this.state}]`;return Error(`${Z}: ${ld0.TD.decode($)}`)}processHeaderMsgArgs($){let Z=[],X=-1;for(let Q=0;Q<$.length;Q++)switch($[Q]){case pp1.cc.SPACE:case pp1.cc.TAB:case pp1.cc.CR:case pp1.cc.NL:if(X>=0)Z.push($.subarray(X,Q)),X=-1;break;default:if(X<0)X=Q}if(X>=0)Z.push($.subarray(X));switch(Z.length){case 4:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=void 0,this.ma.hdr=this.protoParseInt(Z[2],Jb),this.ma.size=this.protoParseInt(Z[3],Jb);break;case 5:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=Z[2],this.ma.hdr=this.protoParseInt(Z[3],Jb),this.ma.size=this.protoParseInt(Z[4],Jb);break;default:throw this.fail($,"processHeaderMsgArgs Parse Error")}if(this.ma.sid<0)throw this.fail($,"processHeaderMsgArgs Bad or Missing Sid Error");if(this.ma.hdr<0||this.ma.hdr>this.ma.size)throw this.fail($,"processHeaderMsgArgs Bad or Missing Header Size Error");if(this.ma.size<0)throw this.fail($,"processHeaderMsgArgs Bad or Missing Size Error")}protoParseInt($,Z){if($.length===0||$.length>15)return-1;let X=0;for(let Q=0;Q<$.length;Q++){if($[Q]<ip1||$[Q]>Vm6)return-1;X=X*10+($[Q]-ip1)}return Z!==void 0&&X>Z?-1:X}}pp1.Parser=np1;pp1.State={OP_START:0,OP_PLUS:1,OP_PLUS_O:2,OP_PLUS_OK:3,OP_MINUS:4,OP_MINUS_E:5,OP_MINUS_ER:6,OP_MINUS_ERR:7,OP_MINUS_ERR_SPC:8,MINUS_ERR_ARG:9,OP_M:10,OP_MS:11,OP_MSG:12,OP_MSG_SPC:13,MSG_ARG:14,MSG_PAYLOAD:15,MSG_END:16,OP_H:17,OP_P:18,OP_PI:19,OP_PIN:20,OP_PING:21,OP_PO:22,OP_PON:23,OP_PONG:24,OP_I:25,OP_IN:26,OP_INF:27,OP_INFO:28,OP_INFO_SPC:29,INFO_ARG:30};pp1.cc={CR:13,E:69,e:101,F:70,f:102,G:71,g:103,H:72,h:104,I:73,i:105,K:75,k:107,M:77,m:109,MINUS:45,N:78,n:110,NL:10,O:79,o:111,P:80,p:112,PLUS:43,R:82,r:114,S:83,s:115,SPACE:32,TAB:9}});var P90=_((op1)=>{Object.defineProperty(op1,"__esModule",{value:!0});op1.MsgHdrsImpl=void 0;op1.canonicalMIMEHeaderKey=id0;op1.headers=_m6;var tp1=dY(),DJ=Iw(),j90=mY();function id0($){let U=!0,N=Array($.length);for(let F=0;F<$.length;F++){let w=$.charCodeAt(F);if(w===58||w<33||w>126)throw j90.InvalidArgumentError.format("header",`'${$[F]}' is not a valid character in a header name`);if(U&&97<=w&&w<=122)w-=32;else if(!U&&65<=w&&w<=90)w+=32;N[F]=w,U=w==45}return String.fromCharCode(...N)}function _m6($=0,Z=""){if($===0&&Z!=="")throw j90.InvalidArgumentError.format("code","is required");else if($>0&&Z==="")throw j90.InvalidArgumentError.format("description","is required");return new Kb($,Z)}var md0="NATS/1.0";class Kb{_code;headers;_description;constructor($=0,Z=""){this._code=$,this._description=Z,this.headers=new Map}[Symbol.iterator](){return this.headers.entries()}size(){return this.headers.size}equals($){if($&&this.headers.size===$.headers.size&&this._code===$._code){for(let[Z,X]of this.headers){let Q=$.values(Z);if(X.length!==Q.length)return!1;let Y=[...X].sort(),G=[...Q].sort();for(let J=0;J<Y.length;J++)if(Y[J]!==G[J])return!1}return!0}return!1}static decode($){let Z=new Kb,Q=tp1.TD.decode($).split(`\r
|
|
1337
1337
|
`),Y=Q[0];if(Y!==md0){let G=Y.replace(md0,"").trim();if(G.length>0){if(Z._code=parseInt(G,10),isNaN(Z._code))Z._code=0;let J=Z._code.toString();G=G.replace(J,""),Z._description=G.trim()}}if(Q.length>=1)Q.slice(1).map((G)=>{if(G){let J=G.indexOf(":");if(J>-1){let K=G.slice(0,J),W=G.slice(J+1).trim();Z.append(K,W)}}});return Z}toString(){if(this.headers.size===0&&this._code===0)return"";let $=md0;if(this._code>0&&this._description!=="")$+=` ${this._code} ${this._description}`;for(let[Z,X]of this.headers)for(let Q=0;Q<X.length;Q++)$=`${$}\r
|
|
1338
1338
|
${Z}: ${X[Q]}`;return`${$}\r
|
package/dist/server/server.js
CHANGED
|
@@ -2726,7 +2726,7 @@ Do NOT require review (requiresReview = false) when the changes are low-risk, su
|
|
|
2726
2726
|
|
|
2727
2727
|
When unsure between the two, lean toward NOT requiring review for small frontend-only diffs, and toward requiring it for anything backend or large.
|
|
2728
2728
|
|
|
2729
|
-
Respond with the structured verdict and a short reason.`,Zv$;var Qv$=B(()=>{k4();iw();J41();o86=W41.object({requiresReview:W41.boolean().describe("true if the changes should go through pull-request review"),reason:W41.string().describe("One short sentence explaining the decision (max ~120 chars)")});Zv$={requiresReview:!1,reason:""}});function e86($){if(!$||$.includes(".."))return!1;return s86.test($)}function Yv$($){let Z=typeof $.__resolveType==="string"?$.__resolveType:null;if(!Z||!e86(Z))return null;let{__resolveType:X,...Q}=$;return{resolveType:Z,payload:Q}}function Gv$($,Z){return`${$.replace(/\/+$/,"")}/deco/invoke/${Z}`}var s86;var Jv$=B(()=>{s86=/^[\w./@-]+$/});function K41($){let Z;try{Z=new URL($)}catch{return null}if(!Z.hostname.endsWith(".localhost"))return null;let X=Z.host;return Z.hostname="127.0.0.1",{url:Z.toString(),hostHeader:X}}function Wv$($,Z){let X=$?.githubRepo;if(!X?.owner||!X?.name)return null;if(!X.connectionId)return X;if(!Z.includes(X.connectionId))return null;return X}async function Kv$($,Z,X,Q){if(!Q.connectionId)throw new pg("Push requires a connected GitHub account. Connect mcp-github for this project and restart the sandbox.");let Y=$.organization?.id;if(!Y)throw new pg(d7);await Iw({ctx:$,connectionId:Q.connectionId,organizationId:Y,forceRefresh:!0,onLegacyMintError:(N)=>{let F=N instanceof Error?N.message:d7;throw new pg(F)}});let{cloneUrl:G,gitUserName:J,gitUserEmail:W}=await qw(Q.connectionId,Q.owner,Q.name,$.db,$.vault),K=Aj0($),H=await Z.proxyDaemonRequest(X,"/_sandbox/config",{method:"PUT",headers:new Headers({"content-type":"application/json"}),body:JSON.stringify({git:{repository:{cloneUrl:G},identity:{userName:J,userEmail:W}},...K?{operator:K}:{}})});if(!H.ok){let N=await dw(H,$46).catch(()=>H.statusText);throw Error(`Failed to refresh sandbox git credentials (${H.status}): ${N}`)}}var $46=10485760,pg;var Hv$=B(()=>{YN();e81();yi();af();pg=class pg extends Error{constructor($){super($);this.name="GitPushAuthError"}}});function X46($){let Z=$.startsWith("thread:")?$.slice(7):$;if(!Z||Z.length>255||Z.includes("..")||Z.startsWith("/")||Z.endsWith("/")||Z.endsWith(".lock")||!Z46.test(Z))throw Error(`Invalid branch name: ${$}`)}function lC($){return AbortSignal.any([$.req.raw.signal,AbortSignal.timeout(Y46)])}function dC($){let{runner:Z}=$.get("vmClaim");if(!Z)return $.json({error:"No sandbox runner configured"},503);return Z}function H41($,Z){let Q=(Tj0.get($)??Promise.resolve()).catch(()=>{}).then(Z),Y=Q.catch(()=>{});return Tj0.set($,Y),Y.finally(()=>{if(Tj0.get($)===Y)Tj0.delete($)}),Q}async function fZ($,Z,X){let Q=dC($);if(Q instanceof Response)return Q;let{claimName:Y,userId:G,projectRef:J}=$.get("vmClaim"),W=X?.method??"POST",K=null,H=new Headers;if(X?.jsonBody!==void 0)K=X.jsonBody,H.set("content-type","application/json");else if(X?.forwardJsonBody)K=await $.req.text(),H.set("content-type","application/json");let N=X?.signal,F={method:W,headers:H,body:K,...N?{signal:N}:{}},U=async()=>{let w=await Q.proxyDaemonRequest(Y,Z,F);if(X?.map404to410&&w.status===404){try{await w.body?.cancel()}catch{}if(await Q.adoptLiveClaim?.({userId:G,projectRef:J},Y))w=await Q.proxyDaemonRequest(Y,Z,F);if(w.status===404){try{await w.body?.cancel()}catch{}return new Response(JSON.stringify({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."}),{status:410,headers:{"content-type":"application/json",...cY}})}}let O=await w.text(),D=X?.redactRepoDirUnlessDesktop&&Q.kind!=="user-desktop"?J46(O):O,L=w.headers.get("content-type")??"application/json";return new Response(D,{status:w.status,headers:{"content-type":L,...cY}})};try{if(N){let w=U();return w.catch(()=>{}),await Promise.race([w,new Promise((D,L)=>{if(N.aborted)return L(N.reason);N.addEventListener("abort",()=>L(N.reason),{once:!0})})])}return await U()}catch(w){let O=w instanceof Error?w.message:String(w);return $.json({error:`Daemon unreachable: ${O}`},502)}}function J46($){try{let Z=JSON.parse($);if(Z&&typeof Z==="object"&&!Array.isArray(Z)&&"repoDir"in Z)return JSON.stringify({...Z,repoDir:null})}catch{}return $}async function Rj0($,Z,X,Q="GET",Y){let G=await $.proxyDaemonRequest(Z,X,{method:Q,headers:new Headers,body:null});if(G.status===404&&Y){try{await G.body?.cancel()}catch{}if(await $.adoptLiveClaim?.(Y,Z))G=await $.proxyDaemonRequest(Z,X,{method:Q,headers:new Headers,body:null})}if(G.status===404){try{await G.body?.cancel()}catch{}throw Error("SANDBOX_GONE")}let J=await G.text();if(!G.ok){let W=`Daemon error (${G.status})`;try{W=JSON.parse(J).error??W}catch{}throw Error(W)}return JSON.parse(J)}function W46($){return Uv$.includes($)}var Z46,Nv$=524288,Q46=65536,Y46=1e4,Fv$=2000,G46,Tj0,cY,Uv$,wv$=()=>{let $=new B1;return $.use("/:virtualMcpId/:branch/*",G46),$.post("/:virtualMcpId/:branch/write",(Z)=>fZ(Z,"/_sandbox/write",{forwardJsonBody:!0,signal:lC(Z)})),$.post("/:virtualMcpId/:branch/unlink",(Z)=>fZ(Z,"/_sandbox/unlink",{forwardJsonBody:!0,signal:lC(Z)})),$.post("/:virtualMcpId/:branch/mkdir",(Z)=>fZ(Z,"/_sandbox/mkdir",{forwardJsonBody:!0,signal:lC(Z)})),$.post("/:virtualMcpId/:branch/rename",(Z)=>fZ(Z,"/_sandbox/rename",{forwardJsonBody:!0,signal:lC(Z)})),$.post("/:virtualMcpId/:branch/read",(Z)=>fZ(Z,"/_sandbox/read",{forwardJsonBody:!0,signal:lC(Z)})),$.post("/:virtualMcpId/:branch/glob",(Z)=>fZ(Z,"/_sandbox/glob",{forwardJsonBody:!0,signal:lC(Z)})),$.post("/:virtualMcpId/:branch/grep",(Z)=>fZ(Z,"/_sandbox/grep",{forwardJsonBody:!0,signal:lC(Z)})),$.post("/:virtualMcpId/:branch/exec/:script",async(Z)=>{let X=Z.req.param("script");if(!X)return Z.json({error:"missing script name"},400);return fZ(Z,`/_sandbox/exec/${encodeURIComponent(X)}`)}),$.post("/:virtualMcpId/:branch/exec/:script/kill",async(Z)=>{let X=Z.req.param("script");if(!X)return Z.json({error:"missing script name"},400);return fZ(Z,`/_sandbox/exec/${encodeURIComponent(X)}/kill`)}),$.get("/:virtualMcpId/:branch/config",(Z)=>fZ(Z,"/_sandbox/config",{method:"GET",map404to410:!0,redactRepoDirUnlessDesktop:!0})),$.put("/:virtualMcpId/:branch/config",(Z)=>fZ(Z,"/_sandbox/config",{method:"PUT",forwardJsonBody:!0,map404to410:!0})),$.post("/:virtualMcpId/:branch/setup/:step",async(Z)=>{let X=Z.req.param("step");if(!X||!W46(X))return Z.json({error:`step must be one of: ${Uv$.join(", ")}`},400);if(X==="start"){let Q=Z.get("vmClaim");if(Q.runner){let Y=r(Z.var.studioContext),G=Ox(Q.virtualMcpMetadata);try{await eF0({ctx:Z.var.studioContext,runner:Q.runner,handle:Q.claimName,orgId:Y.id,userId:Q.callerUserId,entries:G})}catch(J){let W=J instanceof Error?J.message:String(J);return Z.json({error:`Failed to push env to daemon: ${W}`},502)}}}return fZ(Z,`/_sandbox/setup/${X}`,{signal:Z.req.raw.signal,map404to410:!0})}),$.get("/:virtualMcpId/:branch/events",(Z)=>{let X=Z.get("vmClaim");if(!X.runner)return QF(Z,async(Q)=>{await Q.writeSSE({event:"phase",data:JSON.stringify({kind:"failed",reason:"unknown",message:"No sandbox runner configured on this studio instance."})})});return o_$(Z,{ctx:Z.var.studioContext,claimName:X.claimName,runner:X.runner,virtualMcpId:X.virtualMcpId,branch:X.branch,userId:X.userId,projectRef:X.projectRef,virtualMcpMetadata:X.virtualMcpMetadata})}),$.get("/:virtualMcpId/:branch/git/status",(Z)=>fZ(Z,"/_sandbox/git/status",{method:"GET",map404to410:!0,signal:AbortSignal.any([Z.req.raw.signal,AbortSignal.timeout(Fv$)])})),$.post("/:virtualMcpId/:branch/git/status",(Z)=>fZ(Z,"/_sandbox/git/status",{map404to410:!0,signal:AbortSignal.any([Z.req.raw.signal,AbortSignal.timeout(Fv$)])})),$.post("/:virtualMcpId/:branch/git/diff",(Z)=>fZ(Z,"/_sandbox/git/diff",{forwardJsonBody:!0,map404to410:!0})),$.post("/:virtualMcpId/:branch/git/publish",async(Z)=>{let X=dC(Z);if(X instanceof Response)return X;let{claimName:Q,virtualMcpMetadata:Y,connectionIds:G}=Z.get("vmClaim"),J=Z.var.studioContext;return H41(Q,async()=>{try{await $41(J,X,Q);let W=Wv$(Y,G);if(W)await Kv$(J,X,Q,W)}catch(W){if(W instanceof pg)return Z.json({error:W.message},403,cY);let K=W instanceof Error?W.message:String(W);return Z.json({error:K},502,cY)}return fZ(Z,"/_sandbox/git/publish",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/discard",(Z)=>{let{claimName:X}=Z.get("vmClaim");return H41(X,()=>fZ(Z,"/_sandbox/git/discard",{forwardJsonBody:!0,map404to410:!0}))}),$.post("/:virtualMcpId/:branch/git/rebase",async(Z)=>{let X=dC(Z);if(X instanceof Response)return X;let{claimName:Q}=Z.get("vmClaim"),Y=Z.var.studioContext;return H41(Q,async()=>{try{await $41(Y,X,Q)}catch(G){let J=G instanceof Error?G.message:String(G);return Z.json({error:J},502,cY)}return fZ(Z,"/_sandbox/git/rebase",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/suggest-commit",HZ({maxSize:Nv$,onError:(Z)=>Z.json({error:"Payload too large"},413,cY)}),async(Z)=>{let X=dC(Z);if(X instanceof Response)return X;let{claimName:Q,userId:Y,projectRef:G}=Z.get("vmClaim"),J=Z.var.studioContext;try{let W=await Z.req.json().catch(()=>({})),K=W.status,H=W.diff,N=H!=null&&typeof H.diffs==="object"&&H.diffs!==null,[F,U]=Q41(K)&&N?[K,H]:await Promise.all([Rj0(X,Q,"/_sandbox/git/status","GET",{userId:Y,projectRef:G}),Rj0(X,Q,"/_sandbox/git/diff","GET",{userId:Y,projectRef:G})]),w=await $v$(J,F,U);return Z.json(w,200,cY)}catch(W){let K=W instanceof Error?W.message:String(W);if(K==="SANDBOX_GONE")return Z.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,cY);return Z.json({error:K},502,cY)}}),$.post("/:virtualMcpId/:branch/git/judge-review",HZ({maxSize:Nv$,onError:(Z)=>Z.json({error:"Payload too large"},413,cY)}),async(Z)=>{let X=dC(Z);if(X instanceof Response)return X;let{claimName:Q,userId:Y,projectRef:G}=Z.get("vmClaim"),J=Z.var.studioContext;try{let W=await Z.req.json().catch(()=>({})),K=W.status,H=W.diff,N=H!=null&&typeof H.diffs==="object"&&H.diffs!==null,[F,U]=Q41(K)&&N?[K,H]:await Promise.all([Rj0(X,Q,"/_sandbox/git/status","GET",{userId:Y,projectRef:G}),Rj0(X,Q,"/_sandbox/git/diff","GET",{userId:Y,projectRef:G})]),w=await Xv$(J,F,U,typeof W.language==="string"?W.language:void 0);return Z.json(w,200,cY)}catch(W){let K=W instanceof Error?W.message:String(W);if(K==="SANDBOX_GONE")return Z.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,cY);return Z.json({error:K},502,cY)}}),$.get("/:virtualMcpId/:branch/preview-fetch",async(Z)=>{let X=dC(Z);if(X instanceof Response)return X;let{claimName:Q}=Z.get("vmClaim"),Y=Z.req.query("path");if(!Y||!Y.startsWith("/")||Y.startsWith("//")||Y.includes("..")||Y.includes("\\"))return Z.json({error:"Path not allowed"},403);let G;try{G=await X.getPreviewUrl(Q)}catch{return Z.json({error:"Preview not available"},502)}if(!G)return Z.json({error:"Preview not available"},502);let J=G.replace(/\/+$/,""),W=K41(`${J}${Y}`),K;try{K=await fetch(W?.url??`${J}${Y}`,{...W?{headers:{host:W.hostHeader}}:{}})}catch{return Z.json({error:"Preview unreachable"},502)}let H;try{H=await K.text()}catch{return Z.json({error:"Preview unreachable"},502)}return new Response(H,{status:K.status,headers:{"content-type":K.headers.get("content-type")??"application/json"}})}),$.post("/:virtualMcpId/:branch/preview-invoke",HZ({maxSize:Q46,onError:(Z)=>Z.json({error:"Payload too large"},413)}),async(Z)=>{let X=dC(Z);if(X instanceof Response)return X;let{claimName:Q}=Z.get("vmClaim"),Y;try{Y=await X.getPreviewUrl(Q)}catch{return Z.json({error:"Preview not available"},502)}if(!Y)return Z.json({error:"Preview not available"},502);let G;try{G=await Z.req.json()}catch{return Z.json({error:"Invalid JSON body"},400)}if(!G||typeof G!=="object"||Array.isArray(G))return Z.json({error:"Invalid JSON body"},400);let J=Yv$(G);if(!J)return Z.json({error:"Invalid or missing __resolveType"},400);let W=Gv$(Y,J.resolveType),K=K41(W),H;try{H=await fetch(K?.url??W,{method:"POST",headers:{"content-type":"application/json",...K?{host:K.hostHeader}:{}},body:JSON.stringify(J.payload),signal:AbortSignal.timeout(30000)})}catch{return Z.json({error:"Preview unreachable"},502)}let N;try{N=await H.text()}catch{return Z.json({error:"Preview unreachable"},502)}return new Response(N,{status:H.status,headers:{"content-type":H.headers.get("content-type")??"application/json"}})}),$};var Ov$=B(()=>{y8();mO();ng();i_$();QN();p_$();j3();hw();t_$();r_$();bd0();fi();J41();Qv$();Jv$();Hv$();Z46=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;G46=m_$(async($,Z)=>{let X=$.var.studioContext;try{Z0(X)}catch{return $.json({error:"Unauthorized"},401)}let Q=W1(X);if(!Q)return $.json({error:"Unauthorized"},401);let Y;try{Y=r(X)}catch{return $.json({error:"Organization scope required"},403)}let G=$.req.param("virtualMcpId"),J=$.req.param("branch");if(!G||!J)return $.json({error:"virtualMcpId and branch are required"},400);try{X46(J)}catch(w){let O=w instanceof Error?w.message:String(w);return $.json({error:O},400)}let W=await X.storage.virtualMcps.findById(G);if(!W||W.organization_id!==Y.id)return $.json({error:"Virtual MCP not found"},404);let K=Xi({orgId:Y.id,virtualMcpId:G,branch:J}),H=await wN(X,J,Q),N=n_$({userId:H,projectRef:K}),F=W.metadata??null,U;try{U=(await uX(X,{userId:H,branch:J,virtualMcpMetadata:F})).provider}catch{U=null}if(!U)return $.json({error:"No sandbox runner found"},404);return $.set("vmClaim",{claimName:N,callerUserId:Q,runner:U,virtualMcpId:G,branch:J,userId:H,projectRef:K,virtualMcpMetadata:F,connectionIds:W.connections?.map((w)=>w.connection_id)??[]}),Z()});Tj0=new Map;cY={"Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache"};Uv$=["clone","install","start"]});var Bv$=($)=>{let Z=new B1;if(Z.use("*",vC),Z.route("/",hE0()),Z.route("/",kS$()),Z.route("/",C_$()),Z.route("/",k_$()),Z.route("/",jj0()),Z.route("/tools",g_$()),Z.route("/",f_$()),Z.route("/",N_$({kvStorage:$.kvStorage})),Z.route("/",K_$()),Z.route("/fs",P_$({getConnection:$.getNatsConnection})),Z.route("/sandbox",wv$()),Z.route("/",I_$()),Z.route("/deco-sites",cE0()),Z.route("/sso",vE0()),Z.route("/",zj0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",zS$()),$.mountDevAssets)Z.route("/dev-assets",lE0({orgFromPath:!0}));return Z.use("/mcp/:connectionId?",$.mcpAuth),Z.use("/mcp/:connectionId/ui-resource",$.mcpAuth),Z.use("/mcp/gateway/:virtualMcpId?",$.mcpAuth),Z.use("/mcp/virtual-mcp/:virtualMcpId?",$.mcpAuth),Z.use("/mcp/self",$.mcpAuth),Z.use("/mcp/task-run/:threadId",$.mcpAuth),Z.route("/",EM$()),Z.get("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",$.betterAuthProtectedResourceHandler),Z.get("/mcp/.well-known/oauth-protected-resource",$.betterAuthProtectedResourceHandler),Z.route("/mcp/task-run",T_$()),Z.route("/mcp",XO0()),Z.route("/mcp/self",Ej0()),Z.route("/mcp",GO0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var Dv$=B(()=>{y8();z$1();PS$();I$1();dE0();Uo();E$1();H_$();F_$();A_$();Rn();N$1();JO0();n81();R_$();q_$();S_$();__$();x_$();t81();h_$();o81();QO0();Ov$()});function H46($){return $.filter((Z)=>Z.vendors?.alias).map((Z)=>({name:Z.name,title:Z.title,description:Z.description,logo:Z.logo,category:Z.category,vendor:{alias:Z.vendors.alias,url:Z.vendors.url}}))}async function N46($,Z){let X=await fetch(`${$}/rest/v1/apps?select=name,title,description,logo,category,vendors(alias,url)`,{headers:{apikey:Z,Authorization:`Bearer ${Z}`,Accept:"application/json"},signal:AbortSignal.timeout(K46)});if(!X.ok){let Q=await X.text().catch(()=>X.statusText);throw console.error(`[deco-apps] Supabase error (${X.status}): ${Q.slice(0,200)}`),Error(`External service error (${X.status})`)}return await X.json()}var K46=1e4,F46=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},Lv$=()=>{let $=new B1;return $.use("*",F46),$.get("/",async(Z)=>{let X=c0(),Q=X.decoSupabaseUrl,Y=X.decoSupabaseServiceKey;if(!Q||!Y)return Z.json({apps:[]});try{let G=await N46(Q,Y);return Z.json({apps:H46(G)})}catch(G){return console.error("[deco-apps] GET error:",G),Z.json({error:"Failed to fetch apps"},502)}}),$};var Ev$=B(()=>{y8();S$()});import{z as M1}from"zod";function uK($,Z="invalid_request_error",X=null,Q=null){return{error:{message:$,type:Z,param:X,code:Q}}}function P46($){if(!$)return null;let Z=$.indexOf(":");if(Z===-1)return{credentialId:null,modelId:$};let X=$.substring(0,Z),Q=$.substring(Z+1);if(!X||!Q)return null;return{credentialId:X,modelId:Q}}function A46($,Z,X){try{return JSON.parse($)}catch{throw new Pv$(`Invalid JSON in tool call arguments for function '${X}' (tool_call_id: ${Z}): ${$}`)}}function T46($){let Z={};for(let X of $)if(X.role==="assistant"&&X.tool_calls)for(let Q of X.tool_calls)Z[Q.id]=Q.function.name;return $.map((X)=>{switch(X.role){case"system":return{role:"system",content:X.content};case"user":if(typeof X.content==="string")return{role:"user",content:X.content};return{role:"user",content:X.content.map((Y)=>{if(Y.type==="text")return{type:"text",text:Y.text};return{type:"image",image:Y.image_url.url}})};case"assistant":if(X.tool_calls&&X.tool_calls.length>0)return{role:"assistant",content:X.tool_calls.map((Y)=>({type:"tool-call",toolCallId:Y.id,toolName:Y.function.name,input:A46(Y.function.arguments,Y.id,Y.function.name)}))};return{role:"assistant",content:X.content??""};case"tool":let Q=Z[X.tool_call_id]??"unknown";return{role:"tool",content:[{type:"tool-result",toolCallId:X.tool_call_id,toolName:Q,output:{type:"text",value:X.content}}]}}})}function R46($){let Z=$.map((X)=>{let Q=X.function.parameters?PY(X.function.parameters):PY({type:"object",properties:{}});return[X.function.name,_$({description:X.function.description,inputSchema:Q})]});return Object.fromEntries(Z)}function I46($){if(!$)return;return{openai:{response_format:$}}}function q46(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function jv$($,Z,X,Q,Y,G){let J={model:$,messages:Z,tools:X,temperature:Q.temperature,maxTokens:Q.max_tokens,topP:Q.top_p,frequencyPenalty:Q.frequency_penalty,presencePenalty:Q.presence_penalty,stopSequences:Q.stop?Array.isArray(Q.stop)?Q.stop:[Q.stop]:void 0,abortSignal:G};return Y?{...J,providerOptions:Y}:J}function zv$($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var U46=256,w46,O46,B46,D46,L46,E46,j46,z46,Pv$,Av$,Tv$;var Rv$=B(()=>{k4();y8();ng();xN();w46=M1.object({type:M1.literal("function"),function:M1.object({name:M1.string(),description:M1.string().optional(),parameters:M1.record(M1.string(),M1.unknown()).optional()})}),O46=M1.object({id:M1.string(),type:M1.literal("function"),function:M1.object({name:M1.string(),arguments:M1.string()})}),B46=M1.discriminatedUnion("role",[M1.object({role:M1.literal("system"),content:M1.string(),name:M1.string().optional()}),M1.object({role:M1.literal("user"),content:M1.union([M1.string(),M1.array(M1.union([M1.object({type:M1.literal("text"),text:M1.string()}),M1.object({type:M1.literal("image_url"),image_url:M1.object({url:M1.string(),detail:M1.string().optional()})})]))]),name:M1.string().optional()}),M1.object({role:M1.literal("assistant"),content:M1.string().nullable().optional(),name:M1.string().optional(),tool_calls:M1.array(O46).optional()}),M1.object({role:M1.literal("tool"),content:M1.string(),tool_call_id:M1.string()})]),D46=M1.object({type:M1.literal("text")}),L46=M1.object({type:M1.literal("json_object")}),E46=M1.object({type:M1.literal("json_schema"),json_schema:M1.object({name:M1.string(),description:M1.string().optional(),schema:M1.record(M1.string(),M1.unknown()),strict:M1.boolean().optional()})}),j46=M1.union([D46,L46,E46]),z46=M1.object({model:M1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:M1.array(B46),stream:M1.boolean().optional().default(!1),temperature:M1.number().min(0).max(2).optional(),max_tokens:M1.number().positive().optional(),top_p:M1.number().min(0).max(1).optional(),frequency_penalty:M1.number().min(-2).max(2).optional(),presence_penalty:M1.number().min(-2).max(2).optional(),stop:M1.union([M1.string(),M1.array(M1.string())]).optional(),tools:M1.array(w46).optional(),tool_choice:M1.union([M1.literal("auto"),M1.literal("none"),M1.literal("required"),M1.object({type:M1.literal("function"),function:M1.object({name:M1.string()})})]).optional(),response_format:j46.optional(),user:M1.string().optional()});Pv$=class Pv$ extends Error{constructor($){super($);this.name="MessageConversionError"}};Av$=new B1;Av$.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),X=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(uK("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(uK("Organization context is required. Ensure your API key has organization metadata.","invalid_request_error","organization"),400);if((Z.organization.slug??Z.organization.id)!==X)return $.json(uK("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Q=await $.req.json(),Y=z46.safeParse(Q);if(!Y.success){let L=Y.error.issues[0]??{message:"Invalid request",path:[]};return $.json(uK(`Invalid request: ${L.message}`,"invalid_request_error",L.path.length>0?L.path.join("."):null),400)}let G=Y.data,J=P46(G.model);if(!J)return $.json(uK("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}=J,{modelId:K}=J;if(!W){let E=(await Z.storage.aiProviderKeys.list({organizationId:Z.organization.id})).find((j)=>QD(j.providerId));if(!E)return $.json(uK("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=E.id}let H;try{H=await Z.aiProviders.activate(W,Z.organization.id)}catch{return $.json(uK(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let N=H.aiSdk.languageModel(K),F=T46(G.messages),U=G.tools?R46(G.tools):void 0,w=I46(G.response_format),O=q46(),D=Math.floor(Date.now()/1000);if(G.stream)return QF($,async(L)=>{let E=jv$(N,F,U,G,w,$.req.raw.signal);try{let j=Tw(E),z=!1,A=0,P="",M=async()=>{if(P.length===0)return;let k=P;P="",await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{content:k},finish_reason:null}]})})};for await(let k of j.fullStream){if(!z&&(k.type==="text-delta"||k.type==="tool-call"))await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),z=!0;if(k.type==="text-delta"){if(P+=k.text,P.length>=U46)await M()}else if(k.type==="tool-call"){await M();let q=A++;await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{tool_calls:[{index:q,id:k.toolCallId,type:"function",function:{name:k.toolName,arguments:JSON.stringify(k.input)}}]},finish_reason:null}]})})}else if(k.type==="finish")await M(),await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{},finish_reason:zv$(k.finishReason)}],usage:k.totalUsage?{prompt_tokens:k.totalUsage.inputTokens??0,completion_tokens:k.totalUsage.outputTokens??0,total_tokens:k.totalUsage.totalTokens??0}:void 0})})}await M(),await L.writeSSE({data:"[DONE]"})}catch(j){let z=j;console.error("[openai-compat:stream] Error:",z.message),await L.writeSSE({data:JSON.stringify({error:{message:z.message,type:"server_error"}})})}});else{let L=jv$(N,F,U,G,w,$.req.raw.signal),E=await Pw(L),j={role:"assistant",content:E.text||null};if(E.toolCalls&&E.toolCalls.length>0)j.tool_calls=E.toolCalls.map((z)=>({id:z.toolCallId,type:"function",function:{name:z.toolName,arguments:JSON.stringify("input"in z?z.input:{})}})),j.content=null;return $.json({id:O,object:"chat.completion",created:D,model:G.model,choices:[{index:0,message:j,finish_reason:zv$(E.finishReason)}],usage:{prompt_tokens:E.usage?.inputTokens??0,completion_tokens:E.usage?.outputTokens??0,total_tokens:E.usage?.totalTokens??0}})}}catch(Q){let Y=Q;if(Y.name==="AbortError")return $.json(uK("Request aborted","invalid_request_error"),400);if(Y.name==="MessageConversionError")return $.json(uK(Y.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",Y.message,Y.stack),$.json(uK(Y.message,"server_error"),500)}});Tv$=Av$});var qv$;var Iv$=B(()=>{qv$={name:"decocms",version:"4.204.25",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.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":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@nats-io/jwt":"0.0.10-5","@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:"^6.0.208","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 S46(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??k46}}var Mv$,k46="https://ph.studio.decocms.com",kv$;var Sv$=B(()=>{y8();ux0();MV();jZ();S$();G$1();Iv$();Mv$=new B1;Mv$.get("/",($)=>{let Z={version:qv$.version,theme:Wu1(),...pD().logo&&{logo:pD().logo},...FK()&&{internalUrl:xq1()},...c0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!c0().firecrawlApiKey,auth:gk$(),posthog:S46(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:!FK()&&c0().sandboxProviderKind==="agent-sandbox"}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});kv$=Mv$});function tg($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function N41($){return(tg($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((X)=>X.charAt(0).toUpperCase()+X.slice(1)).join(" ")}function Cv$($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(tg($))}&sz=${Z}`}function Vv$($,Z){let X=$.trim();if(X.length<=Z)return X;let Q=X.slice(0,Z-1),Y=Q.lastIndexOf(" ");return`${(Y>Z*0.6?Q.slice(0,Y):Q).trimEnd()}\u2026`}function _v$($){let{brand:Z,domain:X,score:Q,verdict:Y}=$,G=typeof Q==="number"?`${Z} commerce report \u2014 ${Math.round(Q)}/100 \xB7 decocms`:`${Z} commerce report \xB7 decocms`,J=`See the full ${Z} scorecard \u2014 SEO, performance, conversion & AEO signals scored by decocms.`,W=Y?.trim()?Vv$(`${Y.trim().replace(/\s+/g," ")} \u2014 ${J}`,200):Vv$(`How does ${X} really perform? ${J}`,200);return{title:G,description:W}}import{z as l0}from"zod";var mC,V46,C46,_46,v46,vv$;var bv$=B(()=>{mC=l0.enum(["good","bad","neutral"]),V46=l0.preprocess(($)=>{if(Array.isArray($))return{kind:"text",value:$.find((X)=>X!==null&&typeof X!=="object")??""};return $!==null&&typeof $==="object"?$:{kind:"text",value:$}},l0.object({kind:l0.enum(["text","number","sparkline","badge","score"]).catch("text"),value:l0.coerce.string().optional(),tone:mC.optional(),muted:l0.boolean().optional(),delta:l0.coerce.string().optional(),deltaDir:l0.enum(["up","down","neutral"]).optional(),points:l0.array(l0.coerce.number()).optional(),label:l0.coerce.string().optional()}).transform(($)=>{if($.kind==="badge"&&$.label==null)$.label=$.value??"";if($.kind==="score"){let Z=Number($.value);if(Number.isNaN(Z))return{...$,kind:"text"}}return $})),C46=l0.preprocess(($)=>{let Z=$;if(Z&&typeof Z==="object"&&!Array.isArray(Z)&&Array.isArray(Z.cells))Z=Z.cells;if(Array.isArray(Z)&&Z.length===1&&Array.isArray(Z[0]))Z=Z[0];if(Array.isArray(Z))return Z;if(Z&&typeof Z==="object")return Object.values(Z);return Z},l0.array(V46)),_46={key:l0.coerce.string(),title:l0.coerce.string(),eyebrow:l0.coerce.string().optional(),headline:l0.coerce.string(),annotation:l0.coerce.string().optional(),methodology:l0.coerce.string().optional(),sources:l0.array(l0.object({name:l0.coerce.string(),logoUrl:l0.coerce.string()})).optional()},v46=l0.discriminatedUnion("template",[l0.object({template:l0.literal("cover"),score:l0.object({value:l0.coerce.number(),max:l0.coerce.number().optional(),grade:l0.coerce.string().optional(),label:l0.coerce.string().optional()}).optional(),brandImage:l0.coerce.string().optional(),screenshot:l0.coerce.string().optional(),mobileScreenshot:l0.coerce.string().optional()}),l0.object({template:l0.literal("cta"),ctaUrl:l0.coerce.string().optional(),ctaLabel:l0.coerce.string().optional(),bullets:l0.array(l0.coerce.string()).optional()}),l0.object({template:l0.literal("series"),points:l0.array(l0.coerce.number()).min(2),xLabels:l0.array(l0.coerce.string()).min(1),unit:l0.coerce.string().optional(),callout:l0.object({index:l0.coerce.number(),value:l0.coerce.string(),tone:mC.optional()})}),l0.object({template:l0.literal("threshold"),value:l0.coerce.string().default(""),metricLabel:l0.coerce.string().optional(),ratio:l0.coerce.number(),thresholdRatio:l0.coerce.number().optional(),thresholdLabel:l0.coerce.string().default(""),tone:mC.optional()}),l0.object({template:l0.literal("stats"),stats:l0.array(l0.object({value:l0.coerce.string(),label:l0.coerce.string(),tone:mC.optional()})).min(1)}),l0.object({template:l0.literal("bars"),items:l0.array(l0.object({value:l0.coerce.string(),label:l0.coerce.string(),ratio:l0.coerce.number(),tone:mC.optional()})).min(1)}),l0.object({template:l0.literal("gauges"),gauges:l0.array(l0.object({label:l0.coerce.string(),value:l0.coerce.string(),status:l0.enum(["good","warn","bad"]).catch("warn"),caption:l0.coerce.string().optional(),ratio:l0.coerce.number().optional()})).min(1)}),l0.object({template:l0.literal("checklist"),checks:l0.array(l0.object({label:l0.coerce.string(),status:l0.enum(["pass","fail","warn"]).catch("fail"),value:l0.coerce.string().optional()})).min(1)}),l0.object({template:l0.literal("table"),columns:l0.array(l0.object({label:l0.coerce.string(),align:l0.enum(["left","right"]).optional()})).min(1),rows:l0.array(C46).min(1),highlightRow:l0.coerce.number().optional()}),l0.object({template:l0.literal("products"),products:l0.array(l0.object({name:l0.coerce.string(),price:l0.coerce.string().optional(),image:l0.coerce.string().optional(),url:l0.coerce.string().optional()})).min(1)}),l0.object({template:l0.literal("list"),entries:l0.array(l0.object({label:l0.coerce.string(),severity:l0.enum(["error","warning","notice"]).catch("notice")})).min(1),moreCount:l0.coerce.number().optional()}),l0.object({template:l0.literal("keywords"),volumeLabel:l0.coerce.string().optional(),keywords:l0.array(l0.object({term:l0.coerce.string(),volume:l0.coerce.string(),position:l0.coerce.number().catch(0)})).min(1)}),l0.object({template:l0.literal("competitor"),metricLabel:l0.coerce.string().optional(),competitors:l0.array(l0.object({name:l0.coerce.string(),value:l0.coerce.string(),tone:mC.optional(),isYou:l0.boolean().optional()})).min(1)}),l0.object({template:l0.literal("scorecard"),rivalLabel:l0.coerce.string().optional(),dimensions:l0.array(l0.object({label:l0.coerce.string(),you:l0.coerce.string(),rival:l0.coerce.string().optional(),rivalName:l0.coerce.string().optional(),tone:mC.optional()})).min(1)})]),vv$=l0.object({..._46,template:v46})});function Ij0($){let Z=[],X=[...$.sections].sort((Y,G)=>Y.position-G.position).map((Y)=>{let G=vv$.safeParse(Y.props);if(G.success)return G.data;let J=G.error.issues[0];return Z.push({section_type:Y.section_type,position:Y.position,reason:J?`${J.path.join(".")||"(root)"}: ${J.message}`:"contract violation"}),null}).filter((Y)=>Y!==null),Q=X.filter((Y)=>Y.template.template!=="cover"&&Y.template.template!=="cta").map((Y)=>({key:Y.key,title:Y.title}));return{deck:{meta:{...$.meta,scores:$.summary?.scores,scannedAt:$.scanned_at,toc:Q},slides:X},drops:Z}}var F41=B(()=>{bv$()});import{join as fv$}from"path";async function f46($){try{let Z=await fetch(`${fW({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(b46)});if(!Z.ok)return null;let X=await Z.json(),{deck:Q}=Ij0(X);if(!Q.slides.length)return null;let Y=Q.slides.find((W)=>W.template.template==="cover"),G=Y?.template,J=G&&G.template==="cover"?G:void 0;return{brand:Q.meta.brand?.trim()||N41($),score:Q.meta.scores?.cover??J?.score?.value,verdict:Y?.annotation?.trim()||Y?.headline?.trim()||void 0}}catch{return null}}function lY($){return $.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""")}function x46($,Z){let X=tg($),Q=Z?.brand?.trim()||N41(X),Y=Cv$(X,128),J=`${(c0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(X)}`,{title:W,description:K}=_v$({brand:Q,domain:X,score:Z?.score,verdict:Z?.verdict}),H=`${J}/og.png`,N=`${Q} commerce report by decocms`;return[`<title>${lY(W)}</title>`,`<meta name="description" content="${lY(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="${lY(W)}" />`,`<meta property="og:description" content="${lY(K)}" />`,`<meta property="og:url" content="${lY(J)}" />`,`<meta property="og:image" content="${lY(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${lY(N)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${lY(W)}" />`,`<meta name="twitter:description" content="${lY(K)}" />`,`<meta name="twitter:image" content="${lY(H)}" />`,`<meta name="twitter:image:alt" content="${lY(N)}" />`,`<link rel="canonical" href="${lY(J)}" />`,`<link rel="icon" href="${lY(Y)}" sizes="any" />`].join(`
|
|
2729
|
+
Respond with the structured verdict and a short reason.`,Zv$;var Qv$=B(()=>{k4();iw();J41();o86=W41.object({requiresReview:W41.boolean().describe("true if the changes should go through pull-request review"),reason:W41.string().describe("One short sentence explaining the decision (max ~120 chars)")});Zv$={requiresReview:!1,reason:""}});function e86($){if(!$||$.includes(".."))return!1;return s86.test($)}function Yv$($){let Z=typeof $.__resolveType==="string"?$.__resolveType:null;if(!Z||!e86(Z))return null;let{__resolveType:X,...Q}=$;return{resolveType:Z,payload:Q}}function Gv$($,Z){return`${$.replace(/\/+$/,"")}/deco/invoke/${Z}`}var s86;var Jv$=B(()=>{s86=/^[\w./@-]+$/});function K41($){let Z;try{Z=new URL($)}catch{return null}if(!Z.hostname.endsWith(".localhost"))return null;let X=Z.host;return Z.hostname="127.0.0.1",{url:Z.toString(),hostHeader:X}}function Wv$($,Z){let X=$?.githubRepo;if(!X?.owner||!X?.name)return null;if(!X.connectionId)return X;if(!Z.includes(X.connectionId))return null;return X}async function Kv$($,Z,X,Q){if(!Q.connectionId)throw new pg("Push requires a connected GitHub account. Connect mcp-github for this project and restart the sandbox.");let Y=$.organization?.id;if(!Y)throw new pg(d7);await Iw({ctx:$,connectionId:Q.connectionId,organizationId:Y,forceRefresh:!0,onLegacyMintError:(N)=>{let F=N instanceof Error?N.message:d7;throw new pg(F)}});let{cloneUrl:G,gitUserName:J,gitUserEmail:W}=await qw(Q.connectionId,Q.owner,Q.name,$.db,$.vault),K=Aj0($),H=await Z.proxyDaemonRequest(X,"/_sandbox/config",{method:"PUT",headers:new Headers({"content-type":"application/json"}),body:JSON.stringify({git:{repository:{cloneUrl:G},identity:{userName:J,userEmail:W}},...K?{operator:K}:{}})});if(!H.ok){let N=await dw(H,$46).catch(()=>H.statusText);throw Error(`Failed to refresh sandbox git credentials (${H.status}): ${N}`)}}var $46=10485760,pg;var Hv$=B(()=>{YN();e81();yi();af();pg=class pg extends Error{constructor($){super($);this.name="GitPushAuthError"}}});function X46($){let Z=$.startsWith("thread:")?$.slice(7):$;if(!Z||Z.length>255||Z.includes("..")||Z.startsWith("/")||Z.endsWith("/")||Z.endsWith(".lock")||!Z46.test(Z))throw Error(`Invalid branch name: ${$}`)}function lC($){return AbortSignal.any([$.req.raw.signal,AbortSignal.timeout(Y46)])}function dC($){let{runner:Z}=$.get("vmClaim");if(!Z)return $.json({error:"No sandbox runner configured"},503);return Z}function H41($,Z){let Q=(Tj0.get($)??Promise.resolve()).catch(()=>{}).then(Z),Y=Q.catch(()=>{});return Tj0.set($,Y),Y.finally(()=>{if(Tj0.get($)===Y)Tj0.delete($)}),Q}async function fZ($,Z,X){let Q=dC($);if(Q instanceof Response)return Q;let{claimName:Y,userId:G,projectRef:J}=$.get("vmClaim"),W=X?.method??"POST",K=null,H=new Headers;if(X?.jsonBody!==void 0)K=X.jsonBody,H.set("content-type","application/json");else if(X?.forwardJsonBody)K=await $.req.text(),H.set("content-type","application/json");let N=X?.signal,F={method:W,headers:H,body:K,...N?{signal:N}:{}},U=async()=>{let w=await Q.proxyDaemonRequest(Y,Z,F);if(X?.map404to410&&w.status===404){try{await w.body?.cancel()}catch{}if(await Q.adoptLiveClaim?.({userId:G,projectRef:J},Y))w=await Q.proxyDaemonRequest(Y,Z,F);if(w.status===404){try{await w.body?.cancel()}catch{}return new Response(JSON.stringify({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."}),{status:410,headers:{"content-type":"application/json",...cY}})}}let O=await w.text(),D=X?.redactRepoDirUnlessDesktop&&Q.kind!=="user-desktop"?J46(O):O,L=w.headers.get("content-type")??"application/json";return new Response(D,{status:w.status,headers:{"content-type":L,...cY}})};try{if(N){let w=U();return w.catch(()=>{}),await Promise.race([w,new Promise((D,L)=>{if(N.aborted)return L(N.reason);N.addEventListener("abort",()=>L(N.reason),{once:!0})})])}return await U()}catch(w){let O=w instanceof Error?w.message:String(w);return $.json({error:`Daemon unreachable: ${O}`},502)}}function J46($){try{let Z=JSON.parse($);if(Z&&typeof Z==="object"&&!Array.isArray(Z)&&"repoDir"in Z)return JSON.stringify({...Z,repoDir:null})}catch{}return $}async function Rj0($,Z,X,Q="GET",Y){let G=await $.proxyDaemonRequest(Z,X,{method:Q,headers:new Headers,body:null});if(G.status===404&&Y){try{await G.body?.cancel()}catch{}if(await $.adoptLiveClaim?.(Y,Z))G=await $.proxyDaemonRequest(Z,X,{method:Q,headers:new Headers,body:null})}if(G.status===404){try{await G.body?.cancel()}catch{}throw Error("SANDBOX_GONE")}let J=await G.text();if(!G.ok){let W=`Daemon error (${G.status})`;try{W=JSON.parse(J).error??W}catch{}throw Error(W)}return JSON.parse(J)}function W46($){return Uv$.includes($)}var Z46,Nv$=524288,Q46=65536,Y46=1e4,Fv$=2000,G46,Tj0,cY,Uv$,wv$=()=>{let $=new B1;return $.use("/:virtualMcpId/:branch/*",G46),$.post("/:virtualMcpId/:branch/write",(Z)=>fZ(Z,"/_sandbox/write",{forwardJsonBody:!0,signal:lC(Z)})),$.post("/:virtualMcpId/:branch/unlink",(Z)=>fZ(Z,"/_sandbox/unlink",{forwardJsonBody:!0,signal:lC(Z)})),$.post("/:virtualMcpId/:branch/mkdir",(Z)=>fZ(Z,"/_sandbox/mkdir",{forwardJsonBody:!0,signal:lC(Z)})),$.post("/:virtualMcpId/:branch/rename",(Z)=>fZ(Z,"/_sandbox/rename",{forwardJsonBody:!0,signal:lC(Z)})),$.post("/:virtualMcpId/:branch/read",(Z)=>fZ(Z,"/_sandbox/read",{forwardJsonBody:!0,signal:lC(Z)})),$.post("/:virtualMcpId/:branch/glob",(Z)=>fZ(Z,"/_sandbox/glob",{forwardJsonBody:!0,signal:lC(Z)})),$.post("/:virtualMcpId/:branch/grep",(Z)=>fZ(Z,"/_sandbox/grep",{forwardJsonBody:!0,signal:lC(Z)})),$.post("/:virtualMcpId/:branch/exec/:script",async(Z)=>{let X=Z.req.param("script");if(!X)return Z.json({error:"missing script name"},400);return fZ(Z,`/_sandbox/exec/${encodeURIComponent(X)}`)}),$.post("/:virtualMcpId/:branch/exec/:script/kill",async(Z)=>{let X=Z.req.param("script");if(!X)return Z.json({error:"missing script name"},400);return fZ(Z,`/_sandbox/exec/${encodeURIComponent(X)}/kill`)}),$.get("/:virtualMcpId/:branch/config",(Z)=>fZ(Z,"/_sandbox/config",{method:"GET",map404to410:!0,redactRepoDirUnlessDesktop:!0})),$.put("/:virtualMcpId/:branch/config",(Z)=>fZ(Z,"/_sandbox/config",{method:"PUT",forwardJsonBody:!0,map404to410:!0})),$.post("/:virtualMcpId/:branch/setup/:step",async(Z)=>{let X=Z.req.param("step");if(!X||!W46(X))return Z.json({error:`step must be one of: ${Uv$.join(", ")}`},400);if(X==="start"){let Q=Z.get("vmClaim");if(Q.runner){let Y=r(Z.var.studioContext),G=Ox(Q.virtualMcpMetadata);try{await eF0({ctx:Z.var.studioContext,runner:Q.runner,handle:Q.claimName,orgId:Y.id,userId:Q.callerUserId,entries:G})}catch(J){let W=J instanceof Error?J.message:String(J);return Z.json({error:`Failed to push env to daemon: ${W}`},502)}}}return fZ(Z,`/_sandbox/setup/${X}`,{signal:Z.req.raw.signal,map404to410:!0})}),$.get("/:virtualMcpId/:branch/events",(Z)=>{let X=Z.get("vmClaim");if(!X.runner)return QF(Z,async(Q)=>{await Q.writeSSE({event:"phase",data:JSON.stringify({kind:"failed",reason:"unknown",message:"No sandbox runner configured on this studio instance."})})});return o_$(Z,{ctx:Z.var.studioContext,claimName:X.claimName,runner:X.runner,virtualMcpId:X.virtualMcpId,branch:X.branch,userId:X.userId,projectRef:X.projectRef,virtualMcpMetadata:X.virtualMcpMetadata})}),$.get("/:virtualMcpId/:branch/git/status",(Z)=>fZ(Z,"/_sandbox/git/status",{method:"GET",map404to410:!0,signal:AbortSignal.any([Z.req.raw.signal,AbortSignal.timeout(Fv$)])})),$.post("/:virtualMcpId/:branch/git/status",(Z)=>fZ(Z,"/_sandbox/git/status",{map404to410:!0,signal:AbortSignal.any([Z.req.raw.signal,AbortSignal.timeout(Fv$)])})),$.post("/:virtualMcpId/:branch/git/diff",(Z)=>fZ(Z,"/_sandbox/git/diff",{forwardJsonBody:!0,map404to410:!0})),$.post("/:virtualMcpId/:branch/git/publish",async(Z)=>{let X=dC(Z);if(X instanceof Response)return X;let{claimName:Q,virtualMcpMetadata:Y,connectionIds:G}=Z.get("vmClaim"),J=Z.var.studioContext;return H41(Q,async()=>{try{await $41(J,X,Q);let W=Wv$(Y,G);if(W)await Kv$(J,X,Q,W)}catch(W){if(W instanceof pg)return Z.json({error:W.message},403,cY);let K=W instanceof Error?W.message:String(W);return Z.json({error:K},502,cY)}return fZ(Z,"/_sandbox/git/publish",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/discard",(Z)=>{let{claimName:X}=Z.get("vmClaim");return H41(X,()=>fZ(Z,"/_sandbox/git/discard",{forwardJsonBody:!0,map404to410:!0}))}),$.post("/:virtualMcpId/:branch/git/rebase",async(Z)=>{let X=dC(Z);if(X instanceof Response)return X;let{claimName:Q}=Z.get("vmClaim"),Y=Z.var.studioContext;return H41(Q,async()=>{try{await $41(Y,X,Q)}catch(G){let J=G instanceof Error?G.message:String(G);return Z.json({error:J},502,cY)}return fZ(Z,"/_sandbox/git/rebase",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/suggest-commit",HZ({maxSize:Nv$,onError:(Z)=>Z.json({error:"Payload too large"},413,cY)}),async(Z)=>{let X=dC(Z);if(X instanceof Response)return X;let{claimName:Q,userId:Y,projectRef:G}=Z.get("vmClaim"),J=Z.var.studioContext;try{let W=await Z.req.json().catch(()=>({})),K=W.status,H=W.diff,N=H!=null&&typeof H.diffs==="object"&&H.diffs!==null,[F,U]=Q41(K)&&N?[K,H]:await Promise.all([Rj0(X,Q,"/_sandbox/git/status","GET",{userId:Y,projectRef:G}),Rj0(X,Q,"/_sandbox/git/diff","GET",{userId:Y,projectRef:G})]),w=await $v$(J,F,U);return Z.json(w,200,cY)}catch(W){let K=W instanceof Error?W.message:String(W);if(K==="SANDBOX_GONE")return Z.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,cY);return Z.json({error:K},502,cY)}}),$.post("/:virtualMcpId/:branch/git/judge-review",HZ({maxSize:Nv$,onError:(Z)=>Z.json({error:"Payload too large"},413,cY)}),async(Z)=>{let X=dC(Z);if(X instanceof Response)return X;let{claimName:Q,userId:Y,projectRef:G}=Z.get("vmClaim"),J=Z.var.studioContext;try{let W=await Z.req.json().catch(()=>({})),K=W.status,H=W.diff,N=H!=null&&typeof H.diffs==="object"&&H.diffs!==null,[F,U]=Q41(K)&&N?[K,H]:await Promise.all([Rj0(X,Q,"/_sandbox/git/status","GET",{userId:Y,projectRef:G}),Rj0(X,Q,"/_sandbox/git/diff","GET",{userId:Y,projectRef:G})]),w=await Xv$(J,F,U,typeof W.language==="string"?W.language:void 0);return Z.json(w,200,cY)}catch(W){let K=W instanceof Error?W.message:String(W);if(K==="SANDBOX_GONE")return Z.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,cY);return Z.json({error:K},502,cY)}}),$.get("/:virtualMcpId/:branch/preview-fetch",async(Z)=>{let X=dC(Z);if(X instanceof Response)return X;let{claimName:Q}=Z.get("vmClaim"),Y=Z.req.query("path");if(!Y||!Y.startsWith("/")||Y.startsWith("//")||Y.includes("..")||Y.includes("\\"))return Z.json({error:"Path not allowed"},403);let G;try{G=await X.getPreviewUrl(Q)}catch{return Z.json({error:"Preview not available"},502)}if(!G)return Z.json({error:"Preview not available"},502);let J=G.replace(/\/+$/,""),W=K41(`${J}${Y}`),K;try{K=await fetch(W?.url??`${J}${Y}`,{...W?{headers:{host:W.hostHeader}}:{}})}catch{return Z.json({error:"Preview unreachable"},502)}let H;try{H=await K.text()}catch{return Z.json({error:"Preview unreachable"},502)}return new Response(H,{status:K.status,headers:{"content-type":K.headers.get("content-type")??"application/json"}})}),$.post("/:virtualMcpId/:branch/preview-invoke",HZ({maxSize:Q46,onError:(Z)=>Z.json({error:"Payload too large"},413)}),async(Z)=>{let X=dC(Z);if(X instanceof Response)return X;let{claimName:Q}=Z.get("vmClaim"),Y;try{Y=await X.getPreviewUrl(Q)}catch{return Z.json({error:"Preview not available"},502)}if(!Y)return Z.json({error:"Preview not available"},502);let G;try{G=await Z.req.json()}catch{return Z.json({error:"Invalid JSON body"},400)}if(!G||typeof G!=="object"||Array.isArray(G))return Z.json({error:"Invalid JSON body"},400);let J=Yv$(G);if(!J)return Z.json({error:"Invalid or missing __resolveType"},400);let W=Gv$(Y,J.resolveType),K=K41(W),H;try{H=await fetch(K?.url??W,{method:"POST",headers:{"content-type":"application/json",...K?{host:K.hostHeader}:{}},body:JSON.stringify(J.payload),signal:AbortSignal.timeout(30000)})}catch{return Z.json({error:"Preview unreachable"},502)}let N;try{N=await H.text()}catch{return Z.json({error:"Preview unreachable"},502)}return new Response(N,{status:H.status,headers:{"content-type":H.headers.get("content-type")??"application/json"}})}),$};var Ov$=B(()=>{y8();mO();ng();i_$();QN();p_$();j3();hw();t_$();r_$();bd0();fi();J41();Qv$();Jv$();Hv$();Z46=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;G46=m_$(async($,Z)=>{let X=$.var.studioContext;try{Z0(X)}catch{return $.json({error:"Unauthorized"},401)}let Q=W1(X);if(!Q)return $.json({error:"Unauthorized"},401);let Y;try{Y=r(X)}catch{return $.json({error:"Organization scope required"},403)}let G=$.req.param("virtualMcpId"),J=$.req.param("branch");if(!G||!J)return $.json({error:"virtualMcpId and branch are required"},400);try{X46(J)}catch(w){let O=w instanceof Error?w.message:String(w);return $.json({error:O},400)}let W=await X.storage.virtualMcps.findById(G);if(!W||W.organization_id!==Y.id)return $.json({error:"Virtual MCP not found"},404);let K=Xi({orgId:Y.id,virtualMcpId:G,branch:J}),H=await wN(X,J,Q),N=n_$({userId:H,projectRef:K}),F=W.metadata??null,U;try{U=(await uX(X,{userId:H,branch:J,virtualMcpMetadata:F})).provider}catch{U=null}if(!U)return $.json({error:"No sandbox runner found"},404);return $.set("vmClaim",{claimName:N,callerUserId:Q,runner:U,virtualMcpId:G,branch:J,userId:H,projectRef:K,virtualMcpMetadata:F,connectionIds:W.connections?.map((w)=>w.connection_id)??[]}),Z()});Tj0=new Map;cY={"Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache"};Uv$=["clone","install","start"]});var Bv$=($)=>{let Z=new B1;if(Z.use("*",vC),Z.route("/",hE0()),Z.route("/",kS$()),Z.route("/",C_$()),Z.route("/",k_$()),Z.route("/",jj0()),Z.route("/tools",g_$()),Z.route("/",f_$()),Z.route("/",N_$({kvStorage:$.kvStorage})),Z.route("/",K_$()),Z.route("/fs",P_$({getConnection:$.getNatsConnection})),Z.route("/sandbox",wv$()),Z.route("/",I_$()),Z.route("/deco-sites",cE0()),Z.route("/sso",vE0()),Z.route("/",zj0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",zS$()),$.mountDevAssets)Z.route("/dev-assets",lE0({orgFromPath:!0}));return Z.use("/mcp/:connectionId?",$.mcpAuth),Z.use("/mcp/:connectionId/ui-resource",$.mcpAuth),Z.use("/mcp/gateway/:virtualMcpId?",$.mcpAuth),Z.use("/mcp/virtual-mcp/:virtualMcpId?",$.mcpAuth),Z.use("/mcp/self",$.mcpAuth),Z.use("/mcp/task-run/:threadId",$.mcpAuth),Z.route("/",EM$()),Z.get("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",$.betterAuthProtectedResourceHandler),Z.get("/mcp/.well-known/oauth-protected-resource",$.betterAuthProtectedResourceHandler),Z.route("/mcp/task-run",T_$()),Z.route("/mcp",XO0()),Z.route("/mcp/self",Ej0()),Z.route("/mcp",GO0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var Dv$=B(()=>{y8();z$1();PS$();I$1();dE0();Uo();E$1();H_$();F_$();A_$();Rn();N$1();JO0();n81();R_$();q_$();S_$();__$();x_$();t81();h_$();o81();QO0();Ov$()});function H46($){return $.filter((Z)=>Z.vendors?.alias).map((Z)=>({name:Z.name,title:Z.title,description:Z.description,logo:Z.logo,category:Z.category,vendor:{alias:Z.vendors.alias,url:Z.vendors.url}}))}async function N46($,Z){let X=await fetch(`${$}/rest/v1/apps?select=name,title,description,logo,category,vendors(alias,url)`,{headers:{apikey:Z,Authorization:`Bearer ${Z}`,Accept:"application/json"},signal:AbortSignal.timeout(K46)});if(!X.ok){let Q=await X.text().catch(()=>X.statusText);throw console.error(`[deco-apps] Supabase error (${X.status}): ${Q.slice(0,200)}`),Error(`External service error (${X.status})`)}return await X.json()}var K46=1e4,F46=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},Lv$=()=>{let $=new B1;return $.use("*",F46),$.get("/",async(Z)=>{let X=c0(),Q=X.decoSupabaseUrl,Y=X.decoSupabaseServiceKey;if(!Q||!Y)return Z.json({apps:[]});try{let G=await N46(Q,Y);return Z.json({apps:H46(G)})}catch(G){return console.error("[deco-apps] GET error:",G),Z.json({error:"Failed to fetch apps"},502)}}),$};var Ev$=B(()=>{y8();S$()});import{z as M1}from"zod";function uK($,Z="invalid_request_error",X=null,Q=null){return{error:{message:$,type:Z,param:X,code:Q}}}function P46($){if(!$)return null;let Z=$.indexOf(":");if(Z===-1)return{credentialId:null,modelId:$};let X=$.substring(0,Z),Q=$.substring(Z+1);if(!X||!Q)return null;return{credentialId:X,modelId:Q}}function A46($,Z,X){try{return JSON.parse($)}catch{throw new Pv$(`Invalid JSON in tool call arguments for function '${X}' (tool_call_id: ${Z}): ${$}`)}}function T46($){let Z={};for(let X of $)if(X.role==="assistant"&&X.tool_calls)for(let Q of X.tool_calls)Z[Q.id]=Q.function.name;return $.map((X)=>{switch(X.role){case"system":return{role:"system",content:X.content};case"user":if(typeof X.content==="string")return{role:"user",content:X.content};return{role:"user",content:X.content.map((Y)=>{if(Y.type==="text")return{type:"text",text:Y.text};return{type:"image",image:Y.image_url.url}})};case"assistant":if(X.tool_calls&&X.tool_calls.length>0)return{role:"assistant",content:X.tool_calls.map((Y)=>({type:"tool-call",toolCallId:Y.id,toolName:Y.function.name,input:A46(Y.function.arguments,Y.id,Y.function.name)}))};return{role:"assistant",content:X.content??""};case"tool":let Q=Z[X.tool_call_id]??"unknown";return{role:"tool",content:[{type:"tool-result",toolCallId:X.tool_call_id,toolName:Q,output:{type:"text",value:X.content}}]}}})}function R46($){let Z=$.map((X)=>{let Q=X.function.parameters?PY(X.function.parameters):PY({type:"object",properties:{}});return[X.function.name,_$({description:X.function.description,inputSchema:Q})]});return Object.fromEntries(Z)}function I46($){if(!$)return;return{openai:{response_format:$}}}function q46(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function jv$($,Z,X,Q,Y,G){let J={model:$,messages:Z,tools:X,temperature:Q.temperature,maxTokens:Q.max_tokens,topP:Q.top_p,frequencyPenalty:Q.frequency_penalty,presencePenalty:Q.presence_penalty,stopSequences:Q.stop?Array.isArray(Q.stop)?Q.stop:[Q.stop]:void 0,abortSignal:G};return Y?{...J,providerOptions:Y}:J}function zv$($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var U46=256,w46,O46,B46,D46,L46,E46,j46,z46,Pv$,Av$,Tv$;var Rv$=B(()=>{k4();y8();ng();xN();w46=M1.object({type:M1.literal("function"),function:M1.object({name:M1.string(),description:M1.string().optional(),parameters:M1.record(M1.string(),M1.unknown()).optional()})}),O46=M1.object({id:M1.string(),type:M1.literal("function"),function:M1.object({name:M1.string(),arguments:M1.string()})}),B46=M1.discriminatedUnion("role",[M1.object({role:M1.literal("system"),content:M1.string(),name:M1.string().optional()}),M1.object({role:M1.literal("user"),content:M1.union([M1.string(),M1.array(M1.union([M1.object({type:M1.literal("text"),text:M1.string()}),M1.object({type:M1.literal("image_url"),image_url:M1.object({url:M1.string(),detail:M1.string().optional()})})]))]),name:M1.string().optional()}),M1.object({role:M1.literal("assistant"),content:M1.string().nullable().optional(),name:M1.string().optional(),tool_calls:M1.array(O46).optional()}),M1.object({role:M1.literal("tool"),content:M1.string(),tool_call_id:M1.string()})]),D46=M1.object({type:M1.literal("text")}),L46=M1.object({type:M1.literal("json_object")}),E46=M1.object({type:M1.literal("json_schema"),json_schema:M1.object({name:M1.string(),description:M1.string().optional(),schema:M1.record(M1.string(),M1.unknown()),strict:M1.boolean().optional()})}),j46=M1.union([D46,L46,E46]),z46=M1.object({model:M1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:M1.array(B46),stream:M1.boolean().optional().default(!1),temperature:M1.number().min(0).max(2).optional(),max_tokens:M1.number().positive().optional(),top_p:M1.number().min(0).max(1).optional(),frequency_penalty:M1.number().min(-2).max(2).optional(),presence_penalty:M1.number().min(-2).max(2).optional(),stop:M1.union([M1.string(),M1.array(M1.string())]).optional(),tools:M1.array(w46).optional(),tool_choice:M1.union([M1.literal("auto"),M1.literal("none"),M1.literal("required"),M1.object({type:M1.literal("function"),function:M1.object({name:M1.string()})})]).optional(),response_format:j46.optional(),user:M1.string().optional()});Pv$=class Pv$ extends Error{constructor($){super($);this.name="MessageConversionError"}};Av$=new B1;Av$.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),X=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(uK("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(uK("Organization context is required. Ensure your API key has organization metadata.","invalid_request_error","organization"),400);if((Z.organization.slug??Z.organization.id)!==X)return $.json(uK("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Q=await $.req.json(),Y=z46.safeParse(Q);if(!Y.success){let L=Y.error.issues[0]??{message:"Invalid request",path:[]};return $.json(uK(`Invalid request: ${L.message}`,"invalid_request_error",L.path.length>0?L.path.join("."):null),400)}let G=Y.data,J=P46(G.model);if(!J)return $.json(uK("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}=J,{modelId:K}=J;if(!W){let E=(await Z.storage.aiProviderKeys.list({organizationId:Z.organization.id})).find((j)=>QD(j.providerId));if(!E)return $.json(uK("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=E.id}let H;try{H=await Z.aiProviders.activate(W,Z.organization.id)}catch{return $.json(uK(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let N=H.aiSdk.languageModel(K),F=T46(G.messages),U=G.tools?R46(G.tools):void 0,w=I46(G.response_format),O=q46(),D=Math.floor(Date.now()/1000);if(G.stream)return QF($,async(L)=>{let E=jv$(N,F,U,G,w,$.req.raw.signal);try{let j=Tw(E),z=!1,A=0,P="",M=async()=>{if(P.length===0)return;let k=P;P="",await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{content:k},finish_reason:null}]})})};for await(let k of j.fullStream){if(!z&&(k.type==="text-delta"||k.type==="tool-call"))await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),z=!0;if(k.type==="text-delta"){if(P+=k.text,P.length>=U46)await M()}else if(k.type==="tool-call"){await M();let q=A++;await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{tool_calls:[{index:q,id:k.toolCallId,type:"function",function:{name:k.toolName,arguments:JSON.stringify(k.input)}}]},finish_reason:null}]})})}else if(k.type==="finish")await M(),await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{},finish_reason:zv$(k.finishReason)}],usage:k.totalUsage?{prompt_tokens:k.totalUsage.inputTokens??0,completion_tokens:k.totalUsage.outputTokens??0,total_tokens:k.totalUsage.totalTokens??0}:void 0})})}await M(),await L.writeSSE({data:"[DONE]"})}catch(j){let z=j;console.error("[openai-compat:stream] Error:",z.message),await L.writeSSE({data:JSON.stringify({error:{message:z.message,type:"server_error"}})})}});else{let L=jv$(N,F,U,G,w,$.req.raw.signal),E=await Pw(L),j={role:"assistant",content:E.text||null};if(E.toolCalls&&E.toolCalls.length>0)j.tool_calls=E.toolCalls.map((z)=>({id:z.toolCallId,type:"function",function:{name:z.toolName,arguments:JSON.stringify("input"in z?z.input:{})}})),j.content=null;return $.json({id:O,object:"chat.completion",created:D,model:G.model,choices:[{index:0,message:j,finish_reason:zv$(E.finishReason)}],usage:{prompt_tokens:E.usage?.inputTokens??0,completion_tokens:E.usage?.outputTokens??0,total_tokens:E.usage?.totalTokens??0}})}}catch(Q){let Y=Q;if(Y.name==="AbortError")return $.json(uK("Request aborted","invalid_request_error"),400);if(Y.name==="MessageConversionError")return $.json(uK(Y.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",Y.message,Y.stack),$.json(uK(Y.message,"server_error"),500)}});Tv$=Av$});var qv$;var Iv$=B(()=>{qv$={name:"decocms",version:"4.204.26",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.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":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@nats-io/jwt":"0.0.10-5","@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:"^6.0.208","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 S46(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??k46}}var Mv$,k46="https://ph.studio.decocms.com",kv$;var Sv$=B(()=>{y8();ux0();MV();jZ();S$();G$1();Iv$();Mv$=new B1;Mv$.get("/",($)=>{let Z={version:qv$.version,theme:Wu1(),...pD().logo&&{logo:pD().logo},...FK()&&{internalUrl:xq1()},...c0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!c0().firecrawlApiKey,auth:gk$(),posthog:S46(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:!FK()&&c0().sandboxProviderKind==="agent-sandbox"}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});kv$=Mv$});function tg($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function N41($){return(tg($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((X)=>X.charAt(0).toUpperCase()+X.slice(1)).join(" ")}function Cv$($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(tg($))}&sz=${Z}`}function Vv$($,Z){let X=$.trim();if(X.length<=Z)return X;let Q=X.slice(0,Z-1),Y=Q.lastIndexOf(" ");return`${(Y>Z*0.6?Q.slice(0,Y):Q).trimEnd()}\u2026`}function _v$($){let{brand:Z,domain:X,score:Q,verdict:Y}=$,G=typeof Q==="number"?`${Z} commerce report \u2014 ${Math.round(Q)}/100 \xB7 decocms`:`${Z} commerce report \xB7 decocms`,J=`See the full ${Z} scorecard \u2014 SEO, performance, conversion & AEO signals scored by decocms.`,W=Y?.trim()?Vv$(`${Y.trim().replace(/\s+/g," ")} \u2014 ${J}`,200):Vv$(`How does ${X} really perform? ${J}`,200);return{title:G,description:W}}import{z as l0}from"zod";var mC,V46,C46,_46,v46,vv$;var bv$=B(()=>{mC=l0.enum(["good","bad","neutral"]),V46=l0.preprocess(($)=>{if(Array.isArray($))return{kind:"text",value:$.find((X)=>X!==null&&typeof X!=="object")??""};return $!==null&&typeof $==="object"?$:{kind:"text",value:$}},l0.object({kind:l0.enum(["text","number","sparkline","badge","score"]).catch("text"),value:l0.coerce.string().optional(),tone:mC.optional(),muted:l0.boolean().optional(),delta:l0.coerce.string().optional(),deltaDir:l0.enum(["up","down","neutral"]).optional(),points:l0.array(l0.coerce.number()).optional(),label:l0.coerce.string().optional()}).transform(($)=>{if($.kind==="badge"&&$.label==null)$.label=$.value??"";if($.kind==="score"){let Z=Number($.value);if(Number.isNaN(Z))return{...$,kind:"text"}}return $})),C46=l0.preprocess(($)=>{let Z=$;if(Z&&typeof Z==="object"&&!Array.isArray(Z)&&Array.isArray(Z.cells))Z=Z.cells;if(Array.isArray(Z)&&Z.length===1&&Array.isArray(Z[0]))Z=Z[0];if(Array.isArray(Z))return Z;if(Z&&typeof Z==="object")return Object.values(Z);return Z},l0.array(V46)),_46={key:l0.coerce.string(),title:l0.coerce.string(),eyebrow:l0.coerce.string().optional(),headline:l0.coerce.string(),annotation:l0.coerce.string().optional(),methodology:l0.coerce.string().optional(),sources:l0.array(l0.object({name:l0.coerce.string(),logoUrl:l0.coerce.string()})).optional()},v46=l0.discriminatedUnion("template",[l0.object({template:l0.literal("cover"),score:l0.object({value:l0.coerce.number(),max:l0.coerce.number().optional(),grade:l0.coerce.string().optional(),label:l0.coerce.string().optional()}).optional(),brandImage:l0.coerce.string().optional(),screenshot:l0.coerce.string().optional(),mobileScreenshot:l0.coerce.string().optional()}),l0.object({template:l0.literal("cta"),ctaUrl:l0.coerce.string().optional(),ctaLabel:l0.coerce.string().optional(),bullets:l0.array(l0.coerce.string()).optional()}),l0.object({template:l0.literal("series"),points:l0.array(l0.coerce.number()).min(2),xLabels:l0.array(l0.coerce.string()).min(1),unit:l0.coerce.string().optional(),callout:l0.object({index:l0.coerce.number(),value:l0.coerce.string(),tone:mC.optional()})}),l0.object({template:l0.literal("threshold"),value:l0.coerce.string().default(""),metricLabel:l0.coerce.string().optional(),ratio:l0.coerce.number(),thresholdRatio:l0.coerce.number().optional(),thresholdLabel:l0.coerce.string().default(""),tone:mC.optional()}),l0.object({template:l0.literal("stats"),stats:l0.array(l0.object({value:l0.coerce.string(),label:l0.coerce.string(),tone:mC.optional()})).min(1)}),l0.object({template:l0.literal("bars"),items:l0.array(l0.object({value:l0.coerce.string(),label:l0.coerce.string(),ratio:l0.coerce.number(),tone:mC.optional()})).min(1)}),l0.object({template:l0.literal("gauges"),gauges:l0.array(l0.object({label:l0.coerce.string(),value:l0.coerce.string(),status:l0.enum(["good","warn","bad"]).catch("warn"),caption:l0.coerce.string().optional(),ratio:l0.coerce.number().optional()})).min(1)}),l0.object({template:l0.literal("checklist"),checks:l0.array(l0.object({label:l0.coerce.string(),status:l0.enum(["pass","fail","warn"]).catch("fail"),value:l0.coerce.string().optional()})).min(1)}),l0.object({template:l0.literal("table"),columns:l0.array(l0.object({label:l0.coerce.string(),align:l0.enum(["left","right"]).optional()})).min(1),rows:l0.array(C46).min(1),highlightRow:l0.coerce.number().optional()}),l0.object({template:l0.literal("products"),products:l0.array(l0.object({name:l0.coerce.string(),price:l0.coerce.string().optional(),image:l0.coerce.string().optional(),url:l0.coerce.string().optional()})).min(1)}),l0.object({template:l0.literal("list"),entries:l0.array(l0.object({label:l0.coerce.string(),severity:l0.enum(["error","warning","notice"]).catch("notice")})).min(1),moreCount:l0.coerce.number().optional()}),l0.object({template:l0.literal("keywords"),volumeLabel:l0.coerce.string().optional(),keywords:l0.array(l0.object({term:l0.coerce.string(),volume:l0.coerce.string(),position:l0.coerce.number().catch(0)})).min(1)}),l0.object({template:l0.literal("competitor"),metricLabel:l0.coerce.string().optional(),competitors:l0.array(l0.object({name:l0.coerce.string(),value:l0.coerce.string(),tone:mC.optional(),isYou:l0.boolean().optional()})).min(1)}),l0.object({template:l0.literal("scorecard"),rivalLabel:l0.coerce.string().optional(),dimensions:l0.array(l0.object({label:l0.coerce.string(),you:l0.coerce.string(),rival:l0.coerce.string().optional(),rivalName:l0.coerce.string().optional(),tone:mC.optional()})).min(1)})]),vv$=l0.object({..._46,template:v46})});function Ij0($){let Z=[],X=[...$.sections].sort((Y,G)=>Y.position-G.position).map((Y)=>{let G=vv$.safeParse(Y.props);if(G.success)return G.data;let J=G.error.issues[0];return Z.push({section_type:Y.section_type,position:Y.position,reason:J?`${J.path.join(".")||"(root)"}: ${J.message}`:"contract violation"}),null}).filter((Y)=>Y!==null),Q=X.filter((Y)=>Y.template.template!=="cover"&&Y.template.template!=="cta").map((Y)=>({key:Y.key,title:Y.title}));return{deck:{meta:{...$.meta,scores:$.summary?.scores,scannedAt:$.scanned_at,toc:Q},slides:X},drops:Z}}var F41=B(()=>{bv$()});import{join as fv$}from"path";async function f46($){try{let Z=await fetch(`${fW({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(b46)});if(!Z.ok)return null;let X=await Z.json(),{deck:Q}=Ij0(X);if(!Q.slides.length)return null;let Y=Q.slides.find((W)=>W.template.template==="cover"),G=Y?.template,J=G&&G.template==="cover"?G:void 0;return{brand:Q.meta.brand?.trim()||N41($),score:Q.meta.scores?.cover??J?.score?.value,verdict:Y?.annotation?.trim()||Y?.headline?.trim()||void 0}}catch{return null}}function lY($){return $.replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""")}function x46($,Z){let X=tg($),Q=Z?.brand?.trim()||N41(X),Y=Cv$(X,128),J=`${(c0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(X)}`,{title:W,description:K}=_v$({brand:Q,domain:X,score:Z?.score,verdict:Z?.verdict}),H=`${J}/og.png`,N=`${Q} commerce report by decocms`;return[`<title>${lY(W)}</title>`,`<meta name="description" content="${lY(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="${lY(W)}" />`,`<meta property="og:description" content="${lY(K)}" />`,`<meta property="og:url" content="${lY(J)}" />`,`<meta property="og:image" content="${lY(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${lY(N)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${lY(W)}" />`,`<meta name="twitter:description" content="${lY(K)}" />`,`<meta name="twitter:image" content="${lY(H)}" />`,`<meta name="twitter:image:alt" content="${lY(N)}" />`,`<link rel="canonical" href="${lY(J)}" />`,`<link rel="icon" href="${lY(Y)}" sizes="any" />`].join(`
|
|
2730
2730
|
`)}function y46($,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}
|
|
2731
2731
|
</head>`)}function xv$($){let Z=new B1;return Z.get("/:domain/og.png",async(X)=>{let Q=tg(X.req.param("domain")),Y=async()=>{let G=$?Bun.file(fv$($,"report-og-fallback.png")):null;if(!G||!await G.exists())return X.notFound();return X.body(new Uint8Array(await G.arrayBuffer()),200,{"Content-Type":"image/png","Cache-Control":"public, max-age=0, s-maxage=3600"})};try{let G=await fetch(`${fW({})}/api/v2/public/diagnostics/${encodeURIComponent(Q)}/og.png`,{signal:AbortSignal.timeout(g46)}),J=G.headers.get("content-type")??"";if(!G.ok||!J.startsWith("image/")||!G.body)return Y();return X.body(G.body,200,{"Content-Type":J,"Cache-Control":"public, max-age=0, s-maxage=604800"})}catch{return Y()}}),Z.get("/:domain",async(X)=>{let Q=X.req.param("domain"),Y=$?fv$($,"index.html"):null,G=Y?Bun.file(Y):null;if(!G||!await G.exists())return X.notFound();let J=await G.text();try{let W=await f46(tg(Q)),K=x46(Q,W);return X.html(y46(J,K),200,{"Cache-Control":"public, max-age=0, s-maxage=300"})}catch{return X.html(J)}}),Z}var b46=2500,g46=1e4;var yv$=B(()=>{y8();F41();WL();S$()});function ho($,Z){return fetch(`${fW({})}${$}`,Z)}async function h46($,Z,X){let Q=new URLSearchParams;if(Z)Q.set("pw",Z);if(X)Q.set("lang",X);let Y=Q.toString()?`?${Q.toString()}`:"",G=await ho(`/api/v2/public/diagnostics/${encodeURIComponent($)}${Y}`,{headers:{Accept:"application/json"}});if(G.status===404)return{status:"not_found",deck:null,scanned_at:null,drops:[]};if(!G.ok)throw Error(`report read HTTP ${G.status}`);let J=await G.json(),{deck:W,drops:K}=Ij0(J);return{status:W.slides.length?"ready":"empty",deck:W,scanned_at:J.scanned_at,drops:K}}var u46,YF,gv$=async($,Z)=>{if(!$.get("reportUser"))return $.json({error:"Authentication required"},401);await Z();return},hv$;var uv$=B(()=>{y8();IG();WL();F41();u46=new Set(["complete","errored","terminated","unknown"]),YF=new B1;YF.use("*",async($,Z)=>{let X=await j8.api.getSession({headers:$.req.raw.headers});$.set("reportUser",X?.user?.id?{email:X.user.email}:void 0),await Z(),$.header("Cache-Control","private, no-store"),$.header("Vary","Cookie");return});YF.use("/link-token/*",gv$);YF.use("/suggest",gv$);YF.get("/site/:domain",async($)=>{let Z=$.req.param("domain").trim();if(!Z)return $.json({error:"domain is required"},400);let X=$.get("reportUser"),Q=$.req.query("key")?.trim()||void 0,Y=$.req.query("lang")?.trim()||void 0;try{let G=await h46(Z,Q,Y);if($.header("Cache-Control","private, no-store"),X||!G.deck)return $.json(G);return $.json({...G,deck:{...G.deck,slides:G.deck.slides.slice(0,1)},truncated:G.status==="ready"})}catch{return $.json({error:"report read failed"},502)}});YF.post("/run",async($)=>{let Z=$.get("reportUser"),X;try{X=await $.req.json()}catch{return $.json({error:"invalid JSON"},400)}let Q=typeof X.domain==="string"?X.domain.trim():"";if(!Q)return $.json({error:"domain is required"},400);let Y=Z?.email,G=typeof X.distinctId==="string"&&X.distinctId.trim()&&X.distinctId.length<=200?X.distinctId.trim():void 0;try{let J=await ho("/api/v2/diagnostics/run",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${JL({})}`},body:JSON.stringify({url:Q,...Y?{email:Y}:{},distinct_id:G})});if(!J.ok)return $.json({error:`run HTTP ${J.status}`},502);let W=await J.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)}});YF.get("/status",async($)=>{let Z=$.req.query("id");if(!Z)return $.json({error:"id is required"},400);try{let X=await ho(`/api/v2/diagnostics/status?id=${encodeURIComponent(Z)}`,{headers:{Authorization:`Bearer ${JL({})}`}});if(!X.ok)return $.json({error:`status HTTP ${X.status}`},502);let Y=(await X.json()).status??"unknown",G={done:u46.has(Y),status:Y};return $.json(G)}catch{return $.json({error:"status failed"},502)}});YF.get("/link-token/:id",async($)=>{let Z=$.req.param("id");try{let X=await ho(`/api/v2/public/link-tokens/${encodeURIComponent(Z)}`,{headers:{Accept:"application/json"}});if(X.status===404)return $.json(null);if(!X.ok)return $.json({error:`link token HTTP ${X.status}`},502);return $.json(await X.json())}catch{return $.json({error:"link token resolve failed"},502)}});YF.get("/suggest",async($)=>{let Z=($.req.query("q")??"").trim().slice(0,64);if(Z.length<2)return $.json({suggestions:[]});try{let X=await ho(`/api/v2/public/suggest?q=${encodeURIComponent(Z)}`,{headers:{Accept:"application/json"}});if(!X.ok)return $.json({suggestions:[]});let Q=await X.json();return $.json({suggestions:Array.isArray(Q.suggestions)?Q.suggestions:[]})}catch{return $.json({suggestions:[]})}});hv$=YF});import{createHmac as c46,timingSafeEqual as l46}from"crypto";function lv$($,Z,X,Q=Date.now()){if(!Z||!X)return!1;let Y,G=[];for(let H of Z.split(",")){let N=H.indexOf("=");if(N<=0)continue;let F=H.slice(0,N).trim(),U=H.slice(N+1).trim();if(F==="t")Y=U;else if(F==="v1")G.push(U)}if(!Y||G.length===0)return!1;let J=Number(Y);if(!Number.isFinite(J)||Math.abs(Q/1000-J)>d46)return!1;let W=c46("sha256",X).update(`${Y}.${$}`).digest("hex"),K=Buffer.from(W,"hex");return G.some((H)=>{let N=Buffer.from(H,"hex");return K.length===N.length&&l46(K,N)})}function dv$($){let Z;try{Z=JSON.parse($)}catch{return null}let X=QJ(Z),Q=QJ(QJ(X?.data)?.object);if(!X||typeof X.type!=="string"||!Q)return null;return{id:cK(X.id),type:X.type,created:typeof X.created==="number"?X.created:void 0,livemode:typeof X.livemode==="boolean"?X.livemode:void 0,data:{object:Q}}}function mv$($){switch($){case"active":case"trialing":return"active";case"past_due":return"past_due";default:return"canceled"}}function cK($){return typeof $==="string"?$:void 0}function QJ($){return typeof $==="object"&&$!==null?$:void 0}function qj0($){return typeof $==="number"?new Date($*1000):null}function O41($){return cK($)??cK(QJ($)?.id)}function m46($){return O41($.subscription)??cK(QJ(QJ($.parent)?.subscription_details)?.subscription)}function i46($){let Z=qj0($.current_period_end);if(Z)return Z;let X=QJ($.items)?.data;if(!Array.isArray(X))return null;let Q=0;for(let Y of X){let G=QJ(Y)?.current_period_end;if(typeof G==="number"&&G>Q)Q=G}return Q>0?new Date(Q*1000):null}function U41($,Z){let X=qj0($.created);return!!X&&!!Z.lastStripeEventAt&&X<Z.lastStripeEventAt}function w41($,Z){let X=qj0($.created);if(!X)return;return Z.lastStripeEventAt&&Z.lastStripeEventAt>X?void 0:X}async function n46($,Z){let X=Z.data.object;switch(Z.type){case"checkout.session.completed":case"checkout.session.async_payment_succeeded":{let Q=cK(QJ(X.metadata)?.orgId);if(!Q)return{handled:!1,reason:"no orgId"};if(cK(QJ(X.metadata)?.kind)==="topup"){if(X.mode!=="payment")return{handled:!1,reason:"topup with wrong mode"};if(cK(X.payment_status)!=="paid")return{handled:!1,reason:"payment not confirmed"};let J=cK(X.id);if(!J)return console.error("stripe webhook: topup session without id",{eventId:Z.id,organizationId:Q}),{handled:!1,reason:"topup session without id"};let W=Number(QJ(X.metadata)?.creditCents);if(!Number.isInteger(W)||W<=0)return console.error("stripe webhook: paid topup with bad metadata \u2014 credit NOT applied",{eventId:Z.id,organizationId:Q,creditCents:QJ(X.metadata)?.creditCents}),{handled:!1,reason:"bad topup metadata"};return{handled:!0,organizationId:Q,topUp:{creditCents:W,referenceId:`stripe-topup:${J}`}}}if(X.mode!=="subscription")return{handled:!1,reason:"not a subscription checkout"};if(cK(X.payment_status)!=="paid")return{handled:!1,reason:"payment not confirmed"};let Y=await $.getBilling(Q);if(!Y)return{handled:!1,reason:"unknown org"};let G=O41(X.subscription);if(Y.stripeSubscriptionId&&G&&Y.stripeSubscriptionId!==G)return console.error("stripe webhook: refused checkout rebind",{organizationId:Q,eventId:Z.id}),{handled:!1,reason:"org already bound to another subscription",orphanSubscriptionId:G};if(U41(Z,Y))return{handled:!1,reason:"stale event"};return await $.updateStripeState(Q,{stripeCustomerId:O41(X.customer),stripeSubscriptionId:G,status:"active",lastStripeEventAt:w41(Z,Y)}),{handled:!0,organizationId:Q}}case"customer.subscription.updated":case"customer.subscription.deleted":{let Q=cK(X.id);if(!Q)return{handled:!1,reason:"no sub id"};let Y=await $.getBillingByStripeSubscriptionId(Q);if(!Y)return{handled:!1,reason:"unknown subscription"};let G=Z.type==="customer.subscription.deleted";if(!G&&U41(Z,Y))return{handled:!1,reason:"stale event"};let J=G?"canceled":mv$(X.status);return await $.updateStripeState(Y.organizationId,{status:J,currentPeriodEnd:i46(X),...G&&{stripeSubscriptionId:null},lastStripeEventAt:w41(Z,Y)}),{handled:!0,organizationId:Y.organizationId}}case"invoice.paid":{let Q=m46(X);if(!Q)return{handled:!1,reason:"no sub id"};let Y=await $.getBillingByStripeSubscriptionId(Q);if(!Y)return{handled:!1,reason:"unknown subscription"};if(U41(Z,Y))return{handled:!1,reason:"stale event"};return await $.updateStripeState(Y.organizationId,{status:"active",currentPeriodEnd:qj0(X.period_end),lastStripeEventAt:w41(Z,Y)}),{handled:!0,organizationId:Y.organizationId}}default:return{handled:!1,reason:`unhandled event ${Z.type}`}}}function p46($,Z){if(!Z.handled||$.livemode===!1)return null;let X=$.data.object;if(Z.topUp)return{name:"credits_topup_succeeded",organizationId:Z.organizationId,properties:{credit_cents:Z.topUp.creditCents}};switch($.type){case"checkout.session.completed":case"checkout.session.async_payment_succeeded":return{name:"subscription_started",organizationId:Z.organizationId,properties:{}};case"customer.subscription.deleted":return{name:"subscription_canceled",organizationId:Z.organizationId,properties:{}};case"customer.subscription.updated":return{name:"subscription_updated",organizationId:Z.organizationId,properties:{status:mv$(X.status),...typeof X.cancel_at_period_end==="boolean"?{cancel_at_period_end:X.cancel_at_period_end}:{}}};case"invoice.paid":if(X.billing_reason==="subscription_create")return null;return{name:"subscription_renewed",organizationId:Z.organizationId,properties:{}};default:return null}}function cv$($,Z){let X=p46($,Z);if(!X)return;nJ({event:X.name,organizationId:X.organizationId,...$.id?{uuid:Bl1(`stripe:${$.id}:${X.name}`)}:{},...$.created?{timestamp:new Date($.created*1000)}:{},properties:X.properties})}async function iv$($){let Z=new CW(m8().db),X=await n46(Z,$);if(!(X.handled&&X.topUp))cv$($,X);if(X.handled&&X.topUp)await TF$({organizationId:X.organizationId,amountCents:X.topUp.creditCents,referenceId:X.topUp.referenceId}),cv$($,X);if(!X.handled&&X.orphanSubscriptionId)try{await Vt1(X.orphanSubscriptionId),console.error("stripe webhook: canceled orphan subscription",{subscriptionId:X.orphanSubscriptionId,eventId:$.id})}catch(Q){if(!(Q instanceof X3&&(Q.status===400||Q.status===404)))throw Q}return X}var d46=300;var nv$=B(()=>{LG();f4();l80();Vm();$r0()});var t46=1048576,B41;var pv$=B(()=>{y8();mO();S$();nv$();B41=new B1;B41.post("/webhook",HZ({maxSize:t46,onError:($)=>$.json({error:"payload too large"},413)}),async($)=>{let Z=c0().stripeWebhookSecret;if(!Z)return $.json({error:"stripe billing not configured"},503);let X=await $.req.text();if(!lv$(X,$.req.header("stripe-signature"),Z))return $.json({error:"invalid signature"},400);let Y=dv$(X);if(!Y)return $.json({error:"invalid payload"},400);let G=await iv$(Y);return console.log("stripe webhook",{eventId:Y.id,type:Y.type,livemode:Y.livemode,...G}),$.json({received:!0})})});import{timingSafeEqual as o46}from"crypto";function a46($,Z,X){if(!Z?.startsWith("sha256="))return!1;let Q=new Bun.CryptoHasher("sha256",X).update($).digest("hex"),Y=Z.slice(7);if(Y.length!==Q.length)return!1;return o46(Buffer.from(Y),Buffer.from(Q))}var r46=5242880,D41;var tv$=B(()=>{y8();mO();_i();D41=new B1;D41.post("/webhook",HZ({maxSize:r46,onError:($)=>$.json({error:"payload too large"},413)}),async($)=>{let Z=process.env.GITHUB_WEBHOOK_SECRET;if(!Z)return $.json({error:"github webhook not configured"},503);let X=await $.req.text();if(!a46(X,$.req.header("x-hub-signature-256"),Z))return $.json({error:"invalid signature"},400);if($.req.header("x-github-event")!=="push")return $.json({ok:!0,ignored:"event"});let Q;try{Q=JSON.parse(X)}catch{return $.json({error:"invalid payload"},400)}let Y=Q.ref,G=Q.repository?.full_name;if(!Y||!G)return $.json({ok:!0,ignored:"shape"});let W=(await kd0())?.markTenantPoolsDirty(G,Y)??[];return $.json({ok:!0,pools:W})})});function ov$($,Z){if(Z.startsWith("text/html")||Z.startsWith("image/svg"))$.set("Content-Security-Policy","sandbox allow-scripts allow-modals allow-same-origin")}var rv$,s46,e46,av$;var sv$=B(()=>{y8();iJ();kx();Sf();rv$=new B1,s46=["range","if-none-match","if-modified-since"],e46=["content-type","content-length","content-range","accept-ranges","etag","last-modified"];rv$.get("/:org/files/*",async($)=>{let Z=$.get("studioContext"),X=Z.organization?.id;if(!Z.auth?.user?.id){if(Mg($))return $.redirect(`/login?next=${encodeURIComponent($.req.path)}`,302);throw new e1(401,{message:"Authentication required"})}if(!X)throw new e1(401,{message:"Organization context required"});let Q=$.req.path.replace(/^.*\/files\//,"");if(!Q)throw new e1(400,{message:"Missing file key"});let Y=await Kn(Q,Z);if(!Y)throw new e1(503,{message:"Object storage not configured"});if(Y.startsWith("data:")&&aJ()){let K=Y.match(/^data:([^;]+);base64,(.+)$/s);if(!K)throw new e1(500,{message:"Invalid data URL from storage"});let[,H,N]=K,F=Buffer.from(N,"base64"),U=new Headers({"Content-Type":H,"Cache-Control":"private, max-age=86400"});return ov$(U,H),new Response(F,{status:200,headers:U})}let G=new Headers;for(let K of s46){let H=$.req.header(K);if(H)G.set(K,H)}let J=await fetch(Y,{headers:G});if(J.status===403||J.status===404)throw new e1(404,{message:"File not found"});if(!J.ok&&J.status!==304&&J.status!==416)throw console.error(`[files] upstream storage error ${J.status} for key:`,Q),new e1(502,{message:"Upstream storage error"});let W=new Headers;for(let K of e46){let H=J.headers.get(K);if(H)W.set(K,H)}return W.set("Cache-Control","private, max-age=86400"),ov$(W,W.get("content-type")??""),new Response(J.body,{status:J.status,headers:W})});av$=rv$});var uo=C((iC)=>{var $66=iC&&iC.__createBinding||(Object.create?function($,Z,X,Q){if(Q===void 0)Q=X;var Y=Object.getOwnPropertyDescriptor(Z,X);if(!Y||("get"in Y?!Z.__esModule:Y.writable||Y.configurable))Y={enumerable:!0,get:function(){return Z[X]}};Object.defineProperty($,Q,Y)}:function($,Z,X,Q){if(Q===void 0)Q=X;$[Q]=Z[X]}),Z66=iC&&iC.__exportStar||function($,Z){for(var X in $)if(X!=="default"&&!Object.prototype.hasOwnProperty.call(Z,X))$66(Z,$,X)};Object.defineProperty(iC,"__esModule",{value:!0});Z66($Y(),iC)});var Zb$=C((ev$)=>{Object.defineProperty(ev$,"__esModule",{value:!0});ev$.version=void 0;ev$.version="3.4.0"});var Yb$=C((lK)=>{var X66=lK&&lK.__importDefault||function($){return $&&$.__esModule?$:{default:$}};Object.defineProperty(lK,"__esModule",{value:!0});lK.NodeTransport=lK.VERSION=void 0;lK.nodeResolveHost=K66;var d6=uo(),Q66=z0("net"),L41=z0("tls"),Y66=z0("path"),Xb$=z0("fs"),G66=X66(z0("dns")),J66=Zb$();lK.VERSION=J66.version;var W66="nats.js";class Qb${socket;version;lang;yields=[];signal=(0,d6.deferred)();closedNotification=(0,d6.deferred)();options;connected=!1;tlsName="";done=!1;closeError;constructor(){this.lang=W66,this.version=lK.VERSION}async connect($,Z){this.tlsName=$.tlsName,this.options=Z;let{tls:X}=this.options,{handshakeFirst:Q}=X||{};try{if(Q===!0)this.socket=await this.tlsFirst($);else this.socket=await this.dial($);if(this.done)this.socket?.destroy();let Y=await this.peekInfo();(0,d6.checkOptions)(Y,Z);let{tls_required:G,tls_available:J}=Y,W=J===!0&&Z.tls!==null;if(!Q&&(G||W))this.socket=await this.startTLS();if(this.done)this.socket?.destroy();if(G&&this.socket.encrypted!==!0)throw d6.errors.InvalidArgumentError.format("tls","is not available on this server");return this.connected=!0,this.setupHandlers(),this.signal.resolve(),Promise.resolve()}catch(Y){let G=Y;if(!G)G=new d6.errors.ConnectionError("error connecting - node provided an undefined error");let{code:J}=G,W=J==="ECONNREFUSED"?new d6.errors.ConnectionError("connection refused",{cause:G}):G;throw this.socket?.destroy(),W}}dial($){let Z=(0,d6.deferred)(),X,Q=(0,Q66.createConnection)($.port,$.hostname,()=>{Z.resolve(Q),Q.removeAllListeners()});return Q.on("error",(Y)=>{X=Y}),Q.on("close",()=>{Q.removeAllListeners(),Z.reject(X)}),Q.setNoDelay(!0),Z}get isClosed(){return this.done}close($){return this._closed($,!1)}peekInfo(){let $=(0,d6.deferred)(),Z;return this.socket.on("data",(X)=>{this.yields.push(X);let Q=d6.DataBuffer.concat(...this.yields),Y=(0,d6.extractProtocolMessage)(Q);if(Y!=="")try{let G=d6.INFO.exec(Y);if(!G)throw Error("unexpected response from server");let J=JSON.parse(G[1]);$.resolve(J)}catch(G){$.reject(G)}finally{this.socket.removeAllListeners()}}),this.socket.on("error",(X)=>{Z=X}),this.socket.on("close",()=>{this.socket.removeAllListeners(),$.reject(Z)}),$}loadFile($){if(!$)return Promise.resolve();let Z=(0,d6.deferred)();try{if($=(0,Y66.resolve)($),!(0,Xb$.existsSync)($))Z.reject(Error(`${$} doesn't exist`));(0,Xb$.readFile)($,(X,Q)=>{if(X)return Z.reject(X);Z.resolve(Q)})}catch(X){Z.reject(X)}return Z}async loadClientCerts(){let $={},{certFile:Z,cert:X,caFile:Q,ca:Y,keyFile:G,key:J}=this.options.tls;try{if(Z){let W=await this.loadFile(Z);if(W)$.cert=W}else if(X)$.cert=X;if(G){let W=await this.loadFile(G);if(W)$.key=W}else if(J)$.key=J;if(Q){let W=await this.loadFile(Q);if(W)$.ca=[W]}else if(Y)$.ca=Y;return Promise.resolve($)}catch(W){return Promise.reject(W)}}async tlsFirst($){let Z,X={servername:this.tlsName,rejectUnauthorized:!0};if(this.socket)X.socket=this.socket;if(typeof this.options.tls==="object")try{let Y=await this.loadClientCerts()||{};X=(0,d6.extend)(X,this.options.tls,Y)}catch(Y){return Promise.reject(new d6.errors.ConnectionError(Y.message,{cause:Y}))}let Q=(0,d6.deferred)();try{let Y=(0,L41.connect)($.port,$.hostname,X,()=>{Y.removeAllListeners(),Q.resolve(Y)});Y.on("error",(G)=>{Z=G}),Y.on("secureConnect",()=>{if(X.rejectUnauthorized===!1)return;if(!Y.authorized)throw Y.authorizationError}),Y.on("close",()=>{Q.reject(Z),Y.removeAllListeners()}),Y.setNoDelay(!0)}catch(Y){Q.reject(new d6.errors.ConnectionError(Y.message,{cause:Y}))}return Q}async startTLS(){let $,Z={socket:this.socket,servername:this.tlsName,rejectUnauthorized:!0};if(typeof this.options.tls==="object")try{let Q=await this.loadClientCerts()||{};Z=(0,d6.extend)(Z,this.options.tls,Q)}catch(Q){return Promise.reject(new d6.errors.ConnectionError(Q.message,{cause:Q}))}let X=(0,d6.deferred)();try{let Q=(0,L41.connect)(Z,()=>{Q.removeAllListeners(),X.resolve(Q)});Q.on("error",(Y)=>{$=Y}),Q.on("secureConnect",()=>{if(Z.rejectUnauthorized===!1)return;if(!Q.authorized)throw Q.authorizationError}),Q.on("close",()=>{X.reject($),Q.removeAllListeners()})}catch(Q){X.reject(new d6.errors.ConnectionError(Q.message,{cause:Q}))}return X}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,d6.render)($[Z])}`);yield $[Z]}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,d6.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 L41.TLSSocket}_send($){if(this.isClosed||this.socket===void 0)return Promise.resolve();if(this.options.debug)console.info(`< ${(0,d6.render)($)}`);let Z=(0,d6.deferred)();try{this.socket.write($,(X)=>{if(X){if(this.options.debug)console.error(`!!! ${(0,d6.render)($)}: ${X}`);return Z.reject(X)}return Z.resolve()})}catch(X){if(this.options.debug)console.error(`!!! ${(0,d6.render)($)}: ${X}`);Z.reject(X)}return Z}send($){this._send($).catch((X)=>{})}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(X){if(this.options.debug)console.log("transport close terminated with an error",X)}try{if(this.socket)this.socket.removeAllListeners(),this.socket?.destroy(),this.socket=void 0}catch(X){console.log(X)}this.done=!0,this.closedNotification.resolve(this.closeError)}closed(){return this.closedNotification}}lK.NodeTransport=Qb$;function K66($){let Z=(0,d6.deferred)();return G66.default.lookup($,{all:!0},(X,Q)=>{if(X){Z.reject(X);return}let Y=[];for(let G of Q)Y.push(G.address);if(Y.length===0)Y.push($);Z.resolve(Y)}),Z}});var Hb$=C((Kb$)=>{Object.defineProperty(Kb$,"__esModule",{value:!0});Kb$.connect=H66;var Gb$=Yb$(),Jb$=uo(),Wb$=uo();function H66($={}){if((0,Wb$.hasWsProtocol)($))return Promise.reject(Wb$.errors.InvalidArgumentError.format("servers","node client doesn't support websockets, use the 'wsconnect' function instead"));return(0,Jb$.setTransportFactory)({factory:()=>{return new Gb$.NodeTransport},dnsResolveFn:Gb$.nodeResolveHost}),Jb$.NatsConnectionImpl.connect($)}});var Nb$=C((GF)=>{var F66=GF&&GF.__createBinding||(Object.create?function($,Z,X,Q){if(Q===void 0)Q=X;var Y=Object.getOwnPropertyDescriptor(Z,X);if(!Y||("get"in Y?!Z.__esModule:Y.writable||Y.configurable))Y={enumerable:!0,get:function(){return Z[X]}};Object.defineProperty($,Q,Y)}:function($,Z,X,Q){if(Q===void 0)Q=X;$[Q]=Z[X]}),U66=GF&&GF.__exportStar||function($,Z){for(var X in $)if(X!=="default"&&!Object.prototype.hasOwnProperty.call(Z,X))F66(Z,$,X)};Object.defineProperty(GF,"__esModule",{value:!0});GF.connect=void 0;var w66=Hb$();Object.defineProperty(GF,"connect",{enumerable:!0,get:function(){return w66.connect}});U66(uo(),GF)});function Ob$($){let Z=$?.connectFn??L66,X=null,Q=null,Y=!1,G=!1,J=!1,W=[];function K(){return X!==null&&!X.isClosed()&&!X.isDraining()&&!J}function H(){console.log(`[NatsProvider] fireReady: ${W.length} callbacks`);for(let U of W)try{U()}catch{}}function N(U){(async()=>{for await(let w of U.status())if(w.type==="disconnect")console.log("[NatsProvider] Disconnected"),J=!0;else if(w.type==="reconnect")console.log("[NatsProvider] Reconnected, re-firing ready callbacks"),J=!1,Q=null,H()})().catch(()=>{})}async function F(U,w){let O=0;while(!G)try{X=await Z({servers:U,timeout:D66,reconnect:!0,maxReconnectAttempts:-1,...w?{authenticator:w}:{}}),console.log(`[NatsProvider] Connected to ${X.getServer()} after ${O} attempt(s)`),Q=null,J=!1,N(X),H();return}catch{O++;let D=HX(B66,O66,O-1,2,0.5);await y$(D)}}return{init(U,w){if(Y)return;Y=!0,G=!1;let O=w?.creds?Fb$.credsAuthenticator(new TextEncoder().encode(w.creds)):void 0;F(U,O).catch(()=>{})},isConnected(){return K()},getConnection(){return K()?X:null},getJetStream(){if(!K())return null;if(!Q)Q=wb$.jetstream(X);return Q},onReady(U){if(W.push(U),K())try{U()}catch{}},async drain(){if(G=!0,Y=!1,Q=null,J=!1,X){let U=X;X=null,await U.drain().catch(()=>{})}}}}function L66($){return Ub$.connect($)}var Fb$,Ub$,wb$,O66=100,B66=3000,D66=3000;var Bb$=B(()=>{E6();Fb$=S(zh(),1),Ub$=S(Nb$(),1),wb$=S(FB(),1)});function E41($,Z){return`${$}.${Z}`}class j41{cache;constructor($){this.cache=wg({ttlMs:$?.ttlMs??E66,maxSize:$?.maxSize??j66})}async get($,Z){return this.cache.get(E41($,Z))??null}async set($,Z,X){this.cache.set(E41($,Z),X)}async invalidate($,Z){this.cache.delete(E41($,Z))}teardown(){this.cache.clear()}}var E66=600000,j66=5000;var Db$=()=>{};function Mj0($,Z){return`${$}:${Z}`}function z41($){let Z=wg({ttlMs:$?.ttlMs??z66,maxSize:$?.maxSize??P66}),X=$?.getConnection,Q=crypto.randomUUID(),Y=new TextEncoder,G=new TextDecoder,J=null;function W(K,H){let N=X?.();if(!N)return;try{N.publish(Lb$,Y.encode(JSON.stringify({organizationId:K,keyId:H,originId:Q})))}catch(F){console.warn("[ProviderKeyCache] Publish failed (non-critical):",F)}}return{get(K,H){return Z.get(Mj0(K,H))},set(K,H,N){Z.set(Mj0(K,H),N)},invalidate(K,H){Z.delete(Mj0(K,H)),W(K,H)},start(){if(J)return;let K=X?.();if(!K)return;J=K.subscribe(Lb$),(async()=>{for await(let H of J)try{let N=JSON.parse(G.decode(H.data));if(N.originId===Q)continue;Z.delete(Mj0(N.organizationId,N.keyId))}catch{}})().catch(console.error)},teardown(){J?.unsubscribe(),J=null,Z.clear()}}}var Lb$="studio.ai-provider-keys.invalidate",z66=30000,P66=5000;var Eb$=()=>{};class P41{options;subscriptions=[];onCancel=null;encoder=new TextEncoder;originId=crypto.randomUUID();seenMessageIds=new Set;constructor($){this.options=$}async start($){if($)this.onCancel=$;if(this.subscriptions.length>0)return;if(!this.onCancel)return;let Z=this.options.getConnection();if(!Z)return;let X=new TextDecoder;this.subscriptions=jb$.map((Q)=>Z.subscribe(Q));for(let Q of this.subscriptions)(async()=>{for await(let Y of Q)try{let G=JSON.parse(X.decode(Y.data));if(G.originId===this.originId)continue;if(G.messageId&&this.hasSeen(G.messageId))continue;this.onCancel?.(G.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 X=this.encoder.encode(JSON.stringify({taskId:$,originId:this.originId,messageId:crypto.randomUUID()}));for(let Q of jb$)Z.publish(Q,X)}catch(Z){console.warn("[NatsCancelBroadcast] Publish failed (non-critical):",Z)}}publishControlFrame($,Z){}async stop(){for(let $ of this.subscriptions)$.unsubscribe();this.subscriptions=[],this.seenMessageIds.clear(),this.onCancel=null}hasSeen($){if(this.seenMessageIds.has($))return!0;if(this.seenMessageIds.add($),this.seenMessageIds.size>1000){let Z=this.seenMessageIds.values().next().value;if(Z)this.seenMessageIds.delete(Z)}return!1}}var jb$;var zb$=B(()=>{jb$=["studio.decopilot.cancel","mesh.decopilot.cancel"]});var Pb$=($)=>{let Z;return()=>Z??=$()},A41,T41;var Ab$=B(()=>{Z5();A41=Pb$(()=>K8.createHistogram("decopilot.stream.encode_ms",{description:"Per-chunk JSON.stringify+encode time for decopilot stream",unit:"ms"})),T41=Pb$(()=>K8.createCounter("decopilot.stream.published_chunks",{description:"Logical decopilot stream chunks published to JetStream",unit:"{chunks}"}))});function k66(){return{name:IN,subjects:[`${Tw0}.>`],storage:i3.StorageType.File,max_age:R66,max_bytes:q66,max_msgs_per_subject:M66,discard:i3.DiscardPolicy.Old,retention:i3.RetentionPolicy.Limits,duplicate_window:I66,num_replicas:1}}class Ib${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 Tb$($){let Z=Rb$.headers();for(let[X,Q]of Object.entries($))Z.set(X,Q);return Z}function _66($,Z){let X=0;return{publish(Q,Y,G,J){Q.publish(Y,G,J?{headers:J}:void 0).catch((W)=>{if(X++,T66().add(1,{"org.id":Z??"unknown"}),X===1||X%100===0)console.warn(`[Decopilot] JetStream publish failed for thread ${$} (${X} total):`,W)})},get errorCount(){return X}}}function v66($){if(!($ instanceof Error))return!1;if($.name==="TimeoutError")return!0;return/timeout|no responders|503/i.test($.message)}class R41{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=k66(),X=await gZ(async()=>{let Q=this.options.getJetStreamManager?await this.options.getJetStreamManager():await i3.jetstreamManager($);try{await Q.streams.info(IN),await Q.streams.update(IN,Z)}catch(Y){if(Y instanceof Error&&Y.message.includes("stream not found"))await Q.streams.add(Z);else if(Y instanceof Error&&/can ?not change.*storage|storage type/i.test(Y.message))await Q.streams.delete(IN),await Q.streams.add(Z);else throw Y}return Q},{maxAttempts:5,minTimeout:250,maxTimeout:4000,jitter:0.5,isRetriable:v66});this.js=this.options.getJetStream(),this.jsm=X,console.log(`[Decopilot] StreamBuffer.init ${this.js?"ready":"degraded (js=null)"}`)}pump($,Z,X,Q){let Y=this.js;if(!Y)return console.warn(`[Decopilot] pump: JetStream client unavailable for thread ${Z}; chunks NOT published to NATS`),Promise.resolve();let G=_66(Z,Q),J=!1,W=()=>{if(J)return;J=!0;let H=K3$(Z);Y.publish(H.subject,H.data).catch(()=>{})};X.addEventListener("abort",W,{once:!0});let K=(H)=>{let N=performance.now(),F=si0(H,{runId:Z}),U=performance.now()-N;if(A41().record(U),T41().add(1,{"org.id":Q??"unknown"}),C66?.record(U,F.reduce((w,O)=>w+O.data.length,0)),F.length===0){console.warn(`[Decopilot] dropping oversized stream chunk for thread ${Z}`);return}for(let w of F)G.publish(Y,w.subject,w.data,w.headers?Tb$(w.headers):void 0)};return(async()=>{let H=$.getReader(),N=0,F=0,U;try{while(!0){let{done:w,value:O}=await H.read();if(w)break;if(K(O),F++,++N>=64)N=0,await new Promise((D)=>setImmediate(D))}}catch(w){U=w,console.warn(`[Decopilot] stream pump error for thread ${Z}:`,w?.message??w)}finally{if(H.releaseLock(),W(),V66)console.warn(JSON.stringify({msg:"decopilot-stream-diag",event:"pump-done",taskId:Z,publishedChunks:F,publishErrors:G.errorCount}))}if(U!==void 0)throw U})()}async publishRawChunk($,Z,X){let Q=this.js;if(!Q)return!1;let Y=performance.now(),G=si0(Z,{runId:$,dedup:X});if(A41().record(performance.now()-Y),T41().add(1),G.length===0)return console.warn(`[Decopilot] dropping oversized raw chunk for thread ${$} (> MAX_CHUNKED_BYTES)`),!0;for(let J of G)await Q.publish(J.subject,J.data,{...J.headers?{headers:Tb$(J.headers)}:{},...J.msgId?{msgID:J.msgId}:{}});return!0}async publishDone($,Z,X){let Q=this.js;if(!Q)return!1;let Y=W3$({runId:$,fenceToken:Z,finalSeq:X});return await Q.publish(Y.subject,Y.data,{msgID:Y.msgId}),!0}async createTailStream($,Z,X){let Q=this.js;if(!Q)return console.warn(`[Decopilot] createTailStream: JetStream client unavailable for thread ${$}; no live tail`),null;let Y=X?.deliverPolicy==="new"?i3.DeliverPolicy.New:i3.DeliverPolicy.All,G=X?.closeOnDone??!1,J=YO($),W;try{W=await(await Q.consumers.get(IN,{filter_subjects:J,deliver_policy:Y})).consume()}catch(D){return console.warn("[Decopilot] JetStream tail unavailable (non-critical):",D?.message??D),null}let N=kw0({messages:async function*(){try{for await(let D of W)yield{subject:D.subject,data:D.data,headers:D.headers}}finally{W.stop()}}(),onCancel:()=>W.stop()}).pipeThrough(Rw0()).pipeThrough(Iw0()).getReader(),F=!1,U=()=>{if(F)return;F=!0;try{N.releaseLock()}catch{}},w=!1,O=()=>{if(w)return;w=!0,W.stop(),N.cancel().catch(()=>{}),U()};return Z?.addEventListener("abort",O,{once:!0}),new ReadableStream({async pull(D){for(;;){let{done:L,value:E}=await N.read();if(L){O(),D.close();return}let j=E;if(j.kind==="done"){if(G){O(),D.close();return}continue}D.enqueue(j.chunk);return}},cancel(){O()}})}purge($){if(!this.jsm)return;this.jsm.streams.purge(IN,{filter:YO($)}).catch(()=>{})}teardown(){this.js=null,this.jsm=null}}var i3,Rb$,A66=($)=>{let Z;return()=>Z??=$()},T66,R66=86400000000000,I66=120000000000,q66=4294967296,M66=500000,S66,V66,C66;var qb$=B(()=>{E6();ei0();Sw0();qw0();Z5();Ab$();i3=S(FB(),1),Rb$=S(zh(),1),T66=A66(()=>K8.createCounter("decopilot.stream.publish_errors",{description:"Number of JetStream publish failures for decopilot stream chunks",unit:"{errors}"}));S66=process.env.STREAM_ENCODE_TRACE==="1",V66=process.env.DECOPILOT_STREAM_TRACE==="1";C66=S66?new Ib$:null});function kj0($,Z,X,Q){if(!Q)return!1;return $.emit(Z,OW(X,Q.status,{title:Q.title??void 0,virtualMcpId:Q.virtual_mcp_id??void 0,createdBy:Q.created_by??void 0,triggerId:Q.trigger_id??null,branch:Q.branch??null,harnessId:Q.harness_id??void 0,createdAt:Q.created_at,updatedAt:Q.updated_at})),!0}var Mb$=B(()=>{L8()});class I41{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 h66($){return $ instanceof LQ}class q41{taskBoard;contextFactory;billing;options;timer=null;running=!1;cursor=null;constructor($,Z,X,Q={}){this.taskBoard=$;this.contextFactory=Z;this.billing=X;this.options=Q}start(){if(this.timer)return;let $=this.options.intervalMs??b66;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??x66,X=this.options.itemIntervalMs??f66,Q=await this.taskBoard.listItemsPendingReview(Z,this.cursor,new Date(Date.now()-X)),Y=Q.at(-1);this.cursor=Q.length===Z&&Y?{updatedAt:Y.updatedAt,id:Y.id}:null;for(let{id:G,organizationId:J}of Q)try{if(await this.reconcileItem(G,J))$++}catch(W){console.error(`[task-board-review-sweeper] ${G} failed`,W)}await this.reapNeverStartedThreads(Z),$+=await this.dispatchDueRetries(Z),await this.reactToUnhandledFailures(Z)}catch(Z){console.error("[task-board-review-sweeper] sweep failed",Z)}finally{this.running=!1}return $}async reapNeverStartedThreads($){try{let Z=await this.taskBoard.failNeverStartedLinkedThreads($,new Date(Date.now()-YG$),vn0);for(let X of Z)console.warn(`[task-board-review-sweeper] failed never-started thread ${X.threadId} on ${X.itemId}`)}catch(Z){console.error("[task-board-review-sweeper] reaping failed",Z)}}async reactToUnhandledFailures($){let Z=await this.taskBoard.listItemsStuckAfterFailure($,new Date(Date.now()-g66));for(let{id:X,organizationId:Q,threadId:Y}of Z)try{console.warn(`[task-board-review-sweeper] reacting to an unhandled failure on ${X}`),await Pi0(this.taskBoard,Y,Q),await Ai0(this.taskBoard,this.billing,Y,Q)}catch(G){console.error(`[task-board-review-sweeper] unhandled-failure reaction for ${X} failed`,G)}}async dispatchDueRetries($){let Z=0,X=await this.taskBoard.listItemsDueForRetry($,new Date);for(let{id:Q,organizationId:Y,attempts:G}of X)try{if(!await this.taskBoard.claimDueRetry(Q,Y,new Date))continue;let J=await this.taskBoard.getById(Q,Y);if(!J||J.status!=="in_progress"||J.assigneeId!==d4)continue;let W=await this.contextFactory(Y,J.assignedBy??J.createdBy);if(!W)continue;await qN(W,J,{runClass:"retry"}),Z++,console.warn(`[task-board-review-sweeper] re-dispatched ${Q} after a failure (attempt ${G})`)}catch(J){if(console.error(`[task-board-review-sweeper] retry dispatch for ${Q} failed`,J),h66(J)){await this.returnToTodo(Q,Y,J instanceof Error?J.message:String(J));continue}await this.taskBoard.scheduleRunRetry(Q,Y,G,new Date(Date.now()+y66)).catch((W)=>console.error(`[task-board-review-sweeper] re-arming ${Q} failed`,W))}return Z}async returnToTodo($,Z,X){try{let Q=await this.taskBoard.getById($,Z);if(!Q||Q.status!=="in_progress")return;let Y=await this.taskBoard.returnToTodoAfterFailure($,Z,Q.updatedBy);if(!Y)return;await this.taskBoard.recordActivity({taskBoardItemId:$,action:"status_changed",actorId:null,data:{from:"in_progress",to:"todo",reason:X}}).catch(()=>{}),x4(Z,Y)}catch(Q){console.error(`[task-board-review-sweeper] returning ${$} to todo failed`,Q)}}async reconcileItem($,Z){let X=await this.taskBoard.getById($,Z);if(!X)return!1;if(X.status!=="in_review"||X.assigneeId!==d4)return!1;await this.taskBoard.markSwept($,Z);let Q=await this.taskBoard.listPrs($,Z);if(Q.length===0)return!1;let Y=await this.contextFactory(Z,X.assignedBy??X.createdBy);if(!Y)return!1;if(await BW$(Y,X))return!0;let G=await Promise.all(Q.map(async(J)=>({...J,...await Vn0(Y,Z,J)})));if(G.every((J)=>J.state===null))console.warn(`[task-board-review-sweeper] ${$}: no live PR state from GitHub (${G.length} PR(s)) \u2014 proceeding on unknown`);if(!Sn0(G))return!1;return await fw0(Y,X),!0}dispose(){if(this.timer)clearInterval(this.timer),this.timer=null}}var b66=60000,f66=300000,x66=50,y66=60000,g66=120000;var kb$=B(()=>{qZ();An0();GO();dw0();e9();Y3();bn0();hx()});import{readdir as u66,rm as Sj0}from"fs/promises";import{join as Vj0}from"path";async function Cj0($){let Z=new Date;Z.setUTCDate(Z.getUTCDate()-c66),Z.setUTCHours(0,0,0,0);let X=0;try{let Q=await nC($);for(let Y of Q)if(/^\d{4}$/.test(Y))X+=await Sb$($,Y,Z);else if(!Y.startsWith(".")){let G=Vj0($,Y),J=await nC(G);for(let K of J){if(!/^\d{4}$/.test(K))continue;X+=await Sb$(G,K,Z)}if((await nC(G)).length===0)await Sj0(G,{recursive:!0,force:!0})}}catch(Q){console.warn("monitoring retention cleanup failed:",Q)}return X}async function Sb$($,Z,X){let Q=0,Y=Vj0($,Z),G=await nC(Y);for(let W of G){if(!/^\d{2}$/.test(W))continue;let K=Vj0(Y,W),H=await nC(K);for(let F of H){if(!/^\d{2}$/.test(F))continue;let U=new Date(`${Z}-${W}-${F}T00:00:00Z`);if(isNaN(U.getTime()))continue;if(U<X){let w=Vj0(K,F);await Sj0(w,{recursive:!0,force:!0}),Q++}}if((await nC(K)).length===0)await Sj0(K,{recursive:!0,force:!0})}if((await nC(Y)).length===0)await Sj0(Y,{recursive:!0,force:!0});return Q}async function nC($){try{return(await u66($)).filter((X)=>!X.startsWith("."))}catch{return[]}}var c66=30;var M41=()=>{};import{DBOS as k41,SchedulerMode as l66}from"@dbos-inc/dbos-sdk";async function m66(){let $=[KJ(),pC(),mK()],Z=0;for(let X of $)try{Z+=await Cj0(X)}catch(Q){console.error("[monitoring-retention] cleanup failed:",Q)}return console.log(`[monitoring-retention] deleted ${Z} day-dir(s) across ${$.length} signal dir(s)`),{deleted:Z,dirs:$.length}}async function i66($,Z){await k41.runStep(()=>m66(),{name:"monitoringRetention"})}function Cb$(){if(Vb$)return;Vb$=!0;let $=k41.registerWorkflow(i66,{name:"monitoringRetentionWorkflow"});k41.registerScheduled($,{name:"monitoringRetentionWorkflow",crontab:d66,mode:l66.ExactlyOncePerIntervalWhenActive})}var d66="23 4 * * *",Vb$=!1;var _b$=B(()=>{rQ();M41()});function vb$($){return async(Z,X)=>{let Q=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","=",X).where("member.organizationId","=",Z).executeTakeFirst();if(!Q)return console.warn(`[automationContextFactory] User ${X} not found in org ${Z} \u2014 returning null`),null;let Y=await fK.create();Y.auth.user={id:X,role:Q.role},Y.organization={id:Q.orgId,slug:Q.orgSlug,name:Q.orgName};let G=await n11($.db,Z,Q.role);return Y.boundAuth=i11({auth:Y.authInstance,headers:new Headers,role:Q.role,permissions:G,userId:X}),Y.access=new dD(X,void 0,Y.boundAuth,Q.role,"self"),Ig(Y,{id:Q.orgId,slug:Q.orgSlug}),Y}}var bb$=B(()=>{mD();Eg()});function n66(){return{services:[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}],migrationsStatus:"pending",serverUrl:null,logs:[]}}function t66(){for(let $ of p66)$()}function fb$($){let Z=[...S41.logs,$];S41={...S41,logs:Z.length>500?Z.slice(-500):Z},t66()}function V41(){return o66}var S41,p66,o66=!1;var C41=B(()=>{S41=n66(),p66=new Set});import{EventEmitter as r66}from"events";var _41;var xb$=B(()=>{C41();_41=new r66;_41.on("request",($)=>{fb$($)})});function yb$(){return async($,Z)=>{let X=Date.now(),Q=$.req.method,Y=$.req.path;if(Y==="/api/auth/get-session"||Y.includes("favicon")){await Z();return}let G="",J=!1;if(Y.startsWith("/mcp")&&Q==="POST"){J=!0;try{if($.req.header("Content-Type")?.includes("application/json")){let U=await $.req.raw.clone().json();if(U.method==="tools/call"&&U.params?.name){let w=og(U.params.name),O=U.params.arguments||{},D=Object.keys(O).map((E)=>og(E)),L=D.length>0?D.slice(0,3).join(",")+(D.length>3?"\u2026":""):"";G=`${e6.tool}${w}${e6.dim}(${L})${e6.reset}`}else if(U.method)G=`${e6.dim}${og(U.method)}${e6.reset}`}}catch{}}let W=og(Y);if(Y.startsWith("/mcp/conn_")){let N=Y.split("/")[2]??"";W=`/mcp/${e6.mcp}${og(N.slice(0,12))}\u2026${e6.reset}`}else if(Y==="/mcp")W=`${e6.mcp}/mcp${e6.reset}`;else if(Y==="/mcp/registry")W=`${e6.mcp}/mcp/registry${e6.reset}`;let K=s66(Q),H=J?"\u25C0":"\u2190";if(!V41())console.log(`${e6.dim}${H}${e6.reset} ${K}${Q}${e6.reset} ${W}${G?` ${G}`:""}`);try{await Z()}finally{let N=Date.now()-X,F=$.res.status,U=a66(F),w=N<1000?`${N}ms`:`${(N/1000).toFixed(1)}s`,O=J?"\u25B6":"\u2192";if(!V41())console.log(`${e6.dim}${O}${e6.reset} ${K}${Q}${e6.reset} ${W}${G?` ${G}`:""} ${U}${F}${e6.reset} ${e6.duration}${w}${e6.reset}`);_41.emit("request",{method:Q,path:og(Y),status:F,duration:N,timestamp:new Date})}}}var e6,a66=($)=>{if($>=500)return e6.serverError;if($>=400)return e6.clientError;if($>=300)return e6.redirect;return e6.ok},s66=($)=>{return e6[$]||e6.reset},og=($)=>{return $.replace(/\r/g,"").replace(/\n/g,"").replace(/\x1b\[[0-9;]*m/g,"").replace(/[\x00-\x1f\x7f-\x9f]/g,"")};var gb$=B(()=>{C41();xb$();e6={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 lb$}from"crypto";import{mkdir as e66,readdir as $56,rm as hb$,stat as db$}from"fs/promises";import{join as b41,relative as Z56}from"path";import{z as E$}from"zod";function ib$($){let Z=$.replace(/[^a-zA-Z0-9_-]/g,"_");return b41(X56,Z)}function nb$($){return $.replace(/^\/+/,"").replace(/\.\./g,"")}function v41($,Z){let X=ib$($),Q=nb$(Z);return b41(X,Q)}function Q56($,Z,X,Q){let Y=c0().encryptionKey||"dev-secret",G=`${$}:${Z}:${X}:${Q}`;return lb$("sha256",Y).update(G).digest("hex")}function cb$($,Z,X,Q,Y){let G=Math.floor(Date.now()/1000)+Q,J=Q56(Z,X,G,Y),W=new URL(`/api/dev-assets/${Z}/${nb$(X)}`,$);return W.searchParams.set("expires",G.toString()),W.searchParams.set("signature",J),W.searchParams.set("method",Y),W.toString()}function pb$($,Z,X){let Q=`${$}:${Z.getTime()}:${X}`;return`"${lb$("md5","etag").update(Q).digest("hex")}"`}async function tb$($,Z,X,Q,Y){try{let G=await $56($,{withFileTypes:!0});for(let J of G){let W=b41($,J.name),H=Z56(Z,W).replace(/\\/g,"/");if(X&&!H.startsWith(X))continue;if(J.isDirectory())if(Q){let N=H+"/";if(!X||N.startsWith(X)){if(!(X?H.slice(X.length):H).includes("/"))Y.commonPrefixes.add(N)}}else await tb$(W,Z,X,Q,Y);else if(J.isFile()){if(Q&&X){let N=H.slice(X.length);if(N.includes(Q)){let F=N.indexOf(Q),U=X+N.slice(0,F+1);Y.commonPrefixes.add(U);continue}}try{let N=await db$(W);Y.objects.push({key:H,size:N.size,lastModified:N.mtime.toISOString(),etag:pb$(W,N.mtime,N.size)})}catch{}}}}catch{}}function ob$($,Z){let Q=r($).id;return[{name:"LIST_OBJECTS",description:"List objects in the local assets directory with pagination support",inputSchema:E$.object({prefix:E$.string().optional(),maxKeys:E$.number().optional().default(1000),continuationToken:E$.string().optional(),delimiter:E$.string().optional()}),outputSchema:E$.object({objects:E$.array(E$.object({key:E$.string(),size:E$.number(),lastModified:E$.string(),etag:E$.string()})),nextContinuationToken:E$.string().optional(),isTruncated:E$.boolean(),commonPrefixes:E$.array(E$.string()).optional()}),handler:async(Y)=>{let G=Y,J=G.prefix||"",W=G.maxKeys??1000,K=G.delimiter,H=G.continuationToken,N=ib$(Q);await e66(N,{recursive:!0});let F={objects:[],commonPrefixes:new Set};await tb$(N,N,J,K,F),F.objects.sort((L,E)=>L.key.localeCompare(E.key));let U=0;if(H){if(U=F.objects.findIndex((L)=>L.key>H),U===-1)U=F.objects.length}let w=F.objects.slice(U,U+W),O=U+W<F.objects.length,D=O?w[w.length-1]?.key:void 0;return{objects:w,isTruncated:O,nextContinuationToken:D,commonPrefixes:Array.from(F.commonPrefixes).sort()}}},{name:"GET_OBJECT_METADATA",description:"Get metadata for a file in the local assets directory",inputSchema:E$.object({key:E$.string()}),outputSchema:E$.object({contentType:E$.string().optional(),contentLength:E$.number(),lastModified:E$.string(),etag:E$.string(),metadata:E$.record(E$.string(),E$.string()).optional()}),handler:async(Y)=>{let G=Y,J=v41(Q,G.key),W=await db$(J);return{contentType:M$1(G.key),contentLength:W.size,lastModified:W.mtime.toISOString(),etag:pb$(J,W.mtime,W.size)}}},{name:"GET_PRESIGNED_URL",description:"Generate a presigned URL for downloading a file from local storage",inputSchema:E$.object({key:E$.string(),expiresIn:E$.number().optional()}),outputSchema:E$.object({url:E$.string(),expiresIn:E$.number()}),handler:async(Y)=>{let G=Y,J=G.expiresIn??ub$;return{url:cb$(Z,Q,G.key,J,"GET"),expiresIn:J}}},{name:"PUT_PRESIGNED_URL",description:"Generate a presigned URL for uploading a file to local storage",inputSchema:E$.object({key:E$.string(),expiresIn:E$.number().optional(),contentType:E$.string().optional()}),outputSchema:E$.object({url:E$.string(),expiresIn:E$.number()}),handler:async(Y)=>{let G=Y,J=G.expiresIn??ub$;return{url:cb$(Z,Q,G.key,J,"PUT"),expiresIn:J}}},{name:"DELETE_OBJECT",description:"Delete a single file from local storage",inputSchema:E$.object({key:E$.string()}),outputSchema:E$.object({success:E$.boolean(),key:E$.string()}),handler:async(Y)=>{let G=Y,J=v41(Q,G.key);try{return await hb$(J),{success:!0,key:G.key}}catch{return{success:!1,key:G.key}}}},{name:"DELETE_OBJECTS",description:"Delete multiple files from local storage",inputSchema:E$.object({keys:E$.array(E$.string()).max(1000)}),outputSchema:E$.object({deleted:E$.array(E$.string()),errors:E$.array(E$.object({key:E$.string(),message:E$.string()}))}),handler:async(Y)=>{let G=Y,J=[],W=[];return await Promise.all(G.keys.map(async(K)=>{let H=v41(Q,K);try{await hb$(H),J.push(K)}catch(N){W.push({key:K,message:N instanceof Error?N.message:"Unknown error"})}})),{deleted:J,errors:W}}}]}async function f41($,Z,X){let Q=ob$(Z,X),Y=new PW({name:"dev-assets-mcp",version:"1.0.0"},{capabilities:{tools:{}},jsonSchemaValidator:G5});for(let J of Q){let W="shape"in J.inputSchema?J.inputSchema.shape:E$.object({}).shape,K=J.outputSchema&&"shape"in J.outputSchema?J.outputSchema.shape:E$.object({}).shape;Y.registerTool(J.name,{description:J.description??"",inputSchema:W,outputSchema:K,annotations:J.annotations,_meta:J._meta},async(H)=>{try{let N=await J.handler(H);return{content:[{type:"text",text:JSON.stringify(N)}],structuredContent:N}}catch(N){return{content:[{type:"text",text:`Error: ${N.message}`}],isError:!0}}})}let G=new lX({enableJsonResponse:$.headers.get("Accept")?.includes("application/json")??!1});return await Y.connect(G),lG(Y,G,$,"mcp:dev-assets")}async function rb$($,Z,X,Q){let G=ob$(X,Q).find((J)=>J.name===$);if(!G)return{content:[{type:"text",text:`Tool not found: ${$}`}],isError:!0};try{let J=await G.handler(Z);return{content:[{type:"text",text:JSON.stringify(J)}]}}catch(J){return{content:[{type:"text",text:J instanceof Error?J.message:String(J)}],isError:!0}}}var X56="./data/assets",ub$=3600,mb$,ab$;var sb$=B(()=>{S$();mx();y8();ic();bV();RX();dE0();mb$=new B1;mb$.all("/",async($)=>{let Z=$.get("studioContext"),X=new URL($.req.url),Q=`${X.protocol}//${X.host}`;return f41($.req.raw,Z,Q)});ab$=mb$});var eb$={};N4(eb$,{mountDevRoutes:()=>Y56});function Y56($,Z){$.all("/mcp/:connectionId{.*_dev-assets$}",Z,async(Q)=>{let Y=Q.get("studioContext"),G=new URL(Q.req.url),J=`${G.protocol}//${G.host}`;return f41(Q.req.raw,Y,J)}),$.all("/mcp/:connectionId{.*_dev-assets$}/call-tool/:toolName",Z,async(Q)=>{let Y=Q.get("studioContext"),G=new URL(Q.req.url),J=`${G.protocol}//${G.host}`,W=Q.req.param("toolName");if(!W)return Q.json({error:"Missing tool name"},400);let K=await Q.req.json(),H=await rb$(W,K,Y,J);if(H.isError)return Q.json(H.content,500);return Q.json(H.content)}),$.use("/mcp/dev-assets",Z),$.route("/mcp/dev-assets",ab$);let X=new B1;X.use("*",d3({mountPath:"/api/dev-assets"})),X.route("/",lE0({orgFromPath:!1})),$.route("/api/dev-assets",X)}var $f$=B(()=>{y8();j$1();dE0();sb$()});import{sql as G56}from"kysely";import{randomUUID as Zf$}from"crypto";import{z as J56}from"zod";async function K56($){let Z=new Date().toISOString(),X=Zf$(),Q=h4.SELF($.organizationId),Y="registry.publish_request.created",G={requestId:$.request.id,requestedId:$.request.requested_id,title:$.request.title,status:$.request.status,createdAt:$.request.created_at,requester:{name:$.request.requester_name,email:$.request.requester_email}};await $.db.insertInto("events").values({id:X,organization_id:$.organizationId,type:"registry.publish_request.created",source:Q,specversion:"1.0",subject:$.request.id,time:Z,datacontenttype:"application/json",dataschema:null,data:JSON.stringify(G),cron:null,status:"pending",attempts:0,last_error:null,next_retry_at:null,created_at:Z,updated_at:Z}).execute();let J=await $.db.selectFrom("event_subscriptions").select(["id"]).where("organization_id","=",$.organizationId).where("enabled","=",1).where("event_type","=","registry.publish_request.created").where((W)=>W.or([W("publisher","is",null),W("publisher","=",Q)])).execute();if(J.length>0)await $.db.insertInto("event_deliveries").values(J.map((W)=>({id:Zf$(),event_id:X,subscription_id:W.id,status:"pending",attempts:0,last_error:null,delivered_at:null,next_retry_at:null,created_at:Z}))).execute();try{await G56`SELECT
|
|
2732
2732
|
pg_notify('studio_events', ${X}),
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as E,F as L,b7 as K,K as F,b as Q,m as _,j as I}from"./index-CWFURxE5.js";import{u as H}from"./use-registry-connections-C2nuPYBV.js";import{f as q}from"./use-organization-settings-DXDO0DzM.js";import{S,n as G}from"./use-mcp-client-gVBIjm1O.js";import{u as U}from"./useInfiniteQuery-RTORf-dV.js";import{i as V,f as X}from"./extract-connection-data-DeUQwuq8.js";import{r as Y,R as z}from"./retry-CErkP7V6.js";import{g as $}from"./connection-slug-eyAPH6o3.js";import{C as B}from"./card-BgxpVqwi.js";import{I as W}from"./integration-icon-TZ7b4Gge.js";function pe(){const s=E.c(6),e=H(),t=q(),n=L().project.enabledPlugins??[];let o;if(s[0]!==n||s[1]!==t||s[2]!==e){let a;s[4]!==t?(a=r=>t(r.id),s[4]=t,s[5]=a):a=s[5],o=e.filter(a).map(Z),n.includes("private-registry")&&t(S)&&o.push({id:S,title:"Private Registry",icon:null}),s[0]=n,s[1]=t,s[2]=e,s[3]=o}else o=s[3];return o}function Z(s){return{id:s.id,title:s.title,icon:s.icon}}const J=24,k=3;function D(s){return s.id.includes("community-registry")}function O(s){const e=s?.trim().split(/\s+/).filter(Boolean)??[];if(e.length===0)return;const t=[["title"],["description"],["name"],["server","title"]];return{operator:"or",conditions:e.flatMap(n=>t.map(o=>({field:o,operator:"contains",value:n})))}}function A(s,e,t,n,o){const a=s.map(d=>d.id).sort().join(","),r=O(o),{data:p,fetchNextPage:m,hasNextPage:f,isFetchingNextPage:g,isLoading:b}=U({queryKey:F.storeDiscovery(e,`${a}:${o??""}`),queryFn:async({pageParam:d})=>{const c=d??{};return await Promise.all(s.map(async i=>{const h=c[i.id];if(h==="EXHAUSTED")return{registryId:i.id,registryTitle:i.title,registryIcon:i.icon,items:[]};const C=V(i.id,e);try{return await Y(async()=>{let u=null;try{u=await G({connectionId:i.id,orgId:e,orgSlug:t});const x={limit:J};h&&(x.cursor=h),r&&(x.where=r);const N=await u.callTool({name:C,arguments:x}),v=N.structuredContent??N,P=v.nextCursor||v.cursor||void 0,R=X(v?[v]:[]);return{registryId:i.id,registryTitle:i.title,registryIcon:i.icon,items:R,nextCursor:P}}finally{await u?.close().catch(()=>{})}},{maxAttempts:k,minTimeout:0,maxTimeout:1e3,jitter:0})}catch(u){return console.warn(`[useMergedStoreDiscovery] Registry "${i.title}" (${i.id}) failed after ${k} attempts:`,u instanceof z?u.cause:u),{registryId:i.id,registryTitle:i.title,registryIcon:i.icon,items:[]}}}))},initialPageParam:{},getNextPageParam:d=>{const c={};let l=!1;for(const i of d)i.registryId&&(i.nextCursor?(c[i.registryId]=i.nextCursor,l=!0):c[i.registryId]="EXHAUSTED");return l?c:void 0},staleTime:3600*1e3,placeholderData:K,retry:!1,enabled:s.length>0}),y=[];if(p?.pages)for(const d of p.pages)for(const c of d)for(const l of c.items)y.push({...l,_sourceName:l._sourceName??c.registryTitle,_sourceIcon:l._sourceIcon??c.registryIcon,_registryId:l._registryId??c.registryId});return{items:y,hasMore:f??!1,isLoadingMore:g,isInitialLoading:b,fetchNextPage:()=>{f&&!g&&m()}}}function ge(s,e){const t=E.c(16),{org:n}=L();let o;t[0]!==s?(o=s.filter(te),t[0]=s,t[1]=o):o=t[1];const a=o;let r;t[2]!==s?(r=s.filter(ee),t[2]=s,t[3]=r):r=t[3];const p=r,m=A(a,n.id,n.slug,!0,e),f=A(p,n.id,n.slug,!0,e);let g;if(t[4]!==f.items||t[5]!==m.items){const h=new Set;g=[];const C=[...m.items,...f.items];for(const u of C){const x=`${u._registryId}:${u.id}`;h.has(x)||(h.add(x),g.push(u))}t[4]=f.items,t[5]=m.items,t[6]=g}else g=t[6];const b=m.isInitialLoading||f.isInitialLoading,y=m.isLoadingMore||f.isLoadingMore,d=m.hasMore||f.hasMore;let c;t[7]!==f||t[8]!==m?(c=()=>{m.hasMore&&m.fetchNextPage(),f.hasMore&&f.fetchNextPage()},t[7]=f,t[8]=m,t[9]=c):c=t[9];const l=c;let i;return t[10]!==d||t[11]!==b||t[12]!==y||t[13]!==g||t[14]!==l?(i={items:g,hasMore:d,isLoadingMore:y,isInitialLoading:b,loadMore:l},t[10]=d,t[11]=b,t[12]=y,t[13]=g,t[14]=l,t[15]=i):i=t[15],i}function ee(s){return D(s)}function te(s){return!D(s)}function ye(s){const e=new Map;for(const o of s){const a=$(o),r=e.get(a);r?r.push(o):e.set(a,[o])}const t=[],n=new Set;for(const o of s){const a=$(o);if(n.has(a))continue;n.add(a);const r=e.get(a),p=r[0];r.length===1?t.push({type:"single",connection:p}):t.push({type:"group",key:a,icon:p.icon,title:p.app_name?p.title.replace(/\s*\(\d+\)\s*$/,""):p.title,connections:r})}return t}function he(s){const e=E.c(42),{connection:t,onClick:n,headerActions:o,headerActionsAlwaysVisible:a,footer:r,className:p,fallbackIcon:m}=s,f=a===void 0?!1:a,g=Q(),b=n&&"cursor-pointer hover:bg-muted/50";let y;e[0]!==p||e[1]!==b?(y=_("transition-colors group overflow-hidden flex flex-col h-full",b,p),e[0]=p,e[1]=b,e[2]=y):y=e[2];const d=n?"button":void 0,c=n?0:void 0;let l;e[3]!==n?(l=n?w=>{w.target===w.currentTarget&&(w.key==="Enter"||w.key===" ")&&(w.preventDefault(),n())}:void 0,e[3]=n,e[4]=l):l=e[4];let i;e[5]!==t.icon||e[6]!==t.title||e[7]!==m?(i=I.jsx(W,{icon:t.icon,name:t.title,size:"sm",className:"shrink-0 shadow-sm",fallbackIcon:m}),e[5]=t.icon,e[6]=t.title,e[7]=m,e[8]=i):i=e[8];let h;e[9]!==o||e[10]!==f?(h=o&&I.jsx("div",{className:_("transition-opacity",!f&&"sm:opacity-0 sm:group-hover:opacity-100 sm:group-focus-within:opacity-100"),onClick:ie,children:o}),e[9]=o,e[10]=f,e[11]=h):h=e[11];let C;e[12]!==h?(C=I.jsx("div",{className:"relative",children:h}),e[12]=h,e[13]=C):C=e[13];let u;e[14]!==i||e[15]!==C?(u=I.jsxs("div",{className:"flex items-start justify-between",children:[i,C]}),e[14]=i,e[15]=C,e[16]=u):u=e[16];let x;e[17]!==t.title?(x=I.jsx("h3",{className:"text-sm font-medium text-foreground truncate",children:t.title}),e[17]=t.title,e[18]=x):x=e[18];let N;e[19]!==t.description||e[20]!==g?(N=t.description||g("connections.connectionCard.noDescription"),e[19]=t.description,e[20]=g,e[21]=N):N=e[21];let v;e[22]!==N?(v=I.jsx("p",{className:"text-sm text-muted-foreground line-clamp-2",children:N}),e[22]=N,e[23]=v):v=e[23];let P;e[24]!==x||e[25]!==v?(P=I.jsxs("div",{className:"flex flex-col gap-1",children:[x,v]}),e[24]=x,e[25]=v,e[26]=P):P=e[26];let R;e[27]!==u||e[28]!==P?(R=I.jsxs("div",{className:"flex flex-col gap-3 p-4.5",children:[u,P]}),e[27]=u,e[28]=P,e[29]=R):R=e[29];let j;e[30]!==r?(j=r&&I.jsx("div",{className:"border-t border-border mt-auto",children:I.jsx("div",{className:"h-14 flex items-center p-4.5",onClick:se,children:r})}),e[30]=r,e[31]=j):j=e[31];let M;e[32]!==R||e[33]!==j?(M=I.jsxs("div",{className:"flex flex-col flex-1",children:[R,j]}),e[32]=R,e[33]=j,e[34]=M):M=e[34];let T;return e[35]!==n||e[36]!==M||e[37]!==y||e[38]!==d||e[39]!==c||e[40]!==l?(T=I.jsx(B,{className:y,onClick:n,role:d,tabIndex:c,onKeyDown:l,children:M}),e[35]=n,e[36]=M,e[37]=y,e[38]=d,e[39]=c,e[40]=l,e[41]=T):T=e[41],T}function se(s){return s.stopPropagation()}function ie(s){return s.stopPropagation()}export{he as C,ge as a,ye as g,pe as u};
|