decocms 2.311.7 → 2.311.8
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-BJeD5C4R.js → AlertCircle-9Ey0HjEK.js} +1 -1
- package/dist/client/assets/{Archive-YlLF-Utw.js → Archive-DPagM8Sv.js} +1 -1
- package/dist/client/assets/{ArrowNarrowLeft-Bxr_bNh3.js → ArrowNarrowLeft-CX80utcZ.js} +1 -1
- package/dist/client/assets/{ArrowUpRight-BjngPScU.js → ArrowUpRight-Dnm-Dm1H.js} +1 -1
- package/dist/client/assets/{Check-CCt4TdqV.js → Check-C0YCNcAk.js} +1 -1
- package/dist/client/assets/{CheckCircle-Bj4ArLnA.js → CheckCircle-DC6iqfFI.js} +1 -1
- package/dist/client/assets/{ChevronDown-Bj0_PlcH.js → ChevronDown-Cwqb-1uD.js} +1 -1
- package/dist/client/assets/{ChevronRight-C4ssXj8j.js → ChevronRight-CrWz1sFy.js} +1 -1
- package/dist/client/assets/{ChevronUp-BX6pOMeY.js → ChevronUp-BMBmNR0B.js} +1 -1
- package/dist/client/assets/{Container-DCeE5VzU.js → Container-Bk9UG2qc.js} +1 -1
- package/dist/client/assets/{DotsVertical-dBwy2z8i.js → DotsVertical-B7yU948Y.js} +1 -1
- package/dist/client/assets/{LinkExternal01-zCvf1EzU.js → LinkExternal01-DxfMOMNm.js} +1 -1
- package/dist/client/assets/{Lock01-DiQ4vbxd.js → Lock01-Cds15CcD.js} +1 -1
- package/dist/client/assets/{Palette-C4IIjTNv.js → Palette-BhAbwiYB.js} +1 -1
- package/dist/client/assets/{Play-hz-Aap6I.js → Play-DT05vsyX.js} +1 -1
- package/dist/client/assets/{Plus-CMSPc8qr.js → Plus-LaAbD5qL.js} +1 -1
- package/dist/client/assets/{RefreshCcw01-mHpCJu3a.js → RefreshCcw01-BS-aU6o_.js} +1 -1
- package/dist/client/assets/{SearchMd-DRJGWUxm.js → SearchMd-DLpvei6Y.js} +1 -1
- package/dist/client/assets/{Settings02-zMTyQvfN.js → Settings02-DIJ_hqNi.js} +1 -1
- package/dist/client/assets/{Shield01-CyagHvp0.js → Shield01-B0gusvIt.js} +1 -1
- package/dist/client/assets/{Star01-CtyYcqs8.js → Star01-Dr3hv_f2.js} +1 -1
- package/dist/client/assets/{Sun-DyWU3dmA.js → Sun-Cjk_RdSq.js} +1 -1
- package/dist/client/assets/{Tool01-CXQadPQ0.js → Tool01-CKIVHH97.js} +1 -1
- package/dist/client/assets/{Trash01-BIkNmKu1.js → Trash01-CGR2s5lX.js} +1 -1
- package/dist/client/assets/{User01-DnkItw6o.js → User01-TUOjLrvV.js} +1 -1
- package/dist/client/assets/{Users03-DvpIbtPT.js → Users03-CrFC9gy5.js} +1 -1
- package/dist/client/assets/{X-a6NKB5cR.js → X-EkEnxljM.js} +1 -1
- package/dist/client/assets/{XCircle-2YGJT4l8.js → XCircle-DX3ew0Vv.js} +1 -1
- package/dist/client/assets/{XClose-BKyQhmnE.js → XClose-Bgl_mrN0.js} +1 -1
- package/dist/client/assets/{Zap-Cv-p123E.js → Zap-nGrPPn6s.js} +1 -1
- package/dist/client/assets/{ZapSquare-D206qQUt.js → ZapSquare-3WrsQC0a.js} +1 -1
- package/dist/client/assets/{accordion-C7jtb5zG.js → accordion-CVBGYkjx.js} +1 -1
- package/dist/client/assets/{agent-icon-Byl44fjz.js → agent-icon-C5r21-mU.js} +1 -1
- package/dist/client/assets/{agents-list-DgD602gD.js → agents-list-DYSwFq4O.js} +1 -1
- package/dist/client/assets/ai-providers-C23uGGTh.js +1 -0
- package/dist/client/assets/{alert-dialog-D9PtfJxf.js → alert-dialog-CUlBW44D.js} +1 -1
- package/dist/client/assets/{auth-catchall-C-sTCCTb.js → auth-catchall-b0gnrvFE.js} +1 -1
- package/dist/client/assets/{automation-list-row-BZwWkD3I.js → automation-list-row-B0Yyrl0C.js} +1 -1
- package/dist/client/assets/{automations-BdT0XSk0.js → automations-BoyHWA09.js} +1 -1
- package/dist/client/assets/{avatar-CWZ0ixfS.js → avatar-CCEBXDhS.js} +1 -1
- package/dist/client/assets/{badge-CA0TtSK-.js → badge-Br91qQU7.js} +1 -1
- package/dist/client/assets/{brand-context-gd6jn5E6.js → brand-context-BssJ3FOZ.js} +1 -1
- package/dist/client/assets/{card-2C8lyYM4.js → card-DQgc505G.js} +1 -1
- package/dist/client/assets/{chat-context-mruWDWkr.js → chat-context-D0lbPtlR.js} +1 -1
- package/dist/client/assets/{checkbox-DW6m6j_q.js → checkbox-BCxF1VyO.js} +1 -1
- package/dist/client/assets/{collection-detail-DYSi_23k.js → collection-detail-BPMkE5rf.js} +1 -1
- package/dist/client/assets/{collection-display-button-DOvm0aV5.js → collection-display-button-DTW3X--x.js} +1 -1
- package/dist/client/assets/{collection-search-Cljm_M2l.js → collection-search-Cm33ynx1.js} +1 -1
- package/dist/client/assets/{collection-search-H6nTPyyn.js → collection-search-DzJ2_6S7.js} +1 -1
- package/dist/client/assets/{collection-table-wrapper-DZe1V1aM.js → collection-table-wrapper-D6-pSdID.js} +1 -1
- package/dist/client/assets/{collection-tabs-CErfHiTV.js → collection-tabs-DNkzHSYG.js} +1 -1
- package/dist/client/assets/{collections-DqQJv3EJ.js → collections-C9L2aOYp.js} +1 -1
- package/dist/client/assets/{command-CBLhLeAX.js → command-C-2IxKk5.js} +1 -1
- package/dist/client/assets/{connection-card-DP37rlHa.js → connection-card-BoxVMaxE.js} +1 -1
- package/dist/client/assets/{connection-detail-DDGjj1IS.js → connection-detail-_uhhok2G.js} +1 -1
- package/dist/client/assets/{connection-form-helpers-aO3CUs1Q.js → connection-form-helpers-o8Xx8W0s.js} +1 -1
- package/dist/client/assets/{connections-DADCBg8H.js → connections-BiBKwha4.js} +1 -1
- package/dist/client/assets/{constants-RsPwfdJf.js → constants--Dugzbiv.js} +1 -1
- package/dist/client/assets/{constants-CWE1wq29.js → constants-CK0eEQbn.js} +1 -1
- package/dist/client/assets/{dialog-VeABQIqc.js → dialog-BxXbq3AD.js} +1 -1
- package/dist/client/assets/{domain-settings-2pYm6clh.js → domain-settings-C-3L2-eL.js} +1 -1
- package/dist/client/assets/{drawer-D7OQ4h1T.js → drawer-UeGl-sjm.js} +1 -1
- package/dist/client/assets/{dropdown-menu-CPdBBQUU.js → dropdown-menu-DQ7iI93C.js} +1 -1
- package/dist/client/assets/{dynamic-plugin-layout-T8gyrVC2.js → dynamic-plugin-layout-Dn0vyVNY.js} +1 -1
- package/dist/client/assets/{empty-state-CrERbkuT.js → empty-state-CKzOWRtK.js} +1 -1
- package/dist/client/assets/{empty-state-S9xe6i3I.js → empty-state-D_f63UFh.js} +1 -1
- package/dist/client/assets/{extract-connection-data-BQeAhwrY.js → extract-connection-data-DMpmuOOJ.js} +1 -1
- package/dist/client/assets/{features-B2uK7w_y.js → features-DyUlYERL.js} +1 -1
- package/dist/client/assets/{form-JLSGdp7n.js → form-BwE1BJrb.js} +1 -1
- package/dist/client/assets/{general-0Zopjnmp.js → general-DUugdid2.js} +1 -1
- package/dist/client/assets/{index-D_x_9ry-.js → index-B0gV229o.js} +1 -1
- package/dist/client/assets/{index-CesZkHwj.js → index-BtV0adYp.js} +1 -1
- package/dist/client/assets/{index-DdBKKPxs.js → index-C1CY6-RI.js} +1 -1
- package/dist/client/assets/{index-DDErZWVi.js → index-C4DcQ8LW.js} +2 -2
- package/dist/client/assets/{index-BgW8ua3s.js → index-C7x_kc-H.js} +1 -1
- package/dist/client/assets/{index-DqFd1_Ou.js → index-CeMlJGK7.js} +1 -1
- package/dist/client/assets/{index-DN6qRLqz.js → index-Cnh6l9lE.js} +3 -3
- package/dist/client/assets/{index-Brtp4PAP.js → index-CpyFP_Y6.js} +1 -1
- package/dist/client/assets/{index-Ca5_2L4b.js → index-CwEMRsg9.js} +1 -1
- package/dist/client/assets/{index-B35PIg0k.js → index-CxyXuh3-.js} +1 -1
- package/dist/client/assets/{index-Njoumabj.js → index-D2MseDzL.js} +1 -1
- package/dist/client/assets/{index-BuvWAXu5.js → index-DLI7RfTF.js} +1 -1
- package/dist/client/assets/{index-Cyow5Z3q.js → index-DUyJmZSw.js} +1 -1
- package/dist/client/assets/{index-CWu36EWB.js → index-DX5CKVPt.js} +1 -1
- package/dist/client/assets/{index-CeWLRM93.js → index-cE983NnZ.js} +1 -1
- package/dist/client/assets/{index-DAvXxT14.js → index-cFrtNDeh.js} +1 -1
- package/dist/client/assets/{infiniteQueryObserver-D8Dut25K.js → infiniteQueryObserver-M5HXhTa-.js} +1 -1
- package/dist/client/assets/{input-mPr-_Wkz.js → input-Zc7XqLBz.js} +1 -1
- package/dist/client/assets/{integration-icon-DBaPSUho.js → integration-icon-dIK4SySX.js} +1 -1
- package/dist/client/assets/{label-3-gb9Mfh.js → label-DQVfYyGa.js} +1 -1
- package/dist/client/assets/{layout-CmzRa0Nb.js → layout-DoXFaFc9.js} +1 -1
- package/dist/client/assets/{lean-canvas-recruit-modal-D4edhHd5.js → lean-canvas-recruit-modal-B6jYbHdS.js} +1 -1
- package/dist/client/assets/{login-C-z-KQJy.js → login-C53Yny6q.js} +1 -1
- package/dist/client/assets/{members-BozGuU0c.js → members-CXQHdw2n.js} +1 -1
- package/dist/client/assets/{monaco-editor-BfP_aqvh.js → monaco-editor-BluEEKw9.js} +1 -1
- package/dist/client/assets/{monitoring-stats-row-B51dMYWy.js → monitoring-stats-row-C7uh_AJ1.js} +1 -1
- package/dist/client/assets/{oauth-callback-5HwVk_9m.js → oauth-callback-B18mSbUX.js} +1 -1
- package/dist/client/assets/{oauth-callback-ai-provider-CDjlMLfh.js → oauth-callback-ai-provider-B5LWXlVw.js} +1 -1
- package/dist/client/assets/{onboarding-tjBqLdVl.js → onboarding-B9N5e87t.js} +1 -1
- package/dist/client/assets/{org-layout-BWkVASJj.js → org-layout-HZO2enZQ.js} +1 -1
- package/dist/client/assets/{org-plugin-layout-DYx1Oog9.js → org-plugin-layout-X1oNY1R9.js} +1 -1
- package/dist/client/assets/{pair-C0_kf-8-.js → pair-Cl7nEWLx.js} +1 -1
- package/dist/client/assets/{plugin-empty-state-BYzIjFjW.js → plugin-empty-state-mFDhSKtm.js} +1 -1
- package/dist/client/assets/{plugin-header-BgQH62F3.js → plugin-header-BzIWRAUv.js} +1 -1
- package/dist/client/assets/{plugin-layout-DZOAczkV.js → plugin-layout-Ckgza9x1.js} +1 -1
- package/dist/client/assets/{popover-DnPkEGaL.js → popover-fFiZRgP_.js} +1 -1
- package/dist/client/assets/{profile-Bk3W3VFa.js → profile-CDEKCuy5.js} +1 -1
- package/dist/client/assets/{project-app-view-Pr8DzxWg.js → project-app-view-DYhcROSR.js} +1 -1
- package/dist/client/assets/registry-SRrrOWaz.js +2 -0
- package/dist/client/assets/{registry-layout-D1IqZv0l.js → registry-layout-DhmXFNYV.js} +1 -1
- package/dist/client/assets/{required-auth-layout-BXiLDjox.js → required-auth-layout-DdqUlG6N.js} +1 -1
- package/dist/client/assets/{reset-password-CXOrskA0.js → reset-password-CG-HQXTs.js} +1 -1
- package/dist/client/assets/{roles-DKeVL_Vk.js → roles-BToZK3zI.js} +1 -1
- package/dist/client/assets/{scroll-area-Bi0ICljU.js → scroll-area-DDk0Exbn.js} +1 -1
- package/dist/client/assets/{search-input-Bv2SSEED.js → search-input-BHdl2Sic.js} +1 -1
- package/dist/client/assets/{select-C0jYaD9l.js → select-CdC5gLdi.js} +1 -1
- package/dist/client/assets/{select-model-GxB6dprW.js → select-model-BkJ0KPp-.js} +1 -1
- package/dist/client/assets/{settings-layout-CMKqgYzn.js → settings-layout-C75rVJeh.js} +1 -1
- package/dist/client/assets/{settings-section-DtN4ZHic.js → settings-section-Dab3WzAF.js} +1 -1
- package/dist/client/assets/{shell-layout-tb5uFFJK.js → shell-layout-lDvOUVZf.js} +1 -1
- package/dist/client/assets/{skeleton-DxQ-428k.js → skeleton-jCfWKtEG.js} +1 -1
- package/dist/client/assets/{sso-DBqJfU28.js → sso-y81n9RBZ.js} +1 -1
- package/dist/client/assets/{store-DWGyHob3.js → store-CvYwjdEK.js} +1 -1
- package/dist/client/assets/store-registry-DNpjvrs_.js +2 -0
- package/dist/client/assets/{switch-BoKNT-B-.js → switch-fkgGJ6Y_.js} +1 -1
- package/dist/client/assets/{table-DUsaq02U.js → table-B_6GznCu.js} +1 -1
- package/dist/client/assets/{tabs-De__eheK.js → tabs-qDZiCngi.js} +1 -1
- package/dist/client/assets/{task-status-C_r8wvmS.js → task-status-BaBW3UXJ.js} +1 -1
- package/dist/client/assets/{textarea-C0unIP9X.js → textarea-C2BrY9Le.js} +1 -1
- package/dist/client/assets/{toggle-group-CjJ2xnFY.js → toggle-group-B-jspLpZ.js} +1 -1
- package/dist/client/assets/{tools-list-CJJv21mu.js → tools-list-6JBD-Zot.js} +1 -1
- package/dist/client/assets/{tooltip-6l925dLT.js → tooltip-CC8e8bYw.js} +1 -1
- package/dist/client/assets/{types-063PNzne.js → types-BrKOUOZu.js} +1 -1
- package/dist/client/assets/{use-ai-providers-CXJtJ3gs.js → use-ai-providers-B2sC2ALY.js} +1 -1
- package/dist/client/assets/{use-collections-Clscqpr6.js → use-collections-CeVghh3K.js} +1 -1
- package/dist/client/assets/{use-connection-BONz3omb.js → use-connection-Cyq0iJ5j.js} +1 -1
- package/dist/client/assets/{use-copy-BMM4g8qh.js → use-copy-DR2hWJaD.js} +1 -1
- package/dist/client/assets/{use-create-virtual-mcp-L41f6BHk.js → use-create-virtual-mcp-DGMHB2cc.js} +1 -1
- package/dist/client/assets/{use-debounced-autosave-B7SdViQU.js → use-debounced-autosave-DwUIvZBw.js} +1 -1
- package/dist/client/assets/{use-decopilot-events-CURKUwZC.js → use-decopilot-events-YJpIJj4i.js} +1 -1
- package/dist/client/assets/{use-delete-connection-DRmN2AAk.js → use-delete-connection-BkbDfapg.js} +1 -1
- package/dist/client/assets/{use-infinite-scroll-CsVuEiLa.js → use-infinite-scroll-Hb3Vf_3I.js} +1 -1
- package/dist/client/assets/{use-list-state-Bsx4nOHW.js → use-list-state-wzK4SDnM.js} +1 -1
- package/dist/client/assets/{use-mcp-tools-CGp3Yu6f.js → use-mcp-tools-CPgnB2kL.js} +1 -1
- package/dist/client/assets/{use-members-LUjEaikV.js → use-members-BXnMgIf9.js} +1 -1
- package/dist/client/assets/{use-navigate-to-agent-Btl0kxvD.js → use-navigate-to-agent-BJNAm35_.js} +1 -1
- package/dist/client/assets/{use-org-auth-client-Bdgc183j.js → use-org-auth-client-B2VsJjxT.js} +1 -1
- package/dist/client/assets/{use-org-sso-ex6uAkHi.js → use-org-sso-D98ffRJ_.js} +1 -1
- package/dist/client/assets/{use-organization-roles-DsrGcTs6.js → use-organization-roles-CsvLhbKb.js} +1 -1
- package/dist/client/assets/{use-organization-settings-DAE9VhMp.js → use-organization-settings-SrrzYdc9.js} +1 -1
- package/dist/client/assets/{use-registry-connections-BneTMB19.js → use-registry-connections-B0GzmRQn.js} +1 -1
- package/dist/client/assets/{use-status-sounds-C0CX0jN4.js → use-status-sounds-CtnKWsOu.js} +1 -1
- package/dist/client/assets/{use-tasks-C50wbCHs.js → use-tasks-DToWWiz1.js} +1 -1
- package/dist/client/assets/{use-view-mode-Bnx_K3_C.js → use-view-mode-BqpScb5m.js} +1 -1
- package/dist/client/assets/{use-virtual-mcp-BlO6orHF.js → use-virtual-mcp-DA2HdrC3.js} +1 -1
- package/dist/client/assets/useInfiniteQuery-DZyvg0dy.js +1 -0
- package/dist/client/assets/useSuspenseInfiniteQuery-DItg4qEF.js +1 -0
- package/dist/client/assets/{user-DUAXfww9.js → user-CrGRA0V7.js} +1 -1
- package/dist/client/assets/{view-mode-toggle-DEaKPNk7.js → view-mode-toggle-DlPw4C1T.js} +1 -1
- package/dist/client/assets/{workflow-DHCLn9f-.js → workflow-YCSeFh2m.js} +1 -1
- package/dist/client/assets/workflow-detail-C-1jRApT.js +1 -0
- package/dist/client/index.html +1 -1
- package/dist/server/cli.js +2 -2
- package/dist/server/node_modules/figures/index.d.ts +279 -0
- package/dist/server/node_modules/figures/index.js +292 -0
- package/dist/server/node_modules/figures/package.json +49 -0
- package/dist/server/node_modules/figures/readme.md +337 -0
- package/dist/server/server.js +1 -1
- package/package.json +1 -1
- package/dist/client/assets/ai-providers-DERjwW01.js +0 -1
- package/dist/client/assets/registry-JtQ5iqN-.js +0 -2
- package/dist/client/assets/store-registry-DRlN5Ein.js +0 -2
- package/dist/client/assets/useInfiniteQuery-C6j5jRkd.js +0 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-Lk0XRceb.js +0 -1
- package/dist/client/assets/workflow-detail-DMKespmd.js +0 -1
- package/dist/server/node_modules/ansi-styles/index.d.ts +0 -236
- package/dist/server/node_modules/ansi-styles/index.js +0 -223
- package/dist/server/node_modules/ansi-styles/package.json +0 -54
- package/dist/server/node_modules/ansi-styles/readme.md +0 -173
- package/dist/server/node_modules/onetime/index.d.ts +0 -64
- package/dist/server/node_modules/onetime/index.js +0 -44
- package/dist/server/node_modules/onetime/license +0 -9
- package/dist/server/node_modules/onetime/package.json +0 -43
- package/dist/server/node_modules/onetime/readme.md +0 -94
- package/dist/server/node_modules/pg-int8/LICENSE +0 -13
- package/dist/server/node_modules/pg-int8/README.md +0 -16
- package/dist/server/node_modules/pg-int8/index.js +0 -100
- package/dist/server/node_modules/pg-int8/package.json +0 -24
- package/dist/server/node_modules/postgres-bytea/index.js +0 -33
- package/dist/server/node_modules/postgres-bytea/license +0 -21
- package/dist/server/node_modules/postgres-bytea/package.json +0 -34
- package/dist/server/node_modules/postgres-bytea/readme.md +0 -34
- package/dist/server/node_modules/postgres-interval/index.d.ts +0 -20
- package/dist/server/node_modules/postgres-interval/index.js +0 -125
- package/dist/server/node_modules/postgres-interval/license +0 -21
- package/dist/server/node_modules/postgres-interval/package.json +0 -36
- package/dist/server/node_modules/postgres-interval/readme.md +0 -48
- package/dist/server/node_modules/xtend/.jshintrc +0 -30
- package/dist/server/node_modules/xtend/LICENSE +0 -20
- package/dist/server/node_modules/xtend/README.md +0 -32
- package/dist/server/node_modules/xtend/immutable.js +0 -19
- package/dist/server/node_modules/xtend/mutable.js +0 -17
- package/dist/server/node_modules/xtend/package.json +0 -55
- package/dist/server/node_modules/xtend/test.js +0 -103
- /package/dist/server/node_modules/{ansi-styles → figures}/license +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
import{e as oe,j as t,B as Ce,f as Be,b as ct,s as ze,r as dt,x as Le,o as ut,a as mt,K as Fe,Y as Ke,Z as pt}from"./index-DDErZWVi.js";import{u as Ve,S as qe}from"./constants-RsPwfdJf.js";import{B as ft,g as Me}from"./constants-CWE1wq29.js";import{C as Ge}from"./collection-display-button-DOvm0aV5.js";import{C as ht}from"./collection-search-H6nTPyyn.js";import{C as gt}from"./card-2C8lyYM4.js";import{I as Qe}from"./integration-icon-DBaPSUho.js";import{D as Ye,a as He,b as Je,c as O}from"./dropdown-menu-CPdBBQUU.js";import{c as Ze}from"./XCircle-2YGJT4l8.js";import{i as Xe}from"./DotsVertical-dBwy2z8i.js";import{i as et}from"./Tool01-CXQadPQ0.js";import{s as tt}from"./RefreshCcw01-mHpCJu3a.js";import{s as st}from"./Trash01-BIkNmKu1.js";import{C as xt}from"./collection-table-wrapper-DZe1V1aM.js";import{E as Ue}from"./empty-state-CrERbkuT.js";import{G as We}from"./agent-icon-Byl44fjz.js";import{U as jt}from"./user-DUAXfww9.js";import{E as it}from"./empty-state-S9xe6i3I.js";import{u as Ct}from"./use-list-state-Bsx4nOHW.js";import{g as bt}from"./connection-slug-eyAPH6o3.js";import{f as vt,g as yt,c as Nt,b as wt,d as St,e as Pt,a as _t,A as Dt}from"./alert-dialog-D9PtfJxf.js";import{a as It,c as At}from"./use-collections-Clscqpr6.js";import{a as Tt}from"./use-connection-BONz3omb.js";import{s as Et}from"./Plus-CMSPc8qr.js";import{a as Ot}from"./layout-CmzRa0Nb.js";import{P as je}from"./index-DdBKKPxs.js";import"./collections-DqQJv3EJ.js";import"./XClose-BKyQhmnE.js";import"./Check-CCt4TdqV.js";import"./tooltip-6l925dLT.js";import"./view-mode-toggle-DEaKPNk7.js";import"./badge-CA0TtSK-.js";import"./SearchMd-DRJGWUxm.js";import"./Container-DCeE5VzU.js";import"./ChevronRight-C4ssXj8j.js";import"./table-DUsaq02U.js";import"./AlertCircle-BJeD5C4R.js";import"./Archive-YlLF-Utw.js";import"./ArrowNarrowLeft-Bxr_bNh3.js";import"./ArrowUpRight-BjngPScU.js";import"./ZapSquare-D206qQUt.js";import"./Users03-DvpIbtPT.js";import"./CheckCircle-Bj4ArLnA.js";import"./ChevronDown-Bj0_PlcH.js";import"./ChevronUp-BX6pOMeY.js";import"./Star01-CtyYcqs8.js";import"./Palette-C4IIjTNv.js";import"./LinkExternal01-zCvf1EzU.js";import"./Lock01-DiQ4vbxd.js";import"./Sun-DyWU3dmA.js";import"./Play-hz-Aap6I.js";import"./Settings02-zMTyQvfN.js";import"./Shield01-CyagHvp0.js";import"./User01-DnkItw6o.js";import"./X-a6NKB5cR.js";import"./Zap-Cv-p123E.js";import"./avatar-CWZ0ixfS.js";import"./use-view-mode-Bnx_K3_C.js";function $t(i,e){const s=i.properties||{};for(const n in s){const c=s[n];if(c&&c.type==="string"&&(c.format==="url"||c.format==="uri")&&e&&typeof e=="object"&&n in e&&e[n])return e[n]}const l=["image","img","avatar","icon","logo","thumbnail","cover"];for(const n of l)if(e&&typeof e=="object"&&n in e&&typeof e[n]=="string")return e[n]}function kt(i){const e=oe.c(25),{item:s,schema:l,actions:n}=i;let c;e[0]!==s||e[1]!==l?(c=$t(l,s),e[0]=s,e[1]=l,e[2]=c):c=e[2];const r=c,p=s&&typeof s=="object"&&"description"in s&&typeof s.description=="string"?s.description:void 0;let d;e[3]!==n?(d=n&&Object.keys(n).length>0,e[3]=n,e[4]=d):d=e[4];const o=d;let m;e[5]!==r||e[6]!==s.title?(m=t.jsx(Qe,{icon:r,name:s.title,size:"md",className:"shrink-0 shadow-sm"}),e[5]=r,e[6]=s.title,e[7]=m):m=e[7];let u;e[8]!==s.title?(u=t.jsx("h3",{className:"text-base font-medium text-foreground truncate",children:s.title}),e[8]=s.title,e[9]=u):u=e[9];const f=p||"No description";let a;e[10]!==f?(a=t.jsx("p",{className:"text-base text-muted-foreground line-clamp-2",children:f}),e[10]=f,e[11]=a):a=e[11];let v;e[12]!==u||e[13]!==a?(v=t.jsxs("div",{className:"flex flex-col gap-0 flex-1",children:[u,a]}),e[12]=u,e[13]=a,e[14]=v):v=e[14];let y;e[15]!==m||e[16]!==v?(y=t.jsxs("div",{className:"flex flex-col gap-4 p-6 flex-1",children:[m,v]}),e[15]=m,e[16]=v,e[17]=y):y=e[17];let b;e[18]!==n||e[19]!==o||e[20]!==s?(b=o&&t.jsx("div",{className:"absolute top-6 right-6 sm:opacity-0 sm:group-hover:opacity-100 transition-opacity",onClick:Kt,onMouseDown:Ft,children:t.jsxs(Ye,{children:[t.jsx(He,{asChild:!0,children:t.jsx(Ce,{variant:"ghost",size:"icon",className:"h-8 w-8",onClick:Lt,children:t.jsx(Xe,{size:20})})}),t.jsxs(Je,{align:"end",onClick:zt,children:[n.open&&t.jsxs(O,{onClick:g=>{g.stopPropagation(),n.open?.(s)},children:[t.jsx(tt,{size:16}),"Open"]}),n.edit&&t.jsxs(O,{onClick:g=>{g.stopPropagation(),n.edit?.(s)},children:[t.jsx(et,{size:16}),"Edit"]}),n.duplicate&&t.jsxs(O,{onClick:g=>{g.stopPropagation(),n.duplicate?.(s)},children:[t.jsx(Ze,{size:16}),"Duplicate"]}),n.delete&&t.jsxs(O,{variant:"destructive",onClick:g=>{g.stopPropagation(),n.delete?.(s)},children:[t.jsx(st,{size:16}),"Delete"]})]})]})}),e[18]=n,e[19]=o,e[20]=s,e[21]=b):b=e[21];let x;return e[22]!==y||e[23]!==b?(x=t.jsxs(gt,{className:"cursor-pointer transition-colors hover:bg-accent/50 h-full flex flex-col group relative",children:[y,b]}),e[22]=y,e[23]=b,e[24]=x):x=e[24],x}function zt(i){return i.stopPropagation()}function Lt(i){return i.stopPropagation()}function Ft(i){return i.stopPropagation()}function Kt(i){return i.stopPropagation()}const Mt=["icon","avatar","logo"],Re=["created_at","created_by","id"];function Ut(i){return Object.keys(i).find(e=>Mt.includes(e.toLowerCase()))}function ot(i,e){return Object.keys(i.properties||{}).filter(s=>["id","created_at","updated_at","created_by","updated_by"].includes(s)?!1:e?e.includes(s):!0).map(s=>({id:s,label:s.charAt(0).toUpperCase()+s.slice(1).replace(/_/g," ")}))}function Wt(i){const e=oe.c(30),{data:s,schema:l,viewMode:n,search:c,sortKey:r,sortDirection:p,onSort:d,actions:o,onItemClick:m,headerActions:u,emptyState:f,readOnly:a,columns:v,hideToolbar:y,sortableFields:b}=i,x=p===void 0?"asc":p,g=d===void 0?qt:d;let $;e[0]!==o?($=o===void 0?{}:o,e[0]=o,e[1]=$):$=e[1];const h=$,T=m===void 0?Vt:m,E=u===void 0?null:u,N=f===void 0?null:f,k=a===void 0?!1:a,j=v===void 0?void 0:v,z=y===void 0?!1:y,P=b===void 0?void 0:b;let D;e[2]!==j||e[3]!==l||e[4]!==P?(D=j?j.filter(Bt).filter(A=>!P||P.includes(A.id)).map(Rt):ot(l,P),e[2]=j,e[3]=l,e[4]=P,e[5]=D):D=e[5];const w=D;let S;e[6]!==E||e[7]!==z||e[8]!==g||e[9]!==x||e[10]!==r||e[11]!==w?(S=!z&&t.jsx("div",{className:"shrink-0 w-full border-b border-border h-12",children:t.jsxs("div",{className:"flex items-center gap-3 h-12 px-4",children:[t.jsx("div",{className:"flex items-center gap-2 flex-1",children:E}),t.jsx("div",{className:"flex items-center gap-2 shrink-0",children:t.jsx(Ge,{sortKey:r,sortDirection:x,onSort:g,sortOptions:w})})]})}),e[6]=E,e[7]=z,e[8]=g,e[9]=x,e[10]=r,e[11]=w,e[12]=S):S=e[12];let _;e[13]!==h||e[14]!==j||e[15]!==s||e[16]!==N||e[17]!==T||e[18]!==g||e[19]!==k||e[20]!==l||e[21]!==c||e[22]!==x||e[23]!==r||e[24]!==P||e[25]!==n?(_=n==="cards"?t.jsx("div",{className:"flex-1 overflow-auto p-5",children:s.length===0?t.jsx("div",{className:"flex items-center justify-center h-full",children:N||t.jsx(Ue,{icon:t.jsx(We,{size:36,className:"text-muted-foreground"}),title:"No items found",description:c?"Try adjusting your search":"No items to display"})}):t.jsx("div",{className:"grid grid-cols-[repeat(auto-fill,minmax(280px,1fr))] gap-4",children:s.map(A=>t.jsx("div",{onClick:()=>T?.(A),className:"cursor-pointer h-full",children:t.jsx(kt,{item:A,schema:l,readOnly:k,actions:h})},A.id))})}):t.jsx(xt,{columns:Yt(j,l,P,h),data:s,sortKey:r,sortDirection:x,onSort:g,onRowClick:T,emptyState:N||t.jsx(Ue,{icon:t.jsx(We,{size:36,className:"text-muted-foreground"}),title:"No items found",description:c?"Try adjusting your search":"No items to display"})}),e[13]=h,e[14]=j,e[15]=s,e[16]=N,e[17]=T,e[18]=g,e[19]=k,e[20]=l,e[21]=c,e[22]=x,e[23]=r,e[24]=P,e[25]=n,e[26]=_):_=e[26];let I;return e[27]!==S||e[28]!==_?(I=t.jsxs("div",{className:"h-full flex flex-col overflow-hidden",children:[S,_]}),e[27]=S,e[28]=_,e[29]=I):I=e[29],I}function Rt(i){return{id:i.id,label:typeof i.header=="string"?i.header:i.id}}function Bt(i){return i.sortable!==!1}function Vt(){}function qt(){}function Gt(i){return{id:"actions",header:"",render:e=>t.jsxs(Ye,{children:[t.jsx(He,{asChild:!0,children:t.jsx(Ce,{variant:"ghost",size:"sm",className:"h-8 w-8 p-0",onClick:s=>s.stopPropagation(),children:t.jsx(Xe,{size:20})})}),t.jsxs(Je,{align:"end",onClick:s=>s.stopPropagation(),children:[i.open&&t.jsxs(O,{onClick:s=>{s.stopPropagation(),i.open?.(e)},children:[t.jsx(tt,{size:16}),"Open"]}),i.edit&&t.jsxs(O,{onClick:s=>{s.stopPropagation(),i.edit?.(e)},children:[t.jsx(et,{size:16}),"Edit"]}),i.duplicate&&t.jsxs(O,{onClick:s=>{s.stopPropagation(),i.duplicate?.(e)},children:[t.jsx(Ze,{size:16}),"Duplicate"]}),i.delete&&t.jsxs(O,{variant:"destructive",onClick:s=>{s.stopPropagation(),i.delete?.(e)},children:[t.jsx(st,{size:16}),"Delete"]})]})]}),cellClassName:"w-[60px]",sortable:!1}}function nt(i){const e=i.type;return Array.isArray(e)?e.every(s=>nt({type:s})):e==="string"||e==="number"||e==="integer"||e==="boolean"||e==="null"}function Qt(i,e){const s=i.properties||{},l=Object.keys(s).filter(o=>{const m=s[o];return m&&nt(m)}),n=Ut(s),c=[],r=new Set;n&&l.includes(n)&&(c.push(n),r.add(n));const p=["title","description","updated_at","updated_by"];for(const o of p)l.includes(o)&&!r.has(o)&&(c.push(o),r.add(o));const d=l.filter(o=>!r.has(o)&&!Re.includes(o)).sort((o,m)=>o.localeCompare(m));for(const o of d)c.push(o),r.add(o);for(const o of Re)l.includes(o)&&!r.has(o)&&(c.push(o),r.add(o));return c.map(o=>{const m=s[o],u=e?e.includes(o):!["id"].includes(o);return o===n?{id:o,header:"",render:f=>{const a=f[o];return t.jsx(Qe,{icon:a,name:f.title,size:"sm",className:"shrink-0 shadow-sm"})},sortable:!1,cellClassName:"w-16 shrink-0",wrap:!0}:o==="description"?{id:o,header:"Description",render:f=>{const a=f[o];return a==null?"—":t.jsx("span",{className:"block truncate max-w-[50ch]",children:String(a)})},sortable:u,cellClassName:"max-w-[50ch]"}:o==="created_by"||o==="updated_by"?{id:o,header:o.charAt(0).toUpperCase()+o.slice(1).replace(/_/g," "),render:f=>{const a=f[o];return a?t.jsx(jt,{id:String(a),size:"xs"}):"—"},sortable:u,cellClassName:"max-w-[250px]"}:m?.format==="date-time"||o.endsWith("_at")?{id:o,header:o.charAt(0).toUpperCase()+o.slice(1).replace(/_/g," "),render:f=>{const a=f[o];return a?t.jsx("span",{className:"block truncate max-w-full",children:new Date(a).toLocaleDateString()}):"—"},sortable:u,cellClassName:"max-w-[200px]"}:{id:o,header:o.charAt(0).toUpperCase()+o.slice(1).replace(/_/g," "),render:f=>{const a=f[o];return a==null?"—":t.jsx("span",{className:"block truncate max-w-full",children:String(a)})},sortable:u,cellClassName:"max-w-[200px]"}})}function Yt(i,e,s,l){const n=i||Qt(e,s);return n.some(p=>p.id==="actions")?n:Object.keys(l).length>0?[...n,Gt(l)]:n}function Ht(i){const e=oe.c(119),{connectionId:s,org:l,activeCollection:n,onItemClick:c}=i,r=n.name,p=n.schema??ft,d=n.hasCreateTool,o=n.hasUpdateTool,m=n.hasDeleteTool,u=Be(),{data:f}=ct.useSession(),a=f?.user?.id||"unknown",v=Tt(s);let y;e[0]!==v||e[1]!==s?(y=v?bt(v):s,e[0]=v,e[1]=s,e[2]=y):y=e[2];const b=y,{org:x}=ze();let g;e[3]!==s||e[4]!==x.id||e[5]!==x.slug?(g={connectionId:s,orgId:x.id,orgSlug:x.slug},e[3]=s,e[4]=x.id,e[5]=x.slug,e[6]=g):g=e[6];const $=Ve(g),h=It(s,r,$),T=`${s}-${r}`;let E;e[7]!==l||e[8]!==T?(E={namespace:l,resource:T,defaultSortKey:"updated_at"},e[7]=l,e[8]=T,e[9]=E):E=e[9];const{search:N,searchTerm:k,setSearch:j,viewMode:z,setViewMode:P,sortKey:D,sortDirection:w,handleSort:S}=Ct(E);let _;e[10]!==k||e[11]!==w||e[12]!==D?(_={searchTerm:k,sortKey:D,sortDirection:w},e[10]=k,e[11]=w,e[12]=D,e[13]=_):_=e[13];const I=At(s,r,$,_),A=!d&&!o&&!m;let ne;e[14]!==b||e[15]!==r||e[16]!==u||e[17]!==c||e[18]!==l?(ne=C=>{if(c){c(C);return}u({to:"/$org/settings/connections/$appSlug/$collectionName/$itemId",params:{org:l,appSlug:b,collectionName:r,itemId:C.id}})},e[14]=b,e[15]=r,e[16]=u,e[17]=c,e[18]=l,e[19]=ne):ne=e[19];const L=ne;let re;e[20]!==h.create||e[21]!==a?(re=async C=>{const xe=new Date().toISOString();await h.create.mutateAsync({...C,id:Me("conn"),title:`${C.title} (Copy)`,created_at:xe,updated_at:xe,created_by:a,updated_by:a})},e[20]=h.create,e[21]=a,e[22]=re):re=e[22];const be=re,[F,ve]=dt.useState(null);let le;e[23]===Symbol.for("react.memo_cache_sentinel")?(le=C=>{ve(C)},e[23]=le):le=e[23];const rt=le;let K;e[24]!==L||e[25]!==o?(K=o&&{edit:L},e[24]=L,e[25]=o,e[26]=K):K=e[26];let M;e[27]!==be||e[28]!==d?(M=d&&{duplicate:be},e[27]=be,e[28]=d,e[29]=M):M=e[29];let U;e[30]!==m?(U=m&&{delete:rt},e[30]=m,e[31]=U):U=e[31];let ae;e[32]!==M||e[33]!==U||e[34]!==K?(ae={...K,...M,...U},e[32]=M,e[33]=U,e[34]=K,e[35]=ae):ae=e[35];const ye=ae;let ce;e[36]!==h.delete||e[37]!==F?(ce=async()=>{F&&(await h.delete.mutateAsync(F.id),ve(null))},e[36]=h.delete,e[37]=F,e[38]=ce):ce=e[38];const Ne=ce;let de;e[39]!==h.create||e[40]!==b||e[41]!==r||e[42]!==d||e[43]!==u||e[44]!==l||e[45]!==a?(de=async()=>{if(!d){Le.error("Create operation is not available for this collection");return}const C=new Date().toISOString(),xe={id:Me("conn"),title:"New Item",description:"A brief description of the item",created_at:C,updated_at:C,created_by:a,updated_by:a};try{const ke=await h.create.mutateAsync(xe);u({to:"/$org/settings/connections/$appSlug/$collectionName/$itemId",params:{org:l,appSlug:b,collectionName:r,itemId:ke.id}})}catch(ke){console.error("Failed to create item:",ke)}},e[39]=h.create,e[40]=b,e[41]=r,e[42]=d,e[43]=u,e[44]=l,e[45]=a,e[46]=de):de=e[46];const we=de;let ue;e[47]!==p?(ue=ot(p),e[47]=p,e[48]=ue):ue=e[48];const Se=ue,lt=(I?.length??0)>0,at=d&&!lt&&!N;let me;e[49]!==h.create||e[50]!==we||e[51]!==d?(me=d?t.jsxs(Ce,{onClick:we,size:"sm",disabled:h.create.isPending,className:"h-7",children:[t.jsx(Et,{className:"mr-2 h-4 w-4"}),h.create.isPending?"Creating...":"Create"]}):null,e[49]=h.create,e[50]=we,e[51]=d,e[52]=me):me=e[52];const pe=me,Pe=D;let W;e[53]!==S||e[54]!==w||e[55]!==Se||e[56]!==Pe?(W=t.jsx(Ot,{children:t.jsx(Ge,{sortKey:Pe,sortDirection:w,onSort:S,sortOptions:Se})}),e[53]=S,e[54]=w,e[55]=Se,e[56]=Pe,e[57]=W):W=e[57];const _e=`Search ${r}...`;let R;e[58]!==j?(R=C=>{C.key==="Escape"&&(j(""),C.target.blur())},e[58]=j,e[59]=R):R=e[59];let B;e[60]!==N||e[61]!==j||e[62]!==_e||e[63]!==R?(B=t.jsx("div",{className:"flex-1",children:t.jsx(ht,{value:N,onChange:j,placeholder:_e,onKeyDown:R})}),e[60]=N,e[61]=j,e[62]=_e,e[63]=R,e[64]=B):B=e[64];let V;e[65]!==pe||e[66]!==d?(V=d&&t.jsx("div",{className:"pr-3",children:pe}),e[65]=pe,e[66]=d,e[67]=V):V=e[67];let q;e[68]!==B||e[69]!==V?(q=t.jsxs("div",{className:"flex items-center gap-2",children:[B,V]}),e[68]=B,e[69]=V,e[70]=q):q=e[70];let G;e[71]!==I?(G=I??[],e[71]=I,e[72]=G):G=e[72];const De=D;let Q;e[73]!==L?(Q=C=>L(C),e[73]=L,e[74]=Q):Q=e[74];const Ie="No items found",Ae=N?"Try adjusting your search terms":"This collection doesn't have any items yet.",Te=at?pe:void 0;let Y;e[75]!==Ie||e[76]!==Ae||e[77]!==Te?(Y=t.jsx(it,{image:null,title:Ie,description:Ae,actions:Te}),e[75]=Ie,e[76]=Ae,e[77]=Te,e[78]=Y):Y=e[78];let H;e[79]!==S||e[80]!==A||e[81]!==ye||e[82]!==p||e[83]!==N||e[84]!==j||e[85]!==P||e[86]!==w||e[87]!==G||e[88]!==De||e[89]!==Q||e[90]!==Y||e[91]!==z?(H=t.jsx("div",{className:"flex-1 overflow-auto",children:t.jsx(Wt,{hideToolbar:!0,data:G,schema:p,viewMode:z,onViewModeChange:P,search:N,onSearchChange:j,sortKey:De,sortDirection:w,onSort:S,actions:ye,onItemClick:Q,readOnly:A,emptyState:Y})}),e[79]=S,e[80]=A,e[81]=ye,e[82]=p,e[83]=N,e[84]=j,e[85]=P,e[86]=w,e[87]=G,e[88]=De,e[89]=Q,e[90]=Y,e[91]=z,e[92]=H):H=e[92];let J;e[93]!==q||e[94]!==H?(J=t.jsxs("div",{className:"flex flex-col h-full overflow-hidden",children:[q,H]}),e[93]=q,e[94]=H,e[95]=J):J=e[95];const Ee=!!F;let fe;e[96]===Symbol.for("react.memo_cache_sentinel")?(fe=C=>{C||ve(null)},e[96]=fe):fe=e[96];let he;e[97]===Symbol.for("react.memo_cache_sentinel")?(he=t.jsx(Nt,{children:"Delete item?"}),e[97]=he):he=e[97];const Oe=F?.title;let Z;e[98]!==Oe?(Z=t.jsxs(wt,{children:[he,t.jsxs(St,{children:['Are you sure you want to delete "',Oe,'"? This action cannot be undone.']})]}),e[98]=Oe,e[99]=Z):Z=e[99];let X;e[100]!==h.delete.isPending?(X=t.jsx(vt,{disabled:h.delete.isPending,children:"Cancel"}),e[100]=h.delete.isPending,e[101]=X):X=e[101];const $e=h.delete.isPending?"Deleting...":"Delete";let ee;e[102]!==h.delete.isPending||e[103]!==Ne||e[104]!==$e?(ee=t.jsx(yt,{onClick:Ne,disabled:h.delete.isPending,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:$e}),e[102]=h.delete.isPending,e[103]=Ne,e[104]=$e,e[105]=ee):ee=e[105];let te;e[106]!==X||e[107]!==ee?(te=t.jsxs(Pt,{children:[X,ee]}),e[106]=X,e[107]=ee,e[108]=te):te=e[108];let se;e[109]!==Z||e[110]!==te?(se=t.jsxs(_t,{children:[Z,te]}),e[109]=Z,e[110]=te,e[111]=se):se=e[111];let ie;e[112]!==Ee||e[113]!==se?(ie=t.jsx(Dt,{open:Ee,onOpenChange:fe,children:se}),e[112]=Ee,e[113]=se,e[114]=ie):ie=e[114];let ge;return e[115]!==W||e[116]!==J||e[117]!==ie?(ge=t.jsxs(t.Fragment,{children:[W,J,ie]}),e[115]=W,e[116]=J,e[117]=ie,e[118]=ge):ge=e[118],ge}function Jt(){const i=oe.c(13),{org:e,project:s}=ze(),l=ut();let n;i[0]!==e.id||i[1]!==e.slug?(n={connectionId:qe,orgId:e.id,orgSlug:e.slug},i[0]=e.id,i[1]=e.slug,i[2]=n):n=i[2];const c=Ve(n);let r;i[3]!==c||i[4]!==s?(r=async m=>{const u=s.enabledPlugins??[];if(u.includes(m))return;const f=[...u,m],a=await c.callTool({name:"COLLECTION_VIRTUAL_MCP_UPDATE",arguments:{id:s.id,data:{metadata:{enabled_plugins:f}}}});return a.structuredContent??a},i[3]=c,i[4]=s,i[5]=r):r=i[5];let p;i[6]!==e.id||i[7]!==s||i[8]!==l?(p=()=>{l.invalidateQueries({queryKey:Fe.project(e.id,s.slug)}),l.invalidateQueries({queryKey:Fe.projects(e.id)})},i[6]=e.id,i[7]=s,i[8]=l,i[9]=p):p=i[9];let d;return i[10]!==r||i[11]!==p?(d={mutationFn:r,onSuccess:p,onError:Zt},i[10]=r,i[11]=p,i[12]=d):d=i[12],mt(d)}function Zt(i){Le.error("Failed to enable plugin: "+(i instanceof Error?i.message:"Unknown error"))}function Xt(i){const e=oe.c(12),{pluginId:s,title:l,description:n,icon:c}=i,r=Jt();let p;e[0]!==r||e[1]!==s?(p=async()=>{try{await r.mutateAsync(s),Le.success("Plugin enabled!")}catch{}},e[0]=r,e[1]=s,e[2]=p):p=e[2];const d=p,o=c??null,m=r.isPending?"Enabling…":"Enable plugin";let u;e[3]!==r.isPending||e[4]!==d||e[5]!==m?(u=t.jsx(Ce,{onClick:d,disabled:r.isPending,children:m}),e[3]=r.isPending,e[4]=d,e[5]=m,e[6]=u):u=e[6];let f;return e[7]!==n||e[8]!==o||e[9]!==u||e[10]!==l?(f=t.jsx(it,{image:o,title:l,description:n,actions:u}),e[7]=n,e[8]=o,e[9]=u,e[10]=l,e[11]=f):f=e[11],f}const es={name:"WORKFLOW",displayName:"Workflow",hasCreateTool:!0,hasUpdateTool:!0,hasDeleteTool:!0};function ri(){const{project:i,org:e}=ze();if(!(i.enabledPlugins??[]).includes(Ke))return t.jsx(je,{children:t.jsx(je.Content,{children:t.jsx("div",{className:"flex flex-col items-center justify-center h-full",children:t.jsx(Xt,{pluginId:Ke,title:"Enable Workflows",description:"Automate multi-step processes by enabling the Workflows plugin. Once enabled you can create, run, and monitor workflows.",icon:t.jsx("div",{className:"bg-muted p-4 rounded-full",children:t.jsx(pt,{className:"size-8 text-muted-foreground"})})})})})});const n=Be();return t.jsx(je,{children:t.jsx(je.Content,{children:t.jsx(Ht,{connectionId:qe,org:e.slug,activeCollection:es,onItemClick:c=>n({to:"/$org/settings/workflows/$itemId",params:{org:e.slug,itemId:c.id}})})})})}export{ri as default};
|
|
1
|
+
import{e as oe,j as t,B as Ce,f as Be,b as ct,s as ze,r as dt,x as Le,o as ut,a as mt,K as Fe,Y as Ke,Z as pt}from"./index-C4DcQ8LW.js";import{u as Ve,S as qe}from"./constants--Dugzbiv.js";import{B as ft,g as Me}from"./constants-CK0eEQbn.js";import{C as Ge}from"./collection-display-button-DTW3X--x.js";import{C as ht}from"./collection-search-DzJ2_6S7.js";import{C as gt}from"./card-DQgc505G.js";import{I as Qe}from"./integration-icon-dIK4SySX.js";import{D as Ye,a as He,b as Je,c as O}from"./dropdown-menu-DQ7iI93C.js";import{c as Ze}from"./XCircle-DX3ew0Vv.js";import{i as Xe}from"./DotsVertical-B7yU948Y.js";import{i as et}from"./Tool01-CKIVHH97.js";import{s as tt}from"./RefreshCcw01-BS-aU6o_.js";import{s as st}from"./Trash01-CGR2s5lX.js";import{C as xt}from"./collection-table-wrapper-D6-pSdID.js";import{E as Ue}from"./empty-state-CKzOWRtK.js";import{G as We}from"./agent-icon-C5r21-mU.js";import{U as jt}from"./user-CrGRA0V7.js";import{E as it}from"./empty-state-D_f63UFh.js";import{u as Ct}from"./use-list-state-wzK4SDnM.js";import{g as bt}from"./connection-slug-eyAPH6o3.js";import{f as vt,g as yt,c as Nt,b as wt,d as St,e as Pt,a as _t,A as Dt}from"./alert-dialog-CUlBW44D.js";import{a as It,c as At}from"./use-collections-CeVghh3K.js";import{a as Tt}from"./use-connection-Cyq0iJ5j.js";import{s as Et}from"./Plus-LaAbD5qL.js";import{a as Ot}from"./layout-DoXFaFc9.js";import{P as je}from"./index-C1CY6-RI.js";import"./collections-C9L2aOYp.js";import"./XClose-Bgl_mrN0.js";import"./Check-C0YCNcAk.js";import"./tooltip-CC8e8bYw.js";import"./view-mode-toggle-DlPw4C1T.js";import"./badge-Br91qQU7.js";import"./SearchMd-DLpvei6Y.js";import"./Container-Bk9UG2qc.js";import"./ChevronRight-CrWz1sFy.js";import"./table-B_6GznCu.js";import"./AlertCircle-9Ey0HjEK.js";import"./Archive-DPagM8Sv.js";import"./ArrowNarrowLeft-CX80utcZ.js";import"./ArrowUpRight-Dnm-Dm1H.js";import"./ZapSquare-3WrsQC0a.js";import"./Users03-CrFC9gy5.js";import"./CheckCircle-DC6iqfFI.js";import"./ChevronDown-Cwqb-1uD.js";import"./ChevronUp-BMBmNR0B.js";import"./Star01-Dr3hv_f2.js";import"./Palette-BhAbwiYB.js";import"./LinkExternal01-DxfMOMNm.js";import"./Lock01-Cds15CcD.js";import"./Sun-Cjk_RdSq.js";import"./Play-DT05vsyX.js";import"./Settings02-DIJ_hqNi.js";import"./Shield01-B0gusvIt.js";import"./User01-TUOjLrvV.js";import"./X-EkEnxljM.js";import"./Zap-nGrPPn6s.js";import"./avatar-CCEBXDhS.js";import"./use-view-mode-BqpScb5m.js";function $t(i,e){const s=i.properties||{};for(const n in s){const c=s[n];if(c&&c.type==="string"&&(c.format==="url"||c.format==="uri")&&e&&typeof e=="object"&&n in e&&e[n])return e[n]}const l=["image","img","avatar","icon","logo","thumbnail","cover"];for(const n of l)if(e&&typeof e=="object"&&n in e&&typeof e[n]=="string")return e[n]}function kt(i){const e=oe.c(25),{item:s,schema:l,actions:n}=i;let c;e[0]!==s||e[1]!==l?(c=$t(l,s),e[0]=s,e[1]=l,e[2]=c):c=e[2];const r=c,p=s&&typeof s=="object"&&"description"in s&&typeof s.description=="string"?s.description:void 0;let d;e[3]!==n?(d=n&&Object.keys(n).length>0,e[3]=n,e[4]=d):d=e[4];const o=d;let m;e[5]!==r||e[6]!==s.title?(m=t.jsx(Qe,{icon:r,name:s.title,size:"md",className:"shrink-0 shadow-sm"}),e[5]=r,e[6]=s.title,e[7]=m):m=e[7];let u;e[8]!==s.title?(u=t.jsx("h3",{className:"text-base font-medium text-foreground truncate",children:s.title}),e[8]=s.title,e[9]=u):u=e[9];const f=p||"No description";let a;e[10]!==f?(a=t.jsx("p",{className:"text-base text-muted-foreground line-clamp-2",children:f}),e[10]=f,e[11]=a):a=e[11];let v;e[12]!==u||e[13]!==a?(v=t.jsxs("div",{className:"flex flex-col gap-0 flex-1",children:[u,a]}),e[12]=u,e[13]=a,e[14]=v):v=e[14];let y;e[15]!==m||e[16]!==v?(y=t.jsxs("div",{className:"flex flex-col gap-4 p-6 flex-1",children:[m,v]}),e[15]=m,e[16]=v,e[17]=y):y=e[17];let b;e[18]!==n||e[19]!==o||e[20]!==s?(b=o&&t.jsx("div",{className:"absolute top-6 right-6 sm:opacity-0 sm:group-hover:opacity-100 transition-opacity",onClick:Kt,onMouseDown:Ft,children:t.jsxs(Ye,{children:[t.jsx(He,{asChild:!0,children:t.jsx(Ce,{variant:"ghost",size:"icon",className:"h-8 w-8",onClick:Lt,children:t.jsx(Xe,{size:20})})}),t.jsxs(Je,{align:"end",onClick:zt,children:[n.open&&t.jsxs(O,{onClick:g=>{g.stopPropagation(),n.open?.(s)},children:[t.jsx(tt,{size:16}),"Open"]}),n.edit&&t.jsxs(O,{onClick:g=>{g.stopPropagation(),n.edit?.(s)},children:[t.jsx(et,{size:16}),"Edit"]}),n.duplicate&&t.jsxs(O,{onClick:g=>{g.stopPropagation(),n.duplicate?.(s)},children:[t.jsx(Ze,{size:16}),"Duplicate"]}),n.delete&&t.jsxs(O,{variant:"destructive",onClick:g=>{g.stopPropagation(),n.delete?.(s)},children:[t.jsx(st,{size:16}),"Delete"]})]})]})}),e[18]=n,e[19]=o,e[20]=s,e[21]=b):b=e[21];let x;return e[22]!==y||e[23]!==b?(x=t.jsxs(gt,{className:"cursor-pointer transition-colors hover:bg-accent/50 h-full flex flex-col group relative",children:[y,b]}),e[22]=y,e[23]=b,e[24]=x):x=e[24],x}function zt(i){return i.stopPropagation()}function Lt(i){return i.stopPropagation()}function Ft(i){return i.stopPropagation()}function Kt(i){return i.stopPropagation()}const Mt=["icon","avatar","logo"],Re=["created_at","created_by","id"];function Ut(i){return Object.keys(i).find(e=>Mt.includes(e.toLowerCase()))}function ot(i,e){return Object.keys(i.properties||{}).filter(s=>["id","created_at","updated_at","created_by","updated_by"].includes(s)?!1:e?e.includes(s):!0).map(s=>({id:s,label:s.charAt(0).toUpperCase()+s.slice(1).replace(/_/g," ")}))}function Wt(i){const e=oe.c(30),{data:s,schema:l,viewMode:n,search:c,sortKey:r,sortDirection:p,onSort:d,actions:o,onItemClick:m,headerActions:u,emptyState:f,readOnly:a,columns:v,hideToolbar:y,sortableFields:b}=i,x=p===void 0?"asc":p,g=d===void 0?qt:d;let $;e[0]!==o?($=o===void 0?{}:o,e[0]=o,e[1]=$):$=e[1];const h=$,T=m===void 0?Vt:m,E=u===void 0?null:u,N=f===void 0?null:f,k=a===void 0?!1:a,j=v===void 0?void 0:v,z=y===void 0?!1:y,P=b===void 0?void 0:b;let D;e[2]!==j||e[3]!==l||e[4]!==P?(D=j?j.filter(Bt).filter(A=>!P||P.includes(A.id)).map(Rt):ot(l,P),e[2]=j,e[3]=l,e[4]=P,e[5]=D):D=e[5];const w=D;let S;e[6]!==E||e[7]!==z||e[8]!==g||e[9]!==x||e[10]!==r||e[11]!==w?(S=!z&&t.jsx("div",{className:"shrink-0 w-full border-b border-border h-12",children:t.jsxs("div",{className:"flex items-center gap-3 h-12 px-4",children:[t.jsx("div",{className:"flex items-center gap-2 flex-1",children:E}),t.jsx("div",{className:"flex items-center gap-2 shrink-0",children:t.jsx(Ge,{sortKey:r,sortDirection:x,onSort:g,sortOptions:w})})]})}),e[6]=E,e[7]=z,e[8]=g,e[9]=x,e[10]=r,e[11]=w,e[12]=S):S=e[12];let _;e[13]!==h||e[14]!==j||e[15]!==s||e[16]!==N||e[17]!==T||e[18]!==g||e[19]!==k||e[20]!==l||e[21]!==c||e[22]!==x||e[23]!==r||e[24]!==P||e[25]!==n?(_=n==="cards"?t.jsx("div",{className:"flex-1 overflow-auto p-5",children:s.length===0?t.jsx("div",{className:"flex items-center justify-center h-full",children:N||t.jsx(Ue,{icon:t.jsx(We,{size:36,className:"text-muted-foreground"}),title:"No items found",description:c?"Try adjusting your search":"No items to display"})}):t.jsx("div",{className:"grid grid-cols-[repeat(auto-fill,minmax(280px,1fr))] gap-4",children:s.map(A=>t.jsx("div",{onClick:()=>T?.(A),className:"cursor-pointer h-full",children:t.jsx(kt,{item:A,schema:l,readOnly:k,actions:h})},A.id))})}):t.jsx(xt,{columns:Yt(j,l,P,h),data:s,sortKey:r,sortDirection:x,onSort:g,onRowClick:T,emptyState:N||t.jsx(Ue,{icon:t.jsx(We,{size:36,className:"text-muted-foreground"}),title:"No items found",description:c?"Try adjusting your search":"No items to display"})}),e[13]=h,e[14]=j,e[15]=s,e[16]=N,e[17]=T,e[18]=g,e[19]=k,e[20]=l,e[21]=c,e[22]=x,e[23]=r,e[24]=P,e[25]=n,e[26]=_):_=e[26];let I;return e[27]!==S||e[28]!==_?(I=t.jsxs("div",{className:"h-full flex flex-col overflow-hidden",children:[S,_]}),e[27]=S,e[28]=_,e[29]=I):I=e[29],I}function Rt(i){return{id:i.id,label:typeof i.header=="string"?i.header:i.id}}function Bt(i){return i.sortable!==!1}function Vt(){}function qt(){}function Gt(i){return{id:"actions",header:"",render:e=>t.jsxs(Ye,{children:[t.jsx(He,{asChild:!0,children:t.jsx(Ce,{variant:"ghost",size:"sm",className:"h-8 w-8 p-0",onClick:s=>s.stopPropagation(),children:t.jsx(Xe,{size:20})})}),t.jsxs(Je,{align:"end",onClick:s=>s.stopPropagation(),children:[i.open&&t.jsxs(O,{onClick:s=>{s.stopPropagation(),i.open?.(e)},children:[t.jsx(tt,{size:16}),"Open"]}),i.edit&&t.jsxs(O,{onClick:s=>{s.stopPropagation(),i.edit?.(e)},children:[t.jsx(et,{size:16}),"Edit"]}),i.duplicate&&t.jsxs(O,{onClick:s=>{s.stopPropagation(),i.duplicate?.(e)},children:[t.jsx(Ze,{size:16}),"Duplicate"]}),i.delete&&t.jsxs(O,{variant:"destructive",onClick:s=>{s.stopPropagation(),i.delete?.(e)},children:[t.jsx(st,{size:16}),"Delete"]})]})]}),cellClassName:"w-[60px]",sortable:!1}}function nt(i){const e=i.type;return Array.isArray(e)?e.every(s=>nt({type:s})):e==="string"||e==="number"||e==="integer"||e==="boolean"||e==="null"}function Qt(i,e){const s=i.properties||{},l=Object.keys(s).filter(o=>{const m=s[o];return m&&nt(m)}),n=Ut(s),c=[],r=new Set;n&&l.includes(n)&&(c.push(n),r.add(n));const p=["title","description","updated_at","updated_by"];for(const o of p)l.includes(o)&&!r.has(o)&&(c.push(o),r.add(o));const d=l.filter(o=>!r.has(o)&&!Re.includes(o)).sort((o,m)=>o.localeCompare(m));for(const o of d)c.push(o),r.add(o);for(const o of Re)l.includes(o)&&!r.has(o)&&(c.push(o),r.add(o));return c.map(o=>{const m=s[o],u=e?e.includes(o):!["id"].includes(o);return o===n?{id:o,header:"",render:f=>{const a=f[o];return t.jsx(Qe,{icon:a,name:f.title,size:"sm",className:"shrink-0 shadow-sm"})},sortable:!1,cellClassName:"w-16 shrink-0",wrap:!0}:o==="description"?{id:o,header:"Description",render:f=>{const a=f[o];return a==null?"—":t.jsx("span",{className:"block truncate max-w-[50ch]",children:String(a)})},sortable:u,cellClassName:"max-w-[50ch]"}:o==="created_by"||o==="updated_by"?{id:o,header:o.charAt(0).toUpperCase()+o.slice(1).replace(/_/g," "),render:f=>{const a=f[o];return a?t.jsx(jt,{id:String(a),size:"xs"}):"—"},sortable:u,cellClassName:"max-w-[250px]"}:m?.format==="date-time"||o.endsWith("_at")?{id:o,header:o.charAt(0).toUpperCase()+o.slice(1).replace(/_/g," "),render:f=>{const a=f[o];return a?t.jsx("span",{className:"block truncate max-w-full",children:new Date(a).toLocaleDateString()}):"—"},sortable:u,cellClassName:"max-w-[200px]"}:{id:o,header:o.charAt(0).toUpperCase()+o.slice(1).replace(/_/g," "),render:f=>{const a=f[o];return a==null?"—":t.jsx("span",{className:"block truncate max-w-full",children:String(a)})},sortable:u,cellClassName:"max-w-[200px]"}})}function Yt(i,e,s,l){const n=i||Qt(e,s);return n.some(p=>p.id==="actions")?n:Object.keys(l).length>0?[...n,Gt(l)]:n}function Ht(i){const e=oe.c(119),{connectionId:s,org:l,activeCollection:n,onItemClick:c}=i,r=n.name,p=n.schema??ft,d=n.hasCreateTool,o=n.hasUpdateTool,m=n.hasDeleteTool,u=Be(),{data:f}=ct.useSession(),a=f?.user?.id||"unknown",v=Tt(s);let y;e[0]!==v||e[1]!==s?(y=v?bt(v):s,e[0]=v,e[1]=s,e[2]=y):y=e[2];const b=y,{org:x}=ze();let g;e[3]!==s||e[4]!==x.id||e[5]!==x.slug?(g={connectionId:s,orgId:x.id,orgSlug:x.slug},e[3]=s,e[4]=x.id,e[5]=x.slug,e[6]=g):g=e[6];const $=Ve(g),h=It(s,r,$),T=`${s}-${r}`;let E;e[7]!==l||e[8]!==T?(E={namespace:l,resource:T,defaultSortKey:"updated_at"},e[7]=l,e[8]=T,e[9]=E):E=e[9];const{search:N,searchTerm:k,setSearch:j,viewMode:z,setViewMode:P,sortKey:D,sortDirection:w,handleSort:S}=Ct(E);let _;e[10]!==k||e[11]!==w||e[12]!==D?(_={searchTerm:k,sortKey:D,sortDirection:w},e[10]=k,e[11]=w,e[12]=D,e[13]=_):_=e[13];const I=At(s,r,$,_),A=!d&&!o&&!m;let ne;e[14]!==b||e[15]!==r||e[16]!==u||e[17]!==c||e[18]!==l?(ne=C=>{if(c){c(C);return}u({to:"/$org/settings/connections/$appSlug/$collectionName/$itemId",params:{org:l,appSlug:b,collectionName:r,itemId:C.id}})},e[14]=b,e[15]=r,e[16]=u,e[17]=c,e[18]=l,e[19]=ne):ne=e[19];const L=ne;let re;e[20]!==h.create||e[21]!==a?(re=async C=>{const xe=new Date().toISOString();await h.create.mutateAsync({...C,id:Me("conn"),title:`${C.title} (Copy)`,created_at:xe,updated_at:xe,created_by:a,updated_by:a})},e[20]=h.create,e[21]=a,e[22]=re):re=e[22];const be=re,[F,ve]=dt.useState(null);let le;e[23]===Symbol.for("react.memo_cache_sentinel")?(le=C=>{ve(C)},e[23]=le):le=e[23];const rt=le;let K;e[24]!==L||e[25]!==o?(K=o&&{edit:L},e[24]=L,e[25]=o,e[26]=K):K=e[26];let M;e[27]!==be||e[28]!==d?(M=d&&{duplicate:be},e[27]=be,e[28]=d,e[29]=M):M=e[29];let U;e[30]!==m?(U=m&&{delete:rt},e[30]=m,e[31]=U):U=e[31];let ae;e[32]!==M||e[33]!==U||e[34]!==K?(ae={...K,...M,...U},e[32]=M,e[33]=U,e[34]=K,e[35]=ae):ae=e[35];const ye=ae;let ce;e[36]!==h.delete||e[37]!==F?(ce=async()=>{F&&(await h.delete.mutateAsync(F.id),ve(null))},e[36]=h.delete,e[37]=F,e[38]=ce):ce=e[38];const Ne=ce;let de;e[39]!==h.create||e[40]!==b||e[41]!==r||e[42]!==d||e[43]!==u||e[44]!==l||e[45]!==a?(de=async()=>{if(!d){Le.error("Create operation is not available for this collection");return}const C=new Date().toISOString(),xe={id:Me("conn"),title:"New Item",description:"A brief description of the item",created_at:C,updated_at:C,created_by:a,updated_by:a};try{const ke=await h.create.mutateAsync(xe);u({to:"/$org/settings/connections/$appSlug/$collectionName/$itemId",params:{org:l,appSlug:b,collectionName:r,itemId:ke.id}})}catch(ke){console.error("Failed to create item:",ke)}},e[39]=h.create,e[40]=b,e[41]=r,e[42]=d,e[43]=u,e[44]=l,e[45]=a,e[46]=de):de=e[46];const we=de;let ue;e[47]!==p?(ue=ot(p),e[47]=p,e[48]=ue):ue=e[48];const Se=ue,lt=(I?.length??0)>0,at=d&&!lt&&!N;let me;e[49]!==h.create||e[50]!==we||e[51]!==d?(me=d?t.jsxs(Ce,{onClick:we,size:"sm",disabled:h.create.isPending,className:"h-7",children:[t.jsx(Et,{className:"mr-2 h-4 w-4"}),h.create.isPending?"Creating...":"Create"]}):null,e[49]=h.create,e[50]=we,e[51]=d,e[52]=me):me=e[52];const pe=me,Pe=D;let W;e[53]!==S||e[54]!==w||e[55]!==Se||e[56]!==Pe?(W=t.jsx(Ot,{children:t.jsx(Ge,{sortKey:Pe,sortDirection:w,onSort:S,sortOptions:Se})}),e[53]=S,e[54]=w,e[55]=Se,e[56]=Pe,e[57]=W):W=e[57];const _e=`Search ${r}...`;let R;e[58]!==j?(R=C=>{C.key==="Escape"&&(j(""),C.target.blur())},e[58]=j,e[59]=R):R=e[59];let B;e[60]!==N||e[61]!==j||e[62]!==_e||e[63]!==R?(B=t.jsx("div",{className:"flex-1",children:t.jsx(ht,{value:N,onChange:j,placeholder:_e,onKeyDown:R})}),e[60]=N,e[61]=j,e[62]=_e,e[63]=R,e[64]=B):B=e[64];let V;e[65]!==pe||e[66]!==d?(V=d&&t.jsx("div",{className:"pr-3",children:pe}),e[65]=pe,e[66]=d,e[67]=V):V=e[67];let q;e[68]!==B||e[69]!==V?(q=t.jsxs("div",{className:"flex items-center gap-2",children:[B,V]}),e[68]=B,e[69]=V,e[70]=q):q=e[70];let G;e[71]!==I?(G=I??[],e[71]=I,e[72]=G):G=e[72];const De=D;let Q;e[73]!==L?(Q=C=>L(C),e[73]=L,e[74]=Q):Q=e[74];const Ie="No items found",Ae=N?"Try adjusting your search terms":"This collection doesn't have any items yet.",Te=at?pe:void 0;let Y;e[75]!==Ie||e[76]!==Ae||e[77]!==Te?(Y=t.jsx(it,{image:null,title:Ie,description:Ae,actions:Te}),e[75]=Ie,e[76]=Ae,e[77]=Te,e[78]=Y):Y=e[78];let H;e[79]!==S||e[80]!==A||e[81]!==ye||e[82]!==p||e[83]!==N||e[84]!==j||e[85]!==P||e[86]!==w||e[87]!==G||e[88]!==De||e[89]!==Q||e[90]!==Y||e[91]!==z?(H=t.jsx("div",{className:"flex-1 overflow-auto",children:t.jsx(Wt,{hideToolbar:!0,data:G,schema:p,viewMode:z,onViewModeChange:P,search:N,onSearchChange:j,sortKey:De,sortDirection:w,onSort:S,actions:ye,onItemClick:Q,readOnly:A,emptyState:Y})}),e[79]=S,e[80]=A,e[81]=ye,e[82]=p,e[83]=N,e[84]=j,e[85]=P,e[86]=w,e[87]=G,e[88]=De,e[89]=Q,e[90]=Y,e[91]=z,e[92]=H):H=e[92];let J;e[93]!==q||e[94]!==H?(J=t.jsxs("div",{className:"flex flex-col h-full overflow-hidden",children:[q,H]}),e[93]=q,e[94]=H,e[95]=J):J=e[95];const Ee=!!F;let fe;e[96]===Symbol.for("react.memo_cache_sentinel")?(fe=C=>{C||ve(null)},e[96]=fe):fe=e[96];let he;e[97]===Symbol.for("react.memo_cache_sentinel")?(he=t.jsx(Nt,{children:"Delete item?"}),e[97]=he):he=e[97];const Oe=F?.title;let Z;e[98]!==Oe?(Z=t.jsxs(wt,{children:[he,t.jsxs(St,{children:['Are you sure you want to delete "',Oe,'"? This action cannot be undone.']})]}),e[98]=Oe,e[99]=Z):Z=e[99];let X;e[100]!==h.delete.isPending?(X=t.jsx(vt,{disabled:h.delete.isPending,children:"Cancel"}),e[100]=h.delete.isPending,e[101]=X):X=e[101];const $e=h.delete.isPending?"Deleting...":"Delete";let ee;e[102]!==h.delete.isPending||e[103]!==Ne||e[104]!==$e?(ee=t.jsx(yt,{onClick:Ne,disabled:h.delete.isPending,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:$e}),e[102]=h.delete.isPending,e[103]=Ne,e[104]=$e,e[105]=ee):ee=e[105];let te;e[106]!==X||e[107]!==ee?(te=t.jsxs(Pt,{children:[X,ee]}),e[106]=X,e[107]=ee,e[108]=te):te=e[108];let se;e[109]!==Z||e[110]!==te?(se=t.jsxs(_t,{children:[Z,te]}),e[109]=Z,e[110]=te,e[111]=se):se=e[111];let ie;e[112]!==Ee||e[113]!==se?(ie=t.jsx(Dt,{open:Ee,onOpenChange:fe,children:se}),e[112]=Ee,e[113]=se,e[114]=ie):ie=e[114];let ge;return e[115]!==W||e[116]!==J||e[117]!==ie?(ge=t.jsxs(t.Fragment,{children:[W,J,ie]}),e[115]=W,e[116]=J,e[117]=ie,e[118]=ge):ge=e[118],ge}function Jt(){const i=oe.c(13),{org:e,project:s}=ze(),l=ut();let n;i[0]!==e.id||i[1]!==e.slug?(n={connectionId:qe,orgId:e.id,orgSlug:e.slug},i[0]=e.id,i[1]=e.slug,i[2]=n):n=i[2];const c=Ve(n);let r;i[3]!==c||i[4]!==s?(r=async m=>{const u=s.enabledPlugins??[];if(u.includes(m))return;const f=[...u,m],a=await c.callTool({name:"COLLECTION_VIRTUAL_MCP_UPDATE",arguments:{id:s.id,data:{metadata:{enabled_plugins:f}}}});return a.structuredContent??a},i[3]=c,i[4]=s,i[5]=r):r=i[5];let p;i[6]!==e.id||i[7]!==s||i[8]!==l?(p=()=>{l.invalidateQueries({queryKey:Fe.project(e.id,s.slug)}),l.invalidateQueries({queryKey:Fe.projects(e.id)})},i[6]=e.id,i[7]=s,i[8]=l,i[9]=p):p=i[9];let d;return i[10]!==r||i[11]!==p?(d={mutationFn:r,onSuccess:p,onError:Zt},i[10]=r,i[11]=p,i[12]=d):d=i[12],mt(d)}function Zt(i){Le.error("Failed to enable plugin: "+(i instanceof Error?i.message:"Unknown error"))}function Xt(i){const e=oe.c(12),{pluginId:s,title:l,description:n,icon:c}=i,r=Jt();let p;e[0]!==r||e[1]!==s?(p=async()=>{try{await r.mutateAsync(s),Le.success("Plugin enabled!")}catch{}},e[0]=r,e[1]=s,e[2]=p):p=e[2];const d=p,o=c??null,m=r.isPending?"Enabling…":"Enable plugin";let u;e[3]!==r.isPending||e[4]!==d||e[5]!==m?(u=t.jsx(Ce,{onClick:d,disabled:r.isPending,children:m}),e[3]=r.isPending,e[4]=d,e[5]=m,e[6]=u):u=e[6];let f;return e[7]!==n||e[8]!==o||e[9]!==u||e[10]!==l?(f=t.jsx(it,{image:o,title:l,description:n,actions:u}),e[7]=n,e[8]=o,e[9]=u,e[10]=l,e[11]=f):f=e[11],f}const es={name:"WORKFLOW",displayName:"Workflow",hasCreateTool:!0,hasUpdateTool:!0,hasDeleteTool:!0};function ri(){const{project:i,org:e}=ze();if(!(i.enabledPlugins??[]).includes(Ke))return t.jsx(je,{children:t.jsx(je.Content,{children:t.jsx("div",{className:"flex flex-col items-center justify-center h-full",children:t.jsx(Xt,{pluginId:Ke,title:"Enable Workflows",description:"Automate multi-step processes by enabling the Workflows plugin. Once enabled you can create, run, and monitor workflows.",icon:t.jsx("div",{className:"bg-muted p-4 rounded-full",children:t.jsx(pt,{className:"size-8 text-muted-foreground"})})})})})});const n=Be();return t.jsx(je,{children:t.jsx(je.Content,{children:t.jsx(Ht,{connectionId:qe,org:e.slug,activeCollection:es,onItemClick:c=>n({to:"/$org/settings/workflows/$itemId",params:{org:e.slug,itemId:c.id}})})})})}export{ri as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{e as s,g as l,j as o,l as a,E as n,r as c}from"./index-C4DcQ8LW.js";import{a as f}from"./index-C7x_kc-H.js";import"./index-CwEMRsg9.js";import"./constants--Dugzbiv.js";import"./collections-C9L2aOYp.js";import"./index-D2MseDzL.js";import"./use-virtual-mcp-DA2HdrC3.js";import"./use-collections-CeVghh3K.js";import"./monaco-editor-BluEEKw9.js";import"./index-DUyJmZSw.js";import"./accordion-CVBGYkjx.js";import"./agent-icon-C5r21-mU.js";import"./AlertCircle-9Ey0HjEK.js";import"./Tool01-CKIVHH97.js";import"./Archive-DPagM8Sv.js";import"./XClose-Bgl_mrN0.js";import"./RefreshCcw01-BS-aU6o_.js";import"./ArrowNarrowLeft-CX80utcZ.js";import"./XCircle-DX3ew0Vv.js";import"./ArrowUpRight-Dnm-Dm1H.js";import"./ZapSquare-3WrsQC0a.js";import"./Users03-CrFC9gy5.js";import"./CheckCircle-DC6iqfFI.js";import"./Check-C0YCNcAk.js";import"./ChevronDown-Cwqb-1uD.js";import"./ChevronRight-CrWz1sFy.js";import"./ChevronUp-BMBmNR0B.js";import"./DotsVertical-B7yU948Y.js";import"./Container-Bk9UG2qc.js";import"./Star01-Dr3hv_f2.js";import"./Palette-BhAbwiYB.js";import"./SearchMd-DLpvei6Y.js";import"./index-C1CY6-RI.js";import"./tooltip-CC8e8bYw.js";import"./X-EkEnxljM.js";import"./LinkExternal01-DxfMOMNm.js";import"./Lock01-Cds15CcD.js";import"./Sun-Cjk_RdSq.js";import"./Play-DT05vsyX.js";import"./Plus-LaAbD5qL.js";import"./Settings02-DIJ_hqNi.js";import"./Shield01-B0gusvIt.js";import"./Trash01-CGR2s5lX.js";import"./User01-TUOjLrvV.js";import"./Zap-nGrPPn6s.js";import"./badge-Br91qQU7.js";import"./select-CdC5gLdi.js";import"./view-mode-toggle-DlPw4C1T.js";import"./layout-DoXFaFc9.js";import"./use-connection-Cyq0iJ5j.js";import"./use-mcp-tools-CPgnB2kL.js";import"./dialog-BxXbq3AD.js";import"./index-CpyFP_Y6.js";import"./dropdown-menu-DQ7iI93C.js";import"./integration-icon-dIK4SySX.js";import"./scroll-area-DDk0Exbn.js";import"./index-CeMlJGK7.js";import"./empty-state-CKzOWRtK.js";import"./create-sse-subscription-CxkOgzKf.js";import"./input-Zc7XqLBz.js";function Et(){const t=s.c(4);let r;t[0]===Symbol.for("react.memo_cache_sentinel")?(r={from:"/shell/$org/settings/workflows/$itemId"},t[0]=r):r=t[0];const{itemId:e}=l(r);let i;t[1]===Symbol.for("react.memo_cache_sentinel")?(i=o.jsx("div",{className:"flex h-full items-center justify-center",children:o.jsx(a,{size:32,className:"animate-spin text-muted-foreground"})}),t[1]=i):i=t[1];const p=decodeURIComponent(e);let m;return t[2]!==p?(m=o.jsx(n,{children:o.jsx(c.Suspense,{fallback:i,children:o.jsx(f,{itemId:p})})}),t[2]=p,t[3]=m):m=t[3],m}export{Et as default};
|
package/dist/client/index.html
CHANGED
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
|
28
28
|
<link rel="manifest" href="/manifest.webmanifest" />
|
|
29
29
|
<meta name="theme-color" content="#D0EC1A" />
|
|
30
|
-
<script type="module" crossorigin src="/assets/index-
|
|
30
|
+
<script type="module" crossorigin src="/assets/index-C4DcQ8LW.js"></script>
|
|
31
31
|
<link rel="stylesheet" crossorigin href="/assets/index-CpHJcJk3.css">
|
|
32
32
|
</head>
|
|
33
33
|
<body>
|
package/dist/server/cli.js
CHANGED
|
@@ -1643,7 +1643,7 @@ AS SELECT
|
|
|
1643
1643
|
FROM monitoring_metrics
|
|
1644
1644
|
GROUP BY organization_id, name, bucket, connection_id, tool_name, status
|
|
1645
1645
|
`}),console.log("[clickhouse-schema] monitoring_metrics_rollup_1m_mv view ready")}finally{await G.close()}}catch(Y){console.error("[clickhouse-schema] Failed to create rollup DDL (queries will fall back to raw table):",Y)}}async function iA1(X){let Y={...process.env},G=e$1(X,Y),Q=G.settings.encryptionKey;console.log(`[settings] ENCRYPTION_KEY = ${JSON.stringify(Q)} (${Q.length} chars)`);let{ensureServices:J}=await Promise.resolve().then(() => (l$1(),u$1)),{outputs:W,services:Z}=await J({home:G.settings.dataDir,externalDatabaseUrl:G.externalDatabaseUrl,externalNatsUrl:G.externalNatsUrl});if(!G.skipMigrations){let{migrateBetterAuth:K}=await Promise.resolve().then(() => (YW0(),Jg4));await K(W.databaseUrl);let{createDatabase:H}=await Promise.resolve().then(() => (ZU(),Qg4)),{migrateToLatest:U}=await Promise.resolve().then(() => (Us4(),Fs4)),B=H(W.databaseUrl);await U({keepOpen:!0,database:B,skipBetterAuth:!0})}if(G.settings.clickhouseUrl){let{ensureClickHouseRollup:K}=await Promise.resolve().then(() => B16);await K(G.settings.clickhouseUrl)}let $={...G.settings,databaseUrl:W.databaseUrl,natsUrls:W.natsUrls};return xt1($),{settings:$,services:Z.map((K)=>({name:K.name==="PostgreSQL"?"Postgres":K.name,port:K.port})),managedServiceNames:Z.filter((K)=>K.owner==="managed").map((K)=>K.name)}}var kN0=w(()=>{yt1();l9()});var tA1={};T0(tA1,{updateService:()=>Ya,toggleViewMode:()=>vN0,toggleVibeState:()=>fN0,toggleLogFlow:()=>_N0,subscribeCliState:()=>CX1,setVibe:()=>Ya5,setTuiConsoleIntercepted:()=>pA1,setServerUrl:()=>_X1,setMigrationsDone:()=>vX1,setEnv:()=>fX1,setDevMode:()=>et5,setDataDir:()=>Xa5,isTuiConsoleIntercepted:()=>nA1,getCliState:()=>kX1,addLogEntry:()=>Wz});function TU(){for(let X of CN0)X()}function kX1(){return e9}function CX1(X){return CN0.add(X),()=>CN0.delete(X)}function Ya(X){e9={...e9,services:e9.services.map((Y)=>Y.name===X.name?X:Y)},TU()}function vX1(){e9={...e9,migrationsStatus:"done"},TU()}function _X1(X){e9={...e9,serverUrl:X},TU()}function fX1(X){e9={...e9,env:X},TU()}function Wz(X){let Y=[...e9.logs,X];e9={...e9,logs:Y.length>500?Y.slice(-500):Y},TU()}function et5(){e9={...e9,services:[...e9.services,{name:"Vite",status:"pending",port:0}]},TU()}function vN0(){e9={...e9,viewMode:e9.viewMode==="requests"?"config":"requests"},TU()}function _N0(){e9={...e9,logFlow:!e9.logFlow},TU()}function Xa5(X){e9={...e9,dataDir:X},TU()}function Ya5(X){e9={...e9,vibe:X},TU()}function fN0(){e9={...e9,vibe:!e9.vibe},TU()}function pA1(X){N16=X}function nA1(){return N16}var e9,CN0,N16=!1;var $z=w(()=>{e9={services:[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}],migrationsStatus:"pending",serverUrl:null,env:null,logs:[],viewMode:"requests",logFlow:!1,vibe:!1,dataDir:null},CN0=new Set});import{createServer as z16}from"net";function Ga5(X){return new Promise((Y)=>{let G=z16();G.once("error",()=>Y(!1)),G.listen(X,"0.0.0.0",()=>{G.close(()=>Y(!0))})})}async function aA1(X){if(await Ga5(X))return X;let Y=await new Promise((G,Q)=>{let J=z16();J.once("error",Q),J.listen(0,"0.0.0.0",()=>{let W=J.address(),Z=typeof W==="object"&&W?W.port:0;J.close(()=>G(Z))})});return console.warn(`Port ${X} is in use, using port ${Y} instead.`),Y}var bN0=()=>{};var yN0={};T0(yN0,{startDevServer:()=>Ja5});import{join as Qa5}from"path";function O16(X){return X.replace(/\x1b\[[0-9;]*m/g,"")}function D16(X){let Y=X.getReader(),G=new TextDecoder,Q="";function J(){let W=Q.split(`
|
|
1646
|
-
`);Q=W.pop()??"";for(let Z of W){let $=O16(Z).replace(/^\[\d+\]\s*/,"").trim();if(!$)continue;Wz({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:$})}}(async()=>{for(;;){let{done:W,value:Z}=await Y.read();if(W)break;Q+=G.decode(Z,{stream:!0}),J()}if(Q.trim()){let W=O16(Q).replace(/^\[\d+\]\s*/,"").trim();if(W)Wz({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:W})}})()}async function Ja5(X){let{vitePort:Y,baseUrl:G,noTui:Q}=X,J=await aA1(Number(X.port)),{settings:W,services:Z,managedServiceNames:$}=await iA1({port:String(J),home:X.home,baseUrl:X.baseUrl,localMode:X.localMode,skipMigrations:X.skipMigrations,noTui:X.noTui,vitePort:X.vitePort});for(let z of Z)Ya({name:z.name,status:"ready",port:z.port});fX1(W),vX1();let K=Qa5(import.meta.dir,"..","..","..","..",".."),H=Q===!0,U=Bun.spawn(["bun","run","--cwd=apps/mesh","dev:servers"],{cwd:K,env:{...process.env,PORT:String(W.port),VITE_PORT:String(Y),DATABASE_URL:W.databaseUrl,NATS_URL:W.natsUrls.join(","),NODE_ENV:W.nodeEnv,DECOCMS_LOCAL_MODE:String(W.localMode),DECOCMS_HOME:W.dataDir,DATA_DIR:W.dataDir,DECO_CLI:"1",...W.baseUrl?{BASE_URL:W.baseUrl}:{}},stdio:["inherit",H?"inherit":"pipe",H?"inherit":"pipe"]});if(!H)D16(U.stdout),D16(U.stderr);let B=G||`http://localhost:${W.port}`;_X1(B),Ya({name:"Vite",status:"ready",port:Number(Y)});let N=async(z)=>{if(U.kill(z),$.length>0){let{stopServices:O}=await Promise.resolve().then(() => (l$1(),u$1));await O(W.dataDir)}};return process.on("SIGINT",()=>N("SIGINT")),process.on("SIGTERM",()=>N("SIGTERM")),{port:Number(W.port),process:U}}var xN0=w(()=>{kN0();$z();bN0()});import{Box as hN0,Text as gN0}from"ink";import{jsx as L16,jsxs as rA1}from"react/jsx-runtime";function w16(X){if(!X)return"not set";try{let Y=new URL(X);if(Y.password)Y.password="***";if(Y.username&&Y.username.length>3)Y.username=Y.username.slice(0,3)+"***";return Y.pathname="/",Y.search="",Y.hash="",Y.toString()}catch{if(X.length<=10)return X;return X.slice(0,6)+"***"+X.slice(-4)}}function $a5(X,Y){if(Za5.has(X))return Y?{text:"\u25CF\u25CF\u25CF\u25CF\u25CF\u25CF",dimColor:!0}:{text:"not set",dimColor:!0};if(Wa5.has(X)){if(Array.isArray(Y)){if(Y.length===0)return{text:"not set",dimColor:!0};return{text:Y.map((W)=>w16(W)).join(", "),color:"cyan"}}let Q=w16(Y);return Q==="not set"?{text:Q,dimColor:!0}:{text:Q,color:"cyan"}}if(Y===void 0||Y===null||Y==="")return{text:"not set",dimColor:!0};let G=String(Y);if(G==="true")return{text:G,color:"green"};if(G==="false")return{text:G,color:"yellow"};try{return new URL(G),{text:G,color:"cyan"}}catch{return{text:G}}}function Ka5(X){return[{title:"Core",entries:[{key:"NODE_ENV",value:X.nodeEnv},{key:"PORT",value:X.port},{key:"BASE_URL",value:X.baseUrl??`http://localhost:${X.port}`},{key:"DATA_DIR",value:X.dataDir}]},{title:"Database",entries:[{key:"DATABASE_URL",value:X.databaseUrl},{key:"DATABASE_PG_SSL",value:X.databasePgSsl}]},{title:"Auth & Secrets",entries:[{key:"BETTER_AUTH_SECRET",value:X.betterAuthSecret},{key:"ENCRYPTION_KEY",value:X.encryptionKey},{key:"MESH_JWT_SECRET",value:X.meshJwtSecret},{key:"STUDIO_PROVISION_SECRET_KEY",value:X.studioProvisionSecretKey},{key:"DISABLE_RATE_LIMIT",value:X.disableRateLimit}]},{title:"Auth Providers",entries:[{key:"AUTH_EMAIL_PASSWORD_ENABLED",value:process.env.AUTH_EMAIL_PASSWORD_ENABLED??"true"},{key:"AUTH_GOOGLE_CLIENT_ID",value:!!process.env.AUTH_GOOGLE_CLIENT_ID},{key:"AUTH_GITHUB_CLIENT_ID",value:!!process.env.AUTH_GITHUB_CLIENT_ID},{key:"AUTH_RESEND_API_KEY",value:!!process.env.AUTH_RESEND_API_KEY},{key:"AUTH_SENDGRID_API_KEY",value:!!process.env.AUTH_SENDGRID_API_KEY},{key:"AUTH_SSO_MS_CLIENT_ID",value:!!process.env.AUTH_SSO_MS_CLIENT_ID},{key:"AUTH_SSO_GOOGLE_CLIENT_ID",value:!!process.env.AUTH_SSO_GOOGLE_CLIENT_ID},{key:"AUTH_MAGIC_LINK_ENABLED",value:process.env.AUTH_MAGIC_LINK_ENABLED==="true"},{key:"AUTH_EMAIL_OTP_ENABLED",value:process.env.AUTH_EMAIL_OTP_ENABLED==="true"}]},{title:"Observability",entries:[{key:"CLICKHOUSE_URL",value:X.clickhouseUrl},{key:"OTEL_SERVICE_NAME",value:X.otelServiceName}]},{title:"Event Bus & Networking",entries:[{key:"NATS_URL",value:X.natsUrls}]},{title:"Config Files",entries:[{key:"CONFIG_PATH",value:X.configPath}]},{title:"AI Gateway",entries:[{key:"DECO_AI_GATEWAY_ENABLED",value:X.aiGatewayEnabled},{key:"DECO_AI_GATEWAY_URL",value:X.aiGatewayUrl}]}]}function E16({env:X}){let Y=Ka5(X);return L16(hN0,{flexDirection:"column",children:Y.map((G)=>rA1(hN0,{flexDirection:"column",marginTop:1,children:[rA1(gN0,{dimColor:!0,children:[" ","\u2500\u2500 ",G.title," ","\u2500".repeat(Math.max(0,38-G.title.length))]}),G.entries.map(({key:Q,value:J})=>{let W=$a5(Q,J);return rA1(hN0,{children:[rA1(gN0,{dimColor:!0,children:[" ",Q.padEnd(36)]}),L16(gN0,{color:W.color,dimColor:W.dimColor,children:W.text})]},Q)})]},G.title))})}var Za5,Wa5;var P16=w(()=>{Za5=new Set(["BETTER_AUTH_SECRET","ENCRYPTION_KEY","MESH_JWT_SECRET","STUDIO_PROVISION_SECRET_KEY"]),Wa5=new Set(["DATABASE_URL","CLICKHOUSE_URL","NATS_URL"])});var uN0;var q16=w(()=>{uN0={name:"decocms",version:"2.311.7",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/mesh"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:'bun run migrate && concurrently "bun run dev:client" "bun run dev:server"',"dev:servers":'concurrently "bun run dev:client" "bun run dev:server"',"dev:client":"bun --bun vite dev","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts","build:client":"bun --bun vite build","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","db:migrate":"bun run ./dist/server/migrate.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts",test:"bun test","test:e2e":"playwright test","test:e2e:ui":"playwright test --ui","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run build:client && bun run build:server"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1","@freestyle-sh/with-bun":"^0.2.12","@freestyle-sh/with-deno":"^0.0.4","@freestyle-sh/with-nodejs":"^0.2.9","freestyle-sandboxes":"^0.1.46"},dependencies:{"@ai-sdk/anthropic":"^3.0.58","@ai-sdk/google":"^3.0.60","@ai-sdk/openai":"^3.0.50","@anthropic-ai/sdk":"^0.79.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@deco-cx/warp-node":"^0.3.20","@dnd-kit/core":"^6.3.1","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@inkjs/ui":"^2.0.0","@modelcontextprotocol/ext-apps":"^1.2.2","@openrouter/ai-sdk-provider":"^2.2.5","@opentelemetry/core":"^2.6.0","@tanstack/react-virtual":"^3.13.21","@xterm/addon-fit":"^0.11.0","@xterm/xterm":"^6.0.0","ai-sdk-provider-claude-code":"^3.4.4","ai-sdk-provider-codex-cli":"^1.1.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12",nats:"^2.29.3","node-pty":"^1.0.0","posthog-js":"^1.371.1","posthog-node":"^5.0.0",react:"^19.2.0","react-dom":"^19.2.0"},devDependencies:{"@ai-sdk/provider":"^3.0.8","@ai-sdk/react":"^3.0.118","@anthropic-ai/claude-agent-sdk":"^0.2.80","@better-auth/sso":"1.4.1","@daveyplate/better-auth-ui":"^3.2.7","@deco/ui":"workspace:*","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/mesh-sdk":"workspace:*","@decocms/runtime":"workspace:*","@decocms/vite-plugin":"workspace:*","@electric-sql/pglite":"^0.3.15","@floating-ui/react":"^0.27.16","@hookform/resolvers":"^5.2.2","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.27.1","@monaco-editor/react":"^4.7.0","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@playwright/test":"^1.58.2","@radix-ui/react-avatar":"^1.1.10","@radix-ui/react-checkbox":"^1.3.3","@radix-ui/react-dialog":"^1.1.15","@radix-ui/react-dropdown-menu":"^2.1.16","@radix-ui/react-label":"^2.1.7","@radix-ui/react-select":"^2.2.6","@radix-ui/react-separator":"^1.1.7","@radix-ui/react-slot":"^1.2.3","@radix-ui/react-tabs":"^1.1.13","@rjsf/core":"^6.1.2","@rjsf/shadcn":"^6.1.2","@rjsf/utils":"^6.1.2","@rjsf/validator-ajv8":"^6.1.2","@tailwindcss/vite":"^4.1.17","@tanstack/react-query":"5.90.11","@tanstack/react-router":"^1.139.7","@tiptap/core":"3.20.2","@tiptap/extension-mention":"3.20.2","@tiptap/extension-placeholder":"3.20.2","@tiptap/pm":"3.20.2","@tiptap/react":"3.20.2","@tiptap/starter-kit":"3.20.2","@tiptap/suggestion":"3.20.2","@types/bun":"^1.3.1","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@untitledui/icons":"^0.0.19","@vercel/nft":"^1.1.1","@vitejs/plugin-react":"^5.1.0",ai:"^6.0.116","babel-plugin-react-compiler":"^1.0.0","better-auth":"1.4.5","class-variance-authority":"^0.7.1",clsx:"^2.1.1",concurrently:"^9.2.1",croner:"^9.1.0","date-fns":"^4.1.0",degit:"^2.8.4",hono:"^4.10.7","input-otp":"^1.4.2",jose:"^6.0.11","kysely-pglite":"^0.6.1","lucide-react":"^0.468.0",marked:"^15.0.6","@decocms/sandbox":"workspace:*","mesh-plugin-workflows":"workspace:*",nanoid:"^5.1.6",pg:"^8.16.3",prettier:"^3.4.2","react-hook-form":"^7.66.0","react-markdown":"^10.1.0","react-resizable-panels":"^2.1.7","react-syntax-highlighter":"^15.6.1",recharts:"^3.6.0","rehype-raw":"^7.0.0","remark-gfm":"^4.0.0","sass-embedded":"^1.97.2",sonner:"^2.0.7","tailwind-merge":"^3.3.1",tailwindcss:"^4.1.17",typescript:"^5.9.3",vite:"^7.2.1","vite-tsconfig-paths":"^5.1.4",zod:"^4.0.0",zustand:"^5.0.9"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","mesh","tools"],license:"MIT",publishConfig:{access:"public"}}});import{Box as IU,Text as RX}from"ink";import{Spinner as Fa5}from"@inkjs/ui";import{useSyncExternalStore as A16}from"react";import{jsx as TY,jsxs as sQ}from"react/jsx-runtime";function Oa5(X,Y){if(!X||!za5.has(X))return X;let G=lN0[Y]??lN0[lN0.length-1];return X==="#875f00"?G[0]:G[1]}function T16({status:X}){if(X==="pending")return TY(Fa5,{label:""});return TY(RX,{color:"green",children:"\u2713"})}function I16({services:X,migrationsStatus:Y,home:G,serverUrl:Q,vibe:J}){let W=A16(mm0,lm0),Z=A16(tm0,nm0);return sQ(IU,{flexDirection:"column",paddingBottom:1,children:[J?sQ(IU,{flexDirection:"column",children:[W.map(($,K)=>{let H=Z[K],U=$.reduce((N,z)=>N+z.text.length,0),B=Math.max(0,Na5-U);return sQ(IU,{flexDirection:"row",children:[$.map((N,z)=>{let O=Oa5(N.color,K);return O?TY(RX,{color:O,children:N.text},z):TY(RX,{children:N.text},z)}),TY(RX,{children:" ".repeat(B+2)}),H?.map((N,z)=>N.color?TY(RX,{color:N.color,children:N.char},z):TY(RX,{children:N.char},z))]},K)}),sQ(RX,{dimColor:!0,children:[" v",uN0.version]})]}):sQ(IU,{flexDirection:"column",marginTop:1,children:[Ua5.map(($,K)=>TY(RX,{color:Ba5[K],children:$},K)),sQ(RX,{dimColor:!0,children:[" v",uN0.version]})]}),TY(IU,{marginBottom:1,children:TY(RX,{dimColor:!0,children:"\u2500".repeat(80)})}),TY(IU,{children:sQ(RX,{dimColor:!0,children:["Home: ",G]})}),sQ(IU,{gap:2,children:[X.map(($)=>sQ(IU,{gap:1,children:[sQ(RX,{children:[$.name," :",$.port||"...."]}),TY(T16,{status:$.status})]},$.name)),sQ(IU,{gap:1,children:[TY(RX,{children:"Migrations"}),TY(T16,{status:Y})]})]}),TY(IU,{children:Q?sQ(RX,{children:["Open in browser: ",TY(RX,{color:"cyan",children:Q})]}):TY(RX,{dimColor:!0,children:"Starting..."})}),sQ(IU,{gap:2,children:[sQ(RX,{dimColor:!0,children:[TY(RX,{bold:!0,dimColor:!0,children:"K"})," ","toggle config"]}),sQ(RX,{dimColor:!0,children:[TY(RX,{bold:!0,dimColor:!0,children:"L"})," ","toggle log flow"]}),sQ(RX,{dimColor:!0,children:[TY(RX,{bold:!0,dimColor:!0,children:"V"})," ","toggle vibe ",J?"\u266A Nihilore \xB7 CC BY 4.0":""]}),J&&sQ(RX,{dimColor:!0,children:[TY(RX,{bold:!0,dimColor:!0,children:"N"})," ","skip song"]})]})]})}var Ua5,Ba5,lN0,Na5=30,za5;var V16=w(()=>{q16();Vt1();Ct1();Ua5=[" \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 "],Ba5=["#00ff64","#00ee5e","#00dc56","#00c84e","#00b444","#00a03c","#008832","#006e28"],lN0=[["#00ff64","#00cc50"],["#00f060","#00c04c"],["#00e05c","#00b448"],["#00d058","#00a844"],["#00c054","#009c40"],["#00b050","#00903c"],["#00a04c","#008438"],["#009048","#007834"],["#008044","#006c30"],["#007040","#00602c"],["#00603c","#005428"]],za5=new Set(["#875f00","#5f3800"])});import{useSyncExternalStore as Da5}from"react";function wa5(){let X=process.stdout.rows||24,Y=process.stdout.columns||80;if(X!==oA1.rows||Y!==oA1.columns)oA1={rows:X,columns:Y};return oA1}function La5(X){return process.stdout.on("resize",X),()=>{process.stdout.off("resize",X)}}function j16(){return Da5(La5,wa5)}var oA1;var M16=w(()=>{oA1={rows:process.stdout.rows||24,columns:process.stdout.columns||80}});import{Box as Ea5,Text as bX1}from"ink";import{useSyncExternalStore as Pa5}from"react";import{jsx as mN0,jsxs as dN0}from"react/jsx-runtime";function qa5(X){if(X>=500)return"red";if(X>=400)return"yellow";if(X>=300)return"cyan";return"green"}function R16({logs:X,headerHeight:Y}){let{rows:G}=j16(),{logFlow:Q}=Pa5(CX1,kX1),J=Math.max(1,G-Y-1),W=Q?X:X.slice(-J);return mN0(Ea5,{flexDirection:"column",children:W.map((Z,$)=>{if(Z.rawLine)return mN0(bX1,{dimColor:!0,children:Z.rawLine},$);let K=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return dN0(bX1,{children:[dN0(bX1,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),mN0(bX1,{color:qa5(Z.status),children:Z.status}),dN0(bX1,{dimColor:!0,children:[" ",K.padStart(8)]})]},$)})})}var S16=w(()=>{$z();M16()});var cN0={};T0(cN0,{App:()=>Ra5});import{Box as Aa5,Text as Ta5,useInput as Ia5}from"ink";import{useSyncExternalStore as Va5}from"react";import{jsx as sA1,jsxs as Sa5}from"react/jsx-runtime";function Ra5({home:X}){let Y=Va5(CX1,kX1);return Ia5((G)=>{if(G==="k"||G==="K")vN0();if(G==="l"||G==="L")_N0();if((G==="v"||G==="V")&&Y.dataDir)bt1(Y.dataDir),fN0();if((G==="n"||G==="N")&&Y.vibe)ft1()}),Sa5(Aa5,{flexDirection:"column",children:[sA1(I16,{services:Y.services,migrationsStatus:Y.migrationsStatus,home:X,serverUrl:Y.serverUrl,vibe:Y.vibe}),Y.viewMode==="config"?Y.env?sA1(E16,{env:Y.env}):sA1(Ta5,{dimColor:!0,children:"Loading configuration..."}):sA1(R16,{logs:Y.logs,headerHeight:Y.vibe?Ma5:ja5})]})}var ja5=15,Ma5=19;var iN0=w(()=>{P16();V16();S16();$z();fd()});function k16(X,Y={}){return{PORT:String(X.port),NODE_ENV:X.nodeEnv,BASE_URL:X.baseUrl,DATA_DIR:X.dataDir,DECOCMS_HOME:X.dataDir,DATABASE_URL:X.databaseUrl,DATABASE_PG_SSL:String(X.databasePgSsl),DATABASE_POOL_MAX:String(X.databasePoolMax),NATS_URL:X.natsUrls.join(","),BETTER_AUTH_SECRET:X.betterAuthSecret,ENCRYPTION_KEY:X.encryptionKey,MESH_JWT_SECRET:X.meshJwtSecret,DECOCMS_LOCAL_MODE:String(X.localMode),DISABLE_RATE_LIMIT:String(X.disableRateLimit),STUDIO_PROVISION_SECRET_KEY:X.studioProvisionSecretKey,CONFIG_PATH:X.configPath,...Object.fromEntries(Object.entries(process.env).filter(([G])=>G.startsWith("AUTH_"))),DECO_AI_GATEWAY_ENABLED:String(X.aiGatewayEnabled),DECO_AI_GATEWAY_URL:X.aiGatewayUrl,ENABLE_DECO_IMPORT:String(X.enableDecoImport),S3_ENDPOINT:X.s3Endpoint,S3_BUCKET:X.s3Bucket,S3_REGION:X.s3Region,S3_ACCESS_KEY_ID:X.s3AccessKeyId,S3_SECRET_ACCESS_KEY:X.s3SecretAccessKey,S3_FORCE_PATH_STYLE:String(X.s3ForcePathStyle),OTEL_SERVICE_NAME:X.otelServiceName,CLICKHOUSE_URL:X.clickhouseUrl,OTEL_EXPORTER_OTLP_ENDPOINT:process.env.OTEL_EXPORTER_OTLP_ENDPOINT,OTEL_EXPORTER_OTLP_PROTOCOL:process.env.OTEL_EXPORTER_OTLP_PROTOCOL,OTEL_RESOURCE_ATTRIBUTES:process.env.OTEL_RESOURCE_ATTRIBUTES,DECO_SUPABASE_URL:X.decoSupabaseUrl,DECO_SUPABASE_SERVICE_KEY:X.decoSupabaseServiceKey,FIRECRAWL_API_KEY:X.firecrawlApiKey,STUDIO_SANDBOX_RUNNER:process.env.STUDIO_SANDBOX_RUNNER,STUDIO_SANDBOX_TEMPLATE_NAME:process.env.STUDIO_SANDBOX_TEMPLATE_NAME,STUDIO_ENV:process.env.STUDIO_ENV,STUDIO_SANDBOX_PREVIEW_URL_PATTERN:process.env.STUDIO_SANDBOX_PREVIEW_URL_PATTERN,STUDIO_SANDBOX_PREVIEW_GATEWAY_NAME:process.env.STUDIO_SANDBOX_PREVIEW_GATEWAY_NAME,STUDIO_SANDBOX_PREVIEW_GATEWAY_NAMESPACE:process.env.STUDIO_SANDBOX_PREVIEW_GATEWAY_NAMESPACE,STUDIO_SANDBOX_SENTINEL_TOKEN:process.env.STUDIO_SANDBOX_SENTINEL_TOKEN,KUBERNETES_SERVICE_HOST:process.env.KUBERNETES_SERVICE_HOST,KUBERNETES_SERVICE_PORT:process.env.KUBERNETES_SERVICE_PORT,FREESTYLE_API_KEY:process.env.FREESTYLE_API_KEY,BROWSERLESS_TOKEN:process.env.BROWSERLESS_TOKEN,NODE_EXTRA_CA_CERTS:process.env.NODE_EXTRA_CA_CERTS,DECO_CLI:"1",DECO_NO_TUI:"true",...Y}}var yj=k((ba5)=>{ba5.HttpAuthLocation=void 0;(function(X){X.HEADER="header",X.QUERY="query"})(ba5.HttpAuthLocation||(ba5.HttpAuthLocation={}));ba5.HttpApiKeyAuthLocation=void 0;(function(X){X.HEADER="header",X.QUERY="query"})(ba5.HttpApiKeyAuthLocation||(ba5.HttpApiKeyAuthLocation={}));ba5.EndpointURLScheme=void 0;(function(X){X.HTTP="http",X.HTTPS="https"})(ba5.EndpointURLScheme||(ba5.EndpointURLScheme={}));ba5.AlgorithmId=void 0;(function(X){X.MD5="md5",X.CRC32="crc32",X.CRC32C="crc32c",X.SHA1="sha1",X.SHA256="sha256"})(ba5.AlgorithmId||(ba5.AlgorithmId={}));var ka5=(X)=>{let Y=[];if(X.sha256!==void 0)Y.push({algorithmId:()=>ba5.AlgorithmId.SHA256,checksumConstructor:()=>X.sha256});if(X.md5!=null)Y.push({algorithmId:()=>ba5.AlgorithmId.MD5,checksumConstructor:()=>X.md5});return{addChecksumAlgorithm(G){Y.push(G)},checksumAlgorithms(){return Y}}},Ca5=(X)=>{let Y={};return X.checksumAlgorithms().forEach((G)=>{Y[G.algorithmId()]=G.checksumConstructor()}),Y},va5=(X)=>{return ka5(X)},_a5=(X)=>{return Ca5(X)};ba5.FieldPosition=void 0;(function(X){X[X.HEADER=0]="HEADER",X[X.TRAILER=1]="TRAILER"})(ba5.FieldPosition||(ba5.FieldPosition={}));var fa5="__smithy_context";ba5.IniSectionType=void 0;(function(X){X.PROFILE="profile",X.SSO_SESSION="sso-session",X.SERVICES="services"})(ba5.IniSectionType||(ba5.IniSectionType={}));ba5.RequestHandlerProtocol=void 0;(function(X){X.HTTP_0_9="http/0.9",X.HTTP_1_0="http/1.0",X.TDS_8_0="tds/8.0"})(ba5.RequestHandlerProtocol||(ba5.RequestHandlerProtocol={}));ba5.SMITHY_CONTEXT_KEY=fa5;ba5.getDefaultClientConfiguration=va5;ba5.resolveDefaultRuntimeConfig=_a5});var u7=k((ca5)=>{var ga5=yj(),ua5=(X)=>{return{setHttpHandler(Y){X.httpHandler=Y},httpHandler(){return X.httpHandler},updateHttpClientConfig(Y,G){X.httpHandler?.updateHttpClientConfig(Y,G)},httpHandlerConfigs(){return X.httpHandler.httpHandlerConfigs()}}},la5=(X)=>{return{httpHandler:X.httpHandler()}};class C16{name;kind;values;constructor({name:X,kind:Y=ga5.FieldPosition.HEADER,values:G=[]}){this.name=X,this.kind=Y,this.values=G}add(X){this.values.push(X)}set(X){this.values=X}remove(X){this.values=this.values.filter((Y)=>Y!==X)}toString(){return this.values.map((X)=>X.includes(",")||X.includes(" ")?`"${X}"`:X).join(", ")}get(){return this.values}}class v16{entries={};encoding;constructor({fields:X=[],encoding:Y="utf-8"}){X.forEach(this.setField.bind(this)),this.encoding=Y}setField(X){this.entries[X.name.toLowerCase()]=X}getField(X){return this.entries[X.toLowerCase()]}removeField(X){delete this.entries[X.toLowerCase()]}getByType(X){return Object.values(this.entries).filter((Y)=>Y.kind===X)}}class eA1{method;protocol;hostname;port;path;query;headers;username;password;fragment;body;constructor(X){this.method=X.method||"GET",this.hostname=X.hostname||"localhost",this.port=X.port,this.query=X.query||{},this.headers=X.headers||{},this.body=X.body,this.protocol=X.protocol?X.protocol.slice(-1)!==":"?`${X.protocol}:`:X.protocol:"https:",this.path=X.path?X.path.charAt(0)!=="/"?`/${X.path}`:X.path:"/",this.username=X.username,this.password=X.password,this.fragment=X.fragment}static clone(X){let Y=new eA1({...X,headers:{...X.headers}});if(Y.query)Y.query=ma5(Y.query);return Y}static isInstance(X){if(!X)return!1;let Y=X;return"method"in Y&&"protocol"in Y&&"hostname"in Y&&"path"in Y&&typeof Y.query==="object"&&typeof Y.headers==="object"}clone(){return eA1.clone(this)}}function ma5(X){return Object.keys(X).reduce((Y,G)=>{let Q=X[G];return{...Y,[G]:Array.isArray(Q)?[...Q]:Q}},{})}class _16{statusCode;reason;headers;body;constructor(X){this.statusCode=X.statusCode,this.reason=X.reason,this.headers=X.headers||{},this.body=X.body}static isInstance(X){if(!X)return!1;let Y=X;return typeof Y.statusCode==="number"&&typeof Y.headers==="object"}}function da5(X){return/^[a-z0-9][a-z0-9\.\-]*[a-z0-9]$/.test(X)}ca5.Field=C16;ca5.Fields=v16;ca5.HttpRequest=eA1;ca5.HttpResponse=_16;ca5.getHttpHandlerExtensionConfiguration=ua5;ca5.isValidHostname=da5;ca5.resolveHttpHandlerRuntimeConfig=la5});function sa5(X){return(Y)=>async(G)=>{let{request:Q}=G;if(X.expectContinueHeader!==!1&&f16.HttpRequest.isInstance(Q)&&Q.body&&X.runtime==="node"&&X.requestHandler?.constructor?.name!=="FetchHttpHandler"){let J=!0;if(typeof X.expectContinueHeader==="number")try{J=(Number(Q.headers?.["content-length"])??X.bodyLengthChecker?.(Q.body)??1/0)>=X.expectContinueHeader}catch(W){}else J=!!X.expectContinueHeader;if(J)Q.headers.Expect="100-continue"}return Y({...G,request:Q})}}var f16,ea5,b16=(X)=>({applyToStack:(Y)=>{Y.add(sa5(X),ea5)}});var y16=w(()=>{f16=X1(u7(),1);ea5={step:"build",tags:["SET_EXPECT_HEADER","EXPECT_HEADER"],name:"addExpectContinueMiddleware",override:!0}});var wH,XT1,xj,YT1,E9,x16,xX1;var LH=w(()=>{wH={WHEN_SUPPORTED:"WHEN_SUPPORTED",WHEN_REQUIRED:"WHEN_REQUIRED"},XT1=wH.WHEN_SUPPORTED,xj={WHEN_SUPPORTED:"WHEN_SUPPORTED",WHEN_REQUIRED:"WHEN_REQUIRED"},YT1=wH.WHEN_SUPPORTED;(function(X){X.MD5="MD5",X.CRC32="CRC32",X.CRC32C="CRC32C",X.CRC64NVME="CRC64NVME",X.SHA1="SHA1",X.SHA256="SHA256"})(E9||(E9={}));(function(X){X.HEADER="header",X.TRAILER="trailer"})(x16||(x16={}));xX1=E9.CRC32});var kq,Ga=(X,Y,G,Q)=>{if(!(Y in X))return;let J=X[Y].toUpperCase();if(!Object.values(G).includes(J))throw TypeError(`Cannot load ${Q} '${Y}'. Expected one of ${Object.values(G)}, got '${X[Y]}'.`);return J};var sN0=w(()=>{(function(X){X.ENV="env",X.CONFIG="shared config entry"})(kq||(kq={}))});var Xr5="AWS_REQUEST_CHECKSUM_CALCULATION",Yr5="request_checksum_calculation",h16;var g16=w(()=>{LH();sN0();h16={environmentVariableSelector:(X)=>Ga(X,Xr5,wH,kq.ENV),configFileSelector:(X)=>Ga(X,Yr5,wH,kq.CONFIG),default:XT1}});var Gr5="AWS_RESPONSE_CHECKSUM_VALIDATION",Qr5="response_checksum_validation",u16;var l16=w(()=>{LH();sN0();u16={environmentVariableSelector:(X)=>Ga(X,Gr5,xj,kq.ENV),configFileSelector:(X)=>Ga(X,Qr5,xj,kq.CONFIG),default:YT1}});var Xz0=k((Nr5)=>{var Jr5=["AuthFailure","InvalidSignatureException","RequestExpired","RequestInTheFuture","RequestTimeTooSkewed","SignatureDoesNotMatch"],Zr5=["BandwidthLimitExceeded","EC2ThrottledException","LimitExceededException","PriorRequestNotComplete","ProvisionedThroughputExceededException","RequestLimitExceeded","RequestThrottled","RequestThrottledException","SlowDown","ThrottledException","Throttling","ThrottlingException","TooManyRequestsException","TransactionInProgressException"],Wr5=["TimeoutError","RequestTimeout","RequestTimeoutException"],$r5=[500,502,503,504],Kr5=["ECONNRESET","ECONNREFUSED","EPIPE","ETIMEDOUT"],Hr5=["EHOSTUNREACH","ENETUNREACH","ENOTFOUND"],m16=(X)=>X?.$retryable!==void 0,Fr5=(X)=>Jr5.includes(X.name),d16=(X)=>X.$metadata?.clockSkewCorrected,c16=(X)=>{let Y=new Set(["Failed to fetch","NetworkError when attempting to fetch resource","The Internet connection appears to be offline","Load failed","Network request failed"]);if(!(X&&X instanceof TypeError))return!1;return Y.has(X.message)},Ur5=(X)=>X.$metadata?.httpStatusCode===429||Zr5.includes(X.name)||X.$retryable?.throttling==!0,eN0=(X,Y=0)=>m16(X)||d16(X)||X.name==="InvalidSignatureException"&&X.message?.includes("Signature expired")||Wr5.includes(X.name)||Kr5.includes(X?.code||"")||Hr5.includes(X?.code||"")||$r5.includes(X.$metadata?.httpStatusCode||0)||c16(X)||i16(X)||X.cause!==void 0&&Y<=10&&eN0(X.cause,Y+1),Br5=(X)=>{if(X.$metadata?.httpStatusCode!==void 0){let Y=X.$metadata.httpStatusCode;if(500<=Y&&Y<=599&&!eN0(X))return!0;return!1}return!1};function i16(X){return X.code==="ERR_HTTP2_STREAM_ERROR"&&X.message.includes("NGHTTP2_REFUSED_STREAM")}Nr5.isBrowserNetworkError=c16;Nr5.isClockSkewCorrectedError=d16;Nr5.isClockSkewError=Fr5;Nr5.isNodeJsHttp2TransientError=i16;Nr5.isRetryableByTrait=m16;Nr5.isServerError=Br5;Nr5.isThrottlingError=Ur5;Nr5.isTransientError=eN0});var Dw=k((kr5)=>{var Ar5=Xz0();kr5.RETRY_MODES=void 0;(function(X){X.STANDARD="standard",X.ADAPTIVE="adaptive"})(kr5.RETRY_MODES||(kr5.RETRY_MODES={}));var QT1=3,Tr5=kr5.RETRY_MODES.STANDARD;class JT1{static setTimeoutFn=setTimeout;beta;minCapacity;minFillRate;scaleConstant;smooth;enabled=!1;availableTokens=0;lastMaxRate=0;measuredTxRate=0;requestCount=0;fillRate;lastThrottleTime;lastTimestamp=0;lastTxRateBucket;maxCapacity;timeWindow=0;constructor(X){this.beta=X?.beta??0.7,this.minCapacity=X?.minCapacity??1,this.minFillRate=X?.minFillRate??0.5,this.scaleConstant=X?.scaleConstant??0.4,this.smooth=X?.smooth??0.8,this.lastThrottleTime=this.getCurrentTimeInSeconds(),this.lastTxRateBucket=Math.floor(this.getCurrentTimeInSeconds()),this.fillRate=this.minFillRate,this.maxCapacity=this.minCapacity}async getSendToken(){return this.acquireTokenBucket(1)}updateClientSendingRate(X){let Y;this.updateMeasuredRate();let G=X;if(G?.errorType==="THROTTLING"||Ar5.isThrottlingError(G?.error??X)){let W=!this.enabled?this.measuredTxRate:Math.min(this.measuredTxRate,this.fillRate);this.lastMaxRate=W,this.calculateTimeWindow(),this.lastThrottleTime=this.getCurrentTimeInSeconds(),Y=this.cubicThrottle(W),this.enableTokenBucket()}else this.calculateTimeWindow(),Y=this.cubicSuccess(this.getCurrentTimeInSeconds());let J=Math.min(Y,2*this.measuredTxRate);this.updateTokenBucketRate(J)}getCurrentTimeInSeconds(){return Date.now()/1000}async acquireTokenBucket(X){if(!this.enabled)return;if(this.refillTokenBucket(),X>this.availableTokens){let Y=(X-this.availableTokens)/this.fillRate*1000;await new Promise((G)=>JT1.setTimeoutFn(G,Y))}this.availableTokens=this.availableTokens-X}refillTokenBucket(){let X=this.getCurrentTimeInSeconds();if(!this.lastTimestamp){this.lastTimestamp=X;return}let Y=(X-this.lastTimestamp)*this.fillRate;this.availableTokens=Math.min(this.maxCapacity,this.availableTokens+Y),this.lastTimestamp=X}calculateTimeWindow(){this.timeWindow=this.getPrecise(Math.pow(this.lastMaxRate*(1-this.beta)/this.scaleConstant,0.3333333333333333))}cubicThrottle(X){return this.getPrecise(X*this.beta)}cubicSuccess(X){return this.getPrecise(this.scaleConstant*Math.pow(X-this.lastThrottleTime-this.timeWindow,3)+this.lastMaxRate)}enableTokenBucket(){this.enabled=!0}updateTokenBucketRate(X){this.refillTokenBucket(),this.fillRate=Math.max(X,this.minFillRate),this.maxCapacity=Math.max(X,this.minCapacity),this.availableTokens=Math.min(this.availableTokens,this.maxCapacity)}updateMeasuredRate(){let X=this.getCurrentTimeInSeconds(),Y=Math.floor(X*2)/2;if(this.requestCount++,Y>this.lastTxRateBucket){let G=this.requestCount/(Y-this.lastTxRateBucket);this.measuredTxRate=this.getPrecise(G*this.smooth+this.measuredTxRate*(1-this.smooth)),this.requestCount=0,this.lastTxRateBucket=Y}}getPrecise(X){return parseFloat(X.toFixed(8))}}var Ir5=100,Qz0=20000,Vr5=500,Yz0=500,jr5=5,Mr5=10,p16=1,Rr5="amz-sdk-invocation-id",Sr5="amz-sdk-request";class eQ{static v2026=typeof process<"u"&&process.env?.SMITHY_NEW_RETRIES_2026==="true";static delay(){return eQ.v2026?50:100}static throttlingDelay(){return eQ.v2026?1000:500}static cost(){return eQ.v2026?14:5}static throttlingCost(){return eQ.v2026?5:10}static modifiedCostType(){return eQ.v2026?"THROTTLING":"TRANSIENT"}}class n16{x=eQ.delay();computeNextBackoffDelay(X){let Y=Math.random(),G=2,Q=Y*Math.min(this.x*2**X,Qz0);return Math.floor(Q)}setDelayBase(X){this.x=X}}class Gz0{delay;count;cost;longPoll;constructor(X,Y,G,Q){this.delay=X,this.count=Y,this.cost=G,this.longPoll=Q}getRetryCount(){return this.count}getRetryDelay(){return Math.min(Qz0,this.delay)}getRetryCost(){return this.cost}isLongPoll(){return this.longPoll}}var GT1={incompatible:1,attempts:2,capacity:3};class hX1{mode=kr5.RETRY_MODES.STANDARD;capacity=Yz0;retryBackoffStrategy;maxAttemptsProvider;baseDelay;constructor(X){if(typeof X==="number")this.maxAttemptsProvider=async()=>X;else if(typeof X==="function")this.maxAttemptsProvider=X;else if(X&&typeof X==="object")this.maxAttemptsProvider=async()=>X.maxAttempts,this.baseDelay=X.baseDelay,this.retryBackoffStrategy=X.backoff;this.maxAttemptsProvider??=async()=>QT1,this.baseDelay??=eQ.delay(),this.retryBackoffStrategy??=new n16}async acquireInitialRetryToken(X){return new Gz0(eQ.delay(),0,void 0,eQ.v2026&&X.includes(":longpoll"))}async refreshRetryTokenForRetry(X,Y){let G=await this.getMaxAttempts(),Q=this.retryCode(X,Y,G),J=Q===0,W=X.isLongPoll?.();if(J||W){let Z=Y.errorType;this.retryBackoffStrategy.setDelayBase(Z==="THROTTLING"?eQ.throttlingDelay():this.baseDelay);let $=this.retryBackoffStrategy.computeNextBackoffDelay(X.getRetryCount()),K=$;if(Y.retryAfterHint instanceof Date)K=Math.max($,Math.min(Y.retryAfterHint.getTime()-Date.now(),$+5000));if(!J)throw Object.assign(Error("No retry token available"),{$backoff:eQ.v2026&&Q===GT1.capacity&&W?K:0});else{let H=this.getCapacityCost(Z);return this.capacity-=H,new Gz0(K,X.getRetryCount()+1,H,X.isLongPoll?.()??!1)}}throw Error("No retry token available")}recordSuccess(X){this.capacity=Math.min(Yz0,this.capacity+(X.getRetryCost()??p16))}getCapacity(){return this.capacity}async maxAttempts(){return this.maxAttemptsProvider()}async getMaxAttempts(){try{return await this.maxAttemptsProvider()}catch(X){return console.warn(`Max attempts provider could not resolve. Using default of ${QT1}`),QT1}}retryCode(X,Y,G){let Q=X.getRetryCount()+1,J=this.isRetryableError(Y.errorType)?0:GT1.incompatible,W=Q<G?0:GT1.attempts,Z=this.capacity>=this.getCapacityCost(Y.errorType)?0:GT1.capacity;return J||W||Z}getCapacityCost(X){return X===eQ.modifiedCostType()?eQ.throttlingCost():eQ.cost()}isRetryableError(X){return X==="THROTTLING"||X==="TRANSIENT"}}class t16{mode=kr5.RETRY_MODES.ADAPTIVE;rateLimiter;standardRetryStrategy;constructor(X,Y){let{rateLimiter:G}=Y??{};this.rateLimiter=G??new JT1,this.standardRetryStrategy=Y?new hX1({maxAttempts:typeof X==="number"?X:3,...Y}):new hX1(X)}async acquireInitialRetryToken(X){return await this.rateLimiter.getSendToken(),this.standardRetryStrategy.acquireInitialRetryToken(X)}async refreshRetryTokenForRetry(X,Y){return this.rateLimiter.updateClientSendingRate(Y),this.standardRetryStrategy.refreshRetryTokenForRetry(X,Y)}recordSuccess(X){this.rateLimiter.updateClientSendingRate({}),this.standardRetryStrategy.recordSuccess(X)}async maxAttemptsProvider(){return this.standardRetryStrategy.maxAttempts()}}class a16 extends hX1{computeNextBackoffDelay;constructor(X,Y=eQ.delay()){super(typeof X==="function"?X:async()=>X);if(typeof Y==="number")this.computeNextBackoffDelay=()=>Y;else this.computeNextBackoffDelay=Y}async refreshRetryTokenForRetry(X,Y){let G=await super.refreshRetryTokenForRetry(X,Y);return G.getRetryDelay=()=>this.computeNextBackoffDelay(G.getRetryCount()),G}}kr5.AdaptiveRetryStrategy=t16;kr5.ConfiguredRetryStrategy=a16;kr5.DEFAULT_MAX_ATTEMPTS=QT1;kr5.DEFAULT_RETRY_DELAY_BASE=Ir5;kr5.DEFAULT_RETRY_MODE=Tr5;kr5.DefaultRateLimiter=JT1;kr5.INITIAL_RETRY_TOKENS=Yz0;kr5.INVOCATION_ID_HEADER=Rr5;kr5.MAXIMUM_RETRY_DELAY=Qz0;kr5.NO_RETRY_INCREMENT=p16;kr5.REQUEST_HEADER=Sr5;kr5.RETRY_COST=jr5;kr5.Retry=eQ;kr5.StandardRetryStrategy=hX1;kr5.THROTTLING_RETRY_DELAY_BASE=Vr5;kr5.TIMEOUT_RETRY_COST=Mr5});var WX=k((Yo5)=>{var nr5=Dw(),Jz0={warningEmitted:!1},tr5=(X)=>{if(X&&!Jz0.warningEmitted&&parseInt(X.substring(1,X.indexOf(".")))<20)Jz0.warningEmitted=!0,process.emitWarning(`NodeDeprecationWarning: The AWS SDK for JavaScript (v3) will
|
|
1646
|
+
`);Q=W.pop()??"";for(let Z of W){let $=O16(Z).replace(/^\[\d+\]\s*/,"").trim();if(!$)continue;Wz({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:$})}}(async()=>{for(;;){let{done:W,value:Z}=await Y.read();if(W)break;Q+=G.decode(Z,{stream:!0}),J()}if(Q.trim()){let W=O16(Q).replace(/^\[\d+\]\s*/,"").trim();if(W)Wz({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:W})}})()}async function Ja5(X){let{vitePort:Y,baseUrl:G,noTui:Q}=X,J=await aA1(Number(X.port)),{settings:W,services:Z,managedServiceNames:$}=await iA1({port:String(J),home:X.home,baseUrl:X.baseUrl,localMode:X.localMode,skipMigrations:X.skipMigrations,noTui:X.noTui,vitePort:X.vitePort});for(let z of Z)Ya({name:z.name,status:"ready",port:z.port});fX1(W),vX1();let K=Qa5(import.meta.dir,"..","..","..","..",".."),H=Q===!0,U=Bun.spawn(["bun","run","--cwd=apps/mesh","dev:servers"],{cwd:K,env:{...process.env,PORT:String(W.port),VITE_PORT:String(Y),DATABASE_URL:W.databaseUrl,NATS_URL:W.natsUrls.join(","),NODE_ENV:W.nodeEnv,DECOCMS_LOCAL_MODE:String(W.localMode),DECOCMS_HOME:W.dataDir,DATA_DIR:W.dataDir,DECO_CLI:"1",...W.baseUrl?{BASE_URL:W.baseUrl}:{}},stdio:["inherit",H?"inherit":"pipe",H?"inherit":"pipe"]});if(!H)D16(U.stdout),D16(U.stderr);let B=G||`http://localhost:${W.port}`;_X1(B),Ya({name:"Vite",status:"ready",port:Number(Y)});let N=async(z)=>{if(U.kill(z),$.length>0){let{stopServices:O}=await Promise.resolve().then(() => (l$1(),u$1));await O(W.dataDir)}};return process.on("SIGINT",()=>N("SIGINT")),process.on("SIGTERM",()=>N("SIGTERM")),{port:Number(W.port),process:U}}var xN0=w(()=>{kN0();$z();bN0()});import{Box as hN0,Text as gN0}from"ink";import{jsx as L16,jsxs as rA1}from"react/jsx-runtime";function w16(X){if(!X)return"not set";try{let Y=new URL(X);if(Y.password)Y.password="***";if(Y.username&&Y.username.length>3)Y.username=Y.username.slice(0,3)+"***";return Y.pathname="/",Y.search="",Y.hash="",Y.toString()}catch{if(X.length<=10)return X;return X.slice(0,6)+"***"+X.slice(-4)}}function $a5(X,Y){if(Za5.has(X))return Y?{text:"\u25CF\u25CF\u25CF\u25CF\u25CF\u25CF",dimColor:!0}:{text:"not set",dimColor:!0};if(Wa5.has(X)){if(Array.isArray(Y)){if(Y.length===0)return{text:"not set",dimColor:!0};return{text:Y.map((W)=>w16(W)).join(", "),color:"cyan"}}let Q=w16(Y);return Q==="not set"?{text:Q,dimColor:!0}:{text:Q,color:"cyan"}}if(Y===void 0||Y===null||Y==="")return{text:"not set",dimColor:!0};let G=String(Y);if(G==="true")return{text:G,color:"green"};if(G==="false")return{text:G,color:"yellow"};try{return new URL(G),{text:G,color:"cyan"}}catch{return{text:G}}}function Ka5(X){return[{title:"Core",entries:[{key:"NODE_ENV",value:X.nodeEnv},{key:"PORT",value:X.port},{key:"BASE_URL",value:X.baseUrl??`http://localhost:${X.port}`},{key:"DATA_DIR",value:X.dataDir}]},{title:"Database",entries:[{key:"DATABASE_URL",value:X.databaseUrl},{key:"DATABASE_PG_SSL",value:X.databasePgSsl}]},{title:"Auth & Secrets",entries:[{key:"BETTER_AUTH_SECRET",value:X.betterAuthSecret},{key:"ENCRYPTION_KEY",value:X.encryptionKey},{key:"MESH_JWT_SECRET",value:X.meshJwtSecret},{key:"STUDIO_PROVISION_SECRET_KEY",value:X.studioProvisionSecretKey},{key:"DISABLE_RATE_LIMIT",value:X.disableRateLimit}]},{title:"Auth Providers",entries:[{key:"AUTH_EMAIL_PASSWORD_ENABLED",value:process.env.AUTH_EMAIL_PASSWORD_ENABLED??"true"},{key:"AUTH_GOOGLE_CLIENT_ID",value:!!process.env.AUTH_GOOGLE_CLIENT_ID},{key:"AUTH_GITHUB_CLIENT_ID",value:!!process.env.AUTH_GITHUB_CLIENT_ID},{key:"AUTH_RESEND_API_KEY",value:!!process.env.AUTH_RESEND_API_KEY},{key:"AUTH_SENDGRID_API_KEY",value:!!process.env.AUTH_SENDGRID_API_KEY},{key:"AUTH_SSO_MS_CLIENT_ID",value:!!process.env.AUTH_SSO_MS_CLIENT_ID},{key:"AUTH_SSO_GOOGLE_CLIENT_ID",value:!!process.env.AUTH_SSO_GOOGLE_CLIENT_ID},{key:"AUTH_MAGIC_LINK_ENABLED",value:process.env.AUTH_MAGIC_LINK_ENABLED==="true"},{key:"AUTH_EMAIL_OTP_ENABLED",value:process.env.AUTH_EMAIL_OTP_ENABLED==="true"}]},{title:"Observability",entries:[{key:"CLICKHOUSE_URL",value:X.clickhouseUrl},{key:"OTEL_SERVICE_NAME",value:X.otelServiceName}]},{title:"Event Bus & Networking",entries:[{key:"NATS_URL",value:X.natsUrls}]},{title:"Config Files",entries:[{key:"CONFIG_PATH",value:X.configPath}]},{title:"AI Gateway",entries:[{key:"DECO_AI_GATEWAY_ENABLED",value:X.aiGatewayEnabled},{key:"DECO_AI_GATEWAY_URL",value:X.aiGatewayUrl}]}]}function E16({env:X}){let Y=Ka5(X);return L16(hN0,{flexDirection:"column",children:Y.map((G)=>rA1(hN0,{flexDirection:"column",marginTop:1,children:[rA1(gN0,{dimColor:!0,children:[" ","\u2500\u2500 ",G.title," ","\u2500".repeat(Math.max(0,38-G.title.length))]}),G.entries.map(({key:Q,value:J})=>{let W=$a5(Q,J);return rA1(hN0,{children:[rA1(gN0,{dimColor:!0,children:[" ",Q.padEnd(36)]}),L16(gN0,{color:W.color,dimColor:W.dimColor,children:W.text})]},Q)})]},G.title))})}var Za5,Wa5;var P16=w(()=>{Za5=new Set(["BETTER_AUTH_SECRET","ENCRYPTION_KEY","MESH_JWT_SECRET","STUDIO_PROVISION_SECRET_KEY"]),Wa5=new Set(["DATABASE_URL","CLICKHOUSE_URL","NATS_URL"])});var uN0;var q16=w(()=>{uN0={name:"decocms",version:"2.311.8",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/mesh"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:'bun run migrate && concurrently "bun run dev:client" "bun run dev:server"',"dev:servers":'concurrently "bun run dev:client" "bun run dev:server"',"dev:client":"bun --bun vite dev","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts","build:client":"bun --bun vite build","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","db:migrate":"bun run ./dist/server/migrate.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts",test:"bun test","test:e2e":"playwright test","test:e2e:ui":"playwright test --ui","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run build:client && bun run build:server"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1","@freestyle-sh/with-bun":"^0.2.12","@freestyle-sh/with-deno":"^0.0.4","@freestyle-sh/with-nodejs":"^0.2.9","freestyle-sandboxes":"^0.1.46"},dependencies:{"@ai-sdk/anthropic":"^3.0.58","@ai-sdk/google":"^3.0.60","@ai-sdk/openai":"^3.0.50","@anthropic-ai/sdk":"^0.79.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@deco-cx/warp-node":"^0.3.20","@dnd-kit/core":"^6.3.1","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@inkjs/ui":"^2.0.0","@modelcontextprotocol/ext-apps":"^1.2.2","@openrouter/ai-sdk-provider":"^2.2.5","@opentelemetry/core":"^2.6.0","@tanstack/react-virtual":"^3.13.21","@xterm/addon-fit":"^0.11.0","@xterm/xterm":"^6.0.0","ai-sdk-provider-claude-code":"^3.4.4","ai-sdk-provider-codex-cli":"^1.1.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12",nats:"^2.29.3","node-pty":"^1.0.0","posthog-js":"^1.371.1","posthog-node":"^5.0.0",react:"^19.2.0","react-dom":"^19.2.0"},devDependencies:{"@ai-sdk/provider":"^3.0.8","@ai-sdk/react":"^3.0.118","@anthropic-ai/claude-agent-sdk":"^0.2.80","@better-auth/sso":"1.4.1","@daveyplate/better-auth-ui":"^3.2.7","@deco/ui":"workspace:*","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/mesh-sdk":"workspace:*","@decocms/runtime":"workspace:*","@decocms/vite-plugin":"workspace:*","@electric-sql/pglite":"^0.3.15","@floating-ui/react":"^0.27.16","@hookform/resolvers":"^5.2.2","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.27.1","@monaco-editor/react":"^4.7.0","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@playwright/test":"^1.58.2","@radix-ui/react-avatar":"^1.1.10","@radix-ui/react-checkbox":"^1.3.3","@radix-ui/react-dialog":"^1.1.15","@radix-ui/react-dropdown-menu":"^2.1.16","@radix-ui/react-label":"^2.1.7","@radix-ui/react-select":"^2.2.6","@radix-ui/react-separator":"^1.1.7","@radix-ui/react-slot":"^1.2.3","@radix-ui/react-tabs":"^1.1.13","@rjsf/core":"^6.1.2","@rjsf/shadcn":"^6.1.2","@rjsf/utils":"^6.1.2","@rjsf/validator-ajv8":"^6.1.2","@tailwindcss/vite":"^4.1.17","@tanstack/react-query":"5.90.11","@tanstack/react-router":"^1.139.7","@tiptap/core":"3.20.2","@tiptap/extension-mention":"3.20.2","@tiptap/extension-placeholder":"3.20.2","@tiptap/pm":"3.20.2","@tiptap/react":"3.20.2","@tiptap/starter-kit":"3.20.2","@tiptap/suggestion":"3.20.2","@types/bun":"^1.3.1","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@untitledui/icons":"^0.0.19","@vercel/nft":"^1.1.1","@vitejs/plugin-react":"^5.1.0",ai:"^6.0.116","babel-plugin-react-compiler":"^1.0.0","better-auth":"1.4.5","class-variance-authority":"^0.7.1",clsx:"^2.1.1",concurrently:"^9.2.1",croner:"^9.1.0","date-fns":"^4.1.0",degit:"^2.8.4",hono:"^4.10.7","input-otp":"^1.4.2",jose:"^6.0.11","kysely-pglite":"^0.6.1","lucide-react":"^0.468.0",marked:"^15.0.6","@decocms/sandbox":"workspace:*","mesh-plugin-workflows":"workspace:*",nanoid:"^5.1.6",pg:"^8.16.3",prettier:"^3.4.2","react-hook-form":"^7.66.0","react-markdown":"^10.1.0","react-resizable-panels":"^2.1.7","react-syntax-highlighter":"^15.6.1",recharts:"^3.6.0","rehype-raw":"^7.0.0","remark-gfm":"^4.0.0","sass-embedded":"^1.97.2",sonner:"^2.0.7","tailwind-merge":"^3.3.1",tailwindcss:"^4.1.17",typescript:"^5.9.3",vite:"^7.2.1","vite-tsconfig-paths":"^5.1.4",zod:"^4.0.0",zustand:"^5.0.9"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","mesh","tools"],license:"MIT",publishConfig:{access:"public"}}});import{Box as IU,Text as RX}from"ink";import{Spinner as Fa5}from"@inkjs/ui";import{useSyncExternalStore as A16}from"react";import{jsx as TY,jsxs as sQ}from"react/jsx-runtime";function Oa5(X,Y){if(!X||!za5.has(X))return X;let G=lN0[Y]??lN0[lN0.length-1];return X==="#875f00"?G[0]:G[1]}function T16({status:X}){if(X==="pending")return TY(Fa5,{label:""});return TY(RX,{color:"green",children:"\u2713"})}function I16({services:X,migrationsStatus:Y,home:G,serverUrl:Q,vibe:J}){let W=A16(mm0,lm0),Z=A16(tm0,nm0);return sQ(IU,{flexDirection:"column",paddingBottom:1,children:[J?sQ(IU,{flexDirection:"column",children:[W.map(($,K)=>{let H=Z[K],U=$.reduce((N,z)=>N+z.text.length,0),B=Math.max(0,Na5-U);return sQ(IU,{flexDirection:"row",children:[$.map((N,z)=>{let O=Oa5(N.color,K);return O?TY(RX,{color:O,children:N.text},z):TY(RX,{children:N.text},z)}),TY(RX,{children:" ".repeat(B+2)}),H?.map((N,z)=>N.color?TY(RX,{color:N.color,children:N.char},z):TY(RX,{children:N.char},z))]},K)}),sQ(RX,{dimColor:!0,children:[" v",uN0.version]})]}):sQ(IU,{flexDirection:"column",marginTop:1,children:[Ua5.map(($,K)=>TY(RX,{color:Ba5[K],children:$},K)),sQ(RX,{dimColor:!0,children:[" v",uN0.version]})]}),TY(IU,{marginBottom:1,children:TY(RX,{dimColor:!0,children:"\u2500".repeat(80)})}),TY(IU,{children:sQ(RX,{dimColor:!0,children:["Home: ",G]})}),sQ(IU,{gap:2,children:[X.map(($)=>sQ(IU,{gap:1,children:[sQ(RX,{children:[$.name," :",$.port||"...."]}),TY(T16,{status:$.status})]},$.name)),sQ(IU,{gap:1,children:[TY(RX,{children:"Migrations"}),TY(T16,{status:Y})]})]}),TY(IU,{children:Q?sQ(RX,{children:["Open in browser: ",TY(RX,{color:"cyan",children:Q})]}):TY(RX,{dimColor:!0,children:"Starting..."})}),sQ(IU,{gap:2,children:[sQ(RX,{dimColor:!0,children:[TY(RX,{bold:!0,dimColor:!0,children:"K"})," ","toggle config"]}),sQ(RX,{dimColor:!0,children:[TY(RX,{bold:!0,dimColor:!0,children:"L"})," ","toggle log flow"]}),sQ(RX,{dimColor:!0,children:[TY(RX,{bold:!0,dimColor:!0,children:"V"})," ","toggle vibe ",J?"\u266A Nihilore \xB7 CC BY 4.0":""]}),J&&sQ(RX,{dimColor:!0,children:[TY(RX,{bold:!0,dimColor:!0,children:"N"})," ","skip song"]})]})]})}var Ua5,Ba5,lN0,Na5=30,za5;var V16=w(()=>{q16();Vt1();Ct1();Ua5=[" \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 "],Ba5=["#00ff64","#00ee5e","#00dc56","#00c84e","#00b444","#00a03c","#008832","#006e28"],lN0=[["#00ff64","#00cc50"],["#00f060","#00c04c"],["#00e05c","#00b448"],["#00d058","#00a844"],["#00c054","#009c40"],["#00b050","#00903c"],["#00a04c","#008438"],["#009048","#007834"],["#008044","#006c30"],["#007040","#00602c"],["#00603c","#005428"]],za5=new Set(["#875f00","#5f3800"])});import{useSyncExternalStore as Da5}from"react";function wa5(){let X=process.stdout.rows||24,Y=process.stdout.columns||80;if(X!==oA1.rows||Y!==oA1.columns)oA1={rows:X,columns:Y};return oA1}function La5(X){return process.stdout.on("resize",X),()=>{process.stdout.off("resize",X)}}function j16(){return Da5(La5,wa5)}var oA1;var M16=w(()=>{oA1={rows:process.stdout.rows||24,columns:process.stdout.columns||80}});import{Box as Ea5,Text as bX1}from"ink";import{useSyncExternalStore as Pa5}from"react";import{jsx as mN0,jsxs as dN0}from"react/jsx-runtime";function qa5(X){if(X>=500)return"red";if(X>=400)return"yellow";if(X>=300)return"cyan";return"green"}function R16({logs:X,headerHeight:Y}){let{rows:G}=j16(),{logFlow:Q}=Pa5(CX1,kX1),J=Math.max(1,G-Y-1),W=Q?X:X.slice(-J);return mN0(Ea5,{flexDirection:"column",children:W.map((Z,$)=>{if(Z.rawLine)return mN0(bX1,{dimColor:!0,children:Z.rawLine},$);let K=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return dN0(bX1,{children:[dN0(bX1,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),mN0(bX1,{color:qa5(Z.status),children:Z.status}),dN0(bX1,{dimColor:!0,children:[" ",K.padStart(8)]})]},$)})})}var S16=w(()=>{$z();M16()});var cN0={};T0(cN0,{App:()=>Ra5});import{Box as Aa5,Text as Ta5,useInput as Ia5}from"ink";import{useSyncExternalStore as Va5}from"react";import{jsx as sA1,jsxs as Sa5}from"react/jsx-runtime";function Ra5({home:X}){let Y=Va5(CX1,kX1);return Ia5((G)=>{if(G==="k"||G==="K")vN0();if(G==="l"||G==="L")_N0();if((G==="v"||G==="V")&&Y.dataDir)bt1(Y.dataDir),fN0();if((G==="n"||G==="N")&&Y.vibe)ft1()}),Sa5(Aa5,{flexDirection:"column",children:[sA1(I16,{services:Y.services,migrationsStatus:Y.migrationsStatus,home:X,serverUrl:Y.serverUrl,vibe:Y.vibe}),Y.viewMode==="config"?Y.env?sA1(E16,{env:Y.env}):sA1(Ta5,{dimColor:!0,children:"Loading configuration..."}):sA1(R16,{logs:Y.logs,headerHeight:Y.vibe?Ma5:ja5})]})}var ja5=15,Ma5=19;var iN0=w(()=>{P16();V16();S16();$z();fd()});function k16(X,Y={}){return{PORT:String(X.port),NODE_ENV:X.nodeEnv,BASE_URL:X.baseUrl,DATA_DIR:X.dataDir,DECOCMS_HOME:X.dataDir,DATABASE_URL:X.databaseUrl,DATABASE_PG_SSL:String(X.databasePgSsl),DATABASE_POOL_MAX:String(X.databasePoolMax),NATS_URL:X.natsUrls.join(","),BETTER_AUTH_SECRET:X.betterAuthSecret,ENCRYPTION_KEY:X.encryptionKey,MESH_JWT_SECRET:X.meshJwtSecret,DECOCMS_LOCAL_MODE:String(X.localMode),DISABLE_RATE_LIMIT:String(X.disableRateLimit),STUDIO_PROVISION_SECRET_KEY:X.studioProvisionSecretKey,CONFIG_PATH:X.configPath,...Object.fromEntries(Object.entries(process.env).filter(([G])=>G.startsWith("AUTH_"))),DECO_AI_GATEWAY_ENABLED:String(X.aiGatewayEnabled),DECO_AI_GATEWAY_URL:X.aiGatewayUrl,ENABLE_DECO_IMPORT:String(X.enableDecoImport),S3_ENDPOINT:X.s3Endpoint,S3_BUCKET:X.s3Bucket,S3_REGION:X.s3Region,S3_ACCESS_KEY_ID:X.s3AccessKeyId,S3_SECRET_ACCESS_KEY:X.s3SecretAccessKey,S3_FORCE_PATH_STYLE:String(X.s3ForcePathStyle),OTEL_SERVICE_NAME:X.otelServiceName,CLICKHOUSE_URL:X.clickhouseUrl,OTEL_EXPORTER_OTLP_ENDPOINT:process.env.OTEL_EXPORTER_OTLP_ENDPOINT,OTEL_EXPORTER_OTLP_PROTOCOL:process.env.OTEL_EXPORTER_OTLP_PROTOCOL,OTEL_RESOURCE_ATTRIBUTES:process.env.OTEL_RESOURCE_ATTRIBUTES,DECO_SUPABASE_URL:X.decoSupabaseUrl,DECO_SUPABASE_SERVICE_KEY:X.decoSupabaseServiceKey,FIRECRAWL_API_KEY:X.firecrawlApiKey,STUDIO_SANDBOX_RUNNER:process.env.STUDIO_SANDBOX_RUNNER,STUDIO_SANDBOX_TEMPLATE_NAME:process.env.STUDIO_SANDBOX_TEMPLATE_NAME,STUDIO_ENV:process.env.STUDIO_ENV,STUDIO_SANDBOX_PREVIEW_URL_PATTERN:process.env.STUDIO_SANDBOX_PREVIEW_URL_PATTERN,STUDIO_SANDBOX_PREVIEW_GATEWAY_NAME:process.env.STUDIO_SANDBOX_PREVIEW_GATEWAY_NAME,STUDIO_SANDBOX_PREVIEW_GATEWAY_NAMESPACE:process.env.STUDIO_SANDBOX_PREVIEW_GATEWAY_NAMESPACE,STUDIO_SANDBOX_SENTINEL_TOKEN:process.env.STUDIO_SANDBOX_SENTINEL_TOKEN,KUBERNETES_SERVICE_HOST:process.env.KUBERNETES_SERVICE_HOST,KUBERNETES_SERVICE_PORT:process.env.KUBERNETES_SERVICE_PORT,FREESTYLE_API_KEY:process.env.FREESTYLE_API_KEY,BROWSERLESS_TOKEN:process.env.BROWSERLESS_TOKEN,NODE_EXTRA_CA_CERTS:process.env.NODE_EXTRA_CA_CERTS,DECO_CLI:"1",DECO_NO_TUI:"true",...Y}}var yj=k((ba5)=>{ba5.HttpAuthLocation=void 0;(function(X){X.HEADER="header",X.QUERY="query"})(ba5.HttpAuthLocation||(ba5.HttpAuthLocation={}));ba5.HttpApiKeyAuthLocation=void 0;(function(X){X.HEADER="header",X.QUERY="query"})(ba5.HttpApiKeyAuthLocation||(ba5.HttpApiKeyAuthLocation={}));ba5.EndpointURLScheme=void 0;(function(X){X.HTTP="http",X.HTTPS="https"})(ba5.EndpointURLScheme||(ba5.EndpointURLScheme={}));ba5.AlgorithmId=void 0;(function(X){X.MD5="md5",X.CRC32="crc32",X.CRC32C="crc32c",X.SHA1="sha1",X.SHA256="sha256"})(ba5.AlgorithmId||(ba5.AlgorithmId={}));var ka5=(X)=>{let Y=[];if(X.sha256!==void 0)Y.push({algorithmId:()=>ba5.AlgorithmId.SHA256,checksumConstructor:()=>X.sha256});if(X.md5!=null)Y.push({algorithmId:()=>ba5.AlgorithmId.MD5,checksumConstructor:()=>X.md5});return{addChecksumAlgorithm(G){Y.push(G)},checksumAlgorithms(){return Y}}},Ca5=(X)=>{let Y={};return X.checksumAlgorithms().forEach((G)=>{Y[G.algorithmId()]=G.checksumConstructor()}),Y},va5=(X)=>{return ka5(X)},_a5=(X)=>{return Ca5(X)};ba5.FieldPosition=void 0;(function(X){X[X.HEADER=0]="HEADER",X[X.TRAILER=1]="TRAILER"})(ba5.FieldPosition||(ba5.FieldPosition={}));var fa5="__smithy_context";ba5.IniSectionType=void 0;(function(X){X.PROFILE="profile",X.SSO_SESSION="sso-session",X.SERVICES="services"})(ba5.IniSectionType||(ba5.IniSectionType={}));ba5.RequestHandlerProtocol=void 0;(function(X){X.HTTP_0_9="http/0.9",X.HTTP_1_0="http/1.0",X.TDS_8_0="tds/8.0"})(ba5.RequestHandlerProtocol||(ba5.RequestHandlerProtocol={}));ba5.SMITHY_CONTEXT_KEY=fa5;ba5.getDefaultClientConfiguration=va5;ba5.resolveDefaultRuntimeConfig=_a5});var u7=k((ca5)=>{var ga5=yj(),ua5=(X)=>{return{setHttpHandler(Y){X.httpHandler=Y},httpHandler(){return X.httpHandler},updateHttpClientConfig(Y,G){X.httpHandler?.updateHttpClientConfig(Y,G)},httpHandlerConfigs(){return X.httpHandler.httpHandlerConfigs()}}},la5=(X)=>{return{httpHandler:X.httpHandler()}};class C16{name;kind;values;constructor({name:X,kind:Y=ga5.FieldPosition.HEADER,values:G=[]}){this.name=X,this.kind=Y,this.values=G}add(X){this.values.push(X)}set(X){this.values=X}remove(X){this.values=this.values.filter((Y)=>Y!==X)}toString(){return this.values.map((X)=>X.includes(",")||X.includes(" ")?`"${X}"`:X).join(", ")}get(){return this.values}}class v16{entries={};encoding;constructor({fields:X=[],encoding:Y="utf-8"}){X.forEach(this.setField.bind(this)),this.encoding=Y}setField(X){this.entries[X.name.toLowerCase()]=X}getField(X){return this.entries[X.toLowerCase()]}removeField(X){delete this.entries[X.toLowerCase()]}getByType(X){return Object.values(this.entries).filter((Y)=>Y.kind===X)}}class eA1{method;protocol;hostname;port;path;query;headers;username;password;fragment;body;constructor(X){this.method=X.method||"GET",this.hostname=X.hostname||"localhost",this.port=X.port,this.query=X.query||{},this.headers=X.headers||{},this.body=X.body,this.protocol=X.protocol?X.protocol.slice(-1)!==":"?`${X.protocol}:`:X.protocol:"https:",this.path=X.path?X.path.charAt(0)!=="/"?`/${X.path}`:X.path:"/",this.username=X.username,this.password=X.password,this.fragment=X.fragment}static clone(X){let Y=new eA1({...X,headers:{...X.headers}});if(Y.query)Y.query=ma5(Y.query);return Y}static isInstance(X){if(!X)return!1;let Y=X;return"method"in Y&&"protocol"in Y&&"hostname"in Y&&"path"in Y&&typeof Y.query==="object"&&typeof Y.headers==="object"}clone(){return eA1.clone(this)}}function ma5(X){return Object.keys(X).reduce((Y,G)=>{let Q=X[G];return{...Y,[G]:Array.isArray(Q)?[...Q]:Q}},{})}class _16{statusCode;reason;headers;body;constructor(X){this.statusCode=X.statusCode,this.reason=X.reason,this.headers=X.headers||{},this.body=X.body}static isInstance(X){if(!X)return!1;let Y=X;return typeof Y.statusCode==="number"&&typeof Y.headers==="object"}}function da5(X){return/^[a-z0-9][a-z0-9\.\-]*[a-z0-9]$/.test(X)}ca5.Field=C16;ca5.Fields=v16;ca5.HttpRequest=eA1;ca5.HttpResponse=_16;ca5.getHttpHandlerExtensionConfiguration=ua5;ca5.isValidHostname=da5;ca5.resolveHttpHandlerRuntimeConfig=la5});function sa5(X){return(Y)=>async(G)=>{let{request:Q}=G;if(X.expectContinueHeader!==!1&&f16.HttpRequest.isInstance(Q)&&Q.body&&X.runtime==="node"&&X.requestHandler?.constructor?.name!=="FetchHttpHandler"){let J=!0;if(typeof X.expectContinueHeader==="number")try{J=(Number(Q.headers?.["content-length"])??X.bodyLengthChecker?.(Q.body)??1/0)>=X.expectContinueHeader}catch(W){}else J=!!X.expectContinueHeader;if(J)Q.headers.Expect="100-continue"}return Y({...G,request:Q})}}var f16,ea5,b16=(X)=>({applyToStack:(Y)=>{Y.add(sa5(X),ea5)}});var y16=w(()=>{f16=X1(u7(),1);ea5={step:"build",tags:["SET_EXPECT_HEADER","EXPECT_HEADER"],name:"addExpectContinueMiddleware",override:!0}});var wH,XT1,xj,YT1,E9,x16,xX1;var LH=w(()=>{wH={WHEN_SUPPORTED:"WHEN_SUPPORTED",WHEN_REQUIRED:"WHEN_REQUIRED"},XT1=wH.WHEN_SUPPORTED,xj={WHEN_SUPPORTED:"WHEN_SUPPORTED",WHEN_REQUIRED:"WHEN_REQUIRED"},YT1=wH.WHEN_SUPPORTED;(function(X){X.MD5="MD5",X.CRC32="CRC32",X.CRC32C="CRC32C",X.CRC64NVME="CRC64NVME",X.SHA1="SHA1",X.SHA256="SHA256"})(E9||(E9={}));(function(X){X.HEADER="header",X.TRAILER="trailer"})(x16||(x16={}));xX1=E9.CRC32});var kq,Ga=(X,Y,G,Q)=>{if(!(Y in X))return;let J=X[Y].toUpperCase();if(!Object.values(G).includes(J))throw TypeError(`Cannot load ${Q} '${Y}'. Expected one of ${Object.values(G)}, got '${X[Y]}'.`);return J};var sN0=w(()=>{(function(X){X.ENV="env",X.CONFIG="shared config entry"})(kq||(kq={}))});var Xr5="AWS_REQUEST_CHECKSUM_CALCULATION",Yr5="request_checksum_calculation",h16;var g16=w(()=>{LH();sN0();h16={environmentVariableSelector:(X)=>Ga(X,Xr5,wH,kq.ENV),configFileSelector:(X)=>Ga(X,Yr5,wH,kq.CONFIG),default:XT1}});var Gr5="AWS_RESPONSE_CHECKSUM_VALIDATION",Qr5="response_checksum_validation",u16;var l16=w(()=>{LH();sN0();u16={environmentVariableSelector:(X)=>Ga(X,Gr5,xj,kq.ENV),configFileSelector:(X)=>Ga(X,Qr5,xj,kq.CONFIG),default:YT1}});var Xz0=k((Nr5)=>{var Jr5=["AuthFailure","InvalidSignatureException","RequestExpired","RequestInTheFuture","RequestTimeTooSkewed","SignatureDoesNotMatch"],Zr5=["BandwidthLimitExceeded","EC2ThrottledException","LimitExceededException","PriorRequestNotComplete","ProvisionedThroughputExceededException","RequestLimitExceeded","RequestThrottled","RequestThrottledException","SlowDown","ThrottledException","Throttling","ThrottlingException","TooManyRequestsException","TransactionInProgressException"],Wr5=["TimeoutError","RequestTimeout","RequestTimeoutException"],$r5=[500,502,503,504],Kr5=["ECONNRESET","ECONNREFUSED","EPIPE","ETIMEDOUT"],Hr5=["EHOSTUNREACH","ENETUNREACH","ENOTFOUND"],m16=(X)=>X?.$retryable!==void 0,Fr5=(X)=>Jr5.includes(X.name),d16=(X)=>X.$metadata?.clockSkewCorrected,c16=(X)=>{let Y=new Set(["Failed to fetch","NetworkError when attempting to fetch resource","The Internet connection appears to be offline","Load failed","Network request failed"]);if(!(X&&X instanceof TypeError))return!1;return Y.has(X.message)},Ur5=(X)=>X.$metadata?.httpStatusCode===429||Zr5.includes(X.name)||X.$retryable?.throttling==!0,eN0=(X,Y=0)=>m16(X)||d16(X)||X.name==="InvalidSignatureException"&&X.message?.includes("Signature expired")||Wr5.includes(X.name)||Kr5.includes(X?.code||"")||Hr5.includes(X?.code||"")||$r5.includes(X.$metadata?.httpStatusCode||0)||c16(X)||i16(X)||X.cause!==void 0&&Y<=10&&eN0(X.cause,Y+1),Br5=(X)=>{if(X.$metadata?.httpStatusCode!==void 0){let Y=X.$metadata.httpStatusCode;if(500<=Y&&Y<=599&&!eN0(X))return!0;return!1}return!1};function i16(X){return X.code==="ERR_HTTP2_STREAM_ERROR"&&X.message.includes("NGHTTP2_REFUSED_STREAM")}Nr5.isBrowserNetworkError=c16;Nr5.isClockSkewCorrectedError=d16;Nr5.isClockSkewError=Fr5;Nr5.isNodeJsHttp2TransientError=i16;Nr5.isRetryableByTrait=m16;Nr5.isServerError=Br5;Nr5.isThrottlingError=Ur5;Nr5.isTransientError=eN0});var Dw=k((kr5)=>{var Ar5=Xz0();kr5.RETRY_MODES=void 0;(function(X){X.STANDARD="standard",X.ADAPTIVE="adaptive"})(kr5.RETRY_MODES||(kr5.RETRY_MODES={}));var QT1=3,Tr5=kr5.RETRY_MODES.STANDARD;class JT1{static setTimeoutFn=setTimeout;beta;minCapacity;minFillRate;scaleConstant;smooth;enabled=!1;availableTokens=0;lastMaxRate=0;measuredTxRate=0;requestCount=0;fillRate;lastThrottleTime;lastTimestamp=0;lastTxRateBucket;maxCapacity;timeWindow=0;constructor(X){this.beta=X?.beta??0.7,this.minCapacity=X?.minCapacity??1,this.minFillRate=X?.minFillRate??0.5,this.scaleConstant=X?.scaleConstant??0.4,this.smooth=X?.smooth??0.8,this.lastThrottleTime=this.getCurrentTimeInSeconds(),this.lastTxRateBucket=Math.floor(this.getCurrentTimeInSeconds()),this.fillRate=this.minFillRate,this.maxCapacity=this.minCapacity}async getSendToken(){return this.acquireTokenBucket(1)}updateClientSendingRate(X){let Y;this.updateMeasuredRate();let G=X;if(G?.errorType==="THROTTLING"||Ar5.isThrottlingError(G?.error??X)){let W=!this.enabled?this.measuredTxRate:Math.min(this.measuredTxRate,this.fillRate);this.lastMaxRate=W,this.calculateTimeWindow(),this.lastThrottleTime=this.getCurrentTimeInSeconds(),Y=this.cubicThrottle(W),this.enableTokenBucket()}else this.calculateTimeWindow(),Y=this.cubicSuccess(this.getCurrentTimeInSeconds());let J=Math.min(Y,2*this.measuredTxRate);this.updateTokenBucketRate(J)}getCurrentTimeInSeconds(){return Date.now()/1000}async acquireTokenBucket(X){if(!this.enabled)return;if(this.refillTokenBucket(),X>this.availableTokens){let Y=(X-this.availableTokens)/this.fillRate*1000;await new Promise((G)=>JT1.setTimeoutFn(G,Y))}this.availableTokens=this.availableTokens-X}refillTokenBucket(){let X=this.getCurrentTimeInSeconds();if(!this.lastTimestamp){this.lastTimestamp=X;return}let Y=(X-this.lastTimestamp)*this.fillRate;this.availableTokens=Math.min(this.maxCapacity,this.availableTokens+Y),this.lastTimestamp=X}calculateTimeWindow(){this.timeWindow=this.getPrecise(Math.pow(this.lastMaxRate*(1-this.beta)/this.scaleConstant,0.3333333333333333))}cubicThrottle(X){return this.getPrecise(X*this.beta)}cubicSuccess(X){return this.getPrecise(this.scaleConstant*Math.pow(X-this.lastThrottleTime-this.timeWindow,3)+this.lastMaxRate)}enableTokenBucket(){this.enabled=!0}updateTokenBucketRate(X){this.refillTokenBucket(),this.fillRate=Math.max(X,this.minFillRate),this.maxCapacity=Math.max(X,this.minCapacity),this.availableTokens=Math.min(this.availableTokens,this.maxCapacity)}updateMeasuredRate(){let X=this.getCurrentTimeInSeconds(),Y=Math.floor(X*2)/2;if(this.requestCount++,Y>this.lastTxRateBucket){let G=this.requestCount/(Y-this.lastTxRateBucket);this.measuredTxRate=this.getPrecise(G*this.smooth+this.measuredTxRate*(1-this.smooth)),this.requestCount=0,this.lastTxRateBucket=Y}}getPrecise(X){return parseFloat(X.toFixed(8))}}var Ir5=100,Qz0=20000,Vr5=500,Yz0=500,jr5=5,Mr5=10,p16=1,Rr5="amz-sdk-invocation-id",Sr5="amz-sdk-request";class eQ{static v2026=typeof process<"u"&&process.env?.SMITHY_NEW_RETRIES_2026==="true";static delay(){return eQ.v2026?50:100}static throttlingDelay(){return eQ.v2026?1000:500}static cost(){return eQ.v2026?14:5}static throttlingCost(){return eQ.v2026?5:10}static modifiedCostType(){return eQ.v2026?"THROTTLING":"TRANSIENT"}}class n16{x=eQ.delay();computeNextBackoffDelay(X){let Y=Math.random(),G=2,Q=Y*Math.min(this.x*2**X,Qz0);return Math.floor(Q)}setDelayBase(X){this.x=X}}class Gz0{delay;count;cost;longPoll;constructor(X,Y,G,Q){this.delay=X,this.count=Y,this.cost=G,this.longPoll=Q}getRetryCount(){return this.count}getRetryDelay(){return Math.min(Qz0,this.delay)}getRetryCost(){return this.cost}isLongPoll(){return this.longPoll}}var GT1={incompatible:1,attempts:2,capacity:3};class hX1{mode=kr5.RETRY_MODES.STANDARD;capacity=Yz0;retryBackoffStrategy;maxAttemptsProvider;baseDelay;constructor(X){if(typeof X==="number")this.maxAttemptsProvider=async()=>X;else if(typeof X==="function")this.maxAttemptsProvider=X;else if(X&&typeof X==="object")this.maxAttemptsProvider=async()=>X.maxAttempts,this.baseDelay=X.baseDelay,this.retryBackoffStrategy=X.backoff;this.maxAttemptsProvider??=async()=>QT1,this.baseDelay??=eQ.delay(),this.retryBackoffStrategy??=new n16}async acquireInitialRetryToken(X){return new Gz0(eQ.delay(),0,void 0,eQ.v2026&&X.includes(":longpoll"))}async refreshRetryTokenForRetry(X,Y){let G=await this.getMaxAttempts(),Q=this.retryCode(X,Y,G),J=Q===0,W=X.isLongPoll?.();if(J||W){let Z=Y.errorType;this.retryBackoffStrategy.setDelayBase(Z==="THROTTLING"?eQ.throttlingDelay():this.baseDelay);let $=this.retryBackoffStrategy.computeNextBackoffDelay(X.getRetryCount()),K=$;if(Y.retryAfterHint instanceof Date)K=Math.max($,Math.min(Y.retryAfterHint.getTime()-Date.now(),$+5000));if(!J)throw Object.assign(Error("No retry token available"),{$backoff:eQ.v2026&&Q===GT1.capacity&&W?K:0});else{let H=this.getCapacityCost(Z);return this.capacity-=H,new Gz0(K,X.getRetryCount()+1,H,X.isLongPoll?.()??!1)}}throw Error("No retry token available")}recordSuccess(X){this.capacity=Math.min(Yz0,this.capacity+(X.getRetryCost()??p16))}getCapacity(){return this.capacity}async maxAttempts(){return this.maxAttemptsProvider()}async getMaxAttempts(){try{return await this.maxAttemptsProvider()}catch(X){return console.warn(`Max attempts provider could not resolve. Using default of ${QT1}`),QT1}}retryCode(X,Y,G){let Q=X.getRetryCount()+1,J=this.isRetryableError(Y.errorType)?0:GT1.incompatible,W=Q<G?0:GT1.attempts,Z=this.capacity>=this.getCapacityCost(Y.errorType)?0:GT1.capacity;return J||W||Z}getCapacityCost(X){return X===eQ.modifiedCostType()?eQ.throttlingCost():eQ.cost()}isRetryableError(X){return X==="THROTTLING"||X==="TRANSIENT"}}class t16{mode=kr5.RETRY_MODES.ADAPTIVE;rateLimiter;standardRetryStrategy;constructor(X,Y){let{rateLimiter:G}=Y??{};this.rateLimiter=G??new JT1,this.standardRetryStrategy=Y?new hX1({maxAttempts:typeof X==="number"?X:3,...Y}):new hX1(X)}async acquireInitialRetryToken(X){return await this.rateLimiter.getSendToken(),this.standardRetryStrategy.acquireInitialRetryToken(X)}async refreshRetryTokenForRetry(X,Y){return this.rateLimiter.updateClientSendingRate(Y),this.standardRetryStrategy.refreshRetryTokenForRetry(X,Y)}recordSuccess(X){this.rateLimiter.updateClientSendingRate({}),this.standardRetryStrategy.recordSuccess(X)}async maxAttemptsProvider(){return this.standardRetryStrategy.maxAttempts()}}class a16 extends hX1{computeNextBackoffDelay;constructor(X,Y=eQ.delay()){super(typeof X==="function"?X:async()=>X);if(typeof Y==="number")this.computeNextBackoffDelay=()=>Y;else this.computeNextBackoffDelay=Y}async refreshRetryTokenForRetry(X,Y){let G=await super.refreshRetryTokenForRetry(X,Y);return G.getRetryDelay=()=>this.computeNextBackoffDelay(G.getRetryCount()),G}}kr5.AdaptiveRetryStrategy=t16;kr5.ConfiguredRetryStrategy=a16;kr5.DEFAULT_MAX_ATTEMPTS=QT1;kr5.DEFAULT_RETRY_DELAY_BASE=Ir5;kr5.DEFAULT_RETRY_MODE=Tr5;kr5.DefaultRateLimiter=JT1;kr5.INITIAL_RETRY_TOKENS=Yz0;kr5.INVOCATION_ID_HEADER=Rr5;kr5.MAXIMUM_RETRY_DELAY=Qz0;kr5.NO_RETRY_INCREMENT=p16;kr5.REQUEST_HEADER=Sr5;kr5.RETRY_COST=jr5;kr5.Retry=eQ;kr5.StandardRetryStrategy=hX1;kr5.THROTTLING_RETRY_DELAY_BASE=Vr5;kr5.TIMEOUT_RETRY_COST=Mr5});var WX=k((Yo5)=>{var nr5=Dw(),Jz0={warningEmitted:!1},tr5=(X)=>{if(X&&!Jz0.warningEmitted&&parseInt(X.substring(1,X.indexOf(".")))<20)Jz0.warningEmitted=!0,process.emitWarning(`NodeDeprecationWarning: The AWS SDK for JavaScript (v3) will
|
|
1647
1647
|
no longer support Node.js ${X} in January 2026.
|
|
1648
1648
|
|
|
1649
1649
|
To continue receiving updates to AWS services, bug fixes, and security
|
|
@@ -7179,7 +7179,7 @@ mkdir -p /app && chown deco:deco /app
|
|
|
7179
7179
|
`);return a5.from(G)};z37.decodePax=function(Y){let G={};while(Y.length){let Q=0;while(Q<Y.length&&Y[Q]!==32)Q++;let J=parseInt(a5.toString(Y.subarray(0,Q)),10);if(!J)return G;let W=a5.toString(Y.subarray(Q+1,J-1)),Z=W.indexOf("=");if(Z===-1)return G;G[W.slice(0,Z)]=W.slice(Z+1),Y=Y.subarray(J)}return G};z37.encode=function(Y){let G=a5.alloc(512),Q=Y.name,J="";if(Y.typeflag===5&&Q[Q.length-1]!=="/")Q+="/";if(a5.byteLength(Q)!==Q.length)return null;while(a5.byteLength(Q)>100){let W=Q.indexOf("/");if(W===-1)return null;J+=J?"/"+Q.slice(0,W):Q.slice(0,W),Q=Q.slice(W+1)}if(a5.byteLength(Q)>100||a5.byteLength(J)>155)return null;if(Y.linkname&&a5.byteLength(Y.linkname)>100)return null;if(a5.write(G,Q),a5.write(G,fT(Y.mode&4095,6),100),a5.write(G,fT(Y.uid,6),108),a5.write(G,fT(Y.gid,6),116),B37(Y.size,G,124),a5.write(G,fT(Y.mtime.getTime()/1000|0,11),136),G[156]=48+F37(Y.type),Y.linkname)a5.write(G,Y.linkname,157);if(a5.copy(LZ8,G,257),a5.copy(Q37,G,263),Y.uname)a5.write(G,Y.uname,265);if(Y.gname)a5.write(G,Y.gname,297);if(a5.write(G,fT(Y.devmajor||0,6),329),a5.write(G,fT(Y.devminor||0,6),337),J)a5.write(G,J,345);return a5.write(G,fT(PZ8(G),6),148),G};z37.decode=function(Y,G,Q){let J=Y[156]===0?0:Y[156]-48,W=as(Y,0,100,G),Z=_T(Y,100,8),$=_T(Y,108,8),K=_T(Y,116,8),H=_T(Y,124,12),U=_T(Y,136,12),B=H37(J),N=Y[157]===0?null:as(Y,157,100,G),z=as(Y,265,32),O=as(Y,297,32),D=_T(Y,329,8),E=_T(Y,337,8),P=PZ8(Y);if(P===256)return null;if(P!==_T(Y,148,8))throw Error("Invalid tar header. Maybe the tar is corrupted or it needs to be gunzipped?");if(W37(Y)){if(Y[345])W=as(Y,345,155,G)+"/"+W}else if($37(Y));else if(!Q)throw Error("Invalid tar header: unknown format.");if(J===0&&W&&W[W.length-1]==="/")J=5;return{name:W,mode:Z,uid:$,gid:K,size:H,mtime:new Date(1000*U),type:B,linkname:N,uname:z,gname:O,devmajor:D,devminor:E,pax:null}};function W37(X){return a5.equals(LZ8,X.subarray(257,263))}function $37(X){return a5.equals(J37,X.subarray(257,263))&&a5.equals(Z37,X.subarray(263,265))}function K37(X,Y,G){if(typeof X!=="number")return G;if(X=~~X,X>=Y)return Y;if(X>=0)return X;if(X+=Y,X>=0)return X;return 0}function H37(X){switch(X){case 0:return"file";case 1:return"link";case 2:return"symlink";case 3:return"character-device";case 4:return"block-device";case 5:return"directory";case 6:return"fifo";case 7:return"contiguous-file";case 72:return"pax-header";case 55:return"pax-global-header";case 27:return"gnu-long-link-path";case 28:case 30:return"gnu-long-path"}return null}function F37(X){switch(X){case"file":return 0;case"link":return 1;case"symlink":return 2;case"character-device":return 3;case"block-device":return 4;case"directory":return 5;case"fifo":return 6;case"contiguous-file":return 7;case"pax-header":return 72}return 0}function EZ8(X,Y,G,Q){for(;G<Q;G++)if(X[G]===Y)return G;return Q}function PZ8(X){let Y=256;for(let G=0;G<148;G++)Y+=X[G];for(let G=156;G<512;G++)Y+=X[G];return Y}function fT(X,Y){if(X=X.toString(8),X.length>Y)return"7777777777777777777".slice(0,Y)+" ";return"0000000000000000000".slice(0,Y-X.length)+X+" "}function U37(X,Y,G){Y[G]=128;for(let Q=11;Q>0;Q--)Y[G+Q]=X&255,X=Math.floor(X/256)}function B37(X,Y,G){if(X.toString(8).length>11)U37(X,Y,G);else a5.write(Y,fT(X,11),G)}function N37(X){let Y;if(X[0]===128)Y=!0;else if(X[0]===255)Y=!1;else return null;let G=[],Q;for(Q=X.length-1;Q>0;Q--){let Z=X[Q];if(Y)G.push(Z);else G.push(255-Z)}let J=0,W=G.length;for(Q=0;Q<W;Q++)J+=G[Q]*Math.pow(256,Q);return Y?J:-1*J}function _T(X,Y,G){if(X=X.subarray(Y,Y+G),Y=0,X[Y]&128)return N37(X);else{while(Y<X.length&&X[Y]===32)Y++;let Q=K37(EZ8(X,32,Y,X.length),X.length,X.length);while(Y<Q&&X[Y]===0)Y++;if(Q===Y)return 0;return parseInt(a5.toString(X.subarray(Y,Q)),8)}}function as(X,Y,G,Q){return a5.toString(X.subarray(Y,EZ8(X,0,Y,Y+G)),Q)}function ay0(X){let Y=a5.byteLength(X),G=Math.floor(Math.log(Y)/Math.log(10))+1;if(Y+G>=Math.pow(10,G))G++;return Y+G+X}});var RZ8=k((o4Q,MZ8)=>{var{Writable:P37,Readable:q37,getStreamError:qZ8}=ty0(),A37=my0(),AZ8=ts(),rs=ry0(),T37=AZ8.alloc(0);class TZ8{constructor(){this.buffered=0,this.shifted=0,this.queue=new A37,this._offset=0}push(X){this.buffered+=X.byteLength,this.queue.push(X)}shiftFirst(X){return this._buffered===0?null:this._next(X)}shift(X){if(X>this.buffered)return null;if(X===0)return T37;let Y=this._next(X);if(X===Y.byteLength)return Y;let G=[Y];while((X-=Y.byteLength)>0)Y=this._next(X),G.push(Y);return AZ8.concat(G)}_next(X){let Y=this.queue.peek(),G=Y.byteLength-this._offset;if(X>=G){let Q=this._offset?Y.subarray(this._offset,Y.byteLength):Y;return this.queue.shift(),this._offset=0,this.buffered-=G,this.shifted+=G,Q}return this.buffered-=X,this.shifted+=X,Y.subarray(this._offset,this._offset+=X)}}class IZ8 extends q37{constructor(X,Y,G){super();this.header=Y,this.offset=G,this._parent=X}_read(X){if(this.header.size===0)this.push(null);if(this._parent._stream===this)this._parent._update();X(null)}_predestroy(){this._parent.destroy(qZ8(this))}_detach(){if(this._parent._stream===this)this._parent._stream=null,this._parent._missing=jZ8(this.header.size),this._parent._update()}_destroy(X){this._detach(),X(null)}}class VZ8 extends P37{constructor(X){super(X);if(!X)X={};this._buffer=new TZ8,this._offset=0,this._header=null,this._stream=null,this._missing=0,this._longHeader=!1,this._callback=oy0,this._locked=!1,this._finished=!1,this._pax=null,this._paxGlobal=null,this._gnuLongPath=null,this._gnuLongLinkPath=null,this._filenameEncoding=X.filenameEncoding||"utf-8",this._allowUnknownFormat=!!X.allowUnknownFormat,this._unlockBound=this._unlock.bind(this)}_unlock(X){if(this._locked=!1,X){this.destroy(X),this._continueWrite(X);return}this._update()}_consumeHeader(){if(this._locked)return!1;this._offset=this._buffer.shifted;try{this._header=rs.decode(this._buffer.shift(512),this._filenameEncoding,this._allowUnknownFormat)}catch(X){return this._continueWrite(X),!1}if(!this._header)return!0;switch(this._header.type){case"gnu-long-path":case"gnu-long-link-path":case"pax-global-header":case"pax-header":return this._longHeader=!0,this._missing=this._header.size,!0}if(this._locked=!0,this._applyLongHeaders(),this._header.size===0||this._header.type==="directory")return this.emit("entry",this._header,this._createStream(),this._unlockBound),!0;return this._stream=this._createStream(),this._missing=this._header.size,this.emit("entry",this._header,this._stream,this._unlockBound),!0}_applyLongHeaders(){if(this._gnuLongPath)this._header.name=this._gnuLongPath,this._gnuLongPath=null;if(this._gnuLongLinkPath)this._header.linkname=this._gnuLongLinkPath,this._gnuLongLinkPath=null;if(this._pax){if(this._pax.path)this._header.name=this._pax.path;if(this._pax.linkpath)this._header.linkname=this._pax.linkpath;if(this._pax.size)this._header.size=parseInt(this._pax.size,10);this._header.pax=this._pax,this._pax=null}}_decodeLongHeader(X){switch(this._header.type){case"gnu-long-path":this._gnuLongPath=rs.decodeLongPath(X,this._filenameEncoding);break;case"gnu-long-link-path":this._gnuLongLinkPath=rs.decodeLongPath(X,this._filenameEncoding);break;case"pax-global-header":this._paxGlobal=rs.decodePax(X);break;case"pax-header":this._pax=this._paxGlobal===null?rs.decodePax(X):Object.assign({},this._paxGlobal,rs.decodePax(X));break}}_consumeLongHeader(){this._longHeader=!1,this._missing=jZ8(this._header.size);let X=this._buffer.shift(this._header.size);try{this._decodeLongHeader(X)}catch(Y){return this._continueWrite(Y),!1}return!0}_consumeStream(){let X=this._buffer.shiftFirst(this._missing);if(X===null)return!1;this._missing-=X.byteLength;let Y=this._stream.push(X);if(this._missing===0){if(this._stream.push(null),Y)this._stream._detach();return Y&&this._locked===!1}return Y}_createStream(){return new IZ8(this,this._header,this._offset)}_update(){while(this._buffer.buffered>0&&!this.destroying){if(this._missing>0){if(this._stream!==null){if(this._consumeStream()===!1)return;continue}if(this._longHeader===!0){if(this._missing>this._buffer.buffered)break;if(this._consumeLongHeader()===!1)return!1;continue}let X=this._buffer.shiftFirst(this._missing);if(X!==null)this._missing-=X.byteLength;continue}if(this._buffer.buffered<512)break;if(this._stream!==null||this._consumeHeader()===!1)return}this._continueWrite(null)}_continueWrite(X){let Y=this._callback;this._callback=oy0,Y(X)}_write(X,Y){this._callback=Y,this._buffer.push(X),this._update()}_final(X){this._finished=this._missing===0&&this._buffer.buffered===0,X(this._finished?null:Error("Unexpected end of data"))}_predestroy(){this._continueWrite(null)}_destroy(X){if(this._stream)this._stream.destroy(qZ8(this));X(null)}[Symbol.asyncIterator](){let X=null,Y=null,G=null,Q=null,J=null,W=this;return this.on("entry",K),this.on("error",(B)=>{X=B}),this.on("close",H),{[Symbol.asyncIterator](){return this},next(){return new Promise($)},return(){return U(null)},throw(B){return U(B)}};function Z(B){if(!J)return;let N=J;J=null,N(B)}function $(B,N){if(X)return N(X);if(Q){B({value:Q,done:!1}),Q=null;return}if(Y=B,G=N,Z(null),W._finished&&Y)Y({value:void 0,done:!0}),Y=G=null}function K(B,N,z){if(J=z,N.on("error",oy0),Y)Y({value:N,done:!1}),Y=G=null;else Q=N}function H(){if(Z(X),!Y)return;if(X)G(X);else Y({value:void 0,done:!0});Y=G=null}function U(B){return W.destroy(B),Z(B),new Promise((N,z)=>{if(W.destroyed)return N({value:void 0,done:!0});W.once("close",function(){if(B)z(B);else N({value:void 0,done:!0})})})}}}MZ8.exports=function(Y){return new VZ8(Y)};function oy0(){}function jZ8(X){return X&=511,X&&512-X}});var kZ8=k((s4Q,sy0)=>{var SZ8={S_IFMT:61440,S_IFDIR:16384,S_IFCHR:8192,S_IFBLK:24576,S_IFIFO:4096,S_IFLNK:40960};try{sy0.exports=V1("fs").constants||SZ8}catch{sy0.exports=SZ8}});var xZ8=k((e4Q,yZ8)=>{var{Readable:I37,Writable:V37,getStreamError:CZ8}=ty0(),nm=ts(),os=kZ8(),Di1=ry0(),vZ8=nm.alloc(1024);class _Z8 extends V37{constructor(X,Y,G){super({mapWritable:M37,eagerOpen:!0});if(this.written=0,this.header=Y,this._callback=G,this._linkname=null,this._isLinkname=Y.type==="symlink"&&!Y.linkname,this._isVoid=Y.type!=="file"&&Y.type!=="contiguous-file",this._finished=!1,this._pack=X,this._openCallback=null,this._pack._stream===null)this._pack._stream=this;else this._pack._pending.push(this)}_open(X){if(this._openCallback=X,this._pack._stream===this)this._continueOpen()}_continuePack(X){if(this._callback===null)return;let Y=this._callback;this._callback=null,Y(X)}_continueOpen(){if(this._pack._stream===null)this._pack._stream=this;let X=this._openCallback;if(this._openCallback=null,X===null)return;if(this._pack.destroying)return X(Error("pack stream destroyed"));if(this._pack._finalized)return X(Error("pack stream is already finalized"));if(this._pack._stream=this,!this._isLinkname)this._pack._encode(this.header);if(this._isVoid)this._finish(),this._continuePack(null);X(null)}_write(X,Y){if(this._isLinkname)return this._linkname=this._linkname?nm.concat([this._linkname,X]):X,Y(null);if(this._isVoid){if(X.byteLength>0)return Y(Error("No body allowed for this entry"));return Y()}if(this.written+=X.byteLength,this._pack.push(X))return Y();this._pack._drain=Y}_finish(){if(this._finished)return;if(this._finished=!0,this._isLinkname)this.header.linkname=this._linkname?nm.toString(this._linkname,"utf-8"):"",this._pack._encode(this.header);bZ8(this._pack,this.header.size),this._pack._done(this)}_final(X){if(this.written!==this.header.size)return X(Error("Size mismatch"));this._finish(),X(null)}_getError(){return CZ8(this)||Error("tar entry destroyed")}_predestroy(){this._pack.destroy(this._getError())}_destroy(X){this._pack._done(this),this._continuePack(this._finished?null:this._getError()),X()}}class fZ8 extends I37{constructor(X){super(X);this._drain=ey0,this._finalized=!1,this._finalizing=!1,this._pending=[],this._stream=null}entry(X,Y,G){if(this._finalized||this.destroying)throw Error("already finalized or destroyed");if(typeof Y==="function")G=Y,Y=null;if(!G)G=ey0;if(!X.size||X.type==="symlink")X.size=0;if(!X.type)X.type=j37(X.mode);if(!X.mode)X.mode=X.type==="directory"?493:420;if(!X.uid)X.uid=0;if(!X.gid)X.gid=0;if(!X.mtime)X.mtime=new Date;if(typeof Y==="string")Y=nm.from(Y);let Q=new _Z8(this,X,G);if(nm.isBuffer(Y))return X.size=Y.byteLength,Q.write(Y),Q.end(),Q;if(Q._isVoid)return Q;return Q}finalize(){if(this._stream||this._pending.length>0){this._finalizing=!0;return}if(this._finalized)return;this._finalized=!0,this.push(vZ8),this.push(null)}_done(X){if(X!==this._stream)return;if(this._stream=null,this._finalizing)this.finalize();if(this._pending.length)this._pending.shift()._continueOpen()}_encode(X){if(!X.pax){let Y=Di1.encode(X);if(Y){this.push(Y);return}}this._encodePax(X)}_encodePax(X){let Y=Di1.encodePax({name:X.name,linkname:X.linkname,pax:X.pax}),G={name:"PaxHeader",mode:X.mode,uid:X.uid,gid:X.gid,size:Y.byteLength,mtime:X.mtime,type:"pax-header",linkname:X.linkname&&"PaxHeader",uname:X.uname,gname:X.gname,devmajor:X.devmajor,devminor:X.devminor};this.push(Di1.encode(G)),this.push(Y),bZ8(this,Y.byteLength),G.size=X.size,G.type=X.type,this.push(Di1.encode(G))}_doDrain(){let X=this._drain;this._drain=ey0,X()}_predestroy(){let X=CZ8(this);if(this._stream)this._stream.destroy(X);while(this._pending.length){let Y=this._pending.shift();Y.destroy(X),Y._continueOpen()}this._doDrain()}_read(X){this._doDrain(),X()}}yZ8.exports=function(Y){return new fZ8(Y)};function j37(X){switch(X&os.S_IFMT){case os.S_IFBLK:return"block-device";case os.S_IFCHR:return"character-device";case os.S_IFDIR:return"directory";case os.S_IFIFO:return"fifo";case os.S_IFLNK:return"symlink"}return"file"}function ey0(){}function bZ8(X,Y){if(Y&=511,Y)X.push(vZ8.subarray(0,512-Y))}function M37(X){return nm.isBuffer(X)?X:nm.from(X)}});var hZ8=k((R37)=>{R37.extract=RZ8();R37.pack=xZ8()});var lZ8=k((Y6Q,uZ8)=>{uZ8.exports=gZ8;function gZ8(X,Y){if(X&&Y)return gZ8(X)(Y);if(typeof X!=="function")throw TypeError("need wrapper function");return Object.keys(X).forEach(function(Q){G[Q]=X[Q]}),G;function G(){var Q=Array(arguments.length);for(var J=0;J<Q.length;J++)Q[J]=arguments[J];var W=X.apply(this,Q),Z=Q[Q.length-1];if(typeof W==="function"&&W!==Z)Object.keys(Z).forEach(function($){W[$]=Z[$]});return W}}});var Yx0=k((G6Q,Xx0)=>{var mZ8=lZ8();Xx0.exports=mZ8(wi1);Xx0.exports.strict=mZ8(dZ8);wi1.proto=wi1(function(){Object.defineProperty(Function.prototype,"once",{value:function(){return wi1(this)},configurable:!0}),Object.defineProperty(Function.prototype,"onceStrict",{value:function(){return dZ8(this)},configurable:!0})});function wi1(X){var Y=function(){if(Y.called)return Y.value;return Y.called=!0,Y.value=X.apply(this,arguments)};return Y.called=!1,Y}function dZ8(X){var Y=function(){if(Y.called)throw Error(Y.onceError);return Y.called=!0,Y.value=X.apply(this,arguments)},G=X.name||"Function wrapped with `once`";return Y.onceError=G+" shouldn't be called more than once",Y.called=!1,Y}});var pZ8=k((Q6Q,iZ8)=>{var C37=Yx0(),v37=function(){},_37=global.Bare?queueMicrotask:process.nextTick.bind(process),f37=function(X){return X.setHeader&&typeof X.abort==="function"},b37=function(X){return X.stdio&&Array.isArray(X.stdio)&&X.stdio.length===3},cZ8=function(X,Y,G){if(typeof Y==="function")return cZ8(X,null,Y);if(!Y)Y={};G=C37(G||v37);var{_writableState:Q,_readableState:J}=X,W=Y.readable||Y.readable!==!1&&X.readable,Z=Y.writable||Y.writable!==!1&&X.writable,$=!1,K=function(){if(!X.writable)H()},H=function(){if(Z=!1,!W)G.call(X)},U=function(){if(W=!1,!Z)G.call(X)},B=function(E){G.call(X,E?Error("exited with error code: "+E):null)},N=function(E){G.call(X,E)},z=function(){_37(O)},O=function(){if($)return;if(W&&!(J&&(J.ended&&!J.destroyed)))return G.call(X,Error("premature close"));if(Z&&!(Q&&(Q.ended&&!Q.destroyed)))return G.call(X,Error("premature close"))},D=function(){X.req.on("finish",H)};if(f37(X))if(X.on("complete",H),X.on("abort",z),X.req)D();else X.on("request",D);else if(Z&&!Q)X.on("end",K),X.on("close",K);if(b37(X))X.on("exit",B);if(X.on("end",U),X.on("finish",H),Y.error!==!1)X.on("error",N);return X.on("close",z),function(){if($=!0,X.removeListener("complete",H),X.removeListener("abort",z),X.removeListener("request",D),X.req)X.req.removeListener("finish",H);X.removeListener("end",K),X.removeListener("close",K),X.removeListener("finish",H),X.removeListener("exit",B),X.removeListener("end",U),X.removeListener("error",N),X.removeListener("close",z)}};iZ8.exports=cZ8});var aZ8=k((J6Q,tZ8)=>{var y37=Yx0(),x37=pZ8(),Li1;try{Li1=V1("fs")}catch(X){}var KW1=function(){},h37=typeof process>"u"?!1:/^v?\.0/.test(process.version),Ei1=function(X){return typeof X==="function"},g37=function(X){if(!h37)return!1;if(!Li1)return!1;return(X instanceof(Li1.ReadStream||KW1)||X instanceof(Li1.WriteStream||KW1))&&Ei1(X.close)},u37=function(X){return X.setHeader&&Ei1(X.abort)},l37=function(X,Y,G,Q){Q=y37(Q);var J=!1;X.on("close",function(){J=!0}),x37(X,{readable:Y,writable:G},function(Z){if(Z)return Q(Z);J=!0,Q()});var W=!1;return function(Z){if(J)return;if(W)return;if(W=!0,g37(X))return X.close(KW1);if(u37(X))return X.abort();if(Ei1(X.destroy))return X.destroy();Q(Z||Error("stream was destroyed"))}},nZ8=function(X){X()},m37=function(X,Y){return X.pipe(Y)},d37=function(){var X=Array.prototype.slice.call(arguments),Y=Ei1(X[X.length-1]||KW1)&&X.pop()||KW1;if(Array.isArray(X[0]))X=X[0];if(X.length<2)throw Error("pump requires two streams per minimum");var G,Q=X.map(function(J,W){var Z=W<X.length-1,$=W>0;return l37(J,Z,$,function(K){if(!G)G=K;if(K)Q.forEach(nZ8);if(Z)return;Q.forEach(nZ8),Y(G)})});return X.reduce(m37)};tZ8.exports=d37});var J38=k((n37)=>{var rZ8=hZ8(),oZ8=aZ8(),sZ8=V1("fs"),$Y=V1("path"),HW1=(global.Bare?global.Bare.platform:process.platform)==="win32";n37.pack=function(Y,G){if(!Y)Y=".";if(!G)G={};let Q=G.fs||sZ8,J=G.ignore||G.filter||FW1,W=G.mapStream||G38,Z=p37(Q,G.dereference?Q.stat:Q.lstat,Y,J,G.entries,G.sort),$=G.strict!==!1,K=typeof G.umask==="number"?~G.umask:~eZ8(),H=G.pack||rZ8.pack(),U=G.finish||FW1,B=G.map||FW1,N=typeof G.dmode==="number"?G.dmode:0,z=typeof G.fmode==="number"?G.fmode:0;if(G.strip)B=Q38(B,G.strip);if(G.readable)N|=parseInt(555,8),z|=parseInt(444,8);if(G.writable)N|=parseInt(333,8),z|=parseInt(222,8);E();function O(P,q){Q.readlink($Y.join(Y,P),function(j,M){if(j)return H.destroy(j);q.linkname=Gx0(M),H.entry(q,E)})}function D(P,q,j){if(H.destroyed)return;if(P)return H.destroy(P);if(!q){if(G.finalize!==!1)H.finalize();return U(H)}if(j.isSocket())return E();let M={name:Gx0(q),mode:(j.mode|(j.isDirectory()?N:z))&K,mtime:j.mtime,size:j.size,type:"file",uid:j.uid,gid:j.gid};if(j.isDirectory())return M.size=0,M.type="directory",M=B(M)||M,H.entry(M,E);if(j.isSymbolicLink())return M.size=0,M.type="symlink",M=B(M)||M,O(q,M);if(M=B(M)||M,!j.isFile()){if($)return H.destroy(Error("unsupported type for "+q));return E()}let I=H.entry(M,E),R=W(Q.createReadStream($Y.join(Y,q),{start:0,end:M.size>0?M.size-1:M.size}),M);R.on("error",function(C){I.destroy(C)}),oZ8(R,I)}function E(P){if(P)return H.destroy(P);Z(D)}return H};function c37(X){return X.length?X[X.length-1]:null}function i37(){return!global.Bare&&process.getuid?process.getuid():-1}function eZ8(){return!global.Bare&&process.umask?process.umask():0}n37.extract=function(Y,G){if(!Y)Y=".";if(!G)G={};Y=$Y.resolve(Y);let Q=G.fs||sZ8,J=G.ignore||G.filter||FW1,W=G.mapStream||G38,Z=G.chown!==!1&&!HW1&&i37()===0,$=G.extract||rZ8.extract(),K=[],H=new Date,U=typeof G.umask==="number"?~G.umask:~eZ8(),B=G.strict!==!1,N=G.validateSymlinks!==!1,z=G.map||FW1,O=typeof G.dmode==="number"?G.dmode:0,D=typeof G.fmode==="number"?G.fmode:0;if(G.strip)z=Q38(z,G.strip);if(G.readable)O|=parseInt(555,8),D|=parseInt(444,8);if(G.writable)O|=parseInt(333,8),D|=parseInt(222,8);if($.on("entry",E),G.finish)$.on("finish",G.finish);return $;function E(I,R,C){I=z(I)||I,I.name=Gx0(I.name);let _=$Y.join(Y,$Y.join("/",I.name));if(J(_,I))return R.resume(),C();let v=$Y.join(_,".")===$Y.join(Y,".")?Y:$Y.dirname(_);Y38(Q,v,$Y.join(Y,"."),function(u,a){if(u)return C(u);if(!a)return C(Error(v+" is not a valid path"));if(I.type==="directory")return K.push([_,I.mtime]),M(_,{fs:Q,own:Z,uid:I.uid,gid:I.gid,mode:I.mode},y);M(v,{fs:Q,own:Z,uid:I.uid,gid:I.gid,mode:493},function(r){if(r)return C(r);switch(I.type){case"file":return f();case"link":return d();case"symlink":return h()}if(B)return C(Error("unsupported type for "+_+" ("+I.type+")"));R.resume(),C()})});function y(u){if(u)return C(u);q(_,I,function(a){if(a)return C(a);if(HW1)return C();j(_,I,C)})}function h(){if(HW1)return C();Q.unlink(_,function(){let u=$Y.resolve($Y.dirname(_),I.linkname);if(!i(u)&&N)return C(Error(_+" is not a valid symlink"));X38(Q,u,$Y.join(Y,"."),function(a,r){if(a)return C(a);if(!r&&N)return C(Error(_+" is not a valid symlink"));Q.symlink(I.linkname,_,y)})})}function d(){if(HW1)return C();Q.unlink(_,function(){let u=$Y.join(Y,$Y.join("/",I.linkname));Q.realpath(u,function(a,r){if(a||!i(r))return C(Error(_+" is not a valid hardlink"));Q.link(r,_,function(U1){if(U1&&U1.code==="EPERM"&&G.hardlinkAsFilesFallback)return R=Q.createReadStream(r),f();y(U1)})})})}function i(u){return u===Y||u.startsWith(Y+$Y.sep)}function f(){let u=Q.createWriteStream(_),a=W(R,I);u.on("error",function(r){a.destroy(r)}),oZ8(a,u,function(r){if(r)return C(r);u.on("close",y)})}}function P(I,R){let C;while((C=c37(K))&&I.slice(0,C[0].length)!==C[0])K.pop();if(!C)return R();Q.utimes(C[0],H,C[1],R)}function q(I,R,C){if(G.utimes===!1)return C();if(R.type==="directory")return Q.utimes(I,H,R.mtime,C);if(R.type==="symlink")return P(I,C);Q.utimes(I,H,R.mtime,function(_){if(_)return C(_);P(I,C)})}function j(I,R,C){let _=R.type==="symlink",v=_?Q.lchmod:Q.chmod,y=_?Q.lchown:Q.chown;if(!v)return C();let h=(R.mode|(R.type==="directory"?O:D))&U;if(y&&Z)y.call(Q,I,R.uid,R.gid,d);else d(null);function d(i){if(i)return C(i);if(!v)return C();v.call(Q,I,h,C)}}function M(I,R,C){Q.stat(I,function(_){if(!_)return C(null);if(_.code!=="ENOENT")return C(_);Q.mkdir(I,{mode:R.mode,recursive:!0},function(v,y){if(v)return C(v);j(I,R,C)})})}};function X38(X,Y,G,Q){if(Y===G)return Q(null,!0);if(!Y.startsWith(G+$Y.sep))return Q(null,!1);X.lstat(Y,function(J,W){if(J&&J.code!=="ENOENT"&&J.code!=="EPERM")return Q(J);if(J||!W.isSymbolicLink())return X38(X,$Y.join(Y,".."),G,Q);Q(null,!1)})}function Y38(X,Y,G,Q){if(Y===G)return Q(null,!0);X.lstat(Y,function(J,W){if(J&&J.code!=="ENOENT"&&J.code!=="EPERM")return Q(J);if(J||W.isDirectory())return Y38(X,$Y.join(Y,".."),G,Q);Q(null,!1)})}function FW1(){}function G38(X){return X}function Gx0(X){return HW1?X.replace(/\\/g,"/").replace(/[:?<>|]/g,"_"):X}function p37(X,Y,G,Q,J,W){if(!J)J=["."];let Z=J.slice(0);return function(K){if(!Z.length)return K(null);let H=Z.shift(),U=$Y.join(G,H);Y.call(X,U,function(B,N){if(B)return K(J.indexOf(H)===-1&&B.code==="ENOENT"?null:B);if(!N.isDirectory())return K(null,H,N);X.readdir(U,function(z,O){if(z)return K(z);if(W)O.sort();for(let D=0;D<O.length;D++)if(!Q($Y.join(G,H,O[D])))Z.push($Y.join(H,O[D]));K(null,H,N)})})}}function Q38(X,Y){return function(G){G.name=G.name.split("/").slice(Y).join("/");let Q=G.linkname;if(Q&&(G.type==="link"||$Y.isAbsolute(Q)))G.linkname=Q.split("/").slice(Y).join("/");return X(G)}}});var r37,o37;var Z38=w(()=>{uy0();r37=X1(pJ8(),1),o37=X1(J38(),1)});var Pi1=()=>{};var W38=w(()=>{fc1()});var $38=w(()=>{$i1();Wi1();Pi1()});var K38=()=>{};var H38=()=>{};var Qx0=w(()=>{MJ8();hy0();$i1();vJ8();yy0();uy0();_J8();fJ8();bJ8();yJ8();xy0();xJ8();Z38();Pi1();W38();$38();K38();H38();Pi1()});var DQ,sY,tm,UW1;var BW1=w(()=>{DQ={CLAIM_API_GROUP:"extensions.agents.x-k8s.io",CLAIM_API_VERSION:"v1alpha1",CLAIM_PLURAL:"sandboxclaims",SANDBOX_API_GROUP:"agents.x-k8s.io",SANDBOX_API_VERSION:"v1alpha1",SANDBOX_PLURAL:"sandboxes",POD_NAME_ANNOTATION:"agents.x-k8s.io/pod-name"};sY=class sY extends Error{cause;constructor(X,Y){super(X);if(this.name="SandboxError",this.cause=Y,Y instanceof Error&&Y.stack)this.stack=`${this.stack}
|
|
7180
7180
|
Caused by: ${Y.stack}`}};tm=class tm extends sY{constructor(X,Y){super(X,Y);this.name="SandboxTimeoutError"}};UW1=class UW1 extends sY{constructor(X,Y){super(X,Y);this.name="SandboxAlreadyExistsError"}}});async function s37(X){let Y=X.getCurrentCluster();if(!Y)throw new sY("No active cluster in kubeconfig");let G={};await X.applyToHTTPSOptions(G);let Q={},J=G.headers??{};for(let[W,Z]of Object.entries(J))if(Array.isArray(Z))Q[W]=Z.join(", ");else if(Z!==void 0)Q[W]=String(Z);if(typeof G.auth==="string"&&!Q.Authorization)Q.Authorization=`Basic ${Buffer.from(G.auth).toString("base64")}`;return{server:Y.server.replace(/\/+$/,""),headers:Q,tls:{cert:Jx0(G.cert),key:Jx0(G.key),ca:Jx0(G.ca),rejectUnauthorized:Y.skipTLSVerify?!1:void 0}}}function Jx0(X){if(X==null)return;if(typeof X==="string")return X;if(Buffer.isBuffer(X))return X.toString("utf8");return String(X)}async function am(X,Y){let G=await s37(X),Q={...G.headers,...Y.headers};if(Y.method==="PATCH")Q["content-type"]=Y.patchType==="apply"?"application/apply-patch+yaml":Y.patchType==="strategic-merge"?"application/strategic-merge-patch+json":"application/merge-patch+json";else if(Y.body!==void 0&&!("content-type"in Q))Q["content-type"]="application/json";let J={method:Y.method,headers:Q,body:Y.body===void 0?void 0:JSON.stringify(Y.body),signal:Y.signal,tls:G.tls};return fetch(`${G.server}${Y.path}`,J)}async function Wx0(X){try{return await X.json()}catch{return null}}async function $x0(X,Y){if(X.ok)return;let G=await Wx0(X),Q=G?.message??`${Y} failed: ${X.status} ${X.statusText}`;throw new Zx0(X.status,G,Q)}async function NW1(X,Y,G,Q,J="none"){try{let W=await am(X,Y);if(W.status===404)return null;if(await $x0(W,G),J==="json")return await W.json();return null}catch(W){throw new sY(Q,W)}}async function zW1(X,Y,G){let Q=`${F38}/${encodeURIComponent(Y)}/${DQ.CLAIM_PLURAL}`,J;try{J=await am(X,{method:"POST",path:Q,body:G})}catch(H){let U=H instanceof Error?H.message:String(H);throw console.warn(`[agent-sandbox/client] createSandboxClaim ${G.metadata.name} transport error: ${U}`),new sY(`Failed to create SandboxClaim: ${G.metadata.name} (transport error: ${U})`,H)}if(J.ok)return;let W=await Wx0(J),Z=W?.reason?` ${W.reason}`:"",$=W?.message??J.statusText,K=`Failed to create SandboxClaim: ${G.metadata.name} (${J.status}${Z}: ${$})`;if(console.warn(`[agent-sandbox/client] createSandboxClaim ${G.metadata.name} rejected: status=${J.status} reason=${W?.reason??"<none>"} message=${$}`),J.status===409)throw new UW1(K);throw new sY(K)}async function qi1(X,Y,G,Q=60000){let J=Date.now()+Q,W=500,Z;while(!0){let $=await yT(X,Y,G).catch(()=>{return});if(!$)return;if(Z=$,Date.now()>=J){let K=Z.metadata?.finalizers??[],H=Z.metadata?.deletionTimestamp??"<unknown>";throw new tm(`SandboxClaim ${G} still terminating after ${Q}ms (deletionTimestamp=${H}, finalizers=[${K.join(", ")}])`)}await new Promise((K)=>setTimeout(K,500))}}function Kx0(X,Y){return`${F38}/${encodeURIComponent(X)}/${DQ.CLAIM_PLURAL}/${encodeURIComponent(Y)}`}async function U38(X,Y,G,Q){await NW1(X,{method:"PATCH",path:Kx0(Y,G),patchType:"merge",body:{spec:{lifecycle:{shutdownPolicy:"Delete",shutdownTime:Q}}}},"patchSandboxClaimShutdown",`Failed to patch SandboxClaim shutdownTime: ${G}`)}async function bT(X,Y,G){await NW1(X,{method:"DELETE",path:Kx0(Y,G)},"deleteSandboxClaim",`Failed to delete SandboxClaim: ${G}`)}async function yT(X,Y,G){return await NW1(X,{method:"GET",path:Kx0(Y,G)},"getSandboxClaim",`Failed to get SandboxClaim: ${G}`,"json")??void 0}async function B38(X,Y,G,Q=60){let J=Date.now()+Q*1000,W=200;while(Date.now()<J){let $=(await yT(X,Y,G).catch(()=>{return}))?.status?.sandbox?.name;if($)return $;await new Promise((K)=>setTimeout(K,200))}throw new tm(`SandboxClaim ${G} did not record an adopted Sandbox (status.sandbox.name) within ${Q}s`)}function D38(X,Y){return`${O38}/${encodeURIComponent(X)}/${Hx0}/${encodeURIComponent(Y)}`}function e37(X){return`${O38}/${encodeURIComponent(X)}/${Hx0}`}async function Ai1(X,Y,G){try{let Q=await am(X,{method:"POST",path:e37(Y),body:G});if(Q.status===409)return;await $x0(Q,"createHttpRoute")}catch(Q){if(Q instanceof Zx0&&Q.status===409)return;throw new sY(`Failed to create HTTPRoute: ${G.metadata.name}`,Q)}}async function Ti1(X,Y,G){await NW1(X,{method:"DELETE",path:D38(Y,G)},"deleteHttpRoute",`Failed to delete HTTPRoute: ${G}`)}async function w38(X,Y,G){return await NW1(X,{method:"GET",path:D38(Y,G)},"getHttpRoute",`Failed to get HTTPRoute: ${G}`,"json")??void 0}async function L38(X,Y,G,Q){let J={apiVersion:"v1",kind:"Service",metadata:{name:G},spec:{ports:[{name:Q.name,port:Q.port,targetPort:Q.targetPort,protocol:Q.protocol??"TCP"}]}},W=new URLSearchParams({fieldManager:XW7,force:"true"}),Z=`/api/v1/namespaces/${encodeURIComponent(Y)}/services/${encodeURIComponent(G)}?${W}`;try{let $=await am(X,{method:"PATCH",path:Z,patchType:"apply",body:J});await $x0($,"ensureServicePort")}catch($){throw new sY(`Failed to apply Service ports: ${G}`,$)}}function Ii1(X,Y,G,Q=180){let J=`/apis/${DQ.SANDBOX_API_GROUP}/${DQ.SANDBOX_API_VERSION}/namespaces/${encodeURIComponent(Y)}/${DQ.SANDBOX_PLURAL}?watch=true&fieldSelector=${encodeURIComponent(`metadata.name=${G}`)}`,{resolve:W,reject:Z,promise:$}=Promise.withResolvers(),K=new AbortController,H=!1,U=setTimeout(()=>{if(H)return;H=!0,K.abort(),Z(new tm(`Sandbox did not become ready within ${Q} seconds`))},Q*1000),B=(N)=>{if(H)return;H=!0,clearTimeout(U),K.abort(),N()};return(async()=>{let N;try{N=await am(X,{method:"GET",path:J,signal:K.signal,headers:{accept:"application/json"}})}catch(z){B(()=>Z(new sY("Failed to start watch for sandbox readiness",z)));return}if(!N.ok||!N.body){let z=await Wx0(N).catch(()=>null);B(()=>Z(new sY(`Watch handshake failed (${N.status}): ${z?.message??N.statusText}`)));return}try{for await(let z of Fx0(N.body)){if(H)return;if(z.type==="ERROR"){let q=z.object;B(()=>Z(new sY(`Watch stream error while waiting for sandbox: ${q.message??"unknown"}`)));return}if(z.type!=="ADDED"&&z.type!=="MODIFIED")continue;let O=z.object;if(!O.status?.conditions?.find((q)=>q.type==="Ready"&&q.status==="True"))continue;let E=O.metadata?.name;if(!E){B(()=>Z(new sY("Sandbox metadata or name is missing")));return}let P=O.metadata?.annotations?.[DQ.POD_NAME_ANNOTATION]??E;B(()=>W({sandboxName:E,podName:P}));return}B(()=>Z(new sY("Watch stream closed before sandbox became ready")))}catch(z){if(H)return;if(z instanceof Error&&(z.name==="AbortError"||K.signal.aborted))return;B(()=>Z(new sY("Watch stream error while waiting for sandbox",z)))}})(),$}async function*Fx0(X){let Y=X.getReader(),G=new TextDecoder,Q="";try{while(!0){let{value:W,done:Z}=await Y.read();if(Z)break;Q+=G.decode(W,{stream:!0});let $;while(($=Q.indexOf(`
|
|
7181
7181
|
`))>=0){let K=Q.slice(0,$).trim();if(Q=Q.slice($+1),!K)continue;yield JSON.parse(K)}}let J=Q.trim();if(J)yield JSON.parse(J)}finally{Y.releaseLock()}}var Zx0,F38,N38="gateway.networking.k8s.io",z38="v1",Hx0="httproutes",O38,OW1,XW7="mesh-sandbox-runner";var Vi1=w(()=>{BW1();Zx0=class Zx0 extends Error{status;body;constructor(X,Y,G){super(G);this.status=X;this.body=Y;this.name="KubeHttpError"}};F38=`/apis/${DQ.CLAIM_API_GROUP}/${DQ.CLAIM_API_VERSION}/namespaces`;O38=`/apis/${N38}/${z38}/namespaces`;OW1={API_GROUP:N38,API_VERSION:z38,PLURAL:Hx0}});async function*q38(X){let Y=X.now??(()=>Date.now()),G=Y(),Q=X.schedulingTimeoutMs??QW7,J={pod:{},sandbox:{},events:{hasPulling:!1,hasPulled:!1},startedAt:G},W=[],Z=null,$=!1,K=(q)=>{if($)return;if(Z){let j=Z;Z=null,j(q)}else W.push(q)},H=()=>{if(W.length>0)return Promise.resolve(W.shift());if($)return Promise.resolve(null);return new Promise((q)=>{Z=q})},U=()=>{if($)return;if($=!0,Z){let q=Z;Z=null,q(null)}},B=new AbortController,N=()=>{B.abort(),U()};if(X.signal)if(X.signal.aborted)B.abort(),U();else X.signal.addEventListener("abort",N,{once:!0});let z=Math.max(0,Q-(Y()-G)),O=setTimeout(()=>K("tick"),z+100),D,E=new Promise((q)=>{D=q}),P=Promise.allSettled([JW7(X.kc,X.namespace,X.claimName,B.signal,J,K,Y,D),WW7(X.kc,X.namespace,X.claimName,B.signal,J,K),$W7(X.kc,X.namespace,X.claimName,E,B.signal,J,K,Y)]);try{let q=null,j=-1,M=E38(J,Q,Y);if(q=Bx0(M),!Ux0(M))j=P38(M);if(yield M,Ux0(M))return;while(!$){if(await H()===null)break;let R=E38(J,Q,Y);if(Ux0(R)){let v=Bx0(R);if(v!==q)q=v,yield R;return}let C=P38(R);if(C<j)continue;let _=Bx0(R);if(_!==q)q=_,j=C,yield R}}finally{if(clearTimeout(O),B.abort(),X.signal)X.signal.removeEventListener("abort",N);U(),await P.catch(()=>{})}}function E38(X,Y,G){let{pod:Q,sandbox:J,events:W,startedAt:Z}=X;if(J.ready)return{kind:"ready"};let $=Q.containerWaitingReason;if($==="ImagePullBackOff"||$==="ErrImagePull")return{kind:"failed",reason:"image-pull-backoff",message:"Sandbox image failed to download. The cluster may be missing pull credentials or the image tag may not exist."};if($==="CrashLoopBackOff")return{kind:"failed",reason:"crash-loop-backoff",message:"Sandbox crashed during startup and is now in CrashLoopBackOff. Check pod logs."};if(!Q.scheduled&&W.lastFailedSchedulingAt!==void 0&&G()-Z>Y)return{kind:"failed",reason:"scheduling-timeout",message:W.failedSchedulingMessage??`Pod could not be scheduled within ${Math.round(Y/1000)}s.`};if(Q.containerRunning&&!Q.containerReady)return{kind:"warming-daemon",since:Z};if(W.hasPulling&&!W.hasPulled)return{kind:"pulling-image",since:Z};if($==="ContainerCreating"||$==="PodInitializing"||Q.scheduled&&!Q.containerRunning)return{kind:"starting-container",since:Z};if(Q.scheduledFalseReason==="Unschedulable"||W.lastFailedSchedulingAt!==void 0&&!Q.scheduled)return{kind:"waiting-for-capacity",since:Z,message:W.failedSchedulingMessage??Q.scheduledFalseMessage,nodeClaim:W.nominatedNodeClaim};return{kind:"claiming",since:Z}}function Ux0(X){return X.kind==="ready"||X.kind==="failed"}function P38(X){switch(X.kind){case"claiming":return 0;case"waiting-for-capacity":return 1;case"pulling-image":return 2;case"starting-container":return 3;case"warming-daemon":return 4;case"ready":case"failed":return 99}}function Bx0(X){switch(X.kind){case"claiming":case"pulling-image":case"starting-container":case"warming-daemon":return X.kind;case"waiting-for-capacity":return`waiting-for-capacity:${X.message??""}:${X.nodeClaim??""}`;case"ready":return"ready";case"failed":return`failed:${X.reason}:${X.message}`}}async function JW7(X,Y,G,Q,J,W,Z,$){let K=`/api/v1/namespaces/${encodeURIComponent(Y)}/pods?watch=true&labelSelector=${encodeURIComponent(`${YW7}=${G}`)}`;return Nx0({kc:X,path:K,signal:Q,label:`pod/${G}`,onEvent:(H)=>{if(H.type!=="ADDED"&&H.type!=="MODIFIED")return;let U=H.object;if(U.metadata?.name)$(U.metadata.name);ZW7(U,J,Z),W("pod")}})}function ZW7(X,Y,G){let J=(X.status?.conditions??[]).find((Z)=>Z.type==="PodScheduled");if(J?.status==="True")Y.pod.scheduled=!0,Y.pod.scheduledFalseReason=void 0,Y.pod.scheduledFalseMessage=void 0;else if(J?.status==="False")Y.pod.scheduled=!1,Y.pod.scheduledFalseReason=J.reason,Y.pod.scheduledFalseMessage=J.message;let W=(X.status?.containerStatuses??[]).find((Z)=>Z.name===GW7);if(W)Y.pod.containerWaitingReason=W.state?.waiting?.reason,Y.pod.containerRunning=!!W.state?.running,Y.pod.containerReady=W.ready===!0}async function WW7(X,Y,G,Q,J,W){let Z=`/apis/${DQ.CLAIM_API_GROUP}/${DQ.CLAIM_API_VERSION}/namespaces/${encodeURIComponent(Y)}/${DQ.CLAIM_PLURAL}?watch=true&fieldSelector=${encodeURIComponent(`metadata.name=${G}`)}`;return Nx0({kc:X,path:Z,signal:Q,label:`sandboxclaim/${G}`,onEvent:($)=>{if($.type!=="ADDED"&&$.type!=="MODIFIED")return;let H=$.object.status?.conditions?.find((U)=>U.type==="Ready");if(!H)return;if(H.status==="True")J.sandbox.ready=!0,J.sandbox.notReadyReason=void 0,J.sandbox.notReadyMessage=void 0;else J.sandbox.ready=!1,J.sandbox.notReadyReason=H.reason,J.sandbox.notReadyMessage=H.message;W("sandbox")}})}async function $W7(X,Y,G,Q,J,W,Z,$){let K=await Promise.race([Q,new Promise((U)=>{if(J.aborted){U(G);return}J.addEventListener("abort",()=>U(G),{once:!0})})]);if(J.aborted)return;let H=`/api/v1/namespaces/${encodeURIComponent(Y)}/events?watch=true&fieldSelector=${encodeURIComponent(`involvedObject.name=${K},involvedObject.kind=Pod`)}`;return Nx0({kc:X,path:H,signal:J,label:`events/${G}`,onEvent:(U)=>{if(U.type!=="ADDED"&&U.type!=="MODIFIED")return;let B=U.object,N=B.reason;if(!N)return;switch(N){case"Pulling":W.events.hasPulling=!0;break;case"Pulled":W.events.hasPulling=!0,W.events.hasPulled=!0;break;case"FailedScheduling":W.events.lastFailedSchedulingAt=$(),W.events.failedSchedulingMessage=B.message;break;case"Nominated":{let z=B.message?.match(/nodeclaim\/([\w-]+)/);if(z)W.events.nominatedNodeClaim=z[1];break}default:return}Z("event")}})}async function Nx0(X){let{kc:Y,path:G,signal:Q,label:J,onEvent:W}=X,Z=0;while(!Q.aborted){try{let K=await am(Y,{method:"GET",path:G,signal:Q,headers:{accept:"application/json"}});if(!K.ok||!K.body){try{await K.body?.cancel()}catch{}throw Error(`watch handshake failed: ${K.status} ${K.statusText}`)}Z=0;for await(let H of Fx0(K.body)){if(Q.aborted)return;try{W(H)}catch(U){console.warn(`[lifecycle-watcher] ${J} onEvent threw: ${U instanceof Error?U.message:String(U)}`)}}}catch(K){if(Q.aborted)return;let H=K instanceof Error?K.message:String(K);console.warn(`[lifecycle-watcher] ${J} watch ended: ${H}`)}if(Q.aborted)return;let $=Math.min(250*2**Z,5000);Z+=1,await KW7($,Q)}}function KW7(X,Y){return new Promise((G)=>{if(Y.aborted){G();return}let Q=setTimeout(()=>{Y.removeEventListener("abort",J),G()},X),J=()=>{clearTimeout(Q),G()};Y.addEventListener("abort",J,{once:!0})})}var YW7="studio.decocms.com/sandbox-handle",GW7="sandbox",QW7=300000;var A38=w(()=>{BW1();Vi1()});import{createHash as HW7,randomBytes as FW7,randomUUID as UW7}from"crypto";import*as j38 from"net";import{PassThrough as BW7}from"stream";class Ex0{kind=GF;records=new Map;inflight=new ET;stateStore;previewUrlPattern;kubeConfig;portForward;namespace;sandboxTemplateName;envName;tokenGenerator;idleTtlMs;metrics;previewGateway;sentinelToken;closed=!1;constructor(X={}){this.stateStore=X.stateStore??null,this.previewUrlPattern=X.previewUrlPattern??null,this.kubeConfig=X.kubeConfig??AW7(),this.portForward=new ly0(this.kubeConfig),this.namespace=X.namespace??NW7,this.sandboxTemplateName=X.sandboxTemplateName??zW7,this.envName=RW7(X.envName),this.tokenGenerator=X.tokenGenerator??(()=>FW7(DW7).toString("hex")),this.idleTtlMs=X.idleTtlMs??LW7,this.metrics=X.meter?qW7(X.meter):null,this.previewGateway=X.previewGateway&&X.previewUrlPattern?{...X.previewGateway}:null;let Y=X.sentinelToken?.trim()??"";this.sentinelToken=Y.length>0?Y:null}async ensure(X,Y={}){let G=this.computeHandle(X,Y.repo?.branch??null);return this.inflight.run(G,()=>OS(this.stateStore,X,GF,(Q)=>this.ensureLocked(X,G,Y,Q)))}async exec(X,Y){let G=await this.requireRecord(X);return js(G.daemonUrl,G.token,Y)}async delete(X){let Y=await this.getRecord(X);if(this.records.delete(X),Y)this.closeForwarder(Y.daemonForward),this.metrics?.active.add(-1,wx0(Y.tenant));if(await this.deleteHttpRouteIfManaged(X).catch((G)=>{console.warn(`[${pW}] HTTPRoute delete failed for ${X}: ${G instanceof Error?G.message:String(G)}`)}),await bT(this.kubeConfig,this.namespace,X),this.stateStore)if(Y)await this.stateStore.delete(Y.id,GF);else await this.stateStore.deleteByHandle(GF,X)}async alive(X){return await yT(this.kubeConfig,this.namespace,X)!==void 0}watchClaimLifecycle(X,Y){return q38({kc:this.kubeConfig,namespace:this.namespace,claimName:X,signal:Y})}async getPreviewUrl(X){let Y=await this.getRecord(X);if(!Y)return null;return this.composePreviewUrl(Y)}async proxyDaemonRequest(X,Y,G){let Q=await this.getRecord(X);if(!Q&&this.previewUrlPattern&&this.stateStore){let Z=await this.stateStore.getByHandle(GF,X),$=Z?.state,K=$?.token;if(Z&&K){let U=`http://${$?.adoptedSandboxName??X}.${this.namespace}.svc.cluster.local:${xT}`;return zS(U,K,Y,G)}}if(!Q)return new Response(JSON.stringify({error:"sandbox not found"}),{status:404,headers:{"content-type":"application/json"}});let J=performance.now(),W=0;try{let Z=await zS(Q.daemonUrl,Q.token,Y,G);return W=Z.status,Z}finally{this.recordProxyDuration("daemon",W,Q,performance.now()-J)}}async resolvePreviewUpstreamUrl(X){if(this.previewUrlPattern)return`http://${await this.resolveServiceNameForHandle(X)}.${this.namespace}.svc.cluster.local:${xT}`;let Y=await this.getRecord(X);if(Y)return Y.daemonUrl;let G=await this.resurrectByHandle(X);return G?G.daemonUrl:null}async resolveServiceNameForHandle(X){let Y=this.records.get(X);if(Y)return Y.adoptedSandboxName;if(this.stateStore){let Q=(await this.stateStore.getByHandle(GF,X).catch(()=>null))?.state?.adoptedSandboxName;if(Q)return Q}return X}async proxyPreviewRequest(X,Y){let G=performance.now(),Q=this.records.get(X)??null,J=0;try{let W=await this.resolvePreviewUpstreamUrl(X);if(!W)return J=404,Ox0(404,{error:"sandbox not found"});let Z=new URL(Y.url);if((Z.pathname==="/_decopilot_vm"||Z.pathname.startsWith("/_decopilot_vm/"))&&Y.method!=="GET")return J=404,Ox0(404,{error:"not found"});let K=(O)=>`${O}${Z.pathname}${Z.search}`,H=new Headers(Y.headers);for(let O of EW7)H.delete(O);let U=Y.method!=="GET"&&Y.method!=="HEAD",B={method:Y.method,headers:H,body:U?Y.body:void 0,redirect:"manual",signal:Y.signal,duplex:U?"half":void 0},N;try{N=await fetch(K(W),B)}catch(O){let D=`${W}${Z.pathname}`;if(console.warn(`[${pW}] preview fetch to ${D} failed: ${O instanceof Error?O.message:String(O)}`),Y.method==="GET"||Y.method==="HEAD"){if(this.invalidateRecord(X),await this.resurrectByHandle(X).catch(()=>null)){let P=await this.resolvePreviewUpstreamUrl(X);if(P)try{N=await fetch(K(P),B);let q=new Headers;for(let[j,M]of N.headers.entries())if(!T38.includes(j.toLowerCase()))q.set(j,M);return J=N.status,new Response(N.body,{status:N.status,statusText:N.statusText,headers:q})}catch(q){console.warn(`[${pW}] preview fetch retry to ${D} failed: ${q instanceof Error?q.message:String(q)}`)}}}else this.invalidateRecord(X);return J=502,Ox0(502,{error:"sandbox daemon unreachable"})}let z=new Headers;for(let[O,D]of N.headers.entries())if(!T38.includes(O.toLowerCase()))z.set(O,D);return J=N.status,new Response(N.body,{status:N.status,statusText:N.statusText,headers:z})}finally{this.recordProxyDuration("preview",J,Q,performance.now()-G,X)}}async ensureLocked(X,Y,G,Q){if(G.image)console.warn(`[${pW}] opts.image ignored (template ${this.sandboxTemplateName} pins image): got ${G.image}`);if(Q){let Z=await Q.get(X,GF);if(Z){let $=await this.rehydrate(X,Y,Z);if($)return this.finish($,Q,!1,!0,"resume");await Q.delete(X,GF)}}let J=await yT(this.kubeConfig,this.namespace,Y).catch(()=>{return});if(J)if(J.metadata?.deletionTimestamp)await qi1(this.kubeConfig,this.namespace,Y).catch((Z)=>{console.warn(`[${pW}] wait for terminating claim ${Y} failed: ${Z instanceof Error?Z.message:String(Z)}`)});else{let Z=await this.adopt(X,Y,J).catch(($)=>{return console.warn(`[${pW}] adopt ${Y} failed, recreating: ${$ instanceof Error?$.message:String($)}`),null});if(Z)return this.finish(Z,Q,!0,!0,"adopt");await bT(this.kubeConfig,this.namespace,Y).catch(()=>{}),await qi1(this.kubeConfig,this.namespace,Y).catch(($)=>{console.warn(`[${pW}] wait for deleted claim ${Y} failed: ${$ instanceof Error?$.message:String($)}`)})}let W=await this.provision(X,Y,G);return this.finish(W,Q,!0,!1,"fresh")}async finish(X,Y,G,Q,J){let W=this.records.has(X.handle);if(this.records.set(X.handle,X),G)await this.persist(Y,X);if(Q)await U38(this.kubeConfig,this.namespace,X.handle,this.computeShutdownTime()).catch((Z)=>console.warn(`[${pW}] TTL refresh failed for ${X.handle}: ${Z instanceof Error?Z.message:String(Z)}`));if(this.metrics){let Z=wx0(X.tenant);if(this.metrics.ensureOutcome.add(1,{...Z,outcome:J}),!W)this.metrics.active.add(1,Z)}return this.toSandbox(X)}buildEnvMap(X,Y){let G={},Q=[];for(let[J,W]of Object.entries(X.env??{}))if(wW7.has(J))Q.push(J);else G[J]=W;if(Q.length>0)console.warn(`[${pW}] opts.env keys overlap reserved bootstrap names and were dropped: ${Q.join(",")}`);return{...G,DAEMON_TOKEN:Y.token,DAEMON_BOOT_ID:Y.daemonBootId,APP_ROOT:Y.workdir,PROXY_PORT:String(xT)}}buildClaim(X,Y,G){let Q=this.sentinelToken!==null,J=Q?[]:Object.entries(this.buildEnvMap(Y,G)).sort(([W],[Z])=>W<Z?-1:W>Z?1:0).map(([W,Z])=>({name:W,value:Z}));return{apiVersion:`${DQ.CLAIM_API_GROUP}/${DQ.CLAIM_API_VERSION}`,kind:"SandboxClaim",metadata:{name:X,namespace:this.namespace,labels:{"app.kubernetes.io/name":"studio-sandbox","app.kubernetes.io/managed-by":"studio",...this.envName?{[BB.env]:this.envName}:{},...Dx0(Y.tenant)}},spec:{sandboxTemplateRef:{name:this.sandboxTemplateName},additionalPodMetadata:{labels:Dx0(Y.tenant,{[BB.role]:"claimed",[BB.sandboxHandle]:X,...this.envName?{[BB.env]:this.envName}:{}})},env:J,warmpool:Q?"default":"none",lifecycle:{shutdownPolicy:"Delete",shutdownTime:this.computeShutdownTime()}}}}async provision(X,Y,G){let Q=this.tokenGenerator(),J=UW7(),W=zx0,Z=this.buildClaim(Y,G,{token:Q,daemonBootId:J,workdir:W});try{await zW1(this.kubeConfig,this.namespace,Z)}catch(N){if(N instanceof UW1)await qi1(this.kubeConfig,this.namespace,Y),await zW1(this.kubeConfig,this.namespace,Z);else throw N}let $;try{$=await B38(this.kubeConfig,this.namespace,Y),await Ii1(this.kubeConfig,this.namespace,$)}catch(N){throw await bT(this.kubeConfig,this.namespace,Y).catch(()=>{}),N}try{await this.ensureServicePortForAdoptedSandbox($),await this.ensureHttpRouteForHandle(Y,$,G.tenant??null)}catch(N){throw await bT(this.kubeConfig,this.namespace,Y).catch(()=>{}),N}let K=await this.openForwarder($,xT,Y),H=`http://127.0.0.1:${K.localPort}`,U=DS({runtime:G.workload?.runtime??"node",packageManager:G.workload?.packageManager?{name:G.workload.packageManager,...G.workload.packageManagerPath?{path:G.workload.packageManagerPath}:{}}:null,repo:G.repo??null,port:G.workload?.devPort??OW7}),B=J;try{if(await gk1(H),this.sentinelToken!==null){let N=await PL(H);if(N)B=N.bootId;await NS(H,this.sentinelToken,U??{},{rotateToken:Q})}else if(U)await NS(H,Q,U)}catch(N){throw this.closeForwarder(K),await this.deleteHttpRouteIfManaged(Y).catch(()=>{}),await bT(this.kubeConfig,this.namespace,Y).catch(()=>{}),N}return{id:X,handle:Y,adoptedSandboxName:$,token:Q,workdir:W,daemonUrl:H,daemonForward:K,workload:G.workload??null,daemonBootId:B,tenant:G.tenant??null,ensureOpts:kW7(G)}}async ensureServicePortForAdoptedSandbox(X){if(!this.previewGateway||!this.previewUrlPattern)return;await L38(this.kubeConfig,this.namespace,X,{name:"daemon",port:xT,targetPort:xT})}async ensureHttpRouteForHandle(X,Y,G){if(!this.previewGateway||!this.previewUrlPattern)return;let Q=CW7(this.previewUrlPattern,X);if(!Q)throw new sY(`Unable to derive preview hostname for ${X} from pattern: ${this.previewUrlPattern}`);let J={apiVersion:`${OW1.API_GROUP}/${OW1.API_VERSION}`,kind:"HTTPRoute",metadata:{name:X,namespace:this.namespace,labels:Dx0(G??void 0,{[BB.role]:"claimed",[BB.sandboxHandle]:X,"app.kubernetes.io/name":"studio-sandbox","app.kubernetes.io/managed-by":"studio",...this.envName?{[BB.env]:this.envName}:{}})},spec:{parentRefs:[{kind:"Gateway",group:"gateway.networking.k8s.io",name:this.previewGateway.name,namespace:this.previewGateway.namespace}],hostnames:[Q],rules:[{backendRefs:[{group:"",kind:"Service",name:Y,port:xT}]}]}};await Ai1(this.kubeConfig,this.namespace,J)}async deleteHttpRouteIfManaged(X){if(!this.previewGateway)return;await Ti1(this.kubeConfig,this.namespace,X)}async rehydrate(X,Y,G){let Q=G.state;if(!Q.adoptedSandboxName&&!Q.podName||!Q.token)return null;let J=await yT(this.kubeConfig,this.namespace,Y).catch(()=>{return});if(!J||!I38(J))return null;let W=J.status?.sandbox?.name??Q.adoptedSandboxName??Q.podName??Y,Z=await this.openAndProbeDaemon(W,Y);if(!Z)return null;if(Q.daemonBootId&&Q.daemonBootId!==Z.bootId)console.warn(`[${pW}] daemon restart detected (handle=${Y}): stored bootId=${Q.daemonBootId} live bootId=${Z.bootId}`);return{id:X,handle:Y,adoptedSandboxName:W,token:Q.token,workdir:Q.workdir??zx0,daemonUrl:Z.daemonUrl,daemonForward:Z.daemonForward,workload:Q.workload??null,daemonBootId:Z.bootId,tenant:Q.tenant??null,ensureOpts:Q.ensureOpts??null}}async adopt(X,Y,G){if(!I38(G))return null;let Q=G.status?.sandbox?.name??Y;if(this.sentinelToken!==null)return null;let J=TW7(G);if(!J)return null;let W=await this.openAndProbeDaemon(Q,Y);if(!W)return null;let Z=SW7(G);if(this.previewGateway)await this.ensureServicePortForAdoptedSandbox(Q).catch(($)=>{console.warn(`[${pW}] Service port backfill failed for ${Y}: ${$ instanceof Error?$.message:String($)}`)}),await this.ensureHttpRouteForHandle(Y,Q,Z).catch(($)=>{console.warn(`[${pW}] HTTPRoute backfill failed for ${Y}: ${$ instanceof Error?$.message:String($)}`)});return{id:X,handle:Y,adoptedSandboxName:Q,token:J,workdir:zx0,daemonUrl:W.daemonUrl,daemonForward:W.daemonForward,workload:null,daemonBootId:W.bootId,tenant:Z,ensureOpts:null}}async openAndProbeDaemon(X,Y){let G=await this.openForwarder(X,xT,Y).catch(()=>null);if(!G)return null;let Q=`http://127.0.0.1:${G.localPort}`,J=await PL(Q);if(!J)return this.closeForwarder(G),null;return{daemonForward:G,daemonUrl:Q,bootId:J.bootId}}async getRecord(X){let Y=this.records.get(X);if(Y)return Y;if(!this.stateStore)return null;let G=await this.stateStore.getByHandle(GF,X);if(!G)return null;let Q=await this.rehydrate(G.id,X,G);if(Q)this.records.set(X,Q);return Q}async resurrectByHandle(X){if(!this.stateStore)return null;let Y=await this.stateStore.getByHandle(GF,X);if(!Y)return null;let G=Y.state.ensureOpts;if(!G)return null;return await this.ensure(Y.id,G),this.records.get(X)??null}async requireRecord(X){let Y=await this.getRecord(X);if(Y)return Y;let G=await this.resurrectByHandle(X);if(G)return G;throw Error(`unknown sandbox handle ${X}`)}invalidateRecord(X){let Y=this.records.get(X);if(!Y)return;this.records.delete(X),this.closeForwarder(Y.daemonForward)}recordProxyDuration(X,Y,G,Q,J){if(!this.metrics)return;this.metrics.proxyDurationMs.record(Q,{...wx0(G?.tenant??null),source:X,sandbox_handle:G?.handle??J??"",status_code:Y||0})}computeHandle(X,Y){return FK(X,Y,{hashLen:16})}composePreviewUrl(X){if(this.previewUrlPattern)return nz(this.previewUrlPattern,X.handle);return`http://127.0.0.1:${X.daemonForward.localPort}/`}toSandbox(X){return{handle:X.handle,workdir:X.workdir,previewUrl:this.composePreviewUrl(X)}}async persist(X,Y){if(!X)return;let G={adoptedSandboxName:Y.adoptedSandboxName,token:Y.token,workdir:Y.workdir,workload:Y.workload,daemonBootId:Y.daemonBootId,tenant:Y.tenant,...Y.ensureOpts?{ensureOpts:Y.ensureOpts}:{}};await X.put(Y.id,GF,{handle:Y.handle,state:G})}computeShutdownTime(){return new Date(Date.now()+this.idleTtlMs).toISOString()}openForwarder(X,Y,G=X){let Q=IW7(G,Y);return new Promise((J,W)=>{let Z=($,K)=>{let H=j38.createServer((U)=>this.handleForwardedConnection(U,X,Y,G));H.once("error",(U)=>{if(U.code==="EADDRINUSE"&&K<PW7){try{H.close()}catch{}let B=Lx0+($-Lx0+1)%M38;Z(B,K+1);return}W(U)}),H.listen($,"127.0.0.1",()=>{let U=H.address();if(!U||typeof U==="string"){H.close(),W(Error("port-forward listener failed to bind"));return}J({server:H,localPort:U.port})})};Z(Q,0)})}handleForwardedConnection(X,Y,G,Q){let J=new BW7,W=null,Z=!1,$=()=>{if(Z)return;if(Z=!0,J.destroy(),W)try{W.close()}catch{}if(!X.destroyed)X.destroy()};X.pipe(J),X.on("error",$),X.on("close",$),this.portForward.portForward(this.namespace,Y,[G],X,null,J).then((K)=>{let H=typeof K==="function"?K():K;if(!H){$();return}if(W=H,W.on("close",$),W.on("error",()=>{this.invalidateRecord(Q),$()}),Z)try{W.close()}catch{}}).catch((K)=>{console.warn(`[${pW}] port-forward to ${Y}:${G} failed: ${K instanceof Error?K.message:String(K)}`),this.invalidateRecord(Q),$()})}closeForwarder(X){X.server.close((Y)=>{if(Y)console.warn(`[${pW}] port-forward close on :${X.localPort} errored: ${Y instanceof Error?Y.message:String(Y)}`)})}close(){if(this.closed)return;this.closed=!0;for(let X of this.records.values())this.closeForwarder(X.daemonForward);this.records.clear()}}function qW7(X){return{active:X.createUpDownCounter("studio.sandbox.active",{description:"Active sandbox count, by runner kind and owning org. Cross-checks the cAdvisor-derived count from the cluster \u2014 divergence between the two indicates orphaned claims (mesh deleted but K8s didn't reap) or unattributed pods.",unit:"{sandbox}"}),ensureOutcome:X.createCounter("studio.sandbox.ensure.outcome",{description:"Outcome of each ensure() call: fresh provision, resume from state-store after restart, or adopt of a cluster-side claim mesh didn't know about. Cold-start ratio is the primary input for warm-pool sizing.",unit:"{call}"}),proxyDurationMs:X.createHistogram("studio.sandbox.proxy.duration_ms",{description:"Wall-clock latency of mesh-mediated requests to the sandbox daemon: tool exec proxies (source=daemon) and preview iframe traffic (source=preview).",unit:"ms"})}}function AW7(){let X=new ns;return X.loadFromDefault(),X}function I38(X){return Boolean(X.status?.conditions?.some((Y)=>Y.type==="Ready"&&Y.status==="True"))}function TW7(X){let Y=X.spec?.env;if(!Y)return null;for(let G of Y)if(G.name==="DAEMON_TOKEN"&&G.value)return G.value;return null}function IW7(X,Y){let G=HW7("sha256").update(`${X}:${Y}`).digest();return Lx0+G.readUInt32BE(0)%M38}function Ox0(X,Y){return new Response(JSON.stringify(Y),{status:X,headers:{"content-type":"application/json","access-control-allow-origin":"*"}})}function V38(X){let Y=X.slice(0,jW7);return VW7.test(Y)?Y:""}function RW7(X){if(X===void 0)return null;let Y=X.trim();if(Y==="")return null;if(!MW7.test(Y))throw Error(`AgentSandboxRunner: envName=${JSON.stringify(Y)} is not a valid DNS-label-safe environment name (lowercase alphanumeric or '-', starts with a letter, ends alphanumeric, \u226432 chars). Mesh sets this from STUDIO_ENV; check the studio chart's configMap.`);return Y}function Dx0(X,Y={}){let G={...Y};if(X){let Q=V38(X.orgId),J=V38(X.userId);if(Q)G[BB.orgId]=Q;if(J)G[BB.userId]=J}return G}function SW7(X){let Y=X.metadata?.labels;if(!Y)return null;let G=Y[BB.orgId],Q=Y[BB.userId];if(!G||!Q)return null;return{orgId:G,userId:Q}}function wx0(X){return{org_id:X?.orgId??"",user_id:X?.userId??"",runner_kind:GF}}function kW7(X){let Y={};if(X.repo)Y.repo=X.repo;if(X.workload)Y.workload=X.workload;if(X.env&&Object.keys(X.env).length>0)Y.env=X.env;if(X.tenant)Y.tenant=X.tenant;return Object.keys(Y).length>0?Y:null}function CW7(X,Y){try{return new URL(nz(X,Y)).hostname||null}catch{return null}}var GF="agent-sandbox",pW="AgentSandboxRunner",NW7="agent-sandbox-system",zW7="studio-sandbox",xT=9000,OW7=3000,zx0="/app",DW7=32,wW7,LW7=900000,EW7,T38,Lx0=40000,M38=1e4,PW7=256,BB,VW7,jW7=63,MW7;var R38=w(()=>{Qx0();uk1();Ss();Vi1();BW1();A38();wW7=new Set(["DAEMON_TOKEN","DAEMON_BOOT_ID","APP_ROOT","PROXY_PORT"]),EW7=["cookie","host","connection","keep-alive","proxy-authenticate","proxy-authorization","te","trailer","transfer-encoding","accept-encoding","content-length","upgrade"],T38=["connection","keep-alive","transfer-encoding","content-encoding","content-length"];BB={role:"studio.decocms.com/role",sandboxHandle:"studio.decocms.com/sandbox-handle",orgId:"studio.decocms.com/org-id",userId:"studio.decocms.com/user-id",env:"studio.decocms.com/env"},VW7=/^([A-Za-z0-9]([-A-Za-z0-9_.]*[A-Za-z0-9])?)?$/;MW7=/^[a-z]([a-z0-9-]{0,30}[a-z0-9])?$/});var S38={};T0(S38,{waitForSandboxReady:()=>Ii1,getSandboxClaim:()=>yT,getHttpRoute:()=>w38,deleteSandboxClaim:()=>bT,deleteHttpRoute:()=>Ti1,createSandboxClaim:()=>zW1,createHttpRoute:()=>Ai1,SandboxTimeoutError:()=>tm,SandboxError:()=>sY,KubeConfig:()=>ns,K8S_CONSTANTS:()=>DQ,HTTPROUTE_CONSTANTS:()=>OW1,AgentSandboxRunner:()=>Ex0});var k38=w(()=>{Qx0();BW1();Vi1();R38()});var Vx0={};T0(Vx0,{subscribeLifecycle:()=>Ix0,getSharedRunnerIfInit:()=>Ax0,getSharedRunner:()=>rm,getRunnerByKind:()=>ss,getOrInitSharedRunner:()=>DW1,asDockerRunner:()=>Tx0,__resetSharedLifecyclesForTesting:()=>dW7});function _38(X,Y){let G=qx0[X];if(G)return Promise.resolve(G);let Q=Px0[X];if(Q)return Q;let J=Y().then((W)=>{return qx0[X]=W,W}).finally(()=>{delete Px0[X]});return Px0[X]=J,J}function fW7(){let X=process.env.STUDIO_SANDBOX_PREVIEW_URL_PATTERN;return X&&X.trim()!==""?X:void 0}function bW7(){let X=process.env.STUDIO_SANDBOX_TEMPLATE_NAME;return X&&X.trim()!==""?X:void 0}function yW7(){let X=process.env.STUDIO_ENV;return X&&X.trim()!==""?X:void 0}function xW7(){let X=process.env.STUDIO_SANDBOX_SENTINEL_TOKEN;return X&&X.trim()!==""?X:void 0}function hW7(){let X=process.env.STUDIO_SANDBOX_PREVIEW_GATEWAY_NAME?.trim(),Y=process.env.STUDIO_SANDBOX_PREVIEW_GATEWAY_NAMESPACE?.trim();if(!X&&!Y)return;if(!X||!Y)throw Error("STUDIO_SANDBOX_PREVIEW_GATEWAY_NAME and STUDIO_SANDBOX_PREVIEW_GATEWAY_NAMESPACE must both be set, or both unset. Half-configured per-claim HTTPRoute routing would silently fail to attach.");return{name:X,namespace:Y}}async function f38(X,Y){let G=new g31(Y),Q=fW7();switch(X){case"host":{let{HostSandboxRunner:J}=await Promise.resolve().then(() => (oH(),LS)),{getSettings:W}=await Promise.resolve().then(() => (l9(),Gd0));return new J({homeDir:W().dataDir,stateStore:G,previewUrlPattern:Q})}case"docker":return new $B({stateStore:G,previewUrlPattern:Q});case"freestyle":{let{FreestyleSandboxRunner:J}=await Promise.resolve().then(() => (g78(),h78));return new J({stateStore:G})}case"agent-sandbox":{let{AgentSandboxRunner:J}=await Promise.resolve().then(() => (k38(),S38));return new J({stateStore:G,previewUrlPattern:Q,sandboxTemplateName:bW7(),envName:yW7(),previewGateway:hW7(),sentinelToken:xW7(),meter:JU})}default:throw Error(`Unknown runner kind: ${String(X)}`)}}function rm(X){return ss(X,rH())}function ss(X,Y){return _38(Y,()=>f38(Y,X.db))}async function DW1(){let X;try{X=rH()}catch(Y){return console.warn("[lifecycle] cannot resolve sandbox runner:",Y instanceof Error?Y.message:String(Y)),null}return _38(X,()=>f38(X,a7().db))}function Ax0(){let X;try{X=rH()}catch{return null}return qx0[X]??null}function Tx0(X){return X instanceof $B?X:null}function Ix0(X,Y,G){let Q=hT.get(Y);if(Q){if(Q.terminated){if(Q.lastPhase)try{G(Q.lastPhase)}catch{}return{unsubscribe:lW7}}if(Q.listeners.add(G),Q.lastPhase)try{G(Q.lastPhase)}catch{}return C38(Y,Q,G)}let J=new AbortController,W={lastPhase:null,terminated:!1,listeners:new Set([G]),abort:J};return hT.set(Y,W),mW7(X,Y,W),C38(Y,W,G)}function lW7(){}function C38(X,Y,G){return{unsubscribe(){if(hT.get(X)!==Y)return;if(Y.listeners.delete(G),Y.listeners.size===0)hT.delete(X),Y.abort.abort()}}}async function mW7(X,Y,G){let Q=null;try{for await(let J of X.watchClaimLifecycle(Y,G.abort.signal)){if(G.abort.signal.aborted)break;G.lastPhase=J;let W=J.kind==="ready"||J.kind==="failed";if(W)G.terminated=!0;let Z=Array.from(G.listeners);for(let $ of Z)try{$(J)}catch{}if(W)break}}catch(J){Q=J}finally{if(!G.terminated&&!G.abort.signal.aborted&&G.listeners.size>0){let J={kind:"failed",reason:"unknown",message:Q instanceof Error?Q.message:"Lifecycle watcher ended unexpectedly"};G.lastPhase=J,G.terminated=!0;for(let W of Array.from(G.listeners))try{W(J)}catch{}}if(hT.get(Y)===G)hT.delete(Y)}}function dW7(){for(let X of hT.values())X.abort.abort();hT.clear()}var vW7,_W7,v38,qx0,Px0,gW7,uW7,hT;var ez=w(()=>{oH();ZU();T$();Cf0();vW7=Symbol.for("decocms.sandbox.lifecycle.runners"),_W7=Symbol.for("decocms.sandbox.lifecycle.inflight"),v38=globalThis,qx0=v38[vW7]??={},Px0=v38[_W7]??={};gW7=Symbol.for("decocms.sandbox.lifecycle.shared-lifecycles"),uW7=globalThis,hT=uW7[gW7]??=new Map});async function b38(X,Y){N0(Y);let G=s1(Y),Q=H6(Y);if(!Q)throw Error("User ID required");let J=await Y.storage.virtualMcps.findById(X.virtualMcpId);if(!J||J.organization_id!==G.id)throw Error("Virtual MCP not found");let W=J.metadata??{},Z=ks(qT(W),Q,X.branch),$=rH();if(Z&&(Z.runnerKind??"freestyle")===$)return Z;await y38(Y,Z,$);let K=W.githubRepo??null,{entry:H}=await x38({ctx:Y,userId:Q,orgId:G.id,virtualMcpId:X.virtualMcpId,branch:X.branch,metadata:W,githubRepo:K,existing:Z});return H}async function y38(X,Y,G){if(!Y)return;let Q=Y.runnerKind??"freestyle";if(Q===G)return;if(Q==="freestyle")return;try{await(await ss(X,Q)).delete(Y.vmId)}catch(J){console.error(`[VM_START] stale ${Q} ${Y.vmId}: ${J instanceof Error?J.message:String(J)}`)}}async function x38(X){let{ctx:Y,userId:G,orgId:Q,virtualMcpId:J,branch:W,metadata:Z,githubRepo:$,existing:K}=X;if($&&!$.connectionId)throw Error("GitHub connection id missing on virtual MCP metadata");let{runtime:H,packageManager:U,port:B,packageManagerPath:N}=dt6(Z),z;if($){let{cloneUrl:R,gitUserName:C,gitUserEmail:_}=await ct6($.connectionId,$.owner,$.name,Y.db,Y.vault);if(!U){let v=await tt6($.connectionId,$.owner,$.name,Y.db,Y.vault);if(v)U=v.packageManager,H=h31[v.packageManager].runtime,B=v.devPort??B,await cW7(Y,J,G,v.packageManager,v.devPort)}z={cloneUrl:R,userName:C,userEmail:_,branch:W,displayName:`${$.owner}/${$.name}`}}let O=H&&U?{runtime:H,packageManager:U,...B!==null?{devPort:Number(B)}:{},...N?{packageManagerPath:N}:{}}:void 0,D=PT({orgId:Q,virtualMcpId:J,branch:W}),E=await rm(Y),P=await E.ensure({userId:G,projectRef:D},{repo:z,workload:O,tenant:{orgId:Q,userId:G}}),j=!!K&&K.vmId===P.handle&&K?.createdAt?K.createdAt:Date.now(),M={vmId:P.handle,previewUrl:P.previewUrl,runnerKind:E.kind,createdAt:j};await lt6(Y.storage.virtualMcps,J,G,G,W,M);let I=!K||K.vmId!==P.handle;return{entry:M,isNewVm:I}}async function cW7(X,Y,G,Q,J){let W=await X.storage.virtualMcps.findById(Y);if(!W)return;let Z=W.metadata??{};await X.storage.virtualMcps.update(Y,G,{metadata:{...Z,runtime:{selected:Q,port:J}}})}var jx0;var Mx0=w(()=>{K0();oH();h0();kf0();it6();at6();TC0();Sf0();ez();jx0=m1({name:"VM_START",description:"Start a sandbox with the connected GitHub repo and dev server.",annotations:{title:"Start VM Preview",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!0},_meta:{ui:{visibility:"app"}},inputSchema:F.object({virtualMcpId:F.string().describe("Virtual MCP ID"),branch:F.string().min(1).optional().describe("Optional git branch to check out. When omitted the handler generates `deco/<adjective>-<noun>` and uses it. The resolved branch is returned in the response so callers can persist it.")}),outputSchema:F.object({previewUrl:F.string().nullable(),vmId:F.string(),branch:F.string(),isNewVm:F.boolean(),runnerKind:F.enum(["host","docker","freestyle","agent-sandbox"])}),handler:async(X,Y)=>{let G=X.branch??iS1(),{metadata:Q,userId:J,organization:W,entry:Z}=await tk1({virtualMcpId:X.virtualMcpId,branch:G},Y),$=Q.githubRepo??null,K=rH();await y38(Y,Z,K);let{entry:H,isNewVm:U}=await x38({ctx:Y,userId:J,orgId:W.id,virtualMcpId:X.virtualMcpId,branch:G,metadata:Q,githubRepo:$,existing:Z});return{...H,branch:G,isNewVm:U,runnerKind:K}}})});var Rx0;var h38=w(()=>{K0();h0();kf0();ez();Rx0=m1({name:"VM_DELETE",description:"Delete a sandbox.",annotations:{title:"Delete VM Preview",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!0},_meta:{ui:{visibility:"app"}},inputSchema:F.object({virtualMcpId:F.string().describe("Virtual MCP ID that owns this VM"),branch:F.string().min(1).describe("Branch whose vm should be deleted (vmMap[userId][branch])")}),outputSchema:F.object({success:F.boolean()}),handler:async(X,Y)=>{let G;try{G=await tk1(X,Y)}catch($){if($ instanceof Error&&$.message==="Virtual MCP not found")return{success:!0};throw $}let{entry:Q,userId:J}=G;if(!Q)return{success:!0};await mt6(Y.storage.virtualMcps,X.virtualMcpId,J,J,X.branch);let W=Q.runnerKind??"freestyle";return await(await ss(Y,W)).delete(Q.vmId).catch(($)=>console.error(`[VM_DELETE] ${W} ${Q.vmId}: ${$ instanceof Error?$.message:String($)}`)),{success:!0}}})});var g38=w(()=>{Mx0();h38()});var pW7="https://api.github.com",Sx0;var u38=w(()=>{K0();h0();nM1();pR();Sx0=m1({name:"GITHUB_LIST_USER_ORGS",description:"List GitHub App installations (orgs/accounts) accessible to the authenticated user.",annotations:{title:"List GitHub User Orgs",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},_meta:{ui:{visibility:"app"}},inputSchema:F.object({connectionId:F.string().describe("ID of the mcp-github connection to use")}),outputSchema:F.object({installations:F.array(F.object({installationId:F.number(),login:F.string(),avatarUrl:F.string(),type:F.string()})),appSlug:F.string().optional()}),handler:async(X,Y)=>{await Y.access.check();let G=new V3(Y.db,Y.vault),Q=await G.get(X.connectionId);if(!Q)throw Error("No GitHub token found. Ensure the mcp-github connection is authenticated.");let J=Q.accessToken;if(qQ1(Q)&&G.isExpired(Q,pM1)){let U=await AQ1(Q,G);if(!U)throw Error($R);J=U,Q=await G.get(X.connectionId)??Q}let W=[],Z,$=1,K=100,H=async(U)=>fetch(`${pW7}/user/installations?per_page=${K}&page=${$}`,{headers:{Authorization:`Bearer ${U}`,Accept:"application/vnd.github+json","X-GitHub-Api-Version":"2022-11-28"}});while(!0){let U=await H(J);if(U.status===401){let N=await G.get(X.connectionId);if(!N||!qQ1(N))throw Error($R);let z=await AQ1(N,G);if(!z)throw Error($R);if(J=z,U=await H(J),U.status===401)throw Error($R)}if(!U.ok)throw Error(`GitHub /user/installations failed: ${U.status}`);let B=await U.json();for(let N of B.installations){if(!Z)Z=N.app_slug??N.app?.slug;W.push({installationId:N.id,login:N.account.login,avatarUrl:N.account.avatar_url,type:N.account.type})}if(B.installations.length<K)break;$++}return{installations:W,...Z?{appSlug:Z}:{}}}})});var l38=w(()=>{u38()});var mS1={};T0(mS1,{managementMCP:()=>$s,listManagementTools:()=>rW7,ALL_TOOLS:()=>m38});async function rW7(X){let Y=await $s(X),[G,Q]=xG1.createLinkedPair();await Y.connect(Q);let J=new uY({name:"tools-hydration",version:"1.0.0"});try{return await J.connect(G),(await J.listTools()).tools}finally{await J.close().catch(()=>{})}}var tW7,aW7,m38,$s=async(X)=>{let Y=null;if(X.organization){let Z=await X.storage.organizationSettings.get(X.organization.id),$=await X.storage.virtualMcps.list(X.organization.id),K=new Set(Z?.enabled_plugins??[]);for(let H of $){let U=H.metadata?.enabled_plugins;if(U&&Array.isArray(U))for(let B of U)K.add(B)}Y=K.size>0?[...K]:null}let G=ro4(m38,Y),Q=new oD({name:"mcp-cms-management",version:"1.0.0"},{capabilities:{tools:{},prompts:{},resources:{}}});for(let Z of G){let $=Z.inputSchema&&typeof Z.inputSchema==="object"&&"shape"in Z.inputSchema?Z.inputSchema:F.object({}),K=Z.outputSchema&&typeof Z.outputSchema==="object"&&"shape"in Z.outputSchema?Z.outputSchema:void 0,H=$.shape,U=K?.shape;Q.registerTool(Z.name,{description:Z.description??"",inputSchema:H,outputSchema:U,annotations:Z.annotations,_meta:Z._meta},async(B)=>{X.access.setToolName(Z.name);try{let N=await Z.execute(B,X);return{content:[{type:"text",text:JSON.stringify(N)}],structuredContent:N}}catch(N){return{content:[{type:"text",text:`Error: ${N.message}`}],isError:!0}}})}let J=$g6();for(let Z of J)Q.registerPrompt(Z.name,{title:Z.title,description:Z.description},()=>({messages:[{role:"user",content:{type:"text",text:Z.text}}]}));if(X.organization?.id){let Z=await X.storage.brandContext.list(X.organization.id),$=new Set;for(let K of Z){let H=K.name.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,""),U=H?`brand-${H}`:`brand-${K.id}`;if($.has(U))U=`${U}-${K.id.slice(0,8)}`;$.add(U);let B=[`# Brand: ${K.name}`,"",`**Domain:** ${K.domain}`,"","## Overview",K.overview];if(K.colors){let z=Object.entries(K.colors).filter(([,O])=>O);if(z.length>0){B.push("","## Colors");for(let[O,D]of z)B.push(`- **${O}:** ${D}`)}}if(K.fonts){let z=Object.entries(K.fonts).filter(([,O])=>O);if(z.length>0){B.push("","## Fonts");for(let[O,D]of z)B.push(`- ${D} (${O})`)}}if(K.logo)B.push("",`**Logo:** ${K.logo}`);if(K.favicon)B.push(`**Favicon:** ${K.favicon}`);if(K.ogImage)B.push(`**OG Image:** ${K.ogImage}`);if(K.images&&K.images.length>0){B.push("","## Images");for(let z of K.images){let O=Object.entries(z).map(([D,E])=>`${D}: ${E}`).join(", ");B.push(`- ${O}`)}}let N=B.join(`
|
|
7182
|
-
`);Q.prompt(U,`Brand context for ${K.name}`,()=>({messages:[{role:"user",content:{type:"text",text:N}}]}))}}let W=Kg6();for(let Z of W)Q.resource(Z.name,Z.uri,{description:Z.description,mimeType:Z.mimeType??"text/markdown"},async($)=>{return{contents:[{uri:typeof $==="string"?$:$.href,mimeType:Z.mimeType??"text/markdown",text:Z.text}]}});return Q};var Js=w(()=>{pt();iN();b71();K0();dT6();dy6();ny6();Qx6();zx6();Lx6();gx6();ix6();Wh6();Ph6();Ah6();uh6();Hg6();fg6();Lt6();g38();l38();tW7=[tk0,ak0,rk0,ok0,sk0,ek0,XC0,YC0,GC0,QC0,JC0,ZC0,$C0,KC0,HC0,FC0,UC0,BC0,NC0,zC0,OC0,DC0,wC0,Tj0,Ik0,Vk0,jk0,Mk0,Rk0,yk0,hk0,gk0,uk0,lk0,py6,ik0,pk0,nk0,f20,y20,x20,b20,Sk0,kk0,Ck0,vk0,_k0,fk0,bk0,lC0,IC0,VC0,jC0,MC0,RC0,SC0,LC0,EC0,PC0,qC0,AC0,kC0,CC0,vC0,_C0,fC0,hC0,gC0,uC0,mk0,dk0,ck0,mC0,dC0,cC0,iC0,pC0,nC0,tC0,aC0,rC0,oC0,sC0,eC0,Xv0,Yv0,Gv0,Qv0,Jv0,Zv0,Wv0,...wt6,jx0,Rx0,Sx0],aW7=oo4(),m38=[...tW7,...aW7]});function oW7(X){return[{permissions:{self:["*"]},getTools:async()=>{let{ALL_TOOLS:Y}=await Promise.resolve().then(() => (Js(),mS1));return Y.map((G)=>{return{name:G.name,inputSchema:F.toJSONSchema(G.inputSchema,{unrepresentable:"any"}),outputSchema:G.outputSchema?F.toJSONSchema(G.outputSchema,{unrepresentable:"any"}):void 0,description:G.description}})},data:zF0(t$(),X)},{data:NF0()},{data:BF0(X)}]}async function d38(X,Y){try{let G=a7(),Q=u4(),J=new lM(Q.encryptionKey),W=new vG1(G.db,J),Z=oW7(X);await Promise.all(Z.map(async($)=>{let K=null;if($.permissions)K=(await kY.api.createApiKey({body:{name:`${$.data.app_name??crypto.randomUUID()}-mcp`,userId:Y,permissions:$.permissions,rateLimitEnabled:!1,metadata:{organization:{id:X},purpose:"default-org-connections"}}}))?.key;let H=await UA({id:"pending",title:$.data.title,connection_type:$.data.connection_type,connection_url:$.data.connection_url,connection_token:$.data.connection_token,connection_headers:$.data.connection_headers}).catch(()=>null),U=await $.getTools?.()??H?.tools??null,B=H?.scopes?.length?H.scopes:null,N=$.data.id?$.data.id.startsWith(`${X}_`)?$.data.id:`${X}_${$.data.id}`:void 0;await W.create({...$.data,id:N,tools:U,configuration_scopes:B,organization_id:X,created_by:Y,connection_token:$.data.connection_token??K})}));try{let $=new _G1(G.db);await VT6(X,Y,$)}catch($){console.error("Failed to install studio pack agents:",$)}if(Q.aiGatewayEnabled&&Q.studioProvisionSecretKey&&RG1.provisionKey)try{let $=await BA(Y),K=await RG1.provisionKey($,X);await new kG1(G.db,J).upsert({providerId:"deco",label:"Auto-provisioned",apiKey:K,organizationId:X,createdBy:Y})}catch($){console.error("Failed to auto-provision Deco AI Gateway key:",$)}}catch(G){console.error("Error creating default MCP connections:",G)}}var c38=w(()=>{q7();D20();lw();ZU();jj1();w20();E20();P20();bG1();jT6();K0();l9();aR();mM()});function sW7(X,Y){let G=X.email.split("@")[1]?.toLowerCase()??null;return{distinctId:X.id,properties:{$set:{email:X.email,name:X.name,email_verified:X.emailVerified},$set_once:{first_seen_at:Y.toISOString(),signup_email_domain:G}}}}function kx0(X){M6.identify(sW7(X,new Date))}var i38=w(()=>{CX()});async function Y$7(X){let{user:Y,token:G}=X;if(!G?.idToken)return;let Q;try{Q=c9(G.idToken)}catch{return}let{preferred_username:J,upn:W}=Q,Z=[J,W].filter((H)=>typeof H==="string"&&H.length>0&&H.toLowerCase()!==Y.email.toLowerCase()).map((H)=>H.toLowerCase());if(Z.length===0)return;let{db:$}=a7(),K=await $.selectFrom("user").selectAll().where("email","in",Z).where("id","!=",Y.id).executeTakeFirst();if(!K)return;try{await $.transaction().execute(async(H)=>{await B1`UPDATE "account" SET "userId" = ${K.id} WHERE "userId" = ${Y.id}`.execute(H),await B1`UPDATE "session" SET "userId" = ${K.id} WHERE "userId" = ${Y.id}`.execute(H),await B1`
|
|
7182
|
+
`);Q.prompt(U,`Brand context for ${K.name}`,()=>({messages:[{role:"user",content:{type:"text",text:N}}]}))}}let W=Kg6();for(let Z of W)Q.resource(Z.name,Z.uri,{description:Z.description,mimeType:Z.mimeType??"text/markdown"},async($)=>{return{contents:[{uri:typeof $==="string"?$:$.href,mimeType:Z.mimeType??"text/markdown",text:Z.text}]}});return Q};var Js=w(()=>{pt();iN();b71();K0();dT6();dy6();ny6();Qx6();zx6();Lx6();gx6();ix6();Wh6();Ph6();Ah6();uh6();Hg6();fg6();Lt6();g38();l38();tW7=[tk0,ak0,rk0,ok0,sk0,ek0,XC0,YC0,GC0,QC0,JC0,ZC0,$C0,KC0,HC0,FC0,UC0,BC0,NC0,zC0,OC0,DC0,wC0,Tj0,Ik0,Vk0,jk0,Mk0,Rk0,yk0,hk0,gk0,uk0,lk0,py6,ik0,pk0,nk0,f20,y20,x20,b20,Sk0,kk0,Ck0,vk0,_k0,fk0,bk0,lC0,IC0,VC0,jC0,MC0,RC0,SC0,LC0,EC0,PC0,qC0,AC0,kC0,CC0,vC0,_C0,fC0,hC0,gC0,uC0,mk0,dk0,ck0,mC0,dC0,cC0,iC0,pC0,nC0,tC0,aC0,rC0,oC0,sC0,eC0,Xv0,Yv0,Gv0,Qv0,Jv0,Zv0,Wv0,...wt6,jx0,Rx0,Sx0],aW7=oo4(),m38=[...tW7,...aW7]});function oW7(X){return[{permissions:{self:["*"]},getTools:async()=>{let{ALL_TOOLS:Y}=await Promise.resolve().then(() => (Js(),mS1));return Y.map((G)=>{return{name:G.name,inputSchema:F.toJSONSchema(G.inputSchema,{unrepresentable:"any"}),outputSchema:G.outputSchema?F.toJSONSchema(G.outputSchema,{unrepresentable:"any"}):void 0,description:G.description}})},data:zF0(t$(),X)},{data:NF0()},{data:BF0(X)}]}async function d38(X,Y){try{let G=a7(),Q=u4(),J=new lM(Q.encryptionKey),W=new vG1(G.db,J),Z=oW7(X);await Promise.all(Z.map(async($)=>{let K=null;if($.permissions)K=(await kY.api.createApiKey({body:{name:`${$.data.app_name??crypto.randomUUID()}-mcp`,userId:Y,permissions:$.permissions,rateLimitEnabled:!1,metadata:{organization:{id:X},purpose:"default-org-connections"}}}))?.key;let H=await UA({id:"pending",title:$.data.title,connection_type:$.data.connection_type,connection_url:$.data.connection_url,connection_token:$.data.connection_token??K,connection_headers:$.data.connection_headers}).catch(()=>null),U=await $.getTools?.()??H?.tools??null,B=H?.scopes?.length?H.scopes:null,N=$.data.id?$.data.id.startsWith(`${X}_`)?$.data.id:`${X}_${$.data.id}`:void 0;await W.create({...$.data,id:N,tools:U,configuration_scopes:B,organization_id:X,created_by:Y,connection_token:$.data.connection_token??K})}));try{let $=new _G1(G.db);await VT6(X,Y,$)}catch($){console.error("Failed to install studio pack agents:",$)}if(Q.aiGatewayEnabled&&Q.studioProvisionSecretKey&&RG1.provisionKey)try{let $=await BA(Y),K=await RG1.provisionKey($,X);await new kG1(G.db,J).upsert({providerId:"deco",label:"Auto-provisioned",apiKey:K,organizationId:X,createdBy:Y})}catch($){console.error("Failed to auto-provision Deco AI Gateway key:",$)}}catch(G){console.error("Error creating default MCP connections:",G)}}var c38=w(()=>{q7();D20();lw();ZU();jj1();w20();E20();P20();bG1();jT6();K0();l9();aR();mM()});function sW7(X,Y){let G=X.email.split("@")[1]?.toLowerCase()??null;return{distinctId:X.id,properties:{$set:{email:X.email,name:X.name,email_verified:X.emailVerified},$set_once:{first_seen_at:Y.toISOString(),signup_email_domain:G}}}}function kx0(X){M6.identify(sW7(X,new Date))}var i38=w(()=>{CX()});async function Y$7(X){let{user:Y,token:G}=X;if(!G?.idToken)return;let Q;try{Q=c9(G.idToken)}catch{return}let{preferred_username:J,upn:W}=Q,Z=[J,W].filter((H)=>typeof H==="string"&&H.length>0&&H.toLowerCase()!==Y.email.toLowerCase()).map((H)=>H.toLowerCase());if(Z.length===0)return;let{db:$}=a7(),K=await $.selectFrom("user").selectAll().where("email","in",Z).where("id","!=",Y.id).executeTakeFirst();if(!K)return;try{await $.transaction().execute(async(H)=>{await B1`UPDATE "account" SET "userId" = ${K.id} WHERE "userId" = ${Y.id}`.execute(H),await B1`UPDATE "session" SET "userId" = ${K.id} WHERE "userId" = ${Y.id}`.execute(H),await B1`
|
|
7183
7183
|
UPDATE "member" SET "userId" = ${K.id}
|
|
7184
7184
|
WHERE "userId" = ${Y.id}
|
|
7185
7185
|
AND "organizationId" NOT IN (
|