decocms 2.178.1 → 2.178.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/assets/{AlertCircle-CI8iQIN4.js → AlertCircle-12chRuly.js} +1 -1
- package/dist/client/assets/{AlignLeft-D1a9nQq5.js → AlignLeft-_LT9deOt.js} +1 -1
- package/dist/client/assets/{ArrowDown-bcBjuFxH.js → ArrowDown-7rbX3zqZ.js} +1 -1
- package/dist/client/assets/{ArrowLeft-BaV7db3X.js → ArrowLeft-erI8s3G2.js} +1 -1
- package/dist/client/assets/{ArrowUp-BtIkmj4Y.js → ArrowUp-DoIG5eQh.js} +1 -1
- package/dist/client/assets/{Building02-R_mkgdQ4.js → Building02-Dr7IyBdv.js} +1 -1
- package/dist/client/assets/{Check-GOz4_bBS.js → Check-DW8AVFkq.js} +1 -1
- package/dist/client/assets/{CheckCircle-DosFvCW2.js → CheckCircle-hBpanOsI.js} +1 -1
- package/dist/client/assets/{CheckSquare-Be1kXxvn.js → CheckSquare-Cr3IzSXp.js} +1 -1
- package/dist/client/assets/{CheckVerified02-CZakFFpv.js → CheckVerified02-r17ymUCs.js} +1 -1
- package/dist/client/assets/{ChevronDown-DElgod-p.js → ChevronDown-BIRGQoZ5.js} +1 -1
- package/dist/client/assets/{ChevronLeft-Bk7mc5_w.js → ChevronLeft-D-e7F7Gj.js} +1 -1
- package/dist/client/assets/{ChevronRight-Ys0vr-YD.js → ChevronRight-DsjLlugM.js} +1 -1
- package/dist/client/assets/{ChevronUp-CKkWbsZ5.js → ChevronUp-Bi3NMXzv.js} +1 -1
- package/dist/client/assets/{Clock-DRICOB0c.js → Clock-D4xJnA3P.js} +1 -1
- package/dist/client/assets/{Code01-CDxb4LVl.js → Code01-YGq5QwlZ.js} +1 -1
- package/dist/client/assets/{Container-C8ScaknS.js → Container-DHyMOW_p.js} +1 -1
- package/dist/client/assets/{Copy01-DhAVspEC.js → Copy01-DkcjIGiS.js} +1 -1
- package/dist/client/assets/{Dataflow03-ONoSH2VT.js → Dataflow03-CD3eo8oO.js} +1 -1
- package/dist/client/assets/{DotsHorizontal-BaiN7u8r.js → DotsHorizontal-CjYGc80C.js} +1 -1
- package/dist/client/assets/{DotsVertical-rvqtR29a.js → DotsVertical-2nyye7GD.js} +1 -1
- package/dist/client/assets/{Download01-CVEqgoRT.js → Download01-BvtNZalG.js} +1 -1
- package/dist/client/assets/{Edit01-BaPedGGl.js → Edit01-CoeKfJ-u.js} +1 -1
- package/dist/client/assets/{Edit05-DSl3Jqkp.js → Edit05-CbbEzOoe.js} +1 -1
- package/dist/client/assets/{Eye-BgAytXDm.js → Eye-hBqNQHpc.js} +1 -1
- package/dist/client/assets/{EyeOff-CucokIoZ.js → EyeOff-CJoTkAtN.js} +1 -1
- package/dist/client/assets/{File02-gbFS8GtC.js → File02-D19u2hUl.js} +1 -1
- package/dist/client/assets/{File06-Dpi3gJhU.js → File06-Bp4ioOvR.js} +1 -1
- package/dist/client/assets/{FilterLines-BeHTcRH-.js → FilterLines-Dvk7BhWf.js} +1 -1
- package/dist/client/assets/{Globe01-Ceb6Pyzg.js → Globe01-B8Ib7knn.js} +1 -1
- package/dist/client/assets/{Globe02-4oAOo4_d.js → Globe02-wRhoc1N5.js} +1 -1
- package/dist/client/assets/{Grid01-NwJJaoW7.js → Grid01-C5e9ReQ4.js} +1 -1
- package/dist/client/assets/{Home02-DQJpzzIE.js → Home02-JZJR9jmQ.js} +1 -1
- package/dist/client/assets/{Image01-BwGUDEUi.js → Image01-DjoSkYp_.js} +1 -1
- package/dist/client/assets/{Inbox01-CDOpLWwZ.js → Inbox01-ClVaT7W5.js} +1 -1
- package/dist/client/assets/{InfoCircle-CfTVXLYm.js → InfoCircle-DzyfpQes.js} +1 -1
- package/dist/client/assets/{Key01-BZkaWvm5.js → Key01-qNySmY39.js} +1 -1
- package/dist/client/assets/{LayersTwo01-D9dHuPjU.js → LayersTwo01-dfSlQT0y.js} +1 -1
- package/dist/client/assets/{LayoutLeft-BHhw95T0.js → LayoutLeft-B2KZfn2n.js} +1 -1
- package/dist/client/assets/{Link01-CU6UcWFS.js → Link01-Cz_ZRKoB.js} +1 -1
- package/dist/client/assets/{LinkExternal01-DOdBEG1U.js → LinkExternal01-CKvCiQnV.js} +1 -1
- package/dist/client/assets/{List-DD3BKPLz.js → List-NLa0AhO4.js} +1 -1
- package/dist/client/assets/{Loading01-B85tVuIU.js → Loading01-Bb8FCosd.js} +1 -1
- package/dist/client/assets/{Lock01-WwvDQaaT.js → Lock01-CnZITIks.js} +1 -1
- package/dist/client/assets/{Play-DTPauCd1.js → Play-Bw5lQw7j.js} +1 -1
- package/dist/client/assets/{Plus-C9dY5EOr.js → Plus-CajZ9VfC.js} +1 -1
- package/dist/client/assets/{RefreshCcw01-DJsZi8Hz.js → RefreshCcw01-B_NTitRE.js} +1 -1
- package/dist/client/assets/{Save01-COu7GfwR.js → Save01-8oEsqMkJ.js} +1 -1
- package/dist/client/assets/{SearchMd-CKp0BoPW.js → SearchMd-eZWeU0sP.js} +1 -1
- package/dist/client/assets/{Settings01-DunsMQ-m.js → Settings01-ClPVpLPy.js} +1 -1
- package/dist/client/assets/{Shield01-CCMtDdxH.js → Shield01-N4ace-oo.js} +1 -1
- package/dist/client/assets/{Terminal-COsHV7Wy.js → Terminal-CGwuP-_5.js} +1 -1
- package/dist/client/assets/{Tool01-Delk_MGO.js → Tool01-D1m8i7Ez.js} +1 -1
- package/dist/client/assets/{Trash01-BtiNjuw3.js → Trash01-B_4PTwjI.js} +1 -1
- package/dist/client/assets/{Upload01-DqqcM3M6.js → Upload01-CLIOr3Tj.js} +1 -1
- package/dist/client/assets/{Users03-CQa5jfkV.js → Users03-Bv-hUQkl.js} +1 -1
- package/dist/client/assets/{X-CaaFSPD_.js → X-LzehymHS.js} +1 -1
- package/dist/client/assets/{XClose-Dey3r3af.js → XClose-CcNXqPQc.js} +1 -1
- package/dist/client/assets/{Zap-DX02pf-a.js → Zap-BFN1DqIC.js} +1 -1
- package/dist/client/assets/{agent-connections-preview-BCTZ6BnP.js → agent-connections-preview-3pYXfstj.js} +1 -1
- package/dist/client/assets/{agent-detail-BBSZrHWb.js → agent-detail-DMK-u3yi.js} +1 -1
- package/dist/client/assets/{agents-DVOxH2hb.js → agents-Wfe5dNfh.js} +1 -1
- package/dist/client/assets/{ai-providers-logos-BWU0RfRJ.js → ai-providers-logos-CCp39UCk.js} +1 -1
- package/dist/client/assets/{alert-dialog-BGZzdkI2.js → alert-dialog-B_ae3oRt.js} +1 -1
- package/dist/client/assets/{auth-catchall-1PjzZ5eD.js → auth-catchall-DAx9m28t.js} +1 -1
- package/dist/client/assets/{automation-detail-dSH73muX.js → automation-detail-DfFkGT_5.js} +1 -1
- package/dist/client/assets/{automations-CEr8CMbK.js → automations-A8NOzTSS.js} +1 -1
- package/dist/client/assets/{avatar-DWAYNsNK.js → avatar-B2yArl-q.js} +1 -1
- package/dist/client/assets/{badge-B_BTuJZe.js → badge-DtRom7JO.js} +1 -1
- package/dist/client/assets/{binder-l1kCmNCE.js → binder-D4cqx_Kx.js} +1 -1
- package/dist/client/assets/{breadcrumb-ijphtzQp.js → breadcrumb-C2RG4nAQ.js} +1 -1
- package/dist/client/assets/{card-CwEWrOs9.js → card-B8qDZGCZ.js} +1 -1
- package/dist/client/assets/{checkbox-B_91sMwd.js → checkbox-B1rexahu.js} +1 -1
- package/dist/client/assets/{collapsible-DILfwVxb.js → collapsible-BtjeaBAE.js} +1 -1
- package/dist/client/assets/{collection-detail-lkCxiUzr.js → collection-detail-BaBGI9i2.js} +1 -1
- package/dist/client/assets/{collection-display-button-kCOiEzLn.js → collection-display-button-CpVZ4wHm.js} +1 -1
- package/dist/client/assets/{collection-search-Bdxpglbf.js → collection-search-BYV7N3mr.js} +1 -1
- package/dist/client/assets/{collection-table-wrapper-D-vPJPam.js → collection-table-wrapper-CHFJQd21.js} +1 -1
- package/dist/client/assets/{collection-tabs-IdlFD1jR.js → collection-tabs-CJEa3dRy.js} +1 -1
- package/dist/client/assets/{command-BgTh2_vK.js → command-Drksh_DO.js} +1 -1
- package/dist/client/assets/{connection-card-BWZAp_hO.js → connection-card-Bak2l1_M.js} +1 -1
- package/dist/client/assets/{connection-detail-DPSHmWyz.js → connection-detail-BKy2ZsS6.js} +1 -1
- package/dist/client/assets/{connections-BvYzdmU4.js → connections-Dxf4eIOE.js} +1 -1
- package/dist/client/assets/{constants-BCt7c81T.js → constants-D7qXOYRn.js} +1 -1
- package/dist/client/assets/{context-BTMVzdan.js → context-DxQMlFKC.js} +1 -1
- package/dist/client/assets/{create-organization-dialog-Du7uAMNm.js → create-organization-dialog-CNWB-72r.js} +1 -1
- package/dist/client/assets/{create-project-dialog-Bb7dubB7.js → create-project-dialog-BeIY4Oy9.js} +1 -1
- package/dist/client/assets/{danger-CfnLHwII.js → danger-YWbxrjNq.js} +1 -1
- package/dist/client/assets/{danger-zone-DjN4GhuT.js → danger-zone-DGg0ZzSy.js} +1 -1
- package/dist/client/assets/{dependencies-CwSG23CA.js → dependencies-DtAVTWu-.js} +1 -1
- package/dist/client/assets/{dialog-BDa2Gsq9.js → dialog-ChXYvlDt.js} +1 -1
- package/dist/client/assets/{dropdown-menu-DEQ5DCnG.js → dropdown-menu-BxlQMXgW.js} +1 -1
- package/dist/client/assets/{dynamic-plugin-layout-DP6UGwOE.js → dynamic-plugin-layout-JpZTv0Ay.js} +1 -1
- package/dist/client/assets/{editable-task-title-CaE6DIBf.js → editable-task-title-Cm-uIwFs.js} +1 -1
- package/dist/client/assets/{empty-state-DmgqwjeV.js → empty-state-qLM_bVsv.js} +1 -1
- package/dist/client/assets/{empty-state-C4c2sKjV.js → empty-state-xIvMMy-_.js} +1 -1
- package/dist/client/assets/{env-vars-editor-Ah5xyGmz.js → env-vars-editor-Yss1wn0m.js} +1 -1
- package/dist/client/assets/{extract-connection-data-BxJWN5u-.js → extract-connection-data-48N591A_.js} +1 -1
- package/dist/client/assets/{file-browser-BRFmGA__.js → file-browser-BbqpPFZK.js} +2 -2
- package/dist/client/assets/{form-BWoxqZfk.js → form-CaFPTMVC.js} +1 -1
- package/dist/client/assets/{general-BKqD1lIr.js → general-DI9irVIQ.js} +1 -1
- package/dist/client/assets/{generate-id-BaIFvm62.js → generate-id-BiV6m8fS.js} +1 -1
- package/dist/client/assets/{grid-view-DGZvuOwZ.js → grid-view-DurgUMuo.js} +1 -1
- package/dist/client/assets/{home-B7jB9Gxp.js → home-CspK560n.js} +1 -1
- package/dist/client/assets/{index-BgoahoDu.js → index-ChUIqRBi.js} +1 -1
- package/dist/client/assets/{index--PLXALUm.js → index-CqWJIMlG.js} +1 -1
- package/dist/client/assets/{index-WTO-ZRzC.js → index-CqtWW-Tq.js} +1 -1
- package/dist/client/assets/{index-10S4l3se.js → index-CqyqI90F.js} +1 -1
- package/dist/client/assets/{index-DZ6p-ZXx.js → index-De1iYnQy.js} +1 -1
- package/dist/client/assets/{index-DcxE8oe_.js → index-NjMxPJgF.js} +3 -3
- package/dist/client/assets/{index-DGLQ2uQ5.js → index-TV8hw8s3.js} +1 -1
- package/dist/client/assets/{index-Bc448aeG.js → index-YL7q5tyF.js} +1 -1
- package/dist/client/assets/{index-CTjqFNkw.js → index-YRudAQp7.js} +1 -1
- package/dist/client/assets/{index-B5vgf28x.js → index-yiVP4brl.js} +1 -1
- package/dist/client/assets/{index-CM7_8eMu.js → index-zWpUeKAz.js} +1 -1
- package/dist/client/assets/{infiniteQueryObserver-CzIVu_kK.js → infiniteQueryObserver-JZ0YxCW-.js} +1 -1
- package/dist/client/assets/{input-DPpAbHbD.js → input-B89sozd8.js} +1 -1
- package/dist/client/assets/{integration-icon-6jcHFHZV.js → integration-icon-BPVDVJvP.js} +1 -1
- package/dist/client/assets/{label-BtaiiWJ8.js → label-DkiEYJcU.js} +1 -1
- package/dist/client/assets/{layout-Cjef80qc.js → layout-Cqn-h1Jz.js} +1 -1
- package/dist/client/assets/{layout-DG9LlvE6.js → layout-DcmGLVHZ.js} +1 -1
- package/dist/client/assets/{login-D1Xb70mS.js → login-qT_ItpIx.js} +1 -1
- package/dist/client/assets/{logo-upload-79T6Ecg3.js → logo-upload-CoGaedUC.js} +1 -1
- package/dist/client/assets/{mcp-app-renderer-DgOOTmoQ.js → mcp-app-renderer-By1mQEU9.js} +1 -1
- package/dist/client/assets/{mcp-server-card-CqBs71hZ.js → mcp-server-card-B3Nrrgyk.js} +1 -1
- package/dist/client/assets/{mcp-server-detail-D_BCRi3w.js → mcp-server-detail-DMfy0V9h.js} +2 -2
- package/dist/client/assets/{members-BkdG_-Nh.js → members-Q81LXZu1.js} +1 -1
- package/dist/client/assets/{monaco-editor-D5smiy7k.js → monaco-editor-ZB27PMAe.js} +1 -1
- package/dist/client/assets/{monitoring-kw0ipyvO.js → monitoring-C31A03PZ.js} +1 -1
- package/dist/client/assets/{monitoring-dashboard-edit-S2Ut1cvD.js → monitoring-dashboard-edit-Dfi8Jxeb.js} +1 -1
- package/dist/client/assets/{monitoring-dashboard-view-gNG_IQ8M.js → monitoring-dashboard-view-CxjxBHLW.js} +1 -1
- package/dist/client/assets/{monitoring-stats-row-D3PlzPcP.js → monitoring-stats-row-CAn-8pVZ.js} +1 -1
- package/dist/client/assets/{oauth-callback-9ngEzskH.js → oauth-callback-B8DRnSok.js} +1 -1
- package/dist/client/assets/{oauth-callback-ai-provider-CpdQKMVl.js → oauth-callback-ai-provider-CsTCxPAY.js} +1 -1
- package/dist/client/assets/{org-ai-providers-CrQ3OeB5.js → org-ai-providers-DaYyItUL.js} +1 -1
- package/dist/client/assets/{page-C2HdbsvN.js → page-BjLk0DX_.js} +1 -1
- package/dist/client/assets/{page-DmVGFJaY.js → page-C2I5Nlmu.js} +1 -1
- package/dist/client/assets/{plugin-empty-state-DXhpvNlI.js → plugin-empty-state-K02oXRNN.js} +1 -1
- package/dist/client/assets/{plugin-empty-state-CWxRJkeE.js → plugin-empty-state-l30u7dec.js} +1 -1
- package/dist/client/assets/{plugin-header-C3JJ8Nq_.js → plugin-header-B_wkRb4Y.js} +1 -1
- package/dist/client/assets/{plugin-header-TcX-3hN2.js → plugin-header-CE-BhILm.js} +1 -1
- package/dist/client/assets/plugins-6p4XZdw1.js +1 -0
- package/dist/client/assets/{popover-CNIkv0WT.js → popover-Br8QkMK3.js} +1 -1
- package/dist/client/assets/{project-app-view-BVSK5NCb.js → project-app-view-CRe7LVZk.js} +1 -1
- package/dist/client/assets/{project-layout-Bd1vlG83.js → project-layout-Bg1hlIaM.js} +1 -1
- package/dist/client/assets/{project-plugins-az_ZXSwN.js → project-plugins-BHOZZsH7.js} +1 -1
- package/dist/client/assets/{projects-list-D8eiYeUr.js → projects-list-i4ZvUqtI.js} +1 -1
- package/dist/client/assets/{registry-layout-BXceDqEw.js → registry-layout-DQV7LhSo.js} +1 -1
- package/dist/client/assets/{registry-utils-CkCRcmq4.js → registry-utils-cjX9P5J9.js} +1 -1
- package/dist/client/assets/{reset-password-xlfm2d95.js → reset-password-Cgcrl5ZG.js} +1 -1
- package/dist/client/assets/{resizable-B7fIdnoq.js → resizable-Nu1SqaJD.js} +1 -1
- package/dist/client/assets/{save-actions-DIKaTzi7.js → save-actions-CVl6VtT2.js} +1 -1
- package/dist/client/assets/{scroll-area-B-pB6oMr.js → scroll-area-BTJQ86Ry.js} +1 -1
- package/dist/client/assets/{select-DeNgR918.js → select-Dx3T3-4n.js} +1 -1
- package/dist/client/assets/{select-virtual-mcp-CFDIRCp8.js → select-virtual-mcp-BS537pmy.js} +1 -1
- package/dist/client/assets/{sheet-BBLyN2xl.js → sheet-C3HM0Uwr.js} +1 -1
- package/dist/client/assets/{shell-layout-CiKn6BP6.js → shell-layout-Bco0BFOl.js} +2 -2
- package/dist/client/assets/{sidebar-settings-DOwlHFdj.js → sidebar-settings-JhN4X_jg.js} +1 -1
- package/dist/client/assets/{skeleton-CNgs5GJt.js → skeleton-Cjm8s7CT.js} +1 -1
- package/dist/client/assets/{spinner-BZdAS5i2.js → spinner-Dzx7B3Jl.js} +1 -1
- package/dist/client/assets/{store-invite-BXcKXIzr.js → store-invite-BPcFU0aw.js} +1 -1
- package/dist/client/assets/{switch-CmREXk8C.js → switch-CA_oYDia.js} +1 -1
- package/dist/client/assets/{table-C4WVepD4.js → table-C-1rP_rt.js} +1 -1
- package/dist/client/assets/{tabs-BeYHPY-1.js → tabs-BSOe8gLq.js} +1 -1
- package/dist/client/assets/{task-status-DauQRqAW.js → task-status-DYx9R7EL.js} +1 -1
- package/dist/client/assets/tasks-D1X8oLa3.js +1 -0
- package/dist/client/assets/{tasks-panel-DqbQRMGq.js → tasks-panel-BJ3TfA-_.js} +1 -1
- package/dist/client/assets/{textarea-C7YqhWTc.js → textarea-DIJzFUWn.js} +1 -1
- package/dist/client/assets/{time-range-picker-CM-9xODE.js → time-range-picker-CGBh-D6p.js} +1 -1
- package/dist/client/assets/{toggle-group-B7g3fYap.js → toggle-group-DlZGDyPQ.js} +1 -1
- package/dist/client/assets/{tools-list-4D_tBiUe.js → tools-list-D-T64862.js} +1 -1
- package/dist/client/assets/{tooltip-CXZH0tSC.js → tooltip-BJMSu0c2.js} +1 -1
- package/dist/client/assets/{topbar-portal-CjA9qO3_.js → topbar-portal-ChPXVsi1.js} +1 -1
- package/dist/client/assets/{types-CPj3Y6i2.js → types-BHeMLyAV.js} +1 -1
- package/dist/client/assets/{use-automations-B0CZymwk.js → use-automations-Bmw3x7Dk.js} +1 -1
- package/dist/client/assets/{use-collections-CObsJD7p.js → use-collections-C0cYiFfV.js} +1 -1
- package/dist/client/assets/{use-connection-Cv_-e2MS.js → use-connection-CHFdKnsr.js} +1 -1
- package/dist/client/assets/{use-copy-sxHnzQ3E.js → use-copy-xhdji_Bl.js} +1 -1
- package/dist/client/assets/{use-create-virtual-mcp-dSjfTRl8.js → use-create-virtual-mcp-B7odZ_c3.js} +1 -1
- package/dist/client/assets/{use-infinite-scroll-CqxPDCSp.js → use-infinite-scroll-CPhZNIw7.js} +1 -1
- package/dist/client/assets/{use-install-from-registry-wW1d1HtB.js → use-install-from-registry-BzwuBLOx.js} +1 -1
- package/dist/client/assets/{use-list-state-CWVUvMhj.js → use-list-state-CbsN6RbJ.js} +1 -1
- package/dist/client/assets/{use-mcp-prompts-C4X4lEEg.js → use-mcp-prompts-Bel4H4rh.js} +1 -1
- package/dist/client/assets/{use-mcp-resources-DoUnZI9j.js → use-mcp-resources-qGdymfRz.js} +1 -1
- package/dist/client/assets/{use-mcp-tools-Cnh4vEBm.js → use-mcp-tools-BCZI_Wqc.js} +1 -1
- package/dist/client/assets/{use-members-BHa-Fb-h.js → use-members-B4ncWtMV.js} +1 -1
- package/dist/client/assets/{use-mobile-v2XXLV0O.js → use-mobile-DOUfTohp.js} +1 -1
- package/dist/client/assets/{use-project-B-9YXhNP.js → use-project-b5C3lq5-.js} +1 -1
- package/dist/client/assets/{use-store-discovery-z8nwAYJJ.js → use-store-discovery-B402mTHd.js} +1 -1
- package/dist/client/assets/{use-view-mode-XMRPR1ke.js → use-view-mode-ss3eRodO.js} +1 -1
- package/dist/client/assets/{use-virtual-mcp-DfPJ-WDb.js → use-virtual-mcp-BP6aaUzw.js} +1 -1
- package/dist/client/assets/useInfiniteQuery-BXDrDvlH.js +1 -0
- package/dist/client/assets/{useMutation-CV3IN68C.js → useMutation-68NxhXCf.js} +1 -1
- package/dist/client/assets/useQuery-BYBCFxgb.js +1 -0
- package/dist/client/assets/useSuspenseInfiniteQuery-X3jXt04i.js +1 -0
- package/dist/client/assets/{user-_Hc5WOWn.js → user-iDZRuimU.js} +1 -1
- package/dist/client/assets/{workflow-DKAllKJO.js → workflow-CrrTPehP.js} +1 -1
- package/dist/client/index.html +1 -1
- package/dist/server/cli.js +2 -2
- package/dist/server/migrate.js +1 -1
- package/dist/server/node_modules/pg-connection-string/LICENSE +21 -0
- package/dist/server/node_modules/pg-connection-string/README.md +105 -0
- package/dist/server/node_modules/pg-connection-string/esm/index.mjs +8 -0
- package/dist/server/node_modules/pg-connection-string/index.d.ts +36 -0
- package/dist/server/node_modules/pg-connection-string/index.js +231 -0
- package/dist/server/node_modules/pg-connection-string/package.json +52 -0
- package/dist/server/node_modules/{pg → pg-pool}/LICENSE +1 -1
- package/dist/server/node_modules/pg-pool/README.md +357 -0
- package/dist/server/node_modules/pg-pool/esm/index.mjs +5 -0
- package/dist/server/node_modules/pg-pool/index.js +517 -0
- package/dist/server/node_modules/pg-pool/package.json +51 -0
- package/dist/server/server.js +2 -2
- package/package.json +1 -1
- package/dist/client/assets/plugins-BfcAD8Xs.js +0 -1
- package/dist/client/assets/tasks-fQ7kFf17.js +0 -1
- package/dist/client/assets/useInfiniteQuery-BIejUr4H.js +0 -1
- package/dist/client/assets/useQuery-CEE9SUlS.js +0 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-B7NkSjI9.js +0 -1
- package/dist/server/node_modules/pg/README.md +0 -95
- package/dist/server/node_modules/pg/esm/index.mjs +0 -20
- package/dist/server/node_modules/pg/lib/client.js +0 -743
- package/dist/server/node_modules/pg/lib/connection-parameters.js +0 -171
- package/dist/server/node_modules/pg/lib/connection.js +0 -221
- package/dist/server/node_modules/pg/lib/crypto/cert-signatures.js +0 -122
- package/dist/server/node_modules/pg/lib/crypto/sasl.js +0 -212
- package/dist/server/node_modules/pg/lib/crypto/utils-legacy.js +0 -43
- package/dist/server/node_modules/pg/lib/crypto/utils-webcrypto.js +0 -89
- package/dist/server/node_modules/pg/lib/crypto/utils.js +0 -9
- package/dist/server/node_modules/pg/lib/defaults.js +0 -91
- package/dist/server/node_modules/pg/lib/index.js +0 -73
- package/dist/server/node_modules/pg/lib/native/client.js +0 -323
- package/dist/server/node_modules/pg/lib/native/index.js +0 -2
- package/dist/server/node_modules/pg/lib/native/query.js +0 -165
- package/dist/server/node_modules/pg/lib/query.js +0 -252
- package/dist/server/node_modules/pg/lib/result.js +0 -109
- package/dist/server/node_modules/pg/lib/stream.js +0 -83
- package/dist/server/node_modules/pg/lib/type-overrides.js +0 -35
- package/dist/server/node_modules/pg/lib/utils.js +0 -217
- package/dist/server/node_modules/pg/package.json +0 -76
package/dist/server/server.js
CHANGED
|
@@ -1420,7 +1420,7 @@ ${Q}
|
|
|
1420
1420
|
`;break}case"tool":throw new Oq({functionality:"tool messages"});default:break}return W+=`${G}:
|
|
1421
1421
|
`,{prompt:W}}function BW8(Y){if(Y.type==="url")return{type:"image_url",image_url:{url:Y.url}};return{type:"image_url",image_url:{url:V$6({data:Y.data,mediaType:Y.mediaType,defaultMediaType:NW8})}}}function DW8(Y){return Object.fromEntries(Object.entries(Y).filter(([,X])=>X!=null))}function wW8(Y){if(!Y)return{};if(Y instanceof Headers)return Object.fromEntries(Y.entries());if(Array.isArray(Y))return Object.fromEntries(Y);return Y}function MW8(Y,X){let J=X.toLowerCase();return Object.keys(Y).find((G)=>G.toLowerCase()===J)}function AW8(Y,...X){let J=wW8(Y),G=DW8(J),W=MW8(G,"user-agent"),K=W?G[W]:void 0,Z=(K==null?void 0:K.trim())?K:X.filter(Boolean).join(" "),Q=Object.fromEntries(Object.entries(G).filter(([H])=>H.toLowerCase()!=="user-agent"));return k9(J6({},Q),{"user-agent":Z})}function Hh1(Y={}){var X,J,G;let W=(J=cG8((X=Y.baseURL)!=null?X:Y.baseUrl))!=null?J:"https://openrouter.ai/api/v1",K=(G=Y.compatibility)!=null?G:"compatible",Z=()=>AW8(J6(J6({Authorization:`Bearer ${m78({apiKey:Y.apiKey,environmentVariableName:"OPENROUTER_API_KEY",description:"OpenRouter"})}`},Y.headers),Y.api_keys&&Object.keys(Y.api_keys).length>0&&{"X-Provider-API-Keys":JSON.stringify(Y.api_keys)}),`ai-sdk/openrouter/${PW8}`),Q=(q,L={})=>new HW8(q,L,{provider:"openrouter.chat",url:({path:O})=>`${W}${O}`,headers:Z,compatibility:K,fetch:Y.fetch,extraBody:Y.extraBody}),H=(q,L={})=>new FW8(q,L,{provider:"openrouter.completion",url:({path:O})=>`${W}${O}`,headers:Z,compatibility:K,fetch:Y.fetch,extraBody:Y.extraBody}),$=(q,L={})=>new qW8(q,L,{provider:"openrouter.embedding",url:({path:O})=>`${W}${O}`,headers:Z,fetch:Y.fetch,extraBody:Y.extraBody}),V=(q,L={})=>new OW8(q,L,{provider:"openrouter.image",url:({path:O})=>`${W}${O}`,headers:Z,fetch:Y.fetch,extraBody:Y.extraBody}),z=(q,L)=>{if(new.target)throw Error("The OpenRouter model function cannot be called with the new keyword.");if(q==="openai/gpt-3.5-turbo-instruct")return H(q,L);return Q(q,L)},U=(q,L)=>z(q,L);return U.languageModel=z,U.chat=Q,U.completion=H,U.textEmbeddingModel=$,U.embedding=$,U.imageModel=V,U}var K78,H78,$78,$J1,w36,M36,A36=(Y)=>{throw TypeError(Y)},bH6=(Y,X,J)=>(X in Y)?K78(Y,X,{enumerable:!0,configurable:!0,writable:!0,value:J}):Y[X]=J,J6=(Y,X)=>{for(var J in X||(X={}))if(w36.call(X,J))bH6(Y,J,X[J]);if($J1){for(var J of $J1(X))if(M36.call(X,J))bH6(Y,J,X[J])}return Y},k9=(Y,X)=>H78(Y,$78(X)),xl=(Y,X)=>{var J={};for(var G in Y)if(w36.call(Y,G)&&X.indexOf(G)<0)J[G]=Y[G];if(Y!=null&&$J1){for(var G of $J1(Y))if(X.indexOf(G)<0&&M36.call(Y,G))J[G]=Y[G]}return J},F78=(Y,X,J)=>X.has(Y)||A36("Cannot "+J),hH6=(Y,X,J)=>(F78(Y,X,"read from private field"),J?J.call(Y):X.get(Y)),V78=(Y,X,J)=>X.has(Y)?A36("Cannot add the same private member more than once"):X instanceof WeakSet?X.add(Y):X.set(Y,J),P36="vercel.ai.error",z78,xH6,gH6,kY,E36="AI_APICallError",T36,U78,uH6,mH6,G$,R36="AI_EmptyResponseBodyError",C36,q78,lH6,dH6,L78,j36="AI_InvalidArgumentError",S36,O78,cH6,pH6,_36,k36="AI_InvalidPromptError",v36,N78,nH6,iH6,B78,f36="AI_InvalidResponseDataError",y36,D78,aH6,rH6,hl,b36="AI_JSONParseError",h36,w78,oH6,sH6,FJ1,x36="AI_LoadAPIKeyError",g36,M78,tH6,eH6,ZJ1,u36="AI_LoadSettingError",m36,A78,Y36,X36,G_Y,l36="AI_NoContentGeneratedError",d36,P78,J36,G36,Xh1,c36="AI_NoSuchModelError",p36,E78,W36,Z36,W_Y,n36="AI_TooManyEmbeddingValuesForCallError",i36,T78,Q36,K36,Z_Y,a36="AI_TypeValidationError",r36,R78,H36,$36,gl,o36="AI_UnsupportedFunctionalityError",s36,C78,F36,V36,Oq,z36,S78,_78,$_Y,t36="AI_DownloadError",e36,v78,U36,q36,F_Y,f78=({prefix:Y,size:X=16,alphabet:J="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",separator:G="-"}={})=>{let W=()=>{let K=J.length,Z=Array(X);for(let Q=0;Q<X;Q++)Z[Q]=J[Math.random()*K|0];return Z.join("")};if(Y==null)return W;if(J.includes(G))throw new _36({argument:"separator",message:`The separator "${G}" must not be part of the alphabet "${J}".`});return()=>`${Y}${G}${W()}`},J$,y78,u78="4.0.1",l78,d78,p78,O36,n78=(Y)=>typeof Y==="string"?k9(J6({},O36),{name:Y}):J6(J6({},O36),Y),o78=(Y,X)=>{return LY(Y.innerType._def,X)},s78=(Y)=>{let X={type:"integer",format:"unix-time"};for(let J of Y.checks)switch(J.kind){case"min":X.minimum=J.value;break;case"max":X.maximum=J.value;break}return X},XG8=(Y)=>{if("type"in Y&&Y.type==="string")return!1;return"allOf"in Y},nb1=void 0,Y$,WG8,sb1,VG8=(Y,X)=>{let J=(Y.options instanceof Map?Array.from(Y.options.values()):Y.options).map((G,W)=>LY(G._def,k9(J6({},X),{currentPath:[...X.currentPath,"anyOf",`${W}`]}))).filter((G)=>!!G&&(!X.strictUnions||typeof G==="object"&&Object.keys(G).length>0));return J.length?{anyOf:J}:void 0},NG8=(Y,X)=>{var J;if(X.currentPath.toString()===((J=X.propertyPath)==null?void 0:J.toString()))return LY(Y.innerType._def,X);let G=LY(Y.innerType._def,k9(J6({},X),{currentPath:[...X.currentPath,"anyOf","1"]}));return G?{anyOf:[{not:dQ()},G]}:dQ()},BG8=(Y,X)=>{if(X.pipeStrategy==="input")return LY(Y.in._def,X);else if(X.pipeStrategy==="output")return LY(Y.out._def,X);let J=LY(Y.in._def,k9(J6({},X),{currentPath:[...X.currentPath,"allOf","0"]})),G=LY(Y.out._def,k9(J6({},X),{currentPath:[...X.currentPath,"allOf",J?"1":"0"]}));return{allOf:[J,G].filter((W)=>W!==void 0)}},EG8=(Y,X)=>{return LY(Y.innerType._def,X)},TG8=(Y,X,J)=>{switch(X){case h1.ZodString:return J$6(Y,J);case h1.ZodNumber:return UG8(Y);case h1.ZodObject:return qG8(Y,J);case h1.ZodBigInt:return a78(Y);case h1.ZodBoolean:return r78();case h1.ZodDate:return X$6(Y,J);case h1.ZodUndefined:return AG8();case h1.ZodNull:return $G8();case h1.ZodArray:return i78(Y,J);case h1.ZodUnion:case h1.ZodDiscriminatedUnion:return FG8(Y,J);case h1.ZodIntersection:return JG8(Y,J);case h1.ZodTuple:return MG8(Y,J);case h1.ZodRecord:return G$6(Y,J);case h1.ZodLiteral:return GG8(Y);case h1.ZodEnum:return YG8(Y);case h1.ZodNativeEnum:return KG8(Y);case h1.ZodNullable:return zG8(Y,J);case h1.ZodOptional:return NG8(Y,J);case h1.ZodMap:return QG8(Y,J);case h1.ZodSet:return wG8(Y,J);case h1.ZodLazy:return()=>Y.getter()._def;case h1.ZodPromise:return DG8(Y,J);case h1.ZodNaN:case h1.ZodNever:return HG8();case h1.ZodEffects:return e78(Y,J);case h1.ZodAny:return dQ();case h1.ZodUnknown:return PG8();case h1.ZodDefault:return t78(Y,J);case h1.ZodBranded:return Y$6(Y,J);case h1.ZodReadonly:return EG8(Y,J);case h1.ZodCatch:return o78(Y,J);case h1.ZodPipeline:return BG8(Y,J);case h1.ZodFunction:case h1.ZodVoid:case h1.ZodSymbol:return;default:return((G)=>{return})(X)}},RG8=(Y,X)=>{let J=0;for(;J<Y.length&&J<X.length;J++)if(Y[J]!==X[J])break;return[(Y.length-J).toString(),...X.slice(J)].join("/")},CG8=(Y,X)=>{switch(X.$refStrategy){case"root":return{$ref:Y.path.join("/")};case"relative":return{$ref:RG8(X.currentPath,Y.path)};case"none":case"seen":{if(Y.path.length<X.currentPath.length&&Y.path.every((J,G)=>X.currentPath[G]===J))return console.warn(`Recursive reference detected at ${X.currentPath.join("/")}! Defaulting to any`),dQ();return X.$refStrategy==="seen"?dQ():void 0}}},IG8=(Y,X,J)=>{if(Y.description)J.description=Y.description;return J},jG8=(Y)=>{let X=n78(Y),J=X.name!==void 0?[...X.basePath,X.definitionPath,X.name]:X.basePath;return k9(J6({},X),{currentPath:J,propertyPath:void 0,seen:new Map(Object.entries(X.definitions).map(([G,W])=>[W._def,{def:W._def,path:[...X.basePath,X.definitionPath,G],jsonSchema:void 0}]))})},SG8=(Y,X)=>{var J;let G=jG8(X),W=typeof X==="object"&&X.definitions?Object.entries(X.definitions).reduce(($,[V,z])=>{var U;return k9(J6({},$),{[V]:(U=LY(z._def,k9(J6({},G),{currentPath:[...G.basePath,G.definitionPath,V]}),!0))!=null?U:dQ()})},{}):void 0,K=typeof X==="string"?X:(X==null?void 0:X.nameStrategy)==="title"?void 0:X==null?void 0:X.name,Z=(J=LY(Y._def,K===void 0?G:k9(J6({},G),{currentPath:[...G.basePath,G.definitionPath,K]}),!1))!=null?J:dQ(),Q=typeof X==="object"&&X.name!==void 0&&X.nameStrategy==="title"?X.name:void 0;if(Q!==void 0)Z.title=Q;let H=K===void 0?W?k9(J6({},Z),{[G.definitionPath]:W}):Z:{$ref:[...G.$refStrategy==="relative"?[]:G.basePath,G.definitionPath,K].join("/"),[G.definitionPath]:k9(J6({},W),{[K]:Z})};return H.$schema="http://json-schema.org/draft-07/schema#",H},tb1,mG8=()=>globalThis.fetch,ej=async({url:Y,headers:X,body:J,failedResponseHandler:G,successfulResponseHandler:W,abortSignal:K,fetch:Z})=>lG8({url:Y,headers:J6({"Content-Type":"application/json"},X),body:{content:JSON.stringify(J),values:J},failedResponseHandler:G,successfulResponseHandler:W,abortSignal:K,fetch:Z}),lG8=async({url:Y,headers:X={},body:J,successfulResponseHandler:G,failedResponseHandler:W,abortSignal:K,fetch:Z=mG8()})=>{try{let Q=await Z(Y,{method:"POST",headers:g78(X,`ai-sdk/provider-utils/${u78}`,h78()),body:J.content,signal:K}),H=qJ1(Q);if(!Q.ok){let $;try{$=await W({response:Q,url:Y,requestBodyValues:J.values})}catch(V){if(ob1(V)||G$.isInstance(V))throw V;throw new G$({message:"Failed to process error response",cause:V,statusCode:Q.status,url:Y,responseHeaders:H,requestBodyValues:J.values})}throw $.value}try{return await G({response:Q,url:Y,requestBodyValues:J.values})}catch($){if($ instanceof Error){if(ob1($)||G$.isInstance($))throw $}throw new G$({message:"Failed to process successful response",cause:$,statusCode:Q.status,url:Y,responseHeaders:H,requestBodyValues:J.values})}}catch(Q){throw b78({error:Q,url:Y,requestBodyValues:J.values})}},dG8=({errorSchema:Y,errorToMessage:X,isRetryable:J})=>async({response:G,url:W,requestBodyValues:K})=>{let Z=await G.text(),Q=qJ1(G);if(Z.trim()==="")return{responseHeaders:Q,value:new G$({message:G.statusText,url:W,requestBodyValues:K,statusCode:G.status,responseHeaders:Q,responseBody:Z,isRetryable:J==null?void 0:J(G)})};try{let H=await gG8({text:Z,schema:Y});return{responseHeaders:Q,value:new G$({message:X(H),url:W,requestBodyValues:K,statusCode:G.status,responseHeaders:Q,responseBody:Z,data:H,isRetryable:J==null?void 0:J(G,H)})}}catch(H){return{responseHeaders:Q,value:new G$({message:G.statusText,url:W,requestBodyValues:K,statusCode:G.status,responseHeaders:Q,responseBody:Z,isRetryable:J==null?void 0:J(G)})}}},Q$6=(Y)=>async({response:X})=>{let J=qJ1(X);if(X.body==null)throw new L78({});return{responseHeaders:J,value:uG8({stream:X.body,schema:Y})}},OJ1=(Y)=>async({response:X,url:J,requestBodyValues:G})=>{let W=await X.text(),K=await Z$6({text:W,schema:Y}),Z=qJ1(X);if(!K.success)throw new G$({message:"Invalid JSON response",cause:K.error,statusCode:X.status,responseHeaders:Z,responseBody:W,url:J,requestBodyValues:G});return{responseHeaders:Z,value:K.value,rawValue:K.rawValue}},K$6,Gh1,pG8,nG8,iG8,Wh1,KJ1,Zh1,z_Y,NJ1,YS,H$6,Qh1,$$6,HJ1,oG8=class{constructor(){V78(this,HJ1,new Set)}upsert(Y){let X=this.getCanonicalKey(Y);if(X===null)return!1;if(hH6(this,HJ1).has(X))return!1;return hH6(this,HJ1).add(X),!0}getCanonicalKey(Y){switch(Y.type){case"reasoning.summary":return Y.summary;case"reasoning.encrypted":if(Y.id)return Y.id;return Y.data;case"reasoning.text":{if(Y.text)return Y.text;if(Y.signature)return Y.signature;return null}default:return null}}},sG8,tG8,O_Y,WW8,ZW8,z$6,U$6,QW8,KW8,HW8=class{constructor(Y,X,J){this.specificationVersion="v3",this.provider="openrouter",this.defaultObjectGenerationMode="tool",this.supportsImageUrls=!0,this.supportedUrls={"image/*":[/^data:image\/[a-zA-Z]+;base64,/,/^https?:\/\/.+\.(jpg|jpeg|png|gif|webp)$/i],"application/*":[/^data:application\//,/^https?:\/\/.+$/]},this.modelId=Y,this.settings=X,this.config=J}getArgs({prompt:Y,maxOutputTokens:X,temperature:J,topP:G,frequencyPenalty:W,presencePenalty:K,seed:Z,stopSequences:Q,responseFormat:H,topK:$,tools:V,toolChoice:z}){var U;let q=J6(J6({model:this.modelId,models:this.settings.models,logit_bias:this.settings.logitBias,logprobs:this.settings.logprobs===!0||typeof this.settings.logprobs==="number"?!0:void 0,top_logprobs:typeof this.settings.logprobs==="number"?this.settings.logprobs:typeof this.settings.logprobs==="boolean"?this.settings.logprobs?0:void 0:void 0,user:this.settings.user,parallel_tool_calls:this.settings.parallelToolCalls,max_tokens:X,temperature:J,top_p:G,frequency_penalty:W,presence_penalty:K,seed:Z,stop:Q,response_format:(H==null?void 0:H.type)==="json"?H.schema!=null?{type:"json_schema",json_schema:J6({schema:H.schema,strict:!0,name:(U=H.name)!=null?U:"response"},H.description&&{description:H.description})}:{type:"json_object"}:void 0,top_k:$,messages:YW8(Y),include_reasoning:this.settings.includeReasoning,reasoning:this.settings.reasoning,usage:this.settings.usage,plugins:this.settings.plugins,web_search_options:this.settings.web_search_options,provider:this.settings.provider,debug:this.settings.debug,cache_control:this.settings.cache_control},this.config.extraBody),this.settings.extraBody);if(V&&V.length>0){let L=V.filter((O)=>O.type==="function").map((O)=>({type:"function",function:{name:O.name,description:O.description,parameters:O.inputSchema}}));return k9(J6({},q),{tools:L,tool_choice:z?GW8(z):void 0})}return q}async doGenerate(Y){var X,J,G,W,K,Z,Q,H,$,V,z,U,q,L,O,M,P,R,I,T,E,j;let g=(Y.providerOptions||{}).openrouter||{},{cacheControl:f}=g,y=xl(g,["cacheControl"]),a=J6(J6(J6({},this.getArgs(Y)),y),f!=null&&!("cache_control"in y)?{cache_control:f}:{}),{value:c,responseHeaders:m}=await ej({url:this.config.url({path:"/chat/completions",modelId:this.modelId}),headers:tj(this.config.headers(),Y.headers),body:a,failedResponseHandler:YS,successfulResponseHandler:OJ1(QW8),abortSignal:Y.abortSignal,fetch:this.config.fetch});if("error"in c){let Q1=c.error;throw new G$({message:Q1.message,url:this.config.url({path:"/chat/completions",modelId:this.modelId}),requestBodyValues:a,statusCode:200,responseHeaders:m,data:Q1})}let i=c,H1=i.choices[0];if(!H1)throw new Xh1({message:"No choice in response"});let G1=i.usage?VJ1(i.usage):F$6(),D1=(X=H1.message.reasoning_details)!=null?X:[],M1=D1.length>0?D1.map((Q1)=>{switch(Q1.type){case"reasoning.text":{if(Q1.text)return{type:"reasoning",text:Q1.text,providerMetadata:{openrouter:{reasoning_details:[Q1]}}};break}case"reasoning.summary":{if(Q1.summary)return{type:"reasoning",text:Q1.summary,providerMetadata:{openrouter:{reasoning_details:[Q1]}}};break}case"reasoning.encrypted":{if(Q1.data)return{type:"reasoning",text:"[REDACTED]",providerMetadata:{openrouter:{reasoning_details:[Q1]}}};break}default:}return null}).filter((Q1)=>Q1!==null):H1.message.reasoning?[{type:"reasoning",text:H1.message.reasoning}]:[],P1=[];if(P1.push(...M1),H1.message.content)P1.push({type:"text",text:H1.message.content});if(H1.message.tool_calls){let Q1=!1;for(let i1 of H1.message.tool_calls)P1.push({type:"tool-call",toolCallId:(J=i1.id)!=null?J:J$(),toolName:i1.function.name,input:(G=i1.function.arguments)!=null?G:"{}",providerMetadata:!Q1?{openrouter:{reasoning_details:D1}}:void 0}),Q1=!0}if(H1.message.images)for(let Q1 of H1.message.images)P1.push({type:"file",mediaType:B36(Q1.image_url.url,"image/jpeg"),data:UJ1(Q1.image_url.url)});if(H1.message.annotations){for(let Q1 of H1.message.annotations)if(Q1.type==="url_citation")P1.push({type:"source",sourceType:"url",id:Q1.url_citation.url,url:Q1.url_citation.url,title:(W=Q1.url_citation.title)!=null?W:"",providerMetadata:{openrouter:{content:(K=Q1.url_citation.content)!=null?K:"",startIndex:(Z=Q1.url_citation.start_index)!=null?Z:0,endIndex:(Q=Q1.url_citation.end_index)!=null?Q:0}}})}let _1=(H=H1.message.annotations)==null?void 0:H.filter((Q1)=>Q1.type==="file"),f1=H1.message.tool_calls&&H1.message.tool_calls.length>0,W0=D1.some((Q1)=>Q1.type==="reasoning.encrypted"&&Q1.data),v1=f1&&W0&&H1.finish_reason==="stop"?oN("tool-calls",($=H1.finish_reason)!=null?$:void 0):zJ1(H1.finish_reason);return{content:P1,finishReason:v1,usage:G1,warnings:[],providerMetadata:{openrouter:Qh1.parse({provider:(V=i.provider)!=null?V:"",reasoning_details:(z=H1.message.reasoning_details)!=null?z:[],annotations:_1&&_1.length>0?_1:void 0,usage:J6(J6(J6(J6({promptTokens:(U=G1.inputTokens.total)!=null?U:0,completionTokens:(q=G1.outputTokens.total)!=null?q:0,totalTokens:((L=G1.inputTokens.total)!=null?L:0)+((O=G1.outputTokens.total)!=null?O:0)},((M=i.usage)==null?void 0:M.cost)!=null?{cost:i.usage.cost}:{}),((R=(P=i.usage)==null?void 0:P.prompt_tokens_details)==null?void 0:R.cached_tokens)!=null?{promptTokensDetails:{cachedTokens:i.usage.prompt_tokens_details.cached_tokens}}:{}),((T=(I=i.usage)==null?void 0:I.completion_tokens_details)==null?void 0:T.reasoning_tokens)!=null?{completionTokensDetails:{reasoningTokens:i.usage.completion_tokens_details.reasoning_tokens}}:{}),((j=(E=i.usage)==null?void 0:E.cost_details)==null?void 0:j.upstream_inference_cost)!=null?{costDetails:{upstreamInferenceCost:i.usage.cost_details.upstream_inference_cost}}:{})})},request:{body:a},response:{id:i.id,modelId:i.model,headers:m}}}async doStream(Y){var X;let W=(Y.providerOptions||{}).openrouter||{},{cacheControl:K}=W,Z=xl(W,["cacheControl"]),Q=J6(J6(J6({},this.getArgs(Y)),Z),K!=null&&!("cache_control"in Z)?{cache_control:K}:{}),{value:H,responseHeaders:$}=await ej({url:this.config.url({path:"/chat/completions",modelId:this.modelId}),headers:tj(this.config.headers(),Y.headers),body:k9(J6({},Q),{stream:!0,stream_options:this.config.compatibility==="strict"?J6({include_usage:!0},((X=this.settings.usage)==null?void 0:X.include)?{include_usage:!0}:{}):void 0}),failedResponseHandler:YS,successfulResponseHandler:Q$6(KW8),abortSignal:Y.abortSignal,fetch:this.config.fetch}),V=[],z=oN("other"),U={inputTokens:{total:void 0,noCache:void 0,cacheRead:void 0,cacheWrite:void 0},outputTokens:{total:void 0,text:void 0,reasoning:void 0},raw:void 0},q={},L,O=[],M=!1,P=[],R=!1,I=!1,T,E,j,v;return{stream:H.pipeThrough(new TransformStream({transform(k,g){var f,y,a,c,m,i,H1,G1,D1,M1,P1,_1,f1,W0,m1,v1,Q1,i1,D0,U0,x1;if(Y.includeRawChunks)g.enqueue({type:"raw",rawValue:k.rawValue});if(!k.success){z=oN("error"),g.enqueue({type:"error",error:k.error});return}let A1=k.value;if("error"in A1){z=oN("error"),g.enqueue({type:"error",error:A1.error});return}if(A1.provider)v=A1.provider;if(A1.id)j=A1.id,g.enqueue({type:"response-metadata",id:A1.id});if(A1.model)g.enqueue({type:"response-metadata",modelId:A1.model});if(A1.usage!=null){let z1=VJ1(A1.usage);Object.assign(U.inputTokens,z1.inputTokens),Object.assign(U.outputTokens,z1.outputTokens),L=A1.usage;let r1=(f=A1.usage.prompt_tokens)!=null?f:0,g1=(y=A1.usage.completion_tokens)!=null?y:0;if(q.promptTokens=r1,A1.usage.prompt_tokens_details)q.promptTokensDetails={cachedTokens:(a=A1.usage.prompt_tokens_details.cached_tokens)!=null?a:0};if(q.completionTokens=g1,A1.usage.completion_tokens_details)q.completionTokensDetails={reasoningTokens:(c=A1.usage.completion_tokens_details.reasoning_tokens)!=null?c:0};if(A1.usage.cost!=null)q.cost=A1.usage.cost;q.totalTokens=A1.usage.total_tokens;let n1=(m=A1.usage.cost_details)==null?void 0:m.upstream_inference_cost;if(n1!=null)q.costDetails={upstreamInferenceCost:n1}}let U1=A1.choices[0];if((U1==null?void 0:U1.finish_reason)!=null)z=zJ1(U1.finish_reason);if((U1==null?void 0:U1.delta)==null)return;let K1=U1.delta,B1=(z1,r1)=>{if(!I)E=j||J$(),g.enqueue({providerMetadata:r1,type:"reasoning-start",id:E}),I=!0;g.enqueue({providerMetadata:r1,type:"reasoning-delta",delta:z1,id:E||J$()})};if(K1.reasoning_details&&K1.reasoning_details.length>0){for(let r1 of K1.reasoning_details)if(r1.type==="reasoning.text"){let g1=O[O.length-1];if((g1==null?void 0:g1.type)==="reasoning.text")g1.text=(g1.text||"")+(r1.text||""),g1.signature=g1.signature||r1.signature,g1.format=g1.format||r1.format;else O.push(J6({},r1))}else O.push(r1);let z1={openrouter:{reasoning_details:O.map((r1)=>J6({},r1))}};for(let r1 of K1.reasoning_details)switch(r1.type){case"reasoning.text":{B1(r1.text||"",z1);break}case"reasoning.encrypted":{if(r1.data)B1("[REDACTED]",z1);break}case"reasoning.summary":{if(r1.summary)B1(r1.summary,z1);break}default:break}}else if(K1.reasoning)B1(K1.reasoning);if(K1.content){if(I&&!R)g.enqueue({type:"reasoning-end",id:E||J$(),providerMetadata:O.length>0?{openrouter:{reasoning_details:O}}:void 0}),I=!1;if(!R)T=j||J$(),g.enqueue({type:"text-start",id:T}),R=!0;g.enqueue({type:"text-delta",delta:K1.content,id:T||J$()})}if(K1.annotations){for(let z1 of K1.annotations)if(z1.type==="url_citation")g.enqueue({type:"source",sourceType:"url",id:z1.url_citation.url,url:z1.url_citation.url,title:(i=z1.url_citation.title)!=null?i:"",providerMetadata:{openrouter:{content:(H1=z1.url_citation.content)!=null?H1:"",startIndex:(G1=z1.url_citation.start_index)!=null?G1:0,endIndex:(D1=z1.url_citation.end_index)!=null?D1:0}}});else if(z1.type==="file"){let r1=z1.file;if(r1&&typeof r1==="object"&&"hash"in r1&&"name"in r1)P.push(z1)}}if(K1.tool_calls!=null)for(let z1 of K1.tool_calls){let r1=(M1=z1.index)!=null?M1:V.length-1;if(V[r1]==null){if(z1.type!=="function")throw new hl({data:z1,message:"Expected 'function' type."});if(z1.id==null)throw new hl({data:z1,message:"Expected 'id' to be a string."});if(((P1=z1.function)==null?void 0:P1.name)==null)throw new hl({data:z1,message:"Expected 'function.name' to be a string."});V[r1]={id:z1.id,type:"function",function:{name:z1.function.name,arguments:(_1=z1.function.arguments)!=null?_1:""},inputStarted:!1,sent:!1};let n1=V[r1];if(n1==null)throw new hl({data:{index:r1,toolCallsLength:V.length},message:`Tool call at index ${r1} is missing after creation.`});if(((f1=n1.function)==null?void 0:f1.name)!=null&&((W0=n1.function)==null?void 0:W0.arguments)!=null&&ab1(n1.function.arguments))n1.inputStarted=!0,g.enqueue({type:"tool-input-start",id:n1.id,toolName:n1.function.name}),g.enqueue({type:"tool-input-delta",id:n1.id,delta:n1.function.arguments}),g.enqueue({type:"tool-input-end",id:n1.id}),g.enqueue({type:"tool-call",toolCallId:n1.id,toolName:n1.function.name,input:n1.function.arguments,providerMetadata:!M?{openrouter:{reasoning_details:O}}:void 0}),M=!0,n1.sent=!0;continue}let g1=V[r1];if(g1==null)throw new hl({data:{index:r1,toolCallsLength:V.length,toolCallDelta:z1},message:`Tool call at index ${r1} is missing during merge.`});if(!g1.inputStarted)g1.inputStarted=!0,g.enqueue({type:"tool-input-start",id:g1.id,toolName:g1.function.name});if(((m1=z1.function)==null?void 0:m1.arguments)!=null)g1.function.arguments+=(Q1=(v1=z1.function)==null?void 0:v1.arguments)!=null?Q1:"";if(g.enqueue({type:"tool-input-delta",id:g1.id,delta:(i1=z1.function.arguments)!=null?i1:""}),((D0=g1.function)==null?void 0:D0.name)!=null&&((U0=g1.function)==null?void 0:U0.arguments)!=null&&ab1(g1.function.arguments))g.enqueue({type:"tool-call",toolCallId:(x1=g1.id)!=null?x1:J$(),toolName:g1.function.name,input:g1.function.arguments,providerMetadata:!M?{openrouter:{reasoning_details:O}}:void 0}),M=!0,g1.sent=!0}if(K1.images!=null)for(let z1 of K1.images)g.enqueue({type:"file",mediaType:B36(z1.image_url.url,"image/jpeg"),data:UJ1(z1.image_url.url)})},flush(k){var g;let f=V.length>0,y=O.some((c)=>c.type==="reasoning.encrypted"&&c.data);if(f&&y&&z.unified==="stop")z=oN("tool-calls",z.raw);if(z.unified==="tool-calls"){for(let c of V)if(c&&!c.sent)k.enqueue({type:"tool-call",toolCallId:(g=c.id)!=null?g:J$(),toolName:c.function.name,input:ab1(c.function.arguments)?c.function.arguments:"{}",providerMetadata:!M?{openrouter:{reasoning_details:O}}:void 0}),M=!0,c.sent=!0}if(I)k.enqueue({type:"reasoning-end",id:E||J$(),providerMetadata:O.length>0?{openrouter:{reasoning_details:O}}:void 0});if(R)k.enqueue({type:"text-end",id:T||J$()});let a={usage:q};if(v!==void 0)a.provider=v;if(O.length>0)a.reasoning_details=O;if(P.length>0)a.annotations=P;U.raw=L,k.enqueue({type:"finish",finishReason:z,usage:U,providerMetadata:{openrouter:a}})}})),warnings:[],request:{body:Q},response:{headers:$}}}},D36,FW8=class{constructor(Y,X,J){this.specificationVersion="v3",this.provider="openrouter",this.supportsImageUrls=!0,this.supportedUrls={"image/*":[/^data:image\/[a-zA-Z]+;base64,/,/^https?:\/\/.+\.(jpg|jpeg|png|gif|webp)$/i],"text/*":[/^data:text\//,/^https?:\/\/.+$/],"application/*":[/^data:application\//,/^https?:\/\/.+$/]},this.defaultObjectGenerationMode=void 0,this.modelId=Y,this.settings=X,this.config=J}getArgs({prompt:Y,maxOutputTokens:X,temperature:J,topP:G,frequencyPenalty:W,presencePenalty:K,seed:Z,responseFormat:Q,topK:H,stopSequences:$,tools:V,toolChoice:z}){let{prompt:U}=$W8({prompt:Y,inputFormat:"prompt"});if(V==null?void 0:V.length)throw new Oq({functionality:"tools"});if(z)throw new Oq({functionality:"toolChoice"});return J6(J6({model:this.modelId,models:this.settings.models,logit_bias:this.settings.logitBias,logprobs:typeof this.settings.logprobs==="number"?this.settings.logprobs:typeof this.settings.logprobs==="boolean"?this.settings.logprobs?0:void 0:void 0,suffix:this.settings.suffix,user:this.settings.user,max_tokens:X,temperature:J,top_p:G,frequency_penalty:W,presence_penalty:K,seed:Z,stop:$,response_format:Q,top_k:H,prompt:U,include_reasoning:this.settings.includeReasoning,reasoning:this.settings.reasoning},this.config.extraBody),this.settings.extraBody)}async doGenerate(Y){var X,J,G,W,K,Z,Q,H,$,V,z,U,q,L,O,M,P;let I=(Y.providerOptions||{}).openrouter||{},T=J6(J6({},this.getArgs(Y)),I),{value:E,responseHeaders:j}=await ej({url:this.config.url({path:"/completions",modelId:this.modelId}),headers:tj(this.config.headers(),Y.headers),body:T,failedResponseHandler:YS,successfulResponseHandler:OJ1(D36),abortSignal:Y.abortSignal,fetch:this.config.fetch});if("error"in E){let k=E.error;throw new G$({message:k.message,url:this.config.url({path:"/completions",modelId:this.modelId}),requestBodyValues:T,statusCode:200,responseHeaders:j,data:k})}let v=E.choices[0];if(!v)throw new Xh1({message:"No choice in OpenRouter completion response"});return{content:[{type:"text",text:(X=v.text)!=null?X:""}],finishReason:zJ1(v.finish_reason),usage:E.usage?VJ1(E.usage):F$6(),warnings:[],providerMetadata:{openrouter:Qh1.parse({provider:(J=E.provider)!=null?J:"",usage:J6(J6(J6(J6({promptTokens:(W=(G=E.usage)==null?void 0:G.prompt_tokens)!=null?W:0,completionTokens:(Z=(K=E.usage)==null?void 0:K.completion_tokens)!=null?Z:0,totalTokens:((H=(Q=E.usage)==null?void 0:Q.prompt_tokens)!=null?H:0)+((V=($=E.usage)==null?void 0:$.completion_tokens)!=null?V:0)},((z=E.usage)==null?void 0:z.cost)!=null?{cost:E.usage.cost}:{}),((q=(U=E.usage)==null?void 0:U.prompt_tokens_details)==null?void 0:q.cached_tokens)!=null?{promptTokensDetails:{cachedTokens:E.usage.prompt_tokens_details.cached_tokens}}:{}),((O=(L=E.usage)==null?void 0:L.completion_tokens_details)==null?void 0:O.reasoning_tokens)!=null?{completionTokensDetails:{reasoningTokens:E.usage.completion_tokens_details.reasoning_tokens}}:{}),((P=(M=E.usage)==null?void 0:M.cost_details)==null?void 0:P.upstream_inference_cost)!=null?{costDetails:{upstreamInferenceCost:E.usage.cost_details.upstream_inference_cost}}:{})})},response:{headers:j}}}async doStream(Y){let J=(Y.providerOptions||{}).openrouter||{},G=J6(J6({},this.getArgs(Y)),J),{value:W,responseHeaders:K}=await ej({url:this.config.url({path:"/completions",modelId:this.modelId}),headers:tj(this.config.headers(),Y.headers),body:k9(J6({},G),{stream:!0,stream_options:this.config.compatibility==="strict"?{include_usage:!0}:void 0}),failedResponseHandler:YS,successfulResponseHandler:Q$6(D36),abortSignal:Y.abortSignal,fetch:this.config.fetch}),Z=oN("other"),Q={inputTokens:{total:void 0,noCache:void 0,cacheRead:void 0,cacheWrite:void 0},outputTokens:{total:void 0,text:void 0,reasoning:void 0},raw:void 0},H={},$,V;return{stream:W.pipeThrough(new TransformStream({transform(z,U){var q,L,O,M,P;if(Y.includeRawChunks)U.enqueue({type:"raw",rawValue:z.rawValue});if(!z.success){Z=oN("error"),U.enqueue({type:"error",error:z.error});return}let R=z.value;if("error"in R){Z=oN("error"),U.enqueue({type:"error",error:R.error});return}if(R.provider)$=R.provider;if(R.usage!=null){let T=VJ1(R.usage);Object.assign(Q.inputTokens,T.inputTokens),Object.assign(Q.outputTokens,T.outputTokens),V=R.usage;let E=(q=R.usage.prompt_tokens)!=null?q:0,j=(L=R.usage.completion_tokens)!=null?L:0;if(H.promptTokens=E,R.usage.prompt_tokens_details)H.promptTokensDetails={cachedTokens:(O=R.usage.prompt_tokens_details.cached_tokens)!=null?O:0};if(H.completionTokens=j,R.usage.completion_tokens_details)H.completionTokensDetails={reasoningTokens:(M=R.usage.completion_tokens_details.reasoning_tokens)!=null?M:0};if(R.usage.cost!=null)H.cost=R.usage.cost;H.totalTokens=R.usage.total_tokens;let v=(P=R.usage.cost_details)==null?void 0:P.upstream_inference_cost;if(v!=null)H.costDetails={upstreamInferenceCost:v}}let I=R.choices[0];if((I==null?void 0:I.finish_reason)!=null)Z=zJ1(I.finish_reason);if((I==null?void 0:I.text)!=null)U.enqueue({type:"text-delta",delta:I.text,id:J$()})},flush(z){Q.raw=V;let U={usage:H};if($!==void 0)U.provider=$;z.enqueue({type:"finish",finishReason:Z,usage:Q,providerMetadata:{openrouter:U}})}})),response:{headers:K}}}},VW8,zW8,UW8,qW8=class{constructor(Y,X,J){this.specificationVersion="v3",this.provider="openrouter",this.maxEmbeddingsPerCall=void 0,this.supportsParallelCalls=!0,this.modelId=Y,this.settings=X,this.config=J}async doEmbed(Y){var X,J,G,W,K,Z;let{values:Q,abortSignal:H,headers:$}=Y,V=J6(J6({model:this.modelId,input:Q,user:this.settings.user,provider:this.settings.provider},this.config.extraBody),this.settings.extraBody),{value:z,responseHeaders:U}=await ej({url:this.config.url({path:"/embeddings",modelId:this.modelId}),headers:tj(this.config.headers(),$),body:V,failedResponseHandler:YS,successfulResponseHandler:OJ1(UW8),abortSignal:H,fetch:this.config.fetch});return{embeddings:z.data.map((q)=>q.embedding),usage:z.usage?{tokens:z.usage.prompt_tokens}:void 0,providerMetadata:{openrouter:Qh1.parse({provider:(X=z.provider)!=null?X:"",usage:J6({promptTokens:(G=(J=z.usage)==null?void 0:J.prompt_tokens)!=null?G:0,completionTokens:0,totalTokens:(K=(W=z.usage)==null?void 0:W.total_tokens)!=null?K:0},((Z=z.usage)==null?void 0:Z.cost)!=null?{cost:z.usage.cost}:{})})},response:{headers:U,body:z},warnings:[]}}},LW8,OW8=class{constructor(Y,X,J){this.specificationVersion="v3",this.provider="openrouter",this.maxImagesPerCall=1,this.modelId=Y,this.settings=X,this.config=J}async doGenerate(Y){var X;let{prompt:J,n:G,size:W,aspectRatio:K,seed:Z,files:Q,mask:H,abortSignal:$,headers:V,providerOptions:z}=Y,U=(z==null?void 0:z.openrouter)||{},q=[];if(H!==void 0)throw new Oq({functionality:"image inpainting (mask parameter)"});if(G>1)q.push({type:"unsupported",feature:"n > 1",details:`OpenRouter image generation returns 1 image per call. Requested ${G} images.`});if(W!==void 0)q.push({type:"unsupported",feature:"size",details:"Use aspectRatio instead. Size parameter is not supported by OpenRouter image generation."});let L=K!==void 0?{aspect_ratio:K}:void 0,M=Q!==void 0&&Q.length>0?[...Q.map((v)=>BW8(v)),{type:"text",text:J!=null?J:""}]:J!=null?J:"",P=J6(J6(J6(J6(J6(J6(J6({model:this.modelId,messages:[{role:"user",content:M}],modalities:["image","text"]},L!==void 0&&{image_config:L}),Z!==void 0&&{seed:Z}),this.settings.user!==void 0&&{user:this.settings.user}),this.settings.provider!==void 0&&{provider:this.settings.provider}),this.config.extraBody),this.settings.extraBody),U),{value:R,responseHeaders:I}=await ej({url:this.config.url({path:"/chat/completions",modelId:this.modelId}),headers:tj(this.config.headers(),V),body:P,failedResponseHandler:YS,successfulResponseHandler:OJ1(LW8),abortSignal:$,fetch:this.config.fetch}),T=R.choices[0];if(!T)throw new Xh1({message:"No choice in response"});let E=[];if((X=T.message)==null?void 0:X.images)for(let v of T.message.images){let k=v.image_url.url;E.push(UJ1(k))}let j=R.usage?{inputTokens:R.usage.prompt_tokens,outputTokens:R.usage.completion_tokens,totalTokens:R.usage.total_tokens}:void 0;return{images:E,warnings:q,response:{timestamp:new Date,modelId:R.model,headers:I},usage:j}}},NW8="image/png",PW8="2.3.1",A_Y;var q$6=A(()=>{W6();yH();yH();yH();W6();W6();W6();W6();W6();W6();W6();W6();W6();K78=Object.defineProperty,H78=Object.defineProperties,$78=Object.getOwnPropertyDescriptors,$J1=Object.getOwnPropertySymbols,w36=Object.prototype.hasOwnProperty,M36=Object.prototype.propertyIsEnumerable,z78=Symbol.for(P36),kY=class Y extends(gH6=Error,xH6=z78,gH6){constructor({name:X,message:J,cause:G}){super(J);this[xH6]=!0,this.name=X,this.cause=G}static isInstance(X){return Y.hasMarker(X,P36)}static hasMarker(X,J){let G=Symbol.for(J);return X!=null&&typeof X==="object"&&G in X&&typeof X[G]==="boolean"&&X[G]===!0}},T36=`vercel.ai.error.${E36}`,U78=Symbol.for(T36),G$=class extends(mH6=kY,uH6=U78,mH6){constructor({message:Y,url:X,requestBodyValues:J,statusCode:G,responseHeaders:W,responseBody:K,cause:Z,isRetryable:Q=G!=null&&(G===408||G===409||G===429||G>=500),data:H}){super({name:E36,message:Y,cause:Z});this[uH6]=!0,this.url=X,this.requestBodyValues=J,this.statusCode=G,this.responseHeaders=W,this.responseBody=K,this.isRetryable=Q,this.data=H}static isInstance(Y){return kY.hasMarker(Y,T36)}},C36=`vercel.ai.error.${R36}`,q78=Symbol.for(C36),L78=class extends(dH6=kY,lH6=q78,dH6){constructor({message:Y="Empty response body"}={}){super({name:R36,message:Y});this[lH6]=!0}static isInstance(Y){return kY.hasMarker(Y,C36)}};S36=`vercel.ai.error.${j36}`,O78=Symbol.for(S36),_36=class extends(pH6=kY,cH6=O78,pH6){constructor({message:Y,cause:X,argument:J}){super({name:j36,message:Y,cause:X});this[cH6]=!0,this.argument=J}static isInstance(Y){return kY.hasMarker(Y,S36)}},v36=`vercel.ai.error.${k36}`,N78=Symbol.for(v36),B78=class extends(iH6=kY,nH6=N78,iH6){constructor({prompt:Y,message:X,cause:J}){super({name:k36,message:`Invalid prompt: ${X}`,cause:J});this[nH6]=!0,this.prompt=Y}static isInstance(Y){return kY.hasMarker(Y,v36)}},y36=`vercel.ai.error.${f36}`,D78=Symbol.for(y36),hl=class extends(rH6=kY,aH6=D78,rH6){constructor({data:Y,message:X=`Invalid response data: ${JSON.stringify(Y)}.`}){super({name:f36,message:X});this[aH6]=!0,this.data=Y}static isInstance(Y){return kY.hasMarker(Y,y36)}},h36=`vercel.ai.error.${b36}`,w78=Symbol.for(h36),FJ1=class extends(sH6=kY,oH6=w78,sH6){constructor({text:Y,cause:X}){super({name:b36,message:`JSON parsing failed: Text: ${Y}.
|
|
1422
1422
|
Error message: ${I36(X)}`,cause:X});this[oH6]=!0,this.text=Y}static isInstance(Y){return kY.hasMarker(Y,h36)}},g36=`vercel.ai.error.${x36}`,M78=Symbol.for(g36),ZJ1=class extends(eH6=kY,tH6=M78,eH6){constructor({message:Y}){super({name:x36,message:Y});this[tH6]=!0}static isInstance(Y){return kY.hasMarker(Y,g36)}},m36=`vercel.ai.error.${u36}`,A78=Symbol.for(m36),G_Y=class extends(X36=kY,Y36=A78,X36){constructor({message:Y}){super({name:u36,message:Y});this[Y36]=!0}static isInstance(Y){return kY.hasMarker(Y,m36)}},d36=`vercel.ai.error.${l36}`,P78=Symbol.for(d36),Xh1=class extends(G36=kY,J36=P78,G36){constructor({message:Y="No content generated."}={}){super({name:l36,message:Y});this[J36]=!0}static isInstance(Y){return kY.hasMarker(Y,d36)}},p36=`vercel.ai.error.${c36}`,E78=Symbol.for(p36),W_Y=class extends(Z36=kY,W36=E78,Z36){constructor({errorName:Y=c36,modelId:X,modelType:J,message:G=`No such ${J}: ${X}`}){super({name:Y,message:G});this[W36]=!0,this.modelId=X,this.modelType=J}static isInstance(Y){return kY.hasMarker(Y,p36)}},i36=`vercel.ai.error.${n36}`,T78=Symbol.for(i36),Z_Y=class extends(K36=kY,Q36=T78,K36){constructor(Y){super({name:n36,message:`Too many values for a single embedding call. The ${Y.provider} model "${Y.modelId}" can only embed up to ${Y.maxEmbeddingsPerCall} values per call, but ${Y.values.length} values were provided.`});this[Q36]=!0,this.provider=Y.provider,this.modelId=Y.modelId,this.maxEmbeddingsPerCall=Y.maxEmbeddingsPerCall,this.values=Y.values}static isInstance(Y){return kY.hasMarker(Y,i36)}},r36=`vercel.ai.error.${a36}`,R78=Symbol.for(r36),gl=class Y extends($36=kY,H36=R78,$36){constructor({value:X,cause:J}){super({name:a36,message:`Type validation failed: Value: ${JSON.stringify(X)}.
|
|
1423
|
-
Error message: ${I36(J)}`,cause:J});this[H36]=!0,this.value=X}static isInstance(X){return kY.hasMarker(X,r36)}static wrap({value:X,cause:J}){return Y.isInstance(J)&&J.value===X?J:new Y({value:X,cause:J})}},s36=`vercel.ai.error.${o36}`,C78=Symbol.for(s36),Oq=class extends(V36=kY,F36=C78,V36){constructor({functionality:Y,message:X=`'${Y}' functionality not supported.`}){super({name:o36,message:X});this[F36]=!0,this.functionality=Y}static isInstance(Y){return kY.hasMarker(Y,s36)}},z36=class extends Error{constructor(Y,X){super(Y),this.name="ParseError",this.type=X.type,this.field=X.field,this.value=X.value,this.line=X.line}};S78=class extends TransformStream{constructor({onError:Y,onRetry:X,onComment:J}={}){let G;super({start(W){G=I78({onEvent:(K)=>{W.enqueue(K)},onError(K){Y==="terminate"?W.error(K):typeof Y=="function"&&Y(K)},onRetry:X,onComment:J})},transform(W){G.feed(W)}})}};({btoa:_78,atob:$_Y}=globalThis);e36=`vercel.ai.error.${t36}`,v78=Symbol.for(e36),F_Y=class extends(q36=kY,U36=v78,q36){constructor({url:Y,statusCode:X,statusText:J,cause:G,message:W=G==null?`Failed to download ${Y}: ${X} ${J}`:`Failed to download ${Y}: ${G}`}){super({name:t36,message:W,cause:G});this[U36]=!0,this.url=Y,this.statusCode=X,this.statusText=J}static isInstance(Y){return kY.hasMarker(Y,e36)}},J$=f78();y78=["fetch failed","failed to fetch"];l78=/"__proto__"\s*:/,d78=/"constructor"\s*:/;p78=Symbol("Let zodToJsonSchema decide on which parser to use"),O36={name:void 0,$refStrategy:"root",basePath:["#"],effectStrategy:"input",pipeStrategy:"all",dateStrategy:"format:date-time",mapStrategy:"entries",removeAdditionalStrategy:"passthrough",allowedAdditionalProperties:!0,rejectedAdditionalProperties:!1,definitionPath:"definitions",strictUnions:!1,definitions:{},errorMessages:!1,patternStrategy:"escape",applyRegexFlags:!1,emailStrategy:"format:email",base64Strategy:"contentEncoding:base64",nameStrategy:"ref"};Y$={cuid:/^[cC][^\s-]{8,}$/,cuid2:/^[0-9a-z]+$/,ulid:/^[0-9A-HJKMNP-TV-Z]{26}$/,email:/^(?!\.)(?!.*\.\.)([a-zA-Z0-9_'+\-\.]*)[a-zA-Z0-9_+-]@([a-zA-Z0-9][a-zA-Z0-9\-]*\.)+[a-zA-Z]{2,}$/,emoji:()=>{if(nb1===void 0)nb1=RegExp("^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$","u");return nb1},uuid:/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/,ipv4:/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,ipv4Cidr:/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,ipv6:/^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/,ipv6Cidr:/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,base64:/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,base64url:/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,nanoid:/^[a-zA-Z0-9_-]{21}$/,jwt:/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/};WG8=new Set("ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789");sb1={ZodString:"string",ZodNumber:"number",ZodBigInt:"integer",ZodBoolean:"boolean",ZodNull:"null"};tb1=Symbol.for("vercel.ai.schema");K$6=((Y)=>{return Y.Unknown="unknown",Y.OpenAIResponsesV1="openai-responses-v1",Y.XAIResponsesV1="xai-responses-v1",Y.AnthropicClaudeV1="anthropic-claude-v1",Y.GoogleGeminiV1="google-gemini-v1",Y})(K$6||{}),Gh1=F.object({id:F.string().nullish(),format:F.enum(K$6).nullish(),index:F.number().optional()}).loose(),pG8=F.object({type:F.literal("reasoning.summary"),summary:F.string()}).extend(Gh1.shape),nG8=F.object({type:F.literal("reasoning.encrypted"),data:F.string()}).extend(Gh1.shape),iG8=F.object({type:F.literal("reasoning.text"),text:F.string().nullish(),signature:F.string().nullish()}).extend(Gh1.shape),Wh1=F.union([pG8,nG8,iG8]),KJ1=F.union([Wh1,F.unknown().transform(()=>null)]),Zh1=F.array(KJ1).transform((Y)=>Y.filter((X)=>!!X)),z_Y=F.union([F.object({delta:F.object({reasoning_details:F.array(KJ1)})}).transform((Y)=>Y.delta.reasoning_details.filter(rb1)),F.object({message:F.object({reasoning_details:F.array(KJ1)})}).transform((Y)=>Y.message.reasoning_details.filter(rb1)),F.object({text:F.string(),reasoning_details:F.array(KJ1)}).transform((Y)=>Y.reasoning_details.filter(rb1))]),NJ1=F.object({error:F.object({code:F.union([F.string(),F.number()]).nullable().optional().default(null),message:F.string(),type:F.string().nullable().optional().default(null),param:F.any().nullable().optional().default(null)}).passthrough()}).passthrough();YS=dG8({errorSchema:NJ1,errorToMessage:aG8}),H$6=F.object({type:F.literal("file"),file:F.object({hash:F.string(),name:F.string(),content:F.array(F.object({type:F.string(),text:F.string().optional()}).catchall(F.any())).optional()}).catchall(F.any())}).catchall(F.any()),Qh1=F.object({provider:F.string(),reasoning_details:F.array(Wh1).optional(),annotations:F.array(H$6).optional(),usage:F.object({promptTokens:F.number(),promptTokensDetails:F.object({cachedTokens:F.number()}).catchall(F.any()).optional(),completionTokens:F.number(),completionTokensDetails:F.object({reasoningTokens:F.number()}).catchall(F.any()).optional(),totalTokens:F.number(),cost:F.number().optional(),costDetails:F.object({upstreamInferenceCost:F.number()}).catchall(F.any()).optional()}).catchall(F.any())}).catchall(F.any()),$$6=F.object({openrouter:F.object({reasoning_details:F.array(Wh1).optional(),annotations:F.array(H$6).optional()}).optional()}).optional();HJ1=new WeakMap;sG8=["wav","mp3","aiff","aac","ogg","flac","m4a","pcm16","pcm24"];tG8={mpeg:"mp3",mp3:"mp3","x-wav":"wav",wave:"wav",wav:"wav",ogg:"ogg",vorbis:"ogg",aac:"aac","x-aac":"aac",m4a:"m4a","x-m4a":"m4a",mp4:"m4a",aiff:"aiff","x-aiff":"aiff",flac:"flac","x-flac":"flac",pcm16:"pcm16",pcm24:"pcm24"};O_Y=F.union([F.literal("auto"),F.literal("none"),F.literal("required"),F.object({type:F.literal("function"),function:F.object({name:F.string()})})]);WW8=F.object({type:F.literal("image_url"),image_url:F.object({url:F.string()}).passthrough()}).passthrough(),ZW8=F.union([WW8,F.unknown().transform(()=>null)]),z$6=F.array(ZW8).transform((Y)=>Y.filter((X)=>!!X)),U$6=F.object({id:F.string().optional(),model:F.string().optional(),provider:F.string().optional(),usage:F.object({prompt_tokens:F.number(),prompt_tokens_details:F.object({cached_tokens:F.number(),cache_write_tokens:F.number().nullish()}).passthrough().nullish(),completion_tokens:F.number(),completion_tokens_details:F.object({reasoning_tokens:F.number()}).passthrough().nullish(),total_tokens:F.number(),cost:F.number().optional(),cost_details:F.object({upstream_inference_cost:F.number().nullish()}).passthrough().nullish()}).passthrough().nullish()}).passthrough(),QW8=F.union([U$6.extend({choices:F.array(F.object({message:F.object({role:F.literal("assistant"),content:F.string().nullable().optional(),reasoning:F.string().nullable().optional(),reasoning_details:Zh1.nullish(),images:z$6.nullish(),tool_calls:F.array(F.object({id:F.string().optional().nullable(),type:F.literal("function"),function:F.object({name:F.string(),arguments:F.string().optional()}).passthrough()}).passthrough()).optional(),annotations:F.array(F.union([F.object({type:F.literal("url_citation"),url_citation:F.object({url:F.string(),title:F.string().optional(),start_index:F.number().optional(),end_index:F.number().optional(),content:F.string().optional()}).passthrough()}).passthrough(),F.object({type:F.literal("file_annotation"),file_annotation:F.object({file_id:F.string(),quote:F.string().optional()}).passthrough()}).passthrough(),F.object({type:F.literal("file"),file:F.object({hash:F.string(),name:F.string(),content:F.array(F.object({type:F.string(),text:F.string().optional()}).passthrough()).optional()}).passthrough()}).passthrough()])).nullish()}).passthrough(),index:F.number().nullish(),logprobs:F.object({content:F.array(F.object({token:F.string(),logprob:F.number(),top_logprobs:F.array(F.object({token:F.string(),logprob:F.number()}).passthrough())}).passthrough()).nullable()}).passthrough().nullable().optional(),finish_reason:F.string().optional().nullable()}).passthrough())}),NJ1.extend({user_id:F.string().optional()})]),KW8=F.union([U$6.extend({choices:F.array(F.object({delta:F.object({role:F.enum(["assistant"]).optional(),content:F.string().nullish(),reasoning:F.string().nullish().optional(),reasoning_details:Zh1.nullish(),images:z$6.nullish(),tool_calls:F.array(F.object({index:F.number().nullish(),id:F.string().nullish(),type:F.literal("function").optional(),function:F.object({name:F.string().nullish(),arguments:F.string().nullish()}).passthrough()}).passthrough()).nullish(),annotations:F.array(F.union([F.object({type:F.literal("url_citation"),url_citation:F.object({url:F.string(),title:F.string().optional(),start_index:F.number().optional(),end_index:F.number().optional(),content:F.string().optional()}).passthrough()}).passthrough(),F.object({type:F.literal("file_annotation"),file_annotation:F.object({file_id:F.string(),quote:F.string().optional()}).passthrough()}).passthrough(),F.object({type:F.literal("file"),file:F.object({hash:F.string(),name:F.string(),content:F.array(F.object({type:F.string(),text:F.string().optional()}).passthrough()).optional()}).passthrough()}).passthrough()])).nullish()}).passthrough().nullish(),logprobs:F.object({content:F.array(F.object({token:F.string(),logprob:F.number(),top_logprobs:F.array(F.object({token:F.string(),logprob:F.number()}).passthrough())}).passthrough()).nullable()}).passthrough().nullish(),finish_reason:F.string().nullable().optional(),index:F.number().nullish()}).passthrough())}),NJ1]);D36=F.union([F.object({id:F.string().optional(),model:F.string().optional(),provider:F.string().optional(),choices:F.array(F.object({text:F.string(),reasoning:F.string().nullish().optional(),reasoning_details:Zh1.nullish(),finish_reason:F.string().nullish(),index:F.number().nullish(),logprobs:F.object({tokens:F.array(F.string()),token_logprobs:F.array(F.number()),top_logprobs:F.array(F.record(F.string(),F.number())).nullable()}).passthrough().nullable().optional()}).passthrough()),usage:F.object({prompt_tokens:F.number(),prompt_tokens_details:F.object({cached_tokens:F.number(),cache_write_tokens:F.number().nullish()}).passthrough().nullish(),completion_tokens:F.number(),completion_tokens_details:F.object({reasoning_tokens:F.number()}).passthrough().nullish(),total_tokens:F.number(),cost:F.number().optional(),cost_details:F.object({upstream_inference_cost:F.number().nullish()}).passthrough().nullish()}).passthrough().nullish()}).passthrough(),NJ1]),VW8=F.object({prompt_tokens:F.number(),total_tokens:F.number(),cost:F.number().optional()}),zW8=F.object({object:F.literal("embedding"),embedding:F.array(F.number()),index:F.number().optional()}),UW8=F.object({id:F.string().optional(),object:F.literal("list"),data:F.array(zW8),model:F.string(),provider:F.string().optional(),usage:VW8.optional()}),LW8=F.object({id:F.string().optional(),object:F.string().optional(),created:F.number().optional(),model:F.string(),choices:F.array(F.object({index:F.number(),message:F.object({role:F.string(),content:F.string().nullable().optional(),images:F.array(F.object({type:F.literal("image_url"),image_url:F.object({url:F.string()})}).passthrough()).optional()}).passthrough(),finish_reason:F.string().nullable().optional()}).passthrough()),usage:F.object({prompt_tokens:F.number(),completion_tokens:F.number(),total_tokens:F.number()}).passthrough().optional()}).passthrough();A_Y=Hh1({compatibility:"strict"})});var EW8="https://assets.decocache.com/decocms/b2e2f64f-6025-45f7-9e8c-3b3ebdd073d8/openrouter_logojpg.jpg",BJ1;var $h1=A(()=>{q$6();BJ1={info:{id:"openrouter",name:"OpenRouter",description:"Unified API for multiple AI providers",logo:EW8},supportedMethods:["oauth-pkce","api-key"],getOAuthUrl({callbackUrl:Y,codeChallenge:X,codeChallengeMethod:J}){return`https://openrouter.ai/auth?${new URLSearchParams({callback_url:Y,code_challenge:X,code_challenge_method:J})}`},async exchangeOAuthCode({code:Y,codeVerifier:X,codeChallengeMethod:J}){let G=await fetch("https://openrouter.ai/api/v1/auth/keys",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({code:Y,code_verifier:X,code_challenge_method:J}),signal:AbortSignal.timeout(30000)});if(!G.ok)throw Error(`OpenRouter OAuth exchange failed: ${G.status}`);let W=await G.json();return{apiKey:W.key,userId:W.user_id}},create(Y){let X=Hh1({apiKey:Y}),J={Authorization:`Bearer ${Y}`};return{info:this.info,aiSdk:X,async listModels(){let G=(Q)=>{return{providerId:"openrouter",modelId:Q.id,title:Q.name,description:Q.description??null,logo:null,capabilities:[...new Set([...Q.architecture.input_modalities,...Q.architecture.output_modalities,...Q.supported_parameters?.includes("tools")?["tools"]:[],...Q.supported_parameters?.includes("reasoning")?["reasoning"]:[]])],limits:{contextWindow:Q.context_length??0,maxOutputTokens:Q.top_provider.max_completion_tokens||null},costs:{input:Q.pricing.prompt??0,output:Q.pricing.completion??0}}},W=await fetch("https://openrouter.ai/api/v1/models",{headers:J,signal:AbortSignal.timeout(30000)});if(!W.ok)throw Error(`OpenRouter listModels failed: ${W.status}`);let{data:K}=await W.json();return K.map(G)}}}}});var DJ1,L$6;var O$6=A(()=>{$h1();c5();DJ1=V6.DECO_AI_GATEWAY_URL??"https://ai-site.decocache.com",L$6={info:{id:"deco",name:"Deco AI Gateway",description:"Deco-managed keys with access to 100+ models",logo:"/logos/deco logo.svg"},supportedMethods:["oauth-pkce","api-key"],getOAuthUrl({callbackUrl:Y,codeChallenge:X,codeChallengeMethod:J,organizationId:G}){let W=new URLSearchParams({redirect_uri:Y,code_challenge:X,code_challenge_method:J,organization_id:G});return`${DJ1}/oauth/authorize?${W}`},async exchangeOAuthCode({code:Y,codeVerifier:X}){let J=await fetch(`${DJ1}/oauth/token`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({code:Y,code_verifier:X,grant_type:"authorization_code"}),signal:AbortSignal.timeout(30000)});if(!J.ok)throw Error(`Deco AI Gateway OAuth exchange failed: ${J.status}`);return{apiKey:(await J.json()).key}},async getTopUpUrl(Y,X,J="usd"){let G=await fetch(`${DJ1}/api/credits/topup`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${Y}`},body:JSON.stringify({amountCents:X,currency:J}),signal:AbortSignal.timeout(1e4)});if(!G.ok)throw Error(`Failed to create top-up checkout: ${G.status}`);return(await G.json()).url},async getCreditsBalance(Y,X){let J=await fetch(`${DJ1}/api/teams/${X}/balance`,{headers:{Authorization:`Bearer ${Y}`},signal:AbortSignal.timeout(1e4)});if(!J.ok)throw Error(`Failed to fetch credits balance: ${J.status}`);return{balanceCents:(await J.json()).balance_cents}},create(Y){return{...BJ1.create(Y),info:this.info}}}});var TW8,CW;var sN=A(()=>{wH6();yH6();$h1();O$6();c5();TW8=V6.DECO_AI_GATEWAY_ENABLED,CW={...TW8&&{deco:L$6},anthropic:DH6,google:fH6,openrouter:BJ1}});var Fh1;var N$6=A(()=>{a1();i0();sN();Fh1=y1({name:"AI_PROVIDERS_LIST",description:"List all available AI providers that can be connected with an API key",inputSchema:d0.object({}),outputSchema:d0.object({providers:d0.array(d0.object({id:d0.string(),name:d0.string(),description:d0.string(),logo:d0.string().optional(),supportedMethods:d0.array(d0.enum(["api-key","oauth-pkce"])),supportsTopUp:d0.boolean().optional(),supportsCredits:d0.boolean().optional()}))}),handler:async(Y,X)=>{return J0(X),q0(X),await X.access.check(),{providers:Object.values(CW).filter((G)=>!!G).map((G)=>({...G.info,supportedMethods:G.supportedMethods,supportsTopUp:!!G.getTopUpUrl,supportsCredits:!!G.getCreditsBalance}))}}})});var Vh1,wJ1;var MJ1=A(()=>{Vh1=["owner","admin","user"],wJ1=["owner","admin"]});function RW8(Y){if(!Y)return;if(!("models"in Y))return;return Y.models??void 0}function B$6(Y,X){if(!Y)return!0;if(Y.includes("*:*"))return!0;return Y.some((J)=>J.startsWith(`${X}:`))}function UP(Y,X,J){if(!Y)return!0;return Y.includes("*:*")||Y.includes(`${X}:*`)||Y.includes(`${X}:${J}`)}function D$6(Y){if(!Y)return{allowAll:!0,models:{}};if(Y.includes("*:*"))return{allowAll:!0,models:{}};let X={};for(let J of Y){let G=J.indexOf(":");if(G===-1)continue;let W=J.slice(0,G),K=J.slice(G+1);if(!X[W])X[W]=[];X[W].push(K)}return{allowAll:!1,models:X}}async function Nq(Y,X,J){if(!J||wJ1.includes(J))return;let G=await Y.selectFrom("organizationRole").select(["permission"]).where("organizationId","=",X).where("role","=",J).executeTakeFirst();if(!G?.permission)return;try{let W=JSON.parse(G.permission);return RW8(W)}catch{return console.error(`[model-permissions] Failed to parse permissions for role: ${J}`),[]}}var ul=A(()=>{MJ1()});var zh1;var w$6=A(()=>{a1();i0();ul();zh1=y1({name:"AI_PROVIDERS_LIST_MODELS",description:"List models available from an AI provider using a specific API key",inputSchema:d0.object({keyId:d0.string().describe("The provider key ID to use")}),outputSchema:d0.object({models:d0.array(d0.object({providerId:d0.string(),modelId:d0.string(),title:d0.string(),description:d0.string().nullish(),logo:d0.string().nullish(),capabilities:d0.array(d0.string()),limits:d0.object({contextWindow:d0.coerce.number(),maxOutputTokens:d0.coerce.number().nullable()}).nullish(),costs:d0.object({input:d0.coerce.number(),output:d0.coerce.number()}).nullish()}))}),handler:async(Y,X)=>{J0(X);let J=q0(X);await X.access.check();let G=await Nq(X.db,J.id,X.auth.user?.role);return{models:(await X.aiProviders.listModels(Y.keyId,J.id)).filter((Z)=>UP(G,Y.keyId,Z.modelId))}}})});var Uh1;var M$6=A(()=>{a1();i0();sN();Uh1=y1({name:"AI_PROVIDERS_ACTIVE",description:"List AI providers that have at least one API key configured",inputSchema:d0.object({}),outputSchema:d0.object({providers:d0.array(d0.object({id:d0.string(),name:d0.string(),description:d0.string(),logo:d0.string().optional(),keyCount:d0.number()}))}),handler:async(Y,X)=>{J0(X);let J=q0(X);await X.access.check();let G=await X.storage.aiProviderKeys.list({organizationId:J.id}),W=new Map;for(let Z of G)W.set(Z.providerId,(W.get(Z.providerId)??0)+1);return{providers:[...W.entries()].flatMap(([Z,Q])=>{let H=CW[Z];if(!H)return console.warn(`AI provider "${Z}" has stored keys but is not in the registry; skipping.`),[];return[{...H.info,keyCount:Q}]})}}})});var qP=A(()=>{wY()});var qh1,Lh1;var Oh1=A(()=>{a1();i0();qP();qh1=d0.object({id:d0.string(),providerId:d0.string(),label:d0.string(),createdAt:d0.string()}),Lh1=y1({name:"AI_PROVIDER_KEY_CREATE",description:"Store an API key for an AI provider",inputSchema:d0.object({providerId:d0.enum(pG),label:d0.string().min(1).max(100),apiKey:d0.string().min(1)}),outputSchema:qh1,handler:async(Y,X)=>{J0(X);let J=q0(X);await X.access.check();let G=await X.storage.aiProviderKeys.create({providerId:Y.providerId,label:Y.label,apiKey:Y.apiKey,organizationId:J.id,createdBy:X.auth.user.id});return{id:G.id,providerId:G.providerId,label:G.label,createdAt:G.createdAt}}})});var Nh1;var A$6=A(()=>{a1();i0();Nh1=y1({name:"AI_PROVIDER_KEY_DELETE",description:"Delete a stored AI provider API key",inputSchema:d0.object({keyId:d0.string().describe("The provider key ID to delete")}),outputSchema:d0.object({success:d0.boolean()}),handler:async(Y,X)=>{J0(X);let J=q0(X);return await X.access.check(),await X.storage.aiProviderKeys.delete(Y.keyId,J.id),{success:!0}}})});var Bh1;var P$6=A(()=>{a1();i0();qP();ul();Bh1=y1({name:"AI_PROVIDER_KEY_LIST",description:"List stored API keys for AI providers (metadata only, no secrets)",inputSchema:d0.object({providerId:d0.enum(pG).optional()}),outputSchema:d0.object({keys:d0.array(d0.object({id:d0.string(),providerId:d0.string(),label:d0.string(),createdBy:d0.string(),createdAt:d0.string()}))}),handler:async(Y,X)=>{J0(X);let J=q0(X);await X.access.check();let[G,W]=await Promise.all([X.storage.aiProviderKeys.list({organizationId:J.id,providerId:Y.providerId}),Nq(X.db,J.id,X.auth.user?.role)]);return{keys:G.filter((Z)=>B$6(W,Z.id)).map(({organizationId:Z,...Q})=>Q)}}})});import{createHash as CW8,randomBytes as IW8}from"crypto";function E$6(){return IW8(32).toString("base64url")}function T$6(Y){return CW8("sha256").update(Y).digest("base64url")}var R$6=()=>{};var Dh1;var C$6=A(()=>{a1();i0();qP();sN();R$6();c5();Dh1=y1({name:"AI_PROVIDER_OAUTH_URL",description:"Get the OAuth authorization URL for a provider that supports OAuth PKCE",inputSchema:d0.object({providerId:d0.enum(pG),callbackUrl:d0.string().url().refine((Y)=>{let X=V6.BASE_URL??`http://localhost:${V6.PORT}`;return new URL(Y).origin===new URL(X).origin},{message:"callbackUrl must be on the same origin as BASE_URL"})}),outputSchema:d0.object({url:d0.string(),stateToken:d0.string().describe("Opaque token \u2014 pass to AI_PROVIDER_OAUTH_EXCHANGE")}),handler:async(Y,X)=>{J0(X);let J=q0(X);await X.access.check();let G=CW[Y.providerId];if(!G)throw Error(`Unknown provider: ${Y.providerId}`);if(!G.supportedMethods.includes("oauth-pkce")||!G.getOAuthUrl)throw Error(`Provider ${Y.providerId} does not support OAuth PKCE`);let W=E$6(),K=T$6(W),Z=await X.storage.oauthPkceStates.create(W,J.id,X.auth.user.id),Q=new URL(Y.callbackUrl);Q.searchParams.set("state",Z);let H={callbackUrl:Q.toString(),codeChallenge:K,codeChallengeMethod:"S256",organizationId:J.id};return{url:G.getOAuthUrl(H),stateToken:Z}}})});var wh1;var I$6=A(()=>{a1();i0();qP();sN();Oh1();wh1=y1({name:"AI_PROVIDER_OAUTH_EXCHANGE",description:"Exchange an OAuth authorization code for an API key and store it",inputSchema:d0.object({providerId:d0.enum(pG),code:d0.string(),stateToken:d0.string().describe("The stateToken returned by AI_PROVIDER_OAUTH_URL"),label:d0.string().min(1).max(100).default("Connected via OAuth")}),outputSchema:qh1,handler:async(Y,X)=>{J0(X);let J=q0(X);await X.access.check();let G=CW[Y.providerId];if(!G)throw Error(`Unknown provider: ${Y.providerId}`);if(!G.supportedMethods.includes("oauth-pkce")||!G.exchangeOAuthCode)throw Error(`Provider ${Y.providerId} does not support OAuth PKCE`);let W=K9(X);if(!W)throw Error("Unable to determine user ID");let K=await X.storage.oauthPkceStates.consume(Y.stateToken,J.id,W),{apiKey:Z}=await G.exchangeOAuthCode({code:Y.code,codeVerifier:K,codeChallengeMethod:"S256"}),Q=await X.storage.aiProviderKeys.upsert({providerId:Y.providerId,label:Y.label,apiKey:Z,organizationId:J.id,createdBy:W});return{id:Q.id,providerId:Q.providerId,label:Q.label,createdAt:Q.createdAt}}})});var Mh1;var j$6=A(()=>{a1();i0();qP();sN();Mh1=y1({name:"AI_PROVIDER_TOPUP_URL",description:"Get a checkout URL to top up credits for a provider that supports it (e.g. Deco AI Gateway)",inputSchema:d0.object({providerId:d0.enum(pG),keyId:d0.string().describe("The ID of the stored provider key to top up"),amountCents:d0.number().int().positive().describe("Amount in cents (e.g. 1000 = $10.00)"),currency:d0.enum(["usd","brl"]).default("usd")}),outputSchema:d0.object({url:d0.string().describe("Checkout URL \u2014 open in browser to complete payment")}),handler:async(Y,X)=>{J0(X);let J=q0(X);await X.access.check();let G=CW[Y.providerId];if(!G)throw Error(`Unknown provider: ${Y.providerId}`);if(!G.getTopUpUrl)throw Error(`Provider ${Y.providerId} does not support credit top-ups`);let{apiKey:W}=await X.storage.aiProviderKeys.resolve(Y.keyId,J.id);return{url:await G.getTopUpUrl(W,Y.amountCents,Y.currency)}}})});var Ah1;var S$6=A(()=>{a1();i0();qP();sN();z51();Ah1=y1({name:"AI_PROVIDER_CREDITS",description:"Get the current credit balance for a provider (providers that support it, e.g. Deco AI Gateway)",inputSchema:d0.object({providerId:d0.enum(pG)}),outputSchema:d0.object({balanceCents:d0.number().describe("Remaining balance in cents (e.g. 1000 = $10.00)")}),handler:async(Y,X)=>{J0(X);let J=q0(X);await X.access.check();let G=K9(X);if(!G)throw Error("Unable to determine user ID");let W=CW[Y.providerId];if(!W)throw Error(`Unknown provider: ${Y.providerId}`);if(!W.getCreditsBalance)throw Error(`Provider ${Y.providerId} does not expose a credits balance`);let K=await HX6(G);return W.getCreditsBalance(K,J.id)}})});var _$6=A(()=>{N$6();w$6();M$6();Oh1();A$6();P$6();C$6();I$6();j$6();S$6()});var v$6={};OY(v$6,{managementMCP:()=>Ph1,ALL_TOOLS:()=>k$6});var SW8,_W8,k$6,Ph1=async(Y)=>{let X=null;if(Y.organization){let W=await Y.storage.organizationSettings.get(Y.organization.id),K=await Y.storage.projects.list(Y.organization.id),Z=new Set(W?.enabled_plugins??[]);for(let Q of K)if(Q.enabledPlugins)for(let H of Q.enabledPlugins)Z.add(H);X=Z.size>0?[...Z]:null}let J=V56(k$6,X),G=new Mz({name:"mcp-mesh-management",version:"1.0.0"},{capabilities:{tools:{}}});for(let W of J){let K=W.inputSchema&&typeof W.inputSchema==="object"&&"shape"in W.inputSchema?W.inputSchema:F.object({}),Z=W.outputSchema&&typeof W.outputSchema==="object"&&"shape"in W.outputSchema?W.outputSchema:void 0,Q=K.shape,H=Z?.shape;G.registerTool(W.name,{description:W.description??"",inputSchema:Q,outputSchema:H,annotations:W.annotations,_meta:W._meta},async($)=>{Y.access.setToolName(W.name);try{let V=await W.execute($,Y);return{content:[{type:"text",text:JSON.stringify(V)}],structuredContent:V}}catch(V){return{content:[{type:"text",text:`Error: ${V.message}`}],isError:!0}}})}return G};var Eh1=A(()=>{X51();ty();a1();S56();i56();qZ6();BZ6();IZ6();yZ6();mZ6();cZ6();eZ6();VQ6();EQ6();SQ6();lQ6();XK6();GK6();_$6();SW8=[af1,rf1,of1,sf1,tf1,Yy1,Xy1,Jy1,Gy1,Wy1,Zy1,Qk1,Vk1,zk1,Nf1,Bf1,Df1,Cf1,jf1,Sf1,_f1,kf1,vf1,ff1,yf1,bf1,hf1,NZ6,xf1,gf1,mf1,lf1,df1,cf1,pf1,nf1,if1,r_1,s_1,t_1,o_1,wf1,Mf1,Af1,Pf1,Ef1,Tf1,Rf1,xy1,Gk1,Wk1,Zk1,Ay1,Py1,Ey1,Ty1,Ry1,Cy1,Ny1,By1,Dy1,wy1,My1,Iy1,jy1,Sy1,_y1,ky1,yy1,by1,hy1,Qy1,Ky1,Hy1,$y1,Fy1,Vy1,zy1,Uy1,qy1,Ly1,Oy1,Fh1,zh1,Uh1,Lh1,Nh1,Bh1,Dh1,wh1,Mh1,Ah1],_W8=z56(),k$6=[...SW8,..._W8]});function kW8(Y){return[{permissions:{self:["*"]},getTools:async()=>{let{ALL_TOOLS:X}=await Promise.resolve().then(() => (Eh1(),v$6));return X.map((J)=>{return{name:J.name,inputSchema:F.toJSONSchema(J.inputSchema,{unrepresentable:"any"}),outputSchema:J.outputSchema?F.toJSONSchema(J.outputSchema,{unrepresentable:"any"}):void 0,description:J.description}})},data:aN1(UQ(),Y)},{data:iN1()},{data:nN1(Y)}]}async function f$6(Y,X){try{let J=kF(),G=new bM(V6.ENCRYPTION_KEY),W=new ix(J.db,G),K=new ax(J.db),Z=kW8(Y);try{await K.create({organizationId:Y,slug:Hz,name:Cs,description:"Organization administration and settings",enabledPlugins:null,ui:null})}catch(Q){console.warn("Could not create org-admin project (may already exist):",Q)}await Promise.all(Z.map(async(Q)=>{let H=null;if(Q.permissions)H=(await HH.api.createApiKey({body:{name:`${Q.data.app_name??crypto.randomUUID()}-mcp`,userId:X,permissions:Q.permissions,rateLimitEnabled:!1,metadata:{organization:{id:Y},purpose:"default-org-connections"}}}))?.key;let $=await mO({id:"pending",title:Q.data.title,connection_type:Q.data.connection_type,connection_url:Q.data.connection_url,connection_token:Q.data.connection_token,connection_headers:Q.data.connection_headers}).catch(()=>null),V=await Q.getTools?.()??$?.tools??null,z=$?.scopes?.length?$.scopes:null,U=Q.data.id?Q.data.id.startsWith(`${Y}_`)?Q.data.id:`${Y}_${Q.data.id}`:void 0;await W.create({...Q.data,id:U,tools:V,configuration_scopes:z,organization_id:Y,created_by:X,connection_token:Q.data.connection_token??H})}))}catch(J){console.error("Error creating default MCP connections:",J)}}var y$6=A(()=>{wY();gO();TC();s41();HT1();$T1();Xg();a1();c5();hA()});async function fW8(Y){let{user:X,token:J}=Y;if(!J?.idToken)return;let G;try{G=GY(J.idToken)}catch{return}let{preferred_username:W,upn:K}=G,Z=[W,K].filter(($)=>typeof $==="string"&&$.length>0&&$.toLowerCase()!==X.email.toLowerCase()).map(($)=>$.toLowerCase());if(Z.length===0)return;let{db:Q}=kF(),H=await Q.selectFrom("user").selectAll().where("email","in",Z).where("id","!=",X.id).executeTakeFirst();if(!H)return;console.info(`[SSO] Merging duplicate user ${X.id} (${X.email}) into original ${H.id} (${H.email})`);try{await Q.transaction().execute(async($)=>{await k0`UPDATE "account" SET "userId" = ${H.id} WHERE "userId" = ${X.id}`.execute($),await k0`UPDATE "session" SET "userId" = ${H.id} WHERE "userId" = ${X.id}`.execute($),await k0`
|
|
1423
|
+
Error message: ${I36(J)}`,cause:J});this[H36]=!0,this.value=X}static isInstance(X){return kY.hasMarker(X,r36)}static wrap({value:X,cause:J}){return Y.isInstance(J)&&J.value===X?J:new Y({value:X,cause:J})}},s36=`vercel.ai.error.${o36}`,C78=Symbol.for(s36),Oq=class extends(V36=kY,F36=C78,V36){constructor({functionality:Y,message:X=`'${Y}' functionality not supported.`}){super({name:o36,message:X});this[F36]=!0,this.functionality=Y}static isInstance(Y){return kY.hasMarker(Y,s36)}},z36=class extends Error{constructor(Y,X){super(Y),this.name="ParseError",this.type=X.type,this.field=X.field,this.value=X.value,this.line=X.line}};S78=class extends TransformStream{constructor({onError:Y,onRetry:X,onComment:J}={}){let G;super({start(W){G=I78({onEvent:(K)=>{W.enqueue(K)},onError(K){Y==="terminate"?W.error(K):typeof Y=="function"&&Y(K)},onRetry:X,onComment:J})},transform(W){G.feed(W)}})}};({btoa:_78,atob:$_Y}=globalThis);e36=`vercel.ai.error.${t36}`,v78=Symbol.for(e36),F_Y=class extends(q36=kY,U36=v78,q36){constructor({url:Y,statusCode:X,statusText:J,cause:G,message:W=G==null?`Failed to download ${Y}: ${X} ${J}`:`Failed to download ${Y}: ${G}`}){super({name:t36,message:W,cause:G});this[U36]=!0,this.url=Y,this.statusCode=X,this.statusText=J}static isInstance(Y){return kY.hasMarker(Y,e36)}},J$=f78();y78=["fetch failed","failed to fetch"];l78=/"__proto__"\s*:/,d78=/"constructor"\s*:/;p78=Symbol("Let zodToJsonSchema decide on which parser to use"),O36={name:void 0,$refStrategy:"root",basePath:["#"],effectStrategy:"input",pipeStrategy:"all",dateStrategy:"format:date-time",mapStrategy:"entries",removeAdditionalStrategy:"passthrough",allowedAdditionalProperties:!0,rejectedAdditionalProperties:!1,definitionPath:"definitions",strictUnions:!1,definitions:{},errorMessages:!1,patternStrategy:"escape",applyRegexFlags:!1,emailStrategy:"format:email",base64Strategy:"contentEncoding:base64",nameStrategy:"ref"};Y$={cuid:/^[cC][^\s-]{8,}$/,cuid2:/^[0-9a-z]+$/,ulid:/^[0-9A-HJKMNP-TV-Z]{26}$/,email:/^(?!\.)(?!.*\.\.)([a-zA-Z0-9_'+\-\.]*)[a-zA-Z0-9_+-]@([a-zA-Z0-9][a-zA-Z0-9\-]*\.)+[a-zA-Z]{2,}$/,emoji:()=>{if(nb1===void 0)nb1=RegExp("^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$","u");return nb1},uuid:/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/,ipv4:/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,ipv4Cidr:/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,ipv6:/^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/,ipv6Cidr:/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,base64:/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,base64url:/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,nanoid:/^[a-zA-Z0-9_-]{21}$/,jwt:/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/};WG8=new Set("ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789");sb1={ZodString:"string",ZodNumber:"number",ZodBigInt:"integer",ZodBoolean:"boolean",ZodNull:"null"};tb1=Symbol.for("vercel.ai.schema");K$6=((Y)=>{return Y.Unknown="unknown",Y.OpenAIResponsesV1="openai-responses-v1",Y.XAIResponsesV1="xai-responses-v1",Y.AnthropicClaudeV1="anthropic-claude-v1",Y.GoogleGeminiV1="google-gemini-v1",Y})(K$6||{}),Gh1=F.object({id:F.string().nullish(),format:F.enum(K$6).nullish(),index:F.number().optional()}).loose(),pG8=F.object({type:F.literal("reasoning.summary"),summary:F.string()}).extend(Gh1.shape),nG8=F.object({type:F.literal("reasoning.encrypted"),data:F.string()}).extend(Gh1.shape),iG8=F.object({type:F.literal("reasoning.text"),text:F.string().nullish(),signature:F.string().nullish()}).extend(Gh1.shape),Wh1=F.union([pG8,nG8,iG8]),KJ1=F.union([Wh1,F.unknown().transform(()=>null)]),Zh1=F.array(KJ1).transform((Y)=>Y.filter((X)=>!!X)),z_Y=F.union([F.object({delta:F.object({reasoning_details:F.array(KJ1)})}).transform((Y)=>Y.delta.reasoning_details.filter(rb1)),F.object({message:F.object({reasoning_details:F.array(KJ1)})}).transform((Y)=>Y.message.reasoning_details.filter(rb1)),F.object({text:F.string(),reasoning_details:F.array(KJ1)}).transform((Y)=>Y.reasoning_details.filter(rb1))]),NJ1=F.object({error:F.object({code:F.union([F.string(),F.number()]).nullable().optional().default(null),message:F.string(),type:F.string().nullable().optional().default(null),param:F.any().nullable().optional().default(null)}).passthrough()}).passthrough();YS=dG8({errorSchema:NJ1,errorToMessage:aG8}),H$6=F.object({type:F.literal("file"),file:F.object({hash:F.string(),name:F.string(),content:F.array(F.object({type:F.string(),text:F.string().optional()}).catchall(F.any())).optional()}).catchall(F.any())}).catchall(F.any()),Qh1=F.object({provider:F.string(),reasoning_details:F.array(Wh1).optional(),annotations:F.array(H$6).optional(),usage:F.object({promptTokens:F.number(),promptTokensDetails:F.object({cachedTokens:F.number()}).catchall(F.any()).optional(),completionTokens:F.number(),completionTokensDetails:F.object({reasoningTokens:F.number()}).catchall(F.any()).optional(),totalTokens:F.number(),cost:F.number().optional(),costDetails:F.object({upstreamInferenceCost:F.number()}).catchall(F.any()).optional()}).catchall(F.any())}).catchall(F.any()),$$6=F.object({openrouter:F.object({reasoning_details:F.array(Wh1).optional(),annotations:F.array(H$6).optional()}).optional()}).optional();HJ1=new WeakMap;sG8=["wav","mp3","aiff","aac","ogg","flac","m4a","pcm16","pcm24"];tG8={mpeg:"mp3",mp3:"mp3","x-wav":"wav",wave:"wav",wav:"wav",ogg:"ogg",vorbis:"ogg",aac:"aac","x-aac":"aac",m4a:"m4a","x-m4a":"m4a",mp4:"m4a",aiff:"aiff","x-aiff":"aiff",flac:"flac","x-flac":"flac",pcm16:"pcm16",pcm24:"pcm24"};O_Y=F.union([F.literal("auto"),F.literal("none"),F.literal("required"),F.object({type:F.literal("function"),function:F.object({name:F.string()})})]);WW8=F.object({type:F.literal("image_url"),image_url:F.object({url:F.string()}).passthrough()}).passthrough(),ZW8=F.union([WW8,F.unknown().transform(()=>null)]),z$6=F.array(ZW8).transform((Y)=>Y.filter((X)=>!!X)),U$6=F.object({id:F.string().optional(),model:F.string().optional(),provider:F.string().optional(),usage:F.object({prompt_tokens:F.number(),prompt_tokens_details:F.object({cached_tokens:F.number(),cache_write_tokens:F.number().nullish()}).passthrough().nullish(),completion_tokens:F.number(),completion_tokens_details:F.object({reasoning_tokens:F.number()}).passthrough().nullish(),total_tokens:F.number(),cost:F.number().optional(),cost_details:F.object({upstream_inference_cost:F.number().nullish()}).passthrough().nullish()}).passthrough().nullish()}).passthrough(),QW8=F.union([U$6.extend({choices:F.array(F.object({message:F.object({role:F.literal("assistant"),content:F.string().nullable().optional(),reasoning:F.string().nullable().optional(),reasoning_details:Zh1.nullish(),images:z$6.nullish(),tool_calls:F.array(F.object({id:F.string().optional().nullable(),type:F.literal("function"),function:F.object({name:F.string(),arguments:F.string().optional()}).passthrough()}).passthrough()).optional(),annotations:F.array(F.union([F.object({type:F.literal("url_citation"),url_citation:F.object({url:F.string(),title:F.string().optional(),start_index:F.number().optional(),end_index:F.number().optional(),content:F.string().optional()}).passthrough()}).passthrough(),F.object({type:F.literal("file_annotation"),file_annotation:F.object({file_id:F.string(),quote:F.string().optional()}).passthrough()}).passthrough(),F.object({type:F.literal("file"),file:F.object({hash:F.string(),name:F.string(),content:F.array(F.object({type:F.string(),text:F.string().optional()}).passthrough()).optional()}).passthrough()}).passthrough()])).nullish()}).passthrough(),index:F.number().nullish(),logprobs:F.object({content:F.array(F.object({token:F.string(),logprob:F.number(),top_logprobs:F.array(F.object({token:F.string(),logprob:F.number()}).passthrough())}).passthrough()).nullable()}).passthrough().nullable().optional(),finish_reason:F.string().optional().nullable()}).passthrough())}),NJ1.extend({user_id:F.string().optional()})]),KW8=F.union([U$6.extend({choices:F.array(F.object({delta:F.object({role:F.enum(["assistant"]).optional(),content:F.string().nullish(),reasoning:F.string().nullish().optional(),reasoning_details:Zh1.nullish(),images:z$6.nullish(),tool_calls:F.array(F.object({index:F.number().nullish(),id:F.string().nullish(),type:F.literal("function").optional(),function:F.object({name:F.string().nullish(),arguments:F.string().nullish()}).passthrough()}).passthrough()).nullish(),annotations:F.array(F.union([F.object({type:F.literal("url_citation"),url_citation:F.object({url:F.string(),title:F.string().optional(),start_index:F.number().optional(),end_index:F.number().optional(),content:F.string().optional()}).passthrough()}).passthrough(),F.object({type:F.literal("file_annotation"),file_annotation:F.object({file_id:F.string(),quote:F.string().optional()}).passthrough()}).passthrough(),F.object({type:F.literal("file"),file:F.object({hash:F.string(),name:F.string(),content:F.array(F.object({type:F.string(),text:F.string().optional()}).passthrough()).optional()}).passthrough()}).passthrough()])).nullish()}).passthrough().nullish(),logprobs:F.object({content:F.array(F.object({token:F.string(),logprob:F.number(),top_logprobs:F.array(F.object({token:F.string(),logprob:F.number()}).passthrough())}).passthrough()).nullable()}).passthrough().nullish(),finish_reason:F.string().nullable().optional(),index:F.number().nullish()}).passthrough())}),NJ1]);D36=F.union([F.object({id:F.string().optional(),model:F.string().optional(),provider:F.string().optional(),choices:F.array(F.object({text:F.string(),reasoning:F.string().nullish().optional(),reasoning_details:Zh1.nullish(),finish_reason:F.string().nullish(),index:F.number().nullish(),logprobs:F.object({tokens:F.array(F.string()),token_logprobs:F.array(F.number()),top_logprobs:F.array(F.record(F.string(),F.number())).nullable()}).passthrough().nullable().optional()}).passthrough()),usage:F.object({prompt_tokens:F.number(),prompt_tokens_details:F.object({cached_tokens:F.number(),cache_write_tokens:F.number().nullish()}).passthrough().nullish(),completion_tokens:F.number(),completion_tokens_details:F.object({reasoning_tokens:F.number()}).passthrough().nullish(),total_tokens:F.number(),cost:F.number().optional(),cost_details:F.object({upstream_inference_cost:F.number().nullish()}).passthrough().nullish()}).passthrough().nullish()}).passthrough(),NJ1]),VW8=F.object({prompt_tokens:F.number(),total_tokens:F.number(),cost:F.number().optional()}),zW8=F.object({object:F.literal("embedding"),embedding:F.array(F.number()),index:F.number().optional()}),UW8=F.object({id:F.string().optional(),object:F.literal("list"),data:F.array(zW8),model:F.string(),provider:F.string().optional(),usage:VW8.optional()}),LW8=F.object({id:F.string().optional(),object:F.string().optional(),created:F.number().optional(),model:F.string(),choices:F.array(F.object({index:F.number(),message:F.object({role:F.string(),content:F.string().nullable().optional(),images:F.array(F.object({type:F.literal("image_url"),image_url:F.object({url:F.string()})}).passthrough()).optional()}).passthrough(),finish_reason:F.string().nullable().optional()}).passthrough()),usage:F.object({prompt_tokens:F.number(),completion_tokens:F.number(),total_tokens:F.number()}).passthrough().optional()}).passthrough();A_Y=Hh1({compatibility:"strict"})});var EW8="https://assets.decocache.com/decocms/b2e2f64f-6025-45f7-9e8c-3b3ebdd073d8/openrouter_logojpg.jpg",BJ1;var $h1=A(()=>{q$6();BJ1={info:{id:"openrouter",name:"OpenRouter",description:"Unified API for multiple AI providers",logo:EW8},supportedMethods:["oauth-pkce","api-key"],getOAuthUrl({callbackUrl:Y,codeChallenge:X,codeChallengeMethod:J}){return`https://openrouter.ai/auth?${new URLSearchParams({callback_url:Y,code_challenge:X,code_challenge_method:J})}`},async exchangeOAuthCode({code:Y,codeVerifier:X,codeChallengeMethod:J}){let G=await fetch("https://openrouter.ai/api/v1/auth/keys",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({code:Y,code_verifier:X,code_challenge_method:J}),signal:AbortSignal.timeout(30000)});if(!G.ok)throw Error(`OpenRouter OAuth exchange failed: ${G.status}`);let W=await G.json();return{apiKey:W.key,userId:W.user_id}},create(Y){let X=Hh1({apiKey:Y}),J={Authorization:`Bearer ${Y}`};return{info:this.info,aiSdk:X,async listModels(){let G=(Q)=>{return{providerId:"openrouter",modelId:Q.id,title:Q.name,description:Q.description??null,logo:null,capabilities:[...new Set([...Q.architecture.input_modalities,...Q.architecture.output_modalities,...Q.supported_parameters?.includes("tools")?["tools"]:[],...Q.supported_parameters?.includes("reasoning")?["reasoning"]:[]])],limits:{contextWindow:Q.context_length??0,maxOutputTokens:Q.top_provider.max_completion_tokens||null},costs:{input:Number(Q.pricing.prompt)||0,output:Number(Q.pricing.completion)||0}}},W=await fetch("https://openrouter.ai/api/v1/models",{headers:J,signal:AbortSignal.timeout(30000)});if(!W.ok)throw Error(`OpenRouter listModels failed: ${W.status}`);let{data:K}=await W.json();return K.map(G)}}}}});var DJ1,L$6;var O$6=A(()=>{$h1();c5();DJ1=V6.DECO_AI_GATEWAY_URL??"https://ai-site.decocache.com",L$6={info:{id:"deco",name:"Deco AI Gateway",description:"Deco-managed keys with access to 100+ models",logo:"/logos/deco logo.svg"},supportedMethods:["oauth-pkce","api-key"],getOAuthUrl({callbackUrl:Y,codeChallenge:X,codeChallengeMethod:J,organizationId:G}){let W=new URLSearchParams({redirect_uri:Y,code_challenge:X,code_challenge_method:J,organization_id:G});return`${DJ1}/oauth/authorize?${W}`},async exchangeOAuthCode({code:Y,codeVerifier:X}){let J=await fetch(`${DJ1}/oauth/token`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({code:Y,code_verifier:X,grant_type:"authorization_code"}),signal:AbortSignal.timeout(30000)});if(!J.ok)throw Error(`Deco AI Gateway OAuth exchange failed: ${J.status}`);return{apiKey:(await J.json()).key}},async getTopUpUrl(Y,X,J="usd"){let G=await fetch(`${DJ1}/api/credits/topup`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${Y}`},body:JSON.stringify({amountCents:X,currency:J}),signal:AbortSignal.timeout(1e4)});if(!G.ok)throw Error(`Failed to create top-up checkout: ${G.status}`);return(await G.json()).url},async getCreditsBalance(Y,X){let J=await fetch(`${DJ1}/api/teams/${X}/balance`,{headers:{Authorization:`Bearer ${Y}`},signal:AbortSignal.timeout(1e4)});if(!J.ok)throw Error(`Failed to fetch credits balance: ${J.status}`);return{balanceCents:(await J.json()).balance_cents}},create(Y){return{...BJ1.create(Y),info:this.info}}}});var TW8,CW;var sN=A(()=>{wH6();yH6();$h1();O$6();c5();TW8=V6.DECO_AI_GATEWAY_ENABLED,CW={...TW8&&{deco:L$6},anthropic:DH6,google:fH6,openrouter:BJ1}});var Fh1;var N$6=A(()=>{a1();i0();sN();Fh1=y1({name:"AI_PROVIDERS_LIST",description:"List all available AI providers that can be connected with an API key",inputSchema:d0.object({}),outputSchema:d0.object({providers:d0.array(d0.object({id:d0.string(),name:d0.string(),description:d0.string(),logo:d0.string().optional(),supportedMethods:d0.array(d0.enum(["api-key","oauth-pkce"])),supportsTopUp:d0.boolean().optional(),supportsCredits:d0.boolean().optional()}))}),handler:async(Y,X)=>{return J0(X),q0(X),await X.access.check(),{providers:Object.values(CW).filter((G)=>!!G).map((G)=>({...G.info,supportedMethods:G.supportedMethods,supportsTopUp:!!G.getTopUpUrl,supportsCredits:!!G.getCreditsBalance}))}}})});var Vh1,wJ1;var MJ1=A(()=>{Vh1=["owner","admin","user"],wJ1=["owner","admin"]});function RW8(Y){if(!Y)return;if(!("models"in Y))return;return Y.models??void 0}function B$6(Y,X){if(!Y)return!0;if(Y.includes("*:*"))return!0;return Y.some((J)=>J.startsWith(`${X}:`))}function UP(Y,X,J){if(!Y)return!0;return Y.includes("*:*")||Y.includes(`${X}:*`)||Y.includes(`${X}:${J}`)}function D$6(Y){if(!Y)return{allowAll:!0,models:{}};if(Y.includes("*:*"))return{allowAll:!0,models:{}};let X={};for(let J of Y){let G=J.indexOf(":");if(G===-1)continue;let W=J.slice(0,G),K=J.slice(G+1);if(!X[W])X[W]=[];X[W].push(K)}return{allowAll:!1,models:X}}async function Nq(Y,X,J){if(!J||wJ1.includes(J))return;let G=await Y.selectFrom("organizationRole").select(["permission"]).where("organizationId","=",X).where("role","=",J).executeTakeFirst();if(!G?.permission)return;try{let W=JSON.parse(G.permission);return RW8(W)}catch{return console.error(`[model-permissions] Failed to parse permissions for role: ${J}`),[]}}var ul=A(()=>{MJ1()});var zh1;var w$6=A(()=>{a1();i0();ul();zh1=y1({name:"AI_PROVIDERS_LIST_MODELS",description:"List models available from an AI provider using a specific API key",inputSchema:d0.object({keyId:d0.string().describe("The provider key ID to use")}),outputSchema:d0.object({models:d0.array(d0.object({providerId:d0.string(),modelId:d0.string(),title:d0.string(),description:d0.string().nullish(),logo:d0.string().nullish(),capabilities:d0.array(d0.string()),limits:d0.object({contextWindow:d0.coerce.number(),maxOutputTokens:d0.coerce.number().nullable()}).nullish(),costs:d0.object({input:d0.coerce.number(),output:d0.coerce.number()}).nullish()}))}),handler:async(Y,X)=>{J0(X);let J=q0(X);await X.access.check();let G=await Nq(X.db,J.id,X.auth.user?.role);return{models:(await X.aiProviders.listModels(Y.keyId,J.id)).filter((Z)=>UP(G,Y.keyId,Z.modelId))}}})});var Uh1;var M$6=A(()=>{a1();i0();sN();Uh1=y1({name:"AI_PROVIDERS_ACTIVE",description:"List AI providers that have at least one API key configured",inputSchema:d0.object({}),outputSchema:d0.object({providers:d0.array(d0.object({id:d0.string(),name:d0.string(),description:d0.string(),logo:d0.string().optional(),keyCount:d0.number()}))}),handler:async(Y,X)=>{J0(X);let J=q0(X);await X.access.check();let G=await X.storage.aiProviderKeys.list({organizationId:J.id}),W=new Map;for(let Z of G)W.set(Z.providerId,(W.get(Z.providerId)??0)+1);return{providers:[...W.entries()].flatMap(([Z,Q])=>{let H=CW[Z];if(!H)return console.warn(`AI provider "${Z}" has stored keys but is not in the registry; skipping.`),[];return[{...H.info,keyCount:Q}]})}}})});var qP=A(()=>{wY()});var qh1,Lh1;var Oh1=A(()=>{a1();i0();qP();qh1=d0.object({id:d0.string(),providerId:d0.string(),label:d0.string(),createdAt:d0.string()}),Lh1=y1({name:"AI_PROVIDER_KEY_CREATE",description:"Store an API key for an AI provider",inputSchema:d0.object({providerId:d0.enum(pG),label:d0.string().min(1).max(100),apiKey:d0.string().min(1)}),outputSchema:qh1,handler:async(Y,X)=>{J0(X);let J=q0(X);await X.access.check();let G=await X.storage.aiProviderKeys.create({providerId:Y.providerId,label:Y.label,apiKey:Y.apiKey,organizationId:J.id,createdBy:X.auth.user.id});return{id:G.id,providerId:G.providerId,label:G.label,createdAt:G.createdAt}}})});var Nh1;var A$6=A(()=>{a1();i0();Nh1=y1({name:"AI_PROVIDER_KEY_DELETE",description:"Delete a stored AI provider API key",inputSchema:d0.object({keyId:d0.string().describe("The provider key ID to delete")}),outputSchema:d0.object({success:d0.boolean()}),handler:async(Y,X)=>{J0(X);let J=q0(X);return await X.access.check(),await X.storage.aiProviderKeys.delete(Y.keyId,J.id),{success:!0}}})});var Bh1;var P$6=A(()=>{a1();i0();qP();ul();Bh1=y1({name:"AI_PROVIDER_KEY_LIST",description:"List stored API keys for AI providers (metadata only, no secrets)",inputSchema:d0.object({providerId:d0.enum(pG).optional()}),outputSchema:d0.object({keys:d0.array(d0.object({id:d0.string(),providerId:d0.string(),label:d0.string(),createdBy:d0.string(),createdAt:d0.string()}))}),handler:async(Y,X)=>{J0(X);let J=q0(X);await X.access.check();let[G,W]=await Promise.all([X.storage.aiProviderKeys.list({organizationId:J.id,providerId:Y.providerId}),Nq(X.db,J.id,X.auth.user?.role)]);return{keys:G.filter((Z)=>B$6(W,Z.id)).map(({organizationId:Z,...Q})=>Q)}}})});import{createHash as CW8,randomBytes as IW8}from"crypto";function E$6(){return IW8(32).toString("base64url")}function T$6(Y){return CW8("sha256").update(Y).digest("base64url")}var R$6=()=>{};var Dh1;var C$6=A(()=>{a1();i0();qP();sN();R$6();c5();Dh1=y1({name:"AI_PROVIDER_OAUTH_URL",description:"Get the OAuth authorization URL for a provider that supports OAuth PKCE",inputSchema:d0.object({providerId:d0.enum(pG),callbackUrl:d0.string().url().refine((Y)=>{let X=V6.BASE_URL??`http://localhost:${V6.PORT}`;return new URL(Y).origin===new URL(X).origin},{message:"callbackUrl must be on the same origin as BASE_URL"})}),outputSchema:d0.object({url:d0.string(),stateToken:d0.string().describe("Opaque token \u2014 pass to AI_PROVIDER_OAUTH_EXCHANGE")}),handler:async(Y,X)=>{J0(X);let J=q0(X);await X.access.check();let G=CW[Y.providerId];if(!G)throw Error(`Unknown provider: ${Y.providerId}`);if(!G.supportedMethods.includes("oauth-pkce")||!G.getOAuthUrl)throw Error(`Provider ${Y.providerId} does not support OAuth PKCE`);let W=E$6(),K=T$6(W),Z=await X.storage.oauthPkceStates.create(W,J.id,X.auth.user.id),Q=new URL(Y.callbackUrl);Q.searchParams.set("state",Z);let H={callbackUrl:Q.toString(),codeChallenge:K,codeChallengeMethod:"S256",organizationId:J.id};return{url:G.getOAuthUrl(H),stateToken:Z}}})});var wh1;var I$6=A(()=>{a1();i0();qP();sN();Oh1();wh1=y1({name:"AI_PROVIDER_OAUTH_EXCHANGE",description:"Exchange an OAuth authorization code for an API key and store it",inputSchema:d0.object({providerId:d0.enum(pG),code:d0.string(),stateToken:d0.string().describe("The stateToken returned by AI_PROVIDER_OAUTH_URL"),label:d0.string().min(1).max(100).default("Connected via OAuth")}),outputSchema:qh1,handler:async(Y,X)=>{J0(X);let J=q0(X);await X.access.check();let G=CW[Y.providerId];if(!G)throw Error(`Unknown provider: ${Y.providerId}`);if(!G.supportedMethods.includes("oauth-pkce")||!G.exchangeOAuthCode)throw Error(`Provider ${Y.providerId} does not support OAuth PKCE`);let W=K9(X);if(!W)throw Error("Unable to determine user ID");let K=await X.storage.oauthPkceStates.consume(Y.stateToken,J.id,W),{apiKey:Z}=await G.exchangeOAuthCode({code:Y.code,codeVerifier:K,codeChallengeMethod:"S256"}),Q=await X.storage.aiProviderKeys.upsert({providerId:Y.providerId,label:Y.label,apiKey:Z,organizationId:J.id,createdBy:W});return{id:Q.id,providerId:Q.providerId,label:Q.label,createdAt:Q.createdAt}}})});var Mh1;var j$6=A(()=>{a1();i0();qP();sN();Mh1=y1({name:"AI_PROVIDER_TOPUP_URL",description:"Get a checkout URL to top up credits for a provider that supports it (e.g. Deco AI Gateway)",inputSchema:d0.object({providerId:d0.enum(pG),keyId:d0.string().describe("The ID of the stored provider key to top up"),amountCents:d0.number().int().positive().describe("Amount in cents (e.g. 1000 = $10.00)"),currency:d0.enum(["usd","brl"]).default("usd")}),outputSchema:d0.object({url:d0.string().describe("Checkout URL \u2014 open in browser to complete payment")}),handler:async(Y,X)=>{J0(X);let J=q0(X);await X.access.check();let G=CW[Y.providerId];if(!G)throw Error(`Unknown provider: ${Y.providerId}`);if(!G.getTopUpUrl)throw Error(`Provider ${Y.providerId} does not support credit top-ups`);let{apiKey:W}=await X.storage.aiProviderKeys.resolve(Y.keyId,J.id);return{url:await G.getTopUpUrl(W,Y.amountCents,Y.currency)}}})});var Ah1;var S$6=A(()=>{a1();i0();qP();sN();z51();Ah1=y1({name:"AI_PROVIDER_CREDITS",description:"Get the current credit balance for a provider (providers that support it, e.g. Deco AI Gateway)",inputSchema:d0.object({providerId:d0.enum(pG)}),outputSchema:d0.object({balanceCents:d0.number().describe("Remaining balance in cents (e.g. 1000 = $10.00)")}),handler:async(Y,X)=>{J0(X);let J=q0(X);await X.access.check();let G=K9(X);if(!G)throw Error("Unable to determine user ID");let W=CW[Y.providerId];if(!W)throw Error(`Unknown provider: ${Y.providerId}`);if(!W.getCreditsBalance)throw Error(`Provider ${Y.providerId} does not expose a credits balance`);let K=await HX6(G);return W.getCreditsBalance(K,J.id)}})});var _$6=A(()=>{N$6();w$6();M$6();Oh1();A$6();P$6();C$6();I$6();j$6();S$6()});var v$6={};OY(v$6,{managementMCP:()=>Ph1,ALL_TOOLS:()=>k$6});var SW8,_W8,k$6,Ph1=async(Y)=>{let X=null;if(Y.organization){let W=await Y.storage.organizationSettings.get(Y.organization.id),K=await Y.storage.projects.list(Y.organization.id),Z=new Set(W?.enabled_plugins??[]);for(let Q of K)if(Q.enabledPlugins)for(let H of Q.enabledPlugins)Z.add(H);X=Z.size>0?[...Z]:null}let J=V56(k$6,X),G=new Mz({name:"mcp-mesh-management",version:"1.0.0"},{capabilities:{tools:{}}});for(let W of J){let K=W.inputSchema&&typeof W.inputSchema==="object"&&"shape"in W.inputSchema?W.inputSchema:F.object({}),Z=W.outputSchema&&typeof W.outputSchema==="object"&&"shape"in W.outputSchema?W.outputSchema:void 0,Q=K.shape,H=Z?.shape;G.registerTool(W.name,{description:W.description??"",inputSchema:Q,outputSchema:H,annotations:W.annotations,_meta:W._meta},async($)=>{Y.access.setToolName(W.name);try{let V=await W.execute($,Y);return{content:[{type:"text",text:JSON.stringify(V)}],structuredContent:V}}catch(V){return{content:[{type:"text",text:`Error: ${V.message}`}],isError:!0}}})}return G};var Eh1=A(()=>{X51();ty();a1();S56();i56();qZ6();BZ6();IZ6();yZ6();mZ6();cZ6();eZ6();VQ6();EQ6();SQ6();lQ6();XK6();GK6();_$6();SW8=[af1,rf1,of1,sf1,tf1,Yy1,Xy1,Jy1,Gy1,Wy1,Zy1,Qk1,Vk1,zk1,Nf1,Bf1,Df1,Cf1,jf1,Sf1,_f1,kf1,vf1,ff1,yf1,bf1,hf1,NZ6,xf1,gf1,mf1,lf1,df1,cf1,pf1,nf1,if1,r_1,s_1,t_1,o_1,wf1,Mf1,Af1,Pf1,Ef1,Tf1,Rf1,xy1,Gk1,Wk1,Zk1,Ay1,Py1,Ey1,Ty1,Ry1,Cy1,Ny1,By1,Dy1,wy1,My1,Iy1,jy1,Sy1,_y1,ky1,yy1,by1,hy1,Qy1,Ky1,Hy1,$y1,Fy1,Vy1,zy1,Uy1,qy1,Ly1,Oy1,Fh1,zh1,Uh1,Lh1,Nh1,Bh1,Dh1,wh1,Mh1,Ah1],_W8=z56(),k$6=[...SW8,..._W8]});function kW8(Y){return[{permissions:{self:["*"]},getTools:async()=>{let{ALL_TOOLS:X}=await Promise.resolve().then(() => (Eh1(),v$6));return X.map((J)=>{return{name:J.name,inputSchema:F.toJSONSchema(J.inputSchema,{unrepresentable:"any"}),outputSchema:J.outputSchema?F.toJSONSchema(J.outputSchema,{unrepresentable:"any"}):void 0,description:J.description}})},data:aN1(UQ(),Y)},{data:iN1()},{data:nN1(Y)}]}async function f$6(Y,X){try{let J=kF(),G=new bM(V6.ENCRYPTION_KEY),W=new ix(J.db,G),K=new ax(J.db),Z=kW8(Y);try{await K.create({organizationId:Y,slug:Hz,name:Cs,description:"Organization administration and settings",enabledPlugins:null,ui:null})}catch(Q){console.warn("Could not create org-admin project (may already exist):",Q)}await Promise.all(Z.map(async(Q)=>{let H=null;if(Q.permissions)H=(await HH.api.createApiKey({body:{name:`${Q.data.app_name??crypto.randomUUID()}-mcp`,userId:X,permissions:Q.permissions,rateLimitEnabled:!1,metadata:{organization:{id:Y},purpose:"default-org-connections"}}}))?.key;let $=await mO({id:"pending",title:Q.data.title,connection_type:Q.data.connection_type,connection_url:Q.data.connection_url,connection_token:Q.data.connection_token,connection_headers:Q.data.connection_headers}).catch(()=>null),V=await Q.getTools?.()??$?.tools??null,z=$?.scopes?.length?$.scopes:null,U=Q.data.id?Q.data.id.startsWith(`${Y}_`)?Q.data.id:`${Y}_${Q.data.id}`:void 0;await W.create({...Q.data,id:U,tools:V,configuration_scopes:z,organization_id:Y,created_by:X,connection_token:Q.data.connection_token??H})}))}catch(J){console.error("Error creating default MCP connections:",J)}}var y$6=A(()=>{wY();gO();TC();s41();HT1();$T1();Xg();a1();c5();hA()});async function fW8(Y){let{user:X,token:J}=Y;if(!J?.idToken)return;let G;try{G=GY(J.idToken)}catch{return}let{preferred_username:W,upn:K}=G,Z=[W,K].filter(($)=>typeof $==="string"&&$.length>0&&$.toLowerCase()!==X.email.toLowerCase()).map(($)=>$.toLowerCase());if(Z.length===0)return;let{db:Q}=kF(),H=await Q.selectFrom("user").selectAll().where("email","in",Z).where("id","!=",X.id).executeTakeFirst();if(!H)return;console.info(`[SSO] Merging duplicate user ${X.id} (${X.email}) into original ${H.id} (${H.email})`);try{await Q.transaction().execute(async($)=>{await k0`UPDATE "account" SET "userId" = ${H.id} WHERE "userId" = ${X.id}`.execute($),await k0`UPDATE "session" SET "userId" = ${H.id} WHERE "userId" = ${X.id}`.execute($),await k0`
|
|
1424
1424
|
UPDATE "member" SET "userId" = ${H.id}
|
|
1425
1425
|
WHERE "userId" = ${X.id}
|
|
1426
1426
|
AND "organizationId" NOT IN (
|
|
@@ -1569,7 +1569,7 @@ Example input: "How do I connect to a database?"
|
|
|
1569
1569
|
Example output: Database Connection Setup
|
|
1570
1570
|
|
|
1571
1571
|
Example input: "What tools are available?"
|
|
1572
|
-
Example output: Available Tools Overview`;function S71(Y){return typeof Y==="string"?Y:Y.toISOString()}class Xc{inner;organizationId;constructor(Y,X){this.inner=Y;this.organizationId=X}requireOrg(){if(!this.organizationId)throw Error("OrgScopedThreadStorage: thread operations require an authenticated organization");return this.organizationId}create(Y){let X=this.requireOrg();return this.inner.create({...Y,organization_id:X})}get(Y){return this.inner.get(Y,this.requireOrg())}update(Y,X){return this.inner.update(Y,this.requireOrg(),X)}forceFailIfInProgress(Y){return this.inner.forceFailIfInProgress(Y,this.requireOrg())}delete(Y){return this.inner.delete(Y,this.requireOrg())}list(Y,X){return this.inner.list(this.requireOrg(),Y,X)}listByTriggerIds(Y,X){return this.inner.listByTriggerIds(this.requireOrg(),Y,X)}saveMessages(Y){return this.inner.saveMessages(Y,this.requireOrg())}listMessages(Y,X){return this.inner.listMessages(Y,this.requireOrg(),X)}}class Jc{db;constructor(Y){this.db=Y}async create(Y){let X=Y.id??c8("thrd"),J=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=j71;let G={id:X,organization_id:Y.organization_id,title:Y.title,description:Y.description??null,status:Y.status??"completed",trigger_id:Y.trigger_id??null,created_at:J,updated_at:J,created_by:Y.created_by,updated_by:Y.updated_by??null},W=await this.db.insertInto("threads").values(G).returningAll().executeTakeFirstOrThrow();return this.threadFromDbRow(W)}async get(Y,X){let J=await this.db.selectFrom("threads").selectAll().where("id","=",Y).where("organization_id","=",X).executeTakeFirst();return J?this.threadFromDbRow(J):null}async update(Y,X,J){let W={updated_at:new Date().toISOString()};if(J.title!==void 0)W.title=J.title;if(J.description!==void 0)W.description=J.description;if(J.updated_by!==void 0)W.updated_by=J.updated_by;if(J.hidden!==void 0)W.hidden=J.hidden;if(J.status!==void 0)W.status=J.status;await this.db.updateTable("threads").set(W).where("id","=",Y).where("organization_id","=",X).execute();let K=await this.get(Y,X);if(!K)throw Error("Thread not found after update");return K}async forceFailIfInProgress(Y,X){let J=new Date().toISOString();return((await this.db.updateTable("threads").set({status:"failed",updated_at:J}).where("id","=",Y).where("organization_id","=",X).where("status","=","in_progress").executeTakeFirst()).numUpdatedRows??BigInt(0))>BigInt(0)}async delete(Y,X){await this.db.deleteFrom("threads").where("id","=",Y).where("organization_id","=",X).execute()}async list(Y,X,J){let G=this.db.selectFrom("threads").selectAll().where("organization_id","=",Y).where("hidden","=",!1).orderBy("updated_at","desc");if(X)G=G.where("created_by","=",X);let W=this.db.selectFrom("threads").select((Q)=>Q.fn.count("id").as("count")).where("organization_id","=",Y).where("hidden","=",!1);if(X)W=W.where("created_by","=",X);if(J?.limit)G=G.limit(J.limit);if(J?.offset)G=G.offset(J.offset);let[K,Z]=await Promise.all([G.execute(),W.executeTakeFirst()]);return{threads:K.map((Q)=>this.threadFromDbRow(Q)),total:Number(Z?.count||0)}}async listByTriggerIds(Y,X,J){if(X.length===0)return{threads:[],total:0};let G=this.db.selectFrom("threads").selectAll().where("organization_id","=",Y).where("hidden","=",!1).where("trigger_id","in",X).orderBy("updated_at","desc"),W=this.db.selectFrom("threads").select((Q)=>Q.fn.count("id").as("count")).where("organization_id","=",Y).where("hidden","=",!1).where("trigger_id","in",X);if(J?.limit)G=G.limit(J.limit);if(J?.offset)G=G.offset(J.offset);let[K,Z]=await Promise.all([G.execute(),W.executeTakeFirst()]);return{threads:K.map((Q)=>this.threadFromDbRow(Q)),total:Number(Z?.count||0)}}async saveMessages(Y,X){let J=new Date().toISOString(),G=Y[0]?.thread_id;if(!G)throw Error("thread_id is required when creating multiple messages");if(!await this.get(G,X))throw Error("Thread not found or access denied");let K=new Map;for(let $ of Y){let V=K.get($.id);if(V&&V.thread_id!==$.thread_id)throw Error(`Duplicate message id "${$.id}" with conflicting thread_ids: "${V.thread_id}" vs "${$.thread_id}"`);K.set($.id,$)}let Z=[...K.values()],Q=Z.find(($)=>$.thread_id!==G);if(Q)throw Error(`All messages must target the same thread. Expected thread_id "${G}", but message "${Q.id}" has thread_id "${Q.thread_id}"`);let H=Z.map(($)=>({id:$.id,thread_id:G,metadata:$.metadata?JSON.stringify($.metadata):null,parts:JSON.stringify($.parts),role:$.role,created_at:$.created_at??J,updated_at:J}));await this.db.transaction().execute(async($)=>{await $.insertInto("thread_messages").values(H).onConflict((V)=>V.column("id").doUpdateSet((z)=>({metadata:z.ref("excluded.metadata"),parts:z.ref("excluded.parts"),role:z.ref("excluded.role"),updated_at:z.ref("excluded.updated_at")}))).execute(),await $.updateTable("threads").set({updated_at:J}).where("id","=",G).where("organization_id","=",X).execute()})}async listMessages(Y,X,J){if(!await this.get(Y,X))return{messages:[],total:0};let W=J?.sort??"asc",K=this.db.selectFrom("thread_messages").selectAll().where("thread_id","=",Y).orderBy("created_at",W).orderBy("id",W),Z=this.db.selectFrom("thread_messages").select(($)=>$.fn.count("id").as("count")).where("thread_id","=",Y);if(J?.limit)K=K.limit(J.limit);if(J?.offset)K=K.offset(J.offset);let[Q,H]=await Promise.all([K.execute(),Z.executeTakeFirst()]);return{messages:Q.map(($)=>this.messageFromDbRow($)),total:Number(H?.count||0)}}threadFromDbRow(Y){return{id:Y.id,organization_id:Y.organization_id,title:Y.title,description:Y.description,status:Y.status,trigger_id:Y.trigger_id??null,created_at:S71(Y.created_at),updated_at:S71(Y.updated_at),created_by:Y.created_by,updated_by:Y.updated_by,hidden:!!Y.hidden}}messageFromDbRow(Y){let X,J;try{X=Y.metadata?JSON.parse(Y.metadata):void 0}catch(G){console.error(`Failed to parse metadata for message ${Y.id}:`,Y.metadata,G),X=void 0}try{J=typeof Y.parts==="string"?JSON.parse(Y.parts):Y.parts}catch(G){console.error(`Failed to parse parts for message ${Y.id}:`,Y.parts,G),J=[]}return{id:Y.id,thread_id:Y.thread_id,metadata:X,parts:J,role:Y.role,created_at:S71(Y.created_at),updated_at:S71(Y.updated_at)}}}q51();qW();import{createHash as xz8}from"crypto";function gq6(Y){return xz8("sha256").update(Y).digest("hex")}class Eg1{db;vault;constructor(Y,X){this.db=Y;this.vault=X}rowToKeyInfo(Y){return{id:Y.id,providerId:Y.provider_id,label:Y.label,organizationId:Y.organization_id,createdBy:Y.created_by,createdAt:Y.created_at instanceof Date?Y.created_at.toISOString():String(Y.created_at)}}async create(Y){let X=c8("aik"),J=await this.vault.encrypt(Y.apiKey),G=gq6(Y.apiKey),W=new Date;return await this.db.insertInto("ai_provider_keys").values({id:X,organization_id:Y.organizationId,provider_id:Y.providerId,label:Y.label,encrypted_api_key:J,key_hash:G,created_by:Y.createdBy,created_at:W}).execute(),this.rowToKeyInfo({id:X,provider_id:Y.providerId,label:Y.label,organization_id:Y.organizationId,created_by:Y.createdBy,created_at:W})}async upsert(Y){let X=c8("aik"),J=await this.vault.encrypt(Y.apiKey),G=gq6(Y.apiKey),W=new Date,K=await this.db.insertInto("ai_provider_keys").values({id:X,organization_id:Y.organizationId,provider_id:Y.providerId,label:Y.label,encrypted_api_key:J,key_hash:G,created_by:Y.createdBy,created_at:W}).onConflict((Z)=>Z.columns(["organization_id","provider_id","key_hash"]).doUpdateSet({label:Y.label})).returning(["id","provider_id","label","organization_id","created_by","created_at"]).executeTakeFirstOrThrow();return this.rowToKeyInfo(K)}async list(Y){let X=this.db.selectFrom("ai_provider_keys").where("organization_id","=",Y.organizationId).select(["id","provider_id","label","organization_id","created_by","created_at"]);if(Y.providerId)X=X.where("provider_id","=",Y.providerId);return(await X.orderBy("created_at","desc").execute()).map((G)=>this.rowToKeyInfo(G))}async resolve(Y,X){let J=await this.db.selectFrom("ai_provider_keys").where("id","=",Y).where("organization_id","=",X).selectAll().executeTakeFirstOrThrow(),G=await this.vault.decrypt(J.encrypted_api_key);return{keyInfo:this.rowToKeyInfo(J),apiKey:G}}async delete(Y,X){if(!(await this.db.deleteFrom("ai_provider_keys").where("id","=",Y).where("organization_id","=",X).executeTakeFirst()).numDeletedRows)throw Error(`AI provider key ${Y} not found`)}async findById(Y,X){let J=await this.db.selectFrom("ai_provider_keys").where("id","=",Y).where("organization_id","=",X).select(["id","provider_id","label","organization_id","created_by","created_at"]).executeTakeFirst();if(!J)throw Error("Provider key not found");return this.rowToKeyInfo(J)}}class Tg1{db;constructor(Y){this.db=Y}async create(Y,X,J){let G=crypto.randomUUID(),W=new Date(Date.now()+600000);return await this.db.insertInto("oauth_pkce_states").values({id:G,organization_id:X,user_id:J,code_verifier:Y,expires_at:W,created_at:new Date}).execute(),G}async consume(Y,X,J){let G=await this.db.deleteFrom("oauth_pkce_states").where("id","=",Y).where("organization_id","=",X).where("user_id","=",J).returningAll().executeTakeFirst();if(!G)throw Error("Invalid or expired OAuth state token");if((G.expires_at instanceof Date?G.expires_at:new Date(G.expires_at))<new Date)throw Error("OAuth state token has expired");return G.code_verifier}}sN();var uq6="_global";function gz8(Y){return Y.includes("/")?Y.split("/").slice(1).join("/"):Y}function uz8(Y){let X=Y.supported_parameters.includes("tools"),J=Y.supported_parameters.includes("reasoning");return{providerId:"openrouter",modelId:gz8(Y.id),title:Y.name,description:Y.description||null,logo:null,capabilities:[...new Set([...Y.architecture.input_modalities,...Y.architecture.output_modalities,...X?["tools"]:[],...J?["reasoning"]:[]])],limits:{contextWindow:Y.context_length,maxOutputTokens:Y.top_provider.max_completion_tokens||null},costs:{input:Y.pricing.prompt,output:Y.pricing.completion}}}function mq6(Y){let X=new Map;for(let J of Y){let G={description:J.description,capabilities:J.capabilities,limits:J.limits,costs:J.costs};X.set(J.modelId,G);let W=J.modelId.replace(/\./g,"-");if(W!==J.modelId)X.set(W,G)}return X}async function mz8(Y){if(Y){let X=await Y.get(uq6,"openrouter");if(X)return mq6(X)}try{let X=await fetch("https://openrouter.ai/api/v1/models",{signal:AbortSignal.timeout(1e4)});if(!X.ok)return new Map;let{data:J}=await X.json(),G=J.map(uz8);if(Y)await Y.set(uq6,"openrouter",G);return mq6(G)}catch{return new Map}}function lz8(Y){let X=Y.replace(/\./g,"-"),J=Y.replace(/-\d{8}$/,""),G=J.replace(/\./g,"-");return[...new Set([Y,X,J,G])]}function dz8(Y,X){return Y.map((J)=>{let W=lz8(J.modelId).map((K)=>X.get(K)).find(Boolean);if(!W)return J;return{...J,description:J.description??W.description??null,capabilities:J.capabilities.length?J.capabilities:W.capabilities??[],limits:J.limits??W.limits??null,costs:J.costs??W.costs??null}})}class Rg1{storage;cache;constructor(Y,X){this.storage=Y;this.cache=X}async activate(Y,X){let{keyInfo:J,apiKey:G}=await this.storage.resolve(Y,X),W=CW[J.providerId];if(!W)throw Error(`Unknown provider: ${J.providerId}`);return W.create(G)}async listModels(Y,X){let{keyInfo:J,apiKey:G}=await this.storage.resolve(Y,X),W=J.providerId;if(this.cache){let z=await this.cache.get(X,W);if(z)return z}let K=CW[W];if(!K)throw Error(`Unknown provider: ${W}`);let Q=await K.create(G).listModels(),H=new Set,$=Q.filter((z)=>{if(H.has(z.modelId))return!1;return H.add(z.modelId),!0});if(W!=="openrouter"){let z=await mz8(this.cache);$=dz8($,z)}let V=$.map((z)=>({...z,providerId:W}));if(this.cache)await this.cache.set(X,W,V);return V}}function cz8(Y){if(!Y)return;try{let X=JSON.parse(Y);if(typeof X!=="object"||X===null||Array.isArray(X))return;let J={};for(let[G,W]of Object.entries(X))if(typeof W==="string")J[G]=W;return Object.keys(J).length>0?J:void 0}catch{return}}function pz8(Y,X){for(let[J,G]of Object.entries(X)){let W=Y[J];if(!W||W.length===0){let K=Y["*"];if(!K||K.length===0)return!1;if(K.includes("*"))continue;for(let Z of G)if(!K.includes(Z))return!1;continue}if(W.includes("*"))continue;for(let K of G)if(!W.includes(K))return!1}return!0}function Cg1(Y){let{auth:X,headers:J,role:G,permissions:W,userId:K}=Y,Z=X.api.hasPermission;return{hasPermission:async(Q)=>{if(G&&Vh1.includes(G))return!0;if(W)return pz8(W,Q);if(!Z)return console.error("[Auth] hasPermission API not available"),!1;try{if((await Z({headers:J,body:{permission:Q}}))?.success===!0)return!0;let $={};for(let z of Object.keys(Q))$[z]=["*"];return(await Z({headers:J,body:{permission:$}}))?.success===!0}catch(H){return console.error("[Auth] Permission check failed:",H),!1}},organization:{create:async(Q)=>{return X.api.createOrganization({headers:J,body:Q})},update:async(Q)=>{return X.api.updateOrganization({headers:J,body:Q})},delete:async(Q)=>{await X.api.deleteOrganization({headers:J,body:{organizationId:Q}})},get:async(Q)=>{return X.api.getFullOrganization({headers:J,query:Q?{organizationId:Q}:void 0})},list:async(Q)=>{return X.api.listOrganizations({headers:J,query:Q?{userId:Q}:void 0})},addMember:async(Q)=>{return X.api.addMember({headers:J,body:Q})},removeMember:async(Q)=>{await X.api.removeMember({headers:J,body:Q})},listMembers:async(Q)=>{return X.api.listMembers({headers:J,query:Q?{organizationId:Q.organizationId,limit:Q.limit,offset:Q.offset}:void 0})},updateMemberRole:async(Q)=>{return X.api.updateMemberRole({headers:J,body:Q})}},apiKey:{create:async(Q)=>{return X.api.createApiKey({body:{...Q,userId:K}})},list:async()=>{return X.api.listApiKeys({headers:J})},update:async(Q)=>{return X.api.updateApiKey({body:{...Q,userId:K}})},delete:async(Q)=>{await X.api.deleteApiKey({headers:J,body:{keyId:Q}})}}}}async function nz8(Y,X,J){if(Vh1.includes(J))return;let G=await Y.selectFrom("organizationRole").select(["permission"]).where("organizationId","=",X).where("role","=",J).executeTakeFirst();if(!G?.permission)return;try{return JSON.parse(G.permission)}catch{console.error(`[Auth] Failed to parse permissions for role: ${J}`);return}}async function iz8(Y,X,J,G=dq6){let W=Y.headers.get("Authorization");try{let K=new Headers(Y.headers);K.set("X-MCP-Session-Auth","true");let Z=await G.measure("auth_get_mcp_session",()=>X.api.getMcpSession({headers:K}));if(Z){let Q=Z.userId,H=await G.measure("auth_query_membership",()=>J.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","=",Q).executeTakeFirst()),$=H?.role,V=H?{id:H.orgId,slug:H.orgSlug,name:H.orgName}:void 0,z;if(H&&$)z=await G.measure("auth_fetch_role_permissions",()=>nz8(J,H.organizationId,$));return{user:{id:Q,role:$},role:$,permissions:z,organization:V}}}catch(K){console.error("[Auth] OAuth session check failed:",K)}if(W?.startsWith("Bearer ")){let K=W.replace("Bearer ","").trim();try{let Z=await G.measure("auth_verify_mesh_jwt",()=>KX6(K));if(Z){let Q,H=Z.metadata?.organizationId;if(Z.sub&&H)Q=(await G.measure("auth_query_membership",()=>J.selectFrom("member").select(["member.role"]).where("member.userId","=",Z.sub).where("member.organizationId","=",H).executeTakeFirst()))?.role;let $,V=Z.metadata?.organizationId;if(V){let z=Z.metadata?.organizationName,U=Z.metadata?.organizationSlug;if(z||U)$={id:V,name:z,slug:U};else{let q=await G.measure("auth_query_org_for_mesh_jwt",()=>J.selectFrom("organization").select(["id","slug","name"]).where("id","=",V).executeTakeFirst());$=q?{id:q.id,slug:q.slug,name:q.name}:{id:V}}}return{user:{id:Z.sub,connectionId:Z.metadata?.connectionId,role:Q},role:Q,permissions:Z.permissions,organization:$}}}catch{}try{let Z=await G.measure("auth_verify_api_key",()=>X.api.verifyApiKey({body:{key:K}}));if(Z?.valid&&Z.key){let Q=Z.key.metadata?.organization,H=Z.key.permissions,$,V=Z.key.userId;if(V&&Q?.id)$=(await G.measure("auth_query_membership",()=>J.selectFrom("member").select(["member.role"]).where("member.userId","=",V).where("member.organizationId","=",Q.id).executeTakeFirst()))?.role;return{apiKeyId:Z.key.id,user:{id:Z.key.userId,role:$},role:$,permissions:H,organization:Q?{id:Q.id,slug:Q.slug,name:Q.name}:void 0}}}catch(Z){console.error("[Auth] API key check failed:",Z)}}try{let K=new Headers(Y.headers);K.delete("Authorization");let Z=await G.measure("auth_get_session",()=>X.api.getSession({headers:K}));if(Z){let Q,H;if(Z.session.activeOrganizationId){let $=await G.measure("auth_get_full_organization",()=>X.api.getFullOrganization({headers:K}).catch(()=>null));if($)Q={id:$.id,slug:$.slug,name:$.name},H=$.members?.find((z)=>z.userId===Z.user.id)?.role;else Q={id:Z.session.activeOrganizationId,slug:"",name:""}}return{user:{id:Z.user.id,email:Z.user.email,role:H},role:H,organization:Q}}}catch(K){let Z=K;console.error("[Auth] Session check failed:",JSON.stringify({message:Z.message,body:Z.body,stack:Z.stack},null,2))}return{user:void 0}}var lq6,SV={set:(Y)=>{lq6=Y},create:async(Y,X)=>{return await lq6(Y,X)}},dq6={measure:async(Y,X)=>{return await X()}},az8=["x-hub-signature-256"];async function cq6(Y){let X=new bM(Y.encryption.key),J=!!V6.CLICKHOUSE_URL,G=J?"clickhouse":"duckdb",W,K;if(J)W=new td(V6.CLICKHOUSE_URL),K=new td(V6.CLICKHOUSE_URL);else{let{engine:q}=await zg1({basePath:nV}),{engine:L}=await zg1({basePath:uD});W=q,K=L}let{resolve:Z}=await import("path"),Q=Z(nV),H=Z(uD),$=J?(q)=>"monitoring_logs":(q)=>`read_ndjson('${Q}/${q}/**/*.ndjson', auto_detect=true)`,V=J?(q)=>"monitoring_metrics":(q)=>`read_ndjson('${H}/${q}/**/*.ndjson', auto_detect=true)`,z=new Jc(Y.db),U={connections:new ix(Y.db,X),organizationSettings:new qg1(Y.db),monitoring:new _h1(W,$,K,V,G),monitoringDashboards:new Ug1(Y.db),virtualMcps:new Rh1(Y.db),users:new Bg1(Y.db),tags:new Ng1(Y.db),projects:new ax(Y.db),projectConnections:new Lg1(Y.db),projectPluginConfigs:new Og1(Y.db),aiProviderKeys:new Eg1(Y.db,X),oauthPkceStates:new Tg1(Y.db),automations:P71(Y.db)};return async(q,L)=>{let O=L?.timings??dq6,M=zj(),P=q?.headers.get("x-caller-id")??void 0,R=q?await iz8(q,Y.auth,Y.db,O):{user:void 0},I=Cg1({auth:Y.auth,headers:q?.headers??new Headers,role:R.role,permissions:R.permissions,userId:R.user?.id}),T={user:R.user};if(R.apiKeyId)T.apiKey={id:R.apiKeyId,name:"",userId:""};let E=R.organization,j=q?V6.BASE_URL??`${new URL(q.url).origin}`:UQ(),v=new n3(Y.auth,T.user?.id,void 0,I,R.role,"self"),k={...U,threads:new Xc(z,E?.id)},g=new Rg1(k.aiProviderKeys,Y.modelListCache),f={timings:O,auth:T,connectionId:P,organization:E,storage:k,vault:X,authInstance:Y.auth,boundAuth:I,access:v,db:Y.db,tracer:Y.observability.tracer,meter:Y.observability.meter,baseUrl:j,metadata:{requestId:crypto.randomUUID(),timestamp:new Date,wellKnownForwardableHeaders:Object.fromEntries(az8.map((y)=>[y,q?.headers.get(y)??null]).filter(([y,a])=>a!==null)),userAgent:q?.headers.get("x-mesh-client")||q?.headers.get("User-Agent")||void 0,ipAddress:(q?.headers.get("CF-Connecting-IP")||q?.headers.get("X-Forwarded-For"))??void 0,properties:cz8(q?.headers.get("x-mesh-properties"))},eventBus:Y.eventBus,aiProviders:g,createMCPProxy:async(y)=>{return await _q6(y,f)},getOrCreateClient:M};return f}}Uj();TC();class pq6{db;constructor(Y){this.db=Y}mapRowToSubscription(Y){return{id:Y.id,organizationId:Y.organization_id,connectionId:Y.connection_id,publisher:Y.publisher,eventType:Y.event_type,filter:Y.filter,enabled:Boolean(Y.enabled),createdAt:Y.created_at,updatedAt:Y.updated_at}}async publishEvent(Y){let X=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:X,updated_at:X}).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:X,updatedAt:X}}async subscribe(Y){let X=this.db.selectFrom("event_subscriptions").selectAll().where("organization_id","=",Y.organizationId).where("connection_id","=",Y.connectionId).where("event_type","=",Y.eventType);if(Y.publisher)X=X.where("publisher","=",Y.publisher);else X=X.where("publisher","is",null);if(Y.filter)X=X.where("filter","=",Y.filter);else X=X.where("filter","is",null);let J=await X.executeTakeFirst();if(J)return this.mapRowToSubscription(J);let G=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:G,updated_at:G}).execute(),{id:Y.id,organizationId:Y.organizationId,connectionId:Y.connectionId,publisher:Y.publisher??null,eventType:Y.eventType,filter:Y.filter??null,enabled:1,createdAt:G,updatedAt:G}}async unsubscribe(Y,X){return{success:((await this.db.deleteFrom("event_subscriptions").where("id","=",Y).where("organization_id","=",X).executeTakeFirst()).numDeletedRows??0n)>0n}}async listSubscriptions(Y,X){let J=this.db.selectFrom("event_subscriptions").selectAll().where("organization_id","=",Y);if(X)J=J.where("connection_id","=",X);return(await J.execute()).map((W)=>this.mapRowToSubscription(W))}async getSubscription(Y,X){let J=await this.db.selectFrom("event_subscriptions").selectAll().where("id","=",Y).where("organization_id","=",X).executeTakeFirst();if(!J)return null;return this.mapRowToSubscription(J)}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((J)=>J.or([J("publisher","is",null),J("publisher","=",Y.source)])).execute()).map((J)=>this.mapRowToSubscription(J))}async createDeliveries(Y,X,J){if(X.length===0)return;let G=new Date().toISOString(),W=J??null,K=X.map((Z)=>({id:crypto.randomUUID(),event_id:Y,subscription_id:Z,status:"pending",attempts:0,last_error:null,delivered_at:null,next_retry_at:W,created_at:G}));await this.db.insertInto("event_deliveries").values(K).execute()}async claimPendingDeliveries(Y){let X=new Date().toISOString(),G=(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((Z)=>Z.or([Z("d.next_retry_at","is",null),Z("d.next_retry_at","<=",X)])).orderBy("d.created_at","asc").limit(Y)).where("status","=","pending").returning(["id"]).execute()).map((K)=>K.id);if(G.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",G).where("d.status","=","processing").execute()).map((K)=>({delivery:{id:K.delivery_id,eventId:K.event_id,subscriptionId:K.subscription_id,status:K.delivery_status,attempts:K.delivery_attempts,lastError:K.delivery_last_error,deliveredAt:K.delivered_at,nextRetryAt:K.delivery_next_retry_at,createdAt:K.delivery_created_at},event:{id:K.event_id,organizationId:K.organization_id,type:K.type,source:K.source,specversion:K.specversion,subject:K.subject,time:K.time,datacontenttype:K.datacontenttype,dataschema:K.dataschema,data:K.data?JSON.parse(K.data):null,cron:K.cron,status:K.event_status,attempts:K.event_attempts,lastError:K.event_last_error,nextRetryAt:K.next_retry_at,createdAt:K.event_created_at,updatedAt:K.event_updated_at},subscription:{id:K.subscription_id,organizationId:K.organization_id,connectionId:K.connection_id,publisher:K.publisher,eventType:K.event_type,filter:K.filter,enabled:Boolean(K.enabled),createdAt:K.subscription_created_at,updatedAt:K.subscription_updated_at}}))}async markDeliveriesDelivered(Y){if(Y.length===0)return;let X=new Date().toISOString();await this.db.updateTable("event_deliveries").set({status:"delivered",delivered_at:X}).where("id","in",Y).execute()}async markDeliveriesPermanentlyFailed(Y,X){if(Y.length===0)return;await this.db.updateTable("event_deliveries").set({status:"failed",last_error:X,next_retry_at:null}).where("id","in",Y).execute()}async markDeliveriesFailed(Y,X,J=20,G=1000,W=3600000){if(Y.length===0)return;for(let K of Y){let Z=await this.db.selectFrom("event_deliveries").select(["attempts"]).where("id","=",K).executeTakeFirst();if(!Z)continue;let Q=Z.attempts+1;if(Q>=J)await this.db.updateTable("event_deliveries").set({attempts:Q,last_error:X,status:"failed",next_retry_at:null}).where("id","=",K).execute();else{let H=Math.min(G*Math.pow(2,Q-1),W),$=new Date(Date.now()+H).toISOString();await this.db.updateTable("event_deliveries").set({attempts:Q,last_error:X,status:"pending",next_retry_at:$}).where("id","=",K).execute()}}}async updateEventStatus(Y){let X=await this.db.selectFrom("event_deliveries").select(["status"]).where("event_id","=",Y).execute();if(X.length===0)return;let J=X.every((K)=>K.status==="delivered"),G=X.some((K)=>K.status==="failed"),W=X.some((K)=>K.status==="pending"||K.status==="processing");if(J)await this.db.updateTable("events").set({status:"delivered",updated_at:new Date().toISOString()}).where("id","=",Y).execute();else if(G&&!W)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,X){let J=await this.db.selectFrom("events").selectAll().where("id","=",Y).where("organization_id","=",X).executeTakeFirst();if(!J)return null;return{id:J.id,organizationId:J.organization_id,type:J.type,source:J.source,specversion:J.specversion,subject:J.subject,time:J.time,datacontenttype:J.datacontenttype,dataschema:J.dataschema,data:J.data?JSON.parse(J.data):null,cron:J.cron,status:J.status,attempts:J.attempts,lastError:J.last_error,nextRetryAt:J.next_retry_at,createdAt:J.created_at,updatedAt:J.updated_at}}async findActiveCronEvent(Y,X,J,G){let W=await this.db.selectFrom("events").selectAll().where("organization_id","=",Y).where("type","=",X).where("source","=",J).where("cron","=",G).where("status","in",["pending","processing","delivered"]).orderBy("created_at","desc").executeTakeFirst();if(!W)return null;return{id:W.id,organizationId:W.organization_id,type:W.type,source:W.source,specversion:W.specversion,subject:W.subject,time:W.time,datacontenttype:W.datacontenttype,dataschema:W.dataschema,data:W.data?JSON.parse(W.data):null,cron:W.cron,status:W.status,attempts:W.attempts,lastError:W.last_error,nextRetryAt:W.next_retry_at,createdAt:W.created_at,updatedAt:W.updated_at}}async findOrphanedCronEvents(){return(await this.db.selectFrom("events").selectAll().where("cron","is not",null).where("status","=","delivered").where((X)=>X.not(X.exists(X.selectFrom("event_deliveries").select("id").whereRef("event_deliveries.event_id","=","events.id").where("event_deliveries.status","in",["pending","processing"])))).execute()).map((X)=>({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 cancelEvent(Y,X,J){let G=await this.db.updateTable("events").set({status:"failed",last_error:"Cancelled by publisher",updated_at:new Date().toISOString()}).where("id","=",Y).where("organization_id","=",X).where("source","=",J).where("status","in",["pending","processing"]).executeTakeFirst();if((G.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:(G.numUpdatedRows??0n)>0n}}async scheduleRetryWithoutAttemptIncrement(Y,X){if(Y.length===0)return;let J=new Date(Date.now()+X).toISOString();await this.db.updateTable("event_deliveries").set({status:"pending",next_retry_at:J}).where("id","in",Y).execute()}async ackDelivery(Y,X,J){if(!await this.db.selectFrom("events").select(["id"]).where("id","=",Y).where("organization_id","=",X).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((Z)=>Z.exists(Z.selectFrom("event_subscriptions").select("id").whereRef("event_subscriptions.id","=","event_deliveries.subscription_id").where("event_subscriptions.connection_id","=",J).where("event_subscriptions.organization_id","=",X))).executeTakeFirst()).numUpdatedRows??0n)>0n;if(K)await this.updateEventStatus(Y);return{success:K}}async syncSubscriptions(Y){let{organizationId:X,connectionId:J,subscriptions:G}=Y,W=(P,R)=>{return`${P}::${R??""}`},K=await this.listSubscriptions(X,J),Z=new Map;for(let P of K)Z.set(W(P.eventType,P.publisher),P);let Q=new Map;for(let P of G)Q.set(W(P.eventType,P.publisher),P);let H=new Date().toISOString(),$=[],V=[],z=[],U=0;for(let[P,R]of Q){let I=Z.get(P);if(!I)$.push({id:crypto.randomUUID(),organization_id:X,connection_id:J,event_type:R.eventType,publisher:R.publisher??null,filter:R.filter??null,enabled:1,created_at:H,updated_at:H});else{let T=I.filter??null,E=R.filter??null;if(T!==E)V.push({id:I.id,filter:E});else U++}}for(let[P,R]of Z)if(!Q.has(P))z.push(R.id);if($.length>0)await this.db.insertInto("event_subscriptions").values($).execute();if(V.length>0)await Promise.all(V.map((P)=>this.db.updateTable("event_subscriptions").set({filter:P.filter,updated_at:H}).where("id","=",P.id).execute()));if(z.length>0)await this.db.deleteFrom("event_subscriptions").where("id","in",z).execute();let q=$.length,L=V.length,O=z.length,M=await this.listSubscriptions(X,J);return{created:q,updated:L,deleted:O,unchanged:U,subscriptions:M}}}function nq6(Y){return new pq6(Y)}im();class iq6{listeners=new Map;totalCount=0;strategy=null;started=!1;async start(Y){if(this.started){if(!Y)return;await this.stop()}this.strategy=Y,await this.strategy.start((X,J)=>this.localEmit(X,J)),this.started=!0}async stop(){if(!this.started||!this.strategy)return;await this.strategy.stop(),this.started=!1}add(Y){if(this.totalCount>=500)return console.warn("[SSEHub] Total connection limit reached (500)"),null;let X=this.listeners.get(Y.organizationId);if(!X)X=new Map,this.listeners.set(Y.organizationId,X);if(X.size>=50)return console.warn(`[SSEHub] Per-org connection limit reached for ${Y.organizationId} (50)`),null;return X.set(Y.id,Y),this.totalCount++,Y.id}remove(Y,X){let J=this.listeners.get(Y);if(!J)return;if(J.delete(X)){if(this.totalCount--,J.size===0)this.listeners.delete(Y)}}emit(Y,X){if(this.strategy)this.strategy.broadcast(Y,X);else this.localEmit(Y,X)}countForOrg(Y){return this.listeners.get(Y)?.size??0}get count(){return this.totalCount}localEmit(Y,X){let J=this.listeners.get(Y);if(!J||J.size===0)return;for(let G of J.values()){if(G.typePatterns&&!rz8(X.type,G.typePatterns))continue;try{G.push(X)}catch{this.remove(Y,G.id)}}}}function rz8(Y,X){for(let J of X){if(J===Y)return!0;if(J.endsWith(".*")){let G=J.slice(0,-1);if(Y.startsWith(G))return!0}}return!1}var $$=new iq6;function aq6(Y){return{id:Y.id,type:Y.type,source:Y.source,subject:Y.subject,data:Y.data?oz8(Y.data):void 0,time:Y.time}}function oz8(Y){if(typeof Y==="string")try{return JSON.parse(Y)}catch{return Y}return Y}im();var sz8=new Set([401]),tz8=["unauthorized","invalid_token","invalid api key","api key required","api-key required"];function rq6(Y){if(typeof Y==="object"&&Y!==null){let G=Y,W=G.status??G.code;if(typeof W==="number"&&sz8.has(W))return!0}let X=Y instanceof Error?Y.message:typeof Y==="string"?Y:"";if(!X)return!1;let J=X.toLowerCase();if(/\b401\b/.test(J))return!0;return tz8.some((G)=>J.includes(G))}class Gc extends Error{constructor(Y){super(Y);this.name="PermanentDeliveryError"}}var _71={pollIntervalMs:5000,batchSize:100,maxAttempts:20,retryDelayMs:1000,maxDelayMs:3600000};X51();q51();Wu();function ez8(Y){return Y.endsWith("_self")}function YU8(Y){return Y.slice(0,-5)}function oq6(){return async(Y,X)=>{try{if(ez8(Y)&&i_1()){let Z=YU8(Y),Q=await SV.create();if(await L56(X,{organizationId:Z,connectionId:Y,publish:async(V,z,U,q)=>{await Q.eventBus.publish(Z,Y,{type:V,subject:z,data:U,deliverAt:q?.deliverAt})},createMCPProxy:async(V)=>{let z={...Q,getOrCreateClient:zj()},U=await Ag1(V,z);return{callTool:async(q,L,O)=>{let M=await U.callTool(q,L,O);return{content:M.content,structuredContent:M.structuredContent,isError:M.isError}},close:()=>U.close()}}}))return{success:!0}}let J=await SV.create(),G=await Ag1(Y,J),K=await SI1.forClient(Yc(G)).ON_EVENTS({events:X});return{success:K.success,error:K.error,retryAfter:K.retryAfter,results:K.results}}catch(J){let G=J instanceof Error?J.message:String(J);if(console.error(`[EventBus] Failed to notify connection ${Y}:`,G),rq6(J))throw new Gc(G);return{success:!1,error:G}}}}function sq6(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 XU8(Y){let X=new Map;for(let G of Y){let W=G.subscription.connectionId,K=X.get(W);if(K){if(K.deliveryIds.push(G.delivery.id),!K.seenEventIds.has(G.event.id))K.seenEventIds.add(G.event.id),K.events.push(sq6(G.event))}else X.set(W,{connectionId:G.subscription.connectionId,deliveryIds:[G.delivery.id],events:[sq6(G.event)],seenEventIds:new Set([G.event.id])})}let J=new Map;for(let[G,W]of X)J.set(G,{connectionId:W.connectionId,deliveryIds:W.deliveryIds,events:W.events});return J}class Ig1{storage;notifySubscriber;running=!1;processing=!1;pendingNotify=!1;config;eventTriggerEngine;constructor(Y,X,J){this.storage=Y;this.notifySubscriber=J??oq6(),this.config={..._71,...X}}setEventTriggerEngine(Y){this.eventTriggerEngine=Y}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`);let X=await this.storage.findOrphanedCronEvents();for(let J of X)await this.scheduleNextCronDelivery(J),console.log(`[EventBus] Recovered orphaned cron event ${J.id} (${J.type}, cron: ${J.cron})`);if(X.length>0)console.log(`[EventBus] Recovered ${X.length} orphaned cron event(s)`);this.running=!0}stop(){this.running=!1}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 X=XU8(Y),J=await Promise.allSettled(Array.from(X.entries()).map(async([K,Z])=>{let Q=new Set;try{let $=await this.notifySubscriber(Z.connectionId,Z.events);if($.results&&Object.keys($.results).length>0)await this.processPerEventResults(Z,$);else if($.success)await this.storage.markDeliveriesDelivered(Z.deliveryIds);else if($.retryAfter&&$.retryAfter>0)await this.storage.scheduleRetryWithoutAttemptIncrement(Z.deliveryIds,$.retryAfter);else await this.storage.markDeliveriesFailed(Z.deliveryIds,$.error||"Subscriber returned success=false",this.config.maxAttempts,this.config.retryDelayMs,this.config.maxDelayMs)}catch($){if($ instanceof Gc){await this.storage.markDeliveriesPermanentlyFailed(Z.deliveryIds,$.message);for(let V of Z.events)Q.add(V.id)}else{let V=$ instanceof Error?$.message:String($);console.error(`[EventBus] Failed to notify subscription ${K}:`,V),await this.storage.markDeliveriesFailed(Z.deliveryIds,V,this.config.maxAttempts,this.config.retryDelayMs,this.config.maxDelayMs)}}let H=new Set;for(let $ of Y)if(Z.deliveryIds.includes($.delivery.id))H.add($.event.id);return{eventIds:H,permanentlyFailed:Q}})),G=new Set,W=new Set;for(let K of J)if(K.status==="fulfilled"){for(let Z of K.value.eventIds)G.add(Z);for(let Z of K.value.permanentlyFailed)W.add(Z)}for(let K of G)try{await this.storage.updateEventStatus(K);let Z=Y.find((Q)=>Q.event.id===K)?.event;if(Z?.cron&&!W.has(K))await this.scheduleNextCronDelivery(Z)}catch(Z){console.error(`[EventBus] Failed to update event status ${K}:`,Z)}if(this.eventTriggerEngine){let K=new Set,Z=[];for(let Q of Y){if(Q.delivery.attempts>0)continue;if(!K.has(Q.event.id))K.add(Q.event.id),Z.push({source:Q.event.source,type:Q.event.type,data:Q.event.data,organizationId:Q.event.organizationId})}if(Z.length>0)this.eventTriggerEngine.notifyEvents(Z)}}async processPerEventResults(Y,X){let J=[],G=new Map,W=[],K=new Map;for(let Z=0;Z<Y.events.length;Z++){let Q=Y.events?.[Z];if(!Q)continue;let H=Y.deliveryIds?.[Z];if(!H)continue;K.set(Q.id,H)}for(let Z of Y.events){let Q=K.get(Z.id);if(!Q)continue;let H=X.results?.[Z.id];if(H)if(H.success)J.push(Q);else if(H.retryAfter&&H.retryAfter>0){let $=G.get(H.retryAfter)||[];$.push(Q),G.set(H.retryAfter,$)}else W.push({deliveryId:Q,error:H.error||"Event processing failed"});else if(X.success)J.push(Q);else if(X.retryAfter&&X.retryAfter>0){let $=G.get(X.retryAfter)||[];$.push(Q),G.set(X.retryAfter,$)}else W.push({deliveryId:Q,error:X.error||"Batch processing failed"})}if(J.length>0)await this.storage.markDeliveriesDelivered(J);for(let[Z,Q]of G)await this.storage.scheduleRetryWithoutAttemptIncrement(Q,Z);if(W.length>0){let Z=new Map;for(let{deliveryId:Q,error:H}of W){let $=Z.get(H)||[];$.push(Q),Z.set(H,$)}for(let[Q,H]of Z)await this.storage.markDeliveriesFailed(H,Q,this.config.maxAttempts,this.config.retryDelayMs,this.config.maxDelayMs)}}async scheduleNextCronDelivery(Y){if(!Y.cron)return;try{let J=new mN(Y.cron,{timezone:"UTC"}).nextRun();if(!J){console.log(`[EventBus] Cron expression for event ${Y.id} has no more runs`);return}let G=J.toISOString(),W=await this.storage.getMatchingSubscriptions(Y);if(W.length===0){console.log(`[EventBus] No subscriptions for cron event ${Y.id}, skipping next delivery`);return}await this.storage.createDeliveries(Y.id,W.map((K)=>K.id),G),console.log(`[EventBus] Scheduled next cron delivery for event ${Y.id} at ${G}`)}catch(X){console.error(`[EventBus] Failed to schedule next cron delivery for event ${Y.id}:`,X)}}}class jg1{storage;worker;notifyStrategy;running=!1;constructor(Y){this.storage=Y.storage,this.notifyStrategy=Y.notifyStrategy,this.worker=new Ig1(this.storage,Y.config)}setEventTriggerEngine(Y){this.worker.setEventTriggerEngine(Y)}async publish(Y,X,J){if(J.deliverAt&&J.cron)throw Error("Cannot set both deliverAt and cron. Use one or the other.");let G;if(J.cron){try{let V=new mN(J.cron,{timezone:"UTC"}).nextRun();if(!V)throw Error("Cron expression does not produce a next run time");G=V.toISOString()}catch($){throw Error(`Invalid cron expression: ${$ instanceof Error?$.message:String($)}`)}let H=await this.storage.findActiveCronEvent(Y,J.type,X,J.cron);if(H)return H}let W=crypto.randomUUID(),K=new Date().toISOString(),Z=await this.storage.publishEvent({id:W,organizationId:Y,type:J.type,source:X,subject:J.subject,time:K,data:J.data,cron:J.cron});$$.emit(Y,aq6(Z));let Q=await this.storage.getMatchingSubscriptions(Z);if(Q.length>0){let H=J.deliverAt??G;if(await this.storage.createDeliveries(W,Q.map(($)=>$.id),H),this.notifyStrategy&&!H)await this.notifyStrategy.notify(W).catch(($)=>{console.warn("[EventBus] Notify failed (non-critical):",$)})}return Z}async subscribe(Y,X){return this.storage.subscribe({id:crypto.randomUUID(),organizationId:Y,connectionId:X.connectionId,publisher:X.publisher,eventType:X.eventType,filter:X.filter})}async unsubscribe(Y,X){return this.storage.unsubscribe(X,Y)}async listSubscriptions(Y,X){return this.storage.listSubscriptions(Y,X)}async getSubscription(Y,X){return this.storage.getSubscription(X,Y)}async getEvent(Y,X){return this.storage.getEvent(X,Y)}async cancelEvent(Y,X,J){return this.storage.cancelEvent(X,Y,J)}async ackEvent(Y,X,J){return this.storage.ackDelivery(X,Y,J)}async syncSubscriptions(Y,X){return this.storage.syncSubscriptions({organizationId:Y,...X})}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)}}isRunning(){return this.running}}class Sg1{options;sub=null;onNotify=null;encoder=new TextEncoder;constructor(Y){this.options=Y}async start(Y){if(this.sub)return;this.onNotify=Y,this.sub=this.options.getConnection().subscribe("mesh.events.notify"),(async()=>{for await(let X of this.sub)this.onNotify?.()})().catch((X)=>{console.error("[NatsNotify] Subscription error:",X)})}async stop(){this.sub?.unsubscribe(),this.sub=null,this.onNotify=null}async notify(Y){try{this.options.getConnection().publish("mesh.events.notify",this.encoder.encode(Y))}catch(X){console.warn("[NatsNotify] Publish failed (non-critical):",X)}}}class _g1{options;sub=null;localEmit=null;originId=crypto.randomUUID();encoder=new TextEncoder;constructor(Y){this.options=Y}async start(Y){if(this.localEmit=Y,this.sub)return;this.sub=this.options.getConnection().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)})}broadcast(Y,X){this.localEmit?.(Y,X);let J={originId:this.originId,organizationId:Y,event:X};try{this.options.getConnection().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}}function tq6(...Y){return{async start(X){await Promise.all(Y.map((J)=>J.start(X)))},async stop(){await Promise.all(Y.map((X)=>X.stop().catch((J)=>{console.error("[NotifyStrategy] Error stopping strategy:",J)})))},async notify(X){await Promise.all(Y.map((J)=>J.notify(X).catch((G)=>{console.warn("[NotifyStrategy] Notify failed (non-critical):",G)})))}}}class kg1{intervalMs;timer=null;onNotify=null;constructor(Y){this.intervalMs=Y}async start(Y){if(this.timer)return;this.onNotify=Y,this.scheduleNext()}async stop(){if(this.timer)clearTimeout(this.timer),this.timer=null;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)}}function eq6(Y,X,J){let G=nq6(Y.db),W=J?.pollIntervalMs??_71.pollIntervalMs,K=tq6(new kg1(W),new Sg1({getConnection:()=>X.getConnection()})),Z=new _g1({getConnection:()=>X.getConnection()});return $$.start(Z).catch((Q)=>{console.error("[SSEHub] Failed to start broadcast strategy:",Q)}),new jg1({storage:G,config:J,notifyStrategy:K})}fq();nW();gL();var JU8={br:".br",zstd:".zst",gzip:".gz"},_gY=Object.keys(JU8);uL();wB1();var vg1="x-hono-disable-ssg",ogY=(()=>{try{return new Response("SSG is disabled",{status:404,headers:{[vg1]:"true"}})}catch{return null}})();Ce();var{write:_uY}=Bun;var ZU8=class{#Y;constructor(Y){this.#Y=Y,this.raw=Y.raw,this.url=Y.url?new URL(Y.url):null,this.protocol=Y.protocol??null}send(Y,X){this.#Y.send(Y,X??{})}raw;binaryType="arraybuffer";get readyState(){return this.#Y.readyState}url;protocol;close(Y,X){this.#Y.close(Y,X)}};var YL6=(Y)=>{return(...X)=>{if(typeof X[0]==="function"){let[J,G]=X;return async function(K,Z){let Q=await J(K),H=await Y(K,Q,G);if(H)return H;await Z()}}else{let[J,G,W]=X;return(async()=>{let K=await Y(J,G,W);if(!K)throw Error("Failed to upgrade WebSocket");return K})()}}};var Wc=(Y)=>("server"in Y.env)?Y.env.server:Y.env;var QU8=YL6((Y,X)=>{let J=Wc(Y);if(!J)throw TypeError("env has to include the 2nd argument of fetch.");if(J.upgrade(Y.req.raw,{data:{events:X,url:new URL(Y.req.url),protocol:Y.req.url}}))return new Response(null);return});var fg1=(Y)=>{let X=Wc(Y);if(!X)throw TypeError("env has to include the 2nd argument of fetch.");if(typeof X.requestIP!=="function")throw TypeError("server.requestIP is not a function.");let J=X.requestIP(Y.req.raw);if(!J)return{remote:{}};return{remote:{address:J.address,addressType:J.family==="IPv6"||J.family==="IPv4"?J.family:void 0,port:J.port}}};c5();hA();var XL6={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"}};oS();var bg1=new xY;bg1.get("/config",async(Y)=>{try{let X=Object.keys($8.socialProviders??{}),J=X.length>0,G=X.map((Z)=>({name:Z,icon:XL6[Z].icon})),W=V6.NODE_ENV!=="production"||V6.UNSAFE_ALLOW_STDIO_TRANSPORT,K={emailAndPassword:{enabled:$8.emailAndPassword?.enabled??!1},magicLink:{enabled:$8.magicLinkConfig?.enabled??!1},emailOtp:{enabled:$8.emailOtpConfig?.enabled??!1},resetPassword:{enabled:PJ1},socialProviders:{enabled:J,providers:G},sso:$8.ssoConfig?{enabled:!0,providerId:$8.ssoConfig.providerId}:{enabled:!1},stdioEnabled:W,localMode:hP()};return Y.json({success:!0,config:K})}catch(X){let J=X instanceof Error?X.message:"Failed to load auth config";return Y.json({success:!1,error:J},500)}});bg1.post("/local-session",async(Y)=>{if(!hP())return Y.json({success:!1,error:"Local mode is not active"},403);let X;try{X=fg1(Y).remote.address}catch{}if(!(X==="127.0.0.1"||X==="::1"||X==="::ffff:127.0.0.1"))return Y.json({success:!1,error:"Forbidden"},403);try{let{waitForSeed:G}=await Promise.resolve().then(() => (oS(),f71));await G();let{auth:W}=await Promise.resolve().then(() => (hA(),l$6)),K=await yg1();if(!K)return Y.json({success:!1,error:"Local admin user not found"},500);let Z=await v71();return await W.api.signInEmail({body:{email:K.email,password:Z},asResponse:!0})}catch(G){return console.error("Failed to create local session:",G),Y.json({success:!1,error:G instanceof Error?G.message:"Failed to create local session"},500)}});var WL6=bg1;pK();nW();u2();pK();function ZL6(Y){let X=Y.filter((G)=>G.role==="system"),J=Y.find((G)=>G.role!=="system");return{systemMessages:X,requestMessage:J}}function DU8(Y){let X=!1,J=Y.map((G)=>{if(G.role!=="assistant")return G;if(!G.parts.some((K)=>("state"in K)&&K.state==="approval-requested"))return G;return X=!0,{...G,parts:G.parts.map((K)=>{if(!("state"in K)||K.state!=="approval-requested"||!("approval"in K)||!K.approval)return K;return{...K,state:"output-denied",approval:{...K.approval,approved:!1,reason:"User sent a new message without approving this tool call."}}})}});return X?J:Y}function wU8(Y){let[X,J]=Y.reduce((G,W)=>{if(W.role==="system")G[0].push(W);else G[1].push(W);return G},[[],[]]);return{systemMessages:X,messages:J}}async function MU8(Y,X){return await Y.loadHistory(X)}function AU8(Y,X){let J=Y.filter((K)=>K.parts&&K.parts.length>0),G=J.findIndex((K)=>K.id===X.id);return G>=0?[...J.slice(0,G),X]:[...J,X]}async function QL6(Y,X,J,G){let W=await MU8(Y,G),K=AU8(W,X);return[...J,...K]}async function KL6(Y,X){let J=await T06({messages:Y}),G=DU8(J),W=await E06(G,{tools:X.tools,ignoreIncompleteToolCalls:!0}),{systemMessages:K,messages:Z}=wU8(W),Q=X.models.thinking.capabilities?.reasoning!==!1,H=C06({messages:Z,reasoning:Q?"all":"none",emptyMessages:"remove",toolCalls:"none"});return{systemMessages:K,messages:H,originalMessages:J}}TX();pK();u2();pK();a1();W51();function HL6(Y){let{toolOutputMap:X}=Y;return P7({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:w0(F.object({tool_call_id:F.string(),code:F.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:J,code:G})=>{if(!X.has(J))throw Error(`Tool output not found for tool call id: ${J}`);let W=X.get(J),K=await Jk1({input:W,code:G,timeoutMs:5000}),Z=hg1({return:K.returnValue});if(Z>4000)throw Error(`Tool call ${J} output is too long to display (${Z} tokens), reduce or truncate the output`);return{result:K.returnValue,error:K.error,consoleLogs:K.consoleLogs}}})}var PU8=4,EU8=/[\u3000-\u303f\u3040-\u309f\u30a0-\u30ff\u4e00-\u9fff\u3400-\u4dbf\uf900-\ufaff]/g;function TU8(Y){if(!Y)return 0;let X=Y.match(EU8)?.length??0,J=Y.length-X;return Math.ceil(J/PU8)+Math.ceil(X*1.5)}function hg1(Y){let X=typeof Y==="string"?Y:JSON.stringify(Y);return TU8(X)}function y71(Y,X){if(Y==="yolo")return!1;if(Y==="none")return!0;return X!==!0}function b71(Y){let X=Y.get("meshContext").organization;if(!X)throw Error("Organization context is required");if((X.slug??X.id)!==Y.req.param("org"))throw Error("Organization mismatch");return X}async function Zc(Y,X,J,G="none",W){let K=!W?.disableOutputTruncation,Q=(await Y.listTools()).tools.map((H)=>{let{name:$,title:V,description:z,inputSchema:U,annotations:q,_meta:L}=H;return[$,P7({title:V??$,description:z,inputSchema:cK(U),outputSchema:void 0,needsApproval:y71(G,q?.readOnlyHint),execute:async(O,M)=>{let P=performance.now();try{return await Y.callTool({name:H.name,arguments:O},d$,{signal:M.abortSignal,timeout:jq6})}finally{if(J){let R=performance.now()-P;J.write({type:"data-tool-metadata",id:M.toolCallId,data:{_meta:L,annotations:q,latencyMs:R}})}}},toModelOutput:async({output:O,toolCallId:M})=>{if(K){let R=hg1(O.structuredContent??O.content);if(R>4000)return X.set(M,JSON.stringify(O.structuredContent??O.content)),{type:"text",value:`Tool call ${M} output is too long to display (${R} tokens), use the read_tool_output tool`}}if(O.isError)return{type:"error-text",value:O.content.map((I)=>I.type==="text"?I.text:null).filter(Boolean).join(`
|
|
1572
|
+
Example output: Available Tools Overview`;function S71(Y){return typeof Y==="string"?Y:Y.toISOString()}class Xc{inner;organizationId;constructor(Y,X){this.inner=Y;this.organizationId=X}requireOrg(){if(!this.organizationId)throw Error("OrgScopedThreadStorage: thread operations require an authenticated organization");return this.organizationId}create(Y){let X=this.requireOrg();return this.inner.create({...Y,organization_id:X})}get(Y){return this.inner.get(Y,this.requireOrg())}update(Y,X){return this.inner.update(Y,this.requireOrg(),X)}forceFailIfInProgress(Y){return this.inner.forceFailIfInProgress(Y,this.requireOrg())}delete(Y){return this.inner.delete(Y,this.requireOrg())}list(Y,X){return this.inner.list(this.requireOrg(),Y,X)}listByTriggerIds(Y,X){return this.inner.listByTriggerIds(this.requireOrg(),Y,X)}saveMessages(Y){return this.inner.saveMessages(Y,this.requireOrg())}listMessages(Y,X){return this.inner.listMessages(Y,this.requireOrg(),X)}}class Jc{db;constructor(Y){this.db=Y}async create(Y){let X=Y.id??c8("thrd"),J=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=j71;let G={id:X,organization_id:Y.organization_id,title:Y.title,description:Y.description??null,status:Y.status??"completed",trigger_id:Y.trigger_id??null,created_at:J,updated_at:J,created_by:Y.created_by,updated_by:Y.updated_by??null},W=await this.db.insertInto("threads").values(G).returningAll().executeTakeFirstOrThrow();return this.threadFromDbRow(W)}async get(Y,X){let J=await this.db.selectFrom("threads").selectAll().where("id","=",Y).where("organization_id","=",X).executeTakeFirst();return J?this.threadFromDbRow(J):null}async update(Y,X,J){let W={updated_at:new Date().toISOString()};if(J.title!==void 0)W.title=J.title;if(J.description!==void 0)W.description=J.description;if(J.updated_by!==void 0)W.updated_by=J.updated_by;if(J.hidden!==void 0)W.hidden=J.hidden;if(J.status!==void 0)W.status=J.status;await this.db.updateTable("threads").set(W).where("id","=",Y).where("organization_id","=",X).execute();let K=await this.get(Y,X);if(!K)throw Error("Thread not found after update");return K}async forceFailIfInProgress(Y,X){let J=new Date().toISOString();return((await this.db.updateTable("threads").set({status:"failed",updated_at:J}).where("id","=",Y).where("organization_id","=",X).where("status","=","in_progress").executeTakeFirst()).numUpdatedRows??BigInt(0))>BigInt(0)}async delete(Y,X){await this.db.deleteFrom("threads").where("id","=",Y).where("organization_id","=",X).execute()}async list(Y,X,J){let G=this.db.selectFrom("threads").selectAll().where("organization_id","=",Y).where("hidden","=",!1).orderBy("updated_at","desc");if(X)G=G.where("created_by","=",X);let W=this.db.selectFrom("threads").select((Q)=>Q.fn.count("id").as("count")).where("organization_id","=",Y).where("hidden","=",!1);if(X)W=W.where("created_by","=",X);if(J?.limit)G=G.limit(J.limit);if(J?.offset)G=G.offset(J.offset);let[K,Z]=await Promise.all([G.execute(),W.executeTakeFirst()]);return{threads:K.map((Q)=>this.threadFromDbRow(Q)),total:Number(Z?.count||0)}}async listByTriggerIds(Y,X,J){if(X.length===0)return{threads:[],total:0};let G=this.db.selectFrom("threads").selectAll().where("organization_id","=",Y).where("hidden","=",!1).where("trigger_id","in",X).orderBy("updated_at","desc"),W=this.db.selectFrom("threads").select((Q)=>Q.fn.count("id").as("count")).where("organization_id","=",Y).where("hidden","=",!1).where("trigger_id","in",X);if(J?.limit)G=G.limit(J.limit);if(J?.offset)G=G.offset(J.offset);let[K,Z]=await Promise.all([G.execute(),W.executeTakeFirst()]);return{threads:K.map((Q)=>this.threadFromDbRow(Q)),total:Number(Z?.count||0)}}async saveMessages(Y,X){let J=new Date().toISOString(),G=Y[0]?.thread_id;if(!G)throw Error("thread_id is required when creating multiple messages");if(!await this.get(G,X))throw Error("Thread not found or access denied");let K=new Map;for(let $ of Y){let V=K.get($.id);if(V&&V.thread_id!==$.thread_id)throw Error(`Duplicate message id "${$.id}" with conflicting thread_ids: "${V.thread_id}" vs "${$.thread_id}"`);K.set($.id,$)}let Z=[...K.values()],Q=Z.find(($)=>$.thread_id!==G);if(Q)throw Error(`All messages must target the same thread. Expected thread_id "${G}", but message "${Q.id}" has thread_id "${Q.thread_id}"`);let H=Z.map(($)=>({id:$.id,thread_id:G,metadata:$.metadata?JSON.stringify($.metadata):null,parts:JSON.stringify($.parts),role:$.role,created_at:$.created_at??J,updated_at:J}));await this.db.transaction().execute(async($)=>{await $.insertInto("thread_messages").values(H).onConflict((V)=>V.column("id").doUpdateSet((z)=>({metadata:z.ref("excluded.metadata"),parts:z.ref("excluded.parts"),role:z.ref("excluded.role"),updated_at:z.ref("excluded.updated_at")}))).execute(),await $.updateTable("threads").set({updated_at:J}).where("id","=",G).where("organization_id","=",X).execute()})}async listMessages(Y,X,J){if(!await this.get(Y,X))return{messages:[],total:0};let W=J?.sort??"asc",K=this.db.selectFrom("thread_messages").selectAll().where("thread_id","=",Y).orderBy("created_at",W).orderBy("id",W),Z=this.db.selectFrom("thread_messages").select(($)=>$.fn.count("id").as("count")).where("thread_id","=",Y);if(J?.limit)K=K.limit(J.limit);if(J?.offset)K=K.offset(J.offset);let[Q,H]=await Promise.all([K.execute(),Z.executeTakeFirst()]);return{messages:Q.map(($)=>this.messageFromDbRow($)),total:Number(H?.count||0)}}threadFromDbRow(Y){return{id:Y.id,organization_id:Y.organization_id,title:Y.title,description:Y.description,status:Y.status,trigger_id:Y.trigger_id??null,created_at:S71(Y.created_at),updated_at:S71(Y.updated_at),created_by:Y.created_by,updated_by:Y.updated_by,hidden:!!Y.hidden}}messageFromDbRow(Y){let X,J;try{X=Y.metadata?JSON.parse(Y.metadata):void 0}catch(G){console.error(`Failed to parse metadata for message ${Y.id}:`,Y.metadata,G),X=void 0}try{J=typeof Y.parts==="string"?JSON.parse(Y.parts):Y.parts}catch(G){console.error(`Failed to parse parts for message ${Y.id}:`,Y.parts,G),J=[]}return{id:Y.id,thread_id:Y.thread_id,metadata:X,parts:J,role:Y.role,created_at:S71(Y.created_at),updated_at:S71(Y.updated_at)}}}q51();qW();import{createHash as xz8}from"crypto";function gq6(Y){return xz8("sha256").update(Y).digest("hex")}class Eg1{db;vault;constructor(Y,X){this.db=Y;this.vault=X}rowToKeyInfo(Y){return{id:Y.id,providerId:Y.provider_id,label:Y.label,organizationId:Y.organization_id,createdBy:Y.created_by,createdAt:Y.created_at instanceof Date?Y.created_at.toISOString():String(Y.created_at)}}async create(Y){let X=c8("aik"),J=await this.vault.encrypt(Y.apiKey),G=gq6(Y.apiKey),W=new Date;return await this.db.insertInto("ai_provider_keys").values({id:X,organization_id:Y.organizationId,provider_id:Y.providerId,label:Y.label,encrypted_api_key:J,key_hash:G,created_by:Y.createdBy,created_at:W}).execute(),this.rowToKeyInfo({id:X,provider_id:Y.providerId,label:Y.label,organization_id:Y.organizationId,created_by:Y.createdBy,created_at:W})}async upsert(Y){let X=c8("aik"),J=await this.vault.encrypt(Y.apiKey),G=gq6(Y.apiKey),W=new Date,K=await this.db.insertInto("ai_provider_keys").values({id:X,organization_id:Y.organizationId,provider_id:Y.providerId,label:Y.label,encrypted_api_key:J,key_hash:G,created_by:Y.createdBy,created_at:W}).onConflict((Z)=>Z.columns(["organization_id","provider_id","key_hash"]).doUpdateSet({label:Y.label})).returning(["id","provider_id","label","organization_id","created_by","created_at"]).executeTakeFirstOrThrow();return this.rowToKeyInfo(K)}async list(Y){let X=this.db.selectFrom("ai_provider_keys").where("organization_id","=",Y.organizationId).select(["id","provider_id","label","organization_id","created_by","created_at"]);if(Y.providerId)X=X.where("provider_id","=",Y.providerId);return(await X.orderBy("created_at","desc").execute()).map((G)=>this.rowToKeyInfo(G))}async resolve(Y,X){let J=await this.db.selectFrom("ai_provider_keys").where("id","=",Y).where("organization_id","=",X).selectAll().executeTakeFirstOrThrow(),G=await this.vault.decrypt(J.encrypted_api_key);return{keyInfo:this.rowToKeyInfo(J),apiKey:G}}async delete(Y,X){if(!(await this.db.deleteFrom("ai_provider_keys").where("id","=",Y).where("organization_id","=",X).executeTakeFirst()).numDeletedRows)throw Error(`AI provider key ${Y} not found`)}async findById(Y,X){let J=await this.db.selectFrom("ai_provider_keys").where("id","=",Y).where("organization_id","=",X).select(["id","provider_id","label","organization_id","created_by","created_at"]).executeTakeFirst();if(!J)throw Error("Provider key not found");return this.rowToKeyInfo(J)}}class Tg1{db;constructor(Y){this.db=Y}async create(Y,X,J){let G=crypto.randomUUID(),W=new Date(Date.now()+600000);return await this.db.insertInto("oauth_pkce_states").values({id:G,organization_id:X,user_id:J,code_verifier:Y,expires_at:W,created_at:new Date}).execute(),G}async consume(Y,X,J){let G=await this.db.deleteFrom("oauth_pkce_states").where("id","=",Y).where("organization_id","=",X).where("user_id","=",J).returningAll().executeTakeFirst();if(!G)throw Error("Invalid or expired OAuth state token");if((G.expires_at instanceof Date?G.expires_at:new Date(G.expires_at))<new Date)throw Error("OAuth state token has expired");return G.code_verifier}}sN();var uq6="_global";function gz8(Y){return Y.includes("/")?Y.split("/").slice(1).join("/"):Y}function uz8(Y){let X=Y.supported_parameters.includes("tools"),J=Y.supported_parameters.includes("reasoning");return{providerId:"openrouter",modelId:gz8(Y.id),title:Y.name,description:Y.description||null,logo:null,capabilities:[...new Set([...Y.architecture.input_modalities,...Y.architecture.output_modalities,...X?["tools"]:[],...J?["reasoning"]:[]])],limits:{contextWindow:Y.context_length,maxOutputTokens:Y.top_provider.max_completion_tokens||null},costs:{input:Number(Y.pricing.prompt)||0,output:Number(Y.pricing.completion)||0}}}function mq6(Y){let X=new Map;for(let J of Y){let G={description:J.description,capabilities:J.capabilities,limits:J.limits,costs:J.costs};X.set(J.modelId,G);let W=J.modelId.replace(/\./g,"-");if(W!==J.modelId)X.set(W,G)}return X}async function mz8(Y){if(Y){let X=await Y.get(uq6,"openrouter");if(X)return mq6(X)}try{let X=await fetch("https://openrouter.ai/api/v1/models",{signal:AbortSignal.timeout(1e4)});if(!X.ok)return new Map;let{data:J}=await X.json(),G=J.map(uz8);if(Y)await Y.set(uq6,"openrouter",G);return mq6(G)}catch{return new Map}}function lz8(Y){let X=Y.replace(/\./g,"-"),J=Y.replace(/-\d{8}$/,""),G=J.replace(/\./g,"-");return[...new Set([Y,X,J,G])]}function dz8(Y,X){return Y.map((J)=>{let W=lz8(J.modelId).map((K)=>X.get(K)).find(Boolean);if(!W)return J;return{...J,description:J.description??W.description??null,capabilities:J.capabilities.length?J.capabilities:W.capabilities??[],limits:J.limits??W.limits??null,costs:J.costs??W.costs??null}})}class Rg1{storage;cache;constructor(Y,X){this.storage=Y;this.cache=X}async activate(Y,X){let{keyInfo:J,apiKey:G}=await this.storage.resolve(Y,X),W=CW[J.providerId];if(!W)throw Error(`Unknown provider: ${J.providerId}`);return W.create(G)}async listModels(Y,X){let{keyInfo:J,apiKey:G}=await this.storage.resolve(Y,X),W=J.providerId;if(this.cache){let z=await this.cache.get(X,W);if(z)return z}let K=CW[W];if(!K)throw Error(`Unknown provider: ${W}`);let Q=await K.create(G).listModels(),H=new Set,$=Q.filter((z)=>{if(H.has(z.modelId))return!1;return H.add(z.modelId),!0});if(W!=="openrouter"){let z=await mz8(this.cache);$=dz8($,z)}let V=$.map((z)=>({...z,providerId:W}));if(this.cache)await this.cache.set(X,W,V);return V}}function cz8(Y){if(!Y)return;try{let X=JSON.parse(Y);if(typeof X!=="object"||X===null||Array.isArray(X))return;let J={};for(let[G,W]of Object.entries(X))if(typeof W==="string")J[G]=W;return Object.keys(J).length>0?J:void 0}catch{return}}function pz8(Y,X){for(let[J,G]of Object.entries(X)){let W=Y[J];if(!W||W.length===0){let K=Y["*"];if(!K||K.length===0)return!1;if(K.includes("*"))continue;for(let Z of G)if(!K.includes(Z))return!1;continue}if(W.includes("*"))continue;for(let K of G)if(!W.includes(K))return!1}return!0}function Cg1(Y){let{auth:X,headers:J,role:G,permissions:W,userId:K}=Y,Z=X.api.hasPermission;return{hasPermission:async(Q)=>{if(G&&Vh1.includes(G))return!0;if(W)return pz8(W,Q);if(!Z)return console.error("[Auth] hasPermission API not available"),!1;try{if((await Z({headers:J,body:{permission:Q}}))?.success===!0)return!0;let $={};for(let z of Object.keys(Q))$[z]=["*"];return(await Z({headers:J,body:{permission:$}}))?.success===!0}catch(H){return console.error("[Auth] Permission check failed:",H),!1}},organization:{create:async(Q)=>{return X.api.createOrganization({headers:J,body:Q})},update:async(Q)=>{return X.api.updateOrganization({headers:J,body:Q})},delete:async(Q)=>{await X.api.deleteOrganization({headers:J,body:{organizationId:Q}})},get:async(Q)=>{return X.api.getFullOrganization({headers:J,query:Q?{organizationId:Q}:void 0})},list:async(Q)=>{return X.api.listOrganizations({headers:J,query:Q?{userId:Q}:void 0})},addMember:async(Q)=>{return X.api.addMember({headers:J,body:Q})},removeMember:async(Q)=>{await X.api.removeMember({headers:J,body:Q})},listMembers:async(Q)=>{return X.api.listMembers({headers:J,query:Q?{organizationId:Q.organizationId,limit:Q.limit,offset:Q.offset}:void 0})},updateMemberRole:async(Q)=>{return X.api.updateMemberRole({headers:J,body:Q})}},apiKey:{create:async(Q)=>{return X.api.createApiKey({body:{...Q,userId:K}})},list:async()=>{return X.api.listApiKeys({headers:J})},update:async(Q)=>{return X.api.updateApiKey({body:{...Q,userId:K}})},delete:async(Q)=>{await X.api.deleteApiKey({headers:J,body:{keyId:Q}})}}}}async function nz8(Y,X,J){if(Vh1.includes(J))return;let G=await Y.selectFrom("organizationRole").select(["permission"]).where("organizationId","=",X).where("role","=",J).executeTakeFirst();if(!G?.permission)return;try{return JSON.parse(G.permission)}catch{console.error(`[Auth] Failed to parse permissions for role: ${J}`);return}}async function iz8(Y,X,J,G=dq6){let W=Y.headers.get("Authorization");try{let K=new Headers(Y.headers);K.set("X-MCP-Session-Auth","true");let Z=await G.measure("auth_get_mcp_session",()=>X.api.getMcpSession({headers:K}));if(Z){let Q=Z.userId,H=await G.measure("auth_query_membership",()=>J.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","=",Q).executeTakeFirst()),$=H?.role,V=H?{id:H.orgId,slug:H.orgSlug,name:H.orgName}:void 0,z;if(H&&$)z=await G.measure("auth_fetch_role_permissions",()=>nz8(J,H.organizationId,$));return{user:{id:Q,role:$},role:$,permissions:z,organization:V}}}catch(K){console.error("[Auth] OAuth session check failed:",K)}if(W?.startsWith("Bearer ")){let K=W.replace("Bearer ","").trim();try{let Z=await G.measure("auth_verify_mesh_jwt",()=>KX6(K));if(Z){let Q,H=Z.metadata?.organizationId;if(Z.sub&&H)Q=(await G.measure("auth_query_membership",()=>J.selectFrom("member").select(["member.role"]).where("member.userId","=",Z.sub).where("member.organizationId","=",H).executeTakeFirst()))?.role;let $,V=Z.metadata?.organizationId;if(V){let z=Z.metadata?.organizationName,U=Z.metadata?.organizationSlug;if(z||U)$={id:V,name:z,slug:U};else{let q=await G.measure("auth_query_org_for_mesh_jwt",()=>J.selectFrom("organization").select(["id","slug","name"]).where("id","=",V).executeTakeFirst());$=q?{id:q.id,slug:q.slug,name:q.name}:{id:V}}}return{user:{id:Z.sub,connectionId:Z.metadata?.connectionId,role:Q},role:Q,permissions:Z.permissions,organization:$}}}catch{}try{let Z=await G.measure("auth_verify_api_key",()=>X.api.verifyApiKey({body:{key:K}}));if(Z?.valid&&Z.key){let Q=Z.key.metadata?.organization,H=Z.key.permissions,$,V=Z.key.userId;if(V&&Q?.id)$=(await G.measure("auth_query_membership",()=>J.selectFrom("member").select(["member.role"]).where("member.userId","=",V).where("member.organizationId","=",Q.id).executeTakeFirst()))?.role;return{apiKeyId:Z.key.id,user:{id:Z.key.userId,role:$},role:$,permissions:H,organization:Q?{id:Q.id,slug:Q.slug,name:Q.name}:void 0}}}catch(Z){console.error("[Auth] API key check failed:",Z)}}try{let K=new Headers(Y.headers);K.delete("Authorization");let Z=await G.measure("auth_get_session",()=>X.api.getSession({headers:K}));if(Z){let Q,H;if(Z.session.activeOrganizationId){let $=await G.measure("auth_get_full_organization",()=>X.api.getFullOrganization({headers:K}).catch(()=>null));if($)Q={id:$.id,slug:$.slug,name:$.name},H=$.members?.find((z)=>z.userId===Z.user.id)?.role;else Q={id:Z.session.activeOrganizationId,slug:"",name:""}}return{user:{id:Z.user.id,email:Z.user.email,role:H},role:H,organization:Q}}}catch(K){let Z=K;console.error("[Auth] Session check failed:",JSON.stringify({message:Z.message,body:Z.body,stack:Z.stack},null,2))}return{user:void 0}}var lq6,SV={set:(Y)=>{lq6=Y},create:async(Y,X)=>{return await lq6(Y,X)}},dq6={measure:async(Y,X)=>{return await X()}},az8=["x-hub-signature-256"];async function cq6(Y){let X=new bM(Y.encryption.key),J=!!V6.CLICKHOUSE_URL,G=J?"clickhouse":"duckdb",W,K;if(J)W=new td(V6.CLICKHOUSE_URL),K=new td(V6.CLICKHOUSE_URL);else{let{engine:q}=await zg1({basePath:nV}),{engine:L}=await zg1({basePath:uD});W=q,K=L}let{resolve:Z}=await import("path"),Q=Z(nV),H=Z(uD),$=J?(q)=>"monitoring_logs":(q)=>`read_ndjson('${Q}/${q}/**/*.ndjson', auto_detect=true)`,V=J?(q)=>"monitoring_metrics":(q)=>`read_ndjson('${H}/${q}/**/*.ndjson', auto_detect=true)`,z=new Jc(Y.db),U={connections:new ix(Y.db,X),organizationSettings:new qg1(Y.db),monitoring:new _h1(W,$,K,V,G),monitoringDashboards:new Ug1(Y.db),virtualMcps:new Rh1(Y.db),users:new Bg1(Y.db),tags:new Ng1(Y.db),projects:new ax(Y.db),projectConnections:new Lg1(Y.db),projectPluginConfigs:new Og1(Y.db),aiProviderKeys:new Eg1(Y.db,X),oauthPkceStates:new Tg1(Y.db),automations:P71(Y.db)};return async(q,L)=>{let O=L?.timings??dq6,M=zj(),P=q?.headers.get("x-caller-id")??void 0,R=q?await iz8(q,Y.auth,Y.db,O):{user:void 0},I=Cg1({auth:Y.auth,headers:q?.headers??new Headers,role:R.role,permissions:R.permissions,userId:R.user?.id}),T={user:R.user};if(R.apiKeyId)T.apiKey={id:R.apiKeyId,name:"",userId:""};let E=R.organization,j=q?V6.BASE_URL??`${new URL(q.url).origin}`:UQ(),v=new n3(Y.auth,T.user?.id,void 0,I,R.role,"self"),k={...U,threads:new Xc(z,E?.id)},g=new Rg1(k.aiProviderKeys,Y.modelListCache),f={timings:O,auth:T,connectionId:P,organization:E,storage:k,vault:X,authInstance:Y.auth,boundAuth:I,access:v,db:Y.db,tracer:Y.observability.tracer,meter:Y.observability.meter,baseUrl:j,metadata:{requestId:crypto.randomUUID(),timestamp:new Date,wellKnownForwardableHeaders:Object.fromEntries(az8.map((y)=>[y,q?.headers.get(y)??null]).filter(([y,a])=>a!==null)),userAgent:q?.headers.get("x-mesh-client")||q?.headers.get("User-Agent")||void 0,ipAddress:(q?.headers.get("CF-Connecting-IP")||q?.headers.get("X-Forwarded-For"))??void 0,properties:cz8(q?.headers.get("x-mesh-properties"))},eventBus:Y.eventBus,aiProviders:g,createMCPProxy:async(y)=>{return await _q6(y,f)},getOrCreateClient:M};return f}}Uj();TC();class pq6{db;constructor(Y){this.db=Y}mapRowToSubscription(Y){return{id:Y.id,organizationId:Y.organization_id,connectionId:Y.connection_id,publisher:Y.publisher,eventType:Y.event_type,filter:Y.filter,enabled:Boolean(Y.enabled),createdAt:Y.created_at,updatedAt:Y.updated_at}}async publishEvent(Y){let X=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:X,updated_at:X}).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:X,updatedAt:X}}async subscribe(Y){let X=this.db.selectFrom("event_subscriptions").selectAll().where("organization_id","=",Y.organizationId).where("connection_id","=",Y.connectionId).where("event_type","=",Y.eventType);if(Y.publisher)X=X.where("publisher","=",Y.publisher);else X=X.where("publisher","is",null);if(Y.filter)X=X.where("filter","=",Y.filter);else X=X.where("filter","is",null);let J=await X.executeTakeFirst();if(J)return this.mapRowToSubscription(J);let G=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:G,updated_at:G}).execute(),{id:Y.id,organizationId:Y.organizationId,connectionId:Y.connectionId,publisher:Y.publisher??null,eventType:Y.eventType,filter:Y.filter??null,enabled:1,createdAt:G,updatedAt:G}}async unsubscribe(Y,X){return{success:((await this.db.deleteFrom("event_subscriptions").where("id","=",Y).where("organization_id","=",X).executeTakeFirst()).numDeletedRows??0n)>0n}}async listSubscriptions(Y,X){let J=this.db.selectFrom("event_subscriptions").selectAll().where("organization_id","=",Y);if(X)J=J.where("connection_id","=",X);return(await J.execute()).map((W)=>this.mapRowToSubscription(W))}async getSubscription(Y,X){let J=await this.db.selectFrom("event_subscriptions").selectAll().where("id","=",Y).where("organization_id","=",X).executeTakeFirst();if(!J)return null;return this.mapRowToSubscription(J)}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((J)=>J.or([J("publisher","is",null),J("publisher","=",Y.source)])).execute()).map((J)=>this.mapRowToSubscription(J))}async createDeliveries(Y,X,J){if(X.length===0)return;let G=new Date().toISOString(),W=J??null,K=X.map((Z)=>({id:crypto.randomUUID(),event_id:Y,subscription_id:Z,status:"pending",attempts:0,last_error:null,delivered_at:null,next_retry_at:W,created_at:G}));await this.db.insertInto("event_deliveries").values(K).execute()}async claimPendingDeliveries(Y){let X=new Date().toISOString(),G=(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((Z)=>Z.or([Z("d.next_retry_at","is",null),Z("d.next_retry_at","<=",X)])).orderBy("d.created_at","asc").limit(Y)).where("status","=","pending").returning(["id"]).execute()).map((K)=>K.id);if(G.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",G).where("d.status","=","processing").execute()).map((K)=>({delivery:{id:K.delivery_id,eventId:K.event_id,subscriptionId:K.subscription_id,status:K.delivery_status,attempts:K.delivery_attempts,lastError:K.delivery_last_error,deliveredAt:K.delivered_at,nextRetryAt:K.delivery_next_retry_at,createdAt:K.delivery_created_at},event:{id:K.event_id,organizationId:K.organization_id,type:K.type,source:K.source,specversion:K.specversion,subject:K.subject,time:K.time,datacontenttype:K.datacontenttype,dataschema:K.dataschema,data:K.data?JSON.parse(K.data):null,cron:K.cron,status:K.event_status,attempts:K.event_attempts,lastError:K.event_last_error,nextRetryAt:K.next_retry_at,createdAt:K.event_created_at,updatedAt:K.event_updated_at},subscription:{id:K.subscription_id,organizationId:K.organization_id,connectionId:K.connection_id,publisher:K.publisher,eventType:K.event_type,filter:K.filter,enabled:Boolean(K.enabled),createdAt:K.subscription_created_at,updatedAt:K.subscription_updated_at}}))}async markDeliveriesDelivered(Y){if(Y.length===0)return;let X=new Date().toISOString();await this.db.updateTable("event_deliveries").set({status:"delivered",delivered_at:X}).where("id","in",Y).execute()}async markDeliveriesPermanentlyFailed(Y,X){if(Y.length===0)return;await this.db.updateTable("event_deliveries").set({status:"failed",last_error:X,next_retry_at:null}).where("id","in",Y).execute()}async markDeliveriesFailed(Y,X,J=20,G=1000,W=3600000){if(Y.length===0)return;for(let K of Y){let Z=await this.db.selectFrom("event_deliveries").select(["attempts"]).where("id","=",K).executeTakeFirst();if(!Z)continue;let Q=Z.attempts+1;if(Q>=J)await this.db.updateTable("event_deliveries").set({attempts:Q,last_error:X,status:"failed",next_retry_at:null}).where("id","=",K).execute();else{let H=Math.min(G*Math.pow(2,Q-1),W),$=new Date(Date.now()+H).toISOString();await this.db.updateTable("event_deliveries").set({attempts:Q,last_error:X,status:"pending",next_retry_at:$}).where("id","=",K).execute()}}}async updateEventStatus(Y){let X=await this.db.selectFrom("event_deliveries").select(["status"]).where("event_id","=",Y).execute();if(X.length===0)return;let J=X.every((K)=>K.status==="delivered"),G=X.some((K)=>K.status==="failed"),W=X.some((K)=>K.status==="pending"||K.status==="processing");if(J)await this.db.updateTable("events").set({status:"delivered",updated_at:new Date().toISOString()}).where("id","=",Y).execute();else if(G&&!W)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,X){let J=await this.db.selectFrom("events").selectAll().where("id","=",Y).where("organization_id","=",X).executeTakeFirst();if(!J)return null;return{id:J.id,organizationId:J.organization_id,type:J.type,source:J.source,specversion:J.specversion,subject:J.subject,time:J.time,datacontenttype:J.datacontenttype,dataschema:J.dataschema,data:J.data?JSON.parse(J.data):null,cron:J.cron,status:J.status,attempts:J.attempts,lastError:J.last_error,nextRetryAt:J.next_retry_at,createdAt:J.created_at,updatedAt:J.updated_at}}async findActiveCronEvent(Y,X,J,G){let W=await this.db.selectFrom("events").selectAll().where("organization_id","=",Y).where("type","=",X).where("source","=",J).where("cron","=",G).where("status","in",["pending","processing","delivered"]).orderBy("created_at","desc").executeTakeFirst();if(!W)return null;return{id:W.id,organizationId:W.organization_id,type:W.type,source:W.source,specversion:W.specversion,subject:W.subject,time:W.time,datacontenttype:W.datacontenttype,dataschema:W.dataschema,data:W.data?JSON.parse(W.data):null,cron:W.cron,status:W.status,attempts:W.attempts,lastError:W.last_error,nextRetryAt:W.next_retry_at,createdAt:W.created_at,updatedAt:W.updated_at}}async findOrphanedCronEvents(){return(await this.db.selectFrom("events").selectAll().where("cron","is not",null).where("status","=","delivered").where((X)=>X.not(X.exists(X.selectFrom("event_deliveries").select("id").whereRef("event_deliveries.event_id","=","events.id").where("event_deliveries.status","in",["pending","processing"])))).execute()).map((X)=>({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 cancelEvent(Y,X,J){let G=await this.db.updateTable("events").set({status:"failed",last_error:"Cancelled by publisher",updated_at:new Date().toISOString()}).where("id","=",Y).where("organization_id","=",X).where("source","=",J).where("status","in",["pending","processing"]).executeTakeFirst();if((G.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:(G.numUpdatedRows??0n)>0n}}async scheduleRetryWithoutAttemptIncrement(Y,X){if(Y.length===0)return;let J=new Date(Date.now()+X).toISOString();await this.db.updateTable("event_deliveries").set({status:"pending",next_retry_at:J}).where("id","in",Y).execute()}async ackDelivery(Y,X,J){if(!await this.db.selectFrom("events").select(["id"]).where("id","=",Y).where("organization_id","=",X).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((Z)=>Z.exists(Z.selectFrom("event_subscriptions").select("id").whereRef("event_subscriptions.id","=","event_deliveries.subscription_id").where("event_subscriptions.connection_id","=",J).where("event_subscriptions.organization_id","=",X))).executeTakeFirst()).numUpdatedRows??0n)>0n;if(K)await this.updateEventStatus(Y);return{success:K}}async syncSubscriptions(Y){let{organizationId:X,connectionId:J,subscriptions:G}=Y,W=(P,R)=>{return`${P}::${R??""}`},K=await this.listSubscriptions(X,J),Z=new Map;for(let P of K)Z.set(W(P.eventType,P.publisher),P);let Q=new Map;for(let P of G)Q.set(W(P.eventType,P.publisher),P);let H=new Date().toISOString(),$=[],V=[],z=[],U=0;for(let[P,R]of Q){let I=Z.get(P);if(!I)$.push({id:crypto.randomUUID(),organization_id:X,connection_id:J,event_type:R.eventType,publisher:R.publisher??null,filter:R.filter??null,enabled:1,created_at:H,updated_at:H});else{let T=I.filter??null,E=R.filter??null;if(T!==E)V.push({id:I.id,filter:E});else U++}}for(let[P,R]of Z)if(!Q.has(P))z.push(R.id);if($.length>0)await this.db.insertInto("event_subscriptions").values($).execute();if(V.length>0)await Promise.all(V.map((P)=>this.db.updateTable("event_subscriptions").set({filter:P.filter,updated_at:H}).where("id","=",P.id).execute()));if(z.length>0)await this.db.deleteFrom("event_subscriptions").where("id","in",z).execute();let q=$.length,L=V.length,O=z.length,M=await this.listSubscriptions(X,J);return{created:q,updated:L,deleted:O,unchanged:U,subscriptions:M}}}function nq6(Y){return new pq6(Y)}im();class iq6{listeners=new Map;totalCount=0;strategy=null;started=!1;async start(Y){if(this.started){if(!Y)return;await this.stop()}this.strategy=Y,await this.strategy.start((X,J)=>this.localEmit(X,J)),this.started=!0}async stop(){if(!this.started||!this.strategy)return;await this.strategy.stop(),this.started=!1}add(Y){if(this.totalCount>=500)return console.warn("[SSEHub] Total connection limit reached (500)"),null;let X=this.listeners.get(Y.organizationId);if(!X)X=new Map,this.listeners.set(Y.organizationId,X);if(X.size>=50)return console.warn(`[SSEHub] Per-org connection limit reached for ${Y.organizationId} (50)`),null;return X.set(Y.id,Y),this.totalCount++,Y.id}remove(Y,X){let J=this.listeners.get(Y);if(!J)return;if(J.delete(X)){if(this.totalCount--,J.size===0)this.listeners.delete(Y)}}emit(Y,X){if(this.strategy)this.strategy.broadcast(Y,X);else this.localEmit(Y,X)}countForOrg(Y){return this.listeners.get(Y)?.size??0}get count(){return this.totalCount}localEmit(Y,X){let J=this.listeners.get(Y);if(!J||J.size===0)return;for(let G of J.values()){if(G.typePatterns&&!rz8(X.type,G.typePatterns))continue;try{G.push(X)}catch{this.remove(Y,G.id)}}}}function rz8(Y,X){for(let J of X){if(J===Y)return!0;if(J.endsWith(".*")){let G=J.slice(0,-1);if(Y.startsWith(G))return!0}}return!1}var $$=new iq6;function aq6(Y){return{id:Y.id,type:Y.type,source:Y.source,subject:Y.subject,data:Y.data?oz8(Y.data):void 0,time:Y.time}}function oz8(Y){if(typeof Y==="string")try{return JSON.parse(Y)}catch{return Y}return Y}im();var sz8=new Set([401]),tz8=["unauthorized","invalid_token","invalid api key","api key required","api-key required"];function rq6(Y){if(typeof Y==="object"&&Y!==null){let G=Y,W=G.status??G.code;if(typeof W==="number"&&sz8.has(W))return!0}let X=Y instanceof Error?Y.message:typeof Y==="string"?Y:"";if(!X)return!1;let J=X.toLowerCase();if(/\b401\b/.test(J))return!0;return tz8.some((G)=>J.includes(G))}class Gc extends Error{constructor(Y){super(Y);this.name="PermanentDeliveryError"}}var _71={pollIntervalMs:5000,batchSize:100,maxAttempts:20,retryDelayMs:1000,maxDelayMs:3600000};X51();q51();Wu();function ez8(Y){return Y.endsWith("_self")}function YU8(Y){return Y.slice(0,-5)}function oq6(){return async(Y,X)=>{try{if(ez8(Y)&&i_1()){let Z=YU8(Y),Q=await SV.create();if(await L56(X,{organizationId:Z,connectionId:Y,publish:async(V,z,U,q)=>{await Q.eventBus.publish(Z,Y,{type:V,subject:z,data:U,deliverAt:q?.deliverAt})},createMCPProxy:async(V)=>{let z={...Q,getOrCreateClient:zj()},U=await Ag1(V,z);return{callTool:async(q,L,O)=>{let M=await U.callTool(q,L,O);return{content:M.content,structuredContent:M.structuredContent,isError:M.isError}},close:()=>U.close()}}}))return{success:!0}}let J=await SV.create(),G=await Ag1(Y,J),K=await SI1.forClient(Yc(G)).ON_EVENTS({events:X});return{success:K.success,error:K.error,retryAfter:K.retryAfter,results:K.results}}catch(J){let G=J instanceof Error?J.message:String(J);if(console.error(`[EventBus] Failed to notify connection ${Y}:`,G),rq6(J))throw new Gc(G);return{success:!1,error:G}}}}function sq6(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 XU8(Y){let X=new Map;for(let G of Y){let W=G.subscription.connectionId,K=X.get(W);if(K){if(K.deliveryIds.push(G.delivery.id),!K.seenEventIds.has(G.event.id))K.seenEventIds.add(G.event.id),K.events.push(sq6(G.event))}else X.set(W,{connectionId:G.subscription.connectionId,deliveryIds:[G.delivery.id],events:[sq6(G.event)],seenEventIds:new Set([G.event.id])})}let J=new Map;for(let[G,W]of X)J.set(G,{connectionId:W.connectionId,deliveryIds:W.deliveryIds,events:W.events});return J}class Ig1{storage;notifySubscriber;running=!1;processing=!1;pendingNotify=!1;config;eventTriggerEngine;constructor(Y,X,J){this.storage=Y;this.notifySubscriber=J??oq6(),this.config={..._71,...X}}setEventTriggerEngine(Y){this.eventTriggerEngine=Y}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`);let X=await this.storage.findOrphanedCronEvents();for(let J of X)await this.scheduleNextCronDelivery(J),console.log(`[EventBus] Recovered orphaned cron event ${J.id} (${J.type}, cron: ${J.cron})`);if(X.length>0)console.log(`[EventBus] Recovered ${X.length} orphaned cron event(s)`);this.running=!0}stop(){this.running=!1}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 X=XU8(Y),J=await Promise.allSettled(Array.from(X.entries()).map(async([K,Z])=>{let Q=new Set;try{let $=await this.notifySubscriber(Z.connectionId,Z.events);if($.results&&Object.keys($.results).length>0)await this.processPerEventResults(Z,$);else if($.success)await this.storage.markDeliveriesDelivered(Z.deliveryIds);else if($.retryAfter&&$.retryAfter>0)await this.storage.scheduleRetryWithoutAttemptIncrement(Z.deliveryIds,$.retryAfter);else await this.storage.markDeliveriesFailed(Z.deliveryIds,$.error||"Subscriber returned success=false",this.config.maxAttempts,this.config.retryDelayMs,this.config.maxDelayMs)}catch($){if($ instanceof Gc){await this.storage.markDeliveriesPermanentlyFailed(Z.deliveryIds,$.message);for(let V of Z.events)Q.add(V.id)}else{let V=$ instanceof Error?$.message:String($);console.error(`[EventBus] Failed to notify subscription ${K}:`,V),await this.storage.markDeliveriesFailed(Z.deliveryIds,V,this.config.maxAttempts,this.config.retryDelayMs,this.config.maxDelayMs)}}let H=new Set;for(let $ of Y)if(Z.deliveryIds.includes($.delivery.id))H.add($.event.id);return{eventIds:H,permanentlyFailed:Q}})),G=new Set,W=new Set;for(let K of J)if(K.status==="fulfilled"){for(let Z of K.value.eventIds)G.add(Z);for(let Z of K.value.permanentlyFailed)W.add(Z)}for(let K of G)try{await this.storage.updateEventStatus(K);let Z=Y.find((Q)=>Q.event.id===K)?.event;if(Z?.cron&&!W.has(K))await this.scheduleNextCronDelivery(Z)}catch(Z){console.error(`[EventBus] Failed to update event status ${K}:`,Z)}if(this.eventTriggerEngine){let K=new Set,Z=[];for(let Q of Y){if(Q.delivery.attempts>0)continue;if(!K.has(Q.event.id))K.add(Q.event.id),Z.push({source:Q.event.source,type:Q.event.type,data:Q.event.data,organizationId:Q.event.organizationId})}if(Z.length>0)this.eventTriggerEngine.notifyEvents(Z)}}async processPerEventResults(Y,X){let J=[],G=new Map,W=[],K=new Map;for(let Z=0;Z<Y.events.length;Z++){let Q=Y.events?.[Z];if(!Q)continue;let H=Y.deliveryIds?.[Z];if(!H)continue;K.set(Q.id,H)}for(let Z of Y.events){let Q=K.get(Z.id);if(!Q)continue;let H=X.results?.[Z.id];if(H)if(H.success)J.push(Q);else if(H.retryAfter&&H.retryAfter>0){let $=G.get(H.retryAfter)||[];$.push(Q),G.set(H.retryAfter,$)}else W.push({deliveryId:Q,error:H.error||"Event processing failed"});else if(X.success)J.push(Q);else if(X.retryAfter&&X.retryAfter>0){let $=G.get(X.retryAfter)||[];$.push(Q),G.set(X.retryAfter,$)}else W.push({deliveryId:Q,error:X.error||"Batch processing failed"})}if(J.length>0)await this.storage.markDeliveriesDelivered(J);for(let[Z,Q]of G)await this.storage.scheduleRetryWithoutAttemptIncrement(Q,Z);if(W.length>0){let Z=new Map;for(let{deliveryId:Q,error:H}of W){let $=Z.get(H)||[];$.push(Q),Z.set(H,$)}for(let[Q,H]of Z)await this.storage.markDeliveriesFailed(H,Q,this.config.maxAttempts,this.config.retryDelayMs,this.config.maxDelayMs)}}async scheduleNextCronDelivery(Y){if(!Y.cron)return;try{let J=new mN(Y.cron,{timezone:"UTC"}).nextRun();if(!J){console.log(`[EventBus] Cron expression for event ${Y.id} has no more runs`);return}let G=J.toISOString(),W=await this.storage.getMatchingSubscriptions(Y);if(W.length===0){console.log(`[EventBus] No subscriptions for cron event ${Y.id}, skipping next delivery`);return}await this.storage.createDeliveries(Y.id,W.map((K)=>K.id),G),console.log(`[EventBus] Scheduled next cron delivery for event ${Y.id} at ${G}`)}catch(X){console.error(`[EventBus] Failed to schedule next cron delivery for event ${Y.id}:`,X)}}}class jg1{storage;worker;notifyStrategy;running=!1;constructor(Y){this.storage=Y.storage,this.notifyStrategy=Y.notifyStrategy,this.worker=new Ig1(this.storage,Y.config)}setEventTriggerEngine(Y){this.worker.setEventTriggerEngine(Y)}async publish(Y,X,J){if(J.deliverAt&&J.cron)throw Error("Cannot set both deliverAt and cron. Use one or the other.");let G;if(J.cron){try{let V=new mN(J.cron,{timezone:"UTC"}).nextRun();if(!V)throw Error("Cron expression does not produce a next run time");G=V.toISOString()}catch($){throw Error(`Invalid cron expression: ${$ instanceof Error?$.message:String($)}`)}let H=await this.storage.findActiveCronEvent(Y,J.type,X,J.cron);if(H)return H}let W=crypto.randomUUID(),K=new Date().toISOString(),Z=await this.storage.publishEvent({id:W,organizationId:Y,type:J.type,source:X,subject:J.subject,time:K,data:J.data,cron:J.cron});$$.emit(Y,aq6(Z));let Q=await this.storage.getMatchingSubscriptions(Z);if(Q.length>0){let H=J.deliverAt??G;if(await this.storage.createDeliveries(W,Q.map(($)=>$.id),H),this.notifyStrategy&&!H)await this.notifyStrategy.notify(W).catch(($)=>{console.warn("[EventBus] Notify failed (non-critical):",$)})}return Z}async subscribe(Y,X){return this.storage.subscribe({id:crypto.randomUUID(),organizationId:Y,connectionId:X.connectionId,publisher:X.publisher,eventType:X.eventType,filter:X.filter})}async unsubscribe(Y,X){return this.storage.unsubscribe(X,Y)}async listSubscriptions(Y,X){return this.storage.listSubscriptions(Y,X)}async getSubscription(Y,X){return this.storage.getSubscription(X,Y)}async getEvent(Y,X){return this.storage.getEvent(X,Y)}async cancelEvent(Y,X,J){return this.storage.cancelEvent(X,Y,J)}async ackEvent(Y,X,J){return this.storage.ackDelivery(X,Y,J)}async syncSubscriptions(Y,X){return this.storage.syncSubscriptions({organizationId:Y,...X})}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)}}isRunning(){return this.running}}class Sg1{options;sub=null;onNotify=null;encoder=new TextEncoder;constructor(Y){this.options=Y}async start(Y){if(this.sub)return;this.onNotify=Y,this.sub=this.options.getConnection().subscribe("mesh.events.notify"),(async()=>{for await(let X of this.sub)this.onNotify?.()})().catch((X)=>{console.error("[NatsNotify] Subscription error:",X)})}async stop(){this.sub?.unsubscribe(),this.sub=null,this.onNotify=null}async notify(Y){try{this.options.getConnection().publish("mesh.events.notify",this.encoder.encode(Y))}catch(X){console.warn("[NatsNotify] Publish failed (non-critical):",X)}}}class _g1{options;sub=null;localEmit=null;originId=crypto.randomUUID();encoder=new TextEncoder;constructor(Y){this.options=Y}async start(Y){if(this.localEmit=Y,this.sub)return;this.sub=this.options.getConnection().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)})}broadcast(Y,X){this.localEmit?.(Y,X);let J={originId:this.originId,organizationId:Y,event:X};try{this.options.getConnection().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}}function tq6(...Y){return{async start(X){await Promise.all(Y.map((J)=>J.start(X)))},async stop(){await Promise.all(Y.map((X)=>X.stop().catch((J)=>{console.error("[NotifyStrategy] Error stopping strategy:",J)})))},async notify(X){await Promise.all(Y.map((J)=>J.notify(X).catch((G)=>{console.warn("[NotifyStrategy] Notify failed (non-critical):",G)})))}}}class kg1{intervalMs;timer=null;onNotify=null;constructor(Y){this.intervalMs=Y}async start(Y){if(this.timer)return;this.onNotify=Y,this.scheduleNext()}async stop(){if(this.timer)clearTimeout(this.timer),this.timer=null;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)}}function eq6(Y,X,J){let G=nq6(Y.db),W=J?.pollIntervalMs??_71.pollIntervalMs,K=tq6(new kg1(W),new Sg1({getConnection:()=>X.getConnection()})),Z=new _g1({getConnection:()=>X.getConnection()});return $$.start(Z).catch((Q)=>{console.error("[SSEHub] Failed to start broadcast strategy:",Q)}),new jg1({storage:G,config:J,notifyStrategy:K})}fq();nW();gL();var JU8={br:".br",zstd:".zst",gzip:".gz"},_gY=Object.keys(JU8);uL();wB1();var vg1="x-hono-disable-ssg",ogY=(()=>{try{return new Response("SSG is disabled",{status:404,headers:{[vg1]:"true"}})}catch{return null}})();Ce();var{write:_uY}=Bun;var ZU8=class{#Y;constructor(Y){this.#Y=Y,this.raw=Y.raw,this.url=Y.url?new URL(Y.url):null,this.protocol=Y.protocol??null}send(Y,X){this.#Y.send(Y,X??{})}raw;binaryType="arraybuffer";get readyState(){return this.#Y.readyState}url;protocol;close(Y,X){this.#Y.close(Y,X)}};var YL6=(Y)=>{return(...X)=>{if(typeof X[0]==="function"){let[J,G]=X;return async function(K,Z){let Q=await J(K),H=await Y(K,Q,G);if(H)return H;await Z()}}else{let[J,G,W]=X;return(async()=>{let K=await Y(J,G,W);if(!K)throw Error("Failed to upgrade WebSocket");return K})()}}};var Wc=(Y)=>("server"in Y.env)?Y.env.server:Y.env;var QU8=YL6((Y,X)=>{let J=Wc(Y);if(!J)throw TypeError("env has to include the 2nd argument of fetch.");if(J.upgrade(Y.req.raw,{data:{events:X,url:new URL(Y.req.url),protocol:Y.req.url}}))return new Response(null);return});var fg1=(Y)=>{let X=Wc(Y);if(!X)throw TypeError("env has to include the 2nd argument of fetch.");if(typeof X.requestIP!=="function")throw TypeError("server.requestIP is not a function.");let J=X.requestIP(Y.req.raw);if(!J)return{remote:{}};return{remote:{address:J.address,addressType:J.family==="IPv6"||J.family==="IPv4"?J.family:void 0,port:J.port}}};c5();hA();var XL6={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"}};oS();var bg1=new xY;bg1.get("/config",async(Y)=>{try{let X=Object.keys($8.socialProviders??{}),J=X.length>0,G=X.map((Z)=>({name:Z,icon:XL6[Z].icon})),W=V6.NODE_ENV!=="production"||V6.UNSAFE_ALLOW_STDIO_TRANSPORT,K={emailAndPassword:{enabled:$8.emailAndPassword?.enabled??!1},magicLink:{enabled:$8.magicLinkConfig?.enabled??!1},emailOtp:{enabled:$8.emailOtpConfig?.enabled??!1},resetPassword:{enabled:PJ1},socialProviders:{enabled:J,providers:G},sso:$8.ssoConfig?{enabled:!0,providerId:$8.ssoConfig.providerId}:{enabled:!1},stdioEnabled:W,localMode:hP()};return Y.json({success:!0,config:K})}catch(X){let J=X instanceof Error?X.message:"Failed to load auth config";return Y.json({success:!1,error:J},500)}});bg1.post("/local-session",async(Y)=>{if(!hP())return Y.json({success:!1,error:"Local mode is not active"},403);let X;try{X=fg1(Y).remote.address}catch{}if(!(X==="127.0.0.1"||X==="::1"||X==="::ffff:127.0.0.1"))return Y.json({success:!1,error:"Forbidden"},403);try{let{waitForSeed:G}=await Promise.resolve().then(() => (oS(),f71));await G();let{auth:W}=await Promise.resolve().then(() => (hA(),l$6)),K=await yg1();if(!K)return Y.json({success:!1,error:"Local admin user not found"},500);let Z=await v71();return await W.api.signInEmail({body:{email:K.email,password:Z},asResponse:!0})}catch(G){return console.error("Failed to create local session:",G),Y.json({success:!1,error:G instanceof Error?G.message:"Failed to create local session"},500)}});var WL6=bg1;pK();nW();u2();pK();function ZL6(Y){let X=Y.filter((G)=>G.role==="system"),J=Y.find((G)=>G.role!=="system");return{systemMessages:X,requestMessage:J}}function DU8(Y){let X=!1,J=Y.map((G)=>{if(G.role!=="assistant")return G;if(!G.parts.some((K)=>("state"in K)&&K.state==="approval-requested"))return G;return X=!0,{...G,parts:G.parts.map((K)=>{if(!("state"in K)||K.state!=="approval-requested"||!("approval"in K)||!K.approval)return K;return{...K,state:"output-denied",approval:{...K.approval,approved:!1,reason:"User sent a new message without approving this tool call."}}})}});return X?J:Y}function wU8(Y){let[X,J]=Y.reduce((G,W)=>{if(W.role==="system")G[0].push(W);else G[1].push(W);return G},[[],[]]);return{systemMessages:X,messages:J}}async function MU8(Y,X){return await Y.loadHistory(X)}function AU8(Y,X){let J=Y.filter((K)=>K.parts&&K.parts.length>0),G=J.findIndex((K)=>K.id===X.id);return G>=0?[...J.slice(0,G),X]:[...J,X]}async function QL6(Y,X,J,G){let W=await MU8(Y,G),K=AU8(W,X);return[...J,...K]}async function KL6(Y,X){let J=await T06({messages:Y}),G=DU8(J),W=await E06(G,{tools:X.tools,ignoreIncompleteToolCalls:!0}),{systemMessages:K,messages:Z}=wU8(W),Q=X.models.thinking.capabilities?.reasoning!==!1,H=C06({messages:Z,reasoning:Q?"all":"none",emptyMessages:"remove",toolCalls:"none"});return{systemMessages:K,messages:H,originalMessages:J}}TX();pK();u2();pK();a1();W51();function HL6(Y){let{toolOutputMap:X}=Y;return P7({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:w0(F.object({tool_call_id:F.string(),code:F.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:J,code:G})=>{if(!X.has(J))throw Error(`Tool output not found for tool call id: ${J}`);let W=X.get(J),K=await Jk1({input:W,code:G,timeoutMs:5000}),Z=hg1({return:K.returnValue});if(Z>4000)throw Error(`Tool call ${J} output is too long to display (${Z} tokens), reduce or truncate the output`);return{result:K.returnValue,error:K.error,consoleLogs:K.consoleLogs}}})}var PU8=4,EU8=/[\u3000-\u303f\u3040-\u309f\u30a0-\u30ff\u4e00-\u9fff\u3400-\u4dbf\uf900-\ufaff]/g;function TU8(Y){if(!Y)return 0;let X=Y.match(EU8)?.length??0,J=Y.length-X;return Math.ceil(J/PU8)+Math.ceil(X*1.5)}function hg1(Y){let X=typeof Y==="string"?Y:JSON.stringify(Y);return TU8(X)}function y71(Y,X){if(Y==="yolo")return!1;if(Y==="none")return!0;return X!==!0}function b71(Y){let X=Y.get("meshContext").organization;if(!X)throw Error("Organization context is required");if((X.slug??X.id)!==Y.req.param("org"))throw Error("Organization mismatch");return X}async function Zc(Y,X,J,G="none",W){let K=!W?.disableOutputTruncation,Q=(await Y.listTools()).tools.map((H)=>{let{name:$,title:V,description:z,inputSchema:U,annotations:q,_meta:L}=H;return[$,P7({title:V??$,description:z,inputSchema:cK(U),outputSchema:void 0,needsApproval:y71(G,q?.readOnlyHint),execute:async(O,M)=>{let P=performance.now();try{return await Y.callTool({name:H.name,arguments:O},d$,{signal:M.abortSignal,timeout:jq6})}finally{if(J){let R=performance.now()-P;J.write({type:"data-tool-metadata",id:M.toolCallId,data:{_meta:L,annotations:q,latencyMs:R}})}}},toModelOutput:async({output:O,toolCallId:M})=>{if(K){let R=hg1(O.structuredContent??O.content);if(R>4000)return X.set(M,JSON.stringify(O.structuredContent??O.content)),{type:"text",value:`Tool call ${M} output is too long to display (${R} tokens), use the read_tool_output tool`}}if(O.isError)return{type:"error-text",value:O.content.map((I)=>I.type==="text"?I.text:null).filter(Boolean).join(`
|
|
1573
1573
|
`)||"Unknown error"};if("structuredContent"in O)return{type:"json",value:O.structuredContent};return{type:"text",value:O.content.map((R)=>{if(R.type==="text")return R.text;return JSON.stringify(R)}).join(`
|
|
1574
1574
|
`)}}})]});return Object.fromEntries(Q)}async function xg1(Y){let X=Y.get("meshContext"),J=X.auth?.user?.id;if(!J)throw new OJ(401,{message:"Unauthorized"});let G=b71(Y),W=Y.req.param("threadId");if(!W)throw new OJ(400,{message:"Missing thread ID"});if(/[.*>\s]/.test(W))throw new OJ(400,{message:"Invalid thread ID"});let K=await X.storage.threads.get(W);if(!K)throw new OJ(404,{message:"Thread not found"});return{ctx:X,organization:G,thread:K,threadId:W,userId:J}}async function $L6(Y){let X=await xg1(Y);if(X.thread.created_by!==X.userId)throw new OJ(403,{message:"Not authorized"});return X}ul();a1();var RU8=F.looseObject({id:F.string().optional(),role:F.enum(["user","assistant","system"]),parts:F.array(F.record(F.string(),F.unknown())),metadata:F.unknown().optional()}),CU8=F.object({windowSize:F.number().default(rS),thread_id:F.string()}),IU8=F.enum(["openai","anthropic","google","xai","deepseek","openrouter","openai-compatible","deco"]),FL6=IU8.optional().nullable(),gg1=F.object({id:F.string(),title:F.string(),capabilities:F.object({vision:F.boolean().optional(),text:F.boolean().optional(),tools:F.boolean().optional(),reasoning:F.boolean().optional()}).optional(),provider:FL6,limits:F.object({contextWindow:F.number().optional(),maxOutputTokens:F.number().optional()}).optional()}),jU8=gg1.extend({provider:FL6}),SU8=F.object({credentialId:F.string(),thinking:jU8.describe("Backbone model for the agentic loop"),coding:gg1.optional().describe("Good coding model"),fast:gg1.optional().describe("Cheap model for simple tasks")}).loose(),VL6=F.object({messages:F.array(RU8).min(1).refine((Y)=>Y.filter((X)=>X.role!=="system").length===1,{message:"Expected exactly one non-system message"}),memory:CU8.optional(),models:SU8,agent:F.object({id:F.string(),mode:F.enum(["passthrough","smart_tool_selection","code_execution"])}).loose(),stream:F.boolean().optional(),temperature:F.number().default(0.5),thread_id:F.string().optional(),toolApprovalLevel:F.enum(["none","readonly","yolo"]).default("none")});um();L51();ZK();var h71=Y4(E0(),1),_U8="Decopilot";function ug1(Y){kU8({...Y,tracer:Y.ctx.tracer})}function kU8(Y){try{if(!Y.organizationId)return;let X=Y.tracer.startSpan(Zr),J=h71.trace.setSpan(h71.context.active(),X);Lj({type:oE,organizationId:Y.organizationId,connectionId:Kr,connectionTitle:_U8,toolName:Y.modelId,toolArguments:{model:Y.modelId,credentialId:Y.credentialId,threadId:Y.threadId,...Y.request?.body!==void 0?{requestBody:Y.request.body}:{}},result:{...Y.usage??{},...Y.totalUsage?{totalUsage:Y.totalUsage}:{},...Y.finishReason?{finishReason:Y.finishReason}:{},...Y.response?{responseId:Y.response.id,responseModelId:Y.response.modelId,responseTimestamp:Y.response.timestamp,messages:Y.response.messages}:{},logType:oE},duration:Y.durationMs,isError:Y.isError,errorMessage:Y.errorMessage??null,userId:Y.userId,requestId:Y.requestId,userAgent:Y.userAgent??null,virtualMcpId:Y.agentId??null,properties:{model_title:Y.modelTitle,credential_id:Y.credentialId,thread_id:Y.threadId,log_type:oE,...Y.response?{response_id:Y.response.id}:{}}},J),X.end()}catch{}}ZK();function mg1(Y){let{ctx:X,organizationId:J,modelId:G,durationMs:W,isError:K,inputTokens:Z,outputTokens:Q}=Y;if(!J||!G)return;let H={"connection.id":Kr,"tool.name":G,"organization.id":J,status:K?"error":"success","error.type":K?Y.errorType||"Error":""};if(X.meter.createHistogram("tool.execution.duration",{description:"Duration of tool executions in milliseconds",unit:"ms"}).record(W,H),X.meter.createCounter("tool.execution.count",{description:"Number of tool executions"}).add(1,H),Z!=null||Q!=null){let $={...H};X.meter.createCounter("tool.execution.tokens",{description:"Number of tokens used by LLM calls"}).add((Z??0)+(Q??0),$)}}wY();pK();pK();a1();var vU8=F.object({search_term:F.string().optional().describe("Optional search term to filter agents by name, title, or description. Leave empty to return all available agents.")}),fU8=F.object({agents:F.array(F.object({agent_id:F.string().describe("Unique identifier for the agent"),name:F.string().describe("Human-readable agent name"),purpose:F.string().nullable().describe("What the agent is designed to do"),capabilities:F.array(F.string()).describe("List of capabilities the agent has")}))}),yU8="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.",bU8={readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1};function zL6(Y,X,J){let{organization:G,needsApproval:W}=X;return P7({description:yU8,inputSchema:w0(vU8),outputSchema:w0(fU8),needsApproval:W,execute:async({search_term:K},Z)=>{let Q=performance.now();try{let $=(await J.storage.virtualMcps.list(G.id)).filter((z)=>z.status==="active");if(K&&K.trim().length>0){let z=K.toLowerCase();$=$.filter((U)=>{let q=U.title.toLowerCase().includes(z),L=U.description?.toLowerCase().includes(z)??!1;return q||L})}return{agents:$.map((z)=>({agent_id:z.id,name:z.title,purpose:z.description,capabilities:[]}))}}finally{let H=performance.now()-Q;Y.write({type:"data-tool-metadata",id:Z.toolCallId,data:{annotations:bU8,latencyMs:H}})}}})}um();wY();pK();a1();var hU8=F.object({prompt:F.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:F.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.")}),xU8=`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.
|
|
1575
1575
|
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as r,j as i}from"./index-DcxE8oe_.js";import{P as m}from"./project-plugins-az_ZXSwN.js";import"./useQuery-CEE9SUlS.js";import"./useMutation-CV3IN68C.js";import"./constants-BCt7c81T.js";import"./switch-CmREXk8C.js";import"./label-BtaiiWJ8.js";import"./Container-C8ScaknS.js";import"./use-connection-Cv_-e2MS.js";import"./use-collections-CObsJD7p.js";import"./registry-utils-CkCRcmq4.js";import"./binder-l1kCmNCE.js";import"./use-install-from-registry-wW1d1HtB.js";import"./extract-connection-data-BxJWN5u-.js";import"./generate-id-BaIFvm62.js";import"./Loading01-B85tVuIU.js";import"./Plus-C9dY5EOr.js";import"./select-DeNgR918.js";import"./ChevronUp-CKkWbsZ5.js";import"./index-10S4l3se.js";import"./Check-GOz4_bBS.js";import"./ChevronDown-DElgod-p.js";function k(){const o=r.c(1);let t;return o[0]===Symbol.for("react.memo_cache_sentinel")?(t=i.jsx(m,{}),o[0]=t):t=o[0],t}export{k as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as n,j as r,E as d,r as f,u as x,e as j}from"./index-DcxE8oe_.js";import{T as h}from"./tasks-panel-DqbQRMGq.js";import{P as e}from"./index-DZ6p-ZXx.js";import{B as g,a as b,b as T,c as k}from"./breadcrumb-ijphtzQp.js";import{i as B}from"./Loading01-B85tVuIU.js";import{u as S}from"./context-BTMVzdan.js";import"./task-status-DauQRqAW.js";import"./popover-CNIkv0WT.js";import"./skeleton-CNgs5GJt.js";import"./spinner-BZdAS5i2.js";import"./tooltip-CXZH0tSC.js";import"./index-10S4l3se.js";import"./constants-BCt7c81T.js";import"./use-mcp-prompts-C4X4lEEg.js";import"./useQuery-CEE9SUlS.js";import"./dialog-BDa2Gsq9.js";import"./X-CaaFSPD_.js";import"./form-BWoxqZfk.js";import"./label-BtaiiWJ8.js";import"./input-DPpAbHbD.js";import"./index-CTjqFNkw.js";import"./usage-BW6ztpN6.js";import"./ArrowUp-BtIkmj4Y.js";import"./ChevronDown-DElgod-p.js";import"./Edit01-BaPedGGl.js";import"./Lock01-WwvDQaaT.js";import"./Users03-CQa5jfkV.js";import"./use-copy-sxHnzQ3E.js";import"./AlertCircle-CI8iQIN4.js";import"./select-DeNgR918.js";import"./ChevronUp-CKkWbsZ5.js";import"./Check-GOz4_bBS.js";import"./org-ai-providers-CrQ3OeB5.js";import"./useMutation-CV3IN68C.js";import"./EyeOff-CucokIoZ.js";import"./Eye-BgAytXDm.js";import"./Key01-BZkaWvm5.js";import"./Trash01-BtiNjuw3.js";import"./card-CwEWrOs9.js";import"./toggle-group-B7g3fYap.js";import"./avatar-DWAYNsNK.js";import"./ai-providers-logos-BWU0RfRJ.js";import"./formatDistanceToNow-Cb2QZZJn.js";import"./differenceInSeconds-NQ4PDo0z.js";import"./ArrowLeft-BaV7db3X.js";import"./tabs-BeYHPY-1.js";import"./badge-B_BTuJZe.js";import"./collapsible-DILfwVxb.js";import"./index-B5vgf28x.js";import"./Code01-CDxb4LVl.js";import"./checkbox-B_91sMwd.js";import"./AlignLeft-D1a9nQq5.js";import"./Image01-BwGUDEUi.js";import"./RefreshCcw01-DJsZi8Hz.js";import"./SearchMd-CKp0BoPW.js";import"./Settings01-DunsMQ-m.js";import"./Tool01-Delk_MGO.js";import"./select-virtual-mcp-CFDIRCp8.js";import"./integration-icon-6jcHFHZV.js";import"./Container-C8ScaknS.js";import"./use-virtual-mcp-DfPJ-WDb.js";import"./use-collections-CObsJD7p.js";import"./use-create-virtual-mcp-dSjfTRl8.js";import"./use-mcp-resources-DoUnZI9j.js";import"./ChevronRight-Ys0vr-YD.js";import"./Copy01-DhAVspEC.js";import"./marked.esm-BaswSlok.js";import"./content-blocks-o63cs2vh.js";import"./mcp-app-renderer-DgOOTmoQ.js";import"./types-CPj3Y6i2.js";import"./Globe02-4oAOo4_d.js";import"./LayersTwo01-D9dHuPjU.js";import"./XClose-Dey3r3af.js";import"./Clock-DRICOB0c.js";import"./useSuspenseInfiniteQuery-B7NkSjI9.js";import"./infiniteQueryObserver-CzIVu_kK.js";import"./CheckCircle-DosFvCW2.js";import"./collection-search-Bdxpglbf.js";import"./user-_Hc5WOWn.js";import"./format-time-CMKyl-GC.js";import"./Plus-C9dY5EOr.js";import"./empty-state-C4c2sKjV.js";import"./dropdown-menu-DEQ5DCnG.js";import"./decopilot-events-Brt4gAR6.js";import"./index-Bc448aeG.js";function v(){const t=n.c(8),{org:o,project:s}=x(),a=j(),{switchToTask:c}=S();let i;t[0]!==a||t[1]!==o.slug||t[2]!==s.slug||t[3]!==c?(i=async u=>{await c(u),a({to:"/$org/$project",params:{org:o.slug,project:s.slug}})},t[0]=a,t[1]=o.slug,t[2]=s.slug,t[3]=c,t[4]=i):i=t[4];const l=i;let m;t[5]===Symbol.for("react.memo_cache_sentinel")?(m=r.jsx(e.Header,{children:r.jsx(e.Header.Left,{children:r.jsx(g,{children:r.jsx(b,{children:r.jsx(T,{children:r.jsx(k,{children:"Tasks"})})})})})}),t[5]=m):m=t[5];let p;return t[6]!==l?(p=r.jsxs(e,{children:[m,r.jsx(e.Content,{children:r.jsx("div",{className:"h-full flex flex-col overflow-hidden",children:r.jsx(h,{onTaskSelect:l})})})]}),t[6]=l,t[7]=p):p=t[7],p}function or(){const t=n.c(1);let o;return t[0]===Symbol.for("react.memo_cache_sentinel")?(o=r.jsx(d,{children:r.jsx(f.Suspense,{fallback:r.jsx("div",{className:"flex h-full items-center justify-center",children:r.jsx(B,{size:32,className:"animate-spin text-muted-foreground"})}),children:r.jsx(v,{})})}),t[0]=o):o=t[0],o}export{or as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{I as u}from"./infiniteQueryObserver-CzIVu_kK.js";import{_ as i}from"./index-DcxE8oe_.js";function t(e,r){return i(e,u,r)}export{t as u};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{_ as u,aj as s}from"./index-DcxE8oe_.js";function o(e,r){return u(e,s,r)}export{o as u};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{I as s}from"./infiniteQueryObserver-CzIVu_kK.js";import{_ as u,$ as n}from"./index-DcxE8oe_.js";function a(r,e){return u({...r,enabled:!0,suspense:!0,throwOnError:n},s,e)}export{a as u};
|