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/migrate.js
CHANGED
|
@@ -1579,7 +1579,7 @@ ${Q}
|
|
|
1579
1579
|
`;break}case"tool":throw new hz({functionality:"tool messages"});default:break}return W+=`${G}:
|
|
1580
1580
|
`,{prompt:W}}function gr4(Y){if(Y.type==="url")return{type:"image_url",image_url:{url:Y.url}};return{type:"image_url",image_url:{url:JX6({data:Y.data,mediaType:Y.mediaType,defaultMediaType:xr4})}}}function ur4(Y){return Object.fromEntries(Object.entries(Y).filter(([,X])=>X!=null))}function mr4(Y){if(!Y)return{};if(Y instanceof Headers)return Object.fromEntries(Y.entries());if(Array.isArray(Y))return Object.fromEntries(Y);return Y}function lr4(Y,X){let J=X.toLowerCase();return Object.keys(Y).find((G)=>G.toLowerCase()===J)}function dr4(Y,...X){let J=mr4(Y),G=ur4(J),W=lr4(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(t0({},Q),{"user-agent":Z})}function OS1(Y={}){var X,J,G;let W=(J=Vr4((X=Y.baseURL)!=null?X:Y.baseUrl))!=null?J:"https://openrouter.ai/api/v1",K=(G=Y.compatibility)!=null?G:"compatible",Z=()=>dr4(t0(t0({Authorization:`Bearer ${Ha4({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/${cr4}`),Q=(q,B={})=>new Sr4(q,B,{provider:"openrouter.chat",url:({path:O})=>`${W}${O}`,headers:Z,compatibility:K,fetch:Y.fetch,extraBody:Y.extraBody}),H=(q,B={})=>new kr4(q,B,{provider:"openrouter.completion",url:({path:O})=>`${W}${O}`,headers:Z,compatibility:K,fetch:Y.fetch,extraBody:Y.extraBody}),$=(q,B={})=>new yr4(q,B,{provider:"openrouter.embedding",url:({path:O})=>`${W}${O}`,headers:Z,fetch:Y.fetch,extraBody:Y.extraBody}),V=(q,B={})=>new br4(q,B,{provider:"openrouter.image",url:({path:O})=>`${W}${O}`,headers:Z,fetch:Y.fetch,extraBody:Y.extraBody}),z=(q,B)=>{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,B);return Q(q,B)},U=(q,B)=>z(q,B);return U.languageModel=z,U.chat=Q,U.completion=H,U.textEmbeddingModel=$,U.embedding=$,U.imageModel=V,U}var Ii4,Si4,ji4,i61,VY6,zY6,UY6=(Y)=>{throw TypeError(Y)},C96=(Y,X,J)=>(X in Y)?Ii4(Y,X,{enumerable:!0,configurable:!0,writable:!0,value:J}):Y[X]=J,t0=(Y,X)=>{for(var J in X||(X={}))if(VY6.call(X,J))C96(Y,J,X[J]);if(i61){for(var J of i61(X))if(zY6.call(X,J))C96(Y,J,X[J])}return Y},K9=(Y,X)=>Si4(Y,ji4(X)),Ux=(Y,X)=>{var J={};for(var G in Y)if(VY6.call(Y,G)&&X.indexOf(G)<0)J[G]=Y[G];if(Y!=null&&i61){for(var G of i61(Y))if(X.indexOf(G)<0&&zY6.call(Y,G))J[G]=Y[G]}return J},ki4=(Y,X,J)=>X.has(Y)||UY6("Cannot "+J),I96=(Y,X,J)=>(ki4(Y,X,"read from private field"),J?J.call(Y):X.get(Y)),_i4=(Y,X,J)=>X.has(Y)?UY6("Cannot add the same private member more than once"):X instanceof WeakSet?X.add(Y):X.set(Y,J),qY6="vercel.ai.error",vi4,S96,j96,GY,DY6="AI_APICallError",BY6,fi4,k96,_96,iH,LY6="AI_EmptyResponseBodyError",OY6,yi4,v96,f96,hi4,wY6="AI_InvalidArgumentError",MY6,bi4,y96,h96,AY6,PY6="AI_InvalidPromptError",EY6,xi4,b96,x96,gi4,TY6="AI_InvalidResponseDataError",RY6,ui4,g96,u96,zx,CY6="AI_JSONParseError",IY6,mi4,m96,l96,a61,SY6="AI_LoadAPIKeyError",jY6,li4,d96,c96,d61,kY6="AI_LoadSettingError",_Y6,di4,p96,n96,lWY,vY6="AI_NoContentGeneratedError",fY6,ci4,i96,a96,VS1,yY6="AI_NoSuchModelError",hY6,pi4,r96,o96,dWY,bY6="AI_TooManyEmbeddingValuesForCallError",xY6,ni4,s96,t96,cWY,gY6="AI_TypeValidationError",uY6,ii4,e96,YY6,qx,mY6="AI_UnsupportedFunctionalityError",lY6,ai4,XY6,JY6,hz,GY6,si4,ti4,aWY,dY6="AI_DownloadError",cY6,Ya4,WY6,ZY6,rWY,Xa4=({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 AY6({argument:"separator",message:`The separator "${G}" must not be part of the alphabet "${J}".`});return()=>`${Y}${G}${W()}`},nH,Ja4,Ka4="4.0.1",$a4,Fa4,za4,KY6,Ua4=(Y)=>typeof Y==="string"?K9(t0({},KY6),{name:Y}):t0(t0({},KY6),Y),La4=(Y,X)=>{return d9(Y.innerType._def,X)},Oa4=(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},Aa4=(Y)=>{if("type"in Y&&Y.type==="string")return!1;return"allOf"in Y},JS1=void 0,cH,Ta4,KS1,_a4=(Y,X)=>{let J=(Y.options instanceof Map?Array.from(Y.options.values()):Y.options).map((G,W)=>d9(G._def,K9(t0({},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},xa4=(Y,X)=>{var J;if(X.currentPath.toString()===((J=X.propertyPath)==null?void 0:J.toString()))return d9(Y.innerType._def,X);let G=d9(Y.innerType._def,K9(t0({},X),{currentPath:[...X.currentPath,"anyOf","1"]}));return G?{anyOf:[{not:lZ()},G]}:lZ()},ga4=(Y,X)=>{if(X.pipeStrategy==="input")return d9(Y.in._def,X);else if(X.pipeStrategy==="output")return d9(Y.out._def,X);let J=d9(Y.in._def,K9(t0({},X),{currentPath:[...X.currentPath,"allOf","0"]})),G=d9(Y.out._def,K9(t0({},X),{currentPath:[...X.currentPath,"allOf",J?"1":"0"]}));return{allOf:[J,G].filter((W)=>W!==void 0)}},pa4=(Y,X)=>{return d9(Y.innerType._def,X)},na4=(Y,X,J)=>{switch(X){case x1.ZodString:return iY6(Y,J);case x1.ZodNumber:return fa4(Y);case x1.ZodObject:return ya4(Y,J);case x1.ZodBigInt:return Da4(Y);case x1.ZodBoolean:return Ba4();case x1.ZodDate:return nY6(Y,J);case x1.ZodUndefined:return da4();case x1.ZodNull:return ja4();case x1.ZodArray:return qa4(Y,J);case x1.ZodUnion:case x1.ZodDiscriminatedUnion:return ka4(Y,J);case x1.ZodIntersection:return Pa4(Y,J);case x1.ZodTuple:return la4(Y,J);case x1.ZodRecord:return aY6(Y,J);case x1.ZodLiteral:return Ea4(Y);case x1.ZodEnum:return Ma4(Y);case x1.ZodNativeEnum:return Ia4(Y);case x1.ZodNullable:return va4(Y,J);case x1.ZodOptional:return xa4(Y,J);case x1.ZodMap:return Ca4(Y,J);case x1.ZodSet:return ma4(Y,J);case x1.ZodLazy:return()=>Y.getter()._def;case x1.ZodPromise:return ua4(Y,J);case x1.ZodNaN:case x1.ZodNever:return Sa4();case x1.ZodEffects:return wa4(Y,J);case x1.ZodAny:return lZ();case x1.ZodUnknown:return ca4();case x1.ZodDefault:return Na4(Y,J);case x1.ZodBranded:return pY6(Y,J);case x1.ZodReadonly:return pa4(Y,J);case x1.ZodCatch:return La4(Y,J);case x1.ZodPipeline:return ga4(Y,J);case x1.ZodFunction:case x1.ZodVoid:case x1.ZodSymbol:return;default:return((G)=>{return})(X)}},ia4=(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("/")},aa4=(Y,X)=>{switch(X.$refStrategy){case"root":return{$ref:Y.path.join("/")};case"relative":return{$ref:ia4(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`),lZ();return X.$refStrategy==="seen"?lZ():void 0}}},ra4=(Y,X,J)=>{if(Y.description)J.description=Y.description;return J},oa4=(Y)=>{let X=Ua4(Y),J=X.name!==void 0?[...X.basePath,X.definitionPath,X.name]:X.basePath;return K9(t0({},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}]))})},sa4=(Y,X)=>{var J;let G=oa4(X),W=typeof X==="object"&&X.definitions?Object.entries(X.definitions).reduce(($,[V,z])=>{var U;return K9(t0({},$),{[V]:(U=d9(z._def,K9(t0({},G),{currentPath:[...G.basePath,G.definitionPath,V]}),!0))!=null?U:lZ()})},{}):void 0,K=typeof X==="string"?X:(X==null?void 0:X.nameStrategy)==="title"?void 0:X==null?void 0:X.name,Z=(J=d9(Y._def,K===void 0?G:K9(t0({},G),{currentPath:[...G.basePath,G.definitionPath,K]}),!1))!=null?J:lZ(),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(t0({},Z),{[G.definitionPath]:W}):Z:{$ref:[...G.$refStrategy==="relative"?[]:G.basePath,G.definitionPath,K].join("/"),[G.definitionPath]:K9(t0({},W),{[K]:Z})};return H.$schema="http://json-schema.org/draft-07/schema#",H},HS1,Hr4=()=>globalThis.fetch,mR=async({url:Y,headers:X,body:J,failedResponseHandler:G,successfulResponseHandler:W,abortSignal:K,fetch:Z})=>$r4({url:Y,headers:t0({"Content-Type":"application/json"},X),body:{content:JSON.stringify(J),values:J},failedResponseHandler:G,successfulResponseHandler:W,abortSignal:K,fetch:Z}),$r4=async({url:Y,headers:X={},body:J,successfulResponseHandler:G,failedResponseHandler:W,abortSignal:K,fetch:Z=Hr4()})=>{try{let Q=await Z(Y,{method:"POST",headers:Qa4(X,`ai-sdk/provider-utils/${Ka4}`,Wa4()),body:J.content,signal:K}),H=t61(Q);if(!Q.ok){let $;try{$=await W({response:Q,url:Y,requestBodyValues:J.values})}catch(V){if(QS1(V)||iH.isInstance(V))throw V;throw new iH({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(QS1($)||iH.isInstance($))throw $}throw new iH({message:"Failed to process successful response",cause:$,statusCode:Q.status,url:Y,responseHeaders:H,requestBodyValues:J.values})}}catch(Q){throw Ga4({error:Q,url:Y,requestBodyValues:J.values})}},Fr4=({errorSchema:Y,errorToMessage:X,isRetryable:J})=>async({response:G,url:W,requestBodyValues:K})=>{let Z=await G.text(),Q=t61(G);if(Z.trim()==="")return{responseHeaders:Q,value:new iH({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 Qr4({text:Z,schema:Y});return{responseHeaders:Q,value:new iH({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 iH({message:G.statusText,url:W,requestBodyValues:K,statusCode:G.status,responseHeaders:Q,responseBody:Z,isRetryable:J==null?void 0:J(G)})}}},sY6=(Y)=>async({response:X})=>{let J=t61(X);if(X.body==null)throw new hi4({});return{responseHeaders:J,value:Kr4({stream:X.body,schema:Y})}},Y41=(Y)=>async({response:X,url:J,requestBodyValues:G})=>{let W=await X.text(),K=await oY6({text:W,schema:Y}),Z=t61(X);if(!K.success)throw new iH({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}},tY6,US1,zr4,Ur4,qr4,qS1,p61,DS1,sWY,X41,lR,eY6,BS1,YX6,n61,Lr4=class{constructor(){_i4(this,n61,new Set)}upsert(Y){let X=this.getCanonicalKey(Y);if(X===null)return!1;if(I96(this,n61).has(X))return!1;return I96(this,n61).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}}},Or4,Nr4,XZY,Tr4,Rr4,GX6,WX6,Cr4,Ir4,Sr4=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=t0(t0({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:t0({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:Mr4(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 B=V.filter((O)=>O.type==="function").map((O)=>({type:"function",function:{name:O.name,description:O.description,parameters:O.inputSchema}}));return K9(t0({},q),{tools:B,tool_choice:z?Er4(z):void 0})}return q}async doGenerate(Y){var X,J,G,W,K,Z,Q,H,$,V,z,U,q,B,O,M,P,C,k,T,E,S;let x=(Y.providerOptions||{}).openrouter||{},{cacheControl:d}=x,u=Ux(x,["cacheControl"]),e=t0(t0(t0({},this.getArgs(Y)),u),d!=null&&!("cache_control"in u)?{cache_control:d}:{}),{value:n,responseHeaders:m}=await mR({url:this.config.url({path:"/chat/completions",modelId:this.modelId}),headers:uR(this.config.headers(),Y.headers),body:e,failedResponseHandler:lR,successfulResponseHandler:Y41(Cr4),abortSignal:Y.abortSignal,fetch:this.config.fetch});if("error"in n){let Q1=n.error;throw new iH({message:Q1.message,url:this.config.url({path:"/chat/completions",modelId:this.modelId}),requestBodyValues:e,statusCode:200,responseHeaders:m,data:Q1})}let o=n,H1=o.choices[0];if(!H1)throw new VS1({message:"No choice in response"});let Z1=o.usage?r61(o.usage):XX6(),O1=(X=H1.message.reasoning_details)!=null?X:[],M1=O1.length>0?O1.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}]:[],C1=[];if(C1.push(...M1),H1.message.content)C1.push({type:"text",text:H1.message.content});if(H1.message.tool_calls){let Q1=!1;for(let J0 of H1.message.tool_calls)C1.push({type:"tool-call",toolCallId:(J=J0.id)!=null?J:nH(),toolName:J0.function.name,input:(G=J0.function.arguments)!=null?G:"{}",providerMetadata:!Q1?{openrouter:{reasoning_details:O1}}:void 0}),Q1=!0}if(H1.message.images)for(let Q1 of H1.message.images)C1.push({type:"file",mediaType:$Y6(Q1.image_url.url,"image/jpeg"),data:s61(Q1.image_url.url)});if(H1.message.annotations){for(let Q1 of H1.message.annotations)if(Q1.type==="url_citation")C1.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 f1=(H=H1.message.annotations)==null?void 0:H.filter((Q1)=>Q1.type==="file"),y1=H1.message.tool_calls&&H1.message.tool_calls.length>0,z0=O1.some((Q1)=>Q1.type==="reasoning.encrypted"&&Q1.data),v1=y1&&z0&&H1.finish_reason==="stop"?XB("tool-calls",($=H1.finish_reason)!=null?$:void 0):o61(H1.finish_reason);return{content:C1,finishReason:v1,usage:Z1,warnings:[],providerMetadata:{openrouter:BS1.parse({provider:(V=o.provider)!=null?V:"",reasoning_details:(z=H1.message.reasoning_details)!=null?z:[],annotations:f1&&f1.length>0?f1:void 0,usage:t0(t0(t0(t0({promptTokens:(U=Z1.inputTokens.total)!=null?U:0,completionTokens:(q=Z1.outputTokens.total)!=null?q:0,totalTokens:((B=Z1.inputTokens.total)!=null?B:0)+((O=Z1.outputTokens.total)!=null?O:0)},((M=o.usage)==null?void 0:M.cost)!=null?{cost:o.usage.cost}:{}),((C=(P=o.usage)==null?void 0:P.prompt_tokens_details)==null?void 0:C.cached_tokens)!=null?{promptTokensDetails:{cachedTokens:o.usage.prompt_tokens_details.cached_tokens}}:{}),((T=(k=o.usage)==null?void 0:k.completion_tokens_details)==null?void 0:T.reasoning_tokens)!=null?{completionTokensDetails:{reasoningTokens:o.usage.completion_tokens_details.reasoning_tokens}}:{}),((S=(E=o.usage)==null?void 0:E.cost_details)==null?void 0:S.upstream_inference_cost)!=null?{costDetails:{upstreamInferenceCost:o.usage.cost_details.upstream_inference_cost}}:{})})},request:{body:e},response:{id:o.id,modelId:o.model,headers:m}}}async doStream(Y){var X;let W=(Y.providerOptions||{}).openrouter||{},{cacheControl:K}=W,Z=Ux(W,["cacheControl"]),Q=t0(t0(t0({},this.getArgs(Y)),Z),K!=null&&!("cache_control"in Z)?{cache_control:K}:{}),{value:H,responseHeaders:$}=await mR({url:this.config.url({path:"/chat/completions",modelId:this.modelId}),headers:uR(this.config.headers(),Y.headers),body:K9(t0({},Q),{stream:!0,stream_options:this.config.compatibility==="strict"?t0({include_usage:!0},((X=this.settings.usage)==null?void 0:X.include)?{include_usage:!0}:{}):void 0}),failedResponseHandler:lR,successfulResponseHandler:sY6(Ir4),abortSignal:Y.abortSignal,fetch:this.config.fetch}),V=[],z=XB("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={},B,O=[],M=!1,P=[],C=!1,k=!1,T,E,S,h;return{stream:H.pipeThrough(new TransformStream({transform(_,x){var d,u,e,n,m,o,H1,Z1,O1,M1,C1,f1,y1,z0,p1,v1,Q1,J0,P0,S0,o1;if(Y.includeRawChunks)x.enqueue({type:"raw",rawValue:_.rawValue});if(!_.success){z=XB("error"),x.enqueue({type:"error",error:_.error});return}let E1=_.value;if("error"in E1){z=XB("error"),x.enqueue({type:"error",error:E1.error});return}if(E1.provider)h=E1.provider;if(E1.id)S=E1.id,x.enqueue({type:"response-metadata",id:E1.id});if(E1.model)x.enqueue({type:"response-metadata",modelId:E1.model});if(E1.usage!=null){let V1=r61(E1.usage);Object.assign(U.inputTokens,V1.inputTokens),Object.assign(U.outputTokens,V1.outputTokens),B=E1.usage;let a1=(d=E1.usage.prompt_tokens)!=null?d:0,l1=(u=E1.usage.completion_tokens)!=null?u:0;if(q.promptTokens=a1,E1.usage.prompt_tokens_details)q.promptTokensDetails={cachedTokens:(e=E1.usage.prompt_tokens_details.cached_tokens)!=null?e:0};if(q.completionTokens=l1,E1.usage.completion_tokens_details)q.completionTokensDetails={reasoningTokens:(n=E1.usage.completion_tokens_details.reasoning_tokens)!=null?n:0};if(E1.usage.cost!=null)q.cost=E1.usage.cost;q.totalTokens=E1.usage.total_tokens;let i1=(m=E1.usage.cost_details)==null?void 0:m.upstream_inference_cost;if(i1!=null)q.costDetails={upstreamInferenceCost:i1}}let D1=E1.choices[0];if((D1==null?void 0:D1.finish_reason)!=null)z=o61(D1.finish_reason);if((D1==null?void 0:D1.delta)==null)return;let K1=D1.delta,w1=(V1,a1)=>{if(!k)E=S||nH(),x.enqueue({providerMetadata:a1,type:"reasoning-start",id:E}),k=!0;x.enqueue({providerMetadata:a1,type:"reasoning-delta",delta:V1,id:E||nH()})};if(K1.reasoning_details&&K1.reasoning_details.length>0){for(let a1 of K1.reasoning_details)if(a1.type==="reasoning.text"){let l1=O[O.length-1];if((l1==null?void 0:l1.type)==="reasoning.text")l1.text=(l1.text||"")+(a1.text||""),l1.signature=l1.signature||a1.signature,l1.format=l1.format||a1.format;else O.push(t0({},a1))}else O.push(a1);let V1={openrouter:{reasoning_details:O.map((a1)=>t0({},a1))}};for(let a1 of K1.reasoning_details)switch(a1.type){case"reasoning.text":{w1(a1.text||"",V1);break}case"reasoning.encrypted":{if(a1.data)w1("[REDACTED]",V1);break}case"reasoning.summary":{if(a1.summary)w1(a1.summary,V1);break}default:break}}else if(K1.reasoning)w1(K1.reasoning);if(K1.content){if(k&&!C)x.enqueue({type:"reasoning-end",id:E||nH(),providerMetadata:O.length>0?{openrouter:{reasoning_details:O}}:void 0}),k=!1;if(!C)T=S||nH(),x.enqueue({type:"text-start",id:T}),C=!0;x.enqueue({type:"text-delta",delta:K1.content,id:T||nH()})}if(K1.annotations){for(let V1 of K1.annotations)if(V1.type==="url_citation")x.enqueue({type:"source",sourceType:"url",id:V1.url_citation.url,url:V1.url_citation.url,title:(o=V1.url_citation.title)!=null?o:"",providerMetadata:{openrouter:{content:(H1=V1.url_citation.content)!=null?H1:"",startIndex:(Z1=V1.url_citation.start_index)!=null?Z1:0,endIndex:(O1=V1.url_citation.end_index)!=null?O1:0}}});else if(V1.type==="file"){let a1=V1.file;if(a1&&typeof a1==="object"&&"hash"in a1&&"name"in a1)P.push(V1)}}if(K1.tool_calls!=null)for(let V1 of K1.tool_calls){let a1=(M1=V1.index)!=null?M1:V.length-1;if(V[a1]==null){if(V1.type!=="function")throw new zx({data:V1,message:"Expected 'function' type."});if(V1.id==null)throw new zx({data:V1,message:"Expected 'id' to be a string."});if(((C1=V1.function)==null?void 0:C1.name)==null)throw new zx({data:V1,message:"Expected 'function.name' to be a string."});V[a1]={id:V1.id,type:"function",function:{name:V1.function.name,arguments:(f1=V1.function.arguments)!=null?f1:""},inputStarted:!1,sent:!1};let i1=V[a1];if(i1==null)throw new zx({data:{index:a1,toolCallsLength:V.length},message:`Tool call at index ${a1} is missing after creation.`});if(((y1=i1.function)==null?void 0:y1.name)!=null&&((z0=i1.function)==null?void 0:z0.arguments)!=null&&WS1(i1.function.arguments))i1.inputStarted=!0,x.enqueue({type:"tool-input-start",id:i1.id,toolName:i1.function.name}),x.enqueue({type:"tool-input-delta",id:i1.id,delta:i1.function.arguments}),x.enqueue({type:"tool-input-end",id:i1.id}),x.enqueue({type:"tool-call",toolCallId:i1.id,toolName:i1.function.name,input:i1.function.arguments,providerMetadata:!M?{openrouter:{reasoning_details:O}}:void 0}),M=!0,i1.sent=!0;continue}let l1=V[a1];if(l1==null)throw new zx({data:{index:a1,toolCallsLength:V.length,toolCallDelta:V1},message:`Tool call at index ${a1} is missing during merge.`});if(!l1.inputStarted)l1.inputStarted=!0,x.enqueue({type:"tool-input-start",id:l1.id,toolName:l1.function.name});if(((p1=V1.function)==null?void 0:p1.arguments)!=null)l1.function.arguments+=(Q1=(v1=V1.function)==null?void 0:v1.arguments)!=null?Q1:"";if(x.enqueue({type:"tool-input-delta",id:l1.id,delta:(J0=V1.function.arguments)!=null?J0:""}),((P0=l1.function)==null?void 0:P0.name)!=null&&((S0=l1.function)==null?void 0:S0.arguments)!=null&&WS1(l1.function.arguments))x.enqueue({type:"tool-call",toolCallId:(o1=l1.id)!=null?o1:nH(),toolName:l1.function.name,input:l1.function.arguments,providerMetadata:!M?{openrouter:{reasoning_details:O}}:void 0}),M=!0,l1.sent=!0}if(K1.images!=null)for(let V1 of K1.images)x.enqueue({type:"file",mediaType:$Y6(V1.image_url.url,"image/jpeg"),data:s61(V1.image_url.url)})},flush(_){var x;let d=V.length>0,u=O.some((n)=>n.type==="reasoning.encrypted"&&n.data);if(d&&u&&z.unified==="stop")z=XB("tool-calls",z.raw);if(z.unified==="tool-calls"){for(let n of V)if(n&&!n.sent)_.enqueue({type:"tool-call",toolCallId:(x=n.id)!=null?x:nH(),toolName:n.function.name,input:WS1(n.function.arguments)?n.function.arguments:"{}",providerMetadata:!M?{openrouter:{reasoning_details:O}}:void 0}),M=!0,n.sent=!0}if(k)_.enqueue({type:"reasoning-end",id:E||nH(),providerMetadata:O.length>0?{openrouter:{reasoning_details:O}}:void 0});if(C)_.enqueue({type:"text-end",id:T||nH()});let e={usage:q};if(h!==void 0)e.provider=h;if(O.length>0)e.reasoning_details=O;if(P.length>0)e.annotations=P;U.raw=B,_.enqueue({type:"finish",finishReason:z,usage:U,providerMetadata:{openrouter:e}})}})),warnings:[],request:{body:Q},response:{headers:$}}}},FY6,kr4=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}=jr4({prompt:Y,inputFormat:"prompt"});if(V==null?void 0:V.length)throw new hz({functionality:"tools"});if(z)throw new hz({functionality:"toolChoice"});return t0(t0({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,B,O,M,P;let k=(Y.providerOptions||{}).openrouter||{},T=t0(t0({},this.getArgs(Y)),k),{value:E,responseHeaders:S}=await mR({url:this.config.url({path:"/completions",modelId:this.modelId}),headers:uR(this.config.headers(),Y.headers),body:T,failedResponseHandler:lR,successfulResponseHandler:Y41(FY6),abortSignal:Y.abortSignal,fetch:this.config.fetch});if("error"in E){let _=E.error;throw new iH({message:_.message,url:this.config.url({path:"/completions",modelId:this.modelId}),requestBodyValues:T,statusCode:200,responseHeaders:S,data:_})}let h=E.choices[0];if(!h)throw new VS1({message:"No choice in OpenRouter completion response"});return{content:[{type:"text",text:(X=h.text)!=null?X:""}],finishReason:o61(h.finish_reason),usage:E.usage?r61(E.usage):XX6(),warnings:[],providerMetadata:{openrouter:BS1.parse({provider:(J=E.provider)!=null?J:"",usage:t0(t0(t0(t0({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=(B=E.usage)==null?void 0:B.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:S}}}async doStream(Y){let J=(Y.providerOptions||{}).openrouter||{},G=t0(t0({},this.getArgs(Y)),J),{value:W,responseHeaders:K}=await mR({url:this.config.url({path:"/completions",modelId:this.modelId}),headers:uR(this.config.headers(),Y.headers),body:K9(t0({},G),{stream:!0,stream_options:this.config.compatibility==="strict"?{include_usage:!0}:void 0}),failedResponseHandler:lR,successfulResponseHandler:sY6(FY6),abortSignal:Y.abortSignal,fetch:this.config.fetch}),Z=XB("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,B,O,M,P;if(Y.includeRawChunks)U.enqueue({type:"raw",rawValue:z.rawValue});if(!z.success){Z=XB("error"),U.enqueue({type:"error",error:z.error});return}let C=z.value;if("error"in C){Z=XB("error"),U.enqueue({type:"error",error:C.error});return}if(C.provider)$=C.provider;if(C.usage!=null){let T=r61(C.usage);Object.assign(Q.inputTokens,T.inputTokens),Object.assign(Q.outputTokens,T.outputTokens),V=C.usage;let E=(q=C.usage.prompt_tokens)!=null?q:0,S=(B=C.usage.completion_tokens)!=null?B:0;if(H.promptTokens=E,C.usage.prompt_tokens_details)H.promptTokensDetails={cachedTokens:(O=C.usage.prompt_tokens_details.cached_tokens)!=null?O:0};if(H.completionTokens=S,C.usage.completion_tokens_details)H.completionTokensDetails={reasoningTokens:(M=C.usage.completion_tokens_details.reasoning_tokens)!=null?M:0};if(C.usage.cost!=null)H.cost=C.usage.cost;H.totalTokens=C.usage.total_tokens;let h=(P=C.usage.cost_details)==null?void 0:P.upstream_inference_cost;if(h!=null)H.costDetails={upstreamInferenceCost:h}}let k=C.choices[0];if((k==null?void 0:k.finish_reason)!=null)Z=o61(k.finish_reason);if((k==null?void 0:k.text)!=null)U.enqueue({type:"text-delta",delta:k.text,id:nH()})},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}}}},_r4,vr4,fr4,yr4=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=t0(t0({model:this.modelId,input:Q,user:this.settings.user,provider:this.settings.provider},this.config.extraBody),this.settings.extraBody),{value:z,responseHeaders:U}=await mR({url:this.config.url({path:"/embeddings",modelId:this.modelId}),headers:uR(this.config.headers(),$),body:V,failedResponseHandler:lR,successfulResponseHandler:Y41(fr4),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:BS1.parse({provider:(X=z.provider)!=null?X:"",usage:t0({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:[]}}},hr4,br4=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 hz({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 B=K!==void 0?{aspect_ratio:K}:void 0,M=Q!==void 0&&Q.length>0?[...Q.map((h)=>gr4(h)),{type:"text",text:J!=null?J:""}]:J!=null?J:"",P=t0(t0(t0(t0(t0(t0(t0({model:this.modelId,messages:[{role:"user",content:M}],modalities:["image","text"]},B!==void 0&&{image_config:B}),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:C,responseHeaders:k}=await mR({url:this.config.url({path:"/chat/completions",modelId:this.modelId}),headers:uR(this.config.headers(),V),body:P,failedResponseHandler:lR,successfulResponseHandler:Y41(hr4),abortSignal:$,fetch:this.config.fetch}),T=C.choices[0];if(!T)throw new VS1({message:"No choice in response"});let E=[];if((X=T.message)==null?void 0:X.images)for(let h of T.message.images){let _=h.image_url.url;E.push(s61(_))}let S=C.usage?{inputTokens:C.usage.prompt_tokens,outputTokens:C.usage.completion_tokens,totalTokens:C.usage.total_tokens}:void 0;return{images:E,warnings:q,response:{timestamp:new Date,modelId:C.model,headers:k},usage:S}}},xr4="image/png",cr4="2.3.1",KZY;var ZX6=A(()=>{J6();TK();TK();TK();J6();J6();J6();J6();J6();J6();J6();J6();J6();Ii4=Object.defineProperty,Si4=Object.defineProperties,ji4=Object.getOwnPropertyDescriptors,i61=Object.getOwnPropertySymbols,VY6=Object.prototype.hasOwnProperty,zY6=Object.prototype.propertyIsEnumerable,vi4=Symbol.for(qY6),GY=class Y extends(j96=Error,S96=vi4,j96){constructor({name:X,message:J,cause:G}){super(J);this[S96]=!0,this.name=X,this.cause=G}static isInstance(X){return Y.hasMarker(X,qY6)}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}},BY6=`vercel.ai.error.${DY6}`,fi4=Symbol.for(BY6),iH=class extends(_96=GY,k96=fi4,_96){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:DY6,message:Y,cause:Z});this[k96]=!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 GY.hasMarker(Y,BY6)}},OY6=`vercel.ai.error.${LY6}`,yi4=Symbol.for(OY6),hi4=class extends(f96=GY,v96=yi4,f96){constructor({message:Y="Empty response body"}={}){super({name:LY6,message:Y});this[v96]=!0}static isInstance(Y){return GY.hasMarker(Y,OY6)}};MY6=`vercel.ai.error.${wY6}`,bi4=Symbol.for(MY6),AY6=class extends(h96=GY,y96=bi4,h96){constructor({message:Y,cause:X,argument:J}){super({name:wY6,message:Y,cause:X});this[y96]=!0,this.argument=J}static isInstance(Y){return GY.hasMarker(Y,MY6)}},EY6=`vercel.ai.error.${PY6}`,xi4=Symbol.for(EY6),gi4=class extends(x96=GY,b96=xi4,x96){constructor({prompt:Y,message:X,cause:J}){super({name:PY6,message:`Invalid prompt: ${X}`,cause:J});this[b96]=!0,this.prompt=Y}static isInstance(Y){return GY.hasMarker(Y,EY6)}},RY6=`vercel.ai.error.${TY6}`,ui4=Symbol.for(RY6),zx=class extends(u96=GY,g96=ui4,u96){constructor({data:Y,message:X=`Invalid response data: ${JSON.stringify(Y)}.`}){super({name:TY6,message:X});this[g96]=!0,this.data=Y}static isInstance(Y){return GY.hasMarker(Y,RY6)}},IY6=`vercel.ai.error.${CY6}`,mi4=Symbol.for(IY6),a61=class extends(l96=GY,m96=mi4,l96){constructor({text:Y,cause:X}){super({name:CY6,message:`JSON parsing failed: Text: ${Y}.
|
|
1581
1581
|
Error message: ${NY6(X)}`,cause:X});this[m96]=!0,this.text=Y}static isInstance(Y){return GY.hasMarker(Y,IY6)}},jY6=`vercel.ai.error.${SY6}`,li4=Symbol.for(jY6),d61=class extends(c96=GY,d96=li4,c96){constructor({message:Y}){super({name:SY6,message:Y});this[d96]=!0}static isInstance(Y){return GY.hasMarker(Y,jY6)}},_Y6=`vercel.ai.error.${kY6}`,di4=Symbol.for(_Y6),lWY=class extends(n96=GY,p96=di4,n96){constructor({message:Y}){super({name:kY6,message:Y});this[p96]=!0}static isInstance(Y){return GY.hasMarker(Y,_Y6)}},fY6=`vercel.ai.error.${vY6}`,ci4=Symbol.for(fY6),VS1=class extends(a96=GY,i96=ci4,a96){constructor({message:Y="No content generated."}={}){super({name:vY6,message:Y});this[i96]=!0}static isInstance(Y){return GY.hasMarker(Y,fY6)}},hY6=`vercel.ai.error.${yY6}`,pi4=Symbol.for(hY6),dWY=class extends(o96=GY,r96=pi4,o96){constructor({errorName:Y=yY6,modelId:X,modelType:J,message:G=`No such ${J}: ${X}`}){super({name:Y,message:G});this[r96]=!0,this.modelId=X,this.modelType=J}static isInstance(Y){return GY.hasMarker(Y,hY6)}},xY6=`vercel.ai.error.${bY6}`,ni4=Symbol.for(xY6),cWY=class extends(t96=GY,s96=ni4,t96){constructor(Y){super({name:bY6,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[s96]=!0,this.provider=Y.provider,this.modelId=Y.modelId,this.maxEmbeddingsPerCall=Y.maxEmbeddingsPerCall,this.values=Y.values}static isInstance(Y){return GY.hasMarker(Y,xY6)}},uY6=`vercel.ai.error.${gY6}`,ii4=Symbol.for(uY6),qx=class Y extends(YY6=GY,e96=ii4,YY6){constructor({value:X,cause:J}){super({name:gY6,message:`Type validation failed: Value: ${JSON.stringify(X)}.
|
|
1582
|
-
Error message: ${NY6(J)}`,cause:J});this[e96]=!0,this.value=X}static isInstance(X){return GY.hasMarker(X,uY6)}static wrap({value:X,cause:J}){return Y.isInstance(J)&&J.value===X?J:new Y({value:X,cause:J})}},lY6=`vercel.ai.error.${mY6}`,ai4=Symbol.for(lY6),hz=class extends(JY6=GY,XY6=ai4,JY6){constructor({functionality:Y,message:X=`'${Y}' functionality not supported.`}){super({name:mY6,message:X});this[XY6]=!0,this.functionality=Y}static isInstance(Y){return GY.hasMarker(Y,lY6)}},GY6=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}};si4=class extends TransformStream{constructor({onError:Y,onRetry:X,onComment:J}={}){let G;super({start(W){G=ri4({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:ti4,atob:aWY}=globalThis);cY6=`vercel.ai.error.${dY6}`,Ya4=Symbol.for(cY6),rWY=class extends(ZY6=GY,WY6=Ya4,ZY6){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:dY6,message:W,cause:G});this[WY6]=!0,this.url=Y,this.statusCode=X,this.statusText=J}static isInstance(Y){return GY.hasMarker(Y,cY6)}},nH=Xa4();Ja4=["fetch failed","failed to fetch"];$a4=/"__proto__"\s*:/,Fa4=/"constructor"\s*:/;za4=Symbol("Let zodToJsonSchema decide on which parser to use"),KY6={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"};cH={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(JS1===void 0)JS1=RegExp("^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$","u");return JS1},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-_]*$/};Ta4=new Set("ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789");KS1={ZodString:"string",ZodNumber:"number",ZodBigInt:"integer",ZodBoolean:"boolean",ZodNull:"null"};HS1=Symbol.for("vercel.ai.schema");tY6=((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})(tY6||{}),US1=F.object({id:F.string().nullish(),format:F.enum(tY6).nullish(),index:F.number().optional()}).loose(),zr4=F.object({type:F.literal("reasoning.summary"),summary:F.string()}).extend(US1.shape),Ur4=F.object({type:F.literal("reasoning.encrypted"),data:F.string()}).extend(US1.shape),qr4=F.object({type:F.literal("reasoning.text"),text:F.string().nullish(),signature:F.string().nullish()}).extend(US1.shape),qS1=F.union([zr4,Ur4,qr4]),p61=F.union([qS1,F.unknown().transform(()=>null)]),DS1=F.array(p61).transform((Y)=>Y.filter((X)=>!!X)),sWY=F.union([F.object({delta:F.object({reasoning_details:F.array(p61)})}).transform((Y)=>Y.delta.reasoning_details.filter(ZS1)),F.object({message:F.object({reasoning_details:F.array(p61)})}).transform((Y)=>Y.message.reasoning_details.filter(ZS1)),F.object({text:F.string(),reasoning_details:F.array(p61)}).transform((Y)=>Y.reasoning_details.filter(ZS1))]),X41=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();lR=Fr4({errorSchema:X41,errorToMessage:Dr4}),eY6=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()),BS1=F.object({provider:F.string(),reasoning_details:F.array(qS1).optional(),annotations:F.array(eY6).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()),YX6=F.object({openrouter:F.object({reasoning_details:F.array(qS1).optional(),annotations:F.array(eY6).optional()}).optional()}).optional();n61=new WeakMap;Or4=["wav","mp3","aiff","aac","ogg","flac","m4a","pcm16","pcm24"];Nr4={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"};XZY=F.union([F.literal("auto"),F.literal("none"),F.literal("required"),F.object({type:F.literal("function"),function:F.object({name:F.string()})})]);Tr4=F.object({type:F.literal("image_url"),image_url:F.object({url:F.string()}).passthrough()}).passthrough(),Rr4=F.union([Tr4,F.unknown().transform(()=>null)]),GX6=F.array(Rr4).transform((Y)=>Y.filter((X)=>!!X)),WX6=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(),Cr4=F.union([WX6.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:DS1.nullish(),images:GX6.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())}),X41.extend({user_id:F.string().optional()})]),Ir4=F.union([WX6.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:DS1.nullish(),images:GX6.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())}),X41]);FY6=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:DS1.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(),X41]),_r4=F.object({prompt_tokens:F.number(),total_tokens:F.number(),cost:F.number().optional()}),vr4=F.object({object:F.literal("embedding"),embedding:F.array(F.number()),index:F.number().optional()}),fr4=F.object({id:F.string().optional(),object:F.literal("list"),data:F.array(vr4),model:F.string(),provider:F.string().optional(),usage:_r4.optional()}),hr4=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();KZY=OS1({compatibility:"strict"})});var pr4="https://assets.decocache.com/decocms/b2e2f64f-6025-45f7-9e8c-3b3ebdd073d8/openrouter_logojpg.jpg",J41;var NS1=A(()=>{ZX6();J41={info:{id:"openrouter",name:"OpenRouter",description:"Unified API for multiple AI providers",logo:pr4},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=OS1({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 G41,QX6;var KX6=A(()=>{NS1();FW();G41=x4.DECO_AI_GATEWAY_URL??"https://ai-site.decocache.com",QX6={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`${G41}/oauth/authorize?${W}`},async exchangeOAuthCode({code:Y,codeVerifier:X}){let J=await fetch(`${G41}/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(`${G41}/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(`${G41}/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{...J41.create(Y),info:this.info}}}});var nr4,JK;var hw=A(()=>{V96();R96();NS1();KX6();FW();nr4=x4.DECO_AI_GATEWAY_ENABLED,JK={...nr4&&{deco:QX6},anthropic:F96,google:T96,openrouter:J41}});var wS1;var HX6=A(()=>{r1();p0();hw();wS1=h1({name:"AI_PROVIDERS_LIST",description:"List all available AI providers that can be connected with an API key",inputSchema:u0.object({}),outputSchema:u0.object({providers:u0.array(u0.object({id:u0.string(),name:u0.string(),description:u0.string(),logo:u0.string().optional(),supportedMethods:u0.array(u0.enum(["api-key","oauth-pkce"])),supportsTopUp:u0.boolean().optional(),supportsCredits:u0.boolean().optional()}))}),handler:async(Y,X)=>{return X0(X),U0(X),await X.access.check(),{providers:Object.values(JK).filter((G)=>!!G).map((G)=>({...G.info,supportedMethods:G.supportedMethods,supportsTopUp:!!G.getTopUpUrl,supportsCredits:!!G.getCreditsBalance}))}}})});var W41;var MS1=A(()=>{W41=["owner","admin"]});function ir4(Y){if(!Y)return;if(!("models"in Y))return;return Y.models??void 0}function $X6(Y,X){if(!Y)return!0;if(Y.includes("*:*"))return!0;return Y.some((J)=>J.startsWith(`${X}:`))}function FX6(Y,X,J){if(!Y)return!0;return Y.includes("*:*")||Y.includes(`${X}:*`)||Y.includes(`${X}:${J}`)}async function Z41(Y,X,J){if(!J||W41.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 ir4(W)}catch{return console.error(`[model-permissions] Failed to parse permissions for role: ${J}`),[]}}var AS1=A(()=>{MS1()});var PS1;var VX6=A(()=>{r1();p0();AS1();PS1=h1({name:"AI_PROVIDERS_LIST_MODELS",description:"List models available from an AI provider using a specific API key",inputSchema:u0.object({keyId:u0.string().describe("The provider key ID to use")}),outputSchema:u0.object({models:u0.array(u0.object({providerId:u0.string(),modelId:u0.string(),title:u0.string(),description:u0.string().nullish(),logo:u0.string().nullish(),capabilities:u0.array(u0.string()),limits:u0.object({contextWindow:u0.coerce.number(),maxOutputTokens:u0.coerce.number().nullable()}).nullish(),costs:u0.object({input:u0.coerce.number(),output:u0.coerce.number()}).nullish()}))}),handler:async(Y,X)=>{X0(X);let J=U0(X);await X.access.check();let G=await Z41(X.db,J.id,X.auth.user?.role);return{models:(await X.aiProviders.listModels(Y.keyId,J.id)).filter((Z)=>FX6(G,Y.keyId,Z.modelId))}}})});var ES1;var zX6=A(()=>{r1();p0();hw();ES1=h1({name:"AI_PROVIDERS_ACTIVE",description:"List AI providers that have at least one API key configured",inputSchema:u0.object({}),outputSchema:u0.object({providers:u0.array(u0.object({id:u0.string(),name:u0.string(),description:u0.string(),logo:u0.string().optional(),keyCount:u0.number()}))}),handler:async(Y,X)=>{X0(X);let J=U0(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=JK[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 bw=A(()=>{wX()});var TS1,RS1;var CS1=A(()=>{r1();p0();bw();TS1=u0.object({id:u0.string(),providerId:u0.string(),label:u0.string(),createdAt:u0.string()}),RS1=h1({name:"AI_PROVIDER_KEY_CREATE",description:"Store an API key for an AI provider",inputSchema:u0.object({providerId:u0.enum(a7),label:u0.string().min(1).max(100),apiKey:u0.string().min(1)}),outputSchema:TS1,handler:async(Y,X)=>{X0(X);let J=U0(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 IS1;var UX6=A(()=>{r1();p0();IS1=h1({name:"AI_PROVIDER_KEY_DELETE",description:"Delete a stored AI provider API key",inputSchema:u0.object({keyId:u0.string().describe("The provider key ID to delete")}),outputSchema:u0.object({success:u0.boolean()}),handler:async(Y,X)=>{X0(X);let J=U0(X);return await X.access.check(),await X.storage.aiProviderKeys.delete(Y.keyId,J.id),{success:!0}}})});var SS1;var qX6=A(()=>{r1();p0();bw();AS1();SS1=h1({name:"AI_PROVIDER_KEY_LIST",description:"List stored API keys for AI providers (metadata only, no secrets)",inputSchema:u0.object({providerId:u0.enum(a7).optional()}),outputSchema:u0.object({keys:u0.array(u0.object({id:u0.string(),providerId:u0.string(),label:u0.string(),createdBy:u0.string(),createdAt:u0.string()}))}),handler:async(Y,X)=>{X0(X);let J=U0(X);await X.access.check();let[G,W]=await Promise.all([X.storage.aiProviderKeys.list({organizationId:J.id,providerId:Y.providerId}),Z41(X.db,J.id,X.auth.user?.role)]);return{keys:G.filter((Z)=>$X6(W,Z.id)).map(({organizationId:Z,...Q})=>Q)}}})});import{createHash as ar4,randomBytes as rr4}from"crypto";function DX6(){return rr4(32).toString("base64url")}function BX6(Y){return ar4("sha256").update(Y).digest("base64url")}var LX6=()=>{};var jS1;var OX6=A(()=>{r1();p0();bw();hw();LX6();FW();jS1=h1({name:"AI_PROVIDER_OAUTH_URL",description:"Get the OAuth authorization URL for a provider that supports OAuth PKCE",inputSchema:u0.object({providerId:u0.enum(a7),callbackUrl:u0.string().url().refine((Y)=>{let X=x4.BASE_URL??`http://localhost:${x4.PORT}`;return new URL(Y).origin===new URL(X).origin},{message:"callbackUrl must be on the same origin as BASE_URL"})}),outputSchema:u0.object({url:u0.string(),stateToken:u0.string().describe("Opaque token \u2014 pass to AI_PROVIDER_OAUTH_EXCHANGE")}),handler:async(Y,X)=>{X0(X);let J=U0(X);await X.access.check();let G=JK[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=DX6(),K=BX6(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 kS1;var NX6=A(()=>{r1();p0();bw();hw();CS1();kS1=h1({name:"AI_PROVIDER_OAUTH_EXCHANGE",description:"Exchange an OAuth authorization code for an API key and store it",inputSchema:u0.object({providerId:u0.enum(a7),code:u0.string(),stateToken:u0.string().describe("The stateToken returned by AI_PROVIDER_OAUTH_URL"),label:u0.string().min(1).max(100).default("Connected via OAuth")}),outputSchema:TS1,handler:async(Y,X)=>{X0(X);let J=U0(X);await X.access.check();let G=JK[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=Z9(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 _S1;var wX6=A(()=>{r1();p0();bw();hw();_S1=h1({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:u0.object({providerId:u0.enum(a7),keyId:u0.string().describe("The ID of the stored provider key to top up"),amountCents:u0.number().int().positive().describe("Amount in cents (e.g. 1000 = $10.00)"),currency:u0.enum(["usd","brl"]).default("usd")}),outputSchema:u0.object({url:u0.string().describe("Checkout URL \u2014 open in browser to complete payment")}),handler:async(Y,X)=>{X0(X);let J=U0(X);await X.access.check();let G=JK[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 vS1;var MX6=A(()=>{r1();p0();bw();hw();EE1();vS1=h1({name:"AI_PROVIDER_CREDITS",description:"Get the current credit balance for a provider (providers that support it, e.g. Deco AI Gateway)",inputSchema:u0.object({providerId:u0.enum(a7)}),outputSchema:u0.object({balanceCents:u0.number().describe("Remaining balance in cents (e.g. 1000 = $10.00)")}),handler:async(Y,X)=>{X0(X);let J=U0(X);await X.access.check();let G=Z9(X);if(!G)throw Error("Unable to determine user ID");let W=JK[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 po0(G);return W.getCreditsBalance(K,J.id)}})});var AX6=A(()=>{HX6();VX6();zX6();CS1();UX6();qX6();OX6();NX6();wX6();MX6()});var EX6={};M6(EX6,{managementMCP:()=>er4,ALL_TOOLS:()=>PX6});var sr4,tr4,PX6,er4=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=JX0(PX6,X),G=new gA({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 TX6=A(()=>{Qa();xc();r1();Fo0();ko0();G66();K66();L66();E66();j66();v66();l66();Y46();U46();N46();k46();n46();a46();AX6();sr4=[WC1,ZC1,QC1,KC1,HC1,FC1,VC1,zC1,UC1,qC1,DC1,LE1,wE1,ME1,CR1,IR1,SR1,bR1,gR1,uR1,mR1,lR1,dR1,cR1,pR1,nR1,iR1,Q66,aR1,rR1,sR1,tR1,eR1,YC1,XC1,JC1,GC1,$E1,VE1,zE1,FE1,jR1,kR1,_R1,vR1,fR1,yR1,hR1,aC1,qE1,DE1,BE1,_C1,vC1,fC1,yC1,hC1,bC1,CC1,IC1,SC1,jC1,kC1,xC1,gC1,uC1,mC1,lC1,pC1,nC1,iC1,BC1,LC1,OC1,NC1,wC1,MC1,AC1,PC1,EC1,TC1,RC1,wS1,PS1,ES1,RS1,IS1,SS1,jS1,kS1,_S1,vS1],tr4=GX0(),PX6=[...sr4,...tr4]});function Yo4(Y){return[{permissions:{self:["*"]},getTools:async()=>{let{ALL_TOOLS:X}=await Promise.resolve().then(() => (TX6(),EX6));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:mZ1(LH(),Y)},{data:uZ1()},{data:gZ1(Y)}]}async function RX6(Y,X){try{let J=Ww(),G=new iP1(x4.ENCRYPTION_KEY),W=new aP1(J.db,G),K=new rP1(J.db),Z=Yo4(Y);try{await K.create({organizationId:Y,slug:PK,name:RM,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 dR.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 oT({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 CX6=A(()=>{wX();kE();fh();Gr0();Wr0();Zr0();d11();r1();FW();t11()});async function Jo4(Y){let{user:X,token:J}=Y;if(!J?.idToken)return;let G;try{G=_9(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}=Ww(),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 S1`UPDATE "account" SET "userId" = ${H.id} WHERE "userId" = ${X.id}`.execute($),await S1`UPDATE "session" SET "userId" = ${H.id} WHERE "userId" = ${X.id}`.execute($),await S1`
|
|
1582
|
+
Error message: ${NY6(J)}`,cause:J});this[e96]=!0,this.value=X}static isInstance(X){return GY.hasMarker(X,uY6)}static wrap({value:X,cause:J}){return Y.isInstance(J)&&J.value===X?J:new Y({value:X,cause:J})}},lY6=`vercel.ai.error.${mY6}`,ai4=Symbol.for(lY6),hz=class extends(JY6=GY,XY6=ai4,JY6){constructor({functionality:Y,message:X=`'${Y}' functionality not supported.`}){super({name:mY6,message:X});this[XY6]=!0,this.functionality=Y}static isInstance(Y){return GY.hasMarker(Y,lY6)}},GY6=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}};si4=class extends TransformStream{constructor({onError:Y,onRetry:X,onComment:J}={}){let G;super({start(W){G=ri4({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:ti4,atob:aWY}=globalThis);cY6=`vercel.ai.error.${dY6}`,Ya4=Symbol.for(cY6),rWY=class extends(ZY6=GY,WY6=Ya4,ZY6){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:dY6,message:W,cause:G});this[WY6]=!0,this.url=Y,this.statusCode=X,this.statusText=J}static isInstance(Y){return GY.hasMarker(Y,cY6)}},nH=Xa4();Ja4=["fetch failed","failed to fetch"];$a4=/"__proto__"\s*:/,Fa4=/"constructor"\s*:/;za4=Symbol("Let zodToJsonSchema decide on which parser to use"),KY6={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"};cH={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(JS1===void 0)JS1=RegExp("^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$","u");return JS1},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-_]*$/};Ta4=new Set("ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789");KS1={ZodString:"string",ZodNumber:"number",ZodBigInt:"integer",ZodBoolean:"boolean",ZodNull:"null"};HS1=Symbol.for("vercel.ai.schema");tY6=((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})(tY6||{}),US1=F.object({id:F.string().nullish(),format:F.enum(tY6).nullish(),index:F.number().optional()}).loose(),zr4=F.object({type:F.literal("reasoning.summary"),summary:F.string()}).extend(US1.shape),Ur4=F.object({type:F.literal("reasoning.encrypted"),data:F.string()}).extend(US1.shape),qr4=F.object({type:F.literal("reasoning.text"),text:F.string().nullish(),signature:F.string().nullish()}).extend(US1.shape),qS1=F.union([zr4,Ur4,qr4]),p61=F.union([qS1,F.unknown().transform(()=>null)]),DS1=F.array(p61).transform((Y)=>Y.filter((X)=>!!X)),sWY=F.union([F.object({delta:F.object({reasoning_details:F.array(p61)})}).transform((Y)=>Y.delta.reasoning_details.filter(ZS1)),F.object({message:F.object({reasoning_details:F.array(p61)})}).transform((Y)=>Y.message.reasoning_details.filter(ZS1)),F.object({text:F.string(),reasoning_details:F.array(p61)}).transform((Y)=>Y.reasoning_details.filter(ZS1))]),X41=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();lR=Fr4({errorSchema:X41,errorToMessage:Dr4}),eY6=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()),BS1=F.object({provider:F.string(),reasoning_details:F.array(qS1).optional(),annotations:F.array(eY6).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()),YX6=F.object({openrouter:F.object({reasoning_details:F.array(qS1).optional(),annotations:F.array(eY6).optional()}).optional()}).optional();n61=new WeakMap;Or4=["wav","mp3","aiff","aac","ogg","flac","m4a","pcm16","pcm24"];Nr4={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"};XZY=F.union([F.literal("auto"),F.literal("none"),F.literal("required"),F.object({type:F.literal("function"),function:F.object({name:F.string()})})]);Tr4=F.object({type:F.literal("image_url"),image_url:F.object({url:F.string()}).passthrough()}).passthrough(),Rr4=F.union([Tr4,F.unknown().transform(()=>null)]),GX6=F.array(Rr4).transform((Y)=>Y.filter((X)=>!!X)),WX6=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(),Cr4=F.union([WX6.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:DS1.nullish(),images:GX6.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())}),X41.extend({user_id:F.string().optional()})]),Ir4=F.union([WX6.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:DS1.nullish(),images:GX6.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())}),X41]);FY6=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:DS1.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(),X41]),_r4=F.object({prompt_tokens:F.number(),total_tokens:F.number(),cost:F.number().optional()}),vr4=F.object({object:F.literal("embedding"),embedding:F.array(F.number()),index:F.number().optional()}),fr4=F.object({id:F.string().optional(),object:F.literal("list"),data:F.array(vr4),model:F.string(),provider:F.string().optional(),usage:_r4.optional()}),hr4=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();KZY=OS1({compatibility:"strict"})});var pr4="https://assets.decocache.com/decocms/b2e2f64f-6025-45f7-9e8c-3b3ebdd073d8/openrouter_logojpg.jpg",J41;var NS1=A(()=>{ZX6();J41={info:{id:"openrouter",name:"OpenRouter",description:"Unified API for multiple AI providers",logo:pr4},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=OS1({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 G41,QX6;var KX6=A(()=>{NS1();FW();G41=x4.DECO_AI_GATEWAY_URL??"https://ai-site.decocache.com",QX6={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`${G41}/oauth/authorize?${W}`},async exchangeOAuthCode({code:Y,codeVerifier:X}){let J=await fetch(`${G41}/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(`${G41}/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(`${G41}/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{...J41.create(Y),info:this.info}}}});var nr4,JK;var hw=A(()=>{V96();R96();NS1();KX6();FW();nr4=x4.DECO_AI_GATEWAY_ENABLED,JK={...nr4&&{deco:QX6},anthropic:F96,google:T96,openrouter:J41}});var wS1;var HX6=A(()=>{r1();p0();hw();wS1=h1({name:"AI_PROVIDERS_LIST",description:"List all available AI providers that can be connected with an API key",inputSchema:u0.object({}),outputSchema:u0.object({providers:u0.array(u0.object({id:u0.string(),name:u0.string(),description:u0.string(),logo:u0.string().optional(),supportedMethods:u0.array(u0.enum(["api-key","oauth-pkce"])),supportsTopUp:u0.boolean().optional(),supportsCredits:u0.boolean().optional()}))}),handler:async(Y,X)=>{return X0(X),U0(X),await X.access.check(),{providers:Object.values(JK).filter((G)=>!!G).map((G)=>({...G.info,supportedMethods:G.supportedMethods,supportsTopUp:!!G.getTopUpUrl,supportsCredits:!!G.getCreditsBalance}))}}})});var W41;var MS1=A(()=>{W41=["owner","admin"]});function ir4(Y){if(!Y)return;if(!("models"in Y))return;return Y.models??void 0}function $X6(Y,X){if(!Y)return!0;if(Y.includes("*:*"))return!0;return Y.some((J)=>J.startsWith(`${X}:`))}function FX6(Y,X,J){if(!Y)return!0;return Y.includes("*:*")||Y.includes(`${X}:*`)||Y.includes(`${X}:${J}`)}async function Z41(Y,X,J){if(!J||W41.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 ir4(W)}catch{return console.error(`[model-permissions] Failed to parse permissions for role: ${J}`),[]}}var AS1=A(()=>{MS1()});var PS1;var VX6=A(()=>{r1();p0();AS1();PS1=h1({name:"AI_PROVIDERS_LIST_MODELS",description:"List models available from an AI provider using a specific API key",inputSchema:u0.object({keyId:u0.string().describe("The provider key ID to use")}),outputSchema:u0.object({models:u0.array(u0.object({providerId:u0.string(),modelId:u0.string(),title:u0.string(),description:u0.string().nullish(),logo:u0.string().nullish(),capabilities:u0.array(u0.string()),limits:u0.object({contextWindow:u0.coerce.number(),maxOutputTokens:u0.coerce.number().nullable()}).nullish(),costs:u0.object({input:u0.coerce.number(),output:u0.coerce.number()}).nullish()}))}),handler:async(Y,X)=>{X0(X);let J=U0(X);await X.access.check();let G=await Z41(X.db,J.id,X.auth.user?.role);return{models:(await X.aiProviders.listModels(Y.keyId,J.id)).filter((Z)=>FX6(G,Y.keyId,Z.modelId))}}})});var ES1;var zX6=A(()=>{r1();p0();hw();ES1=h1({name:"AI_PROVIDERS_ACTIVE",description:"List AI providers that have at least one API key configured",inputSchema:u0.object({}),outputSchema:u0.object({providers:u0.array(u0.object({id:u0.string(),name:u0.string(),description:u0.string(),logo:u0.string().optional(),keyCount:u0.number()}))}),handler:async(Y,X)=>{X0(X);let J=U0(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=JK[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 bw=A(()=>{wX()});var TS1,RS1;var CS1=A(()=>{r1();p0();bw();TS1=u0.object({id:u0.string(),providerId:u0.string(),label:u0.string(),createdAt:u0.string()}),RS1=h1({name:"AI_PROVIDER_KEY_CREATE",description:"Store an API key for an AI provider",inputSchema:u0.object({providerId:u0.enum(a7),label:u0.string().min(1).max(100),apiKey:u0.string().min(1)}),outputSchema:TS1,handler:async(Y,X)=>{X0(X);let J=U0(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 IS1;var UX6=A(()=>{r1();p0();IS1=h1({name:"AI_PROVIDER_KEY_DELETE",description:"Delete a stored AI provider API key",inputSchema:u0.object({keyId:u0.string().describe("The provider key ID to delete")}),outputSchema:u0.object({success:u0.boolean()}),handler:async(Y,X)=>{X0(X);let J=U0(X);return await X.access.check(),await X.storage.aiProviderKeys.delete(Y.keyId,J.id),{success:!0}}})});var SS1;var qX6=A(()=>{r1();p0();bw();AS1();SS1=h1({name:"AI_PROVIDER_KEY_LIST",description:"List stored API keys for AI providers (metadata only, no secrets)",inputSchema:u0.object({providerId:u0.enum(a7).optional()}),outputSchema:u0.object({keys:u0.array(u0.object({id:u0.string(),providerId:u0.string(),label:u0.string(),createdBy:u0.string(),createdAt:u0.string()}))}),handler:async(Y,X)=>{X0(X);let J=U0(X);await X.access.check();let[G,W]=await Promise.all([X.storage.aiProviderKeys.list({organizationId:J.id,providerId:Y.providerId}),Z41(X.db,J.id,X.auth.user?.role)]);return{keys:G.filter((Z)=>$X6(W,Z.id)).map(({organizationId:Z,...Q})=>Q)}}})});import{createHash as ar4,randomBytes as rr4}from"crypto";function DX6(){return rr4(32).toString("base64url")}function BX6(Y){return ar4("sha256").update(Y).digest("base64url")}var LX6=()=>{};var jS1;var OX6=A(()=>{r1();p0();bw();hw();LX6();FW();jS1=h1({name:"AI_PROVIDER_OAUTH_URL",description:"Get the OAuth authorization URL for a provider that supports OAuth PKCE",inputSchema:u0.object({providerId:u0.enum(a7),callbackUrl:u0.string().url().refine((Y)=>{let X=x4.BASE_URL??`http://localhost:${x4.PORT}`;return new URL(Y).origin===new URL(X).origin},{message:"callbackUrl must be on the same origin as BASE_URL"})}),outputSchema:u0.object({url:u0.string(),stateToken:u0.string().describe("Opaque token \u2014 pass to AI_PROVIDER_OAUTH_EXCHANGE")}),handler:async(Y,X)=>{X0(X);let J=U0(X);await X.access.check();let G=JK[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=DX6(),K=BX6(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 kS1;var NX6=A(()=>{r1();p0();bw();hw();CS1();kS1=h1({name:"AI_PROVIDER_OAUTH_EXCHANGE",description:"Exchange an OAuth authorization code for an API key and store it",inputSchema:u0.object({providerId:u0.enum(a7),code:u0.string(),stateToken:u0.string().describe("The stateToken returned by AI_PROVIDER_OAUTH_URL"),label:u0.string().min(1).max(100).default("Connected via OAuth")}),outputSchema:TS1,handler:async(Y,X)=>{X0(X);let J=U0(X);await X.access.check();let G=JK[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=Z9(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 _S1;var wX6=A(()=>{r1();p0();bw();hw();_S1=h1({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:u0.object({providerId:u0.enum(a7),keyId:u0.string().describe("The ID of the stored provider key to top up"),amountCents:u0.number().int().positive().describe("Amount in cents (e.g. 1000 = $10.00)"),currency:u0.enum(["usd","brl"]).default("usd")}),outputSchema:u0.object({url:u0.string().describe("Checkout URL \u2014 open in browser to complete payment")}),handler:async(Y,X)=>{X0(X);let J=U0(X);await X.access.check();let G=JK[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 vS1;var MX6=A(()=>{r1();p0();bw();hw();EE1();vS1=h1({name:"AI_PROVIDER_CREDITS",description:"Get the current credit balance for a provider (providers that support it, e.g. Deco AI Gateway)",inputSchema:u0.object({providerId:u0.enum(a7)}),outputSchema:u0.object({balanceCents:u0.number().describe("Remaining balance in cents (e.g. 1000 = $10.00)")}),handler:async(Y,X)=>{X0(X);let J=U0(X);await X.access.check();let G=Z9(X);if(!G)throw Error("Unable to determine user ID");let W=JK[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 po0(G);return W.getCreditsBalance(K,J.id)}})});var AX6=A(()=>{HX6();VX6();zX6();CS1();UX6();qX6();OX6();NX6();wX6();MX6()});var EX6={};M6(EX6,{managementMCP:()=>er4,ALL_TOOLS:()=>PX6});var sr4,tr4,PX6,er4=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=JX0(PX6,X),G=new gA({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 TX6=A(()=>{Qa();xc();r1();Fo0();ko0();G66();K66();L66();E66();j66();v66();l66();Y46();U46();N46();k46();n46();a46();AX6();sr4=[WC1,ZC1,QC1,KC1,HC1,FC1,VC1,zC1,UC1,qC1,DC1,LE1,wE1,ME1,CR1,IR1,SR1,bR1,gR1,uR1,mR1,lR1,dR1,cR1,pR1,nR1,iR1,Q66,aR1,rR1,sR1,tR1,eR1,YC1,XC1,JC1,GC1,$E1,VE1,zE1,FE1,jR1,kR1,_R1,vR1,fR1,yR1,hR1,aC1,qE1,DE1,BE1,_C1,vC1,fC1,yC1,hC1,bC1,CC1,IC1,SC1,jC1,kC1,xC1,gC1,uC1,mC1,lC1,pC1,nC1,iC1,BC1,LC1,OC1,NC1,wC1,MC1,AC1,PC1,EC1,TC1,RC1,wS1,PS1,ES1,RS1,IS1,SS1,jS1,kS1,_S1,vS1],tr4=GX0(),PX6=[...sr4,...tr4]});function Yo4(Y){return[{permissions:{self:["*"]},getTools:async()=>{let{ALL_TOOLS:X}=await Promise.resolve().then(() => (TX6(),EX6));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:mZ1(LH(),Y)},{data:uZ1()},{data:gZ1(Y)}]}async function RX6(Y,X){try{let J=Ww(),G=new iP1(x4.ENCRYPTION_KEY),W=new aP1(J.db,G),K=new rP1(J.db),Z=Yo4(Y);try{await K.create({organizationId:Y,slug:PK,name:RM,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 dR.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 oT({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 CX6=A(()=>{wX();kE();fh();Gr0();Wr0();Zr0();d11();r1();FW();t11()});async function Jo4(Y){let{user:X,token:J}=Y;if(!J?.idToken)return;let G;try{G=_9(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}=Ww(),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 S1`UPDATE "account" SET "userId" = ${H.id} WHERE "userId" = ${X.id}`.execute($),await S1`UPDATE "session" SET "userId" = ${H.id} WHERE "userId" = ${X.id}`.execute($),await S1`
|
|
1583
1583
|
UPDATE "member" SET "userId" = ${H.id}
|
|
1584
1584
|
WHERE "userId" = ${X.id}
|
|
1585
1585
|
AND "organizationId" NOT IN (
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
The MIT License (MIT)
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2014 Iced Development
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
pg-connection-string
|
|
2
|
+
====================
|
|
3
|
+
|
|
4
|
+
[](https://nodei.co/npm/pg-connection-string/)
|
|
5
|
+
|
|
6
|
+
Functions for dealing with a PostgresSQL connection string
|
|
7
|
+
|
|
8
|
+
`parse` method taken from [node-postgres](https://github.com/brianc/node-postgres.git)
|
|
9
|
+
Copyright (c) 2010-2014 Brian Carlson (brian.m.carlson@gmail.com)
|
|
10
|
+
MIT License
|
|
11
|
+
|
|
12
|
+
## Usage
|
|
13
|
+
|
|
14
|
+
```js
|
|
15
|
+
const parse = require('pg-connection-string').parse;
|
|
16
|
+
|
|
17
|
+
const config = parse('postgres://someuser:somepassword@somehost:381/somedatabase')
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
The resulting config contains a subset of the following properties:
|
|
21
|
+
|
|
22
|
+
* `user` - User with which to authenticate to the server
|
|
23
|
+
* `password` - Corresponding password
|
|
24
|
+
* `host` - Postgres server hostname or, for UNIX domain sockets, the socket filename
|
|
25
|
+
* `port` - port on which to connect
|
|
26
|
+
* `database` - Database name within the server
|
|
27
|
+
* `client_encoding` - string encoding the client will use
|
|
28
|
+
* `ssl`, either a boolean or an object with properties
|
|
29
|
+
* `rejectUnauthorized`
|
|
30
|
+
* `cert`
|
|
31
|
+
* `key`
|
|
32
|
+
* `ca`
|
|
33
|
+
* any other query parameters (for example, `application_name`) are preserved intact.
|
|
34
|
+
|
|
35
|
+
### ClientConfig Compatibility for TypeScript
|
|
36
|
+
|
|
37
|
+
The pg-connection-string `ConnectionOptions` interface is not compatible with the `ClientConfig` interface that [pg.Client](https://node-postgres.com/apis/client) expects. To remedy this, use the `parseIntoClientConfig` function instead of `parse`:
|
|
38
|
+
|
|
39
|
+
```ts
|
|
40
|
+
import { ClientConfig } from 'pg';
|
|
41
|
+
import { parseIntoClientConfig } from 'pg-connection-string';
|
|
42
|
+
|
|
43
|
+
const config: ClientConfig = parseIntoClientConfig('postgres://someuser:somepassword@somehost:381/somedatabase')
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
You can also use `toClientConfig` to convert an existing `ConnectionOptions` interface into a `ClientConfig` interface:
|
|
47
|
+
|
|
48
|
+
```ts
|
|
49
|
+
import { ClientConfig } from 'pg';
|
|
50
|
+
import { parse, toClientConfig } from 'pg-connection-string';
|
|
51
|
+
|
|
52
|
+
const config = parse('postgres://someuser:somepassword@somehost:381/somedatabase')
|
|
53
|
+
const clientConfig: ClientConfig = toClientConfig(config)
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## Connection Strings
|
|
57
|
+
|
|
58
|
+
The short summary of acceptable URLs is:
|
|
59
|
+
|
|
60
|
+
* `socket:<path>?<query>` - UNIX domain socket
|
|
61
|
+
* `postgres://<user>:<password>@<host>:<port>/<database>?<query>` - TCP connection
|
|
62
|
+
|
|
63
|
+
But see below for more details.
|
|
64
|
+
|
|
65
|
+
### UNIX Domain Sockets
|
|
66
|
+
|
|
67
|
+
When user and password are not given, the socket path follows `socket:`, as in `socket:/var/run/pgsql`.
|
|
68
|
+
This form can be shortened to just a path: `/var/run/pgsql`.
|
|
69
|
+
|
|
70
|
+
When user and password are given, they are included in the typical URL positions, with an empty `host`, as in `socket://user:pass@/var/run/pgsql`.
|
|
71
|
+
|
|
72
|
+
Query parameters follow a `?` character, including the following special query parameters:
|
|
73
|
+
|
|
74
|
+
* `db=<database>` - sets the database name (urlencoded)
|
|
75
|
+
* `encoding=<encoding>` - sets the `client_encoding` property
|
|
76
|
+
|
|
77
|
+
### TCP Connections
|
|
78
|
+
|
|
79
|
+
TCP connections to the Postgres server are indicated with `pg:` or `postgres:` schemes (in fact, any scheme but `socket:` is accepted).
|
|
80
|
+
If username and password are included, they should be urlencoded.
|
|
81
|
+
The database name, however, should *not* be urlencoded.
|
|
82
|
+
|
|
83
|
+
Query parameters follow a `?` character, including the following special query parameters:
|
|
84
|
+
* `host=<host>` - sets `host` property, overriding the URL's host
|
|
85
|
+
* `encoding=<encoding>` - sets the `client_encoding` property
|
|
86
|
+
* `ssl=1`, `ssl=true`, `ssl=0`, `ssl=false` - sets `ssl` to true or false, accordingly
|
|
87
|
+
* `uselibpqcompat=true` - use libpq semantics
|
|
88
|
+
* `sslmode=<sslmode>` when `uselibpqcompat=true` is not set
|
|
89
|
+
* `sslmode=disable` - sets `ssl` to false
|
|
90
|
+
* `sslmode=no-verify` - sets `ssl` to `{ rejectUnauthorized: false }`
|
|
91
|
+
* `sslmode=prefer`, `sslmode=require`, `sslmode=verify-ca`, `sslmode=verify-full` - sets `ssl` to true
|
|
92
|
+
* `sslmode=<sslmode>` when `uselibpqcompat=true`
|
|
93
|
+
* `sslmode=disable` - sets `ssl` to false
|
|
94
|
+
* `sslmode=prefer` - sets `ssl` to `{ rejectUnauthorized: false }`
|
|
95
|
+
* `sslmode=require` - sets `ssl` to `{ rejectUnauthorized: false }` unless `sslrootcert` is specified, in which case it behaves like `verify-ca`
|
|
96
|
+
* `sslmode=verify-ca` - sets `ssl` to `{ checkServerIdentity: no-op }` (verify CA, but not server identity). This verifies the presented certificate against the effective CA specified in sslrootcert.
|
|
97
|
+
* `sslmode=verify-full` - sets `ssl` to `{}` (verify CA and server identity)
|
|
98
|
+
* `sslcert=<filename>` - reads data from the given file and includes the result as `ssl.cert`
|
|
99
|
+
* `sslkey=<filename>` - reads data from the given file and includes the result as `ssl.key`
|
|
100
|
+
* `sslrootcert=<filename>` - reads data from the given file and includes the result as `ssl.ca`
|
|
101
|
+
|
|
102
|
+
A bare relative URL, such as `salesdata`, will indicate a database name while leaving other properties empty.
|
|
103
|
+
|
|
104
|
+
> [!CAUTION]
|
|
105
|
+
> Choosing an sslmode other than verify-full has serious security implications. Please read https://www.postgresql.org/docs/current/libpq-ssl.html#LIBPQ-SSL-SSLMODE-STATEMENTS to understand the trade-offs.
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
// ESM wrapper for pg-connection-string
|
|
2
|
+
import connectionString from '../index.js'
|
|
3
|
+
|
|
4
|
+
// Re-export the parse function
|
|
5
|
+
export default connectionString.parse
|
|
6
|
+
export const parse = connectionString.parse
|
|
7
|
+
export const toClientConfig = connectionString.toClientConfig
|
|
8
|
+
export const parseIntoClientConfig = connectionString.parseIntoClientConfig
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { ClientConfig } from 'pg'
|
|
2
|
+
|
|
3
|
+
export function parse(connectionString: string, options?: Options): ConnectionOptions
|
|
4
|
+
|
|
5
|
+
export interface Options {
|
|
6
|
+
// Use libpq semantics when interpreting the connection string
|
|
7
|
+
useLibpqCompat?: boolean
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
interface SSLConfig {
|
|
11
|
+
ca?: string
|
|
12
|
+
cert?: string | null
|
|
13
|
+
key?: string
|
|
14
|
+
rejectUnauthorized?: boolean
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export interface ConnectionOptions {
|
|
18
|
+
host: string | null
|
|
19
|
+
password?: string
|
|
20
|
+
user?: string
|
|
21
|
+
port?: string | null
|
|
22
|
+
database: string | null | undefined
|
|
23
|
+
client_encoding?: string
|
|
24
|
+
ssl?: boolean | string | SSLConfig
|
|
25
|
+
|
|
26
|
+
application_name?: string
|
|
27
|
+
fallback_application_name?: string
|
|
28
|
+
options?: string
|
|
29
|
+
keepalives?: number
|
|
30
|
+
|
|
31
|
+
// We allow any other options to be passed through
|
|
32
|
+
[key: string]: unknown
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export function toClientConfig(config: ConnectionOptions): ClientConfig
|
|
36
|
+
export function parseIntoClientConfig(connectionString: string): ClientConfig
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
//Parse method copied from https://github.com/brianc/node-postgres
|
|
4
|
+
//Copyright (c) 2010-2014 Brian Carlson (brian.m.carlson@gmail.com)
|
|
5
|
+
//MIT License
|
|
6
|
+
|
|
7
|
+
//parses a connection string
|
|
8
|
+
function parse(str, options = {}) {
|
|
9
|
+
//unix socket
|
|
10
|
+
if (str.charAt(0) === '/') {
|
|
11
|
+
const config = str.split(' ')
|
|
12
|
+
return { host: config[0], database: config[1] }
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
// Check for empty host in URL
|
|
16
|
+
|
|
17
|
+
const config = {}
|
|
18
|
+
let result
|
|
19
|
+
let dummyHost = false
|
|
20
|
+
if (/ |%[^a-f0-9]|%[a-f0-9][^a-f0-9]/i.test(str)) {
|
|
21
|
+
// Ensure spaces are encoded as %20
|
|
22
|
+
str = encodeURI(str).replace(/%25(\d\d)/g, '%$1')
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
try {
|
|
26
|
+
try {
|
|
27
|
+
result = new URL(str, 'postgres://base')
|
|
28
|
+
} catch (e) {
|
|
29
|
+
// The URL is invalid so try again with a dummy host
|
|
30
|
+
result = new URL(str.replace('@/', '@___DUMMY___/'), 'postgres://base')
|
|
31
|
+
dummyHost = true
|
|
32
|
+
}
|
|
33
|
+
} catch (err) {
|
|
34
|
+
// Remove the input from the error message to avoid leaking sensitive information
|
|
35
|
+
err.input && (err.input = '*****REDACTED*****')
|
|
36
|
+
throw err
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
// We'd like to use Object.fromEntries() here but Node.js 10 does not support it
|
|
40
|
+
for (const entry of result.searchParams.entries()) {
|
|
41
|
+
config[entry[0]] = entry[1]
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
config.user = config.user || decodeURIComponent(result.username)
|
|
45
|
+
config.password = config.password || decodeURIComponent(result.password)
|
|
46
|
+
|
|
47
|
+
if (result.protocol == 'socket:') {
|
|
48
|
+
config.host = decodeURI(result.pathname)
|
|
49
|
+
config.database = result.searchParams.get('db')
|
|
50
|
+
config.client_encoding = result.searchParams.get('encoding')
|
|
51
|
+
return config
|
|
52
|
+
}
|
|
53
|
+
const hostname = dummyHost ? '' : result.hostname
|
|
54
|
+
if (!config.host) {
|
|
55
|
+
// Only set the host if there is no equivalent query param.
|
|
56
|
+
config.host = decodeURIComponent(hostname)
|
|
57
|
+
} else if (hostname && /^%2f/i.test(hostname)) {
|
|
58
|
+
// Only prepend the hostname to the pathname if it is not a URL encoded Unix socket host.
|
|
59
|
+
result.pathname = hostname + result.pathname
|
|
60
|
+
}
|
|
61
|
+
if (!config.port) {
|
|
62
|
+
// Only set the port if there is no equivalent query param.
|
|
63
|
+
config.port = result.port
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
const pathname = result.pathname.slice(1) || null
|
|
67
|
+
config.database = pathname ? decodeURI(pathname) : null
|
|
68
|
+
|
|
69
|
+
if (config.ssl === 'true' || config.ssl === '1') {
|
|
70
|
+
config.ssl = true
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
if (config.ssl === '0') {
|
|
74
|
+
config.ssl = false
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
if (config.sslcert || config.sslkey || config.sslrootcert || config.sslmode) {
|
|
78
|
+
config.ssl = {}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
// Only try to load fs if we expect to read from the disk
|
|
82
|
+
const fs = config.sslcert || config.sslkey || config.sslrootcert ? require('fs') : null
|
|
83
|
+
|
|
84
|
+
if (config.sslcert) {
|
|
85
|
+
config.ssl.cert = fs.readFileSync(config.sslcert).toString()
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
if (config.sslkey) {
|
|
89
|
+
config.ssl.key = fs.readFileSync(config.sslkey).toString()
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
if (config.sslrootcert) {
|
|
93
|
+
config.ssl.ca = fs.readFileSync(config.sslrootcert).toString()
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
if (options.useLibpqCompat && config.uselibpqcompat) {
|
|
97
|
+
throw new Error('Both useLibpqCompat and uselibpqcompat are set. Please use only one of them.')
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
if (config.uselibpqcompat === 'true' || options.useLibpqCompat) {
|
|
101
|
+
switch (config.sslmode) {
|
|
102
|
+
case 'disable': {
|
|
103
|
+
config.ssl = false
|
|
104
|
+
break
|
|
105
|
+
}
|
|
106
|
+
case 'prefer': {
|
|
107
|
+
config.ssl.rejectUnauthorized = false
|
|
108
|
+
break
|
|
109
|
+
}
|
|
110
|
+
case 'require': {
|
|
111
|
+
if (config.sslrootcert) {
|
|
112
|
+
// If a root CA is specified, behavior of `sslmode=require` will be the same as that of `verify-ca`
|
|
113
|
+
config.ssl.checkServerIdentity = function () {}
|
|
114
|
+
} else {
|
|
115
|
+
config.ssl.rejectUnauthorized = false
|
|
116
|
+
}
|
|
117
|
+
break
|
|
118
|
+
}
|
|
119
|
+
case 'verify-ca': {
|
|
120
|
+
if (!config.ssl.ca) {
|
|
121
|
+
throw new Error(
|
|
122
|
+
'SECURITY WARNING: Using sslmode=verify-ca requires specifying a CA with sslrootcert. If a public CA is used, verify-ca allows connections to a server that somebody else may have registered with the CA, making you vulnerable to Man-in-the-Middle attacks. Either specify a custom CA certificate with sslrootcert parameter or use sslmode=verify-full for proper security.'
|
|
123
|
+
)
|
|
124
|
+
}
|
|
125
|
+
config.ssl.checkServerIdentity = function () {}
|
|
126
|
+
break
|
|
127
|
+
}
|
|
128
|
+
case 'verify-full': {
|
|
129
|
+
break
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
} else {
|
|
133
|
+
switch (config.sslmode) {
|
|
134
|
+
case 'disable': {
|
|
135
|
+
config.ssl = false
|
|
136
|
+
break
|
|
137
|
+
}
|
|
138
|
+
case 'prefer':
|
|
139
|
+
case 'require':
|
|
140
|
+
case 'verify-ca':
|
|
141
|
+
case 'verify-full': {
|
|
142
|
+
if (config.sslmode !== 'verify-full') {
|
|
143
|
+
deprecatedSslModeWarning(config.sslmode)
|
|
144
|
+
}
|
|
145
|
+
break
|
|
146
|
+
}
|
|
147
|
+
case 'no-verify': {
|
|
148
|
+
config.ssl.rejectUnauthorized = false
|
|
149
|
+
break
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
return config
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
// convert pg-connection-string ssl config to a ClientConfig.ConnectionOptions
|
|
158
|
+
function toConnectionOptions(sslConfig) {
|
|
159
|
+
const connectionOptions = Object.entries(sslConfig).reduce((c, [key, value]) => {
|
|
160
|
+
// we explicitly check for undefined and null instead of `if (value)` because some
|
|
161
|
+
// options accept falsy values. Example: `ssl.rejectUnauthorized = false`
|
|
162
|
+
if (value !== undefined && value !== null) {
|
|
163
|
+
c[key] = value
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
return c
|
|
167
|
+
}, {})
|
|
168
|
+
|
|
169
|
+
return connectionOptions
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
// convert pg-connection-string config to a ClientConfig
|
|
173
|
+
function toClientConfig(config) {
|
|
174
|
+
const poolConfig = Object.entries(config).reduce((c, [key, value]) => {
|
|
175
|
+
if (key === 'ssl') {
|
|
176
|
+
const sslConfig = value
|
|
177
|
+
|
|
178
|
+
if (typeof sslConfig === 'boolean') {
|
|
179
|
+
c[key] = sslConfig
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
if (typeof sslConfig === 'object') {
|
|
183
|
+
c[key] = toConnectionOptions(sslConfig)
|
|
184
|
+
}
|
|
185
|
+
} else if (value !== undefined && value !== null) {
|
|
186
|
+
if (key === 'port') {
|
|
187
|
+
// when port is not specified, it is converted into an empty string
|
|
188
|
+
// we want to avoid NaN or empty string as a values in ClientConfig
|
|
189
|
+
if (value !== '') {
|
|
190
|
+
const v = parseInt(value, 10)
|
|
191
|
+
if (isNaN(v)) {
|
|
192
|
+
throw new Error(`Invalid ${key}: ${value}`)
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
c[key] = v
|
|
196
|
+
}
|
|
197
|
+
} else {
|
|
198
|
+
c[key] = value
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
return c
|
|
203
|
+
}, {})
|
|
204
|
+
|
|
205
|
+
return poolConfig
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
// parses a connection string into ClientConfig
|
|
209
|
+
function parseIntoClientConfig(str) {
|
|
210
|
+
return toClientConfig(parse(str))
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
function deprecatedSslModeWarning(sslmode) {
|
|
214
|
+
if (!deprecatedSslModeWarning.warned && typeof process !== 'undefined' && process.emitWarning) {
|
|
215
|
+
deprecatedSslModeWarning.warned = true
|
|
216
|
+
process.emitWarning(`SECURITY WARNING: The SSL modes 'prefer', 'require', and 'verify-ca' are treated as aliases for 'verify-full'.
|
|
217
|
+
In the next major version (pg-connection-string v3.0.0 and pg v9.0.0), these modes will adopt standard libpq semantics, which have weaker security guarantees.
|
|
218
|
+
|
|
219
|
+
To prepare for this change:
|
|
220
|
+
- If you want the current behavior, explicitly use 'sslmode=verify-full'
|
|
221
|
+
- If you want libpq compatibility now, use 'uselibpqcompat=true&sslmode=${sslmode}'
|
|
222
|
+
|
|
223
|
+
See https://www.postgresql.org/docs/current/libpq-ssl.html for libpq SSL mode definitions.`)
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
module.exports = parse
|
|
228
|
+
|
|
229
|
+
parse.parse = parse
|
|
230
|
+
parse.toClientConfig = toClientConfig
|
|
231
|
+
parse.parseIntoClientConfig = parseIntoClientConfig
|