decocms 3.34.0 → 3.34.1
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-CZCJdLyi.js → AlertCircle-rpaL6q8T.js} +1 -1
- package/dist/client/assets/{ArrowUpRight-CHxGqtjn.js → ArrowUpRight-D7_4FAQ5.js} +1 -1
- package/dist/client/assets/{Check-DZFgb4Aq.js → Check-6LmIKXJj.js} +1 -1
- package/dist/client/assets/{CheckCircle-CG-wMven.js → CheckCircle-D0kUlRsN.js} +1 -1
- package/dist/client/assets/{ChevronDown-B7QgMo_j.js → ChevronDown-CaCYdoie.js} +1 -1
- package/dist/client/assets/{ChevronLeft-TMVSDJlu.js → ChevronLeft-BuXkBFIm.js} +1 -1
- package/dist/client/assets/{ChevronRight-BZDLAZs0.js → ChevronRight-kLRVkGUs.js} +1 -1
- package/dist/client/assets/{ChevronUp-D4NcsGJa.js → ChevronUp-DkGtzqyl.js} +1 -1
- package/dist/client/assets/{Container-CIoK_JLI.js → Container-Bl0qWNtu.js} +1 -1
- package/dist/client/assets/{DotsVertical-BTWgDSCZ.js → DotsVertical-CvhOKI-w.js} +1 -1
- package/dist/client/assets/{Eye-BaBZSaML.js → Eye-BNS1RmzG.js} +1 -1
- package/dist/client/assets/{FilterLines-CuEfbFlC.js → FilterLines-BSmtfAHG.js} +1 -1
- package/dist/client/assets/{Globe01-Bu-3l6NI.js → Globe01-DjWlKHom.js} +1 -1
- package/dist/client/assets/{HardDrive-FmjuSfEd.js → HardDrive-Dx3Blqhn.js} +1 -1
- package/dist/client/assets/{Key01-Bnc16AFY.js → Key01-D6jyUgYu.js} +1 -1
- package/dist/client/assets/{LayoutLeft-D2epCZ9e.js → LayoutLeft-C7Cmt2J8.js} +1 -1
- package/dist/client/assets/{LinkExternal01-il-vFJO5.js → LinkExternal01-B6flmd1s.js} +1 -1
- package/dist/client/assets/{Monitor01-s9F0MGZm.js → Monitor01-DBfOkkx9.js} +1 -1
- package/dist/client/assets/{Palette-BXG1B7a_.js → Palette-BX6fdd-v.js} +1 -1
- package/dist/client/assets/{Play-CArhP18b.js → Play-DApzrsBx.js} +1 -1
- package/dist/client/assets/{Plus-BMFN7EYn.js → Plus-Do6ZWheh.js} +1 -1
- package/dist/client/assets/{RefreshCcw01-CKC-7KpZ.js → RefreshCcw01-CW918RSV.js} +1 -1
- package/dist/client/assets/{SearchMd-Cp07lkq4.js → SearchMd-B4Lavo8e.js} +1 -1
- package/dist/client/assets/{Settings02-D4_HBk9b.js → Settings02-B57k_aEv.js} +1 -1
- package/dist/client/assets/{Shield01-C5CB9ixt.js → Shield01-CFDfVqiL.js} +1 -1
- package/dist/client/assets/{Star01-B5uhWV3B.js → Star01-QoJ-qcfh.js} +1 -1
- package/dist/client/assets/{Stars01-Bbj7Y0Z1.js → Stars01-ANwy09AP.js} +1 -1
- package/dist/client/assets/{Stars02-KpOwsvid.js → Stars02-C17u9BVa.js} +1 -1
- package/dist/client/assets/{Sun-BAloSVhR.js → Sun-D4yzlyEv.js} +1 -1
- package/dist/client/assets/{SwitchHorizontal01-Cu45oyoo.js → SwitchHorizontal01-CkwE98n9.js} +1 -1
- package/dist/client/assets/{Tool01-41oNA8tk.js → Tool01-B0zT3ots.js} +1 -1
- package/dist/client/assets/{Trash01-BxDpcA3C.js → Trash01-Bifm5Wb3.js} +1 -1
- package/dist/client/assets/{Upload01-D32r7qgX.js → Upload01-mjA8r4Fi.js} +1 -1
- package/dist/client/assets/{User01-jR83WsDH.js → User01-BZL6tFVt.js} +1 -1
- package/dist/client/assets/{Users01-BBxMW_TC.js → Users01-CqVfleMx.js} +1 -1
- package/dist/client/assets/{Users03-BLIawTyD.js → Users03-C5i2CKOP.js} +1 -1
- package/dist/client/assets/{X-D5a6VwmP.js → X-BWR0-4rz.js} +1 -1
- package/dist/client/assets/{XCircle-uxFEtClP.js → XCircle-CiiIVhRh.js} +1 -1
- package/dist/client/assets/{XClose-DutYcJf9.js → XClose-D0wmxYTF.js} +1 -1
- package/dist/client/assets/{Zap-Dn5qc0WK.js → Zap-BGp3QjmM.js} +1 -1
- package/dist/client/assets/{ZapSquare-rlEq1cG8.js → ZapSquare-CxE5iHdd.js} +1 -1
- package/dist/client/assets/{ZoomOut-BVY1Bb5M.js → ZoomOut-B1VNHI1K.js} +1 -1
- package/dist/client/assets/{access-gate-BG1y9Hug.js → access-gate-BELP4oqa.js} +1 -1
- package/dist/client/assets/{accordion-Dzk41U9r.js → accordion-Dsx4jZXX.js} +1 -1
- package/dist/client/assets/{add-section-modal-DsL7vxG4.js → add-section-modal-BPiyATcO.js} +1 -1
- package/dist/client/assets/agent-capabilities-CmHO-Kgo.js +3 -0
- package/dist/client/assets/{agent-icon-eJeBIKuQ.js → agent-icon-CpBAbwoh.js} +1 -1
- package/dist/client/assets/{agent-icons-BQS7GC08.js → agent-icons-C_pHQRgk.js} +1 -1
- package/dist/client/assets/{agents-list-BuzrDWIw.js → agents-list-ud8B7XUs.js} +1 -1
- package/dist/client/assets/{ai-providers-CVvDeHAY.js → ai-providers-DuT9vieJ.js} +1 -1
- package/dist/client/assets/{alert-B7wpmBJc.js → alert-C_aVuLV8.js} +1 -1
- package/dist/client/assets/{alert-dialog-D0THW25_.js → alert-dialog-Dsb6KPFM.js} +1 -1
- package/dist/client/assets/app-editor-CJE_W_Dn.js +1 -0
- package/dist/client/assets/{auth-catchall-B9qDAn3E.js → auth-catchall-DsJQjIZu.js} +1 -1
- package/dist/client/assets/{auth-split-layout-B_xfyQiq.js → auth-split-layout-BBz1-8cc.js} +1 -1
- package/dist/client/assets/{automation-list-row-D582neu3.js → automation-list-row-DTcrDIUh.js} +1 -1
- package/dist/client/assets/{automation-runs-Bbg-0UVN.js → automation-runs-D8yf4pum.js} +1 -1
- package/dist/client/assets/{automations-CocDDisF.js → automations-BqoqwiaS.js} +1 -1
- package/dist/client/assets/{avatar-BWTRU-cH.js → avatar-nCSKoB6F.js} +1 -1
- package/dist/client/assets/{badge-DAzOgiKc.js → badge-CY1rqnYU.js} +1 -1
- package/dist/client/assets/{brand-context-BxzBhuxy.js → brand-context-DCIkJfS8.js} +1 -1
- package/dist/client/assets/{buckets-OgmEkXt4.js → buckets-CvxCU-Mg.js} +1 -1
- package/dist/client/assets/{calendar-CTsGuWmk.js → calendar-vde5tCHf.js} +1 -1
- package/dist/client/assets/{capability-load-error-B6TBCUEJ.js → capability-load-error-DYWpzVHl.js} +1 -1
- package/dist/client/assets/{card-D4pgDcd2.js → card-CYGsSb57.js} +1 -1
- package/dist/client/assets/{chat-context-DLsfZ4X8.js → chat-context-CDygsN4Q.js} +1 -1
- package/dist/client/assets/{checkbox-NCgkpQdG.js → checkbox-vKl7eadT.js} +1 -1
- package/dist/client/assets/{cli-auth-success-Cg7MVUxb.js → cli-auth-success-BgBSOhsv.js} +1 -1
- package/dist/client/assets/{collection-detail-BTIBM7UV.js → collection-detail-Cl0_mdap.js} +1 -1
- package/dist/client/assets/{collection-display-button-BD_cZwBu.js → collection-display-button-VpCmWGot.js} +1 -1
- package/dist/client/assets/{collection-search-FDG1Rlpn.js → collection-search-CjkYy_AH.js} +1 -1
- package/dist/client/assets/{collection-table-wrapper-CLs6D3Gl.js → collection-table-wrapper-CuUrD2rg.js} +1 -1
- package/dist/client/assets/{collection-tabs-pv_RnATY.js → collection-tabs-BGsvaOVA.js} +1 -1
- package/dist/client/assets/{collections-2LTOAuNh.js → collections-NCEoL2EX.js} +1 -1
- package/dist/client/assets/{command-Eg_TSNDN.js → command-KCI9wvsu.js} +1 -1
- package/dist/client/assets/{connect-desktop-dialog-BfZ9n3Q0.js → connect-desktop-dialog-CgeQRUKM.js} +1 -1
- package/dist/client/assets/{connection-card-CBcUqWOS.js → connection-card-BioQsepZ.js} +1 -1
- package/dist/client/assets/{connection-detail-CLOt0X5i.js → connection-detail-szcerrZK.js} +1 -1
- package/dist/client/assets/{connection-form-helpers-DQ1R8Rbb.js → connection-form-helpers-DC_9yJsF.js} +1 -1
- package/dist/client/assets/{connections-anSV4FAS.js → connections-ZTcaOmQJ.js} +1 -1
- package/dist/client/assets/decopilot-sse-pool-C2fCSDxg.js +1 -0
- package/dist/client/assets/{dialog-GbkSCCDE.js → dialog-CxpeEAA2.js} +1 -1
- package/dist/client/assets/{domain-settings-CfTQTVXk.js → domain-settings-FkOLC-vc.js} +1 -1
- package/dist/client/assets/{drawer-CDEJbPQ_.js → drawer-R-Q-vfsa.js} +1 -1
- package/dist/client/assets/{dropdown-menu-Bp4U1b45.js → dropdown-menu-Xj0lVIXK.js} +1 -1
- package/dist/client/assets/{dynamic-plugin-layout-BwhGs18I.js → dynamic-plugin-layout-ggJeSS9L.js} +1 -1
- package/dist/client/assets/{empty-state-B8atRyt1.js → empty-state-BEE0EBKQ.js} +1 -1
- package/dist/client/assets/{empty-state-v8piTmBi.js → empty-state-BhV-zl-f.js} +1 -1
- package/dist/client/assets/{extract-connection-data-CWzL0whb.js → extract-connection-data-BJ4lD3eO.js} +1 -1
- package/dist/client/assets/{features-DqRtKUxF.js → features-2oa5PE-D.js} +1 -1
- package/dist/client/assets/{file-explorer-COzE78zi.js → file-explorer-mkpu5feK.js} +1 -1
- package/dist/client/assets/{file-type-icon-CrGaQHZH.js → file-type-icon-35VBMVCk.js} +1 -1
- package/dist/client/assets/{files-DcXaeN54.js → files-C37GYe47.js} +1 -1
- package/dist/client/assets/{form-Ct1q5ZTT.js → form-Ci8PGt-R.js} +1 -1
- package/dist/client/assets/{general-6k9CLiVk.js → general-NmglolSe.js} +1 -1
- package/dist/client/assets/{generate-id-Ck2Vi4il.js → generate-id-nWw_PZwJ.js} +1 -1
- package/dist/client/assets/{github-repo-picker-Dh-z3MS6.js → github-repo-picker-DY4w_1I0.js} +1 -1
- package/dist/client/assets/{header-tab-button-TaP3yUvX.js → header-tab-button-C7XZ27Uv.js} +1 -1
- package/dist/client/assets/{hover-card-DUG7qFNS.js → hover-card-DY9PmUZF.js} +1 -1
- package/dist/client/assets/{image-field-BvfbFQCq.js → image-field-DXfNSgLy.js} +1 -1
- package/dist/client/assets/{index-2GwD8zs9.js → index-61WbL3ye.js} +1 -1
- package/dist/client/assets/{index-C4S4NH7_.js → index-BEe1oLVg.js} +1 -1
- package/dist/client/assets/{index-CH5_jbBh.js → index-BToBsTv0.js} +1 -1
- package/dist/client/assets/{index-DUFETPUS.js → index-BvKb9qza.js} +1 -1
- package/dist/client/assets/{index-BG09-Pj6.js → index-Czr8nkWj.js} +1 -1
- package/dist/client/assets/{index-Bg77DGkv.js → index-D9SSFpE5.js} +1 -1
- package/dist/client/assets/{index-C99xN5mu.js → index-DO3UwA_I.js} +1 -1
- package/dist/client/assets/{index-Ca_51Bdz.js → index-DUiGV32e.js} +1 -1
- package/dist/client/assets/{index-D7JjC_Ha.js → index-Dczuf3at.js} +1 -1
- package/dist/client/assets/{index-EWthEHT2.js → index-DppjWA7O.js} +1 -1
- package/dist/client/assets/{index-BQjtT112.js → index-Rf_PdJ5z.js} +1 -1
- package/dist/client/assets/{index-Bo0y-IeN.js → index-So-S11eP.js} +1 -1
- package/dist/client/assets/{index-DrZPYOCw.js → index-czuYZ_ID.js} +1 -1
- package/dist/client/assets/{index-DvjfZyh_.js → index-rZ1TPVyD.js} +3 -3
- package/dist/client/assets/{index-redirect-BQdYxzJo.js → index-redirect-Mq-_t69h.js} +1 -1
- package/dist/client/assets/{index-BwfKFYWi.js → index-u2XUNnQk.js} +12 -12
- package/dist/client/assets/{input-irp5a6Ig.js → input-BPXWlz46.js} +1 -1
- package/dist/client/assets/{integration-icon-FcIrg4H7.js → integration-icon-CWT0gSfx.js} +1 -1
- package/dist/client/assets/{label-BjwEjfOc.js → label-CzVCjiiL.js} +1 -1
- package/dist/client/assets/{layout-s4c1VBr3.js → layout-DRDhyVmm.js} +1 -1
- package/dist/client/assets/{login-DvesO_NT.js → login-BDymjDs5.js} +1 -1
- package/dist/client/assets/{members-C60Aey5n.js → members-CtJP3l4D.js} +1 -1
- package/dist/client/assets/{monaco-editor-CIyIIOLP.js → monaco-editor-C-H4UmIT.js} +1 -1
- package/dist/client/assets/{monitoring-stats-row-B8f5t9as.js → monitoring-stats-row-Bjwv0PCc.js} +1 -1
- package/dist/client/assets/{oauth-callback-BHpZxMn4.js → oauth-callback-BS0_f_H5.js} +1 -1
- package/dist/client/assets/{oauth-callback-ai-provider-BsfNZx3Q.js → oauth-callback-ai-provider-Bp-Z15lU.js} +1 -1
- package/dist/client/assets/{onboarding-B2qJIBXT.js → onboarding-tR6ID9Ba.js} +1 -1
- package/dist/client/assets/{org-install-D8vuUVF_.js → org-install-Dao8BW5b.js} +1 -1
- package/dist/client/assets/{org-layout-BlXjXW59.js → org-layout-3WhlK4a0.js} +1 -1
- package/dist/client/assets/{org-plugin-layout-CX3CIxiU.js → org-plugin-layout-C-NqJRXX.js} +1 -1
- package/dist/client/assets/{page-seo-form-Bj1ei9Gv.js → page-seo-form-Dk6e77BM.js} +1 -1
- package/dist/client/assets/page-seo-sheet-Ceb0gnAp.js +1 -0
- package/dist/client/assets/{pair-QNI_4vE-.js → pair-DYb6YfcG.js} +1 -1
- package/dist/client/assets/{plugin-empty-state-BxAyfpRL.js → plugin-empty-state-YbbYO5hU.js} +1 -1
- package/dist/client/assets/{plugin-header-BmTvDEmx.js → plugin-header-8P4QiIoH.js} +1 -1
- package/dist/client/assets/{plugin-layout-AAC2IROJ.js → plugin-layout-CKmZivzq.js} +1 -1
- package/dist/client/assets/{popover-DKADBzsx.js → popover-Bk3EwUPD.js} +1 -1
- package/dist/client/assets/{post-editor-Dkob_Nf9.js → post-editor-Bw21I9pc.js} +1 -1
- package/dist/client/assets/{primitives-BD_skIF2.js → primitives-Dql_hUCU.js} +1 -1
- package/dist/client/assets/{profile-B7jiHx0p.js → profile-DVNKZaX-.js} +1 -1
- package/dist/client/assets/project-app-view-CMCeiidr.js +1 -0
- package/dist/client/assets/record-editor-803FPqaV.js +1 -0
- package/dist/client/assets/registry-BZxoTJql.js +2 -0
- package/dist/client/assets/{registry-layout-CyYeZQFC.js → registry-layout-DwX4dFWX.js} +1 -1
- package/dist/client/assets/{require-capability-D2k7Kzha.js → require-capability-6kSOKhdT.js} +1 -1
- package/dist/client/assets/{required-auth-layout-Dlm8pGwG.js → required-auth-layout-YEZh9H2w.js} +1 -1
- package/dist/client/assets/{reset-password-Bj1irBT9.js → reset-password-DaCJM4Eh.js} +1 -1
- package/dist/client/assets/{resizable-CflvFHn-.js → resizable-23UTrxEL.js} +1 -1
- package/dist/client/assets/{roles-C-0y_YIa.js → roles-xmvI7O0C.js} +1 -1
- package/dist/client/assets/save-referenced-block-CMYI5Fv0.js +1 -0
- package/dist/client/assets/{save-status-BT2K7vMi.js → save-status-BkzFYIeb.js} +1 -1
- package/dist/client/assets/{schema-form-BmsIuFe9.js → schema-form-DNaVud8y.js} +1 -1
- package/dist/client/assets/{scroll-area-Bcd6M0ah.js → scroll-area-QXSqgT3C.js} +1 -1
- package/dist/client/assets/{search-input-DMce5FEj.js → search-input-DbmU5zU8.js} +1 -1
- package/dist/client/assets/{secrets-DFqTlIhT.js → secrets-CrK7EU6I.js} +1 -1
- package/dist/client/assets/{sections-editor-DPjqmRcC.js → sections-editor-DJ6-AL_q.js} +1 -1
- package/dist/client/assets/{select-DBJdJQxs.js → select-DRqZIuLQ.js} +1 -1
- package/dist/client/assets/{select-model-C6zKg0NG.js → select-model-CZe_eVYF.js} +1 -1
- package/dist/client/assets/{seo-editor-70uW1Cgu.js → seo-editor-pRBB6PMK.js} +1 -1
- package/dist/client/assets/{settings-layout-BL3d6TJ_.js → settings-layout-osjNi_Qw.js} +1 -1
- package/dist/client/assets/{settings-section-C7OUTn7i.js → settings-section-5LNAbhU4.js} +1 -1
- package/dist/client/assets/{sheet-BwH8pS-i.js → sheet-Dsfk9URc.js} +1 -1
- package/dist/client/assets/{shell-controls-CMgf8y54.js → shell-controls-BvG0M9XK.js} +1 -1
- package/dist/client/assets/{shell-layout-C6cd7iM5.js → shell-layout-DkW3B_MZ.js} +1 -1
- package/dist/client/assets/shell-route-loading-CKElD_Av.js +1 -0
- package/dist/client/assets/{sidebar-TMNnGTum.js → sidebar-B3SsvTHC.js} +1 -1
- package/dist/client/assets/{skeleton-l4y2bxXO.js → skeleton-DvVUqja_.js} +1 -1
- package/dist/client/assets/sortable.esm-CnPAeADV.js +5 -0
- package/dist/client/assets/{spinner-BtGInCsG.js → spinner-DZmgr2qu.js} +1 -1
- package/dist/client/assets/{sso-BGAtG4Za.js → sso-Ce8-uwYP.js} +1 -1
- package/dist/client/assets/{store-C3y6O23u.js → store-Cy7UQOIx.js} +1 -1
- package/dist/client/assets/store-registry-Cn522mzq.js +2 -0
- package/dist/client/assets/{studio-tools-B1Ixjcw5.js → studio-tools-jbRVdtpc.js} +1 -1
- package/dist/client/assets/{switch-BFEJpvlr.js → switch-rL3a0x4B.js} +1 -1
- package/dist/client/assets/{tab-id-t-YFcZzw.js → tab-id-hZWLCmfc.js} +1 -1
- package/dist/client/assets/{table-M2WJKO5P.js → table-cHRXPecF.js} +1 -1
- package/dist/client/assets/{tabs-w6d9uq3S.js → tabs-B68TQ0Dt.js} +1 -1
- package/dist/client/assets/{task-status-CfFWQAcK.js → task-status-Cqn0_tco.js} +1 -1
- package/dist/client/assets/{textarea-BGXAM3FF.js → textarea-Bymi75yx.js} +1 -1
- package/dist/client/assets/{toggle-group-C4U40EOv.js → toggle-group-DnRl91Ne.js} +1 -1
- package/dist/client/assets/{toolbar-C2En0zPi.js → toolbar-Cb06hfKk.js} +1 -1
- package/dist/client/assets/{tools-list-CCVW8omn.js → tools-list-D12nTCg-.js} +1 -1
- package/dist/client/assets/{tooltip-6LKHApWj.js → tooltip-ua4lJTzI.js} +1 -1
- package/dist/client/assets/{types-CoBpfu3U.js → types-DJl0mitR.js} +1 -1
- package/dist/client/assets/{use-ai-providers-Dph4wlM9.js → use-ai-providers-P6PF7YRx.js} +1 -1
- package/dist/client/assets/{use-automations-DV8VwbjR.js → use-automations-DGe3A7k6.js} +1 -1
- package/dist/client/assets/{use-capability-CRrm1ogD.js → use-capability-B2IrzHkM.js} +1 -1
- package/dist/client/assets/{use-clock-tick-CyQ108_a.js → use-clock-tick-x-ip1-Lp.js} +1 -1
- package/dist/client/assets/{use-collections-MWh87Qf9.js → use-collections-Dvp_IbhN.js} +1 -1
- package/dist/client/assets/{use-connection-BwjVlVqI.js → use-connection-CyWLUiRu.js} +1 -1
- package/dist/client/assets/{use-copy-BDBsQ8lw.js → use-copy-nAd5EMaO.js} +1 -1
- package/dist/client/assets/{use-create-virtual-mcp--Yql-2p8.js → use-create-virtual-mcp-DmdlMapL.js} +1 -1
- package/dist/client/assets/{use-debounced-autosave-B6SxjuaG.js → use-debounced-autosave-DSZqKaTf.js} +1 -1
- package/dist/client/assets/{use-delete-connection-CE3T6gZf.js → use-delete-connection-VJfJqSrZ.js} +1 -1
- package/dist/client/assets/{use-file-configs-WBUPEX1z.js → use-file-configs-DXD_Hwrv.js} +1 -1
- package/dist/client/assets/{use-infinite-scroll-C_ORywxv.js → use-infinite-scroll-B2zyjKex.js} +1 -1
- package/dist/client/assets/{use-list-state-ZUm8O0U3.js → use-list-state-ByLS4CFA.js} +1 -1
- package/dist/client/assets/{use-mcp-client-kBcr-yIi.js → use-mcp-client-CGBZ7ekq.js} +1 -1
- package/dist/client/assets/{use-mcp-prompts-Cu_s_Tgp.js → use-mcp-prompts-BQNNtRte.js} +1 -1
- package/dist/client/assets/{use-mcp-tools-BVCosz4Y.js → use-mcp-tools-Dn2JgISP.js} +1 -1
- package/dist/client/assets/{use-members-CQwZpJh1.js → use-members-BaX0tyb1.js} +1 -1
- package/dist/client/assets/{use-navigate-to-agent-Dqwftn0z.js → use-navigate-to-agent-5w6ZqBss.js} +1 -1
- package/dist/client/assets/{use-org-auth-client-CKzivxvb.js → use-org-auth-client-CLnnUl3h.js} +1 -1
- package/dist/client/assets/{use-org-sso-CizTzcrl.js → use-org-sso-B8CLPiZl.js} +1 -1
- package/dist/client/assets/{use-organization-roles-DFIysUWU.js → use-organization-roles-UOgWPl1e.js} +1 -1
- package/dist/client/assets/{use-organization-settings-C83zobOQ.js → use-organization-settings-D68AqLOQ.js} +1 -1
- package/dist/client/assets/{use-registry-connections-D2z51tYu.js → use-registry-connections-CRtbznIm.js} +1 -1
- package/dist/client/assets/{use-secrets-DuBDIHg_.js → use-secrets--KIFsJ5I.js} +1 -1
- package/dist/client/assets/{use-status-sounds-C1N5nKtC.js → use-status-sounds-B8VUkU2E.js} +1 -1
- package/dist/client/assets/{use-view-mode-CdGJFg5T.js → use-view-mode-CvlKEBCR.js} +1 -1
- package/dist/client/assets/{use-virtual-mcp-BH7eFRNT.js → use-virtual-mcp-mhycHzLS.js} +1 -1
- package/dist/client/assets/useInfiniteQuery-k6dph5MZ.js +1 -0
- package/dist/client/assets/{useRouterState-mLoytFp1.js → useRouterState-qr3F3XJE.js} +1 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-DGO3SU3a.js +1 -0
- package/dist/client/assets/{user-Bu_LWzDf.js → user-D73GXODW.js} +1 -1
- package/dist/client/assets/{view-mode-toggle-BFVBLid1.js → view-mode-toggle-3i0Tx7_t.js} +1 -1
- package/dist/client/assets/{watch-sse-pool-PpWWHENZ.js → watch-sse-pool-Bo209v56.js} +1 -1
- package/dist/client/assets/{workflow-mBb6h1mU.js → workflow-DoAXdkx8.js} +1 -1
- package/dist/client/assets/workflow-detail-BVmen01p.js +1 -0
- package/dist/client/index.html +1 -1
- package/dist/server/cli.js +1 -1
- package/package.json +1 -1
- package/dist/client/assets/agent-capabilities-BTQpzJzY.js +0 -3
- package/dist/client/assets/app-editor-mnWJa4OB.js +0 -1
- package/dist/client/assets/decopilot-sse-pool-J9IBtPGQ.js +0 -1
- package/dist/client/assets/page-seo-sheet-CAj4OnGN.js +0 -1
- package/dist/client/assets/project-app-view-Bxi1-sx3.js +0 -1
- package/dist/client/assets/record-editor-DhS1gQiJ.js +0 -1
- package/dist/client/assets/registry-CLfDV8ZJ.js +0 -2
- package/dist/client/assets/save-referenced-block-Dm8Vu_wn.js +0 -1
- package/dist/client/assets/shell-route-loading-C_Trke1w.js +0 -1
- package/dist/client/assets/sortable.esm-DzvMqAvs.js +0 -5
- package/dist/client/assets/store-registry-CTUY1_0P.js +0 -2
- package/dist/client/assets/useInfiniteQuery-DCizzYPk.js +0 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-BlGj7aqQ.js +0 -1
- package/dist/client/assets/workflow-detail-GZhsuAzj.js +0 -1
package/dist/server/cli.js
CHANGED
|
@@ -104771,7 +104771,7 @@ ${c.stack}`;f.reject(d)}else f.resolve(_)}});return $.requestSubject=i,this.prot
|
|
|
104771
104771
|
`);if(g===-1)return;let h=$.subarray(0,g).toString("utf8"),E=$.subarray(g+4),v=h.split(`\r
|
|
104772
104772
|
`,1)[0]??"";if(!/^HTTP\/1\.[01] 101(?:\s|$)/.test(v)){o8(i,1011,t.upstreamErrorReason);try{c.end()}catch{}return}d=!0,i.data.upstream=c;let w=$Nl((r,O)=>{try{if(r===1)i.send(O.toString("utf8"));else if(r===2)i.send(O);else if(r===8){let{code:y,reason:X}=cNl(O);o8(i,y,X);try{c.end()}catch{}}}catch{}});if(c.removeAllListeners("data"),E.length>0)w(E);c.on("data",(r)=>w(r));for(let r of i.data.pending)try{c.write(Zki(r,!0))}catch{}i.data.pending.length=0})}function fNl(i,t){let u=[`GET ${i} HTTP/1.1`];for(let[l,n]of Object.entries(t))u.push(`${l}: ${n}`);return u.push("",""),u.join(`\r
|
|
104773
104773
|
`)}function o8(i,t,u){try{if(t!==void 0)i.close(t,u??"");else i.close()}catch{}}function Zki(i,t,u){let l,n;if(typeof i==="string")l=Buffer.from(i,"utf8"),n=1;else if(i instanceof ArrayBuffer)l=Buffer.from(i),n=2;else if(Buffer.isBuffer(i))l=i,n=2;else l=Buffer.from(i),n=2;let f=u??n,c=l.length,$=[];$.push(128|f&15);let d=t?128:0;if(c<126)$.push(d|c);else if(c<65536)$.push(d|126,c>>8&255,c&255);else $.push(d|127,0,0,0,0),$.push(c>>>24&255,c>>>16&255,c>>>8&255,c&255);let _=t?4:0,g=Buffer.allocUnsafe($.length+_+c),h=0;for(let E=0;E<$.length;E++)g[h++]=$[E];if(t){let E=SSt(4);g[h++]=E[0],g[h++]=E[1],g[h++]=E[2],g[h++]=E[3];for(let v=0;v<c;v++)g[h++]=l[v]^E[v&3]}else l.copy(g,h);return g}function cNl(i){if(i.length<2)return{code:1000,reason:""};return{code:i.readUInt16BE(0),reason:i.subarray(2).toString("utf8")}}function $Nl(i){let t=Buffer.alloc(0);return(u)=>{t=t.length===0?u:Buffer.concat([t,u]);while(!0){if(t.length<2)return;let l=t[0],n=t[1],f=l&15,c=(n&128)!==0,$=n&127,d=2;if($===126){if(t.length<d+2)return;$=t[d]<<8|t[d+1],d+=2}else if($===127){if(t.length<d+8)return;$=t[d+4]*16777216+(t[d+5]<<16|t[d+6]<<8|t[d+7]),d+=8}let _=null;if(c){if(t.length<d+4)return;_=t.subarray(d,d+4),d+=4}if(t.length<d+$)return;let g=t.subarray(d,d+$);if(_){let h=Buffer.alloc($);for(let E=0;E<$;E++)h[E]=g[E]^_[E&3];g=h}t=t.subarray(d+$),i(f,g)}}}var lNl=256;var HSt=x(()=>{jSt()});function LSt(i){if(typeof i!=="string"||i.length===0)return null;let t=i.lastIndexOf(":");if(i.startsWith("["))return null;let l=(t>=0?i.slice(0,t):i).replace(/\.$/,"").toLowerCase(),n=".localhost";if(!l.endsWith(n))return null;let f=l.slice(0,-n.length);if(f.length===0)return null;if(f.includes("."))return null;return f}async function RSt(i){let t=KSt({maxPendingFrames:i.maxPendingWsFrames??dNl,backlogOverflowReason:"ingress backlog overflow"}),u=Bun.serve({port:i.port,hostname:"127.0.0.1",idleTimeout:0,async fetch(l,n){let f=l.headers.get("host"),c=LSt(f);if(!c)return new Response("not found",{status:404});let $=i.lookupSandboxPort(c);if(!$){if(l.headers.get("upgrade")==="websocket")return new Response("unknown handle",{status:404});return new Response(_Nl,{status:503,headers:{"Content-Type":"text/html; charset=utf-8","Cache-Control":"no-store","Retry-After":"1"}})}if(l.headers.get("upgrade")==="websocket"){let h=new URL(l.url);if(!n.upgrade(l,{data:bSt({port:$,pathQuery:`${h.pathname}${h.search}`,protocols:zSt(l.headers)})}))return new Response("ws upgrade failed",{status:400});return}let d=new URL(l.url),_=`http://127.0.0.1:${$}${d.pathname}${d.search}`,g=new Headers(l.headers);return g.set("host",`127.0.0.1:${$}`),fetch(_,{method:l.method,headers:g,body:l.body,redirect:"manual"})},websocket:{open:t.open,message:t.message,close:t.close}});return{port:u.port??0,async stop(){u.stop(!0)}}}var dNl=256,_Nl='<!DOCTYPE html><html><head><meta charset="utf-8"><title>Connecting\u2026</title><style>body{font-family:system-ui,sans-serif;display:flex;align-items:center;justify-content:center;min-height:100vh;margin:0;background:#fafafa;color:#555}div{text-align:center;max-width:420px;padding:24px}h3{margin:0 0 8px}p{margin:0;font-size:14px;color:#999;line-height:1.5}</style></head><body><div><h3>Connecting to sandbox\u2026</h3><p>Waiting for the local sandbox to come online. This page refreshes automatically.</p></div><script>setTimeout(function(){window.location.reload()},1500)</script></body></html>';var CSt=x(()=>{HSt()});async function Tki(i=xNl){let t=["decopilot-sandbox","body-offload"],[u,l]=await Promise.all([i.detectClaudeCode().catch(()=>!1),i.detectCodex().catch(()=>!1)]);if(u)t.push("claude-code");if(l)t.push("codex");return t}function hNl(i){return gNl.filter((t)=>!i.includes(t))}function ENl(i,t){let u=t.filter((l)=>!i.includes(l));return i.push(...u),u}function eSt(i,t={}){let u=t.detect??(()=>Tki()),l=setInterval(()=>{if(hNl(i).length===0)return;u().then((n)=>{let f=ENl(i,n);if(f.length>0)t.onChange?.(f)}).catch(()=>{})},t.intervalMs??60000);return l.unref?.(),()=>clearInterval(l)}async function vNl(){try{let{query:i}=await import("@anthropic-ai/claude-agent-sdk"),t=i({prompt:"",options:{maxTurns:1}}),u=await t.accountInfo();return t.return(void 0),Boolean(u.email)}catch{return!1}}async function wNl(){try{let i=Bun.spawn(["codex","--version"],{stdout:"ignore",stderr:"ignore"}),t=setTimeout(()=>i.kill(),1e4),u=await i.exited;return clearTimeout(t),u===0}catch{return!1}}var gNl,xNl;var MSt=x(()=>{gNl=["claude-code","codex"];xNl={detectClaudeCode:vNl,detectCodex:wNl}});import{randomBytes as rNl}from"crypto";import{mkdir as DNl,readFile as ONl,writeFile as yNl}from"fs/promises";import{dirname as XNl,join as NNl}from"path";function JNl(i){return NNl(i,"machine-id")}async function qSt(i){let t=JNl(i);try{let n=(await ONl(t,"utf8")).trim();if(n)return n}catch{}let u=rNl(16).toString("hex");return await DNl(XNl(t),{recursive:!0}),await yNl(t,u),u}var VSt=()=>{};import{randomBytes as UNl}from"crypto";import{mkdir as FNl}from"fs/promises";import{createServer as ZNl}from"net";import{join as TNl}from"path";function aSt(i,t){return Error(`sandbox failed to start: ${i}`,{cause:t})}function INl(i){if(!(i instanceof Error))return!1;return i.name==="TimeoutError"||/timed out|timeout|operation was aborted|aborted/i.test(i.message)}function QNl(i){if(i instanceof Error){let t=i.cause;if(t instanceof Error&&t.message)return t.message;return i.message}return String(i)}function mSt(i){let t=i.maxSandboxes??20,u=new Map,l=i.pickPort??BNl,n=i.fetchImpl??fetch,f=i.resolvePreviewUrl??((E,v)=>`http://127.0.0.1:${v}`),c=(E)=>{try{i.onEvent?.(E)}catch{}},$=async(E)=>{let v=new AbortController,w=setTimeout(()=>v.abort(),1500);try{let r=await n(`${E}/health`,{signal:v.signal});if(!r.ok)console.warn(`[user-desktop] probe ${E}/health \u2192 ${r.status} (treating as dead)`);return r.ok}catch(r){return console.warn(`[user-desktop] probe ${E}/health failed: ${r instanceof Error?r.message:String(r)} (treating as dead)`),!1}finally{clearTimeout(w)}},d=(E)=>{console.warn(`[user-desktop] evicting dead daemon handle=${E.handle} port=${E.port}`);try{E.process.kill("SIGTERM")}catch{}if(u.get(E.handle)===E)u.delete(E.handle),c({handle:E.handle,phase:"evicted"})},_=new Map;function g(){if(u.size<t)return;let E=[...u.values()].filter((w)=>w.activeDispatchCount===0).sort((w,r)=>w.lastUsedAt-r.lastUsedAt);if(E.length===0){console.warn(`[user-desktop] at cap ${u.size}/${t} but every sandbox is pinned (active dispatch) \u2014 exceeding cap temporarily`);return}let v=E[0];console.log(`[user-desktop] evicting LRU victim handle=${v.handle} port=${v.port} (cap ${t} reached, size=${u.size})`);try{v.process.kill("SIGTERM")}catch{}u.delete(v.handle),c({handle:v.handle,phase:"evicted"})}let h=async(E)=>{c({handle:E.handle,phase:"spawning"}),g();let v=TNl(i.dataDir,"sandboxes",E.handle);await FNl(v,{recursive:!0}),console.log(`[user-desktop] ensure handle=${E.handle} repo=${E.repo?.cloneUrl??"(none)"} branch=${E.repo?.branch??"(none)"} runtime=${E.workload?.runtime??"(autodetect)"} pm=${E.workload?.packageManager??"(autodetect)"}`);let w=UNl(24).toString("hex"),[r,O]=await Promise.all([l(),l()]);console.log(`[user-desktop] spawn handle=${E.handle} port=${r} devPort=${O} workdir=${v}`);let y=await Promise.resolve(i.spawnDaemon({workdir:v,handle:E.handle,port:r,daemonToken:w,offloadAllowedHosts:E.offloadAllowedHosts??[],offloadAllowSameHostDev:E.offloadAllowSameHostDev??!1,orgFsConfigJson:E.orgFsConfigJson}));try{try{await i.waitForHealth(r)}catch(J){throw aSt("the sandbox didn't come online in time",J)}console.log(`[user-desktop] healthy handle=${E.handle} port=${r} \u2014 posting config`);try{await i.postConfig(r,O,{repo:E.repo,workload:E.workload,operator:E.operator},w)}catch(J){throw aSt(INl(J)?"configuration timed out":"the sandbox rejected its configuration",J)}}catch(J){console.error(`[user-desktop] sandbox bring-up failed handle=${E.handle} port=${r} (killing daemon):`,J);try{y.kill("SIGKILL")}catch{}throw c({handle:E.handle,phase:"failed",error:QNl(J)}),J}let X=`http://127.0.0.1:${r}`,N=f(E.handle,r);console.log(`[user-desktop] ready handle=${E.handle} port=${r} sandboxApiUrl=${X} previewUrl=${N}`);let U={handle:E.handle,port:r,process:y,sandboxApiUrl:X,previewUrl:N,lastUsedAt:Date.now(),activeDispatchCount:0,daemonToken:w};if(u.set(E.handle,U),c({handle:E.handle,phase:"ready",port:r,previewUrl:N}),y.exited)y.exited.then(()=>{if(u.get(E.handle)===U)console.warn(`[user-desktop] daemon process exited unexpectedly handle=${E.handle} port=${r} \u2014 removing from cache`),u.delete(E.handle),c({handle:E.handle,phase:"evicted"});else console.log(`[user-desktop] daemon process exited handle=${E.handle} port=${r} (already replaced/removed)`)});return{sandboxApiUrl:X,previewUrl:N,port:r}};return{async ensureSandbox(E){let v=u.get(E.handle);if(v){if(await $(v.sandboxApiUrl))return console.log(`[user-desktop] cache hit handle=${E.handle} port=${v.port} (alive)`),v.lastUsedAt=Date.now(),{sandboxApiUrl:v.sandboxApiUrl,previewUrl:v.previewUrl,port:v.port};console.warn(`[user-desktop] cache stale handle=${E.handle} port=${v.port} \u2014 respawning`),d(v)}let w=_.get(E.handle);if(w)return console.log(`[user-desktop] joining in-flight ensure handle=${E.handle}`),w;let r=h(E).finally(()=>{_.delete(E.handle)});return _.set(E.handle,r),r},proxyPort(E){let v=u.get(E);if(v)v.lastUsedAt=Date.now();return v?.port??null},getDaemonToken(E){return u.get(E)?.daemonToken??null},hasHandle(E){return u.has(E)||_.has(E)},recordHit(E){let v=u.get(E);if(v)v.lastUsedAt=Date.now()},acquireDispatch(E){let v=u.get(E);if(!v)return()=>{};v.activeDispatchCount+=1;let w=!1;return()=>{if(w)return;w=!0;let r=u.get(E);if(r)r.activeDispatchCount=Math.max(0,r.activeDispatchCount-1)}},listSandboxes(){return[...u.values()]},async deleteSandbox(E){let v=u.get(E);if(!v){console.log(`[user-desktop] delete handle=${E} (not found, no-op)`);return}console.log(`[user-desktop] delete handle=${E} port=${v.port}`);try{v.process.kill("SIGTERM")}catch{}u.delete(E),c({handle:E,phase:"deleted"})},async shutdown(){console.log(`[user-desktop] shutdown \u2014 killing ${u.size} sandbox(es)`);for(let E of u.values())try{E.process.kill("SIGTERM")}catch{}u.clear()}}}function BNl(){return new Promise((i,t)=>{let u=ZNl();u.unref(),u.on("error",t),u.listen(0,"127.0.0.1",()=>{let l=u.address();if(l&&typeof l==="object"){let n=l.port;u.close(()=>i(n))}else u.close(()=>t(Error("could not allocate port")))})})}var oSt=()=>{};import{randomUUID as YNl}from"crypto";import{hostname as PNl}from"os";async function sSt(i){let t=PNl()||void 0;i.monitor?.onMachine?.(t??"this machine");let u=vGt(i.dataDir,{outFd:i.logFd,perSandboxLog:i.perSandboxLogs,hotReload:i.hotReload}),l=0,n=mSt({dataDir:i.dataDir,resolvePreviewUrl:(N,U)=>l>0?`http://${N}.localhost:${l}`:`http://127.0.0.1:${U}`,spawnDaemon:async(N)=>{let U={DAEMON_BOOT_ID:YNl(),APP_ROOT:N.workdir,PROXY_PORT:String(N.port),DAEMON_TOKEN:N.daemonToken,OFFLOAD_ALLOWED_HOSTS:N.offloadAllowedHosts.join(","),...N.offloadAllowSameHostDev?{OFFLOAD_ALLOW_SAME_HOST_DEV:"1"}:{}};if(N.orgFsConfigJson){let Z=await DGt(i.dataDir);if(Z)U.ORGFS_CONFIG=N.orgFsConfigJson,U.ORGFS_RCLONE_PATH=Z}let J=await u({workdir:N.workdir,env:U,daemonPort:N.port});return{port:N.port,kill:(Z)=>J.kill(Z),exited:J.exited.then(()=>{return})}},postConfig:async(N,U,J,Z)=>{let B={port:U};if(J.workload)B.runtime=J.workload.runtime,B.packageManager={name:J.workload.packageManager,...J.workload.packageManagerPath?{path:J.workload.packageManagerPath}:{}};let Q={application:B},P=pg(J.operator??null);if(P)Q.operator=P;if(J.repo)Q.git={repository:{cloneUrl:J.repo.cloneUrl,branch:J.repo.branch},...J.repo.userName&&J.repo.userEmail?{identity:{userName:J.repo.userName,userEmail:J.repo.userEmail}}:{}};await W8(`http://127.0.0.1:${N}`,Z,Q)},waitForHealth:async(N)=>{await gli(`http://127.0.0.1:${N}`)},maxSandboxes:20,onEvent:i.monitor?.onEvent}),f=await RSt({port:i.port,lookupSandboxPort:(N)=>n.proxyPort(N)});l=f.port,console.log(`Local ingress listening on http://127.0.0.1:${f.port} (use http://<handle>.localhost:${f.port}/)`),i.monitor?.onIngress?.(f.port);let c=yGt({provider:n}),$=async()=>{let N=await Sx({dataDir:i.dataDir,target:i.clusterBaseUrl});if(!N)throw Object.assign(Error(`Session for ${i.clusterBaseUrl} is no longer valid \u2014 run \`deco auth login --target ${i.clusterBaseUrl}\` and restart \`deco link\`.`),{fatal:!0});return N.accessToken};console.log(`[link-daemon] transport=pull cluster=${i.clusterBaseUrl}`);let d=await qSt(i.dataDir),_=process.env.npm_package_version??"0.0.0",g=await Tki(),h=eSt(g,{onChange:(N)=>{console.log(`[link-daemon] capabilities detected: +${N.join(",")} (now: ${g.join(",")})`)}}),E=Jki({path:`${i.dataDir}/link/outbox.sqlite`}),v=()=>{},w=await PSt({clusterBaseUrl:i.clusterBaseUrl,getAccessToken:$,provider:n,outbox:E,controlHandler:c,capabilities:g,machineId:d,cliVersion:_,previewPort:f.port,onConnected:()=>{i.monitor?.onCluster?.("linked"),console.log(`Linked to ${i.clusterBaseUrl} (pull transport)`)},onShutdown:()=>v()}),r,O=new Promise((N)=>{r=N}),y=!1,X=async()=>{if(y)return;y=!0,console.log(`
|
|
104774
|
-
Shutting down\u2026`),h();try{await w.close()}catch{}try{await f.stop()}catch{}try{await n.shutdown()}catch{}try{E.close()}catch{}r(0)};return process.on("SIGINT",()=>void X()),process.on("SIGTERM",()=>void X()),v=()=>{console.log("Disconnect requested from the Studio web UI \u2014 shutting down. Run `bunx decocms link` to reconnect."),X()},w.closed.then(()=>{if(i.monitor?.onCluster?.("closed"),!y)console.error("Cluster connection closed permanently; exiting."),X()}),{stopped:O,stop:X}}var pSt=x(()=>{XWi();MH();wGt();OGt();XGt();GSt();Uki();CSt();MSt();VSt();eH();oSt()});function Iki(i){return i.map((t)=>typeof t==="string"?t:String(t)).join(" ")}var J0i;var Qki=x(()=>{J0i={name:"decocms",version:"3.34.0",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/mesh"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:'bun run migrate && concurrently "bun run dev:client" "bun run dev:server"',"dev:servers":'concurrently "bun run dev:client" "bun run dev:server"',"dev:client":"vite dev","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts","build:client":"bun --bun vite build","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","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","test:e2e":"playwright test","test:e2e:ui":"playwright test --ui","test:ct":"playwright test -c playwright-ct.config.ts","test:ct:ui":"playwright test -c playwright-ct.config.ts --ui","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts","smoke:link":"bun run scripts/smoke-link.ts",prepublishOnly:"bun run build:client && bun run build:server"},optionalDependencies:{"@anthropic-ai/claude-agent-sdk":"^0.2.141","@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.80","@ai-sdk/google":"^3.0.80","@ai-sdk/openai":"^3.0.65","@anthropic-ai/sdk":"^0.96.0","@aws-sdk/client-s3":"^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.17.6","@dnd-kit/core":"^6.3.1","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@inkjs/ui":"^2.0.0","@modelcontextprotocol/ext-apps":"^1.7.1","@openrouter/ai-sdk-provider":"^2.9.0","@opentelemetry/core":"^2.6.0","@tanstack/react-virtual":"3.13.24","@xterm/addon-fit":"^0.11.0","@xterm/xterm":"^6.0.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12",nats:"^2.29.3","node-pty":"^1.0.0","posthog-js":"^1.371.1","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@ai-sdk/react":"^3.0.193","@better-auth/sso":"1.4.1","@daveyplate/better-auth-ui":"^3.2.7","@deco/ui":"workspace:*","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/harness":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/mesh-sdk":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/std":"workspace:*","@floating-ui/react":"^0.27.16","@happy-dom/global-registrator":"^20.9.0","@hookform/resolvers":"^5.2.2","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@monaco-editor/react":"^4.7.0","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@playwright/experimental-ct-react":"1.59.1","@playwright/test":"^1.58.2","@radix-ui/react-avatar":"^1.1.10","@radix-ui/react-checkbox":"^1.3.3","@radix-ui/react-dialog":"^1.1.15","@radix-ui/react-dropdown-menu":"^2.1.16","@radix-ui/react-label":"^2.1.7","@radix-ui/react-select":"^2.2.6","@radix-ui/react-separator":"^1.1.7","@radix-ui/react-slot":"^1.2.3","@radix-ui/react-tabs":"^1.1.13","@rjsf/core":"^6.1.2","@rjsf/shadcn":"^6.1.2","@rjsf/utils":"^6.1.2","@rjsf/validator-ajv8":"^6.1.2","@tailwindcss/vite":"^4.1.17","@tanstack/react-query":"5.100.10","@tanstack/react-router":"1.169.2","@testing-library/jest-dom":"^6.9.1","@testing-library/react":"^16.3.2","@tiptap/core":"3.20.2","@tiptap/extension-mention":"3.20.2","@tiptap/extension-placeholder":"3.20.2","@tiptap/pm":"3.20.2","@tiptap/react":"3.20.2","@tiptap/starter-kit":"3.20.2","@tiptap/suggestion":"3.20.2","@types/bun":"^1.3.1","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@untitledui/icons":"^0.0.19","@vercel/nft":"^1.1.1","@vitejs/plugin-react":"^5.1.0",ai:"^6.0.191","babel-plugin-react-compiler":"^1.0.0","better-auth":"1.4.22","class-variance-authority":"^0.7.1",clsx:"^2.1.1",concurrently:"^9.2.1",croner:"^9.1.0","date-fns":"^4.1.0",degit:"^2.8.4",hono:"^4.10.7","input-otp":"^1.4.2",jose:"^6.0.11","lucide-react":"^0.468.0",marked:"^15.0.6","mesh-plugin-workflows":"workspace:*",nanoid:"^5.1.6",pg:"^8.16.3",prettier:"^3.4.2","react-hook-form":"^7.66.0","react-markdown":"^10.1.0","react-resizable-panels":"^2.1.7","react-syntax-highlighter":"^15.6.1",recharts:"^3.6.0","rehype-raw":"^7.0.0","remark-gfm":"^4.0.0","sass-embedded":"^1.97.2",sonner:"^2.0.7","tailwind-merge":"^3.3.1",tailwindcss:"^4.1.17",typescript:"^5.9.3",vite:"^7.2.1","vite-tsconfig-paths":"^5.1.4",zod:"^4.0.0",zustand:"^5.0.9"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","mesh","tools"],license:"MIT",publishConfig:{access:"public"}}});var DL={};Pi(DL,{printBanner:()=>ANl,bannerLines:()=>izt,BANNER_LINES:()=>U0i,BANNER_GRADIENT:()=>F0i});function WNl(i){let t=Number.parseInt(i.slice(1),16);return[t>>16&255,t>>8&255,t&255]}function izt(i){let t=U0i.map((u,l)=>{let[n,f,c]=WNl(F0i[l]);return`\x1B[38;2;${n};${f};${c}m${u}\x1B[39m`});if(i!==void 0)t.push(`\x1B[2m v${i}\x1B[22m`);return t}function ANl(i){console.log("");for(let t of izt(i))console.log(t);console.log("")}var U0i,F0i;var jA=x(()=>{U0i=[" \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588 ","\u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588 \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588 "," \u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2588 \u2591 \u2588\u2588\u2588 \u2591\u2591\u2591 \u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2591\u2591\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591 \u2588\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588 "," \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2591 ","\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591 "],F0i=["#00ff64","#00ee5e","#00dc56","#00c84e","#00b444","#00a03c","#008832","#006e28"]});import{Box as kNl,Text as tzt}from"ink";import{jsx as jNl,jsxs as uzt}from"react/jsx-runtime";function Z0i({version:i}){return uzt(kNl,{flexDirection:"column",marginTop:1,children:[U0i.map((t,u)=>jNl(tzt,{color:F0i[u],children:t},u)),uzt(tzt,{dimColor:!0,children:[" v",i]})]})}var Bki=x(()=>{jA()});var nzt={};Pi(nzt,{subscribeLinkState:()=>Gki,setMachine:()=>KNl,setLogPath:()=>LNl,setIngress:()=>bNl,setDaemonError:()=>HNl,setClusterUrl:()=>zNl,setCluster:()=>SNl,pushSandboxEvent:()=>RNl,getLinkState:()=>Pki,applySandboxEvent:()=>lzt});function lzt(i,t){let u=new Map(i);if(t.phase==="evicted"||t.phase==="deleted")return u.delete(t.handle),u;let l=u.get(t.handle);return u.set(t.handle,{handle:t.handle,port:t.port??l?.port??null,previewUrl:t.previewUrl??l?.previewUrl??null,status:t.phase,error:t.phase==="failed"?t.error??"failed":null}),u}function s8(){for(let i of Yki)i()}function Pki(){return i$}function Gki(i){return Yki.add(i),()=>Yki.delete(i)}function SNl(i){i$={...i$,cluster:i},s8()}function zNl(i){i$={...i$,clusterUrl:i},s8()}function bNl(i,t){i$={...i$,ingressPort:i,ingressUrl:t},s8()}function KNl(i){i$={...i$,machine:i},s8()}function HNl(i){i$={...i$,daemonError:i},s8()}function LNl(i){i$={...i$,logPath:i},s8()}function RNl(i){i$={...i$,sandboxes:lzt(i$.sandboxes,i)},s8()}var i$,Yki;var Wki=x(()=>{i$={cluster:"connecting",clusterUrl:null,ingressUrl:null,ingressPort:null,machine:null,cap:20,sandboxes:new Map,daemonError:null,logPath:null},Yki=new Set});var fzt={};Pi(fzt,{LinkApp:()=>MNl});import{Box as t$,Text as u$}from"ink";import{useSyncExternalStore as CNl}from"react";import{jsx as $f,jsxs as CE}from"react/jsx-runtime";function eNl(i){if(i.status==="ready")return{color:"green",text:"\u25CF Live"};if(i.status==="spawning")return{color:"yellow",text:"\u25CC Starting\u2026"};return{color:"red",text:`\u2717 Error: ${i.error??""}`}}function MNl(){let i=CNl(Gki,Pki),t=[...i.sandboxes.values()].sort((u,l)=>u.handle.localeCompare(l.handle));return CE(t$,{flexDirection:"column",children:[$f(Z0i,{version:J0i.version}),$f(t$,{marginBottom:1,children:$f(u$,{dimColor:!0,children:"\u2500".repeat(80)})}),$f(t$,{children:i.cluster==="linked"?CE(u$,{color:"green",children:["\u2713 Connected to ",i.clusterUrl??"deco"]}):i.cluster==="connecting"?CE(u$,{color:"yellow",children:["\u25CC Connecting to ",i.clusterUrl??"deco","\u2026"]}):CE(u$,{color:"red",children:["\u2717 Disconnected from ",i.clusterUrl??"deco"]})}),$f(t$,{children:i.ingressUrl?CE(u$,{color:"green",children:["\u2713 Serving at ",i.ingressUrl]}):$f(u$,{dimColor:!0,children:"\u25CC Starting local server\u2026"})}),$f(t$,{marginBottom:1,children:$f(u$,{dimColor:!0,children:`${"Computer".padEnd(16)}${i.machine??"this computer"} \xB7 ${t.length} of ${i.cap} previews`})}),t.length===0?$f(u$,{dimColor:!0,children:"No previews running yet."}):CE(t$,{flexDirection:"column",children:[CE(t$,{children:[$f(t$,{width:T0i.project,flexShrink:0,marginRight:1,children:$f(u$,{dimColor:!0,wrap:"truncate-end",children:"PROJECT"})}),$f(t$,{width:T0i.status,flexShrink:0,marginRight:1,children:$f(u$,{dimColor:!0,wrap:"truncate-end",children:"STATUS"})}),$f(t$,{flexGrow:1,children:$f(u$,{dimColor:!0,wrap:"truncate-end",children:"PREVIEW URL"})})]}),t.map((u)=>{let l=eNl(u);return CE(t$,{children:[$f(t$,{width:T0i.project,flexShrink:0,marginRight:1,children:$f(u$,{wrap:"truncate-end",children:u.handle})}),$f(t$,{width:T0i.status,flexShrink:0,marginRight:1,children:$f(u$,{color:l.color,wrap:"truncate-end",children:l.text})}),$f(t$,{flexGrow:1,children:$f(u$,{dimColor:!0,wrap:"truncate-end",children:u.previewUrl??"\u2014"})})]},u.handle)})]}),i.daemonError?$f(t$,{marginTop:1,children:CE(u$,{color:"red",children:["\u26A0 ",i.daemonError]})}):null,i.logPath?$f(t$,{marginTop:1,children:CE(u$,{dimColor:!0,children:["Logs: ",i.logPath]})}):null]})}var T0i;var czt=x(()=>{Qki();Bki();Wki();T0i={project:18,status:14}});var dzt={};Pi(dzt,{runLinkCommand:()=>iJl});import{closeSync as qNl,mkdirSync as VNl,openSync as aNl,writeSync as mNl}from"fs";import{homedir as oNl}from"os";import{join as $zt}from"path";function sNl(i,t){let u={log:console.log,warn:console.warn,error:console.error},l=(n)=>{if(t===void 0)return;try{mNl(t,`${Iki(n)}
|
|
104774
|
+
Shutting down\u2026`),h();try{await w.close()}catch{}try{await f.stop()}catch{}try{await n.shutdown()}catch{}try{E.close()}catch{}r(0)};return process.on("SIGINT",()=>void X()),process.on("SIGTERM",()=>void X()),v=()=>{console.log("Disconnect requested from the Studio web UI \u2014 shutting down. Run `bunx decocms link` to reconnect."),X()},w.closed.then(()=>{if(i.monitor?.onCluster?.("closed"),!y)console.error("Cluster connection closed permanently; exiting."),X()}),{stopped:O,stop:X}}var pSt=x(()=>{XWi();MH();wGt();OGt();XGt();GSt();Uki();CSt();MSt();VSt();eH();oSt()});function Iki(i){return i.map((t)=>typeof t==="string"?t:String(t)).join(" ")}var J0i;var Qki=x(()=>{J0i={name:"decocms",version:"3.34.1",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/mesh"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:'bun run migrate && concurrently "bun run dev:client" "bun run dev:server"',"dev:servers":'concurrently "bun run dev:client" "bun run dev:server"',"dev:client":"vite dev","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts","build:client":"bun --bun vite build","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","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","test:e2e":"playwright test","test:e2e:ui":"playwright test --ui","test:ct":"playwright test -c playwright-ct.config.ts","test:ct:ui":"playwright test -c playwright-ct.config.ts --ui","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts","smoke:link":"bun run scripts/smoke-link.ts",prepublishOnly:"bun run build:client && bun run build:server"},optionalDependencies:{"@anthropic-ai/claude-agent-sdk":"^0.2.141","@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.80","@ai-sdk/google":"^3.0.80","@ai-sdk/openai":"^3.0.65","@anthropic-ai/sdk":"^0.96.0","@aws-sdk/client-s3":"^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.17.6","@dnd-kit/core":"^6.3.1","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@inkjs/ui":"^2.0.0","@modelcontextprotocol/ext-apps":"^1.7.1","@openrouter/ai-sdk-provider":"^2.9.0","@opentelemetry/core":"^2.6.0","@tanstack/react-virtual":"3.13.24","@xterm/addon-fit":"^0.11.0","@xterm/xterm":"^6.0.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12",nats:"^2.29.3","node-pty":"^1.0.0","posthog-js":"^1.371.1","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@ai-sdk/react":"^3.0.193","@better-auth/sso":"1.4.1","@daveyplate/better-auth-ui":"^3.2.7","@deco/ui":"workspace:*","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/harness":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/mesh-sdk":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/std":"workspace:*","@floating-ui/react":"^0.27.16","@happy-dom/global-registrator":"^20.9.0","@hookform/resolvers":"^5.2.2","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@monaco-editor/react":"^4.7.0","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@playwright/experimental-ct-react":"1.59.1","@playwright/test":"^1.58.2","@radix-ui/react-avatar":"^1.1.10","@radix-ui/react-checkbox":"^1.3.3","@radix-ui/react-dialog":"^1.1.15","@radix-ui/react-dropdown-menu":"^2.1.16","@radix-ui/react-label":"^2.1.7","@radix-ui/react-select":"^2.2.6","@radix-ui/react-separator":"^1.1.7","@radix-ui/react-slot":"^1.2.3","@radix-ui/react-tabs":"^1.1.13","@rjsf/core":"^6.1.2","@rjsf/shadcn":"^6.1.2","@rjsf/utils":"^6.1.2","@rjsf/validator-ajv8":"^6.1.2","@tailwindcss/vite":"^4.1.17","@tanstack/react-query":"5.100.10","@tanstack/react-router":"1.169.2","@testing-library/jest-dom":"^6.9.1","@testing-library/react":"^16.3.2","@tiptap/core":"3.20.2","@tiptap/extension-mention":"3.20.2","@tiptap/extension-placeholder":"3.20.2","@tiptap/pm":"3.20.2","@tiptap/react":"3.20.2","@tiptap/starter-kit":"3.20.2","@tiptap/suggestion":"3.20.2","@types/bun":"^1.3.1","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@untitledui/icons":"^0.0.19","@vercel/nft":"^1.1.1","@vitejs/plugin-react":"^5.1.0",ai:"^6.0.191","babel-plugin-react-compiler":"^1.0.0","better-auth":"1.4.22","class-variance-authority":"^0.7.1",clsx:"^2.1.1",concurrently:"^9.2.1",croner:"^9.1.0","date-fns":"^4.1.0",degit:"^2.8.4",hono:"^4.10.7","input-otp":"^1.4.2",jose:"^6.0.11","lucide-react":"^0.468.0",marked:"^15.0.6","mesh-plugin-workflows":"workspace:*",nanoid:"^5.1.6",pg:"^8.16.3",prettier:"^3.4.2","react-hook-form":"^7.66.0","react-markdown":"^10.1.0","react-resizable-panels":"^2.1.7","react-syntax-highlighter":"^15.6.1",recharts:"^3.6.0","rehype-raw":"^7.0.0","remark-gfm":"^4.0.0","sass-embedded":"^1.97.2",sonner:"^2.0.7","tailwind-merge":"^3.3.1",tailwindcss:"^4.1.17",typescript:"^5.9.3",vite:"^7.2.1","vite-tsconfig-paths":"^5.1.4",zod:"^4.0.0",zustand:"^5.0.9"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","mesh","tools"],license:"MIT",publishConfig:{access:"public"}}});var DL={};Pi(DL,{printBanner:()=>ANl,bannerLines:()=>izt,BANNER_LINES:()=>U0i,BANNER_GRADIENT:()=>F0i});function WNl(i){let t=Number.parseInt(i.slice(1),16);return[t>>16&255,t>>8&255,t&255]}function izt(i){let t=U0i.map((u,l)=>{let[n,f,c]=WNl(F0i[l]);return`\x1B[38;2;${n};${f};${c}m${u}\x1B[39m`});if(i!==void 0)t.push(`\x1B[2m v${i}\x1B[22m`);return t}function ANl(i){console.log("");for(let t of izt(i))console.log(t);console.log("")}var U0i,F0i;var jA=x(()=>{U0i=[" \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588 ","\u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588 \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588 "," \u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2588 \u2591 \u2588\u2588\u2588 \u2591\u2591\u2591 \u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2591\u2591\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591 \u2588\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588 "," \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2591 ","\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591 "],F0i=["#00ff64","#00ee5e","#00dc56","#00c84e","#00b444","#00a03c","#008832","#006e28"]});import{Box as kNl,Text as tzt}from"ink";import{jsx as jNl,jsxs as uzt}from"react/jsx-runtime";function Z0i({version:i}){return uzt(kNl,{flexDirection:"column",marginTop:1,children:[U0i.map((t,u)=>jNl(tzt,{color:F0i[u],children:t},u)),uzt(tzt,{dimColor:!0,children:[" v",i]})]})}var Bki=x(()=>{jA()});var nzt={};Pi(nzt,{subscribeLinkState:()=>Gki,setMachine:()=>KNl,setLogPath:()=>LNl,setIngress:()=>bNl,setDaemonError:()=>HNl,setClusterUrl:()=>zNl,setCluster:()=>SNl,pushSandboxEvent:()=>RNl,getLinkState:()=>Pki,applySandboxEvent:()=>lzt});function lzt(i,t){let u=new Map(i);if(t.phase==="evicted"||t.phase==="deleted")return u.delete(t.handle),u;let l=u.get(t.handle);return u.set(t.handle,{handle:t.handle,port:t.port??l?.port??null,previewUrl:t.previewUrl??l?.previewUrl??null,status:t.phase,error:t.phase==="failed"?t.error??"failed":null}),u}function s8(){for(let i of Yki)i()}function Pki(){return i$}function Gki(i){return Yki.add(i),()=>Yki.delete(i)}function SNl(i){i$={...i$,cluster:i},s8()}function zNl(i){i$={...i$,clusterUrl:i},s8()}function bNl(i,t){i$={...i$,ingressPort:i,ingressUrl:t},s8()}function KNl(i){i$={...i$,machine:i},s8()}function HNl(i){i$={...i$,daemonError:i},s8()}function LNl(i){i$={...i$,logPath:i},s8()}function RNl(i){i$={...i$,sandboxes:lzt(i$.sandboxes,i)},s8()}var i$,Yki;var Wki=x(()=>{i$={cluster:"connecting",clusterUrl:null,ingressUrl:null,ingressPort:null,machine:null,cap:20,sandboxes:new Map,daemonError:null,logPath:null},Yki=new Set});var fzt={};Pi(fzt,{LinkApp:()=>MNl});import{Box as t$,Text as u$}from"ink";import{useSyncExternalStore as CNl}from"react";import{jsx as $f,jsxs as CE}from"react/jsx-runtime";function eNl(i){if(i.status==="ready")return{color:"green",text:"\u25CF Live"};if(i.status==="spawning")return{color:"yellow",text:"\u25CC Starting\u2026"};return{color:"red",text:`\u2717 Error: ${i.error??""}`}}function MNl(){let i=CNl(Gki,Pki),t=[...i.sandboxes.values()].sort((u,l)=>u.handle.localeCompare(l.handle));return CE(t$,{flexDirection:"column",children:[$f(Z0i,{version:J0i.version}),$f(t$,{marginBottom:1,children:$f(u$,{dimColor:!0,children:"\u2500".repeat(80)})}),$f(t$,{children:i.cluster==="linked"?CE(u$,{color:"green",children:["\u2713 Connected to ",i.clusterUrl??"deco"]}):i.cluster==="connecting"?CE(u$,{color:"yellow",children:["\u25CC Connecting to ",i.clusterUrl??"deco","\u2026"]}):CE(u$,{color:"red",children:["\u2717 Disconnected from ",i.clusterUrl??"deco"]})}),$f(t$,{children:i.ingressUrl?CE(u$,{color:"green",children:["\u2713 Serving at ",i.ingressUrl]}):$f(u$,{dimColor:!0,children:"\u25CC Starting local server\u2026"})}),$f(t$,{marginBottom:1,children:$f(u$,{dimColor:!0,children:`${"Computer".padEnd(16)}${i.machine??"this computer"} \xB7 ${t.length} of ${i.cap} previews`})}),t.length===0?$f(u$,{dimColor:!0,children:"No previews running yet."}):CE(t$,{flexDirection:"column",children:[CE(t$,{children:[$f(t$,{width:T0i.project,flexShrink:0,marginRight:1,children:$f(u$,{dimColor:!0,wrap:"truncate-end",children:"PROJECT"})}),$f(t$,{width:T0i.status,flexShrink:0,marginRight:1,children:$f(u$,{dimColor:!0,wrap:"truncate-end",children:"STATUS"})}),$f(t$,{flexGrow:1,children:$f(u$,{dimColor:!0,wrap:"truncate-end",children:"PREVIEW URL"})})]}),t.map((u)=>{let l=eNl(u);return CE(t$,{children:[$f(t$,{width:T0i.project,flexShrink:0,marginRight:1,children:$f(u$,{wrap:"truncate-end",children:u.handle})}),$f(t$,{width:T0i.status,flexShrink:0,marginRight:1,children:$f(u$,{color:l.color,wrap:"truncate-end",children:l.text})}),$f(t$,{flexGrow:1,children:$f(u$,{dimColor:!0,wrap:"truncate-end",children:u.previewUrl??"\u2014"})})]},u.handle)})]}),i.daemonError?$f(t$,{marginTop:1,children:CE(u$,{color:"red",children:["\u26A0 ",i.daemonError]})}):null,i.logPath?$f(t$,{marginTop:1,children:CE(u$,{dimColor:!0,children:["Logs: ",i.logPath]})}):null]})}var T0i;var czt=x(()=>{Qki();Bki();Wki();T0i={project:18,status:14}});var dzt={};Pi(dzt,{runLinkCommand:()=>iJl});import{closeSync as qNl,mkdirSync as VNl,openSync as aNl,writeSync as mNl}from"fs";import{homedir as oNl}from"os";import{join as $zt}from"path";function sNl(i,t){let u={log:console.log,warn:console.warn,error:console.error},l=(n)=>{if(t===void 0)return;try{mNl(t,`${Iki(n)}
|
|
104775
104775
|
`)}catch{}};return console.log=(...n)=>l(n),console.warn=(...n)=>l(n),console.error=(...n)=>{l(n),i(Iki(n))},()=>{console.log=u.log,console.warn=u.warn,console.error=u.error}}async function pNl(i,t){let u;try{u=await fetch(`${i}/api/links/me`,{headers:{authorization:`Bearer ${t}`},signal:AbortSignal.timeout(1e4)})}catch{return}if(u.status===401||u.status===403)throw Error(`Authentication rejected by ${i} \u2014 the session token was not accepted. `+`Run \`deco auth login --target ${i}\` and try again.`)}async function iJl(i={}){let t=i.port??5174,u=i.dataDir??process.env.DATA_DIR??process.env.DECOCMS_HOME??$zt(oNl(),"deco"),l=i.clusterBaseUrl??process.env.MESH_CLUSTER_URL??"https://studio.decocms.com",n,f;try{let c=await cli({dataDir:u,intent:"Link",target:l});if(process.env.DECOCMS_LINK_MANAGED!=="1")await pNl(l,c.accessToken);let $;if(i.tui){let{render:g}=await import("ink"),{createElement:h}=await import("react"),{LinkApp:E}=await Promise.resolve().then(() => (czt(),fzt)),{pushSandboxEvent:v,setCluster:w,setClusterUrl:r,setDaemonError:O,setIngress:y,setLogPath:X,setMachine:N}=await Promise.resolve().then(() => (Wki(),nzt));VNl(u,{recursive:!0});let U=$zt(u,"link.log");f=aNl(U,"w"),X(U),r(l),w("connecting"),$={onEvent:(J)=>v(J),onIngress:(J)=>y(J,`http://127.0.0.1:${J}`),onCluster:(J)=>w(J),onMachine:(J)=>N(J)},n=sNl(O,f),g(h(E),{patchConsole:!1})}else if(i.banner!==!1){let{printBanner:g}=await Promise.resolve().then(() => (jA(),DL));g(i.version??"0.0.0")}let d=process.env.DECOCMS_LINK_MANAGED!=="1";return await(await sSt({port:t,clusterBaseUrl:l,dataDir:u,session:c,monitor:$,logFd:f,perSandboxLogs:d,hotReload:i.hotReload})).stopped}catch(c){return n?.(),console.error(c instanceof Error?c.message:String(c)),1}finally{if(n?.(),f!==void 0)try{qNl(f)}catch{}}}var _zt=x(()=>{yWi();pSt()});var bki={};Pi(bki,{resolveDevLinkClusterUrl:()=>nJl,populateDevLinkToxiProxy:()=>xzt,isDevLinkToxiProxyEnabled:()=>lJl,ensureDevLinkToxiProxy:()=>_Jl,buildDevLinkToxiProxyConfig:()=>vzt,DEV_LINK_TOXIPROXY_SERVICE_NAME:()=>hzt,DEV_LINK_TOXIPROXY_PROXY_NAME:()=>Ezt});function lJl(i=process.env){return i.DECO_DEV_LINK_TOXIPROXY==="1"}function Aki(i,t){if(!Number.isInteger(i)||i<1||i>65535)throw Error(`${t} must be an integer port in 1..65535`);return i}function vzt(i){let t=new URL(i.serverUrl);if(t.protocol!=="http:")throw Error("DECO_DEV_LINK_TOXIPROXY only supports http local Studio URLs");let u=Aki(i.apiPort,"apiPort"),l=Aki(i.listenPort,"listenPort");if(t.port.length===0)throw Error("serverUrl must include an explicit valid port");let n=Aki(Number.parseInt(t.port,10),"upstreamPort"),f=`http://127.0.0.1:${n}`,c=`http://127.0.0.1:${l}`;return{serviceName:hzt,proxyName:Ezt,apiUrl:`http://127.0.0.1:${u}`,listen:`0.0.0.0:${l}`,upstream:`host.docker.internal:${n}`,publicTargetUrl:f,clusterUrl:c,logLine:`[dev-link-toxiproxy] ready: ${c} -> ${f}`}}function nJl(i){return i.toxiproxy?.clusterUrl??i.serverUrl}async function kki(i,t,u){if(i.ok)return;let l=await i.text();throw Error(`ToxiProxy ${t} failed for ${u}: status=${i.status} statusText=${i.statusText} body=${l}`)}function zki(i){if(i instanceof Error)return i.name==="Error"?i.message:`${i.name}: ${i.message}`;return String(i)}function wzt(i){if(!(i instanceof Error))return!1;if(i.name==="TimeoutError")return!0;return wzt(i.cause)}async function jki(i,t,u,l){try{return await i(u,l)}catch(n){throw Error(`ToxiProxy ${t} failed for ${u}: ${zki(n)}`,{cause:n})}}async function xzt(i,t=fetch){let u=`${i.apiUrl}/reset`,l=await jki(t,"reset",u,{method:"POST"});await kki(l,"reset",u);let n=`${i.apiUrl}/populate`,f=await jki(t,"populate",n,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify([{name:i.proxyName,listen:i.listen,upstream:i.upstream,enabled:!0}])});await kki(f,"populate",n)}async function fJl(i,t){let u=`${i.apiUrl}/version`;try{await F3(async()=>{let l=await jki(t,"readiness check",u,{method:"GET",signal:AbortSignal.timeout(uJl)});await kki(l,"readiness check",u)},{maxAttempts:tJl,minTimeout:gzt,maxTimeout:gzt,multiplier:1,jitter:0,isRetriable:(l)=>!wzt(l)})}catch(l){let n=l instanceof F6?l.cause:l;throw Error(`ToxiProxy API did not become ready at ${u}: ${zki(n)}`,{cause:n})}}async function cJl(i){if(i===null)return"";return await new Response(i).text()}async function Ski(i,t={}){let u=["docker",...i].join(" "),l=(()=>{try{return Bun.spawn(["docker",...i],{stdout:"ignore",stderr:"pipe"})}catch($){throw Error(`Docker command failed to start (${u}): ${zki($)}`,{cause:$})}})(),[n,f]=await Promise.all([l.exited,cJl(l.stderr)]);if(n===0||t.ignoreFailure===!0)return;let c=f.trim().length>0?`: ${f.trim()}`:"";throw Error(`Docker command failed (${u}) with exit ${n}${c}`)}async function $Jl(i,t){let u=`deco-dev-link-toxiproxy-${i}`;await Ski(["rm","-f",u],{ignoreFailure:!0}),await Ski(["run","--rm","-d","--name",u,"-p",`127.0.0.1:${i}:8474`,"-p",`127.0.0.1:${t}:${t}`,"ghcr.io/shopify/toxiproxy:2.12.0","-host=0.0.0.0"])}async function dJl(i,t){let u=`deco-dev-link-toxiproxy-${i}`;await Ski(["rm","-f",u],{ignoreFailure:!0})}async function _Jl(i){let t=vzt(i),u=i.startDaemon??$Jl,l=i.stopDaemon??(i.startDaemon===void 0?dJl:void 0);await u(i.apiPort,i.listenPort);let n=i.fetchImpl??fetch;try{await fJl(t,n),await xzt(t,n)}catch(f){if(l!==void 0)try{await l(i.apiPort,i.listenPort)}catch{}throw f}return{config:t,stop:async()=>{if(l!==void 0)await l(i.apiPort,i.listenPort)}}}var hzt="ToxiProxy",Ezt="dev_link_studio",tJl=20,gzt=100,uJl=100;var Kki=x(()=>{H1()});var rzt={};Pi(rzt,{migrateBetterAuth:()=>Hki});import{getMigrations as gJl}from"better-auth/db";import{sso as hJl}from"@better-auth/sso";import{organization as EJl}from"@decocms/better-auth/plugins";import{admin as vJl,apiKey as wJl,jwt as xJl,magicLink as rJl,mcp as DJl,openAPI as OJl}from"better-auth/plugins";import{emailOTP as yJl}from"better-auth/plugins/email-otp";async function Hki(i){let u={database:KH(i||Ax()),plugins:[EJl({dynamicAccessControl:{enabled:!0,enableCustomResources:!0}}),vJl(),wJl(),xJl(),OJl(),DJl({loginPage:"/login"}),hJl(),rJl({sendMagicLink:async()=>{}}),yJl({sendVerificationOTP:async()=>{}})]},{toBeAdded:l,toBeCreated:n,runMigrations:f}=await gJl(u);if(!l.length&&!n.length)return"up to date";return await f(),`${n.length+l.length} table(s) migrated`}var Lki=x(()=>{j$()});var Rki={};Pi(Rki,{up:()=>XJl,down:()=>NJl});import{sql as eE}from"kysely";async function XJl(i){await i.schema.createTable("connections").addColumn("id","text",(t)=>t.primaryKey()).addColumn("organizationId","text",(t)=>t.notNull().references("organization.id").onDelete("cascade")).addColumn("createdById","text",(t)=>t.notNull().references("user.id").onDelete("cascade")).addColumn("name","text",(t)=>t.notNull()).addColumn("description","text").addColumn("icon","text").addColumn("appName","text").addColumn("appId","text").addColumn("connectionType","text",(t)=>t.notNull()).addColumn("connectionUrl","text",(t)=>t.notNull()).addColumn("connectionToken","text").addColumn("connectionHeaders","text").addColumn("oauthConfig","text").addColumn("metadata","text").addColumn("tools","text").addColumn("bindings","text").addColumn("status","text",(t)=>t.notNull().defaultTo("active")).addColumn("createdAt","text",(t)=>t.notNull().defaultTo(eE`CURRENT_TIMESTAMP`)).addColumn("updatedAt","text",(t)=>t.notNull().defaultTo(eE`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("api_keys").addColumn("id","text",(t)=>t.primaryKey()).addColumn("userId","text",(t)=>t.notNull().references("user.id").onDelete("cascade")).addColumn("name","text",(t)=>t.notNull()).addColumn("hashedKey","text",(t)=>t.notNull().unique()).addColumn("permissions","text",(t)=>t.notNull()).addColumn("expiresAt","text").addColumn("remaining","integer").addColumn("metadata","text").addColumn("createdAt","text",(t)=>t.notNull().defaultTo(eE`CURRENT_TIMESTAMP`)).addColumn("updatedAt","text",(t)=>t.notNull().defaultTo(eE`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("audit_logs").addColumn("id","text",(t)=>t.primaryKey()).addColumn("organizationId","text").addColumn("userId","text",(t)=>t.references("user.id").onDelete("set null")).addColumn("connectionId","text",(t)=>t.references("connections.id").onDelete("set null")).addColumn("toolName","text",(t)=>t.notNull()).addColumn("allowed","integer",(t)=>t.notNull()).addColumn("duration","integer").addColumn("timestamp","text",(t)=>t.notNull().defaultTo(eE`CURRENT_TIMESTAMP`)).addColumn("requestMetadata","text").execute(),await i.schema.createTable("oauth_clients").addColumn("id","text",(t)=>t.primaryKey()).addColumn("clientId","text",(t)=>t.notNull().unique()).addColumn("clientSecret","text").addColumn("clientName","text",(t)=>t.notNull()).addColumn("redirectUris","text",(t)=>t.notNull()).addColumn("grantTypes","text",(t)=>t.notNull()).addColumn("scope","text").addColumn("clientUri","text").addColumn("logoUri","text").addColumn("createdAt","text",(t)=>t.notNull().defaultTo(eE`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("oauth_authorization_codes").addColumn("code","text",(t)=>t.primaryKey()).addColumn("clientId","text",(t)=>t.notNull().references("oauth_clients.clientId").onDelete("cascade")).addColumn("userId","text",(t)=>t.notNull().references("user.id").onDelete("cascade")).addColumn("redirectUri","text",(t)=>t.notNull()).addColumn("scope","text").addColumn("codeChallenge","text").addColumn("codeChallengeMethod","text").addColumn("expiresAt","text",(t)=>t.notNull()).addColumn("createdAt","text",(t)=>t.notNull().defaultTo(eE`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("oauth_refresh_tokens").addColumn("token","text",(t)=>t.primaryKey()).addColumn("clientId","text",(t)=>t.notNull().references("oauth_clients.clientId").onDelete("cascade")).addColumn("userId","text",(t)=>t.notNull().references("user.id").onDelete("cascade")).addColumn("scope","text").addColumn("expiresAt","text").addColumn("createdAt","text",(t)=>t.notNull().defaultTo(eE`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("downstream_tokens").addColumn("id","text",(t)=>t.primaryKey()).addColumn("connectionId","text",(t)=>t.notNull().references("connections.id").onDelete("cascade")).addColumn("userId","text",(t)=>t.references("user.id").onDelete("cascade")).addColumn("accessToken","text",(t)=>t.notNull()).addColumn("refreshToken","text").addColumn("scope","text").addColumn("expiresAt","text").addColumn("createdAt","text",(t)=>t.notNull().defaultTo(eE`CURRENT_TIMESTAMP`)).addColumn("updatedAt","text",(t)=>t.notNull().defaultTo(eE`CURRENT_TIMESTAMP`)).execute(),await i.schema.createIndex("idx_connections_organizationId").on("connections").column("organizationId").execute(),await i.schema.createIndex("idx_audit_logs_organizationId").on("audit_logs").column("organizationId").execute(),await i.schema.createIndex("idx_audit_logs_userId").on("audit_logs").column("userId").execute(),await i.schema.createIndex("idx_audit_logs_timestamp").on("audit_logs").column("timestamp").execute()}async function NJl(i){await i.schema.dropTable("downstream_tokens").execute(),await i.schema.dropTable("oauth_refresh_tokens").execute(),await i.schema.dropTable("oauth_authorization_codes").execute(),await i.schema.dropTable("oauth_clients").execute(),await i.schema.dropTable("audit_logs").execute(),await i.schema.dropTable("api_keys").execute(),await i.schema.dropTable("connections").execute()}var Dzt=()=>{};var Cki={};Pi(Cki,{up:()=>JJl,down:()=>UJl});import{sql as Ozt}from"kysely";async function JJl(i){await i.schema.createTable("organization_settings").addColumn("organizationId","text",(t)=>t.primaryKey().references("organization.id").onDelete("cascade")).addColumn("modelsBindingConnectionId","text",(t)=>t.references("connections.id").onDelete("set null")).addColumn("createdAt","text",(t)=>t.notNull().defaultTo(Ozt`CURRENT_TIMESTAMP`)).addColumn("updatedAt","text",(t)=>t.notNull().defaultTo(Ozt`CURRENT_TIMESTAMP`)).execute()}async function UJl(i){await i.schema.dropTable("organization_settings").execute()}var yzt=()=>{};var eki={};Pi(eki,{up:()=>FJl,down:()=>ZJl});async function FJl(i){await i.schema.alterTable("connections").renameColumn("name","title").execute(),await i.schema.alterTable("connections").renameColumn("createdById","created_by").execute(),await i.schema.alterTable("connections").renameColumn("createdAt","created_at").execute(),await i.schema.alterTable("connections").renameColumn("updatedAt","updated_at").execute(),await i.schema.alterTable("connections").renameColumn("organizationId","organization_id").execute(),await i.schema.alterTable("connections").renameColumn("connectionType","connection_type").execute(),await i.schema.alterTable("connections").renameColumn("connectionUrl","connection_url").execute(),await i.schema.alterTable("connections").renameColumn("connectionToken","connection_token").execute(),await i.schema.alterTable("connections").renameColumn("connectionHeaders","connection_headers").execute(),await i.schema.alterTable("connections").renameColumn("oauthConfig","oauth_config").execute(),await i.schema.alterTable("connections").renameColumn("appName","app_name").execute(),await i.schema.alterTable("connections").renameColumn("appId","app_id").execute()}async function ZJl(i){await i.schema.alterTable("connections").renameColumn("title","name").execute(),await i.schema.alterTable("connections").renameColumn("created_by","createdById").execute(),await i.schema.alterTable("connections").renameColumn("created_at","createdAt").execute(),await i.schema.alterTable("connections").renameColumn("updated_at","updatedAt").execute(),await i.schema.alterTable("connections").renameColumn("organization_id","organizationId").execute(),await i.schema.alterTable("connections").renameColumn("connection_type","connectionType").execute(),await i.schema.alterTable("connections").renameColumn("connection_url","connectionUrl").execute(),await i.schema.alterTable("connections").renameColumn("connection_token","connectionToken").execute(),await i.schema.alterTable("connections").renameColumn("connection_headers","connectionHeaders").execute(),await i.schema.alterTable("connections").renameColumn("oauth_config","oauthConfig").execute(),await i.schema.alterTable("connections").renameColumn("app_name","appName").execute(),await i.schema.alterTable("connections").renameColumn("app_id","appId").execute()}var Mki={};Pi(Mki,{up:()=>TJl,down:()=>IJl});async function TJl(i){await i.schema.createTable("organization_settings_new").addColumn("organizationId","text",(t)=>t.primaryKey().references("organization.id").onDelete("cascade")).addColumn("createdAt","text",(t)=>t.notNull()).addColumn("updatedAt","text",(t)=>t.notNull()).execute(),await i.insertInto("organization_settings_new").columns(["organizationId","createdAt","updatedAt"]).expression((t)=>t.selectFrom("organization_settings").select(["organizationId","createdAt","updatedAt"])).execute(),await i.schema.dropTable("organization_settings").execute(),await i.schema.alterTable("organization_settings_new").renameTo("organization_settings").execute()}async function IJl(i){await i.schema.createTable("organization_settings_new").addColumn("organizationId","text",(t)=>t.primaryKey().references("organization.id").onDelete("cascade")).addColumn("modelsBindingConnectionId","text",(t)=>t.references("connections.id").onDelete("set null")).addColumn("createdAt","text",(t)=>t.notNull()).addColumn("updatedAt","text",(t)=>t.notNull()).execute(),await i.insertInto("organization_settings_new").columns(["organizationId","modelsBindingConnectionId","createdAt","updatedAt"]).expression((t)=>t.selectFrom("organization_settings").select(["organizationId",t.val(null).as("modelsBindingConnectionId"),"createdAt","updatedAt"])).execute(),await i.schema.dropTable("organization_settings").execute(),await i.schema.alterTable("organization_settings_new").renameTo("organization_settings").execute()}var qki={};Pi(qki,{up:()=>QJl,down:()=>BJl});async function QJl(i){await i.schema.alterTable("connections").addColumn("configuration_state","text").execute(),await i.schema.alterTable("connections").addColumn("configuration_scopes","text").execute()}async function BJl(i){await i.schema.alterTable("connections").dropColumn("configuration_state").execute(),await i.schema.alterTable("connections").dropColumn("configuration_scopes").execute()}var Vki={};Pi(Vki,{up:()=>PJl,down:()=>GJl});import{sql as YJl}from"kysely";async function PJl(i){await i.schema.alterTable("organization_settings").addColumn("sidebar_items",YJl`text`).execute()}async function GJl(i){await i.schema.alterTable("organization_settings").dropColumn("sidebar_items").execute()}var Xzt=()=>{};var aki={};Pi(aki,{up:()=>WJl,down:()=>AJl});async function WJl(i){await i.schema.createTable("monitoring_logs").addColumn("id","text",(t)=>t.primaryKey()).addColumn("organization_id","text",(t)=>t.notNull().references("organization.id").onDelete("cascade")).addColumn("connection_id","text",(t)=>t.notNull().references("connections.id").onDelete("cascade")).addColumn("connection_title","text",(t)=>t.notNull()).addColumn("tool_name","text",(t)=>t.notNull()).addColumn("input","text",(t)=>t.notNull()).addColumn("output","text",(t)=>t.notNull()).addColumn("is_error","integer",(t)=>t.notNull()).addColumn("error_message","text").addColumn("duration_ms","integer",(t)=>t.notNull()).addColumn("timestamp","text",(t)=>t.notNull()).addColumn("user_id","text").addColumn("request_id","text",(t)=>t.notNull()).execute(),await i.schema.createIndex("monitoring_logs_org_timestamp").on("monitoring_logs").columns(["organization_id","timestamp"]).execute(),await i.schema.createIndex("monitoring_logs_connection_timestamp").on("monitoring_logs").columns(["connection_id","timestamp"]).execute(),await i.schema.createIndex("monitoring_logs_is_error").on("monitoring_logs").columns(["organization_id","is_error","timestamp"]).execute()}async function AJl(i){await i.schema.dropIndex("monitoring_logs_is_error").execute(),await i.schema.dropIndex("monitoring_logs_connection_timestamp").execute(),await i.schema.dropIndex("monitoring_logs_org_timestamp").execute(),await i.schema.dropTable("monitoring_logs").execute()}var mki={};Pi(mki,{up:()=>kJl,down:()=>jJl});import{sql as OL}from"kysely";async function kJl(i){await i.schema.createTable("events").addColumn("id","text",(t)=>t.primaryKey()).addColumn("organization_id","text",(t)=>t.notNull().references("organization.id").onDelete("cascade")).addColumn("type","text",(t)=>t.notNull()).addColumn("source","text",(t)=>t.notNull()).addColumn("specversion","text",(t)=>t.notNull().defaultTo("1.0")).addColumn("subject","text").addColumn("time","text",(t)=>t.notNull()).addColumn("datacontenttype","text",(t)=>t.notNull().defaultTo("application/json")).addColumn("dataschema","text").addColumn("data","text").addColumn("cron","varchar(255)").addColumn("status","text",(t)=>t.notNull().defaultTo("pending")).addColumn("attempts","integer",(t)=>t.notNull().defaultTo(0)).addColumn("last_error","text").addColumn("next_retry_at","text").addColumn("created_at","text",(t)=>t.notNull().defaultTo(OL`CURRENT_TIMESTAMP`)).addColumn("updated_at","text",(t)=>t.notNull().defaultTo(OL`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("event_subscriptions").addColumn("id","text",(t)=>t.primaryKey()).addColumn("organization_id","text",(t)=>t.notNull().references("organization.id").onDelete("cascade")).addColumn("connection_id","text",(t)=>t.notNull().references("connections.id").onDelete("cascade")).addColumn("publisher","text").addColumn("event_type","text",(t)=>t.notNull()).addColumn("filter","text").addColumn("enabled","integer",(t)=>t.notNull().defaultTo(1)).addColumn("created_at","text",(t)=>t.notNull().defaultTo(OL`CURRENT_TIMESTAMP`)).addColumn("updated_at","text",(t)=>t.notNull().defaultTo(OL`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("event_deliveries").addColumn("id","text",(t)=>t.primaryKey()).addColumn("event_id","text",(t)=>t.notNull()).addColumn("subscription_id","text",(t)=>t.notNull().references("event_subscriptions.id").onDelete("cascade")).addColumn("status","text",(t)=>t.notNull().defaultTo("pending")).addColumn("attempts","integer",(t)=>t.notNull().defaultTo(0)).addColumn("last_error","text").addColumn("delivered_at","text").addColumn("next_retry_at","text").addColumn("created_at","text",(t)=>t.notNull().defaultTo(OL`CURRENT_TIMESTAMP`)).execute(),await i.schema.createIndex("idx_events_org_status").on("events").columns(["organization_id","status"]).execute(),await i.schema.createIndex("idx_events_source").on("events").columns(["source"]).execute(),await i.schema.createIndex("idx_events_type").on("events").columns(["type"]).execute(),await i.schema.createIndex("idx_events_retry").on("events").columns(["status","next_retry_at"]).execute(),await i.schema.createIndex("idx_subscriptions_connection").on("event_subscriptions").columns(["connection_id"]).execute(),await i.schema.createIndex("idx_subscriptions_type").on("event_subscriptions").columns(["event_type"]).execute(),await i.schema.createIndex("idx_subscriptions_org_enabled").on("event_subscriptions").columns(["organization_id","enabled"]).execute(),await i.schema.createIndex("idx_subscriptions_unique").on("event_subscriptions").columns(["connection_id","event_type","publisher","filter"]).unique().execute(),await i.schema.createIndex("idx_deliveries_event").on("event_deliveries").columns(["event_id"]).execute(),await i.schema.createIndex("idx_deliveries_subscription_status").on("event_deliveries").columns(["subscription_id","status"]).execute(),await i.schema.createIndex("idx_deliveries_retry").on("event_deliveries").columns(["status","next_retry_at"]).execute()}async function jJl(i){await i.schema.dropIndex("idx_deliveries_retry").execute(),await i.schema.dropIndex("idx_deliveries_subscription_status").execute(),await i.schema.dropIndex("idx_deliveries_event").execute(),await i.schema.dropIndex("idx_subscriptions_unique").execute(),await i.schema.dropIndex("idx_subscriptions_org_enabled").execute(),await i.schema.dropIndex("idx_subscriptions_type").execute(),await i.schema.dropIndex("idx_subscriptions_connection").execute(),await i.schema.dropIndex("idx_events_retry").execute(),await i.schema.dropIndex("idx_events_type").execute(),await i.schema.dropIndex("idx_events_source").execute(),await i.schema.dropIndex("idx_events_org_status").execute(),await i.schema.dropTable("event_deliveries").execute(),await i.schema.dropTable("event_subscriptions").execute(),await i.schema.dropTable("events").execute()}var Nzt=()=>{};var oki={};Pi(oki,{up:()=>zJl,down:()=>bJl});import{sql as SJl}from"kysely";async function zJl(i){await i.schema.dropTable("audit_logs").ifExists().execute()}async function bJl(i){await i.schema.createTable("audit_logs").ifNotExists().addColumn("id","text",(t)=>t.primaryKey()).addColumn("organizationId","text").addColumn("userId","text",(t)=>t.references("user.id").onDelete("set null")).addColumn("connectionId","text",(t)=>t.references("connections.id").onDelete("set null")).addColumn("toolName","text",(t)=>t.notNull()).addColumn("allowed","integer",(t)=>t.notNull()).addColumn("duration","integer").addColumn("timestamp","text",(t)=>t.notNull().defaultTo(SJl`CURRENT_TIMESTAMP`)).addColumn("requestMetadata","text").execute(),await i.schema.createIndex("idx_audit_logs_organizationId").on("audit_logs").column("organizationId").execute(),await i.schema.createIndex("idx_audit_logs_userId").on("audit_logs").column("userId").execute(),await i.schema.createIndex("idx_audit_logs_timestamp").on("audit_logs").column("timestamp").execute()}var Jzt=()=>{};var ski={};Pi(ski,{up:()=>KJl,down:()=>HJl});import{sql as I0i}from"kysely";async function KJl(i){await i.schema.createTable("gateways").addColumn("id","text",(t)=>t.primaryKey()).addColumn("organization_id","text",(t)=>t.notNull().references("organization.id").onDelete("cascade")).addColumn("title","text",(t)=>t.notNull()).addColumn("description","text").addColumn("tool_selection_strategy","text").addColumn("status","text",(t)=>t.notNull().defaultTo("active")).addColumn("is_default","integer",(t)=>t.notNull().defaultTo(0)).addColumn("created_at","text",(t)=>t.notNull().defaultTo(I0i`CURRENT_TIMESTAMP`)).addColumn("updated_at","text",(t)=>t.notNull().defaultTo(I0i`CURRENT_TIMESTAMP`)).addColumn("created_by","text",(t)=>t.notNull().references("user.id").onDelete("cascade")).addColumn("updated_by","text").execute(),await i.schema.createTable("gateway_connections").addColumn("id","text",(t)=>t.primaryKey()).addColumn("gateway_id","text",(t)=>t.notNull().references("gateways.id").onDelete("cascade")).addColumn("connection_id","text",(t)=>t.notNull().references("connections.id").onDelete("cascade")).addColumn("selected_tools","text").addColumn("created_at","text",(t)=>t.notNull().defaultTo(I0i`CURRENT_TIMESTAMP`)).execute(),await i.schema.createIndex("idx_gateways_org").on("gateways").columns(["organization_id"]).execute(),await i.schema.createIndex("idx_gateways_org_status").on("gateways").columns(["organization_id","status"]).execute(),await I0i`CREATE UNIQUE INDEX idx_gateways_default_per_org ON gateways (organization_id) WHERE is_default = 1`.execute(i),await i.schema.createIndex("idx_gateway_connections_gateway").on("gateway_connections").columns(["gateway_id"]).execute(),await i.schema.createIndex("idx_gateway_connections_connection").on("gateway_connections").columns(["connection_id"]).execute(),await i.schema.createIndex("idx_gateway_connections_unique").on("gateway_connections").columns(["gateway_id","connection_id"]).unique().execute()}async function HJl(i){await i.schema.dropIndex("idx_gateway_connections_unique").execute(),await i.schema.dropIndex("idx_gateway_connections_connection").execute(),await i.schema.dropIndex("idx_gateway_connections_gateway").execute(),await i.schema.dropIndex("idx_gateways_default_per_org").execute(),await i.schema.dropIndex("idx_gateways_org_status").execute(),await i.schema.dropIndex("idx_gateways_org").execute(),await i.schema.dropTable("gateway_connections").execute(),await i.schema.dropTable("gateways").execute()}var Uzt=()=>{};var pki={};Pi(pki,{up:()=>LJl,down:()=>RJl});async function LJl(i){await i.schema.alterTable("gateways").addColumn("icon","text").execute()}async function RJl(i){await i.schema.alterTable("gateways").dropColumn("icon").execute()}var iji={};Pi(iji,{up:()=>CJl,down:()=>eJl});import{sql as Q0i}from"kysely";async function CJl(i){await i.schema.alterTable("gateways").addColumn("tool_selection_mode","text",(t)=>t.notNull().defaultTo("inclusion")).execute(),await Q0i`
|
|
104776
104776
|
UPDATE gateways
|
|
104777
104777
|
SET tool_selection_mode = CASE
|