@decocms/mesh 2.139.3 → 2.139.4
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-M_vDM06X.js → AlertCircle-B-qrtAf7.js} +1 -1
- package/dist/client/assets/{AlignLeft-BPVTL7Lg.js → AlignLeft-D93Obywx.js} +1 -1
- package/dist/client/assets/{ArrowDown-C0AHT6Se.js → ArrowDown-Brxajv-A.js} +1 -1
- package/dist/client/assets/{ArrowLeft-uXw4hDrl.js → ArrowLeft-ChnnVeV0.js} +1 -1
- package/dist/client/assets/{ArrowUp-D3L33LOK.js → ArrowUp-D5ZC-G9T.js} +1 -1
- package/dist/client/assets/{Check-DhJrraz0.js → Check-xOBqZzmv.js} +1 -1
- package/dist/client/assets/{CheckCircle-CHWgGReR.js → CheckCircle-t4fWflCL.js} +1 -1
- package/dist/client/assets/{CheckDone01-t8ZCK-7w.js → CheckDone01-CtIvl6NR.js} +1 -1
- package/dist/client/assets/{CheckVerified02-BkcCiKst.js → CheckVerified02-CEWZcD4z.js} +1 -1
- package/dist/client/assets/{ChevronDown-DF3whIkz.js → ChevronDown-cFwq8_1y.js} +1 -1
- package/dist/client/assets/{ChevronLeft-wqObUnTJ.js → ChevronLeft-BDb5Vgx_.js} +1 -1
- package/dist/client/assets/{ChevronRight-TdWXpEIC.js → ChevronRight-zkVqPrw5.js} +1 -1
- package/dist/client/assets/{Clock-BtVgm0vZ.js → Clock-C8sBJSRB.js} +1 -1
- package/dist/client/assets/{Code01-DpgekTbT.js → Code01-Be1Un4zy.js} +1 -1
- package/dist/client/assets/{Container-C5O_vd5l.js → Container-BzuFyXB-.js} +1 -1
- package/dist/client/assets/{Copy01-DdgoiM5k.js → Copy01-D46xqpGe.js} +1 -1
- package/dist/client/assets/{Dataflow03-NGApWH5q.js → Dataflow03-C_auGuZw.js} +1 -1
- package/dist/client/assets/{DotsHorizontal-BdcComsR.js → DotsHorizontal-BzL1ksOS.js} +1 -1
- package/dist/client/assets/{DotsVertical-DngStBCK.js → DotsVertical-BWpyls9E.js} +1 -1
- package/dist/client/assets/{Download01-m8eiGYWG.js → Download01-DXQ7eLHV.js} +1 -1
- package/dist/client/assets/{Edit01-aQW4vCf2.js → Edit01-C-LkGhJt.js} +1 -1
- package/dist/client/assets/{Edit05-eAle7eYX.js → Edit05-B4gumSwA.js} +1 -1
- package/dist/client/assets/{Eye-D7EUKcSA.js → Eye-S2bOaZIy.js} +1 -1
- package/dist/client/assets/{File02-BgWATqR8.js → File02-v1x_k3KU.js} +1 -1
- package/dist/client/assets/{File06-CGYk4Mh5.js → File06-CjPbqhL6.js} +1 -1
- package/dist/client/assets/{FilterLines-BJ0Gbspi.js → FilterLines-DkQNMule.js} +1 -1
- package/dist/client/assets/{Globe01-Dl836bGy.js → Globe01-O7yat0_O.js} +1 -1
- package/dist/client/assets/{Globe02-Cwg0aLD6.js → Globe02-ChkOndGF.js} +1 -1
- package/dist/client/assets/{Grid01-BWhQjjDh.js → Grid01-H33eVxTX.js} +1 -1
- package/dist/client/assets/{Hash02-CcdmiUse.js → Hash02-BQbZm01-.js} +1 -1
- package/dist/client/assets/{Home02-ChdqVBjn.js → Home02-PdwInqFp.js} +1 -1
- package/dist/client/assets/{Image01-BLdmiwkG.js → Image01-CcXuD64C.js} +1 -1
- package/dist/client/assets/{Inbox01-CGne0tMp.js → Inbox01-CPxBPhel.js} +1 -1
- package/dist/client/assets/{InfoCircle-C7xGlw8n.js → InfoCircle-DK-HgSib.js} +1 -1
- package/dist/client/assets/{Key01-KqOK513j.js → Key01-HU-4mHLo.js} +1 -1
- package/dist/client/assets/{LayersTwo01-C9Qwrse5.js → LayersTwo01-RwSQ1J1I.js} +1 -1
- package/dist/client/assets/{LayoutLeft-Dtb_1Jp2.js → LayoutLeft-CbZOAm5Z.js} +1 -1
- package/dist/client/assets/{Link01-DdTCH4v9.js → Link01-DP82_UiC.js} +1 -1
- package/dist/client/assets/{LinkExternal01-CcLhJWrG.js → LinkExternal01-xPEp6WiT.js} +1 -1
- package/dist/client/assets/{List-CqTZ79z9.js → List-DIViT3Rd.js} +1 -1
- package/dist/client/assets/{Loading01-f9s2h1wv.js → Loading01-e5vrz4Tg.js} +1 -1
- package/dist/client/assets/{Lock01-B-0IEcXK.js → Lock01-CFsYgwl6.js} +1 -1
- package/dist/client/assets/{Play-BoKAVToz.js → Play-UpsQgFLL.js} +1 -1
- package/dist/client/assets/{Plus-BXkHOQsb.js → Plus-CAkBZRVl.js} +1 -1
- package/dist/client/assets/{RefreshCcw01-p39bp66R.js → RefreshCcw01-CsIOFnxl.js} +1 -1
- package/dist/client/assets/{Save01-DxAaB8Dn.js → Save01-C8SmHjV2.js} +1 -1
- package/dist/client/assets/{SearchMd-195kdrrc.js → SearchMd-3uDmzuN-.js} +1 -1
- package/dist/client/assets/{Settings01-CO9ZR5u9.js → Settings01-de0ujEEu.js} +1 -1
- package/dist/client/assets/{Shield01-CitF2_Bx.js → Shield01-Cd56MItL.js} +1 -1
- package/dist/client/assets/{Terminal-BI8lk715.js → Terminal-D4rOkPT8.js} +1 -1
- package/dist/client/assets/{Trash01-BPU7sU05.js → Trash01-GIxw_9KX.js} +1 -1
- package/dist/client/assets/{Upload01-CvIv0y_p.js → Upload01-DvU8XgOn.js} +1 -1
- package/dist/client/assets/{Users03-DVX3bbcm.js → Users03-Ci_Q0Bm5.js} +1 -1
- package/dist/client/assets/{X-DO1ZPMDK.js → X-D43RBdCi.js} +1 -1
- package/dist/client/assets/{XCircle-YMmdzMOW.js → XCircle-BT7T8C4l.js} +1 -1
- package/dist/client/assets/{XClose-BKL3EMXH.js → XClose-CPAcIRmr.js} +1 -1
- package/dist/client/assets/{Zap-DRU6cySW.js → Zap-AMjggLw-.js} +1 -1
- package/dist/client/assets/{agent-connections-preview-v1h44iHE.js → agent-connections-preview-ChIn79lc.js} +1 -1
- package/dist/client/assets/{agent-detail-B4KXmiS-.js → agent-detail-Fjm0OMqB.js} +1 -1
- package/dist/client/assets/{agents-DUYxE1v-.js → agents-CsJ8bLN2.js} +1 -1
- package/dist/client/assets/{alert-dialog-NBgR76Yp.js → alert-dialog-BF806470.js} +1 -1
- package/dist/client/assets/{auth-catchall-BkY6XTqn.js → auth-catchall-BDFjm7S-.js} +1 -1
- package/dist/client/assets/{avatar-CSPJYHbS.js → avatar-JlaJAGyz.js} +1 -1
- package/dist/client/assets/{badge-KDRqEGRi.js → badge-DuzneqaM.js} +1 -1
- package/dist/client/assets/{binder-DlLVJxi6.js → binder-CSUd_3kq.js} +1 -1
- package/dist/client/assets/{breadcrumb-Djkz23vb.js → breadcrumb-oXffKFw_.js} +1 -1
- package/dist/client/assets/{card-D-rpkLYG.js → card-B9F3gzU1.js} +1 -1
- package/dist/client/assets/{chart-BKDAOT1r.js → chart-CI8PXMri.js} +1 -1
- package/dist/client/assets/{checkbox-DY4RVI9F.js → checkbox-DzpFguCb.js} +1 -1
- package/dist/client/assets/{circle-alert-Bbr8JHad.js → circle-alert-BEV9hKq0.js} +1 -1
- package/dist/client/assets/{collapsible-D8z9g1MN.js → collapsible-65I6Ioz9.js} +1 -1
- package/dist/client/assets/{collection-detail-DxQo_ZG8.js → collection-detail-DnRXu6MS.js} +1 -1
- package/dist/client/assets/{collection-display-button-095BNnmg.js → collection-display-button-ByS_K4lH.js} +1 -1
- package/dist/client/assets/{collection-search-CRbc4DEy.js → collection-search-mO1HMauC.js} +1 -1
- package/dist/client/assets/{collection-tab-BaVME9h1.js → collection-tab-CkV__WhE.js} +1 -1
- package/dist/client/assets/{collection-table-wrapper-DqKxtjgj.js → collection-table-wrapper-CKemfX3q.js} +1 -1
- package/dist/client/assets/{collection-tabs-DvbR35T7.js → collection-tabs-Bx4HaaQG.js} +1 -1
- package/dist/client/assets/{command-Deql40ij.js → command-IGPGgPev.js} +1 -1
- package/dist/client/assets/{connect-CFEdZ_yc.js → connect-BRw7VxSz.js} +1 -1
- package/dist/client/assets/{connection-card-D3LRvC6Z.js → connection-card-CqqNv-1c.js} +1 -1
- package/dist/client/assets/{connection-detail-AatE-8EW.js → connection-detail-Do2QWhRf.js} +1 -1
- package/dist/client/assets/{connection-status-tnMJ5LrM.js → connection-status-DspYTx4l.js} +1 -1
- package/dist/client/assets/{connections-CrRorVhD.js → connections-oTwxAoKQ.js} +1 -1
- package/dist/client/assets/{constants-P4PVvchD.js → constants-Bi0KgUSI.js} +1 -1
- package/dist/client/assets/constants-C5K20DFA.js +1 -0
- package/dist/client/assets/{create-organization-dialog-DeHgw2r6.js → create-organization-dialog-B5UUWfs1.js} +1 -1
- package/dist/client/assets/{create-project-dialog-BR1WnOn3.js → create-project-dialog-B2mUe54b.js} +1 -1
- package/dist/client/assets/{danger-BcasZcHx.js → danger-DCm_AnTP.js} +1 -1
- package/dist/client/assets/{danger-zone-lGF1n9Js.js → danger-zone-DS8Xvo50.js} +1 -1
- package/dist/client/assets/{decopilot-events-BKM3OJ_e.js → decopilot-events-tuPofCi7.js} +1 -1
- package/dist/client/assets/{dependencies-C1lxz-K7.js → dependencies-Bn8l9gYN.js} +1 -1
- package/dist/client/assets/{dialog-CgD1R6sd.js → dialog-qBZn-zYi.js} +1 -1
- package/dist/client/assets/{dropdown-menu-fntgBKzW.js → dropdown-menu-DzUfzpVE.js} +1 -1
- package/dist/client/assets/{dynamic-plugin-layout-ZebFN00-.js → dynamic-plugin-layout-C7QgAOIC.js} +1 -1
- package/dist/client/assets/{editable-task-title-DPHjdMNk.js → editable-task-title-D48vrJtg.js} +1 -1
- package/dist/client/assets/{empty-state-BgUzJrfv.js → empty-state-lIvnej4y.js} +1 -1
- package/dist/client/assets/{env-vars-editor-h4ys9I0Q.js → env-vars-editor-CeqquBJY.js} +1 -1
- package/dist/client/assets/{extract-connection-data-DMHxmYCR.js → extract-connection-data-CuU1tc3b.js} +1 -1
- package/dist/client/assets/{file-browser-tpKJqOem.js → file-browser-Ni3oYaWz.js} +2 -2
- package/dist/client/assets/{form-CdDRR2LD.js → form-CvuQGiSW.js} +1 -1
- package/dist/client/assets/{general-BcfZa0RV.js → general-9N19ol48.js} +1 -1
- package/dist/client/assets/{grid-view-sFCv8Uqb.js → grid-view-nGNsPql9.js} +1 -1
- package/dist/client/assets/{home-DLSfiDzf.js → home-QZEMZFSO.js} +1 -1
- package/dist/client/assets/{icon-picker-Cnfw2xPr.js → icon-picker-CvTqhz-n.js} +1 -1
- package/dist/client/assets/{index-03O1pmQL.js → index-580YwBrh.js} +1 -1
- package/dist/client/assets/{index-jcoT9kFz.js → index-9XMeAvuz.js} +1 -1
- package/dist/client/assets/{index-eiswKdro.js → index-B2bsc0yn.js} +1 -1
- package/dist/client/assets/{index-CRZHS1YQ.js → index-B3tSRm_S.js} +1 -1
- package/dist/client/assets/{index-ClqqZs3X.js → index-BrwvwF2e.js} +1 -1
- package/dist/client/assets/{index-DwOzHQTE.js → index-C3HPQ2Xr.js} +1 -1
- package/dist/client/assets/{index-DMRPqDGw.js → index-DNc2lZPL.js} +1 -1
- package/dist/client/assets/{index-CS60M-lN.js → index-DlVoIZWW.js} +46 -46
- package/dist/client/assets/{index-D-htvwK7.js → index-zTmRWZBl.js} +3 -3
- package/dist/client/assets/{infiniteQueryObserver-DuuHSt2c.js → infiniteQueryObserver-CzeIHV7S.js} +1 -1
- package/dist/client/assets/{input-BSTFqIOK.js → input-yDn0CDzQ.js} +1 -1
- package/dist/client/assets/{integration-icon-Dhxeif96.js → integration-icon-BKuXjqdm.js} +1 -1
- package/dist/client/assets/{label-LNmGa3p2.js → label-D93HnDXr.js} +1 -1
- package/dist/client/assets/{layout-o3US39xJ.js → layout-7Qb5YRAm.js} +1 -1
- package/dist/client/assets/{layout-Cr68mJKX.js → layout-CrCZjoK5.js} +1 -1
- package/dist/client/assets/{localstorage-keys-CnuA12nM.js → localstorage-keys-DyhMCgsK.js} +1 -1
- package/dist/client/assets/{login-Dtyhtjmx.js → login-BqsIHX7V.js} +1 -1
- package/dist/client/assets/{markdown-7_Q9oy6X.js → markdown-Biu_K3T4.js} +1 -1
- package/dist/client/assets/{mcp-app-renderer-DTCug0hq.js → mcp-app-renderer-C2Ylvbme.js} +1 -1
- package/dist/client/assets/{mcp-oauth-DIzWYxTe.js → mcp-oauth-Bjgs9JoZ.js} +1 -1
- package/dist/client/assets/{mcp-server-card-CWrVyxhZ.js → mcp-server-card-Cup_00LD.js} +1 -1
- package/dist/client/assets/{mcp-server-detail-BCWsEtk3.js → mcp-server-detail--Jr_gAUp.js} +2 -2
- package/dist/client/assets/{members-BNvy-9dg.js → members-uqs0bICl.js} +1 -1
- package/dist/client/assets/{monaco-editor-D3oYOUgK.js → monaco-editor-DxLnMtPf.js} +1 -1
- package/dist/client/assets/{monitoring-O-i3Zgvs.js → monitoring-BVpuqZj3.js} +1 -1
- package/dist/client/assets/{monitoring-dashboard-edit-DICpgu4d.js → monitoring-dashboard-edit-DboSkF1Z.js} +1 -1
- package/dist/client/assets/{monitoring-dashboard-view-CESwm42A.js → monitoring-dashboard-view-Sh6DZnJz.js} +1 -1
- package/dist/client/assets/{oauth-callback-DpqL6SB9.js → oauth-callback-C_W-tYN-.js} +1 -1
- package/dist/client/assets/{page-CXJk9Ut5.js → page-Bes2KnC1.js} +1 -1
- package/dist/client/assets/{page-B5VsNKJS.js → page-_IMVPTag.js} +1 -1
- package/dist/client/assets/{plugin-empty-state-C6dQF47Z.js → plugin-empty-state-9L7esDde.js} +1 -1
- package/dist/client/assets/{plugin-empty-state-C-A808mR.js → plugin-empty-state-DiQvKRhi.js} +1 -1
- package/dist/client/assets/{plugin-header-C0Yd_CZi.js → plugin-header--u34B63W.js} +1 -1
- package/dist/client/assets/{plugin-header-D0x1sxLc.js → plugin-header-BQ0StX2h.js} +1 -1
- package/dist/client/assets/plugins-CVY3rx6b.js +1 -0
- package/dist/client/assets/{popover-DXIC1-bw.js → popover-BD-c_pAA.js} +1 -1
- package/dist/client/assets/{project-app-view-xR_h2zD7.js → project-app-view-DIraT3UL.js} +1 -1
- package/dist/client/assets/{project-layout-H5_8u4_Q.js → project-layout-D1HtBF_a.js} +1 -1
- package/dist/client/assets/{project-plugins-CjYskV4q.js → project-plugins-Bf4ZMkbc.js} +1 -1
- package/dist/client/assets/{projects-list-BGFm_ckP.js → projects-list-Bfhn5AOu.js} +1 -1
- package/dist/client/assets/{readme-viewer-B4AR77I_.js → readme-viewer-Bz6eCbMV.js} +1 -1
- package/dist/client/assets/{registry-layout-CbovzAcU.js → registry-layout-DJa_ec1i.js} +1 -1
- package/dist/client/assets/{registry-utils-CdFhHdcR.js → registry-utils-BAmZqs68.js} +1 -1
- package/dist/client/assets/{reports-layout-DZZ6JpS5.js → reports-layout-D5Z2DXwV.js} +1 -1
- package/dist/client/assets/{reset-password-YnbsVy6R.js → reset-password-Dl47mf_w.js} +1 -1
- package/dist/client/assets/{resizable-DhZ4OF4a.js → resizable-D-Qy_gIf.js} +1 -1
- package/dist/client/assets/{save-actions-D9BU7-6K.js → save-actions-C1NjZgvb.js} +1 -1
- package/dist/client/assets/{scroll-area-DgGHH6RH.js → scroll-area-fWogdApD.js} +1 -1
- package/dist/client/assets/{select-CrOlaxCO.js → select-45R_TReG.js} +1 -1
- package/dist/client/assets/{shell-layout-DPeqU-6v.js → shell-layout-CA8fD8RA.js} +2 -2
- package/dist/client/assets/{sidebar-settings-Auqs2XAg.js → sidebar-settings--2xwv6Nu.js} +1 -1
- package/dist/client/assets/{skeleton-DML2aQA-.js → skeleton-B23sd6oG.js} +1 -1
- package/dist/client/assets/{spinner-cdL_Fmz-.js → spinner-DrSoNW9Q.js} +1 -1
- package/dist/client/assets/{store-invite-DmN5PmIw.js → store-invite-DJFtuLEP.js} +1 -1
- package/dist/client/assets/{switch-CAg0B_Rv.js → switch-DbnN_OzY.js} +1 -1
- package/dist/client/assets/{table-Bn8GUsEe.js → table-JhNW7SQy.js} +1 -1
- package/dist/client/assets/{tabs-C7dg0Vvg.js → tabs-fxZVpBgm.js} +1 -1
- package/dist/client/assets/tasks-9SndjM2b.js +1 -0
- package/dist/client/assets/{tasks-panel-Bw2bEANh.js → tasks-panel-CL4KTePe.js} +1 -1
- package/dist/client/assets/{textarea-BcqBCUUu.js → textarea-DdFrppMC.js} +1 -1
- package/dist/client/assets/{time-range-picker-CoqzHvv0.js → time-range-picker-cwer29Fw.js} +1 -1
- package/dist/client/assets/{toggle-group-D0qkbRCN.js → toggle-group-DN2MnVNp.js} +1 -1
- package/dist/client/assets/{tools-list-BkL1UdvP.js → tools-list-DIjrxN4B.js} +1 -1
- package/dist/client/assets/{tooltip-BtnNkpKs.js → tooltip-c2IY6Q1h.js} +1 -1
- package/dist/client/assets/{topbar-portal-jOMGe5hi.js → topbar-portal-B1jaxoch.js} +1 -1
- package/dist/client/assets/{types-BLisMR9q.js → types-D02NXJjh.js} +1 -1
- package/dist/client/assets/{use-binding-BTY1B5EO.js → use-binding-CczCr_I6.js} +1 -1
- package/dist/client/assets/{use-collections-S_4aLkkK.js → use-collections-BM5qbXh2.js} +1 -1
- package/dist/client/assets/{use-connection-CIMDlS0p.js → use-connection-D_z7DIgr.js} +1 -1
- package/dist/client/assets/{use-copy-X88seI8c.js → use-copy-CedSm4V4.js} +1 -1
- package/dist/client/assets/{use-create-virtual-mcp-Crgs_7Nu.js → use-create-virtual-mcp-DN0LN6Ks.js} +1 -1
- package/dist/client/assets/{use-install-from-registry-B9tJfMj0.js → use-install-from-registry-DJsrJBCB.js} +1 -1
- package/dist/client/assets/{use-list-state-BSenVV3C.js → use-list-state-DiVFU-Ch.js} +1 -1
- package/dist/client/assets/{use-llm-DNHK5zRW.js → use-llm-Cgu6F_JM.js} +1 -1
- package/dist/client/assets/{use-mcp-resources-DdAbAYhl.js → use-mcp-resources-F-AJdNv-.js} +1 -1
- package/dist/client/assets/{use-mcp-tools-9xAyOALf.js → use-mcp-tools-CXYzi3AR.js} +1 -1
- package/dist/client/assets/{use-members-Cm-k0g9m.js → use-members-DgdmWVSo.js} +1 -1
- package/dist/client/assets/{use-mobile-qpUl5FeD.js → use-mobile-Y1Ty5Ao9.js} +1 -1
- package/dist/client/assets/{use-project-DfoyehRx.js → use-project-Bp8E6yw9.js} +1 -1
- package/dist/client/assets/{use-settings-modal-DdyHyLPW.js → use-settings-modal-BMI_o1Ch.js} +1 -1
- package/dist/client/assets/{use-view-mode-JyUdxjkA.js → use-view-mode-D1a8tpCU.js} +1 -1
- package/dist/client/assets/{use-virtual-mcp-qK-NM0rh.js → use-virtual-mcp-BwZwR42s.js} +1 -1
- package/dist/client/assets/useInfiniteQuery-MM2sZURp.js +1 -0
- package/dist/client/assets/{useMutation-D9A8H6Gw.js → useMutation-DxToDvqg.js} +1 -1
- package/dist/client/assets/useQuery-C_yP5u2a.js +1 -0
- package/dist/client/assets/useSuspenseInfiniteQuery-rRWDLVCQ.js +1 -0
- package/dist/client/assets/{user-DOfZcM2J.js → user-Cjj1cELF.js} +1 -1
- package/dist/client/assets/{workflow-CCx8GI9K.js → workflow-DF5-JJx7.js} +1 -1
- package/dist/client/index.html +1 -1
- package/dist/server/cli.js +3 -3
- package/dist/server/migrate.js +1 -1
- package/dist/server/server.js +3 -3
- package/package.json +1 -1
- package/dist/client/assets/constants-B8it1peu.js +0 -1
- package/dist/client/assets/plugins-BODrRYA2.js +0 -1
- package/dist/client/assets/tasks-BlpbiwmW.js +0 -1
- package/dist/client/assets/useInfiniteQuery-BspPd2u8.js +0 -1
- package/dist/client/assets/useQuery-D9zfpIOd.js +0 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-BqnGzNK9.js +0 -1
package/dist/server/server.js
CHANGED
|
@@ -1062,7 +1062,7 @@ data:
|
|
|
1062
1062
|
`;if(J)G+=`id: ${J}
|
|
1063
1063
|
`;return G+=`data: ${JSON.stringify(X)}
|
|
1064
1064
|
|
|
1065
|
-
`,Y.enqueue(Q.encode(G)),!0}catch{return!1}}handleUnsupportedRequest(){return new Response(JSON.stringify({jsonrpc:"2.0",error:{code:-32000,message:"Method not allowed."},id:null}),{status:405,headers:{Allow:"GET, POST, DELETE","Content-Type":"application/json"}})}async handlePostRequest(Y,Q){try{let X=Y.headers.get("accept");if(!X?.includes("application/json")||!X.includes("text/event-stream"))return this.createJsonErrorResponse(406,-32000,"Not Acceptable: Client must accept both application/json and text/event-stream");let J=Y.headers.get("content-type");if(!J||!J.includes("application/json"))return this.createJsonErrorResponse(415,-32000,"Unsupported Media Type: Content-Type must be application/json");let G={headers:Object.fromEntries(Y.headers.entries())},K;if(Q?.parsedBody!==void 0)K=Q.parsedBody;else try{K=await Y.json()}catch{return this.createJsonErrorResponse(400,-32700,"Parse error: Invalid JSON")}let W;try{if(Array.isArray(K))W=K.map((L)=>lG.parse(L));else W=[lG.parse(K)]}catch{return this.createJsonErrorResponse(400,-32700,"Parse error: Invalid JSON-RPC message")}let Z=W.some(nJ1);if(Z){if(this._initialized&&this.sessionId!==void 0)return this.createJsonErrorResponse(400,-32600,"Invalid Request: Server already initialized");if(W.length>1)return this.createJsonErrorResponse(400,-32600,"Invalid Request: Only one initialization request is allowed");if(this.sessionId=this.sessionIdGenerator?.(),this._initialized=!0,this.sessionId&&this._onsessioninitialized)await Promise.resolve(this._onsessioninitialized(this.sessionId))}if(!Z){let L=this.validateSession(Y);if(L)return L;let w=this.validateProtocolVersion(Y);if(w)return w}if(!W.some(dK)){for(let L of W)this.onmessage?.(L,{authInfo:Q?.authInfo,requestInfo:G});return new Response(null,{status:202})}let $=crypto.randomUUID(),F=W.find((L)=>nJ1(L)),V=F?F.params.protocolVersion:Y.headers.get("mcp-protocol-version")??v70;if(this._enableJsonResponse)return new Promise((L)=>{this._streamMapping.set($,{resolveJson:L,cleanup:()=>{this._streamMapping.delete($)}});for(let w of W)if(dK(w))this._requestToStreamMapping.set(w.id,$);for(let w of W)this.onmessage?.(w,{authInfo:Q?.authInfo,requestInfo:G})});let B=new TextEncoder,U,z=new ReadableStream({start:(L)=>{U=L},cancel:()=>{this._streamMapping.delete($)}}),D={"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"};if(this.sessionId!==void 0)D["mcp-session-id"]=this.sessionId;for(let L of W)if(dK(L))this._streamMapping.set($,{controller:U,encoder:B,cleanup:()=>{this._streamMapping.delete($);try{U.close()}catch{}}}),this._requestToStreamMapping.set(L.id,$);await this.writePrimingEvent(U,B,$,V);for(let L of W){let w,E;if(dK(L)&&this._eventStore&&V>="2025-11-25")w=()=>{this.closeSSEStream(L.id)},E=()=>{this.closeStandaloneSSEStream()};this.onmessage?.(L,{authInfo:Q?.authInfo,requestInfo:G,closeSSEStream:w,closeStandaloneSSEStream:E})}return new Response(z,{status:200,headers:D})}catch(X){return this.onerror?.(X),this.createJsonErrorResponse(400,-32700,"Parse error",{data:String(X)})}}async handleDeleteRequest(Y){let Q=this.validateSession(Y);if(Q)return Q;let X=this.validateProtocolVersion(Y);if(X)return X;return await Promise.resolve(this._onsessionclosed?.(this.sessionId)),await this.close(),new Response(null,{status:200})}validateSession(Y){if(this.sessionIdGenerator===void 0)return;if(!this._initialized)return this.createJsonErrorResponse(400,-32000,"Bad Request: Server not initialized");let Q=Y.headers.get("mcp-session-id");if(!Q)return this.createJsonErrorResponse(400,-32000,"Bad Request: Mcp-Session-Id header is required");if(Q!==this.sessionId)return this.createJsonErrorResponse(404,-32001,"Session not found");return}validateProtocolVersion(Y){let Q=Y.headers.get("mcp-protocol-version");if(Q!==null&&!Hz.includes(Q))return this.createJsonErrorResponse(400,-32000,`Bad Request: Unsupported protocol version: ${Q} (supported versions: ${Hz.join(", ")})`);return}async close(){this._streamMapping.forEach(({cleanup:Y})=>{Y()}),this._streamMapping.clear(),this._requestResponseMap.clear(),this.onclose?.()}closeSSEStream(Y){let Q=this._requestToStreamMapping.get(Y);if(!Q)return;let X=this._streamMapping.get(Q);if(X)X.cleanup()}closeStandaloneSSEStream(){let Y=this._streamMapping.get(this._standaloneSseStreamId);if(Y)Y.cleanup()}async send(Y,Q){let X=Q?.relatedRequestId;if(DZ(Y)||pL(Y))X=Y.id;if(X===void 0){if(DZ(Y)||pL(Y))throw Error("Cannot send a response on a standalone SSE stream unless resuming a previous client request");let K;if(this._eventStore)K=await this._eventStore.storeEvent(this._standaloneSseStreamId,Y);let W=this._streamMapping.get(this._standaloneSseStreamId);if(W===void 0)return;if(W.controller&&W.encoder)this.writeSSEEvent(W.controller,W.encoder,Y,K);return}let J=this._requestToStreamMapping.get(X);if(!J)throw Error(`No connection established for request ID: ${String(X)}`);let G=this._streamMapping.get(J);if(!this._enableJsonResponse&&G?.controller&&G?.encoder){let K;if(this._eventStore)K=await this._eventStore.storeEvent(J,Y);this.writeSSEEvent(G.controller,G.encoder,Y,K)}if(DZ(Y)||pL(Y)){this._requestResponseMap.set(X,Y);let K=Array.from(this._requestToStreamMapping.entries()).filter(([Z,H])=>H===J).map(([Z])=>Z);if(K.every((Z)=>this._requestResponseMap.has(Z))){if(!G)throw Error(`No connection established for request ID: ${String(X)}`);if(this._enableJsonResponse&&G.resolveJson){let Z={"Content-Type":"application/json"};if(this.sessionId!==void 0)Z["mcp-session-id"]=this.sessionId;let H=K.map(($)=>this._requestResponseMap.get($));if(H.length===1)G.resolveJson(new Response(JSON.stringify(H[0]),{status:200,headers:Z}));else G.resolveJson(new Response(JSON.stringify(H),{status:200,headers:Z}))}else G.cleanup();for(let Z of K)this._requestResponseMap.delete(Z),this._requestToStreamMapping.delete(Z)}}}}var dS=k(()=>{_Q()});var US0="SELF",pn=(Y)=>{return typeof Y==="object"&&Y!==null&&"handler"in Y&&"events"in Y&&typeof Y.handler==="function"&&Array.isArray(Y.events)},zS0=(Y)=>{return typeof Y==="object"&&Y!==null&&"handler"in Y&&"events"in Y&&typeof Y.handler==="function"&&Array.isArray(Y.events)},BS0="::",DS0=(Y)=>{let Q=Y.indexOf(BS0);if(Q===-1)return null;let X=Y.substring(0,Q),J=Y.substring(Q+BS0.length);return[X,J]},mE4=(Y)=>{if(!Y.startsWith("cron/"))return null;let Q=Y.substring(5),X=Q.indexOf("/");if(X===-1)return null;let J=Q.substring(0,X),G=Q.substring(X+1);return[J,G]},OS0=(Y)=>{if(pn(Y))return[];return Object.keys(Y)},lE4=(Y,Q)=>{if(pn(Y))return Y.events;let X=Y[Q];if(!X)return[];if(zS0(X))return X.events;return Object.keys(X)},dn=(Y,Q,X)=>{if(Y===US0){if(!X)return console.warn("[Event] SELF binding used but no connectionId available"),null;return X}let J=Q[Y];if(!lV1(J))return console.warn(`[Event] Binding "${Y}" not found in state`),null;return J.value},dE4=(Y,Q,X)=>{let J=Q;if(pn(Y)){let K=[];for(let W of Y.events){let Z=DS0(W);if(!Z){console.warn(`[Event] Global handler event "${W}" must be prefixed with BINDING:: (e.g., "SELF::${W}" or "DATABASE::${W}")`);continue}let[H,$]=Z,F=dn(H,J,X);if(!F)continue;K.push({eventType:$,publisher:F})}return K}let G=[];for(let K of OS0(Y)){let W=dn(K,J,X);if(!W)continue;let Z=lE4(Y,K);for(let H of Z)G.push({eventType:H,publisher:W})}return G},pE4=(Y)=>{let Q=new Map;for(let X of Y){let J=X.source,G=Q.get(J)||[];G.push(X),Q.set(J,G)}return Q},cE4=(Y)=>{let Q=new Map;for(let X of Y){let J=X.type,G=Q.get(J)||[];G.push(X),Q.set(J,G)}return Q},nE4=(Y)=>{let Q={},X={},J=!1,G=0,K=[];for(let W of Y){if(W.results)Object.assign(X,W.results);if(W.success===!1){if(J=!0,W.error)K.push(W.error)}if(W.processedCount!==void 0)G+=W.processedCount}if(Object.keys(X).length>0)Q.results=X;if(Q.success=!J,K.length>0)Q.error=K.join("; ");if(G>0)Q.processedCount=G;return Q},iE4=async(Y,Q,X,J,G)=>{let K=J;if(pn(Y)){let F=new Set;for(let B of Y.events){let U=DS0(B);if(!U)continue;let[z,D]=U,L=dn(z,K,G);if(!L)continue;F.add(`${L}:${D}`)}let V=Q.filter((B)=>{let U=`${B.source}:${B.type}`;return F.has(U)});if(V.length===0)return{success:!0};try{return await Y.handler({events:V},X)}catch(B){return{success:!1,error:B instanceof Error?B.message:String(B)}}}let W=new Map;for(let F of OS0(Y)){let V=dn(F,K,G);if(V)W.set(V,F)}let Z=pE4(Q),H=[];for(let[F,V]of Z){let B=W.get(F);if(!B)continue;let U=Y[B];if(!U)continue;if(zS0(U)){H.push((async()=>{try{return await U.handler({events:V},X)}catch(L){let w={};for(let E of V)w[E.id]={success:!1,error:L instanceof Error?L.message:String(L)};return{results:w}}})());continue}let z=U,D=cE4(V);for(let[L,w]of D){let E=z[L];if(!E)continue;H.push((async()=>{try{let T=await E({events:w},X),C={};for(let P of w)C[P.id]=T;return{results:C}}catch(T){let C={};for(let P of w)C[P.id]={success:!1,error:T instanceof Error?T.message:String(T)};return{results:C}}})())}}let $=await Promise.all(H);if($.length===0)return{success:!0};return nE4($)},cn;var aV1=k(()=>{gn();cn={subscriptions:dE4,execute:iE4,parseCron:mE4}});function m$(Y){return{...Y,execute:(Q)=>{return Y.execute({...Q,runtimeContext:pS(Q.runtimeContext)})}}}function rV1(Y){return Y&&"streamable"in Y&&Y.streamable===!0}var pS=(Y)=>{let Q=PS.getStore();if(!Q){if(Y)return Y;throw Error("Missing context, did you forget to call State.bind?")}return Q},aE4=(Y,Q)=>{let X=Q;return typeof X[Y]<"u"?X[Y]:Q?.MESH_REQUEST_CONTEXT?.state?.[Y]},rE4=({events:Y,configuration:{state:Q,scopes:X,onChange:J}={}}={})=>{let G=Q?q.toJSONSchema(Q):{type:"object",properties:{}},K=String(Y?.bus??"EVENT_BUS");return[...J||Y?[m$({id:"ON_MCP_CONFIGURATION",description:"MCP Configuration On Change",inputSchema:q.object({state:Q??q.unknown(),scopes:q.array(q.string()).describe("Array of scopes in format 'KEY::SCOPE' (e.g., 'GMAIL::GetCurrentUser')")}),outputSchema:q.object({}),execute:async(W)=>{let Z=W.context.state;await J?.(W.runtimeContext.env,{state:Z,scopes:W.context.scopes});let H=aE4(K,W.runtimeContext.env);if(Y&&Z&&H){let $=W.runtimeContext.env.MESH_REQUEST_CONTEXT?.connectionId,F=cn.subscriptions(Y?.handlers??{},Z,$);if(await H.EVENT_SYNC_SUBSCRIPTIONS({subscriptions:F}),$){let V=F.filter((B)=>B.eventType.startsWith("cron/")&&B.publisher===$);await Promise.all(V.map(async(B)=>{let U=cn.parseCron(B.eventType);if(U){let[,z]=U;await H.EVENT_PUBLISH({type:B.eventType,cron:z})}}))}}return Promise.resolve({})}})]:[],...Y?.handlers?[m$({id:"ON_EVENTS",description:"Receive and process CloudEvents from the event bus. Returns per-event or batch results.",inputSchema:un,outputSchema:mn,execute:async(W)=>{let Z=W.runtimeContext.env,H=Z.MESH_REQUEST_CONTEXT?.state,$=Z.MESH_REQUEST_CONTEXT?.connectionId;return cn.execute(Y.handlers,W.context.events,Z,H,$)}})]:[],m$({id:"MCP_CONFIGURATION",description:"MCP Configuration",inputSchema:q.object({}),outputSchema:q.object({stateSchema:q.unknown(),scopes:q.array(q.string()).optional()}),execute:()=>{return Promise.resolve({stateSchema:G,scopes:[...X??[],...Y?[`${K}::EVENT_SYNC_SUBSCRIPTIONS`]:[]]})}})]},NS0=(Y)=>{let Q=async(G)=>{await Y.before?.(G);let K=new Mz({name:"@deco/mcp-api",version:"1.0.0"},{capabilities:{tools:{},prompts:{},resources:{}}}),Z=await(typeof Y.tools==="function"?Y.tools:async(B)=>{if(typeof Y.tools==="function")return await Y.tools(B);return await Promise.all(Y.tools?.flatMap(async(U)=>{let D=await U(B);if(Array.isArray(D))return D;return[D]})??[]).then((U)=>U.flat())})(G);Z.push(...rE4(Y));for(let B of Z)K.registerTool(B.id,{_meta:{streamable:rV1(B),...B._meta??{}},description:B.description,annotations:B.annotations,inputSchema:B.inputSchema&&"shape"in B.inputSchema?B.inputSchema.shape:q.object({}).shape,outputSchema:rV1(B)?q.object({bytes:q.record(q.string(),q.number())}).shape:B.outputSchema&&typeof B.outputSchema==="object"&&("shape"in B.outputSchema)?B.outputSchema.shape:void 0},async(U)=>{let z=await B.execute({context:U,runtimeContext:pS()});if(rV1(B)&&z instanceof Response)return{structuredContent:{streamable:!0,status:z.status,statusText:z.statusText},content:[{type:"text",text:`Streaming response: ${z.status} ${z.statusText}`}]};return{structuredContent:z,content:[{type:"text",text:JSON.stringify(z)}]}});let $=await(typeof Y.prompts==="function"?Y.prompts:async(B)=>{if(typeof Y.prompts==="function")return await Y.prompts(B);return await Promise.all(Y.prompts?.flatMap(async(U)=>{let D=await U(B);if(Array.isArray(D))return D;return[D]})??[]).then((U)=>U.flat())})(G);for(let B of $)K.registerPrompt(B.name,{title:B.title,description:B.description,argsSchema:B.argsSchema?B.argsSchema:q.object({}).shape},async(U)=>{return await B.execute({args:U,runtimeContext:pS()})});let V=await(typeof Y.resources==="function"?Y.resources:async(B)=>{if(typeof Y.resources==="function")return await Y.resources(B);return await Promise.all(Y.resources?.flatMap(async(U)=>{let D=await U(B);if(Array.isArray(D))return D;return[D]})??[]).then((U)=>U.flat())})(G);for(let B of V)K.resource(B.name,B.uri,{description:B.description,mimeType:B.mimeType},async(U)=>{let z=await B.read({uri:U,runtimeContext:pS()}),D={uri:z.uri};if(z.mimeType)D.mimeType=z.mimeType;if(z.text!==void 0)return{contents:[{uri:z.uri,mimeType:z.mimeType,text:z.text}]};else if(z.blob!==void 0)return{contents:[{uri:z.uri,mimeType:z.mimeType,blob:z.blob}]};return{contents:[{uri:z.uri,mimeType:z.mimeType,text:""}]}});return{server:K,tools:Z,prompts:$,resources:V}};return{fetch:async(G,K)=>{let{server:W}=await Q(K),Z=new u$;await W.connect(Z);try{let H=await Z.handleRequest(G),$=H.headers.get("content-type");if(!($?.includes("text/event-stream")||$?.includes("application/json-rpc"))){console.debug("[MCP Transport] Closing transport for non-streaming response");try{await Z.close?.()}catch{}}else console.debug("[MCP Transport] Keeping transport open for streaming response (Content-Type: %s)",$);return H}catch(H){console.debug("[MCP Transport] Closing transport due to error:",H instanceof Error?H.message:H);try{await Z.close?.()}catch{}throw H}},callTool:async({toolCallId:G,toolCallInput:K})=>{let W=PS.getStore();if(!W)throw Error("Missing state, did you forget to call State.bind?");let Z=W?.env,{tools:H}=await Q(Z),F=H.find((V)=>V.id===G)?.execute;if(!F)throw Error(`Tool ${G} not found or does not have an execute function`);return F({context:K,runtimeContext:pS()})}}};var nn=k(()=>{lS();rm();dS();m1();aV1();dV1();aV1()});var oE4=({env:Y,server:Q,url:X})=>{Y.SELF=new Proxy({},{get:(J,G)=>{if(G==="toJSON")return null;return async(K)=>{return await Q.callTool({toolCallId:G,toolCallInput:K})}}}),Y.IS_LOCAL=(X?.startsWith("http://localhost")||X?.startsWith("http://127.0.0.1"))??!1},LS0=(Y)=>()=>{return{...Y??{}}},sE4=({env:Y,server:Q,tokenOrContext:X,url:J,authToken:G})=>{let K=Y,W=G?G.split(" ")[1]:void 0,Z;if(typeof X==="string"){let H=l9(X),$=H.metadata??{};Z={authorization:W,state:H.state??$.state??{},token:X,meshUrl:H.meshUrl??$.meshUrl,connectionId:H.connectionId??$.connectionId,organizationId:H.organizationId??$.organizationId,organizationName:H.organizationName??$.organizationName,organizationSlug:H.organizationSlug??$.organizationSlug,ensureAuthenticated:LS0(H.user??H.sub)}}else if(typeof X==="object"){Z=X;let H=l9(X.token),$=H.metadata??{},F=H.appName;Z.authorization??=W,Z.callerApp=F,Z.connectionId??=H.connectionId??$.connectionId,Z.ensureAuthenticated=LS0(H.user??H.sub)}else Z={state:{},authorization:W,token:void 0,meshUrl:void 0,connectionId:void 0,ensureAuthenticated:()=>{throw Error("Unauthorized")}};return K.MESH_REQUEST_CONTEXT=Z,Z.state=gj0(Z),oE4({env:K,server:Q,url:J}),K},tE4,MS0=(Y)=>{let Q=NS0(Y),X=Y.cors??tE4,J=Y.oauth,G=J?ij0(J):null,K=async(W,Z,H)=>{let $=new URL(W.url);if(G){if($.pathname==="/.well-known/oauth-protected-resource"||$.pathname==="/mcp/.well-known/oauth-protected-resource")return G.handleProtectedResourceMetadata(W);if($.pathname==="/.well-known/oauth-authorization-server")return G.handleAuthorizationServerMetadata(W);if($.pathname==="/authorize")return G.handleAuthorize(W);if($.pathname==="/oauth/callback")return G.handleOAuthCallback(W);if($.pathname==="/token"&&W.method==="POST")return G.handleToken(W);if(($.pathname==="/register"||$.pathname==="/mcp/register")&&W.method==="POST")return G.handleClientRegistration(W)}if($.pathname==="/mcp"){if(W.method==="GET")return new Response("Method not allowed",{status:405});if(G&&!G.hasAuth(W)){let F=W.clone();try{if((await F.json())?.method!=="tools/list")return G.createUnauthorizedResponse(W)}catch{return G.createUnauthorizedResponse(W)}}return Q.fetch(W,Z,H)}if($.pathname.startsWith("/mcp/call-tool")){let F=$.pathname.split("/").pop();if(!F)return new Response("Not found",{status:404});let V=await W.json(),B=await Q.callTool({toolCallId:F,toolCallInput:V});if(B instanceof Response)return B;return new Response(JSON.stringify(B),{headers:{"Content-Type":"application/json"}})}return Y.fetch?.(W,Z,H)||new Response("Not found",{status:404})};return{fetch:async(W,Z,H)=>{if(new URL(W.url).pathname==="/_healthcheck")return new Response("OK",{status:200});if(X!==!1&&W.method==="OPTIONS")return mj0(W,X??{});let $=sE4({authToken:W.headers.get("authorization")??null,env:{...process.env,...Z},server:Q,tokenOrContext:W.headers.get("x-mesh-token")??void 0,url:W.url}),F=await PS.run({req:W,env:$,ctx:H},async()=>await K(W,$,H));if(X!==!1)return lj0(F,W,X??{});return F}}};var wS0=k(()=>{UG();gn();dj0();dV1();nn();nn();gn();uV1();tE4={origin:(Y)=>{if(Y.includes("localhost")||Y.includes("127.0.0.1"))return Y;return Y},credentials:!0,allowMethods:["GET","POST","PUT","DELETE","OPTIONS"],allowHeaders:["Content-Type","Authorization","mcp-protocol-version"]}});function an(Y){return Buffer.from(String(Y),"utf8").toString("base64")}function rn(Y){if(!Y)return null;try{let Q=Buffer.from(Y,"base64").toString("utf8"),X=Number.parseInt(Q,10);return Number.isNaN(X)||X<0?null:X}catch{return null}}function LX(Y){if(!Y?.length)return[];return Array.from(new Set(Y.map((Q)=>Q.trim()).filter((Q)=>Q.length>0).map((Q)=>Q.toLowerCase())))}function xD(Y){if(!Y)return[];return LX(Y.split(","))}function on(Y,Q){if(!Y)return Q;try{return JSON.parse(Y)}catch{return Q}}function sn(Y){return Y?.["mcp.mesh"]??{}}function tn(Y){return Y.length?Y.join(","):null}function eE4(Y,Q){if(!Q?.length)return;let X=Y;for(let J of Q){if(X===null||X===void 0)return;if(typeof X!=="object")return;X=X[J]}return X}function Y24(Y,Q,X){if(!Q)return!1;if(Q==="eq")return Y===X;if(Q==="contains"||Q==="like"){let J=String(Y??"").toLowerCase(),G=String(X??"").toLowerCase();return J.includes(G)}if(Q==="in"){if(!Array.isArray(X))return!1;return X.includes(Y)}if(Q==="gt")return Number(Y)>Number(X);if(Q==="gte")return Number(Y)>=Number(X);if(Q==="lt")return Number(Y)<Number(X);if(Q==="lte")return Number(Y)<=Number(X);return!1}function cS(Y,Q){if(!Q)return!0;if(Array.isArray(Q.conditions)&&Q.conditions.length){if(Q.operator==="and")return Q.conditions.every((X)=>cS(Y,X));if(Q.operator==="or")return Q.conditions.some((X)=>cS(Y,X));if(Q.operator==="not")return!Q.conditions.some((X)=>cS(Y,X))}return Y24(eE4(Y,Q.field),Q.operator,Q.value)}class nS{db;constructor(Y){this.db=Y}async create(Y){let Q=new Date().toISOString(),X=Y._meta??{},J=sn(X),G=LX(J.tags),K=LX(J.categories),W={id:Y.id,organization_id:Y.organization_id,title:Y.title,description:Y.description??null,server_json:JSON.stringify(Y.server),meta_json:JSON.stringify(X),tags:tn(G),categories:tn(K),is_public:Y.is_public?1:0,is_unlisted:Y.is_unlisted?1:0,created_at:Q,updated_at:Q,created_by:Y.created_by??null};await this.db.insertInto("private_registry_item").values(W).execute();let Z=await this.findById(Y.organization_id,Y.id);if(!Z)throw Error(`Failed to create registry item "${Y.id}"`);return Z}async findById(Y,Q){let X=await this.db.selectFrom("private_registry_item").selectAll().where("organization_id","=",Y).where("id","=",Q).executeTakeFirst();return X?this.deserialize(X):null}async findByIdOrName(Y,Q){let X=await this.findById(Y,Q);if(X)return X;let J=await this.db.selectFrom("private_registry_item").selectAll().where("organization_id","=",Y).where("title","=",Q).executeTakeFirst();return J?this.deserialize(J):null}async update(Y,Q,X){let J=await this.findById(Y,Q);if(!J)throw Error(`Registry item not found: ${Q}`);let G=X._meta??J._meta??{},K=sn(G),W=LX(K.tags),Z=LX(K.categories),H={updated_at:new Date().toISOString()};if(X.title!==void 0)H.title=X.title;if(X.description!==void 0)H.description=X.description;if(X.server!==void 0)H.server_json=JSON.stringify(X.server);if(X._meta!==void 0)H.meta_json=JSON.stringify(X._meta);if(X._meta!==void 0)H.tags=tn(W),H.categories=tn(Z);if(X.is_public!==void 0)H.is_public=X.is_public?1:0;if(X.is_unlisted!==void 0)H.is_unlisted=X.is_unlisted?1:0;await this.db.updateTable("private_registry_item").set(H).where("organization_id","=",Y).where("id","=",Q).execute();let $=await this.findById(Y,Q);if(!$)throw Error(`Registry item not found after update: ${Q}`);return $}async delete(Y,Q){let X=await this.findById(Y,Q);if(!X)return null;return await this.db.deleteFrom("private_registry_item").where("organization_id","=",Y).where("id","=",Q).execute(),X}async list(Y,Q={}){let X=this.db.selectFrom("private_registry_item").selectAll().where("organization_id","=",Y).orderBy("created_at","desc");if(!Q.includeUnlisted)X=X.where("is_unlisted","=",0);let G=(await X.execute()).map((z)=>this.deserialize(z)),K=LX(Q.tags),W=LX(Q.categories),Z=G.filter((z)=>{let D=sn(z._meta),L=LX(D.tags),w=LX(D.categories),E=K.length===0||K.every((P)=>L.includes(P)),T=W.length===0||W.every((P)=>w.includes(P)),C=cS(z,Q.where);return E&&T&&C}),$=rn(Q.cursor)??Q.offset??0,F=Q.limit??24,V=Z.slice($,$+F),B=$+F<Z.length,U=B?an($+F):void 0;return{items:V,totalCount:Z.length,hasMore:B,nextCursor:U}}async listPublic(Y,Q={}){let J=(await this.db.selectFrom("private_registry_item").selectAll().where("organization_id","=",Y).where("is_public","=",1).where("is_unlisted","=",0).orderBy("created_at","desc").execute()).map((U)=>this.deserialize(U)),G=LX(Q.tags),K=LX(Q.categories),W=J.filter((U)=>{let z=sn(U._meta),D=LX(z.tags),L=LX(z.categories),w=G.length===0||G.every((C)=>D.includes(C)),E=K.length===0||K.every((C)=>L.includes(C)),T=cS(U,Q.where);return w&&E&&T}),H=rn(Q.cursor)??Q.offset??0,$=Q.limit??24,F=W.slice(H,H+$),V=H+$<W.length,B=V?an(H+$):void 0;return{items:F,totalCount:W.length,hasMore:V,nextCursor:B}}async getFilters(Y,Q){let X=this.db.selectFrom("private_registry_item").select(["tags","categories"]).where("organization_id","=",Y);if(Q?.publicOnly)X=X.where("is_public","=",1);if(!Q?.includeUnlisted)X=X.where("is_unlisted","=",0);let J=await X.execute(),G=new Map,K=new Map;for(let Z of J){for(let H of xD(Z.tags))G.set(H,(G.get(H)??0)+1);for(let H of xD(Z.categories))K.set(H,(K.get(H)??0)+1)}let W=(Z)=>Array.from(Z.entries()).map(([H,$])=>({value:H,count:$})).sort((H,$)=>H.value.localeCompare($.value));return{tags:W(G),categories:W(K)}}async search(Y,Q={},X){let J=this.db.selectFrom("private_registry_item").select(["id","title","description","meta_json","server_json","tags","categories","is_public","is_unlisted"]).where("organization_id","=",Y).orderBy("created_at","desc");if(X?.publicOnly)J=J.where("is_public","=",1);if(!X?.includeUnlisted)J=J.where("is_unlisted","=",0);let G=await J.execute(),K=Q.query?.trim().toLowerCase(),W=LX(Q.tags),Z=LX(Q.categories),H=G.filter((L)=>{if(K){let w=on(L.server_json,{}),T=on(L.meta_json,{})?.["mcp.mesh"]?.short_description??"";if(![L.id,L.title,L.description??"",w.name??"",w.description??"",T].join(" ").toLowerCase().includes(K))return!1}if(W.length>0){let w=LX(xD(L.tags));if(!W.every((E)=>w.includes(E)))return!1}if(Z.length>0){let w=LX(xD(L.categories));if(!Z.every((E)=>w.includes(E)))return!1}return!0}),F=rn(Q.cursor)??0,V=Q.limit??20,B=H.slice(F,F+V),U=F+V<H.length,z=U?an(F+V):void 0;return{items:B.map((L)=>({id:L.id,title:L.title,tags:xD(L.tags),categories:xD(L.categories),is_public:L.is_public===1,is_unlisted:L.is_unlisted===1})),totalCount:H.length,hasMore:U,nextCursor:z}}deserialize(Y){let Q=on(Y.server_json,{}),X=on(Y.meta_json,{});return{id:Y.id,name:typeof Q.name==="string"?Q.name:void 0,title:Y.title,description:Y.description,_meta:X,server:Q,is_public:Y.is_public===1,is_unlisted:Y.is_unlisted===1,created_at:Y.created_at,updated_at:Y.updated_at,...Y.created_by?{created_by:Y.created_by}:{}}}}var oV1=()=>{};var en,Q24,Yi,lZ,sV1,X24,dq,MA,AG,gD,tV1,AS0,eV1,PS0,Yq1,ES0,Qq1,TS0,wA,J24,iS,G24,Qi,Xq1,CS0,RS0,Jq1,IS0,jS0,SS0,kS0,vS0,_S0,yS0,fS0,W24,Gq1,bS0,hS0,Wq1,xS0;var cY=k(()=>{wG();m1();en=q.object({name:q.string(),title:q.string().optional(),description:q.string().optional(),version:q.string().optional(),websiteUrl:q.string().optional(),icons:q.array(q.object({src:q.string()})).optional(),remotes:q.array(q.object({type:q.string().optional(),url:q.string().optional(),name:q.string().optional(),title:q.string().optional(),description:q.string().optional()})).optional(),packages:q.array(q.object({identifier:q.string(),version:q.string().optional()})).optional(),repository:q.object({url:q.string().optional(),source:q.string().optional(),subfolder:q.string().optional()}).optional()}),Q24=q.object({name:q.string(),description:q.string().nullable().optional()}),Yi=q.object({"mcp.mesh":q.object({verified:q.boolean().optional(),tags:q.array(q.string()).optional(),categories:q.array(q.string()).optional(),friendly_name:q.string().nullable().optional(),short_description:q.string().max(160).nullable().optional(),owner:q.string().nullable().optional(),readme:q.string().max(50000).nullable().optional(),readme_url:q.string().url().nullable().optional(),has_remote:q.boolean().optional(),has_oauth:q.boolean().optional(),tools:q.array(Q24).optional()}).optional()}).catchall(q.unknown()),lZ=q.object({id:q.string(),name:q.string().optional(),title:q.string(),description:q.string().nullable().optional(),_meta:Yi.optional(),server:en,is_public:q.boolean().optional(),created_at:q.string(),updated_at:q.string(),created_by:q.string().optional()}),sV1=q.object({id:q.string(),title:q.string(),description:q.string().nullable().optional(),_meta:Yi.optional(),server:en,is_public:q.boolean().optional()}),X24=q.object({title:q.string().optional(),description:q.string().nullable().optional(),_meta:Yi.optional(),server:en.optional(),is_public:q.boolean().optional()}),dq=mZ.extend({tags:q.array(q.string()).optional().describe("Filter by tags (AND semantics)"),categories:q.array(q.string()).optional().describe("Filter by categories (AND semantics)"),cursor:q.string().optional().describe("Pagination cursor")}).describe("List registry items with optional filtering and pagination."),MA=q.object({items:q.array(lZ),totalCount:q.number(),hasMore:q.boolean().optional(),nextCursor:q.string().optional()}),AG=q.object({id:q.string().optional().describe("Registry item ID"),name:q.string().optional().describe("Registry item name (alias for id)")}).refine((Y)=>Y.id||Y.name,{message:"At least one of 'id' or 'name' is required"}).describe("Get a registry item by ID or name."),gD=q.object({item:lZ.nullable()}),tV1=q.object({data:sV1}),AS0=q.object({item:lZ}),eV1=q.object({items:q.array(sV1).min(1)}),PS0=q.object({created:q.number(),errors:q.array(q.object({id:q.string(),error:q.string()}))}),Yq1=q.object({id:q.string(),data:X24}),ES0=q.object({item:lZ}),Qq1=q.object({id:q.string()}),TS0=q.object({item:lZ}),wA=q.object({tags:q.array(q.object({value:q.string(),count:q.number()})),categories:q.array(q.object({value:q.string(),count:q.number()}))}),J24=q.enum(["description","short_description","tags","categories","readme"]),iS=q.object({query:q.string().optional().describe("Free-text search across id, title, description, server name"),tags:q.array(q.string()).optional().describe("Filter by tags (AND)"),categories:q.array(q.string()).optional().describe("Filter by categories (AND)"),limit:q.number().int().min(1).max(100).optional().describe("Max results (default 20)"),cursor:q.string().optional().describe("Pagination cursor")}).describe("Lightweight search returning minimal fields (id, title, tags, categories, is_public)."),G24=q.object({id:q.string(),title:q.string(),tags:q.array(q.string()),categories:q.array(q.string()),is_public:q.boolean()}),Qi=q.object({items:q.array(G24),totalCount:q.number(),hasMore:q.boolean().optional(),nextCursor:q.string().optional()}),Xq1=q.object({type:J24.describe("Which content to generate"),llmConnectionId:q.string().describe("Connection ID of a language model"),modelId:q.string().describe("Model ID to use"),context:q.object({name:q.string().optional(),provider:q.string().optional(),url:q.string().optional(),owner:q.string().optional(),repositoryUrl:q.string().optional(),description:q.string().optional(),shortDescription:q.string().optional(),tags:q.array(q.string()).optional(),categories:q.array(q.string()).optional(),availableTags:q.array(q.string()).optional(),availableCategories:q.array(q.string()).optional(),tools:q.array(q.object({name:q.string(),description:q.string().nullable().optional()})).optional()})}),CS0=q.object({result:q.string().optional(),items:q.array(q.string()).optional()}),RS0=q.enum(["pending","approved","rejected"]),Jq1=q.object({id:q.string(),organization_id:q.string(),requested_id:q.string().nullable().optional(),status:RS0,title:q.string(),description:q.string().nullable().optional(),_meta:Yi.optional(),server:en,requester_name:q.string().nullable().optional(),requester_email:q.string().nullable().optional(),reviewer_notes:q.string().nullable().optional(),created_at:q.string(),updated_at:q.string()}),IS0=q.object({status:RS0.optional(),limit:q.number().int().min(1).max(200).optional(),offset:q.number().int().min(0).optional(),sortBy:q.enum(["created_at","title"]).optional(),sortDirection:q.enum(["asc","desc"]).optional()}),jS0=q.object({items:q.array(Jq1),totalCount:q.number()}),SS0=q.object({id:q.string(),status:q.enum(["approved","rejected"]),reviewerNotes:q.string().nullable().optional()}),kS0=q.object({item:Jq1}),vS0=q.object({pending:q.number()}),_S0=q.object({id:q.string()}),yS0=q.object({item:Jq1.nullable()}),fS0=q.object({data:sV1,requester:q.object({name:q.string().optional(),email:q.string().email().optional()}).optional()}),W24=q.object({id:q.string(),name:q.string(),prefix:q.string(),createdAt:q.string()}),Gq1=q.object({name:q.string().min(1).max(64).describe("A descriptive name for this key")}),bS0=q.object({id:q.string(),name:q.string(),prefix:q.string(),key:q.string().describe("The full API key \u2014 shown only once!"),createdAt:q.string()}),hS0=q.object({items:q.array(W24)}),Wq1=q.object({keyId:q.string()}),xS0=q.object({success:q.boolean(),keyId:q.string()})});function Z24(Y,Q){let X=m$({id:"COLLECTION_REGISTRY_APP_LIST",description:"List public registry items",inputSchema:dq,outputSchema:MA,execute:async({context:Z})=>{return await Y.listPublic(Q,{limit:Z.limit,offset:Z.offset,cursor:Z.cursor,tags:Z.tags,categories:Z.categories,where:Z.where})}}),J=m$({id:"COLLECTION_REGISTRY_APP_GET",description:"Get a public registry item by ID or name",inputSchema:AG,outputSchema:gD,execute:async({context:Z})=>{let H=Z.id??Z.name;if(!H)return{item:null};let $=await Y.findByIdOrName(Q,H);if($&&$.is_public)return{item:$};return{item:null}}}),G=m$({id:"COLLECTION_REGISTRY_APP_VERSIONS",description:"Get available versions of a public registry item",inputSchema:AG,outputSchema:q.object({versions:q.array(gD.shape.item)}),execute:async({context:Z})=>{let H=Z.id??Z.name;if(!H)return{versions:[]};let $=await Y.findByIdOrName(Q,H);if($&&$.is_public)return{versions:[$]};return{versions:[]}}}),K=m$({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.",inputSchema:iS,outputSchema:Qi,execute:async({context:Z})=>{return await Y.search(Q,Z,{publicOnly:!0})}}),W=m$({id:"COLLECTION_REGISTRY_APP_FILTERS",description:"Get available tags and categories for public registry items",inputSchema:q.object({}),outputSchema:wA,execute:async()=>{return await Y.getFilters(Q,{publicOnly:!0})}});return[X,K,J,G,W]}function Zq1(Y,Q){let X=Q.db,J=new nS(X);Y.all("/org/:orgSlug/registry/*",async(G)=>{let K=G.req.param("orgSlug");console.log(`[Public Registry MCP] Request for org slug: ${K}, path: ${G.req.path}`);let W=await X.selectFrom("organization").select(["id","slug","name"]).where("slug","=",K).executeTakeFirst();if(console.log("[Public Registry MCP] Found org:",W),!W)return console.log(`[Public Registry MCP] Organization not found: ${K}`),G.json({error:"Organization not found"},404);let Z=Z24(J,W.id),H=MS0({tools:()=>Z}),$=new URL(G.req.url),F=G.req.path.replace(`/org/${K}/registry`,""),V=new URL(F||"/",$.origin);$.searchParams.forEach((z,D)=>{V.searchParams.set(D,z)}),console.log(`[Public Registry MCP] Rewriting ${$.pathname} to ${V.pathname}`);let B=new Request(V.toString(),{method:G.req.method,headers:G.req.raw.headers,body:G.req.method!=="GET"&&G.req.method!=="HEAD"?G.req.raw.body:void 0}),U={organizationId:W.id,db:X,MESH_REQUEST_CONTEXT:{},MESH_APP_DEPLOYMENT_ID:"public-registry",IS_LOCAL:!1};return await H.fetch(B,U,G)})}var gS0=k(()=>{wS0();nn();m1();oV1();cY()});import{randomUUID as K24}from"crypto";function uS0(Y,Q){if(!Y)return Q;try{return JSON.parse(Y)}catch{return Q}}class aS{db;constructor(Y){this.db=Y}async createOrUpdate(Y){let Q=new Date().toISOString(),X=await this.findPendingByRequestedId(Y.organization_id,Y.requested_id);if(X){let W={title:Y.title,description:Y.description??null,server_json:JSON.stringify(Y.server),meta_json:Y._meta?JSON.stringify(Y._meta):null,requester_name:Y.requester_name??null,requester_email:Y.requester_email??null,updated_at:Q};await this.db.updateTable("private_registry_publish_request").set(W).where("organization_id","=",Y.organization_id).where("id","=",X.id).execute();let Z=await this.findById(Y.organization_id,X.id);if(!Z)throw Error("Failed to update publish request");return Z}let J=K24(),G={id:J,organization_id:Y.organization_id,requested_id:Y.requested_id,status:"pending",title:Y.title,description:Y.description??null,server_json:JSON.stringify(Y.server),meta_json:Y._meta?JSON.stringify(Y._meta):null,requester_name:Y.requester_name??null,requester_email:Y.requester_email??null,reviewer_notes:null,created_at:Q,updated_at:Q};await this.db.insertInto("private_registry_publish_request").values(G).execute();let K=await this.findById(Y.organization_id,J);if(!K)throw Error("Failed to create publish request");return K}async findPendingByRequestedId(Y,Q){let X=await this.db.selectFrom("private_registry_publish_request").selectAll().where("organization_id","=",Y).where("requested_id","=",Q).where("status","=","pending").executeTakeFirst();return X?this.deserialize(X):null}async findById(Y,Q){let X=await this.db.selectFrom("private_registry_publish_request").selectAll().where("organization_id","=",Y).where("id","=",Q).executeTakeFirst();return X?this.deserialize(X):null}async list(Y,Q={}){let X=this.db.selectFrom("private_registry_publish_request").selectAll().where("organization_id","=",Y),J=this.db.selectFrom("private_registry_publish_request").select(($)=>$.fn.countAll().as("count")).where("organization_id","=",Y);if(Q.status)X=X.where("status","=",Q.status),J=J.where("status","=",Q.status);let G=await J.executeTakeFirst(),K=Number(G?.count??0),W=Q.sortBy??"created_at",Z=Q.sortDirection??"desc";if(W==="title")X=X.orderBy("title",Z);else X=X.orderBy("created_at",Z);return{items:(await X.limit(Q.limit??24).offset(Q.offset??0).execute()).map(($)=>this.deserialize($)),totalCount:K}}async updateStatus(Y,Q,X,J){let G={status:X,updated_at:new Date().toISOString(),reviewer_notes:J??null};await this.db.updateTable("private_registry_publish_request").set(G).where("organization_id","=",Y).where("id","=",Q).execute();let K=await this.findById(Y,Q);if(!K)throw Error(`Publish request not found: ${Q}`);return K}async countPending(Y){let Q=await this.db.selectFrom("private_registry_publish_request").select((X)=>X.fn.countAll().as("count")).where("organization_id","=",Y).where("status","=","pending").executeTakeFirst();return Number(Q?.count??0)}async delete(Y,Q){let X=await this.findById(Y,Q);if(!X)return null;return await this.db.deleteFrom("private_registry_publish_request").where("organization_id","=",Y).where("id","=",Q).execute(),X}deserialize(Y){return{id:Y.id,organization_id:Y.organization_id,requested_id:Y.requested_id??null,status:Y.status,title:Y.title,description:Y.description,_meta:uS0(Y.meta_json,{}),server:uS0(Y.server_json,{name:""}),requester_name:Y.requester_name,requester_email:Y.requester_email,reviewer_notes:Y.reviewer_notes,created_at:Y.created_at,updated_at:Y.updated_at}}}var Kq1=()=>{};import{randomUUID as H24}from"crypto";async function mS0(Y){let X=new TextEncoder().encode(Y),J=await crypto.subtle.digest("SHA-256",X);return Array.from(new Uint8Array(J)).map((K)=>K.toString(16).padStart(2,"0")).join("")}function $24(){let Y=new Uint8Array(32);return crypto.getRandomValues(Y),`prk_${Array.from(Y).map((X)=>X.toString(16).padStart(2,"0")).join("")}`}class rS{db;constructor(Y){this.db=Y}async generate(Y,Q){let X=H24(),J=$24(),G=await mS0(J),K=J.slice(0,12),W=new Date().toISOString();return await this.db.insertInto("private_registry_publish_api_key").values({id:X,organization_id:Y,name:Q,key_hash:G,prefix:K,created_at:W}).execute(),{entity:{id:X,organization_id:Y,name:Q,prefix:K,created_at:W},key:J}}async list(Y){return await this.db.selectFrom("private_registry_publish_api_key").select(["id","organization_id","name","prefix","created_at"]).where("organization_id","=",Y).orderBy("created_at","desc").execute()}async revoke(Y,Q){return(await this.db.deleteFrom("private_registry_publish_api_key").where("organization_id","=",Y).where("id","=",Q).execute()).length>0}async validate(Y,Q){let X=await mS0(Q),J=await this.db.selectFrom("private_registry_publish_api_key").select(["id"]).where("organization_id","=",Y).where("key_hash","=",X).executeTakeFirst();return Boolean(J)}async hasKeys(Y){let Q=await this.db.selectFrom("private_registry_publish_api_key").select((X)=>X.fn.countAll().as("count")).where("organization_id","=",Y).executeTakeFirst();return Number(Q?.count??0)>0}}var Hq1=()=>{};import{sql as F24}from"kysely";import{randomUUID as lS0}from"crypto";async function q24(Y){let Q=new Date().toISOString(),X=lS0(),J=IY.SELF(Y.organizationId),G="registry.publish_request.created",K={requestId:Y.request.id,requestedId:Y.request.requested_id,title:Y.request.title,status:Y.request.status,createdAt:Y.request.created_at,requester:{name:Y.request.requester_name,email:Y.request.requester_email}};await Y.db.insertInto("events").values({id:X,organization_id:Y.organizationId,type:"registry.publish_request.created",source:J,specversion:"1.0",subject:Y.request.id,time:Q,datacontenttype:"application/json",dataschema:null,data:JSON.stringify(K),cron:null,status:"pending",attempts:0,last_error:null,next_retry_at:null,created_at:Q,updated_at:Q}).execute();let W=await Y.db.selectFrom("event_subscriptions").select(["id"]).where("organization_id","=",Y.organizationId).where("enabled","=",1).where("event_type","=","registry.publish_request.created").where((Z)=>Z.or([Z("publisher","is",null),Z("publisher","=",J)])).execute();if(W.length>0)await Y.db.insertInto("event_deliveries").values(W.map((Z)=>({id:lS0(),event_id:X,subscription_id:Z.id,status:"pending",attempts:0,last_error:null,delivered_at:null,next_retry_at:null,created_at:Q}))).execute();try{await F24`SELECT pg_notify('mesh_events', ${X})`.execute(Y.db)}catch{}}async function B24(Y,Q){let J=(await Y.selectFrom("organization").select(["id"]).where("id","=",Q).execute())[0];if(J?.id)return J.id;return(await Y.selectFrom("organization").select(["id"]).where("slug","=",Q).execute())[0]?.id??null}async function U24(Y,Q){let X=await Y.selectFrom("project_plugin_configs").innerJoin("projects","projects.id","project_plugin_configs.project_id").select(["project_plugin_configs.settings as settings"]).where("projects.organization_id","=",Q).where("project_plugin_configs.plugin_id","=",yH).execute();for(let J of X){let G=J.settings,K=typeof G==="string"?(()=>{try{return JSON.parse(G)}catch{return{}}})():G??{};if(K.acceptPublishRequests===!0){let W=K.rateLimitWindow==="minute"?"minute":"hour",Z=K.rateLimitMax,H=typeof Z==="number"&&Number.isFinite(Z)&&Z>=1?Math.floor(Z):pS0;return{acceptPublishRequests:!0,requireApiToken:K.requireApiToken===!0,rateLimitEnabled:K.rateLimitEnabled===void 0?dS0:K.rateLimitEnabled===!0,rateLimitWindow:W,rateLimitMax:H}}}return{acceptPublishRequests:!1,requireApiToken:!1,rateLimitEnabled:dS0,rateLimitWindow:V24,rateLimitMax:pS0}}async function z24(Y,Q,X){let J=X==="minute"?60000:3600000,G=new Date(Date.now()-J).toISOString(),K=await Y.selectFrom("private_registry_publish_request").select((W)=>W.fn.countAll().as("count")).where("organization_id","=",Q).where("created_at",">=",G).executeTakeFirst();return Number(K?.count??0)}async function D24(Y,Q,X,J){let G=await Y.selectFrom("private_registry_item").select(["id","title"]).where("organization_id","=",Q).where((K)=>K.or([K("id","=",X),K("title","=",J)])).executeTakeFirst();return G?{id:String(G.id),title:String(G.title)}:null}function $q1(Y,Q){let{db:X,db:J}=Q,G=new aS(J),K=new rS(J);Y.post("/org/:orgRef/registry/publish-request",async(W)=>{let Z=W.req.param("orgRef"),H=await B24(X,Z);if(!H)return W.json({error:"Organization not found"},404);let $=await U24(X,H);if(!$.acceptPublishRequests)return W.json({error:"Publish requests are not enabled for this registry."},403);if($.requireApiToken){let z=W.req.header("Authorization"),D=z?.startsWith("Bearer ")?z.slice(7).trim():null;if(!D)return W.json({error:"API key required. Use Authorization: Bearer <key>"},401);if(!await K.validate(H,D))return W.json({error:"Invalid API key"},401)}if($.rateLimitEnabled){if(await z24(J,H,$.rateLimitWindow)>=$.rateLimitMax)return W.json({error:"Too many publish requests. Please try again later.",retryAfterSeconds:$.rateLimitWindow==="minute"?60:3600},429)}let F;try{F=await W.req.json()}catch{return W.json({error:"Invalid JSON body"},400)}let V=fS0.safeParse(F);if(!V.success)return W.json({error:"Invalid publish request payload",details:q.treeifyError(V.error)},400);let B=await D24(J,H,V.data.data.id,V.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 U=await G.createOrUpdate({organization_id:H,requested_id:V.data.data.id,title:V.data.data.title,description:V.data.data.description??null,_meta:V.data.data._meta,server:V.data.data.server,requester_name:V.data.requester?.name??null,requester_email:V.data.requester?.email??null});try{await q24({db:X,organizationId:H,request:U})}catch(z){console.warn("[private-registry] failed to emit publish-request event:",z)}return W.json({id:U.id,requested_id:U.requested_id,status:U.status},201)})}var dS0=!0,V24="hour",pS0=100;var cS0=k(()=>{KY();m1();yD();Kq1();Hq1();cY()});var nS0=k(()=>{gS0();cS0()});function iS0(Y){Fq1=Y}function k6(){if(!Fq1)throw Error(`Plugin storage not initialized. Make sure the "${yH}" plugin is enabled.`);return Fq1}async function O24(Y){if(!Y.organization)throw Error("Organization context required");return await Y.access.check(),Y}function W4(Y,Q){return async(X,J)=>{let G=await O24(J);return Q(X,G)}}function N24(Y){if(!Y)return{};if(typeof Y==="string")try{return JSON.parse(Y)}catch{return{}}if(typeof Y==="object")return Y;return{}}async function oS(Y,Q){let J=(await Y.db.selectFrom("project_plugin_configs").innerJoin("projects","projects.id","project_plugin_configs.project_id").select(["project_plugin_configs.settings as settings"]).where("projects.organization_id","=",Q).where("project_plugin_configs.plugin_id","=",yH).execute()).map((K)=>N24(K.settings)),G={acceptPublishRequests:J.some((K)=>K.acceptPublishRequests===!0),requireApiToken:J.some((K)=>K.requireApiToken===!0),storePrivateOnly:J.some((K)=>K.storePrivateOnly===!0)};if(G.acceptPublishRequests||G.requireApiToken||G.storePrivateOnly)return G;for(let K of J)if(Object.keys(K).length>0)return K;return{}}var Fq1=null;var W9=k(()=>{yD()});import{randomUUID as aS0}from"crypto";function rS0(Y,Q){if(!Y)return Q;try{return JSON.parse(Y)}catch{return Q}}class Vq1{db;constructor(Y){this.db=Y}async create(Y){let Q=aS0(),X=new Date().toISOString(),J={id:Q,organization_id:Y.organization_id,status:Y.status??"pending",config_snapshot:Y.config_snapshot?JSON.stringify(Y.config_snapshot):null,total_items:Y.total_items??0,tested_items:0,passed_items:0,failed_items:0,skipped_items:0,current_item_id:null,started_at:Y.started_at??null,finished_at:null,created_at:X};await this.db.insertInto("private_registry_monitor_run").values(J).execute();let G=await this.findById(Y.organization_id,Q);if(!G)throw Error(`Failed to create monitor run ${Q}`);return G}async findById(Y,Q){let X=await this.db.selectFrom("private_registry_monitor_run").selectAll().where("organization_id","=",Y).where("id","=",Q).executeTakeFirst();return X?this.deserializeRun(X):null}async list(Y,Q={}){let X=this.db.selectFrom("private_registry_monitor_run").selectAll().where("organization_id","=",Y),J=this.db.selectFrom("private_registry_monitor_run").select((Z)=>Z.fn.countAll().as("count")).where("organization_id","=",Y);if(Q.status)X=X.where("status","=",Q.status),J=J.where("status","=",Q.status);let G=await J.executeTakeFirst(),K=Number(G?.count??0);return{items:(await X.orderBy("created_at","desc").limit(Q.limit??24).offset(Q.offset??0).execute()).map((Z)=>this.deserializeRun(Z)),totalCount:K}}async update(Y,Q,X){let J={};if(X.total_items!==void 0)J.total_items=X.total_items;if(X.status!==void 0)J.status=X.status;if(X.tested_items!==void 0)J.tested_items=X.tested_items;if(X.passed_items!==void 0)J.passed_items=X.passed_items;if(X.failed_items!==void 0)J.failed_items=X.failed_items;if(X.skipped_items!==void 0)J.skipped_items=X.skipped_items;if(X.current_item_id!==void 0)J.current_item_id=X.current_item_id;if(X.started_at!==void 0)J.started_at=X.started_at;if(X.finished_at!==void 0)J.finished_at=X.finished_at;await this.db.updateTable("private_registry_monitor_run").set(J).where("organization_id","=",Y).where("id","=",Q).execute();let G=await this.findById(Y,Q);if(!G)throw Error(`Monitor run not found: ${Q}`);return G}deserializeRun(Y){return{id:Y.id,organization_id:Y.organization_id,status:Y.status,config_snapshot:rS0(Y.config_snapshot,null),total_items:Number(Y.total_items??0),tested_items:Number(Y.tested_items??0),passed_items:Number(Y.passed_items??0),failed_items:Number(Y.failed_items??0),skipped_items:Number(Y.skipped_items??0),current_item_id:Y.current_item_id,started_at:Y.started_at,finished_at:Y.finished_at,created_at:Y.created_at}}}class qq1{db;constructor(Y){this.db=Y}async create(Y){let Q=aS0(),X=new Date().toISOString(),J={id:Q,run_id:Y.run_id,organization_id:Y.organization_id,item_id:Y.item_id,item_title:Y.item_title,status:Y.status,error_message:Y.error_message??null,connection_ok:Y.connection_ok?1:0,tools_listed:Y.tools_listed?1:0,tool_results:Y.tool_results?JSON.stringify(Y.tool_results):null,agent_summary:Y.agent_summary??null,duration_ms:Y.duration_ms??0,action_taken:Y.action_taken??"none",tested_at:X};await this.db.insertInto("private_registry_monitor_result").values(J).execute();let G=await this.findById(Y.organization_id,Q);if(!G)throw Error("Failed to create test result");return G}async findById(Y,Q){let X=await this.db.selectFrom("private_registry_monitor_result").selectAll().where("organization_id","=",Y).where("id","=",Q).executeTakeFirst();return X?this.deserialize(X):null}async listByRun(Y,Q,X={}){let J=this.db.selectFrom("private_registry_monitor_result").selectAll().where("organization_id","=",Y).where("run_id","=",Q),G=this.db.selectFrom("private_registry_monitor_result").select((H)=>H.fn.countAll().as("count")).where("organization_id","=",Y).where("run_id","=",Q);if(X.status)J=J.where("status","=",X.status),G=G.where("status","=",X.status);let K=await G.executeTakeFirst(),W=Number(K?.count??0);return{items:(await J.orderBy("tested_at","desc").limit(X.limit??50).offset(X.offset??0).execute()).map((H)=>this.deserialize(H)),totalCount:W}}async update(Y,Q,X){let J={};if(X.status!==void 0)J.status=X.status;if(X.error_message!==void 0)J.error_message=X.error_message;if(X.connection_ok!==void 0)J.connection_ok=X.connection_ok?1:0;if(X.tools_listed!==void 0)J.tools_listed=X.tools_listed?1:0;if(X.tool_results!==void 0)J.tool_results=JSON.stringify(X.tool_results);if(X.agent_summary!==void 0)J.agent_summary=X.agent_summary;if(X.duration_ms!==void 0)J.duration_ms=X.duration_ms;if(X.action_taken!==void 0)J.action_taken=X.action_taken;await this.db.updateTable("private_registry_monitor_result").set(J).where("organization_id","=",Y).where("id","=",Q).execute();let G=await this.findById(Y,Q);if(!G)throw Error(`Monitor result not found: ${Q}`);return G}deserialize(Y){return{id:Y.id,run_id:Y.run_id,organization_id:Y.organization_id,item_id:Y.item_id,item_title:Y.item_title,status:Y.status,error_message:Y.error_message,connection_ok:Y.connection_ok===1,tools_listed:Y.tools_listed===1,tool_results:rS0(Y.tool_results,[]),agent_summary:Y.agent_summary,duration_ms:Number(Y.duration_ms??0),action_taken:Y.action_taken,tested_at:Y.tested_at}}}var oS0=()=>{};import{randomUUID as L24}from"crypto";class Bq1{db;constructor(Y){this.db=Y}async findByItemId(Y,Q){let X=await this.db.selectFrom("private_registry_monitor_connection").selectAll().where("organization_id","=",Y).where("item_id","=",Q).executeTakeFirst();return X?this.deserialize(X):null}async list(Y){return(await this.db.selectFrom("private_registry_monitor_connection").selectAll().where("organization_id","=",Y).orderBy("updated_at","desc").execute()).map((X)=>this.deserialize(X))}async findByConnectionId(Y,Q){let X=await this.db.selectFrom("private_registry_monitor_connection").selectAll().where("organization_id","=",Y).where("connection_id","=",Q).executeTakeFirst();return X?this.deserialize(X):null}async upsert(Y){let Q=await this.findByItemId(Y.organization_id,Y.item_id),X=new Date().toISOString();if(!Q){let G={id:L24(),organization_id:Y.organization_id,item_id:Y.item_id,connection_id:Y.connection_id,auth_status:Y.auth_status??"none",created_at:X,updated_at:X};await this.db.insertInto("private_registry_monitor_connection").values(G).execute()}else{let G={connection_id:Y.connection_id,auth_status:Y.auth_status??Q.auth_status,updated_at:X};await this.db.updateTable("private_registry_monitor_connection").set(G).where("organization_id","=",Y.organization_id).where("item_id","=",Y.item_id).execute()}let J=await this.findByItemId(Y.organization_id,Y.item_id);if(!J)throw Error("Failed to save monitor connection");return J}async updateAuthStatus(Y,Q,X){return await this.db.updateTable("private_registry_monitor_connection").set({auth_status:X,updated_at:new Date().toISOString()}).where("organization_id","=",Y).where("item_id","=",Q).execute(),this.findByItemId(Y,Q)}deserialize(Y){return{id:Y.id,organization_id:Y.organization_id,item_id:Y.item_id,connection_id:Y.connection_id,auth_status:Y.auth_status,created_at:Y.created_at,updated_at:Y.updated_at}}}var sS0=()=>{};function tS0(Y){let Q=Y.db,X={items:new nS(Q),publishRequests:new aS(Q),publishApiKeys:new rS(Q),monitorRuns:new Vq1(Q),monitorResults:new qq1(Q),monitorConnections:new Bq1(Q)};return iS0(X),X}var eS0=k(()=>{W9();oV1();Kq1();Hq1();oS0();sS0()});var Yk0;var Qk0=k(()=>{cY();W9();Yk0={name:"REGISTRY_ITEM_BULK_CREATE",description:"Create many private registry items at once",inputSchema:eV1,outputSchema:PS0,handler:W4(eV1,async(Y,Q)=>{let X=k6(),J=[],G=0;for(let K of Y.items)try{await X.items.create({...K,organization_id:Q.organization.id,created_by:Q.auth.user?.id??null}),G+=1}catch(W){J.push({id:K.id,error:W instanceof Error?W.message:"Unknown error"})}return{created:G,errors:J}})}});function M24(Y){return Array.from(new Set(Y.map((Q)=>Q.trim().toLowerCase()).filter((Q)=>Q.length>0)))}function w24(Y){let X=Y.structuredContent?.content?.filter((J)=>J.type==="text"&&typeof J.text==="string").map((J)=>J.text??"").join(`
|
|
1065
|
+
`,Y.enqueue(Q.encode(G)),!0}catch{return!1}}handleUnsupportedRequest(){return new Response(JSON.stringify({jsonrpc:"2.0",error:{code:-32000,message:"Method not allowed."},id:null}),{status:405,headers:{Allow:"GET, POST, DELETE","Content-Type":"application/json"}})}async handlePostRequest(Y,Q){try{let X=Y.headers.get("accept");if(!X?.includes("application/json")||!X.includes("text/event-stream"))return this.createJsonErrorResponse(406,-32000,"Not Acceptable: Client must accept both application/json and text/event-stream");let J=Y.headers.get("content-type");if(!J||!J.includes("application/json"))return this.createJsonErrorResponse(415,-32000,"Unsupported Media Type: Content-Type must be application/json");let G={headers:Object.fromEntries(Y.headers.entries())},K;if(Q?.parsedBody!==void 0)K=Q.parsedBody;else try{K=await Y.json()}catch{return this.createJsonErrorResponse(400,-32700,"Parse error: Invalid JSON")}let W;try{if(Array.isArray(K))W=K.map((L)=>lG.parse(L));else W=[lG.parse(K)]}catch{return this.createJsonErrorResponse(400,-32700,"Parse error: Invalid JSON-RPC message")}let Z=W.some(nJ1);if(Z){if(this._initialized&&this.sessionId!==void 0)return this.createJsonErrorResponse(400,-32600,"Invalid Request: Server already initialized");if(W.length>1)return this.createJsonErrorResponse(400,-32600,"Invalid Request: Only one initialization request is allowed");if(this.sessionId=this.sessionIdGenerator?.(),this._initialized=!0,this.sessionId&&this._onsessioninitialized)await Promise.resolve(this._onsessioninitialized(this.sessionId))}if(!Z){let L=this.validateSession(Y);if(L)return L;let w=this.validateProtocolVersion(Y);if(w)return w}if(!W.some(dK)){for(let L of W)this.onmessage?.(L,{authInfo:Q?.authInfo,requestInfo:G});return new Response(null,{status:202})}let $=crypto.randomUUID(),F=W.find((L)=>nJ1(L)),V=F?F.params.protocolVersion:Y.headers.get("mcp-protocol-version")??v70;if(this._enableJsonResponse)return new Promise((L)=>{this._streamMapping.set($,{resolveJson:L,cleanup:()=>{this._streamMapping.delete($)}});for(let w of W)if(dK(w))this._requestToStreamMapping.set(w.id,$);for(let w of W)this.onmessage?.(w,{authInfo:Q?.authInfo,requestInfo:G})});let B=new TextEncoder,U,z=new ReadableStream({start:(L)=>{U=L},cancel:()=>{this._streamMapping.delete($)}}),D={"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"};if(this.sessionId!==void 0)D["mcp-session-id"]=this.sessionId;for(let L of W)if(dK(L))this._streamMapping.set($,{controller:U,encoder:B,cleanup:()=>{this._streamMapping.delete($);try{U.close()}catch{}}}),this._requestToStreamMapping.set(L.id,$);await this.writePrimingEvent(U,B,$,V);for(let L of W){let w,E;if(dK(L)&&this._eventStore&&V>="2025-11-25")w=()=>{this.closeSSEStream(L.id)},E=()=>{this.closeStandaloneSSEStream()};this.onmessage?.(L,{authInfo:Q?.authInfo,requestInfo:G,closeSSEStream:w,closeStandaloneSSEStream:E})}return new Response(z,{status:200,headers:D})}catch(X){return this.onerror?.(X),this.createJsonErrorResponse(400,-32700,"Parse error",{data:String(X)})}}async handleDeleteRequest(Y){let Q=this.validateSession(Y);if(Q)return Q;let X=this.validateProtocolVersion(Y);if(X)return X;return await Promise.resolve(this._onsessionclosed?.(this.sessionId)),await this.close(),new Response(null,{status:200})}validateSession(Y){if(this.sessionIdGenerator===void 0)return;if(!this._initialized)return this.createJsonErrorResponse(400,-32000,"Bad Request: Server not initialized");let Q=Y.headers.get("mcp-session-id");if(!Q)return this.createJsonErrorResponse(400,-32000,"Bad Request: Mcp-Session-Id header is required");if(Q!==this.sessionId)return this.createJsonErrorResponse(404,-32001,"Session not found");return}validateProtocolVersion(Y){let Q=Y.headers.get("mcp-protocol-version");if(Q!==null&&!Hz.includes(Q))return this.createJsonErrorResponse(400,-32000,`Bad Request: Unsupported protocol version: ${Q} (supported versions: ${Hz.join(", ")})`);return}async close(){this._streamMapping.forEach(({cleanup:Y})=>{Y()}),this._streamMapping.clear(),this._requestResponseMap.clear(),this.onclose?.()}closeSSEStream(Y){let Q=this._requestToStreamMapping.get(Y);if(!Q)return;let X=this._streamMapping.get(Q);if(X)X.cleanup()}closeStandaloneSSEStream(){let Y=this._streamMapping.get(this._standaloneSseStreamId);if(Y)Y.cleanup()}async send(Y,Q){let X=Q?.relatedRequestId;if(DZ(Y)||pL(Y))X=Y.id;if(X===void 0){if(DZ(Y)||pL(Y))throw Error("Cannot send a response on a standalone SSE stream unless resuming a previous client request");let K;if(this._eventStore)K=await this._eventStore.storeEvent(this._standaloneSseStreamId,Y);let W=this._streamMapping.get(this._standaloneSseStreamId);if(W===void 0)return;if(W.controller&&W.encoder)this.writeSSEEvent(W.controller,W.encoder,Y,K);return}let J=this._requestToStreamMapping.get(X);if(!J)throw Error(`No connection established for request ID: ${String(X)}`);let G=this._streamMapping.get(J);if(!this._enableJsonResponse&&G?.controller&&G?.encoder){let K;if(this._eventStore)K=await this._eventStore.storeEvent(J,Y);this.writeSSEEvent(G.controller,G.encoder,Y,K)}if(DZ(Y)||pL(Y)){this._requestResponseMap.set(X,Y);let K=Array.from(this._requestToStreamMapping.entries()).filter(([Z,H])=>H===J).map(([Z])=>Z);if(K.every((Z)=>this._requestResponseMap.has(Z))){if(!G)throw Error(`No connection established for request ID: ${String(X)}`);if(this._enableJsonResponse&&G.resolveJson){let Z={"Content-Type":"application/json"};if(this.sessionId!==void 0)Z["mcp-session-id"]=this.sessionId;let H=K.map(($)=>this._requestResponseMap.get($));if(H.length===1)G.resolveJson(new Response(JSON.stringify(H[0]),{status:200,headers:Z}));else G.resolveJson(new Response(JSON.stringify(H),{status:200,headers:Z}))}else G.cleanup();for(let Z of K)this._requestResponseMap.delete(Z),this._requestToStreamMapping.delete(Z)}}}}var dS=k(()=>{_Q()});var US0="SELF",pn=(Y)=>{return typeof Y==="object"&&Y!==null&&"handler"in Y&&"events"in Y&&typeof Y.handler==="function"&&Array.isArray(Y.events)},zS0=(Y)=>{return typeof Y==="object"&&Y!==null&&"handler"in Y&&"events"in Y&&typeof Y.handler==="function"&&Array.isArray(Y.events)},BS0="::",DS0=(Y)=>{let Q=Y.indexOf(BS0);if(Q===-1)return null;let X=Y.substring(0,Q),J=Y.substring(Q+BS0.length);return[X,J]},mE4=(Y)=>{if(!Y.startsWith("cron/"))return null;let Q=Y.substring(5),X=Q.indexOf("/");if(X===-1)return null;let J=Q.substring(0,X),G=Q.substring(X+1);return[J,G]},OS0=(Y)=>{if(pn(Y))return[];return Object.keys(Y)},lE4=(Y,Q)=>{if(pn(Y))return Y.events;let X=Y[Q];if(!X)return[];if(zS0(X))return X.events;return Object.keys(X)},dn=(Y,Q,X)=>{if(Y===US0){if(!X)return console.warn("[Event] SELF binding used but no connectionId available"),null;return X}let J=Q[Y];if(!lV1(J))return console.warn(`[Event] Binding "${Y}" not found in state`),null;return J.value},dE4=(Y,Q,X)=>{let J=Q;if(pn(Y)){let K=[];for(let W of Y.events){let Z=DS0(W);if(!Z){console.warn(`[Event] Global handler event "${W}" must be prefixed with BINDING:: (e.g., "SELF::${W}" or "DATABASE::${W}")`);continue}let[H,$]=Z,F=dn(H,J,X);if(!F)continue;K.push({eventType:$,publisher:F})}return K}let G=[];for(let K of OS0(Y)){let W=dn(K,J,X);if(!W)continue;let Z=lE4(Y,K);for(let H of Z)G.push({eventType:H,publisher:W})}return G},pE4=(Y)=>{let Q=new Map;for(let X of Y){let J=X.source,G=Q.get(J)||[];G.push(X),Q.set(J,G)}return Q},cE4=(Y)=>{let Q=new Map;for(let X of Y){let J=X.type,G=Q.get(J)||[];G.push(X),Q.set(J,G)}return Q},nE4=(Y)=>{let Q={},X={},J=!1,G=0,K=[];for(let W of Y){if(W.results)Object.assign(X,W.results);if(W.success===!1){if(J=!0,W.error)K.push(W.error)}if(W.processedCount!==void 0)G+=W.processedCount}if(Object.keys(X).length>0)Q.results=X;if(Q.success=!J,K.length>0)Q.error=K.join("; ");if(G>0)Q.processedCount=G;return Q},iE4=async(Y,Q,X,J,G)=>{let K=J;if(pn(Y)){let F=new Set;for(let B of Y.events){let U=DS0(B);if(!U)continue;let[z,D]=U,L=dn(z,K,G);if(!L)continue;F.add(`${L}:${D}`)}let V=Q.filter((B)=>{let U=`${B.source}:${B.type}`;return F.has(U)});if(V.length===0)return{success:!0};try{return await Y.handler({events:V},X)}catch(B){return{success:!1,error:B instanceof Error?B.message:String(B)}}}let W=new Map;for(let F of OS0(Y)){let V=dn(F,K,G);if(V)W.set(V,F)}let Z=pE4(Q),H=[];for(let[F,V]of Z){let B=W.get(F);if(!B)continue;let U=Y[B];if(!U)continue;if(zS0(U)){H.push((async()=>{try{return await U.handler({events:V},X)}catch(L){let w={};for(let E of V)w[E.id]={success:!1,error:L instanceof Error?L.message:String(L)};return{results:w}}})());continue}let z=U,D=cE4(V);for(let[L,w]of D){let E=z[L];if(!E)continue;H.push((async()=>{try{let T=await E({events:w},X),C={};for(let P of w)C[P.id]=T;return{results:C}}catch(T){let C={};for(let P of w)C[P.id]={success:!1,error:T instanceof Error?T.message:String(T)};return{results:C}}})())}}let $=await Promise.all(H);if($.length===0)return{success:!0};return nE4($)},cn;var aV1=k(()=>{gn();cn={subscriptions:dE4,execute:iE4,parseCron:mE4}});function m$(Y){return{...Y,execute:(Q)=>{return Y.execute({...Q,runtimeContext:pS(Q.runtimeContext)})}}}function rV1(Y){return Y&&"streamable"in Y&&Y.streamable===!0}var pS=(Y)=>{let Q=PS.getStore();if(!Q){if(Y)return Y;throw Error("Missing context, did you forget to call State.bind?")}return Q},aE4=(Y,Q)=>{let X=Q;return typeof X[Y]<"u"?X[Y]:Q?.MESH_REQUEST_CONTEXT?.state?.[Y]},rE4=({events:Y,configuration:{state:Q,scopes:X,onChange:J}={}}={})=>{let G=Q?q.toJSONSchema(Q):{type:"object",properties:{}},K=String(Y?.bus??"EVENT_BUS");return[...J||Y?[m$({id:"ON_MCP_CONFIGURATION",description:"MCP Configuration On Change",inputSchema:q.object({state:Q??q.unknown(),scopes:q.array(q.string()).describe("Array of scopes in format 'KEY::SCOPE' (e.g., 'GMAIL::GetCurrentUser')")}),outputSchema:q.object({}),execute:async(W)=>{let Z=W.context.state;await J?.(W.runtimeContext.env,{state:Z,scopes:W.context.scopes});let H=aE4(K,W.runtimeContext.env);if(Y&&Z&&H){let $=W.runtimeContext.env.MESH_REQUEST_CONTEXT?.connectionId,F=cn.subscriptions(Y?.handlers??{},Z,$);if(await H.EVENT_SYNC_SUBSCRIPTIONS({subscriptions:F}),$){let V=F.filter((B)=>B.eventType.startsWith("cron/")&&B.publisher===$);await Promise.all(V.map(async(B)=>{let U=cn.parseCron(B.eventType);if(U){let[,z]=U;await H.EVENT_PUBLISH({type:B.eventType,cron:z})}}))}}return Promise.resolve({})}})]:[],...Y?.handlers?[m$({id:"ON_EVENTS",description:"Receive and process CloudEvents from the event bus. Returns per-event or batch results.",inputSchema:un,outputSchema:mn,execute:async(W)=>{let Z=W.runtimeContext.env,H=Z.MESH_REQUEST_CONTEXT?.state,$=Z.MESH_REQUEST_CONTEXT?.connectionId;return cn.execute(Y.handlers,W.context.events,Z,H,$)}})]:[],m$({id:"MCP_CONFIGURATION",description:"MCP Configuration",inputSchema:q.object({}),outputSchema:q.object({stateSchema:q.unknown(),scopes:q.array(q.string()).optional()}),execute:()=>{return Promise.resolve({stateSchema:G,scopes:[...X??[],...Y?[`${K}::EVENT_SYNC_SUBSCRIPTIONS`]:[]]})}})]},NS0=(Y)=>{let Q=async(G)=>{await Y.before?.(G);let K=new Mz({name:"@deco/mcp-api",version:"1.0.0"},{capabilities:{tools:{},prompts:{},resources:{}}}),Z=await(typeof Y.tools==="function"?Y.tools:async(B)=>{if(typeof Y.tools==="function")return await Y.tools(B);return await Promise.all(Y.tools?.flatMap(async(U)=>{let D=await U(B);if(Array.isArray(D))return D;return[D]})??[]).then((U)=>U.flat())})(G);Z.push(...rE4(Y));for(let B of Z)K.registerTool(B.id,{_meta:{streamable:rV1(B),...B._meta??{}},description:B.description,annotations:B.annotations,inputSchema:B.inputSchema&&"shape"in B.inputSchema?B.inputSchema.shape:q.object({}).shape,outputSchema:rV1(B)?q.object({bytes:q.record(q.string(),q.number())}).shape:B.outputSchema&&typeof B.outputSchema==="object"&&("shape"in B.outputSchema)?B.outputSchema.shape:void 0},async(U)=>{let z=await B.execute({context:U,runtimeContext:pS()});if(rV1(B)&&z instanceof Response)return{structuredContent:{streamable:!0,status:z.status,statusText:z.statusText},content:[{type:"text",text:`Streaming response: ${z.status} ${z.statusText}`}]};return{structuredContent:z,content:[{type:"text",text:JSON.stringify(z)}]}});let $=await(typeof Y.prompts==="function"?Y.prompts:async(B)=>{if(typeof Y.prompts==="function")return await Y.prompts(B);return await Promise.all(Y.prompts?.flatMap(async(U)=>{let D=await U(B);if(Array.isArray(D))return D;return[D]})??[]).then((U)=>U.flat())})(G);for(let B of $)K.registerPrompt(B.name,{title:B.title,description:B.description,argsSchema:B.argsSchema?B.argsSchema:q.object({}).shape},async(U)=>{return await B.execute({args:U,runtimeContext:pS()})});let V=await(typeof Y.resources==="function"?Y.resources:async(B)=>{if(typeof Y.resources==="function")return await Y.resources(B);return await Promise.all(Y.resources?.flatMap(async(U)=>{let D=await U(B);if(Array.isArray(D))return D;return[D]})??[]).then((U)=>U.flat())})(G);for(let B of V)K.resource(B.name,B.uri,{description:B.description,mimeType:B.mimeType},async(U)=>{let z=await B.read({uri:U,runtimeContext:pS()}),D={uri:z.uri};if(z.mimeType)D.mimeType=z.mimeType;if(z.text!==void 0)return{contents:[{uri:z.uri,mimeType:z.mimeType,text:z.text}]};else if(z.blob!==void 0)return{contents:[{uri:z.uri,mimeType:z.mimeType,blob:z.blob}]};return{contents:[{uri:z.uri,mimeType:z.mimeType,text:""}]}});return{server:K,tools:Z,prompts:$,resources:V}};return{fetch:async(G,K)=>{let{server:W}=await Q(K),Z=new u$;await W.connect(Z);try{let H=await Z.handleRequest(G),$=H.headers.get("content-type");if(!($?.includes("text/event-stream")||$?.includes("application/json-rpc"))){console.debug("[MCP Transport] Closing transport for non-streaming response");try{await Z.close?.()}catch{}}else console.debug("[MCP Transport] Keeping transport open for streaming response (Content-Type: %s)",$);return H}catch(H){console.debug("[MCP Transport] Closing transport due to error:",H instanceof Error?H.message:H);try{await Z.close?.()}catch{}throw H}},callTool:async({toolCallId:G,toolCallInput:K})=>{let W=PS.getStore();if(!W)throw Error("Missing state, did you forget to call State.bind?");let Z=W?.env,{tools:H}=await Q(Z),F=H.find((V)=>V.id===G)?.execute;if(!F)throw Error(`Tool ${G} not found or does not have an execute function`);return F({context:K,runtimeContext:pS()})}}};var nn=k(()=>{lS();rm();dS();m1();aV1();dV1();aV1()});var oE4=({env:Y,server:Q,url:X})=>{Y.SELF=new Proxy({},{get:(J,G)=>{if(G==="toJSON")return null;return async(K)=>{return await Q.callTool({toolCallId:G,toolCallInput:K})}}}),Y.IS_LOCAL=(X?.startsWith("http://localhost")||X?.startsWith("http://127.0.0.1"))??!1},LS0=(Y)=>()=>{return{...Y??{}}},sE4=({env:Y,server:Q,tokenOrContext:X,url:J,authToken:G})=>{let K=Y,W=G?G.split(" ")[1]:void 0,Z;if(typeof X==="string"){let H=l9(X),$=H.metadata??{};Z={authorization:W,state:H.state??$.state??{},token:X,meshUrl:H.meshUrl??$.meshUrl,connectionId:H.connectionId??$.connectionId,organizationId:H.organizationId??$.organizationId,organizationName:H.organizationName??$.organizationName,organizationSlug:H.organizationSlug??$.organizationSlug,ensureAuthenticated:LS0(H.user??H.sub)}}else if(typeof X==="object"){Z=X;let H=l9(X.token),$=H.metadata??{},F=H.appName;Z.authorization??=W,Z.callerApp=F,Z.connectionId??=H.connectionId??$.connectionId,Z.organizationId??=H.organizationId??$.organizationId,Z.organizationName??=H.organizationName??$.organizationName,Z.organizationSlug??=H.organizationSlug??$.organizationSlug,Z.ensureAuthenticated=LS0(H.user??H.sub)}else Z={state:{},authorization:W,token:void 0,meshUrl:void 0,connectionId:void 0,ensureAuthenticated:()=>{throw Error("Unauthorized")}};return K.MESH_REQUEST_CONTEXT=Z,Z.state=gj0(Z),oE4({env:K,server:Q,url:J}),K},tE4,MS0=(Y)=>{let Q=NS0(Y),X=Y.cors??tE4,J=Y.oauth,G=J?ij0(J):null,K=async(W,Z,H)=>{let $=new URL(W.url);if(G){if($.pathname==="/.well-known/oauth-protected-resource"||$.pathname==="/mcp/.well-known/oauth-protected-resource")return G.handleProtectedResourceMetadata(W);if($.pathname==="/.well-known/oauth-authorization-server")return G.handleAuthorizationServerMetadata(W);if($.pathname==="/authorize")return G.handleAuthorize(W);if($.pathname==="/oauth/callback")return G.handleOAuthCallback(W);if($.pathname==="/token"&&W.method==="POST")return G.handleToken(W);if(($.pathname==="/register"||$.pathname==="/mcp/register")&&W.method==="POST")return G.handleClientRegistration(W)}if($.pathname==="/mcp"){if(W.method==="GET")return new Response("Method not allowed",{status:405});if(G&&!G.hasAuth(W)){let F=W.clone();try{if((await F.json())?.method!=="tools/list")return G.createUnauthorizedResponse(W)}catch{return G.createUnauthorizedResponse(W)}}return Q.fetch(W,Z,H)}if($.pathname.startsWith("/mcp/call-tool")){let F=$.pathname.split("/").pop();if(!F)return new Response("Not found",{status:404});let V=await W.json(),B=await Q.callTool({toolCallId:F,toolCallInput:V});if(B instanceof Response)return B;return new Response(JSON.stringify(B),{headers:{"Content-Type":"application/json"}})}return Y.fetch?.(W,Z,H)||new Response("Not found",{status:404})};return{fetch:async(W,Z,H)=>{if(new URL(W.url).pathname==="/_healthcheck")return new Response("OK",{status:200});if(X!==!1&&W.method==="OPTIONS")return mj0(W,X??{});let $=sE4({authToken:W.headers.get("authorization")??null,env:{...process.env,...Z},server:Q,tokenOrContext:W.headers.get("x-mesh-token")??void 0,url:W.url}),F=await PS.run({req:W,env:$,ctx:H},async()=>await K(W,$,H));if(X!==!1)return lj0(F,W,X??{});return F}}};var wS0=k(()=>{UG();gn();dj0();dV1();nn();nn();gn();uV1();tE4={origin:(Y)=>{if(Y.includes("localhost")||Y.includes("127.0.0.1"))return Y;return Y},credentials:!0,allowMethods:["GET","POST","PUT","DELETE","OPTIONS"],allowHeaders:["Content-Type","Authorization","mcp-protocol-version"]}});function an(Y){return Buffer.from(String(Y),"utf8").toString("base64")}function rn(Y){if(!Y)return null;try{let Q=Buffer.from(Y,"base64").toString("utf8"),X=Number.parseInt(Q,10);return Number.isNaN(X)||X<0?null:X}catch{return null}}function LX(Y){if(!Y?.length)return[];return Array.from(new Set(Y.map((Q)=>Q.trim()).filter((Q)=>Q.length>0).map((Q)=>Q.toLowerCase())))}function xD(Y){if(!Y)return[];return LX(Y.split(","))}function on(Y,Q){if(!Y)return Q;try{return JSON.parse(Y)}catch{return Q}}function sn(Y){return Y?.["mcp.mesh"]??{}}function tn(Y){return Y.length?Y.join(","):null}function eE4(Y,Q){if(!Q?.length)return;let X=Y;for(let J of Q){if(X===null||X===void 0)return;if(typeof X!=="object")return;X=X[J]}return X}function Y24(Y,Q,X){if(!Q)return!1;if(Q==="eq")return Y===X;if(Q==="contains"||Q==="like"){let J=String(Y??"").toLowerCase(),G=String(X??"").toLowerCase();return J.includes(G)}if(Q==="in"){if(!Array.isArray(X))return!1;return X.includes(Y)}if(Q==="gt")return Number(Y)>Number(X);if(Q==="gte")return Number(Y)>=Number(X);if(Q==="lt")return Number(Y)<Number(X);if(Q==="lte")return Number(Y)<=Number(X);return!1}function cS(Y,Q){if(!Q)return!0;if(Array.isArray(Q.conditions)&&Q.conditions.length){if(Q.operator==="and")return Q.conditions.every((X)=>cS(Y,X));if(Q.operator==="or")return Q.conditions.some((X)=>cS(Y,X));if(Q.operator==="not")return!Q.conditions.some((X)=>cS(Y,X))}return Y24(eE4(Y,Q.field),Q.operator,Q.value)}class nS{db;constructor(Y){this.db=Y}async create(Y){let Q=new Date().toISOString(),X=Y._meta??{},J=sn(X),G=LX(J.tags),K=LX(J.categories),W={id:Y.id,organization_id:Y.organization_id,title:Y.title,description:Y.description??null,server_json:JSON.stringify(Y.server),meta_json:JSON.stringify(X),tags:tn(G),categories:tn(K),is_public:Y.is_public?1:0,is_unlisted:Y.is_unlisted?1:0,created_at:Q,updated_at:Q,created_by:Y.created_by??null};await this.db.insertInto("private_registry_item").values(W).execute();let Z=await this.findById(Y.organization_id,Y.id);if(!Z)throw Error(`Failed to create registry item "${Y.id}"`);return Z}async findById(Y,Q){let X=await this.db.selectFrom("private_registry_item").selectAll().where("organization_id","=",Y).where("id","=",Q).executeTakeFirst();return X?this.deserialize(X):null}async findByIdOrName(Y,Q){let X=await this.findById(Y,Q);if(X)return X;let J=await this.db.selectFrom("private_registry_item").selectAll().where("organization_id","=",Y).where("title","=",Q).executeTakeFirst();return J?this.deserialize(J):null}async update(Y,Q,X){let J=await this.findById(Y,Q);if(!J)throw Error(`Registry item not found: ${Q}`);let G=X._meta??J._meta??{},K=sn(G),W=LX(K.tags),Z=LX(K.categories),H={updated_at:new Date().toISOString()};if(X.title!==void 0)H.title=X.title;if(X.description!==void 0)H.description=X.description;if(X.server!==void 0)H.server_json=JSON.stringify(X.server);if(X._meta!==void 0)H.meta_json=JSON.stringify(X._meta);if(X._meta!==void 0)H.tags=tn(W),H.categories=tn(Z);if(X.is_public!==void 0)H.is_public=X.is_public?1:0;if(X.is_unlisted!==void 0)H.is_unlisted=X.is_unlisted?1:0;await this.db.updateTable("private_registry_item").set(H).where("organization_id","=",Y).where("id","=",Q).execute();let $=await this.findById(Y,Q);if(!$)throw Error(`Registry item not found after update: ${Q}`);return $}async delete(Y,Q){let X=await this.findById(Y,Q);if(!X)return null;return await this.db.deleteFrom("private_registry_item").where("organization_id","=",Y).where("id","=",Q).execute(),X}async list(Y,Q={}){let X=this.db.selectFrom("private_registry_item").selectAll().where("organization_id","=",Y).orderBy("created_at","desc");if(!Q.includeUnlisted)X=X.where("is_unlisted","=",0);let G=(await X.execute()).map((z)=>this.deserialize(z)),K=LX(Q.tags),W=LX(Q.categories),Z=G.filter((z)=>{let D=sn(z._meta),L=LX(D.tags),w=LX(D.categories),E=K.length===0||K.every((P)=>L.includes(P)),T=W.length===0||W.every((P)=>w.includes(P)),C=cS(z,Q.where);return E&&T&&C}),$=rn(Q.cursor)??Q.offset??0,F=Q.limit??24,V=Z.slice($,$+F),B=$+F<Z.length,U=B?an($+F):void 0;return{items:V,totalCount:Z.length,hasMore:B,nextCursor:U}}async listPublic(Y,Q={}){let J=(await this.db.selectFrom("private_registry_item").selectAll().where("organization_id","=",Y).where("is_public","=",1).where("is_unlisted","=",0).orderBy("created_at","desc").execute()).map((U)=>this.deserialize(U)),G=LX(Q.tags),K=LX(Q.categories),W=J.filter((U)=>{let z=sn(U._meta),D=LX(z.tags),L=LX(z.categories),w=G.length===0||G.every((C)=>D.includes(C)),E=K.length===0||K.every((C)=>L.includes(C)),T=cS(U,Q.where);return w&&E&&T}),H=rn(Q.cursor)??Q.offset??0,$=Q.limit??24,F=W.slice(H,H+$),V=H+$<W.length,B=V?an(H+$):void 0;return{items:F,totalCount:W.length,hasMore:V,nextCursor:B}}async getFilters(Y,Q){let X=this.db.selectFrom("private_registry_item").select(["tags","categories"]).where("organization_id","=",Y);if(Q?.publicOnly)X=X.where("is_public","=",1);if(!Q?.includeUnlisted)X=X.where("is_unlisted","=",0);let J=await X.execute(),G=new Map,K=new Map;for(let Z of J){for(let H of xD(Z.tags))G.set(H,(G.get(H)??0)+1);for(let H of xD(Z.categories))K.set(H,(K.get(H)??0)+1)}let W=(Z)=>Array.from(Z.entries()).map(([H,$])=>({value:H,count:$})).sort((H,$)=>H.value.localeCompare($.value));return{tags:W(G),categories:W(K)}}async search(Y,Q={},X){let J=this.db.selectFrom("private_registry_item").select(["id","title","description","meta_json","server_json","tags","categories","is_public","is_unlisted"]).where("organization_id","=",Y).orderBy("created_at","desc");if(X?.publicOnly)J=J.where("is_public","=",1);if(!X?.includeUnlisted)J=J.where("is_unlisted","=",0);let G=await J.execute(),K=Q.query?.trim().toLowerCase(),W=LX(Q.tags),Z=LX(Q.categories),H=G.filter((L)=>{if(K){let w=on(L.server_json,{}),T=on(L.meta_json,{})?.["mcp.mesh"]?.short_description??"";if(![L.id,L.title,L.description??"",w.name??"",w.description??"",T].join(" ").toLowerCase().includes(K))return!1}if(W.length>0){let w=LX(xD(L.tags));if(!W.every((E)=>w.includes(E)))return!1}if(Z.length>0){let w=LX(xD(L.categories));if(!Z.every((E)=>w.includes(E)))return!1}return!0}),F=rn(Q.cursor)??0,V=Q.limit??20,B=H.slice(F,F+V),U=F+V<H.length,z=U?an(F+V):void 0;return{items:B.map((L)=>({id:L.id,title:L.title,tags:xD(L.tags),categories:xD(L.categories),is_public:L.is_public===1,is_unlisted:L.is_unlisted===1})),totalCount:H.length,hasMore:U,nextCursor:z}}deserialize(Y){let Q=on(Y.server_json,{}),X=on(Y.meta_json,{});return{id:Y.id,name:typeof Q.name==="string"?Q.name:void 0,title:Y.title,description:Y.description,_meta:X,server:Q,is_public:Y.is_public===1,is_unlisted:Y.is_unlisted===1,created_at:Y.created_at,updated_at:Y.updated_at,...Y.created_by?{created_by:Y.created_by}:{}}}}var oV1=()=>{};var en,Q24,Yi,lZ,sV1,X24,dq,MA,AG,gD,tV1,AS0,eV1,PS0,Yq1,ES0,Qq1,TS0,wA,J24,iS,G24,Qi,Xq1,CS0,RS0,Jq1,IS0,jS0,SS0,kS0,vS0,_S0,yS0,fS0,W24,Gq1,bS0,hS0,Wq1,xS0;var cY=k(()=>{wG();m1();en=q.object({name:q.string(),title:q.string().optional(),description:q.string().optional(),version:q.string().optional(),websiteUrl:q.string().optional(),icons:q.array(q.object({src:q.string()})).optional(),remotes:q.array(q.object({type:q.string().optional(),url:q.string().optional(),name:q.string().optional(),title:q.string().optional(),description:q.string().optional()})).optional(),packages:q.array(q.object({identifier:q.string(),version:q.string().optional()})).optional(),repository:q.object({url:q.string().optional(),source:q.string().optional(),subfolder:q.string().optional()}).optional()}),Q24=q.object({name:q.string(),description:q.string().nullable().optional()}),Yi=q.object({"mcp.mesh":q.object({verified:q.boolean().optional(),tags:q.array(q.string()).optional(),categories:q.array(q.string()).optional(),friendly_name:q.string().nullable().optional(),short_description:q.string().max(160).nullable().optional(),owner:q.string().nullable().optional(),readme:q.string().max(50000).nullable().optional(),readme_url:q.string().url().nullable().optional(),has_remote:q.boolean().optional(),has_oauth:q.boolean().optional(),tools:q.array(Q24).optional()}).optional()}).catchall(q.unknown()),lZ=q.object({id:q.string(),name:q.string().optional(),title:q.string(),description:q.string().nullable().optional(),_meta:Yi.optional(),server:en,is_public:q.boolean().optional(),created_at:q.string(),updated_at:q.string(),created_by:q.string().optional()}),sV1=q.object({id:q.string(),title:q.string(),description:q.string().nullable().optional(),_meta:Yi.optional(),server:en,is_public:q.boolean().optional()}),X24=q.object({title:q.string().optional(),description:q.string().nullable().optional(),_meta:Yi.optional(),server:en.optional(),is_public:q.boolean().optional()}),dq=mZ.extend({tags:q.array(q.string()).optional().describe("Filter by tags (AND semantics)"),categories:q.array(q.string()).optional().describe("Filter by categories (AND semantics)"),cursor:q.string().optional().describe("Pagination cursor")}).describe("List registry items with optional filtering and pagination."),MA=q.object({items:q.array(lZ),totalCount:q.number(),hasMore:q.boolean().optional(),nextCursor:q.string().optional()}),AG=q.object({id:q.string().optional().describe("Registry item ID"),name:q.string().optional().describe("Registry item name (alias for id)")}).refine((Y)=>Y.id||Y.name,{message:"At least one of 'id' or 'name' is required"}).describe("Get a registry item by ID or name."),gD=q.object({item:lZ.nullable()}),tV1=q.object({data:sV1}),AS0=q.object({item:lZ}),eV1=q.object({items:q.array(sV1).min(1)}),PS0=q.object({created:q.number(),errors:q.array(q.object({id:q.string(),error:q.string()}))}),Yq1=q.object({id:q.string(),data:X24}),ES0=q.object({item:lZ}),Qq1=q.object({id:q.string()}),TS0=q.object({item:lZ}),wA=q.object({tags:q.array(q.object({value:q.string(),count:q.number()})),categories:q.array(q.object({value:q.string(),count:q.number()}))}),J24=q.enum(["description","short_description","tags","categories","readme"]),iS=q.object({query:q.string().optional().describe("Free-text search across id, title, description, server name"),tags:q.array(q.string()).optional().describe("Filter by tags (AND)"),categories:q.array(q.string()).optional().describe("Filter by categories (AND)"),limit:q.number().int().min(1).max(100).optional().describe("Max results (default 20)"),cursor:q.string().optional().describe("Pagination cursor")}).describe("Lightweight search returning minimal fields (id, title, tags, categories, is_public)."),G24=q.object({id:q.string(),title:q.string(),tags:q.array(q.string()),categories:q.array(q.string()),is_public:q.boolean()}),Qi=q.object({items:q.array(G24),totalCount:q.number(),hasMore:q.boolean().optional(),nextCursor:q.string().optional()}),Xq1=q.object({type:J24.describe("Which content to generate"),llmConnectionId:q.string().describe("Connection ID of a language model"),modelId:q.string().describe("Model ID to use"),context:q.object({name:q.string().optional(),provider:q.string().optional(),url:q.string().optional(),owner:q.string().optional(),repositoryUrl:q.string().optional(),description:q.string().optional(),shortDescription:q.string().optional(),tags:q.array(q.string()).optional(),categories:q.array(q.string()).optional(),availableTags:q.array(q.string()).optional(),availableCategories:q.array(q.string()).optional(),tools:q.array(q.object({name:q.string(),description:q.string().nullable().optional()})).optional()})}),CS0=q.object({result:q.string().optional(),items:q.array(q.string()).optional()}),RS0=q.enum(["pending","approved","rejected"]),Jq1=q.object({id:q.string(),organization_id:q.string(),requested_id:q.string().nullable().optional(),status:RS0,title:q.string(),description:q.string().nullable().optional(),_meta:Yi.optional(),server:en,requester_name:q.string().nullable().optional(),requester_email:q.string().nullable().optional(),reviewer_notes:q.string().nullable().optional(),created_at:q.string(),updated_at:q.string()}),IS0=q.object({status:RS0.optional(),limit:q.number().int().min(1).max(200).optional(),offset:q.number().int().min(0).optional(),sortBy:q.enum(["created_at","title"]).optional(),sortDirection:q.enum(["asc","desc"]).optional()}),jS0=q.object({items:q.array(Jq1),totalCount:q.number()}),SS0=q.object({id:q.string(),status:q.enum(["approved","rejected"]),reviewerNotes:q.string().nullable().optional()}),kS0=q.object({item:Jq1}),vS0=q.object({pending:q.number()}),_S0=q.object({id:q.string()}),yS0=q.object({item:Jq1.nullable()}),fS0=q.object({data:sV1,requester:q.object({name:q.string().optional(),email:q.string().email().optional()}).optional()}),W24=q.object({id:q.string(),name:q.string(),prefix:q.string(),createdAt:q.string()}),Gq1=q.object({name:q.string().min(1).max(64).describe("A descriptive name for this key")}),bS0=q.object({id:q.string(),name:q.string(),prefix:q.string(),key:q.string().describe("The full API key \u2014 shown only once!"),createdAt:q.string()}),hS0=q.object({items:q.array(W24)}),Wq1=q.object({keyId:q.string()}),xS0=q.object({success:q.boolean(),keyId:q.string()})});function Z24(Y,Q){let X=m$({id:"COLLECTION_REGISTRY_APP_LIST",description:"List public registry items",inputSchema:dq,outputSchema:MA,execute:async({context:Z})=>{return await Y.listPublic(Q,{limit:Z.limit,offset:Z.offset,cursor:Z.cursor,tags:Z.tags,categories:Z.categories,where:Z.where})}}),J=m$({id:"COLLECTION_REGISTRY_APP_GET",description:"Get a public registry item by ID or name",inputSchema:AG,outputSchema:gD,execute:async({context:Z})=>{let H=Z.id??Z.name;if(!H)return{item:null};let $=await Y.findByIdOrName(Q,H);if($&&$.is_public)return{item:$};return{item:null}}}),G=m$({id:"COLLECTION_REGISTRY_APP_VERSIONS",description:"Get available versions of a public registry item",inputSchema:AG,outputSchema:q.object({versions:q.array(gD.shape.item)}),execute:async({context:Z})=>{let H=Z.id??Z.name;if(!H)return{versions:[]};let $=await Y.findByIdOrName(Q,H);if($&&$.is_public)return{versions:[$]};return{versions:[]}}}),K=m$({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.",inputSchema:iS,outputSchema:Qi,execute:async({context:Z})=>{return await Y.search(Q,Z,{publicOnly:!0})}}),W=m$({id:"COLLECTION_REGISTRY_APP_FILTERS",description:"Get available tags and categories for public registry items",inputSchema:q.object({}),outputSchema:wA,execute:async()=>{return await Y.getFilters(Q,{publicOnly:!0})}});return[X,K,J,G,W]}function Zq1(Y,Q){let X=Q.db,J=new nS(X);Y.all("/org/:orgSlug/registry/*",async(G)=>{let K=G.req.param("orgSlug");console.log(`[Public Registry MCP] Request for org slug: ${K}, path: ${G.req.path}`);let W=await X.selectFrom("organization").select(["id","slug","name"]).where("slug","=",K).executeTakeFirst();if(console.log("[Public Registry MCP] Found org:",W),!W)return console.log(`[Public Registry MCP] Organization not found: ${K}`),G.json({error:"Organization not found"},404);let Z=Z24(J,W.id),H=MS0({tools:()=>Z}),$=new URL(G.req.url),F=G.req.path.replace(`/org/${K}/registry`,""),V=new URL(F||"/",$.origin);$.searchParams.forEach((z,D)=>{V.searchParams.set(D,z)}),console.log(`[Public Registry MCP] Rewriting ${$.pathname} to ${V.pathname}`);let B=new Request(V.toString(),{method:G.req.method,headers:G.req.raw.headers,body:G.req.method!=="GET"&&G.req.method!=="HEAD"?G.req.raw.body:void 0}),U={organizationId:W.id,db:X,MESH_REQUEST_CONTEXT:{},MESH_APP_DEPLOYMENT_ID:"public-registry",IS_LOCAL:!1};return await H.fetch(B,U,G)})}var gS0=k(()=>{wS0();nn();m1();oV1();cY()});import{randomUUID as K24}from"crypto";function uS0(Y,Q){if(!Y)return Q;try{return JSON.parse(Y)}catch{return Q}}class aS{db;constructor(Y){this.db=Y}async createOrUpdate(Y){let Q=new Date().toISOString(),X=await this.findPendingByRequestedId(Y.organization_id,Y.requested_id);if(X){let W={title:Y.title,description:Y.description??null,server_json:JSON.stringify(Y.server),meta_json:Y._meta?JSON.stringify(Y._meta):null,requester_name:Y.requester_name??null,requester_email:Y.requester_email??null,updated_at:Q};await this.db.updateTable("private_registry_publish_request").set(W).where("organization_id","=",Y.organization_id).where("id","=",X.id).execute();let Z=await this.findById(Y.organization_id,X.id);if(!Z)throw Error("Failed to update publish request");return Z}let J=K24(),G={id:J,organization_id:Y.organization_id,requested_id:Y.requested_id,status:"pending",title:Y.title,description:Y.description??null,server_json:JSON.stringify(Y.server),meta_json:Y._meta?JSON.stringify(Y._meta):null,requester_name:Y.requester_name??null,requester_email:Y.requester_email??null,reviewer_notes:null,created_at:Q,updated_at:Q};await this.db.insertInto("private_registry_publish_request").values(G).execute();let K=await this.findById(Y.organization_id,J);if(!K)throw Error("Failed to create publish request");return K}async findPendingByRequestedId(Y,Q){let X=await this.db.selectFrom("private_registry_publish_request").selectAll().where("organization_id","=",Y).where("requested_id","=",Q).where("status","=","pending").executeTakeFirst();return X?this.deserialize(X):null}async findById(Y,Q){let X=await this.db.selectFrom("private_registry_publish_request").selectAll().where("organization_id","=",Y).where("id","=",Q).executeTakeFirst();return X?this.deserialize(X):null}async list(Y,Q={}){let X=this.db.selectFrom("private_registry_publish_request").selectAll().where("organization_id","=",Y),J=this.db.selectFrom("private_registry_publish_request").select(($)=>$.fn.countAll().as("count")).where("organization_id","=",Y);if(Q.status)X=X.where("status","=",Q.status),J=J.where("status","=",Q.status);let G=await J.executeTakeFirst(),K=Number(G?.count??0),W=Q.sortBy??"created_at",Z=Q.sortDirection??"desc";if(W==="title")X=X.orderBy("title",Z);else X=X.orderBy("created_at",Z);return{items:(await X.limit(Q.limit??24).offset(Q.offset??0).execute()).map(($)=>this.deserialize($)),totalCount:K}}async updateStatus(Y,Q,X,J){let G={status:X,updated_at:new Date().toISOString(),reviewer_notes:J??null};await this.db.updateTable("private_registry_publish_request").set(G).where("organization_id","=",Y).where("id","=",Q).execute();let K=await this.findById(Y,Q);if(!K)throw Error(`Publish request not found: ${Q}`);return K}async countPending(Y){let Q=await this.db.selectFrom("private_registry_publish_request").select((X)=>X.fn.countAll().as("count")).where("organization_id","=",Y).where("status","=","pending").executeTakeFirst();return Number(Q?.count??0)}async delete(Y,Q){let X=await this.findById(Y,Q);if(!X)return null;return await this.db.deleteFrom("private_registry_publish_request").where("organization_id","=",Y).where("id","=",Q).execute(),X}deserialize(Y){return{id:Y.id,organization_id:Y.organization_id,requested_id:Y.requested_id??null,status:Y.status,title:Y.title,description:Y.description,_meta:uS0(Y.meta_json,{}),server:uS0(Y.server_json,{name:""}),requester_name:Y.requester_name,requester_email:Y.requester_email,reviewer_notes:Y.reviewer_notes,created_at:Y.created_at,updated_at:Y.updated_at}}}var Kq1=()=>{};import{randomUUID as H24}from"crypto";async function mS0(Y){let X=new TextEncoder().encode(Y),J=await crypto.subtle.digest("SHA-256",X);return Array.from(new Uint8Array(J)).map((K)=>K.toString(16).padStart(2,"0")).join("")}function $24(){let Y=new Uint8Array(32);return crypto.getRandomValues(Y),`prk_${Array.from(Y).map((X)=>X.toString(16).padStart(2,"0")).join("")}`}class rS{db;constructor(Y){this.db=Y}async generate(Y,Q){let X=H24(),J=$24(),G=await mS0(J),K=J.slice(0,12),W=new Date().toISOString();return await this.db.insertInto("private_registry_publish_api_key").values({id:X,organization_id:Y,name:Q,key_hash:G,prefix:K,created_at:W}).execute(),{entity:{id:X,organization_id:Y,name:Q,prefix:K,created_at:W},key:J}}async list(Y){return await this.db.selectFrom("private_registry_publish_api_key").select(["id","organization_id","name","prefix","created_at"]).where("organization_id","=",Y).orderBy("created_at","desc").execute()}async revoke(Y,Q){return(await this.db.deleteFrom("private_registry_publish_api_key").where("organization_id","=",Y).where("id","=",Q).execute()).length>0}async validate(Y,Q){let X=await mS0(Q),J=await this.db.selectFrom("private_registry_publish_api_key").select(["id"]).where("organization_id","=",Y).where("key_hash","=",X).executeTakeFirst();return Boolean(J)}async hasKeys(Y){let Q=await this.db.selectFrom("private_registry_publish_api_key").select((X)=>X.fn.countAll().as("count")).where("organization_id","=",Y).executeTakeFirst();return Number(Q?.count??0)>0}}var Hq1=()=>{};import{sql as F24}from"kysely";import{randomUUID as lS0}from"crypto";async function q24(Y){let Q=new Date().toISOString(),X=lS0(),J=IY.SELF(Y.organizationId),G="registry.publish_request.created",K={requestId:Y.request.id,requestedId:Y.request.requested_id,title:Y.request.title,status:Y.request.status,createdAt:Y.request.created_at,requester:{name:Y.request.requester_name,email:Y.request.requester_email}};await Y.db.insertInto("events").values({id:X,organization_id:Y.organizationId,type:"registry.publish_request.created",source:J,specversion:"1.0",subject:Y.request.id,time:Q,datacontenttype:"application/json",dataschema:null,data:JSON.stringify(K),cron:null,status:"pending",attempts:0,last_error:null,next_retry_at:null,created_at:Q,updated_at:Q}).execute();let W=await Y.db.selectFrom("event_subscriptions").select(["id"]).where("organization_id","=",Y.organizationId).where("enabled","=",1).where("event_type","=","registry.publish_request.created").where((Z)=>Z.or([Z("publisher","is",null),Z("publisher","=",J)])).execute();if(W.length>0)await Y.db.insertInto("event_deliveries").values(W.map((Z)=>({id:lS0(),event_id:X,subscription_id:Z.id,status:"pending",attempts:0,last_error:null,delivered_at:null,next_retry_at:null,created_at:Q}))).execute();try{await F24`SELECT pg_notify('mesh_events', ${X})`.execute(Y.db)}catch{}}async function B24(Y,Q){let J=(await Y.selectFrom("organization").select(["id"]).where("id","=",Q).execute())[0];if(J?.id)return J.id;return(await Y.selectFrom("organization").select(["id"]).where("slug","=",Q).execute())[0]?.id??null}async function U24(Y,Q){let X=await Y.selectFrom("project_plugin_configs").innerJoin("projects","projects.id","project_plugin_configs.project_id").select(["project_plugin_configs.settings as settings"]).where("projects.organization_id","=",Q).where("project_plugin_configs.plugin_id","=",yH).execute();for(let J of X){let G=J.settings,K=typeof G==="string"?(()=>{try{return JSON.parse(G)}catch{return{}}})():G??{};if(K.acceptPublishRequests===!0){let W=K.rateLimitWindow==="minute"?"minute":"hour",Z=K.rateLimitMax,H=typeof Z==="number"&&Number.isFinite(Z)&&Z>=1?Math.floor(Z):pS0;return{acceptPublishRequests:!0,requireApiToken:K.requireApiToken===!0,rateLimitEnabled:K.rateLimitEnabled===void 0?dS0:K.rateLimitEnabled===!0,rateLimitWindow:W,rateLimitMax:H}}}return{acceptPublishRequests:!1,requireApiToken:!1,rateLimitEnabled:dS0,rateLimitWindow:V24,rateLimitMax:pS0}}async function z24(Y,Q,X){let J=X==="minute"?60000:3600000,G=new Date(Date.now()-J).toISOString(),K=await Y.selectFrom("private_registry_publish_request").select((W)=>W.fn.countAll().as("count")).where("organization_id","=",Q).where("created_at",">=",G).executeTakeFirst();return Number(K?.count??0)}async function D24(Y,Q,X,J){let G=await Y.selectFrom("private_registry_item").select(["id","title"]).where("organization_id","=",Q).where((K)=>K.or([K("id","=",X),K("title","=",J)])).executeTakeFirst();return G?{id:String(G.id),title:String(G.title)}:null}function $q1(Y,Q){let{db:X,db:J}=Q,G=new aS(J),K=new rS(J);Y.post("/org/:orgRef/registry/publish-request",async(W)=>{let Z=W.req.param("orgRef"),H=await B24(X,Z);if(!H)return W.json({error:"Organization not found"},404);let $=await U24(X,H);if(!$.acceptPublishRequests)return W.json({error:"Publish requests are not enabled for this registry."},403);if($.requireApiToken){let z=W.req.header("Authorization"),D=z?.startsWith("Bearer ")?z.slice(7).trim():null;if(!D)return W.json({error:"API key required. Use Authorization: Bearer <key>"},401);if(!await K.validate(H,D))return W.json({error:"Invalid API key"},401)}if($.rateLimitEnabled){if(await z24(J,H,$.rateLimitWindow)>=$.rateLimitMax)return W.json({error:"Too many publish requests. Please try again later.",retryAfterSeconds:$.rateLimitWindow==="minute"?60:3600},429)}let F;try{F=await W.req.json()}catch{return W.json({error:"Invalid JSON body"},400)}let V=fS0.safeParse(F);if(!V.success)return W.json({error:"Invalid publish request payload",details:q.treeifyError(V.error)},400);let B=await D24(J,H,V.data.data.id,V.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 U=await G.createOrUpdate({organization_id:H,requested_id:V.data.data.id,title:V.data.data.title,description:V.data.data.description??null,_meta:V.data.data._meta,server:V.data.data.server,requester_name:V.data.requester?.name??null,requester_email:V.data.requester?.email??null});try{await q24({db:X,organizationId:H,request:U})}catch(z){console.warn("[private-registry] failed to emit publish-request event:",z)}return W.json({id:U.id,requested_id:U.requested_id,status:U.status},201)})}var dS0=!0,V24="hour",pS0=100;var cS0=k(()=>{KY();m1();yD();Kq1();Hq1();cY()});var nS0=k(()=>{gS0();cS0()});function iS0(Y){Fq1=Y}function k6(){if(!Fq1)throw Error(`Plugin storage not initialized. Make sure the "${yH}" plugin is enabled.`);return Fq1}async function O24(Y){if(!Y.organization)throw Error("Organization context required");return await Y.access.check(),Y}function W4(Y,Q){return async(X,J)=>{let G=await O24(J);return Q(X,G)}}function N24(Y){if(!Y)return{};if(typeof Y==="string")try{return JSON.parse(Y)}catch{return{}}if(typeof Y==="object")return Y;return{}}async function oS(Y,Q){let J=(await Y.db.selectFrom("project_plugin_configs").innerJoin("projects","projects.id","project_plugin_configs.project_id").select(["project_plugin_configs.settings as settings"]).where("projects.organization_id","=",Q).where("project_plugin_configs.plugin_id","=",yH).execute()).map((K)=>N24(K.settings)),G={acceptPublishRequests:J.some((K)=>K.acceptPublishRequests===!0),requireApiToken:J.some((K)=>K.requireApiToken===!0),storePrivateOnly:J.some((K)=>K.storePrivateOnly===!0)};if(G.acceptPublishRequests||G.requireApiToken||G.storePrivateOnly)return G;for(let K of J)if(Object.keys(K).length>0)return K;return{}}var Fq1=null;var W9=k(()=>{yD()});import{randomUUID as aS0}from"crypto";function rS0(Y,Q){if(!Y)return Q;try{return JSON.parse(Y)}catch{return Q}}class Vq1{db;constructor(Y){this.db=Y}async create(Y){let Q=aS0(),X=new Date().toISOString(),J={id:Q,organization_id:Y.organization_id,status:Y.status??"pending",config_snapshot:Y.config_snapshot?JSON.stringify(Y.config_snapshot):null,total_items:Y.total_items??0,tested_items:0,passed_items:0,failed_items:0,skipped_items:0,current_item_id:null,started_at:Y.started_at??null,finished_at:null,created_at:X};await this.db.insertInto("private_registry_monitor_run").values(J).execute();let G=await this.findById(Y.organization_id,Q);if(!G)throw Error(`Failed to create monitor run ${Q}`);return G}async findById(Y,Q){let X=await this.db.selectFrom("private_registry_monitor_run").selectAll().where("organization_id","=",Y).where("id","=",Q).executeTakeFirst();return X?this.deserializeRun(X):null}async list(Y,Q={}){let X=this.db.selectFrom("private_registry_monitor_run").selectAll().where("organization_id","=",Y),J=this.db.selectFrom("private_registry_monitor_run").select((Z)=>Z.fn.countAll().as("count")).where("organization_id","=",Y);if(Q.status)X=X.where("status","=",Q.status),J=J.where("status","=",Q.status);let G=await J.executeTakeFirst(),K=Number(G?.count??0);return{items:(await X.orderBy("created_at","desc").limit(Q.limit??24).offset(Q.offset??0).execute()).map((Z)=>this.deserializeRun(Z)),totalCount:K}}async update(Y,Q,X){let J={};if(X.total_items!==void 0)J.total_items=X.total_items;if(X.status!==void 0)J.status=X.status;if(X.tested_items!==void 0)J.tested_items=X.tested_items;if(X.passed_items!==void 0)J.passed_items=X.passed_items;if(X.failed_items!==void 0)J.failed_items=X.failed_items;if(X.skipped_items!==void 0)J.skipped_items=X.skipped_items;if(X.current_item_id!==void 0)J.current_item_id=X.current_item_id;if(X.started_at!==void 0)J.started_at=X.started_at;if(X.finished_at!==void 0)J.finished_at=X.finished_at;await this.db.updateTable("private_registry_monitor_run").set(J).where("organization_id","=",Y).where("id","=",Q).execute();let G=await this.findById(Y,Q);if(!G)throw Error(`Monitor run not found: ${Q}`);return G}deserializeRun(Y){return{id:Y.id,organization_id:Y.organization_id,status:Y.status,config_snapshot:rS0(Y.config_snapshot,null),total_items:Number(Y.total_items??0),tested_items:Number(Y.tested_items??0),passed_items:Number(Y.passed_items??0),failed_items:Number(Y.failed_items??0),skipped_items:Number(Y.skipped_items??0),current_item_id:Y.current_item_id,started_at:Y.started_at,finished_at:Y.finished_at,created_at:Y.created_at}}}class qq1{db;constructor(Y){this.db=Y}async create(Y){let Q=aS0(),X=new Date().toISOString(),J={id:Q,run_id:Y.run_id,organization_id:Y.organization_id,item_id:Y.item_id,item_title:Y.item_title,status:Y.status,error_message:Y.error_message??null,connection_ok:Y.connection_ok?1:0,tools_listed:Y.tools_listed?1:0,tool_results:Y.tool_results?JSON.stringify(Y.tool_results):null,agent_summary:Y.agent_summary??null,duration_ms:Y.duration_ms??0,action_taken:Y.action_taken??"none",tested_at:X};await this.db.insertInto("private_registry_monitor_result").values(J).execute();let G=await this.findById(Y.organization_id,Q);if(!G)throw Error("Failed to create test result");return G}async findById(Y,Q){let X=await this.db.selectFrom("private_registry_monitor_result").selectAll().where("organization_id","=",Y).where("id","=",Q).executeTakeFirst();return X?this.deserialize(X):null}async listByRun(Y,Q,X={}){let J=this.db.selectFrom("private_registry_monitor_result").selectAll().where("organization_id","=",Y).where("run_id","=",Q),G=this.db.selectFrom("private_registry_monitor_result").select((H)=>H.fn.countAll().as("count")).where("organization_id","=",Y).where("run_id","=",Q);if(X.status)J=J.where("status","=",X.status),G=G.where("status","=",X.status);let K=await G.executeTakeFirst(),W=Number(K?.count??0);return{items:(await J.orderBy("tested_at","desc").limit(X.limit??50).offset(X.offset??0).execute()).map((H)=>this.deserialize(H)),totalCount:W}}async update(Y,Q,X){let J={};if(X.status!==void 0)J.status=X.status;if(X.error_message!==void 0)J.error_message=X.error_message;if(X.connection_ok!==void 0)J.connection_ok=X.connection_ok?1:0;if(X.tools_listed!==void 0)J.tools_listed=X.tools_listed?1:0;if(X.tool_results!==void 0)J.tool_results=JSON.stringify(X.tool_results);if(X.agent_summary!==void 0)J.agent_summary=X.agent_summary;if(X.duration_ms!==void 0)J.duration_ms=X.duration_ms;if(X.action_taken!==void 0)J.action_taken=X.action_taken;await this.db.updateTable("private_registry_monitor_result").set(J).where("organization_id","=",Y).where("id","=",Q).execute();let G=await this.findById(Y,Q);if(!G)throw Error(`Monitor result not found: ${Q}`);return G}deserialize(Y){return{id:Y.id,run_id:Y.run_id,organization_id:Y.organization_id,item_id:Y.item_id,item_title:Y.item_title,status:Y.status,error_message:Y.error_message,connection_ok:Y.connection_ok===1,tools_listed:Y.tools_listed===1,tool_results:rS0(Y.tool_results,[]),agent_summary:Y.agent_summary,duration_ms:Number(Y.duration_ms??0),action_taken:Y.action_taken,tested_at:Y.tested_at}}}var oS0=()=>{};import{randomUUID as L24}from"crypto";class Bq1{db;constructor(Y){this.db=Y}async findByItemId(Y,Q){let X=await this.db.selectFrom("private_registry_monitor_connection").selectAll().where("organization_id","=",Y).where("item_id","=",Q).executeTakeFirst();return X?this.deserialize(X):null}async list(Y){return(await this.db.selectFrom("private_registry_monitor_connection").selectAll().where("organization_id","=",Y).orderBy("updated_at","desc").execute()).map((X)=>this.deserialize(X))}async findByConnectionId(Y,Q){let X=await this.db.selectFrom("private_registry_monitor_connection").selectAll().where("organization_id","=",Y).where("connection_id","=",Q).executeTakeFirst();return X?this.deserialize(X):null}async upsert(Y){let Q=await this.findByItemId(Y.organization_id,Y.item_id),X=new Date().toISOString();if(!Q){let G={id:L24(),organization_id:Y.organization_id,item_id:Y.item_id,connection_id:Y.connection_id,auth_status:Y.auth_status??"none",created_at:X,updated_at:X};await this.db.insertInto("private_registry_monitor_connection").values(G).execute()}else{let G={connection_id:Y.connection_id,auth_status:Y.auth_status??Q.auth_status,updated_at:X};await this.db.updateTable("private_registry_monitor_connection").set(G).where("organization_id","=",Y.organization_id).where("item_id","=",Y.item_id).execute()}let J=await this.findByItemId(Y.organization_id,Y.item_id);if(!J)throw Error("Failed to save monitor connection");return J}async updateAuthStatus(Y,Q,X){return await this.db.updateTable("private_registry_monitor_connection").set({auth_status:X,updated_at:new Date().toISOString()}).where("organization_id","=",Y).where("item_id","=",Q).execute(),this.findByItemId(Y,Q)}deserialize(Y){return{id:Y.id,organization_id:Y.organization_id,item_id:Y.item_id,connection_id:Y.connection_id,auth_status:Y.auth_status,created_at:Y.created_at,updated_at:Y.updated_at}}}var sS0=()=>{};function tS0(Y){let Q=Y.db,X={items:new nS(Q),publishRequests:new aS(Q),publishApiKeys:new rS(Q),monitorRuns:new Vq1(Q),monitorResults:new qq1(Q),monitorConnections:new Bq1(Q)};return iS0(X),X}var eS0=k(()=>{W9();oV1();Kq1();Hq1();oS0();sS0()});var Yk0;var Qk0=k(()=>{cY();W9();Yk0={name:"REGISTRY_ITEM_BULK_CREATE",description:"Create many private registry items at once",inputSchema:eV1,outputSchema:PS0,handler:W4(eV1,async(Y,Q)=>{let X=k6(),J=[],G=0;for(let K of Y.items)try{await X.items.create({...K,organization_id:Q.organization.id,created_by:Q.auth.user?.id??null}),G+=1}catch(W){J.push({id:K.id,error:W instanceof Error?W.message:"Unknown error"})}return{created:G,errors:J}})}});function M24(Y){return Array.from(new Set(Y.map((Q)=>Q.trim().toLowerCase()).filter((Q)=>Q.length>0)))}function w24(Y){let X=Y.structuredContent?.content?.filter((J)=>J.type==="text"&&typeof J.text==="string").map((J)=>J.text??"").join(`
|
|
1066
1066
|
`).trim();if(X)return X;return Y.content?.filter((J)=>J.type==="text"&&typeof J.text==="string").map((J)=>J.text??"").join(`
|
|
1067
1067
|
`).trim()??""}function A24(Y){let Q=Y.context,X=JSON.stringify({name:Q.name??"",provider:Q.provider??"",url:Q.url??"",owner:Q.owner??"",repositoryUrl:Q.repositoryUrl??"",description:Q.description??"",shortDescription:Q.shortDescription??"",tags:Q.tags??[],categories:Q.categories??[],availableTags:Q.availableTags??[],availableCategories:Q.availableCategories??[],tools:Q.tools??[]},null,2);if(Y.type==="description")return{system:"You are an assistant that writes concise MCP registry descriptions.",user:`Use the context below to write a clear English description for this MCP server.
|
|
1068
1068
|
Rules:
|
|
@@ -1367,7 +1367,7 @@ ${W.stack}`;Z.unsubscribe(),K.reject(H)}else if(H=(0,fi4.isRequestError)($),H){i
|
|
|
1367
1367
|
|
|
1368
1368
|
${W.stack}`;K.reject(H)}else K.resolve($)}});return Z.requestSubject=Y,this.protocol.publish(Y,Q,{reply:G,headers:X.headers}),K}else{let G=new Ot0.RequestOne(this.protocol.muxSubscriptions,Y,X,J);this.protocol.request(G);try{this.publish(Y,Q,{reply:`${this.protocol.muxSubscriptions.baseInbox}${G.token}`,headers:X.headers})}catch(W){G.cancel(W)}let K=Promise.race([G.timer,G.deferred]);return K.catch(()=>{G.cancel()}),K}}flush(){if(this.isClosed())return Promise.reject(jG.NatsError.errorForCode(CY.ErrorCode.ConnectionClosed));return this.protocol.flush()}drain(){if(this.isClosed())return Promise.reject(jG.NatsError.errorForCode(CY.ErrorCode.ConnectionClosed));if(this.isDraining())return Promise.reject(jG.NatsError.errorForCode(CY.ErrorCode.ConnectionDraining));return this.draining=!0,this.protocol.drain()}isClosed(){return this.protocol.isClosed()}isDraining(){return this.draining}getServer(){let Y=this.protocol.getServer();return Y?Y.listen:""}status(){let Y=new Dt0.QueuedIteratorImpl;return Y.iterClosed.then(()=>{let Q=this.listeners.indexOf(Y);this.listeners.splice(Q,1)}),this.listeners.push(Y),Y}get info(){return this.protocol.isClosed()?void 0:this.protocol.info}context(){return pv(this,void 0,void 0,function*(){return(yield this.request("$SYS.REQ.USER.INFO")).json((Q,X)=>{if(Q==="time")return new Date(Date.parse(X));return X})})}stats(){return{inBytes:this.protocol.inBytes,outBytes:this.protocol.outBytes,inMsgs:this.protocol.inMsgs,outMsgs:this.protocol.outMsgs}}jetstreamManager(){return pv(this,arguments,void 0,function*(Y={}){let Q=new bi4.JetStreamManagerImpl(this,Y);if(Y.checkAPI!==!1)try{yield Q.getAccountInfo()}catch(X){let J=X;if(J.code===CY.ErrorCode.NoResponders)J.code=CY.ErrorCode.JetStreamNotEnabled;throw J}return Q})}jetstream(Y={}){return new hi4.JetStreamClientImpl(this,Y)}getServerVersion(){let Y=this.info;return Y?(0,_i4.parseSemVer)(Y.version):void 0}rtt(){return pv(this,void 0,void 0,function*(){if(!this.protocol._closed&&!this.protocol.connected)throw jG.NatsError.errorForCode(CY.ErrorCode.Disconnect);let Y=Date.now();return yield this.flush(),Date.now()-Y})}get features(){return this.protocol.features}get services(){if(!this._services)this._services=new HM1(this);return this._services}reconnect(){if(this.isClosed())return Promise.reject(jG.NatsError.errorForCode(CY.ErrorCode.ConnectionClosed));if(this.isDraining())return Promise.reject(jG.NatsError.errorForCode(CY.ErrorCode.ConnectionDraining));return this.protocol.reconnect()}}Z3.NatsConnectionImpl=KM1;class HM1{constructor(Y){this.nc=Y}add(Y){try{return new xi4.ServiceImpl(this.nc,Y).start()}catch(Q){return Promise.reject(Q)}}client(Y,Q){return new gi4.ServiceClientImpl(this.nc,Y,Q)}}Z3.ServicesFactory=HM1});var Et0=j((P7)=>{var TF=P7&&P7.__awaiter||function(Y,Q,X,J){function G(K){return K instanceof X?K:new X(function(W){W(K)})}return new(X||(X=Promise))(function(K,W){function Z(F){try{$(J.next(F))}catch(V){W(V)}}function H(F){try{$(J.throw(F))}catch(V){W(V)}}function $(F){F.done?K(F.value):G(F.value).then(Z,H)}$((J=J.apply(Y,Q||[])).next())})},Lt0=P7&&P7.__asyncValues||function(Y){if(!Symbol.asyncIterator)throw TypeError("Symbol.asyncIterator is not defined.");var Q=Y[Symbol.asyncIterator],X;return Q?Q.call(Y):(Y=typeof __values==="function"?__values(Y):Y[Symbol.iterator](),X={},J("next"),J("throw"),J("return"),X[Symbol.asyncIterator]=function(){return this},X);function J(K){X[K]=Y[K]&&function(W){return new Promise(function(Z,H){W=Y[K](W),G(Z,H,W.done,W.value)})}}function G(K,W,Z,H){Promise.resolve(H).then(function($){K({value:$,done:Z})},W)}};Object.defineProperty(P7,"__esModule",{value:!0});P7.Bench=P7.Metric=void 0;P7.throughput=At0;P7.msgThroughput=li4;P7.humanizeBytes=Pt0;var ui4=kP(),mi4=sH(),$M1=UQ(),Mt0=E9();class PB{constructor(Y,Q){this.name=Y,this.duration=Q,this.date=Date.now(),this.payload=0,this.msgs=0,this.bytes=0}toString(){let Y=this.duration/1000,Q=Math.round(this.msgs/Y),X=this.asyncRequests?"asyncRequests":"",J="";if(this.max)J=`${this.min}/${this.max}`;return`${this.name}${X?" [asyncRequests]":""} ${di4(Q)} msgs/sec - [${Y.toFixed(2)} secs] ~ ${At0(this.bytes,Y)} ${J}`}toCsv(){return`"${this.name}",${new Date(this.date).toISOString()},${this.lang},${this.version},${this.msgs},${this.payload},${this.bytes},${this.duration},${this.asyncRequests?this.asyncRequests:!1}
|
|
1369
1369
|
`}static header(){return`Test,Date,Lang,Version,Count,MsgPayload,Bytes,Millis,Async
|
|
1370
|
-
`}}P7.Metric=PB;class wt0{constructor(Y,Q={msgs:1e5,size:128,subject:"",asyncRequests:!1,pub:!1,sub:!1,req:!1,rep:!1}){if(this.nc=Y,this.callbacks=Q.callbacks||!1,this.msgs=Q.msgs||0,this.size=Q.size||0,this.subject=Q.subject||mi4.nuid.next(),this.asyncRequests=Q.asyncRequests||!1,this.pub=Q.pub||!1,this.sub=Q.sub||!1,this.req=Q.req||!1,this.rep=Q.rep||!1,this.perf=new $M1.Perf,this.payload=this.size?new Uint8Array(this.size):ui4.Empty,!this.pub&&!this.sub&&!this.req&&!this.rep)throw Error("no bench option selected")}run(){return TF(this,void 0,void 0,function*(){if(this.nc.closed().then((Y)=>{if(Y)throw new Mt0.NatsError(`bench closed with an error: ${Y.message}`,Mt0.ErrorCode.Unknown,Y)}),this.callbacks)yield this.runCallbacks();else yield this.runAsync();return this.processMetrics()})}processMetrics(){let Y=this.nc,{lang:Q,version:X}=Y.protocol.transport;if(this.pub&&this.sub)this.perf.measure("pubsub","pubStart","subStop");if(this.req&&this.rep)this.perf.measure("reqrep","reqStart","reqStop");let J=this.perf.getEntries(),G=J.find((B)=>B.name==="pubsub"),K=J.find((B)=>B.name==="reqrep"),W=J.find((B)=>B.name==="req"),Z=J.find((B)=>B.name==="rep"),H=J.find((B)=>B.name==="pub"),$=J.find((B)=>B.name==="sub"),F=this.nc.stats(),V=[];if(G){let{name:B,duration:U}=G,z=new PB(B,U);z.msgs=this.msgs*2,z.bytes=F.inBytes+F.outBytes,z.lang=Q,z.version=X,z.payload=this.payload.length,V.push(z)}if(K){let{name:B,duration:U}=K,z=new PB(B,U);z.msgs=this.msgs*2,z.bytes=F.inBytes+F.outBytes,z.lang=Q,z.version=X,z.payload=this.payload.length,V.push(z)}if(H){let{name:B,duration:U}=H,z=new PB(B,U);z.msgs=this.msgs,z.bytes=F.outBytes,z.lang=Q,z.version=X,z.payload=this.payload.length,V.push(z)}if($){let{name:B,duration:U}=$,z=new PB(B,U);z.msgs=this.msgs,z.bytes=F.inBytes,z.lang=Q,z.version=X,z.payload=this.payload.length,V.push(z)}if(Z){let{name:B,duration:U}=Z,z=new PB(B,U);z.msgs=this.msgs,z.bytes=F.inBytes+F.outBytes,z.lang=Q,z.version=X,z.payload=this.payload.length,V.push(z)}if(W){let{name:B,duration:U}=W,z=new PB(B,U);z.msgs=this.msgs,z.bytes=F.inBytes+F.outBytes,z.lang=Q,z.version=X,z.payload=this.payload.length,V.push(z)}return V}runCallbacks(){return TF(this,void 0,void 0,function*(){let Y=[];if(this.sub){let Q=(0,$M1.deferred)();Y.push(Q);let X=0;this.nc.subscribe(this.subject,{max:this.msgs,callback:()=>{if(X++,X===1)this.perf.mark("subStart");if(X===this.msgs)this.perf.mark("subStop"),this.perf.measure("sub","subStart","subStop"),Q.resolve()}})}if(this.rep){let Q=(0,$M1.deferred)();Y.push(Q);let X=0;this.nc.subscribe(this.subject,{max:this.msgs,callback:(J,G)=>{if(G.respond(this.payload),X++,X===1)this.perf.mark("repStart");if(X===this.msgs)this.perf.mark("repStop"),this.perf.measure("rep","repStart","repStop"),Q.resolve()}})}if(this.pub){let Q=(()=>TF(this,void 0,void 0,function*(){this.perf.mark("pubStart");for(let X=0;X<this.msgs;X++)this.nc.publish(this.subject,this.payload);yield this.nc.flush(),this.perf.mark("pubStop"),this.perf.measure("pub","pubStart","pubStop")}))();Y.push(Q)}if(this.req){let Q=(()=>TF(this,void 0,void 0,function*(){if(this.asyncRequests){this.perf.mark("reqStart");let X=[];for(let J=0;J<this.msgs;J++)X.push(this.nc.request(this.subject,this.payload,{timeout:20000}));yield Promise.all(X),this.perf.mark("reqStop"),this.perf.measure("req","reqStart","reqStop")}else{this.perf.mark("reqStart");for(let X=0;X<this.msgs;X++)yield this.nc.request(this.subject);this.perf.mark("reqStop"),this.perf.measure("req","reqStart","reqStop")}}))();Y.push(Q)}yield Promise.all(Y)})}runAsync(){return TF(this,void 0,void 0,function*(){let Y=[];if(this.rep){let Q=!1,X=this.nc.subscribe(this.subject,{max:this.msgs}),J=(()=>TF(this,void 0,void 0,function*(){var G,K,W,Z;try{for(var H=!0,$=Lt0(X),F;F=yield $.next(),G=F.done,!G;H=!0){Z=F.value,H=!1;let V=Z;if(!Q)this.perf.mark("repStart"),Q=!0;V.respond(this.payload)}}catch(V){K={error:V}}finally{try{if(!H&&!G&&(W=$.return))yield W.call($)}finally{if(K)throw K.error}}yield this.nc.flush(),this.perf.mark("repStop"),this.perf.measure("rep","repStart","repStop")}))();Y.push(J)}if(this.sub){let Q=!1,X=this.nc.subscribe(this.subject,{max:this.msgs}),J=(()=>TF(this,void 0,void 0,function*(){var G,K,W,Z;try{for(var H=!0,$=Lt0(X),F;F=yield $.next(),G=F.done,!G;H=!0){Z=F.value,H=!1;let V=Z;if(!Q)this.perf.mark("subStart"),Q=!0}}catch(V){K={error:V}}finally{try{if(!H&&!G&&(W=$.return))yield W.call($)}finally{if(K)throw K.error}}this.perf.mark("subStop"),this.perf.measure("sub","subStart","subStop")}))();Y.push(J)}if(this.pub){let Q=(()=>TF(this,void 0,void 0,function*(){this.perf.mark("pubStart");for(let X=0;X<this.msgs;X++)this.nc.publish(this.subject,this.payload);yield this.nc.flush(),this.perf.mark("pubStop"),this.perf.measure("pub","pubStart","pubStop")}))();Y.push(Q)}if(this.req){let Q=(()=>TF(this,void 0,void 0,function*(){if(this.asyncRequests){this.perf.mark("reqStart");let X=[];for(let J=0;J<this.msgs;J++)X.push(this.nc.request(this.subject,this.payload,{timeout:20000}));yield Promise.all(X),this.perf.mark("reqStop"),this.perf.measure("req","reqStart","reqStop")}else{this.perf.mark("reqStart");for(let X=0;X<this.msgs;X++)yield this.nc.request(this.subject);this.perf.mark("reqStop"),this.perf.measure("req","reqStart","reqStop")}}))();Y.push(Q)}yield Promise.all(Y)})}}P7.Bench=wt0;function At0(Y,Q){return`${Pt0(Y/Q)}/sec`}function li4(Y,Q){return`${Math.floor(Y/Q)} msgs/sec`}function Pt0(Y,Q=!1){let X=Q?1000:1024,J=Q?["k","M","G","T","P","E"]:["K","M","G","T","P","E"],G=Q?"iB":"B";if(Y<X)return`${Y.toFixed(2)} ${G}`;let K=parseInt(Math.log(Y)/Math.log(X)+""),W=parseInt(K-1+"");return`${(Y/Math.pow(X,K)).toFixed(2)} ${J[W]}${G}`}function di4(Y){return Y.toString().replace(/\B(?=(\d{3})+(?!\d))/g,",")}});var vL1=j((g1)=>{var pi4=g1&&g1.__createBinding||(Object.create?function(Y,Q,X,J){if(J===void 0)J=X;var G=Object.getOwnPropertyDescriptor(Q,X);if(!G||("get"in G?!Q.__esModule:G.writable||G.configurable))G={enumerable:!0,get:function(){return Q[X]}};Object.defineProperty(Y,J,G)}:function(Y,Q,X,J){if(J===void 0)J=X;Y[J]=Q[X]}),ci4=g1&&g1.__exportStar||function(Y,Q){for(var X in Y)if(X!=="default"&&!Object.prototype.hasOwnProperty.call(Q,X))pi4(Q,Y,X)};Object.defineProperty(g1,"__esModule",{value:!0});g1.parseIP=g1.isIP=g1.TE=g1.TD=g1.Metric=g1.Bench=g1.writeAll=g1.readAll=g1.MAX_SIZE=g1.DenoBuffer=g1.State=g1.Parser=g1.Kind=g1.QueuedIteratorImpl=g1.StringCodec=g1.JSONCodec=g1.usernamePasswordAuthenticator=g1.tokenAuthenticator=g1.nkeyAuthenticator=g1.jwtAuthenticator=g1.credsAuthenticator=g1.RequestOne=g1.checkUnsupportedOption=g1.checkOptions=g1.buildAuthenticator=g1.DataBuffer=g1.MuxSubscription=g1.Heartbeat=g1.MsgHdrsImpl=g1.headers=g1.canonicalMIMEHeaderKey=g1.timeout=g1.render=g1.nanos=g1.millis=g1.extend=g1.delay=g1.deferred=g1.deadline=g1.collect=g1.backoff=g1.ProtocolHandler=g1.INFO=g1.Connect=g1.setTransportFactory=g1.getResolveFn=g1.MsgImpl=g1.nuid=g1.Nuid=g1.NatsConnectionImpl=void 0;g1.Subscriptions=g1.SubscriptionImpl=g1.syncIterator=g1.ServiceVerb=g1.ServiceResponseType=g1.ServiceErrorHeader=g1.ServiceErrorCodeHeader=g1.ServiceError=g1.RequestStrategy=g1.NatsError=g1.Match=g1.isNatsError=g1.Events=g1.ErrorCode=g1.DebugEvents=g1.createInbox=g1.extractProtocolMessage=g1.Empty=g1.parseSemVer=g1.compare=g1.NoopKvCodecs=g1.defaultBucketOpts=g1.Bucket=g1.Base64KeyCodec=g1.TypedSubscription=void 0;var ni4=Nt0();Object.defineProperty(g1,"NatsConnectionImpl",{enumerable:!0,get:function(){return ni4.NatsConnectionImpl}});var Tt0=sH();Object.defineProperty(g1,"Nuid",{enumerable:!0,get:function(){return Tt0.Nuid}});Object.defineProperty(g1,"nuid",{enumerable:!0,get:function(){return Tt0.nuid}});var ii4=TP();Object.defineProperty(g1,"MsgImpl",{enumerable:!0,get:function(){return ii4.MsgImpl}});var Ct0=AP();Object.defineProperty(g1,"getResolveFn",{enumerable:!0,get:function(){return Ct0.getResolveFn}});Object.defineProperty(g1,"setTransportFactory",{enumerable:!0,get:function(){return Ct0.setTransportFactory}});var FM1=Jo();Object.defineProperty(g1,"Connect",{enumerable:!0,get:function(){return FM1.Connect}});Object.defineProperty(g1,"INFO",{enumerable:!0,get:function(){return FM1.INFO}});Object.defineProperty(g1,"ProtocolHandler",{enumerable:!0,get:function(){return FM1.ProtocolHandler}});var K3=UQ();Object.defineProperty(g1,"backoff",{enumerable:!0,get:function(){return K3.backoff}});Object.defineProperty(g1,"collect",{enumerable:!0,get:function(){return K3.collect}});Object.defineProperty(g1,"deadline",{enumerable:!0,get:function(){return K3.deadline}});Object.defineProperty(g1,"deferred",{enumerable:!0,get:function(){return K3.deferred}});Object.defineProperty(g1,"delay",{enumerable:!0,get:function(){return K3.delay}});Object.defineProperty(g1,"extend",{enumerable:!0,get:function(){return K3.extend}});Object.defineProperty(g1,"millis",{enumerable:!0,get:function(){return K3.millis}});Object.defineProperty(g1,"nanos",{enumerable:!0,get:function(){return K3.nanos}});Object.defineProperty(g1,"render",{enumerable:!0,get:function(){return K3.render}});Object.defineProperty(g1,"timeout",{enumerable:!0,get:function(){return K3.timeout}});var VM1=NF();Object.defineProperty(g1,"canonicalMIMEHeaderKey",{enumerable:!0,get:function(){return VM1.canonicalMIMEHeaderKey}});Object.defineProperty(g1,"headers",{enumerable:!0,get:function(){return VM1.headers}});Object.defineProperty(g1,"MsgHdrsImpl",{enumerable:!0,get:function(){return VM1.MsgHdrsImpl}});var ai4=eN1();Object.defineProperty(g1,"Heartbeat",{enumerable:!0,get:function(){return ai4.Heartbeat}});var ri4=tN1();Object.defineProperty(g1,"MuxSubscription",{enumerable:!0,get:function(){return ri4.MuxSubscription}});var oi4=wP();Object.defineProperty(g1,"DataBuffer",{enumerable:!0,get:function(){return oi4.DataBuffer}});var qM1=Qo();Object.defineProperty(g1,"buildAuthenticator",{enumerable:!0,get:function(){return qM1.buildAuthenticator}});Object.defineProperty(g1,"checkOptions",{enumerable:!0,get:function(){return qM1.checkOptions}});Object.defineProperty(g1,"checkUnsupportedOption",{enumerable:!0,get:function(){return qM1.checkUnsupportedOption}});var si4=Zo();Object.defineProperty(g1,"RequestOne",{enumerable:!0,get:function(){return si4.RequestOne}});var cv=zL1();Object.defineProperty(g1,"credsAuthenticator",{enumerable:!0,get:function(){return cv.credsAuthenticator}});Object.defineProperty(g1,"jwtAuthenticator",{enumerable:!0,get:function(){return cv.jwtAuthenticator}});Object.defineProperty(g1,"nkeyAuthenticator",{enumerable:!0,get:function(){return cv.nkeyAuthenticator}});Object.defineProperty(g1,"tokenAuthenticator",{enumerable:!0,get:function(){return cv.tokenAuthenticator}});Object.defineProperty(g1,"usernamePasswordAuthenticator",{enumerable:!0,get:function(){return cv.usernamePasswordAuthenticator}});var Rt0=eH();Object.defineProperty(g1,"JSONCodec",{enumerable:!0,get:function(){return Rt0.JSONCodec}});Object.defineProperty(g1,"StringCodec",{enumerable:!0,get:function(){return Rt0.StringCodec}});ci4(BL1(),g1);var ti4=hW();Object.defineProperty(g1,"QueuedIteratorImpl",{enumerable:!0,get:function(){return ti4.QueuedIteratorImpl}});var BM1=WL1();Object.defineProperty(g1,"Kind",{enumerable:!0,get:function(){return BM1.Kind}});Object.defineProperty(g1,"Parser",{enumerable:!0,get:function(){return BM1.Parser}});Object.defineProperty(g1,"State",{enumerable:!0,get:function(){return BM1.State}});var yo=XL1();Object.defineProperty(g1,"DenoBuffer",{enumerable:!0,get:function(){return yo.DenoBuffer}});Object.defineProperty(g1,"MAX_SIZE",{enumerable:!0,get:function(){return yo.MAX_SIZE}});Object.defineProperty(g1,"readAll",{enumerable:!0,get:function(){return yo.readAll}});Object.defineProperty(g1,"writeAll",{enumerable:!0,get:function(){return yo.writeAll}});var It0=Et0();Object.defineProperty(g1,"Bench",{enumerable:!0,get:function(){return It0.Bench}});Object.defineProperty(g1,"Metric",{enumerable:!0,get:function(){return It0.Metric}});var jt0=BQ();Object.defineProperty(g1,"TD",{enumerable:!0,get:function(){return jt0.TD}});Object.defineProperty(g1,"TE",{enumerable:!0,get:function(){return jt0.TE}});var St0=cN1();Object.defineProperty(g1,"isIP",{enumerable:!0,get:function(){return St0.isIP}});Object.defineProperty(g1,"parseIP",{enumerable:!0,get:function(){return St0.parseIP}});var ei4=bL1();Object.defineProperty(g1,"TypedSubscription",{enumerable:!0,get:function(){return ei4.TypedSubscription}});var fo=xv();Object.defineProperty(g1,"Base64KeyCodec",{enumerable:!0,get:function(){return fo.Base64KeyCodec}});Object.defineProperty(g1,"Bucket",{enumerable:!0,get:function(){return fo.Bucket}});Object.defineProperty(g1,"defaultBucketOpts",{enumerable:!0,get:function(){return fo.defaultBucketOpts}});Object.defineProperty(g1,"NoopKvCodecs",{enumerable:!0,get:function(){return fo.NoopKvCodecs}});var kt0=LF();Object.defineProperty(g1,"compare",{enumerable:!0,get:function(){return kt0.compare}});Object.defineProperty(g1,"parseSemVer",{enumerable:!0,get:function(){return kt0.parseSemVer}});var Ya4=kP();Object.defineProperty(g1,"Empty",{enumerable:!0,get:function(){return Ya4.Empty}});var Qa4=AP();Object.defineProperty(g1,"extractProtocolMessage",{enumerable:!0,get:function(){return Qa4.extractProtocolMessage}});var SG=E9();Object.defineProperty(g1,"createInbox",{enumerable:!0,get:function(){return SG.createInbox}});Object.defineProperty(g1,"DebugEvents",{enumerable:!0,get:function(){return SG.DebugEvents}});Object.defineProperty(g1,"ErrorCode",{enumerable:!0,get:function(){return SG.ErrorCode}});Object.defineProperty(g1,"Events",{enumerable:!0,get:function(){return SG.Events}});Object.defineProperty(g1,"isNatsError",{enumerable:!0,get:function(){return SG.isNatsError}});Object.defineProperty(g1,"Match",{enumerable:!0,get:function(){return SG.Match}});Object.defineProperty(g1,"NatsError",{enumerable:!0,get:function(){return SG.NatsError}});Object.defineProperty(g1,"RequestStrategy",{enumerable:!0,get:function(){return SG.RequestStrategy}});Object.defineProperty(g1,"ServiceError",{enumerable:!0,get:function(){return SG.ServiceError}});Object.defineProperty(g1,"ServiceErrorCodeHeader",{enumerable:!0,get:function(){return SG.ServiceErrorCodeHeader}});Object.defineProperty(g1,"ServiceErrorHeader",{enumerable:!0,get:function(){return SG.ServiceErrorHeader}});Object.defineProperty(g1,"ServiceResponseType",{enumerable:!0,get:function(){return SG.ServiceResponseType}});Object.defineProperty(g1,"ServiceVerb",{enumerable:!0,get:function(){return SG.ServiceVerb}});Object.defineProperty(g1,"syncIterator",{enumerable:!0,get:function(){return SG.syncIterator}});var vt0=Jo();Object.defineProperty(g1,"SubscriptionImpl",{enumerable:!0,get:function(){return vt0.SubscriptionImpl}});Object.defineProperty(g1,"Subscriptions",{enumerable:!0,get:function(){return vt0.Subscriptions}})});var bo=j((zQ)=>{Object.defineProperty(zQ,"__esModule",{value:!0});zQ.ConsumerEvents=zQ.ConsumerDebugEvents=zQ.StoreCompression=zQ.StorageType=zQ.RetentionPolicy=zQ.ReplayPolicy=zQ.DiscardPolicy=zQ.DeliverPolicy=zQ.AckPolicy=zQ.RepublishHeaders=zQ.KvWatchInclude=zQ.JsHeaders=zQ.isConsumerOptsBuilder=zQ.DirectMsgHeaders=zQ.consumerOpts=zQ.AdvisoryKind=zQ.isHeartbeatMsg=zQ.isFlowControlMsg=zQ.checkJsError=void 0;var UM1=X3();Object.defineProperty(zQ,"checkJsError",{enumerable:!0,get:function(){return UM1.checkJsError}});Object.defineProperty(zQ,"isFlowControlMsg",{enumerable:!0,get:function(){return UM1.isFlowControlMsg}});Object.defineProperty(zQ,"isHeartbeatMsg",{enumerable:!0,get:function(){return UM1.isHeartbeatMsg}});var yO=wF();Object.defineProperty(zQ,"AdvisoryKind",{enumerable:!0,get:function(){return yO.AdvisoryKind}});Object.defineProperty(zQ,"consumerOpts",{enumerable:!0,get:function(){return yO.consumerOpts}});Object.defineProperty(zQ,"DirectMsgHeaders",{enumerable:!0,get:function(){return yO.DirectMsgHeaders}});Object.defineProperty(zQ,"isConsumerOptsBuilder",{enumerable:!0,get:function(){return yO.isConsumerOptsBuilder}});Object.defineProperty(zQ,"JsHeaders",{enumerable:!0,get:function(){return yO.JsHeaders}});Object.defineProperty(zQ,"KvWatchInclude",{enumerable:!0,get:function(){return yO.KvWatchInclude}});Object.defineProperty(zQ,"RepublishHeaders",{enumerable:!0,get:function(){return yO.RepublishHeaders}});var fO=OB();Object.defineProperty(zQ,"AckPolicy",{enumerable:!0,get:function(){return fO.AckPolicy}});Object.defineProperty(zQ,"DeliverPolicy",{enumerable:!0,get:function(){return fO.DeliverPolicy}});Object.defineProperty(zQ,"DiscardPolicy",{enumerable:!0,get:function(){return fO.DiscardPolicy}});Object.defineProperty(zQ,"ReplayPolicy",{enumerable:!0,get:function(){return fO.ReplayPolicy}});Object.defineProperty(zQ,"RetentionPolicy",{enumerable:!0,get:function(){return fO.RetentionPolicy}});Object.defineProperty(zQ,"StorageType",{enumerable:!0,get:function(){return fO.StorageType}});Object.defineProperty(zQ,"StoreCompression",{enumerable:!0,get:function(){return fO.StoreCompression}});var _t0=tL1();Object.defineProperty(zQ,"ConsumerDebugEvents",{enumerable:!0,get:function(){return _t0.ConsumerDebugEvents}});Object.defineProperty(zQ,"ConsumerEvents",{enumerable:!0,get:function(){return _t0.ConsumerEvents}})});var zM1=j((EB)=>{var Ja4=EB&&EB.__createBinding||(Object.create?function(Y,Q,X,J){if(J===void 0)J=X;var G=Object.getOwnPropertyDescriptor(Q,X);if(!G||("get"in G?!Q.__esModule:G.writable||G.configurable))G={enumerable:!0,get:function(){return Q[X]}};Object.defineProperty(Y,J,G)}:function(Y,Q,X,J){if(J===void 0)J=X;Y[J]=Q[X]}),yt0=EB&&EB.__exportStar||function(Y,Q){for(var X in Y)if(X!=="default"&&!Object.prototype.hasOwnProperty.call(Q,X))Ja4(Q,Y,X)};Object.defineProperty(EB,"__esModule",{value:!0});yt0(vL1(),EB);yt0(bo(),EB)});var xt0=j((ZK)=>{var uP=ZK&&ZK.__awaiter||function(Y,Q,X,J){function G(K){return K instanceof X?K:new X(function(W){W(K)})}return new(X||(X=Promise))(function(K,W){function Z(F){try{$(J.next(F))}catch(V){W(V)}}function H(F){try{$(J.throw(F))}catch(V){W(V)}}function $(F){F.done?K(F.value):G(F.value).then(Z,H)}$((J=J.apply(Y,Q||[])).next())})},nv=ZK&&ZK.__await||function(Y){return this instanceof nv?(this.v=Y,this):new nv(Y)},Ga4=ZK&&ZK.__asyncGenerator||function(Y,Q,X){if(!Symbol.asyncIterator)throw TypeError("Symbol.asyncIterator is not defined.");var J=X.apply(Y,Q||[]),G,K=[];return G=Object.create((typeof AsyncIterator==="function"?AsyncIterator:Object).prototype),Z("next"),Z("throw"),Z("return",W),G[Symbol.asyncIterator]=function(){return this},G;function W(U){return function(z){return Promise.resolve(z).then(U,V)}}function Z(U,z){if(J[U]){if(G[U]=function(D){return new Promise(function(L,w){K.push([U,D,L,w])>1||H(U,D)})},z)G[U]=z(G[U])}}function H(U,z){try{$(J[U](z))}catch(D){B(K[0][3],D)}}function $(U){U.value instanceof nv?Promise.resolve(U.value.v).then(F,V):B(K[0][2],U)}function F(U){H("next",U)}function V(U){H("throw",U)}function B(U,z){if(U(z),K.shift(),K.length)H(K[0][0],K[0][1])}};Object.defineProperty(ZK,"__esModule",{value:!0});ZK.NodeTransport=void 0;ZK.nodeResolveHost=Va4;var c8=zM1(),Wa4=E1("net"),ft0=UQ(),DM1=E1("tls"),{resolve:Za4}=E1("path"),{readFile:Ka4,existsSync:Ha4}=E1("fs"),bt0=E1("dns"),$a4="2.29.3",Fa4="nats.js";class ht0{constructor(){this.yields=[],this.signal=(0,c8.deferred)(),this.closedNotification=(0,c8.deferred)(),this.connected=!1,this.tlsName="",this.done=!1,this.lang=Fa4,this.version=$a4}connect(Y,Q){return uP(this,void 0,void 0,function*(){this.tlsName=Y.tlsName,this.options=Q;let{tls:X}=this.options,{handshakeFirst:J}=X||{};try{if(J===!0)this.socket=yield this.tlsFirst(Y);else this.socket=yield this.dial(Y);let G=yield this.peekInfo();(0,c8.checkOptions)(G,Q);let{tls_required:K,tls_available:W}=G,Z=W===!0&&Q.tls!==null;if(!J&&(K||Z))this.socket=yield this.startTLS();if(K&&this.socket.encrypted!==!0)throw new c8.NatsError("tls",c8.ErrorCode.ServerOptionNotAvailable);return this.connected=!0,this.setupHandlers(),this.signal.resolve(),Promise.resolve()}catch(G){if(!G)G=c8.NatsError.errorForCode(c8.ErrorCode.ConnectionRefused,Error("node provided an undefined error!"));let{code:K}=G,W=K==="ECONNREFUSED"?c8.NatsError.errorForCode(c8.ErrorCode.ConnectionRefused,G):G;if(this.socket)this.socket.destroy();throw W}})}dial(Y){let Q=(0,c8.deferred)(),X,J=(0,Wa4.createConnection)(Y.port,Y.hostname,()=>{Q.resolve(J),J.removeAllListeners()});return J.on("error",(G)=>{X=G}),J.on("close",()=>{J.removeAllListeners(),Q.reject(X)}),J.setNoDelay(!0),Q}get isClosed(){return this.done}close(Y){return this._closed(Y,!1)}peekInfo(){let Y=(0,c8.deferred)(),Q;return this.socket.on("data",(X)=>{this.yields.push(X);let J=c8.DataBuffer.concat(...this.yields),G=(0,c8.extractProtocolMessage)(J);if(G!=="")try{let K=c8.INFO.exec(G);if(!K)throw Error("unexpected response from server");let W=JSON.parse(K[1]);Y.resolve(W)}catch(K){Y.reject(K)}finally{this.socket.removeAllListeners()}}),this.socket.on("error",(X)=>{Q=X}),this.socket.on("close",()=>{this.socket.removeAllListeners(),Y.reject(Q)}),Y}loadFile(Y){if(!Y)return Promise.resolve();let Q=(0,c8.deferred)();try{if(Y=Za4(Y),!Ha4(Y))Q.reject(Error(`${Y} doesn't exist`));Ka4(Y,(X,J)=>{if(X)return Q.reject(X);Q.resolve(J)})}catch(X){Q.reject(X)}return Q}loadClientCerts(){return uP(this,void 0,void 0,function*(){let Y={},{certFile:Q,cert:X,caFile:J,ca:G,keyFile:K,key:W}=this.options.tls;try{if(Q){let Z=yield this.loadFile(Q);if(Z)Y.cert=Z}else if(X)Y.cert=X;if(K){let Z=yield this.loadFile(K);if(Z)Y.key=Z}else if(W)Y.key=W;if(J){let Z=yield this.loadFile(J);if(Z)Y.ca=[Z]}else if(G)Y.ca=G;return Promise.resolve(Y)}catch(Z){return Promise.reject(Z)}})}tlsFirst(Y){return uP(this,void 0,void 0,function*(){let Q,X={servername:this.tlsName,rejectUnauthorized:!0};if(this.socket)X.socket=this.socket;if(typeof this.options.tls==="object")try{let G=(yield this.loadClientCerts())||{};X=(0,ft0.extend)(X,this.options.tls,G)}catch(G){return Promise.reject(new c8.NatsError(G.message,c8.ErrorCode.Tls,G))}let J=(0,c8.deferred)();try{let G=(0,DM1.connect)(Y.port,Y.hostname,X,()=>{G.removeAllListeners(),J.resolve(G)});G.on("error",(K)=>{Q=K}),G.on("secureConnect",()=>{if(X.rejectUnauthorized===!1)return;if(!G.authorized)throw G.authorizationError}),G.on("close",()=>{J.reject(Q),G.removeAllListeners()}),G.setNoDelay(!0)}catch(G){J.reject(c8.NatsError.errorForCode(c8.ErrorCode.Tls,G))}return J})}startTLS(){return uP(this,void 0,void 0,function*(){let Y,Q={socket:this.socket,servername:this.tlsName,rejectUnauthorized:!0};if(typeof this.options.tls==="object")try{let J=(yield this.loadClientCerts())||{};Q=(0,ft0.extend)(Q,this.options.tls,J)}catch(J){return Promise.reject(new c8.NatsError(J.message,c8.ErrorCode.Tls,J))}let X=(0,c8.deferred)();try{let J=(0,DM1.connect)(Q,()=>{J.removeAllListeners(),X.resolve(J)});J.on("error",(G)=>{Y=G}),J.on("secureConnect",()=>{if(Q.rejectUnauthorized===!1)return;if(!J.authorized)throw J.authorizationError}),J.on("close",()=>{X.reject(Y),J.removeAllListeners()})}catch(J){X.reject(c8.NatsError.errorForCode(c8.ErrorCode.Tls,J))}return X})}setupHandlers(){let Y;this.socket.on("data",(Q)=>{return this.yields.push(Q),this.signal.resolve()}),this.socket.on("error",(Q)=>{Y=Q}),this.socket.on("end",()=>{var Q,X;if((Q=this.socket)===null||Q===void 0?void 0:Q.destroyed)return;(X=this.socket)===null||X===void 0||X.write(new Uint8Array(0),()=>{var J;(J=this.socket)===null||J===void 0||J.end()})}),this.socket.on("close",()=>{this._closed(Y,!1)})}[Symbol.asyncIterator](){return this.iterate()}iterate(){return Ga4(this,arguments,function*(){let Q=this.options.debug;while(!0){if(this.yields.length===0)yield nv(this.signal);let X=this.yields;this.yields=[];for(let J=0;J<X.length;J++){if(Q)console.info(`> ${(0,c8.render)(X[J])}`);yield yield nv(X[J])}if(this.done)break;else if(this.yields.length===0)X.length=0,this.yields=X,this.signal=(0,c8.deferred)()}})}discard(){}disconnect(){this._closed(void 0,!0).then().catch()}isEncrypted(){return this.socket instanceof DM1.TLSSocket}_send(Y){if(this.isClosed||this.socket===void 0)return Promise.resolve();if(this.options.debug)console.info(`< ${(0,c8.render)(Y)}`);let Q=(0,c8.deferred)();try{this.socket.write(Y,(X)=>{if(X){if(this.options.debug)console.error(`!!! ${(0,c8.render)(Y)}: ${X}`);return Q.reject(X)}return Q.resolve()})}catch(X){if(this.options.debug)console.error(`!!! ${(0,c8.render)(Y)}: ${X}`);Q.reject(X)}return Q}send(Y){this._send(Y).catch((X)=>{})}_closed(Y){return uP(this,arguments,void 0,function*(Q,X=!0){if(!this.connected)return;if(this.done)return;if(this.closeError=Q,!Q&&this.socket&&X)try{yield this._send(new TextEncoder().encode(""))}catch(J){if(this.options.debug)console.log("transport close terminated with an error",J)}try{if(this.socket)this.socket.removeAllListeners(),this.socket.destroy(),this.socket=void 0}catch(J){console.log(J)}this.done=!0,this.closedNotification.resolve(this.closeError)})}closed(){return this.closedNotification}}ZK.NodeTransport=ht0;function Va4(Y){return uP(this,void 0,void 0,function*(){let Q=(0,c8.deferred)(),X=(0,c8.deferred)();bt0.resolve4(Y,(W,Z)=>{if(W)Q.resolve(W);else Q.resolve(Z)}),bt0.resolve6(Y,(W,Z)=>{if(W)X.resolve(W);else X.resolve(Z)});let J=[],G=yield Q;if(Array.isArray(G))J.push(...G);let K=yield X;if(Array.isArray(K))J.push(...K);if(J.length===0)J.push(Y);return J})}});var lt0=j((mt0)=>{Object.defineProperty(mt0,"__esModule",{value:!0});mt0.connect=qa4;var gt0=xt0(),ut0=zM1();function qa4(Y={}){return(0,ut0.setTransportFactory)({factory:()=>{return new gt0.NodeTransport},dnsResolveFn:gt0.nodeResolveHost}),ut0.NatsConnectionImpl.connect(Y)}});var dt0=j((SQ)=>{Object.defineProperty(SQ,"__esModule",{value:!0});SQ.consumerOpts=SQ.StoreCompression=SQ.StorageType=SQ.RetentionPolicy=SQ.RepublishHeaders=SQ.ReplayPolicy=SQ.KvWatchInclude=SQ.JsHeaders=SQ.DiscardPolicy=SQ.DirectMsgHeaders=SQ.DeliverPolicy=SQ.ConsumerEvents=SQ.ConsumerDebugEvents=SQ.AdvisoryKind=SQ.AckPolicy=SQ.isHeartbeatMsg=SQ.isFlowControlMsg=SQ.checkJsError=void 0;var OM1=bo();Object.defineProperty(SQ,"checkJsError",{enumerable:!0,get:function(){return OM1.checkJsError}});Object.defineProperty(SQ,"isFlowControlMsg",{enumerable:!0,get:function(){return OM1.isFlowControlMsg}});Object.defineProperty(SQ,"isHeartbeatMsg",{enumerable:!0,get:function(){return OM1.isHeartbeatMsg}});var kG=bo();Object.defineProperty(SQ,"AckPolicy",{enumerable:!0,get:function(){return kG.AckPolicy}});Object.defineProperty(SQ,"AdvisoryKind",{enumerable:!0,get:function(){return kG.AdvisoryKind}});Object.defineProperty(SQ,"ConsumerDebugEvents",{enumerable:!0,get:function(){return kG.ConsumerDebugEvents}});Object.defineProperty(SQ,"ConsumerEvents",{enumerable:!0,get:function(){return kG.ConsumerEvents}});Object.defineProperty(SQ,"DeliverPolicy",{enumerable:!0,get:function(){return kG.DeliverPolicy}});Object.defineProperty(SQ,"DirectMsgHeaders",{enumerable:!0,get:function(){return kG.DirectMsgHeaders}});Object.defineProperty(SQ,"DiscardPolicy",{enumerable:!0,get:function(){return kG.DiscardPolicy}});Object.defineProperty(SQ,"JsHeaders",{enumerable:!0,get:function(){return kG.JsHeaders}});Object.defineProperty(SQ,"KvWatchInclude",{enumerable:!0,get:function(){return kG.KvWatchInclude}});Object.defineProperty(SQ,"ReplayPolicy",{enumerable:!0,get:function(){return kG.ReplayPolicy}});Object.defineProperty(SQ,"RepublishHeaders",{enumerable:!0,get:function(){return kG.RepublishHeaders}});Object.defineProperty(SQ,"RetentionPolicy",{enumerable:!0,get:function(){return kG.RetentionPolicy}});Object.defineProperty(SQ,"StorageType",{enumerable:!0,get:function(){return kG.StorageType}});Object.defineProperty(SQ,"StoreCompression",{enumerable:!0,get:function(){return kG.StoreCompression}});var Ua4=wF();Object.defineProperty(SQ,"consumerOpts",{enumerable:!0,get:function(){return Ua4.consumerOpts}})});var NM1=j((H3)=>{var Da4=H3&&H3.__createBinding||(Object.create?function(Y,Q,X,J){if(J===void 0)J=X;var G=Object.getOwnPropertyDescriptor(Q,X);if(!G||("get"in G?!Q.__esModule:G.writable||G.configurable))G={enumerable:!0,get:function(){return Q[X]}};Object.defineProperty(Y,J,G)}:function(Y,Q,X,J){if(J===void 0)J=X;Y[J]=Q[X]}),pt0=H3&&H3.__exportStar||function(Y,Q){for(var X in Y)if(X!=="default"&&!Object.prototype.hasOwnProperty.call(Q,X))Da4(Q,Y,X)};Object.defineProperty(H3,"__esModule",{value:!0});H3.connect=void 0;if(typeof TextEncoder>"u"){let{TextEncoder:Y,TextDecoder:Q}=E1("util");global.TextEncoder=Y,global.TextDecoder=Q}if(typeof globalThis.crypto>"u"){let Y=E1("crypto");global.crypto=Y.webcrypto}if(typeof globalThis.ReadableStream>"u"){let Y=process.versions.node.split(".");if(parseInt(Y[0])>=16){let X=E1("stream/web");global.ReadableStream=X.ReadableStream}}var Oa4=lt0();Object.defineProperty(H3,"connect",{enumerable:!0,get:function(){return Oa4.connect}});pt0(kL1(),H3);pt0(dt0(),H3)});BN();var eQ=class extends Error{res;status;constructor(Y=500,Q){super(Q?.message,{cause:Q?.cause});this.res=Q?.res,this.status=Y}getResponse(){if(this.res)return new Response(this.res.body,{status:this.status,headers:this.res.headers});return new Response(this.message,{status:this.status})}};var kJ0=["connection","keep-alive","proxy-authenticate","proxy-authorization","te","trailer","transfer-encoding","upgrade"],lg6=/^[!#$%&'*+\-.0-9A-Z^_`a-z|~]+$/,dg6=(Y,Q)=>{if(!Y)return{};let X=new Headers(Y.headers);if(Q){let J=X.get("connection");if(J){let G=J.split(",").map((W)=>W.trim()),K=G.filter((W)=>!lg6.test(W));if(K.length>0)throw new eQ(400,{message:`Invalid Connection header value: ${K.join(", ")}`});G.forEach((W)=>{X.delete(W)})}}return kJ0.forEach((J)=>{X.delete(J)}),{method:Y.method,body:Y.body,duplex:Y.body?"half":void 0,headers:X,signal:Y.signal}},pg6=(Y)=>{if(!Y.headers||Array.isArray(Y.headers)||Y.headers instanceof Headers)return Y;let Q=new Headers;for(let[X,J]of Object.entries(Y.headers))if(J==null)Q.delete(X);else Q.set(X,J);return Y.headers=Q,Y},vJ0=async(Y,Q)=>{let{raw:X,customFetch:J,strictConnectionProcessing:G=!1,...K}=Q instanceof Request?{raw:Q}:Q??{},W=new Request(Y,{...dg6(X,G),...pg6(K)});W.headers.delete("accept-encoding");let Z=await(J||fetch)(W),H=new Headers(Z.headers);if(kJ0.forEach(($)=>{H.delete($)}),H.has("content-encoding"))H.delete("content-encoding"),H.delete("content-length");return new Response(Z.body,{status:Z.status,statusText:Z.statusText,headers:H})};var _J0=(Y)=>(Q)=>{let X=new URL(Q.req.raw.url),J=new URL(Y);return J.pathname=X.pathname,J.search=X.search,vJ0(J,{raw:Q.req.raw,headers:{...Q.req.raw.headers}})};import{resolve as r2,dirname as cg6,join as ng6,extname as ig6,basename as ag6,sep as yJ0}from"path";function rg6(Y,Q){if(Y===Q||ag6(Y)==="index.html")return{"Cache-Control":"no-cache"};if(Y.includes(`${yJ0}assets${yJ0}`))return{"Cache-Control":"public, max-age=31536000, immutable"};return{}}var og6=`http://localhost:${process.env.VITE_PORT||"4000"}`,sg6="./dist/client";function tg6(Y,Q){let X=r2(Q),J=r2(Y);return J===X||J.startsWith(X+"/")}function eg6({requestPath:Y,clientDir:Q}){let X=Y.startsWith("/")?Y.slice(1):Y,J=r2(Q,X);if(!tg6(J,Q))return null;return J}function fJ0(Y,Q="../client"){let X=new URL(Y),J=cg6(X.pathname);return r2(J,Q)}function bJ0(Y={}){let{env:Q="production",devServerUrl:X=og6,clientDir:J=sg6,isServerPath:G=()=>!1}=Y;if(Q==="development"){let K=_J0(X);return async function(Z){let H=new URL(Z.url);if(G(H.pathname))return null;let $={req:{raw:Z,url:Z.url}};return K($)}}return async function(W){if(W.method!=="GET")return null;let Z=new URL(W.url),H;try{H=decodeURIComponent(Z.pathname)}catch{return null}if(G(H))return null;let $=eg6({requestPath:H,clientDir:J});if(!$)return null;let F=ng6($,"index.html"),V=r2(J,"index.html"),B=W.headers.get("accept"),z=B?.includes("text/html")||B?.includes("*/*")&&["",".html"].includes(ig6($))?[F,V]:[];for(let D of[$,...z])try{let L=Bun.file(D);if(await L.exists())return new Response(L,{headers:rg6(D,V)})}catch{}if(H.includes("/assets/"))return new Response("Not Found",{status:404,headers:{"Cache-Control":"no-store"}});return null}}var hJ0="https://api.decocms.com/mcp/registry";function xJ0(Y){if(!Y)return!1;try{return new URL(Y).host==="api.decocms.com"&&Y!=="https://api.decocms.com/mcp/registry"}catch{return!1}}KY();var at0=I4(Se(),1);var k71=(Y,Q,X)=>{return(J,G)=>{let K=-1;return W(0);async function W(Z){if(Z<=K)throw Error("next() called multiple times");K=Z;let H,$=!1,F;if(Y[Z])F=Y[Z][0][0],J.req.routeIndex=Z;else F=Z===Y.length&&G||void 0;if(F)try{H=await F(J,()=>W(Z+1))}catch(V){if(V instanceof Error&&Q)J.error=V,H=await Q(V,J),$=!0;else throw V}else if(J.finalized===!1&&X)H=await X(J);if(H&&(J.finalized===!1||$))J.res=H;return J}}};var t$0=Symbol();var e$0=async(Y,Q=Object.create(null))=>{let{all:X=!1,dot:J=!1}=Q,K=(Y instanceof om?Y.raw.headers:Y.headers).get("Content-Type");if(K?.startsWith("multipart/form-data")||K?.startsWith("application/x-www-form-urlencoded"))return q04(Y,{all:X,dot:J});return{}};async function q04(Y,Q){let X=await Y.formData();if(X)return B04(X,Q);return{}}function B04(Y,Q){let X=Object.create(null);if(Y.forEach((J,G)=>{if(!(Q.all||G.endsWith("[]")))X[G]=J;else U04(X,G,J)}),Q.dot)Object.entries(X).forEach(([J,G])=>{if(J.includes("."))z04(X,J,G),delete X[J]});return X}var U04=(Y,Q,X)=>{if(Y[Q]!==void 0)if(Array.isArray(Y[Q]))Y[Q].push(X);else Y[Q]=[Y[Q],X];else if(!Q.endsWith("[]"))Y[Q]=X;else Y[Q]=[X]},z04=(Y,Q,X)=>{let J=Y,G=Q.split(".");G.forEach((K,W)=>{if(W===G.length-1)J[K]=X;else{if(!J[K]||typeof J[K]!=="object"||Array.isArray(J[K])||J[K]instanceof File)J[K]=Object.create(null);J=J[K]}})};var _71=(Y)=>{let Q=Y.split("/");if(Q[0]==="")Q.shift();return Q},YF0=(Y)=>{let{groups:Q,path:X}=D04(Y),J=_71(X);return O04(J,Q)},D04=(Y)=>{let Q=[];return Y=Y.replace(/\{[^}]+\}/g,(X,J)=>{let G=`@${J}`;return Q.push([G,X]),G}),{groups:Q,path:Y}},O04=(Y,Q)=>{for(let X=Q.length-1;X>=0;X--){let[J]=Q[X];for(let G=Y.length-1;G>=0;G--)if(Y[G].includes(J)){Y[G]=Y[G].replace(J,Q[X][1]);break}}return Y},sm={},QF0=(Y,Q)=>{if(Y==="*")return"*";let X=Y.match(/^\:([^\{\}]+)(?:\{(.+)\})?$/);if(X){let J=`${Y}#${Q}`;if(!sm[J])if(X[2])sm[J]=Q&&Q[0]!==":"&&Q[0]!=="*"?[J,X[1],new RegExp(`^${X[2]}(?=/${Q})`)]:[Y,X[1],new RegExp(`^${X[2]}$`)];else sm[J]=[Y,X[1],!0];return sm[J]}return null},OM=(Y,Q)=>{try{return Q(Y)}catch{return Y.replace(/(?:%[0-9A-Fa-f]{2})+/g,(X)=>{try{return Q(X)}catch{return X}})}},N04=(Y)=>OM(Y,decodeURI),y71=(Y)=>{let Q=Y.url,X=Q.indexOf("/",Q.indexOf(":")+4),J=X;for(;J<Q.length;J++){let G=Q.charCodeAt(J);if(G===37){let K=Q.indexOf("?",J),W=Q.indexOf("#",J),Z=K===-1?W===-1?void 0:W:W===-1?K:Math.min(K,W),H=Q.slice(X,Z);return N04(H.includes("%25")?H.replace(/%25/g,"%2525"):H)}else if(G===63||G===35)break}return Q.slice(X,J)};var XF0=(Y)=>{let Q=y71(Y);return Q.length>1&&Q.at(-1)==="/"?Q.slice(0,-1):Q},Az=(Y,Q,...X)=>{if(X.length)Q=Az(Q,...X);return`${Y?.[0]==="/"?"":"/"}${Y}${Q==="/"?"":`${Y?.at(-1)==="/"?"":"/"}${Q?.[0]==="/"?Q.slice(1):Q}`}`},tm=(Y)=>{if(Y.charCodeAt(Y.length-1)!==63||!Y.includes(":"))return null;let Q=Y.split("/"),X=[],J="";return Q.forEach((G)=>{if(G!==""&&!/\:/.test(G))J+="/"+G;else if(/\:/.test(G))if(/\?/.test(G)){if(X.length===0&&J==="")X.push("/");else X.push(J);let K=G.replace("?","");J+="/"+K,X.push(J)}else J+="/"+G}),X.filter((G,K,W)=>W.indexOf(G)===K)},v71=(Y)=>{if(!/[%+]/.test(Y))return Y;if(Y.indexOf("+")!==-1)Y=Y.replace(/\+/g," ");return Y.indexOf("%")!==-1?OM(Y,SR):Y},JF0=(Y,Q,X)=>{let J;if(!X&&Q&&!/[%+]/.test(Q)){let W=Y.indexOf("?",8);if(W===-1)return;if(!Y.startsWith(Q,W+1))W=Y.indexOf(`&${Q}`,W+1);while(W!==-1){let Z=Y.charCodeAt(W+Q.length+1);if(Z===61){let H=W+Q.length+2,$=Y.indexOf("&",H);return v71(Y.slice(H,$===-1?void 0:$))}else if(Z==38||isNaN(Z))return"";W=Y.indexOf(`&${Q}`,W+1)}if(J=/[%+]/.test(Y),!J)return}let G={};J??=/[%+]/.test(Y);let K=Y.indexOf("?",8);while(K!==-1){let W=Y.indexOf("&",K+1),Z=Y.indexOf("=",K);if(Z>W&&W!==-1)Z=-1;let H=Y.slice(K+1,Z===-1?W===-1?void 0:W:Z);if(J)H=v71(H);if(K=W,H==="")continue;let $;if(Z===-1)$="";else if($=Y.slice(Z+1,W===-1?void 0:W),J)$=v71($);if(X){if(!(G[H]&&Array.isArray(G[H])))G[H]=[];G[H].push($)}else G[H]??=$}return Q?G[Q]:G},GF0=JF0,WF0=(Y,Q)=>{return JF0(Y,Q,!0)},SR=decodeURIComponent;var ZF0=(Y)=>OM(Y,SR),om=class{raw;#Y;#Q;routeIndex=0;path;bodyCache={};constructor(Y,Q="/",X=[[]]){this.raw=Y,this.path=Q,this.#Q=X,this.#Y={}}param(Y){return Y?this.#X(Y):this.#J()}#X(Y){let Q=this.#Q[0][this.routeIndex][1][Y],X=this.#W(Q);return X&&/\%/.test(X)?ZF0(X):X}#J(){let Y={},Q=Object.keys(this.#Q[0][this.routeIndex][1]);for(let X of Q){let J=this.#W(this.#Q[0][this.routeIndex][1][X]);if(J!==void 0)Y[X]=/\%/.test(J)?ZF0(J):J}return Y}#W(Y){return this.#Q[1]?this.#Q[1][Y]:Y}query(Y){return GF0(this.url,Y)}queries(Y){return WF0(this.url,Y)}header(Y){if(Y)return this.raw.headers.get(Y)??void 0;let Q={};return this.raw.headers.forEach((X,J)=>{Q[J]=X}),Q}async parseBody(Y){return this.bodyCache.parsedBody??=await e$0(this,Y)}#G=(Y)=>{let{bodyCache:Q,raw:X}=this,J=Q[Y];if(J)return J;let G=Object.keys(Q)[0];if(G)return Q[G].then((K)=>{if(G==="json")K=JSON.stringify(K);return new Response(K)[Y]()});return Q[Y]=X[Y]()};json(){return this.#G("text").then((Y)=>JSON.parse(Y))}text(){return this.#G("text")}arrayBuffer(){return this.#G("arrayBuffer")}blob(){return this.#G("blob")}formData(){return this.#G("formData")}addValidatedData(Y,Q){this.#Y[Y]=Q}valid(Y){return this.#Y[Y]}get url(){return this.raw.url}get method(){return this.raw.method}get[t$0](){return this.#Q}get matchedRoutes(){return this.#Q[0].map(([[,Y]])=>Y)}get routePath(){return this.#Q[0].map(([[,Y]])=>Y)[this.routeIndex].path}};var em={Stringify:1,BeforeStream:2,Stream:3},L04=(Y,Q)=>{let X=new String(Y);return X.isEscaped=!0,X.callbacks=Q,X};var kR=async(Y,Q,X,J,G)=>{if(typeof Y==="object"&&!(Y instanceof String)){if(!(Y instanceof Promise))Y=Y.toString();if(Y instanceof Promise)Y=await Y}let K=Y.callbacks;if(!K?.length)return Promise.resolve(Y);if(G)G[0]+=Y;else G=[Y];let W=Promise.all(K.map((Z)=>Z({phase:Q,buffer:G,context:J}))).then((Z)=>Promise.all(Z.filter(Boolean).map((H)=>kR(H,Q,!1,J,G))).then(()=>G[0]));if(X)return L04(await W,K);else return W};var KF0="text/plain; charset=UTF-8",f71=(Y,Q)=>{return{"Content-Type":Y,...Q}},vR=(Y,Q)=>new Response(Y,Q),HF0=class{#Y;#Q;env={};#X;finalized=!1;error;#J;#W;#G;#K;#Z;#$;#H;#V;#q;constructor(Y,Q){if(this.#Y=Y,Q)this.#W=Q.executionCtx,this.env=Q.env,this.#$=Q.notFoundHandler,this.#q=Q.path,this.#V=Q.matchResult}get req(){return this.#Q??=new om(this.#Y,this.#q,this.#V),this.#Q}get event(){if(this.#W&&"respondWith"in this.#W)return this.#W;else throw Error("This context has no FetchEvent")}get executionCtx(){if(this.#W)return this.#W;else throw Error("This context has no ExecutionContext")}get res(){return this.#G||=vR(null,{headers:this.#H??=new Headers})}set res(Y){if(this.#G&&Y){Y=vR(Y.body,Y);for(let[Q,X]of this.#G.headers.entries()){if(Q==="content-type")continue;if(Q==="set-cookie"){let J=this.#G.headers.getSetCookie();Y.headers.delete("set-cookie");for(let G of J)Y.headers.append("set-cookie",G)}else Y.headers.set(Q,X)}}this.#G=Y,this.finalized=!0}render=(...Y)=>{return this.#Z??=(Q)=>this.html(Q),this.#Z(...Y)};setLayout=(Y)=>this.#K=Y;getLayout=()=>this.#K;setRenderer=(Y)=>{this.#Z=Y};header=(Y,Q,X)=>{if(this.finalized)this.#G=vR(this.#G.body,this.#G);let J=this.#G?this.#G.headers:this.#H??=new Headers;if(Q===void 0)J.delete(Y);else if(X?.append)J.append(Y,Q);else J.set(Y,Q)};status=(Y)=>{this.#J=Y};set=(Y,Q)=>{this.#X??=new Map,this.#X.set(Y,Q)};get=(Y)=>{return this.#X?this.#X.get(Y):void 0};get var(){if(!this.#X)return{};return Object.fromEntries(this.#X)}#F(Y,Q,X){let J=this.#G?new Headers(this.#G.headers):this.#H??new Headers;if(typeof Q==="object"&&"headers"in Q){let K=Q.headers instanceof Headers?Q.headers:new Headers(Q.headers);for(let[W,Z]of K)if(W.toLowerCase()==="set-cookie")J.append(W,Z);else J.set(W,Z)}if(X)for(let[K,W]of Object.entries(X))if(typeof W==="string")J.set(K,W);else{J.delete(K);for(let Z of W)J.append(K,Z)}let G=typeof Q==="number"?Q:Q?.status??this.#J;return vR(Y,{status:G,headers:J})}newResponse=(...Y)=>this.#F(...Y);body=(Y,Q,X)=>this.#F(Y,Q,X);text=(Y,Q,X)=>{return!this.#H&&!this.#J&&!Q&&!X&&!this.finalized?new Response(Y):this.#F(Y,Q,f71(KF0,X))};json=(Y,Q,X)=>{return this.#F(JSON.stringify(Y),Q,f71("application/json",X))};html=(Y,Q,X)=>{let J=(G)=>this.#F(G,Q,f71("text/html; charset=UTF-8",X));return typeof Y==="object"?kR(Y,em.Stringify,!1,{}).then(J):J(Y)};redirect=(Y,Q)=>{let X=String(Y);return this.header("Location",!/[^\x00-\xFF]/.test(X)?X:encodeURI(X)),this.newResponse(null,Q??302)};notFound=()=>{return this.#$??=()=>vR(),this.#$(this)}};var h9="ALL",$F0="all",FF0=["get","post","put","delete","options","patch"],Yl="Can not add a route since the matcher is already built.",Ql=class extends Error{};var VF0="__COMPOSED_HANDLER";var M04=(Y)=>{return Y.text("404 Not Found",404)},qF0=(Y,Q)=>{if("getResponse"in Y){let X=Y.getResponse();return Q.newResponse(X.body,X)}return console.error(Y),Q.text("Internal Server Error",500)},BF0=class Y{get;post;put;delete;options;patch;all;on;use;router;getPath;_basePath="/";#Y="/";routes=[];constructor(Q={}){[...FF0,$F0].forEach((K)=>{this[K]=(W,...Z)=>{if(typeof W==="string")this.#Y=W;else this.#J(K,this.#Y,W);return Z.forEach((H)=>{this.#J(K,this.#Y,H)}),this}}),this.on=(K,W,...Z)=>{for(let H of[W].flat()){this.#Y=H;for(let $ of[K].flat())Z.map((F)=>{this.#J($.toUpperCase(),this.#Y,F)})}return this},this.use=(K,...W)=>{if(typeof K==="string")this.#Y=K;else this.#Y="*",W.unshift(K);return W.forEach((Z)=>{this.#J(h9,this.#Y,Z)}),this};let{strict:J,...G}=Q;Object.assign(this,G),this.getPath=J??!0?Q.getPath??y71:XF0}#Q(){let Q=new Y({router:this.router,getPath:this.getPath});return Q.errorHandler=this.errorHandler,Q.#X=this.#X,Q.routes=this.routes,Q}#X=M04;errorHandler=qF0;route(Q,X){let J=this.basePath(Q);return X.routes.map((G)=>{let K;if(X.errorHandler===qF0)K=G.handler;else K=async(W,Z)=>(await k71([],X.errorHandler)(W,()=>G.handler(W,Z))).res,K[VF0]=G.handler;J.#J(G.method,G.path,K)}),this}basePath(Q){let X=this.#Q();return X._basePath=Az(this._basePath,Q),X}onError=(Q)=>{return this.errorHandler=Q,this};notFound=(Q)=>{return this.#X=Q,this};mount(Q,X,J){let G,K;if(J)if(typeof J==="function")K=J;else if(K=J.optionHandler,J.replaceRequest===!1)G=(H)=>H;else G=J.replaceRequest;let W=K?(H)=>{let $=K(H);return Array.isArray($)?$:[$]}:(H)=>{let $=void 0;try{$=H.executionCtx}catch{}return[H.env,$]};G||=(()=>{let H=Az(this._basePath,Q),$=H==="/"?0:H.length;return(F)=>{let V=new URL(F.url);return V.pathname=V.pathname.slice($)||"/",new Request(V,F)}})();let Z=async(H,$)=>{let F=await X(G(H.req.raw),...W(H));if(F)return F;await $()};return this.#J(h9,Az(Q,"*"),Z),this}#J(Q,X,J){Q=Q.toUpperCase(),X=Az(this._basePath,X);let G={basePath:this._basePath,path:X,method:Q,handler:J};this.router.add(Q,X,[J,G]),this.routes.push(G)}#W(Q,X){if(Q instanceof Error)return this.errorHandler(Q,X);throw Q}#G(Q,X,J,G){if(G==="HEAD")return(async()=>new Response(null,await this.#G(Q,X,J,"GET")))();let K=this.getPath(Q,{env:J}),W=this.router.match(G,K),Z=new HF0(Q,{path:K,matchResult:W,env:J,executionCtx:X,notFoundHandler:this.#X});if(W[0].length===1){let $;try{$=W[0][0][0][0](Z,async()=>{Z.res=await this.#X(Z)})}catch(F){return this.#W(F,Z)}return $ instanceof Promise?$.then((F)=>F||(Z.finalized?Z.res:this.#X(Z))).catch((F)=>this.#W(F,Z)):$??this.#X(Z)}let H=k71(W[0],this.errorHandler,this.#X);return(async()=>{try{let $=await H(Z);if(!$.finalized)throw Error("Context is not finalized. Did you forget to return a Response object or `await next()`?");return $.res}catch($){return this.#W($,Z)}})()}fetch=(Q,...X)=>{return this.#G(Q,X[1],X[0],Q.method)};request=(Q,X,J,G)=>{if(Q instanceof Request)return this.fetch(X?new Request(Q,X):Q,J,G);return Q=Q.toString(),this.fetch(new Request(/^https?:\/\//.test(Q)?Q:`http://localhost${Az("/",Q)}`,X),J,G)};fire=()=>{addEventListener("fetch",(Q)=>{Q.respondWith(this.#G(Q.request,Q,void 0,Q.request.method))})}};var _R=[];function Xl(Y,Q){let X=this.buildAllMatchers(),J=(G,K)=>{let W=X[G]||X[h9],Z=W[2][K];if(Z)return Z;let H=K.match(W[0]);if(!H)return[[],_R];let $=H.indexOf("",1);return[W[1][$],H]};return this.match=J,J(Y,Q)}var Jl="[^/]+",yR=".*",fR="(?:|/.*)",Pz=Symbol(),w04=new Set(".\\+*[^]$()");function A04(Y,Q){if(Y.length===1)return Q.length===1?Y<Q?-1:1:-1;if(Q.length===1)return 1;if(Y===yR||Y===fR)return 1;else if(Q===yR||Q===fR)return-1;if(Y===Jl)return 1;else if(Q===Jl)return-1;return Y.length===Q.length?Y<Q?-1:1:Q.length-Y.length}var UF0=class Y{#Y;#Q;#X=Object.create(null);insert(Q,X,J,G,K){if(Q.length===0){if(this.#Y!==void 0)throw Pz;if(K)return;this.#Y=X;return}let[W,...Z]=Q,H=W==="*"?Z.length===0?["","",yR]:["","",Jl]:W==="/*"?["","",fR]:W.match(/^\:([^\{\}]+)(?:\{(.+)\})?$/),$;if(H){let F=H[1],V=H[2]||Jl;if(F&&H[2]){if(V===".*")throw Pz;if(V=V.replace(/^\((?!\?:)(?=[^)]+\)$)/,"(?:"),/\((?!\?:)/.test(V))throw Pz}if($=this.#X[V],!$){if(Object.keys(this.#X).some((B)=>B!==yR&&B!==fR))throw Pz;if(K)return;if($=this.#X[V]=new Y,F!=="")$.#Q=G.varIndex++}if(!K&&F!=="")J.push([F,$.#Q])}else if($=this.#X[W],!$){if(Object.keys(this.#X).some((F)=>F.length>1&&F!==yR&&F!==fR))throw Pz;if(K)return;$=this.#X[W]=new Y}$.insert(Z,X,J,G,K)}buildRegExpStr(){let X=Object.keys(this.#X).sort(A04).map((J)=>{let G=this.#X[J];return(typeof G.#Q==="number"?`(${J})@${G.#Q}`:w04.has(J)?`\\${J}`:J)+G.buildRegExpStr()});if(typeof this.#Y==="number")X.unshift(`#${this.#Y}`);if(X.length===0)return"";if(X.length===1)return X[0];return"(?:"+X.join("|")+")"}};var zF0=class{#Y={varIndex:0};#Q=new UF0;insert(Y,Q,X){let J=[],G=[];for(let W=0;;){let Z=!1;if(Y=Y.replace(/\{[^}]+\}/g,(H)=>{let $=`@\\${W}`;return G[W]=[$,H],W++,Z=!0,$}),!Z)break}let K=Y.match(/(?::[^\/]+)|(?:\/\*$)|./g)||[];for(let W=G.length-1;W>=0;W--){let[Z]=G[W];for(let H=K.length-1;H>=0;H--)if(K[H].indexOf(Z)!==-1){K[H]=K[H].replace(Z,G[W][1]);break}}return this.#Q.insert(K,Q,J,this.#Y,X),J}buildRegExp(){let Y=this.#Q.buildRegExpStr();if(Y==="")return[/^$/,[],[]];let Q=0,X=[],J=[];return Y=Y.replace(/#(\d+)|@(\d+)|\.\*\$/g,(G,K,W)=>{if(K!==void 0)return X[++Q]=Number(K),"$()";if(W!==void 0)return J[Number(W)]=++Q,"";return""}),[new RegExp(`^${Y}`),X,J]}};var P04=[/^$/,[],Object.create(null)],DF0=Object.create(null);function OF0(Y){return DF0[Y]??=new RegExp(Y==="*"?"":`^${Y.replace(/\/\*$|([.\\+*[^\]$()])/g,(Q,X)=>X?`\\${X}`:"(?:|/.*)")}$`)}function E04(){DF0=Object.create(null)}function T04(Y){let Q=new zF0,X=[];if(Y.length===0)return P04;let J=Y.map(($)=>[!/\*|\/:/.test($[0]),...$]).sort(([$,F],[V,B])=>$?1:V?-1:F.length-B.length),G=Object.create(null);for(let $=0,F=-1,V=J.length;$<V;$++){let[B,U,z]=J[$];if(B)G[U]=[z.map(([L])=>[L,Object.create(null)]),_R];else F++;let D;try{D=Q.insert(U,F,B)}catch(L){throw L===Pz?new Ql(U):L}if(B)continue;X[F]=z.map(([L,w])=>{let E=Object.create(null);w-=1;for(;w>=0;w--){let[T,C]=D[w];E[T]=C}return[L,E]})}let[K,W,Z]=Q.buildRegExp();for(let $=0,F=X.length;$<F;$++)for(let V=0,B=X[$].length;V<B;V++){let U=X[$][V]?.[1];if(!U)continue;let z=Object.keys(U);for(let D=0,L=z.length;D<L;D++)U[z[D]]=Z[U[z[D]]]}let H=[];for(let $ in W)H[$]=X[W[$]];return[K,H,G]}function NM(Y,Q){if(!Y)return;for(let X of Object.keys(Y).sort((J,G)=>G.length-J.length))if(OF0(X).test(Q))return[...Y[X]];return}var Gl=class{name="RegExpRouter";#Y;#Q;constructor(){this.#Y={[h9]:Object.create(null)},this.#Q={[h9]:Object.create(null)}}add(Y,Q,X){let J=this.#Y,G=this.#Q;if(!J||!G)throw Error(Yl);if(!J[Y])[J,G].forEach((Z)=>{Z[Y]=Object.create(null),Object.keys(Z[h9]).forEach((H)=>{Z[Y][H]=[...Z[h9][H]]})});if(Q==="/*")Q="*";let K=(Q.match(/\/:/g)||[]).length;if(/\*$/.test(Q)){let Z=OF0(Q);if(Y===h9)Object.keys(J).forEach((H)=>{J[H][Q]||=NM(J[H],Q)||NM(J[h9],Q)||[]});else J[Y][Q]||=NM(J[Y],Q)||NM(J[h9],Q)||[];Object.keys(J).forEach((H)=>{if(Y===h9||Y===H)Object.keys(J[H]).forEach(($)=>{Z.test($)&&J[H][$].push([X,K])})}),Object.keys(G).forEach((H)=>{if(Y===h9||Y===H)Object.keys(G[H]).forEach(($)=>Z.test($)&&G[H][$].push([X,K]))});return}let W=tm(Q)||[Q];for(let Z=0,H=W.length;Z<H;Z++){let $=W[Z];Object.keys(G).forEach((F)=>{if(Y===h9||Y===F)G[F][$]||=[...NM(J[F],$)||NM(J[h9],$)||[]],G[F][$].push([X,K-H+Z+1])})}}match=Xl;buildAllMatchers(){let Y=Object.create(null);return Object.keys(this.#Q).concat(Object.keys(this.#Y)).forEach((Q)=>{Y[Q]||=this.#X(Q)}),this.#Y=this.#Q=void 0,E04(),Y}#X(Y){let Q=[],X=Y===h9;if([this.#Y,this.#Q].forEach((J)=>{let G=J[Y]?Object.keys(J[Y]).map((K)=>[K,J[Y][K]]):[];if(G.length!==0)X||=!0,Q.push(...G);else if(Y!==h9)Q.push(...Object.keys(J[h9]).map((K)=>[K,J[h9][K]]))}),!X)return null;else return T04(Q)}};var C04=class{name="PreparedRegExpRouter";#Y;#Q;constructor(Y,Q){this.#Y=Y,this.#Q=Q}#X(Y,Q){let X=this.#Y[Y];X[1].forEach((J)=>J&&J.push(Q)),Object.values(X[2]).forEach((J)=>J[0].push(Q))}#J(Y,Q,X,J,G){let K=this.#Y[Y];if(!G)K[2][Q][0].push([X,{}]);else J.forEach((W)=>{if(typeof W==="number")K[1][W].push([X,G]);else K[2][W||Q][0].push([X,G])})}add(Y,Q,X){if(!this.#Y[Y]){let G=this.#Y[h9],K={};for(let W in G[2])K[W]=[G[2][W][0].slice(),_R];this.#Y[Y]=[G[0],G[1].map((W)=>Array.isArray(W)?W.slice():0),K]}if(Q==="/*"||Q==="*"){let G=[X,{}];if(Y===h9)for(let K in this.#Y)this.#X(K,G);else this.#X(Y,G);return}let J=this.#Q[Q];if(!J)throw Error(`Path ${Q} is not registered`);for(let[G,K]of J)if(Y===h9)for(let W in this.#Y)this.#J(W,Q,X,G,K);else this.#J(Y,Q,X,G,K)}buildAllMatchers(){return this.#Y}match=Xl};var b71=class{name="SmartRouter";#Y=[];#Q=[];constructor(Y){this.#Y=Y.routers}add(Y,Q,X){if(!this.#Q)throw Error(Yl);this.#Q.push([Y,Q,X])}match(Y,Q){if(!this.#Q)throw Error("Fatal error");let X=this.#Y,J=this.#Q,G=X.length,K=0,W;for(;K<G;K++){let Z=X[K];try{for(let H=0,$=J.length;H<$;H++)Z.add(...J[H]);W=Z.match(Y,Q)}catch(H){if(H instanceof Ql)continue;throw H}this.match=Z.match.bind(Z),this.#Y=[Z],this.#Q=void 0;break}if(K===G)throw Error("Fatal error");return this.name=`SmartRouter + ${this.activeRouter.name}`,W}get activeRouter(){if(this.#Q||this.#Y.length!==1)throw Error("No active router has been determined yet.");return this.#Y[0]}};var bR=Object.create(null),R04=(Y)=>{for(let Q in Y)return!0;return!1},NF0=class Y{#Y;#Q;#X;#J=0;#W=bR;constructor(Q,X,J){if(this.#Q=J||Object.create(null),this.#Y=[],Q&&X){let G=Object.create(null);G[Q]={handler:X,possibleKeys:[],score:0},this.#Y=[G]}this.#X=[]}insert(Q,X,J){this.#J=++this.#J;let G=this,K=YF0(X),W=[];for(let Z=0,H=K.length;Z<H;Z++){let $=K[Z],F=K[Z+1],V=QF0($,F),B=Array.isArray(V)?V[0]:$;if(B in G.#Q){if(G=G.#Q[B],V)W.push(V[1]);continue}if(G.#Q[B]=new Y,V)G.#X.push(V),W.push(V[1]);G=G.#Q[B]}return G.#Y.push({[Q]:{handler:J,possibleKeys:W.filter((Z,H,$)=>$.indexOf(Z)===H),score:this.#J}}),G}#G(Q,X,J,G,K){for(let W=0,Z=X.#Y.length;W<Z;W++){let H=X.#Y[W],$=H[J]||H[h9],F={};if($!==void 0){if($.params=Object.create(null),Q.push($),G!==bR||K&&K!==bR)for(let V=0,B=$.possibleKeys.length;V<B;V++){let U=$.possibleKeys[V],z=F[$.score];$.params[U]=K?.[U]&&!z?K[U]:G[U]??K?.[U],F[$.score]=!0}}}}search(Q,X){let J=[];this.#W=bR;let K=[this],W=_71(X),Z=[],H=W.length,$=null;for(let F=0;F<H;F++){let V=W[F],B=F===H-1,U=[];for(let D=0,L=K.length;D<L;D++){let w=K[D],E=w.#Q[V];if(E)if(E.#W=w.#W,B){if(E.#Q["*"])this.#G(J,E.#Q["*"],Q,w.#W);this.#G(J,E,Q,w.#W)}else U.push(E);for(let T=0,C=w.#X.length;T<C;T++){let P=w.#X[T],I=w.#W===bR?{}:{...w.#W};if(P==="*"){let g=w.#Q["*"];if(g)this.#G(J,g,Q,w.#W),g.#W=I,U.push(g);continue}let[S,v,f]=P;if(!V&&!(f instanceof RegExp))continue;let b=w.#Q[S];if(f instanceof RegExp){if($===null){$=Array(H);let m=X[0]==="/"?1:0;for(let h=0;h<H;h++)$[h]=m,m+=W[h].length+1}let g=X.substring($[F]),r=f.exec(g);if(r){if(I[v]=r[0],this.#G(J,b,Q,w.#W,I),R04(b.#Q)){b.#W=I;let m=r[0].match(/\//)?.length??0;(Z[m]||=[]).push(b)}continue}}if(f===!0||f.test(V))if(I[v]=V,B){if(this.#G(J,b,Q,I,w.#W),b.#Q["*"])this.#G(J,b.#Q["*"],Q,I,w.#W)}else b.#W=I,U.push(b)}}let z=Z.shift();K=z?U.concat(z):U}if(J.length>1)J.sort((F,V)=>{return F.score-V.score});return[J.map(({handler:F,params:V})=>[F,V])]}};var h71=class{name="TrieRouter";#Y;constructor(){this.#Y=new NF0}add(Y,Q,X){let J=tm(Q);if(J){for(let G=0,K=J.length;G<K;G++)this.#Y.insert(Y,J[G],X);return}this.#Y.insert(Y,Q,X)}match(Y,Q){return this.#Y.search(Y,Q)}};var JQ=class extends BF0{constructor(Y={}){super(Y);this.router=Y.router??new b71({routers:[new Gl,new h71]})}};var I04=/^[\w!#$%&'*.^`|~+-]+$/,j04=/^[ !#-:<-[\]-~]*$/,x71=(Y,Q)=>{if(Q&&Y.indexOf(Q)===-1)return{};let X=Y.trim().split(";"),J={};for(let G of X){G=G.trim();let K=G.indexOf("=");if(K===-1)continue;let W=G.substring(0,K).trim();if(Q&&Q!==W||!I04.test(W))continue;let Z=G.substring(K+1).trim();if(Z.startsWith('"')&&Z.endsWith('"'))Z=Z.slice(1,-1);if(j04.test(Z)){if(J[W]=Z.indexOf("%")!==-1?OM(Z,SR):Z,Q)break}}return J};var LF0=(Y,Q,X)=>{let J=Y.req.raw.headers.get("Cookie");if(typeof Q==="string"){if(!J)return;let K=Q;if(X==="secure")K="__Secure-"+Q;else if(X==="host")K="__Host-"+Q;return x71(J,K)[K]}if(!J)return{};return x71(J)};var MF0=(Y)=>{let X={...{origin:"*",allowMethods:["GET","HEAD","PUT","POST","DELETE","PATCH"],allowHeaders:[],exposeHeaders:[]},...Y},J=((K)=>{if(typeof K==="string")if(K==="*")return()=>K;else return(W)=>K===W?W:null;else if(typeof K==="function")return K;else return(W)=>K.includes(W)?W:null})(X.origin),G=((K)=>{if(typeof K==="function")return K;else if(Array.isArray(K))return()=>K;else return()=>[]})(X.allowMethods);return async function(W,Z){function H(F,V){W.res.headers.set(F,V)}let $=await J(W.req.header("origin")||"",W);if($)H("Access-Control-Allow-Origin",$);if(X.credentials)H("Access-Control-Allow-Credentials","true");if(X.exposeHeaders?.length)H("Access-Control-Expose-Headers",X.exposeHeaders.join(","));if(W.req.method==="OPTIONS"){if(X.origin!=="*")H("Vary","Origin");if(X.maxAge!=null)H("Access-Control-Max-Age",X.maxAge.toString());let F=await G(W.req.header("origin")||"",W);if(F.length)H("Access-Control-Allow-Methods",F.join(","));let V=X.allowHeaders;if(!V?.length){let B=W.req.header("Access-Control-Request-Headers");if(B)V=B.split(/\s*,\s*/)}if(V?.length)H("Access-Control-Allow-Headers",V.join(",")),W.res.headers.append("Vary","Access-Control-Request-Headers");return W.res.headers.delete("Content-Length"),W.res.headers.delete("Content-Type"),new Response(null,{headers:W.res.headers,status:204,statusText:"No Content"})}if(await Z(),X.origin!=="*")W.header("Vary","Origin",{append:!0})}};function S04(){let{process:Y,Deno:Q}=globalThis;return!(typeof Q?.noColor==="boolean"?Q.noColor:Y!==void 0?"NO_COLOR"in Y?.env:!1)}async function wF0(){let{navigator:Y}=globalThis,Q="cloudflare:workers";return!(Y!==void 0&&Y.userAgent==="Cloudflare-Workers"?await(async()=>{try{return"NO_COLOR"in((await import("cloudflare:workers")).env??{})}catch{return!1}})():!S04())}var k04=(Y)=>{let[Q,X]=[",","."];return Y.map((G)=>G.replace(/(\d)(?=(\d\d\d)+(?!\d))/g,"$1"+Q)).join(X)},v04=(Y)=>{let Q=Date.now()-Y;return k04([Q<1000?Q+"ms":Math.round(Q/1000)+"s"])},_04=async(Y)=>{if(await wF0())switch(Y/100|0){case 5:return`\x1B[31m${Y}\x1B[0m`;case 4:return`\x1B[33m${Y}\x1B[0m`;case 3:return`\x1B[36m${Y}\x1B[0m`;case 2:return`\x1B[32m${Y}\x1B[0m`}return`${Y}`};async function AF0(Y,Q,X,J,G=0,K){let W=Q==="<--"?`${Q} ${X} ${J}`:`${Q} ${X} ${J} ${await _04(G)} ${K}`;Y(W)}var PF0=(Y=console.log)=>{return async function(X,J){let{method:G,url:K}=X.req,W=K.slice(K.indexOf("/",8));await AF0(Y,"<--",G,W);let Z=Date.now();await J(),await AF0(Y,"-->",G,W,X.res.status,v04(Z))}};var EF0=()=>{try{return performance.now()}catch{}return Date.now()},g71=(Y)=>{let Q={total:!0,enabled:!0,totalDescription:"Total Response Time",autoEnd:!0,crossOrigin:!1,...Y};return async function(J,G){let K=[],W=new Map;if(J.get("metric"))return await G();if(J.set("metric",{headers:K,timers:W}),Q.total)LM(J,"total",Q.totalDescription);if(await G(),Q.total)Ez(J,"total");if(Q.autoEnd)W.forEach((H,$)=>Ez(J,$));if(typeof Q.enabled==="function"?Q.enabled(J):Q.enabled){J.res.headers.append("Server-Timing",K.join(","));let H=typeof Q.crossOrigin==="function"?Q.crossOrigin(J):Q.crossOrigin;if(H)J.res.headers.append("Timing-Allow-Origin",typeof H==="string"?H:"*")}}},TF0=(Y,Q,X,J,G)=>{let K=Y.get("metric");if(!K){console.warn("Metrics not initialized! Please add the `timing()` middleware to this route!");return}if(typeof X==="number"){let W=X.toFixed(G||1),Z=J?`${Q};dur=${W};desc="${J}"`:`${Q};dur=${W}`;K.headers.push(Z)}else{let W=X?`${Q};desc="${X}"`:`${Q}`;K.headers.push(W)}},LM=(Y,Q,X)=>{let J=Y.get("metric");if(!J){console.warn("Metrics not initialized! Please add the `timing()` middleware to this route!");return}J.timers.set(Q,{description:X,start:EF0()})},Ez=(Y,Q,X)=>{let J=Y.get("metric");if(!J){console.warn("Metrics not initialized! Please add the `timing()` middleware to this route!");return}let G=J.timers.get(Q);if(!G){console.warn(`Timer "${Q}" does not exist!`);return}let{description:K,start:W}=G,Z=EF0()-W;TF0(Y,Q,Z,K,X),J.timers.delete(Q)};Kv();ED1();Tn();qV1();LG();KY();qF();class ZN1{db;constructor(Y){this.db=Y}async create(Y,Q,X){let J=d8("vir"),G=new Date().toISOString();if(await this.db.insertInto("connections").values({id:J,organization_id:Y,created_by:Q,title:X.title,description:X.description??null,icon:X.icon??null,app_name:null,app_id:null,connection_type:"VIRTUAL",connection_url:`virtual://${J}`,connection_token:null,connection_headers:null,oauth_config:null,configuration_state:null,configuration_scopes:null,metadata:X.metadata?JSON.stringify(X.metadata):null,tools:null,bindings:null,status:X.status??"active",created_at:G,updated_at:G}).execute(),X.connections.length>0)await this.db.insertInto("connection_aggregations").values(X.connections.map((W)=>({id:d8("agg"),parent_connection_id:J,child_connection_id:W.connection_id,selected_tools:W.selected_tools?JSON.stringify(W.selected_tools):null,selected_resources:W.selected_resources?JSON.stringify(W.selected_resources):null,selected_prompts:W.selected_prompts?JSON.stringify(W.selected_prompts):null,dependency_mode:"direct",created_at:G}))).execute();let K=await this.findById(J);if(!K)throw Error(`Failed to create virtual MCP with id: ${J}`);return K}async findById(Y,Q){let X=s3(Y);if(X){let J=Q??X,G=await this.db.selectFrom("connections").selectAll().where("organization_id","=",J).where("status","!=","inactive").where("status","!=","error").execute();return{...lm(J),connections:G.map((K)=>({connection_id:K.id,selected_tools:null,selected_resources:null,selected_prompts:null}))}}return this.findByIdInternal(this.db,Y)}async findByIdInternal(Y,Q){let X=await Y.selectFrom("connections").selectAll().where("id","=",Q).where("connection_type","=","VIRTUAL").executeTakeFirst();if(!X)return null;let J=await Y.selectFrom("connection_aggregations").selectAll().where("parent_connection_id","=",Q).where("dependency_mode","=","direct").execute();return this.deserializeVirtualMCPEntity(X,J)}async list(Y){let Q=await this.db.selectFrom("connections").selectAll().where("organization_id","=",Y).where("connection_type","=","VIRTUAL").execute(),X=Q.map((K)=>K.id);if(X.length===0)return[];let J=await this.db.selectFrom("connection_aggregations").selectAll().where("parent_connection_id","in",X).where("dependency_mode","=","direct").execute(),G=new Map;for(let K of J){let W=G.get(K.parent_connection_id)??[];W.push(K),G.set(K.parent_connection_id,W)}return Q.map((K)=>this.deserializeVirtualMCPEntity(K,G.get(K.id)??[]))}async listByConnectionId(Y,Q){let J=(await this.db.selectFrom("connection_aggregations").select("parent_connection_id").where("child_connection_id","=",Q).execute()).map((H)=>H.parent_connection_id);if(J.length===0)return[];let G=await this.db.selectFrom("connections").selectAll().where("id","in",J).where("organization_id","=",Y).where("connection_type","=","VIRTUAL").execute();if(G.length===0)return[];let K=G.map((H)=>H.id),W=await this.db.selectFrom("connection_aggregations").selectAll().where("parent_connection_id","in",K).where("dependency_mode","=","direct").execute(),Z=new Map;for(let H of W){let $=Z.get(H.parent_connection_id)??[];$.push(H),Z.set(H.parent_connection_id,$)}return G.map((H)=>this.deserializeVirtualMCPEntity(H,Z.get(H.id)??[]))}async update(Y,Q,X){let J=new Date().toISOString(),G={updated_at:J,updated_by:Q};if(X.title!==void 0)G.title=X.title;if(X.description!==void 0)G.description=X.description;if(X.icon!==void 0)G.icon=X.icon;if(X.status!==void 0)G.status=X.status;if(X.metadata!==void 0)G.metadata=X.metadata?JSON.stringify(X.metadata):null;if(await this.db.updateTable("connections").set(G).where("id","=",Y).where("connection_type","=","VIRTUAL").execute(),X.connections!==void 0){if(await this.db.deleteFrom("connection_aggregations").where("parent_connection_id","=",Y).where("dependency_mode","=","direct").execute(),X.connections.length>0)await this.db.insertInto("connection_aggregations").values(X.connections.map((W)=>({id:d8("agg"),parent_connection_id:Y,child_connection_id:W.connection_id,selected_tools:W.selected_tools?JSON.stringify(W.selected_tools):null,selected_resources:W.selected_resources?JSON.stringify(W.selected_resources):null,selected_prompts:W.selected_prompts?JSON.stringify(W.selected_prompts):null,dependency_mode:"direct",created_at:J}))).execute()}let K=await this.findById(Y);if(!K)throw Error("Virtual MCP not found after update");return K}async delete(Y){await this.db.deleteFrom("connection_aggregations").where("parent_connection_id","=",Y).execute(),await this.db.deleteFrom("connections").where("id","=",Y).where("connection_type","=","VIRTUAL").execute()}async removeConnectionReferences(Y){await this.db.deleteFrom("connection_aggregations").where("child_connection_id","=",Y).execute()}deserializeVirtualMCPEntity(Y,Q){let X=Y.created_at instanceof Date?Y.created_at.toISOString():Y.created_at,J=Y.updated_at instanceof Date?Y.updated_at.toISOString():Y.updated_at,G=Y.status==="active"?"active":"inactive",K=this.parseJson(Y.metadata);return{id:Y.id,organization_id:Y.organization_id,title:Y.title,description:Y.description,icon:Y.icon,status:G,created_at:X,updated_at:J,created_by:Y.created_by,updated_by:Y.updated_by??void 0,metadata:{...K,instructions:K?.instructions??null},connections:Q.map((W)=>({connection_id:W.child_connection_id,selected_tools:this.parseJson(W.selected_tools),selected_resources:this.parseJson(W.selected_resources),selected_prompts:this.parseJson(W.selected_prompts)}))}}parseJson(Y){if(Y===null)return null;if(typeof Y==="string")try{return JSON.parse(Y)}catch{return null}return Y}async listVirtualTools(Y){let Q=await this.db.selectFrom("connections").select(["tools","created_at","updated_at"]).where("id","=",Y).where("connection_type","=","VIRTUAL").executeTakeFirst();if(!Q)return[];let X=this.parseJson(Q.tools);if(!X)return[];let J=Q.created_at instanceof Date?Q.created_at.toISOString():Q.created_at,G=Q.updated_at instanceof Date?Q.updated_at.toISOString():Q.updated_at;return X.map((K,W)=>({tool:K,originalIndex:W})).filter(({tool:K})=>HB(K)).map(({tool:K,originalIndex:W})=>qv(`${Y}:${K.name}:${W}`,K,J,G))}async getVirtualTool(Y,Q){let X=await this.db.selectFrom("connections").select(["tools","created_at","updated_at"]).where("id","=",Y).where("connection_type","=","VIRTUAL").executeTakeFirst();if(!X)return null;let J=this.parseJson(X.tools);if(!J)return null;let G=J.findIndex((H)=>H.name===Q&&HB(H));if(G===-1)return null;let K=J[G],W=X.created_at instanceof Date?X.created_at.toISOString():X.created_at,Z=X.updated_at instanceof Date?X.updated_at.toISOString():X.updated_at;return qv(`${Y}:${K.name}:${G}`,K,W,Z)}async createVirtualTool(Y,Q,X){let J=new Date().toISOString(),G=await this.db.selectFrom("connections").select(["tools"]).where("id","=",Y).where("connection_type","=","VIRTUAL").executeTakeFirst();if(!G)throw Error(`Virtual MCP not found: ${Y}`);let K=this.parseJson(G.tools)??[];if(K.some((Z)=>Z.name===Q.name))throw Error(`Tool with name "${Q.name}" already exists`);let W={name:Q.name,description:Q.description,inputSchema:Q.inputSchema,outputSchema:Q.outputSchema,annotations:Q.annotations,_meta:{"mcp.mesh":{"tool.fn":Q.code},connectionDependencies:X}};return K.push(W),await this.db.updateTable("connections").set({tools:JSON.stringify(K),updated_at:J}).where("id","=",Y).execute(),await this.syncIndirectDependencies(Y,X),qv(`${Y}:${Q.name}:${K.length-1}`,W,J,J)}async updateVirtualTool(Y,Q,X,J){let G=new Date().toISOString(),K=await this.db.selectFrom("connections").select(["tools","created_at"]).where("id","=",Y).where("connection_type","=","VIRTUAL").executeTakeFirst();if(!K)throw Error(`Virtual MCP not found: ${Y}`);let W=this.parseJson(K.tools)??[],Z=W.findIndex((B)=>B.name===Q&&HB(B));if(Z===-1)throw Error(`Virtual tool not found: ${Q}`);let H=W[Z];if(X.name&&X.name!==Q){if(W.some((B)=>B.name===X.name))throw Error(`Tool with name "${X.name}" already exists`)}let $=J??H._meta.connectionDependencies??[],F={name:X.name??H.name,description:X.description!==void 0?X.description??void 0:H.description,inputSchema:X.inputSchema??H.inputSchema,outputSchema:X.outputSchema!==void 0?X.outputSchema??void 0:H.outputSchema,annotations:X.annotations!==void 0?X.annotations??void 0:H.annotations,_meta:{"mcp.mesh":{"tool.fn":X.code??H._meta["mcp.mesh"]["tool.fn"]},connectionDependencies:$}};if(W[Z]=F,await this.db.updateTable("connections").set({tools:JSON.stringify(W),updated_at:G}).where("id","=",Y).execute(),J!==void 0)await this.recalculateIndirectDependencies(Y,W);let V=K.created_at instanceof Date?K.created_at.toISOString():K.created_at;return qv(`${Y}:${F.name}:${Z}`,F,V,G)}async deleteVirtualTool(Y,Q){let X=new Date().toISOString(),J=await this.db.selectFrom("connections").select(["tools"]).where("id","=",Y).where("connection_type","=","VIRTUAL").executeTakeFirst();if(!J)throw Error(`Virtual MCP not found: ${Y}`);let G=this.parseJson(J.tools)??[],K=G.findIndex((W)=>W.name===Q&&HB(W));if(K===-1)throw Error(`Virtual tool not found: ${Q}`);G.splice(K,1),await this.db.updateTable("connections").set({tools:G.length>0?JSON.stringify(G):null,updated_at:X}).where("id","=",Y).execute(),await this.recalculateIndirectDependencies(Y,G)}async syncIndirectDependencies(Y,Q){if(Q.length===0)return;let X=new Date().toISOString(),J=await this.db.selectFrom("connection_aggregations").select(["child_connection_id","dependency_mode"]).where("parent_connection_id","=",Y).execute(),G=new Set(J.map((W)=>W.child_connection_id)),K=Q.filter((W)=>!G.has(W));if(K.length>0)await this.db.insertInto("connection_aggregations").values(K.map((W)=>({id:d8("agg"),parent_connection_id:Y,child_connection_id:W,selected_tools:null,selected_resources:null,selected_prompts:null,dependency_mode:"indirect",created_at:X}))).execute()}async recalculateIndirectDependencies(Y,Q){let X=new Set;for(let Z of Q)if(HB(Z)){let H=Z._meta.connectionDependencies??[];for(let $ of H)X.add($)}let J=await this.db.selectFrom("connection_aggregations").select(["id","child_connection_id","dependency_mode"]).where("parent_connection_id","=",Y).execute(),G=J.filter((Z)=>Z.dependency_mode==="indirect"&&!X.has(Z.child_connection_id)).map((Z)=>Z.id);if(G.length>0)await this.db.deleteFrom("connection_aggregations").where("id","in",G).execute();let K=new Set(J.map((Z)=>Z.child_connection_id)),W=Array.from(X).filter((Z)=>!K.has(Z));if(W.length>0){let Z=new Date().toISOString();await this.db.insertInto("connection_aggregations").values(W.map((H)=>({id:d8("agg"),parent_connection_id:Y,child_connection_id:H,selected_tools:null,selected_resources:null,selected_prompts:null,dependency_mode:"indirect",created_at:Z}))).execute()}}}import{sql as P4}from"kysely";class KN1{patterns=[{type:"email",regex:/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/g},{type:"api_key",regex:/(?:api[_-]?key|token|secret|password|bearer)\s*[:=]\s*['"]?[\w-]{16,}['"]?/gi},{type:"jwt",regex:/eyJ[A-Za-z0-9-_]+\.eyJ[A-Za-z0-9-_]+\.[A-Za-z0-9-_.+/=]*/g},{type:"credit_card",regex:/\b\d{4}[- ]?\d{4}[- ]?\d{4}[- ]?\d{4}\b/g},{type:"ssn",regex:/\b\d{3}-\d{2}-\d{4}\b/g}];redact(Y){if(Y===null||Y===void 0)return Y;if(typeof Y==="string")return this.redactString(Y);if(Array.isArray(Y))return Y.map((Q)=>this.redact(Q));if(typeof Y==="object"){let Q={};for(let[X,J]of Object.entries(Y)){let G=this.redactString(X);Q[G]=this.redact(J)}return Q}return Y}redactString(Y){let Q=Y;for(let X of this.patterns)Q=Q.replace(X.regex,`[REDACTED:${X.type}]`);return Q}}LG();class HN1{db;redactor;databaseType;constructor(Y,Q="sqlite"){this.db=Y;this.redactor=new KN1,this.databaseType=Q}jsonExtract(Y,Q){if(this.databaseType==="postgres")return P4`(${P4.ref(Y)}::jsonb)->>${Q}`;let X=`$.${Q}`;return P4`json_extract(${P4.ref(Y)}, ${X})`}jsonExtractWithCommas(Y,Q){if(this.databaseType==="postgres")return P4`(',' || (${P4.ref(Y)}::jsonb)->>${Q} || ',')`;let X=`$.${Q}`;return P4`(',' || json_extract(${P4.ref(Y)}, ${X}) || ',')`}escapeLikeWildcards(Y){return Y.replace(/\\/g,"\\\\").replace(/%/g,"\\%").replace(/_/g,"\\_")}async log(Y){await this.logBatch([Y])}async logBatch(Y){if(Y.length===0)return;let Q=Y.map((X)=>({...X,input:this.redactor.redact(X.input),output:this.redactor.redact(X.output)}));await this.db.transaction().execute(async(X)=>{await X.insertInto("monitoring_logs").values(Q.map((J)=>this.toDbRow(J))).execute()})}async query(Y){let Q=this.db.selectFrom("monitoring_logs").selectAll(),X=this.db.selectFrom("monitoring_logs").select((Z)=>Z.fn.countAll().as("count"));if(Y.organizationId)Q=Q.where("organization_id","=",Y.organizationId),X=X.where("organization_id","=",Y.organizationId);if(Y.connectionId)Q=Q.where("connection_id","=",Y.connectionId),X=X.where("connection_id","=",Y.connectionId);if(Y.excludeConnectionIds&&Y.excludeConnectionIds.length>0)Q=Q.where("connection_id","not in",Y.excludeConnectionIds),X=X.where("connection_id","not in",Y.excludeConnectionIds);if(Y.virtualMcpId)Q=Q.where("virtual_mcp_id","=",Y.virtualMcpId),X=X.where("virtual_mcp_id","=",Y.virtualMcpId);if(Y.toolName)Q=Q.where("tool_name","=",Y.toolName),X=X.where("tool_name","=",Y.toolName);if(Y.isError!==void 0)Q=Q.where("is_error","=",Y.isError?1:0),X=X.where("is_error","=",Y.isError?1:0);if(Y.startDate)Q=Q.where("timestamp",">=",Y.startDate.toISOString()),X=X.where("timestamp",">=",Y.startDate.toISOString());if(Y.endDate)Q=Q.where("timestamp","<=",Y.endDate.toISOString()),X=X.where("timestamp","<=",Y.endDate.toISOString());if(Y.propertyFilters)Q=this.applyPropertyFilters(Q,Y.propertyFilters),X=this.applyPropertyFilters(X,Y.propertyFilters);if(Q=Q.orderBy("timestamp","desc"),Y.limit)Q=Q.limit(Y.limit);if(Y.offset)Q=Q.offset(Y.offset);let[J,G]=await Promise.all([Q.execute(),X.executeTakeFirst()]),K=Number(G?.count||0);return{logs:J.map((Z)=>this.fromDbRow(Z)),total:K}}async getStats(Y){let Q=this.db.selectFrom("monitoring_logs").where("organization_id","=",Y.organizationId);if(Y.startDate)Q=Q.where("timestamp",">=",Y.startDate.toISOString());if(Y.endDate)Q=Q.where("timestamp","<=",Y.endDate.toISOString());let X=await Q.select([(W)=>W.fn.countAll().as("total_count"),(W)=>W.fn.sum(W.ref("is_error")).as("error_count"),(W)=>W.fn.avg("duration_ms").as("avg_duration")]).executeTakeFirst(),J=Number(X?.total_count||0),G=Number(X?.error_count||0),K=Number(X?.avg_duration||0);return{totalCalls:J,errorRate:J>0?G/J:0,avgDurationMs:K}}async aggregate(Y){let{organizationId:Q,path:X,from:J,aggregation:G,groupBy:K,groupByColumn:W,interval:Z,filters:H}=Y,$=J==="input"?"input":"output",F=this.db.selectFrom("monitoring_logs").where("organization_id","=",Q);if(H?.connectionIds&&H.connectionIds.length>0)F=F.where("connection_id","in",H.connectionIds);if(H?.virtualMcpIds&&H.virtualMcpIds.length>0)F=F.where("virtual_mcp_id","in",H.virtualMcpIds);if(H?.toolNames&&H.toolNames.length>0)F=F.where("tool_name","in",H.toolNames);if(H?.startDate)F=F.where("timestamp",">=",H.startDate.toISOString());if(H?.endDate)F=F.where("timestamp","<=",H.endDate.toISOString());if(H?.propertyFilters)F=this.applyPropertyFilters(F,H.propertyFilters);let V=this.jsonExtractPath($,X);if(W){let U=P4.ref(W),z=F.select([P4`${U}`.as("group_key"),this.aggregationExpression(G,V).as("agg_value")]).where(P4`${U}`,"is not",null).groupBy(P4`${U}`).orderBy(P4`agg_value`,"desc");if(Y.limit)z=z.limit(Y.limit);return{value:null,groups:(await z.execute()).map((L)=>({key:String(L.group_key),value:Number(L.agg_value)||0}))}}if(K){let U=this.jsonExtractPathText($,K),z=F.select([P4`${U}`.as("group_key"),this.aggregationExpression(G,V).as("agg_value")]).where(P4`${U}`,"is not",null).groupBy(P4`${U}`).orderBy(P4`agg_value`,"desc");if(Y.limit)z=z.limit(Y.limit);return{value:null,groups:(await z.execute()).map((L)=>({key:String(L.group_key),value:Number(L.agg_value)||0}))}}if(Z){let U=this.timeBucketExpression(Z);return{value:null,timeseries:(await F.select([U.as("time_bucket"),this.aggregationExpression(G,V).as("agg_value")]).groupBy(P4`time_bucket`).orderBy(P4`time_bucket`).execute()).map((D)=>({timestamp:String(D.time_bucket),value:Number(D.agg_value)||0}))}}let B=await F.select([this.aggregationExpression(G,V).as("agg_value")]).executeTakeFirst();return{value:B?Number(B.agg_value)||0:null}}async countMatched(Y){let{organizationId:Q,path:X,from:J,filters:G}=Y,K=J==="input"?"input":"output",W=this.db.selectFrom("monitoring_logs").where("organization_id","=",Q);if(G?.connectionIds&&G.connectionIds.length>0)W=W.where("connection_id","in",G.connectionIds);if(G?.toolNames&&G.toolNames.length>0)W=W.where("tool_name","in",G.toolNames);if(G?.startDate)W=W.where("timestamp",">=",G.startDate.toISOString());if(G?.endDate)W=W.where("timestamp","<=",G.endDate.toISOString());if(G?.propertyFilters)W=this.applyPropertyFilters(W,G.propertyFilters);let Z=this.jsonExtractPathText(K,X),H=await W.where(P4`${Z}`,"is not",null).select(($)=>$.fn.countAll().as("count")).executeTakeFirst();return Number(H?.count||0)}jsonExtractPath(Y,Q){if(this.databaseType==="postgres"){let J=`{${Q.replace(/^\$\.?/,"").split(".").join(",")}}`;return P4`(${P4.ref(Y)}::jsonb #>> ${J})::numeric`}return P4`CAST(json_extract(${P4.ref(Y)}, ${Q}) AS REAL)`}jsonExtractPathText(Y,Q){if(this.databaseType==="postgres"){let J=`{${Q.replace(/^\$\.?/,"").split(".").join(",")}}`;return P4`(${P4.ref(Y)}::jsonb #>> ${J})`}return P4`json_extract(${P4.ref(Y)}, ${Q})`}aggregationExpression(Y,Q){switch(Y){case"sum":return P4`COALESCE(SUM(${Q}), 0)`;case"avg":return P4`COALESCE(AVG(${Q}), 0)`;case"min":return P4`MIN(${Q})`;case"max":return P4`MAX(${Q})`;case"count":return P4`COUNT(${Q})`;case"count_all":return P4`COUNT(*)`;case"last":return P4`MAX(${Q})`;default:return P4`SUM(${Q})`}}timeBucketExpression(Y){let Q=Y.match(/^(\d+)([mhd])$/);if(!Q)throw Error(`Invalid interval format: ${Y}. Use format like "1h", "1d", "15m"`);let[,X,J]=Q;if(!X||!J)throw Error(`Invalid interval format: ${Y}`);let G=parseInt(X,10);if(this.databaseType==="postgres"){let K;switch(J){case"m":K="minute";break;case"h":K="hour";break;case"d":K="day";break;default:K="hour"}if(G===1)return P4`date_trunc(${K}, timestamp::timestamp)`;let Z=G*(J==="m"?60:J==="h"?3600:86400);return P4`to_timestamp(floor(extract(epoch from timestamp::timestamp) / ${Z}) * ${Z})`}switch(J){case"m":if(G===1)return P4`strftime('%Y-%m-%d %H:%M:00', timestamp)`;return P4`strftime('%Y-%m-%d %H:', timestamp) || printf('%02d', (cast(strftime('%M', timestamp) as integer) / ${G}) * ${G}) || ':00'`;case"h":if(G===1)return P4`strftime('%Y-%m-%d %H:00:00', timestamp)`;return P4`strftime('%Y-%m-%d ', timestamp) || printf('%02d', (cast(strftime('%H', timestamp) as integer) / ${G}) * ${G}) || ':00:00'`;case"d":return P4`strftime('%Y-%m-%d 00:00:00', timestamp)`;default:return P4`strftime('%Y-%m-%d %H:00:00', timestamp)`}}applyPropertyFilters(Y,Q){let{properties:X,propertyKeys:J,propertyPatterns:G,propertyInValues:K}=Q;if(X)for(let[W,Z]of Object.entries(X)){let H=this.jsonExtract("properties",W);Y=Y.where(H,"=",Z)}if(J&&J.length>0)for(let W of J){let Z=this.jsonExtract("properties",W);Y=Y.where(Z,"is not",null)}if(G)for(let[W,Z]of Object.entries(G)){let H=this.jsonExtract("properties",W),$=this.databaseType==="postgres"?"ilike":"like";Y=Y.where(H,$,Z)}if(K)for(let[W,Z]of Object.entries(K)){let H=this.jsonExtractWithCommas("properties",W),F=`%,${this.escapeLikeWildcards(Z)},%`,V=P4`${H} LIKE ${F} ESCAPE '\\'`;Y=Y.where(V)}return Y}toDbRow(Y){return{id:Y.id||d8("log"),organization_id:Y.organizationId,connection_id:Y.connectionId,connection_title:Y.connectionTitle,tool_name:Y.toolName,input:JSON.stringify(Y.input),output:JSON.stringify(Y.output),is_error:Y.isError?1:0,error_message:Y.errorMessage||null,duration_ms:Y.durationMs,timestamp:Y.timestamp instanceof Date?Y.timestamp.toISOString():Y.timestamp,user_id:Y.userId||null,request_id:Y.requestId,user_agent:Y.userAgent||null,virtual_mcp_id:Y.virtualMcpId||null,properties:Y.properties?JSON.stringify(Y.properties):null}}fromDbRow(Y){let Q=typeof Y.input==="string"?JSON.parse(Y.input):Y.input,X=typeof Y.output==="string"?JSON.parse(Y.output):Y.output,J=typeof Y.timestamp==="string"?new Date(Y.timestamp):Y.timestamp,G=Y.properties?typeof Y.properties==="string"?JSON.parse(Y.properties):Y.properties:null;return{id:Y.id,organizationId:Y.organization_id,connectionId:Y.connection_id,connectionTitle:Y.connection_title,toolName:Y.tool_name,input:Q,output:X,isError:Y.is_error===1,errorMessage:Y.error_message,durationMs:Y.duration_ms,timestamp:J,userId:Y.user_id,requestId:Y.request_id,userAgent:Y.user_agent,virtualMcpId:Y.virtual_mcp_id,properties:G}}}LG();class $N1{db;constructor(Y){this.db=Y}async create(Y,Q,X){let J=d8("dash"),G=new Date().toISOString();return await this.db.insertInto("monitoring_dashboards").values({id:J,organization_id:Y,name:X.name,description:X.description??null,filters:X.filters?JSON.stringify(X.filters):null,widgets:JSON.stringify(X.widgets),created_by:Q,created_at:G,updated_at:G}).execute(),{id:J,organizationId:Y,name:X.name,description:X.description??null,filters:X.filters??null,widgets:X.widgets,createdBy:Q,createdAt:G,updatedAt:G}}async get(Y){let Q=await this.db.selectFrom("monitoring_dashboards").selectAll().where("id","=",Y).executeTakeFirst();if(!Q)return null;return this.fromDbRow(Q)}async list(Y){return(await this.db.selectFrom("monitoring_dashboards").selectAll().where("organization_id","=",Y).orderBy("created_at","desc").execute()).map((X)=>this.fromDbRow(X))}async update(Y,Q){let J={updated_at:new Date().toISOString()};if(Q.name!==void 0)J.name=Q.name;if(Q.description!==void 0)J.description=Q.description;if(Q.filters!==void 0)J.filters=Q.filters?JSON.stringify(Q.filters):null;if(Q.widgets!==void 0)J.widgets=JSON.stringify(Q.widgets);await this.db.updateTable("monitoring_dashboards").set(J).where("id","=",Y).execute();let G=await this.get(Y);if(!G)throw Error(`Dashboard ${Y} not found after update`);return G}async delete(Y){await this.db.deleteFrom("monitoring_dashboards").where("id","=",Y).execute()}fromDbRow(Y){let Q=Y.filters?typeof Y.filters==="string"?JSON.parse(Y.filters):Y.filters:null,X=typeof Y.widgets==="string"?JSON.parse(Y.widgets):Y.widgets;return{id:Y.id,organizationId:Y.organization_id,name:Y.name,description:Y.description,filters:Q,widgets:X,createdBy:Y.created_by,createdAt:Y.created_at instanceof Date?Y.created_at.toISOString():Y.created_at,updatedAt:Y.updated_at instanceof Date?Y.updated_at.toISOString():Y.updated_at}}}class FN1{db;constructor(Y){this.db=Y}async get(Y){let Q=await this.db.selectFrom("organization_settings").selectAll().where("organizationId","=",Y).executeTakeFirst();if(!Q)return null;return{organizationId:Q.organizationId,sidebar_items:Q.sidebar_items?typeof Q.sidebar_items==="string"?JSON.parse(Q.sidebar_items):Q.sidebar_items:null,enabled_plugins:Q.enabled_plugins?typeof Q.enabled_plugins==="string"?JSON.parse(Q.enabled_plugins):Q.enabled_plugins:null,createdAt:Q.createdAt,updatedAt:Q.updatedAt}}async upsert(Y,Q){let X=new Date().toISOString(),J=Q?.sidebar_items?JSON.stringify(Q.sidebar_items):null,G=Q?.enabled_plugins?JSON.stringify(Q.enabled_plugins):null;await this.db.insertInto("organization_settings").values({organizationId:Y,sidebar_items:J,enabled_plugins:G,createdAt:X,updatedAt:X}).onConflict((W)=>W.column("organizationId").doUpdateSet({sidebar_items:J?J:void 0,enabled_plugins:G?G:void 0,updatedAt:X})).execute();let K=await this.get(Y);if(!K)return{organizationId:Y,sidebar_items:Q?.sidebar_items??null,enabled_plugins:Q?.enabled_plugins??null,createdAt:X,updatedAt:X};return K}}BV1();LG();class VN1{db;constructor(Y){this.db=Y}parseRow(Y){return{id:Y.id,projectId:Y.project_id,connectionId:Y.connection_id,createdAt:Y.created_at}}async list(Y){return(await this.db.selectFrom("project_connections").selectAll().where("project_id","=",Y).orderBy("created_at","asc").execute()).map((X)=>this.parseRow(X))}async add(Y,Q){let X=new Date().toISOString(),J=d8("pc"),G=await this.db.insertInto("project_connections").values({id:J,project_id:Y,connection_id:Q,created_at:X}).onConflict((W)=>W.columns(["project_id","connection_id"]).doNothing()).returning(["id","project_id","connection_id","created_at"]).executeTakeFirst();if(G)return this.parseRow(G);let K=await this.db.selectFrom("project_connections").selectAll().where("project_id","=",Y).where("connection_id","=",Q).executeTakeFirst();if(!K)throw Error(`Project connection not found after conflict: project=${Y}, connection=${Q}`);return this.parseRow(K)}async remove(Y,Q){return((await this.db.deleteFrom("project_connections").where("project_id","=",Y).where("connection_id","=",Q).executeTakeFirst()).numDeletedRows??0n)>0n}}LG();class qN1{db;constructor(Y){this.db=Y}parseRow(Y){return{id:Y.id,projectId:Y.project_id,pluginId:Y.plugin_id,connectionId:Y.connection_id,settings:Y.settings?typeof Y.settings==="string"?JSON.parse(Y.settings):Y.settings:null,createdAt:Y.created_at,updatedAt:Y.updated_at}}async list(Y){return(await this.db.selectFrom("project_plugin_configs").selectAll().where("project_id","=",Y).execute()).map((X)=>this.parseRow(X))}async get(Y,Q){let X=await this.db.selectFrom("project_plugin_configs").selectAll().where("project_id","=",Y).where("plugin_id","=",Q).executeTakeFirst();return X?this.parseRow(X):null}async upsert(Y,Q,X){let J=new Date().toISOString();if(await this.get(Y,Q)){let Z={updated_at:J};if(X.connectionId!==void 0)Z.connection_id=X.connectionId;if(X.settings!==void 0)Z.settings=X.settings?JSON.stringify(X.settings):null;await this.db.updateTable("project_plugin_configs").set(Z).where("project_id","=",Y).where("plugin_id","=",Q).execute();let H=await this.get(Y,Q);if(!H)throw Error("Failed to update project plugin config");return H}let K=d8("ppc");await this.db.insertInto("project_plugin_configs").values({id:K,project_id:Y,plugin_id:Q,connection_id:X.connectionId??null,settings:X.settings?JSON.stringify(X.settings):null,created_at:J,updated_at:J}).execute();let W=await this.get(Y,Q);if(!W)throw Error("Failed to create project plugin config");return W}async delete(Y,Q){return((await this.db.deleteFrom("project_plugin_configs").where("project_id","=",Y).where("plugin_id","=",Q).executeTakeFirst()).numDeletedRows??0n)>0n}async getBoundConnectionsForProjects(Y){if(Y.length===0)return new Map;let Q=await this.db.selectFrom("project_plugin_configs").innerJoin("connections","connections.id","project_plugin_configs.connection_id").select(["project_plugin_configs.project_id","connections.id as connection_id","connections.title","connections.icon"]).where("project_plugin_configs.project_id","in",Y).where("project_plugin_configs.connection_id","is not",null).execute(),X=new Map;for(let J of Q){let G=J.project_id;if(!X.has(G))X.set(G,[]);X.get(G).push({id:J.connection_id,title:J.title,icon:J.icon})}return X}}LG();class BN1{db;constructor(Y){this.db=Y}async listOrgTags(Y){return(await this.db.selectFrom("organization_tags").selectAll().where("organization_id","=",Y).orderBy("name","asc").execute()).map((X)=>this.tagFromDbRow(X))}async getTag(Y){let Q=await this.db.selectFrom("organization_tags").selectAll().where("id","=",Y).executeTakeFirst();return Q?this.tagFromDbRow(Q):null}async getTagByName(Y,Q){let X=await this.db.selectFrom("organization_tags").selectAll().where("organization_id","=",Y).where("name","=",Q).executeTakeFirst();return X?this.tagFromDbRow(X):null}async createTag(Y,Q){let X=d8("tag"),J=new Date().toISOString();await this.db.insertInto("organization_tags").values({id:X,organization_id:Y,name:Q,created_at:J}).onConflict((K)=>K.columns(["organization_id","name"]).doNothing()).execute();let G=await this.getTagByName(Y,Q);if(!G)throw Error(`Failed to create or retrieve tag: ${Q}`);return G}async deleteTag(Y){await this.db.deleteFrom("organization_tags").where("id","=",Y).execute()}async getMemberTags(Y){return(await this.db.selectFrom("member_tags").innerJoin("organization_tags","organization_tags.id","member_tags.tag_id").select(["organization_tags.id","organization_tags.organization_id","organization_tags.name","organization_tags.created_at"]).where("member_tags.member_id","=",Y).orderBy("organization_tags.name","asc").execute()).map((X)=>this.tagFromDbRow(X))}async setMemberTags(Y,Q){await this.db.transaction().execute(async(X)=>{if(await X.deleteFrom("member_tags").where("member_id","=",Y).execute(),Q.length>0){let J=new Date().toISOString();await X.insertInto("member_tags").values(Q.map((G)=>({id:d8("mtag"),member_id:Y,tag_id:G,created_at:J}))).execute()}})}async addMemberTag(Y,Q){let X=new Date().toISOString();await this.db.insertInto("member_tags").values({id:d8("mtag"),member_id:Y,tag_id:Q,created_at:X}).onConflict((J)=>J.columns(["member_id","tag_id"]).doNothing()).execute()}async removeMemberTag(Y,Q){await this.db.deleteFrom("member_tags").where("member_id","=",Y).where("tag_id","=",Q).execute()}async verifyMemberOrg(Y,Q){return await this.db.selectFrom("member").select("id").where("id","=",Y).where("organizationId","=",Q).executeTakeFirst()!==void 0}async getUserTagsInOrg(Y,Q){return(await this.db.selectFrom("member").innerJoin("member_tags","member_tags.member_id","member.id").innerJoin("organization_tags","organization_tags.id","member_tags.tag_id").select(["organization_tags.id","organization_tags.organization_id","organization_tags.name","organization_tags.created_at"]).where("member.userId","=",Y).where("member.organizationId","=",Q).orderBy("organization_tags.name","asc").execute()).map((J)=>this.tagFromDbRow(J))}async getMembersWithTags(Y){let Q=await this.db.selectFrom("member").leftJoin("member_tags","member_tags.member_id","member.id").leftJoin("organization_tags","organization_tags.id","member_tags.tag_id").select(["member.id as memberId","organization_tags.name as tagName"]).where("member.organizationId","=",Y).execute(),X=new Map;for(let J of Q){if(!X.has(J.memberId))X.set(J.memberId,[]);if(J.tagName)X.get(J.memberId).push(J.tagName)}return X}tagFromDbRow(Y){return{id:Y.id,organizationId:Y.organization_id,name:Y.name,createdAt:Y.created_at}}}class UN1{db;constructor(Y){this.db=Y}async findById(Y,Q){let X=await this.db.selectFrom("user").select(["user.id","user.name","user.email","user.image","user.createdAt","user.updatedAt"]).where("user.id","=",Y).where((J)=>J.exists(J.selectFrom("member as m1").innerJoin("member as m2","m1.organizationId","m2.organizationId").select("m1.id").where("m1.userId","=",Y).where("m2.userId","=",Q))).executeTakeFirst();if(!X)return null;return{id:X.id,name:X.name,email:X.email,role:"",createdAt:X.createdAt,updatedAt:X.updatedAt,image:X.image??void 0}}}Vv();OP();KY();zz();dS();var Lr=new JQ,zN1=[404,401,406];async function Gi0(Y,Q){return(await Q.storage.connections.findById(Y))?.connection_url??null}function Mu4(Y){let Q=Y.toLowerCase();return Q.includes("resource_metadata=")||Q.includes("invalid_token")||Q.includes("oauth")}async function Wi0(Y,Q={}){try{let X=await fetch(Y,{method:"POST",headers:{...Q,"Content-Type":"application/json",Accept:"application/json, text/event-stream"},body:JSON.stringify({jsonrpc:"2.0",id:0,method:"initialize",params:{protocolVersion:"2025-06-18",capabilities:{},clientInfo:{name:"mcp-mesh-proxy",version:"1.0.0"}}})});if(X.status===401){let J=X.headers.get("WWW-Authenticate");if(J){if(Mu4(J))return J}if(await wu4(Y))return'Bearer realm="mcp"'}return null}catch{return null}}async function wu4(Y){try{let Q=new URL(Y),X=new URL("/.well-known/oauth-authorization-server",Q.origin),J=await fetch(X.toString(),{method:"GET",headers:{Accept:"application/json"}});if(J.ok){let G=await J.json();if(G.authorization_endpoint||G.token_endpoint||G.issuer)return!0}return!1}catch{return!1}}async function Mr(Y){let X=new URL(Y).pathname;if(X.endsWith("/"))X=X.slice(0,-1);let J=new URL(Y);J.pathname=`${X}/.well-known/oauth-protected-resource`;let G=await fetch(J.toString(),{method:"GET",headers:{Accept:"application/json"}});if(G.ok)return G;if(!zN1.includes(G.status))return G;let K=new URL(Y);if(K.pathname=`/.well-known/oauth-protected-resource${X}`,G=await fetch(K.toString(),{method:"GET",headers:{Accept:"application/json"}}),!zN1.includes(G.status))return G;let W=new URL(Y);return W.pathname="/.well-known/oauth-protected-resource",G=await fetch(W.toString(),{method:"GET",headers:{Accept:"application/json"}}),G}async function Au4(Y,Q){let X=await Gi0(Y,Q);if(!X)return null;let J;try{J=new URL(X).origin}catch{return null}try{let G=await Mr(X);if(G.ok){let K=await G.json();if(K.authorization_servers?.[0])return K.authorization_servers[0]}}catch{}return J}async function Zi0(Y){let Q=Y.get("meshContext");if(!Q)Q=await DF.create(Y.req.raw),Y.set("meshContext",Q);return Q}async function Ki0({error:Y,reqUrl:Q,connectionId:X,connectionUrl:J,headers:G}){let K=Y.message?.toLowerCase()??"";if(!(Y.status===401||Y.code===401||Y.message?.includes("401")||K.includes("unauthorized")||K.includes("invalid_token")||K.includes("api key required")||K.includes("api-key required")))return null;if(Boolean(await Wi0(J,G)))return new Response(null,{status:401,headers:{"WWW-Authenticate":`Bearer realm="mcp",resource_metadata="${Q.origin}/mcp/${X}/.well-known/oauth-protected-resource"`}});return new Response(JSON.stringify({error:"unauthorized",message:"Authentication required but server does not support OAuth"}),{status:401,headers:{"Content-Type":"application/json"}})}var Hi0=(Y)=>{if(!(Y.hostname==="localhost"||Y.hostname.endsWith(".localhost")||Y.hostname==="127.0.0.1"))Y.protocol="https:";return Y},$i0=async(Y)=>{let Q=Y.req.param("connectionId"),X=await Zi0(Y),J=await Gi0(Q,X);if(!J)return Y.json({error:"Connection not found"},404);let G=Hi0(new URL(Y.req.url)),K=`${G.origin}/mcp/${Q}`,W=`${G.origin}/oauth-proxy/${Q}`;try{let Z=await Mr(J);if(!Z.ok&&zN1.includes(Z.status)){if(await Wi0(J))return new Response(JSON.stringify({resource:K,authorization_servers:[W],bearer_methods_supported:["header"],scopes_supported:["*"]}),{status:200,headers:{"Content-Type":"application/json"}});return new Response(Z.body,{status:Z.status,statusText:Z.statusText,headers:{"Content-Type":"application/json"}})}if(!Z.ok)return new Response(Z.body,{status:Z.status,statusText:Z.statusText,headers:{"Content-Type":"application/json"}});let H=await Z.json();if("issuer"in H&&!("resource"in H)&&(("authorization_endpoint"in H)||("token_endpoint"in H))){let V={resource:K,authorization_servers:[W],bearer_methods_supported:["header"],scopes_supported:"scopes_supported"in H&&Array.isArray(H.scopes_supported)&&H.scopes_supported.length>0?H.scopes_supported:["*"]};return new Response(JSON.stringify(V),{status:200,headers:{"Content-Type":"application/json"}})}let F={...H,resource:K,authorization_servers:[W]};return new Response(JSON.stringify(F),{status:Z.status,statusText:Z.statusText,headers:{"Content-Type":"application/json"}})}catch(Z){let H=Z;return console.error("[oauth-proxy] Failed to proxy OAuth protected resource metadata:",H),Y.json({error:"Failed to proxy OAuth metadata",message:H.message},502)}};Lr.get("/.well-known/oauth-protected-resource/mcp/:connectionId",(Y)=>$i0(Y));Lr.get("/mcp/:connectionId/.well-known/oauth-protected-resource",(Y)=>$i0(Y));async function DN1(Y){let X=new URL(Y).pathname;if(X.endsWith("/"))X=X.slice(0,-1);let J=X!==""&&X!=="/",G=[];if(J){let W=new URL(Y);W.pathname=`/.well-known/oauth-authorization-server${X}`,G.push(W);let Z=new URL(Y);Z.pathname=`/.well-known/openid-configuration${X}`,G.push(Z);let H=new URL(Y);H.pathname=`${X}/.well-known/openid-configuration`,G.push(H)}else{let W=new URL(Y);W.pathname="/.well-known/oauth-authorization-server",G.push(W);let Z=new URL(Y);Z.pathname="/.well-known/openid-configuration",G.push(Z)}let K=null;for(let W of G){if(K=await fetch(W.toString(),{method:"GET",headers:{Accept:"application/json"}}),K.ok)return K;if(K.status!==404&&K.status!==401)return K}return K}Lr.get("/.well-known/oauth-authorization-server/oauth-proxy/:connectionId",async(Y)=>{let Q=Y.req.param("connectionId"),X=await Zi0(Y),J=await Au4(Q,X);if(!J)return Y.json({error:"Connection not found or no auth server"},404);try{let G=await DN1(J);if(!G.ok)return new Response(G.body,{status:G.status,statusText:G.statusText,headers:{"Content-Type":"application/json"}});let K=await G.json(),Z=`${Hi0(new URL(Y.req.url)).origin}/oauth-proxy/${Q}`,H={...K,authorization_endpoint:K.authorization_endpoint?`${Z}/authorize`:void 0,token_endpoint:K.token_endpoint?`${Z}/token`:void 0,registration_endpoint:K.registration_endpoint?`${Z}/register`:void 0};return new Response(JSON.stringify(H),{status:200,headers:{"Content-Type":"application/json"}})}catch(G){let K=G;return console.error("[oauth-proxy] Failed to proxy auth server metadata:",K),Y.json({error:"Failed to proxy auth server metadata",message:K.message},502)}});var Fi0=Lr;KY();dS();Uv();var ON1=new JQ;async function wr(Y,Q){let X=Y.get("meshContext");try{let J=Y.req.header("x-org-id"),G=Y.req.header("x-org-slug"),K=J?J:G?await X.db.selectFrom("organization").select("id").where("slug","=",G).executeTakeFirst().then((U)=>U?.id):null,W=Q?Q:K?UM(K):null;if(!W)return Y.json({error:"Agent ID or organization ID is required"},400);let Z=await X.storage.virtualMcps.findById(W,K??void 0);if(!Z)return Y.json({error:"Agent not found"},404);if(K&&Z.organization_id!==K)return Y.json({error:"Agent not found"},404);if(Z.status!=="active")return Y.json({error:`Agent is inactive: ${Z.id??"Decopilot"}`},503);X.connectionId=Z.id??void 0;let H=await X.db.selectFrom("organization").select(["id","slug","name"]).where("id","=",Z.organization_id).executeTakeFirst();if(H)X.organization={id:H.id,slug:H.slug,name:H.name};let $=gD1(Y.req.query("mode")),F=await $B(Z,X,$),V=wz(F,{name:`mcp-virtual-mcp-${Z.title??"Decopilot"}`,version:"1.0.0"},{capabilities:{tools:{},resources:{},prompts:{}},instructions:Z.metadata?.instructions??void 0}),B=new u$({enableJsonResponse:Y.req.header("Accept")?.includes("application/json")??!1});return await V.connect(B),await B.handleRequest(Y.req.raw)}catch(J){let G=J;return console.error("[virtual-mcp] Error handling virtual MCP request:",G),Y.json({error:"Internal server error",message:G.message},500)}}ON1.all("/gateway/:virtualMcpId?",async(Y)=>{let Q=Y.req.param("virtualMcpId")||Y.req.header("x-virtual-mcp-id");return wr(Y,Q)});ON1.all("/virtual-mcp/:virtualMcpId?",async(Y)=>{let Q=Y.req.param("virtualMcpId")||Y.req.header("x-virtual-mcp-id");return wr(Y,Q)});var Vi0=ON1;var Ar=new JQ,qi0=300000;function NO(Y){let Q={client:{callTool:Y.callTool.bind(Y),listTools:Y.listTools.bind(Y)}};if("callStreamableTool"in Y&&Y.callStreamableTool)return{...Q,callStreamableTool:Y.callStreamableTool.bind(Y)};return Q}async function Bi0(Y,Q,{superUser:X}){let J=typeof Y==="string"?await Q.storage.connections.findById(Y,Q.organization?.id):Y;if(!J)throw Error("Connection not found");if(Q.organization&&J.organization_id!==Q.organization.id)throw Error("Connection does not belong to the active organization");if(Q.organization??={id:J.organization_id},J.status!=="active")throw Error(`Connection inactive: ${J.status}`);let G=await _5(J,Q,X),K=lD1(G,J),W=K.getServerCapabilities()??{tools:{},resources:{},prompts:{}},Z=wz(K,{name:"mcp-mesh-proxy-client",version:"1.0.0"},{capabilities:W,instructions:K.getInstructions()}),{client:H,server:$}=w71();await Z.connect($);let F=new G5({name:"mcp-mesh-proxy-client",version:"1.0.0"});return await F.connect(H),F}async function Ui0(Y,Q){return Bi0(Y,Q,{superUser:!1})}async function NN1(Y,Q){return Bi0(Y,Q,{superUser:!0})}Ar.all("/",async(Y)=>{return wr(Y,void 0)});Ar.all("/:connectionId",async(Y)=>{let Q=Y.req.param("connectionId"),X=Y.get("meshContext");try{try{let J=await X.storage.connections.findById(Q,X.organization?.id);if(!J)throw Error("Connection not found");if(X.organization&&J.organization_id!==X.organization.id)throw Error("Connection does not belong to the active organization");if(X.organization??={id:J.organization_id},J.status!=="active")throw Error(`Connection inactive: ${J.status}`);let G=await mD1(J,X,!1),K=new u$({enableJsonResponse:Y.req.raw.headers.get("Accept")?.includes("application/json")??!1});return await G.connect(K),await K.handleRequest(Y.req.raw)}catch(J){let G=await X.storage.connections.findById(Q,X.organization?.id);if(G?.connection_url){let K=await Ki0({error:J,reqUrl:new URL(Y.req.raw.url),connectionId:Q,connectionUrl:G.connection_url,headers:{}});if(K)return K}throw J}}catch(J){return zi0(J,Y)}});var zi0=(Y,Q)=>{if(Y.message.includes("not found"))return Q.json({error:Y.message},404);if(Y.message.includes("does not belong to the active organization"))return Q.json({error:"Connection not found"},404);if(Y.message.includes("inactive"))return Q.json({error:Y.message},503);return Q.json({error:"Internal server error",message:Y.message},500)};Ar.all("/:connectionId/call-tool/:toolName",async(Y)=>{let Q=Y.req.param("connectionId"),X=Y.req.param("toolName"),J=Y.get("meshContext");try{let G=await J.storage.connections.findById(Q,J.organization?.id);if(!G)return Y.json({error:"Connection not found"},404);let W=await(await _5(G,J,!1)).callTool({name:X,arguments:await Y.req.json()});if(W instanceof Response)return W;if(W.isError)return new Response(JSON.stringify(W.content),{headers:{"Content-Type":"application/json"},status:500});return new Response(JSON.stringify(W.structuredContent??W.content),{headers:{"Content-Type":"application/json"}})}catch(G){return zi0(G,Y)}});var Di0=Ar;Or();LG();LG();var Oi0=()=>d8("msg"),Pr=32768,Er=50,Tr="New chat",Ni0=30,Li0=15,Mi0=["user_ask","subtask"];function LN1(Y){let X="You are decopilot, an AI assistant running inside decocms (deco context management system).";if(Y?.trim())X+=`
|
|
1370
|
+
`}}P7.Metric=PB;class wt0{constructor(Y,Q={msgs:1e5,size:128,subject:"",asyncRequests:!1,pub:!1,sub:!1,req:!1,rep:!1}){if(this.nc=Y,this.callbacks=Q.callbacks||!1,this.msgs=Q.msgs||0,this.size=Q.size||0,this.subject=Q.subject||mi4.nuid.next(),this.asyncRequests=Q.asyncRequests||!1,this.pub=Q.pub||!1,this.sub=Q.sub||!1,this.req=Q.req||!1,this.rep=Q.rep||!1,this.perf=new $M1.Perf,this.payload=this.size?new Uint8Array(this.size):ui4.Empty,!this.pub&&!this.sub&&!this.req&&!this.rep)throw Error("no bench option selected")}run(){return TF(this,void 0,void 0,function*(){if(this.nc.closed().then((Y)=>{if(Y)throw new Mt0.NatsError(`bench closed with an error: ${Y.message}`,Mt0.ErrorCode.Unknown,Y)}),this.callbacks)yield this.runCallbacks();else yield this.runAsync();return this.processMetrics()})}processMetrics(){let Y=this.nc,{lang:Q,version:X}=Y.protocol.transport;if(this.pub&&this.sub)this.perf.measure("pubsub","pubStart","subStop");if(this.req&&this.rep)this.perf.measure("reqrep","reqStart","reqStop");let J=this.perf.getEntries(),G=J.find((B)=>B.name==="pubsub"),K=J.find((B)=>B.name==="reqrep"),W=J.find((B)=>B.name==="req"),Z=J.find((B)=>B.name==="rep"),H=J.find((B)=>B.name==="pub"),$=J.find((B)=>B.name==="sub"),F=this.nc.stats(),V=[];if(G){let{name:B,duration:U}=G,z=new PB(B,U);z.msgs=this.msgs*2,z.bytes=F.inBytes+F.outBytes,z.lang=Q,z.version=X,z.payload=this.payload.length,V.push(z)}if(K){let{name:B,duration:U}=K,z=new PB(B,U);z.msgs=this.msgs*2,z.bytes=F.inBytes+F.outBytes,z.lang=Q,z.version=X,z.payload=this.payload.length,V.push(z)}if(H){let{name:B,duration:U}=H,z=new PB(B,U);z.msgs=this.msgs,z.bytes=F.outBytes,z.lang=Q,z.version=X,z.payload=this.payload.length,V.push(z)}if($){let{name:B,duration:U}=$,z=new PB(B,U);z.msgs=this.msgs,z.bytes=F.inBytes,z.lang=Q,z.version=X,z.payload=this.payload.length,V.push(z)}if(Z){let{name:B,duration:U}=Z,z=new PB(B,U);z.msgs=this.msgs,z.bytes=F.inBytes+F.outBytes,z.lang=Q,z.version=X,z.payload=this.payload.length,V.push(z)}if(W){let{name:B,duration:U}=W,z=new PB(B,U);z.msgs=this.msgs,z.bytes=F.inBytes+F.outBytes,z.lang=Q,z.version=X,z.payload=this.payload.length,V.push(z)}return V}runCallbacks(){return TF(this,void 0,void 0,function*(){let Y=[];if(this.sub){let Q=(0,$M1.deferred)();Y.push(Q);let X=0;this.nc.subscribe(this.subject,{max:this.msgs,callback:()=>{if(X++,X===1)this.perf.mark("subStart");if(X===this.msgs)this.perf.mark("subStop"),this.perf.measure("sub","subStart","subStop"),Q.resolve()}})}if(this.rep){let Q=(0,$M1.deferred)();Y.push(Q);let X=0;this.nc.subscribe(this.subject,{max:this.msgs,callback:(J,G)=>{if(G.respond(this.payload),X++,X===1)this.perf.mark("repStart");if(X===this.msgs)this.perf.mark("repStop"),this.perf.measure("rep","repStart","repStop"),Q.resolve()}})}if(this.pub){let Q=(()=>TF(this,void 0,void 0,function*(){this.perf.mark("pubStart");for(let X=0;X<this.msgs;X++)this.nc.publish(this.subject,this.payload);yield this.nc.flush(),this.perf.mark("pubStop"),this.perf.measure("pub","pubStart","pubStop")}))();Y.push(Q)}if(this.req){let Q=(()=>TF(this,void 0,void 0,function*(){if(this.asyncRequests){this.perf.mark("reqStart");let X=[];for(let J=0;J<this.msgs;J++)X.push(this.nc.request(this.subject,this.payload,{timeout:20000}));yield Promise.all(X),this.perf.mark("reqStop"),this.perf.measure("req","reqStart","reqStop")}else{this.perf.mark("reqStart");for(let X=0;X<this.msgs;X++)yield this.nc.request(this.subject);this.perf.mark("reqStop"),this.perf.measure("req","reqStart","reqStop")}}))();Y.push(Q)}yield Promise.all(Y)})}runAsync(){return TF(this,void 0,void 0,function*(){let Y=[];if(this.rep){let Q=!1,X=this.nc.subscribe(this.subject,{max:this.msgs}),J=(()=>TF(this,void 0,void 0,function*(){var G,K,W,Z;try{for(var H=!0,$=Lt0(X),F;F=yield $.next(),G=F.done,!G;H=!0){Z=F.value,H=!1;let V=Z;if(!Q)this.perf.mark("repStart"),Q=!0;V.respond(this.payload)}}catch(V){K={error:V}}finally{try{if(!H&&!G&&(W=$.return))yield W.call($)}finally{if(K)throw K.error}}yield this.nc.flush(),this.perf.mark("repStop"),this.perf.measure("rep","repStart","repStop")}))();Y.push(J)}if(this.sub){let Q=!1,X=this.nc.subscribe(this.subject,{max:this.msgs}),J=(()=>TF(this,void 0,void 0,function*(){var G,K,W,Z;try{for(var H=!0,$=Lt0(X),F;F=yield $.next(),G=F.done,!G;H=!0){Z=F.value,H=!1;let V=Z;if(!Q)this.perf.mark("subStart"),Q=!0}}catch(V){K={error:V}}finally{try{if(!H&&!G&&(W=$.return))yield W.call($)}finally{if(K)throw K.error}}this.perf.mark("subStop"),this.perf.measure("sub","subStart","subStop")}))();Y.push(J)}if(this.pub){let Q=(()=>TF(this,void 0,void 0,function*(){this.perf.mark("pubStart");for(let X=0;X<this.msgs;X++)this.nc.publish(this.subject,this.payload);yield this.nc.flush(),this.perf.mark("pubStop"),this.perf.measure("pub","pubStart","pubStop")}))();Y.push(Q)}if(this.req){let Q=(()=>TF(this,void 0,void 0,function*(){if(this.asyncRequests){this.perf.mark("reqStart");let X=[];for(let J=0;J<this.msgs;J++)X.push(this.nc.request(this.subject,this.payload,{timeout:20000}));yield Promise.all(X),this.perf.mark("reqStop"),this.perf.measure("req","reqStart","reqStop")}else{this.perf.mark("reqStart");for(let X=0;X<this.msgs;X++)yield this.nc.request(this.subject);this.perf.mark("reqStop"),this.perf.measure("req","reqStart","reqStop")}}))();Y.push(Q)}yield Promise.all(Y)})}}P7.Bench=wt0;function At0(Y,Q){return`${Pt0(Y/Q)}/sec`}function li4(Y,Q){return`${Math.floor(Y/Q)} msgs/sec`}function Pt0(Y,Q=!1){let X=Q?1000:1024,J=Q?["k","M","G","T","P","E"]:["K","M","G","T","P","E"],G=Q?"iB":"B";if(Y<X)return`${Y.toFixed(2)} ${G}`;let K=parseInt(Math.log(Y)/Math.log(X)+""),W=parseInt(K-1+"");return`${(Y/Math.pow(X,K)).toFixed(2)} ${J[W]}${G}`}function di4(Y){return Y.toString().replace(/\B(?=(\d{3})+(?!\d))/g,",")}});var vL1=j((g1)=>{var pi4=g1&&g1.__createBinding||(Object.create?function(Y,Q,X,J){if(J===void 0)J=X;var G=Object.getOwnPropertyDescriptor(Q,X);if(!G||("get"in G?!Q.__esModule:G.writable||G.configurable))G={enumerable:!0,get:function(){return Q[X]}};Object.defineProperty(Y,J,G)}:function(Y,Q,X,J){if(J===void 0)J=X;Y[J]=Q[X]}),ci4=g1&&g1.__exportStar||function(Y,Q){for(var X in Y)if(X!=="default"&&!Object.prototype.hasOwnProperty.call(Q,X))pi4(Q,Y,X)};Object.defineProperty(g1,"__esModule",{value:!0});g1.parseIP=g1.isIP=g1.TE=g1.TD=g1.Metric=g1.Bench=g1.writeAll=g1.readAll=g1.MAX_SIZE=g1.DenoBuffer=g1.State=g1.Parser=g1.Kind=g1.QueuedIteratorImpl=g1.StringCodec=g1.JSONCodec=g1.usernamePasswordAuthenticator=g1.tokenAuthenticator=g1.nkeyAuthenticator=g1.jwtAuthenticator=g1.credsAuthenticator=g1.RequestOne=g1.checkUnsupportedOption=g1.checkOptions=g1.buildAuthenticator=g1.DataBuffer=g1.MuxSubscription=g1.Heartbeat=g1.MsgHdrsImpl=g1.headers=g1.canonicalMIMEHeaderKey=g1.timeout=g1.render=g1.nanos=g1.millis=g1.extend=g1.delay=g1.deferred=g1.deadline=g1.collect=g1.backoff=g1.ProtocolHandler=g1.INFO=g1.Connect=g1.setTransportFactory=g1.getResolveFn=g1.MsgImpl=g1.nuid=g1.Nuid=g1.NatsConnectionImpl=void 0;g1.Subscriptions=g1.SubscriptionImpl=g1.syncIterator=g1.ServiceVerb=g1.ServiceResponseType=g1.ServiceErrorHeader=g1.ServiceErrorCodeHeader=g1.ServiceError=g1.RequestStrategy=g1.NatsError=g1.Match=g1.isNatsError=g1.Events=g1.ErrorCode=g1.DebugEvents=g1.createInbox=g1.extractProtocolMessage=g1.Empty=g1.parseSemVer=g1.compare=g1.NoopKvCodecs=g1.defaultBucketOpts=g1.Bucket=g1.Base64KeyCodec=g1.TypedSubscription=void 0;var ni4=Nt0();Object.defineProperty(g1,"NatsConnectionImpl",{enumerable:!0,get:function(){return ni4.NatsConnectionImpl}});var Tt0=sH();Object.defineProperty(g1,"Nuid",{enumerable:!0,get:function(){return Tt0.Nuid}});Object.defineProperty(g1,"nuid",{enumerable:!0,get:function(){return Tt0.nuid}});var ii4=TP();Object.defineProperty(g1,"MsgImpl",{enumerable:!0,get:function(){return ii4.MsgImpl}});var Ct0=AP();Object.defineProperty(g1,"getResolveFn",{enumerable:!0,get:function(){return Ct0.getResolveFn}});Object.defineProperty(g1,"setTransportFactory",{enumerable:!0,get:function(){return Ct0.setTransportFactory}});var FM1=Jo();Object.defineProperty(g1,"Connect",{enumerable:!0,get:function(){return FM1.Connect}});Object.defineProperty(g1,"INFO",{enumerable:!0,get:function(){return FM1.INFO}});Object.defineProperty(g1,"ProtocolHandler",{enumerable:!0,get:function(){return FM1.ProtocolHandler}});var K3=UQ();Object.defineProperty(g1,"backoff",{enumerable:!0,get:function(){return K3.backoff}});Object.defineProperty(g1,"collect",{enumerable:!0,get:function(){return K3.collect}});Object.defineProperty(g1,"deadline",{enumerable:!0,get:function(){return K3.deadline}});Object.defineProperty(g1,"deferred",{enumerable:!0,get:function(){return K3.deferred}});Object.defineProperty(g1,"delay",{enumerable:!0,get:function(){return K3.delay}});Object.defineProperty(g1,"extend",{enumerable:!0,get:function(){return K3.extend}});Object.defineProperty(g1,"millis",{enumerable:!0,get:function(){return K3.millis}});Object.defineProperty(g1,"nanos",{enumerable:!0,get:function(){return K3.nanos}});Object.defineProperty(g1,"render",{enumerable:!0,get:function(){return K3.render}});Object.defineProperty(g1,"timeout",{enumerable:!0,get:function(){return K3.timeout}});var VM1=NF();Object.defineProperty(g1,"canonicalMIMEHeaderKey",{enumerable:!0,get:function(){return VM1.canonicalMIMEHeaderKey}});Object.defineProperty(g1,"headers",{enumerable:!0,get:function(){return VM1.headers}});Object.defineProperty(g1,"MsgHdrsImpl",{enumerable:!0,get:function(){return VM1.MsgHdrsImpl}});var ai4=eN1();Object.defineProperty(g1,"Heartbeat",{enumerable:!0,get:function(){return ai4.Heartbeat}});var ri4=tN1();Object.defineProperty(g1,"MuxSubscription",{enumerable:!0,get:function(){return ri4.MuxSubscription}});var oi4=wP();Object.defineProperty(g1,"DataBuffer",{enumerable:!0,get:function(){return oi4.DataBuffer}});var qM1=Qo();Object.defineProperty(g1,"buildAuthenticator",{enumerable:!0,get:function(){return qM1.buildAuthenticator}});Object.defineProperty(g1,"checkOptions",{enumerable:!0,get:function(){return qM1.checkOptions}});Object.defineProperty(g1,"checkUnsupportedOption",{enumerable:!0,get:function(){return qM1.checkUnsupportedOption}});var si4=Zo();Object.defineProperty(g1,"RequestOne",{enumerable:!0,get:function(){return si4.RequestOne}});var cv=zL1();Object.defineProperty(g1,"credsAuthenticator",{enumerable:!0,get:function(){return cv.credsAuthenticator}});Object.defineProperty(g1,"jwtAuthenticator",{enumerable:!0,get:function(){return cv.jwtAuthenticator}});Object.defineProperty(g1,"nkeyAuthenticator",{enumerable:!0,get:function(){return cv.nkeyAuthenticator}});Object.defineProperty(g1,"tokenAuthenticator",{enumerable:!0,get:function(){return cv.tokenAuthenticator}});Object.defineProperty(g1,"usernamePasswordAuthenticator",{enumerable:!0,get:function(){return cv.usernamePasswordAuthenticator}});var Rt0=eH();Object.defineProperty(g1,"JSONCodec",{enumerable:!0,get:function(){return Rt0.JSONCodec}});Object.defineProperty(g1,"StringCodec",{enumerable:!0,get:function(){return Rt0.StringCodec}});ci4(BL1(),g1);var ti4=hW();Object.defineProperty(g1,"QueuedIteratorImpl",{enumerable:!0,get:function(){return ti4.QueuedIteratorImpl}});var BM1=WL1();Object.defineProperty(g1,"Kind",{enumerable:!0,get:function(){return BM1.Kind}});Object.defineProperty(g1,"Parser",{enumerable:!0,get:function(){return BM1.Parser}});Object.defineProperty(g1,"State",{enumerable:!0,get:function(){return BM1.State}});var yo=XL1();Object.defineProperty(g1,"DenoBuffer",{enumerable:!0,get:function(){return yo.DenoBuffer}});Object.defineProperty(g1,"MAX_SIZE",{enumerable:!0,get:function(){return yo.MAX_SIZE}});Object.defineProperty(g1,"readAll",{enumerable:!0,get:function(){return yo.readAll}});Object.defineProperty(g1,"writeAll",{enumerable:!0,get:function(){return yo.writeAll}});var It0=Et0();Object.defineProperty(g1,"Bench",{enumerable:!0,get:function(){return It0.Bench}});Object.defineProperty(g1,"Metric",{enumerable:!0,get:function(){return It0.Metric}});var jt0=BQ();Object.defineProperty(g1,"TD",{enumerable:!0,get:function(){return jt0.TD}});Object.defineProperty(g1,"TE",{enumerable:!0,get:function(){return jt0.TE}});var St0=cN1();Object.defineProperty(g1,"isIP",{enumerable:!0,get:function(){return St0.isIP}});Object.defineProperty(g1,"parseIP",{enumerable:!0,get:function(){return St0.parseIP}});var ei4=bL1();Object.defineProperty(g1,"TypedSubscription",{enumerable:!0,get:function(){return ei4.TypedSubscription}});var fo=xv();Object.defineProperty(g1,"Base64KeyCodec",{enumerable:!0,get:function(){return fo.Base64KeyCodec}});Object.defineProperty(g1,"Bucket",{enumerable:!0,get:function(){return fo.Bucket}});Object.defineProperty(g1,"defaultBucketOpts",{enumerable:!0,get:function(){return fo.defaultBucketOpts}});Object.defineProperty(g1,"NoopKvCodecs",{enumerable:!0,get:function(){return fo.NoopKvCodecs}});var kt0=LF();Object.defineProperty(g1,"compare",{enumerable:!0,get:function(){return kt0.compare}});Object.defineProperty(g1,"parseSemVer",{enumerable:!0,get:function(){return kt0.parseSemVer}});var Ya4=kP();Object.defineProperty(g1,"Empty",{enumerable:!0,get:function(){return Ya4.Empty}});var Qa4=AP();Object.defineProperty(g1,"extractProtocolMessage",{enumerable:!0,get:function(){return Qa4.extractProtocolMessage}});var SG=E9();Object.defineProperty(g1,"createInbox",{enumerable:!0,get:function(){return SG.createInbox}});Object.defineProperty(g1,"DebugEvents",{enumerable:!0,get:function(){return SG.DebugEvents}});Object.defineProperty(g1,"ErrorCode",{enumerable:!0,get:function(){return SG.ErrorCode}});Object.defineProperty(g1,"Events",{enumerable:!0,get:function(){return SG.Events}});Object.defineProperty(g1,"isNatsError",{enumerable:!0,get:function(){return SG.isNatsError}});Object.defineProperty(g1,"Match",{enumerable:!0,get:function(){return SG.Match}});Object.defineProperty(g1,"NatsError",{enumerable:!0,get:function(){return SG.NatsError}});Object.defineProperty(g1,"RequestStrategy",{enumerable:!0,get:function(){return SG.RequestStrategy}});Object.defineProperty(g1,"ServiceError",{enumerable:!0,get:function(){return SG.ServiceError}});Object.defineProperty(g1,"ServiceErrorCodeHeader",{enumerable:!0,get:function(){return SG.ServiceErrorCodeHeader}});Object.defineProperty(g1,"ServiceErrorHeader",{enumerable:!0,get:function(){return SG.ServiceErrorHeader}});Object.defineProperty(g1,"ServiceResponseType",{enumerable:!0,get:function(){return SG.ServiceResponseType}});Object.defineProperty(g1,"ServiceVerb",{enumerable:!0,get:function(){return SG.ServiceVerb}});Object.defineProperty(g1,"syncIterator",{enumerable:!0,get:function(){return SG.syncIterator}});var vt0=Jo();Object.defineProperty(g1,"SubscriptionImpl",{enumerable:!0,get:function(){return vt0.SubscriptionImpl}});Object.defineProperty(g1,"Subscriptions",{enumerable:!0,get:function(){return vt0.Subscriptions}})});var bo=j((zQ)=>{Object.defineProperty(zQ,"__esModule",{value:!0});zQ.ConsumerEvents=zQ.ConsumerDebugEvents=zQ.StoreCompression=zQ.StorageType=zQ.RetentionPolicy=zQ.ReplayPolicy=zQ.DiscardPolicy=zQ.DeliverPolicy=zQ.AckPolicy=zQ.RepublishHeaders=zQ.KvWatchInclude=zQ.JsHeaders=zQ.isConsumerOptsBuilder=zQ.DirectMsgHeaders=zQ.consumerOpts=zQ.AdvisoryKind=zQ.isHeartbeatMsg=zQ.isFlowControlMsg=zQ.checkJsError=void 0;var UM1=X3();Object.defineProperty(zQ,"checkJsError",{enumerable:!0,get:function(){return UM1.checkJsError}});Object.defineProperty(zQ,"isFlowControlMsg",{enumerable:!0,get:function(){return UM1.isFlowControlMsg}});Object.defineProperty(zQ,"isHeartbeatMsg",{enumerable:!0,get:function(){return UM1.isHeartbeatMsg}});var yO=wF();Object.defineProperty(zQ,"AdvisoryKind",{enumerable:!0,get:function(){return yO.AdvisoryKind}});Object.defineProperty(zQ,"consumerOpts",{enumerable:!0,get:function(){return yO.consumerOpts}});Object.defineProperty(zQ,"DirectMsgHeaders",{enumerable:!0,get:function(){return yO.DirectMsgHeaders}});Object.defineProperty(zQ,"isConsumerOptsBuilder",{enumerable:!0,get:function(){return yO.isConsumerOptsBuilder}});Object.defineProperty(zQ,"JsHeaders",{enumerable:!0,get:function(){return yO.JsHeaders}});Object.defineProperty(zQ,"KvWatchInclude",{enumerable:!0,get:function(){return yO.KvWatchInclude}});Object.defineProperty(zQ,"RepublishHeaders",{enumerable:!0,get:function(){return yO.RepublishHeaders}});var fO=OB();Object.defineProperty(zQ,"AckPolicy",{enumerable:!0,get:function(){return fO.AckPolicy}});Object.defineProperty(zQ,"DeliverPolicy",{enumerable:!0,get:function(){return fO.DeliverPolicy}});Object.defineProperty(zQ,"DiscardPolicy",{enumerable:!0,get:function(){return fO.DiscardPolicy}});Object.defineProperty(zQ,"ReplayPolicy",{enumerable:!0,get:function(){return fO.ReplayPolicy}});Object.defineProperty(zQ,"RetentionPolicy",{enumerable:!0,get:function(){return fO.RetentionPolicy}});Object.defineProperty(zQ,"StorageType",{enumerable:!0,get:function(){return fO.StorageType}});Object.defineProperty(zQ,"StoreCompression",{enumerable:!0,get:function(){return fO.StoreCompression}});var _t0=tL1();Object.defineProperty(zQ,"ConsumerDebugEvents",{enumerable:!0,get:function(){return _t0.ConsumerDebugEvents}});Object.defineProperty(zQ,"ConsumerEvents",{enumerable:!0,get:function(){return _t0.ConsumerEvents}})});var zM1=j((EB)=>{var Ja4=EB&&EB.__createBinding||(Object.create?function(Y,Q,X,J){if(J===void 0)J=X;var G=Object.getOwnPropertyDescriptor(Q,X);if(!G||("get"in G?!Q.__esModule:G.writable||G.configurable))G={enumerable:!0,get:function(){return Q[X]}};Object.defineProperty(Y,J,G)}:function(Y,Q,X,J){if(J===void 0)J=X;Y[J]=Q[X]}),yt0=EB&&EB.__exportStar||function(Y,Q){for(var X in Y)if(X!=="default"&&!Object.prototype.hasOwnProperty.call(Q,X))Ja4(Q,Y,X)};Object.defineProperty(EB,"__esModule",{value:!0});yt0(vL1(),EB);yt0(bo(),EB)});var xt0=j((ZK)=>{var uP=ZK&&ZK.__awaiter||function(Y,Q,X,J){function G(K){return K instanceof X?K:new X(function(W){W(K)})}return new(X||(X=Promise))(function(K,W){function Z(F){try{$(J.next(F))}catch(V){W(V)}}function H(F){try{$(J.throw(F))}catch(V){W(V)}}function $(F){F.done?K(F.value):G(F.value).then(Z,H)}$((J=J.apply(Y,Q||[])).next())})},nv=ZK&&ZK.__await||function(Y){return this instanceof nv?(this.v=Y,this):new nv(Y)},Ga4=ZK&&ZK.__asyncGenerator||function(Y,Q,X){if(!Symbol.asyncIterator)throw TypeError("Symbol.asyncIterator is not defined.");var J=X.apply(Y,Q||[]),G,K=[];return G=Object.create((typeof AsyncIterator==="function"?AsyncIterator:Object).prototype),Z("next"),Z("throw"),Z("return",W),G[Symbol.asyncIterator]=function(){return this},G;function W(U){return function(z){return Promise.resolve(z).then(U,V)}}function Z(U,z){if(J[U]){if(G[U]=function(D){return new Promise(function(L,w){K.push([U,D,L,w])>1||H(U,D)})},z)G[U]=z(G[U])}}function H(U,z){try{$(J[U](z))}catch(D){B(K[0][3],D)}}function $(U){U.value instanceof nv?Promise.resolve(U.value.v).then(F,V):B(K[0][2],U)}function F(U){H("next",U)}function V(U){H("throw",U)}function B(U,z){if(U(z),K.shift(),K.length)H(K[0][0],K[0][1])}};Object.defineProperty(ZK,"__esModule",{value:!0});ZK.NodeTransport=void 0;ZK.nodeResolveHost=Va4;var c8=zM1(),Wa4=E1("net"),ft0=UQ(),DM1=E1("tls"),{resolve:Za4}=E1("path"),{readFile:Ka4,existsSync:Ha4}=E1("fs"),bt0=E1("dns"),$a4="2.29.3",Fa4="nats.js";class ht0{constructor(){this.yields=[],this.signal=(0,c8.deferred)(),this.closedNotification=(0,c8.deferred)(),this.connected=!1,this.tlsName="",this.done=!1,this.lang=Fa4,this.version=$a4}connect(Y,Q){return uP(this,void 0,void 0,function*(){this.tlsName=Y.tlsName,this.options=Q;let{tls:X}=this.options,{handshakeFirst:J}=X||{};try{if(J===!0)this.socket=yield this.tlsFirst(Y);else this.socket=yield this.dial(Y);let G=yield this.peekInfo();(0,c8.checkOptions)(G,Q);let{tls_required:K,tls_available:W}=G,Z=W===!0&&Q.tls!==null;if(!J&&(K||Z))this.socket=yield this.startTLS();if(K&&this.socket.encrypted!==!0)throw new c8.NatsError("tls",c8.ErrorCode.ServerOptionNotAvailable);return this.connected=!0,this.setupHandlers(),this.signal.resolve(),Promise.resolve()}catch(G){if(!G)G=c8.NatsError.errorForCode(c8.ErrorCode.ConnectionRefused,Error("node provided an undefined error!"));let{code:K}=G,W=K==="ECONNREFUSED"?c8.NatsError.errorForCode(c8.ErrorCode.ConnectionRefused,G):G;if(this.socket)this.socket.destroy();throw W}})}dial(Y){let Q=(0,c8.deferred)(),X,J=(0,Wa4.createConnection)(Y.port,Y.hostname,()=>{Q.resolve(J),J.removeAllListeners()});return J.on("error",(G)=>{X=G}),J.on("close",()=>{J.removeAllListeners(),Q.reject(X)}),J.setNoDelay(!0),Q}get isClosed(){return this.done}close(Y){return this._closed(Y,!1)}peekInfo(){let Y=(0,c8.deferred)(),Q;return this.socket.on("data",(X)=>{this.yields.push(X);let J=c8.DataBuffer.concat(...this.yields),G=(0,c8.extractProtocolMessage)(J);if(G!=="")try{let K=c8.INFO.exec(G);if(!K)throw Error("unexpected response from server");let W=JSON.parse(K[1]);Y.resolve(W)}catch(K){Y.reject(K)}finally{this.socket.removeAllListeners()}}),this.socket.on("error",(X)=>{Q=X}),this.socket.on("close",()=>{this.socket.removeAllListeners(),Y.reject(Q)}),Y}loadFile(Y){if(!Y)return Promise.resolve();let Q=(0,c8.deferred)();try{if(Y=Za4(Y),!Ha4(Y))Q.reject(Error(`${Y} doesn't exist`));Ka4(Y,(X,J)=>{if(X)return Q.reject(X);Q.resolve(J)})}catch(X){Q.reject(X)}return Q}loadClientCerts(){return uP(this,void 0,void 0,function*(){let Y={},{certFile:Q,cert:X,caFile:J,ca:G,keyFile:K,key:W}=this.options.tls;try{if(Q){let Z=yield this.loadFile(Q);if(Z)Y.cert=Z}else if(X)Y.cert=X;if(K){let Z=yield this.loadFile(K);if(Z)Y.key=Z}else if(W)Y.key=W;if(J){let Z=yield this.loadFile(J);if(Z)Y.ca=[Z]}else if(G)Y.ca=G;return Promise.resolve(Y)}catch(Z){return Promise.reject(Z)}})}tlsFirst(Y){return uP(this,void 0,void 0,function*(){let Q,X={servername:this.tlsName,rejectUnauthorized:!0};if(this.socket)X.socket=this.socket;if(typeof this.options.tls==="object")try{let G=(yield this.loadClientCerts())||{};X=(0,ft0.extend)(X,this.options.tls,G)}catch(G){return Promise.reject(new c8.NatsError(G.message,c8.ErrorCode.Tls,G))}let J=(0,c8.deferred)();try{let G=(0,DM1.connect)(Y.port,Y.hostname,X,()=>{G.removeAllListeners(),J.resolve(G)});G.on("error",(K)=>{Q=K}),G.on("secureConnect",()=>{if(X.rejectUnauthorized===!1)return;if(!G.authorized)throw G.authorizationError}),G.on("close",()=>{J.reject(Q),G.removeAllListeners()}),G.setNoDelay(!0)}catch(G){J.reject(c8.NatsError.errorForCode(c8.ErrorCode.Tls,G))}return J})}startTLS(){return uP(this,void 0,void 0,function*(){let Y,Q={socket:this.socket,servername:this.tlsName,rejectUnauthorized:!0};if(typeof this.options.tls==="object")try{let J=(yield this.loadClientCerts())||{};Q=(0,ft0.extend)(Q,this.options.tls,J)}catch(J){return Promise.reject(new c8.NatsError(J.message,c8.ErrorCode.Tls,J))}let X=(0,c8.deferred)();try{let J=(0,DM1.connect)(Q,()=>{J.removeAllListeners(),X.resolve(J)});J.on("error",(G)=>{Y=G}),J.on("secureConnect",()=>{if(Q.rejectUnauthorized===!1)return;if(!J.authorized)throw J.authorizationError}),J.on("close",()=>{X.reject(Y),J.removeAllListeners()})}catch(J){X.reject(c8.NatsError.errorForCode(c8.ErrorCode.Tls,J))}return X})}setupHandlers(){let Y;this.socket.on("data",(Q)=>{return this.yields.push(Q),this.signal.resolve()}),this.socket.on("error",(Q)=>{Y=Q}),this.socket.on("end",()=>{var Q,X;if((Q=this.socket)===null||Q===void 0?void 0:Q.destroyed)return;(X=this.socket)===null||X===void 0||X.write(new Uint8Array(0),()=>{var J;(J=this.socket)===null||J===void 0||J.end()})}),this.socket.on("close",()=>{this._closed(Y,!1)})}[Symbol.asyncIterator](){return this.iterate()}iterate(){return Ga4(this,arguments,function*(){let Q=this.options.debug;while(!0){if(this.yields.length===0)yield nv(this.signal);let X=this.yields;this.yields=[];for(let J=0;J<X.length;J++){if(Q)console.info(`> ${(0,c8.render)(X[J])}`);yield yield nv(X[J])}if(this.done)break;else if(this.yields.length===0)X.length=0,this.yields=X,this.signal=(0,c8.deferred)()}})}discard(){}disconnect(){this._closed(void 0,!0).then().catch()}isEncrypted(){return this.socket instanceof DM1.TLSSocket}_send(Y){if(this.isClosed||this.socket===void 0)return Promise.resolve();if(this.options.debug)console.info(`< ${(0,c8.render)(Y)}`);let Q=(0,c8.deferred)();try{this.socket.write(Y,(X)=>{if(X){if(this.options.debug)console.error(`!!! ${(0,c8.render)(Y)}: ${X}`);return Q.reject(X)}return Q.resolve()})}catch(X){if(this.options.debug)console.error(`!!! ${(0,c8.render)(Y)}: ${X}`);Q.reject(X)}return Q}send(Y){this._send(Y).catch((X)=>{})}_closed(Y){return uP(this,arguments,void 0,function*(Q,X=!0){if(!this.connected)return;if(this.done)return;if(this.closeError=Q,!Q&&this.socket&&X)try{yield this._send(new TextEncoder().encode(""))}catch(J){if(this.options.debug)console.log("transport close terminated with an error",J)}try{if(this.socket)this.socket.removeAllListeners(),this.socket.destroy(),this.socket=void 0}catch(J){console.log(J)}this.done=!0,this.closedNotification.resolve(this.closeError)})}closed(){return this.closedNotification}}ZK.NodeTransport=ht0;function Va4(Y){return uP(this,void 0,void 0,function*(){let Q=(0,c8.deferred)(),X=(0,c8.deferred)();bt0.resolve4(Y,(W,Z)=>{if(W)Q.resolve(W);else Q.resolve(Z)}),bt0.resolve6(Y,(W,Z)=>{if(W)X.resolve(W);else X.resolve(Z)});let J=[],G=yield Q;if(Array.isArray(G))J.push(...G);let K=yield X;if(Array.isArray(K))J.push(...K);if(J.length===0)J.push(Y);return J})}});var lt0=j((mt0)=>{Object.defineProperty(mt0,"__esModule",{value:!0});mt0.connect=qa4;var gt0=xt0(),ut0=zM1();function qa4(Y={}){return(0,ut0.setTransportFactory)({factory:()=>{return new gt0.NodeTransport},dnsResolveFn:gt0.nodeResolveHost}),ut0.NatsConnectionImpl.connect(Y)}});var dt0=j((SQ)=>{Object.defineProperty(SQ,"__esModule",{value:!0});SQ.consumerOpts=SQ.StoreCompression=SQ.StorageType=SQ.RetentionPolicy=SQ.RepublishHeaders=SQ.ReplayPolicy=SQ.KvWatchInclude=SQ.JsHeaders=SQ.DiscardPolicy=SQ.DirectMsgHeaders=SQ.DeliverPolicy=SQ.ConsumerEvents=SQ.ConsumerDebugEvents=SQ.AdvisoryKind=SQ.AckPolicy=SQ.isHeartbeatMsg=SQ.isFlowControlMsg=SQ.checkJsError=void 0;var OM1=bo();Object.defineProperty(SQ,"checkJsError",{enumerable:!0,get:function(){return OM1.checkJsError}});Object.defineProperty(SQ,"isFlowControlMsg",{enumerable:!0,get:function(){return OM1.isFlowControlMsg}});Object.defineProperty(SQ,"isHeartbeatMsg",{enumerable:!0,get:function(){return OM1.isHeartbeatMsg}});var kG=bo();Object.defineProperty(SQ,"AckPolicy",{enumerable:!0,get:function(){return kG.AckPolicy}});Object.defineProperty(SQ,"AdvisoryKind",{enumerable:!0,get:function(){return kG.AdvisoryKind}});Object.defineProperty(SQ,"ConsumerDebugEvents",{enumerable:!0,get:function(){return kG.ConsumerDebugEvents}});Object.defineProperty(SQ,"ConsumerEvents",{enumerable:!0,get:function(){return kG.ConsumerEvents}});Object.defineProperty(SQ,"DeliverPolicy",{enumerable:!0,get:function(){return kG.DeliverPolicy}});Object.defineProperty(SQ,"DirectMsgHeaders",{enumerable:!0,get:function(){return kG.DirectMsgHeaders}});Object.defineProperty(SQ,"DiscardPolicy",{enumerable:!0,get:function(){return kG.DiscardPolicy}});Object.defineProperty(SQ,"JsHeaders",{enumerable:!0,get:function(){return kG.JsHeaders}});Object.defineProperty(SQ,"KvWatchInclude",{enumerable:!0,get:function(){return kG.KvWatchInclude}});Object.defineProperty(SQ,"ReplayPolicy",{enumerable:!0,get:function(){return kG.ReplayPolicy}});Object.defineProperty(SQ,"RepublishHeaders",{enumerable:!0,get:function(){return kG.RepublishHeaders}});Object.defineProperty(SQ,"RetentionPolicy",{enumerable:!0,get:function(){return kG.RetentionPolicy}});Object.defineProperty(SQ,"StorageType",{enumerable:!0,get:function(){return kG.StorageType}});Object.defineProperty(SQ,"StoreCompression",{enumerable:!0,get:function(){return kG.StoreCompression}});var Ua4=wF();Object.defineProperty(SQ,"consumerOpts",{enumerable:!0,get:function(){return Ua4.consumerOpts}})});var NM1=j((H3)=>{var Da4=H3&&H3.__createBinding||(Object.create?function(Y,Q,X,J){if(J===void 0)J=X;var G=Object.getOwnPropertyDescriptor(Q,X);if(!G||("get"in G?!Q.__esModule:G.writable||G.configurable))G={enumerable:!0,get:function(){return Q[X]}};Object.defineProperty(Y,J,G)}:function(Y,Q,X,J){if(J===void 0)J=X;Y[J]=Q[X]}),pt0=H3&&H3.__exportStar||function(Y,Q){for(var X in Y)if(X!=="default"&&!Object.prototype.hasOwnProperty.call(Q,X))Da4(Q,Y,X)};Object.defineProperty(H3,"__esModule",{value:!0});H3.connect=void 0;if(typeof TextEncoder>"u"){let{TextEncoder:Y,TextDecoder:Q}=E1("util");global.TextEncoder=Y,global.TextDecoder=Q}if(typeof globalThis.crypto>"u"){let Y=E1("crypto");global.crypto=Y.webcrypto}if(typeof globalThis.ReadableStream>"u"){let Y=process.versions.node.split(".");if(parseInt(Y[0])>=16){let X=E1("stream/web");global.ReadableStream=X.ReadableStream}}var Oa4=lt0();Object.defineProperty(H3,"connect",{enumerable:!0,get:function(){return Oa4.connect}});pt0(kL1(),H3);pt0(dt0(),H3)});BN();var eQ=class extends Error{res;status;constructor(Y=500,Q){super(Q?.message,{cause:Q?.cause});this.res=Q?.res,this.status=Y}getResponse(){if(this.res)return new Response(this.res.body,{status:this.status,headers:this.res.headers});return new Response(this.message,{status:this.status})}};var kJ0=["connection","keep-alive","proxy-authenticate","proxy-authorization","te","trailer","transfer-encoding","upgrade"],lg6=/^[!#$%&'*+\-.0-9A-Z^_`a-z|~]+$/,dg6=(Y,Q)=>{if(!Y)return{};let X=new Headers(Y.headers);if(Q){let J=X.get("connection");if(J){let G=J.split(",").map((W)=>W.trim()),K=G.filter((W)=>!lg6.test(W));if(K.length>0)throw new eQ(400,{message:`Invalid Connection header value: ${K.join(", ")}`});G.forEach((W)=>{X.delete(W)})}}return kJ0.forEach((J)=>{X.delete(J)}),{method:Y.method,body:Y.body,duplex:Y.body?"half":void 0,headers:X,signal:Y.signal}},pg6=(Y)=>{if(!Y.headers||Array.isArray(Y.headers)||Y.headers instanceof Headers)return Y;let Q=new Headers;for(let[X,J]of Object.entries(Y.headers))if(J==null)Q.delete(X);else Q.set(X,J);return Y.headers=Q,Y},vJ0=async(Y,Q)=>{let{raw:X,customFetch:J,strictConnectionProcessing:G=!1,...K}=Q instanceof Request?{raw:Q}:Q??{},W=new Request(Y,{...dg6(X,G),...pg6(K)});W.headers.delete("accept-encoding");let Z=await(J||fetch)(W),H=new Headers(Z.headers);if(kJ0.forEach(($)=>{H.delete($)}),H.has("content-encoding"))H.delete("content-encoding"),H.delete("content-length");return new Response(Z.body,{status:Z.status,statusText:Z.statusText,headers:H})};var _J0=(Y)=>(Q)=>{let X=new URL(Q.req.raw.url),J=new URL(Y);return J.pathname=X.pathname,J.search=X.search,vJ0(J,{raw:Q.req.raw,headers:{...Q.req.raw.headers}})};import{resolve as r2,dirname as cg6,join as ng6,extname as ig6,basename as ag6,sep as yJ0}from"path";function rg6(Y,Q){if(Y===Q||ag6(Y)==="index.html")return{"Cache-Control":"no-cache"};if(Y.includes(`${yJ0}assets${yJ0}`))return{"Cache-Control":"public, max-age=31536000, immutable"};return{}}var og6=`http://localhost:${process.env.VITE_PORT||"4000"}`,sg6="./dist/client";function tg6(Y,Q){let X=r2(Q),J=r2(Y);return J===X||J.startsWith(X+"/")}function eg6({requestPath:Y,clientDir:Q}){let X=Y.startsWith("/")?Y.slice(1):Y,J=r2(Q,X);if(!tg6(J,Q))return null;return J}function fJ0(Y,Q="../client"){let X=new URL(Y),J=cg6(X.pathname);return r2(J,Q)}function bJ0(Y={}){let{env:Q="production",devServerUrl:X=og6,clientDir:J=sg6,isServerPath:G=()=>!1}=Y;if(Q==="development"){let K=_J0(X);return async function(Z){let H=new URL(Z.url);if(G(H.pathname))return null;let $={req:{raw:Z,url:Z.url}};return K($)}}return async function(W){if(W.method!=="GET")return null;let Z=new URL(W.url),H;try{H=decodeURIComponent(Z.pathname)}catch{return null}if(G(H))return null;let $=eg6({requestPath:H,clientDir:J});if(!$)return null;let F=ng6($,"index.html"),V=r2(J,"index.html"),B=W.headers.get("accept"),z=B?.includes("text/html")||B?.includes("*/*")&&["",".html"].includes(ig6($))?[F,V]:[];for(let D of[$,...z])try{let L=Bun.file(D);if(await L.exists())return new Response(L,{headers:rg6(D,V)})}catch{}if(H.includes("/assets/"))return new Response("Not Found",{status:404,headers:{"Cache-Control":"no-store"}});return null}}var hJ0="https://api.decocms.com/mcp/registry";function xJ0(Y){if(!Y)return!1;try{return new URL(Y).host==="api.decocms.com"&&Y!=="https://api.decocms.com/mcp/registry"}catch{return!1}}KY();var at0=I4(Se(),1);var k71=(Y,Q,X)=>{return(J,G)=>{let K=-1;return W(0);async function W(Z){if(Z<=K)throw Error("next() called multiple times");K=Z;let H,$=!1,F;if(Y[Z])F=Y[Z][0][0],J.req.routeIndex=Z;else F=Z===Y.length&&G||void 0;if(F)try{H=await F(J,()=>W(Z+1))}catch(V){if(V instanceof Error&&Q)J.error=V,H=await Q(V,J),$=!0;else throw V}else if(J.finalized===!1&&X)H=await X(J);if(H&&(J.finalized===!1||$))J.res=H;return J}}};var t$0=Symbol();var e$0=async(Y,Q=Object.create(null))=>{let{all:X=!1,dot:J=!1}=Q,K=(Y instanceof om?Y.raw.headers:Y.headers).get("Content-Type");if(K?.startsWith("multipart/form-data")||K?.startsWith("application/x-www-form-urlencoded"))return q04(Y,{all:X,dot:J});return{}};async function q04(Y,Q){let X=await Y.formData();if(X)return B04(X,Q);return{}}function B04(Y,Q){let X=Object.create(null);if(Y.forEach((J,G)=>{if(!(Q.all||G.endsWith("[]")))X[G]=J;else U04(X,G,J)}),Q.dot)Object.entries(X).forEach(([J,G])=>{if(J.includes("."))z04(X,J,G),delete X[J]});return X}var U04=(Y,Q,X)=>{if(Y[Q]!==void 0)if(Array.isArray(Y[Q]))Y[Q].push(X);else Y[Q]=[Y[Q],X];else if(!Q.endsWith("[]"))Y[Q]=X;else Y[Q]=[X]},z04=(Y,Q,X)=>{let J=Y,G=Q.split(".");G.forEach((K,W)=>{if(W===G.length-1)J[K]=X;else{if(!J[K]||typeof J[K]!=="object"||Array.isArray(J[K])||J[K]instanceof File)J[K]=Object.create(null);J=J[K]}})};var _71=(Y)=>{let Q=Y.split("/");if(Q[0]==="")Q.shift();return Q},YF0=(Y)=>{let{groups:Q,path:X}=D04(Y),J=_71(X);return O04(J,Q)},D04=(Y)=>{let Q=[];return Y=Y.replace(/\{[^}]+\}/g,(X,J)=>{let G=`@${J}`;return Q.push([G,X]),G}),{groups:Q,path:Y}},O04=(Y,Q)=>{for(let X=Q.length-1;X>=0;X--){let[J]=Q[X];for(let G=Y.length-1;G>=0;G--)if(Y[G].includes(J)){Y[G]=Y[G].replace(J,Q[X][1]);break}}return Y},sm={},QF0=(Y,Q)=>{if(Y==="*")return"*";let X=Y.match(/^\:([^\{\}]+)(?:\{(.+)\})?$/);if(X){let J=`${Y}#${Q}`;if(!sm[J])if(X[2])sm[J]=Q&&Q[0]!==":"&&Q[0]!=="*"?[J,X[1],new RegExp(`^${X[2]}(?=/${Q})`)]:[Y,X[1],new RegExp(`^${X[2]}$`)];else sm[J]=[Y,X[1],!0];return sm[J]}return null},OM=(Y,Q)=>{try{return Q(Y)}catch{return Y.replace(/(?:%[0-9A-Fa-f]{2})+/g,(X)=>{try{return Q(X)}catch{return X}})}},N04=(Y)=>OM(Y,decodeURI),y71=(Y)=>{let Q=Y.url,X=Q.indexOf("/",Q.indexOf(":")+4),J=X;for(;J<Q.length;J++){let G=Q.charCodeAt(J);if(G===37){let K=Q.indexOf("?",J),W=Q.indexOf("#",J),Z=K===-1?W===-1?void 0:W:W===-1?K:Math.min(K,W),H=Q.slice(X,Z);return N04(H.includes("%25")?H.replace(/%25/g,"%2525"):H)}else if(G===63||G===35)break}return Q.slice(X,J)};var XF0=(Y)=>{let Q=y71(Y);return Q.length>1&&Q.at(-1)==="/"?Q.slice(0,-1):Q},Az=(Y,Q,...X)=>{if(X.length)Q=Az(Q,...X);return`${Y?.[0]==="/"?"":"/"}${Y}${Q==="/"?"":`${Y?.at(-1)==="/"?"":"/"}${Q?.[0]==="/"?Q.slice(1):Q}`}`},tm=(Y)=>{if(Y.charCodeAt(Y.length-1)!==63||!Y.includes(":"))return null;let Q=Y.split("/"),X=[],J="";return Q.forEach((G)=>{if(G!==""&&!/\:/.test(G))J+="/"+G;else if(/\:/.test(G))if(/\?/.test(G)){if(X.length===0&&J==="")X.push("/");else X.push(J);let K=G.replace("?","");J+="/"+K,X.push(J)}else J+="/"+G}),X.filter((G,K,W)=>W.indexOf(G)===K)},v71=(Y)=>{if(!/[%+]/.test(Y))return Y;if(Y.indexOf("+")!==-1)Y=Y.replace(/\+/g," ");return Y.indexOf("%")!==-1?OM(Y,SR):Y},JF0=(Y,Q,X)=>{let J;if(!X&&Q&&!/[%+]/.test(Q)){let W=Y.indexOf("?",8);if(W===-1)return;if(!Y.startsWith(Q,W+1))W=Y.indexOf(`&${Q}`,W+1);while(W!==-1){let Z=Y.charCodeAt(W+Q.length+1);if(Z===61){let H=W+Q.length+2,$=Y.indexOf("&",H);return v71(Y.slice(H,$===-1?void 0:$))}else if(Z==38||isNaN(Z))return"";W=Y.indexOf(`&${Q}`,W+1)}if(J=/[%+]/.test(Y),!J)return}let G={};J??=/[%+]/.test(Y);let K=Y.indexOf("?",8);while(K!==-1){let W=Y.indexOf("&",K+1),Z=Y.indexOf("=",K);if(Z>W&&W!==-1)Z=-1;let H=Y.slice(K+1,Z===-1?W===-1?void 0:W:Z);if(J)H=v71(H);if(K=W,H==="")continue;let $;if(Z===-1)$="";else if($=Y.slice(Z+1,W===-1?void 0:W),J)$=v71($);if(X){if(!(G[H]&&Array.isArray(G[H])))G[H]=[];G[H].push($)}else G[H]??=$}return Q?G[Q]:G},GF0=JF0,WF0=(Y,Q)=>{return JF0(Y,Q,!0)},SR=decodeURIComponent;var ZF0=(Y)=>OM(Y,SR),om=class{raw;#Y;#Q;routeIndex=0;path;bodyCache={};constructor(Y,Q="/",X=[[]]){this.raw=Y,this.path=Q,this.#Q=X,this.#Y={}}param(Y){return Y?this.#X(Y):this.#J()}#X(Y){let Q=this.#Q[0][this.routeIndex][1][Y],X=this.#W(Q);return X&&/\%/.test(X)?ZF0(X):X}#J(){let Y={},Q=Object.keys(this.#Q[0][this.routeIndex][1]);for(let X of Q){let J=this.#W(this.#Q[0][this.routeIndex][1][X]);if(J!==void 0)Y[X]=/\%/.test(J)?ZF0(J):J}return Y}#W(Y){return this.#Q[1]?this.#Q[1][Y]:Y}query(Y){return GF0(this.url,Y)}queries(Y){return WF0(this.url,Y)}header(Y){if(Y)return this.raw.headers.get(Y)??void 0;let Q={};return this.raw.headers.forEach((X,J)=>{Q[J]=X}),Q}async parseBody(Y){return this.bodyCache.parsedBody??=await e$0(this,Y)}#G=(Y)=>{let{bodyCache:Q,raw:X}=this,J=Q[Y];if(J)return J;let G=Object.keys(Q)[0];if(G)return Q[G].then((K)=>{if(G==="json")K=JSON.stringify(K);return new Response(K)[Y]()});return Q[Y]=X[Y]()};json(){return this.#G("text").then((Y)=>JSON.parse(Y))}text(){return this.#G("text")}arrayBuffer(){return this.#G("arrayBuffer")}blob(){return this.#G("blob")}formData(){return this.#G("formData")}addValidatedData(Y,Q){this.#Y[Y]=Q}valid(Y){return this.#Y[Y]}get url(){return this.raw.url}get method(){return this.raw.method}get[t$0](){return this.#Q}get matchedRoutes(){return this.#Q[0].map(([[,Y]])=>Y)}get routePath(){return this.#Q[0].map(([[,Y]])=>Y)[this.routeIndex].path}};var em={Stringify:1,BeforeStream:2,Stream:3},L04=(Y,Q)=>{let X=new String(Y);return X.isEscaped=!0,X.callbacks=Q,X};var kR=async(Y,Q,X,J,G)=>{if(typeof Y==="object"&&!(Y instanceof String)){if(!(Y instanceof Promise))Y=Y.toString();if(Y instanceof Promise)Y=await Y}let K=Y.callbacks;if(!K?.length)return Promise.resolve(Y);if(G)G[0]+=Y;else G=[Y];let W=Promise.all(K.map((Z)=>Z({phase:Q,buffer:G,context:J}))).then((Z)=>Promise.all(Z.filter(Boolean).map((H)=>kR(H,Q,!1,J,G))).then(()=>G[0]));if(X)return L04(await W,K);else return W};var KF0="text/plain; charset=UTF-8",f71=(Y,Q)=>{return{"Content-Type":Y,...Q}},vR=(Y,Q)=>new Response(Y,Q),HF0=class{#Y;#Q;env={};#X;finalized=!1;error;#J;#W;#G;#K;#Z;#$;#H;#V;#q;constructor(Y,Q){if(this.#Y=Y,Q)this.#W=Q.executionCtx,this.env=Q.env,this.#$=Q.notFoundHandler,this.#q=Q.path,this.#V=Q.matchResult}get req(){return this.#Q??=new om(this.#Y,this.#q,this.#V),this.#Q}get event(){if(this.#W&&"respondWith"in this.#W)return this.#W;else throw Error("This context has no FetchEvent")}get executionCtx(){if(this.#W)return this.#W;else throw Error("This context has no ExecutionContext")}get res(){return this.#G||=vR(null,{headers:this.#H??=new Headers})}set res(Y){if(this.#G&&Y){Y=vR(Y.body,Y);for(let[Q,X]of this.#G.headers.entries()){if(Q==="content-type")continue;if(Q==="set-cookie"){let J=this.#G.headers.getSetCookie();Y.headers.delete("set-cookie");for(let G of J)Y.headers.append("set-cookie",G)}else Y.headers.set(Q,X)}}this.#G=Y,this.finalized=!0}render=(...Y)=>{return this.#Z??=(Q)=>this.html(Q),this.#Z(...Y)};setLayout=(Y)=>this.#K=Y;getLayout=()=>this.#K;setRenderer=(Y)=>{this.#Z=Y};header=(Y,Q,X)=>{if(this.finalized)this.#G=vR(this.#G.body,this.#G);let J=this.#G?this.#G.headers:this.#H??=new Headers;if(Q===void 0)J.delete(Y);else if(X?.append)J.append(Y,Q);else J.set(Y,Q)};status=(Y)=>{this.#J=Y};set=(Y,Q)=>{this.#X??=new Map,this.#X.set(Y,Q)};get=(Y)=>{return this.#X?this.#X.get(Y):void 0};get var(){if(!this.#X)return{};return Object.fromEntries(this.#X)}#F(Y,Q,X){let J=this.#G?new Headers(this.#G.headers):this.#H??new Headers;if(typeof Q==="object"&&"headers"in Q){let K=Q.headers instanceof Headers?Q.headers:new Headers(Q.headers);for(let[W,Z]of K)if(W.toLowerCase()==="set-cookie")J.append(W,Z);else J.set(W,Z)}if(X)for(let[K,W]of Object.entries(X))if(typeof W==="string")J.set(K,W);else{J.delete(K);for(let Z of W)J.append(K,Z)}let G=typeof Q==="number"?Q:Q?.status??this.#J;return vR(Y,{status:G,headers:J})}newResponse=(...Y)=>this.#F(...Y);body=(Y,Q,X)=>this.#F(Y,Q,X);text=(Y,Q,X)=>{return!this.#H&&!this.#J&&!Q&&!X&&!this.finalized?new Response(Y):this.#F(Y,Q,f71(KF0,X))};json=(Y,Q,X)=>{return this.#F(JSON.stringify(Y),Q,f71("application/json",X))};html=(Y,Q,X)=>{let J=(G)=>this.#F(G,Q,f71("text/html; charset=UTF-8",X));return typeof Y==="object"?kR(Y,em.Stringify,!1,{}).then(J):J(Y)};redirect=(Y,Q)=>{let X=String(Y);return this.header("Location",!/[^\x00-\xFF]/.test(X)?X:encodeURI(X)),this.newResponse(null,Q??302)};notFound=()=>{return this.#$??=()=>vR(),this.#$(this)}};var h9="ALL",$F0="all",FF0=["get","post","put","delete","options","patch"],Yl="Can not add a route since the matcher is already built.",Ql=class extends Error{};var VF0="__COMPOSED_HANDLER";var M04=(Y)=>{return Y.text("404 Not Found",404)},qF0=(Y,Q)=>{if("getResponse"in Y){let X=Y.getResponse();return Q.newResponse(X.body,X)}return console.error(Y),Q.text("Internal Server Error",500)},BF0=class Y{get;post;put;delete;options;patch;all;on;use;router;getPath;_basePath="/";#Y="/";routes=[];constructor(Q={}){[...FF0,$F0].forEach((K)=>{this[K]=(W,...Z)=>{if(typeof W==="string")this.#Y=W;else this.#J(K,this.#Y,W);return Z.forEach((H)=>{this.#J(K,this.#Y,H)}),this}}),this.on=(K,W,...Z)=>{for(let H of[W].flat()){this.#Y=H;for(let $ of[K].flat())Z.map((F)=>{this.#J($.toUpperCase(),this.#Y,F)})}return this},this.use=(K,...W)=>{if(typeof K==="string")this.#Y=K;else this.#Y="*",W.unshift(K);return W.forEach((Z)=>{this.#J(h9,this.#Y,Z)}),this};let{strict:J,...G}=Q;Object.assign(this,G),this.getPath=J??!0?Q.getPath??y71:XF0}#Q(){let Q=new Y({router:this.router,getPath:this.getPath});return Q.errorHandler=this.errorHandler,Q.#X=this.#X,Q.routes=this.routes,Q}#X=M04;errorHandler=qF0;route(Q,X){let J=this.basePath(Q);return X.routes.map((G)=>{let K;if(X.errorHandler===qF0)K=G.handler;else K=async(W,Z)=>(await k71([],X.errorHandler)(W,()=>G.handler(W,Z))).res,K[VF0]=G.handler;J.#J(G.method,G.path,K)}),this}basePath(Q){let X=this.#Q();return X._basePath=Az(this._basePath,Q),X}onError=(Q)=>{return this.errorHandler=Q,this};notFound=(Q)=>{return this.#X=Q,this};mount(Q,X,J){let G,K;if(J)if(typeof J==="function")K=J;else if(K=J.optionHandler,J.replaceRequest===!1)G=(H)=>H;else G=J.replaceRequest;let W=K?(H)=>{let $=K(H);return Array.isArray($)?$:[$]}:(H)=>{let $=void 0;try{$=H.executionCtx}catch{}return[H.env,$]};G||=(()=>{let H=Az(this._basePath,Q),$=H==="/"?0:H.length;return(F)=>{let V=new URL(F.url);return V.pathname=V.pathname.slice($)||"/",new Request(V,F)}})();let Z=async(H,$)=>{let F=await X(G(H.req.raw),...W(H));if(F)return F;await $()};return this.#J(h9,Az(Q,"*"),Z),this}#J(Q,X,J){Q=Q.toUpperCase(),X=Az(this._basePath,X);let G={basePath:this._basePath,path:X,method:Q,handler:J};this.router.add(Q,X,[J,G]),this.routes.push(G)}#W(Q,X){if(Q instanceof Error)return this.errorHandler(Q,X);throw Q}#G(Q,X,J,G){if(G==="HEAD")return(async()=>new Response(null,await this.#G(Q,X,J,"GET")))();let K=this.getPath(Q,{env:J}),W=this.router.match(G,K),Z=new HF0(Q,{path:K,matchResult:W,env:J,executionCtx:X,notFoundHandler:this.#X});if(W[0].length===1){let $;try{$=W[0][0][0][0](Z,async()=>{Z.res=await this.#X(Z)})}catch(F){return this.#W(F,Z)}return $ instanceof Promise?$.then((F)=>F||(Z.finalized?Z.res:this.#X(Z))).catch((F)=>this.#W(F,Z)):$??this.#X(Z)}let H=k71(W[0],this.errorHandler,this.#X);return(async()=>{try{let $=await H(Z);if(!$.finalized)throw Error("Context is not finalized. Did you forget to return a Response object or `await next()`?");return $.res}catch($){return this.#W($,Z)}})()}fetch=(Q,...X)=>{return this.#G(Q,X[1],X[0],Q.method)};request=(Q,X,J,G)=>{if(Q instanceof Request)return this.fetch(X?new Request(Q,X):Q,J,G);return Q=Q.toString(),this.fetch(new Request(/^https?:\/\//.test(Q)?Q:`http://localhost${Az("/",Q)}`,X),J,G)};fire=()=>{addEventListener("fetch",(Q)=>{Q.respondWith(this.#G(Q.request,Q,void 0,Q.request.method))})}};var _R=[];function Xl(Y,Q){let X=this.buildAllMatchers(),J=(G,K)=>{let W=X[G]||X[h9],Z=W[2][K];if(Z)return Z;let H=K.match(W[0]);if(!H)return[[],_R];let $=H.indexOf("",1);return[W[1][$],H]};return this.match=J,J(Y,Q)}var Jl="[^/]+",yR=".*",fR="(?:|/.*)",Pz=Symbol(),w04=new Set(".\\+*[^]$()");function A04(Y,Q){if(Y.length===1)return Q.length===1?Y<Q?-1:1:-1;if(Q.length===1)return 1;if(Y===yR||Y===fR)return 1;else if(Q===yR||Q===fR)return-1;if(Y===Jl)return 1;else if(Q===Jl)return-1;return Y.length===Q.length?Y<Q?-1:1:Q.length-Y.length}var UF0=class Y{#Y;#Q;#X=Object.create(null);insert(Q,X,J,G,K){if(Q.length===0){if(this.#Y!==void 0)throw Pz;if(K)return;this.#Y=X;return}let[W,...Z]=Q,H=W==="*"?Z.length===0?["","",yR]:["","",Jl]:W==="/*"?["","",fR]:W.match(/^\:([^\{\}]+)(?:\{(.+)\})?$/),$;if(H){let F=H[1],V=H[2]||Jl;if(F&&H[2]){if(V===".*")throw Pz;if(V=V.replace(/^\((?!\?:)(?=[^)]+\)$)/,"(?:"),/\((?!\?:)/.test(V))throw Pz}if($=this.#X[V],!$){if(Object.keys(this.#X).some((B)=>B!==yR&&B!==fR))throw Pz;if(K)return;if($=this.#X[V]=new Y,F!=="")$.#Q=G.varIndex++}if(!K&&F!=="")J.push([F,$.#Q])}else if($=this.#X[W],!$){if(Object.keys(this.#X).some((F)=>F.length>1&&F!==yR&&F!==fR))throw Pz;if(K)return;$=this.#X[W]=new Y}$.insert(Z,X,J,G,K)}buildRegExpStr(){let X=Object.keys(this.#X).sort(A04).map((J)=>{let G=this.#X[J];return(typeof G.#Q==="number"?`(${J})@${G.#Q}`:w04.has(J)?`\\${J}`:J)+G.buildRegExpStr()});if(typeof this.#Y==="number")X.unshift(`#${this.#Y}`);if(X.length===0)return"";if(X.length===1)return X[0];return"(?:"+X.join("|")+")"}};var zF0=class{#Y={varIndex:0};#Q=new UF0;insert(Y,Q,X){let J=[],G=[];for(let W=0;;){let Z=!1;if(Y=Y.replace(/\{[^}]+\}/g,(H)=>{let $=`@\\${W}`;return G[W]=[$,H],W++,Z=!0,$}),!Z)break}let K=Y.match(/(?::[^\/]+)|(?:\/\*$)|./g)||[];for(let W=G.length-1;W>=0;W--){let[Z]=G[W];for(let H=K.length-1;H>=0;H--)if(K[H].indexOf(Z)!==-1){K[H]=K[H].replace(Z,G[W][1]);break}}return this.#Q.insert(K,Q,J,this.#Y,X),J}buildRegExp(){let Y=this.#Q.buildRegExpStr();if(Y==="")return[/^$/,[],[]];let Q=0,X=[],J=[];return Y=Y.replace(/#(\d+)|@(\d+)|\.\*\$/g,(G,K,W)=>{if(K!==void 0)return X[++Q]=Number(K),"$()";if(W!==void 0)return J[Number(W)]=++Q,"";return""}),[new RegExp(`^${Y}`),X,J]}};var P04=[/^$/,[],Object.create(null)],DF0=Object.create(null);function OF0(Y){return DF0[Y]??=new RegExp(Y==="*"?"":`^${Y.replace(/\/\*$|([.\\+*[^\]$()])/g,(Q,X)=>X?`\\${X}`:"(?:|/.*)")}$`)}function E04(){DF0=Object.create(null)}function T04(Y){let Q=new zF0,X=[];if(Y.length===0)return P04;let J=Y.map(($)=>[!/\*|\/:/.test($[0]),...$]).sort(([$,F],[V,B])=>$?1:V?-1:F.length-B.length),G=Object.create(null);for(let $=0,F=-1,V=J.length;$<V;$++){let[B,U,z]=J[$];if(B)G[U]=[z.map(([L])=>[L,Object.create(null)]),_R];else F++;let D;try{D=Q.insert(U,F,B)}catch(L){throw L===Pz?new Ql(U):L}if(B)continue;X[F]=z.map(([L,w])=>{let E=Object.create(null);w-=1;for(;w>=0;w--){let[T,C]=D[w];E[T]=C}return[L,E]})}let[K,W,Z]=Q.buildRegExp();for(let $=0,F=X.length;$<F;$++)for(let V=0,B=X[$].length;V<B;V++){let U=X[$][V]?.[1];if(!U)continue;let z=Object.keys(U);for(let D=0,L=z.length;D<L;D++)U[z[D]]=Z[U[z[D]]]}let H=[];for(let $ in W)H[$]=X[W[$]];return[K,H,G]}function NM(Y,Q){if(!Y)return;for(let X of Object.keys(Y).sort((J,G)=>G.length-J.length))if(OF0(X).test(Q))return[...Y[X]];return}var Gl=class{name="RegExpRouter";#Y;#Q;constructor(){this.#Y={[h9]:Object.create(null)},this.#Q={[h9]:Object.create(null)}}add(Y,Q,X){let J=this.#Y,G=this.#Q;if(!J||!G)throw Error(Yl);if(!J[Y])[J,G].forEach((Z)=>{Z[Y]=Object.create(null),Object.keys(Z[h9]).forEach((H)=>{Z[Y][H]=[...Z[h9][H]]})});if(Q==="/*")Q="*";let K=(Q.match(/\/:/g)||[]).length;if(/\*$/.test(Q)){let Z=OF0(Q);if(Y===h9)Object.keys(J).forEach((H)=>{J[H][Q]||=NM(J[H],Q)||NM(J[h9],Q)||[]});else J[Y][Q]||=NM(J[Y],Q)||NM(J[h9],Q)||[];Object.keys(J).forEach((H)=>{if(Y===h9||Y===H)Object.keys(J[H]).forEach(($)=>{Z.test($)&&J[H][$].push([X,K])})}),Object.keys(G).forEach((H)=>{if(Y===h9||Y===H)Object.keys(G[H]).forEach(($)=>Z.test($)&&G[H][$].push([X,K]))});return}let W=tm(Q)||[Q];for(let Z=0,H=W.length;Z<H;Z++){let $=W[Z];Object.keys(G).forEach((F)=>{if(Y===h9||Y===F)G[F][$]||=[...NM(J[F],$)||NM(J[h9],$)||[]],G[F][$].push([X,K-H+Z+1])})}}match=Xl;buildAllMatchers(){let Y=Object.create(null);return Object.keys(this.#Q).concat(Object.keys(this.#Y)).forEach((Q)=>{Y[Q]||=this.#X(Q)}),this.#Y=this.#Q=void 0,E04(),Y}#X(Y){let Q=[],X=Y===h9;if([this.#Y,this.#Q].forEach((J)=>{let G=J[Y]?Object.keys(J[Y]).map((K)=>[K,J[Y][K]]):[];if(G.length!==0)X||=!0,Q.push(...G);else if(Y!==h9)Q.push(...Object.keys(J[h9]).map((K)=>[K,J[h9][K]]))}),!X)return null;else return T04(Q)}};var C04=class{name="PreparedRegExpRouter";#Y;#Q;constructor(Y,Q){this.#Y=Y,this.#Q=Q}#X(Y,Q){let X=this.#Y[Y];X[1].forEach((J)=>J&&J.push(Q)),Object.values(X[2]).forEach((J)=>J[0].push(Q))}#J(Y,Q,X,J,G){let K=this.#Y[Y];if(!G)K[2][Q][0].push([X,{}]);else J.forEach((W)=>{if(typeof W==="number")K[1][W].push([X,G]);else K[2][W||Q][0].push([X,G])})}add(Y,Q,X){if(!this.#Y[Y]){let G=this.#Y[h9],K={};for(let W in G[2])K[W]=[G[2][W][0].slice(),_R];this.#Y[Y]=[G[0],G[1].map((W)=>Array.isArray(W)?W.slice():0),K]}if(Q==="/*"||Q==="*"){let G=[X,{}];if(Y===h9)for(let K in this.#Y)this.#X(K,G);else this.#X(Y,G);return}let J=this.#Q[Q];if(!J)throw Error(`Path ${Q} is not registered`);for(let[G,K]of J)if(Y===h9)for(let W in this.#Y)this.#J(W,Q,X,G,K);else this.#J(Y,Q,X,G,K)}buildAllMatchers(){return this.#Y}match=Xl};var b71=class{name="SmartRouter";#Y=[];#Q=[];constructor(Y){this.#Y=Y.routers}add(Y,Q,X){if(!this.#Q)throw Error(Yl);this.#Q.push([Y,Q,X])}match(Y,Q){if(!this.#Q)throw Error("Fatal error");let X=this.#Y,J=this.#Q,G=X.length,K=0,W;for(;K<G;K++){let Z=X[K];try{for(let H=0,$=J.length;H<$;H++)Z.add(...J[H]);W=Z.match(Y,Q)}catch(H){if(H instanceof Ql)continue;throw H}this.match=Z.match.bind(Z),this.#Y=[Z],this.#Q=void 0;break}if(K===G)throw Error("Fatal error");return this.name=`SmartRouter + ${this.activeRouter.name}`,W}get activeRouter(){if(this.#Q||this.#Y.length!==1)throw Error("No active router has been determined yet.");return this.#Y[0]}};var bR=Object.create(null),R04=(Y)=>{for(let Q in Y)return!0;return!1},NF0=class Y{#Y;#Q;#X;#J=0;#W=bR;constructor(Q,X,J){if(this.#Q=J||Object.create(null),this.#Y=[],Q&&X){let G=Object.create(null);G[Q]={handler:X,possibleKeys:[],score:0},this.#Y=[G]}this.#X=[]}insert(Q,X,J){this.#J=++this.#J;let G=this,K=YF0(X),W=[];for(let Z=0,H=K.length;Z<H;Z++){let $=K[Z],F=K[Z+1],V=QF0($,F),B=Array.isArray(V)?V[0]:$;if(B in G.#Q){if(G=G.#Q[B],V)W.push(V[1]);continue}if(G.#Q[B]=new Y,V)G.#X.push(V),W.push(V[1]);G=G.#Q[B]}return G.#Y.push({[Q]:{handler:J,possibleKeys:W.filter((Z,H,$)=>$.indexOf(Z)===H),score:this.#J}}),G}#G(Q,X,J,G,K){for(let W=0,Z=X.#Y.length;W<Z;W++){let H=X.#Y[W],$=H[J]||H[h9],F={};if($!==void 0){if($.params=Object.create(null),Q.push($),G!==bR||K&&K!==bR)for(let V=0,B=$.possibleKeys.length;V<B;V++){let U=$.possibleKeys[V],z=F[$.score];$.params[U]=K?.[U]&&!z?K[U]:G[U]??K?.[U],F[$.score]=!0}}}}search(Q,X){let J=[];this.#W=bR;let K=[this],W=_71(X),Z=[],H=W.length,$=null;for(let F=0;F<H;F++){let V=W[F],B=F===H-1,U=[];for(let D=0,L=K.length;D<L;D++){let w=K[D],E=w.#Q[V];if(E)if(E.#W=w.#W,B){if(E.#Q["*"])this.#G(J,E.#Q["*"],Q,w.#W);this.#G(J,E,Q,w.#W)}else U.push(E);for(let T=0,C=w.#X.length;T<C;T++){let P=w.#X[T],I=w.#W===bR?{}:{...w.#W};if(P==="*"){let g=w.#Q["*"];if(g)this.#G(J,g,Q,w.#W),g.#W=I,U.push(g);continue}let[S,v,f]=P;if(!V&&!(f instanceof RegExp))continue;let b=w.#Q[S];if(f instanceof RegExp){if($===null){$=Array(H);let m=X[0]==="/"?1:0;for(let h=0;h<H;h++)$[h]=m,m+=W[h].length+1}let g=X.substring($[F]),r=f.exec(g);if(r){if(I[v]=r[0],this.#G(J,b,Q,w.#W,I),R04(b.#Q)){b.#W=I;let m=r[0].match(/\//)?.length??0;(Z[m]||=[]).push(b)}continue}}if(f===!0||f.test(V))if(I[v]=V,B){if(this.#G(J,b,Q,I,w.#W),b.#Q["*"])this.#G(J,b.#Q["*"],Q,I,w.#W)}else b.#W=I,U.push(b)}}let z=Z.shift();K=z?U.concat(z):U}if(J.length>1)J.sort((F,V)=>{return F.score-V.score});return[J.map(({handler:F,params:V})=>[F,V])]}};var h71=class{name="TrieRouter";#Y;constructor(){this.#Y=new NF0}add(Y,Q,X){let J=tm(Q);if(J){for(let G=0,K=J.length;G<K;G++)this.#Y.insert(Y,J[G],X);return}this.#Y.insert(Y,Q,X)}match(Y,Q){return this.#Y.search(Y,Q)}};var JQ=class extends BF0{constructor(Y={}){super(Y);this.router=Y.router??new b71({routers:[new Gl,new h71]})}};var I04=/^[\w!#$%&'*.^`|~+-]+$/,j04=/^[ !#-:<-[\]-~]*$/,x71=(Y,Q)=>{if(Q&&Y.indexOf(Q)===-1)return{};let X=Y.trim().split(";"),J={};for(let G of X){G=G.trim();let K=G.indexOf("=");if(K===-1)continue;let W=G.substring(0,K).trim();if(Q&&Q!==W||!I04.test(W))continue;let Z=G.substring(K+1).trim();if(Z.startsWith('"')&&Z.endsWith('"'))Z=Z.slice(1,-1);if(j04.test(Z)){if(J[W]=Z.indexOf("%")!==-1?OM(Z,SR):Z,Q)break}}return J};var LF0=(Y,Q,X)=>{let J=Y.req.raw.headers.get("Cookie");if(typeof Q==="string"){if(!J)return;let K=Q;if(X==="secure")K="__Secure-"+Q;else if(X==="host")K="__Host-"+Q;return x71(J,K)[K]}if(!J)return{};return x71(J)};var MF0=(Y)=>{let X={...{origin:"*",allowMethods:["GET","HEAD","PUT","POST","DELETE","PATCH"],allowHeaders:[],exposeHeaders:[]},...Y},J=((K)=>{if(typeof K==="string")if(K==="*")return()=>K;else return(W)=>K===W?W:null;else if(typeof K==="function")return K;else return(W)=>K.includes(W)?W:null})(X.origin),G=((K)=>{if(typeof K==="function")return K;else if(Array.isArray(K))return()=>K;else return()=>[]})(X.allowMethods);return async function(W,Z){function H(F,V){W.res.headers.set(F,V)}let $=await J(W.req.header("origin")||"",W);if($)H("Access-Control-Allow-Origin",$);if(X.credentials)H("Access-Control-Allow-Credentials","true");if(X.exposeHeaders?.length)H("Access-Control-Expose-Headers",X.exposeHeaders.join(","));if(W.req.method==="OPTIONS"){if(X.origin!=="*")H("Vary","Origin");if(X.maxAge!=null)H("Access-Control-Max-Age",X.maxAge.toString());let F=await G(W.req.header("origin")||"",W);if(F.length)H("Access-Control-Allow-Methods",F.join(","));let V=X.allowHeaders;if(!V?.length){let B=W.req.header("Access-Control-Request-Headers");if(B)V=B.split(/\s*,\s*/)}if(V?.length)H("Access-Control-Allow-Headers",V.join(",")),W.res.headers.append("Vary","Access-Control-Request-Headers");return W.res.headers.delete("Content-Length"),W.res.headers.delete("Content-Type"),new Response(null,{headers:W.res.headers,status:204,statusText:"No Content"})}if(await Z(),X.origin!=="*")W.header("Vary","Origin",{append:!0})}};function S04(){let{process:Y,Deno:Q}=globalThis;return!(typeof Q?.noColor==="boolean"?Q.noColor:Y!==void 0?"NO_COLOR"in Y?.env:!1)}async function wF0(){let{navigator:Y}=globalThis,Q="cloudflare:workers";return!(Y!==void 0&&Y.userAgent==="Cloudflare-Workers"?await(async()=>{try{return"NO_COLOR"in((await import("cloudflare:workers")).env??{})}catch{return!1}})():!S04())}var k04=(Y)=>{let[Q,X]=[",","."];return Y.map((G)=>G.replace(/(\d)(?=(\d\d\d)+(?!\d))/g,"$1"+Q)).join(X)},v04=(Y)=>{let Q=Date.now()-Y;return k04([Q<1000?Q+"ms":Math.round(Q/1000)+"s"])},_04=async(Y)=>{if(await wF0())switch(Y/100|0){case 5:return`\x1B[31m${Y}\x1B[0m`;case 4:return`\x1B[33m${Y}\x1B[0m`;case 3:return`\x1B[36m${Y}\x1B[0m`;case 2:return`\x1B[32m${Y}\x1B[0m`}return`${Y}`};async function AF0(Y,Q,X,J,G=0,K){let W=Q==="<--"?`${Q} ${X} ${J}`:`${Q} ${X} ${J} ${await _04(G)} ${K}`;Y(W)}var PF0=(Y=console.log)=>{return async function(X,J){let{method:G,url:K}=X.req,W=K.slice(K.indexOf("/",8));await AF0(Y,"<--",G,W);let Z=Date.now();await J(),await AF0(Y,"-->",G,W,X.res.status,v04(Z))}};var EF0=()=>{try{return performance.now()}catch{}return Date.now()},g71=(Y)=>{let Q={total:!0,enabled:!0,totalDescription:"Total Response Time",autoEnd:!0,crossOrigin:!1,...Y};return async function(J,G){let K=[],W=new Map;if(J.get("metric"))return await G();if(J.set("metric",{headers:K,timers:W}),Q.total)LM(J,"total",Q.totalDescription);if(await G(),Q.total)Ez(J,"total");if(Q.autoEnd)W.forEach((H,$)=>Ez(J,$));if(typeof Q.enabled==="function"?Q.enabled(J):Q.enabled){J.res.headers.append("Server-Timing",K.join(","));let H=typeof Q.crossOrigin==="function"?Q.crossOrigin(J):Q.crossOrigin;if(H)J.res.headers.append("Timing-Allow-Origin",typeof H==="string"?H:"*")}}},TF0=(Y,Q,X,J,G)=>{let K=Y.get("metric");if(!K){console.warn("Metrics not initialized! Please add the `timing()` middleware to this route!");return}if(typeof X==="number"){let W=X.toFixed(G||1),Z=J?`${Q};dur=${W};desc="${J}"`:`${Q};dur=${W}`;K.headers.push(Z)}else{let W=X?`${Q};desc="${X}"`:`${Q}`;K.headers.push(W)}},LM=(Y,Q,X)=>{let J=Y.get("metric");if(!J){console.warn("Metrics not initialized! Please add the `timing()` middleware to this route!");return}J.timers.set(Q,{description:X,start:EF0()})},Ez=(Y,Q,X)=>{let J=Y.get("metric");if(!J){console.warn("Metrics not initialized! Please add the `timing()` middleware to this route!");return}let G=J.timers.get(Q);if(!G){console.warn(`Timer "${Q}" does not exist!`);return}let{description:K,start:W}=G,Z=EF0()-W;TF0(Y,Q,Z,K,X),J.timers.delete(Q)};Kv();ED1();Tn();qV1();LG();KY();qF();class ZN1{db;constructor(Y){this.db=Y}async create(Y,Q,X){let J=d8("vir"),G=new Date().toISOString();if(await this.db.insertInto("connections").values({id:J,organization_id:Y,created_by:Q,title:X.title,description:X.description??null,icon:X.icon??null,app_name:null,app_id:null,connection_type:"VIRTUAL",connection_url:`virtual://${J}`,connection_token:null,connection_headers:null,oauth_config:null,configuration_state:null,configuration_scopes:null,metadata:X.metadata?JSON.stringify(X.metadata):null,tools:null,bindings:null,status:X.status??"active",created_at:G,updated_at:G}).execute(),X.connections.length>0)await this.db.insertInto("connection_aggregations").values(X.connections.map((W)=>({id:d8("agg"),parent_connection_id:J,child_connection_id:W.connection_id,selected_tools:W.selected_tools?JSON.stringify(W.selected_tools):null,selected_resources:W.selected_resources?JSON.stringify(W.selected_resources):null,selected_prompts:W.selected_prompts?JSON.stringify(W.selected_prompts):null,dependency_mode:"direct",created_at:G}))).execute();let K=await this.findById(J);if(!K)throw Error(`Failed to create virtual MCP with id: ${J}`);return K}async findById(Y,Q){let X=s3(Y);if(X){let J=Q??X,G=await this.db.selectFrom("connections").selectAll().where("organization_id","=",J).where("status","!=","inactive").where("status","!=","error").execute();return{...lm(J),connections:G.map((K)=>({connection_id:K.id,selected_tools:null,selected_resources:null,selected_prompts:null}))}}return this.findByIdInternal(this.db,Y)}async findByIdInternal(Y,Q){let X=await Y.selectFrom("connections").selectAll().where("id","=",Q).where("connection_type","=","VIRTUAL").executeTakeFirst();if(!X)return null;let J=await Y.selectFrom("connection_aggregations").selectAll().where("parent_connection_id","=",Q).where("dependency_mode","=","direct").execute();return this.deserializeVirtualMCPEntity(X,J)}async list(Y){let Q=await this.db.selectFrom("connections").selectAll().where("organization_id","=",Y).where("connection_type","=","VIRTUAL").execute(),X=Q.map((K)=>K.id);if(X.length===0)return[];let J=await this.db.selectFrom("connection_aggregations").selectAll().where("parent_connection_id","in",X).where("dependency_mode","=","direct").execute(),G=new Map;for(let K of J){let W=G.get(K.parent_connection_id)??[];W.push(K),G.set(K.parent_connection_id,W)}return Q.map((K)=>this.deserializeVirtualMCPEntity(K,G.get(K.id)??[]))}async listByConnectionId(Y,Q){let J=(await this.db.selectFrom("connection_aggregations").select("parent_connection_id").where("child_connection_id","=",Q).execute()).map((H)=>H.parent_connection_id);if(J.length===0)return[];let G=await this.db.selectFrom("connections").selectAll().where("id","in",J).where("organization_id","=",Y).where("connection_type","=","VIRTUAL").execute();if(G.length===0)return[];let K=G.map((H)=>H.id),W=await this.db.selectFrom("connection_aggregations").selectAll().where("parent_connection_id","in",K).where("dependency_mode","=","direct").execute(),Z=new Map;for(let H of W){let $=Z.get(H.parent_connection_id)??[];$.push(H),Z.set(H.parent_connection_id,$)}return G.map((H)=>this.deserializeVirtualMCPEntity(H,Z.get(H.id)??[]))}async update(Y,Q,X){let J=new Date().toISOString(),G={updated_at:J,updated_by:Q};if(X.title!==void 0)G.title=X.title;if(X.description!==void 0)G.description=X.description;if(X.icon!==void 0)G.icon=X.icon;if(X.status!==void 0)G.status=X.status;if(X.metadata!==void 0)G.metadata=X.metadata?JSON.stringify(X.metadata):null;if(await this.db.updateTable("connections").set(G).where("id","=",Y).where("connection_type","=","VIRTUAL").execute(),X.connections!==void 0){if(await this.db.deleteFrom("connection_aggregations").where("parent_connection_id","=",Y).where("dependency_mode","=","direct").execute(),X.connections.length>0)await this.db.insertInto("connection_aggregations").values(X.connections.map((W)=>({id:d8("agg"),parent_connection_id:Y,child_connection_id:W.connection_id,selected_tools:W.selected_tools?JSON.stringify(W.selected_tools):null,selected_resources:W.selected_resources?JSON.stringify(W.selected_resources):null,selected_prompts:W.selected_prompts?JSON.stringify(W.selected_prompts):null,dependency_mode:"direct",created_at:J}))).execute()}let K=await this.findById(Y);if(!K)throw Error("Virtual MCP not found after update");return K}async delete(Y){await this.db.deleteFrom("connection_aggregations").where("parent_connection_id","=",Y).execute(),await this.db.deleteFrom("connections").where("id","=",Y).where("connection_type","=","VIRTUAL").execute()}async removeConnectionReferences(Y){await this.db.deleteFrom("connection_aggregations").where("child_connection_id","=",Y).execute()}deserializeVirtualMCPEntity(Y,Q){let X=Y.created_at instanceof Date?Y.created_at.toISOString():Y.created_at,J=Y.updated_at instanceof Date?Y.updated_at.toISOString():Y.updated_at,G=Y.status==="active"?"active":"inactive",K=this.parseJson(Y.metadata);return{id:Y.id,organization_id:Y.organization_id,title:Y.title,description:Y.description,icon:Y.icon,status:G,created_at:X,updated_at:J,created_by:Y.created_by,updated_by:Y.updated_by??void 0,metadata:{...K,instructions:K?.instructions??null},connections:Q.map((W)=>({connection_id:W.child_connection_id,selected_tools:this.parseJson(W.selected_tools),selected_resources:this.parseJson(W.selected_resources),selected_prompts:this.parseJson(W.selected_prompts)}))}}parseJson(Y){if(Y===null)return null;if(typeof Y==="string")try{return JSON.parse(Y)}catch{return null}return Y}async listVirtualTools(Y){let Q=await this.db.selectFrom("connections").select(["tools","created_at","updated_at"]).where("id","=",Y).where("connection_type","=","VIRTUAL").executeTakeFirst();if(!Q)return[];let X=this.parseJson(Q.tools);if(!X)return[];let J=Q.created_at instanceof Date?Q.created_at.toISOString():Q.created_at,G=Q.updated_at instanceof Date?Q.updated_at.toISOString():Q.updated_at;return X.map((K,W)=>({tool:K,originalIndex:W})).filter(({tool:K})=>HB(K)).map(({tool:K,originalIndex:W})=>qv(`${Y}:${K.name}:${W}`,K,J,G))}async getVirtualTool(Y,Q){let X=await this.db.selectFrom("connections").select(["tools","created_at","updated_at"]).where("id","=",Y).where("connection_type","=","VIRTUAL").executeTakeFirst();if(!X)return null;let J=this.parseJson(X.tools);if(!J)return null;let G=J.findIndex((H)=>H.name===Q&&HB(H));if(G===-1)return null;let K=J[G],W=X.created_at instanceof Date?X.created_at.toISOString():X.created_at,Z=X.updated_at instanceof Date?X.updated_at.toISOString():X.updated_at;return qv(`${Y}:${K.name}:${G}`,K,W,Z)}async createVirtualTool(Y,Q,X){let J=new Date().toISOString(),G=await this.db.selectFrom("connections").select(["tools"]).where("id","=",Y).where("connection_type","=","VIRTUAL").executeTakeFirst();if(!G)throw Error(`Virtual MCP not found: ${Y}`);let K=this.parseJson(G.tools)??[];if(K.some((Z)=>Z.name===Q.name))throw Error(`Tool with name "${Q.name}" already exists`);let W={name:Q.name,description:Q.description,inputSchema:Q.inputSchema,outputSchema:Q.outputSchema,annotations:Q.annotations,_meta:{"mcp.mesh":{"tool.fn":Q.code},connectionDependencies:X}};return K.push(W),await this.db.updateTable("connections").set({tools:JSON.stringify(K),updated_at:J}).where("id","=",Y).execute(),await this.syncIndirectDependencies(Y,X),qv(`${Y}:${Q.name}:${K.length-1}`,W,J,J)}async updateVirtualTool(Y,Q,X,J){let G=new Date().toISOString(),K=await this.db.selectFrom("connections").select(["tools","created_at"]).where("id","=",Y).where("connection_type","=","VIRTUAL").executeTakeFirst();if(!K)throw Error(`Virtual MCP not found: ${Y}`);let W=this.parseJson(K.tools)??[],Z=W.findIndex((B)=>B.name===Q&&HB(B));if(Z===-1)throw Error(`Virtual tool not found: ${Q}`);let H=W[Z];if(X.name&&X.name!==Q){if(W.some((B)=>B.name===X.name))throw Error(`Tool with name "${X.name}" already exists`)}let $=J??H._meta.connectionDependencies??[],F={name:X.name??H.name,description:X.description!==void 0?X.description??void 0:H.description,inputSchema:X.inputSchema??H.inputSchema,outputSchema:X.outputSchema!==void 0?X.outputSchema??void 0:H.outputSchema,annotations:X.annotations!==void 0?X.annotations??void 0:H.annotations,_meta:{"mcp.mesh":{"tool.fn":X.code??H._meta["mcp.mesh"]["tool.fn"]},connectionDependencies:$}};if(W[Z]=F,await this.db.updateTable("connections").set({tools:JSON.stringify(W),updated_at:G}).where("id","=",Y).execute(),J!==void 0)await this.recalculateIndirectDependencies(Y,W);let V=K.created_at instanceof Date?K.created_at.toISOString():K.created_at;return qv(`${Y}:${F.name}:${Z}`,F,V,G)}async deleteVirtualTool(Y,Q){let X=new Date().toISOString(),J=await this.db.selectFrom("connections").select(["tools"]).where("id","=",Y).where("connection_type","=","VIRTUAL").executeTakeFirst();if(!J)throw Error(`Virtual MCP not found: ${Y}`);let G=this.parseJson(J.tools)??[],K=G.findIndex((W)=>W.name===Q&&HB(W));if(K===-1)throw Error(`Virtual tool not found: ${Q}`);G.splice(K,1),await this.db.updateTable("connections").set({tools:G.length>0?JSON.stringify(G):null,updated_at:X}).where("id","=",Y).execute(),await this.recalculateIndirectDependencies(Y,G)}async syncIndirectDependencies(Y,Q){if(Q.length===0)return;let X=new Date().toISOString(),J=await this.db.selectFrom("connection_aggregations").select(["child_connection_id","dependency_mode"]).where("parent_connection_id","=",Y).execute(),G=new Set(J.map((W)=>W.child_connection_id)),K=Q.filter((W)=>!G.has(W));if(K.length>0)await this.db.insertInto("connection_aggregations").values(K.map((W)=>({id:d8("agg"),parent_connection_id:Y,child_connection_id:W,selected_tools:null,selected_resources:null,selected_prompts:null,dependency_mode:"indirect",created_at:X}))).execute()}async recalculateIndirectDependencies(Y,Q){let X=new Set;for(let Z of Q)if(HB(Z)){let H=Z._meta.connectionDependencies??[];for(let $ of H)X.add($)}let J=await this.db.selectFrom("connection_aggregations").select(["id","child_connection_id","dependency_mode"]).where("parent_connection_id","=",Y).execute(),G=J.filter((Z)=>Z.dependency_mode==="indirect"&&!X.has(Z.child_connection_id)).map((Z)=>Z.id);if(G.length>0)await this.db.deleteFrom("connection_aggregations").where("id","in",G).execute();let K=new Set(J.map((Z)=>Z.child_connection_id)),W=Array.from(X).filter((Z)=>!K.has(Z));if(W.length>0){let Z=new Date().toISOString();await this.db.insertInto("connection_aggregations").values(W.map((H)=>({id:d8("agg"),parent_connection_id:Y,child_connection_id:H,selected_tools:null,selected_resources:null,selected_prompts:null,dependency_mode:"indirect",created_at:Z}))).execute()}}}import{sql as P4}from"kysely";class KN1{patterns=[{type:"email",regex:/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/g},{type:"api_key",regex:/(?:api[_-]?key|token|secret|password|bearer)\s*[:=]\s*['"]?[\w-]{16,}['"]?/gi},{type:"jwt",regex:/eyJ[A-Za-z0-9-_]+\.eyJ[A-Za-z0-9-_]+\.[A-Za-z0-9-_.+/=]*/g},{type:"credit_card",regex:/\b\d{4}[- ]?\d{4}[- ]?\d{4}[- ]?\d{4}\b/g},{type:"ssn",regex:/\b\d{3}-\d{2}-\d{4}\b/g}];redact(Y){if(Y===null||Y===void 0)return Y;if(typeof Y==="string")return this.redactString(Y);if(Array.isArray(Y))return Y.map((Q)=>this.redact(Q));if(typeof Y==="object"){let Q={};for(let[X,J]of Object.entries(Y)){let G=this.redactString(X);Q[G]=this.redact(J)}return Q}return Y}redactString(Y){let Q=Y;for(let X of this.patterns)Q=Q.replace(X.regex,`[REDACTED:${X.type}]`);return Q}}LG();class HN1{db;redactor;databaseType;constructor(Y,Q="sqlite"){this.db=Y;this.redactor=new KN1,this.databaseType=Q}jsonExtract(Y,Q){if(this.databaseType==="postgres")return P4`(${P4.ref(Y)}::jsonb)->>${Q}`;let X=`$.${Q}`;return P4`json_extract(${P4.ref(Y)}, ${X})`}jsonExtractWithCommas(Y,Q){if(this.databaseType==="postgres")return P4`(',' || (${P4.ref(Y)}::jsonb)->>${Q} || ',')`;let X=`$.${Q}`;return P4`(',' || json_extract(${P4.ref(Y)}, ${X}) || ',')`}escapeLikeWildcards(Y){return Y.replace(/\\/g,"\\\\").replace(/%/g,"\\%").replace(/_/g,"\\_")}async log(Y){await this.logBatch([Y])}async logBatch(Y){if(Y.length===0)return;let Q=Y.map((X)=>({...X,input:this.redactor.redact(X.input),output:this.redactor.redact(X.output)}));await this.db.transaction().execute(async(X)=>{await X.insertInto("monitoring_logs").values(Q.map((J)=>this.toDbRow(J))).execute()})}async query(Y){let Q=this.db.selectFrom("monitoring_logs").selectAll(),X=this.db.selectFrom("monitoring_logs").select((Z)=>Z.fn.countAll().as("count"));if(Y.organizationId)Q=Q.where("organization_id","=",Y.organizationId),X=X.where("organization_id","=",Y.organizationId);if(Y.connectionId)Q=Q.where("connection_id","=",Y.connectionId),X=X.where("connection_id","=",Y.connectionId);if(Y.excludeConnectionIds&&Y.excludeConnectionIds.length>0)Q=Q.where("connection_id","not in",Y.excludeConnectionIds),X=X.where("connection_id","not in",Y.excludeConnectionIds);if(Y.virtualMcpId)Q=Q.where("virtual_mcp_id","=",Y.virtualMcpId),X=X.where("virtual_mcp_id","=",Y.virtualMcpId);if(Y.toolName)Q=Q.where("tool_name","=",Y.toolName),X=X.where("tool_name","=",Y.toolName);if(Y.isError!==void 0)Q=Q.where("is_error","=",Y.isError?1:0),X=X.where("is_error","=",Y.isError?1:0);if(Y.startDate)Q=Q.where("timestamp",">=",Y.startDate.toISOString()),X=X.where("timestamp",">=",Y.startDate.toISOString());if(Y.endDate)Q=Q.where("timestamp","<=",Y.endDate.toISOString()),X=X.where("timestamp","<=",Y.endDate.toISOString());if(Y.propertyFilters)Q=this.applyPropertyFilters(Q,Y.propertyFilters),X=this.applyPropertyFilters(X,Y.propertyFilters);if(Q=Q.orderBy("timestamp","desc"),Y.limit)Q=Q.limit(Y.limit);if(Y.offset)Q=Q.offset(Y.offset);let[J,G]=await Promise.all([Q.execute(),X.executeTakeFirst()]),K=Number(G?.count||0);return{logs:J.map((Z)=>this.fromDbRow(Z)),total:K}}async getStats(Y){let Q=this.db.selectFrom("monitoring_logs").where("organization_id","=",Y.organizationId);if(Y.startDate)Q=Q.where("timestamp",">=",Y.startDate.toISOString());if(Y.endDate)Q=Q.where("timestamp","<=",Y.endDate.toISOString());let X=await Q.select([(W)=>W.fn.countAll().as("total_count"),(W)=>W.fn.sum(W.ref("is_error")).as("error_count"),(W)=>W.fn.avg("duration_ms").as("avg_duration")]).executeTakeFirst(),J=Number(X?.total_count||0),G=Number(X?.error_count||0),K=Number(X?.avg_duration||0);return{totalCalls:J,errorRate:J>0?G/J:0,avgDurationMs:K}}async aggregate(Y){let{organizationId:Q,path:X,from:J,aggregation:G,groupBy:K,groupByColumn:W,interval:Z,filters:H}=Y,$=J==="input"?"input":"output",F=this.db.selectFrom("monitoring_logs").where("organization_id","=",Q);if(H?.connectionIds&&H.connectionIds.length>0)F=F.where("connection_id","in",H.connectionIds);if(H?.virtualMcpIds&&H.virtualMcpIds.length>0)F=F.where("virtual_mcp_id","in",H.virtualMcpIds);if(H?.toolNames&&H.toolNames.length>0)F=F.where("tool_name","in",H.toolNames);if(H?.startDate)F=F.where("timestamp",">=",H.startDate.toISOString());if(H?.endDate)F=F.where("timestamp","<=",H.endDate.toISOString());if(H?.propertyFilters)F=this.applyPropertyFilters(F,H.propertyFilters);let V=this.jsonExtractPath($,X);if(W){let U=P4.ref(W),z=F.select([P4`${U}`.as("group_key"),this.aggregationExpression(G,V).as("agg_value")]).where(P4`${U}`,"is not",null).groupBy(P4`${U}`).orderBy(P4`agg_value`,"desc");if(Y.limit)z=z.limit(Y.limit);return{value:null,groups:(await z.execute()).map((L)=>({key:String(L.group_key),value:Number(L.agg_value)||0}))}}if(K){let U=this.jsonExtractPathText($,K),z=F.select([P4`${U}`.as("group_key"),this.aggregationExpression(G,V).as("agg_value")]).where(P4`${U}`,"is not",null).groupBy(P4`${U}`).orderBy(P4`agg_value`,"desc");if(Y.limit)z=z.limit(Y.limit);return{value:null,groups:(await z.execute()).map((L)=>({key:String(L.group_key),value:Number(L.agg_value)||0}))}}if(Z){let U=this.timeBucketExpression(Z);return{value:null,timeseries:(await F.select([U.as("time_bucket"),this.aggregationExpression(G,V).as("agg_value")]).groupBy(P4`time_bucket`).orderBy(P4`time_bucket`).execute()).map((D)=>({timestamp:String(D.time_bucket),value:Number(D.agg_value)||0}))}}let B=await F.select([this.aggregationExpression(G,V).as("agg_value")]).executeTakeFirst();return{value:B?Number(B.agg_value)||0:null}}async countMatched(Y){let{organizationId:Q,path:X,from:J,filters:G}=Y,K=J==="input"?"input":"output",W=this.db.selectFrom("monitoring_logs").where("organization_id","=",Q);if(G?.connectionIds&&G.connectionIds.length>0)W=W.where("connection_id","in",G.connectionIds);if(G?.toolNames&&G.toolNames.length>0)W=W.where("tool_name","in",G.toolNames);if(G?.startDate)W=W.where("timestamp",">=",G.startDate.toISOString());if(G?.endDate)W=W.where("timestamp","<=",G.endDate.toISOString());if(G?.propertyFilters)W=this.applyPropertyFilters(W,G.propertyFilters);let Z=this.jsonExtractPathText(K,X),H=await W.where(P4`${Z}`,"is not",null).select(($)=>$.fn.countAll().as("count")).executeTakeFirst();return Number(H?.count||0)}jsonExtractPath(Y,Q){if(this.databaseType==="postgres"){let J=`{${Q.replace(/^\$\.?/,"").split(".").join(",")}}`;return P4`(${P4.ref(Y)}::jsonb #>> ${J})::numeric`}return P4`CAST(json_extract(${P4.ref(Y)}, ${Q}) AS REAL)`}jsonExtractPathText(Y,Q){if(this.databaseType==="postgres"){let J=`{${Q.replace(/^\$\.?/,"").split(".").join(",")}}`;return P4`(${P4.ref(Y)}::jsonb #>> ${J})`}return P4`json_extract(${P4.ref(Y)}, ${Q})`}aggregationExpression(Y,Q){switch(Y){case"sum":return P4`COALESCE(SUM(${Q}), 0)`;case"avg":return P4`COALESCE(AVG(${Q}), 0)`;case"min":return P4`MIN(${Q})`;case"max":return P4`MAX(${Q})`;case"count":return P4`COUNT(${Q})`;case"count_all":return P4`COUNT(*)`;case"last":return P4`MAX(${Q})`;default:return P4`SUM(${Q})`}}timeBucketExpression(Y){let Q=Y.match(/^(\d+)([mhd])$/);if(!Q)throw Error(`Invalid interval format: ${Y}. Use format like "1h", "1d", "15m"`);let[,X,J]=Q;if(!X||!J)throw Error(`Invalid interval format: ${Y}`);let G=parseInt(X,10);if(this.databaseType==="postgres"){let K;switch(J){case"m":K="minute";break;case"h":K="hour";break;case"d":K="day";break;default:K="hour"}if(G===1)return P4`date_trunc(${K}, timestamp::timestamp)`;let Z=G*(J==="m"?60:J==="h"?3600:86400);return P4`to_timestamp(floor(extract(epoch from timestamp::timestamp) / ${Z}) * ${Z})`}switch(J){case"m":if(G===1)return P4`strftime('%Y-%m-%d %H:%M:00', timestamp)`;return P4`strftime('%Y-%m-%d %H:', timestamp) || printf('%02d', (cast(strftime('%M', timestamp) as integer) / ${G}) * ${G}) || ':00'`;case"h":if(G===1)return P4`strftime('%Y-%m-%d %H:00:00', timestamp)`;return P4`strftime('%Y-%m-%d ', timestamp) || printf('%02d', (cast(strftime('%H', timestamp) as integer) / ${G}) * ${G}) || ':00:00'`;case"d":return P4`strftime('%Y-%m-%d 00:00:00', timestamp)`;default:return P4`strftime('%Y-%m-%d %H:00:00', timestamp)`}}applyPropertyFilters(Y,Q){let{properties:X,propertyKeys:J,propertyPatterns:G,propertyInValues:K}=Q;if(X)for(let[W,Z]of Object.entries(X)){let H=this.jsonExtract("properties",W);Y=Y.where(H,"=",Z)}if(J&&J.length>0)for(let W of J){let Z=this.jsonExtract("properties",W);Y=Y.where(Z,"is not",null)}if(G)for(let[W,Z]of Object.entries(G)){let H=this.jsonExtract("properties",W),$=this.databaseType==="postgres"?"ilike":"like";Y=Y.where(H,$,Z)}if(K)for(let[W,Z]of Object.entries(K)){let H=this.jsonExtractWithCommas("properties",W),F=`%,${this.escapeLikeWildcards(Z)},%`,V=P4`${H} LIKE ${F} ESCAPE '\\'`;Y=Y.where(V)}return Y}toDbRow(Y){return{id:Y.id||d8("log"),organization_id:Y.organizationId,connection_id:Y.connectionId,connection_title:Y.connectionTitle,tool_name:Y.toolName,input:JSON.stringify(Y.input),output:JSON.stringify(Y.output),is_error:Y.isError?1:0,error_message:Y.errorMessage||null,duration_ms:Y.durationMs,timestamp:Y.timestamp instanceof Date?Y.timestamp.toISOString():Y.timestamp,user_id:Y.userId||null,request_id:Y.requestId,user_agent:Y.userAgent||null,virtual_mcp_id:Y.virtualMcpId||null,properties:Y.properties?JSON.stringify(Y.properties):null}}fromDbRow(Y){let Q=typeof Y.input==="string"?JSON.parse(Y.input):Y.input,X=typeof Y.output==="string"?JSON.parse(Y.output):Y.output,J=typeof Y.timestamp==="string"?new Date(Y.timestamp):Y.timestamp,G=Y.properties?typeof Y.properties==="string"?JSON.parse(Y.properties):Y.properties:null;return{id:Y.id,organizationId:Y.organization_id,connectionId:Y.connection_id,connectionTitle:Y.connection_title,toolName:Y.tool_name,input:Q,output:X,isError:Y.is_error===1,errorMessage:Y.error_message,durationMs:Y.duration_ms,timestamp:J,userId:Y.user_id,requestId:Y.request_id,userAgent:Y.user_agent,virtualMcpId:Y.virtual_mcp_id,properties:G}}}LG();class $N1{db;constructor(Y){this.db=Y}async create(Y,Q,X){let J=d8("dash"),G=new Date().toISOString();return await this.db.insertInto("monitoring_dashboards").values({id:J,organization_id:Y,name:X.name,description:X.description??null,filters:X.filters?JSON.stringify(X.filters):null,widgets:JSON.stringify(X.widgets),created_by:Q,created_at:G,updated_at:G}).execute(),{id:J,organizationId:Y,name:X.name,description:X.description??null,filters:X.filters??null,widgets:X.widgets,createdBy:Q,createdAt:G,updatedAt:G}}async get(Y){let Q=await this.db.selectFrom("monitoring_dashboards").selectAll().where("id","=",Y).executeTakeFirst();if(!Q)return null;return this.fromDbRow(Q)}async list(Y){return(await this.db.selectFrom("monitoring_dashboards").selectAll().where("organization_id","=",Y).orderBy("created_at","desc").execute()).map((X)=>this.fromDbRow(X))}async update(Y,Q){let J={updated_at:new Date().toISOString()};if(Q.name!==void 0)J.name=Q.name;if(Q.description!==void 0)J.description=Q.description;if(Q.filters!==void 0)J.filters=Q.filters?JSON.stringify(Q.filters):null;if(Q.widgets!==void 0)J.widgets=JSON.stringify(Q.widgets);await this.db.updateTable("monitoring_dashboards").set(J).where("id","=",Y).execute();let G=await this.get(Y);if(!G)throw Error(`Dashboard ${Y} not found after update`);return G}async delete(Y){await this.db.deleteFrom("monitoring_dashboards").where("id","=",Y).execute()}fromDbRow(Y){let Q=Y.filters?typeof Y.filters==="string"?JSON.parse(Y.filters):Y.filters:null,X=typeof Y.widgets==="string"?JSON.parse(Y.widgets):Y.widgets;return{id:Y.id,organizationId:Y.organization_id,name:Y.name,description:Y.description,filters:Q,widgets:X,createdBy:Y.created_by,createdAt:Y.created_at instanceof Date?Y.created_at.toISOString():Y.created_at,updatedAt:Y.updated_at instanceof Date?Y.updated_at.toISOString():Y.updated_at}}}class FN1{db;constructor(Y){this.db=Y}async get(Y){let Q=await this.db.selectFrom("organization_settings").selectAll().where("organizationId","=",Y).executeTakeFirst();if(!Q)return null;return{organizationId:Q.organizationId,sidebar_items:Q.sidebar_items?typeof Q.sidebar_items==="string"?JSON.parse(Q.sidebar_items):Q.sidebar_items:null,enabled_plugins:Q.enabled_plugins?typeof Q.enabled_plugins==="string"?JSON.parse(Q.enabled_plugins):Q.enabled_plugins:null,createdAt:Q.createdAt,updatedAt:Q.updatedAt}}async upsert(Y,Q){let X=new Date().toISOString(),J=Q?.sidebar_items?JSON.stringify(Q.sidebar_items):null,G=Q?.enabled_plugins?JSON.stringify(Q.enabled_plugins):null;await this.db.insertInto("organization_settings").values({organizationId:Y,sidebar_items:J,enabled_plugins:G,createdAt:X,updatedAt:X}).onConflict((W)=>W.column("organizationId").doUpdateSet({sidebar_items:J?J:void 0,enabled_plugins:G?G:void 0,updatedAt:X})).execute();let K=await this.get(Y);if(!K)return{organizationId:Y,sidebar_items:Q?.sidebar_items??null,enabled_plugins:Q?.enabled_plugins??null,createdAt:X,updatedAt:X};return K}}BV1();LG();class VN1{db;constructor(Y){this.db=Y}parseRow(Y){return{id:Y.id,projectId:Y.project_id,connectionId:Y.connection_id,createdAt:Y.created_at}}async list(Y){return(await this.db.selectFrom("project_connections").selectAll().where("project_id","=",Y).orderBy("created_at","asc").execute()).map((X)=>this.parseRow(X))}async add(Y,Q){let X=new Date().toISOString(),J=d8("pc"),G=await this.db.insertInto("project_connections").values({id:J,project_id:Y,connection_id:Q,created_at:X}).onConflict((W)=>W.columns(["project_id","connection_id"]).doNothing()).returning(["id","project_id","connection_id","created_at"]).executeTakeFirst();if(G)return this.parseRow(G);let K=await this.db.selectFrom("project_connections").selectAll().where("project_id","=",Y).where("connection_id","=",Q).executeTakeFirst();if(!K)throw Error(`Project connection not found after conflict: project=${Y}, connection=${Q}`);return this.parseRow(K)}async remove(Y,Q){return((await this.db.deleteFrom("project_connections").where("project_id","=",Y).where("connection_id","=",Q).executeTakeFirst()).numDeletedRows??0n)>0n}}LG();class qN1{db;constructor(Y){this.db=Y}parseRow(Y){return{id:Y.id,projectId:Y.project_id,pluginId:Y.plugin_id,connectionId:Y.connection_id,settings:Y.settings?typeof Y.settings==="string"?JSON.parse(Y.settings):Y.settings:null,createdAt:Y.created_at,updatedAt:Y.updated_at}}async list(Y){return(await this.db.selectFrom("project_plugin_configs").selectAll().where("project_id","=",Y).execute()).map((X)=>this.parseRow(X))}async get(Y,Q){let X=await this.db.selectFrom("project_plugin_configs").selectAll().where("project_id","=",Y).where("plugin_id","=",Q).executeTakeFirst();return X?this.parseRow(X):null}async upsert(Y,Q,X){let J=new Date().toISOString();if(await this.get(Y,Q)){let Z={updated_at:J};if(X.connectionId!==void 0)Z.connection_id=X.connectionId;if(X.settings!==void 0)Z.settings=X.settings?JSON.stringify(X.settings):null;await this.db.updateTable("project_plugin_configs").set(Z).where("project_id","=",Y).where("plugin_id","=",Q).execute();let H=await this.get(Y,Q);if(!H)throw Error("Failed to update project plugin config");return H}let K=d8("ppc");await this.db.insertInto("project_plugin_configs").values({id:K,project_id:Y,plugin_id:Q,connection_id:X.connectionId??null,settings:X.settings?JSON.stringify(X.settings):null,created_at:J,updated_at:J}).execute();let W=await this.get(Y,Q);if(!W)throw Error("Failed to create project plugin config");return W}async delete(Y,Q){return((await this.db.deleteFrom("project_plugin_configs").where("project_id","=",Y).where("plugin_id","=",Q).executeTakeFirst()).numDeletedRows??0n)>0n}async getBoundConnectionsForProjects(Y){if(Y.length===0)return new Map;let Q=await this.db.selectFrom("project_plugin_configs").innerJoin("connections","connections.id","project_plugin_configs.connection_id").select(["project_plugin_configs.project_id","connections.id as connection_id","connections.title","connections.icon"]).where("project_plugin_configs.project_id","in",Y).where("project_plugin_configs.connection_id","is not",null).execute(),X=new Map;for(let J of Q){let G=J.project_id;if(!X.has(G))X.set(G,[]);X.get(G).push({id:J.connection_id,title:J.title,icon:J.icon})}return X}}LG();class BN1{db;constructor(Y){this.db=Y}async listOrgTags(Y){return(await this.db.selectFrom("organization_tags").selectAll().where("organization_id","=",Y).orderBy("name","asc").execute()).map((X)=>this.tagFromDbRow(X))}async getTag(Y){let Q=await this.db.selectFrom("organization_tags").selectAll().where("id","=",Y).executeTakeFirst();return Q?this.tagFromDbRow(Q):null}async getTagByName(Y,Q){let X=await this.db.selectFrom("organization_tags").selectAll().where("organization_id","=",Y).where("name","=",Q).executeTakeFirst();return X?this.tagFromDbRow(X):null}async createTag(Y,Q){let X=d8("tag"),J=new Date().toISOString();await this.db.insertInto("organization_tags").values({id:X,organization_id:Y,name:Q,created_at:J}).onConflict((K)=>K.columns(["organization_id","name"]).doNothing()).execute();let G=await this.getTagByName(Y,Q);if(!G)throw Error(`Failed to create or retrieve tag: ${Q}`);return G}async deleteTag(Y){await this.db.deleteFrom("organization_tags").where("id","=",Y).execute()}async getMemberTags(Y){return(await this.db.selectFrom("member_tags").innerJoin("organization_tags","organization_tags.id","member_tags.tag_id").select(["organization_tags.id","organization_tags.organization_id","organization_tags.name","organization_tags.created_at"]).where("member_tags.member_id","=",Y).orderBy("organization_tags.name","asc").execute()).map((X)=>this.tagFromDbRow(X))}async setMemberTags(Y,Q){await this.db.transaction().execute(async(X)=>{if(await X.deleteFrom("member_tags").where("member_id","=",Y).execute(),Q.length>0){let J=new Date().toISOString();await X.insertInto("member_tags").values(Q.map((G)=>({id:d8("mtag"),member_id:Y,tag_id:G,created_at:J}))).execute()}})}async addMemberTag(Y,Q){let X=new Date().toISOString();await this.db.insertInto("member_tags").values({id:d8("mtag"),member_id:Y,tag_id:Q,created_at:X}).onConflict((J)=>J.columns(["member_id","tag_id"]).doNothing()).execute()}async removeMemberTag(Y,Q){await this.db.deleteFrom("member_tags").where("member_id","=",Y).where("tag_id","=",Q).execute()}async verifyMemberOrg(Y,Q){return await this.db.selectFrom("member").select("id").where("id","=",Y).where("organizationId","=",Q).executeTakeFirst()!==void 0}async getUserTagsInOrg(Y,Q){return(await this.db.selectFrom("member").innerJoin("member_tags","member_tags.member_id","member.id").innerJoin("organization_tags","organization_tags.id","member_tags.tag_id").select(["organization_tags.id","organization_tags.organization_id","organization_tags.name","organization_tags.created_at"]).where("member.userId","=",Y).where("member.organizationId","=",Q).orderBy("organization_tags.name","asc").execute()).map((J)=>this.tagFromDbRow(J))}async getMembersWithTags(Y){let Q=await this.db.selectFrom("member").leftJoin("member_tags","member_tags.member_id","member.id").leftJoin("organization_tags","organization_tags.id","member_tags.tag_id").select(["member.id as memberId","organization_tags.name as tagName"]).where("member.organizationId","=",Y).execute(),X=new Map;for(let J of Q){if(!X.has(J.memberId))X.set(J.memberId,[]);if(J.tagName)X.get(J.memberId).push(J.tagName)}return X}tagFromDbRow(Y){return{id:Y.id,organizationId:Y.organization_id,name:Y.name,createdAt:Y.created_at}}}class UN1{db;constructor(Y){this.db=Y}async findById(Y,Q){let X=await this.db.selectFrom("user").select(["user.id","user.name","user.email","user.image","user.createdAt","user.updatedAt"]).where("user.id","=",Y).where((J)=>J.exists(J.selectFrom("member as m1").innerJoin("member as m2","m1.organizationId","m2.organizationId").select("m1.id").where("m1.userId","=",Y).where("m2.userId","=",Q))).executeTakeFirst();if(!X)return null;return{id:X.id,name:X.name,email:X.email,role:"",createdAt:X.createdAt,updatedAt:X.updatedAt,image:X.image??void 0}}}Vv();OP();KY();zz();dS();var Lr=new JQ,zN1=[404,401,406];async function Gi0(Y,Q){return(await Q.storage.connections.findById(Y))?.connection_url??null}function Mu4(Y){let Q=Y.toLowerCase();return Q.includes("resource_metadata=")||Q.includes("invalid_token")||Q.includes("oauth")}async function Wi0(Y,Q={}){try{let X=await fetch(Y,{method:"POST",headers:{...Q,"Content-Type":"application/json",Accept:"application/json, text/event-stream"},body:JSON.stringify({jsonrpc:"2.0",id:0,method:"initialize",params:{protocolVersion:"2025-06-18",capabilities:{},clientInfo:{name:"mcp-mesh-proxy",version:"1.0.0"}}})});if(X.status===401){let J=X.headers.get("WWW-Authenticate");if(J){if(Mu4(J))return J}if(await wu4(Y))return'Bearer realm="mcp"'}return null}catch{return null}}async function wu4(Y){try{let Q=new URL(Y),X=new URL("/.well-known/oauth-authorization-server",Q.origin),J=await fetch(X.toString(),{method:"GET",headers:{Accept:"application/json"}});if(J.ok){let G=await J.json();if(G.authorization_endpoint||G.token_endpoint||G.issuer)return!0}return!1}catch{return!1}}async function Mr(Y){let X=new URL(Y).pathname;if(X.endsWith("/"))X=X.slice(0,-1);let J=new URL(Y);J.pathname=`${X}/.well-known/oauth-protected-resource`;let G=await fetch(J.toString(),{method:"GET",headers:{Accept:"application/json"}});if(G.ok)return G;if(!zN1.includes(G.status))return G;let K=new URL(Y);if(K.pathname=`/.well-known/oauth-protected-resource${X}`,G=await fetch(K.toString(),{method:"GET",headers:{Accept:"application/json"}}),!zN1.includes(G.status))return G;let W=new URL(Y);return W.pathname="/.well-known/oauth-protected-resource",G=await fetch(W.toString(),{method:"GET",headers:{Accept:"application/json"}}),G}async function Au4(Y,Q){let X=await Gi0(Y,Q);if(!X)return null;let J;try{J=new URL(X).origin}catch{return null}try{let G=await Mr(X);if(G.ok){let K=await G.json();if(K.authorization_servers?.[0])return K.authorization_servers[0]}}catch{}return J}async function Zi0(Y){let Q=Y.get("meshContext");if(!Q)Q=await DF.create(Y.req.raw),Y.set("meshContext",Q);return Q}async function Ki0({error:Y,reqUrl:Q,connectionId:X,connectionUrl:J,headers:G}){let K=Y.message?.toLowerCase()??"";if(!(Y.status===401||Y.code===401||Y.message?.includes("401")||K.includes("unauthorized")||K.includes("invalid_token")||K.includes("api key required")||K.includes("api-key required")))return null;if(Boolean(await Wi0(J,G)))return new Response(null,{status:401,headers:{"WWW-Authenticate":`Bearer realm="mcp",resource_metadata="${Q.origin}/mcp/${X}/.well-known/oauth-protected-resource"`}});return new Response(JSON.stringify({error:"unauthorized",message:"Authentication required but server does not support OAuth"}),{status:401,headers:{"Content-Type":"application/json"}})}var Hi0=(Y)=>{if(!(Y.hostname==="localhost"||Y.hostname.endsWith(".localhost")||Y.hostname==="127.0.0.1"))Y.protocol="https:";return Y},$i0=async(Y)=>{let Q=Y.req.param("connectionId"),X=await Zi0(Y),J=await Gi0(Q,X);if(!J)return Y.json({error:"Connection not found"},404);let G=Hi0(new URL(Y.req.url)),K=`${G.origin}/mcp/${Q}`,W=`${G.origin}/oauth-proxy/${Q}`;try{let Z=await Mr(J);if(!Z.ok&&zN1.includes(Z.status)){if(await Wi0(J))return new Response(JSON.stringify({resource:K,authorization_servers:[W],bearer_methods_supported:["header"],scopes_supported:["*"]}),{status:200,headers:{"Content-Type":"application/json"}});return new Response(Z.body,{status:Z.status,statusText:Z.statusText,headers:{"Content-Type":"application/json"}})}if(!Z.ok)return new Response(Z.body,{status:Z.status,statusText:Z.statusText,headers:{"Content-Type":"application/json"}});let H=await Z.json();if("issuer"in H&&!("resource"in H)&&(("authorization_endpoint"in H)||("token_endpoint"in H))){let V={resource:K,authorization_servers:[W],bearer_methods_supported:["header"],scopes_supported:"scopes_supported"in H&&Array.isArray(H.scopes_supported)&&H.scopes_supported.length>0?H.scopes_supported:["*"]};return new Response(JSON.stringify(V),{status:200,headers:{"Content-Type":"application/json"}})}let F={...H,resource:K,authorization_servers:[W]};return new Response(JSON.stringify(F),{status:Z.status,statusText:Z.statusText,headers:{"Content-Type":"application/json"}})}catch(Z){let H=Z;return console.error("[oauth-proxy] Failed to proxy OAuth protected resource metadata:",H),Y.json({error:"Failed to proxy OAuth metadata",message:H.message},502)}};Lr.get("/.well-known/oauth-protected-resource/mcp/:connectionId",(Y)=>$i0(Y));Lr.get("/mcp/:connectionId/.well-known/oauth-protected-resource",(Y)=>$i0(Y));async function DN1(Y){let X=new URL(Y).pathname;if(X.endsWith("/"))X=X.slice(0,-1);let J=X!==""&&X!=="/",G=[];if(J){let W=new URL(Y);W.pathname=`/.well-known/oauth-authorization-server${X}`,G.push(W);let Z=new URL(Y);Z.pathname=`/.well-known/openid-configuration${X}`,G.push(Z);let H=new URL(Y);H.pathname=`${X}/.well-known/openid-configuration`,G.push(H)}else{let W=new URL(Y);W.pathname="/.well-known/oauth-authorization-server",G.push(W);let Z=new URL(Y);Z.pathname="/.well-known/openid-configuration",G.push(Z)}let K=null;for(let W of G){if(K=await fetch(W.toString(),{method:"GET",headers:{Accept:"application/json"}}),K.ok)return K;if(K.status!==404&&K.status!==401)return K}return K}Lr.get("/.well-known/oauth-authorization-server/oauth-proxy/:connectionId",async(Y)=>{let Q=Y.req.param("connectionId"),X=await Zi0(Y),J=await Au4(Q,X);if(!J)return Y.json({error:"Connection not found or no auth server"},404);try{let G=await DN1(J);if(!G.ok)return new Response(G.body,{status:G.status,statusText:G.statusText,headers:{"Content-Type":"application/json"}});let K=await G.json(),Z=`${Hi0(new URL(Y.req.url)).origin}/oauth-proxy/${Q}`,H={...K,authorization_endpoint:K.authorization_endpoint?`${Z}/authorize`:void 0,token_endpoint:K.token_endpoint?`${Z}/token`:void 0,registration_endpoint:K.registration_endpoint?`${Z}/register`:void 0};return new Response(JSON.stringify(H),{status:200,headers:{"Content-Type":"application/json"}})}catch(G){let K=G;return console.error("[oauth-proxy] Failed to proxy auth server metadata:",K),Y.json({error:"Failed to proxy auth server metadata",message:K.message},502)}});var Fi0=Lr;KY();dS();Uv();var ON1=new JQ;async function wr(Y,Q){let X=Y.get("meshContext");try{let J=Y.req.header("x-org-id"),G=Y.req.header("x-org-slug"),K=J?J:G?await X.db.selectFrom("organization").select("id").where("slug","=",G).executeTakeFirst().then((U)=>U?.id):null,W=Q?Q:K?UM(K):null;if(!W)return Y.json({error:"Agent ID or organization ID is required"},400);let Z=await X.storage.virtualMcps.findById(W,K??void 0);if(!Z)return Y.json({error:"Agent not found"},404);if(K&&Z.organization_id!==K)return Y.json({error:"Agent not found"},404);if(Z.status!=="active")return Y.json({error:`Agent is inactive: ${Z.id??"Decopilot"}`},503);X.connectionId=Z.id??void 0;let H=await X.db.selectFrom("organization").select(["id","slug","name"]).where("id","=",Z.organization_id).executeTakeFirst();if(H)X.organization={id:H.id,slug:H.slug,name:H.name};let $=gD1(Y.req.query("mode")),F=await $B(Z,X,$),V=wz(F,{name:`mcp-virtual-mcp-${Z.title??"Decopilot"}`,version:"1.0.0"},{capabilities:{tools:{},resources:{},prompts:{}},instructions:Z.metadata?.instructions??void 0}),B=new u$({enableJsonResponse:Y.req.header("Accept")?.includes("application/json")??!1});return await V.connect(B),await B.handleRequest(Y.req.raw)}catch(J){let G=J;return console.error("[virtual-mcp] Error handling virtual MCP request:",G),Y.json({error:"Internal server error",message:G.message},500)}}ON1.all("/gateway/:virtualMcpId?",async(Y)=>{let Q=Y.req.param("virtualMcpId")||Y.req.header("x-virtual-mcp-id");return wr(Y,Q)});ON1.all("/virtual-mcp/:virtualMcpId?",async(Y)=>{let Q=Y.req.param("virtualMcpId")||Y.req.header("x-virtual-mcp-id");return wr(Y,Q)});var Vi0=ON1;var Ar=new JQ,qi0=300000;function NO(Y){let Q={client:{callTool:Y.callTool.bind(Y),listTools:Y.listTools.bind(Y)}};if("callStreamableTool"in Y&&Y.callStreamableTool)return{...Q,callStreamableTool:Y.callStreamableTool.bind(Y)};return Q}async function Bi0(Y,Q,{superUser:X}){let J=typeof Y==="string"?await Q.storage.connections.findById(Y,Q.organization?.id):Y;if(!J)throw Error("Connection not found");if(Q.organization&&J.organization_id!==Q.organization.id)throw Error("Connection does not belong to the active organization");if(!Q.organization){let V=await Q.db.selectFrom("organization").select(["id","slug","name"]).where("id","=",J.organization_id).executeTakeFirst();Q.organization=V?{id:V.id,slug:V.slug,name:V.name}:{id:J.organization_id}}if(J.status!=="active")throw Error(`Connection inactive: ${J.status}`);let G=await _5(J,Q,X),K=lD1(G,J),W=K.getServerCapabilities()??{tools:{},resources:{},prompts:{}},Z=wz(K,{name:"mcp-mesh-proxy-client",version:"1.0.0"},{capabilities:W,instructions:K.getInstructions()}),{client:H,server:$}=w71();await Z.connect($);let F=new G5({name:"mcp-mesh-proxy-client",version:"1.0.0"});return await F.connect(H),F}async function Ui0(Y,Q){return Bi0(Y,Q,{superUser:!1})}async function NN1(Y,Q){return Bi0(Y,Q,{superUser:!0})}Ar.all("/",async(Y)=>{return wr(Y,void 0)});Ar.all("/:connectionId",async(Y)=>{let Q=Y.req.param("connectionId"),X=Y.get("meshContext");try{try{let J=await X.storage.connections.findById(Q,X.organization?.id);if(!J)throw Error("Connection not found");if(X.organization&&J.organization_id!==X.organization.id)throw Error("Connection does not belong to the active organization");if(X.organization??={id:J.organization_id},J.status!=="active")throw Error(`Connection inactive: ${J.status}`);let G=await mD1(J,X,!1),K=new u$({enableJsonResponse:Y.req.raw.headers.get("Accept")?.includes("application/json")??!1});return await G.connect(K),await K.handleRequest(Y.req.raw)}catch(J){let G=await X.storage.connections.findById(Q,X.organization?.id);if(G?.connection_url){let K=await Ki0({error:J,reqUrl:new URL(Y.req.raw.url),connectionId:Q,connectionUrl:G.connection_url,headers:{}});if(K)return K}throw J}}catch(J){return zi0(J,Y)}});var zi0=(Y,Q)=>{if(Y.message.includes("not found"))return Q.json({error:Y.message},404);if(Y.message.includes("does not belong to the active organization"))return Q.json({error:"Connection not found"},404);if(Y.message.includes("inactive"))return Q.json({error:Y.message},503);return Q.json({error:"Internal server error",message:Y.message},500)};Ar.all("/:connectionId/call-tool/:toolName",async(Y)=>{let Q=Y.req.param("connectionId"),X=Y.req.param("toolName"),J=Y.get("meshContext");try{let G=await J.storage.connections.findById(Q,J.organization?.id);if(!G)return Y.json({error:"Connection not found"},404);let W=await(await _5(G,J,!1)).callTool({name:X,arguments:await Y.req.json()});if(W instanceof Response)return W;if(W.isError)return new Response(JSON.stringify(W.content),{headers:{"Content-Type":"application/json"},status:500});return new Response(JSON.stringify(W.structuredContent??W.content),{headers:{"Content-Type":"application/json"}})}catch(G){return zi0(G,Y)}});var Di0=Ar;Or();LG();LG();var Oi0=()=>d8("msg"),Pr=32768,Er=50,Tr="New chat",Ni0=30,Li0=15,Mi0=["user_ask","subtask"];function LN1(Y){let X="You are decopilot, an AI assistant running inside decocms (deco context management system).";if(Y?.trim())X+=`
|
|
1371
1371
|
|
|
1372
1372
|
---
|
|
1373
1373
|
|
|
@@ -1387,7 +1387,7 @@ Example input: "How do I connect to a database?"
|
|
|
1387
1387
|
Example output: Database Connection Setup
|
|
1388
1388
|
|
|
1389
1389
|
Example input: "What tools are available?"
|
|
1390
|
-
Example output: Available Tools Overview`;function Cr(Y){return typeof Y==="string"?Y:Y.toISOString()}class Lv{db;constructor(Y){this.db=Y}async create(Y){let Q=Y.id??d8("thrd"),X=new Date().toISOString();if(!Y.organization_id)throw Error("organization_id is required");if(!Y.created_by)throw Error("created_by is required");if(!Y.title)Y.title=Tr;let J={id:Q,organization_id:Y.organization_id,title:Y.title,description:Y.description??null,status:Y.status??"completed",created_at:X,updated_at:X,created_by:Y.created_by,updated_by:Y.updated_by??null},G=await this.db.insertInto("threads").values(J).returningAll().executeTakeFirstOrThrow();return this.threadFromDbRow(G)}async get(Y){let Q=await this.db.selectFrom("threads").selectAll().where("id","=",Y).executeTakeFirst();return Q?this.threadFromDbRow(Q):null}async update(Y,Q){let J={updated_at:new Date().toISOString()};if(Q.title!==void 0)J.title=Q.title;if(Q.description!==void 0)J.description=Q.description;if(Q.updated_by!==void 0)J.updated_by=Q.updated_by;if(Q.hidden!==void 0)J.hidden=Q.hidden;if(Q.status!==void 0)J.status=Q.status;await this.db.updateTable("threads").set(J).where("id","=",Y).execute();let G=await this.get(Y);if(!G)throw Error("Thread not found after update");return G}async delete(Y){await this.db.deleteFrom("threads").where("id","=",Y).execute()}async list(Y,Q,X){let J=this.db.selectFrom("threads").selectAll().where("organization_id","=",Y).where("hidden","=",!1).orderBy("updated_at","desc");if(Q)J=J.where("created_by","=",Q);let G=this.db.selectFrom("threads").select((Z)=>Z.fn.count("id").as("count")).where("organization_id","=",Y).where("hidden","=",!1);if(Q)G=G.where("created_by","=",Q);if(X?.limit)J=J.limit(X.limit);if(X?.offset)J=J.offset(X.offset);let[K,W]=await Promise.all([J.execute(),G.executeTakeFirst()]);return{threads:K.map((Z)=>this.threadFromDbRow(Z)),total:Number(W?.count||0)}}async saveMessages(Y){let Q=new Date().toISOString(),X=Y[0]?.thread_id;if(!X)throw Error("thread_id is required when creating multiple messages");let J=new Map;for(let Z of Y){let H=J.get(Z.id);if(H&&H.thread_id!==Z.thread_id)throw Error(`Duplicate message id "${Z.id}" with conflicting thread_ids: "${H.thread_id}" vs "${Z.thread_id}"`);J.set(Z.id,Z)}let G=[...J.values()],K=G.find((Z)=>Z.thread_id!==X);if(K)throw Error(`All messages must target the same thread. Expected thread_id "${X}", but message "${K.id}" has thread_id "${K.thread_id}"`);let W=G.map((Z)=>({id:Z.id,thread_id:X,metadata:Z.metadata?JSON.stringify(Z.metadata):null,parts:JSON.stringify(Z.parts),role:Z.role,created_at:Z.created_at??Q,updated_at:Q}));await this.db.transaction().execute(async(Z)=>{await Z.insertInto("thread_messages").values(W).onConflict((H)=>H.column("id").doUpdateSet(($)=>({metadata:$.ref("excluded.metadata"),parts:$.ref("excluded.parts"),role:$.ref("excluded.role"),updated_at:$.ref("excluded.updated_at")}))).execute(),await Z.updateTable("threads").set({updated_at:Q}).where("id","=",X).execute()})}async listMessages(Y,Q){let X=Q?.sort??"asc",J=this.db.selectFrom("thread_messages").selectAll().where("thread_id","=",Y).orderBy("created_at",X).orderBy("id",X),G=this.db.selectFrom("thread_messages").select((Z)=>Z.fn.count("id").as("count")).where("thread_id","=",Y);if(Q?.limit)J=J.limit(Q.limit);if(Q?.offset)J=J.offset(Q.offset);let[K,W]=await Promise.all([J.execute(),G.executeTakeFirst()]);return{messages:K.map((Z)=>this.messageFromDbRow(Z)),total:Number(W?.count||0)}}threadFromDbRow(Y){return{id:Y.id,organization_id:Y.organization_id,title:Y.title,description:Y.description,status:Y.status,created_at:Cr(Y.created_at),updated_at:Cr(Y.updated_at),created_by:Y.created_by,updated_by:Y.updated_by,hidden:!!Y.hidden}}messageFromDbRow(Y){let Q,X;try{Q=Y.metadata?JSON.parse(Y.metadata):void 0}catch(J){console.error(`Failed to parse metadata for message ${Y.id}:`,Y.metadata,J),Q=void 0}try{X=typeof Y.parts==="string"?JSON.parse(Y.parts):Y.parts}catch(J){console.error(`Failed to parse parts for message ${Y.id}:`,Y.parts,J),X=[]}return{id:Y.id,thread_id:Y.thread_id,metadata:Q,parts:X,role:Y.role,created_at:Cr(Y.created_at),updated_at:Cr(Y.updated_at)}}}CD1();function Pu4(Y){if(!Y)return;try{let Q=JSON.parse(Y);if(typeof Q!=="object"||Q===null||Array.isArray(Q))return;let X={};for(let[J,G]of Object.entries(Q))if(typeof G==="string")X[J]=G;return Object.keys(X).length>0?X:void 0}catch{return}}function Eu4(Y,Q){for(let[X,J]of Object.entries(Q)){let G=Y[X];if(!G||G.length===0){let K=Y["*"];if(!K||K.length===0)return!1;if(K.includes("*"))continue;for(let W of J)if(!K.includes(W))return!1;continue}if(G.includes("*"))continue;for(let K of J)if(!G.includes(K))return!1}return!0}function Tu4(Y){let{auth:Q,headers:X,role:J,permissions:G,userId:K}=Y,W=Q.api.hasPermission;return{hasPermission:async(Z)=>{if(J&&JN1.includes(J))return!0;if(G)return Eu4(G,Z);if(!W)return console.error("[Auth] hasPermission API not available"),!1;try{if((await W({headers:X,body:{permission:Z}}))?.success===!0)return!0;let $={};for(let V of Object.keys(Z))$[V]=["*"];return(await W({headers:X,body:{permission:$}}))?.success===!0}catch(H){return console.error("[Auth] Permission check failed:",H),!1}},organization:{create:async(Z)=>{return Q.api.createOrganization({headers:X,body:Z})},update:async(Z)=>{return Q.api.updateOrganization({headers:X,body:Z})},delete:async(Z)=>{await Q.api.deleteOrganization({headers:X,body:{organizationId:Z}})},get:async(Z)=>{return Q.api.getFullOrganization({headers:X,query:Z?{organizationId:Z}:void 0})},list:async(Z)=>{return Q.api.listOrganizations({headers:X,query:Z?{userId:Z}:void 0})},addMember:async(Z)=>{return Q.api.addMember({headers:X,body:Z})},removeMember:async(Z)=>{await Q.api.removeMember({headers:X,body:Z})},listMembers:async(Z)=>{return Q.api.listMembers({headers:X,query:Z?{organizationId:Z.organizationId,limit:Z.limit,offset:Z.offset}:void 0})},updateMemberRole:async(Z)=>{return Q.api.updateMemberRole({headers:X,body:Z})}},apiKey:{create:async(Z)=>{return Q.api.createApiKey({body:{...Z,userId:K}})},list:async()=>{return Q.api.listApiKeys({headers:X})},update:async(Z)=>{return Q.api.updateApiKey({body:{...Z,userId:K}})},delete:async(Z)=>{await Q.api.deleteApiKey({headers:X,body:{keyId:Z}})}}}}async function Cu4(Y,Q,X){if(JN1.includes(X))return;let J=await Y.selectFrom("organizationRole").select(["permission"]).where("organizationId","=",Q).where("role","=",X).executeTakeFirst();if(!J?.permission)return;try{return JSON.parse(J.permission)}catch{console.error(`[Auth] Failed to parse permissions for role: ${X}`);return}}async function Ru4(Y,Q,X,J=Pi0){let G=Y.headers.get("Authorization");try{let K=new Headers(Y.headers);K.set("X-MCP-Session-Auth","true");let W=await J.measure("auth_get_mcp_session",()=>Q.api.getMcpSession({headers:K}));if(W){let Z=W.userId,H=await J.measure("auth_query_membership",()=>X.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["member.role","member.organizationId","organization.id as orgId","organization.slug as orgSlug","organization.name as orgName"]).where("member.userId","=",Z).executeTakeFirst()),$=H?.role,F=H?{id:H.orgId,slug:H.orgSlug,name:H.orgName}:void 0,V;if(H&&$)V=await J.measure("auth_fetch_role_permissions",()=>Cu4(X,H.organizationId,$));return{user:{id:Z,role:$},role:$,permissions:V,organization:F}}}catch(K){console.error("[Auth] OAuth session check failed:",K)}if(G?.startsWith("Bearer ")){let K=G.replace("Bearer ","").trim();try{let W=await J.measure("auth_verify_mesh_jwt",()=>gp0(K));if(W){let Z,H=W.metadata?.organizationId;if(W.sub&&H)Z=(await J.measure("auth_query_membership",()=>X.selectFrom("member").select(["member.role"]).where("member.userId","=",W.sub).where("member.organizationId","=",H).executeTakeFirst()))?.role;return{user:{id:W.sub,connectionId:W.metadata?.connectionId,role:Z},role:Z,permissions:W.permissions,organization:W.metadata?.organizationId?{id:W.metadata?.organizationId}:void 0}}}catch{}try{let W=await J.measure("auth_verify_api_key",()=>Q.api.verifyApiKey({body:{key:K}}));if(W?.valid&&W.key){let Z=W.key.metadata?.organization,H=W.key.permissions,$,F=W.key.userId;if(F&&Z?.id)$=(await J.measure("auth_query_membership",()=>X.selectFrom("member").select(["member.role"]).where("member.userId","=",F).where("member.organizationId","=",Z.id).executeTakeFirst()))?.role;return{apiKeyId:W.key.id,user:{id:W.key.userId,role:$},role:$,permissions:H,organization:Z?{id:Z.id,slug:Z.slug,name:Z.name}:void 0}}}catch(W){console.error("[Auth] API key check failed:",W)}}try{let K=new Headers(Y.headers);K.delete("Authorization");let W=await J.measure("auth_get_session",()=>Q.api.getSession({headers:K}));if(W){let Z,H;if(W.session.activeOrganizationId){let $=await J.measure("auth_get_full_organization",()=>Q.api.getFullOrganization({headers:K}).catch(()=>null));if($)Z={id:$.id,slug:$.slug,name:$.name},H=$.members?.find((V)=>V.userId===W.user.id)?.role;else Z={id:W.session.activeOrganizationId,slug:"",name:""}}return{user:{id:W.user.id,email:W.user.email,role:H},role:H,organization:Z}}}catch(K){let W=K;console.error("[Auth] Session check failed:",JSON.stringify({message:W.message,body:W.body,stack:W.stack},null,2))}return{user:void 0}}var Ai0,DF={set:(Y)=>{Ai0=Y},create:async(Y,Q)=>{return await Ai0(Y,Q)}},Pi0={measure:async(Y,Q)=>{return await Q()}},Iu4=["x-hub-signature-256"];async function Ei0(Y){let Q=new SD(Y.encryption.key),X={connections:new zS(Y.db,Q),organizationSettings:new FN1(Y.db),monitoring:new HN1(Y.db,Y.databaseType),monitoringDashboards:new $N1(Y.db),virtualMcps:new ZN1(Y.db),users:new UN1(Y.db),threads:new Lv(Y.db),tags:new BN1(Y.db),projects:new DS(Y.db),projectConnections:new VN1(Y.db),projectPluginConfigs:new qN1(Y.db)};return async(J,G)=>{let K=G?.timings??Pi0,W=qr(),Z=J?.headers.get("x-caller-id")??void 0,H=J?await Ru4(J,Y.auth,Y.db,K):{user:void 0},$=Tu4({auth:Y.auth,headers:J?.headers??new Headers,role:H.role,permissions:H.permissions,userId:H.user?.id}),F={user:H.user};if(H.apiKeyId)F.apiKey={id:H.apiKeyId,name:"",userId:""};let V=H.organization,B=J?process.env.BASE_URL??`${new URL(J.url).origin}`:H7(),U=new VF(Y.auth,F.user?.id,void 0,$,H.role,"self"),z={timings:K,auth:F,connectionId:Z,organization:V,storage:X,vault:Q,authInstance:Y.auth,boundAuth:$,access:U,db:Y.db,tracer:Y.observability.tracer,meter:Y.observability.meter,baseUrl:B,metadata:{requestId:crypto.randomUUID(),timestamp:new Date,wellKnownForwardableHeaders:Object.fromEntries(Iu4.map((D)=>[D,J?.headers.get(D)??null]).filter(([D,L])=>L!==null)),userAgent:J?.headers.get("x-mesh-client")||J?.headers.get("User-Agent")||void 0,ipAddress:(J?.headers.get("CF-Connecting-IP")||J?.headers.get("X-Forwarded-For"))??void 0,properties:Pu4(J?.headers.get("x-mesh-properties"))},eventBus:Y.eventBus,createMCPProxy:async(D)=>{return await Ui0(D,z)},getOrCreateClient:W};return z}}En();class Ti0{db;constructor(Y){this.db=Y}async publishEvent(Y){let Q=new Date().toISOString();return await this.db.insertInto("events").values({id:Y.id,organization_id:Y.organizationId,type:Y.type,source:Y.source,specversion:"1.0",subject:Y.subject??null,time:Y.time,datacontenttype:Y.datacontenttype??"application/json",dataschema:Y.dataschema??null,data:Y.data?JSON.stringify(Y.data):null,cron:Y.cron??null,status:"pending",attempts:0,last_error:null,next_retry_at:null,created_at:Q,updated_at:Q}).execute(),{id:Y.id,organizationId:Y.organizationId,type:Y.type,source:Y.source,specversion:"1.0",subject:Y.subject??null,time:Y.time,datacontenttype:Y.datacontenttype??"application/json",dataschema:Y.dataschema??null,data:Y.data??null,cron:Y.cron??null,status:"pending",attempts:0,lastError:null,nextRetryAt:null,createdAt:Q,updatedAt:Q}}async subscribe(Y){let Q=this.db.selectFrom("event_subscriptions").selectAll().where("organization_id","=",Y.organizationId).where("connection_id","=",Y.connectionId).where("event_type","=",Y.eventType);if(Y.publisher)Q=Q.where("publisher","=",Y.publisher);else Q=Q.where("publisher","is",null);if(Y.filter)Q=Q.where("filter","=",Y.filter);else Q=Q.where("filter","is",null);let X=await Q.executeTakeFirst();if(X)return{id:X.id,organizationId:X.organization_id,connectionId:X.connection_id,publisher:X.publisher,eventType:X.event_type,filter:X.filter,enabled:X.enabled===1,createdAt:X.created_at,updatedAt:X.updated_at};let J=new Date().toISOString();return await this.db.insertInto("event_subscriptions").values({id:Y.id,organization_id:Y.organizationId,connection_id:Y.connectionId,publisher:Y.publisher??null,event_type:Y.eventType,filter:Y.filter??null,enabled:1,created_at:J,updated_at:J}).execute(),{id:Y.id,organizationId:Y.organizationId,connectionId:Y.connectionId,publisher:Y.publisher??null,eventType:Y.eventType,filter:Y.filter??null,enabled:!0,createdAt:J,updatedAt:J}}async unsubscribe(Y,Q){return{success:((await this.db.deleteFrom("event_subscriptions").where("id","=",Y).where("organization_id","=",Q).executeTakeFirst()).numDeletedRows??0n)>0n}}async listSubscriptions(Y,Q){let X=this.db.selectFrom("event_subscriptions").selectAll().where("organization_id","=",Y);if(Q)X=X.where("connection_id","=",Q);return(await X.execute()).map((G)=>({id:G.id,organizationId:G.organization_id,connectionId:G.connection_id,publisher:G.publisher,eventType:G.event_type,filter:G.filter,enabled:G.enabled===1,createdAt:G.created_at,updatedAt:G.updated_at}))}async getSubscription(Y,Q){let X=await this.db.selectFrom("event_subscriptions").selectAll().where("id","=",Y).where("organization_id","=",Q).executeTakeFirst();if(!X)return null;return{id:X.id,organizationId:X.organization_id,connectionId:X.connection_id,publisher:X.publisher,eventType:X.event_type,filter:X.filter,enabled:X.enabled===1,createdAt:X.created_at,updatedAt:X.updated_at}}async getMatchingSubscriptions(Y){return(await this.db.selectFrom("event_subscriptions").selectAll().where("organization_id","=",Y.organizationId).where("enabled","=",1).where("event_type","=",Y.type).where((X)=>X.or([X("publisher","is",null),X("publisher","=",Y.source)])).execute()).map((X)=>({id:X.id,organizationId:X.organization_id,connectionId:X.connection_id,publisher:X.publisher,eventType:X.event_type,filter:X.filter,enabled:X.enabled===1,createdAt:X.created_at,updatedAt:X.updated_at}))}async createDeliveries(Y,Q,X){if(Q.length===0)return;let J=new Date().toISOString(),G=X??null,K=Q.map((W)=>({id:crypto.randomUUID(),event_id:Y,subscription_id:W,status:"pending",attempts:0,last_error:null,delivered_at:null,next_retry_at:G,created_at:J}));await this.db.insertInto("event_deliveries").values(K).execute()}async claimPendingDeliveries(Y){let Q=new Date().toISOString(),X;try{X=(await this.db.updateTable("event_deliveries").set({status:"processing"}).where("id","in",(K)=>K.selectFrom("event_deliveries as d").innerJoin("event_subscriptions as s","s.id","d.subscription_id").select("d.id").where("d.status","=","pending").where("s.enabled","=",1).where((W)=>W.or([W("d.next_retry_at","is",null),W("d.next_retry_at","<=",Q)])).orderBy("d.created_at","asc").limit(Y)).where("status","=","pending").returning(["id"]).execute()).map((K)=>K.id)}catch{let G=await this.db.selectFrom("event_deliveries as d").innerJoin("event_subscriptions as s","s.id","d.subscription_id").select(["d.id"]).where("d.status","=","pending").where("s.enabled","=",1).where((K)=>K.or([K("d.next_retry_at","is",null),K("d.next_retry_at","<=",Q)])).orderBy("d.created_at","asc").limit(Y).execute();if(G.length===0)return[];X=G.map((K)=>K.id),await this.db.updateTable("event_deliveries").set({status:"processing"}).where("id","in",X).where("status","=","pending").execute()}if(X.length===0)return[];return(await this.db.selectFrom("event_deliveries as d").innerJoin("events as e","e.id","d.event_id").innerJoin("event_subscriptions as s","s.id","d.subscription_id").select(["d.id as delivery_id","d.event_id","d.subscription_id","d.status as delivery_status","d.attempts as delivery_attempts","d.last_error as delivery_last_error","d.delivered_at","d.next_retry_at as delivery_next_retry_at","d.created_at as delivery_created_at","e.organization_id","e.type","e.source","e.specversion","e.subject","e.time","e.datacontenttype","e.dataschema","e.data","e.cron","e.status as event_status","e.attempts as event_attempts","e.last_error as event_last_error","e.next_retry_at","e.created_at as event_created_at","e.updated_at as event_updated_at","s.connection_id","s.publisher","s.event_type","s.filter","s.enabled","s.created_at as subscription_created_at","s.updated_at as subscription_updated_at"]).where("d.id","in",X).where("d.status","=","processing").execute()).map((G)=>({delivery:{id:G.delivery_id,eventId:G.event_id,subscriptionId:G.subscription_id,status:G.delivery_status,attempts:G.delivery_attempts,lastError:G.delivery_last_error,deliveredAt:G.delivered_at,nextRetryAt:G.delivery_next_retry_at,createdAt:G.delivery_created_at},event:{id:G.event_id,organizationId:G.organization_id,type:G.type,source:G.source,specversion:G.specversion,subject:G.subject,time:G.time,datacontenttype:G.datacontenttype,dataschema:G.dataschema,data:G.data?JSON.parse(G.data):null,cron:G.cron,status:G.event_status,attempts:G.event_attempts,lastError:G.event_last_error,nextRetryAt:G.next_retry_at,createdAt:G.event_created_at,updatedAt:G.event_updated_at},subscription:{id:G.subscription_id,organizationId:G.organization_id,connectionId:G.connection_id,publisher:G.publisher,eventType:G.event_type,filter:G.filter,enabled:G.enabled===1,createdAt:G.subscription_created_at,updatedAt:G.subscription_updated_at}}))}async markDeliveriesDelivered(Y){if(Y.length===0)return;let Q=new Date().toISOString();await this.db.updateTable("event_deliveries").set({status:"delivered",delivered_at:Q}).where("id","in",Y).execute()}async markDeliveriesFailed(Y,Q,X=20,J=1000,G=3600000){if(Y.length===0)return;for(let K of Y){let W=await this.db.selectFrom("event_deliveries").select(["attempts"]).where("id","=",K).executeTakeFirst();if(!W)continue;let Z=W.attempts+1;if(Z>=X)await this.db.updateTable("event_deliveries").set({attempts:Z,last_error:Q,status:"failed",next_retry_at:null}).where("id","=",K).execute();else{let H=Math.min(J*Math.pow(2,Z-1),G),$=new Date(Date.now()+H).toISOString();await this.db.updateTable("event_deliveries").set({attempts:Z,last_error:Q,status:"pending",next_retry_at:$}).where("id","=",K).execute()}}}async updateEventStatus(Y){let Q=await this.db.selectFrom("event_deliveries").select(["status"]).where("event_id","=",Y).execute();if(Q.length===0)return;let X=Q.every((K)=>K.status==="delivered"),J=Q.some((K)=>K.status==="failed"),G=Q.some((K)=>K.status==="pending"||K.status==="processing");if(X)await this.db.updateTable("events").set({status:"delivered",updated_at:new Date().toISOString()}).where("id","=",Y).execute();else if(J&&!G)await this.db.updateTable("events").set({status:"failed",updated_at:new Date().toISOString()}).where("id","=",Y).execute()}async resetStuckDeliveries(){let Y=await this.db.updateTable("event_deliveries").set({status:"pending"}).where("status","=","processing").executeTakeFirst();return Number(Y.numUpdatedRows??0)}async getEvent(Y,Q){let X=await this.db.selectFrom("events").selectAll().where("id","=",Y).where("organization_id","=",Q).executeTakeFirst();if(!X)return null;return{id:X.id,organizationId:X.organization_id,type:X.type,source:X.source,specversion:X.specversion,subject:X.subject,time:X.time,datacontenttype:X.datacontenttype,dataschema:X.dataschema,data:X.data?JSON.parse(X.data):null,cron:X.cron,status:X.status,attempts:X.attempts,lastError:X.last_error,nextRetryAt:X.next_retry_at,createdAt:X.created_at,updatedAt:X.updated_at}}async findActiveCronEvent(Y,Q,X,J){let G=await this.db.selectFrom("events").selectAll().where("organization_id","=",Y).where("type","=",Q).where("source","=",X).where("cron","=",J).where("status","in",["pending","processing","delivered"]).orderBy("created_at","desc").executeTakeFirst();if(!G)return null;return{id:G.id,organizationId:G.organization_id,type:G.type,source:G.source,specversion:G.specversion,subject:G.subject,time:G.time,datacontenttype:G.datacontenttype,dataschema:G.dataschema,data:G.data?JSON.parse(G.data):null,cron:G.cron,status:G.status,attempts:G.attempts,lastError:G.last_error,nextRetryAt:G.next_retry_at,createdAt:G.created_at,updatedAt:G.updated_at}}async cancelEvent(Y,Q,X){let J=await this.db.updateTable("events").set({status:"failed",last_error:"Cancelled by publisher",updated_at:new Date().toISOString()}).where("id","=",Y).where("organization_id","=",Q).where("source","=",X).where("status","in",["pending","processing"]).executeTakeFirst();if((J.numUpdatedRows??0n)>0n)await this.db.updateTable("event_deliveries").set({status:"failed",last_error:"Event cancelled by publisher"}).where("event_id","=",Y).where("status","in",["pending","processing"]).execute();return{success:(J.numUpdatedRows??0n)>0n}}async scheduleRetryWithoutAttemptIncrement(Y,Q){if(Y.length===0)return;let X=new Date(Date.now()+Q).toISOString();await this.db.updateTable("event_deliveries").set({status:"pending",next_retry_at:X}).where("id","in",Y).execute()}async ackDelivery(Y,Q,X){if(!await this.db.selectFrom("events").select(["id"]).where("id","=",Y).where("organization_id","=",Q).executeTakeFirst())return{success:!1};let K=((await this.db.updateTable("event_deliveries").set({status:"delivered",delivered_at:new Date().toISOString()}).where("event_id","=",Y).where("status","in",["pending","processing"]).where((W)=>W.exists(W.selectFrom("event_subscriptions").select("id").whereRef("event_subscriptions.id","=","event_deliveries.subscription_id").where("event_subscriptions.connection_id","=",X).where("event_subscriptions.organization_id","=",Q))).executeTakeFirst()).numUpdatedRows??0n)>0n;if(K)await this.updateEventStatus(Y);return{success:K}}async syncSubscriptions(Y){let{organizationId:Q,connectionId:X,subscriptions:J}=Y,G=(w,E)=>{return`${w}::${E??""}`},K=await this.listSubscriptions(Q,X),W=new Map;for(let w of K)W.set(G(w.eventType,w.publisher),w);let Z=new Map;for(let w of J)Z.set(G(w.eventType,w.publisher),w);let H=new Date().toISOString(),$=[],F=[],V=[],B=0;for(let[w,E]of Z){let T=W.get(w);if(!T)$.push({id:crypto.randomUUID(),organization_id:Q,connection_id:X,event_type:E.eventType,publisher:E.publisher??null,filter:E.filter??null,enabled:1,created_at:H,updated_at:H});else{let C=T.filter??null,P=E.filter??null;if(C!==P)F.push({id:T.id,filter:P});else B++}}for(let[w,E]of W)if(!Z.has(w))V.push(E.id);if($.length>0)await this.db.insertInto("event_subscriptions").values($).execute();if(F.length>0)await Promise.all(F.map((w)=>this.db.updateTable("event_subscriptions").set({filter:w.filter,updated_at:H}).where("id","=",w.id).execute()));if(V.length>0)await this.db.deleteFrom("event_subscriptions").where("id","in",V).execute();let U=$.length,z=F.length,D=V.length,L=await this.listSubscriptions(Q,X);return{created:U,updated:z,deleted:D,unchanged:B,subscriptions:L}}}function Ci0(Y){return new Ti0(Y)}function hJ(Y,Q,X,J,G,K,W,Z){return hJ.fromTZ(hJ.tp(Y,Q,X,J,G,K,W),Z)}hJ.fromTZISO=(Y,Q,X)=>hJ.fromTZ(ju4(Y,Q),X);hJ.fromTZ=function(Y,Q){let X=new Date(Date.UTC(Y.y,Y.m-1,Y.d,Y.h,Y.i,Y.s)),J=MN1(Y.tz,X),G=new Date(X.getTime()-J),K=MN1(Y.tz,G);if(K-J===0)return G;{let W=new Date(X.getTime()-K),Z=MN1(Y.tz,W);if(Z-K===0)return W;if(!Q&&Z-K>0)return W;if(Q)throw Error("Invalid date passed to fromTZ()");return G}};hJ.toTZ=function(Y,Q){let X=Y.toLocaleString("en-US",{timeZone:Q}).replace(/[\u202f]/," "),J=new Date(X);return{y:J.getFullYear(),m:J.getMonth()+1,d:J.getDate(),h:J.getHours(),i:J.getMinutes(),s:J.getSeconds(),tz:Q}};hJ.tp=(Y,Q,X,J,G,K,W)=>({y:Y,m:Q,d:X,h:J,i:G,s:K,tz:W});function MN1(Y,Q=new Date){let X=Q.toLocaleString("en-US",{timeZone:Y,timeZoneName:"shortOffset"}).split(" ").slice(-1)[0],J=Q.toLocaleString("en-US").replace(/[\u202f]/," ");return Date.parse(`${J} GMT`)-Date.parse(`${J} ${X}`)}function ju4(Y,Q){let X=new Date(Date.parse(Y));if(isNaN(X))throw Error("minitz: Invalid ISO8601 passed to parser.");let J=Y.substring(9);return Y.includes("Z")||J.includes("-")||J.includes("+")?hJ.tp(X.getUTCFullYear(),X.getUTCMonth()+1,X.getUTCDate(),X.getUTCHours(),X.getUTCMinutes(),X.getUTCSeconds(),"Etc/UTC"):hJ.tp(X.getFullYear(),X.getMonth()+1,X.getDate(),X.getHours(),X.getMinutes(),X.getSeconds(),Q)}hJ.minitz=hJ;var wN1=32,wv=31|wN1,Si0=[1,2,4,8,16],Ri0=class{pattern;timezone;second;minute;hour;day;month;dayOfWeek;lastDayOfMonth;starDOM;starDOW;constructor(Y,Q){this.pattern=Y,this.timezone=Q,this.second=Array(60).fill(0),this.minute=Array(60).fill(0),this.hour=Array(24).fill(0),this.day=Array(31).fill(0),this.month=Array(12).fill(0),this.dayOfWeek=Array(7).fill(0),this.lastDayOfMonth=!1,this.starDOM=!1,this.starDOW=!1,this.parse()}parse(){if(!(typeof this.pattern=="string"||this.pattern instanceof String))throw TypeError("CronPattern: Pattern has to be of type string.");this.pattern.indexOf("@")>=0&&(this.pattern=this.handleNicknames(this.pattern).trim());let Y=this.pattern.replace(/\s+/g," ").split(" ");if(Y.length<5||Y.length>6)throw TypeError("CronPattern: invalid configuration format ('"+this.pattern+"'), exactly five or six space separated parts are required.");if(Y.length===5&&Y.unshift("0"),Y[3].indexOf("L")>=0&&(Y[3]=Y[3].replace("L",""),this.lastDayOfMonth=!0),Y[3]=="*"&&(this.starDOM=!0),Y[4].length>=3&&(Y[4]=this.replaceAlphaMonths(Y[4])),Y[5].length>=3&&(Y[5]=this.replaceAlphaDays(Y[5])),Y[5]=="*"&&(this.starDOW=!0),this.pattern.indexOf("?")>=0){let Q=new bW(new Date,this.timezone).getDate(!0);Y[0]=Y[0].replace("?",Q.getSeconds().toString()),Y[1]=Y[1].replace("?",Q.getMinutes().toString()),Y[2]=Y[2].replace("?",Q.getHours().toString()),this.starDOM||(Y[3]=Y[3].replace("?",Q.getDate().toString())),Y[4]=Y[4].replace("?",(Q.getMonth()+1).toString()),this.starDOW||(Y[5]=Y[5].replace("?",Q.getDay().toString()))}this.throwAtIllegalCharacters(Y),this.partToArray("second",Y[0],0,1),this.partToArray("minute",Y[1],0,1),this.partToArray("hour",Y[2],0,1),this.partToArray("day",Y[3],-1,1),this.partToArray("month",Y[4],-1,1),this.partToArray("dayOfWeek",Y[5],0,wv),this.dayOfWeek[7]&&(this.dayOfWeek[0]=this.dayOfWeek[7])}partToArray(Y,Q,X,J){let G=this[Y],K=Y==="day"&&this.lastDayOfMonth;if(Q===""&&!K)throw TypeError("CronPattern: configuration entry "+Y+" ("+Q+") is empty, check for trailing spaces.");if(Q==="*")return G.fill(J);let W=Q.split(",");if(W.length>1)for(let Z=0;Z<W.length;Z++)this.partToArray(Y,W[Z],X,J);else Q.indexOf("-")!==-1&&Q.indexOf("/")!==-1?this.handleRangeWithStepping(Q,Y,X,J):Q.indexOf("-")!==-1?this.handleRange(Q,Y,X,J):Q.indexOf("/")!==-1?this.handleStepping(Q,Y,X,J):Q!==""&&this.handleNumber(Q,Y,X,J)}throwAtIllegalCharacters(Y){for(let Q=0;Q<Y.length;Q++)if((Q===5?/[^/*0-9,\-#L]+/:/[^/*0-9,-]+/).test(Y[Q]))throw TypeError("CronPattern: configuration entry "+Q+" ("+Y[Q]+") contains illegal characters.")}handleNumber(Y,Q,X,J){let G=this.extractNth(Y,Q),K=parseInt(G[0],10)+X;if(isNaN(K))throw TypeError("CronPattern: "+Q+" is not a number: '"+Y+"'");this.setPart(Q,K,G[1]||J)}setPart(Y,Q,X){if(!Object.prototype.hasOwnProperty.call(this,Y))throw TypeError("CronPattern: Invalid part specified: "+Y);if(Y==="dayOfWeek"){if(Q===7&&(Q=0),Q<0||Q>6)throw RangeError("CronPattern: Invalid value for dayOfWeek: "+Q);this.setNthWeekdayOfMonth(Q,X);return}if(Y==="second"||Y==="minute"){if(Q<0||Q>=60)throw RangeError("CronPattern: Invalid value for "+Y+": "+Q)}else if(Y==="hour"){if(Q<0||Q>=24)throw RangeError("CronPattern: Invalid value for "+Y+": "+Q)}else if(Y==="day"){if(Q<0||Q>=31)throw RangeError("CronPattern: Invalid value for "+Y+": "+Q)}else if(Y==="month"&&(Q<0||Q>=12))throw RangeError("CronPattern: Invalid value for "+Y+": "+Q);this[Y][Q]=X}handleRangeWithStepping(Y,Q,X,J){let G=this.extractNth(Y,Q),K=G[0].match(/^(\d+)-(\d+)\/(\d+)$/);if(K===null)throw TypeError("CronPattern: Syntax error, illegal range with stepping: '"+Y+"'");let[,W,Z,H]=K,$=parseInt(W,10)+X,F=parseInt(Z,10)+X,V=parseInt(H,10);if(isNaN($))throw TypeError("CronPattern: Syntax error, illegal lower range (NaN)");if(isNaN(F))throw TypeError("CronPattern: Syntax error, illegal upper range (NaN)");if(isNaN(V))throw TypeError("CronPattern: Syntax error, illegal stepping: (NaN)");if(V===0)throw TypeError("CronPattern: Syntax error, illegal stepping: 0");if(V>this[Q].length)throw TypeError("CronPattern: Syntax error, steps cannot be greater than maximum value of part ("+this[Q].length+")");if($>F)throw TypeError("CronPattern: From value is larger than to value: '"+Y+"'");for(let B=$;B<=F;B+=V)this.setPart(Q,B,G[1]||J)}extractNth(Y,Q){let X=Y,J;if(X.includes("#")){if(Q!=="dayOfWeek")throw Error("CronPattern: nth (#) only allowed in day-of-week field");J=X.split("#")[1],X=X.split("#")[0]}return[X,J]}handleRange(Y,Q,X,J){let G=this.extractNth(Y,Q),K=G[0].split("-");if(K.length!==2)throw TypeError("CronPattern: Syntax error, illegal range: '"+Y+"'");let W=parseInt(K[0],10)+X,Z=parseInt(K[1],10)+X;if(isNaN(W))throw TypeError("CronPattern: Syntax error, illegal lower range (NaN)");if(isNaN(Z))throw TypeError("CronPattern: Syntax error, illegal upper range (NaN)");if(W>Z)throw TypeError("CronPattern: From value is larger than to value: '"+Y+"'");for(let H=W;H<=Z;H++)this.setPart(Q,H,G[1]||J)}handleStepping(Y,Q,X,J){let G=this.extractNth(Y,Q),K=G[0].split("/");if(K.length!==2)throw TypeError("CronPattern: Syntax error, illegal stepping: '"+Y+"'");K[0]===""&&(K[0]="*");let W=0;K[0]!=="*"&&(W=parseInt(K[0],10)+X);let Z=parseInt(K[1],10);if(isNaN(Z))throw TypeError("CronPattern: Syntax error, illegal stepping: (NaN)");if(Z===0)throw TypeError("CronPattern: Syntax error, illegal stepping: 0");if(Z>this[Q].length)throw TypeError("CronPattern: Syntax error, max steps for part is ("+this[Q].length+")");for(let H=W;H<this[Q].length;H+=Z)this.setPart(Q,H,G[1]||J)}replaceAlphaDays(Y){return Y.replace(/-sun/gi,"-7").replace(/sun/gi,"0").replace(/mon/gi,"1").replace(/tue/gi,"2").replace(/wed/gi,"3").replace(/thu/gi,"4").replace(/fri/gi,"5").replace(/sat/gi,"6")}replaceAlphaMonths(Y){return Y.replace(/jan/gi,"1").replace(/feb/gi,"2").replace(/mar/gi,"3").replace(/apr/gi,"4").replace(/may/gi,"5").replace(/jun/gi,"6").replace(/jul/gi,"7").replace(/aug/gi,"8").replace(/sep/gi,"9").replace(/oct/gi,"10").replace(/nov/gi,"11").replace(/dec/gi,"12")}handleNicknames(Y){let Q=Y.trim().toLowerCase();return Q==="@yearly"||Q==="@annually"?"0 0 1 1 *":Q==="@monthly"?"0 0 1 * *":Q==="@weekly"?"0 0 * * 0":Q==="@daily"?"0 0 * * *":Q==="@hourly"?"0 * * * *":Y}setNthWeekdayOfMonth(Y,Q){if(typeof Q!="number"&&Q==="L")this.dayOfWeek[Y]=this.dayOfWeek[Y]|wN1;else if(Q===wv)this.dayOfWeek[Y]=wv;else if(Q<6&&Q>0)this.dayOfWeek[Y]=this.dayOfWeek[Y]|Si0[Q-1];else throw TypeError(`CronPattern: nth weekday out of range, should be 1-5 or L. Value: ${Q}, Type: ${typeof Q}`)}},Ii0=[31,28,31,30,31,30,31,31,30,31,30,31],OF=[["month","year",0],["day","month",-1],["hour","day",0],["minute","hour",0],["second","minute",0]],bW=class Y{tz;ms;second;minute;hour;day;month;year;constructor(Q,X){if(this.tz=X,Q&&Q instanceof Date)if(!isNaN(Q))this.fromDate(Q);else throw TypeError("CronDate: Invalid date passed to CronDate constructor");else if(Q===void 0)this.fromDate(new Date);else if(Q&&typeof Q=="string")this.fromString(Q);else if(Q instanceof Y)this.fromCronDate(Q);else throw TypeError("CronDate: Invalid type ("+typeof Q+") passed to CronDate constructor")}isNthWeekdayOfMonth(Q,X,J,G){let K=new Date(Date.UTC(Q,X,J)).getUTCDay(),W=0;for(let Z=1;Z<=J;Z++)new Date(Date.UTC(Q,X,Z)).getUTCDay()===K&&W++;if(G&wv&&Si0[W-1]&G)return!0;if(G&wN1){let Z=new Date(Date.UTC(Q,X+1,0)).getUTCDate();for(let H=J+1;H<=Z;H++)if(new Date(Date.UTC(Q,X,H)).getUTCDay()===K)return!1;return!0}return!1}fromDate(Q){if(this.tz!==void 0)if(typeof this.tz=="number")this.ms=Q.getUTCMilliseconds(),this.second=Q.getUTCSeconds(),this.minute=Q.getUTCMinutes()+this.tz,this.hour=Q.getUTCHours(),this.day=Q.getUTCDate(),this.month=Q.getUTCMonth(),this.year=Q.getUTCFullYear(),this.apply();else{let X=hJ.toTZ(Q,this.tz);this.ms=Q.getMilliseconds(),this.second=X.s,this.minute=X.i,this.hour=X.h,this.day=X.d,this.month=X.m-1,this.year=X.y}else this.ms=Q.getMilliseconds(),this.second=Q.getSeconds(),this.minute=Q.getMinutes(),this.hour=Q.getHours(),this.day=Q.getDate(),this.month=Q.getMonth(),this.year=Q.getFullYear()}fromCronDate(Q){this.tz=Q.tz,this.year=Q.year,this.month=Q.month,this.day=Q.day,this.hour=Q.hour,this.minute=Q.minute,this.second=Q.second,this.ms=Q.ms}apply(){if(this.month>11||this.day>Ii0[this.month]||this.hour>59||this.minute>59||this.second>59||this.hour<0||this.minute<0||this.second<0){let Q=new Date(Date.UTC(this.year,this.month,this.day,this.hour,this.minute,this.second,this.ms));return this.ms=Q.getUTCMilliseconds(),this.second=Q.getUTCSeconds(),this.minute=Q.getUTCMinutes(),this.hour=Q.getUTCHours(),this.day=Q.getUTCDate(),this.month=Q.getUTCMonth(),this.year=Q.getUTCFullYear(),!0}else return!1}fromString(Q){if(typeof this.tz=="number"){let X=hJ.fromTZISO(Q);this.ms=X.getUTCMilliseconds(),this.second=X.getUTCSeconds(),this.minute=X.getUTCMinutes(),this.hour=X.getUTCHours(),this.day=X.getUTCDate(),this.month=X.getUTCMonth(),this.year=X.getUTCFullYear(),this.apply()}else return this.fromDate(hJ.fromTZISO(Q,this.tz))}findNext(Q,X,J,G){let K=this[X],W;J.lastDayOfMonth&&(this.month!==1?W=Ii0[this.month]:W=new Date(Date.UTC(this.year,this.month+1,0,0,0,0,0)).getUTCDate());let Z=!J.starDOW&&X=="day"?new Date(Date.UTC(this.year,this.month,1,0,0,0,0)).getUTCDay():void 0;for(let H=this[X]+G;H<J[X].length;H++){let $=J[X][H];if(X==="day"&&J.lastDayOfMonth&&H-G==W&&($=1),X==="day"&&!J.starDOW){let F=J.dayOfWeek[(Z+(H-G-1))%7];if(F&&F&wv)F=this.isNthWeekdayOfMonth(this.year,this.month,H-G,F)?1:0;else if(F)throw Error(`CronDate: Invalid value for dayOfWeek encountered. ${F}`);Q.legacyMode&&!J.starDOM?$=$||F:$=$&&F}if($)return this[X]=H-G,K!==this[X]?2:1}return 3}recurse(Q,X,J){let G=this.findNext(X,OF[J][0],Q,OF[J][2]);if(G>1){let K=J+1;for(;K<OF.length;)this[OF[K][0]]=-OF[K][2],K++;if(G===3)return this[OF[J][1]]++,this[OF[J][0]]=-OF[J][2],this.apply(),this.recurse(Q,X,0);if(this.apply())return this.recurse(Q,X,J-1)}return J+=1,J>=OF.length?this:this.year>=3000?null:this.recurse(Q,X,J)}increment(Q,X,J){return this.second+=X.interval!==void 0&&X.interval>1&&J?X.interval:1,this.ms=0,this.apply(),this.recurse(Q,X,0)}getDate(Q){return Q||this.tz===void 0?new Date(this.year,this.month,this.day,this.hour,this.minute,this.second,this.ms):typeof this.tz=="number"?new Date(Date.UTC(this.year,this.month,this.day,this.hour,this.minute-this.tz,this.second,this.ms)):hJ.fromTZ(hJ.tp(this.year,this.month+1,this.day,this.hour,this.minute,this.second,this.tz),!1)}getTime(){return this.getDate(!1).getTime()}};function Su4(Y){if(Y===void 0&&(Y={}),delete Y.name,Y.legacyMode=Y.legacyMode===void 0?!0:Y.legacyMode,Y.paused=Y.paused===void 0?!1:Y.paused,Y.maxRuns=Y.maxRuns===void 0?1/0:Y.maxRuns,Y.catch=Y.catch===void 0?!1:Y.catch,Y.interval=Y.interval===void 0?0:parseInt(Y.interval.toString(),10),Y.utcOffset=Y.utcOffset===void 0?void 0:parseInt(Y.utcOffset.toString(),10),Y.unref=Y.unref===void 0?!1:Y.unref,Y.startAt&&(Y.startAt=new bW(Y.startAt,Y.timezone)),Y.stopAt&&(Y.stopAt=new bW(Y.stopAt,Y.timezone)),Y.interval!==null){if(isNaN(Y.interval))throw Error("CronOptions: Supplied value for interval is not a number");if(Y.interval<0)throw Error("CronOptions: Supplied value for interval can not be negative")}if(Y.utcOffset!==void 0){if(isNaN(Y.utcOffset))throw Error("CronOptions: Invalid value passed for utcOffset, should be number representing minutes offset from UTC.");if(Y.utcOffset<-870||Y.utcOffset>870)throw Error("CronOptions: utcOffset out of bounds.");if(Y.utcOffset!==void 0&&Y.timezone)throw Error("CronOptions: Combining 'utcOffset' with 'timezone' is not allowed.")}if(Y.unref!==!0&&Y.unref!==!1)throw Error("CronOptions: Unref should be either true, false or undefined(false).");return Y}function Mv(Y){return Object.prototype.toString.call(Y)==="[object Function]"||typeof Y=="function"||Y instanceof Function}function ku4(Y){return Mv(Y)}function vu4(Y){typeof Deno<"u"&&typeof Deno.unrefTimer<"u"?Deno.unrefTimer(Y):Y&&typeof Y.unref<"u"&&Y.unref()}var ji0=30000,Rr=[],Ir=class{name;options;_states;fn;constructor(Y,Q,X){let J,G;if(Mv(Q))G=Q;else if(typeof Q=="object")J=Q;else if(Q!==void 0)throw Error("Cron: Invalid argument passed for optionsIn. Should be one of function, or object (options).");if(Mv(X))G=X;else if(typeof X=="object")J=X;else if(X!==void 0)throw Error("Cron: Invalid argument passed for funcIn. Should be one of function, or object (options).");if(this.name=J?.name,this.options=Su4(J),this._states={kill:!1,blocking:!1,previousRun:void 0,currentRun:void 0,once:void 0,currentTimeout:void 0,maxRuns:J?J.maxRuns:void 0,paused:J?J.paused:!1,pattern:new Ri0("* * * * *")},Y&&(Y instanceof Date||typeof Y=="string"&&Y.indexOf(":")>0)?this._states.once=new bW(Y,this.options.timezone||this.options.utcOffset):this._states.pattern=new Ri0(Y,this.options.timezone),this.name){if(Rr.find((K)=>K.name===this.name))throw Error("Cron: Tried to initialize new named job '"+this.name+"', but name already taken.");Rr.push(this)}return G!==void 0&&ku4(G)&&(this.fn=G,this.schedule()),this}nextRun(Y){let Q=this._next(Y);return Q?Q.getDate(!1):null}nextRuns(Y,Q){this._states.maxRuns!==void 0&&Y>this._states.maxRuns&&(Y=this._states.maxRuns);let X=[],J=Q||this._states.currentRun||void 0;for(;Y--&&(J=this.nextRun(J));)X.push(J);return X}getPattern(){return this._states.pattern?this._states.pattern.pattern:void 0}isRunning(){let Y=this.nextRun(this._states.currentRun),Q=!this._states.paused,X=this.fn!==void 0,J=!this._states.kill;return Q&&X&&J&&Y!==null}isStopped(){return this._states.kill}isBusy(){return this._states.blocking}currentRun(){return this._states.currentRun?this._states.currentRun.getDate():null}previousRun(){return this._states.previousRun?this._states.previousRun.getDate():null}msToNext(Y){let Q=this._next(Y);return Q?Y instanceof bW||Y instanceof Date?Q.getTime()-Y.getTime():Q.getTime()-new bW(Y).getTime():null}stop(){this._states.kill=!0,this._states.currentTimeout&&clearTimeout(this._states.currentTimeout);let Y=Rr.indexOf(this);Y>=0&&Rr.splice(Y,1)}pause(){return this._states.paused=!0,!this._states.kill}resume(){return this._states.paused=!1,!this._states.kill}schedule(Y){if(Y&&this.fn)throw Error("Cron: It is not allowed to schedule two functions using the same Croner instance.");Y&&(this.fn=Y);let Q=this.msToNext(),X=this.nextRun(this._states.currentRun);return Q==null||isNaN(Q)||X===null?this:(Q>ji0&&(Q=ji0),this._states.currentTimeout=setTimeout(()=>this._checkTrigger(X),Q),this._states.currentTimeout&&this.options.unref&&vu4(this._states.currentTimeout),this)}async _trigger(Y){if(this._states.blocking=!0,this._states.currentRun=new bW(void 0,this.options.timezone||this.options.utcOffset),this.options.catch)try{this.fn!==void 0&&await this.fn(this,this.options.context)}catch(Q){Mv(this.options.catch)&&this.options.catch(Q,this)}else this.fn!==void 0&&await this.fn(this,this.options.context);this._states.previousRun=new bW(Y,this.options.timezone||this.options.utcOffset),this._states.blocking=!1}async trigger(){await this._trigger()}runsLeft(){return this._states.maxRuns}_checkTrigger(Y){let Q=new Date,X=!this._states.paused&&Q.getTime()>=Y.getTime(),J=this._states.blocking&&this.options.protect;X&&!J?(this._states.maxRuns!==void 0&&this._states.maxRuns--,this._trigger()):X&&J&&Mv(this.options.protect)&&setTimeout(()=>this.options.protect(this),0),this.schedule()}_next(Y){let Q=!!(Y||this._states.currentRun),X=!1;!Y&&this.options.startAt&&this.options.interval&&([Y,Q]=this._calculatePreviousRun(Y,Q),X=!Y),Y=new bW(Y,this.options.timezone||this.options.utcOffset),this.options.startAt&&Y&&Y.getTime()<this.options.startAt.getTime()&&(Y=this.options.startAt);let J=this._states.once||new bW(Y,this.options.timezone||this.options.utcOffset);return!X&&J!==this._states.once&&(J=J.increment(this._states.pattern,this.options,Q)),this._states.once&&this._states.once.getTime()<=Y.getTime()||J===null||this._states.maxRuns!==void 0&&this._states.maxRuns<=0||this._states.kill||this.options.stopAt&&J.getTime()>=this.options.stopAt.getTime()?null:J}_calculatePreviousRun(Y,Q){let X=new bW(void 0,this.options.timezone||this.options.utcOffset),J=Y;if(this.options.startAt.getTime()<=X.getTime()){J=this.options.startAt;let G=J.getTime()+this.options.interval*1000;for(;G<=X.getTime();)J=new bW(J,this.options.timezone||this.options.utcOffset).increment(this._states.pattern,this.options,!0),G=J.getTime()+this.options.interval*1000;Q=!0}return J===null&&(J=void 0),[J,Q]}};class Av{localEmit=null;async start(Y){this.localEmit=Y}broadcast(Y,Q){this.localEmit?.(Y,Q)}async stop(){this.localEmit=null}}var ki0=50,vi0=500;class _i0{listeners=new Map;totalCount=0;strategy=new Av;started=!1;async start(Y){if(this.started){if(!Y)return;await this.stop()}if(Y)this.strategy=Y;await this.strategy.start((Q,X)=>this.localEmit(Q,X)),this.started=!0}async stop(){if(!this.started)return;await this.strategy.stop(),this.started=!1}add(Y){if(this.totalCount>=vi0)return console.warn(`[SSEHub] Total connection limit reached (${vi0})`),null;let Q=this.listeners.get(Y.organizationId);if(!Q)Q=new Map,this.listeners.set(Y.organizationId,Q);if(Q.size>=ki0)return console.warn(`[SSEHub] Per-org connection limit reached for ${Y.organizationId} (${ki0})`),null;return Q.set(Y.id,Y),this.totalCount++,Y.id}remove(Y,Q){let X=this.listeners.get(Y);if(!X)return;if(X.delete(Q)){if(this.totalCount--,X.size===0)this.listeners.delete(Y)}}emit(Y,Q){this.strategy.broadcast(Y,Q)}countForOrg(Y){return this.listeners.get(Y)?.size??0}get count(){return this.totalCount}localEmit(Y,Q){let X=this.listeners.get(Y);if(!X||X.size===0)return;for(let J of X.values()){if(J.typePatterns&&!_u4(Q.type,J.typePatterns))continue;try{J.push(Q)}catch{this.remove(Y,J.id)}}}}function _u4(Y,Q){for(let X of Q){if(X===Y)return!0;if(X.endsWith(".*")){let J=X.slice(0,-1);if(Y.startsWith(J))return!0}}return!1}var xJ=new _i0;function yi0(Y){return{id:Y.id,type:Y.type,source:Y.source,subject:Y.subject,data:Y.data?yu4(Y.data):void 0,time:Y.time}}function yu4(Y){if(typeof Y==="string")try{return JSON.parse(Y)}catch{return Y}return Y}var jr={pollIntervalMs:5000,batchSize:100,maxAttempts:20,retryDelayMs:1000,maxDelayMs:3600000};ea();lS();function fu4(Y){return Y.endsWith("_self")}function bu4(Y){return Y.slice(0,-5)}function fi0(){return async(Y,Q)=>{try{if(fu4(Y)&&GD1()){let W=bu4(Y),Z=await DF.create();if(await id0(Q,{organizationId:W,connectionId:Y,publish:async(F,V,B,U)=>{await Z.eventBus.publish(W,Y,{type:F,subject:V,data:B,deliverAt:U?.deliverAt})},createMCPProxy:async(F)=>{let V=await NN1(F,Z);return{callTool:async(B,U,z)=>{let D=await V.callTool(B,U,z);return{content:D.content,structuredContent:D.structuredContent,isError:D.isError}},close:()=>V.close()}}}))return{success:!0}}let X=await DF.create(),J=await NN1(Y,X),K=await pV1.forClient(NO(J)).ON_EVENTS({events:Q});return{success:K.success,error:K.error,retryAfter:K.retryAfter,results:K.results}}catch(X){let J=X instanceof Error?X.message:String(X);return console.error(`[EventBus] Failed to notify connection ${Y}:`,J),{success:!1,error:J}}}}function bi0(Y){return{specversion:"1.0",id:Y.id,source:Y.source,type:Y.type,time:Y.time,subject:Y.subject??void 0,datacontenttype:Y.datacontenttype,dataschema:Y.dataschema??void 0,data:Y.data??void 0}}function hu4(Y){let Q=new Map;for(let J of Y){let G=J.subscription.connectionId,K=Q.get(G);if(K){if(K.deliveryIds.push(J.delivery.id),!K.seenEventIds.has(J.event.id))K.seenEventIds.add(J.event.id),K.events.push(bi0(J.event))}else Q.set(G,{connectionId:J.subscription.connectionId,deliveryIds:[J.delivery.id],events:[bi0(J.event)],seenEventIds:new Set([J.event.id])})}let X=new Map;for(let[J,G]of Q)X.set(J,{connectionId:G.connectionId,deliveryIds:G.deliveryIds,events:G.events});return X}class AN1{storage;notifySubscriber;running=!1;processing=!1;pendingNotify=!1;config;constructor(Y,Q){this.storage=Y;this.notifySubscriber=fi0(),this.config={...jr,...Q}}async start(){if(this.running)return;let Y=await this.storage.resetStuckDeliveries();if(Y>0)console.log(`[EventBus] Reset ${Y} stuck deliveries from previous shutdown`);this.running=!0}stop(){this.running=!1,console.log("[EventBus] Worker stopped")}isRunning(){return this.running}async processNow(){if(!this.running)return;if(this.processing){this.pendingNotify=!0;return}this.processing=!0;try{do this.pendingNotify=!1,await this.processEvents();while(this.pendingNotify)}catch(Y){console.error("[EventBus] Error processing events:",Y)}finally{this.processing=!1}}async processEvents(){let Y=await this.storage.claimPendingDeliveries(this.config.batchSize);if(Y.length===0)return;let Q=hu4(Y),X=new Set;await Promise.allSettled(Array.from(Q.entries()).map(async([J,G])=>{try{let K=await this.notifySubscriber(G.connectionId,G.events);if(K.results&&Object.keys(K.results).length>0)await this.processPerEventResults(G,K);else if(K.success)await this.storage.markDeliveriesDelivered(G.deliveryIds);else if(K.retryAfter&&K.retryAfter>0)await this.storage.scheduleRetryWithoutAttemptIncrement(G.deliveryIds,K.retryAfter);else await this.storage.markDeliveriesFailed(G.deliveryIds,K.error||"Subscriber returned success=false",this.config.maxAttempts,this.config.retryDelayMs,this.config.maxDelayMs)}catch(K){let W=K instanceof Error?K.message:String(K);console.error(`[EventBus] Failed to notify subscription ${J}:`,W),await this.storage.markDeliveriesFailed(G.deliveryIds,W,this.config.maxAttempts,this.config.retryDelayMs,this.config.maxDelayMs)}for(let K of Y)if(G.deliveryIds.includes(K.delivery.id))X.add(K.event.id)}));for(let J of X)try{await this.storage.updateEventStatus(J);let G=Y.find((K)=>K.event.id===J)?.event;if(G?.cron)await this.scheduleNextCronDelivery(G)}catch(G){console.error(`[EventBus] Failed to update event status ${J}:`,G)}}async processPerEventResults(Y,Q){let X=[],J=new Map,G=[],K=new Map;for(let W=0;W<Y.events.length;W++){let Z=Y.events?.[W];if(!Z)continue;let H=Y.deliveryIds?.[W];if(!H)continue;K.set(Z.id,H)}for(let W of Y.events){let Z=K.get(W.id);if(!Z)continue;let H=Q.results?.[W.id];if(H)if(H.success)X.push(Z);else if(H.retryAfter&&H.retryAfter>0){let $=J.get(H.retryAfter)||[];$.push(Z),J.set(H.retryAfter,$)}else G.push({deliveryId:Z,error:H.error||"Event processing failed"});else if(Q.success)X.push(Z);else if(Q.retryAfter&&Q.retryAfter>0){let $=J.get(Q.retryAfter)||[];$.push(Z),J.set(Q.retryAfter,$)}else G.push({deliveryId:Z,error:Q.error||"Batch processing failed"})}if(X.length>0)await this.storage.markDeliveriesDelivered(X);for(let[W,Z]of J)await this.storage.scheduleRetryWithoutAttemptIncrement(Z,W);if(G.length>0){let W=new Map;for(let{deliveryId:Z,error:H}of G){let $=W.get(H)||[];$.push(Z),W.set(H,$)}for(let[Z,H]of W)await this.storage.markDeliveriesFailed(H,Z,this.config.maxAttempts,this.config.retryDelayMs,this.config.maxDelayMs)}}async scheduleNextCronDelivery(Y){if(!Y.cron)return;try{let X=new Ir(Y.cron).nextRun();if(!X){console.log(`[EventBus] Cron expression for event ${Y.id} has no more runs`);return}let J=X.toISOString(),G=await this.storage.getMatchingSubscriptions(Y);if(G.length===0){console.log(`[EventBus] No subscriptions for cron event ${Y.id}, skipping next delivery`);return}await this.storage.createDeliveries(Y.id,G.map((K)=>K.id),J),console.log(`[EventBus] Scheduled next cron delivery for event ${Y.id} at ${J}`)}catch(Q){console.error(`[EventBus] Failed to schedule next cron delivery for event ${Y.id}:`,Q)}}}class PN1{storage;worker;notifyStrategy;running=!1;constructor(Y){this.storage=Y.storage,this.notifyStrategy=Y.notifyStrategy,this.worker=new AN1(this.storage,Y.config)}async publish(Y,Q,X){if(X.deliverAt&&X.cron)throw Error("Cannot set both deliverAt and cron. Use one or the other.");let J;if(X.cron){try{let F=new Ir(X.cron).nextRun();if(!F)throw Error("Cron expression does not produce a next run time");J=F.toISOString()}catch($){throw Error(`Invalid cron expression: ${$ instanceof Error?$.message:String($)}`)}let H=await this.storage.findActiveCronEvent(Y,X.type,Q,X.cron);if(H)return H}let G=crypto.randomUUID(),K=new Date().toISOString(),W=await this.storage.publishEvent({id:G,organizationId:Y,type:X.type,source:Q,subject:X.subject,time:K,data:X.data,cron:X.cron});xJ.emit(Y,yi0(W));let Z=await this.storage.getMatchingSubscriptions(W);if(Z.length>0){let H=X.deliverAt??J;if(await this.storage.createDeliveries(G,Z.map(($)=>$.id),H),this.notifyStrategy&&!H)await this.notifyStrategy.notify(G).catch(($)=>{console.warn("[EventBus] Notify failed (non-critical):",$)})}return W}async subscribe(Y,Q){return this.storage.subscribe({id:crypto.randomUUID(),organizationId:Y,connectionId:Q.connectionId,publisher:Q.publisher,eventType:Q.eventType,filter:Q.filter})}async unsubscribe(Y,Q){return this.storage.unsubscribe(Q,Y)}async listSubscriptions(Y,Q){return this.storage.listSubscriptions(Y,Q)}async getSubscription(Y,Q){return this.storage.getSubscription(Q,Y)}async getEvent(Y,Q){return this.storage.getEvent(Q,Y)}async cancelEvent(Y,Q,X){return this.storage.cancelEvent(Q,Y,X)}async ackEvent(Y,Q,X){return this.storage.ackDelivery(Q,Y,X)}async syncSubscriptions(Y,Q){return this.storage.syncSubscriptions({organizationId:Y,...Q})}async start(){if(this.running)return;if(this.running=!0,await this.worker.start(),this.notifyStrategy)await this.notifyStrategy.start(()=>{this.worker.processNow().catch((Y)=>{console.error("[EventBus] Error processing after notify:",Y)})});await this.worker.processNow().catch((Y)=>{console.error("[EventBus] Error processing pending events on startup:",Y)})}async stop(){if(!this.running)return;if(this.running=!1,this.worker.stop(),this.notifyStrategy)try{await this.notifyStrategy.stop()}catch(Y){console.error("[EventBus] Error stopping notify strategy:",Y)}console.log("[EventBus] Stopped")}isRunning(){return this.running}}class EN1{options;sub=null;onNotify=null;encoder=new TextEncoder;constructor(Y){this.options=Y}async start(Y){let Q=this.options.getConnection();if(!Q||this.sub)return;this.onNotify=Y,this.sub=Q.subscribe("mesh.events.notify"),(async()=>{for await(let X of this.sub)this.onNotify?.()})().catch((X)=>{console.error("[NatsNotify] Subscription error:",X)}),console.log("[NatsNotify] Started, subscribed to","mesh.events.notify")}async stop(){this.sub?.unsubscribe(),this.sub=null,this.onNotify=null,console.log("[NatsNotify] Stopped")}async notify(Y){let Q=this.options.getConnection();if(!Q)return;try{Q.publish("mesh.events.notify",this.encoder.encode(Y))}catch(X){console.warn("[NatsNotify] Publish failed (non-critical):",X)}}}class TN1{options;sub=null;localEmit=null;originId=crypto.randomUUID();encoder=new TextEncoder;constructor(Y){this.options=Y}async start(Y){this.localEmit=Y;let Q=this.options.getConnection();if(!Q||this.sub)return;this.sub=Q.subscribe("mesh.sse.broadcast");let X=new TextDecoder;(async()=>{for await(let J of this.sub)try{let G=JSON.parse(X.decode(J.data));if(typeof G?.originId!=="string"||typeof G?.organizationId!=="string"||typeof G?.event?.id!=="string"||typeof G?.event?.type!=="string")continue;if(G.originId===this.originId)continue;this.localEmit?.(G.organizationId,G.event)}catch{}})().catch((J)=>{console.error("[NatsSSEBroadcast] Subscription error:",J)}),console.log("[NatsSSEBroadcast] Started, subscribed to","mesh.sse.broadcast")}broadcast(Y,Q){this.localEmit?.(Y,Q);let X=this.options.getConnection();if(!X)return;let J={originId:this.originId,organizationId:Y,event:Q};try{X.publish("mesh.sse.broadcast",this.encoder.encode(JSON.stringify(J)))}catch(G){console.warn("[NatsSSEBroadcast] Publish failed (non-critical):",G)}}async stop(){this.sub?.unsubscribe(),this.sub=null,this.localEmit=null,console.log("[NatsSSEBroadcast] Stopped")}}function CN1(...Y){return{async start(Q){await Promise.all(Y.map((X)=>X.start(Q)))},async stop(){await Promise.all(Y.map((Q)=>Q.stop().catch((X)=>{console.error("[NotifyStrategy] Error stopping strategy:",X)})))},async notify(Q){await Promise.all(Y.map((X)=>X.notify(Q).catch((J)=>{console.warn("[NotifyStrategy] Notify failed (non-critical):",J)})))}}}class RN1{intervalMs;timer=null;onNotify=null;constructor(Y){this.intervalMs=Y}async start(Y){if(this.timer)return;this.onNotify=Y,this.scheduleNext(),console.log(`[Polling] Started polling every ${this.intervalMs}ms`)}async stop(){if(this.timer)clearTimeout(this.timer),this.timer=null,console.log("[Polling] Stopped polling");this.onNotify=null}async notify(Y){if(this.onNotify)this.onNotify()}scheduleNext(){this.timer=setTimeout(()=>{if(this.onNotify)this.onNotify();if(this.timer)this.scheduleNext()},this.intervalMs)}}import{sql as xu4}from"kysely";var LP="mesh_events";class IN1{db;pool;listenClient=null;onNotify=null;constructor(Y,Q){this.db=Y;this.pool=Q}async start(Y){if(this.listenClient)return;this.onNotify=Y;try{this.listenClient=await this.pool.connect(),this.listenClient.on("notification",(Q)=>{if(Q.channel===LP&&this.onNotify)this.onNotify()}),this.listenClient.on("error",(Q)=>{console.error("[PostgresNotify] Connection error:",Q),this.cleanup()}),await this.listenClient.query(`LISTEN ${LP}`),console.log("[PostgresNotify] Started LISTEN on",LP)}catch(Q){console.error("[PostgresNotify] Failed to start LISTEN:",Q),this.cleanup()}}async stop(){if(this.listenClient){try{await this.listenClient.query(`UNLISTEN ${LP}`),console.log("[PostgresNotify] Stopped LISTEN on",LP)}catch{}this.cleanup()}}async notify(Y){try{await xu4`SELECT pg_notify(${LP}, ${Y})`.execute(this.db)}catch(Q){console.warn("[PostgresNotify] Failed to send NOTIFY:",Q)}}cleanup(){if(this.listenClient)this.listenClient.release(),this.listenClient=null;this.onNotify=null}}function gu4(Y){let Q=process.env.NOTIFY_STRATEGY;if(Q==="nats"||Q==="postgres"||Q==="polling")return Q;if(process.env.NATS_URL)return"nats";if(Y.type==="postgres")return"postgres";return"polling"}function hi0(Y,Q,X){let J=Ci0(Y.db),G=Q?.pollIntervalMs??jr.pollIntervalMs,K=gu4(Y),W=new RN1(G),Z=process.env.NATS_URL,H;switch(K){case"nats":{if(!Z)throw Error("[EventBus] NOTIFY_STRATEGY=nats requires NATS_URL to be set");let F=(()=>{try{return new URL(Z).host}catch{return"unknown"}})();if(!X){console.warn(`[EventBus] NATS unavailable (${F}), falling back to polling`),H=W;break}console.log(`[EventBus] Using NATS notify strategy (${F})`),H=CN1(W,new EN1({getConnection:()=>X.getConnection()}));break}case"postgres":{if(Y.type!=="postgres"){console.warn("[EventBus] NOTIFY_STRATEGY=postgres requires a PostgreSQL database, falling back to polling"),H=W;break}console.log("[EventBus] Using PostgreSQL LISTEN/NOTIFY strategy"),H=CN1(W,new IN1(Y.db,Y.pool));break}case"polling":default:console.log("[EventBus] Using polling notify strategy"),H=W}let $=Z&&X?new TN1({getConnection:()=>X.getConnection()}):new Av;if(xJ.start($).catch((F)=>{console.error("[SSEHub] Failed to start broadcast strategy:",F)}),Z&&X)console.log("[SSEHub] Using NATS SSE broadcast (cross-pod)");else console.log("[SSEHub] Using local SSE broadcast (single-pod)");return new PN1({storage:J,config:Q,notifyStrategy:H})}BN();Kv();var xi0={google:{name:"Google",icon:"https://assets.decocache.com/webdraw/eb7480aa-a68b-4ce4-98ff-36aa121762a7/google.svg"},github:{name:"GitHub",icon:"https://assets.decocache.com/webdraw/5f999dcb-c8a6-4572-948c-9996ef1d502f/github.svg"},microsoft:{name:"Microsoft",icon:"https://assets.decocache.com/mcp/aa6f6e1a-6526-4bca-99cc-82e2ec38b0e4/microsoft.png"}};var gi0=new JQ;gi0.get("/config",async(Y)=>{try{let Q=Object.keys(c9.socialProviders??{}),X=Q.length>0,J=Q.map((W)=>({name:W,icon:xi0[W].icon})),G=process.env.UNSAFE_ALLOW_STDIO_TRANSPORT==="true",K={emailAndPassword:{enabled:c9.emailAndPassword?.enabled??!1},magicLink:{enabled:c9.magicLinkConfig?.enabled??!1},resetPassword:{enabled:WN1},socialProviders:{enabled:X,providers:J},sso:c9.ssoConfig?{enabled:!0,providerId:c9.ssoConfig.providerId}:{enabled:!1},stdioEnabled:G};return Y.json({success:!0,config:K})}catch(Q){let X=Q instanceof Error?Q.message:"Failed to load auth config";return Y.json({success:!1,error:X},500)}});var ui0=gi0;OP();Uv();KY();oZ();_Q();oZ();oZ();m1();Xr();function mi0(Y){let{toolOutputMap:Q}=Y;return _J({description:"The input is a string. Dont make assumptions about its format; prefer using regexes and string manipulation to extract the desired information. You may call this tool multiple times to extract the desired information.",inputExamples:[{input:{tool_call_id:"tool_call_id_1",code:"export default (input) => { return input.match(/[a-z]/g); }"}},{input:{tool_call_id:"tool_call_id_2",code:"export default (input) => { return input.split(' ').map(word => word.length); }"}}],inputSchema:p8(q.object({tool_call_id:q.string(),code:q.string().min(1).describe("JavaScript code to transform the tool output. The code must be an ES module: `export default (input) => { ... }`")})),execute:async({tool_call_id:X,code:J})=>{if(!Q.has(X))throw Error(`Tool output not found for tool call id: ${X}`);let G=Q.get(X),K=await BD1({input:G,code:J,timeoutMs:5000}),W=jN1({return:K.returnValue});if(W>4000)throw Error(`Tool call ${X} output is too long to display (${W} tokens), reduce or truncate the output`);return{result:K.returnValue,error:K.error,consoleLogs:K.consoleLogs}}})}var uu4=4,mu4=/[\u3000-\u303f\u3040-\u309f\u30a0-\u30ff\u4e00-\u9fff\u3400-\u4dbf\uf900-\ufaff]/g;function lu4(Y){if(!Y)return 0;let Q=Y.match(mu4)?.length??0,X=Y.length-Q;return Math.ceil(X/uu4)+Math.ceil(Q*1.5)}function jN1(Y){let Q=typeof Y==="string"?Y:JSON.stringify(Y);return lu4(Q)}function Sr(Y,Q){if(Y==="yolo")return!1;if(Y==="none")return!0;return Q!==!0}function kr(Y){let Q=Y.get("meshContext").organization;if(!Q)throw Error("Organization context is required");if((Q.slug??Q.id)!==Y.req.param("org"))throw Error("Organization mismatch");return Q}async function Pv(Y,Q,X,J="none",G){let K=!G?.disableOutputTruncation,Z=(await Y.listTools()).tools.map((H)=>{let{name:$,title:F,description:V,inputSchema:B,annotations:U,_meta:z}=H;return[$,_J({title:F??$,description:V,inputSchema:jW(B),outputSchema:void 0,needsApproval:Sr(J,U?.readOnlyHint),execute:async(D,L)=>{let w=performance.now();try{return await Y.callTool({name:H.name,arguments:D},pK,{signal:L.abortSignal,timeout:qi0})}finally{if(X){let E=performance.now()-w;X.write({type:"data-tool-metadata",id:L.toolCallId,data:{_meta:z,annotations:U,latencyMs:E}})}}},toModelOutput:async({output:D,toolCallId:L})=>{if(K){let E=jN1(D.structuredContent??D.content);if(E>4000)return Q.set(L,JSON.stringify(D.structuredContent??D.content)),{type:"text",value:`Tool call ${L} output is too long to display (${E} tokens), use the read_tool_output tool`}}if(D.isError)return{type:"error-text",value:D.content.map((T)=>T.type==="text"?T.text:null).filter(Boolean).join(`
|
|
1390
|
+
Example output: Available Tools Overview`;function Cr(Y){return typeof Y==="string"?Y:Y.toISOString()}class Lv{db;constructor(Y){this.db=Y}async create(Y){let Q=Y.id??d8("thrd"),X=new Date().toISOString();if(!Y.organization_id)throw Error("organization_id is required");if(!Y.created_by)throw Error("created_by is required");if(!Y.title)Y.title=Tr;let J={id:Q,organization_id:Y.organization_id,title:Y.title,description:Y.description??null,status:Y.status??"completed",created_at:X,updated_at:X,created_by:Y.created_by,updated_by:Y.updated_by??null},G=await this.db.insertInto("threads").values(J).returningAll().executeTakeFirstOrThrow();return this.threadFromDbRow(G)}async get(Y){let Q=await this.db.selectFrom("threads").selectAll().where("id","=",Y).executeTakeFirst();return Q?this.threadFromDbRow(Q):null}async update(Y,Q){let J={updated_at:new Date().toISOString()};if(Q.title!==void 0)J.title=Q.title;if(Q.description!==void 0)J.description=Q.description;if(Q.updated_by!==void 0)J.updated_by=Q.updated_by;if(Q.hidden!==void 0)J.hidden=Q.hidden;if(Q.status!==void 0)J.status=Q.status;await this.db.updateTable("threads").set(J).where("id","=",Y).execute();let G=await this.get(Y);if(!G)throw Error("Thread not found after update");return G}async delete(Y){await this.db.deleteFrom("threads").where("id","=",Y).execute()}async list(Y,Q,X){let J=this.db.selectFrom("threads").selectAll().where("organization_id","=",Y).where("hidden","=",!1).orderBy("updated_at","desc");if(Q)J=J.where("created_by","=",Q);let G=this.db.selectFrom("threads").select((Z)=>Z.fn.count("id").as("count")).where("organization_id","=",Y).where("hidden","=",!1);if(Q)G=G.where("created_by","=",Q);if(X?.limit)J=J.limit(X.limit);if(X?.offset)J=J.offset(X.offset);let[K,W]=await Promise.all([J.execute(),G.executeTakeFirst()]);return{threads:K.map((Z)=>this.threadFromDbRow(Z)),total:Number(W?.count||0)}}async saveMessages(Y){let Q=new Date().toISOString(),X=Y[0]?.thread_id;if(!X)throw Error("thread_id is required when creating multiple messages");let J=new Map;for(let Z of Y){let H=J.get(Z.id);if(H&&H.thread_id!==Z.thread_id)throw Error(`Duplicate message id "${Z.id}" with conflicting thread_ids: "${H.thread_id}" vs "${Z.thread_id}"`);J.set(Z.id,Z)}let G=[...J.values()],K=G.find((Z)=>Z.thread_id!==X);if(K)throw Error(`All messages must target the same thread. Expected thread_id "${X}", but message "${K.id}" has thread_id "${K.thread_id}"`);let W=G.map((Z)=>({id:Z.id,thread_id:X,metadata:Z.metadata?JSON.stringify(Z.metadata):null,parts:JSON.stringify(Z.parts),role:Z.role,created_at:Z.created_at??Q,updated_at:Q}));await this.db.transaction().execute(async(Z)=>{await Z.insertInto("thread_messages").values(W).onConflict((H)=>H.column("id").doUpdateSet(($)=>({metadata:$.ref("excluded.metadata"),parts:$.ref("excluded.parts"),role:$.ref("excluded.role"),updated_at:$.ref("excluded.updated_at")}))).execute(),await Z.updateTable("threads").set({updated_at:Q}).where("id","=",X).execute()})}async listMessages(Y,Q){let X=Q?.sort??"asc",J=this.db.selectFrom("thread_messages").selectAll().where("thread_id","=",Y).orderBy("created_at",X).orderBy("id",X),G=this.db.selectFrom("thread_messages").select((Z)=>Z.fn.count("id").as("count")).where("thread_id","=",Y);if(Q?.limit)J=J.limit(Q.limit);if(Q?.offset)J=J.offset(Q.offset);let[K,W]=await Promise.all([J.execute(),G.executeTakeFirst()]);return{messages:K.map((Z)=>this.messageFromDbRow(Z)),total:Number(W?.count||0)}}threadFromDbRow(Y){return{id:Y.id,organization_id:Y.organization_id,title:Y.title,description:Y.description,status:Y.status,created_at:Cr(Y.created_at),updated_at:Cr(Y.updated_at),created_by:Y.created_by,updated_by:Y.updated_by,hidden:!!Y.hidden}}messageFromDbRow(Y){let Q,X;try{Q=Y.metadata?JSON.parse(Y.metadata):void 0}catch(J){console.error(`Failed to parse metadata for message ${Y.id}:`,Y.metadata,J),Q=void 0}try{X=typeof Y.parts==="string"?JSON.parse(Y.parts):Y.parts}catch(J){console.error(`Failed to parse parts for message ${Y.id}:`,Y.parts,J),X=[]}return{id:Y.id,thread_id:Y.thread_id,metadata:Q,parts:X,role:Y.role,created_at:Cr(Y.created_at),updated_at:Cr(Y.updated_at)}}}CD1();function Pu4(Y){if(!Y)return;try{let Q=JSON.parse(Y);if(typeof Q!=="object"||Q===null||Array.isArray(Q))return;let X={};for(let[J,G]of Object.entries(Q))if(typeof G==="string")X[J]=G;return Object.keys(X).length>0?X:void 0}catch{return}}function Eu4(Y,Q){for(let[X,J]of Object.entries(Q)){let G=Y[X];if(!G||G.length===0){let K=Y["*"];if(!K||K.length===0)return!1;if(K.includes("*"))continue;for(let W of J)if(!K.includes(W))return!1;continue}if(G.includes("*"))continue;for(let K of J)if(!G.includes(K))return!1}return!0}function Tu4(Y){let{auth:Q,headers:X,role:J,permissions:G,userId:K}=Y,W=Q.api.hasPermission;return{hasPermission:async(Z)=>{if(J&&JN1.includes(J))return!0;if(G)return Eu4(G,Z);if(!W)return console.error("[Auth] hasPermission API not available"),!1;try{if((await W({headers:X,body:{permission:Z}}))?.success===!0)return!0;let $={};for(let V of Object.keys(Z))$[V]=["*"];return(await W({headers:X,body:{permission:$}}))?.success===!0}catch(H){return console.error("[Auth] Permission check failed:",H),!1}},organization:{create:async(Z)=>{return Q.api.createOrganization({headers:X,body:Z})},update:async(Z)=>{return Q.api.updateOrganization({headers:X,body:Z})},delete:async(Z)=>{await Q.api.deleteOrganization({headers:X,body:{organizationId:Z}})},get:async(Z)=>{return Q.api.getFullOrganization({headers:X,query:Z?{organizationId:Z}:void 0})},list:async(Z)=>{return Q.api.listOrganizations({headers:X,query:Z?{userId:Z}:void 0})},addMember:async(Z)=>{return Q.api.addMember({headers:X,body:Z})},removeMember:async(Z)=>{await Q.api.removeMember({headers:X,body:Z})},listMembers:async(Z)=>{return Q.api.listMembers({headers:X,query:Z?{organizationId:Z.organizationId,limit:Z.limit,offset:Z.offset}:void 0})},updateMemberRole:async(Z)=>{return Q.api.updateMemberRole({headers:X,body:Z})}},apiKey:{create:async(Z)=>{return Q.api.createApiKey({body:{...Z,userId:K}})},list:async()=>{return Q.api.listApiKeys({headers:X})},update:async(Z)=>{return Q.api.updateApiKey({body:{...Z,userId:K}})},delete:async(Z)=>{await Q.api.deleteApiKey({headers:X,body:{keyId:Z}})}}}}async function Cu4(Y,Q,X){if(JN1.includes(X))return;let J=await Y.selectFrom("organizationRole").select(["permission"]).where("organizationId","=",Q).where("role","=",X).executeTakeFirst();if(!J?.permission)return;try{return JSON.parse(J.permission)}catch{console.error(`[Auth] Failed to parse permissions for role: ${X}`);return}}async function Ru4(Y,Q,X,J=Pi0){let G=Y.headers.get("Authorization");try{let K=new Headers(Y.headers);K.set("X-MCP-Session-Auth","true");let W=await J.measure("auth_get_mcp_session",()=>Q.api.getMcpSession({headers:K}));if(W){let Z=W.userId,H=await J.measure("auth_query_membership",()=>X.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["member.role","member.organizationId","organization.id as orgId","organization.slug as orgSlug","organization.name as orgName"]).where("member.userId","=",Z).executeTakeFirst()),$=H?.role,F=H?{id:H.orgId,slug:H.orgSlug,name:H.orgName}:void 0,V;if(H&&$)V=await J.measure("auth_fetch_role_permissions",()=>Cu4(X,H.organizationId,$));return{user:{id:Z,role:$},role:$,permissions:V,organization:F}}}catch(K){console.error("[Auth] OAuth session check failed:",K)}if(G?.startsWith("Bearer ")){let K=G.replace("Bearer ","").trim();try{let W=await J.measure("auth_verify_mesh_jwt",()=>gp0(K));if(W){let Z,H=W.metadata?.organizationId;if(W.sub&&H)Z=(await J.measure("auth_query_membership",()=>X.selectFrom("member").select(["member.role"]).where("member.userId","=",W.sub).where("member.organizationId","=",H).executeTakeFirst()))?.role;let $,F=W.metadata?.organizationId;if(F){let V=W.metadata?.organizationName,B=W.metadata?.organizationSlug;if(V||B)$={id:F,name:V,slug:B};else{let U=await J.measure("auth_query_org_for_mesh_jwt",()=>X.selectFrom("organization").select(["id","slug","name"]).where("id","=",F).executeTakeFirst());$=U?{id:U.id,slug:U.slug,name:U.name}:{id:F}}}return{user:{id:W.sub,connectionId:W.metadata?.connectionId,role:Z},role:Z,permissions:W.permissions,organization:$}}}catch{}try{let W=await J.measure("auth_verify_api_key",()=>Q.api.verifyApiKey({body:{key:K}}));if(W?.valid&&W.key){let Z=W.key.metadata?.organization,H=W.key.permissions,$,F=W.key.userId;if(F&&Z?.id)$=(await J.measure("auth_query_membership",()=>X.selectFrom("member").select(["member.role"]).where("member.userId","=",F).where("member.organizationId","=",Z.id).executeTakeFirst()))?.role;return{apiKeyId:W.key.id,user:{id:W.key.userId,role:$},role:$,permissions:H,organization:Z?{id:Z.id,slug:Z.slug,name:Z.name}:void 0}}}catch(W){console.error("[Auth] API key check failed:",W)}}try{let K=new Headers(Y.headers);K.delete("Authorization");let W=await J.measure("auth_get_session",()=>Q.api.getSession({headers:K}));if(W){let Z,H;if(W.session.activeOrganizationId){let $=await J.measure("auth_get_full_organization",()=>Q.api.getFullOrganization({headers:K}).catch(()=>null));if($)Z={id:$.id,slug:$.slug,name:$.name},H=$.members?.find((V)=>V.userId===W.user.id)?.role;else Z={id:W.session.activeOrganizationId,slug:"",name:""}}return{user:{id:W.user.id,email:W.user.email,role:H},role:H,organization:Z}}}catch(K){let W=K;console.error("[Auth] Session check failed:",JSON.stringify({message:W.message,body:W.body,stack:W.stack},null,2))}return{user:void 0}}var Ai0,DF={set:(Y)=>{Ai0=Y},create:async(Y,Q)=>{return await Ai0(Y,Q)}},Pi0={measure:async(Y,Q)=>{return await Q()}},Iu4=["x-hub-signature-256"];async function Ei0(Y){let Q=new SD(Y.encryption.key),X={connections:new zS(Y.db,Q),organizationSettings:new FN1(Y.db),monitoring:new HN1(Y.db,Y.databaseType),monitoringDashboards:new $N1(Y.db),virtualMcps:new ZN1(Y.db),users:new UN1(Y.db),threads:new Lv(Y.db),tags:new BN1(Y.db),projects:new DS(Y.db),projectConnections:new VN1(Y.db),projectPluginConfigs:new qN1(Y.db)};return async(J,G)=>{let K=G?.timings??Pi0,W=qr(),Z=J?.headers.get("x-caller-id")??void 0,H=J?await Ru4(J,Y.auth,Y.db,K):{user:void 0},$=Tu4({auth:Y.auth,headers:J?.headers??new Headers,role:H.role,permissions:H.permissions,userId:H.user?.id}),F={user:H.user};if(H.apiKeyId)F.apiKey={id:H.apiKeyId,name:"",userId:""};let V=H.organization,B=J?process.env.BASE_URL??`${new URL(J.url).origin}`:H7(),U=new VF(Y.auth,F.user?.id,void 0,$,H.role,"self"),z={timings:K,auth:F,connectionId:Z,organization:V,storage:X,vault:Q,authInstance:Y.auth,boundAuth:$,access:U,db:Y.db,tracer:Y.observability.tracer,meter:Y.observability.meter,baseUrl:B,metadata:{requestId:crypto.randomUUID(),timestamp:new Date,wellKnownForwardableHeaders:Object.fromEntries(Iu4.map((D)=>[D,J?.headers.get(D)??null]).filter(([D,L])=>L!==null)),userAgent:J?.headers.get("x-mesh-client")||J?.headers.get("User-Agent")||void 0,ipAddress:(J?.headers.get("CF-Connecting-IP")||J?.headers.get("X-Forwarded-For"))??void 0,properties:Pu4(J?.headers.get("x-mesh-properties"))},eventBus:Y.eventBus,createMCPProxy:async(D)=>{return await Ui0(D,z)},getOrCreateClient:W};return z}}En();class Ti0{db;constructor(Y){this.db=Y}async publishEvent(Y){let Q=new Date().toISOString();return await this.db.insertInto("events").values({id:Y.id,organization_id:Y.organizationId,type:Y.type,source:Y.source,specversion:"1.0",subject:Y.subject??null,time:Y.time,datacontenttype:Y.datacontenttype??"application/json",dataschema:Y.dataschema??null,data:Y.data?JSON.stringify(Y.data):null,cron:Y.cron??null,status:"pending",attempts:0,last_error:null,next_retry_at:null,created_at:Q,updated_at:Q}).execute(),{id:Y.id,organizationId:Y.organizationId,type:Y.type,source:Y.source,specversion:"1.0",subject:Y.subject??null,time:Y.time,datacontenttype:Y.datacontenttype??"application/json",dataschema:Y.dataschema??null,data:Y.data??null,cron:Y.cron??null,status:"pending",attempts:0,lastError:null,nextRetryAt:null,createdAt:Q,updatedAt:Q}}async subscribe(Y){let Q=this.db.selectFrom("event_subscriptions").selectAll().where("organization_id","=",Y.organizationId).where("connection_id","=",Y.connectionId).where("event_type","=",Y.eventType);if(Y.publisher)Q=Q.where("publisher","=",Y.publisher);else Q=Q.where("publisher","is",null);if(Y.filter)Q=Q.where("filter","=",Y.filter);else Q=Q.where("filter","is",null);let X=await Q.executeTakeFirst();if(X)return{id:X.id,organizationId:X.organization_id,connectionId:X.connection_id,publisher:X.publisher,eventType:X.event_type,filter:X.filter,enabled:X.enabled===1,createdAt:X.created_at,updatedAt:X.updated_at};let J=new Date().toISOString();return await this.db.insertInto("event_subscriptions").values({id:Y.id,organization_id:Y.organizationId,connection_id:Y.connectionId,publisher:Y.publisher??null,event_type:Y.eventType,filter:Y.filter??null,enabled:1,created_at:J,updated_at:J}).execute(),{id:Y.id,organizationId:Y.organizationId,connectionId:Y.connectionId,publisher:Y.publisher??null,eventType:Y.eventType,filter:Y.filter??null,enabled:!0,createdAt:J,updatedAt:J}}async unsubscribe(Y,Q){return{success:((await this.db.deleteFrom("event_subscriptions").where("id","=",Y).where("organization_id","=",Q).executeTakeFirst()).numDeletedRows??0n)>0n}}async listSubscriptions(Y,Q){let X=this.db.selectFrom("event_subscriptions").selectAll().where("organization_id","=",Y);if(Q)X=X.where("connection_id","=",Q);return(await X.execute()).map((G)=>({id:G.id,organizationId:G.organization_id,connectionId:G.connection_id,publisher:G.publisher,eventType:G.event_type,filter:G.filter,enabled:G.enabled===1,createdAt:G.created_at,updatedAt:G.updated_at}))}async getSubscription(Y,Q){let X=await this.db.selectFrom("event_subscriptions").selectAll().where("id","=",Y).where("organization_id","=",Q).executeTakeFirst();if(!X)return null;return{id:X.id,organizationId:X.organization_id,connectionId:X.connection_id,publisher:X.publisher,eventType:X.event_type,filter:X.filter,enabled:X.enabled===1,createdAt:X.created_at,updatedAt:X.updated_at}}async getMatchingSubscriptions(Y){return(await this.db.selectFrom("event_subscriptions").selectAll().where("organization_id","=",Y.organizationId).where("enabled","=",1).where("event_type","=",Y.type).where((X)=>X.or([X("publisher","is",null),X("publisher","=",Y.source)])).execute()).map((X)=>({id:X.id,organizationId:X.organization_id,connectionId:X.connection_id,publisher:X.publisher,eventType:X.event_type,filter:X.filter,enabled:X.enabled===1,createdAt:X.created_at,updatedAt:X.updated_at}))}async createDeliveries(Y,Q,X){if(Q.length===0)return;let J=new Date().toISOString(),G=X??null,K=Q.map((W)=>({id:crypto.randomUUID(),event_id:Y,subscription_id:W,status:"pending",attempts:0,last_error:null,delivered_at:null,next_retry_at:G,created_at:J}));await this.db.insertInto("event_deliveries").values(K).execute()}async claimPendingDeliveries(Y){let Q=new Date().toISOString(),X;try{X=(await this.db.updateTable("event_deliveries").set({status:"processing"}).where("id","in",(K)=>K.selectFrom("event_deliveries as d").innerJoin("event_subscriptions as s","s.id","d.subscription_id").select("d.id").where("d.status","=","pending").where("s.enabled","=",1).where((W)=>W.or([W("d.next_retry_at","is",null),W("d.next_retry_at","<=",Q)])).orderBy("d.created_at","asc").limit(Y)).where("status","=","pending").returning(["id"]).execute()).map((K)=>K.id)}catch{let G=await this.db.selectFrom("event_deliveries as d").innerJoin("event_subscriptions as s","s.id","d.subscription_id").select(["d.id"]).where("d.status","=","pending").where("s.enabled","=",1).where((K)=>K.or([K("d.next_retry_at","is",null),K("d.next_retry_at","<=",Q)])).orderBy("d.created_at","asc").limit(Y).execute();if(G.length===0)return[];X=G.map((K)=>K.id),await this.db.updateTable("event_deliveries").set({status:"processing"}).where("id","in",X).where("status","=","pending").execute()}if(X.length===0)return[];return(await this.db.selectFrom("event_deliveries as d").innerJoin("events as e","e.id","d.event_id").innerJoin("event_subscriptions as s","s.id","d.subscription_id").select(["d.id as delivery_id","d.event_id","d.subscription_id","d.status as delivery_status","d.attempts as delivery_attempts","d.last_error as delivery_last_error","d.delivered_at","d.next_retry_at as delivery_next_retry_at","d.created_at as delivery_created_at","e.organization_id","e.type","e.source","e.specversion","e.subject","e.time","e.datacontenttype","e.dataschema","e.data","e.cron","e.status as event_status","e.attempts as event_attempts","e.last_error as event_last_error","e.next_retry_at","e.created_at as event_created_at","e.updated_at as event_updated_at","s.connection_id","s.publisher","s.event_type","s.filter","s.enabled","s.created_at as subscription_created_at","s.updated_at as subscription_updated_at"]).where("d.id","in",X).where("d.status","=","processing").execute()).map((G)=>({delivery:{id:G.delivery_id,eventId:G.event_id,subscriptionId:G.subscription_id,status:G.delivery_status,attempts:G.delivery_attempts,lastError:G.delivery_last_error,deliveredAt:G.delivered_at,nextRetryAt:G.delivery_next_retry_at,createdAt:G.delivery_created_at},event:{id:G.event_id,organizationId:G.organization_id,type:G.type,source:G.source,specversion:G.specversion,subject:G.subject,time:G.time,datacontenttype:G.datacontenttype,dataschema:G.dataschema,data:G.data?JSON.parse(G.data):null,cron:G.cron,status:G.event_status,attempts:G.event_attempts,lastError:G.event_last_error,nextRetryAt:G.next_retry_at,createdAt:G.event_created_at,updatedAt:G.event_updated_at},subscription:{id:G.subscription_id,organizationId:G.organization_id,connectionId:G.connection_id,publisher:G.publisher,eventType:G.event_type,filter:G.filter,enabled:G.enabled===1,createdAt:G.subscription_created_at,updatedAt:G.subscription_updated_at}}))}async markDeliveriesDelivered(Y){if(Y.length===0)return;let Q=new Date().toISOString();await this.db.updateTable("event_deliveries").set({status:"delivered",delivered_at:Q}).where("id","in",Y).execute()}async markDeliveriesFailed(Y,Q,X=20,J=1000,G=3600000){if(Y.length===0)return;for(let K of Y){let W=await this.db.selectFrom("event_deliveries").select(["attempts"]).where("id","=",K).executeTakeFirst();if(!W)continue;let Z=W.attempts+1;if(Z>=X)await this.db.updateTable("event_deliveries").set({attempts:Z,last_error:Q,status:"failed",next_retry_at:null}).where("id","=",K).execute();else{let H=Math.min(J*Math.pow(2,Z-1),G),$=new Date(Date.now()+H).toISOString();await this.db.updateTable("event_deliveries").set({attempts:Z,last_error:Q,status:"pending",next_retry_at:$}).where("id","=",K).execute()}}}async updateEventStatus(Y){let Q=await this.db.selectFrom("event_deliveries").select(["status"]).where("event_id","=",Y).execute();if(Q.length===0)return;let X=Q.every((K)=>K.status==="delivered"),J=Q.some((K)=>K.status==="failed"),G=Q.some((K)=>K.status==="pending"||K.status==="processing");if(X)await this.db.updateTable("events").set({status:"delivered",updated_at:new Date().toISOString()}).where("id","=",Y).execute();else if(J&&!G)await this.db.updateTable("events").set({status:"failed",updated_at:new Date().toISOString()}).where("id","=",Y).execute()}async resetStuckDeliveries(){let Y=await this.db.updateTable("event_deliveries").set({status:"pending"}).where("status","=","processing").executeTakeFirst();return Number(Y.numUpdatedRows??0)}async getEvent(Y,Q){let X=await this.db.selectFrom("events").selectAll().where("id","=",Y).where("organization_id","=",Q).executeTakeFirst();if(!X)return null;return{id:X.id,organizationId:X.organization_id,type:X.type,source:X.source,specversion:X.specversion,subject:X.subject,time:X.time,datacontenttype:X.datacontenttype,dataschema:X.dataschema,data:X.data?JSON.parse(X.data):null,cron:X.cron,status:X.status,attempts:X.attempts,lastError:X.last_error,nextRetryAt:X.next_retry_at,createdAt:X.created_at,updatedAt:X.updated_at}}async findActiveCronEvent(Y,Q,X,J){let G=await this.db.selectFrom("events").selectAll().where("organization_id","=",Y).where("type","=",Q).where("source","=",X).where("cron","=",J).where("status","in",["pending","processing","delivered"]).orderBy("created_at","desc").executeTakeFirst();if(!G)return null;return{id:G.id,organizationId:G.organization_id,type:G.type,source:G.source,specversion:G.specversion,subject:G.subject,time:G.time,datacontenttype:G.datacontenttype,dataschema:G.dataschema,data:G.data?JSON.parse(G.data):null,cron:G.cron,status:G.status,attempts:G.attempts,lastError:G.last_error,nextRetryAt:G.next_retry_at,createdAt:G.created_at,updatedAt:G.updated_at}}async cancelEvent(Y,Q,X){let J=await this.db.updateTable("events").set({status:"failed",last_error:"Cancelled by publisher",updated_at:new Date().toISOString()}).where("id","=",Y).where("organization_id","=",Q).where("source","=",X).where("status","in",["pending","processing"]).executeTakeFirst();if((J.numUpdatedRows??0n)>0n)await this.db.updateTable("event_deliveries").set({status:"failed",last_error:"Event cancelled by publisher"}).where("event_id","=",Y).where("status","in",["pending","processing"]).execute();return{success:(J.numUpdatedRows??0n)>0n}}async scheduleRetryWithoutAttemptIncrement(Y,Q){if(Y.length===0)return;let X=new Date(Date.now()+Q).toISOString();await this.db.updateTable("event_deliveries").set({status:"pending",next_retry_at:X}).where("id","in",Y).execute()}async ackDelivery(Y,Q,X){if(!await this.db.selectFrom("events").select(["id"]).where("id","=",Y).where("organization_id","=",Q).executeTakeFirst())return{success:!1};let K=((await this.db.updateTable("event_deliveries").set({status:"delivered",delivered_at:new Date().toISOString()}).where("event_id","=",Y).where("status","in",["pending","processing"]).where((W)=>W.exists(W.selectFrom("event_subscriptions").select("id").whereRef("event_subscriptions.id","=","event_deliveries.subscription_id").where("event_subscriptions.connection_id","=",X).where("event_subscriptions.organization_id","=",Q))).executeTakeFirst()).numUpdatedRows??0n)>0n;if(K)await this.updateEventStatus(Y);return{success:K}}async syncSubscriptions(Y){let{organizationId:Q,connectionId:X,subscriptions:J}=Y,G=(w,E)=>{return`${w}::${E??""}`},K=await this.listSubscriptions(Q,X),W=new Map;for(let w of K)W.set(G(w.eventType,w.publisher),w);let Z=new Map;for(let w of J)Z.set(G(w.eventType,w.publisher),w);let H=new Date().toISOString(),$=[],F=[],V=[],B=0;for(let[w,E]of Z){let T=W.get(w);if(!T)$.push({id:crypto.randomUUID(),organization_id:Q,connection_id:X,event_type:E.eventType,publisher:E.publisher??null,filter:E.filter??null,enabled:1,created_at:H,updated_at:H});else{let C=T.filter??null,P=E.filter??null;if(C!==P)F.push({id:T.id,filter:P});else B++}}for(let[w,E]of W)if(!Z.has(w))V.push(E.id);if($.length>0)await this.db.insertInto("event_subscriptions").values($).execute();if(F.length>0)await Promise.all(F.map((w)=>this.db.updateTable("event_subscriptions").set({filter:w.filter,updated_at:H}).where("id","=",w.id).execute()));if(V.length>0)await this.db.deleteFrom("event_subscriptions").where("id","in",V).execute();let U=$.length,z=F.length,D=V.length,L=await this.listSubscriptions(Q,X);return{created:U,updated:z,deleted:D,unchanged:B,subscriptions:L}}}function Ci0(Y){return new Ti0(Y)}function hJ(Y,Q,X,J,G,K,W,Z){return hJ.fromTZ(hJ.tp(Y,Q,X,J,G,K,W),Z)}hJ.fromTZISO=(Y,Q,X)=>hJ.fromTZ(ju4(Y,Q),X);hJ.fromTZ=function(Y,Q){let X=new Date(Date.UTC(Y.y,Y.m-1,Y.d,Y.h,Y.i,Y.s)),J=MN1(Y.tz,X),G=new Date(X.getTime()-J),K=MN1(Y.tz,G);if(K-J===0)return G;{let W=new Date(X.getTime()-K),Z=MN1(Y.tz,W);if(Z-K===0)return W;if(!Q&&Z-K>0)return W;if(Q)throw Error("Invalid date passed to fromTZ()");return G}};hJ.toTZ=function(Y,Q){let X=Y.toLocaleString("en-US",{timeZone:Q}).replace(/[\u202f]/," "),J=new Date(X);return{y:J.getFullYear(),m:J.getMonth()+1,d:J.getDate(),h:J.getHours(),i:J.getMinutes(),s:J.getSeconds(),tz:Q}};hJ.tp=(Y,Q,X,J,G,K,W)=>({y:Y,m:Q,d:X,h:J,i:G,s:K,tz:W});function MN1(Y,Q=new Date){let X=Q.toLocaleString("en-US",{timeZone:Y,timeZoneName:"shortOffset"}).split(" ").slice(-1)[0],J=Q.toLocaleString("en-US").replace(/[\u202f]/," ");return Date.parse(`${J} GMT`)-Date.parse(`${J} ${X}`)}function ju4(Y,Q){let X=new Date(Date.parse(Y));if(isNaN(X))throw Error("minitz: Invalid ISO8601 passed to parser.");let J=Y.substring(9);return Y.includes("Z")||J.includes("-")||J.includes("+")?hJ.tp(X.getUTCFullYear(),X.getUTCMonth()+1,X.getUTCDate(),X.getUTCHours(),X.getUTCMinutes(),X.getUTCSeconds(),"Etc/UTC"):hJ.tp(X.getFullYear(),X.getMonth()+1,X.getDate(),X.getHours(),X.getMinutes(),X.getSeconds(),Q)}hJ.minitz=hJ;var wN1=32,wv=31|wN1,Si0=[1,2,4,8,16],Ri0=class{pattern;timezone;second;minute;hour;day;month;dayOfWeek;lastDayOfMonth;starDOM;starDOW;constructor(Y,Q){this.pattern=Y,this.timezone=Q,this.second=Array(60).fill(0),this.minute=Array(60).fill(0),this.hour=Array(24).fill(0),this.day=Array(31).fill(0),this.month=Array(12).fill(0),this.dayOfWeek=Array(7).fill(0),this.lastDayOfMonth=!1,this.starDOM=!1,this.starDOW=!1,this.parse()}parse(){if(!(typeof this.pattern=="string"||this.pattern instanceof String))throw TypeError("CronPattern: Pattern has to be of type string.");this.pattern.indexOf("@")>=0&&(this.pattern=this.handleNicknames(this.pattern).trim());let Y=this.pattern.replace(/\s+/g," ").split(" ");if(Y.length<5||Y.length>6)throw TypeError("CronPattern: invalid configuration format ('"+this.pattern+"'), exactly five or six space separated parts are required.");if(Y.length===5&&Y.unshift("0"),Y[3].indexOf("L")>=0&&(Y[3]=Y[3].replace("L",""),this.lastDayOfMonth=!0),Y[3]=="*"&&(this.starDOM=!0),Y[4].length>=3&&(Y[4]=this.replaceAlphaMonths(Y[4])),Y[5].length>=3&&(Y[5]=this.replaceAlphaDays(Y[5])),Y[5]=="*"&&(this.starDOW=!0),this.pattern.indexOf("?")>=0){let Q=new bW(new Date,this.timezone).getDate(!0);Y[0]=Y[0].replace("?",Q.getSeconds().toString()),Y[1]=Y[1].replace("?",Q.getMinutes().toString()),Y[2]=Y[2].replace("?",Q.getHours().toString()),this.starDOM||(Y[3]=Y[3].replace("?",Q.getDate().toString())),Y[4]=Y[4].replace("?",(Q.getMonth()+1).toString()),this.starDOW||(Y[5]=Y[5].replace("?",Q.getDay().toString()))}this.throwAtIllegalCharacters(Y),this.partToArray("second",Y[0],0,1),this.partToArray("minute",Y[1],0,1),this.partToArray("hour",Y[2],0,1),this.partToArray("day",Y[3],-1,1),this.partToArray("month",Y[4],-1,1),this.partToArray("dayOfWeek",Y[5],0,wv),this.dayOfWeek[7]&&(this.dayOfWeek[0]=this.dayOfWeek[7])}partToArray(Y,Q,X,J){let G=this[Y],K=Y==="day"&&this.lastDayOfMonth;if(Q===""&&!K)throw TypeError("CronPattern: configuration entry "+Y+" ("+Q+") is empty, check for trailing spaces.");if(Q==="*")return G.fill(J);let W=Q.split(",");if(W.length>1)for(let Z=0;Z<W.length;Z++)this.partToArray(Y,W[Z],X,J);else Q.indexOf("-")!==-1&&Q.indexOf("/")!==-1?this.handleRangeWithStepping(Q,Y,X,J):Q.indexOf("-")!==-1?this.handleRange(Q,Y,X,J):Q.indexOf("/")!==-1?this.handleStepping(Q,Y,X,J):Q!==""&&this.handleNumber(Q,Y,X,J)}throwAtIllegalCharacters(Y){for(let Q=0;Q<Y.length;Q++)if((Q===5?/[^/*0-9,\-#L]+/:/[^/*0-9,-]+/).test(Y[Q]))throw TypeError("CronPattern: configuration entry "+Q+" ("+Y[Q]+") contains illegal characters.")}handleNumber(Y,Q,X,J){let G=this.extractNth(Y,Q),K=parseInt(G[0],10)+X;if(isNaN(K))throw TypeError("CronPattern: "+Q+" is not a number: '"+Y+"'");this.setPart(Q,K,G[1]||J)}setPart(Y,Q,X){if(!Object.prototype.hasOwnProperty.call(this,Y))throw TypeError("CronPattern: Invalid part specified: "+Y);if(Y==="dayOfWeek"){if(Q===7&&(Q=0),Q<0||Q>6)throw RangeError("CronPattern: Invalid value for dayOfWeek: "+Q);this.setNthWeekdayOfMonth(Q,X);return}if(Y==="second"||Y==="minute"){if(Q<0||Q>=60)throw RangeError("CronPattern: Invalid value for "+Y+": "+Q)}else if(Y==="hour"){if(Q<0||Q>=24)throw RangeError("CronPattern: Invalid value for "+Y+": "+Q)}else if(Y==="day"){if(Q<0||Q>=31)throw RangeError("CronPattern: Invalid value for "+Y+": "+Q)}else if(Y==="month"&&(Q<0||Q>=12))throw RangeError("CronPattern: Invalid value for "+Y+": "+Q);this[Y][Q]=X}handleRangeWithStepping(Y,Q,X,J){let G=this.extractNth(Y,Q),K=G[0].match(/^(\d+)-(\d+)\/(\d+)$/);if(K===null)throw TypeError("CronPattern: Syntax error, illegal range with stepping: '"+Y+"'");let[,W,Z,H]=K,$=parseInt(W,10)+X,F=parseInt(Z,10)+X,V=parseInt(H,10);if(isNaN($))throw TypeError("CronPattern: Syntax error, illegal lower range (NaN)");if(isNaN(F))throw TypeError("CronPattern: Syntax error, illegal upper range (NaN)");if(isNaN(V))throw TypeError("CronPattern: Syntax error, illegal stepping: (NaN)");if(V===0)throw TypeError("CronPattern: Syntax error, illegal stepping: 0");if(V>this[Q].length)throw TypeError("CronPattern: Syntax error, steps cannot be greater than maximum value of part ("+this[Q].length+")");if($>F)throw TypeError("CronPattern: From value is larger than to value: '"+Y+"'");for(let B=$;B<=F;B+=V)this.setPart(Q,B,G[1]||J)}extractNth(Y,Q){let X=Y,J;if(X.includes("#")){if(Q!=="dayOfWeek")throw Error("CronPattern: nth (#) only allowed in day-of-week field");J=X.split("#")[1],X=X.split("#")[0]}return[X,J]}handleRange(Y,Q,X,J){let G=this.extractNth(Y,Q),K=G[0].split("-");if(K.length!==2)throw TypeError("CronPattern: Syntax error, illegal range: '"+Y+"'");let W=parseInt(K[0],10)+X,Z=parseInt(K[1],10)+X;if(isNaN(W))throw TypeError("CronPattern: Syntax error, illegal lower range (NaN)");if(isNaN(Z))throw TypeError("CronPattern: Syntax error, illegal upper range (NaN)");if(W>Z)throw TypeError("CronPattern: From value is larger than to value: '"+Y+"'");for(let H=W;H<=Z;H++)this.setPart(Q,H,G[1]||J)}handleStepping(Y,Q,X,J){let G=this.extractNth(Y,Q),K=G[0].split("/");if(K.length!==2)throw TypeError("CronPattern: Syntax error, illegal stepping: '"+Y+"'");K[0]===""&&(K[0]="*");let W=0;K[0]!=="*"&&(W=parseInt(K[0],10)+X);let Z=parseInt(K[1],10);if(isNaN(Z))throw TypeError("CronPattern: Syntax error, illegal stepping: (NaN)");if(Z===0)throw TypeError("CronPattern: Syntax error, illegal stepping: 0");if(Z>this[Q].length)throw TypeError("CronPattern: Syntax error, max steps for part is ("+this[Q].length+")");for(let H=W;H<this[Q].length;H+=Z)this.setPart(Q,H,G[1]||J)}replaceAlphaDays(Y){return Y.replace(/-sun/gi,"-7").replace(/sun/gi,"0").replace(/mon/gi,"1").replace(/tue/gi,"2").replace(/wed/gi,"3").replace(/thu/gi,"4").replace(/fri/gi,"5").replace(/sat/gi,"6")}replaceAlphaMonths(Y){return Y.replace(/jan/gi,"1").replace(/feb/gi,"2").replace(/mar/gi,"3").replace(/apr/gi,"4").replace(/may/gi,"5").replace(/jun/gi,"6").replace(/jul/gi,"7").replace(/aug/gi,"8").replace(/sep/gi,"9").replace(/oct/gi,"10").replace(/nov/gi,"11").replace(/dec/gi,"12")}handleNicknames(Y){let Q=Y.trim().toLowerCase();return Q==="@yearly"||Q==="@annually"?"0 0 1 1 *":Q==="@monthly"?"0 0 1 * *":Q==="@weekly"?"0 0 * * 0":Q==="@daily"?"0 0 * * *":Q==="@hourly"?"0 * * * *":Y}setNthWeekdayOfMonth(Y,Q){if(typeof Q!="number"&&Q==="L")this.dayOfWeek[Y]=this.dayOfWeek[Y]|wN1;else if(Q===wv)this.dayOfWeek[Y]=wv;else if(Q<6&&Q>0)this.dayOfWeek[Y]=this.dayOfWeek[Y]|Si0[Q-1];else throw TypeError(`CronPattern: nth weekday out of range, should be 1-5 or L. Value: ${Q}, Type: ${typeof Q}`)}},Ii0=[31,28,31,30,31,30,31,31,30,31,30,31],OF=[["month","year",0],["day","month",-1],["hour","day",0],["minute","hour",0],["second","minute",0]],bW=class Y{tz;ms;second;minute;hour;day;month;year;constructor(Q,X){if(this.tz=X,Q&&Q instanceof Date)if(!isNaN(Q))this.fromDate(Q);else throw TypeError("CronDate: Invalid date passed to CronDate constructor");else if(Q===void 0)this.fromDate(new Date);else if(Q&&typeof Q=="string")this.fromString(Q);else if(Q instanceof Y)this.fromCronDate(Q);else throw TypeError("CronDate: Invalid type ("+typeof Q+") passed to CronDate constructor")}isNthWeekdayOfMonth(Q,X,J,G){let K=new Date(Date.UTC(Q,X,J)).getUTCDay(),W=0;for(let Z=1;Z<=J;Z++)new Date(Date.UTC(Q,X,Z)).getUTCDay()===K&&W++;if(G&wv&&Si0[W-1]&G)return!0;if(G&wN1){let Z=new Date(Date.UTC(Q,X+1,0)).getUTCDate();for(let H=J+1;H<=Z;H++)if(new Date(Date.UTC(Q,X,H)).getUTCDay()===K)return!1;return!0}return!1}fromDate(Q){if(this.tz!==void 0)if(typeof this.tz=="number")this.ms=Q.getUTCMilliseconds(),this.second=Q.getUTCSeconds(),this.minute=Q.getUTCMinutes()+this.tz,this.hour=Q.getUTCHours(),this.day=Q.getUTCDate(),this.month=Q.getUTCMonth(),this.year=Q.getUTCFullYear(),this.apply();else{let X=hJ.toTZ(Q,this.tz);this.ms=Q.getMilliseconds(),this.second=X.s,this.minute=X.i,this.hour=X.h,this.day=X.d,this.month=X.m-1,this.year=X.y}else this.ms=Q.getMilliseconds(),this.second=Q.getSeconds(),this.minute=Q.getMinutes(),this.hour=Q.getHours(),this.day=Q.getDate(),this.month=Q.getMonth(),this.year=Q.getFullYear()}fromCronDate(Q){this.tz=Q.tz,this.year=Q.year,this.month=Q.month,this.day=Q.day,this.hour=Q.hour,this.minute=Q.minute,this.second=Q.second,this.ms=Q.ms}apply(){if(this.month>11||this.day>Ii0[this.month]||this.hour>59||this.minute>59||this.second>59||this.hour<0||this.minute<0||this.second<0){let Q=new Date(Date.UTC(this.year,this.month,this.day,this.hour,this.minute,this.second,this.ms));return this.ms=Q.getUTCMilliseconds(),this.second=Q.getUTCSeconds(),this.minute=Q.getUTCMinutes(),this.hour=Q.getUTCHours(),this.day=Q.getUTCDate(),this.month=Q.getUTCMonth(),this.year=Q.getUTCFullYear(),!0}else return!1}fromString(Q){if(typeof this.tz=="number"){let X=hJ.fromTZISO(Q);this.ms=X.getUTCMilliseconds(),this.second=X.getUTCSeconds(),this.minute=X.getUTCMinutes(),this.hour=X.getUTCHours(),this.day=X.getUTCDate(),this.month=X.getUTCMonth(),this.year=X.getUTCFullYear(),this.apply()}else return this.fromDate(hJ.fromTZISO(Q,this.tz))}findNext(Q,X,J,G){let K=this[X],W;J.lastDayOfMonth&&(this.month!==1?W=Ii0[this.month]:W=new Date(Date.UTC(this.year,this.month+1,0,0,0,0,0)).getUTCDate());let Z=!J.starDOW&&X=="day"?new Date(Date.UTC(this.year,this.month,1,0,0,0,0)).getUTCDay():void 0;for(let H=this[X]+G;H<J[X].length;H++){let $=J[X][H];if(X==="day"&&J.lastDayOfMonth&&H-G==W&&($=1),X==="day"&&!J.starDOW){let F=J.dayOfWeek[(Z+(H-G-1))%7];if(F&&F&wv)F=this.isNthWeekdayOfMonth(this.year,this.month,H-G,F)?1:0;else if(F)throw Error(`CronDate: Invalid value for dayOfWeek encountered. ${F}`);Q.legacyMode&&!J.starDOM?$=$||F:$=$&&F}if($)return this[X]=H-G,K!==this[X]?2:1}return 3}recurse(Q,X,J){let G=this.findNext(X,OF[J][0],Q,OF[J][2]);if(G>1){let K=J+1;for(;K<OF.length;)this[OF[K][0]]=-OF[K][2],K++;if(G===3)return this[OF[J][1]]++,this[OF[J][0]]=-OF[J][2],this.apply(),this.recurse(Q,X,0);if(this.apply())return this.recurse(Q,X,J-1)}return J+=1,J>=OF.length?this:this.year>=3000?null:this.recurse(Q,X,J)}increment(Q,X,J){return this.second+=X.interval!==void 0&&X.interval>1&&J?X.interval:1,this.ms=0,this.apply(),this.recurse(Q,X,0)}getDate(Q){return Q||this.tz===void 0?new Date(this.year,this.month,this.day,this.hour,this.minute,this.second,this.ms):typeof this.tz=="number"?new Date(Date.UTC(this.year,this.month,this.day,this.hour,this.minute-this.tz,this.second,this.ms)):hJ.fromTZ(hJ.tp(this.year,this.month+1,this.day,this.hour,this.minute,this.second,this.tz),!1)}getTime(){return this.getDate(!1).getTime()}};function Su4(Y){if(Y===void 0&&(Y={}),delete Y.name,Y.legacyMode=Y.legacyMode===void 0?!0:Y.legacyMode,Y.paused=Y.paused===void 0?!1:Y.paused,Y.maxRuns=Y.maxRuns===void 0?1/0:Y.maxRuns,Y.catch=Y.catch===void 0?!1:Y.catch,Y.interval=Y.interval===void 0?0:parseInt(Y.interval.toString(),10),Y.utcOffset=Y.utcOffset===void 0?void 0:parseInt(Y.utcOffset.toString(),10),Y.unref=Y.unref===void 0?!1:Y.unref,Y.startAt&&(Y.startAt=new bW(Y.startAt,Y.timezone)),Y.stopAt&&(Y.stopAt=new bW(Y.stopAt,Y.timezone)),Y.interval!==null){if(isNaN(Y.interval))throw Error("CronOptions: Supplied value for interval is not a number");if(Y.interval<0)throw Error("CronOptions: Supplied value for interval can not be negative")}if(Y.utcOffset!==void 0){if(isNaN(Y.utcOffset))throw Error("CronOptions: Invalid value passed for utcOffset, should be number representing minutes offset from UTC.");if(Y.utcOffset<-870||Y.utcOffset>870)throw Error("CronOptions: utcOffset out of bounds.");if(Y.utcOffset!==void 0&&Y.timezone)throw Error("CronOptions: Combining 'utcOffset' with 'timezone' is not allowed.")}if(Y.unref!==!0&&Y.unref!==!1)throw Error("CronOptions: Unref should be either true, false or undefined(false).");return Y}function Mv(Y){return Object.prototype.toString.call(Y)==="[object Function]"||typeof Y=="function"||Y instanceof Function}function ku4(Y){return Mv(Y)}function vu4(Y){typeof Deno<"u"&&typeof Deno.unrefTimer<"u"?Deno.unrefTimer(Y):Y&&typeof Y.unref<"u"&&Y.unref()}var ji0=30000,Rr=[],Ir=class{name;options;_states;fn;constructor(Y,Q,X){let J,G;if(Mv(Q))G=Q;else if(typeof Q=="object")J=Q;else if(Q!==void 0)throw Error("Cron: Invalid argument passed for optionsIn. Should be one of function, or object (options).");if(Mv(X))G=X;else if(typeof X=="object")J=X;else if(X!==void 0)throw Error("Cron: Invalid argument passed for funcIn. Should be one of function, or object (options).");if(this.name=J?.name,this.options=Su4(J),this._states={kill:!1,blocking:!1,previousRun:void 0,currentRun:void 0,once:void 0,currentTimeout:void 0,maxRuns:J?J.maxRuns:void 0,paused:J?J.paused:!1,pattern:new Ri0("* * * * *")},Y&&(Y instanceof Date||typeof Y=="string"&&Y.indexOf(":")>0)?this._states.once=new bW(Y,this.options.timezone||this.options.utcOffset):this._states.pattern=new Ri0(Y,this.options.timezone),this.name){if(Rr.find((K)=>K.name===this.name))throw Error("Cron: Tried to initialize new named job '"+this.name+"', but name already taken.");Rr.push(this)}return G!==void 0&&ku4(G)&&(this.fn=G,this.schedule()),this}nextRun(Y){let Q=this._next(Y);return Q?Q.getDate(!1):null}nextRuns(Y,Q){this._states.maxRuns!==void 0&&Y>this._states.maxRuns&&(Y=this._states.maxRuns);let X=[],J=Q||this._states.currentRun||void 0;for(;Y--&&(J=this.nextRun(J));)X.push(J);return X}getPattern(){return this._states.pattern?this._states.pattern.pattern:void 0}isRunning(){let Y=this.nextRun(this._states.currentRun),Q=!this._states.paused,X=this.fn!==void 0,J=!this._states.kill;return Q&&X&&J&&Y!==null}isStopped(){return this._states.kill}isBusy(){return this._states.blocking}currentRun(){return this._states.currentRun?this._states.currentRun.getDate():null}previousRun(){return this._states.previousRun?this._states.previousRun.getDate():null}msToNext(Y){let Q=this._next(Y);return Q?Y instanceof bW||Y instanceof Date?Q.getTime()-Y.getTime():Q.getTime()-new bW(Y).getTime():null}stop(){this._states.kill=!0,this._states.currentTimeout&&clearTimeout(this._states.currentTimeout);let Y=Rr.indexOf(this);Y>=0&&Rr.splice(Y,1)}pause(){return this._states.paused=!0,!this._states.kill}resume(){return this._states.paused=!1,!this._states.kill}schedule(Y){if(Y&&this.fn)throw Error("Cron: It is not allowed to schedule two functions using the same Croner instance.");Y&&(this.fn=Y);let Q=this.msToNext(),X=this.nextRun(this._states.currentRun);return Q==null||isNaN(Q)||X===null?this:(Q>ji0&&(Q=ji0),this._states.currentTimeout=setTimeout(()=>this._checkTrigger(X),Q),this._states.currentTimeout&&this.options.unref&&vu4(this._states.currentTimeout),this)}async _trigger(Y){if(this._states.blocking=!0,this._states.currentRun=new bW(void 0,this.options.timezone||this.options.utcOffset),this.options.catch)try{this.fn!==void 0&&await this.fn(this,this.options.context)}catch(Q){Mv(this.options.catch)&&this.options.catch(Q,this)}else this.fn!==void 0&&await this.fn(this,this.options.context);this._states.previousRun=new bW(Y,this.options.timezone||this.options.utcOffset),this._states.blocking=!1}async trigger(){await this._trigger()}runsLeft(){return this._states.maxRuns}_checkTrigger(Y){let Q=new Date,X=!this._states.paused&&Q.getTime()>=Y.getTime(),J=this._states.blocking&&this.options.protect;X&&!J?(this._states.maxRuns!==void 0&&this._states.maxRuns--,this._trigger()):X&&J&&Mv(this.options.protect)&&setTimeout(()=>this.options.protect(this),0),this.schedule()}_next(Y){let Q=!!(Y||this._states.currentRun),X=!1;!Y&&this.options.startAt&&this.options.interval&&([Y,Q]=this._calculatePreviousRun(Y,Q),X=!Y),Y=new bW(Y,this.options.timezone||this.options.utcOffset),this.options.startAt&&Y&&Y.getTime()<this.options.startAt.getTime()&&(Y=this.options.startAt);let J=this._states.once||new bW(Y,this.options.timezone||this.options.utcOffset);return!X&&J!==this._states.once&&(J=J.increment(this._states.pattern,this.options,Q)),this._states.once&&this._states.once.getTime()<=Y.getTime()||J===null||this._states.maxRuns!==void 0&&this._states.maxRuns<=0||this._states.kill||this.options.stopAt&&J.getTime()>=this.options.stopAt.getTime()?null:J}_calculatePreviousRun(Y,Q){let X=new bW(void 0,this.options.timezone||this.options.utcOffset),J=Y;if(this.options.startAt.getTime()<=X.getTime()){J=this.options.startAt;let G=J.getTime()+this.options.interval*1000;for(;G<=X.getTime();)J=new bW(J,this.options.timezone||this.options.utcOffset).increment(this._states.pattern,this.options,!0),G=J.getTime()+this.options.interval*1000;Q=!0}return J===null&&(J=void 0),[J,Q]}};class Av{localEmit=null;async start(Y){this.localEmit=Y}broadcast(Y,Q){this.localEmit?.(Y,Q)}async stop(){this.localEmit=null}}var ki0=50,vi0=500;class _i0{listeners=new Map;totalCount=0;strategy=new Av;started=!1;async start(Y){if(this.started){if(!Y)return;await this.stop()}if(Y)this.strategy=Y;await this.strategy.start((Q,X)=>this.localEmit(Q,X)),this.started=!0}async stop(){if(!this.started)return;await this.strategy.stop(),this.started=!1}add(Y){if(this.totalCount>=vi0)return console.warn(`[SSEHub] Total connection limit reached (${vi0})`),null;let Q=this.listeners.get(Y.organizationId);if(!Q)Q=new Map,this.listeners.set(Y.organizationId,Q);if(Q.size>=ki0)return console.warn(`[SSEHub] Per-org connection limit reached for ${Y.organizationId} (${ki0})`),null;return Q.set(Y.id,Y),this.totalCount++,Y.id}remove(Y,Q){let X=this.listeners.get(Y);if(!X)return;if(X.delete(Q)){if(this.totalCount--,X.size===0)this.listeners.delete(Y)}}emit(Y,Q){this.strategy.broadcast(Y,Q)}countForOrg(Y){return this.listeners.get(Y)?.size??0}get count(){return this.totalCount}localEmit(Y,Q){let X=this.listeners.get(Y);if(!X||X.size===0)return;for(let J of X.values()){if(J.typePatterns&&!_u4(Q.type,J.typePatterns))continue;try{J.push(Q)}catch{this.remove(Y,J.id)}}}}function _u4(Y,Q){for(let X of Q){if(X===Y)return!0;if(X.endsWith(".*")){let J=X.slice(0,-1);if(Y.startsWith(J))return!0}}return!1}var xJ=new _i0;function yi0(Y){return{id:Y.id,type:Y.type,source:Y.source,subject:Y.subject,data:Y.data?yu4(Y.data):void 0,time:Y.time}}function yu4(Y){if(typeof Y==="string")try{return JSON.parse(Y)}catch{return Y}return Y}var jr={pollIntervalMs:5000,batchSize:100,maxAttempts:20,retryDelayMs:1000,maxDelayMs:3600000};ea();lS();function fu4(Y){return Y.endsWith("_self")}function bu4(Y){return Y.slice(0,-5)}function fi0(){return async(Y,Q)=>{try{if(fu4(Y)&&GD1()){let W=bu4(Y),Z=await DF.create();if(await id0(Q,{organizationId:W,connectionId:Y,publish:async(F,V,B,U)=>{await Z.eventBus.publish(W,Y,{type:F,subject:V,data:B,deliverAt:U?.deliverAt})},createMCPProxy:async(F)=>{let V=await NN1(F,Z);return{callTool:async(B,U,z)=>{let D=await V.callTool(B,U,z);return{content:D.content,structuredContent:D.structuredContent,isError:D.isError}},close:()=>V.close()}}}))return{success:!0}}let X=await DF.create(),J=await NN1(Y,X),K=await pV1.forClient(NO(J)).ON_EVENTS({events:Q});return{success:K.success,error:K.error,retryAfter:K.retryAfter,results:K.results}}catch(X){let J=X instanceof Error?X.message:String(X);return console.error(`[EventBus] Failed to notify connection ${Y}:`,J),{success:!1,error:J}}}}function bi0(Y){return{specversion:"1.0",id:Y.id,source:Y.source,type:Y.type,time:Y.time,subject:Y.subject??void 0,datacontenttype:Y.datacontenttype,dataschema:Y.dataschema??void 0,data:Y.data??void 0}}function hu4(Y){let Q=new Map;for(let J of Y){let G=J.subscription.connectionId,K=Q.get(G);if(K){if(K.deliveryIds.push(J.delivery.id),!K.seenEventIds.has(J.event.id))K.seenEventIds.add(J.event.id),K.events.push(bi0(J.event))}else Q.set(G,{connectionId:J.subscription.connectionId,deliveryIds:[J.delivery.id],events:[bi0(J.event)],seenEventIds:new Set([J.event.id])})}let X=new Map;for(let[J,G]of Q)X.set(J,{connectionId:G.connectionId,deliveryIds:G.deliveryIds,events:G.events});return X}class AN1{storage;notifySubscriber;running=!1;processing=!1;pendingNotify=!1;config;constructor(Y,Q){this.storage=Y;this.notifySubscriber=fi0(),this.config={...jr,...Q}}async start(){if(this.running)return;let Y=await this.storage.resetStuckDeliveries();if(Y>0)console.log(`[EventBus] Reset ${Y} stuck deliveries from previous shutdown`);this.running=!0}stop(){this.running=!1,console.log("[EventBus] Worker stopped")}isRunning(){return this.running}async processNow(){if(!this.running)return;if(this.processing){this.pendingNotify=!0;return}this.processing=!0;try{do this.pendingNotify=!1,await this.processEvents();while(this.pendingNotify)}catch(Y){console.error("[EventBus] Error processing events:",Y)}finally{this.processing=!1}}async processEvents(){let Y=await this.storage.claimPendingDeliveries(this.config.batchSize);if(Y.length===0)return;let Q=hu4(Y),X=new Set;await Promise.allSettled(Array.from(Q.entries()).map(async([J,G])=>{try{let K=await this.notifySubscriber(G.connectionId,G.events);if(K.results&&Object.keys(K.results).length>0)await this.processPerEventResults(G,K);else if(K.success)await this.storage.markDeliveriesDelivered(G.deliveryIds);else if(K.retryAfter&&K.retryAfter>0)await this.storage.scheduleRetryWithoutAttemptIncrement(G.deliveryIds,K.retryAfter);else await this.storage.markDeliveriesFailed(G.deliveryIds,K.error||"Subscriber returned success=false",this.config.maxAttempts,this.config.retryDelayMs,this.config.maxDelayMs)}catch(K){let W=K instanceof Error?K.message:String(K);console.error(`[EventBus] Failed to notify subscription ${J}:`,W),await this.storage.markDeliveriesFailed(G.deliveryIds,W,this.config.maxAttempts,this.config.retryDelayMs,this.config.maxDelayMs)}for(let K of Y)if(G.deliveryIds.includes(K.delivery.id))X.add(K.event.id)}));for(let J of X)try{await this.storage.updateEventStatus(J);let G=Y.find((K)=>K.event.id===J)?.event;if(G?.cron)await this.scheduleNextCronDelivery(G)}catch(G){console.error(`[EventBus] Failed to update event status ${J}:`,G)}}async processPerEventResults(Y,Q){let X=[],J=new Map,G=[],K=new Map;for(let W=0;W<Y.events.length;W++){let Z=Y.events?.[W];if(!Z)continue;let H=Y.deliveryIds?.[W];if(!H)continue;K.set(Z.id,H)}for(let W of Y.events){let Z=K.get(W.id);if(!Z)continue;let H=Q.results?.[W.id];if(H)if(H.success)X.push(Z);else if(H.retryAfter&&H.retryAfter>0){let $=J.get(H.retryAfter)||[];$.push(Z),J.set(H.retryAfter,$)}else G.push({deliveryId:Z,error:H.error||"Event processing failed"});else if(Q.success)X.push(Z);else if(Q.retryAfter&&Q.retryAfter>0){let $=J.get(Q.retryAfter)||[];$.push(Z),J.set(Q.retryAfter,$)}else G.push({deliveryId:Z,error:Q.error||"Batch processing failed"})}if(X.length>0)await this.storage.markDeliveriesDelivered(X);for(let[W,Z]of J)await this.storage.scheduleRetryWithoutAttemptIncrement(Z,W);if(G.length>0){let W=new Map;for(let{deliveryId:Z,error:H}of G){let $=W.get(H)||[];$.push(Z),W.set(H,$)}for(let[Z,H]of W)await this.storage.markDeliveriesFailed(H,Z,this.config.maxAttempts,this.config.retryDelayMs,this.config.maxDelayMs)}}async scheduleNextCronDelivery(Y){if(!Y.cron)return;try{let X=new Ir(Y.cron).nextRun();if(!X){console.log(`[EventBus] Cron expression for event ${Y.id} has no more runs`);return}let J=X.toISOString(),G=await this.storage.getMatchingSubscriptions(Y);if(G.length===0){console.log(`[EventBus] No subscriptions for cron event ${Y.id}, skipping next delivery`);return}await this.storage.createDeliveries(Y.id,G.map((K)=>K.id),J),console.log(`[EventBus] Scheduled next cron delivery for event ${Y.id} at ${J}`)}catch(Q){console.error(`[EventBus] Failed to schedule next cron delivery for event ${Y.id}:`,Q)}}}class PN1{storage;worker;notifyStrategy;running=!1;constructor(Y){this.storage=Y.storage,this.notifyStrategy=Y.notifyStrategy,this.worker=new AN1(this.storage,Y.config)}async publish(Y,Q,X){if(X.deliverAt&&X.cron)throw Error("Cannot set both deliverAt and cron. Use one or the other.");let J;if(X.cron){try{let F=new Ir(X.cron).nextRun();if(!F)throw Error("Cron expression does not produce a next run time");J=F.toISOString()}catch($){throw Error(`Invalid cron expression: ${$ instanceof Error?$.message:String($)}`)}let H=await this.storage.findActiveCronEvent(Y,X.type,Q,X.cron);if(H)return H}let G=crypto.randomUUID(),K=new Date().toISOString(),W=await this.storage.publishEvent({id:G,organizationId:Y,type:X.type,source:Q,subject:X.subject,time:K,data:X.data,cron:X.cron});xJ.emit(Y,yi0(W));let Z=await this.storage.getMatchingSubscriptions(W);if(Z.length>0){let H=X.deliverAt??J;if(await this.storage.createDeliveries(G,Z.map(($)=>$.id),H),this.notifyStrategy&&!H)await this.notifyStrategy.notify(G).catch(($)=>{console.warn("[EventBus] Notify failed (non-critical):",$)})}return W}async subscribe(Y,Q){return this.storage.subscribe({id:crypto.randomUUID(),organizationId:Y,connectionId:Q.connectionId,publisher:Q.publisher,eventType:Q.eventType,filter:Q.filter})}async unsubscribe(Y,Q){return this.storage.unsubscribe(Q,Y)}async listSubscriptions(Y,Q){return this.storage.listSubscriptions(Y,Q)}async getSubscription(Y,Q){return this.storage.getSubscription(Q,Y)}async getEvent(Y,Q){return this.storage.getEvent(Q,Y)}async cancelEvent(Y,Q,X){return this.storage.cancelEvent(Q,Y,X)}async ackEvent(Y,Q,X){return this.storage.ackDelivery(Q,Y,X)}async syncSubscriptions(Y,Q){return this.storage.syncSubscriptions({organizationId:Y,...Q})}async start(){if(this.running)return;if(this.running=!0,await this.worker.start(),this.notifyStrategy)await this.notifyStrategy.start(()=>{this.worker.processNow().catch((Y)=>{console.error("[EventBus] Error processing after notify:",Y)})});await this.worker.processNow().catch((Y)=>{console.error("[EventBus] Error processing pending events on startup:",Y)})}async stop(){if(!this.running)return;if(this.running=!1,this.worker.stop(),this.notifyStrategy)try{await this.notifyStrategy.stop()}catch(Y){console.error("[EventBus] Error stopping notify strategy:",Y)}console.log("[EventBus] Stopped")}isRunning(){return this.running}}class EN1{options;sub=null;onNotify=null;encoder=new TextEncoder;constructor(Y){this.options=Y}async start(Y){let Q=this.options.getConnection();if(!Q||this.sub)return;this.onNotify=Y,this.sub=Q.subscribe("mesh.events.notify"),(async()=>{for await(let X of this.sub)this.onNotify?.()})().catch((X)=>{console.error("[NatsNotify] Subscription error:",X)}),console.log("[NatsNotify] Started, subscribed to","mesh.events.notify")}async stop(){this.sub?.unsubscribe(),this.sub=null,this.onNotify=null,console.log("[NatsNotify] Stopped")}async notify(Y){let Q=this.options.getConnection();if(!Q)return;try{Q.publish("mesh.events.notify",this.encoder.encode(Y))}catch(X){console.warn("[NatsNotify] Publish failed (non-critical):",X)}}}class TN1{options;sub=null;localEmit=null;originId=crypto.randomUUID();encoder=new TextEncoder;constructor(Y){this.options=Y}async start(Y){this.localEmit=Y;let Q=this.options.getConnection();if(!Q||this.sub)return;this.sub=Q.subscribe("mesh.sse.broadcast");let X=new TextDecoder;(async()=>{for await(let J of this.sub)try{let G=JSON.parse(X.decode(J.data));if(typeof G?.originId!=="string"||typeof G?.organizationId!=="string"||typeof G?.event?.id!=="string"||typeof G?.event?.type!=="string")continue;if(G.originId===this.originId)continue;this.localEmit?.(G.organizationId,G.event)}catch{}})().catch((J)=>{console.error("[NatsSSEBroadcast] Subscription error:",J)}),console.log("[NatsSSEBroadcast] Started, subscribed to","mesh.sse.broadcast")}broadcast(Y,Q){this.localEmit?.(Y,Q);let X=this.options.getConnection();if(!X)return;let J={originId:this.originId,organizationId:Y,event:Q};try{X.publish("mesh.sse.broadcast",this.encoder.encode(JSON.stringify(J)))}catch(G){console.warn("[NatsSSEBroadcast] Publish failed (non-critical):",G)}}async stop(){this.sub?.unsubscribe(),this.sub=null,this.localEmit=null,console.log("[NatsSSEBroadcast] Stopped")}}function CN1(...Y){return{async start(Q){await Promise.all(Y.map((X)=>X.start(Q)))},async stop(){await Promise.all(Y.map((Q)=>Q.stop().catch((X)=>{console.error("[NotifyStrategy] Error stopping strategy:",X)})))},async notify(Q){await Promise.all(Y.map((X)=>X.notify(Q).catch((J)=>{console.warn("[NotifyStrategy] Notify failed (non-critical):",J)})))}}}class RN1{intervalMs;timer=null;onNotify=null;constructor(Y){this.intervalMs=Y}async start(Y){if(this.timer)return;this.onNotify=Y,this.scheduleNext(),console.log(`[Polling] Started polling every ${this.intervalMs}ms`)}async stop(){if(this.timer)clearTimeout(this.timer),this.timer=null,console.log("[Polling] Stopped polling");this.onNotify=null}async notify(Y){if(this.onNotify)this.onNotify()}scheduleNext(){this.timer=setTimeout(()=>{if(this.onNotify)this.onNotify();if(this.timer)this.scheduleNext()},this.intervalMs)}}import{sql as xu4}from"kysely";var LP="mesh_events";class IN1{db;pool;listenClient=null;onNotify=null;constructor(Y,Q){this.db=Y;this.pool=Q}async start(Y){if(this.listenClient)return;this.onNotify=Y;try{this.listenClient=await this.pool.connect(),this.listenClient.on("notification",(Q)=>{if(Q.channel===LP&&this.onNotify)this.onNotify()}),this.listenClient.on("error",(Q)=>{console.error("[PostgresNotify] Connection error:",Q),this.cleanup()}),await this.listenClient.query(`LISTEN ${LP}`),console.log("[PostgresNotify] Started LISTEN on",LP)}catch(Q){console.error("[PostgresNotify] Failed to start LISTEN:",Q),this.cleanup()}}async stop(){if(this.listenClient){try{await this.listenClient.query(`UNLISTEN ${LP}`),console.log("[PostgresNotify] Stopped LISTEN on",LP)}catch{}this.cleanup()}}async notify(Y){try{await xu4`SELECT pg_notify(${LP}, ${Y})`.execute(this.db)}catch(Q){console.warn("[PostgresNotify] Failed to send NOTIFY:",Q)}}cleanup(){if(this.listenClient)this.listenClient.release(),this.listenClient=null;this.onNotify=null}}function gu4(Y){let Q=process.env.NOTIFY_STRATEGY;if(Q==="nats"||Q==="postgres"||Q==="polling")return Q;if(process.env.NATS_URL)return"nats";if(Y.type==="postgres")return"postgres";return"polling"}function hi0(Y,Q,X){let J=Ci0(Y.db),G=Q?.pollIntervalMs??jr.pollIntervalMs,K=gu4(Y),W=new RN1(G),Z=process.env.NATS_URL,H;switch(K){case"nats":{if(!Z)throw Error("[EventBus] NOTIFY_STRATEGY=nats requires NATS_URL to be set");let F=(()=>{try{return new URL(Z).host}catch{return"unknown"}})();if(!X){console.warn(`[EventBus] NATS unavailable (${F}), falling back to polling`),H=W;break}console.log(`[EventBus] Using NATS notify strategy (${F})`),H=CN1(W,new EN1({getConnection:()=>X.getConnection()}));break}case"postgres":{if(Y.type!=="postgres"){console.warn("[EventBus] NOTIFY_STRATEGY=postgres requires a PostgreSQL database, falling back to polling"),H=W;break}console.log("[EventBus] Using PostgreSQL LISTEN/NOTIFY strategy"),H=CN1(W,new IN1(Y.db,Y.pool));break}case"polling":default:console.log("[EventBus] Using polling notify strategy"),H=W}let $=Z&&X?new TN1({getConnection:()=>X.getConnection()}):new Av;if(xJ.start($).catch((F)=>{console.error("[SSEHub] Failed to start broadcast strategy:",F)}),Z&&X)console.log("[SSEHub] Using NATS SSE broadcast (cross-pod)");else console.log("[SSEHub] Using local SSE broadcast (single-pod)");return new PN1({storage:J,config:Q,notifyStrategy:H})}BN();Kv();var xi0={google:{name:"Google",icon:"https://assets.decocache.com/webdraw/eb7480aa-a68b-4ce4-98ff-36aa121762a7/google.svg"},github:{name:"GitHub",icon:"https://assets.decocache.com/webdraw/5f999dcb-c8a6-4572-948c-9996ef1d502f/github.svg"},microsoft:{name:"Microsoft",icon:"https://assets.decocache.com/mcp/aa6f6e1a-6526-4bca-99cc-82e2ec38b0e4/microsoft.png"}};var gi0=new JQ;gi0.get("/config",async(Y)=>{try{let Q=Object.keys(c9.socialProviders??{}),X=Q.length>0,J=Q.map((W)=>({name:W,icon:xi0[W].icon})),G=process.env.UNSAFE_ALLOW_STDIO_TRANSPORT==="true",K={emailAndPassword:{enabled:c9.emailAndPassword?.enabled??!1},magicLink:{enabled:c9.magicLinkConfig?.enabled??!1},resetPassword:{enabled:WN1},socialProviders:{enabled:X,providers:J},sso:c9.ssoConfig?{enabled:!0,providerId:c9.ssoConfig.providerId}:{enabled:!1},stdioEnabled:G};return Y.json({success:!0,config:K})}catch(Q){let X=Q instanceof Error?Q.message:"Failed to load auth config";return Y.json({success:!1,error:X},500)}});var ui0=gi0;OP();Uv();KY();oZ();_Q();oZ();oZ();m1();Xr();function mi0(Y){let{toolOutputMap:Q}=Y;return _J({description:"The input is a string. Dont make assumptions about its format; prefer using regexes and string manipulation to extract the desired information. You may call this tool multiple times to extract the desired information.",inputExamples:[{input:{tool_call_id:"tool_call_id_1",code:"export default (input) => { return input.match(/[a-z]/g); }"}},{input:{tool_call_id:"tool_call_id_2",code:"export default (input) => { return input.split(' ').map(word => word.length); }"}}],inputSchema:p8(q.object({tool_call_id:q.string(),code:q.string().min(1).describe("JavaScript code to transform the tool output. The code must be an ES module: `export default (input) => { ... }`")})),execute:async({tool_call_id:X,code:J})=>{if(!Q.has(X))throw Error(`Tool output not found for tool call id: ${X}`);let G=Q.get(X),K=await BD1({input:G,code:J,timeoutMs:5000}),W=jN1({return:K.returnValue});if(W>4000)throw Error(`Tool call ${X} output is too long to display (${W} tokens), reduce or truncate the output`);return{result:K.returnValue,error:K.error,consoleLogs:K.consoleLogs}}})}var uu4=4,mu4=/[\u3000-\u303f\u3040-\u309f\u30a0-\u30ff\u4e00-\u9fff\u3400-\u4dbf\uf900-\ufaff]/g;function lu4(Y){if(!Y)return 0;let Q=Y.match(mu4)?.length??0,X=Y.length-Q;return Math.ceil(X/uu4)+Math.ceil(Q*1.5)}function jN1(Y){let Q=typeof Y==="string"?Y:JSON.stringify(Y);return lu4(Q)}function Sr(Y,Q){if(Y==="yolo")return!1;if(Y==="none")return!0;return Q!==!0}function kr(Y){let Q=Y.get("meshContext").organization;if(!Q)throw Error("Organization context is required");if((Q.slug??Q.id)!==Y.req.param("org"))throw Error("Organization mismatch");return Q}async function Pv(Y,Q,X,J="none",G){let K=!G?.disableOutputTruncation,Z=(await Y.listTools()).tools.map((H)=>{let{name:$,title:F,description:V,inputSchema:B,annotations:U,_meta:z}=H;return[$,_J({title:F??$,description:V,inputSchema:jW(B),outputSchema:void 0,needsApproval:Sr(J,U?.readOnlyHint),execute:async(D,L)=>{let w=performance.now();try{return await Y.callTool({name:H.name,arguments:D},pK,{signal:L.abortSignal,timeout:qi0})}finally{if(X){let E=performance.now()-w;X.write({type:"data-tool-metadata",id:L.toolCallId,data:{_meta:z,annotations:U,latencyMs:E}})}}},toModelOutput:async({output:D,toolCallId:L})=>{if(K){let E=jN1(D.structuredContent??D.content);if(E>4000)return Q.set(L,JSON.stringify(D.structuredContent??D.content)),{type:"text",value:`Tool call ${L} output is too long to display (${E} tokens), use the read_tool_output tool`}}if(D.isError)return{type:"error-text",value:D.content.map((T)=>T.type==="text"?T.text:null).filter(Boolean).join(`
|
|
1391
1391
|
`)||"Unknown error"};if("structuredContent"in D)return{type:"json",value:D.structuredContent};return{type:"text",value:D.content.map((E)=>{if(E.type==="text")return E.text;return JSON.stringify(E)}).join(`
|
|
1392
1392
|
`)}}})]});return Object.fromEntries(Z)}async function SN1(Y){let Q=Y.get("meshContext"),X=Q.auth?.user?.id;if(!X)throw new eQ(401,{message:"Unauthorized"});let J=kr(Y),G=Y.req.param("threadId");if(!G)throw new eQ(400,{message:"Missing thread ID"});if(/[.*>\s]/.test(G))throw new eQ(400,{message:"Invalid thread ID"});let K=await Q.storage.threads.get(G);if(!K||K.organization_id!==J.id)throw new eQ(404,{message:"Thread not found"});if(K.created_by!==X)throw new eQ(403,{message:"Not authorized"});return{ctx:Q,organization:J,thread:K,threadId:G,userId:X}}oZ();m1();var du4=q.object({search_term:q.string().optional().describe("Optional search term to filter agents by name, title, or description. Leave empty to return all available agents.")}),pu4=q.object({agents:q.array(q.object({agent_id:q.string().describe("Unique identifier for the agent"),name:q.string().describe("Human-readable agent name"),purpose:q.string().nullable().describe("What the agent is designed to do"),capabilities:q.array(q.string()).describe("List of capabilities the agent has")}))}),cu4="Search for agents configured in the organization. Returns agent metadata including purpose and capabilities. Use this to discover specialized agents before delegating work with subtask_run.",nu4={readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1};function li0(Y,Q,X){let{organization:J,needsApproval:G}=Q;return _J({description:cu4,inputSchema:p8(du4),outputSchema:p8(pu4),needsApproval:G,execute:async({search_term:K},W)=>{let Z=performance.now();try{let $=(await X.storage.virtualMcps.list(J.id)).filter((V)=>V.status==="active");if(K&&K.trim().length>0){let V=K.toLowerCase();$=$.filter((B)=>{let U=B.title.toLowerCase().includes(V),z=B.description?.toLowerCase().includes(V)??!1;return U||z})}return{agents:$.map((V)=>({agent_id:V.id,name:V.title,purpose:V.description,capabilities:[]}))}}finally{let H=performance.now()-Z;Y.write({type:"data-tool-metadata",id:W.toolCallId,data:{annotations:nu4,latencyMs:H}})}}})}Uv();KY();oZ();m1();var iu4=q.object({prompt:q.string().min(1).max(50000).describe("The task to delegate to the subagent. Be specific and self-contained \u2014 "+"the subagent has no access to the parent conversation history."),agent_id:q.string().min(1).max(128).describe("The ID of the agent (Virtual MCP) to delegate to. This agent must exist and be active in the current organization.")}),au4=`Delegate a self-contained task to another agent. The subagent runs independently with its own tools and returns results when complete. Use this when a task is better handled by a specialized agent, or to parallelize work across agents.
|
|
1393
1393
|
|