decocms 2.309.0 → 2.310.0
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-DfpOj9uk.js → AlertCircle-Cty0PLzG.js} +1 -1
- package/dist/client/assets/{ArrowNarrowLeft-CGsSFJZH.js → ArrowNarrowLeft-GsAWuH-U.js} +1 -1
- package/dist/client/assets/{ArrowUpRight-DtiNC8xj.js → ArrowUpRight-Ck_tkMu3.js} +1 -1
- package/dist/client/assets/{Check-DXPBjwC9.js → Check-3abToiit.js} +1 -1
- package/dist/client/assets/{CheckCircle-DenvulPR.js → CheckCircle-gN0xOzFk.js} +1 -1
- package/dist/client/assets/{ChevronDown-BzUdsdeu.js → ChevronDown-Du1srzFH.js} +1 -1
- package/dist/client/assets/{ChevronRight-8RBDSI4c.js → ChevronRight-CZd3BLjH.js} +1 -1
- package/dist/client/assets/{ChevronUp-CkOPdM7g.js → ChevronUp-CgHHKXV-.js} +1 -1
- package/dist/client/assets/{Container-B2b9FJMR.js → Container-DV6TDqni.js} +1 -1
- package/dist/client/assets/{DotsVertical-CCxgBVsk.js → DotsVertical-D7_daHaX.js} +1 -1
- package/dist/client/assets/{LinkExternal01-C_eUHFUm.js → LinkExternal01-CLwRaqiP.js} +1 -1
- package/dist/client/assets/{Lock01-SmEMRGOb.js → Lock01-DW1KfF8p.js} +1 -1
- package/dist/client/assets/{Palette-qMNBtXtx.js → Palette-DgoZ3R-C.js} +1 -1
- package/dist/client/assets/{Play-DmVY8R1A.js → Play-ZbM8yAk4.js} +1 -1
- package/dist/client/assets/{Plus-B19lTgl_.js → Plus-xUHEWwhK.js} +1 -1
- package/dist/client/assets/{RefreshCcw01-DDZo1WKt.js → RefreshCcw01-DOURBTJB.js} +1 -1
- package/dist/client/assets/{SearchMd-BvQQOrkm.js → SearchMd-D05lbITN.js} +1 -1
- package/dist/client/assets/{Settings02-CYadYmOF.js → Settings02-YbowrI3C.js} +1 -1
- package/dist/client/assets/{Shield01-GS3q0eea.js → Shield01-C9nMXmPC.js} +1 -1
- package/dist/client/assets/{Star01-BM8AlGEC.js → Star01-Dcuqy8Xk.js} +1 -1
- package/dist/client/assets/{Sun-B2OKfrtR.js → Sun-s1inzqGI.js} +1 -1
- package/dist/client/assets/{Tool01-CIMPkAjR.js → Tool01-BxwtRzVa.js} +1 -1
- package/dist/client/assets/{Trash01-4PBXkXRo.js → Trash01-Bgq8zueU.js} +1 -1
- package/dist/client/assets/{User01-nh8Rby1P.js → User01-C3dKJDdx.js} +1 -1
- package/dist/client/assets/{Users03-CItFKGX1.js → Users03-DBewd1K5.js} +1 -1
- package/dist/client/assets/{X-CGShNfee.js → X-BANQifhl.js} +1 -1
- package/dist/client/assets/{XCircle-CTrtJtfR.js → XCircle-BOat1iVu.js} +1 -1
- package/dist/client/assets/{XClose-BnCJyyB-.js → XClose-B0qkWAhQ.js} +1 -1
- package/dist/client/assets/{Zap-D7WiwjAV.js → Zap-Cq3RtLSB.js} +1 -1
- package/dist/client/assets/{ZapSquare-DhbSIk6a.js → ZapSquare-BajF09ms.js} +1 -1
- package/dist/client/assets/{accordion-CgT_Vu18.js → accordion-Bm-v7xME.js} +1 -1
- package/dist/client/assets/{agent-icon-GBX3RKid.js → agent-icon-SBMo6sYE.js} +1 -1
- package/dist/client/assets/{agents-list--TECSTo0.js → agents-list-GJhbrN0t.js} +1 -1
- package/dist/client/assets/ai-providers-CGGe3rZi.js +1 -0
- package/dist/client/assets/{alert-dialog-CZ6BxFHK.js → alert-dialog-Bht5ffLL.js} +1 -1
- package/dist/client/assets/{auth-catchall-CzFa67HB.js → auth-catchall-BywQWWLa.js} +1 -1
- package/dist/client/assets/{automation-list-row-DC7TfwMb.js → automation-list-row-Bf0t7EtN.js} +1 -1
- package/dist/client/assets/{automations-DPy2yPJ7.js → automations-TTGgZ4_x.js} +1 -1
- package/dist/client/assets/{avatar-BbisflHp.js → avatar-C0tjLWvd.js} +1 -1
- package/dist/client/assets/{badge-B32WzuEH.js → badge-CETVYtBV.js} +1 -1
- package/dist/client/assets/{brand-context-CNm1jHaQ.js → brand-context-BYQ1b567.js} +1 -1
- package/dist/client/assets/{card-DdVfFEw2.js → card-CGYKd1RQ.js} +1 -1
- package/dist/client/assets/{chat-context-BnJMVusJ.js → chat-context-CNhlOw91.js} +1 -1
- package/dist/client/assets/{checkbox-BJiR6nKO.js → checkbox-GOJe-fLe.js} +1 -1
- package/dist/client/assets/{collection-detail-tyzI1jcV.js → collection-detail-D2LL1NRS.js} +1 -1
- package/dist/client/assets/{collection-display-button-Tq0uOlxA.js → collection-display-button-D33z-MiQ.js} +1 -1
- package/dist/client/assets/{collection-search-BBFkmets.js → collection-search-DKsJLeUf.js} +1 -1
- package/dist/client/assets/{collection-search-D62A0L7U.js → collection-search-pRmMMUTu.js} +1 -1
- package/dist/client/assets/{collection-table-wrapper-CjFwfKJr.js → collection-table-wrapper-DkvuPVRT.js} +1 -1
- package/dist/client/assets/{collection-tabs--b599n6J.js → collection-tabs-Dm7Azh1U.js} +1 -1
- package/dist/client/assets/{collections-C5AWnYf0.js → collections-CRk11Z8a.js} +1 -1
- package/dist/client/assets/{command-DK-j4arJ.js → command-BUpWRvBK.js} +1 -1
- package/dist/client/assets/{connection-card--P5ycKzL.js → connection-card-D9OhH-Fq.js} +1 -1
- package/dist/client/assets/{connection-detail-CUNWcOPp.js → connection-detail-CQU5Tvmh.js} +1 -1
- package/dist/client/assets/{connection-form-helpers-BeJI6IBg.js → connection-form-helpers-D1bN8HX-.js} +1 -1
- package/dist/client/assets/{connections-DWQtsigZ.js → connections-CgifR5uL.js} +1 -1
- package/dist/client/assets/{constants-CnfWGYKH.js → constants-BCHiURE4.js} +1 -1
- package/dist/client/assets/{constants-sHQufsXI.js → constants-Cp5N7awu.js} +1 -1
- package/dist/client/assets/{dialog-BZytMGON.js → dialog-C67OG62k.js} +1 -1
- package/dist/client/assets/{domain-settings-bUM7Hn2b.js → domain-settings-tkR1Nxgx.js} +1 -1
- package/dist/client/assets/{drawer-D-6kJz55.js → drawer-dxlczq_i.js} +1 -1
- package/dist/client/assets/{dropdown-menu-BpdWPWdq.js → dropdown-menu-CW5XsoI8.js} +1 -1
- package/dist/client/assets/{dynamic-plugin-layout-CZeZv3Kn.js → dynamic-plugin-layout-tEvbHH60.js} +1 -1
- package/dist/client/assets/{empty-state-BQISF-I3.js → empty-state-Ci5HFdKD.js} +1 -1
- package/dist/client/assets/{empty-state-DuLPP0P_.js → empty-state-CmG4puLG.js} +1 -1
- package/dist/client/assets/{extract-connection-data-Bj_pawjK.js → extract-connection-data-hFQpz6Ey.js} +1 -1
- package/dist/client/assets/{features-92AWt8WI.js → features-BVz7FR1H.js} +1 -1
- package/dist/client/assets/{form-Bi1l8-LL.js → form-DPfW-AID.js} +1 -1
- package/dist/client/assets/{general-CJgzv-Wx.js → general-CU3b0SfV.js} +1 -1
- package/dist/client/assets/{index-YDo551Ci.js → index-BFPJC5eE.js} +1 -1
- package/dist/client/assets/{index-gC4su7X_.js → index-C9J0IAed.js} +1 -1
- package/dist/client/assets/{index-Dr1V1Dds.js → index-CKp44BR_.js} +1 -1
- package/dist/client/assets/{index-BheN5Hjz.js → index-CMBuSnHj.js} +1 -1
- package/dist/client/assets/{index-CzZgNQPp.js → index-COeQARzy.js} +1 -1
- package/dist/client/assets/{index-R0jE9KSj.js → index-Cg8Nu4CY.js} +3 -3
- package/dist/client/assets/{index-C39RwBnQ.js → index-ClSJa_a-.js} +1 -1
- package/dist/client/assets/{index-BydJ2WUR.js → index-DGiQyM9G.js} +1 -1
- package/dist/client/assets/index-DP8Jy3jt.js +1 -0
- package/dist/client/assets/{index--ghksYAo.js → index-DS-a6wyz.js} +1 -1
- package/dist/client/assets/{index-C03HvIgQ.js → index-Ddo0iMq6.js} +1 -1
- package/dist/client/assets/{index-DSzBgSpo.js → index-HbxcCsnZ.js} +1 -1
- package/dist/client/assets/{index-CE54Jnz-.js → index-QuRKY5U6.js} +1 -1
- package/dist/client/assets/{index-Cbpr6CGx.js → index-akTmUiSO.js} +1 -1
- package/dist/client/assets/{index-BFIwa8W4.js → index-e7eEqZQD.js} +2 -2
- package/dist/client/assets/{index-BgSyGi69.js → index-hiuu-64i.js} +1 -1
- package/dist/client/assets/{infiniteQueryObserver-NmUU_rOy.js → infiniteQueryObserver-CHiY1NnZ.js} +1 -1
- package/dist/client/assets/{input-C66FZPPf.js → input-B8x8lV8_.js} +1 -1
- package/dist/client/assets/{integration-icon-fPkSifk0.js → integration-icon-Bfmqyrf_.js} +1 -1
- package/dist/client/assets/{label-BMe1SNEP.js → label-BU7N79Fq.js} +1 -1
- package/dist/client/assets/{layout-DbOAzt16.js → layout-Dnq67rSm.js} +1 -1
- package/dist/client/assets/{lean-canvas-recruit-modal-BP1iZHjy.js → lean-canvas-recruit-modal-C70LSjWJ.js} +1 -1
- package/dist/client/assets/{login-CRXuvxd9.js → login-_Q9L7mst.js} +1 -1
- package/dist/client/assets/{members-BwleeoVp.js → members-D-VFZlys.js} +1 -1
- package/dist/client/assets/{monaco-editor-C457mqYB.js → monaco-editor-BXyi5viY.js} +1 -1
- package/dist/client/assets/{monitoring-stats-row-DKl9Ubde.js → monitoring-stats-row-CEoUxcHm.js} +1 -1
- package/dist/client/assets/{oauth-callback-1dC9VVpc.js → oauth-callback-B5dtt4y6.js} +1 -1
- package/dist/client/assets/{oauth-callback-ai-provider-BGY5Uat_.js → oauth-callback-ai-provider-Cc_nFPdq.js} +1 -1
- package/dist/client/assets/{onboarding-C1bM-up9.js → onboarding-uWZePAti.js} +1 -1
- package/dist/client/assets/{org-layout-Cll4mSr3.js → org-layout-BK5cWTcx.js} +1 -1
- package/dist/client/assets/{org-plugin-layout-qjkMXyOy.js → org-plugin-layout-C0ezKAgt.js} +1 -1
- package/dist/client/assets/{pair-Bl_sqsCX.js → pair-BTwp6bTc.js} +1 -1
- package/dist/client/assets/{plugin-empty-state-DCQUcDfK.js → plugin-empty-state-CjfGiA5F.js} +1 -1
- package/dist/client/assets/{plugin-header-Deqthnjp.js → plugin-header-D9DU3BMG.js} +1 -1
- package/dist/client/assets/{plugin-layout-m0OkUjnq.js → plugin-layout-DSjok7-L.js} +1 -1
- package/dist/client/assets/{popover-DIqVWKAH.js → popover-3D5jsJh1.js} +1 -1
- package/dist/client/assets/{profile-Ck6jHCNy.js → profile-BdmoV93F.js} +1 -1
- package/dist/client/assets/{project-app-view-D--E6naM.js → project-app-view-CmNwDiw0.js} +1 -1
- package/dist/client/assets/registry-C8zMtgwr.js +2 -0
- package/dist/client/assets/{registry-layout-BaLlt8iJ.js → registry-layout-xyKYdVRG.js} +1 -1
- package/dist/client/assets/{required-auth-layout-4lbvRXP9.js → required-auth-layout-W0nsPTz2.js} +1 -1
- package/dist/client/assets/{reset-password-E281j__o.js → reset-password-BVEdYLL2.js} +1 -1
- package/dist/client/assets/{roles-CG_umLTJ.js → roles-CtNr9Xv_.js} +1 -1
- package/dist/client/assets/{scroll-area-Dpf0WEDP.js → scroll-area-D71z0--k.js} +1 -1
- package/dist/client/assets/{search-input-BcoDzgCL.js → search-input-C1sIJN1c.js} +1 -1
- package/dist/client/assets/{select-CsQfJ0qv.js → select-mWz1b_ZH.js} +1 -1
- package/dist/client/assets/{select-model-Vwe69qWq.js → select-model-tmulvVLX.js} +1 -1
- package/dist/client/assets/{settings-layout-Cw1Oq9lP.js → settings-layout-BqXIUoEI.js} +1 -1
- package/dist/client/assets/{settings-section-Bcn_yZSc.js → settings-section-OvOVUTcw.js} +1 -1
- package/dist/client/assets/{shell-layout-BQPFdNnv.js → shell-layout-5NI7-V2p.js} +1 -1
- package/dist/client/assets/{skeleton-DFE9g6JF.js → skeleton-Bq5_S0j2.js} +1 -1
- package/dist/client/assets/{sso-DFJ1V_Eq.js → sso-CbTsdhS9.js} +1 -1
- package/dist/client/assets/{store-BupAo568.js → store-Dfk_RNXS.js} +1 -1
- package/dist/client/assets/store-registry-Cc1z30ih.js +2 -0
- package/dist/client/assets/{switch-B9pehtZv.js → switch-KcpCgqTm.js} +1 -1
- package/dist/client/assets/{table-CvhbCrhO.js → table-Dcu4orQb.js} +1 -1
- package/dist/client/assets/{tabs-Dxl_bMcE.js → tabs-yr1sdiKv.js} +1 -1
- package/dist/client/assets/{task-status-BWs0NSVc.js → task-status-feSWSO3m.js} +1 -1
- package/dist/client/assets/{textarea-DH2INXqG.js → textarea-B5KVzuoV.js} +1 -1
- package/dist/client/assets/{toggle-group-BKADQha7.js → toggle-group-DhgFoVFU.js} +1 -1
- package/dist/client/assets/{tools-list-CVKmigbN.js → tools-list-B0Yp2GUj.js} +1 -1
- package/dist/client/assets/{tooltip-CzkIRbGJ.js → tooltip-BPT840gf.js} +1 -1
- package/dist/client/assets/{types-CiOXD-c9.js → types-9jOTGnHq.js} +1 -1
- package/dist/client/assets/{use-ai-providers-BSpy6MGb.js → use-ai-providers-D69mlQI8.js} +1 -1
- package/dist/client/assets/{use-collections-BgNhuD43.js → use-collections-DwvEVl8v.js} +1 -1
- package/dist/client/assets/{use-connection-BypaB8s_.js → use-connection-JJHjF6rv.js} +1 -1
- package/dist/client/assets/{use-copy-DUQETT2i.js → use-copy-C9_Hg3HJ.js} +1 -1
- package/dist/client/assets/{use-create-virtual-mcp-Cr6RxP_0.js → use-create-virtual-mcp-D-lXC80m.js} +1 -1
- package/dist/client/assets/{use-debounced-autosave-DO41C7Df.js → use-debounced-autosave-DFbpcKm7.js} +1 -1
- package/dist/client/assets/{use-decopilot-events-Bd5bEjkf.js → use-decopilot-events-BcK-yZDw.js} +1 -1
- package/dist/client/assets/{use-delete-connection-v1LXlIsA.js → use-delete-connection-CPz0jmtA.js} +1 -1
- package/dist/client/assets/{use-infinite-scroll-QOTO_hJO.js → use-infinite-scroll-B1xILXLP.js} +1 -1
- package/dist/client/assets/{use-list-state-C_A7sIoE.js → use-list-state-BZRsAUdo.js} +1 -1
- package/dist/client/assets/{use-mcp-tools-Dneo9PV9.js → use-mcp-tools-D73stCOo.js} +1 -1
- package/dist/client/assets/{use-members-ClknS2e8.js → use-members-DsN3ITf2.js} +1 -1
- package/dist/client/assets/{use-navigate-to-agent-jsYNoTy7.js → use-navigate-to-agent-CJDDIver.js} +1 -1
- package/dist/client/assets/{use-org-auth-client-piAjQuqe.js → use-org-auth-client-Bq9q7Hza.js} +1 -1
- package/dist/client/assets/{use-org-sso-BbOiG5xt.js → use-org-sso-D22xZlY0.js} +1 -1
- package/dist/client/assets/{use-organization-roles-DRnvDp6V.js → use-organization-roles-Q3jXj8C7.js} +1 -1
- package/dist/client/assets/{use-organization-settings-Cl63rukI.js → use-organization-settings-DC8b5MPT.js} +1 -1
- package/dist/client/assets/{use-registry-connections-nKQr071c.js → use-registry-connections-XqvUTmE5.js} +1 -1
- package/dist/client/assets/{use-status-sounds-DNBT8d2Q.js → use-status-sounds-CCFuBFY0.js} +1 -1
- package/dist/client/assets/{use-tasks-D6w8iRzc.js → use-tasks-Btt8g-fe.js} +1 -1
- package/dist/client/assets/{use-view-mode-EFwbm8pp.js → use-view-mode-BvotgnsQ.js} +1 -1
- package/dist/client/assets/{use-virtual-mcp-BW1ujP1y.js → use-virtual-mcp-BgZ2h4E7.js} +1 -1
- package/dist/client/assets/useInfiniteQuery-DxaE8j48.js +1 -0
- package/dist/client/assets/useSuspenseInfiniteQuery-CgPS4Lvz.js +1 -0
- package/dist/client/assets/{user-B9J8wn-0.js → user-C-74yDDj.js} +1 -1
- package/dist/client/assets/{view-mode-toggle-P1fMVeBh.js → view-mode-toggle-BX0KOixc.js} +1 -1
- package/dist/client/assets/{workflow-Bk-2rBg-.js → workflow-D8djL2VH.js} +1 -1
- package/dist/client/assets/workflow-detail-eNmJkRLG.js +1 -0
- package/dist/client/index.html +1 -1
- package/dist/server/cli.js +2 -2
- package/dist/server/node_modules/get-east-asian-width/index.d.ts +60 -0
- package/dist/server/node_modules/get-east-asian-width/index.js +30 -0
- package/dist/server/node_modules/get-east-asian-width/lookup-data.js +18 -0
- package/dist/server/node_modules/get-east-asian-width/lookup.js +135 -0
- package/dist/server/node_modules/get-east-asian-width/package.json +71 -0
- package/dist/server/node_modules/get-east-asian-width/readme.md +65 -0
- package/dist/server/node_modules/get-east-asian-width/utilities.js +24 -0
- package/dist/server/node_modules/ink/build/ansi-tokenizer.d.ts +38 -0
- package/dist/server/node_modules/ink/build/ansi-tokenizer.js +316 -0
- package/dist/server/node_modules/ink/build/ansi-tokenizer.js.map +1 -0
- package/dist/server/node_modules/ink/build/apply-styles.js +175 -0
- package/dist/server/node_modules/ink/build/build-layout.js +77 -0
- package/dist/server/node_modules/ink/build/calculate-wrapped-text.js +53 -0
- package/dist/server/node_modules/ink/build/colorize.d.ts +3 -0
- package/dist/server/node_modules/ink/build/colorize.js +48 -0
- package/dist/server/node_modules/ink/build/colorize.js.map +1 -0
- package/dist/server/node_modules/ink/build/components/AccessibilityContext.d.ts +3 -0
- package/dist/server/node_modules/ink/build/components/AccessibilityContext.js +5 -0
- package/dist/server/node_modules/ink/build/components/AccessibilityContext.js.map +1 -0
- package/dist/server/node_modules/ink/build/components/App.d.ts +18 -0
- package/dist/server/node_modules/ink/build/components/App.js +351 -0
- package/dist/server/node_modules/ink/build/components/App.js.map +1 -0
- package/dist/server/node_modules/ink/build/components/AppContext.d.ts +15 -0
- package/dist/server/node_modules/ink/build/components/AppContext.js +11 -0
- package/dist/server/node_modules/ink/build/components/AppContext.js.map +1 -0
- package/dist/server/node_modules/ink/build/components/BackgroundContext.d.ts +4 -0
- package/dist/server/node_modules/ink/build/components/BackgroundContext.js +3 -0
- package/dist/server/node_modules/ink/build/components/BackgroundContext.js.map +1 -0
- package/dist/server/node_modules/ink/build/components/Box.d.ts +117 -0
- package/dist/server/node_modules/ink/build/components/Box.js +34 -0
- package/dist/server/node_modules/ink/build/components/Box.js.map +1 -0
- package/dist/server/node_modules/ink/build/components/Color.js +62 -0
- package/dist/server/node_modules/ink/build/components/Cursor.d.ts +83 -0
- package/dist/server/node_modules/ink/build/components/Cursor.js +53 -0
- package/dist/server/node_modules/ink/build/components/Cursor.js.map +1 -0
- package/dist/server/node_modules/ink/build/components/CursorContext.d.ts +11 -0
- package/dist/server/node_modules/ink/build/components/CursorContext.js +8 -0
- package/dist/server/node_modules/ink/build/components/CursorContext.js.map +1 -0
- package/dist/server/node_modules/ink/build/components/ErrorBoundary.d.ts +18 -0
- package/dist/server/node_modules/ink/build/components/ErrorBoundary.js +23 -0
- package/dist/server/node_modules/ink/build/components/ErrorBoundary.js.map +1 -0
- package/dist/server/node_modules/ink/build/components/ErrorOverview.d.ts +6 -0
- package/dist/server/node_modules/ink/build/components/ErrorOverview.js +84 -0
- package/dist/server/node_modules/ink/build/components/ErrorOverview.js.map +1 -0
- package/dist/server/node_modules/ink/build/components/FocusContext.d.ts +16 -0
- package/dist/server/node_modules/ink/build/components/FocusContext.js +17 -0
- package/dist/server/node_modules/ink/build/components/FocusContext.js.map +1 -0
- package/dist/server/node_modules/ink/build/components/Newline.d.ts +13 -0
- package/dist/server/node_modules/ink/build/components/Newline.js +8 -0
- package/dist/server/node_modules/ink/build/components/Newline.js.map +1 -0
- package/dist/server/node_modules/ink/build/components/Spacer.d.ts +7 -0
- package/dist/server/node_modules/ink/build/components/Spacer.js +11 -0
- package/dist/server/node_modules/ink/build/components/Spacer.js.map +1 -0
- package/dist/server/node_modules/ink/build/components/Static.d.ts +24 -0
- package/dist/server/node_modules/ink/build/components/Static.js +28 -0
- package/dist/server/node_modules/ink/build/components/Static.js.map +1 -0
- package/dist/server/node_modules/ink/build/components/StderrContext.d.ts +15 -0
- package/dist/server/node_modules/ink/build/components/StderrContext.js +13 -0
- package/dist/server/node_modules/ink/build/components/StderrContext.js.map +1 -0
- package/dist/server/node_modules/ink/build/components/StdinContext.d.ts +22 -0
- package/dist/server/node_modules/ink/build/components/StdinContext.js +19 -0
- package/dist/server/node_modules/ink/build/components/StdinContext.js.map +1 -0
- package/dist/server/node_modules/ink/build/components/StdoutContext.d.ts +15 -0
- package/dist/server/node_modules/ink/build/components/StdoutContext.js +13 -0
- package/dist/server/node_modules/ink/build/components/StdoutContext.js.map +1 -0
- package/dist/server/node_modules/ink/build/components/Text.d.ts +55 -0
- package/dist/server/node_modules/ink/build/components/Text.js +50 -0
- package/dist/server/node_modules/ink/build/components/Text.js.map +1 -0
- package/dist/server/node_modules/ink/build/components/Transform.d.ts +16 -0
- package/dist/server/node_modules/ink/build/components/Transform.js +15 -0
- package/dist/server/node_modules/ink/build/components/Transform.js.map +1 -0
- package/dist/server/node_modules/ink/build/cursor-helpers.d.ts +38 -0
- package/dist/server/node_modules/ink/build/cursor-helpers.js +56 -0
- package/dist/server/node_modules/ink/build/cursor-helpers.js.map +1 -0
- package/dist/server/node_modules/ink/build/devtools-window-polyfill.d.ts +1 -0
- package/dist/server/node_modules/ink/build/devtools-window-polyfill.js +65 -0
- package/dist/server/node_modules/ink/build/devtools-window-polyfill.js.map +1 -0
- package/dist/server/node_modules/ink/build/devtools.d.ts +1 -0
- package/dist/server/node_modules/ink/build/devtools.js +11 -0
- package/dist/server/node_modules/ink/build/devtools.js.map +1 -0
- package/dist/server/node_modules/ink/build/dom.d.ts +56 -0
- package/dist/server/node_modules/ink/build/dom.js +124 -0
- package/dist/server/node_modules/ink/build/dom.js.map +1 -0
- package/dist/server/node_modules/ink/build/experimental/apply-style.js +140 -0
- package/dist/server/node_modules/ink/build/experimental/dom.js +123 -0
- package/dist/server/node_modules/ink/build/experimental/output.js +91 -0
- package/dist/server/node_modules/ink/build/experimental/reconciler.js +141 -0
- package/dist/server/node_modules/ink/build/experimental/renderer.js +81 -0
- package/dist/server/node_modules/ink/build/get-max-width.d.ts +3 -0
- package/dist/server/node_modules/ink/build/get-max-width.js +10 -0
- package/dist/server/node_modules/ink/build/get-max-width.js.map +1 -0
- package/dist/server/node_modules/ink/build/hooks/use-app.d.ts +5 -0
- package/dist/server/node_modules/ink/build/hooks/use-app.js +8 -0
- package/dist/server/node_modules/ink/build/hooks/use-app.js.map +1 -0
- package/dist/server/node_modules/ink/build/hooks/use-cursor.d.ts +12 -0
- package/dist/server/node_modules/ink/build/hooks/use-cursor.js +29 -0
- package/dist/server/node_modules/ink/build/hooks/use-cursor.js.map +1 -0
- package/dist/server/node_modules/ink/build/hooks/use-focus-manager.d.ts +28 -0
- package/dist/server/node_modules/ink/build/hooks/use-focus-manager.js +17 -0
- package/dist/server/node_modules/ink/build/hooks/use-focus-manager.js.map +1 -0
- package/dist/server/node_modules/ink/build/hooks/use-focus.d.ts +29 -0
- package/dist/server/node_modules/ink/build/hooks/use-focus.js +42 -0
- package/dist/server/node_modules/ink/build/hooks/use-focus.js.map +1 -0
- package/dist/server/node_modules/ink/build/hooks/use-input.d.ts +131 -0
- package/dist/server/node_modules/ink/build/hooks/use-input.js +124 -0
- package/dist/server/node_modules/ink/build/hooks/use-input.js.map +1 -0
- package/dist/server/node_modules/ink/build/hooks/use-is-screen-reader-enabled.d.ts +5 -0
- package/dist/server/node_modules/ink/build/hooks/use-is-screen-reader-enabled.js +11 -0
- package/dist/server/node_modules/ink/build/hooks/use-is-screen-reader-enabled.js.map +1 -0
- package/dist/server/node_modules/ink/build/hooks/use-stderr.d.ts +5 -0
- package/dist/server/node_modules/ink/build/hooks/use-stderr.js +8 -0
- package/dist/server/node_modules/ink/build/hooks/use-stderr.js.map +1 -0
- package/dist/server/node_modules/ink/build/hooks/use-stdin.d.ts +5 -0
- package/dist/server/node_modules/ink/build/hooks/use-stdin.js +8 -0
- package/dist/server/node_modules/ink/build/hooks/use-stdin.js.map +1 -0
- package/dist/server/node_modules/ink/build/hooks/use-stdout.d.ts +5 -0
- package/dist/server/node_modules/ink/build/hooks/use-stdout.js +8 -0
- package/dist/server/node_modules/ink/build/hooks/use-stdout.js.map +1 -0
- package/dist/server/node_modules/ink/build/hooks/useInput.js +38 -0
- package/dist/server/node_modules/ink/build/index.d.ts +34 -0
- package/dist/server/node_modules/ink/build/index.js +20 -0
- package/dist/server/node_modules/ink/build/index.js.map +1 -0
- package/dist/server/node_modules/ink/build/ink.d.ts +90 -0
- package/dist/server/node_modules/ink/build/ink.js +637 -0
- package/dist/server/node_modules/ink/build/ink.js.map +1 -0
- package/dist/server/node_modules/ink/build/input-parser.d.ts +7 -0
- package/dist/server/node_modules/ink/build/input-parser.js +154 -0
- package/dist/server/node_modules/ink/build/input-parser.js.map +1 -0
- package/dist/server/node_modules/ink/build/instance.js +205 -0
- package/dist/server/node_modules/ink/build/instances.d.ts +3 -0
- package/dist/server/node_modules/ink/build/instances.js +8 -0
- package/dist/server/node_modules/ink/build/instances.js.map +1 -0
- package/dist/server/node_modules/ink/build/kitty-keyboard.d.ts +23 -0
- package/dist/server/node_modules/ink/build/kitty-keyboard.js +32 -0
- package/dist/server/node_modules/ink/build/kitty-keyboard.js.map +1 -0
- package/dist/server/node_modules/ink/build/layout.d.ts +7 -0
- package/dist/server/node_modules/ink/build/layout.js +33 -0
- package/dist/server/node_modules/ink/build/layout.js.map +1 -0
- package/dist/server/node_modules/ink/build/log-update.d.ts +19 -0
- package/dist/server/node_modules/ink/build/log-update.js +242 -0
- package/dist/server/node_modules/ink/build/log-update.js.map +1 -0
- package/dist/server/node_modules/ink/build/measure-element.d.ts +16 -0
- package/dist/server/node_modules/ink/build/measure-element.js +9 -0
- package/dist/server/node_modules/ink/build/measure-element.js.map +1 -0
- package/dist/server/node_modules/ink/build/measure-text.d.ts +6 -0
- package/dist/server/node_modules/ink/build/measure-text.js +21 -0
- package/dist/server/node_modules/ink/build/measure-text.js.map +1 -0
- package/dist/server/node_modules/ink/build/options.d.ts +52 -0
- package/dist/server/node_modules/ink/build/options.js +2 -0
- package/dist/server/node_modules/ink/build/options.js.map +1 -0
- package/dist/server/node_modules/ink/build/output.d.ts +35 -0
- package/dist/server/node_modules/ink/build/output.js +183 -0
- package/dist/server/node_modules/ink/build/output.js.map +1 -0
- package/dist/server/node_modules/ink/build/parse-keypress.d.ts +22 -0
- package/dist/server/node_modules/ink/build/parse-keypress.js +493 -0
- package/dist/server/node_modules/ink/build/parse-keypress.js.map +1 -0
- package/dist/server/node_modules/ink/build/reconciler.d.ts +4 -0
- package/dist/server/node_modules/ink/build/reconciler.js +274 -0
- package/dist/server/node_modules/ink/build/reconciler.js.map +1 -0
- package/dist/server/node_modules/ink/build/render-background.d.ts +4 -0
- package/dist/server/node_modules/ink/build/render-background.js +25 -0
- package/dist/server/node_modules/ink/build/render-background.js.map +1 -0
- package/dist/server/node_modules/ink/build/render-border.d.ts +4 -0
- package/dist/server/node_modules/ink/build/render-border.js +73 -0
- package/dist/server/node_modules/ink/build/render-border.js.map +1 -0
- package/dist/server/node_modules/ink/build/render-node-to-output.d.ts +14 -0
- package/dist/server/node_modules/ink/build/render-node-to-output.js +147 -0
- package/dist/server/node_modules/ink/build/render-node-to-output.js.map +1 -0
- package/dist/server/node_modules/ink/build/render-to-string.d.ts +38 -0
- package/dist/server/node_modules/ink/build/render-to-string.js +115 -0
- package/dist/server/node_modules/ink/build/render-to-string.js.map +1 -0
- package/dist/server/node_modules/ink/build/render.d.ts +121 -0
- package/dist/server/node_modules/ink/build/render.js +55 -0
- package/dist/server/node_modules/ink/build/render.js.map +1 -0
- package/dist/server/node_modules/ink/build/renderer.d.ts +8 -0
- package/dist/server/node_modules/ink/build/renderer.js +55 -0
- package/dist/server/node_modules/ink/build/renderer.js.map +1 -0
- package/dist/server/node_modules/ink/build/sanitize-ansi.d.ts +2 -0
- package/dist/server/node_modules/ink/build/sanitize-ansi.js +27 -0
- package/dist/server/node_modules/ink/build/sanitize-ansi.js.map +1 -0
- package/dist/server/node_modules/ink/build/screen-reader-update.d.ts +13 -0
- package/dist/server/node_modules/ink/build/screen-reader-update.js +38 -0
- package/dist/server/node_modules/ink/build/screen-reader-update.js.map +1 -0
- package/dist/server/node_modules/ink/build/squash-text-nodes.d.ts +3 -0
- package/dist/server/node_modules/ink/build/squash-text-nodes.js +36 -0
- package/dist/server/node_modules/ink/build/squash-text-nodes.js.map +1 -0
- package/dist/server/node_modules/ink/build/styles.d.ts +240 -0
- package/dist/server/node_modules/ink/build/styles.js +232 -0
- package/dist/server/node_modules/ink/build/styles.js.map +1 -0
- package/dist/server/node_modules/ink/build/utils.d.ts +2 -0
- package/dist/server/node_modules/ink/build/utils.js +4 -0
- package/dist/server/node_modules/ink/build/utils.js.map +1 -0
- package/dist/server/node_modules/ink/build/wrap-text.d.ts +3 -0
- package/dist/server/node_modules/ink/build/wrap-text.js +31 -0
- package/dist/server/node_modules/ink/build/wrap-text.js.map +1 -0
- package/dist/server/node_modules/ink/build/write-synchronized.d.ts +4 -0
- package/dist/server/node_modules/ink/build/write-synchronized.js +7 -0
- package/dist/server/node_modules/ink/build/write-synchronized.js.map +1 -0
- package/dist/server/node_modules/{figures → ink}/license +1 -0
- package/dist/server/node_modules/ink/package.json +201 -0
- package/dist/server/node_modules/ink/readme.md +2636 -0
- package/dist/server/node_modules/slice-ansi/index.d.ts +19 -0
- package/dist/server/node_modules/slice-ansi/index.js +260 -0
- package/dist/server/node_modules/{widest-line → slice-ansi}/license +1 -0
- package/dist/server/node_modules/slice-ansi/package.json +59 -0
- package/dist/server/node_modules/slice-ansi/readme.md +54 -0
- package/dist/server/node_modules/slice-ansi/tokenize-ansi.js +752 -0
- package/dist/server/server.js +1 -1
- package/package.json +1 -1
- package/dist/client/assets/ai-providers-C-HLT43p.js +0 -1
- package/dist/client/assets/index-BlefTMU9.js +0 -1
- package/dist/client/assets/registry-DSbGbl6G.js +0 -2
- package/dist/client/assets/store-registry-CHPlZpA7.js +0 -2
- package/dist/client/assets/useInfiniteQuery-B0aJ536b.js +0 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-DMQVbZ7w.js +0 -1
- package/dist/client/assets/workflow-detail-cax1DGc8.js +0 -1
- package/dist/server/node_modules/cli-truncate/index.d.ts +0 -118
- package/dist/server/node_modules/cli-truncate/index.js +0 -168
- package/dist/server/node_modules/cli-truncate/package.json +0 -52
- package/dist/server/node_modules/cli-truncate/readme.md +0 -154
- package/dist/server/node_modules/deepmerge/.editorconfig +0 -7
- package/dist/server/node_modules/deepmerge/.eslintcache +0 -1
- package/dist/server/node_modules/deepmerge/changelog.md +0 -167
- package/dist/server/node_modules/deepmerge/dist/cjs.js +0 -133
- package/dist/server/node_modules/deepmerge/dist/umd.js +0 -139
- package/dist/server/node_modules/deepmerge/index.d.ts +0 -20
- package/dist/server/node_modules/deepmerge/index.js +0 -106
- package/dist/server/node_modules/deepmerge/license.txt +0 -21
- package/dist/server/node_modules/deepmerge/package.json +0 -42
- package/dist/server/node_modules/deepmerge/readme.md +0 -264
- package/dist/server/node_modules/deepmerge/rollup.config.js +0 -22
- package/dist/server/node_modules/figures/index.d.ts +0 -279
- package/dist/server/node_modules/figures/index.js +0 -292
- package/dist/server/node_modules/figures/package.json +0 -49
- package/dist/server/node_modules/figures/readme.md +0 -337
- package/dist/server/node_modules/mimic-fn/index.d.ts +0 -54
- package/dist/server/node_modules/mimic-fn/index.js +0 -13
- package/dist/server/node_modules/mimic-fn/license +0 -9
- package/dist/server/node_modules/mimic-fn/package.json +0 -42
- package/dist/server/node_modules/mimic-fn/readme.md +0 -69
- 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-array/index.d.ts +0 -4
- package/dist/server/node_modules/postgres-array/index.js +0 -97
- package/dist/server/node_modules/postgres-array/license +0 -21
- package/dist/server/node_modules/postgres-array/package.json +0 -35
- package/dist/server/node_modules/postgres-array/readme.md +0 -43
- 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-date/index.js +0 -116
- package/dist/server/node_modules/postgres-date/license +0 -21
- package/dist/server/node_modules/postgres-date/package.json +0 -33
- package/dist/server/node_modules/postgres-date/readme.md +0 -49
- 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/split2/LICENSE +0 -13
- package/dist/server/node_modules/split2/README.md +0 -85
- package/dist/server/node_modules/split2/bench.js +0 -27
- package/dist/server/node_modules/split2/index.js +0 -141
- package/dist/server/node_modules/split2/package.json +0 -39
- package/dist/server/node_modules/split2/test.js +0 -409
- package/dist/server/node_modules/widest-line/index.d.ts +0 -12
- package/dist/server/node_modules/widest-line/index.js +0 -11
- package/dist/server/node_modules/widest-line/package.json +0 -60
- package/dist/server/node_modules/widest-line/readme.md +0 -26
- 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/{cli-truncate → get-east-asian-width}/license +0 -0
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(() => (JW0(),Kg4));await K(W.databaseUrl);let{createDatabase:H}=await Promise.resolve().then(() => (ZU(),$g4)),{migrateToLatest:U}=await Promise.resolve().then(() => (Os4(),zs4)),B=H(W.databaseUrl);await U({keepOpen:!0,database:B,skipBetterAuth:!0})}if(G.settings.clickhouseUrl){let{ensureClickHouseRollup:K}=await Promise.resolve().then(() => D16);await K(G.settings.clickhouseUrl)}let $={...G.settings,databaseUrl:W.databaseUrl,natsUrls:W.natsUrls};return ut1($),{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 _N0=w(()=>{gt1();l9()});var tA1={};T0(tA1,{updateService:()=>Qa,toggleViewMode:()=>bN0,toggleVibeState:()=>xN0,toggleLogFlow:()=>yN0,subscribeCliState:()=>vX1,setVibe:()=>Fa5,setTuiConsoleIntercepted:()=>pA1,setServerUrl:()=>fX1,setMigrationsDone:()=>_X1,setEnv:()=>bX1,setDevMode:()=>Ka5,setDataDir:()=>Ha5,isTuiConsoleIntercepted:()=>nA1,getCliState:()=>CX1,addLogEntry:()=>Wz});function TU(){for(let X of fN0)X()}function CX1(){return e9}function vX1(X){return fN0.add(X),()=>fN0.delete(X)}function Qa(X){e9={...e9,services:e9.services.map((Y)=>Y.name===X.name?X:Y)},TU()}function _X1(){e9={...e9,migrationsStatus:"done"},TU()}function fX1(X){e9={...e9,serverUrl:X},TU()}function bX1(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 Ka5(){e9={...e9,services:[...e9.services,{name:"Vite",status:"pending",port:0}]},TU()}function bN0(){e9={...e9,viewMode:e9.viewMode==="requests"?"config":"requests"},TU()}function yN0(){e9={...e9,logFlow:!e9.logFlow},TU()}function Ha5(X){e9={...e9,dataDir:X},TU()}function Fa5(X){e9={...e9,vibe:X},TU()}function xN0(){e9={...e9,vibe:!e9.vibe},TU()}function pA1(X){w16=X}function nA1(){return w16}var e9,fN0,w16=!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},fN0=new Set});import{createServer as L16}from"net";function Ua5(X){return new Promise((Y)=>{let G=L16();G.once("error",()=>Y(!1)),G.listen(X,"0.0.0.0",()=>{G.close(()=>Y(!0))})})}async function aA1(X){if(await Ua5(X))return X;let Y=await new Promise((G,Q)=>{let J=L16();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 hN0=()=>{};var gN0={};T0(gN0,{startDevServer:()=>Na5});import{join as Ba5}from"path";function E16(X){return X.replace(/\x1b\[[0-9;]*m/g,"")}function P16(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 $=E16(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=E16(Q).replace(/^\[\d+\]\s*/,"").trim();if(W)Wz({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:W})}})()}async function Na5(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)Qa({name:z.name,status:"ready",port:z.port});bX1(W),_X1();let K=Ba5(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)P16(U.stdout),P16(U.stderr);let B=G||`http://localhost:${W.port}`;fX1(B),Qa({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 uN0=w(()=>{_N0();$z();hN0()});import{Box as lN0,Text as mN0}from"ink";import{jsx as A16,jsxs as rA1}from"react/jsx-runtime";function q16(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 Da5(X,Y){if(za5.has(X))return Y?{text:"\u25CF\u25CF\u25CF\u25CF\u25CF\u25CF",dimColor:!0}:{text:"not set",dimColor:!0};if(Oa5.has(X)){if(Array.isArray(Y)){if(Y.length===0)return{text:"not set",dimColor:!0};return{text:Y.map((W)=>q16(W)).join(", "),color:"cyan"}}let Q=q16(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 wa5(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 T16({env:X}){let Y=wa5(X);return A16(lN0,{flexDirection:"column",children:Y.map((G)=>rA1(lN0,{flexDirection:"column",marginTop:1,children:[rA1(mN0,{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=Da5(Q,J);return rA1(lN0,{children:[rA1(mN0,{dimColor:!0,children:[" ",Q.padEnd(36)]}),A16(mN0,{color:W.color,dimColor:W.dimColor,children:W.text})]},Q)})]},G.title))})}var za5,Oa5;var I16=w(()=>{za5=new Set(["BETTER_AUTH_SECRET","ENCRYPTION_KEY","MESH_JWT_SECRET","STUDIO_PROVISION_SECRET_KEY"]),Oa5=new Set(["DATABASE_URL","CLICKHOUSE_URL","NATS_URL"])});var dN0;var V16=w(()=>{dN0={name:"decocms",version:"2.309.0",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/mesh"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:'bun run migrate && concurrently "bun run dev:client" "bun run dev:server"',"dev:servers":'concurrently "bun run dev:client" "bun run dev:server"',"dev:client":"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 Ea5}from"@inkjs/ui";import{useSyncExternalStore as j16}from"react";import{jsx as TY,jsxs as sQ}from"react/jsx-runtime";function Ia5(X,Y){if(!X||!Ta5.has(X))return X;let G=cN0[Y]??cN0[cN0.length-1];return X==="#875f00"?G[0]:G[1]}function M16({status:X}){if(X==="pending")return TY(Ea5,{label:""});return TY(RX,{color:"green",children:"\u2713"})}function R16({services:X,migrationsStatus:Y,home:G,serverUrl:Q,vibe:J}){let W=j16(pm0,im0),Z=j16(sm0,om0);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,Aa5-U);return sQ(IU,{flexDirection:"row",children:[$.map((N,z)=>{let O=Ia5(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",dN0.version]})]}):sQ(IU,{flexDirection:"column",marginTop:1,children:[Pa5.map(($,K)=>TY(RX,{color:qa5[K],children:$},K)),sQ(RX,{dimColor:!0,children:[" v",dN0.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(M16,{status:$.status})]},$.name)),sQ(IU,{gap:1,children:[TY(RX,{children:"Migrations"}),TY(M16,{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 Pa5,qa5,cN0,Aa5=30,Ta5;var S16=w(()=>{V16();Rt1();ft1();Pa5=[" \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 "],qa5=["#00ff64","#00ee5e","#00dc56","#00c84e","#00b444","#00a03c","#008832","#006e28"],cN0=[["#00ff64","#00cc50"],["#00f060","#00c04c"],["#00e05c","#00b448"],["#00d058","#00a844"],["#00c054","#009c40"],["#00b050","#00903c"],["#00a04c","#008438"],["#009048","#007834"],["#008044","#006c30"],["#007040","#00602c"],["#00603c","#005428"]],Ta5=new Set(["#875f00","#5f3800"])});import{useSyncExternalStore as Va5}from"react";function ja5(){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 Ma5(X){return process.stdout.on("resize",X),()=>{process.stdout.off("resize",X)}}function k16(){return Va5(Ma5,ja5)}var oA1;var C16=w(()=>{oA1={rows:process.stdout.rows||24,columns:process.stdout.columns||80}});import{Box as Ra5,Text as yX1}from"ink";import{useSyncExternalStore as Sa5}from"react";import{jsx as iN0,jsxs as pN0}from"react/jsx-runtime";function ka5(X){if(X>=500)return"red";if(X>=400)return"yellow";if(X>=300)return"cyan";return"green"}function v16({logs:X,headerHeight:Y}){let{rows:G}=k16(),{logFlow:Q}=Sa5(vX1,CX1),J=Math.max(1,G-Y-1),W=Q?X:X.slice(-J);return iN0(Ra5,{flexDirection:"column",children:W.map((Z,$)=>{if(Z.rawLine)return iN0(yX1,{dimColor:!0,children:Z.rawLine},$);let K=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return pN0(yX1,{children:[pN0(yX1,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),iN0(yX1,{color:ka5(Z.status),children:Z.status}),pN0(yX1,{dimColor:!0,children:[" ",K.padStart(8)]})]},$)})})}var _16=w(()=>{$z();C16()});var nN0={};T0(nN0,{App:()=>xa5});import{Box as Ca5,Text as va5,useInput as _a5}from"ink";import{useSyncExternalStore as fa5}from"react";import{jsx as sA1,jsxs as ha5}from"react/jsx-runtime";function xa5({home:X}){let Y=fa5(vX1,CX1);return _a5((G)=>{if(G==="k"||G==="K")bN0();if(G==="l"||G==="L")yN0();if((G==="v"||G==="V")&&Y.dataDir)ht1(Y.dataDir),xN0();if((G==="n"||G==="N")&&Y.vibe)xt1()}),ha5(Ca5,{flexDirection:"column",children:[sA1(R16,{services:Y.services,migrationsStatus:Y.migrationsStatus,home:X,serverUrl:Y.serverUrl,vibe:Y.vibe}),Y.viewMode==="config"?Y.env?sA1(T16,{env:Y.env}):sA1(va5,{dimColor:!0,children:"Loading configuration..."}):sA1(v16,{logs:Y.logs,headerHeight:Y.vibe?ya5:ba5})]})}var ba5=15,ya5=19;var tN0=w(()=>{I16();S16();_16();$z();yd()});function f16(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((ca5)=>{ca5.HttpAuthLocation=void 0;(function(X){X.HEADER="header",X.QUERY="query"})(ca5.HttpAuthLocation||(ca5.HttpAuthLocation={}));ca5.HttpApiKeyAuthLocation=void 0;(function(X){X.HEADER="header",X.QUERY="query"})(ca5.HttpApiKeyAuthLocation||(ca5.HttpApiKeyAuthLocation={}));ca5.EndpointURLScheme=void 0;(function(X){X.HTTP="http",X.HTTPS="https"})(ca5.EndpointURLScheme||(ca5.EndpointURLScheme={}));ca5.AlgorithmId=void 0;(function(X){X.MD5="md5",X.CRC32="crc32",X.CRC32C="crc32c",X.SHA1="sha1",X.SHA256="sha256"})(ca5.AlgorithmId||(ca5.AlgorithmId={}));var ga5=(X)=>{let Y=[];if(X.sha256!==void 0)Y.push({algorithmId:()=>ca5.AlgorithmId.SHA256,checksumConstructor:()=>X.sha256});if(X.md5!=null)Y.push({algorithmId:()=>ca5.AlgorithmId.MD5,checksumConstructor:()=>X.md5});return{addChecksumAlgorithm(G){Y.push(G)},checksumAlgorithms(){return Y}}},ua5=(X)=>{let Y={};return X.checksumAlgorithms().forEach((G)=>{Y[G.algorithmId()]=G.checksumConstructor()}),Y},la5=(X)=>{return ga5(X)},ma5=(X)=>{return ua5(X)};ca5.FieldPosition=void 0;(function(X){X[X.HEADER=0]="HEADER",X[X.TRAILER=1]="TRAILER"})(ca5.FieldPosition||(ca5.FieldPosition={}));var da5="__smithy_context";ca5.IniSectionType=void 0;(function(X){X.PROFILE="profile",X.SSO_SESSION="sso-session",X.SERVICES="services"})(ca5.IniSectionType||(ca5.IniSectionType={}));ca5.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"})(ca5.RequestHandlerProtocol||(ca5.RequestHandlerProtocol={}));ca5.SMITHY_CONTEXT_KEY=da5;ca5.getDefaultClientConfiguration=la5;ca5.resolveDefaultRuntimeConfig=ma5});var u7=k((ea5)=>{var ta5=yj(),aa5=(X)=>{return{setHttpHandler(Y){X.httpHandler=Y},httpHandler(){return X.httpHandler},updateHttpClientConfig(Y,G){X.httpHandler?.updateHttpClientConfig(Y,G)},httpHandlerConfigs(){return X.httpHandler.httpHandlerConfigs()}}},ra5=(X)=>{return{httpHandler:X.httpHandler()}};class b16{name;kind;values;constructor({name:X,kind:Y=ta5.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 y16{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=oa5(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 oa5(X){return Object.keys(X).reduce((Y,G)=>{let Q=X[G];return{...Y,[G]:Array.isArray(Q)?[...Q]:Q}},{})}class x16{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 sa5(X){return/^[a-z0-9][a-z0-9\.\-]*[a-z0-9]$/.test(X)}ea5.Field=b16;ea5.Fields=y16;ea5.HttpRequest=eA1;ea5.HttpResponse=x16;ea5.getHttpHandlerExtensionConfiguration=aa5;ea5.isValidHostname=sa5;ea5.resolveHttpHandlerRuntimeConfig=ra5});function $r5(X){return(Y)=>async(G)=>{let{request:Q}=G;if(X.expectContinueHeader!==!1&&h16.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 h16,Kr5,g16=(X)=>({applyToStack:(Y)=>{Y.add($r5(X),Kr5)}});var u16=w(()=>{h16=X1(u7(),1);Kr5={step:"build",tags:["SET_EXPECT_HEADER","EXPECT_HEADER"],name:"addExpectContinueMiddleware",override:!0}});var wH,XT1,xj,YT1,E9,l16,hX1;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"})(l16||(l16={}));hX1=E9.CRC32});var kq,Ja=(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 Yz0=w(()=>{(function(X){X.ENV="env",X.CONFIG="shared config entry"})(kq||(kq={}))});var Hr5="AWS_REQUEST_CHECKSUM_CALCULATION",Fr5="request_checksum_calculation",m16;var d16=w(()=>{LH();Yz0();m16={environmentVariableSelector:(X)=>Ja(X,Hr5,wH,kq.ENV),configFileSelector:(X)=>Ja(X,Fr5,wH,kq.CONFIG),default:XT1}});var Ur5="AWS_RESPONSE_CHECKSUM_VALIDATION",Br5="response_checksum_validation",c16;var i16=w(()=>{LH();Yz0();c16={environmentVariableSelector:(X)=>Ja(X,Ur5,xj,kq.ENV),configFileSelector:(X)=>Ja(X,Br5,xj,kq.CONFIG),default:YT1}});var Qz0=k((Ar5)=>{var Nr5=["AuthFailure","InvalidSignatureException","RequestExpired","RequestInTheFuture","RequestTimeTooSkewed","SignatureDoesNotMatch"],zr5=["BandwidthLimitExceeded","EC2ThrottledException","LimitExceededException","PriorRequestNotComplete","ProvisionedThroughputExceededException","RequestLimitExceeded","RequestThrottled","RequestThrottledException","SlowDown","ThrottledException","Throttling","ThrottlingException","TooManyRequestsException","TransactionInProgressException"],Or5=["TimeoutError","RequestTimeout","RequestTimeoutException"],Dr5=[500,502,503,504],wr5=["ECONNRESET","ECONNREFUSED","EPIPE","ETIMEDOUT"],Lr5=["EHOSTUNREACH","ENETUNREACH","ENOTFOUND"],p16=(X)=>X?.$retryable!==void 0,Er5=(X)=>Nr5.includes(X.name),n16=(X)=>X.$metadata?.clockSkewCorrected,t16=(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)},Pr5=(X)=>X.$metadata?.httpStatusCode===429||zr5.includes(X.name)||X.$retryable?.throttling==!0,Gz0=(X,Y=0)=>p16(X)||n16(X)||X.name==="InvalidSignatureException"&&X.message?.includes("Signature expired")||Or5.includes(X.name)||wr5.includes(X?.code||"")||Lr5.includes(X?.code||"")||Dr5.includes(X.$metadata?.httpStatusCode||0)||t16(X)||a16(X)||X.cause!==void 0&&Y<=10&&Gz0(X.cause,Y+1),qr5=(X)=>{if(X.$metadata?.httpStatusCode!==void 0){let Y=X.$metadata.httpStatusCode;if(500<=Y&&Y<=599&&!Gz0(X))return!0;return!1}return!1};function a16(X){return X.code==="ERR_HTTP2_STREAM_ERROR"&&X.message.includes("NGHTTP2_REFUSED_STREAM")}Ar5.isBrowserNetworkError=t16;Ar5.isClockSkewCorrectedError=n16;Ar5.isClockSkewError=Er5;Ar5.isNodeJsHttp2TransientError=a16;Ar5.isRetryableByTrait=p16;Ar5.isServerError=qr5;Ar5.isThrottlingError=Pr5;Ar5.isTransientError=Gz0});var Dw=k((gr5)=>{var Cr5=Qz0();gr5.RETRY_MODES=void 0;(function(X){X.STANDARD="standard",X.ADAPTIVE="adaptive"})(gr5.RETRY_MODES||(gr5.RETRY_MODES={}));var QT1=3,vr5=gr5.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"||Cr5.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 _r5=100,Wz0=20000,fr5=500,Jz0=500,br5=5,yr5=10,r16=1,xr5="amz-sdk-invocation-id",hr5="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 o16{x=eQ.delay();computeNextBackoffDelay(X){let Y=Math.random(),G=2,Q=Y*Math.min(this.x*2**X,Wz0);return Math.floor(Q)}setDelayBase(X){this.x=X}}class Zz0{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(Wz0,this.delay)}getRetryCost(){return this.cost}isLongPoll(){return this.longPoll}}var GT1={incompatible:1,attempts:2,capacity:3};class gX1{mode=gr5.RETRY_MODES.STANDARD;capacity=Jz0;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 o16}async acquireInitialRetryToken(X){return new Zz0(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 Zz0(K,X.getRetryCount()+1,H,X.isLongPoll?.()??!1)}}throw Error("No retry token available")}recordSuccess(X){this.capacity=Math.min(Jz0,this.capacity+(X.getRetryCost()??r16))}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 s16{mode=gr5.RETRY_MODES.ADAPTIVE;rateLimiter;standardRetryStrategy;constructor(X,Y){let{rateLimiter:G}=Y??{};this.rateLimiter=G??new JT1,this.standardRetryStrategy=Y?new gX1({maxAttempts:typeof X==="number"?X:3,...Y}):new gX1(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 e16 extends gX1{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}}gr5.AdaptiveRetryStrategy=s16;gr5.ConfiguredRetryStrategy=e16;gr5.DEFAULT_MAX_ATTEMPTS=QT1;gr5.DEFAULT_RETRY_DELAY_BASE=_r5;gr5.DEFAULT_RETRY_MODE=vr5;gr5.DefaultRateLimiter=JT1;gr5.INITIAL_RETRY_TOKENS=Jz0;gr5.INVOCATION_ID_HEADER=xr5;gr5.MAXIMUM_RETRY_DELAY=Wz0;gr5.NO_RETRY_INCREMENT=r16;gr5.REQUEST_HEADER=hr5;gr5.RETRY_COST=br5;gr5.Retry=eQ;gr5.StandardRetryStrategy=gX1;gr5.THROTTLING_RETRY_DELAY_BASE=fr5;gr5.TIMEOUT_RETRY_COST=yr5});var WX=k((Fo5)=>{var Go5=Dw(),$z0={warningEmitted:!1},Qo5=(X)=>{if(X&&!$z0.warningEmitted&&parseInt(X.substring(1,X.indexOf(".")))<20)$z0.warningEmitted=!0,process.emitWarning(`NodeDeprecationWarning: The AWS SDK for JavaScript (v3) will
|
|
1646
|
+
`);Q=W.pop()??"";for(let Z of W){let $=E16(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=E16(Q).replace(/^\[\d+\]\s*/,"").trim();if(W)Wz({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:W})}})()}async function Na5(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)Qa({name:z.name,status:"ready",port:z.port});bX1(W),_X1();let K=Ba5(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)P16(U.stdout),P16(U.stderr);let B=G||`http://localhost:${W.port}`;fX1(B),Qa({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 uN0=w(()=>{_N0();$z();hN0()});import{Box as lN0,Text as mN0}from"ink";import{jsx as A16,jsxs as rA1}from"react/jsx-runtime";function q16(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 Da5(X,Y){if(za5.has(X))return Y?{text:"\u25CF\u25CF\u25CF\u25CF\u25CF\u25CF",dimColor:!0}:{text:"not set",dimColor:!0};if(Oa5.has(X)){if(Array.isArray(Y)){if(Y.length===0)return{text:"not set",dimColor:!0};return{text:Y.map((W)=>q16(W)).join(", "),color:"cyan"}}let Q=q16(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 wa5(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 T16({env:X}){let Y=wa5(X);return A16(lN0,{flexDirection:"column",children:Y.map((G)=>rA1(lN0,{flexDirection:"column",marginTop:1,children:[rA1(mN0,{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=Da5(Q,J);return rA1(lN0,{children:[rA1(mN0,{dimColor:!0,children:[" ",Q.padEnd(36)]}),A16(mN0,{color:W.color,dimColor:W.dimColor,children:W.text})]},Q)})]},G.title))})}var za5,Oa5;var I16=w(()=>{za5=new Set(["BETTER_AUTH_SECRET","ENCRYPTION_KEY","MESH_JWT_SECRET","STUDIO_PROVISION_SECRET_KEY"]),Oa5=new Set(["DATABASE_URL","CLICKHOUSE_URL","NATS_URL"])});var dN0;var V16=w(()=>{dN0={name:"decocms",version:"2.310.0",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/mesh"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:'bun run migrate && concurrently "bun run dev:client" "bun run dev:server"',"dev:servers":'concurrently "bun run dev:client" "bun run dev:server"',"dev:client":"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 Ea5}from"@inkjs/ui";import{useSyncExternalStore as j16}from"react";import{jsx as TY,jsxs as sQ}from"react/jsx-runtime";function Ia5(X,Y){if(!X||!Ta5.has(X))return X;let G=cN0[Y]??cN0[cN0.length-1];return X==="#875f00"?G[0]:G[1]}function M16({status:X}){if(X==="pending")return TY(Ea5,{label:""});return TY(RX,{color:"green",children:"\u2713"})}function R16({services:X,migrationsStatus:Y,home:G,serverUrl:Q,vibe:J}){let W=j16(pm0,im0),Z=j16(sm0,om0);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,Aa5-U);return sQ(IU,{flexDirection:"row",children:[$.map((N,z)=>{let O=Ia5(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",dN0.version]})]}):sQ(IU,{flexDirection:"column",marginTop:1,children:[Pa5.map(($,K)=>TY(RX,{color:qa5[K],children:$},K)),sQ(RX,{dimColor:!0,children:[" v",dN0.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(M16,{status:$.status})]},$.name)),sQ(IU,{gap:1,children:[TY(RX,{children:"Migrations"}),TY(M16,{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 Pa5,qa5,cN0,Aa5=30,Ta5;var S16=w(()=>{V16();Rt1();ft1();Pa5=[" \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 "],qa5=["#00ff64","#00ee5e","#00dc56","#00c84e","#00b444","#00a03c","#008832","#006e28"],cN0=[["#00ff64","#00cc50"],["#00f060","#00c04c"],["#00e05c","#00b448"],["#00d058","#00a844"],["#00c054","#009c40"],["#00b050","#00903c"],["#00a04c","#008438"],["#009048","#007834"],["#008044","#006c30"],["#007040","#00602c"],["#00603c","#005428"]],Ta5=new Set(["#875f00","#5f3800"])});import{useSyncExternalStore as Va5}from"react";function ja5(){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 Ma5(X){return process.stdout.on("resize",X),()=>{process.stdout.off("resize",X)}}function k16(){return Va5(Ma5,ja5)}var oA1;var C16=w(()=>{oA1={rows:process.stdout.rows||24,columns:process.stdout.columns||80}});import{Box as Ra5,Text as yX1}from"ink";import{useSyncExternalStore as Sa5}from"react";import{jsx as iN0,jsxs as pN0}from"react/jsx-runtime";function ka5(X){if(X>=500)return"red";if(X>=400)return"yellow";if(X>=300)return"cyan";return"green"}function v16({logs:X,headerHeight:Y}){let{rows:G}=k16(),{logFlow:Q}=Sa5(vX1,CX1),J=Math.max(1,G-Y-1),W=Q?X:X.slice(-J);return iN0(Ra5,{flexDirection:"column",children:W.map((Z,$)=>{if(Z.rawLine)return iN0(yX1,{dimColor:!0,children:Z.rawLine},$);let K=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return pN0(yX1,{children:[pN0(yX1,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),iN0(yX1,{color:ka5(Z.status),children:Z.status}),pN0(yX1,{dimColor:!0,children:[" ",K.padStart(8)]})]},$)})})}var _16=w(()=>{$z();C16()});var nN0={};T0(nN0,{App:()=>xa5});import{Box as Ca5,Text as va5,useInput as _a5}from"ink";import{useSyncExternalStore as fa5}from"react";import{jsx as sA1,jsxs as ha5}from"react/jsx-runtime";function xa5({home:X}){let Y=fa5(vX1,CX1);return _a5((G)=>{if(G==="k"||G==="K")bN0();if(G==="l"||G==="L")yN0();if((G==="v"||G==="V")&&Y.dataDir)ht1(Y.dataDir),xN0();if((G==="n"||G==="N")&&Y.vibe)xt1()}),ha5(Ca5,{flexDirection:"column",children:[sA1(R16,{services:Y.services,migrationsStatus:Y.migrationsStatus,home:X,serverUrl:Y.serverUrl,vibe:Y.vibe}),Y.viewMode==="config"?Y.env?sA1(T16,{env:Y.env}):sA1(va5,{dimColor:!0,children:"Loading configuration..."}):sA1(v16,{logs:Y.logs,headerHeight:Y.vibe?ya5:ba5})]})}var ba5=15,ya5=19;var tN0=w(()=>{I16();S16();_16();$z();yd()});function f16(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((ca5)=>{ca5.HttpAuthLocation=void 0;(function(X){X.HEADER="header",X.QUERY="query"})(ca5.HttpAuthLocation||(ca5.HttpAuthLocation={}));ca5.HttpApiKeyAuthLocation=void 0;(function(X){X.HEADER="header",X.QUERY="query"})(ca5.HttpApiKeyAuthLocation||(ca5.HttpApiKeyAuthLocation={}));ca5.EndpointURLScheme=void 0;(function(X){X.HTTP="http",X.HTTPS="https"})(ca5.EndpointURLScheme||(ca5.EndpointURLScheme={}));ca5.AlgorithmId=void 0;(function(X){X.MD5="md5",X.CRC32="crc32",X.CRC32C="crc32c",X.SHA1="sha1",X.SHA256="sha256"})(ca5.AlgorithmId||(ca5.AlgorithmId={}));var ga5=(X)=>{let Y=[];if(X.sha256!==void 0)Y.push({algorithmId:()=>ca5.AlgorithmId.SHA256,checksumConstructor:()=>X.sha256});if(X.md5!=null)Y.push({algorithmId:()=>ca5.AlgorithmId.MD5,checksumConstructor:()=>X.md5});return{addChecksumAlgorithm(G){Y.push(G)},checksumAlgorithms(){return Y}}},ua5=(X)=>{let Y={};return X.checksumAlgorithms().forEach((G)=>{Y[G.algorithmId()]=G.checksumConstructor()}),Y},la5=(X)=>{return ga5(X)},ma5=(X)=>{return ua5(X)};ca5.FieldPosition=void 0;(function(X){X[X.HEADER=0]="HEADER",X[X.TRAILER=1]="TRAILER"})(ca5.FieldPosition||(ca5.FieldPosition={}));var da5="__smithy_context";ca5.IniSectionType=void 0;(function(X){X.PROFILE="profile",X.SSO_SESSION="sso-session",X.SERVICES="services"})(ca5.IniSectionType||(ca5.IniSectionType={}));ca5.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"})(ca5.RequestHandlerProtocol||(ca5.RequestHandlerProtocol={}));ca5.SMITHY_CONTEXT_KEY=da5;ca5.getDefaultClientConfiguration=la5;ca5.resolveDefaultRuntimeConfig=ma5});var u7=k((ea5)=>{var ta5=yj(),aa5=(X)=>{return{setHttpHandler(Y){X.httpHandler=Y},httpHandler(){return X.httpHandler},updateHttpClientConfig(Y,G){X.httpHandler?.updateHttpClientConfig(Y,G)},httpHandlerConfigs(){return X.httpHandler.httpHandlerConfigs()}}},ra5=(X)=>{return{httpHandler:X.httpHandler()}};class b16{name;kind;values;constructor({name:X,kind:Y=ta5.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 y16{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=oa5(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 oa5(X){return Object.keys(X).reduce((Y,G)=>{let Q=X[G];return{...Y,[G]:Array.isArray(Q)?[...Q]:Q}},{})}class x16{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 sa5(X){return/^[a-z0-9][a-z0-9\.\-]*[a-z0-9]$/.test(X)}ea5.Field=b16;ea5.Fields=y16;ea5.HttpRequest=eA1;ea5.HttpResponse=x16;ea5.getHttpHandlerExtensionConfiguration=aa5;ea5.isValidHostname=sa5;ea5.resolveHttpHandlerRuntimeConfig=ra5});function $r5(X){return(Y)=>async(G)=>{let{request:Q}=G;if(X.expectContinueHeader!==!1&&h16.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 h16,Kr5,g16=(X)=>({applyToStack:(Y)=>{Y.add($r5(X),Kr5)}});var u16=w(()=>{h16=X1(u7(),1);Kr5={step:"build",tags:["SET_EXPECT_HEADER","EXPECT_HEADER"],name:"addExpectContinueMiddleware",override:!0}});var wH,XT1,xj,YT1,E9,l16,hX1;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"})(l16||(l16={}));hX1=E9.CRC32});var kq,Ja=(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 Yz0=w(()=>{(function(X){X.ENV="env",X.CONFIG="shared config entry"})(kq||(kq={}))});var Hr5="AWS_REQUEST_CHECKSUM_CALCULATION",Fr5="request_checksum_calculation",m16;var d16=w(()=>{LH();Yz0();m16={environmentVariableSelector:(X)=>Ja(X,Hr5,wH,kq.ENV),configFileSelector:(X)=>Ja(X,Fr5,wH,kq.CONFIG),default:XT1}});var Ur5="AWS_RESPONSE_CHECKSUM_VALIDATION",Br5="response_checksum_validation",c16;var i16=w(()=>{LH();Yz0();c16={environmentVariableSelector:(X)=>Ja(X,Ur5,xj,kq.ENV),configFileSelector:(X)=>Ja(X,Br5,xj,kq.CONFIG),default:YT1}});var Qz0=k((Ar5)=>{var Nr5=["AuthFailure","InvalidSignatureException","RequestExpired","RequestInTheFuture","RequestTimeTooSkewed","SignatureDoesNotMatch"],zr5=["BandwidthLimitExceeded","EC2ThrottledException","LimitExceededException","PriorRequestNotComplete","ProvisionedThroughputExceededException","RequestLimitExceeded","RequestThrottled","RequestThrottledException","SlowDown","ThrottledException","Throttling","ThrottlingException","TooManyRequestsException","TransactionInProgressException"],Or5=["TimeoutError","RequestTimeout","RequestTimeoutException"],Dr5=[500,502,503,504],wr5=["ECONNRESET","ECONNREFUSED","EPIPE","ETIMEDOUT"],Lr5=["EHOSTUNREACH","ENETUNREACH","ENOTFOUND"],p16=(X)=>X?.$retryable!==void 0,Er5=(X)=>Nr5.includes(X.name),n16=(X)=>X.$metadata?.clockSkewCorrected,t16=(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)},Pr5=(X)=>X.$metadata?.httpStatusCode===429||zr5.includes(X.name)||X.$retryable?.throttling==!0,Gz0=(X,Y=0)=>p16(X)||n16(X)||X.name==="InvalidSignatureException"&&X.message?.includes("Signature expired")||Or5.includes(X.name)||wr5.includes(X?.code||"")||Lr5.includes(X?.code||"")||Dr5.includes(X.$metadata?.httpStatusCode||0)||t16(X)||a16(X)||X.cause!==void 0&&Y<=10&&Gz0(X.cause,Y+1),qr5=(X)=>{if(X.$metadata?.httpStatusCode!==void 0){let Y=X.$metadata.httpStatusCode;if(500<=Y&&Y<=599&&!Gz0(X))return!0;return!1}return!1};function a16(X){return X.code==="ERR_HTTP2_STREAM_ERROR"&&X.message.includes("NGHTTP2_REFUSED_STREAM")}Ar5.isBrowserNetworkError=t16;Ar5.isClockSkewCorrectedError=n16;Ar5.isClockSkewError=Er5;Ar5.isNodeJsHttp2TransientError=a16;Ar5.isRetryableByTrait=p16;Ar5.isServerError=qr5;Ar5.isThrottlingError=Pr5;Ar5.isTransientError=Gz0});var Dw=k((gr5)=>{var Cr5=Qz0();gr5.RETRY_MODES=void 0;(function(X){X.STANDARD="standard",X.ADAPTIVE="adaptive"})(gr5.RETRY_MODES||(gr5.RETRY_MODES={}));var QT1=3,vr5=gr5.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"||Cr5.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 _r5=100,Wz0=20000,fr5=500,Jz0=500,br5=5,yr5=10,r16=1,xr5="amz-sdk-invocation-id",hr5="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 o16{x=eQ.delay();computeNextBackoffDelay(X){let Y=Math.random(),G=2,Q=Y*Math.min(this.x*2**X,Wz0);return Math.floor(Q)}setDelayBase(X){this.x=X}}class Zz0{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(Wz0,this.delay)}getRetryCost(){return this.cost}isLongPoll(){return this.longPoll}}var GT1={incompatible:1,attempts:2,capacity:3};class gX1{mode=gr5.RETRY_MODES.STANDARD;capacity=Jz0;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 o16}async acquireInitialRetryToken(X){return new Zz0(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 Zz0(K,X.getRetryCount()+1,H,X.isLongPoll?.()??!1)}}throw Error("No retry token available")}recordSuccess(X){this.capacity=Math.min(Jz0,this.capacity+(X.getRetryCost()??r16))}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 s16{mode=gr5.RETRY_MODES.ADAPTIVE;rateLimiter;standardRetryStrategy;constructor(X,Y){let{rateLimiter:G}=Y??{};this.rateLimiter=G??new JT1,this.standardRetryStrategy=Y?new gX1({maxAttempts:typeof X==="number"?X:3,...Y}):new gX1(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 e16 extends gX1{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}}gr5.AdaptiveRetryStrategy=s16;gr5.ConfiguredRetryStrategy=e16;gr5.DEFAULT_MAX_ATTEMPTS=QT1;gr5.DEFAULT_RETRY_DELAY_BASE=_r5;gr5.DEFAULT_RETRY_MODE=vr5;gr5.DefaultRateLimiter=JT1;gr5.INITIAL_RETRY_TOKENS=Jz0;gr5.INVOCATION_ID_HEADER=xr5;gr5.MAXIMUM_RETRY_DELAY=Wz0;gr5.NO_RETRY_INCREMENT=r16;gr5.REQUEST_HEADER=hr5;gr5.RETRY_COST=br5;gr5.Retry=eQ;gr5.StandardRetryStrategy=gX1;gr5.THROTTLING_RETRY_DELAY_BASE=fr5;gr5.TIMEOUT_RETRY_COST=yr5});var WX=k((Fo5)=>{var Go5=Dw(),$z0={warningEmitted:!1},Qo5=(X)=>{if(X&&!$z0.warningEmitted&&parseInt(X.substring(1,X.indexOf(".")))<20)$z0.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
|
|
@@ -8016,7 +8016,7 @@ ${Y.map((Q)=>{let J=`${Q.name}|${Q.description??""}`;if(Q.arguments&&Q.arguments
|
|
|
8016
8016
|
Input schema:
|
|
8017
8017
|
${U}`:`${H}
|
|
8018
8018
|
|
|
8019
|
-
This workflow expects structured input. Use COLLECTION_WORKFLOW_GET to inspect the full input schema.`})(),inputSchema:F.object({input:F.record(F.string(),F.unknown()).optional().describe("Input data for the workflow. Steps reference these values via @input.field."),virtual_mcp_id:F.string().optional().describe($.virtual_mcp_id?`Virtual MCP ID to use for execution (defaults to "${$.virtual_mcp_id}").`:"Virtual MCP ID that will execute the workflow steps."),start_at_epoch_ms:F.number().int().min(0).optional().describe("Unix timestamp (ms) for scheduled execution. Omit to start immediately.")}),outputSchema:F.object({execution_id:F.string().describe("ID of the created workflow execution.")}),execute:async(U)=>{let{connectionId:B,meshUrl:N,token:z}=Ap1(U);if(!B||!N)throw Error(`[${K}] Missing MESH_REQUEST_CONTEXT (connectionId or meshUrl).`);let O=U.context,D=O.virtual_mcp_id??$.virtual_mcp_id,E=qp1.workflowId(B,$.title);return{execution_id:await qp1.createExecution(N,z,{workflow_collection_id:E,virtual_mcp_id:D,input:O.input,start_at_epoch_ms:O.start_at_epoch_ms})}}})}):[]]},wF8=(X)=>{let Y=null,G=null,Q=null,J=!1,W=()=>{if(!J)console.warn("[runtime] Passing factory functions to tools/prompts/resources is deprecated. Pass createTool()/createPrompt()/createResource() instances directly."),J=!0},Z=(z)=>typeof z==="object"&&z!==null&&(("id"in z)||("name"in z)||("uri"in z));async function $(z,O){if(!z)return[];return(await Promise.all(z.flatMap(async(D)=>{if(Z(D))return[D];W();let E=await D(O);if(Array.isArray(E))return E;return[E]}))).flat()}let K=async(z)=>{if(Y)return Y;if(G)return G;return G=(async()=>{try{let O;if(typeof X.tools==="function")W(),O=await X.tools(z);else O=await $(X.tools,z);let D=typeof X.workflows==="function"?await X.workflows(z):X.workflows;O.push(...DU7({...X,workflows:D}));let E;if(typeof X.prompts==="function")W(),E=await X.prompts(z);else E=await $(X.prompts,z);let P;if(typeof X.resources==="function")W(),P=await X.resources(z);else P=await $(X.resources,z);let q={tools:O,prompts:E,resources:P,workflows:D};return Y=q,q}catch(O){throw G=null,O}})(),G},H=(z,O)=>{for(let D of O.tools)z.registerTool(D.id,{_meta:D._meta,description:D.description,annotations:D.annotations,inputSchema:D.inputSchema&&"shape"in D.inputSchema?D.inputSchema:F.object({}),outputSchema:D.outputSchema&&typeof D.outputSchema==="object"&&"shape"in D.outputSchema?D.outputSchema:void 0},async(E)=>{let P=yW1(),q=await D.execute({context:E,runtimeContext:P},P);if(q!=null&&typeof q==="object"&&"content"in q&&Array.isArray(q.content)&&q.content.every((j)=>j!=null&&typeof j==="object"&&("type"in j)&&typeof j.type==="string"))return q;return{structuredContent:q,content:[{type:"text",text:JSON.stringify(q)}]}});for(let D of O.prompts)z.registerPrompt(D.name,{title:D.title,description:D.description,argsSchema:D.argsSchema?D.argsSchema:F.object({}).shape},async(E)=>{let P=yW1();return await D.execute({args:E,runtimeContext:P},P)});for(let D of O.resources)z.resource(D.name,D.uri,{description:D.description,mimeType:D.mimeType},async(E)=>{let P=yW1(),q=await D.read({uri:E,runtimeContext:P},P),j=q._meta??void 0;if(q.text!==void 0)return{contents:[{uri:q.uri,mimeType:q.mimeType,text:q.text,...j!==void 0?{_meta:j}:{}}]};else if(q.blob!==void 0)return{contents:[{uri:q.uri,mimeType:q.mimeType,blob:q.blob,...j!==void 0?{_meta:j}:{}}]};return{contents:[{uri:q.uri,mimeType:q.mimeType,text:""}]}})},U=async(z)=>{await X.before?.(z);let{instructions:O,...D}=X.serverInfo??{},E=new oD({...D,name:D.name??"@deco/mcp-api",version:D.version??"1.0.0"},{capabilities:{tools:{},prompts:{},resources:{}},...O&&{instructions:O}}),P=await K(z);H(E,P);let q="tools/list",j=E.server._requestHandlers,M=j.get(q);if(M)j.set(q,async(I,R)=>{if(!Q)Q=await M(I,R);return Q});return{server:E,...P}};return{fetch:async(z,O)=>{let{server:D}=await U(O),E=new iH;await D.connect(E);let P=()=>{try{E.close?.()}catch{}try{D.close?.()}catch{}};try{let q=await E.handleRequest(z),j=q.headers.get("content-type");if(!(j?.includes("text/event-stream")||j?.includes("application/json-rpc"))||!q.body)return P(),q;let{readable:I,writable:R}=new TransformStream;return q.body.pipeTo(R).catch(()=>{}).finally(P),new Response(I,{status:q.status,statusText:q.statusText,headers:q.headers})}catch(q){throw P(),q}},callTool:async({toolCallId:z,toolCallInput:O})=>{let D=bW1.getStore();if(!D)throw Error("Missing state, did you forget to call State.bind?");let E=D?.env,{tools:P}=await K(E),j=P.find((I)=>I.id===z)?.execute;if(!j)throw Error(`Tool ${z} not found or does not have an execute function`);let M=yW1();return j({context:O,runtimeContext:M},M)}}};var Tp1=w(()=>{EQ1();y71();Ks();K0();$e();Xg0();eh0();Gg0();Xg0()});var wU7=({env:X,server:Y,url:G})=>{X.SELF=new Proxy({},{get:(Q,J)=>{if(J==="toJSON")return null;return async(W)=>{return await Y.callTool({toolCallId:J,toolCallInput:W})}}}),X.IS_LOCAL=(G?.startsWith("http://localhost")||G?.startsWith("http://127.0.0.1"))??!1},LF8=(X)=>()=>{return{...X??{}}},LU7=({env:X,server:Y,tokenOrContext:G,url:Q,authToken:J})=>{let W=X,Z=J?J.split(" ")[1]:void 0,$;if(typeof G==="string"){let K=c9(G),H=K.metadata??{};$={authorization:Z,state:K.state??H.state??{},token:G,meshUrl:K.meshUrl??H.meshUrl,connectionId:K.connectionId??H.connectionId,organizationId:K.organizationId??H.organizationId,organizationName:K.organizationName??H.organizationName,organizationSlug:K.organizationSlug??H.organizationSlug,ensureAuthenticated:LF8(K.user??K.sub)}}else if(typeof G==="object"){$=G;let K=c9(G.token),H=K.metadata??{},U=K.appName;$.authorization??=Z,$.callerApp=U,$.connectionId??=K.connectionId??H.connectionId,$.organizationId??=K.organizationId??H.organizationId,$.organizationName??=K.organizationName??H.organizationName,$.organizationSlug??=K.organizationSlug??H.organizationSlug,$.ensureAuthenticated=LF8(K.user??K.sub)}else $={state:{},authorization:Z,token:void 0,meshUrl:void 0,connectionId:void 0,ensureAuthenticated:()=>{throw Error("Unauthorized")}};return W.MESH_REQUEST_CONTEXT=$,$.state=oH8($),wU7({env:W,server:Y,url:Q}),W},EU7,EF8=(X)=>{let Y=wF8(X),G=X.cors??EU7,Q=X.oauth,J=Q?ZF8(Q):null,W=async(Z,$,K)=>{let H=new URL(Z.url);if(J){if(H.pathname==="/.well-known/oauth-protected-resource"||H.pathname==="/mcp/.well-known/oauth-protected-resource")return J.handleProtectedResourceMetadata(Z);if(H.pathname==="/.well-known/oauth-authorization-server")return J.handleAuthorizationServerMetadata(Z);if(H.pathname==="/authorize")return J.handleAuthorize(Z);if(H.pathname==="/oauth/callback")return J.handleOAuthCallback(Z);if(H.pathname==="/token"&&Z.method==="POST")return J.handleToken(Z);if((H.pathname==="/register"||H.pathname==="/mcp/register")&&Z.method==="POST")return J.handleClientRegistration(Z)}if(H.pathname==="/mcp"){if(Z.method==="GET")return new Response("Method not allowed",{status:405});if(J&&!J.hasAuth(Z)){let U=Z.clone();try{if((await U.json())?.method!=="tools/list")return J.createUnauthorizedResponse(Z)}catch{return J.createUnauthorizedResponse(Z)}}return Y.fetch(Z,$,K)}if(H.pathname.startsWith("/mcp/call-tool")){let U=H.pathname.split("/").pop();if(!U)return new Response("Not found",{status:404});let B=await Z.json(),N=await Y.callTool({toolCallId:U,toolCallInput:B});if(N instanceof Response)return N;return new Response(JSON.stringify(N),{headers:{"Content-Type":"application/json"}})}return X.fetch?.(Z,$,K)||new Response("Not found",{status:404})};return{fetch:async(Z,$,K)=>{if(new URL(Z.url).pathname==="/_healthcheck")return new Response("OK",{status:200});if(G!==!1&&Z.method==="OPTIONS")return eH8(Z,G??{});let H=LU7({authToken:Z.headers.get("authorization")??null,env:{...process.env,...$},server:Y,tokenOrContext:Z.headers.get("x-mesh-token")??void 0,url:Z.url}),U=await bW1.run({req:Z,env:H,ctx:K},async()=>await W(Z,H,K));if(G!==!1)return XF8(U,Z,G??{});return U}}};var PF8=w(()=>{RJ();$e();YF8();sh0();sh0();eh0();Tp1();Tp1();Gg0();$e();Op1();EU7={origin:(X)=>{if(X.includes("localhost")||X.includes("127.0.0.1"))return X;return X},credentials:!0,allowMethods:["GET","POST","PUT","DELETE","OPTIONS"],allowHeaders:["Content-Type","Authorization","mcp-protocol-version"]}});function PU7(X,Y){let G=ZO({id:"COLLECTION_REGISTRY_APP_LIST",description:"List public registry items",annotations:{readOnlyHint:!0,idempotentHint:!0},inputSchema:Us,outputSchema:Bs,execute:async({context:$})=>{return await X.listPublic(Y,{limit:$.limit,offset:$.offset,cursor:$.cursor,tags:$.tags,categories:$.categories,where:$.where})}}),Q=ZO({id:"COLLECTION_REGISTRY_APP_GET",description:"Get a public registry item by ID or name",annotations:{readOnlyHint:!0,idempotentHint:!0},inputSchema:hz,outputSchema:eR,execute:async({context:$})=>{let K=$.id??$.name;if(!K)return{item:null};let H=await X.findByIdOrName(Y,K);if(H&&H.is_public)return{item:H};return{item:null}}}),J=ZO({id:"COLLECTION_REGISTRY_APP_VERSIONS",description:"Get available versions of a public registry item",annotations:{readOnlyHint:!0,idempotentHint:!0},inputSchema:hz,outputSchema:F.object({versions:F.array(eR.shape.item)}),execute:async({context:$})=>{let K=$.id??$.name;if(!K)return{versions:[]};let H=await X.findByIdOrName(Y,K);if(H&&H.is_public)return{versions:[H]};return{versions:[]}}}),W=ZO({id:"COLLECTION_REGISTRY_APP_SEARCH",description:"Search public registry items returning minimal data (id, title, tags, categories, is_public). Use this instead of LIST when you need to find items efficiently without loading full details.",annotations:{readOnlyHint:!0,idempotentHint:!0},inputSchema:Yk1,outputSchema:Gk1,execute:async({context:$})=>{return await X.search(Y,$,{publicOnly:!0})}}),Z=ZO({id:"COLLECTION_REGISTRY_APP_FILTERS",description:"Get available tags and categories for public registry items",annotations:{readOnlyHint:!0,idempotentHint:!0},inputSchema:F.object({}),outputSchema:Ns,execute:async()=>{return await X.getFilters(Y,{publicOnly:!0})}});return[G,W,Q,J,Z]}function qF8(X){let Y=X.db,G=new Ro(Y);return async(Q)=>{let J=Q.req.param("orgSlug")??Q.req.param("org");if(!J)return Q.json({error:"Organization not found"},404);let W=await Y.selectFrom("organization").select(["id","slug","name"]).where("slug","=",J).executeTakeFirst();if(!W)return Q.json({error:"Organization not found"},404);let Z=PU7(G,W.id),$=EF8({tools:Z}),K=new URL(Q.req.url),H=Q.req.path.indexOf("/registry"),U=H>=0?Q.req.path.slice(H+9):"",B=new URL(U||"/",K.origin);K.searchParams.forEach((O,D)=>{B.searchParams.set(D,O)});let N=new Request(B.toString(),{method:Q.req.method,headers:Q.req.raw.headers,body:Q.req.method!=="GET"&&Q.req.method!=="HEAD"?Q.req.raw.body:void 0}),z={organizationId:W.id,db:Y,MESH_REQUEST_CONTEXT:{},MESH_APP_DEPLOYMENT_ID:"public-registry",IS_LOCAL:!1};return await $.fetch(N,z,Q)}}var AF8=w(()=>{PF8();Tp1();K0();pM0();WY()});import{randomUUID as TF8}from"crypto";async function AU7(X){let Y=new Date().toISOString(),G=TF8(),Q=P7.SELF(X.organizationId),J="registry.publish_request.created",W={requestId:X.request.id,requestedId:X.request.requested_id,title:X.request.title,status:X.request.status,createdAt:X.request.created_at,requester:{name:X.request.requester_name,email:X.request.requester_email}};await X.db.insertInto("events").values({id:G,organization_id:X.organizationId,type:"registry.publish_request.created",source:Q,specversion:"1.0",subject:X.request.id,time:Y,datacontenttype:"application/json",dataschema:null,data:JSON.stringify(W),cron:null,status:"pending",attempts:0,last_error:null,next_retry_at:null,created_at:Y,updated_at:Y}).execute();let Z=await X.db.selectFrom("event_subscriptions").select(["id"]).where("organization_id","=",X.organizationId).where("enabled","=",1).where("event_type","=","registry.publish_request.created").where(($)=>$.or([$("publisher","is",null),$("publisher","=",Q)])).execute();if(Z.length>0)await X.db.insertInto("event_deliveries").values(Z.map(($)=>({id:TF8(),event_id:G,subscription_id:$.id,status:"pending",attempts:0,last_error:null,delivered_at:null,next_retry_at:null,created_at:Y}))).execute();try{await B1`SELECT pg_notify('mesh_events', ${G})`.execute(X.db)}catch{}}async function TU7(X,Y){let Q=(await X.selectFrom("organization").select(["id"]).where("id","=",Y).execute())[0];if(Q?.id)return Q.id;return(await X.selectFrom("organization").select(["id"]).where("slug","=",Y).execute())[0]?.id??null}async function IU7(X,Y){let G=await X.selectFrom("virtual_mcp_plugin_configs").innerJoin("connections","connections.id","virtual_mcp_plugin_configs.virtual_mcp_id").select(["virtual_mcp_plugin_configs.settings as settings"]).where("connections.organization_id","=",Y).where("virtual_mcp_plugin_configs.plugin_id","=",BS).execute();for(let Q of G){let J=Q.settings,W=typeof J==="string"?(()=>{try{return JSON.parse(J)}catch{return{}}})():J??{};if(W.acceptPublishRequests===!0){let Z=W.rateLimitWindow==="minute"?"minute":"hour",$=W.rateLimitMax,K=typeof $==="number"&&Number.isFinite($)&&$>=1?Math.floor($):VF8;return{acceptPublishRequests:!0,requireApiToken:W.requireApiToken===!0,rateLimitEnabled:W.rateLimitEnabled===void 0?IF8:W.rateLimitEnabled===!0,rateLimitWindow:Z,rateLimitMax:K}}}return{acceptPublishRequests:!1,requireApiToken:!1,rateLimitEnabled:IF8,rateLimitWindow:qU7,rateLimitMax:VF8}}async function VU7(X,Y,G){let Q=G==="minute"?60000:3600000,J=new Date(Date.now()-Q).toISOString(),W=await X.selectFrom("private_registry_publish_request").select((Z)=>Z.fn.countAll().as("count")).where("organization_id","=",Y).where("created_at",">=",J).executeTakeFirst();return Number(W?.count??0)}async function jU7(X,Y,G,Q){let J=await X.selectFrom("private_registry_item").select(["id","title"]).where("organization_id","=",Y).where((W)=>W.or([W("id","=",G),W("title","=",Q)])).executeTakeFirst();return J?{id:String(J.id),title:String(J.title)}:null}function jF8(X){let{db:Y,db:G}=X,Q=new So(G),J=new ko(G);return async(W)=>{let Z=W.req.param("orgRef")??W.req.param("org");if(!Z)return W.json({error:"Organization not found"},404);let $=await TU7(Y,Z);if(!$)return W.json({error:"Organization not found"},404);let K=await IU7(Y,$);if(!K.acceptPublishRequests)return W.json({error:"Publish requests are not enabled for this registry."},403);if(K.requireApiToken){let z=W.req.header("Authorization"),O=z?.startsWith("Bearer ")?z.slice(7).trim():null;if(!O)return W.json({error:"API key required. Use Authorization: Bearer <key>"},401);if(!await J.validate($,O))return W.json({error:"Invalid API key"},401)}if(K.rateLimitEnabled){if(await VU7(G,$,K.rateLimitWindow)>=K.rateLimitMax)return W.json({error:"Too many publish requests. Please try again later.",retryAfterSeconds:K.rateLimitWindow==="minute"?60:3600},429)}let H;try{H=await W.req.json()}catch{return W.json({error:"Invalid JSON body"},400)}let U=Qu6.safeParse(H);if(!U.success)return W.json({error:"Invalid publish request payload",details:F.treeifyError(U.error)},400);let B=await jU7(G,$,U.data.data.id,U.data.data.title);if(B)return W.json({error:"A registry item with the same id or title already exists. Please use a different name/id.",conflict:B},409);let N=await Q.createOrUpdate({organization_id:$,requested_id:U.data.data.id,title:U.data.data.title,description:U.data.data.description??null,_meta:U.data.data._meta,server:U.data.data.server,requester_name:U.data.requester?.name??null,requester_email:U.data.requester?.email??null});try{await AU7({db:Y,organizationId:$,request:N})}catch(z){console.warn("[private-registry] failed to emit publish-request event:",z)}return M6.capture({distinctId:U.data.requester?.email??`org:${$}`,event:"registry_publish_request_submitted",groups:{organization:$},properties:{organization_id:$,request_id:N.id,requested_id:N.requested_id,title:U.data.data.title,requester_email:U.data.requester?.email??null}}),W.json({id:N.id,requested_id:N.requested_id,status:N.status},201)}}var IF8=!0,qU7="hour",VF8=100;var MF8=w(()=>{CX();q7();B6();K0();js();nM0();tM0();WY()});var RF8={};T0(RF8,{createPublishRequestHandler:()=>jF8,createPublicMCPHandler:()=>qF8});var SF8=w(()=>{AF8();MF8()});var yF8={};T0(yF8,{createApp:()=>_U7});async function MU7(X){let Y=X.connect(),G;try{G=await Promise.race([Y,CF8(kF8)])}catch{return Y.then((Q)=>Q.release(!0)).catch(()=>{}),!1}try{return await Promise.race([G.query("SELECT 1"),CF8(kF8)]),G.release(),!0}catch{return G.release(!0),!1}}function CF8(X){return new Promise((Y,G)=>setTimeout(()=>G(Error("pg health-check timeout")),X))}async function RU7(X,Y){let{items:G}=await X.storage.connections.list(Y,{where:{field:["connection_url"],operator:"like",value:`${bw6}%`},limit:1}),Q=G[0];if(!Q?.configuration_state)return null;return Q.configuration_state.project_locator}function SU7(X){let Y=new URLSearchParams;if(X){let[G,Q]=X.split("/");if(G)Y.set("workspace_hint",G);if(Q)Y.set("project_hint",Q)}else Y.set("auto_personal","true");return Y.set("force_new","true"),Y}async function _U7(X={}){let Y=X.database??a7(),G=!1;if(dT)clearInterval(dT),dT=null;if(Ip1&&Ip1.isRunning())Promise.resolve(Ip1.stop()).catch((j1)=>{console.error("[EventBus] Error stopping previous worker:",j1)}),zK.stop().catch((j1)=>{console.error("[SSEHub] Error stopping previous broadcast (HMR cleanup):",j1)});let Q,J,W,Z,$,K=null;if(X.eventBus)Q=X.eventBus,J={get:async()=>null,set:async()=>{},invalidate:async()=>{},teardown:()=>{}},W={get:async()=>null,set:async()=>{},invalidate:async()=>{},teardown:()=>{}},Z={start:async()=>{},broadcast:()=>{},stop:async()=>{}},$={init:async()=>{},relay:(j1)=>j1,createReplayStream:async()=>null,purge:()=>{},teardown:()=>{}};else{K=ZH8(),K.init(u4().natsUrls);let j1=new Ij0({getJetStream:()=>K.getJetStream()});j1.init().catch(()=>{}),J=j1;let y1=new bh0({getJetStream:()=>K.getJetStream()});y1.init().catch(()=>{}),W=y1,Z=new yh0({getConnection:()=>K.getConnection()}),$=new hh0({getConnection:()=>K.getConnection(),getJetStream:()=>K.getJetStream()}),Q=VW8(Y,K),K.onReady(()=>{j1.init().catch((e1)=>{console.error("[McpListCache] Deferred init failed:",e1)}),y1.init().catch((e1)=>{console.error("[ModelListCache] Deferred init failed:",e1)}),$.init().catch((e1)=>{console.warn("[StreamBuffer] Deferred init failed, late-join disabled:",e1)})})}if(Ip1=Q,He)await He();Vj0(J);let H=new yJ1(Y.db),U={storage:H,streamBuffer:$,sseHub:zK},B=Gd(),N=new gh0(U,B);Z.start((j1)=>{N.execute({type:"CANCEL",taskId:j1}).catch((y1)=>{console.error("[Decopilot] CancelBroadcast execute failed:",y1)})}).catch((j1)=>{console.error("[Decopilot] CancelBroadcast start failed:",j1)}),K?.onReady(()=>{Z.start().catch((j1)=>{console.error("[CancelBroadcast] Deferred start failed:",j1)})}),$.init().catch((j1)=>{console.warn("[Decopilot] StreamBuffer init failed, attach/late-join disabled:",j1)});let z=null;if(K)z=new dh0({getConnection:()=>K.getConnection(),getJetStream:()=>K.getJetStream()}),z.init().then(()=>{z.start(B)}).catch(()=>{}),K.onReady(()=>{z.init().then(()=>{z.start(B)}).catch((j1)=>{console.error("[PodHeartbeat] Deferred init failed:",j1)})});He=async()=>{await z?.stop(),await N.stopAll(),N.dispose(),Z.stop().catch(()=>{}),$.teardown(),J.teardown(),W.teardown(),Vj0(null)};let O=new A6;if(O.use("*",zI0({enabled:(j1)=>iV1(j1,"debug")==="1"})),O.use("*",s30),O.use("/*",qL6({origin:(j1)=>{if(j1.includes("localhost")||j1.includes("127.0.0.1"))return j1;return j1},credentials:!0,allowMethods:["GET","POST","PUT","DELETE","OPTIONS"],allowHeaders:["Content-Type","Authorization","mcp-protocol-version"],exposeHeaders:["WWW-Authenticate"]})),O.use("*",async(j1,y1)=>{await y1(),j1.header("X-Frame-Options","DENY"),j1.header("Content-Security-Policy","frame-ancestors 'none'")}),!u4().noTui)O.use("*",SH8());O.use("*",async(j1,y1)=>{if(await y1(),j1.res.status>=500){let Z0=await j1.res.clone().text();console.error(`[5xx Response] ${j1.req.method} ${j1.req.path} - ${j1.res.status}:`,Z0)}}),O.get(uT.HEALTH_LIVE,(j1)=>{return j1.json({status:"ok"})}),O.get(uT.HEALTH_READY,async(j1)=>{if(G)return j1.json({status:"shutting_down"},503);let y1={};if(y1.postgres={status:await MU7(Y.pool)?"up":"down"},K)y1.nats=K.isConnected()?{status:"up"}:{status:"down"};else y1.nats={status:"down"};let e1=y1.postgres.status==="up",Z0=e1?200:503;return j1.json({status:e1?"ready":"not_ready",services:y1},Z0)}),O.get(uT.METRICS,async(j1)=>{try{let y1=await XW0.collect(),e1=kU7.serialize(y1.resourceMetrics);return j1.text(e1,200,{"Content-Type":"text/plain; version=0.0.4; charset=utf-8"})}catch(y1){return console.error("Failed to collect metrics:",y1),j1.text("# Error collecting metrics",500)}}),O.route("/api/config",oK8),O.route("/api/auth/custom",tW8),O.all("/api/auth/*",async(j1)=>{return await kY.handler(j1.req.raw)});let D=zk0();D.use("*",eY),O.route("/",D),O.get("/.well-known/oauth-protected-resource/api/:org/mcp/:connectionId",gZ1),O.route("/",Ok0()),O.use("/oauth-proxy/:connectionId/*",eY),O.all("/oauth-proxy/:connectionId/*",vF8);let E=async(j1)=>{let e1=await CU7()(j1.req.raw),Z0=await e1.json();return Response.json(Z0,e1)};O.use("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",eY),O.get("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",E);let P=async(j1)=>{let e1=await vU7()(j1.req.raw),Z0=await e1.json();return Response.json(Z0,e1)};O.get("/.well-known/oauth-authorization-server/*/:gateway?/:connectionId?",P);let q=FW8({ttlMs:120000}),j=await Oy6({db:Y.db,auth:kY,encryption:{key:u4().encryptionKey},observability:{tracer:EN,meter:JU},eventBus:Q,modelListCache:W,memberRoleCache:q});GB.set(j);let M=new lM(u4().encryptionKey);Qs4(Y.db,M);let I=Math.random()*2000;if(new Promise((j1)=>setTimeout(j1,I)).then(()=>Q.start()).then(()=>{return Zs4({db:Y.db,publish:async(j1,y1)=>{await Q.publish(j1,"",y1)}})}).catch((j1)=>{console.error("[EventBus] Error during startup:",j1)}),Kd)Kd(),Kd=null;let R=MR1(Y.db),C=new kJ1(Y.db),_=new zp1(10),v=jH8({db:Y.db,threadStorage:H}),y=async(j1,y1,e1)=>{let Z0=await R.findById(j1,y1);if(!Z0)throw Error("Automation not found");return fW1({automation:Z0,triggerId:null,storage:R,streamCoreFn:_L,meshContextFactory:v,config:{maxConcurrentPerAutomation:3,runTimeoutMs:300000},globalSemaphore:_,deps:{runRegistry:N,cancelBroadcast:Z}})},h=null;if(K){let j1={getConnection:()=>K.getConnection(),getJetStream:()=>K.getJetStream()},y1=new FT(R,mT.publish),e1=1e4,Z0=async()=>{let f0=Date.now();await mT.init(j1),console.log(`[AutomationJobStream] init completed in ${Date.now()-f0}ms`),await mT.startConsumer(async(R6)=>{let C1=await R.findById(R6.automationId,R6.organizationId);if(!C1)return;await fW1({automation:C1,triggerId:R6.triggerId,storage:R,streamCoreFn:_L,meshContextFactory:v,config:{maxConcurrentPerAutomation:3,runTimeoutMs:300000},globalSemaphore:_,deps:{runRegistry:N,cancelBroadcast:Z}})});let M0=Date.now();await y1.start(),console.log(`[AutomationJobStream] cronWorker.start() completed in ${Date.now()-M0}ms`)},L4=async(f0=5)=>{for(let M0=1;M0<=f0;M0++)try{await Z0();return}catch(R6){if(M0===f0)throw R6;let C1=Math.min(1000*2**(M0-1),1e4);console.warn(`[AutomationJobStream] Start attempt ${M0}/${f0} failed, retrying in ${C1}ms`),await new Promise((X0)=>setTimeout(X0,C1))}};L4().catch((f0)=>{console.error("[AutomationJobStream] Immediate start failed:",f0)}),K.onReady(()=>{L4().catch((f0)=>{console.error("[AutomationJobStream] Deferred start failed:",f0)})}),h=setInterval(()=>{y1.processNow().catch((f0)=>{console.error("[AutomationCron] Error processing:",f0)})},1e4);let l0=60000,U0=!1,z0=setInterval(async()=>{if(U0)return;try{if(await mT.isHealthy(j1))return;U0=!0,console.warn("[AutomationJobStream] Health check failed, reinitializing..."),await L4()}catch(f0){console.error("[AutomationJobStream] Health re-init failed:",f0)}finally{U0=!1}},l0);Kd=()=>{if(h)clearInterval(h),h=null;clearInterval(z0),mT.stop(),y1.stop().catch(()=>{})}}let d=new Zd(R,_L,v,{maxConcurrentPerAutomation:3,runTimeoutMs:300000},_,{runRegistry:N,cancelBroadcast:Z});if("setEventTriggerEngine"in Q)Q.setEventTriggerEngine(d);let i=async(j1)=>{let y1=li1.safeParse(j1.run_config);if(!y1.success){console.warn(`[recovery] Invalid run_config for ${j1.id}, force-failing`),await H.forceFailIfInProgress(j1.id,j1.organization_id);return}let e1=y1.data,Z0=await v(j1.organization_id,j1.created_by);if(!Z0){console.warn(`[recovery] Cannot build context for ${j1.id}, force-failing`),await H.forceFailIfInProgress(j1.id,j1.organization_id);return}let L4=new Date().toISOString();await H.saveMessages([{id:crypto.randomUUID(),thread_id:j1.id,role:"system",parts:[{type:"text",text:"Run resumed automatically after infrastructure restart."}],metadata:void 0,created_at:L4,updated_at:L4}],j1.organization_id);let l0=await _L({messages:[],models:mi1(e1.models),agent:e1.agent,temperature:e1.temperature,toolApprovalLevel:e1.toolApprovalLevel,mode:e1.mode,organizationId:j1.organization_id,userId:j1.created_by,taskId:j1.id,windowSize:e1.windowSize,isResume:!0},Z0,{runRegistry:N,cancelBroadcast:Z});await ai1(l0)};if(z)z.onPodDeath((j1)=>{N.handlePodDeath(j1,i,Z).catch((y1)=>{console.error(`[Decopilot] Pod death recovery failed for ${j1}:`,y1)})});setTimeout(()=>{N.recoverOrphanedRuns(i).catch((j1)=>{console.error("[recovery] Orphan recovery failed:",j1)})},1e4);let f=[AD(),Ow1(),SV()];for(let j1 of f)uh0(j1).then(()=>{}).catch((y1)=>console.error("[monitoring] Retention cleanup failed:",y1));let u=()=>Y.db.deleteFrom("apikey").where("expiresAt","<",new Date).execute().then(()=>{}).catch((j1)=>console.error("[auth] Expired API key cleanup failed:",j1));u(),dT=setInterval(()=>{for(let j1 of f)uh0(j1).catch((y1)=>console.error("[monitoring] Retention cleanup failed:",y1));u()},86400000),dT.unref(),O.use("*",async(j1,y1)=>{if(vh0(j1.req.path))return y1();let e1={measure:async(L4,l0)=>{jH(j1,L4);try{return await l0()}finally{n$(j1,L4)}}},Z0=await GB.create(j1.req.raw,{timings:e1});Z0.automationRunner=y,j1.set("meshContext",Z0);try{await y1()}finally{let L4=Z0.pendingRevalidations;if(L4.length>0)Promise.race([Promise.allSettled(L4),new Promise((U0)=>setTimeout(U0,30000))]).catch((U0)=>console.error("[mesh] revalidation cleanup error:",U0))}}),O.use("/api/:org/decopilot/*",Je),O.use("/api/:org/v1/*",Je),O.use("/api/:org/files/*",Je),O.use("*",async(j1,y1)=>{let e1=j1.req.path;if(e1.startsWith("/api/org-sso/")||e1.startsWith("/api/auth/")||e1.startsWith("/api/tools/management")||e1.startsWith("/oauth-proxy/"))return y1();let Z0=j1.get("meshContext");if(!Z0?.organization?.id||!Z0?.auth?.user?.id)return y1();if(!(await Z0.storage.orgSsoConfig.getByOrgId(Z0.organization.id))?.enforced)return y1();if(!await Z0.storage.orgSsoSessions.isValid(Z0.auth.user.id,Z0.organization.id))return j1.json({error:"SSO authentication required for this organization"},403);return y1()});let a=new A6;a.use("*",eY),a.route("/",xi1()),O.route("/api/org-sso",a),O.get("/api/tools/management",(j1)=>{return j1.json({tools:DI0,grouped:UG1()})}),O.use("/mcp/*",async(j1,y1)=>{jH(j1,"mcp");try{return await y1()}finally{n$(j1,"mcp")}});let r=async(j1,y1)=>{let e1=j1.var.meshContext;if(!e1.auth.user?.id&&!e1.auth.apiKey?.id){let Z0=new URL(j1.req.url);return j1.res=new Response(null,{status:401,headers:{"WWW-Authenticate":`Bearer realm="mcp",resource_metadata="${Z0.origin}${Z0.pathname}/.well-known/oauth-protected-resource"`}})}return await y1()};if(O.use("/mcp/:connectionId?",r),O.use("/mcp/gateway/:virtualMcpId?",r),O.use("/mcp/virtual-mcp/:virtualMcpId?",r),O.use("/mcp/self",r),fU()){let{mountDevRoutes:j1}=(pH8(),Rp1(iH8));j1(O,r)}let U1=new A6;U1.use("*",eY),U1.route("/",tS1()),O.route("/mcp",U1);let w1=new A6;w1.use("*",eY),w1.route("/",Qp1()),O.route("/mcp/self",w1);let $1=new A6;$1.use("*",eY),$1.route("/",rS1()),O.route("/mcp",$1),O.use("/api/:org/models/*",async(j1,y1)=>{jH(j1,"llm_models");try{return await y1()}finally{n$(j1,"llm_models")}});let O1=zh0({cancelBroadcast:Z,streamBuffer:$,runRegistry:N,threadStorage:H});O.route("/api",O1),O.route("/api",XH8);let v1=new A6;v1.use("*",eY),v1.route("/",Jp1()),O.route("/api",v1),O.route("/api",tK8);let o1=new A6;o1.use("*",eY),o1.route("/",Zp1({tokenStorage:C,eventTriggerEngine:d})),O.route("/api",o1);let d1=new ch0(Y.db),h1=new A6;h1.use("*",eY),h1.route("/",Gp1({kvStorage:d1})),O.route("/api",h1),O.use("/org/:organizationId/events/:type",eY),O.post("/org/:organizationId/events/:type",_F8),O.use("/org/:organizationId/watch",eY),O.get("/org/:organizationId/watch",fF8);let Y1=new A6;Y1.use("*",eY),Y1.route("/",oi1()),O.route("/api",Y1),O.route("/api/deco-sites",jK8());let l1=new A6;l1.use("*",eY),l1.route("/",si1()),O.route("/api/deco-sites",l1);let $0=new A6;$0.use("*",eY),$0.route("/",Kp1()),O.route("/api/vm-events",$0);let{createPublishRequestHandler:r1,createPublicMCPHandler:q1}=await Promise.resolve().then(() => (SF8(),RF8)),P1={db:Y.db,vault:{encrypt:(j1)=>M.encrypt(j1),decrypt:(j1)=>M.decrypt(j1)}},z1=r1(P1),W1=q1(P1);O.use("/org/:orgRef/registry/publish-request",eY),O.post("/org/:orgRef/registry/publish-request",z1),O.use("/org/:orgSlug/registry/*",eY),O.all("/org/:orgSlug/registry/*",W1),O.post("/api/:org/registry/publish-request",z1),O.all("/api/:org/registry/*",W1);let k1=mK8({kvStorage:d1,tokenStorage:C,eventTriggerEngine:d,mountDevAssets:fU(),mcpAuth:r,oauthProxyHandler:vF8,eventsHandler:_F8,watchHandler:fF8,betterAuthProtectedResourceHandler:E});return O.route("/api/:org",k1),Gs4(O,{db:Y.db,vault:M}),O.notFound((j1)=>{return j1.json({error:"Not Found",path:j1.req.path},404)}),O.onError((j1,y1)=>{console.error("Server error :",j1);let e1=j1 instanceof Error?j1.message:"Unknown error";return y1.json({error:"Internal Server Error",message:e1},500)}),Object.assign(O,{markShuttingDown:()=>{G=!0},shutdown:async()=>{if(console.log("[shutdown] Stopping workers..."),await Promise.allSettled([Q.isRunning()?Q.stop():Promise.resolve(),zK.stop(),Kd?Promise.resolve(Kd()).finally(()=>{Kd=null}):Promise.resolve(),He?Promise.resolve(He()).finally(()=>{He=null}):Promise.resolve()]),dT)clearInterval(dT),dT=null;let j1=jx0(Vx0());if(j1){let{sweepDockerOrphansOnShutdown:y1}=await Promise.resolve().then(() => (oH(),PS));await y1(j1)}if(K)await K.drain().catch((y1)=>console.error("[shutdown] NATS drain error:",y1));console.log("[shutdown] Flushing telemetry..."),await aP().catch((y1)=>console.error("[shutdown] Telemetry flush error:",y1)),console.log("[shutdown] Closing database..."),await M91(Y).catch((y1)=>console.error("[shutdown] Database close error:",y1)),console.log("[shutdown] Cleanup complete.")}})}var bF8,kF8=5000,Ip1=null,Kd=null,He=null,dT=null,vF8=async(X)=>{let Y=X.req.param("connectionId");if(!Y)return X.json({error:"Missing connectionId"},400);let G=X.req.path.split("/").filter(Boolean),Q=G[G.length-1],J=X.get("meshContext");if(!J)J=await GB.create(X.req.raw),X.set("meshContext",J);let W=X.req.param("org")?J.organization?.id:void 0,Z=await J.storage.connections.findById(Y,W);if(!Z?.connection_url)return X.json({error:"Connection not found"},404);let $=await Gs(Z.connection_url),K,H=new URL(Z.connection_url);if($.ok)K=(await $.json()).authorization_servers?.[0];if(!K)K=H.origin;let U=await uZ1(K);if(!U.ok)return X.json({error:"Failed to get auth server metadata"},502);let B=await U.json(),N;if(Q==="authorize")N=B.authorization_endpoint;else if(Q==="token")N=B.token_endpoint;else if(Q==="register")N=B.registration_endpoint;if(!N)return X.json({error:`Unknown OAuth endpoint: ${Q}`},404);let z=new URL(N),O=new URL(X.req.url);if(z.search=O.search,Q==="authorize"){let R=z.searchParams.get("redirect_uri");if(R){let C=u4().baseUrl??O.origin;try{let _=new URL(R),v=new URL(C);if(!(_.origin===v.origin||_.hostname==="localhost"))return X.json({error:"invalid_request",error_description:"redirect_uri is not allowed"},400)}catch{return X.json({error:"invalid_request",error_description:"redirect_uri is malformed"},400)}z.searchParams.set("redirect_uri",R)}if(z.searchParams.has("resource"))z.searchParams.set("resource",Z.connection_url);if(yw6(Z.connection_url))try{let C=await RU7(J,Z.organization_id),_=SU7(C);for(let[v,y]of _)z.searchParams.set(v,y)}catch(C){console.warn("[oauth-proxy] Failed to get smart OAuth params, proceeding without:",C)}return X.redirect(z.toString(),302)}let D={Accept:X.req.header("Accept")||"application/json"},E=X.req.header("Content-Type");if(E)D["Content-Type"]=E;let P=X.req.header("Authorization");if(P)D.Authorization=P;let q;if(X.req.method!=="GET"&&X.req.method!=="HEAD")if(Q==="token"&&E?.includes("application/x-www-form-urlencoded")){let R=await X.req.formData();if(R.has("resource"))R.set("resource",Z.connection_url);let C=new URLSearchParams;for(let[_,v]of R.entries())C.append(_,v.toString());q=C.toString()}else q=X.req.raw.body??void 0;let j=await fetch(z.toString(),{method:X.req.method,headers:D,body:q,duplex:"half",redirect:"manual"}),M=new Headers,I=["connection","keep-alive","transfer-encoding","content-encoding","content-length"];for(let[R,C]of j.headers.entries())if(!I.includes(R.toLowerCase()))M.set(R,C);return new Response(j.body,{status:j.status,statusText:j.statusText,headers:M})},_F8=async(X)=>{let Y=X.var.meshContext,G=Y.organization?.id??X.req.param("organizationId");if(!G)return X.json({error:"organization id missing"},400);return await Y.eventBus.publish(G,P7.SELF(G),{data:await X.req.json(),type:`public:${X.req.param("type")}`,subject:X.req.query("subject"),deliverAt:X.req.query("deliverAt"),cron:X.req.query("cron")}),X.json({success:!0})},fF8=async(X)=>{let Y=X.var.meshContext;if(!(Y.auth.user?.id??Y.auth.apiKey?.userId))return X.json({error:"Unauthorized"},401);let Q=Y.organization?.id??X.req.param("organizationId")??null;if(!Q)return X.json({error:"organization id missing"},400);if(Q!==Y.organization?.id)return X.json({error:"Forbidden access to organization"},403);let J=X.req.query("types"),W=J?J.split(",").map(($)=>$.trim()).filter(Boolean):null,Z=crypto.randomUUID();return gT(X,async($)=>{if(await $.writeSSE({event:"connected",data:JSON.stringify({listenerId:Z,organizationId:Q,typePatterns:W,connectedAt:new Date().toISOString()})}),!zK.add({id:Z,organizationId:Q,typePatterns:W?.length?W:null,push:(U)=>{$.writeSSE({id:U.id,event:U.type,data:JSON.stringify(U)}).catch(()=>{zK.remove(Q,Z)})}})){await $.writeSSE({event:"error",data:JSON.stringify({error:"Too many connections",message:"SSE connection limit reached. Try again later."})});return}let H=setInterval(()=>{$.writeSSE({event:"keepalive",data:""}).catch(()=>{clearInterval(H)})},30000);await new Promise((U)=>{$.onAbort(()=>{clearInterval(H),zK.remove(Q,Z),U()})})})},kU7,CU7=()=>D90(kY),vU7=()=>O90(kY);var xF8=w(()=>{l9();$r();q7();iX();NI0();AL6();OI0();aR();hZ1();ZU();ez();dx0();T$();ox0();Yh0();AK8();Oh0();Dh0();dK8();kh0();Eh0();aS1();lZ1();aK8();oS1();Ah0();Vh0();sK8();YH8();Ih0();Th0();_h0();tt();jj1();WH8();gH();$H8();HH8();NH8();dR1();OH8();oK();TH8();mh0();SW1();Fh0();ni1();VH8();uM0();MH8();CO1();wI0();kH8();kW1();dx0();bF8=X1($Y0(),1);kU7=new bF8.PrometheusSerializer});var hF8,fU7,bU7=(X,Y)=>{if(!X)return{};let G=new Headers(X.headers);if(Y){let Q=G.get("connection");if(Q){let J=Q.split(",").map((Z)=>Z.trim()),W=J.filter((Z)=>!fU7.test(Z));if(W.length>0)throw new E5(400,{message:`Invalid Connection header value: ${W.join(", ")}`});J.forEach((Z)=>{G.delete(Z)})}}return hF8.forEach((Q)=>{G.delete(Q)}),{method:X.method,body:X.body,duplex:X.body?"half":void 0,headers:G,signal:X.signal}},yU7=(X)=>{if(!X.headers||Array.isArray(X.headers)||X.headers instanceof Headers)return X;let Y=new Headers;for(let[G,Q]of Object.entries(X.headers))if(Q==null)Y.delete(G);else Y.set(G,Q);return X.headers=Y,X},gF8=async(X,Y)=>{let{raw:G,customFetch:Q,strictConnectionProcessing:J=!1,...W}=Y instanceof Request?{raw:Y}:Y??{},Z=new Request(X,{...bU7(G,J),...yU7(W)});Z.headers.delete("accept-encoding");let $=await(Q||fetch)(Z),K=new Headers($.headers);if(hF8.forEach((H)=>{K.delete(H)}),K.has("content-encoding"))K.delete("content-encoding"),K.delete("content-length");return new Response($.body,{status:$.status,statusText:$.statusText,headers:K})};var uF8=w(()=>{gw();hF8=["connection","keep-alive","proxy-authenticate","proxy-authorization","te","trailer","transfer-encoding","upgrade"],fU7=/^[!#$%&'*+\-.0-9A-Z^_`a-z|~]+$/});var lF8=(X)=>(Y)=>{let G=new URL(Y.req.raw.url),Q=new URL(X);return Q.pathname=G.pathname,Q.search=G.search,gF8(Q,{raw:Y.req.raw,headers:{...Y.req.raw.headers}})};var mF8=w(()=>{uF8()});var pF8={};T0(pF8,{resolveClientDir:()=>cU7,resolveAssetPathWithTraversalCheck:()=>iF8,isPathWithinDirectory:()=>cF8,createAssetHandler:()=>iU7});import{resolve as xW1,dirname as xU7,join as hU7,extname as gU7,basename as uU7,sep as dF8}from"path";function lU7(X,Y){if(X===Y||uU7(X)==="index.html")return{"Cache-Control":"no-cache"};if(X.includes(`${dF8}assets${dF8}`))return{"Cache-Control":"public, max-age=31536000, immutable"};return{}}function cF8(X,Y){let G=xW1(Y),Q=xW1(X);return Q===G||Q.startsWith(G+"/")}function iF8({requestPath:X,clientDir:Y}){let G=X.startsWith("/")?X.slice(1):X,Q=xW1(Y,G);if(!cF8(Q,Y))return null;return Q}function cU7(X,Y="../client"){let G=new URL(X),Q=xU7(G.pathname);return xW1(Q,Y)}function iU7(X={}){let{env:Y="production",devServerUrl:G=mU7,clientDir:Q=dU7,isServerPath:J=()=>!1}=X;if(Y==="development"){let W=lF8(G);return async function($){let K=new URL($.url);if(J(K.pathname))return null;let H={req:{raw:$,url:$.url}};return W(H)}}return async function(Z){if(Z.method!=="GET")return null;let $=new URL(Z.url),K;try{K=decodeURIComponent($.pathname)}catch{return null}if(J(K))return null;let H=iF8({requestPath:K,clientDir:Q});if(!H)return null;let U=hU7(H,"index.html"),B=xW1(Q,"index.html"),N=Z.headers.get("accept"),O=N?.includes("text/html")||N?.includes("*/*")&&["",".html"].includes(gU7(H))?[U,B]:[];for(let D of[H,...O])try{let E=Bun.file(D);if(await E.exists())return new Response(E,{headers:lU7(D,B)})}catch{}if(K.includes("/assets/"))return new Response("Not Found",{status:404,headers:{"Cache-Control":"no-store"}});return null}}var mU7,dU7="./dist/client";var nF8=w(()=>{mF8();mU7=`http://localhost:${process.env.VITE_PORT||"4000"}`});var tF8={};T0(tF8,{tryUpgradePreviewWs:()=>tU7,tryHandlePreviewHttp:()=>nU7,previewWebSocketHandler:()=>aU7,parsePreviewBaseDomain:()=>pU7,isPreviewWsData:()=>Vp1,extractHandleFromHost:()=>Qg0});function pU7(X){if(!X||X.trim()==="")return null;let Y=X.includes("{handle}")?X.replace("{handle}","__handle__"):X,G;try{G=new URL(Y)}catch{return null}let Q=G.hostname;if(X.includes("{handle}")){let J=Q.indexOf(".");if(J<=0||J===Q.length-1)return null;return Q.slice(J+1)}return Q}function Qg0(X,Y){if(!X||!Y)return null;let G=X.indexOf(":"),Q=(G>=0?X.slice(0,G):X).toLowerCase(),W=`.${Y.toLowerCase().replace(/^\.+|\.+$/g,"")}`;if(!Q.endsWith(W))return null;let Z=Q.slice(0,Q.length-W.length);if(!Z||Z.includes("."))return null;return Z}async function nU7(X,Y){let G=Qg0(X.headers.get("host"),Y.baseDomain);if(!G)return null;let Q=await Y.getRunner();if(!Q)return gW1(503,"preview proxy not configured");return Q.proxyPreviewRequest(G,X)}function gW1(X,Y){return new Response(JSON.stringify({error:Y}),{status:X,headers:{"content-type":"application/json","access-control-allow-origin":"*"}})}function Vp1(X){return typeof X==="object"&&X!==null&&X.kind==="preview"}async function tU7(X,Y,G){if((X.headers.get("upgrade")??"").toLowerCase()!=="websocket")return null;let Q=Qg0(X.headers.get("host"),G.baseDomain);if(!Q)return null;let J=await G.getRunner();if(!J)return gW1(503,"preview proxy not configured");let W=await J.resolvePreviewUpstreamUrl(Q);if(!W)return gW1(404,"sandbox not found");let Z=new URL(X.url);if(Z.pathname.startsWith("/_decopilot_vm"))return gW1(404,"not found");let $=`${W.replace(/^http/,"ws")}${Z.pathname}${Z.search}`,K=X.headers.get("sec-websocket-protocol"),H=K?K.split(",").map((N)=>N.trim()).filter(Boolean):[],U={kind:"preview",upstreamUrl:$,upstreamProtocols:H,pending:[],upstream:null,closed:!1};if(!Y.upgrade(X,{data:U}))return gW1(426,"upgrade failed");return}function hW1(X,Y,G,Q){if(Y.closed)return;Y.closed=!0;try{X.close(G,Q)}catch{}try{Y.upstream?.close()}catch{}}var aU7;var aF8=w(()=>{aU7={open(X){let Y=X.data;if(!Vp1(Y))return;let G;try{G=Y.upstreamProtocols.length>0?new WebSocket(Y.upstreamUrl,Y.upstreamProtocols):new WebSocket(Y.upstreamUrl)}catch(Q){console.warn(`[preview-ws] failed to dial upstream ${Y.upstreamUrl}: ${Q instanceof Error?Q.message:String(Q)}`),hW1(X,Y,1011,"upstream connect failed");return}G.binaryType="arraybuffer",Y.upstream=G,G.addEventListener("open",()=>{while(Y.pending.length>0){let Q=Y.pending.shift();if(Q!==void 0)G.send(Q)}}),G.addEventListener("message",(Q)=>{if(Y.closed)return;X.send(Q.data)}),G.addEventListener("close",(Q)=>{hW1(X,Y,Q.code||1000,Q.reason||"")}),G.addEventListener("error",()=>{hW1(X,Y,1011,"upstream error")})},message(X,Y){let G=X.data;if(!Vp1(G))return;let Q=G.upstream;if(Q&&Q.readyState===WebSocket.OPEN){Q.send(Y);return}if(G.pending.length>=256){hW1(X,G,1011,"preview ws backlog overflow");return}G.pending.push(Y)},close(X){let Y=X.data;if(!Vp1(Y))return;hW1(X,Y,1000,"")}}});var zB7={};import{existsSync as XB7}from"fs";function JB7(X){let Y=new Headers(X.headers);for(let[G,Q]of Object.entries(QB7))Y.set(G,Q);return new Response(X.body,{status:X.status,statusText:X.statusText,headers:Y})}async function jp1(X){if(sF8)return;sF8=!0,console.log(`
|
|
8019
|
+
This workflow expects structured input. Use COLLECTION_WORKFLOW_GET to inspect the full input schema.`})(),inputSchema:F.object({input:F.record(F.string(),F.unknown()).optional().describe("Input data for the workflow. Steps reference these values via @input.field."),virtual_mcp_id:F.string().optional().describe($.virtual_mcp_id?`Virtual MCP ID to use for execution (defaults to "${$.virtual_mcp_id}").`:"Virtual MCP ID that will execute the workflow steps."),start_at_epoch_ms:F.number().int().min(0).optional().describe("Unix timestamp (ms) for scheduled execution. Omit to start immediately.")}),outputSchema:F.object({execution_id:F.string().describe("ID of the created workflow execution.")}),execute:async(U)=>{let{connectionId:B,meshUrl:N,token:z}=Ap1(U);if(!B||!N)throw Error(`[${K}] Missing MESH_REQUEST_CONTEXT (connectionId or meshUrl).`);let O=U.context,D=O.virtual_mcp_id??$.virtual_mcp_id,E=qp1.workflowId(B,$.title);return{execution_id:await qp1.createExecution(N,z,{workflow_collection_id:E,virtual_mcp_id:D,input:O.input,start_at_epoch_ms:O.start_at_epoch_ms})}}})}):[]]},wF8=(X)=>{let Y=null,G=null,Q=null,J=!1,W=()=>{if(!J)console.warn("[runtime] Passing factory functions to tools/prompts/resources is deprecated. Pass createTool()/createPrompt()/createResource() instances directly."),J=!0},Z=(z)=>typeof z==="object"&&z!==null&&(("id"in z)||("name"in z)||("uri"in z));async function $(z,O){if(!z)return[];return(await Promise.all(z.flatMap(async(D)=>{if(Z(D))return[D];W();let E=await D(O);if(Array.isArray(E))return E;return[E]}))).flat()}let K=async(z)=>{if(Y)return Y;if(G)return G;return G=(async()=>{try{let O;if(typeof X.tools==="function")W(),O=await X.tools(z);else O=await $(X.tools,z);let D=typeof X.workflows==="function"?await X.workflows(z):X.workflows;O.push(...DU7({...X,workflows:D}));let E;if(typeof X.prompts==="function")W(),E=await X.prompts(z);else E=await $(X.prompts,z);let P;if(typeof X.resources==="function")W(),P=await X.resources(z);else P=await $(X.resources,z);let q={tools:O,prompts:E,resources:P,workflows:D};return Y=q,q}catch(O){throw G=null,O}})(),G},H=(z,O)=>{for(let D of O.tools)z.registerTool(D.id,{_meta:D._meta,description:D.description,annotations:D.annotations,inputSchema:D.inputSchema&&"shape"in D.inputSchema?D.inputSchema:F.object({}),outputSchema:D.outputSchema&&typeof D.outputSchema==="object"&&"shape"in D.outputSchema?D.outputSchema:void 0},async(E)=>{let P=yW1(),q=await D.execute({context:E,runtimeContext:P},P);if(q!=null&&typeof q==="object"&&"content"in q&&Array.isArray(q.content)&&q.content.every((j)=>j!=null&&typeof j==="object"&&("type"in j)&&typeof j.type==="string"))return q;return{structuredContent:q,content:[{type:"text",text:JSON.stringify(q)}]}});for(let D of O.prompts)z.registerPrompt(D.name,{title:D.title,description:D.description,argsSchema:D.argsSchema?D.argsSchema:F.object({}).shape},async(E)=>{let P=yW1();return await D.execute({args:E,runtimeContext:P},P)});for(let D of O.resources)z.resource(D.name,D.uri,{description:D.description,mimeType:D.mimeType},async(E)=>{let P=yW1(),q=await D.read({uri:E,runtimeContext:P},P),j=q._meta??void 0;if(q.text!==void 0)return{contents:[{uri:q.uri,mimeType:q.mimeType,text:q.text,...j!==void 0?{_meta:j}:{}}]};else if(q.blob!==void 0)return{contents:[{uri:q.uri,mimeType:q.mimeType,blob:q.blob,...j!==void 0?{_meta:j}:{}}]};return{contents:[{uri:q.uri,mimeType:q.mimeType,text:""}]}})},U=async(z)=>{await X.before?.(z);let{instructions:O,...D}=X.serverInfo??{},E=new oD({...D,name:D.name??"@deco/mcp-api",version:D.version??"1.0.0"},{capabilities:{tools:{},prompts:{},resources:{}},...O&&{instructions:O}}),P=await K(z);H(E,P);let q="tools/list",j=E.server._requestHandlers,M=j.get(q);if(M)j.set(q,async(I,R)=>{if(!Q)Q=await M(I,R);return Q});return{server:E,...P}};return{fetch:async(z,O)=>{let{server:D}=await U(O),E=new iH;await D.connect(E);let P=()=>{try{E.close?.()}catch{}try{D.close?.()}catch{}};try{let q=await E.handleRequest(z),j=q.headers.get("content-type");if(!(j?.includes("text/event-stream")||j?.includes("application/json-rpc"))||!q.body)return P(),q;let{readable:I,writable:R}=new TransformStream;return q.body.pipeTo(R).catch(()=>{}).finally(P),new Response(I,{status:q.status,statusText:q.statusText,headers:q.headers})}catch(q){throw P(),q}},callTool:async({toolCallId:z,toolCallInput:O})=>{let D=bW1.getStore();if(!D)throw Error("Missing state, did you forget to call State.bind?");let E=D?.env,{tools:P}=await K(E),j=P.find((I)=>I.id===z)?.execute;if(!j)throw Error(`Tool ${z} not found or does not have an execute function`);let M=yW1();return j({context:O,runtimeContext:M},M)}}};var Tp1=w(()=>{EQ1();y71();Ks();K0();$e();Xg0();eh0();Gg0();Xg0()});var wU7=({env:X,server:Y,url:G})=>{X.SELF=new Proxy({},{get:(Q,J)=>{if(J==="toJSON")return null;return async(W)=>{return await Y.callTool({toolCallId:J,toolCallInput:W})}}}),X.IS_LOCAL=(G?.startsWith("http://localhost")||G?.startsWith("http://127.0.0.1"))??!1},LF8=(X)=>()=>{return{...X??{}}},LU7=({env:X,server:Y,tokenOrContext:G,url:Q,authToken:J})=>{let W=X,Z=J?J.split(" ")[1]:void 0,$;if(typeof G==="string"){let K=c9(G),H=K.metadata??{};$={authorization:Z,state:K.state??H.state??{},token:G,meshUrl:K.meshUrl??H.meshUrl,connectionId:K.connectionId??H.connectionId,organizationId:K.organizationId??H.organizationId,organizationName:K.organizationName??H.organizationName,organizationSlug:K.organizationSlug??H.organizationSlug,ensureAuthenticated:LF8(K.user??K.sub)}}else if(typeof G==="object"){$=G;let K=c9(G.token),H=K.metadata??{},U=K.appName;$.authorization??=Z,$.callerApp=U,$.connectionId??=K.connectionId??H.connectionId,$.organizationId??=K.organizationId??H.organizationId,$.organizationName??=K.organizationName??H.organizationName,$.organizationSlug??=K.organizationSlug??H.organizationSlug,$.ensureAuthenticated=LF8(K.user??K.sub)}else $={state:{},authorization:Z,token:void 0,meshUrl:void 0,connectionId:void 0,ensureAuthenticated:()=>{throw Error("Unauthorized")}};return W.MESH_REQUEST_CONTEXT=$,$.state=oH8($),wU7({env:W,server:Y,url:Q}),W},EU7,EF8=(X)=>{let Y=wF8(X),G=X.cors??EU7,Q=X.oauth,J=Q?ZF8(Q):null,W=async(Z,$,K)=>{let H=new URL(Z.url);if(J){if(H.pathname==="/.well-known/oauth-protected-resource"||H.pathname==="/mcp/.well-known/oauth-protected-resource")return J.handleProtectedResourceMetadata(Z);if(H.pathname==="/.well-known/oauth-authorization-server")return J.handleAuthorizationServerMetadata(Z);if(H.pathname==="/authorize")return J.handleAuthorize(Z);if(H.pathname==="/oauth/callback")return J.handleOAuthCallback(Z);if(H.pathname==="/token"&&Z.method==="POST")return J.handleToken(Z);if((H.pathname==="/register"||H.pathname==="/mcp/register")&&Z.method==="POST")return J.handleClientRegistration(Z)}if(H.pathname==="/mcp"){if(Z.method==="GET")return new Response("Method not allowed",{status:405});if(J&&!J.hasAuth(Z)){let U=Z.clone();try{if((await U.json())?.method!=="tools/list")return J.createUnauthorizedResponse(Z)}catch{return J.createUnauthorizedResponse(Z)}}return Y.fetch(Z,$,K)}if(H.pathname.startsWith("/mcp/call-tool")){let U=H.pathname.split("/").pop();if(!U)return new Response("Not found",{status:404});let B=await Z.json(),N=await Y.callTool({toolCallId:U,toolCallInput:B});if(N instanceof Response)return N;return new Response(JSON.stringify(N),{headers:{"Content-Type":"application/json"}})}return X.fetch?.(Z,$,K)||new Response("Not found",{status:404})};return{fetch:async(Z,$,K)=>{if(new URL(Z.url).pathname==="/_healthcheck")return new Response("OK",{status:200});if(G!==!1&&Z.method==="OPTIONS")return eH8(Z,G??{});let H=LU7({authToken:Z.headers.get("authorization")??null,env:{...process.env,...$},server:Y,tokenOrContext:Z.headers.get("x-mesh-token")??void 0,url:Z.url}),U=await bW1.run({req:Z,env:H,ctx:K},async()=>await W(Z,H,K));if(G!==!1)return XF8(U,Z,G??{});return U}}};var PF8=w(()=>{RJ();$e();YF8();sh0();sh0();eh0();Tp1();Tp1();Gg0();$e();Op1();EU7={origin:(X)=>{if(X.includes("localhost")||X.includes("127.0.0.1"))return X;return X},credentials:!0,allowMethods:["GET","POST","PUT","DELETE","OPTIONS"],allowHeaders:["Content-Type","Authorization","mcp-protocol-version"]}});function PU7(X,Y){let G=ZO({id:"COLLECTION_REGISTRY_APP_LIST",description:"List public registry items",annotations:{readOnlyHint:!0,idempotentHint:!0},inputSchema:Us,outputSchema:Bs,execute:async({context:$})=>{return await X.listPublic(Y,{limit:$.limit,offset:$.offset,cursor:$.cursor,tags:$.tags,categories:$.categories,where:$.where})}}),Q=ZO({id:"COLLECTION_REGISTRY_APP_GET",description:"Get a public registry item by ID or name",annotations:{readOnlyHint:!0,idempotentHint:!0},inputSchema:hz,outputSchema:eR,execute:async({context:$})=>{let K=$.id??$.name;if(!K)return{item:null};let H=await X.findByIdOrName(Y,K);if(H&&H.is_public)return{item:H};return{item:null}}}),J=ZO({id:"COLLECTION_REGISTRY_APP_VERSIONS",description:"Get available versions of a public registry item",annotations:{readOnlyHint:!0,idempotentHint:!0},inputSchema:hz,outputSchema:F.object({versions:F.array(eR.shape.item)}),execute:async({context:$})=>{let K=$.id??$.name;if(!K)return{versions:[]};let H=await X.findByIdOrName(Y,K);if(H&&H.is_public)return{versions:[H]};return{versions:[]}}}),W=ZO({id:"COLLECTION_REGISTRY_APP_SEARCH",description:"Search public registry items returning minimal data (id, title, tags, categories, is_public). Use this instead of LIST when you need to find items efficiently without loading full details.",annotations:{readOnlyHint:!0,idempotentHint:!0},inputSchema:Yk1,outputSchema:Gk1,execute:async({context:$})=>{return await X.search(Y,$,{publicOnly:!0})}}),Z=ZO({id:"COLLECTION_REGISTRY_APP_FILTERS",description:"Get available tags and categories for public registry items",annotations:{readOnlyHint:!0,idempotentHint:!0},inputSchema:F.object({}),outputSchema:Ns,execute:async()=>{return await X.getFilters(Y,{publicOnly:!0})}});return[G,W,Q,J,Z]}function qF8(X){let Y=X.db,G=new Ro(Y);return async(Q)=>{let J=Q.req.param("orgSlug")??Q.req.param("org");if(!J)return Q.json({error:"Organization not found"},404);let W=await Y.selectFrom("organization").select(["id","slug","name"]).where("slug","=",J).executeTakeFirst();if(!W)return Q.json({error:"Organization not found"},404);let Z=PU7(G,W.id),$=EF8({tools:Z}),K=new URL(Q.req.url),H=Q.req.path.indexOf("/registry"),U=H>=0?Q.req.path.slice(H+9):"",B=new URL(U||"/",K.origin);K.searchParams.forEach((O,D)=>{B.searchParams.set(D,O)});let N=new Request(B.toString(),{method:Q.req.method,headers:Q.req.raw.headers,body:Q.req.method!=="GET"&&Q.req.method!=="HEAD"?Q.req.raw.body:void 0}),z={organizationId:W.id,db:Y,MESH_REQUEST_CONTEXT:{},MESH_APP_DEPLOYMENT_ID:"public-registry",IS_LOCAL:!1};return await $.fetch(N,z,Q)}}var AF8=w(()=>{PF8();Tp1();K0();pM0();WY()});import{randomUUID as TF8}from"crypto";async function AU7(X){let Y=new Date().toISOString(),G=TF8(),Q=P7.SELF(X.organizationId),J="registry.publish_request.created",W={requestId:X.request.id,requestedId:X.request.requested_id,title:X.request.title,status:X.request.status,createdAt:X.request.created_at,requester:{name:X.request.requester_name,email:X.request.requester_email}};await X.db.insertInto("events").values({id:G,organization_id:X.organizationId,type:"registry.publish_request.created",source:Q,specversion:"1.0",subject:X.request.id,time:Y,datacontenttype:"application/json",dataschema:null,data:JSON.stringify(W),cron:null,status:"pending",attempts:0,last_error:null,next_retry_at:null,created_at:Y,updated_at:Y}).execute();let Z=await X.db.selectFrom("event_subscriptions").select(["id"]).where("organization_id","=",X.organizationId).where("enabled","=",1).where("event_type","=","registry.publish_request.created").where(($)=>$.or([$("publisher","is",null),$("publisher","=",Q)])).execute();if(Z.length>0)await X.db.insertInto("event_deliveries").values(Z.map(($)=>({id:TF8(),event_id:G,subscription_id:$.id,status:"pending",attempts:0,last_error:null,delivered_at:null,next_retry_at:null,created_at:Y}))).execute();try{await B1`SELECT pg_notify('mesh_events', ${G})`.execute(X.db)}catch{}}async function TU7(X,Y){let Q=(await X.selectFrom("organization").select(["id"]).where("id","=",Y).execute())[0];if(Q?.id)return Q.id;return(await X.selectFrom("organization").select(["id"]).where("slug","=",Y).execute())[0]?.id??null}async function IU7(X,Y){let G=await X.selectFrom("virtual_mcp_plugin_configs").innerJoin("connections","connections.id","virtual_mcp_plugin_configs.virtual_mcp_id").select(["virtual_mcp_plugin_configs.settings as settings"]).where("connections.organization_id","=",Y).where("virtual_mcp_plugin_configs.plugin_id","=",BS).execute();for(let Q of G){let J=Q.settings,W=typeof J==="string"?(()=>{try{return JSON.parse(J)}catch{return{}}})():J??{};if(W.acceptPublishRequests===!0){let Z=W.rateLimitWindow==="minute"?"minute":"hour",$=W.rateLimitMax,K=typeof $==="number"&&Number.isFinite($)&&$>=1?Math.floor($):VF8;return{acceptPublishRequests:!0,requireApiToken:W.requireApiToken===!0,rateLimitEnabled:W.rateLimitEnabled===void 0?IF8:W.rateLimitEnabled===!0,rateLimitWindow:Z,rateLimitMax:K}}}return{acceptPublishRequests:!1,requireApiToken:!1,rateLimitEnabled:IF8,rateLimitWindow:qU7,rateLimitMax:VF8}}async function VU7(X,Y,G){let Q=G==="minute"?60000:3600000,J=new Date(Date.now()-Q).toISOString(),W=await X.selectFrom("private_registry_publish_request").select((Z)=>Z.fn.countAll().as("count")).where("organization_id","=",Y).where("created_at",">=",J).executeTakeFirst();return Number(W?.count??0)}async function jU7(X,Y,G,Q){let J=await X.selectFrom("private_registry_item").select(["id","title"]).where("organization_id","=",Y).where((W)=>W.or([W("id","=",G),W("title","=",Q)])).executeTakeFirst();return J?{id:String(J.id),title:String(J.title)}:null}function jF8(X){let{db:Y,db:G}=X,Q=new So(G),J=new ko(G);return async(W)=>{let Z=W.req.param("orgRef")??W.req.param("org");if(!Z)return W.json({error:"Organization not found"},404);let $=await TU7(Y,Z);if(!$)return W.json({error:"Organization not found"},404);let K=await IU7(Y,$);if(!K.acceptPublishRequests)return W.json({error:"Publish requests are not enabled for this registry."},403);if(K.requireApiToken){let z=W.req.header("Authorization"),O=z?.startsWith("Bearer ")?z.slice(7).trim():null;if(!O)return W.json({error:"API key required. Use Authorization: Bearer <key>"},401);if(!await J.validate($,O))return W.json({error:"Invalid API key"},401)}if(K.rateLimitEnabled){if(await VU7(G,$,K.rateLimitWindow)>=K.rateLimitMax)return W.json({error:"Too many publish requests. Please try again later.",retryAfterSeconds:K.rateLimitWindow==="minute"?60:3600},429)}let H;try{H=await W.req.json()}catch{return W.json({error:"Invalid JSON body"},400)}let U=Qu6.safeParse(H);if(!U.success)return W.json({error:"Invalid publish request payload",details:F.treeifyError(U.error)},400);let B=await jU7(G,$,U.data.data.id,U.data.data.title);if(B)return W.json({error:"A registry item with the same id or title already exists. Please use a different name/id.",conflict:B},409);let N=await Q.createOrUpdate({organization_id:$,requested_id:U.data.data.id,title:U.data.data.title,description:U.data.data.description??null,_meta:U.data.data._meta,server:U.data.data.server,requester_name:U.data.requester?.name??null,requester_email:U.data.requester?.email??null});try{await AU7({db:Y,organizationId:$,request:N})}catch(z){console.warn("[private-registry] failed to emit publish-request event:",z)}return M6.capture({distinctId:U.data.requester?.email??`org:${$}`,event:"registry_publish_request_submitted",groups:{organization:$},properties:{organization_id:$,request_id:N.id,requested_id:N.requested_id,title:U.data.data.title,requester_email:U.data.requester?.email??null}}),W.json({id:N.id,requested_id:N.requested_id,status:N.status},201)}}var IF8=!0,qU7="hour",VF8=100;var MF8=w(()=>{CX();q7();B6();K0();js();nM0();tM0();WY()});var RF8={};T0(RF8,{createPublishRequestHandler:()=>jF8,createPublicMCPHandler:()=>qF8});var SF8=w(()=>{AF8();MF8()});var yF8={};T0(yF8,{createApp:()=>_U7});async function MU7(X){let Y=X.connect(),G;try{G=await Promise.race([Y,CF8(kF8)])}catch{return Y.then((Q)=>Q.release(!0)).catch(()=>{}),!1}try{return await Promise.race([G.query("SELECT 1"),CF8(kF8)]),G.release(),!0}catch{return G.release(!0),!1}}function CF8(X){return new Promise((Y,G)=>setTimeout(()=>G(Error("pg health-check timeout")),X))}async function RU7(X,Y){let{items:G}=await X.storage.connections.list(Y,{where:{field:["connection_url"],operator:"like",value:`${bw6}%`},limit:1}),Q=G[0];if(!Q?.configuration_state)return null;return Q.configuration_state.project_locator}function SU7(X){let Y=new URLSearchParams;if(X){let[G,Q]=X.split("/");if(G)Y.set("workspace_hint",G);if(Q)Y.set("project_hint",Q)}else Y.set("auto_personal","true");return Y.set("force_new","true"),Y}async function _U7(X={}){let Y=X.database??a7(),G=!1;if(dT)clearInterval(dT),dT=null;if(Ip1&&Ip1.isRunning())Promise.resolve(Ip1.stop()).catch((j1)=>{console.error("[EventBus] Error stopping previous worker:",j1)}),zK.stop().catch((j1)=>{console.error("[SSEHub] Error stopping previous broadcast (HMR cleanup):",j1)});let Q,J,W,Z,$,K=null;if(X.eventBus)Q=X.eventBus,J={get:async()=>null,set:async()=>{},invalidate:async()=>{},teardown:()=>{}},W={get:async()=>null,set:async()=>{},invalidate:async()=>{},teardown:()=>{}},Z={start:async()=>{},broadcast:()=>{},stop:async()=>{}},$={init:async()=>{},relay:(j1)=>j1,createReplayStream:async()=>null,purge:()=>{},teardown:()=>{}};else{K=ZH8(),K.init(u4().natsUrls);let j1=new Ij0({getJetStream:()=>K.getJetStream()});j1.init().catch(()=>{}),J=j1;let y1=new bh0({getJetStream:()=>K.getJetStream()});y1.init().catch(()=>{}),W=y1,Z=new yh0({getConnection:()=>K.getConnection()}),$=new hh0({getConnection:()=>K.getConnection(),getJetStream:()=>K.getJetStream()}),Q=VW8(Y,K),K.onReady(()=>{j1.init().catch((e1)=>{console.error("[McpListCache] Deferred init failed:",e1)}),y1.init().catch((e1)=>{console.error("[ModelListCache] Deferred init failed:",e1)}),$.init().catch((e1)=>{console.warn("[StreamBuffer] Deferred init failed, late-join disabled:",e1)})})}if(Ip1=Q,He)await He();Vj0(J);let H=new yJ1(Y.db),U={storage:H,streamBuffer:$,sseHub:zK},B=Gd(),N=new gh0(U,B);Z.start((j1)=>{N.execute({type:"CANCEL",taskId:j1}).catch((y1)=>{console.error("[Decopilot] CancelBroadcast execute failed:",y1)})}).catch((j1)=>{console.error("[Decopilot] CancelBroadcast start failed:",j1)}),K?.onReady(()=>{Z.start().catch((j1)=>{console.error("[CancelBroadcast] Deferred start failed:",j1)})}),$.init().catch((j1)=>{console.warn("[Decopilot] StreamBuffer init failed, attach/late-join disabled:",j1)});let z=null;if(K)z=new dh0({getConnection:()=>K.getConnection(),getJetStream:()=>K.getJetStream()}),z.init().then(()=>{z.start(B)}).catch(()=>{}),K.onReady(()=>{z.init().then(()=>{z.start(B)}).catch((j1)=>{console.error("[PodHeartbeat] Deferred init failed:",j1)})});He=async()=>{await z?.stop(),await N.stopAll(),N.dispose(),Z.stop().catch(()=>{}),$.teardown(),J.teardown(),W.teardown(),Vj0(null)};let O=new A6;if(O.use("*",zI0({enabled:(j1)=>iV1(j1,"debug")==="1"})),O.use("*",s30),O.use("/*",qL6({origin:(j1)=>{if(j1.includes("localhost")||j1.includes("127.0.0.1"))return j1;return j1},credentials:!0,allowMethods:["GET","POST","PUT","DELETE","OPTIONS"],allowHeaders:["Content-Type","Authorization","mcp-protocol-version"],exposeHeaders:["WWW-Authenticate"]})),O.use("*",async(j1,y1)=>{await y1(),j1.header("X-Frame-Options","DENY"),j1.header("Content-Security-Policy","frame-ancestors 'none'")}),!u4().noTui)O.use("*",SH8());O.use("*",async(j1,y1)=>{if(await y1(),j1.res.status>=500){let Z0=await j1.res.clone().text();console.error(`[5xx Response] ${j1.req.method} ${j1.req.path} - ${j1.res.status}:`,Z0)}}),O.get(uT.HEALTH_LIVE,(j1)=>{return j1.json({status:"ok"})}),O.get(uT.HEALTH_READY,async(j1)=>{if(G)return j1.json({status:"shutting_down"},503);let y1={};if(y1.postgres={status:await MU7(Y.pool)?"up":"down"},K)y1.nats=K.isConnected()?{status:"up"}:{status:"down"};else y1.nats={status:"down"};let e1=y1.postgres.status==="up",Z0=e1?200:503;return j1.json({status:e1?"ready":"not_ready",services:y1},Z0)}),O.get(uT.METRICS,async(j1)=>{try{let y1=await XW0.collect(),e1=kU7.serialize(y1.resourceMetrics);return j1.text(e1,200,{"Content-Type":"text/plain; version=0.0.4; charset=utf-8"})}catch(y1){return console.error("Failed to collect metrics:",y1),j1.text("# Error collecting metrics",500)}}),O.route("/api/config",oK8),O.route("/api/auth/custom",tW8),O.all("/api/auth/*",async(j1)=>{return await kY.handler(j1.req.raw)});let D=zk0();D.use("*",eY),O.route("/",D),O.get("/.well-known/oauth-protected-resource/api/:org/mcp/:connectionId",gZ1),O.route("/",Ok0()),O.use("/oauth-proxy/:connectionId/*",eY),O.all("/oauth-proxy/:connectionId/*",vF8);let E=async(j1)=>{let e1=await CU7()(j1.req.raw),Z0=await e1.json();return Response.json(Z0,e1)};O.use("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",eY),O.get("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",E);let P=async(j1)=>{let e1=await vU7()(j1.req.raw),Z0=await e1.json();return Response.json(Z0,e1)};O.get("/.well-known/oauth-authorization-server/*/:gateway?/:connectionId?",P);let q=FW8({ttlMs:120000}),j=await Oy6({db:Y.db,auth:kY,encryption:{key:u4().encryptionKey},observability:{tracer:EN,meter:JU},eventBus:Q,modelListCache:W,memberRoleCache:q});GB.set(j);let M=new lM(u4().encryptionKey);Qs4(Y.db,M);let I=Math.random()*2000;if(new Promise((j1)=>setTimeout(j1,I)).then(()=>Q.start()).then(()=>{return Zs4({db:Y.db,publish:async(j1,y1)=>{await Q.publish(j1,"",y1)}})}).catch((j1)=>{console.error("[EventBus] Error during startup:",j1)}),Kd)Kd(),Kd=null;let R=MR1(Y.db),C=new kJ1(Y.db),_=new zp1(10),v=jH8({db:Y.db,threadStorage:H}),y=async(j1,y1,e1)=>{let Z0=await R.findById(j1,y1);if(!Z0)throw Error("Automation not found");return fW1({automation:Z0,triggerId:null,storage:R,streamCoreFn:_L,meshContextFactory:v,config:{maxConcurrentPerAutomation:3,runTimeoutMs:300000},globalSemaphore:_,deps:{runRegistry:N,cancelBroadcast:Z}})},h=null;if(K){let j1={getConnection:()=>K.getConnection(),getJetStream:()=>K.getJetStream()},y1=new FT(R,mT.publish),e1=1e4,Z0=async()=>{let f0=Date.now();await mT.init(j1),console.log(`[AutomationJobStream] init completed in ${Date.now()-f0}ms`),await mT.startConsumer(async(R6)=>{let C1=await R.findById(R6.automationId,R6.organizationId);if(!C1)return;await fW1({automation:C1,triggerId:R6.triggerId,storage:R,streamCoreFn:_L,meshContextFactory:v,config:{maxConcurrentPerAutomation:3,runTimeoutMs:300000},globalSemaphore:_,deps:{runRegistry:N,cancelBroadcast:Z}})});let M0=Date.now();await y1.start(),console.log(`[AutomationJobStream] cronWorker.start() completed in ${Date.now()-M0}ms`)},L4=async(f0=5)=>{for(let M0=1;M0<=f0;M0++)try{await Z0();return}catch(R6){if(M0===f0)throw R6;let C1=Math.min(1000*2**(M0-1),1e4);console.warn(`[AutomationJobStream] Start attempt ${M0}/${f0} failed, retrying in ${C1}ms`),await new Promise((X0)=>setTimeout(X0,C1))}};L4().catch((f0)=>{console.error("[AutomationJobStream] Immediate start failed:",f0)}),K.onReady(()=>{L4().catch((f0)=>{console.error("[AutomationJobStream] Deferred start failed:",f0)})}),h=setInterval(()=>{y1.processNow().catch((f0)=>{console.error("[AutomationCron] Error processing:",f0)})},1e4);let l0=60000,U0=!1,z0=setInterval(async()=>{if(U0)return;try{if(await mT.isHealthy(j1))return;U0=!0,console.warn("[AutomationJobStream] Health check failed, reinitializing..."),await L4()}catch(f0){console.error("[AutomationJobStream] Health re-init failed:",f0)}finally{U0=!1}},l0);Kd=()=>{if(h)clearInterval(h),h=null;clearInterval(z0),mT.stop(),y1.stop().catch(()=>{})}}let d=new Zd(R,_L,v,{maxConcurrentPerAutomation:3,runTimeoutMs:300000},_,{runRegistry:N,cancelBroadcast:Z});if("setEventTriggerEngine"in Q)Q.setEventTriggerEngine(d);let i=async(j1)=>{let y1=li1.safeParse(j1.run_config);if(!y1.success){console.warn(`[recovery] Invalid run_config for ${j1.id}, force-failing`),await H.forceFailIfInProgress(j1.id,j1.organization_id);return}let e1=y1.data,Z0=await v(j1.organization_id,j1.created_by);if(!Z0){console.warn(`[recovery] Cannot build context for ${j1.id}, force-failing`),await H.forceFailIfInProgress(j1.id,j1.organization_id);return}let L4=new Date().toISOString();await H.saveMessages([{id:crypto.randomUUID(),thread_id:j1.id,role:"system",parts:[{type:"text",text:"Run resumed automatically after infrastructure restart."}],metadata:void 0,created_at:L4,updated_at:L4}],j1.organization_id);let l0=await _L({messages:[],models:mi1(e1.models),agent:e1.agent,temperature:e1.temperature,toolApprovalLevel:e1.toolApprovalLevel,mode:e1.mode,organizationId:j1.organization_id,userId:j1.created_by,taskId:j1.id,windowSize:e1.windowSize,isResume:!0},Z0,{runRegistry:N,cancelBroadcast:Z});await ai1(l0)};if(z)z.onPodDeath((j1)=>{N.handlePodDeath(j1,i,Z).catch((y1)=>{console.error(`[Decopilot] Pod death recovery failed for ${j1}:`,y1)})});setTimeout(()=>{N.recoverOrphanedRuns(i).catch((j1)=>{console.error("[recovery] Orphan recovery failed:",j1)})},1e4);let f=[AD(),Ow1(),SV()];for(let j1 of f)uh0(j1).then(()=>{}).catch((y1)=>console.error("[monitoring] Retention cleanup failed:",y1));let u=()=>Y.db.deleteFrom("apikey").where("expiresAt","<",new Date).execute().then(()=>{}).catch((j1)=>console.error("[auth] Expired API key cleanup failed:",j1));u(),dT=setInterval(()=>{for(let j1 of f)uh0(j1).catch((y1)=>console.error("[monitoring] Retention cleanup failed:",y1));u()},86400000),dT.unref(),O.use("*",async(j1,y1)=>{if(vh0(j1.req.path))return y1();let e1={measure:async(L4,l0)=>{jH(j1,L4);try{return await l0()}finally{n$(j1,L4)}}},Z0=await GB.create(j1.req.raw,{timings:e1});Z0.automationRunner=y,j1.set("meshContext",Z0);try{await y1()}finally{let L4=Z0.pendingRevalidations;if(L4.length>0)Promise.race([Promise.allSettled(L4),new Promise((U0)=>setTimeout(U0,30000))]).catch((U0)=>console.error("[mesh] revalidation cleanup error:",U0))}}),O.use("/api/:org/decopilot/*",Je),O.use("/api/:org/v1/*",Je),O.use("/api/:org/files/*",Je),O.use("*",async(j1,y1)=>{let e1=j1.req.path;if(e1.startsWith("/api/org-sso/")||e1.startsWith("/api/auth/")||e1.startsWith("/api/tools/management")||e1.startsWith("/oauth-proxy/"))return y1();let Z0=j1.get("meshContext");if(!Z0?.organization?.id||!Z0?.auth?.user?.id)return y1();if(!(await Z0.storage.orgSsoConfig.getByOrgId(Z0.organization.id))?.enforced)return y1();if(!await Z0.storage.orgSsoSessions.isValid(Z0.auth.user.id,Z0.organization.id))return j1.json({error:"SSO authentication required for this organization"},403);return y1()});let a=new A6;a.use("*",eY),a.route("/",xi1()),O.route("/api/org-sso",a),O.get("/api/tools/management",(j1)=>{return j1.json({tools:DI0,grouped:UG1()})}),O.use("/mcp/*",async(j1,y1)=>{jH(j1,"mcp");try{return await y1()}finally{n$(j1,"mcp")}});let r=async(j1,y1)=>{let e1=j1.var.meshContext;if(!e1.auth.user?.id&&!e1.auth.apiKey?.id){let Z0=new URL(j1.req.url);return j1.res=new Response(null,{status:401,headers:{"WWW-Authenticate":`Bearer realm="mcp",resource_metadata="${Z0.origin}${Z0.pathname}/.well-known/oauth-protected-resource"`}})}return await y1()};if(O.use("/mcp/:connectionId?",r),O.use("/mcp/gateway/:virtualMcpId?",r),O.use("/mcp/virtual-mcp/:virtualMcpId?",r),O.use("/mcp/self",r),fU()){let{mountDevRoutes:j1}=(pH8(),Rp1(iH8));j1(O,r)}let U1=new A6;U1.use("*",eY),U1.route("/",tS1()),O.route("/mcp",U1);let w1=new A6;w1.use("*",eY),w1.route("/",Qp1()),O.route("/mcp/self",w1);let $1=new A6;$1.use("*",eY),$1.route("/",rS1()),O.route("/mcp",$1),O.use("/api/:org/models/*",async(j1,y1)=>{jH(j1,"llm_models");try{return await y1()}finally{n$(j1,"llm_models")}});let O1=zh0({cancelBroadcast:Z,streamBuffer:$,runRegistry:N,threadStorage:H});O.route("/api",O1),O.route("/api",XH8);let v1=new A6;v1.use("*",eY),v1.route("/",Jp1()),O.route("/api",v1),O.route("/api",tK8);let o1=new A6;o1.use("*",eY),o1.route("/",Zp1({tokenStorage:C,eventTriggerEngine:d})),O.route("/api",o1);let d1=new ch0(Y.db),h1=new A6;h1.use("*",eY),h1.route("/",Gp1({kvStorage:d1})),O.route("/api",h1),O.use("/org/:organizationId/events/:type",eY),O.post("/org/:organizationId/events/:type",_F8),O.use("/org/:organizationId/watch",eY),O.get("/org/:organizationId/watch",fF8);let Y1=new A6;Y1.use("*",eY),Y1.route("/",oi1()),O.route("/api",Y1),O.route("/api/deco-sites",jK8());let l1=new A6;l1.use("*",eY),l1.route("/",si1()),O.route("/api/deco-sites",l1);let $0=new A6;$0.use("*",eY),$0.route("/",Kp1()),O.route("/api/vm-events",$0);let{createPublishRequestHandler:r1,createPublicMCPHandler:q1}=await Promise.resolve().then(() => (SF8(),RF8)),P1={db:Y.db,vault:{encrypt:(j1)=>M.encrypt(j1),decrypt:(j1)=>M.decrypt(j1)}},z1=r1(P1),W1=q1(P1);O.use("/org/:orgRef/registry/publish-request",eY),O.post("/org/:orgRef/registry/publish-request",z1),O.use("/org/:orgSlug/registry/*",eY),O.all("/org/:orgSlug/registry/*",W1),O.post("/api/:org/registry/publish-request",z1),O.all("/api/:org/registry/*",W1);let k1=mK8({kvStorage:d1,tokenStorage:C,eventTriggerEngine:d,mountDevAssets:fU(),mcpAuth:r,oauthProxyHandler:vF8,eventsHandler:_F8,watchHandler:fF8,betterAuthProtectedResourceHandler:E});return O.route("/api/:org",k1),Gs4(O,{db:Y.db,vault:M}),O.notFound((j1)=>{return j1.json({error:"Not Found",path:j1.req.path},404)}),O.onError((j1,y1)=>{console.error("Server error :",j1);let e1=j1 instanceof Error?j1.message:"Unknown error";return y1.json({error:"Internal Server Error",message:e1},500)}),Object.assign(O,{markShuttingDown:()=>{G=!0},shutdown:async()=>{if(console.log("[shutdown] Stopping workers..."),await Promise.allSettled([Q.isRunning()?Q.stop():Promise.resolve(),zK.stop(),Kd?Promise.resolve(Kd()).finally(()=>{Kd=null}):Promise.resolve(),He?Promise.resolve(He()).finally(()=>{He=null}):Promise.resolve()]),dT)clearInterval(dT),dT=null;let j1=jx0(Vx0());if(j1){let{sweepDockerOrphansOnShutdown:y1}=await Promise.resolve().then(() => (oH(),PS));await y1(j1)}if(K)await K.drain().catch((y1)=>console.error("[shutdown] NATS drain error:",y1));console.log("[shutdown] Flushing telemetry..."),await aP().catch((y1)=>console.error("[shutdown] Telemetry flush error:",y1)),console.log("[shutdown] Closing database..."),await M91(Y).catch((y1)=>console.error("[shutdown] Database close error:",y1)),console.log("[shutdown] Cleanup complete.")}})}var bF8,kF8=5000,Ip1=null,Kd=null,He=null,dT=null,vF8=async(X)=>{let Y=X.req.param("connectionId");if(!Y)return X.json({error:"Missing connectionId"},400);let G=X.req.path.split("/").filter(Boolean),Q=G[G.length-1],J=X.get("meshContext");if(!J)J=await GB.create(X.req.raw),X.set("meshContext",J);let W=X.req.param("org")?J.organization?.id:void 0,Z=await J.storage.connections.findById(Y,W);if(!Z?.connection_url)return X.json({error:"Connection not found"},404);let $=await Gs(Z.connection_url),K,H=new URL(Z.connection_url);if($.ok)K=(await $.json()).authorization_servers?.[0];if(!K)K=H.origin;let U=await uZ1(K);if(!U.ok)return X.json({error:"Failed to get auth server metadata"},502);let B=await U.json(),N;if(Q==="authorize")N=B.authorization_endpoint;else if(Q==="token")N=B.token_endpoint;else if(Q==="register")N=B.registration_endpoint;if(!N)return X.json({error:`Unknown OAuth endpoint: ${Q}`},404);let z=new URL(N),O=new URL(X.req.url);if(z.search=O.search,Q==="authorize"){let R=z.searchParams.get("redirect_uri");if(R){let C=u4().baseUrl??O.origin;try{let _=new URL(R),v=new URL(C);if(!(_.origin===v.origin||_.hostname==="localhost"))return X.json({error:"invalid_request",error_description:"redirect_uri is not allowed"},400)}catch{return X.json({error:"invalid_request",error_description:"redirect_uri is malformed"},400)}z.searchParams.set("redirect_uri",R)}if(z.searchParams.has("resource"))z.searchParams.set("resource",Z.connection_url);if(yw6(Z.connection_url))try{let C=await RU7(J,Z.organization_id),_=SU7(C);for(let[v,y]of _)z.searchParams.set(v,y)}catch(C){console.warn("[oauth-proxy] Failed to get smart OAuth params, proceeding without:",C)}return X.redirect(z.toString(),302)}let D={Accept:X.req.header("Accept")||"application/json"},E=X.req.header("Content-Type");if(E)D["Content-Type"]=E;let P=X.req.header("Authorization");if(P)D.Authorization=P;let q;if(X.req.method!=="GET"&&X.req.method!=="HEAD")if(Q==="token"&&E?.includes("application/x-www-form-urlencoded")){let R=await X.req.formData();if(R.has("resource"))R.set("resource",Z.connection_url);let C=new URLSearchParams;for(let[_,v]of R.entries())C.append(_,v.toString());q=C.toString()}else if(Q==="register"&&E?.toLowerCase().includes("application/json")){let R=await J.db.selectFrom("organization").select(["id","slug","name"]).where("id","=",Z.organization_id).executeTakeFirst(),C=await X.req.text(),_={};try{_=C?JSON.parse(C):{}}catch{q=C}let v=typeof _==="object"&&_!==null&&!Array.isArray(_);if(q===void 0&&!v)q=C;if(q===void 0){let y=_,h=y.metadata&&typeof y.metadata==="object"?y.metadata:{};y.metadata={...h,organization_id:Z.organization_id,...R?.slug?{organization_slug:R.slug}:{},...R?.name?{organization_name:R.name}:{}},q=JSON.stringify(y),D["Content-Type"]="application/json"}}else q=X.req.raw.body??void 0;let j=await fetch(z.toString(),{method:X.req.method,headers:D,body:q,duplex:"half",redirect:"manual"}),M=new Headers,I=["connection","keep-alive","transfer-encoding","content-encoding","content-length"];for(let[R,C]of j.headers.entries())if(!I.includes(R.toLowerCase()))M.set(R,C);return new Response(j.body,{status:j.status,statusText:j.statusText,headers:M})},_F8=async(X)=>{let Y=X.var.meshContext,G=Y.organization?.id??X.req.param("organizationId");if(!G)return X.json({error:"organization id missing"},400);return await Y.eventBus.publish(G,P7.SELF(G),{data:await X.req.json(),type:`public:${X.req.param("type")}`,subject:X.req.query("subject"),deliverAt:X.req.query("deliverAt"),cron:X.req.query("cron")}),X.json({success:!0})},fF8=async(X)=>{let Y=X.var.meshContext;if(!(Y.auth.user?.id??Y.auth.apiKey?.userId))return X.json({error:"Unauthorized"},401);let Q=Y.organization?.id??X.req.param("organizationId")??null;if(!Q)return X.json({error:"organization id missing"},400);if(Q!==Y.organization?.id)return X.json({error:"Forbidden access to organization"},403);let J=X.req.query("types"),W=J?J.split(",").map(($)=>$.trim()).filter(Boolean):null,Z=crypto.randomUUID();return gT(X,async($)=>{if(await $.writeSSE({event:"connected",data:JSON.stringify({listenerId:Z,organizationId:Q,typePatterns:W,connectedAt:new Date().toISOString()})}),!zK.add({id:Z,organizationId:Q,typePatterns:W?.length?W:null,push:(U)=>{$.writeSSE({id:U.id,event:U.type,data:JSON.stringify(U)}).catch(()=>{zK.remove(Q,Z)})}})){await $.writeSSE({event:"error",data:JSON.stringify({error:"Too many connections",message:"SSE connection limit reached. Try again later."})});return}let H=setInterval(()=>{$.writeSSE({event:"keepalive",data:""}).catch(()=>{clearInterval(H)})},30000);await new Promise((U)=>{$.onAbort(()=>{clearInterval(H),zK.remove(Q,Z),U()})})})},kU7,CU7=()=>D90(kY),vU7=()=>O90(kY);var xF8=w(()=>{l9();$r();q7();iX();NI0();AL6();OI0();aR();hZ1();ZU();ez();dx0();T$();ox0();Yh0();AK8();Oh0();Dh0();dK8();kh0();Eh0();aS1();lZ1();aK8();oS1();Ah0();Vh0();sK8();YH8();Ih0();Th0();_h0();tt();jj1();WH8();gH();$H8();HH8();NH8();dR1();OH8();oK();TH8();mh0();SW1();Fh0();ni1();VH8();uM0();MH8();CO1();wI0();kH8();kW1();dx0();bF8=X1($Y0(),1);kU7=new bF8.PrometheusSerializer});var hF8,fU7,bU7=(X,Y)=>{if(!X)return{};let G=new Headers(X.headers);if(Y){let Q=G.get("connection");if(Q){let J=Q.split(",").map((Z)=>Z.trim()),W=J.filter((Z)=>!fU7.test(Z));if(W.length>0)throw new E5(400,{message:`Invalid Connection header value: ${W.join(", ")}`});J.forEach((Z)=>{G.delete(Z)})}}return hF8.forEach((Q)=>{G.delete(Q)}),{method:X.method,body:X.body,duplex:X.body?"half":void 0,headers:G,signal:X.signal}},yU7=(X)=>{if(!X.headers||Array.isArray(X.headers)||X.headers instanceof Headers)return X;let Y=new Headers;for(let[G,Q]of Object.entries(X.headers))if(Q==null)Y.delete(G);else Y.set(G,Q);return X.headers=Y,X},gF8=async(X,Y)=>{let{raw:G,customFetch:Q,strictConnectionProcessing:J=!1,...W}=Y instanceof Request?{raw:Y}:Y??{},Z=new Request(X,{...bU7(G,J),...yU7(W)});Z.headers.delete("accept-encoding");let $=await(Q||fetch)(Z),K=new Headers($.headers);if(hF8.forEach((H)=>{K.delete(H)}),K.has("content-encoding"))K.delete("content-encoding"),K.delete("content-length");return new Response($.body,{status:$.status,statusText:$.statusText,headers:K})};var uF8=w(()=>{gw();hF8=["connection","keep-alive","proxy-authenticate","proxy-authorization","te","trailer","transfer-encoding","upgrade"],fU7=/^[!#$%&'*+\-.0-9A-Z^_`a-z|~]+$/});var lF8=(X)=>(Y)=>{let G=new URL(Y.req.raw.url),Q=new URL(X);return Q.pathname=G.pathname,Q.search=G.search,gF8(Q,{raw:Y.req.raw,headers:{...Y.req.raw.headers}})};var mF8=w(()=>{uF8()});var pF8={};T0(pF8,{resolveClientDir:()=>cU7,resolveAssetPathWithTraversalCheck:()=>iF8,isPathWithinDirectory:()=>cF8,createAssetHandler:()=>iU7});import{resolve as xW1,dirname as xU7,join as hU7,extname as gU7,basename as uU7,sep as dF8}from"path";function lU7(X,Y){if(X===Y||uU7(X)==="index.html")return{"Cache-Control":"no-cache"};if(X.includes(`${dF8}assets${dF8}`))return{"Cache-Control":"public, max-age=31536000, immutable"};return{}}function cF8(X,Y){let G=xW1(Y),Q=xW1(X);return Q===G||Q.startsWith(G+"/")}function iF8({requestPath:X,clientDir:Y}){let G=X.startsWith("/")?X.slice(1):X,Q=xW1(Y,G);if(!cF8(Q,Y))return null;return Q}function cU7(X,Y="../client"){let G=new URL(X),Q=xU7(G.pathname);return xW1(Q,Y)}function iU7(X={}){let{env:Y="production",devServerUrl:G=mU7,clientDir:Q=dU7,isServerPath:J=()=>!1}=X;if(Y==="development"){let W=lF8(G);return async function($){let K=new URL($.url);if(J(K.pathname))return null;let H={req:{raw:$,url:$.url}};return W(H)}}return async function(Z){if(Z.method!=="GET")return null;let $=new URL(Z.url),K;try{K=decodeURIComponent($.pathname)}catch{return null}if(J(K))return null;let H=iF8({requestPath:K,clientDir:Q});if(!H)return null;let U=hU7(H,"index.html"),B=xW1(Q,"index.html"),N=Z.headers.get("accept"),O=N?.includes("text/html")||N?.includes("*/*")&&["",".html"].includes(gU7(H))?[U,B]:[];for(let D of[H,...O])try{let E=Bun.file(D);if(await E.exists())return new Response(E,{headers:lU7(D,B)})}catch{}if(K.includes("/assets/"))return new Response("Not Found",{status:404,headers:{"Cache-Control":"no-store"}});return null}}var mU7,dU7="./dist/client";var nF8=w(()=>{mF8();mU7=`http://localhost:${process.env.VITE_PORT||"4000"}`});var tF8={};T0(tF8,{tryUpgradePreviewWs:()=>tU7,tryHandlePreviewHttp:()=>nU7,previewWebSocketHandler:()=>aU7,parsePreviewBaseDomain:()=>pU7,isPreviewWsData:()=>Vp1,extractHandleFromHost:()=>Qg0});function pU7(X){if(!X||X.trim()==="")return null;let Y=X.includes("{handle}")?X.replace("{handle}","__handle__"):X,G;try{G=new URL(Y)}catch{return null}let Q=G.hostname;if(X.includes("{handle}")){let J=Q.indexOf(".");if(J<=0||J===Q.length-1)return null;return Q.slice(J+1)}return Q}function Qg0(X,Y){if(!X||!Y)return null;let G=X.indexOf(":"),Q=(G>=0?X.slice(0,G):X).toLowerCase(),W=`.${Y.toLowerCase().replace(/^\.+|\.+$/g,"")}`;if(!Q.endsWith(W))return null;let Z=Q.slice(0,Q.length-W.length);if(!Z||Z.includes("."))return null;return Z}async function nU7(X,Y){let G=Qg0(X.headers.get("host"),Y.baseDomain);if(!G)return null;let Q=await Y.getRunner();if(!Q)return gW1(503,"preview proxy not configured");return Q.proxyPreviewRequest(G,X)}function gW1(X,Y){return new Response(JSON.stringify({error:Y}),{status:X,headers:{"content-type":"application/json","access-control-allow-origin":"*"}})}function Vp1(X){return typeof X==="object"&&X!==null&&X.kind==="preview"}async function tU7(X,Y,G){if((X.headers.get("upgrade")??"").toLowerCase()!=="websocket")return null;let Q=Qg0(X.headers.get("host"),G.baseDomain);if(!Q)return null;let J=await G.getRunner();if(!J)return gW1(503,"preview proxy not configured");let W=await J.resolvePreviewUpstreamUrl(Q);if(!W)return gW1(404,"sandbox not found");let Z=new URL(X.url);if(Z.pathname.startsWith("/_decopilot_vm"))return gW1(404,"not found");let $=`${W.replace(/^http/,"ws")}${Z.pathname}${Z.search}`,K=X.headers.get("sec-websocket-protocol"),H=K?K.split(",").map((N)=>N.trim()).filter(Boolean):[],U={kind:"preview",upstreamUrl:$,upstreamProtocols:H,pending:[],upstream:null,closed:!1};if(!Y.upgrade(X,{data:U}))return gW1(426,"upgrade failed");return}function hW1(X,Y,G,Q){if(Y.closed)return;Y.closed=!0;try{X.close(G,Q)}catch{}try{Y.upstream?.close()}catch{}}var aU7;var aF8=w(()=>{aU7={open(X){let Y=X.data;if(!Vp1(Y))return;let G;try{G=Y.upstreamProtocols.length>0?new WebSocket(Y.upstreamUrl,Y.upstreamProtocols):new WebSocket(Y.upstreamUrl)}catch(Q){console.warn(`[preview-ws] failed to dial upstream ${Y.upstreamUrl}: ${Q instanceof Error?Q.message:String(Q)}`),hW1(X,Y,1011,"upstream connect failed");return}G.binaryType="arraybuffer",Y.upstream=G,G.addEventListener("open",()=>{while(Y.pending.length>0){let Q=Y.pending.shift();if(Q!==void 0)G.send(Q)}}),G.addEventListener("message",(Q)=>{if(Y.closed)return;X.send(Q.data)}),G.addEventListener("close",(Q)=>{hW1(X,Y,Q.code||1000,Q.reason||"")}),G.addEventListener("error",()=>{hW1(X,Y,1011,"upstream error")})},message(X,Y){let G=X.data;if(!Vp1(G))return;let Q=G.upstream;if(Q&&Q.readyState===WebSocket.OPEN){Q.send(Y);return}if(G.pending.length>=256){hW1(X,G,1011,"preview ws backlog overflow");return}G.pending.push(Y)},close(X){let Y=X.data;if(!Vp1(Y))return;hW1(X,Y,1000,"")}}});var zB7={};import{existsSync as XB7}from"fs";function JB7(X){let Y=new Headers(X.headers);for(let[G,Q]of Object.entries(QB7))Y.set(G,Q);return new Response(X.body,{status:X.status,statusText:X.statusText,headers:Y})}async function jp1(X){if(sF8)return;sF8=!0,console.log(`
|
|
8020
8020
|
[shutdown] Received ${X}, shutting down gracefully...`);let Y=setTimeout(()=>{console.error("[shutdown] Timed out after 55s, forcing exit."),process.exit(1)},55000);Y.unref?.();let G=0;try{$g0.markShuttingDown();for(let Q of XU8)Q.close();await new Promise((Q)=>setTimeout(Q,2000)),await NB7.stop(!0),await $g0.shutdown()}catch(Q){console.error("[shutdown] Error during shutdown:",Q),G=1}clearTimeout(Y),process.exit(G)}var Kg0,rU7,oU7,sU7,eF8,eU7,rF8,YB7,GB7,QB7,XU8,ZB7,WB7,$B7,Jg0,Zg0,KB7,YU8,oF8,HB7,Wg0,FB7,$g0,UB7,BB7,NB7,sF8=!1;var GU8=w(async()=>{l9();T$();Kg0=u4();Xg4();({createApp:rU7}=await Promise.resolve().then(() => (xF8(),yF8))),{isServerPath:oU7}=await Promise.resolve().then(() => (_h0(),JH8)),{createAssetHandler:sU7,resolveClientDir:eF8}=await Promise.resolve().then(() => (nF8(),pF8)),eU7=Kg0.port,rF8=eF8(import.meta.url,"../client"),YB7=XB7(rF8)?rF8:eF8(import.meta.url,"../dist/client"),GB7=sU7({clientDir:YB7,isServerPath:oU7}),QB7={"X-Frame-Options":"DENY","Content-Security-Policy":"frame-ancestors 'none'"};XU8=[],{parsePreviewBaseDomain:ZB7,tryHandlePreviewHttp:WB7,tryUpgradePreviewWs:$B7,previewWebSocketHandler:Jg0,isPreviewWsData:Zg0}=await Promise.resolve().then(() => (aF8(),tF8)),{getOrInitSharedRunner:KB7}=await Promise.resolve().then(() => (ez(),Rx0)),YU8=ZB7(process.env.STUDIO_SANDBOX_PREVIEW_URL_PATTERN),oF8={baseDomain:YU8??"",getRunner:async()=>{let X=await KB7();if(!X||X.kind!=="agent-sandbox")return null;return X}},{resolveRunnerKindFromEnv:HB7}=await Promise.resolve().then(() => (oH(),PS)),Wg0=HB7(),FB7=Wg0==="docker"||Wg0==="host";if(FB7){let{startLocalSandboxIngress:X}=await Promise.resolve().then(() => (oH(),PS)),{getSharedRunnerIfInit:Y,getOrInitSharedRunner:G}=await Promise.resolve().then(() => (ez(),Rx0));if(Wg0==="docker"){let{sweepDockerOrphansOnBoot:J}=await Promise.resolve().then(() => (oH(),PS));await J()}let Q=Number(process.env.SANDBOX_INGRESS_PORT??7070);if(Q>0)XU8=X(()=>{let J=Y();if(!J)return null;if(J.kind!=="docker"&&J.kind!=="host")return null;return J},Q),await G()}$g0=await rU7();if(!Kg0.isCli){let{ASCII_ART:X}=await Promise.resolve().then(() => (a$1(),t$1));console.log("");for(let Y of X)console.log(Y)}UB7=process.env.REUSE_PORT==="true",BB7=process.env.DECOCMS_IS_WORKER==="1",NB7=Bun.serve({idleTimeout:0,port:eU7,hostname:"0.0.0.0",reusePort:UB7,fetch:async(X,Y)=>{if(YU8){let Q=await $B7(X,Y,oF8);if(Q===void 0)return;if(Q)return Q;let J=await WB7(X,oF8);if(J)return J}let G=await GB7(X);if(G)return JB7(G);return $g0.fetch(X,{server:Y})},websocket:{open(X){if(Zg0(X.data))Jg0.open(X)},message(X,Y){if(Zg0(X.data))Jg0.message(X,Y)},close(X){if(Zg0(X.data))Jg0.close(X)}},development:!1});if(Kg0.localMode&&!BB7)Promise.resolve().then(() => (Xe(),bi1)).then(async({seedLocalMode:X,markSeedComplete:Y})=>{try{let G=await X()}catch(G){console.error("Failed to seed local mode:",G)}finally{Y()}}).catch(async(X)=>{console.error("Failed to load local-mode module:",X);try{let{markSeedComplete:Y}=await Promise.resolve().then(() => (Xe(),bi1));Y()}catch{}});process.on("SIGTERM",()=>jp1("SIGTERM"));process.on("SIGINT",()=>jp1("SIGINT"));process.on("SIGHUP",()=>jp1("SIGHUP"));process.on("unhandledRejection",(X)=>{console.error("[process] Unhandled rejection:",X)});process.on("uncaughtException",(X)=>{console.error("[process] Uncaught exception:",X),jp1("uncaughtException")})});var Fg0={};T0(Fg0,{startServer:()=>DB7,interceptConsoleForTui:()=>OB7});import{join as QU8}from"path";function Hg0(X){return X.replace(/\x1b\[[0-9;]*m/g,"")}function JU8(X){let Y=X.getReader(),G=new TextDecoder,Q="";function J(){let W=Q.split(`
|
|
8021
8021
|
`);Q=W.pop()??"";for(let Z of W){let $=Hg0(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=Hg0(Q).replace(/^\[\d+\]\s*/,"").trim();if(W)Wz({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:W})}})()}function OB7(){let{log:X,warn:Y,error:G}=console;function Q(...J){let W=J.map((Z)=>typeof Z==="string"?Z:Bun.inspect(Z)).join(" ");for(let Z of W.split(`
|
|
8022
8022
|
`)){let $=Hg0(Z).trim();if(!$)continue;Wz({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:$})}}return console.log=Q,console.warn=Q,console.error=Q,pA1(!0),()=>{console.log=X,console.warn=Y,console.error=G,pA1(!1)}}async function DB7(X){let Y=await aA1(Number(X.port)),{settings:G,services:Q}=await iA1({port:String(Y),home:X.home,localMode:X.localMode,skipMigrations:X.skipMigrations,noTui:X.noTui});for(let Z of Q)Qa({name:Z.name,status:"ready",port:Z.port});bX1(G),_X1();let J=X.numThreads??1,W=process.platform==="linux";if(J>1&&!W)console.warn("--num-threads is only supported on Linux (SO_REUSEPORT); running with 1 thread.");if(J>1&&W){let $=import.meta.path.endsWith(".ts")?QU8(import.meta.dir,"../../index.ts"):QU8(import.meta.dir,"server.js"),K=X.noTui===!0,H=f16(G,{DECOCMS_IS_WORKER:"1",REUSE_PORT:"true"}),U=[];for(let N=1;N<J;N++){let z=Bun.spawn([process.execPath,$],{env:H,stdio:["inherit",K?"inherit":"pipe",K?"inherit":"pipe"]});if(U.push(z),!K)JU8(z.stdout),JU8(z.stderr)}process.env.REUSE_PORT="true";let B=()=>{for(let N of U)N.kill()};process.on("SIGINT",B),process.on("SIGTERM",B),process.on("exit",B)}await GU8().then(() => zB7),fX1(`http://localhost:${G.port}`)}var Ug0=w(()=>{_N0();$z();hN0()});import{parseArgs as wB7}from"util";import{homedir as lW1}from"os";import{join as Mp1}from"path";var{values:UX,positionals:mW1}=wB7({args:process.argv.slice(2),options:{port:{type:"string",short:"p",default:process.env.PORT||"3000"},"vite-port":{type:"string",default:process.env.VITE_PORT||"4000"},home:{type:"string"},"base-url":{type:"string"},help:{type:"boolean",short:"h",default:!1},version:{type:"boolean",short:"v",default:!1},"skip-migrations":{type:"boolean",default:!1},"no-tui":{type:"boolean",default:!1},"no-local-mode":{type:"boolean",default:!1},"num-threads":{type:"string",default:"1"},vibe:{type:"boolean",default:!1},target:{type:"string"},env:{type:"string",short:"e"}},allowPositionals:!0});if(UX.help)console.log(`
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
export type WidthType = 'fullwidth' | 'halfwidth' | 'wide' | 'narrow' | 'neutral' | 'ambiguous';
|
|
2
|
+
|
|
3
|
+
export type Options = {
|
|
4
|
+
/**
|
|
5
|
+
Whether to treat an `'ambiguous'` character as wide.
|
|
6
|
+
|
|
7
|
+
@default true
|
|
8
|
+
|
|
9
|
+
@example
|
|
10
|
+
```
|
|
11
|
+
import {eastAsianWidth} from 'get-east-asian-width';
|
|
12
|
+
|
|
13
|
+
const codePoint = '⛣'.codePointAt(0);
|
|
14
|
+
|
|
15
|
+
console.log(eastAsianWidth(codePoint));
|
|
16
|
+
//=> 1
|
|
17
|
+
|
|
18
|
+
console.log(eastAsianWidth(codePoint, {ambiguousAsWide: true}));
|
|
19
|
+
//=> 2
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
> Ambiguous characters behave like wide or narrow characters depending on the context (language tag, script identification, associated font, source of data, or explicit markup; all can provide the context). __If the context cannot be established reliably, they should be treated as narrow characters by default.__
|
|
23
|
+
> - http://www.unicode.org/reports/tr11/
|
|
24
|
+
*/
|
|
25
|
+
readonly ambiguousAsWide?: boolean;
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
Returns the width as a number for the given code point.
|
|
30
|
+
|
|
31
|
+
@param codePoint - A Unicode code point.
|
|
32
|
+
|
|
33
|
+
@example
|
|
34
|
+
```
|
|
35
|
+
import {eastAsianWidth} from 'get-east-asian-width';
|
|
36
|
+
|
|
37
|
+
const codePoint = '字'.codePointAt(0);
|
|
38
|
+
|
|
39
|
+
console.log(eastAsianWidth(codePoint));
|
|
40
|
+
//=> 2
|
|
41
|
+
```
|
|
42
|
+
*/
|
|
43
|
+
export function eastAsianWidth(codePoint: number, options?: Options): 1 | 2;
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
Returns the type of “East Asian Width” for the given code point.
|
|
47
|
+
|
|
48
|
+
@param codePoint - A Unicode code point.
|
|
49
|
+
|
|
50
|
+
@example
|
|
51
|
+
```
|
|
52
|
+
import {eastAsianWidthType} from 'get-east-asian-width';
|
|
53
|
+
|
|
54
|
+
const codePoint = '字'.codePointAt(0);
|
|
55
|
+
|
|
56
|
+
console.log(eastAsianWidthType(codePoint));
|
|
57
|
+
//=> 'wide'
|
|
58
|
+
```
|
|
59
|
+
*/
|
|
60
|
+
export function eastAsianWidthType(codePoint: number): WidthType;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import {getCategory, isAmbiguous, isFullWidth, isWide} from './lookup.js';
|
|
2
|
+
|
|
3
|
+
function validate(codePoint) {
|
|
4
|
+
if (!Number.isSafeInteger(codePoint)) {
|
|
5
|
+
throw new TypeError(`Expected a code point, got \`${typeof codePoint}\`.`);
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export function eastAsianWidthType(codePoint) {
|
|
10
|
+
validate(codePoint);
|
|
11
|
+
|
|
12
|
+
return getCategory(codePoint);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export function eastAsianWidth(codePoint, {ambiguousAsWide = false} = {}) {
|
|
16
|
+
validate(codePoint);
|
|
17
|
+
|
|
18
|
+
if (
|
|
19
|
+
isFullWidth(codePoint)
|
|
20
|
+
|| isWide(codePoint)
|
|
21
|
+
|| (ambiguousAsWide && isAmbiguous(codePoint))
|
|
22
|
+
) {
|
|
23
|
+
return 2;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
return 1;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
// Private exports for https://github.com/sindresorhus/is-fullwidth-code-point
|
|
30
|
+
export {isFullWidth as _isFullWidth, isWide as _isWide} from './lookup.js';
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
// Generated by scripts/build.js
|
|
2
|
+
|
|
3
|
+
// prettier-ignore
|
|
4
|
+
const ambiguousRanges = [161, 161, 164, 164, 167, 168, 170, 170, 173, 174, 176, 180, 182, 186, 188, 191, 198, 198, 208, 208, 215, 216, 222, 225, 230, 230, 232, 234, 236, 237, 240, 240, 242, 243, 247, 250, 252, 252, 254, 254, 257, 257, 273, 273, 275, 275, 283, 283, 294, 295, 299, 299, 305, 307, 312, 312, 319, 322, 324, 324, 328, 331, 333, 333, 338, 339, 358, 359, 363, 363, 462, 462, 464, 464, 466, 466, 468, 468, 470, 470, 472, 472, 474, 474, 476, 476, 593, 593, 609, 609, 708, 708, 711, 711, 713, 715, 717, 717, 720, 720, 728, 731, 733, 733, 735, 735, 768, 879, 913, 929, 931, 937, 945, 961, 963, 969, 1025, 1025, 1040, 1103, 1105, 1105, 8208, 8208, 8211, 8214, 8216, 8217, 8220, 8221, 8224, 8226, 8228, 8231, 8240, 8240, 8242, 8243, 8245, 8245, 8251, 8251, 8254, 8254, 8308, 8308, 8319, 8319, 8321, 8324, 8364, 8364, 8451, 8451, 8453, 8453, 8457, 8457, 8467, 8467, 8470, 8470, 8481, 8482, 8486, 8486, 8491, 8491, 8531, 8532, 8539, 8542, 8544, 8555, 8560, 8569, 8585, 8585, 8592, 8601, 8632, 8633, 8658, 8658, 8660, 8660, 8679, 8679, 8704, 8704, 8706, 8707, 8711, 8712, 8715, 8715, 8719, 8719, 8721, 8721, 8725, 8725, 8730, 8730, 8733, 8736, 8739, 8739, 8741, 8741, 8743, 8748, 8750, 8750, 8756, 8759, 8764, 8765, 8776, 8776, 8780, 8780, 8786, 8786, 8800, 8801, 8804, 8807, 8810, 8811, 8814, 8815, 8834, 8835, 8838, 8839, 8853, 8853, 8857, 8857, 8869, 8869, 8895, 8895, 8978, 8978, 9312, 9449, 9451, 9547, 9552, 9587, 9600, 9615, 9618, 9621, 9632, 9633, 9635, 9641, 9650, 9651, 9654, 9655, 9660, 9661, 9664, 9665, 9670, 9672, 9675, 9675, 9678, 9681, 9698, 9701, 9711, 9711, 9733, 9734, 9737, 9737, 9742, 9743, 9756, 9756, 9758, 9758, 9792, 9792, 9794, 9794, 9824, 9825, 9827, 9829, 9831, 9834, 9836, 9837, 9839, 9839, 9886, 9887, 9919, 9919, 9926, 9933, 9935, 9939, 9941, 9953, 9955, 9955, 9960, 9961, 9963, 9969, 9972, 9972, 9974, 9977, 9979, 9980, 9982, 9983, 10045, 10045, 10102, 10111, 11094, 11097, 12872, 12879, 57344, 63743, 65024, 65039, 65533, 65533, 127232, 127242, 127248, 127277, 127280, 127337, 127344, 127373, 127375, 127376, 127387, 127404, 917760, 917999, 983040, 1048573, 1048576, 1114109];
|
|
5
|
+
|
|
6
|
+
// prettier-ignore
|
|
7
|
+
const fullwidthRanges = [12288, 12288, 65281, 65376, 65504, 65510];
|
|
8
|
+
|
|
9
|
+
// prettier-ignore
|
|
10
|
+
const halfwidthRanges = [8361, 8361, 65377, 65470, 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500, 65512, 65518];
|
|
11
|
+
|
|
12
|
+
// prettier-ignore
|
|
13
|
+
const narrowRanges = [32, 126, 162, 163, 165, 166, 172, 172, 175, 175, 10214, 10221, 10629, 10630];
|
|
14
|
+
|
|
15
|
+
// prettier-ignore
|
|
16
|
+
const wideRanges = [4352, 4447, 8986, 8987, 9001, 9002, 9193, 9196, 9200, 9200, 9203, 9203, 9725, 9726, 9748, 9749, 9776, 9783, 9800, 9811, 9855, 9855, 9866, 9871, 9875, 9875, 9889, 9889, 9898, 9899, 9917, 9918, 9924, 9925, 9934, 9934, 9940, 9940, 9962, 9962, 9970, 9971, 9973, 9973, 9978, 9978, 9981, 9981, 9989, 9989, 9994, 9995, 10024, 10024, 10060, 10060, 10062, 10062, 10067, 10069, 10071, 10071, 10133, 10135, 10160, 10160, 10175, 10175, 11035, 11036, 11088, 11088, 11093, 11093, 11904, 11929, 11931, 12019, 12032, 12245, 12272, 12287, 12289, 12350, 12353, 12438, 12441, 12543, 12549, 12591, 12593, 12686, 12688, 12773, 12783, 12830, 12832, 12871, 12880, 42124, 42128, 42182, 43360, 43388, 44032, 55203, 63744, 64255, 65040, 65049, 65072, 65106, 65108, 65126, 65128, 65131, 94176, 94180, 94192, 94198, 94208, 101589, 101631, 101662, 101760, 101874, 110576, 110579, 110581, 110587, 110589, 110590, 110592, 110882, 110898, 110898, 110928, 110930, 110933, 110933, 110948, 110951, 110960, 111355, 119552, 119638, 119648, 119670, 126980, 126980, 127183, 127183, 127374, 127374, 127377, 127386, 127488, 127490, 127504, 127547, 127552, 127560, 127568, 127569, 127584, 127589, 127744, 127776, 127789, 127797, 127799, 127868, 127870, 127891, 127904, 127946, 127951, 127955, 127968, 127984, 127988, 127988, 127992, 128062, 128064, 128064, 128066, 128252, 128255, 128317, 128331, 128334, 128336, 128359, 128378, 128378, 128405, 128406, 128420, 128420, 128507, 128591, 128640, 128709, 128716, 128716, 128720, 128722, 128725, 128728, 128732, 128735, 128747, 128748, 128756, 128764, 128992, 129003, 129008, 129008, 129292, 129338, 129340, 129349, 129351, 129535, 129648, 129660, 129664, 129674, 129678, 129734, 129736, 129736, 129741, 129756, 129759, 129770, 129775, 129784, 131072, 196605, 196608, 262141];
|
|
17
|
+
|
|
18
|
+
export {ambiguousRanges, fullwidthRanges, halfwidthRanges, narrowRanges, wideRanges};
|