decocms 4.152.0 → 4.152.2
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-DlCaG2T2.js → AlertCircle-CJIb11xM.js} +1 -1
- package/dist/client/assets/{AreaChart-DqPkzX2A.js → AreaChart-BD-p9vcZ.js} +1 -1
- package/dist/client/assets/{ArrowUp-CS9o0THc.js → ArrowUp-C4eq2Obn.js} +1 -1
- package/dist/client/assets/{ArrowUpRight-v7OrIvWG.js → ArrowUpRight-DY5OrDCo.js} +1 -1
- package/dist/client/assets/{Check-CIsM3N9I.js → Check-CzuAentr.js} +1 -1
- package/dist/client/assets/{CheckCircle-DUtMXKgF.js → CheckCircle-L1MZeMEC.js} +1 -1
- package/dist/client/assets/{ChevronDown-C-___fQ6.js → ChevronDown-CClFlSxz.js} +1 -1
- package/dist/client/assets/{ChevronRight-DwdLrQ8h.js → ChevronRight-uevwIauT.js} +1 -1
- package/dist/client/assets/{ChevronUp-CWE23P83.js → ChevronUp-BMENMqPe.js} +1 -1
- package/dist/client/assets/{Copy01-D1uFAWpq.js → Copy01-DKc_cNPS.js} +1 -1
- package/dist/client/assets/{CpuChip01-BrmMIXqJ.js → CpuChip01-CQZHTBv_.js} +1 -1
- package/dist/client/assets/{DotsVertical-DM8TYJWO.js → DotsVertical-DNiWmGQW.js} +1 -1
- package/dist/client/assets/{Eye-DYRbk_FK.js → Eye-CLJlIW72.js} +1 -1
- package/dist/client/assets/{FilterLines-DOdX_JJm.js → FilterLines-_KV74m1j.js} +1 -1
- package/dist/client/assets/{HardDrive-BTalyxAK.js → HardDrive-D3MsBwdM.js} +1 -1
- package/dist/client/assets/{Key01-D5ImL6HD.js → Key01-Ph8ozLZ_.js} +1 -1
- package/dist/client/assets/{LayoutLeft-BRPm5cm9.js → LayoutLeft-BLprwKtV.js} +1 -1
- package/dist/client/assets/{LinkExternal01-CSMYCtGE.js → LinkExternal01-Bmn2On3L.js} +1 -1
- package/dist/client/assets/{LogOut01-Bzr_aJnU.js → LogOut01-DtXlL9FN.js} +1 -1
- package/dist/client/assets/{Monitor01-Bqyb5D0X.js → Monitor01-Cq5ooC-g.js} +1 -1
- package/dist/client/assets/{Palette-DQXxO_Zw.js → Palette-DfxMP9C1.js} +1 -1
- package/dist/client/assets/{Play-ze0mQyFJ.js → Play-D9njRjDI.js} +1 -1
- package/dist/client/assets/{Plus-D-2nfsl2.js → Plus-DLbtYGri.js} +1 -1
- package/dist/client/assets/{SearchLg-DoVlHmIZ.js → SearchLg-DctVlVQz.js} +1 -1
- package/dist/client/assets/{SearchMd-Cm36E9Xo.js → SearchMd-EJtaQP9g.js} +1 -1
- package/dist/client/assets/{Settings02-pppnjkb2.js → Settings02-D2Od6hIu.js} +1 -1
- package/dist/client/assets/{Shield01-CGf643gW.js → Shield01-CfDR602-.js} +1 -1
- package/dist/client/assets/{Star01-Cl0j6KMs.js → Star01-vKIuVNvK.js} +1 -1
- package/dist/client/assets/{Stars01-L5uKPL3F.js → Stars01-3Jc0GjIj.js} +1 -1
- package/dist/client/assets/{Stars02-BqBDz0Ci.js → Stars02-pjrDL108.js} +1 -1
- package/dist/client/assets/{Sun-CX-gvZMN.js → Sun-D70XMNg2.js} +1 -1
- package/dist/client/assets/{SwitchHorizontal01-BDFmNRGc.js → SwitchHorizontal01-DqL7dpQo.js} +1 -1
- package/dist/client/assets/{Tool01-CVSPNErZ.js → Tool01-BqM3fhvU.js} +1 -1
- package/dist/client/assets/{Tool02-D1EiJbi2.js → Tool02-CdAHKhSP.js} +1 -1
- package/dist/client/assets/{Trash01-dKHzJjw_.js → Trash01-CQlBG8ML.js} +1 -1
- package/dist/client/assets/{TrendUp01-DGX8zY19.js → TrendUp01-BOoR0Suf.js} +1 -1
- package/dist/client/assets/{Upload01-C2e3NiFr.js → Upload01-bMCburYR.js} +1 -1
- package/dist/client/assets/{User01-BQ3iXws6.js → User01-Bk3KF8L-.js} +1 -1
- package/dist/client/assets/{Users01-CMnNEEb2.js → Users01-DrmBjw74.js} +1 -1
- package/dist/client/assets/{Users03-CdjtU4Tu.js → Users03-DjFIwR1e.js} +1 -1
- package/dist/client/assets/{X-IkzSoxJZ.js → X-F_AtITBB.js} +1 -1
- package/dist/client/assets/{XCircle-DkYunYi_.js → XCircle-BmPLYPUm.js} +1 -1
- package/dist/client/assets/{XClose-DXpsTMs9.js → XClose-pCZ95Skb.js} +1 -1
- package/dist/client/assets/{Zap-Dvt93UNJ.js → Zap-DSrBTwKT.js} +1 -1
- package/dist/client/assets/{ZapSquare-DQ0xpq8l.js → ZapSquare-lUH8oMSf.js} +1 -1
- package/dist/client/assets/{access-gate-x5aFiScT.js → access-gate-DnmOgDmX.js} +1 -1
- package/dist/client/assets/{add-section-modal-xgG70607.js → add-section-modal-DH8DHbpw.js} +1 -1
- package/dist/client/assets/{agent-icon-CY36Uhxb.js → agent-icon-B0dE0gXI.js} +1 -1
- package/dist/client/assets/{agents-list-C49t-K67.js → agents-list-D5y8SDcU.js} +1 -1
- package/dist/client/assets/{ai-providers-f7wEHVe_.js → ai-providers-y4LX99HP.js} +1 -1
- package/dist/client/assets/{alert-Buk_sohJ.js → alert-GrGBKekR.js} +1 -1
- package/dist/client/assets/{alert-dialog-CR5y0zme.js → alert-dialog-BbzswsKi.js} +1 -1
- package/dist/client/assets/{app-editor-CwDGnLP-.js → app-editor-BeBEbbez.js} +1 -1
- package/dist/client/assets/{auth-qMzVCZcI.js → auth-Cci4GApT.js} +1 -1
- package/dist/client/assets/{auth-catchall-x85RXoUg.js → auth-catchall-BdrP-mFN.js} +1 -1
- package/dist/client/assets/{auth-entry-eetDpLSr.js → auth-entry-CQsBGjxN.js} +1 -1
- package/dist/client/assets/{auth-split-layout-B3Ejbd6b.js → auth-split-layout-BviFip9f.js} +1 -1
- package/dist/client/assets/{authenticate-and-persist-oauth-C-tYYm7S.js → authenticate-and-persist-oauth-Cv27aboH.js} +1 -1
- package/dist/client/assets/{automation-list-row-D5CaUfAA.js → automation-list-row-DwHzmOHN.js} +1 -1
- package/dist/client/assets/{automation-runs-DbQCqJW4.js → automation-runs-D5uEU05P.js} +33 -33
- package/dist/client/assets/{automations-Uue9bXuj.js → automations-ED2Iy6Vm.js} +1 -1
- package/dist/client/assets/{avatar-BzJdZL1L.js → avatar-PyzDD5US.js} +1 -1
- package/dist/client/assets/{badge-BSgglY64.js → badge-Dnjs2Zbd.js} +1 -1
- package/dist/client/assets/{block-document-D42G7ejo.js → block-document-B-nAZW78.js} +1 -1
- package/dist/client/assets/{brand-context-B8InFJfI.js → brand-context-BnOeGriO.js} +1 -1
- package/dist/client/assets/{buckets-0uGu5ogF.js → buckets-XrX7DKSR.js} +1 -1
- package/dist/client/assets/{bulk-category-panel-BkAiBU9W.js → bulk-category-panel-1TxRLred.js} +1 -1
- package/dist/client/assets/{calendar-DE7fDuJg.js → calendar-Bja0SUOs.js} +1 -1
- package/dist/client/assets/{capability-load-error-LqMRKo65.js → capability-load-error-Do7SvLQW.js} +1 -1
- package/dist/client/assets/{card-DWXrV4Pl.js → card-y0dhwXnt.js} +1 -1
- package/dist/client/assets/{category-editor-CK8DGWRC.js → category-editor-Fvpm2WRu.js} +1 -1
- package/dist/client/assets/{chat-context-CbbUPv6l.js → chat-context-DMUQz7NG.js} +1 -1
- package/dist/client/assets/{checkbox-BOyJe47l.js → checkbox-D9vx5ZZj.js} +1 -1
- package/dist/client/assets/{cli-auth-success-BCM6u3yN.js → cli-auth-success-CjNjh__E.js} +1 -1
- package/dist/client/assets/{collection-detail-gJiKRXZN.js → collection-detail-DrlKWW5-.js} +1 -1
- package/dist/client/assets/{collection-display-button-B_eysfee.js → collection-display-button-V2qmjQut.js} +1 -1
- package/dist/client/assets/{collection-search-D195-22U.js → collection-search-CWxNjcsw.js} +1 -1
- package/dist/client/assets/{collection-table-wrapper-DoZQ7WDr.js → collection-table-wrapper-CuvAa6BD.js} +1 -1
- package/dist/client/assets/{collection-tabs-CrO66d2-.js → collection-tabs-HtRBcLFx.js} +1 -1
- package/dist/client/assets/{command-DFhU8yHR.js → command-BlXAhqWF.js} +1 -1
- package/dist/client/assets/{commerce-onboarding-BauPlxSt.js → commerce-onboarding-COESBA1z.js} +1 -1
- package/dist/client/assets/{companions-core-CAREgBr0.js → companions-core-CXGQ7uVK.js} +1 -1
- package/dist/client/assets/{connect-8H6FjjTP.js → connect-cJhb2oBC.js} +1 -1
- package/dist/client/assets/{connection-Cj4wg0H6.js → connection-DWiaV8fW.js} +1 -1
- package/dist/client/assets/{connection-card-BtA6uSXr.js → connection-card-CUyV1k5o.js} +1 -1
- package/dist/client/assets/{connection-detail-j57w5vop.js → connection-detail-BbP_tQBk.js} +1 -1
- package/dist/client/assets/{connection-form-helpers-ByAsc3G3.js → connection-form-helpers-Id5QIP0z.js} +1 -1
- package/dist/client/assets/{connections-DDUnokWq.js → connections-DmbhbZRK.js} +1 -1
- package/dist/client/assets/{decopilot-sse-pool-YhOl2v8l.js → decopilot-sse-pool-D9LvrvYB.js} +1 -1
- package/dist/client/assets/{dialog-B5NfN9M1.js → dialog-umfUtb99.js} +1 -1
- package/dist/client/assets/{domain-settings-tookdN9j.js → domain-settings-i1hvYDBx.js} +1 -1
- package/dist/client/assets/{drawer-j0ch7j0L.js → drawer-BUnObxIU.js} +1 -1
- package/dist/client/assets/{dropdown-menu-CN5zwO-3.js → dropdown-menu-CDi9V4K2.js} +1 -1
- package/dist/client/assets/{empty-state-f8YCweRE.js → empty-state-CRcUb-lZ.js} +1 -1
- package/dist/client/assets/{extract-connection-data-Dc3I-W-E.js → extract-connection-data-B49JzpOp.js} +1 -1
- package/dist/client/assets/{file-explorer-HWC5uFx4.js → file-explorer-DBQSC69s.js} +1 -1
- package/dist/client/assets/{form-DFDiWlYB.js → form-C-C_sOUC.js} +1 -1
- package/dist/client/assets/{general-Ba4U6jaB.js → general-kNKSObvm.js} +1 -1
- package/dist/client/assets/{github-repo-picker-CWpjRmK8.js → github-repo-picker-D3BJLO5i.js} +1 -1
- package/dist/client/assets/{hooks-CTLlL1OK.js → hooks-BfI5-YVe.js} +1 -1
- package/dist/client/assets/{index-CrGHA7yK.js → index-83skOF3Q.js} +1 -1
- package/dist/client/assets/{index-BRWmxqP2.js → index-BQVRYyhb.js} +1 -1
- package/dist/client/assets/{index-C6RGPTNG.js → index-C2MB_KMl.js} +5 -5
- package/dist/client/assets/{index-DOYxEW5a.js → index-CsebWa9R.js} +1 -1
- package/dist/client/assets/{index-BoO8Z8oO.js → index-CviX7bgn.js} +3 -3
- package/dist/client/assets/{index-CamFpFAx.js → index-D47l1GkF.js} +1 -1
- package/dist/client/assets/{index-CJKOtO0r.js → index-DIkRR5xC.js} +1 -1
- package/dist/client/assets/{index-iVeH5-wN.js → index-DZHjNDS2.js} +1 -1
- package/dist/client/assets/{index-DIRC8mDc.js → index-D_PNbLDw.js} +1 -1
- package/dist/client/assets/{index-_CasUQJC.js → index-DdGqNgtg.js} +1 -1
- package/dist/client/assets/{index-redirect-EHKeC0l0.js → index-redirect-oERHx7o3.js} +1 -1
- package/dist/client/assets/{index-CiVBAAsQ.js → index-v4xr9fBY.js} +3 -3
- package/dist/client/assets/{input-H6sWIHpS.js → input-BhxRA_PT.js} +1 -1
- package/dist/client/assets/{integration-icon-BtJmNvY5.js → integration-icon-CNZB1ZgI.js} +1 -1
- package/dist/client/assets/{invite-member-dialog-BCmAPkRt.js → invite-member-dialog-BBLo0xtd.js} +1 -1
- package/dist/client/assets/{label-CHQLbYGO.js → label-CV9ZjoNw.js} +1 -1
- package/dist/client/assets/{layout-DKWy-2PC.js → layout-oi6eozIR.js} +1 -1
- package/dist/client/assets/{login-D0sWtQpZ.js → login-7GSMSmDU.js} +1 -1
- package/dist/client/assets/{mcp-oauth-CKBZT7IT.js → mcp-oauth-xeI046T8.js} +1 -1
- package/dist/client/assets/{members-DHmhp5FM.js → members-DvrhREZA.js} +1 -1
- package/dist/client/assets/{monaco-editor-B4yAe9B8.js → monaco-editor-Cv0goHEj.js} +1 -1
- package/dist/client/assets/{monitoring-stats-row-DgIXa7Sg.js → monitoring-stats-row-V8O2Ro-U.js} +1 -1
- package/dist/client/assets/{multi-select-BZd64gNU.js → multi-select-BKPa72QH.js} +1 -1
- package/dist/client/assets/{oauth-callback-CTtiWJwl.js → oauth-callback-Bz8lL0Wt.js} +1 -1
- package/dist/client/assets/{oauth-callback-ai-provider-Dp7Ct2Lm.js → oauth-callback-ai-provider-7zgbzy7R.js} +1 -1
- package/dist/client/assets/{onboarding-C7DMmr-s.js → onboarding-D76lSMle.js} +1 -1
- package/dist/client/assets/{org-layout-8aj9ooRM.js → org-layout-B24s61-1.js} +1 -1
- package/dist/client/assets/{organization-choice-d-fQ45ih.js → organization-choice-BCn2YoDb.js} +1 -1
- package/dist/client/assets/{orgs-D4JqNkuf.js → orgs-BskWfyij.js} +1 -1
- package/dist/client/assets/{page-seo-form-CYwkh_pc.js → page-seo-form-Ca7r-wrV.js} +1 -1
- package/dist/client/assets/{popover-Dk6rjl1O.js → popover-DWt5ICmR.js} +1 -1
- package/dist/client/assets/{post-editor-1vSqmmwx.js → post-editor-DhHYWFTw.js} +1 -1
- package/dist/client/assets/{primitives-BFwv4mUC.js → primitives-nDW7DL8Q.js} +1 -1
- package/dist/client/assets/{profile-B6fE3SHW.js → profile-CuVDlTkY.js} +1 -1
- package/dist/client/assets/project-app-view-C5Glu0kH.js +1 -0
- package/dist/client/assets/record-editor-C39caKgs.js +1 -0
- package/dist/client/assets/{redirect-editor-DPqLad3y.js → redirect-editor-BzlpeM6X.js} +1 -1
- package/dist/client/assets/registry-Dwo3t2BQ.js +2 -0
- package/dist/client/assets/{registry-layout-Czxlhhds.js → registry-layout-DOrq4Kg2.js} +1 -1
- package/dist/client/assets/{reports--L02Sqd-.js → reports-DeQEVTxM.js} +1 -1
- package/dist/client/assets/{require-capability-DUxd7qbc.js → require-capability-CY0pv6qC.js} +1 -1
- package/dist/client/assets/{required-auth-layout-DwEQNdxU.js → required-auth-layout-B4hT2jJ6.js} +1 -1
- package/dist/client/assets/{reset-password-CwUu11oo.js → reset-password-DxzjmCNO.js} +1 -1
- package/dist/client/assets/{roles-BgZkDDAo.js → roles-HOif2C5d.js} +1 -1
- package/dist/client/assets/{search-input-DPijbAAA.js → search-input-jQMH80d1.js} +1 -1
- package/dist/client/assets/{secrets-zfNoGxYA.js → secrets-BeqgbfKp.js} +1 -1
- package/dist/client/assets/{sections-editor-GMncm2fH.js → sections-editor-DwJl9UQf.js} +1 -1
- package/dist/client/assets/{select-DjdFBSp_.js → select-c9MOlhi4.js} +1 -1
- package/dist/client/assets/{select-model-r2vBhlnR.js → select-model-3Y0RIjid.js} +1 -1
- package/dist/client/assets/{self-tool-result-DIWRUiRw.js → self-tool-result-CL0ggiz4.js} +1 -1
- package/dist/client/assets/{seo-editor-jSKx_iq8.js → seo-editor-BEkSG9db.js} +1 -1
- package/dist/client/assets/{settings-layout-Ca2nTHUD.js → settings-layout-D3n3N0n1.js} +1 -1
- package/dist/client/assets/{settings-section-kVDjsizK.js → settings-section-Ci41xvwW.js} +1 -1
- package/dist/client/assets/{shell-controls-CTff1B52.js → shell-controls-BqQDdQit.js} +1 -1
- package/dist/client/assets/{shell-layout-XFO4W20j.js → shell-layout-CikXXWSF.js} +1 -1
- package/dist/client/assets/{sidebar-CSH2zBvN.js → sidebar-Bn8O7Aoo.js} +1 -1
- package/dist/client/assets/{skeleton-DPHP14Zj.js → skeleton-V5kxsFXg.js} +1 -1
- package/dist/client/assets/{spinner-C0h3dTYl.js → spinner-B-_zF0cw.js} +1 -1
- package/dist/client/assets/{sso-BGTDYkeE.js → sso-Ba8XDhl4.js} +1 -1
- package/dist/client/assets/{store-03IpX4ia.js → store-BdL9SGT5.js} +1 -1
- package/dist/client/assets/store-registry-B-9PFWDk.js +2 -0
- package/dist/client/assets/{studio-tools-kASHiiN2.js → studio-tools-Xw-8BkV3.js} +1 -1
- package/dist/client/assets/{switch-LA478J51.js → switch-BArXYiGI.js} +1 -1
- package/dist/client/assets/{tab-id-BVNhEy2Q.js → tab-id-WKHool93.js} +1 -1
- package/dist/client/assets/{table-BLkGxmcg.js → table-YqpfKi5R.js} +1 -1
- package/dist/client/assets/{tabs-CsryjFS6.js → tabs-B3563EJu.js} +1 -1
- package/dist/client/assets/{textarea-DX-21FJR.js → textarea-DAdqvQK7.js} +1 -1
- package/dist/client/assets/{toggle-group-DJYJSmg_.js → toggle-group-DhYbfukY.js} +1 -1
- package/dist/client/assets/{toolbar-BhStBMVh.js → toolbar-9JOgV_wh.js} +1 -1
- package/dist/client/assets/{tooltip-CsmP_Sr0.js → tooltip-CzcvFJJ4.js} +1 -1
- package/dist/client/assets/{use-ai-providers-CjRcGffY.js → use-ai-providers-B7l3jMjK.js} +1 -1
- package/dist/client/assets/{use-automations-DdH_FoUr.js → use-automations-k3FdbNQZ.js} +1 -1
- package/dist/client/assets/{use-autosave-DKYTctmK.js → use-autosave-D_BvxoLq.js} +1 -1
- package/dist/client/assets/{use-capability-DjG5uwRT.js → use-capability-C9ZzLeWc.js} +1 -1
- package/dist/client/assets/{use-clock-tick-BhRaBaLK.js → use-clock-tick-Bx9BIbXn.js} +1 -1
- package/dist/client/assets/{use-connection-Cot3yHSY.js → use-connection-Cx1i_8ZN.js} +1 -1
- package/dist/client/assets/{use-copy-C_NkLkxl.js → use-copy-B2wy-3nw.js} +1 -1
- package/dist/client/assets/{use-create-virtual-mcp-bdmJewGw.js → use-create-virtual-mcp-6kthF1rc.js} +1 -1
- package/dist/client/assets/{use-debounced-autosave-CH_uqUKC.js → use-debounced-autosave-031Q_-VG.js} +1 -1
- package/dist/client/assets/{use-debounced-value-QvUVgrQz.js → use-debounced-value-DExSEFbd.js} +1 -1
- package/dist/client/assets/{use-deco-credits-DRL1fiKV.js → use-deco-credits-DBj-t6Aa.js} +1 -1
- package/dist/client/assets/{use-decopilot-events-BuxLN4oK.js → use-decopilot-events-Bl5cSmBo.js} +1 -1
- package/dist/client/assets/{use-delete-connection-B0CNO3Bd.js → use-delete-connection-BDFlhFvE.js} +1 -1
- package/dist/client/assets/{use-deployment-admin-Dm1hrCW0.js → use-deployment-admin-BWGeFN0z.js} +1 -1
- package/dist/client/assets/{use-file-configs-B1lYIgBZ.js → use-file-configs-CAVDuZCM.js} +1 -1
- package/dist/client/assets/{use-infinite-scroll-CpsrqDCA.js → use-infinite-scroll-KjXcCgnB.js} +1 -1
- package/dist/client/assets/{use-join-requests-BHv-0bGK.js → use-join-requests-B-ESBTqy.js} +1 -1
- package/dist/client/assets/{use-mcp-auth-status-DPAk0BTW.js → use-mcp-auth-status-C8_KfxzO.js} +1 -1
- package/dist/client/assets/{use-mcp-client-DXu4w9At.js → use-mcp-client-DspygOPp.js} +1 -1
- package/dist/client/assets/{use-mcp-tools-BX5fdaeC.js → use-mcp-tools-MSs9nJ6T.js} +1 -1
- package/dist/client/assets/{use-members-D4qFDgCg.js → use-members-Dbnerenq.js} +1 -1
- package/dist/client/assets/{use-mobile-CCnrFiyb.js → use-mobile-C-mJw8PU.js} +1 -1
- package/dist/client/assets/{use-navigate-to-agent-D_9xQDXo.js → use-navigate-to-agent-DSBbiXfY.js} +1 -1
- package/dist/client/assets/{use-org-auth-client-zLEynq9a.js → use-org-auth-client-BLdLjrj3.js} +1 -1
- package/dist/client/assets/{use-org-sso-CSPJBiyu.js → use-org-sso-DTXoH044.js} +1 -1
- package/dist/client/assets/{use-organization-roles-DRUzDFy8.js → use-organization-roles-BaSsK7Wz.js} +1 -1
- package/dist/client/assets/{use-organization-settings-DN5XiPuO.js → use-organization-settings-CaerOcj2.js} +1 -1
- package/dist/client/assets/{use-registry-connections-Bx28gDDV.js → use-registry-connections-UoehQZfC.js} +1 -1
- package/dist/client/assets/{use-secrets-ClH2oWfT.js → use-secrets-C1Rd8ciu.js} +1 -1
- package/dist/client/assets/{use-status-sounds-DMqOv6Ps.js → use-status-sounds-DHwBY788.js} +1 -1
- package/dist/client/assets/{use-tags-BsEGYjFn.js → use-tags-CRNzH6FE.js} +1 -1
- package/dist/client/assets/{use-view-mode-CFufQZ23.js → use-view-mode-9o6KjSAa.js} +1 -1
- package/dist/client/assets/{use-virtual-mcp-BfLOjsr5.js → use-virtual-mcp-kUy0NdbH.js} +1 -1
- package/dist/client/assets/useInfiniteQuery-Dd4ko7id.js +1 -0
- package/dist/client/assets/{useQueries-BSZynmwC.js → useQueries-Bt-8udgX.js} +1 -1
- package/dist/client/assets/{useRouterState-DN8sBG8a.js → useRouterState-CzVdxDmf.js} +1 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-OE3RI5rq.js +1 -0
- package/dist/client/assets/{users-CKHoawgP.js → users-Cp1_XbOZ.js} +1 -1
- package/dist/client/assets/{variant-calendar-CNWBn9af.js → variant-calendar-DUjKuaAn.js} +1 -1
- package/dist/client/assets/{view-mode-toggle-BkLdASHE.js → view-mode-toggle-BR1L0_ap.js} +1 -1
- package/dist/client/index.html +1 -1
- package/dist/server/cli.js +2 -2
- package/dist/server/migrate.js +1 -1
- package/dist/server/server.js +2 -2
- package/package.json +1 -1
- package/dist/client/assets/project-app-view-R2hhCUxd.js +0 -1
- package/dist/client/assets/record-editor-BHbotb4c.js +0 -1
- package/dist/client/assets/registry-CNQroCTc.js +0 -2
- package/dist/client/assets/store-registry-27ZkVkJ-.js +0 -2
- package/dist/client/assets/useInfiniteQuery-BHh5ab1m.js +0 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-Dm1ob-UL.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as K,b as tt,r as et,j as s,m as ot,B as nt}from"./index-CiVBAAsQ.js";import{x as vt,$ as dt,h as yt}from"./agent-icon-CY36Uhxb.js";import{i as Tt}from"./ChevronRight-DwdLrQ8h.js";import{L as jt}from"./label-CHQLbYGO.js";import{n as ft}from"./automation-runs-DbQCqJW4.js";import{S as Nt}from"./switch-LA478J51.js";import{T as wt,c as kt,a as Mt}from"./tooltip-CsmP_Sr0.js";import{V as _t}from"./view-mode-toggle-BkLdASHE.js";import"./AlertCircle-DlCaG2T2.js";import"./Tool01-CVSPNErZ.js";import"./ArrowUp-CS9o0THc.js";import"./Settings02-pppnjkb2.js";import"./Tool02-D1EiJbi2.js";import"./XCircle-DkYunYi_.js";import"./ArrowUpRight-v7OrIvWG.js";import"./TrendUp01-DGX8zY19.js";import"./ZapSquare-DQ0xpq8l.js";import"./Users03-CdjtU4Tu.js";import"./CheckCircle-DUtMXKgF.js";import"./Check-CIsM3N9I.js";import"./ChevronDown-C-___fQ6.js";import"./ChevronUp-CWE23P83.js";import"./DotsVertical-DM8TYJWO.js";import"./Stars02-BqBDz0Ci.js";import"./Copy01-D1uFAWpq.js";import"./CpuChip01-BrmMIXqJ.js";import"./Eye-DYRbk_FK.js";import"./FilterLines-DOdX_JJm.js";import"./Star01-Cl0j6KMs.js";import"./Palette-DQXxO_Zw.js";import"./SwitchHorizontal01-BDFmNRGc.js";import"./HardDrive-BTalyxAK.js";import"./Key01-D5ImL6HD.js";import"./LayoutLeft-BRPm5cm9.js";import"./LinkExternal01-CSMYCtGE.js";import"./LogOut01-Bzr_aJnU.js";import"./Monitor01-Bqyb5D0X.js";import"./Sun-CX-gvZMN.js";import"./Play-ze0mQyFJ.js";import"./Plus-D-2nfsl2.js";import"./SearchLg-DoVlHmIZ.js";import"./SearchMd-Cm36E9Xo.js";import"./Shield01-CGf643gW.js";import"./Stars01-L5uKPL3F.js";import"./Trash01-dKHzJjw_.js";import"./Upload01-C2e3NiFr.js";import"./User01-BQ3iXws6.js";import"./Users01-CMnNEEb2.js";import"./XClose-DXpsTMs9.js";import"./X-IkzSoxJZ.js";import"./Zap-Dvt93UNJ.js";import"./select-DjdFBSp_.js";import"./useInfiniteQuery-BHh5ab1m.js";import"./use-infinite-scroll-CpsrqDCA.js";import"./use-connection-Cot3yHSY.js";import"./use-mcp-client-DXu4w9At.js";import"./auth-qMzVCZcI.js";import"./use-virtual-mcp-BfLOjsr5.js";import"./card-DWXrV4Pl.js";import"./sidebar-CSH2zBvN.js";import"./use-mobile-CCnrFiyb.js";import"./table-BLkGxmcg.js";import"./empty-state-f8YCweRE.js";import"./use-members-D4qFDgCg.js";import"./use-org-auth-client-zLEynq9a.js";import"./use-clock-tick-BhRaBaLK.js";import"./use-automations-DdH_FoUr.js";import"./studio-tools-kASHiiN2.js";import"./useSuspenseInfiniteQuery-Dm1ob-UL.js";import"./avatar-BzJdZL1L.js";import"./format-time-BnbuEtat.js";import"./differenceInSeconds-NQ4PDo0z.js";import"./use-copy-C_NkLkxl.js";import"./dialog-B5NfN9M1.js";import"./tab-id-BVNhEy2Q.js";import"./hooks-CTLlL1OK.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./decopilot-sse-pool-YhOl2v8l.js";import"./chat-context-CbbUPv6l.js";import"./use-ai-providers-CjRcGffY.js";import"./use-decopilot-events-BuxLN4oK.js";import"./use-organization-settings-DN5XiPuO.js";import"./monaco-editor-B4yAe9B8.js";import"./spinner-C0h3dTYl.js";import"./index-iVeH5-wN.js";import"./calendar-DE7fDuJg.js";import"./shell-layout-XFO4W20j.js";import"./use-is-desktop-app-BNujXJc_.js";import"./required-auth-layout-DwEQNdxU.js";import"./use-org-sso-CSPJBiyu.js";import"./integration-icon-BtJmNvY5.js";import"./use-navigate-to-agent-D_9xQDXo.js";import"./reusable-new-chat-CouMjkYR.js";import"./AreaChart-DqPkzX2A.js";import"./form-DFDiWlYB.js";import"./input-H6sWIHpS.js";const Et=new Set(["website/matchers/date.ts","$live/matchers/MatchDate.ts"]),St=new Set(["website/matchers/multi.ts","$live/matchers/MatchMulti.ts"]),Ct=new Date(-864e13),Dt=new Date(864e13),At=/\/flags\/multivariate(?:\/[^/]+)?\.ts$/,$t=/\/flags\/multivariate\.ts$/;function Lt(e){let t=e;t.startsWith("pages-")&&(t=t.slice(6).replace(/-\d+$/,""));try{t=decodeURIComponent(t)}catch{}return t}function Rt(e){if(!e||typeof e!="object")return null;const{start:t,end:n}=e,r=typeof t=="string",i=typeof n=="string";if(!r&&!i)return null;const o=r?new Date(t):Ct,a=i?new Date(n):Dt;return Number.isNaN(o.getTime())||Number.isNaN(a.getTime())||r&&i&&a.getTime()<=o.getTime()?null:{start:o,end:a,openStart:!r,openEnd:!i}}function pt(e,t){if(!e||typeof e!="object")return;const n=e.__resolveType;if(typeof n=="string"){if(Et.has(n)){const r=Rt(e);r&&t.push(r);return}if(St.has(n)){const r=e.matchers;if(Array.isArray(r))for(const i of r)pt(i,t)}}}function Ot(e){if(!e||typeof e!="object")return!1;const t=e.__resolveType;if(typeof t!="string"||!At.test(t))return!1;const n=e.variants;return Array.isArray(n)}function It(e){if(typeof e=="string"){const m=e.trim();if(m.length===0)return null;try{const c=new URL(m).pathname.split("/").filter(Boolean),d=c[c.length-1];if(d)return decodeURIComponent(d)}catch{}return m.length>80?`${m.slice(0,77)}…`:m}if(!e||typeof e!="object")return null;const t=e,n=t.config,i=t.desktop?.media,o=[t.title,t.name,t.label,t.alt,n?.title,n?.name,n?.typeAlert?.message,i?.alt,Array.isArray(t.matcher)?t.matcher[0]:void 0];for(const m of o)if(typeof m=="string"&&m.trim().length>0)return m.trim();const a=t.__resolveType;if(typeof a=="string"){const l=(a.split("/").pop()??a).replace(/\.(tsx?|jsx?)$/i,"");if(l.length>0)return l}return null}function Pt(e){const t=[];for(let n=0;n<e.length;n++){const r=e[n];typeof r=="number"?t.length>0?t[t.length-1]+=`[${r}]`:t.push(`[${r}]`):t.push(r)}return t.join(" · ")}function X(e,t,n,r,i){if(Ot(e)){const o=e.variants,a=e.__resolveType,m=$t.test(a)?"":Pt(r);o.forEach((l,c)=>{if(!l||typeof l!="object")return;const d=l,p=[];if(pt(d.rule,p),p.length===0)return;const x=It(d.value)??(m||n);for(const h of p)i.push({blockKey:t,blockLabel:n,innerPath:m,variantIndex:c,start:h.start,end:h.end,openStart:h.openStart,openEnd:h.openEnd,label:x,flagResolveType:a})});for(let l=0;l<o.length;l++){const c=o[l];c&&typeof c=="object"&&X(c.value,t,n,[...r,"variants",l,"value"],i)}return}if(Array.isArray(e)){for(let o=0;o<e.length;o++)X(e[o],t,n,[...r,o],i);return}if(e&&typeof e=="object")for(const[o,a]of Object.entries(e))o!=="__resolveType"&&X(a,t,n,[...r,o],i)}function Ft(e){if(!e)return[];const t=[];for(const[n,r]of Object.entries(e))X(r,n,Lt(n),[],t);return t.sort((n,r)=>n.start.getTime()-r.start.getTime())}function Vt(e){const t=[...new Set(e)].sort(),n=new Map;return t.forEach((r,i)=>{const o=i*137.508%360;n.set(r,{bg:`oklch(0.62 0.14 ${o})`,text:"white",border:`oklch(0.50 0.14 ${o})`})}),n}const Ht={bg:"oklch(0.62 0.14 0)",text:"white",border:"oklch(0.50 0.14 0)"};function ut(e,t){return e.get(t)??Ht}const Bt=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],ht=["January","February","March","April","May","June","July","August","September","October","November","December"],gt=1440*60*1e3;function B(e){const t=new Date(e);return t.setHours(0,0,0,0),t}function xt(e){return new Date(e.getFullYear(),e.getMonth(),1)}function G(e,t){return new Date(e.getFullYear(),e.getMonth()+t,1)}function Z(e,t){const n=new Date(e);return n.setDate(n.getDate()+t),n}function st(e,t){return Math.round((B(e).getTime()-B(t).getTime())/gt)}function Wt(e){const t=(e.getTime()-B(e).getTime())/gt;return Math.min(Math.max(t,0),1)}function it(e,t){return st(e,t)+Wt(e)}function zt(e){const t=Z(e,-e.getDay()),n=[];for(let r=0;r<6;r++){const i=[];for(let o=0;o<7;o++)i.push(Z(t,r*7+o));n.push(i)}for(;n.length>0&&n[n.length-1].every(r=>r.getMonth()!==e.getMonth());)n.pop();return n}function Ut(e,t){const n=B(e[0]),r=Z(n,7),i=n.getTime(),o=r.getTime(),a=[];for(const c of t){const d=B(c.start),p=B(c.end);if(p.getTime()<n.getTime()||d.getTime()>=r.getTime())continue;const u=d.getTime()<n.getTime()?n:d,x=p.getTime()>=r.getTime()?Z(r,-1):p,h=st(u,n),g=st(x,u)+1;if(g<=0)continue;const b=Math.max(c.start.getTime(),i),j=Math.min(c.end.getTime(),o),v=it(new Date(b),n),f=Math.max(it(new Date(j),n)-v,0);f<=0||a.push({variant:c,startCol:h,span:g,leftUnits:v,widthUnits:f})}a.sort((c,d)=>c.startCol-d.startCol||d.span-c.span||c.variant.blockKey.localeCompare(d.variant.blockKey));const m=[],l=[];for(const c of a){let d=m.findIndex(p=>p<=c.startCol);d===-1&&(d=m.length,m.push(0)),m[d]=c.startCol+c.span,l.push({...c,lane:d})}return l}const at=new Intl.DateTimeFormat("en",{dateStyle:"medium",timeStyle:"short"});function Yt(e,t){const n=e.openStart?t("sandbox.variantCalendar.always"):at.format(e.start),r=e.openEnd?t("sandbox.variantCalendar.ongoing"):at.format(e.end);return`${n} → ${r}`}function Gt(e){const t=K.c(18),{variant:n}=e,r=tt();let i;t[0]!==n.blockLabel?(i=s.jsx("div",{className:"font-semibold",children:n.blockLabel}),t[0]=n.blockLabel,t[1]=i):i=t[1];let o;t[2]!==n.innerPath?(o=n.innerPath&&s.jsx("div",{className:"text-muted-foreground",children:n.innerPath}),t[2]=n.innerPath,t[3]=o):o=t[3];let a;t[4]!==n.blockLabel||t[5]!==n.innerPath||t[6]!==n.label?(a=n.label!==n.blockLabel&&n.label!==n.innerPath&&s.jsx("div",{className:"text-muted-foreground",children:n.label}),t[4]=n.blockLabel,t[5]=n.innerPath,t[6]=n.label,t[7]=a):a=t[7];let m;t[8]!==r||t[9]!==n?(m=Yt(n,r),t[8]=r,t[9]=n,t[10]=m):m=t[10];let l;t[11]!==m?(l=s.jsx("div",{className:"mt-1",children:m}),t[11]=m,t[12]=l):l=t[12];let c;return t[13]!==i||t[14]!==o||t[15]!==a||t[16]!==l?(c=s.jsx(Mt,{children:s.jsxs("div",{className:"text-xs",children:[i,o,a,l]})}),t[13]=i,t[14]=o,t[15]=a,t[16]=l,t[17]=c):c=t[17],c}const lt=16;function Kt(e,t){const n=e?"transparent":"#000 0",r=t?"transparent":"#000 100%";if(!(!e&&!t))return`linear-gradient(to right, ${n}, #000 ${lt}px, #000 calc(100% - ${lt}px), ${r})`}function bt(e){const t=K.c(26),{variant:n,color:r,style:i,children:o,fadeStart:a,fadeEnd:m}=e,l=a===void 0?!1:a,c=m===void 0?!1:m;let d;t[0]!==c||t[1]!==l?(d=Kt(l,c),t[0]=c,t[1]=l,t[2]=d):d=t[2];const p=d;let u;t[3]!==l?(u=l&&{borderTopLeftRadius:0,borderBottomLeftRadius:0},t[3]=l,t[4]=u):u=t[4];let x;t[5]!==c?(x=c&&{borderTopRightRadius:0,borderBottomRightRadius:0},t[5]=c,t[6]=x):x=t[6];let h;t[7]!==p?(h=p&&{maskImage:p,WebkitMaskImage:p},t[7]=p,t[8]=h):h=t[8];let g;t[9]!==r.bg||t[10]!==r.text||t[11]!==i||t[12]!==u||t[13]!==x||t[14]!==h?(g={background:r.bg,color:r.text,borderRadius:4,...u,...x,...h,...i},t[9]=r.bg,t[10]=r.text,t[11]=i,t[12]=u,t[13]=x,t[14]=h,t[15]=g):g=t[15];let b;t[16]!==o?(b=s.jsx("span",{className:"truncate",children:o}),t[16]=o,t[17]=b):b=t[17];let j;t[18]!==g||t[19]!==b?(j=s.jsx(wt,{asChild:!0,children:s.jsx("div",{className:"absolute flex items-center px-2 text-[11px] font-medium truncate cursor-default",style:g,children:b})}),t[18]=g,t[19]=b,t[20]=j):j=t[20];let v;t[21]!==n?(v=s.jsx(Gt,{variant:n}),t[21]=n,t[22]=v):v=t[22];let f;return t[23]!==v||t[24]!==j?(f=s.jsxs(kt,{children:[j,v]}),t[23]=v,t[24]=j,t[25]=f):f=t[25],f}function Zn(e){const t=K.c(72),{decofile:n}=e,r=tt(),[i,o]=et.useState("calendar"),[a,m]=et.useState(Xt),[l,c]=et.useState(!1);let d,p,u;if(t[0]!==n||t[1]!==l){const P=Ft(n);d=P.filter(Qt).length,u=l?P:P.filter(qt),p=Vt(u.map(Jt)),t[0]=n,t[1]=l,t[2]=d,t[3]=p,t[4]=u}else d=t[2],p=t[3],u=t[4];const x=p;let h;t[5]===Symbol.for("react.memo_cache_sentinel")?(h=()=>m(xt(new Date)),t[5]=h):h=t[5];const g=h;let b;t[6]!==i?(b=()=>m(P=>i==="calendar"?G(P,-1):G(P,-3)),t[6]=i,t[7]=b):b=t[7];const j=b;let v;t[8]!==i?(v=()=>m(P=>i==="calendar"?G(P,1):G(P,3)),t[8]=i,t[9]=v):v=t[9];const f=v;let y;t[10]!==r?(y=r("sandbox.variantCalendar.today"),t[10]=r,t[11]=y):y=t[11];let T;t[12]!==y?(T=s.jsx(nt,{variant:"outline",size:"sm",onClick:g,children:y}),t[12]=y,t[13]=T):T=t[13];let w;t[14]!==r?(w=r("sandbox.variantCalendar.previous"),t[14]=r,t[15]=w):w=t[15];let D;t[16]===Symbol.for("react.memo_cache_sentinel")?(D=s.jsx(vt,{size:16}),t[16]=D):D=t[16];let k;t[17]!==j||t[18]!==w?(k=s.jsx(nt,{variant:"ghost",size:"icon",className:"size-8",onClick:j,"aria-label":w,children:D}),t[17]=j,t[18]=w,t[19]=k):k=t[19];let M;t[20]!==r?(M=r("sandbox.variantCalendar.next"),t[20]=r,t[21]=M):M=t[21];let S;t[22]===Symbol.for("react.memo_cache_sentinel")?(S=s.jsx(Tt,{size:16}),t[22]=S):S=t[22];let A;t[23]!==f||t[24]!==M?(A=s.jsx(nt,{variant:"ghost",size:"icon",className:"size-8",onClick:f,"aria-label":M,children:S}),t[23]=f,t[24]=M,t[25]=A):A=t[25];const $=ht[a.getMonth()];let C;t[26]!==a?(C=a.getFullYear(),t[26]=a,t[27]=C):C=t[27];let _;t[28]!==$||t[29]!==C?(_=s.jsxs("h2",{className:"ml-2 text-base font-semibold",children:[$," ",C]}),t[28]=$,t[29]=C,t[30]=_):_=t[30];let N;t[31]!==A||t[32]!==_||t[33]!==T||t[34]!==k?(N=s.jsxs("div",{className:"flex items-center gap-2",children:[T,k,A,_]}),t[31]=A,t[32]=_,t[33]=T,t[34]=k,t[35]=N):N=t[35];let L;t[36]!==d||t[37]!==l||t[38]!==r?(L=d>0&&s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(Nt,{id:"show-ongoing",checked:l,onCheckedChange:c}),s.jsx(jt,{htmlFor:"show-ongoing",className:"text-xs text-muted-foreground cursor-pointer",children:r("sandbox.variantCalendar.showOngoing",{count:d})})]}),t[36]=d,t[37]=l,t[38]=r,t[39]=L):L=t[39];let H;t[40]===Symbol.for("react.memo_cache_sentinel")?(H=s.jsx(dt,{}),t[40]=H):H=t[40];let F;t[41]!==r?(F=r("sandbox.variantCalendar.calendarMode"),t[41]=r,t[42]=F):F=t[42];let E;t[43]!==F?(E={value:"calendar",icon:H,label:F},t[43]=F,t[44]=E):E=t[44];let W;t[45]===Symbol.for("react.memo_cache_sentinel")?(W=s.jsx(yt,{}),t[45]=W):W=t[45];let R;t[46]!==r?(R=r("sandbox.variantCalendar.timelineMode"),t[46]=r,t[47]=R):R=t[47];let O;t[48]!==R?(O={value:"timeline",icon:W,label:R},t[48]=R,t[49]=O):O=t[49];let I;t[50]!==E||t[51]!==O?(I=[E,O],t[50]=E,t[51]=O,t[52]=I):I=t[52];let V;t[53]!==I||t[54]!==i?(V=s.jsx(_t,{value:i,onValueChange:o,options:I}),t[53]=I,t[54]=i,t[55]=V):V=t[55];let z;t[56]!==L||t[57]!==V?(z=s.jsxs("div",{className:"flex items-center gap-4",children:[L,V]}),t[56]=L,t[57]=V,t[58]=z):z=t[58];let U;t[59]!==N||t[60]!==z?(U=s.jsxs("div",{className:"flex items-center justify-between px-4 h-12 border-b shrink-0",children:[N,z]}),t[59]=N,t[60]=z,t[61]=U):U=t[61];let Y;t[62]!==x||t[63]!==a||t[64]!==d||t[65]!==l||t[66]!==u||t[67]!==i?(Y=u.length===0?s.jsx(Zt,{hiddenOngoing:l?0:d}):i==="calendar"?s.jsx(ee,{monthStart:a,variants:u,colorMap:x}):s.jsx(oe,{monthStart:a,variants:u,colorMap:x}),t[62]=x,t[63]=a,t[64]=d,t[65]=l,t[66]=u,t[67]=i,t[68]=Y):Y=t[68];let q;return t[69]!==U||t[70]!==Y?(q=s.jsxs("div",{className:"flex h-full w-full flex-col",children:[U,Y]}),t[69]=U,t[70]=Y,t[71]=q):q=t[71],q}function Jt(e){return e.blockKey}function qt(e){return!e.openEnd}function Qt(e){return e.openEnd}function Xt(){return xt(new Date)}function Zt(e){const t=K.c(4),{hiddenOngoing:n}=e,r=n===void 0?0:n,i=tt();let o;t[0]===Symbol.for("react.memo_cache_sentinel")?(o=s.jsx(dt,{size:24,className:"text-muted-foreground/60"}),t[0]=o):o=t[0];let a;return t[1]!==r||t[2]!==i?(a=s.jsxs("div",{className:"flex-1 flex flex-col items-center justify-center gap-2 text-center text-sm text-muted-foreground p-6",children:[o,r>0?s.jsxs(s.Fragment,{children:[s.jsx("div",{children:i("sandbox.variantCalendar.noDatedVariants")}),s.jsx("div",{className:"text-xs text-muted-foreground/80",children:i("sandbox.variantCalendar.hiddenOngoingVariants",{count:r})})]}):s.jsxs(s.Fragment,{children:[s.jsx("div",{children:i("sandbox.variantCalendar.noScheduledVariants")}),s.jsx("div",{className:"text-xs text-muted-foreground/80",children:i("sandbox.variantCalendar.dateMatcherInfo")})]})]}),t[1]=r,t[2]=i,t[3]=a):a=t[3],a}const rt=20,ct=2,mt=28,te=6;function ee(e){const t=K.c(17),{monthStart:n,variants:r,colorMap:i}=e;let o,a,m,l,c;if(t[0]!==i||t[1]!==n||t[2]!==r){const u=zt(n),x=B(new Date);o=ft,c="flex-1 min-h-0",a="min-w-[840px]",t[8]===Symbol.for("react.memo_cache_sentinel")?(m=s.jsx("div",{className:"grid grid-cols-7 border-b text-xs text-muted-foreground sticky top-0 bg-background z-10",children:Bt.map(re)}),t[8]=m):m=t[8],l=u.map((h,g)=>{const b=Ut(h,r),j=b.reduce(ne,0),v=mt+j*(rt+ct)+8;return s.jsxs("div",{className:"grid grid-cols-7 relative border-b",style:{height:v},children:[h.map((f,y)=>{const T=f.getMonth()===n.getMonth(),w=f.getTime()===x.getTime();return s.jsx("div",{className:ot("border-r last:border-r-0 px-2 pt-1.5 text-xs",T?"bg-background":"bg-muted/30 text-muted-foreground"),children:s.jsx("span",{className:ot("inline-flex h-5 min-w-5 items-center justify-center rounded-full px-1",w&&"bg-primary text-primary-foreground font-semibold"),children:f.getDate()})},y)}),b.map((f,y)=>{const T=ut(i,f.variant.blockKey),w=mt+f.lane*(rt+ct),D=f.leftUnits/7*100,k=f.widthUnits/7*100,M=f.variant.openStart&&g===0,S=f.variant.openEnd&&g===u.length-1;return s.jsxs(bt,{variant:f.variant,color:T,fadeStart:M,fadeEnd:S,style:{top:w,left:`calc(${D}% + 2px)`,width:`calc(${k}% - 4px)`,minWidth:te,height:rt},children:[f.variant.blockLabel,f.variant.label!==f.variant.blockLabel&&s.jsxs("span",{className:"opacity-70",children:[" · ",f.variant.label]})]},`${g}-${y}`)})]},g)}),t[0]=i,t[1]=n,t[2]=r,t[3]=o,t[4]=a,t[5]=m,t[6]=l,t[7]=c}else o=t[3],a=t[4],m=t[5],l=t[6],c=t[7];let d;t[9]!==a||t[10]!==m||t[11]!==l?(d=s.jsxs("div",{className:a,children:[m,l]}),t[9]=a,t[10]=m,t[11]=l,t[12]=d):d=t[12];let p;return t[13]!==o||t[14]!==c||t[15]!==d?(p=s.jsx(o,{className:c,children:d}),t[13]=o,t[14]=c,t[15]=d,t[16]=p):p=t[16],p}function ne(e,t){return Math.max(e,t.lane+1)}function re(e){return s.jsx("div",{className:"px-2 py-2 text-center uppercase tracking-wide",children:e},e)}const Q=4,se=32,J=240;function oe(e){const t=K.c(23),{monthStart:n,variants:r,colorMap:i}=e,o=n,a=G(n,Q),m=new Date,l=new Map;for(const _ of r){const N=l.get(_.blockKey)??[];N.push(_),l.set(_.blockKey,N)}const c=Array.from(l.entries()).sort(le),d=a.getTime()-o.getTime(),p=_=>(Math.max(o.getTime(),Math.min(a.getTime(),_.getTime()))-o.getTime())/d*100;let u;t[0]!==o?(u=(_,N)=>G(o,N),t[0]=o,t[1]=u):u=t[1];const x=Array.from({length:Q},u),h=m.getTime()>=o.getTime()&&m.getTime()<=a.getTime()?p(m):null,g=tt(),b=ft,j="flex-1 min-h-0",v="min-w-[900px] relative";let f;t[2]===Symbol.for("react.memo_cache_sentinel")?(f={width:J},t[2]=f):f=t[2];let y;t[3]!==g?(y=g("sandbox.variantCalendar.variantBlock"),t[3]=g,t[4]=y):y=t[4];let T;t[5]!==y?(T=s.jsx("div",{className:"shrink-0 px-3 py-2 text-xs font-semibold uppercase tracking-wide text-muted-foreground border-r",style:f,children:y}),t[5]=y,t[6]=T):T=t[6];let w;t[7]===Symbol.for("react.memo_cache_sentinel")?(w={gridTemplateColumns:`repeat(${Q}, minmax(0, 1fr))`},t[7]=w):w=t[7];const D=x.map(ae);let k;t[8]!==D?(k=s.jsx("div",{className:"flex-1 grid",style:w,children:D}),t[8]=D,t[9]=k):k=t[9];let M;t[10]!==T||t[11]!==k?(M=s.jsxs("div",{className:"flex border-b sticky top-0 bg-background z-10",children:[T,k]}),t[10]=T,t[11]=k,t[12]=M):M=t[12];let S;t[13]!==g||t[14]!==h?(S=h!==null&&s.jsx("div",{className:"pointer-events-none absolute top-0 bottom-0 w-px bg-primary/70 z-[5]",style:{left:`calc(${J}px + (100% - ${J}px) * ${h} / 100)`},children:s.jsx("span",{className:"absolute -top-0.5 -translate-x-1/2 rounded-sm bg-primary px-1.5 py-px text-[10px] font-medium text-primary-foreground",children:g("sandbox.variantCalendar.todayLabel")})}),t[13]=g,t[14]=h,t[15]=S):S=t[15];const A=c.map(_=>{const[N,L]=_,H=ut(i,N),F=L[0]?.blockLabel??N;return s.jsxs("div",{children:[s.jsx("div",{className:"flex items-center bg-muted/40 border-b text-xs font-semibold uppercase tracking-wide text-muted-foreground",style:{height:28},children:s.jsx("div",{className:"px-3 truncate",style:{width:J},children:F})}),L.map((E,W)=>s.jsxs("div",{className:"flex border-b items-center",style:{height:se},children:[s.jsxs("div",{className:"flex items-center gap-2 px-3 text-sm border-r shrink-0",style:{width:J},children:[s.jsx("span",{className:"inline-block h-2 w-2 rounded-full shrink-0",style:{background:H.bg}}),s.jsx("span",{className:"truncate text-foreground/80",children:E.label})]}),s.jsxs("div",{className:"relative flex-1 h-full",children:[s.jsx("div",{className:"absolute inset-0 grid",style:{gridTemplateColumns:`repeat(${Q}, minmax(0, 1fr))`},children:x.map(ie)}),(()=>{const R=Math.max(E.start.getTime(),o.getTime()),O=Math.min(E.end.getTime(),a.getTime());if(O<=R)return null;const I=p(new Date(R)),V=p(new Date(O))-I;return s.jsx(bt,{variant:E,color:H,fadeStart:E.openStart,fadeEnd:E.openEnd,style:{top:"50%",transform:"translateY(-50%)",left:`${I}%`,width:`calc(${V}% - 2px)`,height:22},children:E.label})})()]})]},W))]},N)});let $;t[16]!==M||t[17]!==S||t[18]!==A?($=s.jsxs("div",{className:v,children:[M,S,A]}),t[16]=M,t[17]=S,t[18]=A,t[19]=$):$=t[19];let C;return t[20]!==b||t[21]!==$?(C=s.jsx(b,{className:j,children:$}),t[20]=b,t[21]=$,t[22]=C):C=t[22],C}function ie(e,t){return s.jsx("div",{className:"border-r last:border-r-0 border-border/40"},t)}function ae(e,t){return s.jsxs("div",{className:"px-2 py-2 text-xs uppercase tracking-wide text-muted-foreground border-r last:border-r-0",children:[ht[e.getMonth()]?.slice(0,3)," ",e.getFullYear()]},t)}function le(e,t){return e[0].localeCompare(t[0])}export{Zn as VariantCalendar};
|
|
1
|
+
import{c as K,b as tt,r as et,j as s,m as ot,B as nt}from"./index-v4xr9fBY.js";import{x as vt,$ as dt,h as yt}from"./agent-icon-B0dE0gXI.js";import{i as Tt}from"./ChevronRight-uevwIauT.js";import{L as jt}from"./label-CV9ZjoNw.js";import{n as ft}from"./automation-runs-D5uEU05P.js";import{S as Nt}from"./switch-BArXYiGI.js";import{T as wt,c as kt,a as Mt}from"./tooltip-CzcvFJJ4.js";import{V as _t}from"./view-mode-toggle-BR1L0_ap.js";import"./AlertCircle-CJIb11xM.js";import"./Tool01-BqM3fhvU.js";import"./ArrowUp-C4eq2Obn.js";import"./Settings02-D2Od6hIu.js";import"./Tool02-CdAHKhSP.js";import"./XCircle-BmPLYPUm.js";import"./ArrowUpRight-DY5OrDCo.js";import"./TrendUp01-BOoR0Suf.js";import"./ZapSquare-lUH8oMSf.js";import"./Users03-DjFIwR1e.js";import"./CheckCircle-L1MZeMEC.js";import"./Check-CzuAentr.js";import"./ChevronDown-CClFlSxz.js";import"./ChevronUp-BMENMqPe.js";import"./DotsVertical-DNiWmGQW.js";import"./Stars02-pjrDL108.js";import"./Copy01-DKc_cNPS.js";import"./CpuChip01-CQZHTBv_.js";import"./Eye-CLJlIW72.js";import"./FilterLines-_KV74m1j.js";import"./Star01-vKIuVNvK.js";import"./Palette-DfxMP9C1.js";import"./SwitchHorizontal01-DqL7dpQo.js";import"./HardDrive-D3MsBwdM.js";import"./Key01-Ph8ozLZ_.js";import"./LayoutLeft-BLprwKtV.js";import"./LinkExternal01-Bmn2On3L.js";import"./LogOut01-DtXlL9FN.js";import"./Monitor01-Cq5ooC-g.js";import"./Sun-D70XMNg2.js";import"./Play-D9njRjDI.js";import"./Plus-DLbtYGri.js";import"./SearchLg-DctVlVQz.js";import"./SearchMd-EJtaQP9g.js";import"./Shield01-CfDR602-.js";import"./Stars01-3Jc0GjIj.js";import"./Trash01-CQlBG8ML.js";import"./Upload01-bMCburYR.js";import"./User01-Bk3KF8L-.js";import"./Users01-DrmBjw74.js";import"./XClose-pCZ95Skb.js";import"./X-F_AtITBB.js";import"./Zap-DSrBTwKT.js";import"./select-c9MOlhi4.js";import"./useInfiniteQuery-Dd4ko7id.js";import"./use-infinite-scroll-KjXcCgnB.js";import"./use-connection-Cx1i_8ZN.js";import"./use-mcp-client-DspygOPp.js";import"./auth-Cci4GApT.js";import"./use-virtual-mcp-kUy0NdbH.js";import"./card-y0dhwXnt.js";import"./sidebar-Bn8O7Aoo.js";import"./use-mobile-C-mJw8PU.js";import"./table-YqpfKi5R.js";import"./empty-state-CRcUb-lZ.js";import"./use-members-Dbnerenq.js";import"./use-org-auth-client-BLdLjrj3.js";import"./use-clock-tick-Bx9BIbXn.js";import"./use-automations-k3FdbNQZ.js";import"./studio-tools-Xw-8BkV3.js";import"./useSuspenseInfiniteQuery-OE3RI5rq.js";import"./avatar-PyzDD5US.js";import"./format-time-BnbuEtat.js";import"./differenceInSeconds-NQ4PDo0z.js";import"./use-copy-B2wy-3nw.js";import"./dialog-umfUtb99.js";import"./tab-id-WKHool93.js";import"./hooks-BfI5-YVe.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./decopilot-sse-pool-D9LvrvYB.js";import"./chat-context-DMUQz7NG.js";import"./use-ai-providers-B7l3jMjK.js";import"./use-decopilot-events-Bl5cSmBo.js";import"./use-organization-settings-CaerOcj2.js";import"./monaco-editor-Cv0goHEj.js";import"./spinner-B-_zF0cw.js";import"./index-DZHjNDS2.js";import"./calendar-Bja0SUOs.js";import"./shell-layout-CikXXWSF.js";import"./use-is-desktop-app-BNujXJc_.js";import"./required-auth-layout-B4hT2jJ6.js";import"./use-org-sso-DTXoH044.js";import"./integration-icon-CNZB1ZgI.js";import"./use-navigate-to-agent-DSBbiXfY.js";import"./reusable-new-chat-CouMjkYR.js";import"./AreaChart-BD-p9vcZ.js";import"./form-C-C_sOUC.js";import"./input-BhxRA_PT.js";const Et=new Set(["website/matchers/date.ts","$live/matchers/MatchDate.ts"]),St=new Set(["website/matchers/multi.ts","$live/matchers/MatchMulti.ts"]),Ct=new Date(-864e13),Dt=new Date(864e13),At=/\/flags\/multivariate(?:\/[^/]+)?\.ts$/,$t=/\/flags\/multivariate\.ts$/;function Lt(e){let t=e;t.startsWith("pages-")&&(t=t.slice(6).replace(/-\d+$/,""));try{t=decodeURIComponent(t)}catch{}return t}function Rt(e){if(!e||typeof e!="object")return null;const{start:t,end:n}=e,r=typeof t=="string",i=typeof n=="string";if(!r&&!i)return null;const o=r?new Date(t):Ct,a=i?new Date(n):Dt;return Number.isNaN(o.getTime())||Number.isNaN(a.getTime())||r&&i&&a.getTime()<=o.getTime()?null:{start:o,end:a,openStart:!r,openEnd:!i}}function pt(e,t){if(!e||typeof e!="object")return;const n=e.__resolveType;if(typeof n=="string"){if(Et.has(n)){const r=Rt(e);r&&t.push(r);return}if(St.has(n)){const r=e.matchers;if(Array.isArray(r))for(const i of r)pt(i,t)}}}function Ot(e){if(!e||typeof e!="object")return!1;const t=e.__resolveType;if(typeof t!="string"||!At.test(t))return!1;const n=e.variants;return Array.isArray(n)}function It(e){if(typeof e=="string"){const m=e.trim();if(m.length===0)return null;try{const c=new URL(m).pathname.split("/").filter(Boolean),d=c[c.length-1];if(d)return decodeURIComponent(d)}catch{}return m.length>80?`${m.slice(0,77)}…`:m}if(!e||typeof e!="object")return null;const t=e,n=t.config,i=t.desktop?.media,o=[t.title,t.name,t.label,t.alt,n?.title,n?.name,n?.typeAlert?.message,i?.alt,Array.isArray(t.matcher)?t.matcher[0]:void 0];for(const m of o)if(typeof m=="string"&&m.trim().length>0)return m.trim();const a=t.__resolveType;if(typeof a=="string"){const l=(a.split("/").pop()??a).replace(/\.(tsx?|jsx?)$/i,"");if(l.length>0)return l}return null}function Pt(e){const t=[];for(let n=0;n<e.length;n++){const r=e[n];typeof r=="number"?t.length>0?t[t.length-1]+=`[${r}]`:t.push(`[${r}]`):t.push(r)}return t.join(" · ")}function X(e,t,n,r,i){if(Ot(e)){const o=e.variants,a=e.__resolveType,m=$t.test(a)?"":Pt(r);o.forEach((l,c)=>{if(!l||typeof l!="object")return;const d=l,p=[];if(pt(d.rule,p),p.length===0)return;const x=It(d.value)??(m||n);for(const h of p)i.push({blockKey:t,blockLabel:n,innerPath:m,variantIndex:c,start:h.start,end:h.end,openStart:h.openStart,openEnd:h.openEnd,label:x,flagResolveType:a})});for(let l=0;l<o.length;l++){const c=o[l];c&&typeof c=="object"&&X(c.value,t,n,[...r,"variants",l,"value"],i)}return}if(Array.isArray(e)){for(let o=0;o<e.length;o++)X(e[o],t,n,[...r,o],i);return}if(e&&typeof e=="object")for(const[o,a]of Object.entries(e))o!=="__resolveType"&&X(a,t,n,[...r,o],i)}function Ft(e){if(!e)return[];const t=[];for(const[n,r]of Object.entries(e))X(r,n,Lt(n),[],t);return t.sort((n,r)=>n.start.getTime()-r.start.getTime())}function Vt(e){const t=[...new Set(e)].sort(),n=new Map;return t.forEach((r,i)=>{const o=i*137.508%360;n.set(r,{bg:`oklch(0.62 0.14 ${o})`,text:"white",border:`oklch(0.50 0.14 ${o})`})}),n}const Ht={bg:"oklch(0.62 0.14 0)",text:"white",border:"oklch(0.50 0.14 0)"};function ut(e,t){return e.get(t)??Ht}const Bt=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],ht=["January","February","March","April","May","June","July","August","September","October","November","December"],gt=1440*60*1e3;function B(e){const t=new Date(e);return t.setHours(0,0,0,0),t}function xt(e){return new Date(e.getFullYear(),e.getMonth(),1)}function G(e,t){return new Date(e.getFullYear(),e.getMonth()+t,1)}function Z(e,t){const n=new Date(e);return n.setDate(n.getDate()+t),n}function st(e,t){return Math.round((B(e).getTime()-B(t).getTime())/gt)}function Wt(e){const t=(e.getTime()-B(e).getTime())/gt;return Math.min(Math.max(t,0),1)}function it(e,t){return st(e,t)+Wt(e)}function zt(e){const t=Z(e,-e.getDay()),n=[];for(let r=0;r<6;r++){const i=[];for(let o=0;o<7;o++)i.push(Z(t,r*7+o));n.push(i)}for(;n.length>0&&n[n.length-1].every(r=>r.getMonth()!==e.getMonth());)n.pop();return n}function Ut(e,t){const n=B(e[0]),r=Z(n,7),i=n.getTime(),o=r.getTime(),a=[];for(const c of t){const d=B(c.start),p=B(c.end);if(p.getTime()<n.getTime()||d.getTime()>=r.getTime())continue;const u=d.getTime()<n.getTime()?n:d,x=p.getTime()>=r.getTime()?Z(r,-1):p,h=st(u,n),g=st(x,u)+1;if(g<=0)continue;const b=Math.max(c.start.getTime(),i),j=Math.min(c.end.getTime(),o),v=it(new Date(b),n),f=Math.max(it(new Date(j),n)-v,0);f<=0||a.push({variant:c,startCol:h,span:g,leftUnits:v,widthUnits:f})}a.sort((c,d)=>c.startCol-d.startCol||d.span-c.span||c.variant.blockKey.localeCompare(d.variant.blockKey));const m=[],l=[];for(const c of a){let d=m.findIndex(p=>p<=c.startCol);d===-1&&(d=m.length,m.push(0)),m[d]=c.startCol+c.span,l.push({...c,lane:d})}return l}const at=new Intl.DateTimeFormat("en",{dateStyle:"medium",timeStyle:"short"});function Yt(e,t){const n=e.openStart?t("sandbox.variantCalendar.always"):at.format(e.start),r=e.openEnd?t("sandbox.variantCalendar.ongoing"):at.format(e.end);return`${n} → ${r}`}function Gt(e){const t=K.c(18),{variant:n}=e,r=tt();let i;t[0]!==n.blockLabel?(i=s.jsx("div",{className:"font-semibold",children:n.blockLabel}),t[0]=n.blockLabel,t[1]=i):i=t[1];let o;t[2]!==n.innerPath?(o=n.innerPath&&s.jsx("div",{className:"text-muted-foreground",children:n.innerPath}),t[2]=n.innerPath,t[3]=o):o=t[3];let a;t[4]!==n.blockLabel||t[5]!==n.innerPath||t[6]!==n.label?(a=n.label!==n.blockLabel&&n.label!==n.innerPath&&s.jsx("div",{className:"text-muted-foreground",children:n.label}),t[4]=n.blockLabel,t[5]=n.innerPath,t[6]=n.label,t[7]=a):a=t[7];let m;t[8]!==r||t[9]!==n?(m=Yt(n,r),t[8]=r,t[9]=n,t[10]=m):m=t[10];let l;t[11]!==m?(l=s.jsx("div",{className:"mt-1",children:m}),t[11]=m,t[12]=l):l=t[12];let c;return t[13]!==i||t[14]!==o||t[15]!==a||t[16]!==l?(c=s.jsx(Mt,{children:s.jsxs("div",{className:"text-xs",children:[i,o,a,l]})}),t[13]=i,t[14]=o,t[15]=a,t[16]=l,t[17]=c):c=t[17],c}const lt=16;function Kt(e,t){const n=e?"transparent":"#000 0",r=t?"transparent":"#000 100%";if(!(!e&&!t))return`linear-gradient(to right, ${n}, #000 ${lt}px, #000 calc(100% - ${lt}px), ${r})`}function bt(e){const t=K.c(26),{variant:n,color:r,style:i,children:o,fadeStart:a,fadeEnd:m}=e,l=a===void 0?!1:a,c=m===void 0?!1:m;let d;t[0]!==c||t[1]!==l?(d=Kt(l,c),t[0]=c,t[1]=l,t[2]=d):d=t[2];const p=d;let u;t[3]!==l?(u=l&&{borderTopLeftRadius:0,borderBottomLeftRadius:0},t[3]=l,t[4]=u):u=t[4];let x;t[5]!==c?(x=c&&{borderTopRightRadius:0,borderBottomRightRadius:0},t[5]=c,t[6]=x):x=t[6];let h;t[7]!==p?(h=p&&{maskImage:p,WebkitMaskImage:p},t[7]=p,t[8]=h):h=t[8];let g;t[9]!==r.bg||t[10]!==r.text||t[11]!==i||t[12]!==u||t[13]!==x||t[14]!==h?(g={background:r.bg,color:r.text,borderRadius:4,...u,...x,...h,...i},t[9]=r.bg,t[10]=r.text,t[11]=i,t[12]=u,t[13]=x,t[14]=h,t[15]=g):g=t[15];let b;t[16]!==o?(b=s.jsx("span",{className:"truncate",children:o}),t[16]=o,t[17]=b):b=t[17];let j;t[18]!==g||t[19]!==b?(j=s.jsx(wt,{asChild:!0,children:s.jsx("div",{className:"absolute flex items-center px-2 text-[11px] font-medium truncate cursor-default",style:g,children:b})}),t[18]=g,t[19]=b,t[20]=j):j=t[20];let v;t[21]!==n?(v=s.jsx(Gt,{variant:n}),t[21]=n,t[22]=v):v=t[22];let f;return t[23]!==v||t[24]!==j?(f=s.jsxs(kt,{children:[j,v]}),t[23]=v,t[24]=j,t[25]=f):f=t[25],f}function Zn(e){const t=K.c(72),{decofile:n}=e,r=tt(),[i,o]=et.useState("calendar"),[a,m]=et.useState(Xt),[l,c]=et.useState(!1);let d,p,u;if(t[0]!==n||t[1]!==l){const P=Ft(n);d=P.filter(Qt).length,u=l?P:P.filter(qt),p=Vt(u.map(Jt)),t[0]=n,t[1]=l,t[2]=d,t[3]=p,t[4]=u}else d=t[2],p=t[3],u=t[4];const x=p;let h;t[5]===Symbol.for("react.memo_cache_sentinel")?(h=()=>m(xt(new Date)),t[5]=h):h=t[5];const g=h;let b;t[6]!==i?(b=()=>m(P=>i==="calendar"?G(P,-1):G(P,-3)),t[6]=i,t[7]=b):b=t[7];const j=b;let v;t[8]!==i?(v=()=>m(P=>i==="calendar"?G(P,1):G(P,3)),t[8]=i,t[9]=v):v=t[9];const f=v;let y;t[10]!==r?(y=r("sandbox.variantCalendar.today"),t[10]=r,t[11]=y):y=t[11];let T;t[12]!==y?(T=s.jsx(nt,{variant:"outline",size:"sm",onClick:g,children:y}),t[12]=y,t[13]=T):T=t[13];let w;t[14]!==r?(w=r("sandbox.variantCalendar.previous"),t[14]=r,t[15]=w):w=t[15];let D;t[16]===Symbol.for("react.memo_cache_sentinel")?(D=s.jsx(vt,{size:16}),t[16]=D):D=t[16];let k;t[17]!==j||t[18]!==w?(k=s.jsx(nt,{variant:"ghost",size:"icon",className:"size-8",onClick:j,"aria-label":w,children:D}),t[17]=j,t[18]=w,t[19]=k):k=t[19];let M;t[20]!==r?(M=r("sandbox.variantCalendar.next"),t[20]=r,t[21]=M):M=t[21];let S;t[22]===Symbol.for("react.memo_cache_sentinel")?(S=s.jsx(Tt,{size:16}),t[22]=S):S=t[22];let A;t[23]!==f||t[24]!==M?(A=s.jsx(nt,{variant:"ghost",size:"icon",className:"size-8",onClick:f,"aria-label":M,children:S}),t[23]=f,t[24]=M,t[25]=A):A=t[25];const $=ht[a.getMonth()];let C;t[26]!==a?(C=a.getFullYear(),t[26]=a,t[27]=C):C=t[27];let _;t[28]!==$||t[29]!==C?(_=s.jsxs("h2",{className:"ml-2 text-base font-semibold",children:[$," ",C]}),t[28]=$,t[29]=C,t[30]=_):_=t[30];let N;t[31]!==A||t[32]!==_||t[33]!==T||t[34]!==k?(N=s.jsxs("div",{className:"flex items-center gap-2",children:[T,k,A,_]}),t[31]=A,t[32]=_,t[33]=T,t[34]=k,t[35]=N):N=t[35];let L;t[36]!==d||t[37]!==l||t[38]!==r?(L=d>0&&s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(Nt,{id:"show-ongoing",checked:l,onCheckedChange:c}),s.jsx(jt,{htmlFor:"show-ongoing",className:"text-xs text-muted-foreground cursor-pointer",children:r("sandbox.variantCalendar.showOngoing",{count:d})})]}),t[36]=d,t[37]=l,t[38]=r,t[39]=L):L=t[39];let H;t[40]===Symbol.for("react.memo_cache_sentinel")?(H=s.jsx(dt,{}),t[40]=H):H=t[40];let F;t[41]!==r?(F=r("sandbox.variantCalendar.calendarMode"),t[41]=r,t[42]=F):F=t[42];let E;t[43]!==F?(E={value:"calendar",icon:H,label:F},t[43]=F,t[44]=E):E=t[44];let W;t[45]===Symbol.for("react.memo_cache_sentinel")?(W=s.jsx(yt,{}),t[45]=W):W=t[45];let R;t[46]!==r?(R=r("sandbox.variantCalendar.timelineMode"),t[46]=r,t[47]=R):R=t[47];let O;t[48]!==R?(O={value:"timeline",icon:W,label:R},t[48]=R,t[49]=O):O=t[49];let I;t[50]!==E||t[51]!==O?(I=[E,O],t[50]=E,t[51]=O,t[52]=I):I=t[52];let V;t[53]!==I||t[54]!==i?(V=s.jsx(_t,{value:i,onValueChange:o,options:I}),t[53]=I,t[54]=i,t[55]=V):V=t[55];let z;t[56]!==L||t[57]!==V?(z=s.jsxs("div",{className:"flex items-center gap-4",children:[L,V]}),t[56]=L,t[57]=V,t[58]=z):z=t[58];let U;t[59]!==N||t[60]!==z?(U=s.jsxs("div",{className:"flex items-center justify-between px-4 h-12 border-b shrink-0",children:[N,z]}),t[59]=N,t[60]=z,t[61]=U):U=t[61];let Y;t[62]!==x||t[63]!==a||t[64]!==d||t[65]!==l||t[66]!==u||t[67]!==i?(Y=u.length===0?s.jsx(Zt,{hiddenOngoing:l?0:d}):i==="calendar"?s.jsx(ee,{monthStart:a,variants:u,colorMap:x}):s.jsx(oe,{monthStart:a,variants:u,colorMap:x}),t[62]=x,t[63]=a,t[64]=d,t[65]=l,t[66]=u,t[67]=i,t[68]=Y):Y=t[68];let q;return t[69]!==U||t[70]!==Y?(q=s.jsxs("div",{className:"flex h-full w-full flex-col",children:[U,Y]}),t[69]=U,t[70]=Y,t[71]=q):q=t[71],q}function Jt(e){return e.blockKey}function qt(e){return!e.openEnd}function Qt(e){return e.openEnd}function Xt(){return xt(new Date)}function Zt(e){const t=K.c(4),{hiddenOngoing:n}=e,r=n===void 0?0:n,i=tt();let o;t[0]===Symbol.for("react.memo_cache_sentinel")?(o=s.jsx(dt,{size:24,className:"text-muted-foreground/60"}),t[0]=o):o=t[0];let a;return t[1]!==r||t[2]!==i?(a=s.jsxs("div",{className:"flex-1 flex flex-col items-center justify-center gap-2 text-center text-sm text-muted-foreground p-6",children:[o,r>0?s.jsxs(s.Fragment,{children:[s.jsx("div",{children:i("sandbox.variantCalendar.noDatedVariants")}),s.jsx("div",{className:"text-xs text-muted-foreground/80",children:i("sandbox.variantCalendar.hiddenOngoingVariants",{count:r})})]}):s.jsxs(s.Fragment,{children:[s.jsx("div",{children:i("sandbox.variantCalendar.noScheduledVariants")}),s.jsx("div",{className:"text-xs text-muted-foreground/80",children:i("sandbox.variantCalendar.dateMatcherInfo")})]})]}),t[1]=r,t[2]=i,t[3]=a):a=t[3],a}const rt=20,ct=2,mt=28,te=6;function ee(e){const t=K.c(17),{monthStart:n,variants:r,colorMap:i}=e;let o,a,m,l,c;if(t[0]!==i||t[1]!==n||t[2]!==r){const u=zt(n),x=B(new Date);o=ft,c="flex-1 min-h-0",a="min-w-[840px]",t[8]===Symbol.for("react.memo_cache_sentinel")?(m=s.jsx("div",{className:"grid grid-cols-7 border-b text-xs text-muted-foreground sticky top-0 bg-background z-10",children:Bt.map(re)}),t[8]=m):m=t[8],l=u.map((h,g)=>{const b=Ut(h,r),j=b.reduce(ne,0),v=mt+j*(rt+ct)+8;return s.jsxs("div",{className:"grid grid-cols-7 relative border-b",style:{height:v},children:[h.map((f,y)=>{const T=f.getMonth()===n.getMonth(),w=f.getTime()===x.getTime();return s.jsx("div",{className:ot("border-r last:border-r-0 px-2 pt-1.5 text-xs",T?"bg-background":"bg-muted/30 text-muted-foreground"),children:s.jsx("span",{className:ot("inline-flex h-5 min-w-5 items-center justify-center rounded-full px-1",w&&"bg-primary text-primary-foreground font-semibold"),children:f.getDate()})},y)}),b.map((f,y)=>{const T=ut(i,f.variant.blockKey),w=mt+f.lane*(rt+ct),D=f.leftUnits/7*100,k=f.widthUnits/7*100,M=f.variant.openStart&&g===0,S=f.variant.openEnd&&g===u.length-1;return s.jsxs(bt,{variant:f.variant,color:T,fadeStart:M,fadeEnd:S,style:{top:w,left:`calc(${D}% + 2px)`,width:`calc(${k}% - 4px)`,minWidth:te,height:rt},children:[f.variant.blockLabel,f.variant.label!==f.variant.blockLabel&&s.jsxs("span",{className:"opacity-70",children:[" · ",f.variant.label]})]},`${g}-${y}`)})]},g)}),t[0]=i,t[1]=n,t[2]=r,t[3]=o,t[4]=a,t[5]=m,t[6]=l,t[7]=c}else o=t[3],a=t[4],m=t[5],l=t[6],c=t[7];let d;t[9]!==a||t[10]!==m||t[11]!==l?(d=s.jsxs("div",{className:a,children:[m,l]}),t[9]=a,t[10]=m,t[11]=l,t[12]=d):d=t[12];let p;return t[13]!==o||t[14]!==c||t[15]!==d?(p=s.jsx(o,{className:c,children:d}),t[13]=o,t[14]=c,t[15]=d,t[16]=p):p=t[16],p}function ne(e,t){return Math.max(e,t.lane+1)}function re(e){return s.jsx("div",{className:"px-2 py-2 text-center uppercase tracking-wide",children:e},e)}const Q=4,se=32,J=240;function oe(e){const t=K.c(23),{monthStart:n,variants:r,colorMap:i}=e,o=n,a=G(n,Q),m=new Date,l=new Map;for(const _ of r){const N=l.get(_.blockKey)??[];N.push(_),l.set(_.blockKey,N)}const c=Array.from(l.entries()).sort(le),d=a.getTime()-o.getTime(),p=_=>(Math.max(o.getTime(),Math.min(a.getTime(),_.getTime()))-o.getTime())/d*100;let u;t[0]!==o?(u=(_,N)=>G(o,N),t[0]=o,t[1]=u):u=t[1];const x=Array.from({length:Q},u),h=m.getTime()>=o.getTime()&&m.getTime()<=a.getTime()?p(m):null,g=tt(),b=ft,j="flex-1 min-h-0",v="min-w-[900px] relative";let f;t[2]===Symbol.for("react.memo_cache_sentinel")?(f={width:J},t[2]=f):f=t[2];let y;t[3]!==g?(y=g("sandbox.variantCalendar.variantBlock"),t[3]=g,t[4]=y):y=t[4];let T;t[5]!==y?(T=s.jsx("div",{className:"shrink-0 px-3 py-2 text-xs font-semibold uppercase tracking-wide text-muted-foreground border-r",style:f,children:y}),t[5]=y,t[6]=T):T=t[6];let w;t[7]===Symbol.for("react.memo_cache_sentinel")?(w={gridTemplateColumns:`repeat(${Q}, minmax(0, 1fr))`},t[7]=w):w=t[7];const D=x.map(ae);let k;t[8]!==D?(k=s.jsx("div",{className:"flex-1 grid",style:w,children:D}),t[8]=D,t[9]=k):k=t[9];let M;t[10]!==T||t[11]!==k?(M=s.jsxs("div",{className:"flex border-b sticky top-0 bg-background z-10",children:[T,k]}),t[10]=T,t[11]=k,t[12]=M):M=t[12];let S;t[13]!==g||t[14]!==h?(S=h!==null&&s.jsx("div",{className:"pointer-events-none absolute top-0 bottom-0 w-px bg-primary/70 z-[5]",style:{left:`calc(${J}px + (100% - ${J}px) * ${h} / 100)`},children:s.jsx("span",{className:"absolute -top-0.5 -translate-x-1/2 rounded-sm bg-primary px-1.5 py-px text-[10px] font-medium text-primary-foreground",children:g("sandbox.variantCalendar.todayLabel")})}),t[13]=g,t[14]=h,t[15]=S):S=t[15];const A=c.map(_=>{const[N,L]=_,H=ut(i,N),F=L[0]?.blockLabel??N;return s.jsxs("div",{children:[s.jsx("div",{className:"flex items-center bg-muted/40 border-b text-xs font-semibold uppercase tracking-wide text-muted-foreground",style:{height:28},children:s.jsx("div",{className:"px-3 truncate",style:{width:J},children:F})}),L.map((E,W)=>s.jsxs("div",{className:"flex border-b items-center",style:{height:se},children:[s.jsxs("div",{className:"flex items-center gap-2 px-3 text-sm border-r shrink-0",style:{width:J},children:[s.jsx("span",{className:"inline-block h-2 w-2 rounded-full shrink-0",style:{background:H.bg}}),s.jsx("span",{className:"truncate text-foreground/80",children:E.label})]}),s.jsxs("div",{className:"relative flex-1 h-full",children:[s.jsx("div",{className:"absolute inset-0 grid",style:{gridTemplateColumns:`repeat(${Q}, minmax(0, 1fr))`},children:x.map(ie)}),(()=>{const R=Math.max(E.start.getTime(),o.getTime()),O=Math.min(E.end.getTime(),a.getTime());if(O<=R)return null;const I=p(new Date(R)),V=p(new Date(O))-I;return s.jsx(bt,{variant:E,color:H,fadeStart:E.openStart,fadeEnd:E.openEnd,style:{top:"50%",transform:"translateY(-50%)",left:`${I}%`,width:`calc(${V}% - 2px)`,height:22},children:E.label})})()]})]},W))]},N)});let $;t[16]!==M||t[17]!==S||t[18]!==A?($=s.jsxs("div",{className:v,children:[M,S,A]}),t[16]=M,t[17]=S,t[18]=A,t[19]=$):$=t[19];let C;return t[20]!==b||t[21]!==$?(C=s.jsx(b,{className:j,children:$}),t[20]=b,t[21]=$,t[22]=C):C=t[22],C}function ie(e,t){return s.jsx("div",{className:"border-r last:border-r-0 border-border/40"},t)}function ae(e,t){return s.jsxs("div",{className:"px-2 py-2 text-xs uppercase tracking-wide text-muted-foreground border-r last:border-r-0",children:[ht[e.getMonth()]?.slice(0,3)," ",e.getFullYear()]},t)}function le(e,t){return e[0].localeCompare(t[0])}export{Zn as VariantCalendar};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as $,r as T,m as f,j as i}from"./index-
|
|
1
|
+
import{c as $,r as T,m as f,j as i}from"./index-v4xr9fBY.js";import{c as k,T as I,a as P}from"./tooltip-CzcvFJJ4.js";const M={sm:{button:"size-7",buttonWithLabel:"h-7",icon:"size-4"},md:{button:"size-9",buttonWithLabel:"h-9",icon:"size-5"},lg:{button:"size-12",buttonWithLabel:"h-12",icon:"size-6"}};function B(E){const t=$.c(27),{value:s,onValueChange:y,options:o,size:C,fullWidth:L,className:z}=E,_=C===void 0?"sm":C,b=L===void 0?!1:L;let h;t[0]===Symbol.for("react.memo_cache_sentinel")?(h=[],t[0]=h):h=t[0];const R=T.useRef(h);let x;t[1]===Symbol.for("react.memo_cache_sentinel")?(x={left:0,width:0,opacity:0},t[1]=x):x=t[1];const[d,S]=T.useState(x);let g,p;t[2]!==o||t[3]!==s?(g=()=>{const e=o.findIndex(j=>j.value===s),m=R.current[e];m&&S({left:m.offsetLeft,width:m.offsetWidth,opacity:1})},p=[s,o],t[2]=o,t[3]=s,t[4]=g,t[5]=p):(g=t[4],p=t[5]),T.useEffect(g,p);const l=M[_];let n;t[6]!==z?(n=f("relative flex gap-0 bg-muted rounded-lg",z),t[6]=z,t[7]=n):n=t[7];let a;t[8]!==l||t[9]!==b||t[10]!==y||t[11]!==o||t[12]!==s?(a=o.map((e,m)=>{const j=i.jsxs("button",{ref:V=>{R.current[m]=V},type:"button",onClick:()=>y(e.value),"aria-label":e.label,className:f("relative z-10 flex items-center justify-center gap-2 rounded-lg transition-colors [transition-timing-function:var(--ease-out-cubic)] duration-200",b?"flex-1 h-12 px-4":e.label?f(l.buttonWithLabel,"px-3"):l.button),children:[i.jsx("span",{className:f("transition-colors ease-out duration-200 flex items-center justify-center [&>svg]:size-[1em]",l.icon,s===e.value?"text-foreground":"text-muted-foreground"),children:e.icon}),e.label&&i.jsx("span",{className:f("text-xs transition-colors ease-out duration-200 whitespace-nowrap",s===e.value?"text-foreground":"text-muted-foreground"),children:e.label})]},e.value);return e.tooltip?i.jsxs(k,{children:[i.jsx(I,{asChild:!0,children:j}),i.jsx(P,{side:"bottom",children:e.tooltip})]},e.value):j}),t[8]=l,t[9]=b,t[10]=y,t[11]=o,t[12]=s,t[13]=a):a=t[13];const w=b?"h-12":l.button;let r;t[14]!==w?(r=f("absolute z-0 bg-background rounded-lg border-shadow transition-all [transition-timing-function:var(--ease-out-cubic)] duration-200",w),t[14]=w,t[15]=r):r=t[15];const W=`${d.left}px`,N=`${d.width}px`;let c;t[16]!==d.opacity||t[17]!==W||t[18]!==N?(c={left:W,width:N,opacity:d.opacity},t[16]=d.opacity,t[17]=W,t[18]=N,t[19]=c):c=t[19];let u;t[20]!==r||t[21]!==c?(u=i.jsx("div",{className:r,style:c}),t[20]=r,t[21]=c,t[22]=u):u=t[22];let v;return t[23]!==u||t[24]!==n||t[25]!==a?(v=i.jsxs("div",{className:n,children:[a,u]}),t[23]=u,t[24]=n,t[25]=a,t[26]=v):v=t[26],v}export{B as V};
|
package/dist/client/index.html
CHANGED
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
<meta name="twitter:description" content="Hire specialized agents, give them access to your tools, and let them deliver real projects — with planning, verification, and observability built in." />
|
|
51
51
|
<meta name="twitter:image" content="/og-image.png" />
|
|
52
52
|
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
|
53
|
-
<script type="module" crossorigin src="/assets/index-
|
|
53
|
+
<script type="module" crossorigin src="/assets/index-v4xr9fBY.js"></script>
|
|
54
54
|
<link rel="stylesheet" crossorigin href="/assets/index-CbTRSuOH.css">
|
|
55
55
|
</head>
|
|
56
56
|
<body>
|
package/dist/server/cli.js
CHANGED
|
@@ -82,7 +82,7 @@ _deco_commands() {
|
|
|
82
82
|
}
|
|
83
83
|
|
|
84
84
|
_deco "$@"
|
|
85
|
-
`}async function R5t(i){let u=i||process.env.SHELL?.split("/").pop()||"bash",t,f;switch(u){case"bash":{t=z5t(),f=J_u(K_u(),".local/share/bash-completion/completions/deco");break}case"zsh":{t=n5t(),f=J_u(K_u(),".zsh/completions/_deco");break}default:console.error(`Unsupported shell: ${u}`),console.log("Supported shells: bash, zsh"),process.exit(1)}if(H5t(X_u(f),{recursive:!0}),await Q5t(f,t,"utf8"),console.log(`Completion script installed to: ${f}`),console.log(""),u==="bash")console.log("To enable completions, add to your ~/.bashrc:"),console.log(` source "${f}"`);else console.log("To enable completions, add to your ~/.zshrc:"),console.log(` fpath=("${X_u(f)}" $fpath)`),console.log(" autoload -U compinit && compinit");console.log(""),console.log("Then restart your shell.")}var W_u=()=>{};import{homedir as b5t}from"os";function M5t(i){let u=(i??"").trim();return C5t.has(u)?u:"all"}function V5t(i){let u=(i??"").trim();return q5t.has(u)?u:"development"}function L_u(i,u,t){let f=i==="worker"?0:Math.floor(u*0.6);if(t===void 0||t==="")return f;let l=Number(t);return Number.isFinite(l)&&l>=0?l:f}function S_u(i){if(!i)return"[settings] ENCRYPTION_KEY is not set (using deterministic fallback, 32 chars) \u2014 set ENCRYPTION_KEY for production";return`[settings] ENCRYPTION_KEY is set (${i.length<=8?"***":`${i.slice(0,4)}..${i.slice(-4)}`}, ${i.length} chars)`}function cZ(i){return i==="true"||i==="1"}function r5t(i){if(i===void 0||i==="")return;return cZ(i)}function Q_u(i,u){if(u===void 0||u==="")return;let t=Number(u);if(!Number.isSafeInteger(t)||t<=0)throw Error(`${i} must be a positive integer`);return t}function n7(i,u,t){return Q_u(i,u)??t}function m5t(i,u){if(i===void 0||i==="")return u;return i==="true"||i==="1"}function eb(i){if(!i)return null;try{let t=new URL(i).hostname.replace(/^\[|\]$/g,"");if(t==="localhost"||t==="127.0.0.1"||t==="::1")return null;return i}catch{return null}}function Lki(i){return i===void 0||i===""||i==="true"||i==="1"}function mb(i,u){return i||u}function a5t(i){let u=(i??"").trim(),t=u.length>0?u:"user-desktop";if(t==="cluster")return"agent-sandbox";if(!e5t.has(t))throw Error(`Unknown STUDIO_SANDBOX_PROVIDER="${i}" \u2014 expected "agent-sandbox", legacy "cluster", or "user-desktop".`);return t}function Oui(i,u){let t=i.home||u.DATA_DIR||u.DECOCMS_HOME||`${b5t()}/deco`,f=i.localMode,l=i.nodeEnv||V5t(u.NODE_ENV),E=u.NATS_URL||"nats://localhost:4222",c=r5t(u.NATS_TUNNEL_PUBLIC_ENABLED)??!!u.NATS_PUBLIC_URL;return{settings:{nodeEnv:l,port:n7("PORT",i.port||u.PORT,3000),baseUrl:i.baseUrl||u.BASE_URL,publicUrl:mb(u.STUDIO_PUBLIC_URL,u.MESH_PUBLIC_URL),dataDir:t,databasePgSsl:cZ(u.DATABASE_PG_SSL),databasePoolMax:n7("DATABASE_POOL_MAX",u.DATABASE_POOL_MAX,5),dbosPoolSize:n7("DBOS_POOL_SIZE",u.DBOS_POOL_SIZE,5),betterAuthSecret:u.BETTER_AUTH_SECRET||"",encryptionKey:u.ENCRYPTION_KEY||"",studioJwtSecret:mb(u.STUDIO_JWT_SECRET,u.MESH_JWT_SECRET),localMode:f,disableRateLimit:cZ(u.DISABLE_RATE_LIMIT),studioProvisionSecretKey:u.STUDIO_PROVISION_SECRET_KEY,deploymentAdminEmails:(u.DEPLOYMENT_ADMIN_EMAILS??"").split(",").map(($)=>$.trim().toLowerCase()).filter(Boolean),clickhouseUrl:u.CLICKHOUSE_URL,clickhouseMaxMemoryUsage:Q_u("CLICKHOUSE_MAX_MEMORY_USAGE",u.CLICKHOUSE_MAX_MEMORY_USAGE),monitoringOtlpEndpoint:u.MONITORING_OTLP_ENDPOINT,otelServiceName:u.OTEL_SERVICE_NAME||"studio",natsPublicUrl:u.NATS_PUBLIC_URL,natsTunnelPublicEnabled:c,natsTunnelSessionTtlSeconds:n7("NATS_TUNNEL_SESSION_TTL_SECONDS",u.NATS_TUNNEL_SESSION_TTL_SECONDS,900),natsOperatorJwt:u.NATS_OPERATOR_JWT,natsAccountJwt:u.NATS_ACCOUNT_JWT,natsAccountSigningKey:u.NATS_ACCOUNT_SIGNING_KEY,natsCredsPath:u.NATS_CREDS,configPath:u.CONFIG_PATH||"./config.json",aiGatewayEnabled:cZ(u.DECO_AI_GATEWAY_ENABLED),aiGatewayUrl:u.DECO_AI_GATEWAY_URL||"https://ai-site.deco.site",aiGatewayAdminToken:u.DECO_AI_GATEWAY_ADMIN_TOKEN,seatAllowanceCents:n7("STUDIO_SEAT_ALLOWANCE_CENTS",u.STUDIO_SEAT_ALLOWANCE_CENTS,500),stripeWebhookSecret:u.STRIPE_WEBHOOK_SECRET,stripeSecretKey:u.STRIPE_SECRET_KEY,stripeSeatPriceId:u.STRIPE_SEAT_PRICE_ID,topupFeePercent:n7("STUDIO_TOPUP_FEE_PERCENT",u.STUDIO_TOPUP_FEE_PERCENT,15),enableDecoImport:cZ(u.ENABLE_DECO_IMPORT),billingEnforced:cZ(u.STUDIO_BILLING_ENFORCED),mcpCacheEnabled:m5t(u.MCP_CACHE_ENABLED,l!=="development"),orgFsPublicSetsJson:u.ORGFS_PUBLIC_SETS,orgFsMountsDisabled:cZ(u.DISABLE_ORGFS_MOUNTS),decopilotMaxConcurrentSubagents:n7("DECOPILOT_MAX_CONCURRENT_SUBAGENTS",u.DECOPILOT_MAX_CONCURRENT_SUBAGENTS,4),decopilotMaxConcurrentHostedRuns:n7("DECOPILOT_MAX_CONCURRENT_HOSTED_RUNS",u.DECOPILOT_MAX_CONCURRENT_HOSTED_RUNS,3),s3Endpoint:u.S3_ENDPOINT,s3Bucket:u.S3_BUCKET,s3Region:u.S3_REGION||"auto",s3AccessKeyId:u.S3_ACCESS_KEY_ID,s3SecretAccessKey:u.S3_SECRET_ACCESS_KEY,s3ForcePathStyle:Lki(u.S3_FORCE_PATH_STYLE),monitoringS3Bucket:u.MONITORING_S3_BUCKET,monitoringS3Endpoint:u.MONITORING_S3_ENDPOINT,monitoringS3Region:u.MONITORING_S3_REGION,monitoringS3AccessKeyId:u.MONITORING_S3_ACCESS_KEY_ID,monitoringS3SecretAccessKey:u.MONITORING_S3_SECRET_ACCESS_KEY,monitoringS3Prefix:u.MONITORING_S3_PREFIX,duckdbExtensionDirectory:u.DUCKDB_EXTENSION_DIRECTORY||"/opt/duckdb/extensions",duckdbMemoryLimit:u.DUCKDB_MEMORY_LIMIT||void 0,duckdbThreads:u.DUCKDB_THREADS?Number(u.DUCKDB_THREADS):void 0,isCli:!0,noTui:i.noTui===!0,podName:u.POD_NAME??crypto.randomUUID(),dispatchRole:M5t(mb(u.STUDIO_DISPATCH_ROLE,u.MESH_DISPATCH_ROLE)),sandboxProviderKind:a5t(u.STUDIO_SANDBOX_PROVIDER),decoSupabaseUrl:u.DECO_SUPABASE_URL,decoSupabaseServiceKey:u.DECO_SUPABASE_SERVICE_KEY,firecrawlApiKey:u.FIRECRAWL_API_KEY,reportsInternalApiUrl:mb(u.REPORTS_INTERNAL_API_URL,u.COMMERCE_DISCOVERY_INTERNAL_API_URL),reportsInternalApiKey:mb(u.REPORTS_INTERNAL_API_KEY,u.COMMERCE_DISCOVERY_INTERNAL_API_KEY),s3TenantBucket:u.S3_TENANT_BUCKET||"new-deco-sites-assets",s3TenantRegion:u.S3_TENANT_REGION||"us-west-2",s3TenantEndpoint:u.S3_TENANT_ENDPOINT,s3TenantPublicUrlBase:u.S3_TENANT_PUBLIC_URL_BASE||"https://decoims.com",awsS3TenantRoleArn:u.AWS_S3_TENANT_ROLE_ARN,awsS3TenantProvisionerAccessKeyId:u.AWS_S3_TENANT_PROVISIONER_ACCESS_KEY_ID,awsS3TenantProvisionerSecretAccessKey:u.AWS_S3_TENANT_PROVISIONER_SECRET_ACCESS_KEY},externalDatabaseUrl:eb(u.DATABASE_URL),externalNatsUrl:eb(E),skipMigrations:i.skipMigrations}}var C5t,q5t,e5t;var CW=O(()=>{C5t=new Set(["all","worker","api"]);q5t=new Set(["production","development","test"]);e5t=new Set(["agent-sandbox","user-desktop"])});function y0(i,u={}){let{signal:t}=u;if(t?.aborted)return Promise.reject(t.reason);return new Promise((f,l)=>{let E=()=>{clearTimeout(+w),l(t?.reason)},w=o5t(()=>{t?.removeEventListener("abort",E),f()},i);t?.addEventListener("abort",E,{once:!0})})}function o5t(i,u){if(u=Math.trunc(Math.max(u,0)||0),u<=Ski){let E=Number(setTimeout(i,u));return{valueOf:()=>E}}let t=Date.now(),f,l=()=>{let E=u-(Date.now()-t);f=E>Ski?Number(setTimeout(l,Ski)):Number(setTimeout(i,E))};return l(),{valueOf:()=>f}}var Ski=2147483647;function hE(i,u,t,f,l){let E=Math.min(i,u*f**t);return(1-l*Math.random())*E}async function F1(i,u){let{multiplier:t=2,maxTimeout:f=60000,maxAttempts:l=5,minTimeout:E=1000,jitter:c=1,isRetriable:w=()=>!0,signal:$}=u??{};if(!Number.isInteger(l)||l<1)throw RangeError(`Cannot retry as 'maxAttempts' must be a positive integer: current value is ${l}`);if(!Number.isFinite(t)||t<1)throw RangeError(`Cannot retry as 'multiplier' must be a finite number >= 1: current value is ${t}`);if(Number.isNaN(f)||f<=0)throw RangeError(`Cannot retry as 'maxTimeout' must be a positive number: current value is ${f}`);if(Number.isNaN(E)||E<0)throw RangeError(`Cannot retry as 'minTimeout' must be >= 0: current value is ${E}`);if(E>f)throw RangeError(`Cannot retry as 'minTimeout' must be <= 'maxTimeout': current values 'minTimeout=${E}', 'maxTimeout=${f}'`);if(Number.isNaN(c)||c<0||c>1)throw RangeError(`Cannot retry as 'jitter' must be between 0 and 1: current value is ${c}`);let h=0;while(!0){$?.throwIfAborted();try{return await i()}catch(v){if(!w(v))throw v;if(h+1>=l)throw new H6(v,l);let d=hE(f,E,h,t,c);await y0(d,$?{signal:$}:void 0)}h++}}var H6;var H_u=O(()=>{H6=class H6 extends Error{constructor(i,u){super(`Retrying exceeded the maxAttempts (${u}).`);this.name="RetryError",this.cause=i}}});var Z4=O(()=>{H_u()});class Zui{static encode(i){if(typeof i==="string")return btoa(i);let u=Array.from(i);return btoa(String.fromCharCode(...u))}static decode(i,u=!1){let t=atob(i);if(!u)return t;let f=new Uint8Array(t.length);for(let l=0;l<t.length;l++)f[l]=t.charCodeAt(l);return f}}class vD{static encode(i){return vD.toB64URLEncoding(Zui.encode(i))}static decode(i,u=!1){return Zui.decode(vD.fromB64URLEncoding(i),u)}static toB64URLEncoding(i){return i=i.replace(/=/g,""),i=i.replace(/\+/g,"-"),i.replace(/\//g,"_")}static fromB64URLEncoding(i){return i=i.replace(/_/g,"/"),i=i.replace(/-/g,"+"),i}}function p5t(i){n_u=i}function r$(){return n_u}class Bui{static encode(i){let u=0,t=0,f=new Uint8Array(i),l=new Uint8Array(i.byteLength*2),E=0;for(let c=0;c<f.byteLength;c++){t=t<<8|f[c],u+=8;while(u>=5){let w=t>>>u-5&31;l[E++]=Qki.charAt(w).charCodeAt(0),u-=5}}if(u>0){let c=t<<5-u&31;l[E++]=Qki.charAt(c).charCodeAt(0)}return l.slice(0,E)}static decode(i){let u=0,t=0,f=0,l=new Uint8Array(i),E=new Uint8Array(l.byteLength*5/8|0);for(let c=0;c<l.byteLength;c++){let w=String.fromCharCode(l[c]),$=Qki.indexOf(w);if($===-1)throw Error("Illegal Base32 character: "+l[c]);if(t=t<<5|$,u+=5,u>=8)E[f++]=t>>>u-8&255,u-=8}return E.slice(0,f)}}class ob{static checksum(i){let u=0;for(let t=0;t<i.byteLength;t++){let f=i[t];u=u<<8&65535^iht[(u>>8^f)&255]}return u}static validate(i,u){return ob.checksum(i)==u}}function R_u(){return nki(Ht.Operator)}function Fui(){return nki(Ht.Account)}function gui(){return nki(Ht.User)}class hZ{static isValidPublicPrefix(i){return i==Ht.Server||i==Ht.Operator||i==Ht.Cluster||i==Ht.Account||i==Ht.User||i==Ht.Curve}static startsWithValidPrefix(i){let u=i[0];return u=="S"||u=="P"||u=="O"||u=="N"||u=="C"||u=="A"||u=="U"||u=="X"}static isValidPrefix(i){return this.parsePrefix(i)!==Ht.Unknown}static parsePrefix(i){switch(i){case Ht.Seed:return Ht.Seed;case Ht.Private:return Ht.Private;case Ht.Operator:return Ht.Operator;case Ht.Server:return Ht.Server;case Ht.Cluster:return Ht.Cluster;case Ht.Account:return Ht.Account;case Ht.User:return Ht.User;case Ht.Curve:return Ht.Curve;default:return Ht.Unknown}}}class $6{static encode(i,u){if(!u||!(u instanceof Uint8Array))throw new m0(V0.SerializationError);if(!hZ.isValidPrefix(i))throw new m0(V0.InvalidPrefixByte);return $6._encode(!1,i,u)}static encodeSeed(i,u){if(!u)throw new m0(V0.ApiError);if(!hZ.isValidPublicPrefix(i))throw new m0(V0.InvalidPrefixByte);if(u.byteLength!==32)throw new m0(V0.InvalidSeedLen);return $6._encode(!0,i,u)}static decode(i,u){if(!hZ.isValidPrefix(i))throw new m0(V0.InvalidPrefixByte);let t=$6._decode(u);if(t[0]!==i)throw new m0(V0.InvalidPrefixByte);return t.slice(1)}static decodeSeed(i){let u=$6._decode(i),t=$6._decodePrefix(u);if(t[0]!=Ht.Seed)throw new m0(V0.InvalidSeed);if(!hZ.isValidPublicPrefix(t[1]))throw new m0(V0.InvalidPrefixByte);return{buf:u.slice(2),prefix:t[1]}}static _encode(i,u,t){let f=i?2:1,l=t.byteLength,E=f+l+2,c=f+l,w=new Uint8Array(E);if(i){let v=$6._encodePrefix(Ht.Seed,u);w.set(v)}else w[0]=u;w.set(t,f);let $=ob.checksum(w.slice(0,c));return new DataView(w.buffer).setUint16(c,$,!0),Bui.encode(w)}static _decode(i){if(i.byteLength<4)throw new m0(V0.InvalidEncoding);let u;try{u=Bui.decode(i)}catch(c){throw new m0(V0.InvalidEncoding,c)}let t=u.byteLength-2,l=new DataView(u.buffer).getUint16(t,!0),E=u.slice(0,t);if(!ob.validate(E,l))throw new m0(V0.InvalidChecksum);return E}static _encodePrefix(i,u){let t=i|u>>5,f=(u&31)<<3;return new Uint8Array([t,f])}static _decodePrefix(i){let u=i[0]&248,t=(i[0]&7)<<5|(i[1]&248)>>3;return new Uint8Array([u,t])}}class Hki{seed;constructor(i){this.seed=i}getRawSeed(){if(!this.seed)throw new m0(V0.ClearedPair);return $6.decodeSeed(this.seed).buf}getSeed(){if(!this.seed)throw new m0(V0.ClearedPair);return this.seed}getPublicKey(){if(!this.seed)throw new m0(V0.ClearedPair);let i=$6.decodeSeed(this.seed),u=r$().fromSeed(this.getRawSeed()),t=$6.encode(i.prefix,u.publicKey);return new TextDecoder().decode(t)}getPrivateKey(){if(!this.seed)throw new m0(V0.ClearedPair);let i=r$().fromSeed(this.getRawSeed());return $6.encode(Ht.Private,i.secretKey)}sign(i){if(!this.seed)throw new m0(V0.ClearedPair);let u=r$().fromSeed(this.getRawSeed());return r$().sign(i,u.secretKey)}verify(i,u){if(!this.seed)throw new m0(V0.ClearedPair);let t=r$().fromSeed(this.getRawSeed());return r$().verify(i,u,t.publicKey)}clear(){if(!this.seed)return;this.seed.fill(0),this.seed=void 0}seal(i,u,t){throw new m0(V0.InvalidNKeyOperation)}open(i,u){throw new m0(V0.InvalidNKeyOperation)}}class zki{seed;constructor(i){this.seed=i}clear(){if(!this.seed)return;this.seed.fill(0),this.seed=void 0}getPrivateKey(){if(!this.seed)throw new m0(V0.ClearedPair);return $6.encode(Ht.Private,this.seed)}getPublicKey(){if(!this.seed)throw new m0(V0.ClearedPair);let i=r$().scalarBaseMultiply(this.seed),u=$6.encode(Ht.Curve,i);return new TextDecoder().decode(u)}getSeed(){if(!this.seed)throw new m0(V0.ClearedPair);return $6.encodeSeed(Ht.Curve,this.seed)}sign(){throw new m0(V0.InvalidCurveOperation)}verify(){throw new m0(V0.InvalidCurveOperation)}decodePubCurveKey(i){try{let u=Bui.decode(new TextEncoder().encode(i));if(u.byteLength!==35)throw new m0(V0.InvalidCurveKey);if(u[0]!==Ht.Curve)throw new m0(V0.InvalidPublicKey);let t=u.byteLength-2,l=new DataView(u.buffer).getUint16(t,!0),E=u.slice(0,t);if(!ob.validate(E,l))throw new m0(V0.InvalidChecksum);return E.slice(1)}catch(u){throw new m0(V0.InvalidRecipient,u)}}seal(i,u,t){if(!this.seed)throw new m0(V0.ClearedPair);if(!t)t=r$().randomBytes(z_u);let f=this.decodePubCurveKey(u),l=new Uint8Array($Z.length+24);l.set($Z,0),l.set(t,$Z.length);let E=r$().seal(i,t,f,this.seed),c=new Uint8Array(l.length+E.length);return c.set(l),c.set(E,l.length),c}open(i,u){if(!this.seed)throw new m0(V0.ClearedPair);if(i.length<=24+$Z.length)throw new m0(V0.InvalidEncrypted);for(let l=0;l<$Z.length;l++)if(i[l]!==$Z[l])throw new m0(V0.InvalidEncrypted);let t=this.decodePubCurveKey(u);i=i.slice($Z.length);let f=i.slice(0,24);return i=i.slice(z_u),r$().open(i,f,t,this.seed)}}function nki(i){let u=i===Ht.Curve?32:32,t=r$().randomBytes(u),f=$6.encodeSeed(i,new Uint8Array(t));return i===Ht.Curve?new zki(new Uint8Array(t)):new Hki(f)}class b_u{publicKey;constructor(i){this.publicKey=i}getPublicKey(){if(!this.publicKey)throw new m0(V0.ClearedPair);return new TextDecoder().decode(this.publicKey)}getPrivateKey(){if(!this.publicKey)throw new m0(V0.ClearedPair);throw new m0(V0.PublicKeyOnly)}getSeed(){if(!this.publicKey)throw new m0(V0.ClearedPair);throw new m0(V0.PublicKeyOnly)}sign(i){if(!this.publicKey)throw new m0(V0.ClearedPair);throw new m0(V0.CannotSign)}verify(i,u){if(!this.publicKey)throw new m0(V0.ClearedPair);let t=$6._decode(this.publicKey);return r$().verify(i,u,t.slice(1))}clear(){if(!this.publicKey)return;this.publicKey.fill(0),this.publicKey=void 0}seal(i,u,t){throw new m0(V0.InvalidNKeyOperation)}open(i,u){throw new m0(V0.InvalidNKeyOperation)}}function Rki(i){let u=new TextEncoder().encode(i),t=$6._decode(u),f=hZ.parsePrefix(t[0]);if(hZ.isValidPublicPrefix(f))return new b_u(u);throw new m0(V0.InvalidPublicKey)}function uht(i){let u=$6.decodeSeed(i);if(u.prefix!==Ht.Curve)throw new m0(V0.InvalidCurveSeed);if(u.buf.byteLength!==32)throw new m0(V0.InvalidSeedLen);return new zki(u.buf)}function sb(i){if($6.decodeSeed(i).prefix===Ht.Curve)return uht(i);return new Hki(i)}function tht(i){if(i instanceof Uint8Array)i=new TextDecoder().decode(i);if(i.charAt(0)==="S")return sb(new TextEncoder().encode(i));return Rki(i)}function R7(i,u="",t=!1){let f=typeof i==="string"||i instanceof Uint8Array?tht(i):i,l=f.getPublicKey(),E=[];if(!Array.isArray(u)){if(u!=="")E.push(u)}else E.push(...u);if(u.length>0&&E.indexOf(l.charAt(0))===-1)throw Error(`unexpected type ${l.charAt(0)} - wanted ${E}`);if(t)f.getPrivateKey();return f}function fht(i={}){return C_u({data:-1,payload:-1,subs:-1},i)}function C_u(i,...u){for(let t=0;t<u.length;t++){let f=u[t];Object.assign(i,f)}return i}function bki(i){let{exp:u,nbf:t,aud:f}=i;return C_u({},{exp:u,nbf:t,aud:f})}function Cki(i={}){if(!i.algorithm)i.algorithm=sE.v2;return i}async function M_u(i,u,t={},f={}){u=R7(u,"O",!f.signer);let l=u;if(f.signer)l=R7(f.signer,["O"],!0);let E=bki(f);E.name=i,E.sub=u.getPublicKey(),E.nats=t;let c=Cki(f);return qki(c.algorithm,ab.Operator,E),await Vki(c.algorithm,E,l)}async function Mki(i,u,t={},f={}){u=R7(u,"A",!f.signer);let l=u;if(f.signer)l=R7(f.signer,["O","A"],!0);let E=bki(f);E.name=i,E.sub=u.getPublicKey(),E.nats=t;let c=Cki(f);return qki(c.algorithm,ab.Account,E),await Vki(c.algorithm,E,l)}async function Uui(i,u,t,f={},l={}){t=R7(t,"A",!l.signer);let E=t;if(l.signer)E=R7(l.signer,"A",!0);u=R7(u,"U");let c=bki(l);if(c.name=i,c.sub=u.getPublicKey(),c.nats=l.scopedUser?f:fht(f),l.signer)c.nats.issuer_account=t.getPublicKey();let w=Cki(l);return qki(w.algorithm,ab.User,c),await Vki(w.algorithm,c,E)}function qki(i,u,t){if(t.aud=t.aud||"NATS",i===sE.v2)t.nats.type=u;else t.type=u}function q_u(i){let u=i.split(".");if(u.length!==3)throw Error(`invalid jwt - ${u.length} chunks: ${i}`);let t=JSON.parse(vD.decode(u[0]));if(t.typ!=="jwt"&&t.typ!=="JWT")throw Error(`not a nats jwt - typ ${t.type}`);if(t.alg!==sE.v1&&t.alg!==sE.v2)throw Error(`not a nats jwt - alg ${t.alg}`);let f=JSON.parse(vD.decode(u[1])),l=R7(f.iss),E=vD.decode(u[2],!0),c=new TextEncoder,w=t.alg===sE.v2?`${u[0]}.${u[1]}`:u[1];if(!l.verify(c.encode(w),E))throw Error("sig verification failed");return f}function lht(i){for(let u=0;u<i.length;u++)i[u]=Math.floor(Math.random()*255)}function Eht(){let i=new Uint8Array(12);lht(i);let u=Array.from(i);return btoa(String.fromCharCode(...u))}async function Vki(i,u,t){u.iss=t.getPublicKey(),u.iat=Math.floor(Date.now()/1000);let f=u;if(i===sE.v2)f.nats.version=2;let l=new TextEncoder,E=l.encode(JSON.stringify(u));if(globalThis.crypto&&globalThis.crypto.subtle){let d=await globalThis.crypto.subtle.digest("SHA-512",E);u.jti=Zui.encode(new Uint8Array(d))}else u.jti=Eht();let c={typ:"JWT",alg:i},w=vD.encode(JSON.stringify(c)),$=vD.encode(JSON.stringify(u)),h=i===sE.v2?`${w}.${$}`:$,v=vD.encode(t.sign(l.encode(h)));return`${w}.${$}.${v}`}function Tui(i,u){let t=new TextDecoder().decode(u.getSeed()),f=`-----BEGIN NATS USER JWT-----
|
|
85
|
+
`}async function R5t(i){let u=i||process.env.SHELL?.split("/").pop()||"bash",t,f;switch(u){case"bash":{t=z5t(),f=J_u(K_u(),".local/share/bash-completion/completions/deco");break}case"zsh":{t=n5t(),f=J_u(K_u(),".zsh/completions/_deco");break}default:console.error(`Unsupported shell: ${u}`),console.log("Supported shells: bash, zsh"),process.exit(1)}if(H5t(X_u(f),{recursive:!0}),await Q5t(f,t,"utf8"),console.log(`Completion script installed to: ${f}`),console.log(""),u==="bash")console.log("To enable completions, add to your ~/.bashrc:"),console.log(` source "${f}"`);else console.log("To enable completions, add to your ~/.zshrc:"),console.log(` fpath=("${X_u(f)}" $fpath)`),console.log(" autoload -U compinit && compinit");console.log(""),console.log("Then restart your shell.")}var W_u=()=>{};import{homedir as b5t}from"os";function M5t(i){let u=(i??"").trim();return C5t.has(u)?u:"all"}function V5t(i){let u=(i??"").trim();return q5t.has(u)?u:"development"}function L_u(i,u,t){let f=i==="worker"?0:Math.floor(u*0.6);if(t===void 0||t==="")return f;let l=Number(t);return Number.isFinite(l)&&l>=0?l:f}function S_u(i){if(!i)return"[settings] ENCRYPTION_KEY is not set (using deterministic fallback, 32 chars) \u2014 set ENCRYPTION_KEY for production";return`[settings] ENCRYPTION_KEY is set (${i.length<=8?"***":`${i.slice(0,4)}..${i.slice(-4)}`}, ${i.length} chars)`}function cZ(i){return i==="true"||i==="1"}function r5t(i){if(i===void 0||i==="")return;return cZ(i)}function Q_u(i,u){if(u===void 0||u==="")return;let t=Number(u);if(!Number.isSafeInteger(t)||t<=0)throw Error(`${i} must be a positive integer`);return t}function n7(i,u,t){return Q_u(i,u)??t}function m5t(i,u){if(i===void 0||i==="")return u;return i==="true"||i==="1"}function eb(i){if(!i)return null;try{let t=new URL(i).hostname.replace(/^\[|\]$/g,"");if(t==="localhost"||t==="127.0.0.1"||t==="::1")return null;return i}catch{return null}}function Lki(i){return i===void 0||i===""||i==="true"||i==="1"}function mb(i,u){return i||u}function a5t(i){let u=(i??"").trim(),t=u.length>0?u:"user-desktop";if(t==="cluster")return"agent-sandbox";if(!e5t.has(t))throw Error(`Unknown STUDIO_SANDBOX_PROVIDER="${i}" \u2014 expected "agent-sandbox", legacy "cluster", or "user-desktop".`);return t}function Oui(i,u){let t=i.home||u.DATA_DIR||u.DECOCMS_HOME||`${b5t()}/deco`,f=i.localMode,l=i.nodeEnv||V5t(u.NODE_ENV),E=u.NATS_URL||"nats://localhost:4222",c=r5t(u.NATS_TUNNEL_PUBLIC_ENABLED)??!!u.NATS_PUBLIC_URL;return{settings:{nodeEnv:l,port:n7("PORT",i.port||u.PORT,3000),baseUrl:i.baseUrl||u.BASE_URL,publicUrl:mb(u.STUDIO_PUBLIC_URL,u.MESH_PUBLIC_URL),dataDir:t,databasePgSsl:cZ(u.DATABASE_PG_SSL),databasePoolMax:n7("DATABASE_POOL_MAX",u.DATABASE_POOL_MAX,5),dbosPoolSize:n7("DBOS_POOL_SIZE",u.DBOS_POOL_SIZE,5),betterAuthSecret:u.BETTER_AUTH_SECRET||"",encryptionKey:u.ENCRYPTION_KEY||"",studioJwtSecret:mb(u.STUDIO_JWT_SECRET,u.MESH_JWT_SECRET),localMode:f,disableRateLimit:cZ(u.DISABLE_RATE_LIMIT),studioProvisionSecretKey:u.STUDIO_PROVISION_SECRET_KEY,deploymentAdminEmails:(u.DEPLOYMENT_ADMIN_EMAILS??"").split(",").map(($)=>$.trim().toLowerCase()).filter(Boolean),clickhouseUrl:u.CLICKHOUSE_URL,clickhouseMaxMemoryUsage:Q_u("CLICKHOUSE_MAX_MEMORY_USAGE",u.CLICKHOUSE_MAX_MEMORY_USAGE),monitoringOtlpEndpoint:u.MONITORING_OTLP_ENDPOINT,otelServiceName:u.OTEL_SERVICE_NAME||"studio",natsPublicUrl:u.NATS_PUBLIC_URL,natsTunnelPublicEnabled:c,natsTunnelSessionTtlSeconds:n7("NATS_TUNNEL_SESSION_TTL_SECONDS",u.NATS_TUNNEL_SESSION_TTL_SECONDS,900),natsOperatorJwt:u.NATS_OPERATOR_JWT,natsAccountJwt:u.NATS_ACCOUNT_JWT,natsAccountSigningKey:u.NATS_ACCOUNT_SIGNING_KEY,natsCredsPath:u.NATS_CREDS,configPath:u.CONFIG_PATH||"./config.json",aiGatewayEnabled:cZ(u.DECO_AI_GATEWAY_ENABLED),aiGatewayUrl:u.DECO_AI_GATEWAY_URL||"https://ai-site.deco.site",aiGatewayAdminToken:u.DECO_AI_GATEWAY_ADMIN_TOKEN,seatAllowanceCents:n7("STUDIO_SEAT_ALLOWANCE_CENTS",u.STUDIO_SEAT_ALLOWANCE_CENTS,500),stripeWebhookSecret:u.STRIPE_WEBHOOK_SECRET,stripeSecretKey:u.STRIPE_SECRET_KEY,stripeSeatPriceId:u.STRIPE_SEAT_PRICE_ID,topupFeePercent:n7("STUDIO_TOPUP_FEE_PERCENT",u.STUDIO_TOPUP_FEE_PERCENT,15),enableDecoImport:cZ(u.ENABLE_DECO_IMPORT),billingEnforced:cZ(u.STUDIO_BILLING_ENFORCED),mcpCacheEnabled:m5t(u.MCP_CACHE_ENABLED,l!=="development"),orgFsPublicSetsJson:u.ORGFS_PUBLIC_SETS,orgFsMountsDisabled:cZ(u.DISABLE_ORGFS_MOUNTS),decopilotMaxConcurrentSubagents:n7("DECOPILOT_MAX_CONCURRENT_SUBAGENTS",u.DECOPILOT_MAX_CONCURRENT_SUBAGENTS,4),decopilotMaxConcurrentHostedRuns:n7("DECOPILOT_MAX_CONCURRENT_HOSTED_RUNS",u.DECOPILOT_MAX_CONCURRENT_HOSTED_RUNS,3),s3Endpoint:u.S3_ENDPOINT,s3Bucket:u.S3_BUCKET,s3Region:u.S3_REGION||"auto",s3AccessKeyId:u.S3_ACCESS_KEY_ID,s3SecretAccessKey:u.S3_SECRET_ACCESS_KEY,s3ForcePathStyle:Lki(u.S3_FORCE_PATH_STYLE),monitoringS3Bucket:u.MONITORING_S3_BUCKET,monitoringS3Endpoint:u.MONITORING_S3_ENDPOINT,monitoringS3Region:u.MONITORING_S3_REGION,monitoringS3AccessKeyId:u.MONITORING_S3_ACCESS_KEY_ID,monitoringS3SecretAccessKey:u.MONITORING_S3_SECRET_ACCESS_KEY,monitoringS3Prefix:u.MONITORING_S3_PREFIX,duckdbExtensionDirectory:u.DUCKDB_EXTENSION_DIRECTORY||"/opt/duckdb/extensions",duckdbMemoryLimit:u.DUCKDB_MEMORY_LIMIT||void 0,duckdbThreads:u.DUCKDB_THREADS?Number(u.DUCKDB_THREADS):void 0,isCli:!0,noTui:i.noTui===!0,podName:u.POD_NAME||crypto.randomUUID(),dispatchRole:M5t(mb(u.STUDIO_DISPATCH_ROLE,u.MESH_DISPATCH_ROLE)),sandboxProviderKind:a5t(u.STUDIO_SANDBOX_PROVIDER),decoSupabaseUrl:u.DECO_SUPABASE_URL,decoSupabaseServiceKey:u.DECO_SUPABASE_SERVICE_KEY,firecrawlApiKey:u.FIRECRAWL_API_KEY,reportsInternalApiUrl:mb(u.REPORTS_INTERNAL_API_URL,u.COMMERCE_DISCOVERY_INTERNAL_API_URL),reportsInternalApiKey:mb(u.REPORTS_INTERNAL_API_KEY,u.COMMERCE_DISCOVERY_INTERNAL_API_KEY),s3TenantBucket:u.S3_TENANT_BUCKET||"new-deco-sites-assets",s3TenantRegion:u.S3_TENANT_REGION||"us-west-2",s3TenantEndpoint:u.S3_TENANT_ENDPOINT,s3TenantPublicUrlBase:u.S3_TENANT_PUBLIC_URL_BASE||"https://decoims.com",awsS3TenantRoleArn:u.AWS_S3_TENANT_ROLE_ARN,awsS3TenantProvisionerAccessKeyId:u.AWS_S3_TENANT_PROVISIONER_ACCESS_KEY_ID,awsS3TenantProvisionerSecretAccessKey:u.AWS_S3_TENANT_PROVISIONER_SECRET_ACCESS_KEY},externalDatabaseUrl:eb(u.DATABASE_URL),externalNatsUrl:eb(E),skipMigrations:i.skipMigrations}}var C5t,q5t,e5t;var CW=O(()=>{C5t=new Set(["all","worker","api"]);q5t=new Set(["production","development","test"]);e5t=new Set(["agent-sandbox","user-desktop"])});function y0(i,u={}){let{signal:t}=u;if(t?.aborted)return Promise.reject(t.reason);return new Promise((f,l)=>{let E=()=>{clearTimeout(+w),l(t?.reason)},w=o5t(()=>{t?.removeEventListener("abort",E),f()},i);t?.addEventListener("abort",E,{once:!0})})}function o5t(i,u){if(u=Math.trunc(Math.max(u,0)||0),u<=Ski){let E=Number(setTimeout(i,u));return{valueOf:()=>E}}let t=Date.now(),f,l=()=>{let E=u-(Date.now()-t);f=E>Ski?Number(setTimeout(l,Ski)):Number(setTimeout(i,E))};return l(),{valueOf:()=>f}}var Ski=2147483647;function hE(i,u,t,f,l){let E=Math.min(i,u*f**t);return(1-l*Math.random())*E}async function F1(i,u){let{multiplier:t=2,maxTimeout:f=60000,maxAttempts:l=5,minTimeout:E=1000,jitter:c=1,isRetriable:w=()=>!0,signal:$}=u??{};if(!Number.isInteger(l)||l<1)throw RangeError(`Cannot retry as 'maxAttempts' must be a positive integer: current value is ${l}`);if(!Number.isFinite(t)||t<1)throw RangeError(`Cannot retry as 'multiplier' must be a finite number >= 1: current value is ${t}`);if(Number.isNaN(f)||f<=0)throw RangeError(`Cannot retry as 'maxTimeout' must be a positive number: current value is ${f}`);if(Number.isNaN(E)||E<0)throw RangeError(`Cannot retry as 'minTimeout' must be >= 0: current value is ${E}`);if(E>f)throw RangeError(`Cannot retry as 'minTimeout' must be <= 'maxTimeout': current values 'minTimeout=${E}', 'maxTimeout=${f}'`);if(Number.isNaN(c)||c<0||c>1)throw RangeError(`Cannot retry as 'jitter' must be between 0 and 1: current value is ${c}`);let h=0;while(!0){$?.throwIfAborted();try{return await i()}catch(v){if(!w(v))throw v;if(h+1>=l)throw new H6(v,l);let d=hE(f,E,h,t,c);await y0(d,$?{signal:$}:void 0)}h++}}var H6;var H_u=O(()=>{H6=class H6 extends Error{constructor(i,u){super(`Retrying exceeded the maxAttempts (${u}).`);this.name="RetryError",this.cause=i}}});var Z4=O(()=>{H_u()});class Zui{static encode(i){if(typeof i==="string")return btoa(i);let u=Array.from(i);return btoa(String.fromCharCode(...u))}static decode(i,u=!1){let t=atob(i);if(!u)return t;let f=new Uint8Array(t.length);for(let l=0;l<t.length;l++)f[l]=t.charCodeAt(l);return f}}class vD{static encode(i){return vD.toB64URLEncoding(Zui.encode(i))}static decode(i,u=!1){return Zui.decode(vD.fromB64URLEncoding(i),u)}static toB64URLEncoding(i){return i=i.replace(/=/g,""),i=i.replace(/\+/g,"-"),i.replace(/\//g,"_")}static fromB64URLEncoding(i){return i=i.replace(/_/g,"/"),i=i.replace(/-/g,"+"),i}}function p5t(i){n_u=i}function r$(){return n_u}class Bui{static encode(i){let u=0,t=0,f=new Uint8Array(i),l=new Uint8Array(i.byteLength*2),E=0;for(let c=0;c<f.byteLength;c++){t=t<<8|f[c],u+=8;while(u>=5){let w=t>>>u-5&31;l[E++]=Qki.charAt(w).charCodeAt(0),u-=5}}if(u>0){let c=t<<5-u&31;l[E++]=Qki.charAt(c).charCodeAt(0)}return l.slice(0,E)}static decode(i){let u=0,t=0,f=0,l=new Uint8Array(i),E=new Uint8Array(l.byteLength*5/8|0);for(let c=0;c<l.byteLength;c++){let w=String.fromCharCode(l[c]),$=Qki.indexOf(w);if($===-1)throw Error("Illegal Base32 character: "+l[c]);if(t=t<<5|$,u+=5,u>=8)E[f++]=t>>>u-8&255,u-=8}return E.slice(0,f)}}class ob{static checksum(i){let u=0;for(let t=0;t<i.byteLength;t++){let f=i[t];u=u<<8&65535^iht[(u>>8^f)&255]}return u}static validate(i,u){return ob.checksum(i)==u}}function R_u(){return nki(Ht.Operator)}function Fui(){return nki(Ht.Account)}function gui(){return nki(Ht.User)}class hZ{static isValidPublicPrefix(i){return i==Ht.Server||i==Ht.Operator||i==Ht.Cluster||i==Ht.Account||i==Ht.User||i==Ht.Curve}static startsWithValidPrefix(i){let u=i[0];return u=="S"||u=="P"||u=="O"||u=="N"||u=="C"||u=="A"||u=="U"||u=="X"}static isValidPrefix(i){return this.parsePrefix(i)!==Ht.Unknown}static parsePrefix(i){switch(i){case Ht.Seed:return Ht.Seed;case Ht.Private:return Ht.Private;case Ht.Operator:return Ht.Operator;case Ht.Server:return Ht.Server;case Ht.Cluster:return Ht.Cluster;case Ht.Account:return Ht.Account;case Ht.User:return Ht.User;case Ht.Curve:return Ht.Curve;default:return Ht.Unknown}}}class $6{static encode(i,u){if(!u||!(u instanceof Uint8Array))throw new m0(V0.SerializationError);if(!hZ.isValidPrefix(i))throw new m0(V0.InvalidPrefixByte);return $6._encode(!1,i,u)}static encodeSeed(i,u){if(!u)throw new m0(V0.ApiError);if(!hZ.isValidPublicPrefix(i))throw new m0(V0.InvalidPrefixByte);if(u.byteLength!==32)throw new m0(V0.InvalidSeedLen);return $6._encode(!0,i,u)}static decode(i,u){if(!hZ.isValidPrefix(i))throw new m0(V0.InvalidPrefixByte);let t=$6._decode(u);if(t[0]!==i)throw new m0(V0.InvalidPrefixByte);return t.slice(1)}static decodeSeed(i){let u=$6._decode(i),t=$6._decodePrefix(u);if(t[0]!=Ht.Seed)throw new m0(V0.InvalidSeed);if(!hZ.isValidPublicPrefix(t[1]))throw new m0(V0.InvalidPrefixByte);return{buf:u.slice(2),prefix:t[1]}}static _encode(i,u,t){let f=i?2:1,l=t.byteLength,E=f+l+2,c=f+l,w=new Uint8Array(E);if(i){let v=$6._encodePrefix(Ht.Seed,u);w.set(v)}else w[0]=u;w.set(t,f);let $=ob.checksum(w.slice(0,c));return new DataView(w.buffer).setUint16(c,$,!0),Bui.encode(w)}static _decode(i){if(i.byteLength<4)throw new m0(V0.InvalidEncoding);let u;try{u=Bui.decode(i)}catch(c){throw new m0(V0.InvalidEncoding,c)}let t=u.byteLength-2,l=new DataView(u.buffer).getUint16(t,!0),E=u.slice(0,t);if(!ob.validate(E,l))throw new m0(V0.InvalidChecksum);return E}static _encodePrefix(i,u){let t=i|u>>5,f=(u&31)<<3;return new Uint8Array([t,f])}static _decodePrefix(i){let u=i[0]&248,t=(i[0]&7)<<5|(i[1]&248)>>3;return new Uint8Array([u,t])}}class Hki{seed;constructor(i){this.seed=i}getRawSeed(){if(!this.seed)throw new m0(V0.ClearedPair);return $6.decodeSeed(this.seed).buf}getSeed(){if(!this.seed)throw new m0(V0.ClearedPair);return this.seed}getPublicKey(){if(!this.seed)throw new m0(V0.ClearedPair);let i=$6.decodeSeed(this.seed),u=r$().fromSeed(this.getRawSeed()),t=$6.encode(i.prefix,u.publicKey);return new TextDecoder().decode(t)}getPrivateKey(){if(!this.seed)throw new m0(V0.ClearedPair);let i=r$().fromSeed(this.getRawSeed());return $6.encode(Ht.Private,i.secretKey)}sign(i){if(!this.seed)throw new m0(V0.ClearedPair);let u=r$().fromSeed(this.getRawSeed());return r$().sign(i,u.secretKey)}verify(i,u){if(!this.seed)throw new m0(V0.ClearedPair);let t=r$().fromSeed(this.getRawSeed());return r$().verify(i,u,t.publicKey)}clear(){if(!this.seed)return;this.seed.fill(0),this.seed=void 0}seal(i,u,t){throw new m0(V0.InvalidNKeyOperation)}open(i,u){throw new m0(V0.InvalidNKeyOperation)}}class zki{seed;constructor(i){this.seed=i}clear(){if(!this.seed)return;this.seed.fill(0),this.seed=void 0}getPrivateKey(){if(!this.seed)throw new m0(V0.ClearedPair);return $6.encode(Ht.Private,this.seed)}getPublicKey(){if(!this.seed)throw new m0(V0.ClearedPair);let i=r$().scalarBaseMultiply(this.seed),u=$6.encode(Ht.Curve,i);return new TextDecoder().decode(u)}getSeed(){if(!this.seed)throw new m0(V0.ClearedPair);return $6.encodeSeed(Ht.Curve,this.seed)}sign(){throw new m0(V0.InvalidCurveOperation)}verify(){throw new m0(V0.InvalidCurveOperation)}decodePubCurveKey(i){try{let u=Bui.decode(new TextEncoder().encode(i));if(u.byteLength!==35)throw new m0(V0.InvalidCurveKey);if(u[0]!==Ht.Curve)throw new m0(V0.InvalidPublicKey);let t=u.byteLength-2,l=new DataView(u.buffer).getUint16(t,!0),E=u.slice(0,t);if(!ob.validate(E,l))throw new m0(V0.InvalidChecksum);return E.slice(1)}catch(u){throw new m0(V0.InvalidRecipient,u)}}seal(i,u,t){if(!this.seed)throw new m0(V0.ClearedPair);if(!t)t=r$().randomBytes(z_u);let f=this.decodePubCurveKey(u),l=new Uint8Array($Z.length+24);l.set($Z,0),l.set(t,$Z.length);let E=r$().seal(i,t,f,this.seed),c=new Uint8Array(l.length+E.length);return c.set(l),c.set(E,l.length),c}open(i,u){if(!this.seed)throw new m0(V0.ClearedPair);if(i.length<=24+$Z.length)throw new m0(V0.InvalidEncrypted);for(let l=0;l<$Z.length;l++)if(i[l]!==$Z[l])throw new m0(V0.InvalidEncrypted);let t=this.decodePubCurveKey(u);i=i.slice($Z.length);let f=i.slice(0,24);return i=i.slice(z_u),r$().open(i,f,t,this.seed)}}function nki(i){let u=i===Ht.Curve?32:32,t=r$().randomBytes(u),f=$6.encodeSeed(i,new Uint8Array(t));return i===Ht.Curve?new zki(new Uint8Array(t)):new Hki(f)}class b_u{publicKey;constructor(i){this.publicKey=i}getPublicKey(){if(!this.publicKey)throw new m0(V0.ClearedPair);return new TextDecoder().decode(this.publicKey)}getPrivateKey(){if(!this.publicKey)throw new m0(V0.ClearedPair);throw new m0(V0.PublicKeyOnly)}getSeed(){if(!this.publicKey)throw new m0(V0.ClearedPair);throw new m0(V0.PublicKeyOnly)}sign(i){if(!this.publicKey)throw new m0(V0.ClearedPair);throw new m0(V0.CannotSign)}verify(i,u){if(!this.publicKey)throw new m0(V0.ClearedPair);let t=$6._decode(this.publicKey);return r$().verify(i,u,t.slice(1))}clear(){if(!this.publicKey)return;this.publicKey.fill(0),this.publicKey=void 0}seal(i,u,t){throw new m0(V0.InvalidNKeyOperation)}open(i,u){throw new m0(V0.InvalidNKeyOperation)}}function Rki(i){let u=new TextEncoder().encode(i),t=$6._decode(u),f=hZ.parsePrefix(t[0]);if(hZ.isValidPublicPrefix(f))return new b_u(u);throw new m0(V0.InvalidPublicKey)}function uht(i){let u=$6.decodeSeed(i);if(u.prefix!==Ht.Curve)throw new m0(V0.InvalidCurveSeed);if(u.buf.byteLength!==32)throw new m0(V0.InvalidSeedLen);return new zki(u.buf)}function sb(i){if($6.decodeSeed(i).prefix===Ht.Curve)return uht(i);return new Hki(i)}function tht(i){if(i instanceof Uint8Array)i=new TextDecoder().decode(i);if(i.charAt(0)==="S")return sb(new TextEncoder().encode(i));return Rki(i)}function R7(i,u="",t=!1){let f=typeof i==="string"||i instanceof Uint8Array?tht(i):i,l=f.getPublicKey(),E=[];if(!Array.isArray(u)){if(u!=="")E.push(u)}else E.push(...u);if(u.length>0&&E.indexOf(l.charAt(0))===-1)throw Error(`unexpected type ${l.charAt(0)} - wanted ${E}`);if(t)f.getPrivateKey();return f}function fht(i={}){return C_u({data:-1,payload:-1,subs:-1},i)}function C_u(i,...u){for(let t=0;t<u.length;t++){let f=u[t];Object.assign(i,f)}return i}function bki(i){let{exp:u,nbf:t,aud:f}=i;return C_u({},{exp:u,nbf:t,aud:f})}function Cki(i={}){if(!i.algorithm)i.algorithm=sE.v2;return i}async function M_u(i,u,t={},f={}){u=R7(u,"O",!f.signer);let l=u;if(f.signer)l=R7(f.signer,["O"],!0);let E=bki(f);E.name=i,E.sub=u.getPublicKey(),E.nats=t;let c=Cki(f);return qki(c.algorithm,ab.Operator,E),await Vki(c.algorithm,E,l)}async function Mki(i,u,t={},f={}){u=R7(u,"A",!f.signer);let l=u;if(f.signer)l=R7(f.signer,["O","A"],!0);let E=bki(f);E.name=i,E.sub=u.getPublicKey(),E.nats=t;let c=Cki(f);return qki(c.algorithm,ab.Account,E),await Vki(c.algorithm,E,l)}async function Uui(i,u,t,f={},l={}){t=R7(t,"A",!l.signer);let E=t;if(l.signer)E=R7(l.signer,"A",!0);u=R7(u,"U");let c=bki(l);if(c.name=i,c.sub=u.getPublicKey(),c.nats=l.scopedUser?f:fht(f),l.signer)c.nats.issuer_account=t.getPublicKey();let w=Cki(l);return qki(w.algorithm,ab.User,c),await Vki(w.algorithm,c,E)}function qki(i,u,t){if(t.aud=t.aud||"NATS",i===sE.v2)t.nats.type=u;else t.type=u}function q_u(i){let u=i.split(".");if(u.length!==3)throw Error(`invalid jwt - ${u.length} chunks: ${i}`);let t=JSON.parse(vD.decode(u[0]));if(t.typ!=="jwt"&&t.typ!=="JWT")throw Error(`not a nats jwt - typ ${t.type}`);if(t.alg!==sE.v1&&t.alg!==sE.v2)throw Error(`not a nats jwt - alg ${t.alg}`);let f=JSON.parse(vD.decode(u[1])),l=R7(f.iss),E=vD.decode(u[2],!0),c=new TextEncoder,w=t.alg===sE.v2?`${u[0]}.${u[1]}`:u[1];if(!l.verify(c.encode(w),E))throw Error("sig verification failed");return f}function lht(i){for(let u=0;u<i.length;u++)i[u]=Math.floor(Math.random()*255)}function Eht(){let i=new Uint8Array(12);lht(i);let u=Array.from(i);return btoa(String.fromCharCode(...u))}async function Vki(i,u,t){u.iss=t.getPublicKey(),u.iat=Math.floor(Date.now()/1000);let f=u;if(i===sE.v2)f.nats.version=2;let l=new TextEncoder,E=l.encode(JSON.stringify(u));if(globalThis.crypto&&globalThis.crypto.subtle){let d=await globalThis.crypto.subtle.digest("SHA-512",E);u.jti=Zui.encode(new Uint8Array(d))}else u.jti=Eht();let c={typ:"JWT",alg:i},w=vD.encode(JSON.stringify(c)),$=vD.encode(JSON.stringify(u)),h=i===sE.v2?`${w}.${$}`:$,v=vD.encode(t.sign(l.encode(h)));return`${w}.${$}.${v}`}function Tui(i,u){let t=new TextDecoder().decode(u.getSeed()),f=`-----BEGIN NATS USER JWT-----
|
|
86
86
|
${i}
|
|
87
87
|
------END NATS USER JWT------
|
|
88
88
|
|
|
@@ -83458,7 +83458,7 @@ ${w}`;v(B);return}if(c(null,F),t.strategy==="count"){if($--,$===0)v()}if(t.strat
|
|
|
83458
83458
|
`);function v(d){if(t===void 0)return!0;let D=yq(d),_=D&&yq(t)?bau(t):t,N=D?bau(d):Cau(d),Z=crt(_,N);return Z===""||!Z.startsWith("..")&&!lrt(Z)}return{upsert(d){f.run({$handle:d.handle,$status:d.status,$sandboxPath:d.sandboxPath,$port:d.port??null,$previewUrl:d.previewUrl??null,$repoCloneUrl:d.repoCloneUrl??null,$branch:d.branch??null,$projectName:d.projectName??null,$error:d.error??null,$now:Date.now()})},list(){return l.all().map(E6i)},reconcile(){let d=Date.now();for(let D of l.all().map(E6i)){if(!v(D.sandboxPath)){E.run({$handle:D.handle,$now:d});continue}if(!yq(D.sandboxPath)){c.run({$handle:D.handle,$now:d});continue}if(D.status==="spawning"||D.status==="ready"||D.status==="failed"||D.status==="missing")w.run({$handle:D.handle,$now:d})}return l.all().map(E6i)},prune(d){let D=[],_=[],N=this.reconcile();for(let Z of N){if(!v(Z.sandboxPath)){_.push({handle:Z.handle,sandboxPath:Z.sandboxPath,reason:"outside_root",deletedFiles:!1});continue}if(d.missing&&Z.status==="missing"){$.run({$handle:Z.handle}),D.push({handle:Z.handle,sandboxPath:Z.sandboxPath,reason:"missing",deletedFiles:!1});continue}if(!d.merged||!yq(Z.sandboxPath))continue;if(Z.branch===null||Z.branch.trim()===""){_.push({handle:Z.handle,sandboxPath:Z.sandboxPath,reason:"no_branch",deletedFiles:!1});continue}if(!Y_(Z.sandboxPath,["rev-parse","--is-inside-work-tree"]).ok){_.push({handle:Z.handle,sandboxPath:Z.sandboxPath,reason:"git_unavailable",deletedFiles:!1});continue}let B=Y_(Z.sandboxPath,["status","--porcelain"]);if(!B.ok){_.push({handle:Z.handle,sandboxPath:Z.sandboxPath,reason:"git_unavailable",deletedFiles:!1});continue}if(B.stdout.trim()!==""){_.push({handle:Z.handle,sandboxPath:Z.sandboxPath,reason:"dirty_worktree",deletedFiles:!1});continue}let F=qau(Z.sandboxPath,Z.branch);if(F===null){_.push({handle:Z.handle,sandboxPath:Z.sandboxPath,reason:"git_unavailable",deletedFiles:!1});continue}if(!F){_.push({handle:Z.handle,sandboxPath:Z.sandboxPath,reason:"branch_not_merged",deletedFiles:!1});continue}trt(Z.sandboxPath,{recursive:!0,force:!0}),$.run({$handle:Z.handle}),D.push({handle:Z.handle,sandboxPath:Z.sandboxPath,reason:"merged",deletedFiles:!0})}return{removed:D,skipped:_}},delete(d){$.run({$handle:d})},inspect(d){let D=h.get({$handle:d});if(D===null)return null;let _=E6i(D),N=0,Z=null;if(yq(_.sandboxPath)&&Y_(_.sandboxPath,["rev-parse","--is-inside-work-tree"]).ok){let B=Y_(_.sandboxPath,["status","--porcelain"]);if(B.ok){let F=B.stdout.trim();N=F===""?0:F.split(`
|
|
83459
83459
|
`).length}if(_.branch!==null&&_.branch.trim()!=="")Z=qau(_.sandboxPath,_.branch)}return{handle:_.handle,branch:_.branch,sandboxPath:_.sandboxPath,dirtyCount:N,merged:Z}},close(){u.close()}}}var Ybi=()=>{};function vrt(i,u){return u?[["umount","-f",i]]:[["fusermount","-uz",i],["umount","-l",i]]}function rau(i,u){if(process.platform==="win32")return;for(let t of vrt(i,u))if(Bun.spawnSync(t,{stdout:"ignore",stderr:"ignore",timeout:5000}).exitCode===0)break}var mau=()=>{};import{existsSync as drt,readdirSync as Drt}from"fs";import{rm as _rt}from"fs/promises";import{join as eau}from"path";async function aau(i,u={}){let t=u.detach??Nrt,f=u.exists??drt,l=u.readdir??((w)=>Drt(w)),E=u.rm??((w)=>_rt(w,{recursive:!0,force:!0})),c=eau(i,"org");if(f(c))for(let w of l(c))t(eau(c,w));await E(i)}var Nrt=(i)=>rau(i,process.platform==="darwin");var oau=O(()=>{mau()});import{join as Ort}from"path";function sau(i){let u=i.purge??aau;return{stopSandbox(t){return i.provider.deleteSandbox(t)},inspectSandbox(t){return i.registry.inspect(t)},async removeSandbox(t){try{return await F1(async()=>{if(await i.provider.deleteSandbox(t),i.provider.hasHandle(t))throw Error("Can't delete \u2014 run in progress");let l=i.registry.inspect(t)?.sandboxPath??Ort(i.dataDir,"sandboxes",t);await u(l)},{maxAttempts:2,minTimeout:250,jitter:0}),i.registry.delete(t),{ok:!0}}catch(f){let l=f instanceof H6?f.cause:f;return{ok:!1,error:l instanceof Error?l.message:String(l)}}}}}var pau=O(()=>{Z4();oau()});import{randomBytes as Zrt}from"crypto";import{mkdir as Brt}from"fs/promises";import{createServer as Frt}from"net";import{join as grt}from"path";function iou(i,u){return Error(`sandbox failed to start: ${i}`,{cause:u})}function uou(i){if(!(i instanceof Error))return!1;return i.name==="TimeoutError"||/timed out|timeout|operation was aborted|aborted/i.test(i.message)}function tou(i){if(i instanceof Error){let u=i.cause;if(u instanceof Error&&u.message)return u.message;return i.message}return String(i)}function Urt(i){if(!i)return null;let u=i.trim().replace(/\/+$/,"");if(!u)return null;let t=u.split(/[/:]/).filter(Boolean).at(-1);if(!t)return null;return t.replace(/\.git$/i,"")||null}function Trt(i){return{repoCloneUrl:i.repo?.cloneUrl??null,branch:i.repo?.branch??null,projectName:Urt(i.repo?.cloneUrl)}}function fou(i){let u=i.maxSandboxes??20,t=new Map,f=i.pickPort??Art,l=i.fetchImpl??fetch,E=i.resolvePreviewUrl??((N,Z)=>`http://127.0.0.1:${Z}`),c=(N)=>grt(i.dataDir,"sandboxes",N),w=(N)=>{try{i.registry?.upsert(N)}catch(Z){console.warn(`[user-desktop] failed to persist sandbox lifecycle handle=${N.handle} status=${N.status}:`,Z)}},$=(N)=>{try{i.onEvent?.(N)}catch{}},h=async(N)=>{let Z=new AbortController,B=setTimeout(()=>Z.abort(),1500);try{let F=await l(`${N}/health`,{signal:Z.signal});if(!F.ok)console.warn(`[user-desktop] probe ${N}/health \u2192 ${F.status} (treating as dead)`);return F.ok}catch(F){return console.warn(`[user-desktop] probe ${N}/health failed: ${F instanceof Error?F.message:String(F)} (treating as dead)`),!1}finally{clearTimeout(B)}},v=(N)=>{console.warn(`[user-desktop] evicting dead daemon handle=${N.handle} port=${N.port}`);try{N.process.kill("SIGTERM")}catch{}if(t.get(N.handle)===N)t.delete(N.handle),w({handle:N.handle,status:"stopped",sandboxPath:c(N.handle),port:null,previewUrl:null,...N.registryMetadata,error:null}),$({handle:N.handle,phase:"evicted"})},d=new Map;function D(){if(t.size<u)return;let N=[...t.values()].filter((B)=>B.activeDispatchCount===0).sort((B,F)=>B.lastUsedAt-F.lastUsedAt);if(N.length===0){console.warn(`[user-desktop] at cap ${t.size}/${u} but every sandbox is pinned (active dispatch) \u2014 exceeding cap temporarily`);return}let Z=N[0];console.log(`[user-desktop] evicting LRU victim handle=${Z.handle} port=${Z.port} (cap ${u} reached, size=${t.size})`);try{Z.process.kill("SIGTERM")}catch{}t.delete(Z.handle),w({handle:Z.handle,status:"stopped",sandboxPath:c(Z.handle),port:null,previewUrl:null,...Z.registryMetadata,error:null}),$({handle:Z.handle,phase:"evicted"})}let _=async(N)=>{let Z=Trt(N),B=c(N.handle);w({handle:N.handle,status:"spawning",sandboxPath:B,port:null,previewUrl:null,...Z,error:null}),$({handle:N.handle,phase:"spawning",sandboxPath:B,projectName:Z.projectName,branch:Z.branch}),D();let F,g=null,U;try{await Brt(B,{recursive:!0}),console.log(`[user-desktop] ensure handle=${N.handle} repo=${N.repo?.cloneUrl??"(none)"} branch=${N.repo?.branch??"(none)"} runtime=${N.workload?.runtime??"(autodetect)"} pm=${N.workload?.packageManager??"(autodetect)"}`),U=Zrt(24).toString("hex");let[k,I]=await Promise.all([f(),f()]);F=k,console.log(`[user-desktop] spawn handle=${N.handle} port=${F} devPort=${I} workdir=${B}`),g=await Promise.resolve(i.spawnDaemon({workdir:B,handle:N.handle,port:F,daemonToken:U,offloadAllowedHosts:N.offloadAllowedHosts??[],offloadAllowSameHostDev:N.offloadAllowSameHostDev??!1,orgFsConfigJson:N.orgFsConfigJson}));try{await i.waitForHealth(F)}catch(j){throw iou("the sandbox didn't come online in time",j)}console.log(`[user-desktop] healthy handle=${N.handle} port=${F} \u2014 posting config`);try{await i.postConfig(F,I,{repo:N.repo,workload:N.workload,operator:N.operator},U)}catch(j){throw iou(uou(j)?"configuration timed out":"the sandbox rejected its configuration",j)}}catch(k){if((uou(k)?console.warn:console.error)(`[user-desktop] sandbox bring-up failed handle=${N.handle} port=${F??"(none)"}${g?" (killing daemon)":""}:`,k),g)try{g.kill("SIGKILL")}catch{}throw $({handle:N.handle,phase:"failed",error:tou(k),sandboxPath:B,projectName:Z.projectName,branch:Z.branch}),w({handle:N.handle,status:"failed",sandboxPath:B,port:null,previewUrl:null,...Z,error:tou(k)}),k}if(!g||F===void 0)throw Error("sandbox bring-up invariant violated");let T=`http://127.0.0.1:${F}`,A=E(N.handle,F);console.log(`[user-desktop] ready handle=${N.handle} port=${F} sandboxApiUrl=${T} previewUrl=${A}`);let G={handle:N.handle,port:F,process:g,sandboxApiUrl:T,previewUrl:A,lastUsedAt:Date.now(),activeDispatchCount:0,daemonToken:U,registryMetadata:Z};if(t.set(N.handle,G),w({handle:N.handle,status:"ready",sandboxPath:B,port:F,previewUrl:A,...Z,error:null}),$({handle:N.handle,phase:"ready",port:F,previewUrl:A,sandboxPath:B,projectName:Z.projectName,branch:Z.branch}),g.exited)g.exited.then(()=>{if(t.get(N.handle)===G)console.warn(`[user-desktop] daemon process exited unexpectedly handle=${N.handle} port=${F} \u2014 removing from cache`),t.delete(N.handle),w({handle:N.handle,status:"stopped",sandboxPath:B,port:null,previewUrl:null,...Z,error:null}),$({handle:N.handle,phase:"evicted"});else console.log(`[user-desktop] daemon process exited handle=${N.handle} port=${F} (already replaced/removed)`)});return{sandboxApiUrl:T,previewUrl:A,port:F}};return{async ensureSandbox(N){let Z=t.get(N.handle);if(Z){if(await h(Z.sandboxApiUrl))return console.log(`[user-desktop] cache hit handle=${N.handle} port=${Z.port} (alive)`),Z.lastUsedAt=Date.now(),{sandboxApiUrl:Z.sandboxApiUrl,previewUrl:Z.previewUrl,port:Z.port};console.warn(`[user-desktop] cache stale handle=${N.handle} port=${Z.port} \u2014 respawning`),v(Z)}let B=d.get(N.handle);if(B)return console.log(`[user-desktop] joining in-flight ensure handle=${N.handle}`),B;let F=_(N).finally(()=>{d.delete(N.handle)});return d.set(N.handle,F),F},proxyPort(N){let Z=t.get(N);if(Z)Z.lastUsedAt=Date.now();return Z?.port??null},getDaemonToken(N){return t.get(N)?.daemonToken??null},hasHandle(N){return t.has(N)||d.has(N)},recordHit(N){let Z=t.get(N);if(Z)Z.lastUsedAt=Date.now()},acquireDispatch(N){let Z=t.get(N);if(!Z)return()=>{};Z.activeDispatchCount+=1;let B=!1;return()=>{if(B)return;B=!0;let F=t.get(N);if(F)F.activeDispatchCount=Math.max(0,F.activeDispatchCount-1)}},listSandboxes(){return[...t.values()]},async deleteSandbox(N){let Z=t.get(N);if(!Z){console.log(`[user-desktop] delete handle=${N} (not found, no-op)`);return}if(Z.activeDispatchCount>0){console.warn(`[user-desktop] delete handle=${N} port=${Z.port} REFUSED \u2014 ${Z.activeDispatchCount} active dispatch(es) in flight`);return}console.log(`[user-desktop] delete handle=${N} port=${Z.port}`);try{Z.process.kill("SIGTERM")}catch{}t.delete(N),w({handle:N,status:"stopped",sandboxPath:c(N),port:null,previewUrl:null,repoCloneUrl:null,branch:null,projectName:null,error:null}),$({handle:N,phase:"deleted"})},async shutdown(){console.log(`[user-desktop] shutdown \u2014 killing ${t.size} sandbox(es)`);for(let N of t.values())try{N.process.kill("SIGTERM")}catch{}t.clear()}}}function Art(){return new Promise((i,u)=>{let t=Frt();t.unref(),t.on("error",u),t.listen(0,"127.0.0.1",()=>{let f=t.address();if(f&&typeof f==="object"){let l=f.port;t.close(()=>i(l))}else t.close(()=>u(Error("could not allocate port")))})})}var lou=()=>{};import{randomUUID as Prt}from"crypto";import{hostname as yrt}from"os";async function Eou(i){let u=yrt()||void 0;i.monitor?.onMachine?.(u??"this machine");let t=HMu(i.dataDir,{outFd:i.logFd,perSandboxLog:i.perSandboxLogs,hotReload:i.hotReload}),f=w6i({path:c6i(i.dataDir),managedSandboxRoot:`${i.dataDir}/sandboxes`}),l=!1,E=()=>{if(l)return;l=!0;try{f.close()}catch{}};try{let c=0,w=fou({dataDir:i.dataDir,registry:f,resolvePreviewUrl:(j,C)=>c>0?`http://${j}.localhost:${c}`:`http://127.0.0.1:${C}`,spawnDaemon:async(j)=>{let C={DAEMON_BOOT_ID:Prt(),APP_ROOT:j.workdir,PROXY_PORT:String(j.port),DAEMON_TOKEN:j.daemonToken,OFFLOAD_ALLOWED_HOSTS:j.offloadAllowedHosts.join(","),...j.offloadAllowSameHostDev?{OFFLOAD_ALLOW_SAME_HOST_DEV:"1"}:{}};if(j.orgFsConfigJson){let S=await bMu(i.dataDir);if(S)C.ORGFS_CONFIG=j.orgFsConfigJson,C.ORGFS_RCLONE_PATH=S}let K=await t({workdir:j.workdir,env:C,daemonPort:j.port});return{port:j.port,kill:(S)=>K.kill(S),exited:K.exited.then(()=>{return})}},postConfig:async(j,C,K,S)=>{let r={port:C};if(K.workload)r.runtime=K.workload.runtime,r.packageManager={name:K.workload.packageManager,...K.workload.packageManagerPath?{path:K.workload.packageManagerPath}:{}};let Q={application:r},ui=gh(K.operator??null);if(ui)Q.operator=ui;if(K.repo)Q.git={repository:{cloneUrl:K.repo.cloneUrl,branch:K.repo.branch,...K.repo.submoduleCredentials&&K.repo.submoduleCredentials.length>0?{submoduleCredentials:K.repo.submoduleCredentials}:{}},...K.repo.userName&&K.repo.userEmail?{identity:{userName:K.repo.userName,userEmail:K.repo.userEmail}}:{}};await A_(`http://127.0.0.1:${j}`,S,Q)},waitForHealth:async(j)=>{await Eli(`http://127.0.0.1:${j}`)},maxSandboxes:20,onEvent:i.monitor?.onEvent}),$=await Xau({port:i.port,lookupSandboxPort:(j)=>w.proxyPort(j)});c=$.port,console.log(`Local ingress listening on http://127.0.0.1:${$.port} (use http://<handle>.localhost:${$.port}/)`),i.monitor?.onIngress?.($.port);let h=MMu({provider:w}),v=async()=>{let j=await T_({dataDir:i.dataDir,target:i.clusterBaseUrl});if(!j)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 j.accessToken},d=await nau(i.dataDir),D=process.env.npm_package_version??"0.0.0",_=await Kbi(),N=Hau(_,{onChange:(j)=>{console.log(`[link-daemon] capabilities detected: +${j.join(",")} (now: ${_.join(",")})`)}}),Z=Tni({path:`${i.dataDir}/link/outbox.sqlite`});Z.clear();let B=()=>{},F=new AbortController,g={clusterBaseUrl:i.clusterBaseUrl,getAccessToken:v,provider:w,outbox:Z,controlHandler:h,capabilities:_,machineId:d,cliVersion:D,previewPort:$.port,onConnected:()=>{i.monitor?.onCluster?.("linked"),console.log(`Linked to ${i.clusterBaseUrl}`)},onShutdown:()=>B(),runLifetimeSignal:F.signal};console.log(`[link-daemon] transport=tunnel cluster=${i.clusterBaseUrl}`);let U=await Fau(g);console.log("[link-daemon] active transport=tunnel");let T,A=new Promise((j)=>{T=j}),G=!1,k=async()=>{if(G)return;G=!0,F.abort(),console.log(`
|
|
83460
83460
|
Shutting down\u2026`),N();try{await U.close()}catch{}try{await $.stop()}catch{}try{await w.shutdown()}catch{}try{Z.close()}catch{}E(),T(0)};process.on("SIGINT",()=>void k()),process.on("SIGTERM",()=>void k()),B=()=>{console.log("Disconnect requested from the Studio web UI \u2014 shutting down. Run `bunx decocms@latest link` to reconnect."),k()},U.closed.then(()=>{if(i.monitor?.onCluster?.("closed"),!G)console.error("Cluster connection closed permanently; exiting."),k()});let I=sau({provider:w,registry:f,dataDir:i.dataDir});return{stopped:A,stop:k,stopSandbox:I.stopSandbox,removeSandbox:I.removeSandbox,inspectSandbox:I.inspectSandbox}}catch(c){throw E(),c}}var cou=O(()=>{Nni();mM();zMu();CMu();qMu();Ani();gau();Jau();zau();Rau();rM();Ybi();pau();lou()});function Wbi(i){return i.map((u)=>typeof u==="string"?u:String(u)).join(" ")}import{createServer as Grt}from"net";async function xrt(i){for(let u of Irt)if(await Lbi(i,u))return u;return null}async function wou(i,{intervalMs:u=1000,sleepFn:t=y0}={}){for(;;){let f=await xrt(i);if(f)return f;await t(u)}}function Lbi(i,u){return new Promise((t)=>{let f=Grt();f.once("error",(l)=>{t(l.code==="EADDRINUSE")}),f.listen(i,u,()=>{f.close(()=>t(!1))})})}var Irt;var Sbi=O(()=>{Z4();Irt=["localhost","127.0.0.1","0.0.0.0"]});function $ou(i){return typeof i==="object"&&i!==null&&"code"in i&&i.code==="EADDRINUSE"}function krt(i,u=process.platform){if(u==="win32")return`for /f "tokens=5" %P in ('netstat -ano ^| findstr /R /C:":${i} .*LISTENING"') do taskkill /F /PID %P`;return`kill -9 $(lsof -ti tcp:${i})`}function hou(i,u=process.platform){return[`Port ${i} is already in use.`,"Run this command to stop the process listening on it, then retry `decocms link`:","",` ${krt(i,u)}`].join(`
|
|
83461
|
-
`)}var Qbi;var vou=O(()=>{Qbi=class Qbi extends Error{port;code="EADDRINUSE";constructor(i){super(`Port ${i} is already in use.`);this.port=i;this.name="PortInUseError"}}});var IS;var $6i=O(()=>{IS={name:"decocms",version:"4.152.0",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js",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","smoke:link":"bun run scripts/smoke-link.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@anthropic-ai/claude-agent-sdk":"^0.3.181","@duckdb/node-api":"^1.5.0-r.1","@openai/codex":"0.144.3","@openai/codex-darwin-arm64":"npm:@openai/codex@0.144.3-darwin-arm64","@openai/codex-darwin-x64":"npm:@openai/codex@0.144.3-darwin-x64","@openai/codex-linux-arm64":"npm:@openai/codex@0.144.3-linux-arm64","@openai/codex-linux-x64":"npm:@openai/codex@0.144.3-linux-x64","@openai/codex-win32-arm64":"npm:@openai/codex@0.144.3-win32-arm64","@openai/codex-win32-x64":"npm:@openai/codex@0.144.3-win32-x64"},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","@resvg/resvg-js":"^2.6.2","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","node-pty":"^1.0.0","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6",satori:"^0.28.2"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/harness":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@decocms/tunnel":"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",vite:"^7.2.1",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"}}});var Gq={};Pi(Gq,{printBanner:()=>Jrt,bannerLines:()=>dou,BANNER_LINES:()=>h6i,BANNER_GRADIENT:()=>v6i});function Xrt(i){let u=Number.parseInt(i.slice(1),16);return[u>>16&255,u>>8&255,u&255]}function dou(i){let u=h6i.map((t,f)=>{let[l,E,c]=Xrt(v6i[f]);return`\x1B[38;2;${l};${E};${c}m${t}\x1B[39m`});if(i!==void 0)u.push(`\x1B[2m v${i}\x1B[22m`);return u}function Jrt(i){console.log("");for(let u of dou(i))console.log(u);console.log("")}var h6i,v6i;var xS=O(()=>{h6i=[" \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 "],v6i=["#00ff64","#00ee5e","#00dc56","#00c84e","#00b444","#00a03c","#008832","#006e28"]});import{Box as Krt,Text as Dou}from"ink";import{jsx as Yrt,jsxs as _ou}from"react/jsx-runtime";function d6i({version:i}){return _ou(Krt,{flexDirection:"column",marginTop:1,children:[h6i.map((u,t)=>Yrt(Dou,{color:v6i[t],children:u},t)),_ou(Dou,{dimColor:!0,children:[" v",i]})]})}var Hbi=O(()=>{xS()});function Nou(i){let u=i.branch??i.handle,t=[];if(i.dirtyCount>0)t.push(`${i.dirtyCount} uncommitted file${i.dirtyCount===1?"":"s"}`);if(i.merged===!1)t.push("branch not merged");return t.length>0?`\u26A0 ${t.join(", ")} \u2014 delete ${u}? (y/n)`:`Delete ${u}? (y/n)`}function kS(i){return[...i.values()].map((u)=>u.handle).sort((u,t)=>u.localeCompare(t))}function Oou(i,u,t){if(i.length===0)return null;let f=u===null?-1:i.indexOf(u);if(f===-1)return t>0?i[0]:i[i.length-1];let l=Math.max(0,Math.min(i.length-1,f+t));return i[l]}function Zou(i,u,t){if(t!==u)return t;let f=i.indexOf(u);if(f===-1)return t;return i[f+1]??i[f-1]??null}var bbi={};Pi(bbi,{subscribeLinkState:()=>zbi,setSelectedHandle:()=>nbi,setRemoving:()=>N6i,setPersistedSandboxes:()=>Crt,setPendingConfirm:()=>xq,setMachine:()=>zrt,setLogPath:()=>Rrt,setLinkActions:()=>brt,setIngress:()=>Hrt,setDaemonError:()=>nrt,setClusterUrl:()=>Qrt,setCluster:()=>Srt,setActionError:()=>_6i,resetLinkStateForTests:()=>qrt,removeSandboxRow:()=>Rbi,pushSandboxEvent:()=>Mrt,getLinkState:()=>Iq,applySandboxEvent:()=>Bou});function Lrt(i){return i==="spawning"||i==="ready"||i==="failed"}function Bou(i,u){let t=new Map(i),f=t.get(u.handle);if(u.phase==="evicted"||u.phase==="deleted"){if(f)t.set(u.handle,{...f,port:null,previewUrl:null,status:"stopped",error:null});return t}return t.set(u.handle,{handle:u.handle,port:u.port??f?.port??null,previewUrl:u.previewUrl??f?.previewUrl??null,status:u.phase,error:u.phase==="failed"?u.error??"failed":null,projectName:u.projectName??f?.projectName??null,branch:u.branch??f?.branch??null,sandboxPath:u.sandboxPath??f?.sandboxPath??null}),t}function Fou(){return{cluster:"connecting",clusterUrl:null,ingressUrl:null,ingressPort:null,machine:null,cap:Wrt,sandboxes:new Map,daemonError:null,logPath:null,selectedHandle:null,pendingConfirm:null,removingHandles:new Set,actionError:null,actions:null}}function C3(){for(let i of D6i)i()}function Iq(){return Ef}function zbi(i){return D6i.add(i),()=>D6i.delete(i)}function Srt(i){Ef={...Ef,cluster:i},C3()}function Qrt(i){Ef={...Ef,clusterUrl:i},C3()}function Hrt(i,u){Ef={...Ef,ingressPort:i,ingressUrl:u},C3()}function zrt(i){Ef={...Ef,machine:i},C3()}function nrt(i){Ef={...Ef,daemonError:i},C3()}function Rrt(i){Ef={...Ef,logPath:i},C3()}function nbi(i){Ef={...Ef,selectedHandle:i},C3()}function xq(i){Ef={...Ef,pendingConfirm:i},C3()}function _6i(i){Ef={...Ef,actionError:i},C3()}function N6i(i,u){if(Ef.removingHandles.has(i)===u)return;let t=new Set(Ef.removingHandles);if(u)t.add(i);else t.delete(i);Ef={...Ef,removingHandles:t},C3()}function brt(i){Ef={...Ef,actions:i},C3()}function Rbi(i){let u=kS(Ef.sandboxes),t=Zou(u,i,Ef.selectedHandle),f=new Map(Ef.sandboxes);f.delete(i);let l=new Set(Ef.removingHandles);l.delete(i),Ef={...Ef,sandboxes:f,selectedHandle:t,pendingConfirm:null,removingHandles:l},C3()}function Crt(i){let u=new Map;for(let t of i)u.set(t.handle,{handle:t.handle,port:t.port,previewUrl:t.previewUrl,status:t.status,error:t.error,projectName:t.projectName,branch:t.branch,sandboxPath:t.sandboxPath});for(let[t,f]of Ef.sandboxes)if(Lrt(f.status))u.set(t,f);Ef={...Ef,sandboxes:u},C3()}function Mrt(i){Ef={...Ef,sandboxes:Bou(Ef.sandboxes,i)},C3()}function qrt(){Ef=Fou(),D6i.clear()}var Wrt=20,Ef,D6i;var kq=O(()=>{Ef=Fou(),D6i=new Set});import{spawn as Vrt}from"child_process";function rrt(i){if(i==="darwin")return"open";if(i==="win32")return"start";return"xdg-open"}function gou(i,u=process.platform){let t=rrt(u);try{Vrt(t,[i],{stdio:"ignore",detached:!0}).unref()}catch{}}var Uou=()=>{};function Tou(i,u={}){let t=u.openUrl??gou,f=Iq(),l=kS(f.sandboxes),E=f.selectedHandle!==null&&l.includes(f.selectedHandle)?f.selectedHandle:l[0]??null,c=f.actions;switch(i.type){case"move":nbi(Oou(l,f.selectedHandle,i.delta));return;case"open":{if(E===null)return;let w=f.sandboxes.get(E);if(w?.status==="ready"&&w.previewUrl)t(w.previewUrl);return}case"stop":if(E!==null&&c)c.stopSandbox(E);return;case"delete":{if(E===null||!c)return;let w=c.inspectSandbox(E),$=f.sandboxes.get(E);_6i(null),xq({handle:E,branch:w?.branch??$?.branch??null,dirtyCount:w?.dirtyCount??0,merged:w?.merged??null});return}case"confirmYes":{let w=f.pendingConfirm;if(xq(null),w===null||!c)return;N6i(w.handle,!0),c.removeSandbox(w.handle).then(($)=>{if($.ok)Rbi(w.handle);else N6i(w.handle,!1),_6i($.error)});return}case"confirmNo":xq(null);return;case"quit":if(c)c.quit();return}}var Aou=O(()=>{kq();Uou()});function Pou(i,u,t){if(t)return i==="y"||i==="Y"?{type:"confirmYes"}:{type:"confirmNo"};if(u.upArrow||i==="k")return{type:"move",delta:-1};if(u.downArrow||i==="j")return{type:"move",delta:1};if(i==="s")return{type:"stop"};if(i==="d")return{type:"delete"};if(i==="o")return{type:"open"};if(i==="q"||u.ctrl===!0&&i==="c")return{type:"quit"};return null}var you={};Pi(you,{LinkApp:()=>ort});import{Box as C1,Text as vl,useInput as mrt}from"ink";import{useSyncExternalStore as ert}from"react";import{jsx as Xf,jsxs as Xh}from"react/jsx-runtime";function art(i,u){if(u)return{color:"yellow",text:"\u25CC Removing\u2026"};if(i.status==="ready")return{color:"green",text:"\u25CF Live"};if(i.status==="spawning")return{color:"yellow",text:"\u25CC Starting\u2026"};if(i.status==="stopped")return{color:"gray",text:"\u25A0 Stopped"};if(i.status==="missing")return{color:"yellow",text:"\u25A1 Missing"};if(i.status==="merged")return{color:"cyan",text:"\u2713 Merged"};if(i.status==="invalid")return{color:"red",text:"\u2717 Invalid"};if(i.status==="failed")return{color:"red",text:`\u2717 Failed: ${i.error??"failed"}`};return{color:"red",text:`\u2717 Error: ${i.error??""}`}}function ort(){let i=ert(zbi,Iq),u=[...i.sandboxes.values()].sort((l,E)=>l.handle.localeCompare(E.handle)),t=kS(i.sandboxes),f=i.selectedHandle!==null&&t.includes(i.selectedHandle)?i.selectedHandle:t[0]??null;return mrt((l,E)=>{let c=Pou(l,E,i.pendingConfirm!==null);if(c!==null)Tou(c)}),Xh(C1,{flexDirection:"column",children:[Xf(d6i,{version:IS.version}),Xf(C1,{marginBottom:1,children:Xf(vl,{dimColor:!0,children:"\u2500".repeat(80)})}),Xf(C1,{children:i.cluster==="linked"?Xh(vl,{color:"green",children:["\u2713 Connected to ",i.clusterUrl??"deco"]}):i.cluster==="connecting"?Xh(vl,{color:"yellow",children:["\u25CC Connecting to ",i.clusterUrl??"deco","\u2026"]}):Xh(vl,{color:"red",children:["\u2717 Disconnected from ",i.clusterUrl??"deco"]})}),Xf(C1,{children:i.ingressUrl?Xh(vl,{color:"green",children:["\u2713 Serving at ",i.ingressUrl]}):Xf(vl,{dimColor:!0,children:"\u25CC Starting local server\u2026"})}),Xf(C1,{marginBottom:1,children:Xf(vl,{dimColor:!0,children:`${"Computer".padEnd(16)}${i.machine??"this computer"} \xB7 ${u.length} of ${i.cap} previews`})}),u.length===0?Xf(vl,{dimColor:!0,children:"No previews running yet."}):Xh(C1,{flexDirection:"column",children:[Xh(C1,{children:[Xf(C1,{width:2,flexShrink:0}),Xf(C1,{width:jS.project,flexShrink:0,marginRight:1,children:Xf(vl,{dimColor:!0,wrap:"truncate-end",children:"PROJECT"})}),Xf(C1,{width:jS.branch,flexShrink:0,marginRight:1,children:Xf(vl,{dimColor:!0,wrap:"truncate-end",children:"BRANCH"})}),Xf(C1,{width:jS.status,flexShrink:0,marginRight:1,children:Xf(vl,{dimColor:!0,wrap:"truncate-end",children:"STATUS"})}),Xf(C1,{flexGrow:1,children:Xf(vl,{dimColor:!0,wrap:"truncate-end",children:"PREVIEW URL"})})]}),u.map((l)=>{let E=art(l,i.removingHandles.has(l.handle)),c=l.handle===f;return Xh(C1,{children:[Xf(C1,{width:2,flexShrink:0,children:Xf(vl,{color:"cyan",children:c?"\u203A":" "})}),Xf(C1,{width:jS.project,flexShrink:0,marginRight:1,children:Xf(vl,{bold:c,wrap:"truncate-end",children:l.projectName??l.handle})}),Xf(C1,{width:jS.branch,flexShrink:0,marginRight:1,children:Xf(vl,{bold:c,wrap:"truncate-end",children:l.branch??"\u2014"})}),Xf(C1,{width:jS.status,flexShrink:0,marginRight:1,children:Xf(vl,{color:E.color,bold:c,wrap:"truncate-end",children:E.text})}),Xf(C1,{flexGrow:1,children:Xf(vl,{dimColor:!0,wrap:"truncate-end",children:l.previewUrl??"\u2014"})})]},l.handle)})]}),i.daemonError?Xf(C1,{marginTop:1,children:Xh(vl,{color:"red",children:["\u26A0 ",i.daemonError]})}):null,i.logPath?Xf(C1,{marginTop:1,children:Xh(vl,{dimColor:!0,children:["Logs: ",i.logPath]})}):null,i.pendingConfirm?Xf(C1,{marginTop:1,children:Xf(vl,{color:"yellow",children:Nou(i.pendingConfirm)})}):null,i.actionError?Xf(C1,{marginTop:1,children:Xh(vl,{color:"red",children:["\u2717 ",i.actionError]})}):null,Xf(C1,{marginTop:1,children:Xf(vl,{dimColor:!0,children:"\u2191\u2193 move \xB7 s stop \xB7 d delete \xB7 o open \xB7 q quit"})})]})}var jS;var Gou=O(()=>{$6i();Hbi();Aou();kq();jS={project:18,branch:22,status:14}});var Iou={};Pi(Iou,{runLinkCommand:()=>Emt});import{closeSync as srt,mkdirSync as prt,openSync as imt,writeSync as umt}from"fs";import{homedir as tmt}from"os";import{join as Cbi}from"path";function fmt(i,u){let t={log:console.log,warn:console.warn,error:console.error},f=(l)=>{if(u===void 0)return;try{umt(u,`${Wbi(l)}
|
|
83461
|
+
`)}var Qbi;var vou=O(()=>{Qbi=class Qbi extends Error{port;code="EADDRINUSE";constructor(i){super(`Port ${i} is already in use.`);this.port=i;this.name="PortInUseError"}}});var IS;var $6i=O(()=>{IS={name:"decocms",version:"4.152.2",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run 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","smoke:link":"bun run scripts/smoke-link.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@anthropic-ai/claude-agent-sdk":"^0.3.181","@duckdb/node-api":"^1.5.0-r.1","@openai/codex":"0.144.3","@openai/codex-darwin-arm64":"npm:@openai/codex@0.144.3-darwin-arm64","@openai/codex-darwin-x64":"npm:@openai/codex@0.144.3-darwin-x64","@openai/codex-linux-arm64":"npm:@openai/codex@0.144.3-linux-arm64","@openai/codex-linux-x64":"npm:@openai/codex@0.144.3-linux-x64","@openai/codex-win32-arm64":"npm:@openai/codex@0.144.3-win32-arm64","@openai/codex-win32-x64":"npm:@openai/codex@0.144.3-win32-x64"},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","@resvg/resvg-js":"^2.6.2","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","node-pty":"^1.0.0","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6",satori:"^0.28.2"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/harness":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@decocms/tunnel":"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",vite:"^7.2.1",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"}}});var Gq={};Pi(Gq,{printBanner:()=>Jrt,bannerLines:()=>dou,BANNER_LINES:()=>h6i,BANNER_GRADIENT:()=>v6i});function Xrt(i){let u=Number.parseInt(i.slice(1),16);return[u>>16&255,u>>8&255,u&255]}function dou(i){let u=h6i.map((t,f)=>{let[l,E,c]=Xrt(v6i[f]);return`\x1B[38;2;${l};${E};${c}m${t}\x1B[39m`});if(i!==void 0)u.push(`\x1B[2m v${i}\x1B[22m`);return u}function Jrt(i){console.log("");for(let u of dou(i))console.log(u);console.log("")}var h6i,v6i;var xS=O(()=>{h6i=[" \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 "],v6i=["#00ff64","#00ee5e","#00dc56","#00c84e","#00b444","#00a03c","#008832","#006e28"]});import{Box as Krt,Text as Dou}from"ink";import{jsx as Yrt,jsxs as _ou}from"react/jsx-runtime";function d6i({version:i}){return _ou(Krt,{flexDirection:"column",marginTop:1,children:[h6i.map((u,t)=>Yrt(Dou,{color:v6i[t],children:u},t)),_ou(Dou,{dimColor:!0,children:[" v",i]})]})}var Hbi=O(()=>{xS()});function Nou(i){let u=i.branch??i.handle,t=[];if(i.dirtyCount>0)t.push(`${i.dirtyCount} uncommitted file${i.dirtyCount===1?"":"s"}`);if(i.merged===!1)t.push("branch not merged");return t.length>0?`\u26A0 ${t.join(", ")} \u2014 delete ${u}? (y/n)`:`Delete ${u}? (y/n)`}function kS(i){return[...i.values()].map((u)=>u.handle).sort((u,t)=>u.localeCompare(t))}function Oou(i,u,t){if(i.length===0)return null;let f=u===null?-1:i.indexOf(u);if(f===-1)return t>0?i[0]:i[i.length-1];let l=Math.max(0,Math.min(i.length-1,f+t));return i[l]}function Zou(i,u,t){if(t!==u)return t;let f=i.indexOf(u);if(f===-1)return t;return i[f+1]??i[f-1]??null}var bbi={};Pi(bbi,{subscribeLinkState:()=>zbi,setSelectedHandle:()=>nbi,setRemoving:()=>N6i,setPersistedSandboxes:()=>Crt,setPendingConfirm:()=>xq,setMachine:()=>zrt,setLogPath:()=>Rrt,setLinkActions:()=>brt,setIngress:()=>Hrt,setDaemonError:()=>nrt,setClusterUrl:()=>Qrt,setCluster:()=>Srt,setActionError:()=>_6i,resetLinkStateForTests:()=>qrt,removeSandboxRow:()=>Rbi,pushSandboxEvent:()=>Mrt,getLinkState:()=>Iq,applySandboxEvent:()=>Bou});function Lrt(i){return i==="spawning"||i==="ready"||i==="failed"}function Bou(i,u){let t=new Map(i),f=t.get(u.handle);if(u.phase==="evicted"||u.phase==="deleted"){if(f)t.set(u.handle,{...f,port:null,previewUrl:null,status:"stopped",error:null});return t}return t.set(u.handle,{handle:u.handle,port:u.port??f?.port??null,previewUrl:u.previewUrl??f?.previewUrl??null,status:u.phase,error:u.phase==="failed"?u.error??"failed":null,projectName:u.projectName??f?.projectName??null,branch:u.branch??f?.branch??null,sandboxPath:u.sandboxPath??f?.sandboxPath??null}),t}function Fou(){return{cluster:"connecting",clusterUrl:null,ingressUrl:null,ingressPort:null,machine:null,cap:Wrt,sandboxes:new Map,daemonError:null,logPath:null,selectedHandle:null,pendingConfirm:null,removingHandles:new Set,actionError:null,actions:null}}function C3(){for(let i of D6i)i()}function Iq(){return Ef}function zbi(i){return D6i.add(i),()=>D6i.delete(i)}function Srt(i){Ef={...Ef,cluster:i},C3()}function Qrt(i){Ef={...Ef,clusterUrl:i},C3()}function Hrt(i,u){Ef={...Ef,ingressPort:i,ingressUrl:u},C3()}function zrt(i){Ef={...Ef,machine:i},C3()}function nrt(i){Ef={...Ef,daemonError:i},C3()}function Rrt(i){Ef={...Ef,logPath:i},C3()}function nbi(i){Ef={...Ef,selectedHandle:i},C3()}function xq(i){Ef={...Ef,pendingConfirm:i},C3()}function _6i(i){Ef={...Ef,actionError:i},C3()}function N6i(i,u){if(Ef.removingHandles.has(i)===u)return;let t=new Set(Ef.removingHandles);if(u)t.add(i);else t.delete(i);Ef={...Ef,removingHandles:t},C3()}function brt(i){Ef={...Ef,actions:i},C3()}function Rbi(i){let u=kS(Ef.sandboxes),t=Zou(u,i,Ef.selectedHandle),f=new Map(Ef.sandboxes);f.delete(i);let l=new Set(Ef.removingHandles);l.delete(i),Ef={...Ef,sandboxes:f,selectedHandle:t,pendingConfirm:null,removingHandles:l},C3()}function Crt(i){let u=new Map;for(let t of i)u.set(t.handle,{handle:t.handle,port:t.port,previewUrl:t.previewUrl,status:t.status,error:t.error,projectName:t.projectName,branch:t.branch,sandboxPath:t.sandboxPath});for(let[t,f]of Ef.sandboxes)if(Lrt(f.status))u.set(t,f);Ef={...Ef,sandboxes:u},C3()}function Mrt(i){Ef={...Ef,sandboxes:Bou(Ef.sandboxes,i)},C3()}function qrt(){Ef=Fou(),D6i.clear()}var Wrt=20,Ef,D6i;var kq=O(()=>{Ef=Fou(),D6i=new Set});import{spawn as Vrt}from"child_process";function rrt(i){if(i==="darwin")return"open";if(i==="win32")return"start";return"xdg-open"}function gou(i,u=process.platform){let t=rrt(u);try{Vrt(t,[i],{stdio:"ignore",detached:!0}).unref()}catch{}}var Uou=()=>{};function Tou(i,u={}){let t=u.openUrl??gou,f=Iq(),l=kS(f.sandboxes),E=f.selectedHandle!==null&&l.includes(f.selectedHandle)?f.selectedHandle:l[0]??null,c=f.actions;switch(i.type){case"move":nbi(Oou(l,f.selectedHandle,i.delta));return;case"open":{if(E===null)return;let w=f.sandboxes.get(E);if(w?.status==="ready"&&w.previewUrl)t(w.previewUrl);return}case"stop":if(E!==null&&c)c.stopSandbox(E);return;case"delete":{if(E===null||!c)return;let w=c.inspectSandbox(E),$=f.sandboxes.get(E);_6i(null),xq({handle:E,branch:w?.branch??$?.branch??null,dirtyCount:w?.dirtyCount??0,merged:w?.merged??null});return}case"confirmYes":{let w=f.pendingConfirm;if(xq(null),w===null||!c)return;N6i(w.handle,!0),c.removeSandbox(w.handle).then(($)=>{if($.ok)Rbi(w.handle);else N6i(w.handle,!1),_6i($.error)});return}case"confirmNo":xq(null);return;case"quit":if(c)c.quit();return}}var Aou=O(()=>{kq();Uou()});function Pou(i,u,t){if(t)return i==="y"||i==="Y"?{type:"confirmYes"}:{type:"confirmNo"};if(u.upArrow||i==="k")return{type:"move",delta:-1};if(u.downArrow||i==="j")return{type:"move",delta:1};if(i==="s")return{type:"stop"};if(i==="d")return{type:"delete"};if(i==="o")return{type:"open"};if(i==="q"||u.ctrl===!0&&i==="c")return{type:"quit"};return null}var you={};Pi(you,{LinkApp:()=>ort});import{Box as C1,Text as vl,useInput as mrt}from"ink";import{useSyncExternalStore as ert}from"react";import{jsx as Xf,jsxs as Xh}from"react/jsx-runtime";function art(i,u){if(u)return{color:"yellow",text:"\u25CC Removing\u2026"};if(i.status==="ready")return{color:"green",text:"\u25CF Live"};if(i.status==="spawning")return{color:"yellow",text:"\u25CC Starting\u2026"};if(i.status==="stopped")return{color:"gray",text:"\u25A0 Stopped"};if(i.status==="missing")return{color:"yellow",text:"\u25A1 Missing"};if(i.status==="merged")return{color:"cyan",text:"\u2713 Merged"};if(i.status==="invalid")return{color:"red",text:"\u2717 Invalid"};if(i.status==="failed")return{color:"red",text:`\u2717 Failed: ${i.error??"failed"}`};return{color:"red",text:`\u2717 Error: ${i.error??""}`}}function ort(){let i=ert(zbi,Iq),u=[...i.sandboxes.values()].sort((l,E)=>l.handle.localeCompare(E.handle)),t=kS(i.sandboxes),f=i.selectedHandle!==null&&t.includes(i.selectedHandle)?i.selectedHandle:t[0]??null;return mrt((l,E)=>{let c=Pou(l,E,i.pendingConfirm!==null);if(c!==null)Tou(c)}),Xh(C1,{flexDirection:"column",children:[Xf(d6i,{version:IS.version}),Xf(C1,{marginBottom:1,children:Xf(vl,{dimColor:!0,children:"\u2500".repeat(80)})}),Xf(C1,{children:i.cluster==="linked"?Xh(vl,{color:"green",children:["\u2713 Connected to ",i.clusterUrl??"deco"]}):i.cluster==="connecting"?Xh(vl,{color:"yellow",children:["\u25CC Connecting to ",i.clusterUrl??"deco","\u2026"]}):Xh(vl,{color:"red",children:["\u2717 Disconnected from ",i.clusterUrl??"deco"]})}),Xf(C1,{children:i.ingressUrl?Xh(vl,{color:"green",children:["\u2713 Serving at ",i.ingressUrl]}):Xf(vl,{dimColor:!0,children:"\u25CC Starting local server\u2026"})}),Xf(C1,{marginBottom:1,children:Xf(vl,{dimColor:!0,children:`${"Computer".padEnd(16)}${i.machine??"this computer"} \xB7 ${u.length} of ${i.cap} previews`})}),u.length===0?Xf(vl,{dimColor:!0,children:"No previews running yet."}):Xh(C1,{flexDirection:"column",children:[Xh(C1,{children:[Xf(C1,{width:2,flexShrink:0}),Xf(C1,{width:jS.project,flexShrink:0,marginRight:1,children:Xf(vl,{dimColor:!0,wrap:"truncate-end",children:"PROJECT"})}),Xf(C1,{width:jS.branch,flexShrink:0,marginRight:1,children:Xf(vl,{dimColor:!0,wrap:"truncate-end",children:"BRANCH"})}),Xf(C1,{width:jS.status,flexShrink:0,marginRight:1,children:Xf(vl,{dimColor:!0,wrap:"truncate-end",children:"STATUS"})}),Xf(C1,{flexGrow:1,children:Xf(vl,{dimColor:!0,wrap:"truncate-end",children:"PREVIEW URL"})})]}),u.map((l)=>{let E=art(l,i.removingHandles.has(l.handle)),c=l.handle===f;return Xh(C1,{children:[Xf(C1,{width:2,flexShrink:0,children:Xf(vl,{color:"cyan",children:c?"\u203A":" "})}),Xf(C1,{width:jS.project,flexShrink:0,marginRight:1,children:Xf(vl,{bold:c,wrap:"truncate-end",children:l.projectName??l.handle})}),Xf(C1,{width:jS.branch,flexShrink:0,marginRight:1,children:Xf(vl,{bold:c,wrap:"truncate-end",children:l.branch??"\u2014"})}),Xf(C1,{width:jS.status,flexShrink:0,marginRight:1,children:Xf(vl,{color:E.color,bold:c,wrap:"truncate-end",children:E.text})}),Xf(C1,{flexGrow:1,children:Xf(vl,{dimColor:!0,wrap:"truncate-end",children:l.previewUrl??"\u2014"})})]},l.handle)})]}),i.daemonError?Xf(C1,{marginTop:1,children:Xh(vl,{color:"red",children:["\u26A0 ",i.daemonError]})}):null,i.logPath?Xf(C1,{marginTop:1,children:Xh(vl,{dimColor:!0,children:["Logs: ",i.logPath]})}):null,i.pendingConfirm?Xf(C1,{marginTop:1,children:Xf(vl,{color:"yellow",children:Nou(i.pendingConfirm)})}):null,i.actionError?Xf(C1,{marginTop:1,children:Xh(vl,{color:"red",children:["\u2717 ",i.actionError]})}):null,Xf(C1,{marginTop:1,children:Xf(vl,{dimColor:!0,children:"\u2191\u2193 move \xB7 s stop \xB7 d delete \xB7 o open \xB7 q quit"})})]})}var jS;var Gou=O(()=>{$6i();Hbi();Aou();kq();jS={project:18,branch:22,status:14}});var Iou={};Pi(Iou,{runLinkCommand:()=>Emt});import{closeSync as srt,mkdirSync as prt,openSync as imt,writeSync as umt}from"fs";import{homedir as tmt}from"os";import{join as Cbi}from"path";function fmt(i,u){let t={log:console.log,warn:console.warn,error:console.error},f=(l)=>{if(u===void 0)return;try{umt(u,`${Wbi(l)}
|
|
83462
83462
|
`)}catch{}};return console.log=(...l)=>f(l),console.warn=(...l)=>f(l),console.error=(...l)=>{f(l),i(Wbi(l))},()=>{console.log=t.log,console.warn=t.warn,console.error=t.error}}async function lmt(i,u){let t;try{t=await fetch(`${i}/api/links/me`,{headers:{authorization:`Bearer ${u}`},signal:AbortSignal.timeout(1e4)})}catch{return}if(t.status===401||t.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 Emt(i={}){let u=i.port??5174,t=i.dataDir??process.env.DATA_DIR??process.env.DECOCMS_HOME??Cbi(tmt(),"deco"),f=i.clusterBaseUrl??process.env.STUDIO_CLUSTER_URL??process.env.MESH_CLUSTER_URL??"https://studio.decocms.com",l,E,c,w=()=>{if(c===void 0)return;try{c.close()}catch{}finally{c=void 0}};try{if(await Lbi(u,"127.0.0.1"))throw new Qbi(u);let $=Cbi(t,"sandboxes");c=w6i({path:c6i(t),managedSandboxRoot:$});let h=await uli({dataDir:t,intent:"Link",target:f});if(process.env.DECOCMS_LINK_MANAGED!=="1")await lmt(f,h.accessToken);let v=c.reconcile();if(i.prune){let N=c.prune({missing:!0,merged:!0});if(!i.tui)console.log(`Pruned local sandboxes: removed ${N.removed.length}, skipped ${N.skipped.length}.`);v=c.reconcile()}let d;if(i.tui){let{render:N}=await import("ink"),{createElement:Z}=await import("react"),{LinkApp:B}=await Promise.resolve().then(() => (Gou(),you)),{pushSandboxEvent:F,setCluster:g,setClusterUrl:U,setDaemonError:T,setIngress:A,setLogPath:G,setMachine:k,setPersistedSandboxes:I}=await Promise.resolve().then(() => (kq(),bbi));prt(t,{recursive:!0});let j=Cbi(t,"link.log");E=imt(j,"w"),G(j),I(v),U(f),g("connecting"),d={onEvent:(C)=>F(C),onIngress:(C)=>A(C,`http://127.0.0.1:${C}`),onCluster:(C)=>g(C),onMachine:(C)=>k(C)},l=fmt(T,E),N(Z(B),{patchConsole:!1})}else if(i.banner!==!1){let{printBanner:N}=await Promise.resolve().then(() => (xS(),Gq));N(i.version??"0.0.0")}w();let D=process.env.DECOCMS_LINK_MANAGED!=="1",_=await Eou({port:u,clusterBaseUrl:f,dataDir:t,session:h,monitor:d,logFd:E,perSandboxLogs:D,hotReload:i.hotReload});if(i.tui){let{setLinkActions:N}=await Promise.resolve().then(() => (kq(),bbi));N({stopSandbox:_.stopSandbox,removeSandbox:_.removeSandbox,inspectSandbox:_.inspectSandbox,quit:_.stop})}return await _.stopped}catch($){return l?.(),console.error($ou($)?hou(u):$ instanceof Error?$.message:String($)),1}finally{if(l?.(),E!==void 0)try{srt(E)}catch{}w()}}var xou=O(()=>{_ni();cou();Sbi();vou();Ybi()});var ebi={};Pi(ebi,{resolveDevLinkClusterUrl:()=>hmt,populateDevLinkToxiProxy:()=>You,isDevLinkToxiProxyEnabled:()=>$mt,ensureDevLinkToxiProxy:()=>Nmt,buildDevLinkToxiProxyConfig:()=>Jou,DEV_LINK_TOXIPROXY_SERVICE_NAME:()=>jou,DEV_LINK_TOXIPROXY_PROXY_NAME:()=>Xou});function $mt(i=process.env){return i.DECO_DEV_LINK_TOXIPROXY==="1"}function Mbi(i,u){if(!Number.isInteger(i)||i<1||i>65535)throw Error(`${u} must be an integer port in 1..65535`);return i}function Jou(i){let u=new URL(i.serverUrl);if(u.protocol!=="http:")throw Error("DECO_DEV_LINK_TOXIPROXY only supports http local Studio URLs");let t=Mbi(i.apiPort,"apiPort"),f=Mbi(i.listenPort,"listenPort");if(u.port.length===0)throw Error("serverUrl must include an explicit valid port");let l=Mbi(Number.parseInt(u.port,10),"upstreamPort"),E=`http://127.0.0.1:${l}`,c=`http://127.0.0.1:${f}`;return{serviceName:jou,proxyName:Xou,apiUrl:`http://127.0.0.1:${t}`,listen:`0.0.0.0:${f}`,upstream:`host.docker.internal:${l}`,publicTargetUrl:E,clusterUrl:c,logLine:`[dev-link-toxiproxy] ready: ${c} -> ${E}`}}function hmt(i){return i.toxiproxy?.clusterUrl??i.serverUrl}async function qbi(i,u,t){if(i.ok)return;let f=await i.text();throw Error(`ToxiProxy ${u} failed for ${t}: status=${i.status} statusText=${i.statusText} body=${f}`)}function mbi(i){if(i instanceof Error)return i.name==="Error"?i.message:`${i.name}: ${i.message}`;return String(i)}function Kou(i){if(!(i instanceof Error))return!1;if(i.name==="TimeoutError")return!0;return Kou(i.cause)}async function Vbi(i,u,t,f){try{return await i(t,f)}catch(l){throw Error(`ToxiProxy ${u} failed for ${t}: ${mbi(l)}`,{cause:l})}}async function You(i,u=fetch){let t=`${i.apiUrl}/reset`,f=await Vbi(u,"reset",t,{method:"POST"});await qbi(f,"reset",t);let l=`${i.apiUrl}/populate`,E=await Vbi(u,"populate",l,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify([{name:i.proxyName,listen:i.listen,upstream:i.upstream,enabled:!0}])});await qbi(E,"populate",l)}async function vmt(i,u){let t=`${i.apiUrl}/version`;try{await F1(async()=>{let f=await Vbi(u,"readiness check",t,{method:"GET",signal:AbortSignal.timeout(wmt)});await qbi(f,"readiness check",t)},{maxAttempts:cmt,minTimeout:kou,maxTimeout:kou,multiplier:1,jitter:0,isRetriable:(f)=>!Kou(f)})}catch(f){let l=f instanceof H6?f.cause:f;throw Error(`ToxiProxy API did not become ready at ${t}: ${mbi(l)}`,{cause:l})}}async function dmt(i){if(i===null)return"";return await new Response(i).text()}async function rbi(i,u={}){let t=["docker",...i].join(" "),f=(()=>{try{return Bun.spawn(["docker",...i],{stdout:"ignore",stderr:"pipe"})}catch(w){throw Error(`Docker command failed to start (${t}): ${mbi(w)}`,{cause:w})}})(),[l,E]=await Promise.all([f.exited,dmt(f.stderr)]);if(l===0||u.ignoreFailure===!0)return;let c=E.trim().length>0?`: ${E.trim()}`:"";throw Error(`Docker command failed (${t}) with exit ${l}${c}`)}async function Dmt(i,u){let t=`deco-dev-link-toxiproxy-${i}`;await rbi(["rm","-f",t],{ignoreFailure:!0}),await rbi(["run","--rm","-d","--name",t,"-p",`127.0.0.1:${i}:8474`,"-p",`127.0.0.1:${u}:${u}`,"ghcr.io/shopify/toxiproxy:2.12.0","-host=0.0.0.0"])}async function _mt(i,u){let t=`deco-dev-link-toxiproxy-${i}`;await rbi(["rm","-f",t],{ignoreFailure:!0})}async function Nmt(i){let u=Jou(i),t=i.startDaemon??Dmt,f=i.stopDaemon??(i.startDaemon===void 0?_mt:void 0);await t(i.apiPort,i.listenPort);let l=i.fetchImpl??fetch;try{await vmt(u,l),await You(u,l)}catch(E){if(f!==void 0)try{await f(i.apiPort,i.listenPort)}catch{}throw E}return{config:u,stop:async()=>{if(f!==void 0)await f(i.apiPort,i.listenPort)}}}var jou="ToxiProxy",Xou="dev_link_studio",cmt=20,kou=100,wmt=100;var abi=O(()=>{Z4()});var Wou={};Pi(Wou,{migrateBetterAuth:()=>obi});import{getMigrations as Omt}from"better-auth/db";import{sso as Zmt}from"@better-auth/sso";import{organization as Bmt}from"@decocms/better-auth/plugins";import{admin as Fmt,apiKey as gmt,jwt as Umt,magicLink as Tmt,mcp as Amt,openAPI as Pmt}from"better-auth/plugins";import{emailOTP as ymt}from"better-auth/plugins/email-otp";async function obi(i){let t={database:RM(i||B_()),plugins:[Bmt({dynamicAccessControl:{enabled:!0,enableCustomResources:!0}}),Fmt(),gmt(),Umt(),Pmt(),Amt({loginPage:"/login"}),Zmt(),Tmt({sendMagicLink:async()=>{}}),ymt({sendVerificationOTP:async()=>{}})]},{toBeAdded:f,toBeCreated:l,runMigrations:E}=await Omt(t);if(!f.length&&!l.length)return"up to date";return await E(),`${l.length+f.length} table(s) migrated`}var sbi=O(()=>{b6()});var pbi={};Pi(pbi,{up:()=>Gmt,down:()=>Imt});import{sql as Fd}from"kysely";async function Gmt(i){await i.schema.createTable("connections").addColumn("id","text",(u)=>u.primaryKey()).addColumn("organizationId","text",(u)=>u.notNull().references("organization.id").onDelete("cascade")).addColumn("createdById","text",(u)=>u.notNull().references("user.id").onDelete("cascade")).addColumn("name","text",(u)=>u.notNull()).addColumn("description","text").addColumn("icon","text").addColumn("appName","text").addColumn("appId","text").addColumn("connectionType","text",(u)=>u.notNull()).addColumn("connectionUrl","text",(u)=>u.notNull()).addColumn("connectionToken","text").addColumn("connectionHeaders","text").addColumn("oauthConfig","text").addColumn("metadata","text").addColumn("tools","text").addColumn("bindings","text").addColumn("status","text",(u)=>u.notNull().defaultTo("active")).addColumn("createdAt","text",(u)=>u.notNull().defaultTo(Fd`CURRENT_TIMESTAMP`)).addColumn("updatedAt","text",(u)=>u.notNull().defaultTo(Fd`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("api_keys").addColumn("id","text",(u)=>u.primaryKey()).addColumn("userId","text",(u)=>u.notNull().references("user.id").onDelete("cascade")).addColumn("name","text",(u)=>u.notNull()).addColumn("hashedKey","text",(u)=>u.notNull().unique()).addColumn("permissions","text",(u)=>u.notNull()).addColumn("expiresAt","text").addColumn("remaining","integer").addColumn("metadata","text").addColumn("createdAt","text",(u)=>u.notNull().defaultTo(Fd`CURRENT_TIMESTAMP`)).addColumn("updatedAt","text",(u)=>u.notNull().defaultTo(Fd`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("audit_logs").addColumn("id","text",(u)=>u.primaryKey()).addColumn("organizationId","text").addColumn("userId","text",(u)=>u.references("user.id").onDelete("set null")).addColumn("connectionId","text",(u)=>u.references("connections.id").onDelete("set null")).addColumn("toolName","text",(u)=>u.notNull()).addColumn("allowed","integer",(u)=>u.notNull()).addColumn("duration","integer").addColumn("timestamp","text",(u)=>u.notNull().defaultTo(Fd`CURRENT_TIMESTAMP`)).addColumn("requestMetadata","text").execute(),await i.schema.createTable("oauth_clients").addColumn("id","text",(u)=>u.primaryKey()).addColumn("clientId","text",(u)=>u.notNull().unique()).addColumn("clientSecret","text").addColumn("clientName","text",(u)=>u.notNull()).addColumn("redirectUris","text",(u)=>u.notNull()).addColumn("grantTypes","text",(u)=>u.notNull()).addColumn("scope","text").addColumn("clientUri","text").addColumn("logoUri","text").addColumn("createdAt","text",(u)=>u.notNull().defaultTo(Fd`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("oauth_authorization_codes").addColumn("code","text",(u)=>u.primaryKey()).addColumn("clientId","text",(u)=>u.notNull().references("oauth_clients.clientId").onDelete("cascade")).addColumn("userId","text",(u)=>u.notNull().references("user.id").onDelete("cascade")).addColumn("redirectUri","text",(u)=>u.notNull()).addColumn("scope","text").addColumn("codeChallenge","text").addColumn("codeChallengeMethod","text").addColumn("expiresAt","text",(u)=>u.notNull()).addColumn("createdAt","text",(u)=>u.notNull().defaultTo(Fd`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("oauth_refresh_tokens").addColumn("token","text",(u)=>u.primaryKey()).addColumn("clientId","text",(u)=>u.notNull().references("oauth_clients.clientId").onDelete("cascade")).addColumn("userId","text",(u)=>u.notNull().references("user.id").onDelete("cascade")).addColumn("scope","text").addColumn("expiresAt","text").addColumn("createdAt","text",(u)=>u.notNull().defaultTo(Fd`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("downstream_tokens").addColumn("id","text",(u)=>u.primaryKey()).addColumn("connectionId","text",(u)=>u.notNull().references("connections.id").onDelete("cascade")).addColumn("userId","text",(u)=>u.references("user.id").onDelete("cascade")).addColumn("accessToken","text",(u)=>u.notNull()).addColumn("refreshToken","text").addColumn("scope","text").addColumn("expiresAt","text").addColumn("createdAt","text",(u)=>u.notNull().defaultTo(Fd`CURRENT_TIMESTAMP`)).addColumn("updatedAt","text",(u)=>u.notNull().defaultTo(Fd`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 Imt(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 Lou=()=>{};var iCi={};Pi(iCi,{up:()=>xmt,down:()=>kmt});import{sql as Sou}from"kysely";async function xmt(i){await i.schema.createTable("organization_settings").addColumn("organizationId","text",(u)=>u.primaryKey().references("organization.id").onDelete("cascade")).addColumn("modelsBindingConnectionId","text",(u)=>u.references("connections.id").onDelete("set null")).addColumn("createdAt","text",(u)=>u.notNull().defaultTo(Sou`CURRENT_TIMESTAMP`)).addColumn("updatedAt","text",(u)=>u.notNull().defaultTo(Sou`CURRENT_TIMESTAMP`)).execute()}async function kmt(i){await i.schema.dropTable("organization_settings").execute()}var Qou=()=>{};var uCi={};Pi(uCi,{up:()=>jmt,down:()=>Xmt});async function jmt(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 Xmt(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 tCi={};Pi(tCi,{up:()=>Jmt,down:()=>Kmt});async function Jmt(i){await i.schema.createTable("organization_settings_new").addColumn("organizationId","text",(u)=>u.primaryKey().references("organization.id").onDelete("cascade")).addColumn("createdAt","text",(u)=>u.notNull()).addColumn("updatedAt","text",(u)=>u.notNull()).execute(),await i.insertInto("organization_settings_new").columns(["organizationId","createdAt","updatedAt"]).expression((u)=>u.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 Kmt(i){await i.schema.createTable("organization_settings_new").addColumn("organizationId","text",(u)=>u.primaryKey().references("organization.id").onDelete("cascade")).addColumn("modelsBindingConnectionId","text",(u)=>u.references("connections.id").onDelete("set null")).addColumn("createdAt","text",(u)=>u.notNull()).addColumn("updatedAt","text",(u)=>u.notNull()).execute(),await i.insertInto("organization_settings_new").columns(["organizationId","modelsBindingConnectionId","createdAt","updatedAt"]).expression((u)=>u.selectFrom("organization_settings").select(["organizationId",u.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 fCi={};Pi(fCi,{up:()=>Ymt,down:()=>Wmt});async function Ymt(i){await i.schema.alterTable("connections").addColumn("configuration_state","text").execute(),await i.schema.alterTable("connections").addColumn("configuration_scopes","text").execute()}async function Wmt(i){await i.schema.alterTable("connections").dropColumn("configuration_state").execute(),await i.schema.alterTable("connections").dropColumn("configuration_scopes").execute()}var lCi={};Pi(lCi,{up:()=>Smt,down:()=>Qmt});import{sql as Lmt}from"kysely";async function Smt(i){await i.schema.alterTable("organization_settings").addColumn("sidebar_items",Lmt`text`).execute()}async function Qmt(i){await i.schema.alterTable("organization_settings").dropColumn("sidebar_items").execute()}var Hou=()=>{};var ECi={};Pi(ECi,{up:()=>Hmt,down:()=>zmt});async function Hmt(i){await i.schema.createTable("monitoring_logs").addColumn("id","text",(u)=>u.primaryKey()).addColumn("organization_id","text",(u)=>u.notNull().references("organization.id").onDelete("cascade")).addColumn("connection_id","text",(u)=>u.notNull().references("connections.id").onDelete("cascade")).addColumn("connection_title","text",(u)=>u.notNull()).addColumn("tool_name","text",(u)=>u.notNull()).addColumn("input","text",(u)=>u.notNull()).addColumn("output","text",(u)=>u.notNull()).addColumn("is_error","integer",(u)=>u.notNull()).addColumn("error_message","text").addColumn("duration_ms","integer",(u)=>u.notNull()).addColumn("timestamp","text",(u)=>u.notNull()).addColumn("user_id","text").addColumn("request_id","text",(u)=>u.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 zmt(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 cCi={};Pi(cCi,{up:()=>nmt,down:()=>Rmt});import{sql as jq}from"kysely";async function nmt(i){await i.schema.createTable("events").addColumn("id","text",(u)=>u.primaryKey()).addColumn("organization_id","text",(u)=>u.notNull().references("organization.id").onDelete("cascade")).addColumn("type","text",(u)=>u.notNull()).addColumn("source","text",(u)=>u.notNull()).addColumn("specversion","text",(u)=>u.notNull().defaultTo("1.0")).addColumn("subject","text").addColumn("time","text",(u)=>u.notNull()).addColumn("datacontenttype","text",(u)=>u.notNull().defaultTo("application/json")).addColumn("dataschema","text").addColumn("data","text").addColumn("cron","varchar(255)").addColumn("status","text",(u)=>u.notNull().defaultTo("pending")).addColumn("attempts","integer",(u)=>u.notNull().defaultTo(0)).addColumn("last_error","text").addColumn("next_retry_at","text").addColumn("created_at","text",(u)=>u.notNull().defaultTo(jq`CURRENT_TIMESTAMP`)).addColumn("updated_at","text",(u)=>u.notNull().defaultTo(jq`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("event_subscriptions").addColumn("id","text",(u)=>u.primaryKey()).addColumn("organization_id","text",(u)=>u.notNull().references("organization.id").onDelete("cascade")).addColumn("connection_id","text",(u)=>u.notNull().references("connections.id").onDelete("cascade")).addColumn("publisher","text").addColumn("event_type","text",(u)=>u.notNull()).addColumn("filter","text").addColumn("enabled","integer",(u)=>u.notNull().defaultTo(1)).addColumn("created_at","text",(u)=>u.notNull().defaultTo(jq`CURRENT_TIMESTAMP`)).addColumn("updated_at","text",(u)=>u.notNull().defaultTo(jq`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("event_deliveries").addColumn("id","text",(u)=>u.primaryKey()).addColumn("event_id","text",(u)=>u.notNull()).addColumn("subscription_id","text",(u)=>u.notNull().references("event_subscriptions.id").onDelete("cascade")).addColumn("status","text",(u)=>u.notNull().defaultTo("pending")).addColumn("attempts","integer",(u)=>u.notNull().defaultTo(0)).addColumn("last_error","text").addColumn("delivered_at","text").addColumn("next_retry_at","text").addColumn("created_at","text",(u)=>u.notNull().defaultTo(jq`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 Rmt(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 zou=()=>{};var wCi={};Pi(wCi,{up:()=>Cmt,down:()=>Mmt});import{sql as bmt}from"kysely";async function Cmt(i){await i.schema.dropTable("audit_logs").ifExists().execute()}async function Mmt(i){await i.schema.createTable("audit_logs").ifNotExists().addColumn("id","text",(u)=>u.primaryKey()).addColumn("organizationId","text").addColumn("userId","text",(u)=>u.references("user.id").onDelete("set null")).addColumn("connectionId","text",(u)=>u.references("connections.id").onDelete("set null")).addColumn("toolName","text",(u)=>u.notNull()).addColumn("allowed","integer",(u)=>u.notNull()).addColumn("duration","integer").addColumn("timestamp","text",(u)=>u.notNull().defaultTo(bmt`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 nou=()=>{};var $Ci={};Pi($Ci,{up:()=>qmt,down:()=>Vmt});import{sql as O6i}from"kysely";async function qmt(i){await i.schema.createTable("gateways").addColumn("id","text",(u)=>u.primaryKey()).addColumn("organization_id","text",(u)=>u.notNull().references("organization.id").onDelete("cascade")).addColumn("title","text",(u)=>u.notNull()).addColumn("description","text").addColumn("tool_selection_strategy","text").addColumn("status","text",(u)=>u.notNull().defaultTo("active")).addColumn("is_default","integer",(u)=>u.notNull().defaultTo(0)).addColumn("created_at","text",(u)=>u.notNull().defaultTo(O6i`CURRENT_TIMESTAMP`)).addColumn("updated_at","text",(u)=>u.notNull().defaultTo(O6i`CURRENT_TIMESTAMP`)).addColumn("created_by","text",(u)=>u.notNull().references("user.id").onDelete("cascade")).addColumn("updated_by","text").execute(),await i.schema.createTable("gateway_connections").addColumn("id","text",(u)=>u.primaryKey()).addColumn("gateway_id","text",(u)=>u.notNull().references("gateways.id").onDelete("cascade")).addColumn("connection_id","text",(u)=>u.notNull().references("connections.id").onDelete("cascade")).addColumn("selected_tools","text").addColumn("created_at","text",(u)=>u.notNull().defaultTo(O6i`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 O6i`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 Vmt(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 Rou=()=>{};var hCi={};Pi(hCi,{up:()=>rmt,down:()=>mmt});async function rmt(i){await i.schema.alterTable("gateways").addColumn("icon","text").execute()}async function mmt(i){await i.schema.alterTable("gateways").dropColumn("icon").execute()}var vCi={};Pi(vCi,{up:()=>emt,down:()=>amt});import{sql as Z6i}from"kysely";async function emt(i){await i.schema.alterTable("gateways").addColumn("tool_selection_mode","text",(u)=>u.notNull().defaultTo("inclusion")).execute(),await Z6i`
|
|
83463
83463
|
UPDATE gateways
|
|
83464
83464
|
SET tool_selection_mode = CASE
|
package/dist/server/migrate.js
CHANGED
|
@@ -1053,7 +1053,7 @@ var $e=Object.defineProperty;var Xe=(t)=>t;function Qe(t,n){this[t]=Xe.bind(null
|
|
|
1053
1053
|
SELECT id, app_name, connection_url, title, slug
|
|
1054
1054
|
FROM connections
|
|
1055
1055
|
WHERE connection_type != 'VIRTUAL'
|
|
1056
|
-
`.execute(t),u=0;for(let _ of n.rows){let e=sy(_);if(e===_.slug)continue;await ye`UPDATE connections SET slug = ${e} WHERE id = ${_.id}`.execute(t),u++}if(u>0)console.log(`[152] repaired ${u} drifted connection slug(s)`)}async function vy(){}var Ui={};i(Ui,{up:()=>ly,down:()=>dy});import{sql as qy}from"kysely";async function ly(t){await qy`CREATE INDEX idx_tmp_latest_assistant_text ON thread_message_parts (thread_id, created_at DESC, id DESC) WHERE role = 'assistant' AND kind = 'text'`.execute(t)}async function dy(t){await t.schema.dropIndex("idx_tmp_latest_assistant_text").execute()}var by={"001-initial-schema":Kt,"002-organization-settings":ct,"003-connection-schema-align":pt,"004-remove-models-binding":zt,"005-connection-configuration":Pt,"006-add-views-to-settings":rt,"007-monitoring-logs":Ut,"008-event-bus":jt,"009-drop-audit-logs":Dt,"010-gateways":Jt,"011-gateway-icon":Lt,"012-gateway-tool-selection-mode":Rt,"013-monitoring-user-agent-gateway":Wt,"014-gateway-resources-prompts":kt,"015-monitoring-properties":$t,"016-downstream-token-client-info":Xt,"017-downstream-token-remove-userid":Qt,"018-drop-gateway-tool-selection-strategy":Zt,"019-remove-gateway-is-default":Ft,"020-enabled-plugins":Ht,"021-threads":Mt,"022-rename-gateway-to-virtual-mcp":Yt,"023-optimize-thread-indexes":ht,"024-consolidate-virtual-mcp":Bt,"025-add-monitoring-virtual-mcp-id":At,"026-restrict-child-connection-delete":St,"027-update-management-mcp-url":Gt,"028-update-management-mcp-to-self":gt,"029-add-updated-by-to-connections":st,"030-member-tags":Vt,"031-add-dependency-mode":vt,"032-projects":qt,"033-thread-status":lt,"034-monitoring-dashboards":dt,"035-project-connections":bt,"036-update-registry-url":tn,"037-ai-provider-keys":nn,"038-oauth-pkce-states":un,"039-automations":en,"040-replace-next-run-at-with-last-run-at":_n,"041-ai-provider-keys-unique-constraint":xn,"042-rename-mesh-mcp-to-cms-mcp":mn,"043-rename-cms-mcp-to-deco-cms":an,"044-drop-connections-tools-column":on,"045-thread-context-start-message":yn,"046-remove-object-storage-plugin":Cn,"047-add-next-run-at":Nn,"048-merge-projects-agents":En,"049-remove-org-admin-projects":wn,"050-durable-agent-runs":Kn,"051-org-sso":pn,"052-thread-agent-ids":zn,"053-registry-config":Pn,"054-connection-slug":Un,"055-spaces":jn,"056-automation-project-scope":Dn,"057-thread-virtual-mcp-id":Jn,"058-trigger-callback-tokens":Ln,"059-kv":Rn,"060-member-index":Wn,"061-downstream-token-connection-index":kn,"062-private-registry":$n,"063-event-subscriptions-enabled-boolean":Xn,"064-brand-context":Qn,"065-organization-domains":Zn,"066-brand-context-structured":Fn,"067-threads-metadata":Hn,"068-threads-branch":Mn,"069-sandbox-runner-state":Yn,"070-model-categories":hn,"071-default-home-agents":Bn,"072-ai-provider-key-preset-id":An,"073-backfill-basic-usage-roles":Sn,"074-sandbox-runner-state-handle-nonunique":On,"075-thread-inflight-async-jobs":Gn,"076-automations-drop-agent-json":In,"077-tier-only-model-selection":sn,"078-automation-tool-call-kind":Vn,"079-strip-legacy-freestyle-vm-map-entries":vn,"080-async-research-jobs":qn,"081-async-research-jobs-result-content":ln,"082-secrets":dn,"083-thread-run-locally":bn,"084-drop-host-sandbox-rows":tu,"085-rename-runner-kind":nu,"086-thread-pins-and-vm-map-rekey":uu,"087-fix-vm-map-rekey":iu,"088-purge-cli-activate-keys":eu,"089-rename-remote-user-to-desktop":_u,"090-automation-webhook-triggers":xu,"091-organization-domains-allow-multi":mu,"092-sandbox-naming-uniformization":au,"093-backfill-global-search-basic-usage":ou,"094-org-file-configs":Tu,"095-remove-automation-tool-call-kind":Cu,"096-org-file-configs-public-url-base":Nu,"097-drop-local-docker-sandbox-state":Eu,"098-thread-message-parts":wu,"099-run-fence":Ku,"100-link-transport":cu,"101-cancel-requested-at":pu,"102-observational-agent":zu,"103-revert-observational-agent":Pu,"104-agent-sandbox-provider-kind":Uu,"105-org-fs":ju,"106-automation-tools":Du,"107-org-fs-public-org":Ju,"108-automation-max-agent-steps":Lu,"109-thread-message-parts-per-message-seq":Ru,"110-backfill-ghs-token-expiry":Wu,"111-org-fs-thread-id":ku,"112-org-file-configs-credential-type":$u,"113-thread-failure-reason":Xu,"114-run-acked-seq":Qu,"115-thread-projected-seq":Zu,"116-org-sites":Fu,"117-org-file-configs-site-slug":Hu,"118-organization-domains-multi-verify":Mu,"119-organization-join-requests":Yu,"120-org-fs-read-public":hu,"121-org-fs-share-password":Bu,"122-split-web-research-tier":Ou,"123-connection-credential-vault":Gu,"124-drop-thread-projected-seq":Iu,"125-github-child-single-parent":gu,"126-task-board":Vu,"127-task-board-due-date":vu,"128-reports-only":qu,"129-task-board-assigned-by":lu,"130-task-board-thread-id":du,"131-task-board-thread-link-cascade":bu,"132-task-board-item-prs":ti,"133-dedupe-duplicate-members":ni,"134-drop-task-board-enabled":ui,"135-task-board-item-fk-cascade":ii,"136-task-board-import-idempotency":ei,"137-agent-sandbox-runner-state":_i,"138-agent-sandbox-sessions":xi,"139-organization-billing":mi,"140-seat-change-log":ai,"141-benefits-sync-pending":oi,"142-stripe-event-watermark":yi,"143-armed-report-url":Ti,"144-benefits-pending-index":Ci,"145-user-model-preferences":Ni,"146-organization-main-agent":fi,"147-drop-agent-sandbox-tables":Ei,"148-org-flags":wi,"149-task-board-item-sort-order":Ki,"150-task-board-activity":ci,"151-task-board-tags":zi,"152-repair-connection-slug":ri,"153-task-board-latest-assistant-part-index":Ui},ji=by;import{getMigrations as QT}from"better-auth/db";import{sso as ZT}from"@better-auth/sso";import{organization as FT}from"@decocms/better-auth/plugins";import{admin as HT,apiKey as MT,jwt as YT,magicLink as hT,mcp as BT,openAPI as AT}from"better-auth/plugins";import{emailOTP as ST}from"better-auth/plugins/email-otp";import{Kysely as JT,PostgresDialect as re}from"kysely";import{Pool as Ue}from"pg";import{homedir as tT}from"os";var nT=new Set(["all","worker","api"]);function uT(t){let n=(t??"").trim();return nT.has(n)?n:"all"}var iT=new Set(["production","development","test"]);function eT(t){let n=(t??"").trim();return iT.has(n)?n:"development"}function k(t){return t==="true"||t==="1"}function _T(t){if(t===void 0||t==="")return;return k(t)}function Ce(t,n){if(n===void 0||n==="")return;let u=Number(n);if(!Number.isSafeInteger(u)||u<=0)throw Error(`${t} must be a positive integer`);return u}function L(t,n,u){return Ce(t,n)??u}function xT(t,n){if(t===void 0||t==="")return n;return t==="true"||t==="1"}function Te(t){if(!t)return null;try{let u=new URL(t).hostname.replace(/^\[|\]$/g,"");if(u==="localhost"||u==="127.0.0.1"||u==="::1")return null;return t}catch{return null}}function mT(t){return t===void 0||t===""||t==="true"||t==="1"}function s(t,n){return t||n}var aT=new Set(["agent-sandbox","user-desktop"]);function oT(t){let n=(t??"").trim(),u=n.length>0?n:"user-desktop";if(u==="cluster")return"agent-sandbox";if(!aT.has(u))throw Error(`Unknown STUDIO_SANDBOX_PROVIDER="${t}" \u2014 expected "agent-sandbox", legacy "cluster", or "user-desktop".`);return u}function Ne(t,n){let u=t.home||n.DATA_DIR||n.DECOCMS_HOME||`${tT()}/deco`,_=t.localMode,e=t.nodeEnv||eT(n.NODE_ENV),x=n.NATS_URL||"nats://localhost:4222",a=_T(n.NATS_TUNNEL_PUBLIC_ENABLED)??!!n.NATS_PUBLIC_URL;return{settings:{nodeEnv:e,port:L("PORT",t.port||n.PORT,3000),baseUrl:t.baseUrl||n.BASE_URL,publicUrl:s(n.STUDIO_PUBLIC_URL,n.MESH_PUBLIC_URL),dataDir:u,databasePgSsl:k(n.DATABASE_PG_SSL),databasePoolMax:L("DATABASE_POOL_MAX",n.DATABASE_POOL_MAX,5),dbosPoolSize:L("DBOS_POOL_SIZE",n.DBOS_POOL_SIZE,5),betterAuthSecret:n.BETTER_AUTH_SECRET||"",encryptionKey:n.ENCRYPTION_KEY||"",studioJwtSecret:s(n.STUDIO_JWT_SECRET,n.MESH_JWT_SECRET),localMode:_,disableRateLimit:k(n.DISABLE_RATE_LIMIT),studioProvisionSecretKey:n.STUDIO_PROVISION_SECRET_KEY,deploymentAdminEmails:(n.DEPLOYMENT_ADMIN_EMAILS??"").split(",").map((o)=>o.trim().toLowerCase()).filter(Boolean),clickhouseUrl:n.CLICKHOUSE_URL,clickhouseMaxMemoryUsage:Ce("CLICKHOUSE_MAX_MEMORY_USAGE",n.CLICKHOUSE_MAX_MEMORY_USAGE),monitoringOtlpEndpoint:n.MONITORING_OTLP_ENDPOINT,otelServiceName:n.OTEL_SERVICE_NAME||"studio",natsPublicUrl:n.NATS_PUBLIC_URL,natsTunnelPublicEnabled:a,natsTunnelSessionTtlSeconds:L("NATS_TUNNEL_SESSION_TTL_SECONDS",n.NATS_TUNNEL_SESSION_TTL_SECONDS,900),natsOperatorJwt:n.NATS_OPERATOR_JWT,natsAccountJwt:n.NATS_ACCOUNT_JWT,natsAccountSigningKey:n.NATS_ACCOUNT_SIGNING_KEY,natsCredsPath:n.NATS_CREDS,configPath:n.CONFIG_PATH||"./config.json",aiGatewayEnabled:k(n.DECO_AI_GATEWAY_ENABLED),aiGatewayUrl:n.DECO_AI_GATEWAY_URL||"https://ai-site.deco.site",aiGatewayAdminToken:n.DECO_AI_GATEWAY_ADMIN_TOKEN,seatAllowanceCents:L("STUDIO_SEAT_ALLOWANCE_CENTS",n.STUDIO_SEAT_ALLOWANCE_CENTS,500),stripeWebhookSecret:n.STRIPE_WEBHOOK_SECRET,stripeSecretKey:n.STRIPE_SECRET_KEY,stripeSeatPriceId:n.STRIPE_SEAT_PRICE_ID,topupFeePercent:L("STUDIO_TOPUP_FEE_PERCENT",n.STUDIO_TOPUP_FEE_PERCENT,15),enableDecoImport:k(n.ENABLE_DECO_IMPORT),billingEnforced:k(n.STUDIO_BILLING_ENFORCED),mcpCacheEnabled:xT(n.MCP_CACHE_ENABLED,e!=="development"),orgFsPublicSetsJson:n.ORGFS_PUBLIC_SETS,orgFsMountsDisabled:k(n.DISABLE_ORGFS_MOUNTS),decopilotMaxConcurrentSubagents:L("DECOPILOT_MAX_CONCURRENT_SUBAGENTS",n.DECOPILOT_MAX_CONCURRENT_SUBAGENTS,4),decopilotMaxConcurrentHostedRuns:L("DECOPILOT_MAX_CONCURRENT_HOSTED_RUNS",n.DECOPILOT_MAX_CONCURRENT_HOSTED_RUNS,3),s3Endpoint:n.S3_ENDPOINT,s3Bucket:n.S3_BUCKET,s3Region:n.S3_REGION||"auto",s3AccessKeyId:n.S3_ACCESS_KEY_ID,s3SecretAccessKey:n.S3_SECRET_ACCESS_KEY,s3ForcePathStyle:mT(n.S3_FORCE_PATH_STYLE),monitoringS3Bucket:n.MONITORING_S3_BUCKET,monitoringS3Endpoint:n.MONITORING_S3_ENDPOINT,monitoringS3Region:n.MONITORING_S3_REGION,monitoringS3AccessKeyId:n.MONITORING_S3_ACCESS_KEY_ID,monitoringS3SecretAccessKey:n.MONITORING_S3_SECRET_ACCESS_KEY,monitoringS3Prefix:n.MONITORING_S3_PREFIX,duckdbExtensionDirectory:n.DUCKDB_EXTENSION_DIRECTORY||"/opt/duckdb/extensions",duckdbMemoryLimit:n.DUCKDB_MEMORY_LIMIT||void 0,duckdbThreads:n.DUCKDB_THREADS?Number(n.DUCKDB_THREADS):void 0,isCli:!0,noTui:t.noTui===!0,podName:n.POD_NAME??crypto.randomUUID(),dispatchRole:uT(s(n.STUDIO_DISPATCH_ROLE,n.MESH_DISPATCH_ROLE)),sandboxProviderKind:oT(n.STUDIO_SANDBOX_PROVIDER),decoSupabaseUrl:n.DECO_SUPABASE_URL,decoSupabaseServiceKey:n.DECO_SUPABASE_SERVICE_KEY,firecrawlApiKey:n.FIRECRAWL_API_KEY,reportsInternalApiUrl:s(n.REPORTS_INTERNAL_API_URL,n.COMMERCE_DISCOVERY_INTERNAL_API_URL),reportsInternalApiKey:s(n.REPORTS_INTERNAL_API_KEY,n.COMMERCE_DISCOVERY_INTERNAL_API_KEY),s3TenantBucket:n.S3_TENANT_BUCKET||"new-deco-sites-assets",s3TenantRegion:n.S3_TENANT_REGION||"us-west-2",s3TenantEndpoint:n.S3_TENANT_ENDPOINT,s3TenantPublicUrlBase:n.S3_TENANT_PUBLIC_URL_BASE||"https://decoims.com",awsS3TenantRoleArn:n.AWS_S3_TENANT_ROLE_ARN,awsS3TenantProvisionerAccessKeyId:n.AWS_S3_TENANT_PROVISIONER_ACCESS_KEY_ID,awsS3TenantProvisionerSecretAccessKey:n.AWS_S3_TENANT_PROVISIONER_SECRET_ACCESS_KEY},externalDatabaseUrl:Te(n.DATABASE_URL),externalNatsUrl:Te(x),skipMigrations:t.skipMigrations}}var Ct=null;function H(){if(!Ct)yT();return Ct}function yT(){if(Ct)return;let t={...process.env},n=Ne({port:t.PORT||"3000",home:t.DATA_DIR||t.DECOCMS_HOME||"",localMode:t.DECOCMS_LOCAL_MODE==="true",skipMigrations:!0,noTui:t.DECO_NO_TUI==="true",vitePort:t.VITE_PORT,baseUrl:t.BASE_URL},t);Ct=Object.freeze({...n.settings,databaseUrl:t.DATABASE_URL||"postgresql://postgres:postgres@localhost:5432/postgres",natsUrls:(t.NATS_URL||"nats://localhost:4222").split(",").map((u)=>u.trim()).filter(Boolean)})}import{createContextKey as wT,metrics as KT,propagation as _E,ROOT_CONTEXT as xE,SpanStatusCode as mE,trace as cT}from"@opentelemetry/api";import{logs as pT,SeverityNumber as Di}from"@opentelemetry/api-logs";import{OTLPLogExporter as yE}from"@opentelemetry/exporter-logs-otlp-proto";import{PrometheusExporter as zT}from"@opentelemetry/exporter-prometheus";import{OTLPTraceExporter as NE}from"@opentelemetry/exporter-trace-otlp-proto";import{RuntimeNodeInstrumentation as EE}from"@opentelemetry/instrumentation-runtime-node";import{context as dN,propagation as bN,SpanKind as tf,SpanStatusCode as nf}from"@opentelemetry/api";var ef=globalThis.fetch;import{ExportResultCode as wf}from"@opentelemetry/core";import{ExportResultCode as Nt}from"@opentelemetry/core";import{mkdir as TT,rename as CT,writeFile as NT}from"fs/promises";import{join as ft}from"path";class Et{bufferItems=[];bufferBytes=0;flushTimer=null;flushQueue=Promise.resolve();basePath;flushThreshold;maxBufferBytes;isShutdown=!1;knownDirs=new Set;partitionKey;constructor(t){this.basePath=t.basePath,this.flushThreshold=t.flushThreshold??1000,this.maxBufferBytes=t.maxBufferBytes??10485760,this.partitionKey=t.partitionKey;let n=t.flushIntervalMs??60000;if(n>0&&n<3600000){if(this.flushTimer=setInterval(()=>{this.flush().catch((u)=>{console.error("[NDJSONExporter] Timer flush failed:",u)})},n),this.flushTimer&&typeof this.flushTimer==="object"&&"unref"in this.flushTimer)this.flushTimer.unref()}}exportRows(t){if(this.isShutdown)return Promise.resolve({code:Nt.FAILED});for(let n of t){let u=JSON.stringify(n),_=this.partitionKey?this.partitionKey(n):"";this.bufferItems.push({partition:_,json:u}),this.bufferBytes+=Buffer.byteLength(u,"utf8")+1}if(this.bufferItems.length>=this.flushThreshold||this.bufferBytes>=this.maxBufferBytes)return this.flush().then(()=>({code:Nt.SUCCESS})).catch((n)=>{return console.error("[NDJSONExporter] Flush failed:",n),{code:Nt.FAILED}});return Promise.resolve({code:Nt.SUCCESS})}async shutdown(){if(this.isShutdown=!0,this.flushTimer)clearInterval(this.flushTimer),this.flushTimer=null;try{await this.flushQueue}catch{}if(this.bufferItems.length>0)await this.flush()}async forceFlush(){try{await this.flushQueue}catch{}if(this.bufferItems.length>0)await this.flush()}flush(){let n=this.flushQueue.catch(()=>{}).then(()=>this.doFlush());return this.flushQueue=n,n}async doFlush(){if(this.bufferItems.length===0)return;let t=this.bufferItems;this.bufferItems=[],this.bufferBytes=0;let n=new Map;for(let e of t){let x=n.get(e.partition);if(!x)x=[],n.set(e.partition,x);x.push(e.json)}let u=await Promise.allSettled(Array.from(n.entries()).map(([e,x])=>this.writeNDJSON(x,e).then(()=>e))),_=u.find((e)=>e.status==="rejected");if(_){let e=new Set;for(let a of u)if(a.status==="fulfilled")e.add(a.value);let x=t.filter((a)=>!e.has(a.partition));this.bufferItems=x.concat(this.bufferItems),this.bufferBytes=0;for(let a of this.bufferItems)this.bufferBytes+=Buffer.byteLength(a.json,"utf8")+1;throw _.reason}}async writeNDJSON(t,n){let u=new Date,_=[String(u.getUTCFullYear()),String(u.getUTCMonth()+1).padStart(2,"0"),String(u.getUTCDate()).padStart(2,"0"),String(u.getUTCHours()).padStart(2,"0")],e=n?ft(this.basePath,n,..._):ft(this.basePath,..._);if(!this.knownDirs.has(e))await TT(e,{recursive:!0,mode:448}),this.knownDirs.add(e);let x=`${crypto.randomUUID()}.ndjson`,a=ft(e,`.${x}.tmp`),m=ft(e,x),o=t.join(`
|
|
1056
|
+
`.execute(t),u=0;for(let _ of n.rows){let e=sy(_);if(e===_.slug)continue;await ye`UPDATE connections SET slug = ${e} WHERE id = ${_.id}`.execute(t),u++}if(u>0)console.log(`[152] repaired ${u} drifted connection slug(s)`)}async function vy(){}var Ui={};i(Ui,{up:()=>ly,down:()=>dy});import{sql as qy}from"kysely";async function ly(t){await qy`CREATE INDEX idx_tmp_latest_assistant_text ON thread_message_parts (thread_id, created_at DESC, id DESC) WHERE role = 'assistant' AND kind = 'text'`.execute(t)}async function dy(t){await t.schema.dropIndex("idx_tmp_latest_assistant_text").execute()}var by={"001-initial-schema":Kt,"002-organization-settings":ct,"003-connection-schema-align":pt,"004-remove-models-binding":zt,"005-connection-configuration":Pt,"006-add-views-to-settings":rt,"007-monitoring-logs":Ut,"008-event-bus":jt,"009-drop-audit-logs":Dt,"010-gateways":Jt,"011-gateway-icon":Lt,"012-gateway-tool-selection-mode":Rt,"013-monitoring-user-agent-gateway":Wt,"014-gateway-resources-prompts":kt,"015-monitoring-properties":$t,"016-downstream-token-client-info":Xt,"017-downstream-token-remove-userid":Qt,"018-drop-gateway-tool-selection-strategy":Zt,"019-remove-gateway-is-default":Ft,"020-enabled-plugins":Ht,"021-threads":Mt,"022-rename-gateway-to-virtual-mcp":Yt,"023-optimize-thread-indexes":ht,"024-consolidate-virtual-mcp":Bt,"025-add-monitoring-virtual-mcp-id":At,"026-restrict-child-connection-delete":St,"027-update-management-mcp-url":Gt,"028-update-management-mcp-to-self":gt,"029-add-updated-by-to-connections":st,"030-member-tags":Vt,"031-add-dependency-mode":vt,"032-projects":qt,"033-thread-status":lt,"034-monitoring-dashboards":dt,"035-project-connections":bt,"036-update-registry-url":tn,"037-ai-provider-keys":nn,"038-oauth-pkce-states":un,"039-automations":en,"040-replace-next-run-at-with-last-run-at":_n,"041-ai-provider-keys-unique-constraint":xn,"042-rename-mesh-mcp-to-cms-mcp":mn,"043-rename-cms-mcp-to-deco-cms":an,"044-drop-connections-tools-column":on,"045-thread-context-start-message":yn,"046-remove-object-storage-plugin":Cn,"047-add-next-run-at":Nn,"048-merge-projects-agents":En,"049-remove-org-admin-projects":wn,"050-durable-agent-runs":Kn,"051-org-sso":pn,"052-thread-agent-ids":zn,"053-registry-config":Pn,"054-connection-slug":Un,"055-spaces":jn,"056-automation-project-scope":Dn,"057-thread-virtual-mcp-id":Jn,"058-trigger-callback-tokens":Ln,"059-kv":Rn,"060-member-index":Wn,"061-downstream-token-connection-index":kn,"062-private-registry":$n,"063-event-subscriptions-enabled-boolean":Xn,"064-brand-context":Qn,"065-organization-domains":Zn,"066-brand-context-structured":Fn,"067-threads-metadata":Hn,"068-threads-branch":Mn,"069-sandbox-runner-state":Yn,"070-model-categories":hn,"071-default-home-agents":Bn,"072-ai-provider-key-preset-id":An,"073-backfill-basic-usage-roles":Sn,"074-sandbox-runner-state-handle-nonunique":On,"075-thread-inflight-async-jobs":Gn,"076-automations-drop-agent-json":In,"077-tier-only-model-selection":sn,"078-automation-tool-call-kind":Vn,"079-strip-legacy-freestyle-vm-map-entries":vn,"080-async-research-jobs":qn,"081-async-research-jobs-result-content":ln,"082-secrets":dn,"083-thread-run-locally":bn,"084-drop-host-sandbox-rows":tu,"085-rename-runner-kind":nu,"086-thread-pins-and-vm-map-rekey":uu,"087-fix-vm-map-rekey":iu,"088-purge-cli-activate-keys":eu,"089-rename-remote-user-to-desktop":_u,"090-automation-webhook-triggers":xu,"091-organization-domains-allow-multi":mu,"092-sandbox-naming-uniformization":au,"093-backfill-global-search-basic-usage":ou,"094-org-file-configs":Tu,"095-remove-automation-tool-call-kind":Cu,"096-org-file-configs-public-url-base":Nu,"097-drop-local-docker-sandbox-state":Eu,"098-thread-message-parts":wu,"099-run-fence":Ku,"100-link-transport":cu,"101-cancel-requested-at":pu,"102-observational-agent":zu,"103-revert-observational-agent":Pu,"104-agent-sandbox-provider-kind":Uu,"105-org-fs":ju,"106-automation-tools":Du,"107-org-fs-public-org":Ju,"108-automation-max-agent-steps":Lu,"109-thread-message-parts-per-message-seq":Ru,"110-backfill-ghs-token-expiry":Wu,"111-org-fs-thread-id":ku,"112-org-file-configs-credential-type":$u,"113-thread-failure-reason":Xu,"114-run-acked-seq":Qu,"115-thread-projected-seq":Zu,"116-org-sites":Fu,"117-org-file-configs-site-slug":Hu,"118-organization-domains-multi-verify":Mu,"119-organization-join-requests":Yu,"120-org-fs-read-public":hu,"121-org-fs-share-password":Bu,"122-split-web-research-tier":Ou,"123-connection-credential-vault":Gu,"124-drop-thread-projected-seq":Iu,"125-github-child-single-parent":gu,"126-task-board":Vu,"127-task-board-due-date":vu,"128-reports-only":qu,"129-task-board-assigned-by":lu,"130-task-board-thread-id":du,"131-task-board-thread-link-cascade":bu,"132-task-board-item-prs":ti,"133-dedupe-duplicate-members":ni,"134-drop-task-board-enabled":ui,"135-task-board-item-fk-cascade":ii,"136-task-board-import-idempotency":ei,"137-agent-sandbox-runner-state":_i,"138-agent-sandbox-sessions":xi,"139-organization-billing":mi,"140-seat-change-log":ai,"141-benefits-sync-pending":oi,"142-stripe-event-watermark":yi,"143-armed-report-url":Ti,"144-benefits-pending-index":Ci,"145-user-model-preferences":Ni,"146-organization-main-agent":fi,"147-drop-agent-sandbox-tables":Ei,"148-org-flags":wi,"149-task-board-item-sort-order":Ki,"150-task-board-activity":ci,"151-task-board-tags":zi,"152-repair-connection-slug":ri,"153-task-board-latest-assistant-part-index":Ui},ji=by;import{getMigrations as QT}from"better-auth/db";import{sso as ZT}from"@better-auth/sso";import{organization as FT}from"@decocms/better-auth/plugins";import{admin as HT,apiKey as MT,jwt as YT,magicLink as hT,mcp as BT,openAPI as AT}from"better-auth/plugins";import{emailOTP as ST}from"better-auth/plugins/email-otp";import{Kysely as JT,PostgresDialect as re}from"kysely";import{Pool as Ue}from"pg";import{homedir as tT}from"os";var nT=new Set(["all","worker","api"]);function uT(t){let n=(t??"").trim();return nT.has(n)?n:"all"}var iT=new Set(["production","development","test"]);function eT(t){let n=(t??"").trim();return iT.has(n)?n:"development"}function k(t){return t==="true"||t==="1"}function _T(t){if(t===void 0||t==="")return;return k(t)}function Ce(t,n){if(n===void 0||n==="")return;let u=Number(n);if(!Number.isSafeInteger(u)||u<=0)throw Error(`${t} must be a positive integer`);return u}function L(t,n,u){return Ce(t,n)??u}function xT(t,n){if(t===void 0||t==="")return n;return t==="true"||t==="1"}function Te(t){if(!t)return null;try{let u=new URL(t).hostname.replace(/^\[|\]$/g,"");if(u==="localhost"||u==="127.0.0.1"||u==="::1")return null;return t}catch{return null}}function mT(t){return t===void 0||t===""||t==="true"||t==="1"}function s(t,n){return t||n}var aT=new Set(["agent-sandbox","user-desktop"]);function oT(t){let n=(t??"").trim(),u=n.length>0?n:"user-desktop";if(u==="cluster")return"agent-sandbox";if(!aT.has(u))throw Error(`Unknown STUDIO_SANDBOX_PROVIDER="${t}" \u2014 expected "agent-sandbox", legacy "cluster", or "user-desktop".`);return u}function Ne(t,n){let u=t.home||n.DATA_DIR||n.DECOCMS_HOME||`${tT()}/deco`,_=t.localMode,e=t.nodeEnv||eT(n.NODE_ENV),x=n.NATS_URL||"nats://localhost:4222",a=_T(n.NATS_TUNNEL_PUBLIC_ENABLED)??!!n.NATS_PUBLIC_URL;return{settings:{nodeEnv:e,port:L("PORT",t.port||n.PORT,3000),baseUrl:t.baseUrl||n.BASE_URL,publicUrl:s(n.STUDIO_PUBLIC_URL,n.MESH_PUBLIC_URL),dataDir:u,databasePgSsl:k(n.DATABASE_PG_SSL),databasePoolMax:L("DATABASE_POOL_MAX",n.DATABASE_POOL_MAX,5),dbosPoolSize:L("DBOS_POOL_SIZE",n.DBOS_POOL_SIZE,5),betterAuthSecret:n.BETTER_AUTH_SECRET||"",encryptionKey:n.ENCRYPTION_KEY||"",studioJwtSecret:s(n.STUDIO_JWT_SECRET,n.MESH_JWT_SECRET),localMode:_,disableRateLimit:k(n.DISABLE_RATE_LIMIT),studioProvisionSecretKey:n.STUDIO_PROVISION_SECRET_KEY,deploymentAdminEmails:(n.DEPLOYMENT_ADMIN_EMAILS??"").split(",").map((o)=>o.trim().toLowerCase()).filter(Boolean),clickhouseUrl:n.CLICKHOUSE_URL,clickhouseMaxMemoryUsage:Ce("CLICKHOUSE_MAX_MEMORY_USAGE",n.CLICKHOUSE_MAX_MEMORY_USAGE),monitoringOtlpEndpoint:n.MONITORING_OTLP_ENDPOINT,otelServiceName:n.OTEL_SERVICE_NAME||"studio",natsPublicUrl:n.NATS_PUBLIC_URL,natsTunnelPublicEnabled:a,natsTunnelSessionTtlSeconds:L("NATS_TUNNEL_SESSION_TTL_SECONDS",n.NATS_TUNNEL_SESSION_TTL_SECONDS,900),natsOperatorJwt:n.NATS_OPERATOR_JWT,natsAccountJwt:n.NATS_ACCOUNT_JWT,natsAccountSigningKey:n.NATS_ACCOUNT_SIGNING_KEY,natsCredsPath:n.NATS_CREDS,configPath:n.CONFIG_PATH||"./config.json",aiGatewayEnabled:k(n.DECO_AI_GATEWAY_ENABLED),aiGatewayUrl:n.DECO_AI_GATEWAY_URL||"https://ai-site.deco.site",aiGatewayAdminToken:n.DECO_AI_GATEWAY_ADMIN_TOKEN,seatAllowanceCents:L("STUDIO_SEAT_ALLOWANCE_CENTS",n.STUDIO_SEAT_ALLOWANCE_CENTS,500),stripeWebhookSecret:n.STRIPE_WEBHOOK_SECRET,stripeSecretKey:n.STRIPE_SECRET_KEY,stripeSeatPriceId:n.STRIPE_SEAT_PRICE_ID,topupFeePercent:L("STUDIO_TOPUP_FEE_PERCENT",n.STUDIO_TOPUP_FEE_PERCENT,15),enableDecoImport:k(n.ENABLE_DECO_IMPORT),billingEnforced:k(n.STUDIO_BILLING_ENFORCED),mcpCacheEnabled:xT(n.MCP_CACHE_ENABLED,e!=="development"),orgFsPublicSetsJson:n.ORGFS_PUBLIC_SETS,orgFsMountsDisabled:k(n.DISABLE_ORGFS_MOUNTS),decopilotMaxConcurrentSubagents:L("DECOPILOT_MAX_CONCURRENT_SUBAGENTS",n.DECOPILOT_MAX_CONCURRENT_SUBAGENTS,4),decopilotMaxConcurrentHostedRuns:L("DECOPILOT_MAX_CONCURRENT_HOSTED_RUNS",n.DECOPILOT_MAX_CONCURRENT_HOSTED_RUNS,3),s3Endpoint:n.S3_ENDPOINT,s3Bucket:n.S3_BUCKET,s3Region:n.S3_REGION||"auto",s3AccessKeyId:n.S3_ACCESS_KEY_ID,s3SecretAccessKey:n.S3_SECRET_ACCESS_KEY,s3ForcePathStyle:mT(n.S3_FORCE_PATH_STYLE),monitoringS3Bucket:n.MONITORING_S3_BUCKET,monitoringS3Endpoint:n.MONITORING_S3_ENDPOINT,monitoringS3Region:n.MONITORING_S3_REGION,monitoringS3AccessKeyId:n.MONITORING_S3_ACCESS_KEY_ID,monitoringS3SecretAccessKey:n.MONITORING_S3_SECRET_ACCESS_KEY,monitoringS3Prefix:n.MONITORING_S3_PREFIX,duckdbExtensionDirectory:n.DUCKDB_EXTENSION_DIRECTORY||"/opt/duckdb/extensions",duckdbMemoryLimit:n.DUCKDB_MEMORY_LIMIT||void 0,duckdbThreads:n.DUCKDB_THREADS?Number(n.DUCKDB_THREADS):void 0,isCli:!0,noTui:t.noTui===!0,podName:n.POD_NAME||crypto.randomUUID(),dispatchRole:uT(s(n.STUDIO_DISPATCH_ROLE,n.MESH_DISPATCH_ROLE)),sandboxProviderKind:oT(n.STUDIO_SANDBOX_PROVIDER),decoSupabaseUrl:n.DECO_SUPABASE_URL,decoSupabaseServiceKey:n.DECO_SUPABASE_SERVICE_KEY,firecrawlApiKey:n.FIRECRAWL_API_KEY,reportsInternalApiUrl:s(n.REPORTS_INTERNAL_API_URL,n.COMMERCE_DISCOVERY_INTERNAL_API_URL),reportsInternalApiKey:s(n.REPORTS_INTERNAL_API_KEY,n.COMMERCE_DISCOVERY_INTERNAL_API_KEY),s3TenantBucket:n.S3_TENANT_BUCKET||"new-deco-sites-assets",s3TenantRegion:n.S3_TENANT_REGION||"us-west-2",s3TenantEndpoint:n.S3_TENANT_ENDPOINT,s3TenantPublicUrlBase:n.S3_TENANT_PUBLIC_URL_BASE||"https://decoims.com",awsS3TenantRoleArn:n.AWS_S3_TENANT_ROLE_ARN,awsS3TenantProvisionerAccessKeyId:n.AWS_S3_TENANT_PROVISIONER_ACCESS_KEY_ID,awsS3TenantProvisionerSecretAccessKey:n.AWS_S3_TENANT_PROVISIONER_SECRET_ACCESS_KEY},externalDatabaseUrl:Te(n.DATABASE_URL),externalNatsUrl:Te(x),skipMigrations:t.skipMigrations}}var Ct=null;function H(){if(!Ct)yT();return Ct}function yT(){if(Ct)return;let t={...process.env},n=Ne({port:t.PORT||"3000",home:t.DATA_DIR||t.DECOCMS_HOME||"",localMode:t.DECOCMS_LOCAL_MODE==="true",skipMigrations:!0,noTui:t.DECO_NO_TUI==="true",vitePort:t.VITE_PORT,baseUrl:t.BASE_URL},t);Ct=Object.freeze({...n.settings,databaseUrl:t.DATABASE_URL||"postgresql://postgres:postgres@localhost:5432/postgres",natsUrls:(t.NATS_URL||"nats://localhost:4222").split(",").map((u)=>u.trim()).filter(Boolean)})}import{createContextKey as wT,metrics as KT,propagation as _E,ROOT_CONTEXT as xE,SpanStatusCode as mE,trace as cT}from"@opentelemetry/api";import{logs as pT,SeverityNumber as Di}from"@opentelemetry/api-logs";import{OTLPLogExporter as yE}from"@opentelemetry/exporter-logs-otlp-proto";import{PrometheusExporter as zT}from"@opentelemetry/exporter-prometheus";import{OTLPTraceExporter as NE}from"@opentelemetry/exporter-trace-otlp-proto";import{RuntimeNodeInstrumentation as EE}from"@opentelemetry/instrumentation-runtime-node";import{context as dN,propagation as bN,SpanKind as tf,SpanStatusCode as nf}from"@opentelemetry/api";var ef=globalThis.fetch;import{ExportResultCode as wf}from"@opentelemetry/core";import{ExportResultCode as Nt}from"@opentelemetry/core";import{mkdir as TT,rename as CT,writeFile as NT}from"fs/promises";import{join as ft}from"path";class Et{bufferItems=[];bufferBytes=0;flushTimer=null;flushQueue=Promise.resolve();basePath;flushThreshold;maxBufferBytes;isShutdown=!1;knownDirs=new Set;partitionKey;constructor(t){this.basePath=t.basePath,this.flushThreshold=t.flushThreshold??1000,this.maxBufferBytes=t.maxBufferBytes??10485760,this.partitionKey=t.partitionKey;let n=t.flushIntervalMs??60000;if(n>0&&n<3600000){if(this.flushTimer=setInterval(()=>{this.flush().catch((u)=>{console.error("[NDJSONExporter] Timer flush failed:",u)})},n),this.flushTimer&&typeof this.flushTimer==="object"&&"unref"in this.flushTimer)this.flushTimer.unref()}}exportRows(t){if(this.isShutdown)return Promise.resolve({code:Nt.FAILED});for(let n of t){let u=JSON.stringify(n),_=this.partitionKey?this.partitionKey(n):"";this.bufferItems.push({partition:_,json:u}),this.bufferBytes+=Buffer.byteLength(u,"utf8")+1}if(this.bufferItems.length>=this.flushThreshold||this.bufferBytes>=this.maxBufferBytes)return this.flush().then(()=>({code:Nt.SUCCESS})).catch((n)=>{return console.error("[NDJSONExporter] Flush failed:",n),{code:Nt.FAILED}});return Promise.resolve({code:Nt.SUCCESS})}async shutdown(){if(this.isShutdown=!0,this.flushTimer)clearInterval(this.flushTimer),this.flushTimer=null;try{await this.flushQueue}catch{}if(this.bufferItems.length>0)await this.flush()}async forceFlush(){try{await this.flushQueue}catch{}if(this.bufferItems.length>0)await this.flush()}flush(){let n=this.flushQueue.catch(()=>{}).then(()=>this.doFlush());return this.flushQueue=n,n}async doFlush(){if(this.bufferItems.length===0)return;let t=this.bufferItems;this.bufferItems=[],this.bufferBytes=0;let n=new Map;for(let e of t){let x=n.get(e.partition);if(!x)x=[],n.set(e.partition,x);x.push(e.json)}let u=await Promise.allSettled(Array.from(n.entries()).map(([e,x])=>this.writeNDJSON(x,e).then(()=>e))),_=u.find((e)=>e.status==="rejected");if(_){let e=new Set;for(let a of u)if(a.status==="fulfilled")e.add(a.value);let x=t.filter((a)=>!e.has(a.partition));this.bufferItems=x.concat(this.bufferItems),this.bufferBytes=0;for(let a of this.bufferItems)this.bufferBytes+=Buffer.byteLength(a.json,"utf8")+1;throw _.reason}}async writeNDJSON(t,n){let u=new Date,_=[String(u.getUTCFullYear()),String(u.getUTCMonth()+1).padStart(2,"0"),String(u.getUTCDate()).padStart(2,"0"),String(u.getUTCHours()).padStart(2,"0")],e=n?ft(this.basePath,n,..._):ft(this.basePath,..._);if(!this.knownDirs.has(e))await TT(e,{recursive:!0,mode:448}),this.knownDirs.add(e);let x=`${crypto.randomUUID()}.ndjson`,a=ft(e,`.${x}.tmp`),m=ft(e,x),o=t.join(`
|
|
1057
1057
|
`)+`
|
|
1058
1058
|
`;await NT(a,o,{mode:384}),await CT(a,m)}}import{ExportResultCode as Pf}from"@opentelemetry/core";import{AggregationTemporality as Uf,DataPointType as jf}from"@opentelemetry/sdk-metrics";import{ExportResultCode as kf}from"@opentelemetry/core";var Zf=Buffer.byteLength("... [TRUNCATED]","utf8");import{BatchLogRecordProcessor as jE,LoggerProvider as DE}from"@opentelemetry/sdk-logs";import{detectResources as LE,envDetector as RE,hostDetector as WE,osDetector as kE,processDetector as $E,resourceFromAttributes as XE}from"@opentelemetry/resources";import{PeriodicExportingMetricReader as ZE}from"@opentelemetry/sdk-metrics";import{NOOP_LOGGER as Mf}from"@opentelemetry/api-logs";import{NodeSDK as ME}from"@opentelemetry/sdk-node";import{BatchSpanProcessor as hE,SamplingDecision as M}from"@opentelemetry/sdk-trace-base";import{SpanStatusCode as Sf}from"@opentelemetry/api";var PT="__d",rT=wT("Current request"),UT=1;var Ee=(t)=>{let u=new URL(t.url).searchParams.get(PT);if(u==="")return crypto.randomUUID();if(!u)u=t.headers.get("x-trace-debug-id");return u};class we{inner;constructor(t){this.inner=t}shouldSample(t,n,u,_,e,x){let a=t.getValue(rT);if(!a){if(this.inner)return this.inner.shouldSample(t,n,u,_,e,x);return{decision:M.RECORD_AND_SAMPLED}}let m=Ee(a);if(m)return{decision:M.RECORD_AND_SAMPLED,attributes:{"trace.debug.id":m}};if(this.inner){let o=this.inner.shouldSample(t,n,u,_,e,x);if(o.decision===M.RECORD_AND_SAMPLED){let y=crypto.randomUUID();o.attributes={...o.attributes??{},"trace.debug.id":y}}return o}return{decision:M.NOT_RECORD}}toString(){return"DebugSampler"}}class Ke{ratio;constructor(t){this.ratio=t}shouldSample(){if(Math.random()<this.ratio)return{decision:M.RECORD_AND_SAMPLED};return{decision:M.NOT_RECORD}}toString(){return`RatioSampler(${this.ratio})`}}var AE=new zT({preventServerStart:!0}),SE=new we(new Ke(UT));var fe=cT.getTracer("studio","1.0.0"),V=KT.getMeter("studio","1.0.0"),jT=pT.getLogger("studio","1.0.0"),Ji=(t,n,u)=>{let _={},e=u,x=u[u.length-1];if(x!==null&&typeof x==="object"&&!Array.isArray(x)&&!(x instanceof Error)&&Object.getPrototypeOf(x)===Object.prototype)_=x,e=u.slice(0,-1);let a=e.map((m)=>{if(m instanceof Error)return`${m.name}: ${m.message}`;if(typeof m==="object")try{return JSON.stringify(m)}catch{return"[Object]"}return String(m)}).join(" ");jT.emit({severityNumber:t,severityText:n,body:a,attributes:{"log.source":"console",..._}})},Li={error:console.error.bind(console),warn:console.warn.bind(console),debug:console.debug.bind(console)};console.error=(...t)=>{Ji(Di.ERROR,"ERROR",t),Li.error(...t)};console.warn=(...t)=>{Ji(Di.WARN,"WARN",t),Li.warn(...t)};console.debug=(...t)=>{Ji(Di.DEBUG,"DEBUG",t),Li.debug(...t)};var Ri,ce=0,Wi=500;function DT(){if(Ri)return;let t=performance.now()+Wi;Ri=setInterval(()=>{let n=performance.now();ce=Math.max(0,n-t),t=n+Wi},Wi),Ri.unref?.()}function pe(){return DT(),ce}var LT=()=>V.createHistogram("db.query.duration",{description:"Database query execution duration in milliseconds",unit:"ms"}),ze=()=>V.createHistogram("db.pool.acquire.duration",{description:"Time spent waiting to acquire a connection from the pool",unit:"ms"}),Pe=400,RT=100,WT=(t)=>(n)=>{let u={"db.statement":n.query.sql,"db.status":n.level==="error"?"error":"success"};if(n.queryDurationMillis>Pe){let _=pe(),e=_>Pe/2;console.error(e?"Slow query measurement \u2014 likely event-loop lag, not slow SQL:":"Slow query detected:",{durationMs:n.queryDurationMillis,eventLoopLagMs:Math.round(_),sql:n.query.sql,pool:{total:t.totalCount,idle:t.idleCount,waiting:t.waitingCount,max:wt()}})}if(LT().record(n.queryDurationMillis,u),n.level==="error")console.error("Query failed:",{durationMs:n.queryDurationMillis,error:n.error,sql:n.query.sql})};function kT(t){let n=t.connect.bind(t);return t.connect=(u)=>{if(typeof u==="function")return n(u);let _=performance.now(),e=wt(),x=t.idleCount===0&&t.totalCount>=e,a=t.idleCount;return n().then((m)=>{let o=performance.now()-_;if(ze().record(o,{"db.pool.outcome":x?"contended":"available"}),o>RT)if(x)console.error("Slow db pool acquire \u2014 pool saturated:",{waitMs:o,total:t.totalCount,idle:t.idleCount,waiting:t.waitingCount,max:e});else console.warn("Slow db pool acquire \u2014 event-loop lag (not pool):",{waitMs:o,idleAtStart:a,total:t.totalCount,max:e});return m},(m)=>{throw ze().record(performance.now()-_,{"db.pool.outcome":"error"}),m})},t}var je={keepAlive:!0,keepAliveInitialDelayMillis:1e4,idleTimeoutMillis:300000,connectionTimeoutMillis:30000,allowExitOnIdle:!0};function De(){try{return H().databasePgSsl}catch{return!1}}function wt(){try{return H().databasePoolMax}catch{return 10}}function $T(t){let n=kT(new Ue({connectionString:t,max:wt(),ssl:De(),...je})),u=new re({pool:n});return{type:"postgres",db:new JT({dialect:u,log:WT(n)}),pool:n}}function q(){return H().databaseUrl}function Je(t){let n=t||q();return new re({pool:new Ue({connectionString:n,max:wt(),ssl:De(),...je})})}function XT(t){let n=t||q();return $T(n)}async function Le(t){if(await t.db.destroy(),!t.pool.ended)await t.pool.end();if(t===v)v=null}var v=null;function ki(){if(!v)v=XT(q());return v}async function Re(t){let u={database:Je(t||q()),plugins:[FT({dynamicAccessControl:{enabled:!0,enableCustomResources:!0}}),HT(),MT(),YT(),AT(),BT({loginPage:"/login"}),ZT(),hT({sendMagicLink:async()=>{}}),ST({sendVerificationOTP:async()=>{}})]},{toBeAdded:_,toBeCreated:e,runMigrations:x}=await QT(u);if(!_.length&&!e.length)return"up to date";return await x(),`${e.length+_.length} table(s) migrated`}async function ke(t,n){return(await Y`
|
|
1059
1059
|
SELECT table_name FROM information_schema.tables
|