decocms 2.289.1 → 2.290.1
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-DvPnQfC5.js → AlertCircle-BKpPv_ue.js} +1 -1
- package/dist/client/assets/{ArrowNarrowLeft-BKxpVLR_.js → ArrowNarrowLeft-DzI4-MMz.js} +1 -1
- package/dist/client/assets/{ArrowUpRight-CuQjuTVk.js → ArrowUpRight-CgoB9CSG.js} +1 -1
- package/dist/client/assets/{CheckCircle-4_rcsB70.js → CheckCircle-_hRmcUCr.js} +1 -1
- package/dist/client/assets/{ChevronDown-DfsMdmf4.js → ChevronDown-DgrWziJW.js} +1 -1
- package/dist/client/assets/{ChevronRight-CVhRkUc0.js → ChevronRight-DJnGkhn4.js} +1 -1
- package/dist/client/assets/{ChevronUp-CD4XJT02.js → ChevronUp-CYzPfn3Y.js} +1 -1
- package/dist/client/assets/{Container-BcAiX456.js → Container-CCq3u0Gk.js} +1 -1
- package/dist/client/assets/{DotsVertical-e4sJs2sy.js → DotsVertical-om3rzQE9.js} +1 -1
- package/dist/client/assets/{LinkExternal01-M3Y1_vaI.js → LinkExternal01-DbNOYo2d.js} +1 -1
- package/dist/client/assets/{Lock01-_ctwMSEo.js → Lock01-BsLK0x7P.js} +1 -1
- package/dist/client/assets/{Palette-BkMTuMlr.js → Palette-CN1aN7Xh.js} +1 -1
- package/dist/client/assets/{Play-CrMiqzaH.js → Play-CwsBegSF.js} +1 -1
- package/dist/client/assets/{Plus-BR3le3XA.js → Plus-CnK1SC2T.js} +1 -1
- package/dist/client/assets/{RefreshCcw01-BvVeeLFE.js → RefreshCcw01-DESLbhAD.js} +1 -1
- package/dist/client/assets/{SearchMd-CnSMs6Gr.js → SearchMd-DlfhE_5j.js} +1 -1
- package/dist/client/assets/{Settings02-bYDpmczV.js → Settings02-LVlkEIxI.js} +1 -1
- package/dist/client/assets/{Shield01-CMpoeZYl.js → Shield01-DGTwcXqp.js} +1 -1
- package/dist/client/assets/{Star01-B5vecVQL.js → Star01-CWHB1ChF.js} +1 -1
- package/dist/client/assets/{Sun-wZV-LjB0.js → Sun-1aZYqU86.js} +1 -1
- package/dist/client/assets/{Tool01-CuCSRQWJ.js → Tool01-X8GEQ_TP.js} +1 -1
- package/dist/client/assets/{Trash01-J7CgYdQ6.js → Trash01-CIUqVsqV.js} +1 -1
- package/dist/client/assets/{User01-BgWj-XfO.js → User01-Dds7lT_Z.js} +1 -1
- package/dist/client/assets/{Users03-DuJUh6K5.js → Users03-BD0tlSQu.js} +1 -1
- package/dist/client/assets/{X-B94SYTq6.js → X-BDxrsCdA.js} +1 -1
- package/dist/client/assets/{XCircle-CV0L9GR_.js → XCircle-BJ-0U-0t.js} +1 -1
- package/dist/client/assets/{XClose-BDJKoeIM.js → XClose-Bl-2e8QV.js} +1 -1
- package/dist/client/assets/{Zap-DbOUQQao.js → Zap-B3a3OZUG.js} +1 -1
- package/dist/client/assets/{ZapSquare-BVc4n4iU.js → ZapSquare-Ddm4Ccl_.js} +1 -1
- package/dist/client/assets/{accordion-_jHDGcgU.js → accordion-eGw-yxkH.js} +1 -1
- package/dist/client/assets/{agent-icon-C6qW6eXG.js → agent-icon-Dhv8pT4N.js} +1 -1
- package/dist/client/assets/{agents-list-DQZlBppY.js → agents-list-BoLhMS8b.js} +1 -1
- package/dist/client/assets/ai-providers-5Y8Lye7a.js +1 -0
- package/dist/client/assets/ai-providers-logos-D6a8kmGH.js +1 -0
- package/dist/client/assets/{alert-dialog-DUehP6wO.js → alert-dialog-C5H0at4x.js} +1 -1
- package/dist/client/assets/{auth-catchall-Cbr_hZzc.js → auth-catchall-CDaNQLse.js} +1 -1
- package/dist/client/assets/{automation-list-row-CE-l0VNu.js → automation-list-row-i8Q9Zh9Z.js} +1 -1
- package/dist/client/assets/{automations-C3LxjCxf.js → automations-ulYqPLWi.js} +1 -1
- package/dist/client/assets/{avatar-BIm7SPe1.js → avatar-BCAMjlDk.js} +1 -1
- package/dist/client/assets/{badge-CtBsPi0r.js → badge-arNIH4S4.js} +1 -1
- package/dist/client/assets/{brand-context-CB2HhrLr.js → brand-context-doHsqzeN.js} +1 -1
- package/dist/client/assets/{card-BLtPWaiK.js → card-BcKfGMCs.js} +1 -1
- package/dist/client/assets/{chat-context-DcUrkBB6.js → chat-context-BgLXGROj.js} +14 -14
- package/dist/client/assets/{checkbox-BEdGbH_8.js → checkbox-eCIm2Y45.js} +1 -1
- package/dist/client/assets/{collection-detail-CtkPh5nj.js → collection-detail-BIdQmVBg.js} +1 -1
- package/dist/client/assets/{collection-display-button-DbKOigBA.js → collection-display-button-31iCSNaH.js} +1 -1
- package/dist/client/assets/{collection-search-CEPfUiWA.js → collection-search-CWRKNmnq.js} +1 -1
- package/dist/client/assets/{collection-search-BEbLDyCP.js → collection-search-CZEXNAkX.js} +1 -1
- package/dist/client/assets/{collection-table-wrapper-B2huksH6.js → collection-table-wrapper-iKnV9U-a.js} +1 -1
- package/dist/client/assets/{collection-tabs-QSa5ykeq.js → collection-tabs-BB_C6DLQ.js} +1 -1
- package/dist/client/assets/{collections-CF9hrNRd.js → collections-BmZbVrT4.js} +1 -1
- package/dist/client/assets/{command-DmhSl-c8.js → command-BXuf0gSd.js} +1 -1
- package/dist/client/assets/{connection-card-bmzpIukU.js → connection-card-CaHQAi2l.js} +1 -1
- package/dist/client/assets/{connection-detail-DwoYH_6W.js → connection-detail-DtFDjt8X.js} +1 -1
- package/dist/client/assets/{connection-form-helpers-BrmC7SFw.js → connection-form-helpers-D-VsE2HN.js} +1 -1
- package/dist/client/assets/{connections-B52vPeyp.js → connections-B0CDxzS1.js} +1 -1
- package/dist/client/assets/{constants-DjiHYs3d.js → constants-CBodG1Pl.js} +1 -1
- package/dist/client/assets/{constants-Bv-ydthU.js → constants-fZUl7A6B.js} +1 -1
- package/dist/client/assets/{dialog-CbDVIhlb.js → dialog-CfIcbBij.js} +1 -1
- package/dist/client/assets/{domain-settings-5pXF-wm_.js → domain-settings-Bz-lXZFn.js} +1 -1
- package/dist/client/assets/{drawer-BmeDjX1X.js → drawer-D0hdbn63.js} +1 -1
- package/dist/client/assets/{dropdown-menu-BfGuGlIh.js → dropdown-menu-Cye9zjaV.js} +1 -1
- package/dist/client/assets/{dynamic-plugin-layout-BodX3cKc.js → dynamic-plugin-layout-DyEJh8Ah.js} +1 -1
- package/dist/client/assets/{empty-state-Bmk-UZeD.js → empty-state-Ce0UFiAd.js} +1 -1
- package/dist/client/assets/{empty-state-dX7dSbXx.js → empty-state-KsHmVPO4.js} +1 -1
- package/dist/client/assets/{extract-connection-data-DpnZLfW6.js → extract-connection-data-C_Q81cim.js} +1 -1
- package/dist/client/assets/{features-B6zSQU4N.js → features-UEpssbRc.js} +1 -1
- package/dist/client/assets/{form-Bp7QYVLp.js → form-Bt1yLlZE.js} +1 -1
- package/dist/client/assets/{general-CwdchWiq.js → general-CX6SxsSV.js} +1 -1
- package/dist/client/assets/{github-repo-picker-iNFjYstD.js → github-repo-picker-4y_CmSBW.js} +1 -1
- package/dist/client/assets/{index-Bren1GGu.js → index-B5IXTINZ.js} +1 -1
- package/dist/client/assets/{index-CC820IDY.js → index-BdMwcoDn.js} +1 -1
- package/dist/client/assets/{index-EeoXzNpy.js → index-BqvsnDAu.js} +1 -1
- package/dist/client/assets/{index-BHs8YvDv.js → index-C1JqC4-z.js} +1 -1
- package/dist/client/assets/{index-B0QzmEJF.js → index-Cf59DRJ6.js} +1 -1
- package/dist/client/assets/{index-n7SSrZJX.js → index-D7IIXROb.js} +2 -2
- package/dist/client/assets/{index-CtxpjU_s.js → index-DP75UHA3.js} +1 -1
- package/dist/client/assets/{index-B2N3AyqY.js → index-DTSAQq_o.js} +26 -26
- package/dist/client/assets/{index-B5cVztKY.js → index-DU8sxbAO.js} +1 -1
- package/dist/client/assets/{index-BsNTGYXY.js → index-DtTftwEv.js} +1 -1
- package/dist/client/assets/{infiniteQueryObserver-BvBE16xD.js → infiniteQueryObserver-CYDDJzdR.js} +1 -1
- package/dist/client/assets/{input-93auOJA-.js → input-C-zd9-6X.js} +1 -1
- package/dist/client/assets/{integration-icon-D1WPsIeS.js → integration-icon-DoWhqWe3.js} +1 -1
- package/dist/client/assets/{label-CDWfKnpv.js → label-B9VSuQAr.js} +1 -1
- package/dist/client/assets/{layout-ALExO3RM.js → layout-BJjatDlM.js} +1 -1
- package/dist/client/assets/{login-Dh8YEJcV.js → login-DMa1Q2q-.js} +1 -1
- package/dist/client/assets/{members-B0H2ICnj.js → members-BOugcvjA.js} +1 -1
- package/dist/client/assets/{monaco-editor-D2WY7je5.js → monaco-editor-Bo3tZIb0.js} +1 -1
- package/dist/client/assets/{monitoring-stats-row-CuznDVqp.js → monitoring-stats-row-B1bACC1V.js} +1 -1
- package/dist/client/assets/{oauth-callback-BxmH83JY.js → oauth-callback-CIypIDM5.js} +1 -1
- package/dist/client/assets/{oauth-callback-ai-provider-Dji18vK6.js → oauth-callback-ai-provider-Cx6R_dTa.js} +1 -1
- package/dist/client/assets/{onboarding-DO-aZIsc.js → onboarding-BqheUOWx.js} +1 -1
- package/dist/client/assets/{org-layout-DwQfVG_G.js → org-layout-CZ-JkZR2.js} +1 -1
- package/dist/client/assets/{org-plugin-layout-C0Hb_7ZN.js → org-plugin-layout-BrcX-6Wg.js} +1 -1
- package/dist/client/assets/{plugin-empty-state-DsKgDNt_.js → plugin-empty-state-DrfwC6PK.js} +1 -1
- package/dist/client/assets/{plugin-header-I-VJ7nR-.js → plugin-header-Dv9_QG9M.js} +1 -1
- package/dist/client/assets/{plugin-layout-rZ66K3Mj.js → plugin-layout-BYLLm93H.js} +1 -1
- package/dist/client/assets/{popover-BlhVdyjC.js → popover-BcJ5dkfy.js} +1 -1
- package/dist/client/assets/{profile-ChlGBaRJ.js → profile-BDIFKyuQ.js} +1 -1
- package/dist/client/assets/{project-app-view-CxGV0sjn.js → project-app-view-Dmfqsj8y.js} +1 -1
- package/dist/client/assets/registry-DWmg34NR.js +2 -0
- package/dist/client/assets/{registry-layout-fy1D5wVh.js → registry-layout-CcQfrJPf.js} +1 -1
- package/dist/client/assets/{required-auth-layout-D3LKevpJ.js → required-auth-layout-C8vP14ZM.js} +1 -1
- package/dist/client/assets/{reset-password-Cl6OUHwF.js → reset-password-Cx8pIjDB.js} +1 -1
- package/dist/client/assets/{roles-BZIugQbX.js → roles-V2PuVErH.js} +1 -1
- package/dist/client/assets/{scroll-area-DjI8JrA4.js → scroll-area-BJTd57Y3.js} +1 -1
- package/dist/client/assets/{search-input-c4tKbop1.js → search-input-o1N12hd4.js} +1 -1
- package/dist/client/assets/select-model-i86p2wLu.js +4 -0
- package/dist/client/assets/{select-DXPKpbnT.js → select-wye91jBR.js} +1 -1
- package/dist/client/assets/{settings-layout-D5262yUh.js → settings-layout-Bre58uB_.js} +1 -1
- package/dist/client/assets/{settings-section-BlkGvCu3.js → settings-section-C9gADeUy.js} +1 -1
- package/dist/client/assets/{shell-layout-DhpXypjS.js → shell-layout-BkODIfEq.js} +1 -1
- package/dist/client/assets/{skeleton-BK_N4aC7.js → skeleton-DRv0yCtF.js} +1 -1
- package/dist/client/assets/{sso-BtozqQ30.js → sso-DZp-3maq.js} +1 -1
- package/dist/client/assets/{store-DyctnerN.js → store-CN0vQifq.js} +1 -1
- package/dist/client/assets/store-registry-BObCKoqP.js +2 -0
- package/dist/client/assets/{switch-CrF-gMSq.js → switch-PbUvXBwc.js} +1 -1
- package/dist/client/assets/{table-C8OGdLdI.js → table-Vdrlqd3N.js} +1 -1
- package/dist/client/assets/{tabs-C_BS-m5A.js → tabs-CMVGP6Nm.js} +1 -1
- package/dist/client/assets/{task-status-Cm6Qp7d4.js → task-status-Cc80uZAM.js} +1 -1
- package/dist/client/assets/{textarea-Bx9ByRsd.js → textarea-CFCCYt2a.js} +1 -1
- package/dist/client/assets/{toggle-group-3sydXp-E.js → toggle-group-C7CndFhA.js} +1 -1
- package/dist/client/assets/{tools-list-CBTIdi20.js → tools-list-Kw0AITzg.js} +1 -1
- package/dist/client/assets/{types-CZtgPZDT.js → types-CfADcGn6.js} +1 -1
- package/dist/client/assets/{use-ai-providers-D498L3pM.js → use-ai-providers-BH0Y2Lij.js} +1 -1
- package/dist/client/assets/{use-collections-CtCWr_i-.js → use-collections-BosUNiJP.js} +1 -1
- package/dist/client/assets/{use-connection-BNJDlOt9.js → use-connection-BHgGmTOA.js} +1 -1
- package/dist/client/assets/{use-copy-CogZRw7t.js → use-copy-D6qOpdpT.js} +1 -1
- package/dist/client/assets/{use-create-virtual-mcp-BZbpQ7wy.js → use-create-virtual-mcp-Cx6IqxLi.js} +1 -1
- package/dist/client/assets/{use-decopilot-events-CGP9dkEP.js → use-decopilot-events-Bw4kdPRS.js} +1 -1
- package/dist/client/assets/{use-delete-connection-DnC4oqeg.js → use-delete-connection-BNbEYahP.js} +1 -1
- package/dist/client/assets/{use-infinite-scroll-BDcVHuzE.js → use-infinite-scroll-omTMTmB1.js} +1 -1
- package/dist/client/assets/{use-list-state-DhCZMYGi.js → use-list-state-BiBwgFiI.js} +1 -1
- package/dist/client/assets/{use-mcp-tools-BtNM-5qj.js → use-mcp-tools-jeaH_mio.js} +1 -1
- package/dist/client/assets/{use-members-BhnMtyBX.js → use-members-BR83cmtt.js} +1 -1
- package/dist/client/assets/{use-mobile-BP1wV0Dh.js → use-mobile-CrP2KZis.js} +1 -1
- package/dist/client/assets/{use-navigate-to-agent-Bl8tivkk.js → use-navigate-to-agent-C3zfnZck.js} +1 -1
- package/dist/client/assets/{use-org-sso-BURT85r2.js → use-org-sso-Bp80Qjb5.js} +1 -1
- package/dist/client/assets/{use-organization-roles-DFb5kpIb.js → use-organization-roles-BV6xrqqH.js} +1 -1
- package/dist/client/assets/{use-organization-settings-DOx6Mt6y.js → use-organization-settings-qZ1AM5bR.js} +1 -1
- package/dist/client/assets/{use-registry-connections-BnhgPbEO.js → use-registry-connections-4TVYi7-o.js} +1 -1
- package/dist/client/assets/{use-status-sounds-DfEYCKF7.js → use-status-sounds-DOhvVAtI.js} +1 -1
- package/dist/client/assets/{use-tasks-CpxN0ye6.js → use-tasks-Cd7MvMgt.js} +1 -1
- package/dist/client/assets/{use-view-mode-CXzkxsjO.js → use-view-mode-BtY__6eQ.js} +1 -1
- package/dist/client/assets/{use-virtual-mcp-CXDuGiqH.js → use-virtual-mcp-BUyveTe6.js} +1 -1
- package/dist/client/assets/useInfiniteQuery-c3E-w9DY.js +1 -0
- package/dist/client/assets/useSuspenseInfiniteQuery-D705BqvF.js +1 -0
- package/dist/client/assets/{user-DzVhNpqN.js → user-DgdWVRpj.js} +1 -1
- package/dist/client/assets/{view-mode-toggle-DPCyIr82.js → view-mode-toggle-D2WG_Euq.js} +1 -1
- package/dist/client/assets/{workflow-CdQVYV4Q.js → workflow-DRs0QH0L.js} +1 -1
- package/dist/client/assets/workflow-detail-B8_Px7_-.js +1 -0
- package/dist/client/index.html +1 -1
- package/dist/server/cli.js +393 -393
- package/dist/server/migrate.js +132 -132
- package/dist/server/node_modules/xtend/.jshintrc +30 -0
- package/dist/server/node_modules/{postgres-bytea/license → xtend/LICENSE} +1 -2
- package/dist/server/node_modules/xtend/README.md +32 -0
- package/dist/server/node_modules/xtend/immutable.js +19 -0
- package/dist/server/node_modules/xtend/mutable.js +17 -0
- package/dist/server/node_modules/xtend/package.json +55 -0
- package/dist/server/node_modules/xtend/test.js +103 -0
- package/dist/server/server.js +2 -2
- package/package.json +1 -1
- package/dist/client/assets/ai-providers-CbLrb_N0.js +0 -1
- package/dist/client/assets/ai-providers-logos-CS4PCiqI.js +0 -1
- package/dist/client/assets/registry-Fsu61we3.js +0 -2
- package/dist/client/assets/select-model-_tj2LEO8.js +0 -4
- package/dist/client/assets/store-registry-Iir3u5ll.js +0 -2
- package/dist/client/assets/useInfiniteQuery-CJd90n7M.js +0 -1
- package/dist/client/assets/useSuspenseInfiniteQuery-CJSBGdra.js +0 -1
- package/dist/client/assets/workflow-detail-BXw4DQr0.js +0 -1
- package/dist/server/node_modules/mimic-fn/index.d.ts +0 -54
- package/dist/server/node_modules/mimic-fn/index.js +0 -13
- package/dist/server/node_modules/mimic-fn/license +0 -9
- package/dist/server/node_modules/mimic-fn/package.json +0 -42
- package/dist/server/node_modules/mimic-fn/readme.md +0 -69
- package/dist/server/node_modules/pg-int8/LICENSE +0 -13
- package/dist/server/node_modules/pg-int8/README.md +0 -16
- package/dist/server/node_modules/pg-int8/index.js +0 -100
- package/dist/server/node_modules/pg-int8/package.json +0 -24
- package/dist/server/node_modules/postgres-array/index.d.ts +0 -4
- package/dist/server/node_modules/postgres-array/index.js +0 -97
- package/dist/server/node_modules/postgres-array/license +0 -21
- package/dist/server/node_modules/postgres-array/package.json +0 -35
- package/dist/server/node_modules/postgres-array/readme.md +0 -43
- package/dist/server/node_modules/postgres-bytea/index.js +0 -33
- package/dist/server/node_modules/postgres-bytea/package.json +0 -34
- package/dist/server/node_modules/postgres-bytea/readme.md +0 -34
- package/dist/server/node_modules/postgres-date/index.js +0 -116
- package/dist/server/node_modules/postgres-date/license +0 -21
- package/dist/server/node_modules/postgres-date/package.json +0 -33
- package/dist/server/node_modules/postgres-date/readme.md +0 -49
- package/dist/server/node_modules/postgres-interval/index.d.ts +0 -20
- package/dist/server/node_modules/postgres-interval/index.js +0 -125
- package/dist/server/node_modules/postgres-interval/license +0 -21
- package/dist/server/node_modules/postgres-interval/package.json +0 -36
- package/dist/server/node_modules/postgres-interval/readme.md +0 -48
package/dist/server/server.js
CHANGED
|
@@ -1126,7 +1126,7 @@ ${W}
|
|
|
1126
1126
|
`;break}case"tool":throw new dz({functionality:"tool messages"});default:break}return J+=`${Q}:
|
|
1127
1127
|
`,{prompt:J}}function oE9(Y){if(Y.type==="url")return{type:"image_url",image_url:{url:Y.url}};return{type:"image_url",image_url:{url:C81({data:Y.data,mediaType:Y.mediaType,defaultMediaType:tE9})}}}function YP9(Y){return Object.fromEntries(Object.entries(Y).filter(([,X])=>X!=null))}function XP9(Y){if(!Y)return{};if(Y instanceof Headers)return Object.fromEntries(Y.entries());if(Array.isArray(Y))return Object.fromEntries(Y);return Y}function GP9(Y,X){let G=X.toLowerCase();return Object.keys(Y).find((Q)=>Q.toLowerCase()===G)}function QP9(Y,...X){let G=XP9(Y),Q=YP9(G),J=GP9(Q,"user-agent"),$=J?Q[J]:void 0,Z=($==null?void 0:$.trim())?$:X.filter(Boolean).join(" "),W=Object.fromEntries(Object.entries(Q).filter(([K])=>K.toLowerCase()!=="user-agent"));return F5(J4({},W),{"user-agent":Z})}function FP9(Y){if(Y.type==="url")return{type:"image_url",image_url:{url:Y.url},frame_type:"first_frame"};return{type:"image_url",image_url:{url:C81({data:Y.data,mediaType:Y.mediaType,defaultMediaType:"image/png"})},frame_type:"first_frame"}}function cQ0(Y={}){var X,G,Q;let J=(G=DE9((X=Y.baseURL)!=null?X:Y.baseUrl))!=null?G:"https://openrouter.ai/api/v1",$=(Q=Y.compatibility)!=null?Q:"compatible",Z=()=>QP9(J4(J4(J4(J4({Authorization:`Bearer ${UL9({apiKey:Y.apiKey,environmentVariableName:"OPENROUTER_API_KEY",description:"OpenRouter"})}`},Y.appName&&{"X-OpenRouter-Title":Y.appName}),Y.appUrl&&{"HTTP-Referer":Y.appUrl}),Y.headers),Y.api_keys&&Object.keys(Y.api_keys).length>0&&{"X-Provider-API-Keys":JSON.stringify(Y.api_keys)}),`ai-sdk/openrouter/${JP9}`),W=(z,w={})=>new gE9(z,w,{provider:"openrouter.chat",url:({path:E})=>`${J}${E}`,headers:Z,compatibility:$,fetch:Y.fetch,extraBody:Y.extraBody}),K=(z,w={})=>new dE9(z,w,{provider:"openrouter.completion",url:({path:E})=>`${J}${E}`,headers:Z,compatibility:$,fetch:Y.fetch,extraBody:Y.extraBody}),H=(z,w={})=>new nE9(z,w,{provider:"openrouter.embedding",url:({path:E})=>`${J}${E}`,headers:Z,fetch:Y.fetch,extraBody:Y.extraBody}),U=(z,w={})=>new rE9(z,w,{provider:"openrouter.image",url:({path:E})=>`${J}${E}`,headers:Z,fetch:Y.fetch,extraBody:Y.extraBody}),N=(z,w={})=>new HP9(z,w,{provider:"openrouter.video",url:({path:E})=>`${J}${E}`,headers:Z,fetch:Y.fetch,extraBody:Y.extraBody}),B=(z,w)=>{if(new.target)throw Error("The OpenRouter model function cannot be called with the new keyword.");if(z==="openai/gpt-3.5-turbo-instruct")return K(z,w);return W(z,w)},O=(z,w)=>B(z,w);return O.languageModel=B,O.chat=W,O.completion=K,O.textEmbeddingModel=H,O.embedding=H,O.imageModel=U,O.videoModel=N,O.tools={webSearch:eE9},O}var kw9,Cw9,vw9,Gw1,wy4,Ly4,Ey4=(Y)=>{throw TypeError(Y)},vb4=(Y,X,G)=>(X in Y)?kw9(Y,X,{enumerable:!0,configurable:!0,writable:!0,value:G}):Y[X]=G,J4=(Y,X)=>{for(var G in X||(X={}))if(wy4.call(X,G))vb4(Y,G,X[G]);if(Gw1){for(var G of Gw1(X))if(Ly4.call(X,G))vb4(Y,G,X[G])}return Y},F5=(Y,X)=>Cw9(Y,vw9(X)),di=(Y,X)=>{var G={};for(var Q in Y)if(wy4.call(Y,Q)&&X.indexOf(Q)<0)G[Q]=Y[Q];if(Y!=null&&Gw1){for(var Q of Gw1(Y))if(X.indexOf(Q)<0&&Ly4.call(Y,Q))G[Q]=Y[Q]}return G},_w9=(Y,X,G)=>X.has(Y)||Ey4("Cannot "+G),_b4=(Y,X,G)=>(_w9(Y,X,"read from private field"),G?G.call(Y):X.get(Y)),fw9=(Y,X,G)=>X.has(Y)?Ey4("Cannot add the same private member more than once"):X instanceof WeakSet?X.add(Y):X.set(Y,G),Py4="vercel.ai.error",bw9,fb4,bb4,OY,qy4="AI_APICallError",Ay4,yw9,yb4,hb4,xG,Iy4="AI_EmptyResponseBodyError",Ty4,hw9,xb4,gb4,xw9,Vy4="AI_InvalidArgumentError",My4,gw9,ub4,lb4,Ry4,Sy4="AI_InvalidPromptError",ky4,uw9,mb4,db4,lw9,Cy4="AI_InvalidResponseDataError",vy4,mw9,cb4,ib4,oD1,_y4="AI_JSONParseError",fy4,dw9,pb4,nb4,Qw1,by4="AI_LoadAPIKeyError",yy4,cw9,ab4,rb4,sD1,hy4="AI_LoadSettingError",xy4,iw9,tb4,ob4,LFX,gy4="AI_NoContentGeneratedError",uy4,pw9,sb4,eb4,xQ0,ly4="AI_NoSuchModelError",my4,nw9,Yy4,Xy4,EFX,dy4="AI_TooManyEmbeddingValuesForCallError",cy4,aw9,Gy4,Qy4,PFX,iy4="AI_TypeValidationError",py4,rw9,Jy4,Zy4,S81,ny4="AI_UnsupportedFunctionalityError",ay4,tw9,$y4,Wy4,dz,Ky4,ew9,XL9,TFX,ry4="AI_DownloadError",ty4,QL9,Fy4,Uy4,jFX,JL9=({prefix:Y,size:X=16,alphabet:G="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",separator:Q="-"}={})=>{let J=()=>{let $=G.length,Z=Array(X);for(let W=0;W<X;W++)Z[W]=G[Math.random()*$|0];return Z.join("")};if(Y==null)return J;if(G.includes(Q))throw new Ry4({argument:"separator",message:`The separator "${Q}" must not be part of the alphabet "${G}".`});return()=>`${Y}${Q}${J()}`},sN,ZL9,$L9,Yh4="4.0.23",HL9=()=>globalThis.fetch,FL9=async({url:Y,headers:X={},successfulResponseHandler:G,failedResponseHandler:Q,abortSignal:J,fetch:$=HL9()})=>{try{let Z=await $(Y,{method:"GET",headers:ey4(X,`ai-sdk/provider-utils/${Yh4}`,sy4()),signal:J}),W=_81(Z);if(!Z.ok){let K;try{K=await Q({response:Z,url:Y,requestBodyValues:{}})}catch(H){if(k81(H)||xG.isInstance(H))throw H;throw new xG({message:"Failed to process error response",cause:H,statusCode:Z.status,url:Y,responseHeaders:W,requestBodyValues:{}})}throw K.value}try{return await G({response:Z,url:Y,requestBodyValues:{}})}catch(K){if(K instanceof Error){if(k81(K)||xG.isInstance(K))throw K}throw new xG({message:"Failed to process successful response",cause:K,statusCode:Z.status,url:Y,responseHeaders:W,requestBodyValues:{}})}}catch(Z){throw oy4({error:Z,url:Y,requestBodyValues:{}})}},NL9,BL9,zL9,By4,DL9=(Y)=>typeof Y==="string"?F5(J4({},By4),{name:Y}):J4(J4({},By4),Y),PL9=(Y,X)=>{return c5(Y.innerType._def,X)},qL9=(Y)=>{let X={type:"integer",format:"unix-time"};for(let G of Y.checks)switch(G.kind){case"min":X.minimum=G.value;break;case"max":X.maximum=G.value;break}return X},jL9=(Y)=>{if("type"in Y&&Y.type==="string")return!1;return"allOf"in Y},SQ0=void 0,RF,RL9,_Q0,bL9=(Y,X)=>{let G=(Y.options instanceof Map?Array.from(Y.options.values()):Y.options).map((Q,J)=>c5(Q._def,F5(J4({},X),{currentPath:[...X.currentPath,"anyOf",`${J}`]}))).filter((Q)=>!!Q&&(!X.strictUnions||typeof Q==="object"&&Object.keys(Q).length>0));return G.length?{anyOf:G}:void 0},lL9=(Y,X)=>{var G;if(X.currentPath.toString()===((G=X.propertyPath)==null?void 0:G.toString()))return c5(Y.innerType._def,X);let Q=c5(Y.innerType._def,F5(J4({},X),{currentPath:[...X.currentPath,"anyOf","1"]}));return Q?{anyOf:[{not:J3()},Q]}:J3()},mL9=(Y,X)=>{if(X.pipeStrategy==="input")return c5(Y.in._def,X);else if(X.pipeStrategy==="output")return c5(Y.out._def,X);let G=c5(Y.in._def,F5(J4({},X),{currentPath:[...X.currentPath,"allOf","0"]})),Q=c5(Y.out._def,F5(J4({},X),{currentPath:[...X.currentPath,"allOf",G?"1":"0"]}));return{allOf:[G,Q].filter((J)=>J!==void 0)}},aL9=(Y,X)=>{return c5(Y.innerType._def,X)},rL9=(Y,X,G)=>{switch(X){case X0.ZodString:return Qh4(Y,G);case X0.ZodNumber:return hL9(Y);case X0.ZodObject:return xL9(Y,G);case X0.ZodBigInt:return LL9(Y);case X0.ZodBoolean:return EL9();case X0.ZodDate:return Gh4(Y,G);case X0.ZodUndefined:return pL9();case X0.ZodNull:return _L9();case X0.ZodArray:return wL9(Y,G);case X0.ZodUnion:case X0.ZodDiscriminatedUnion:return fL9(Y,G);case X0.ZodIntersection:return VL9(Y,G);case X0.ZodTuple:return iL9(Y,G);case X0.ZodRecord:return Jh4(Y,G);case X0.ZodLiteral:return ML9(Y);case X0.ZodEnum:return TL9(Y);case X0.ZodNativeEnum:return CL9(Y);case X0.ZodNullable:return yL9(Y,G);case X0.ZodOptional:return lL9(Y,G);case X0.ZodMap:return kL9(Y,G);case X0.ZodSet:return cL9(Y,G);case X0.ZodLazy:return()=>Y.getter()._def;case X0.ZodPromise:return dL9(Y,G);case X0.ZodNaN:case X0.ZodNever:return vL9();case X0.ZodEffects:return IL9(Y,G);case X0.ZodAny:return J3();case X0.ZodUnknown:return nL9();case X0.ZodDefault:return AL9(Y,G);case X0.ZodBranded:return Xh4(Y,G);case X0.ZodReadonly:return aL9(Y,G);case X0.ZodCatch:return PL9(Y,G);case X0.ZodPipeline:return mL9(Y,G);case X0.ZodFunction:case X0.ZodVoid:case X0.ZodSymbol:return;default:return((Q)=>{return})(X)}},tL9=(Y,X)=>{let G=0;for(;G<Y.length&&G<X.length;G++)if(Y[G]!==X[G])break;return[(Y.length-G).toString(),...X.slice(G)].join("/")},oL9=(Y,X)=>{switch(X.$refStrategy){case"root":return{$ref:Y.path.join("/")};case"relative":return{$ref:tL9(X.currentPath,Y.path)};case"none":case"seen":{if(Y.path.length<X.currentPath.length&&Y.path.every((G,Q)=>X.currentPath[Q]===G))return console.warn(`Recursive reference detected at ${X.currentPath.join("/")}! Defaulting to any`),J3();return X.$refStrategy==="seen"?J3():void 0}}},sL9=(Y,X,G)=>{if(Y.description)G.description=Y.description;return G},eL9=(Y)=>{let X=DL9(Y),G=X.name!==void 0?[...X.basePath,X.definitionPath,X.name]:X.basePath;return F5(J4({},X),{currentPath:G,propertyPath:void 0,seen:new Map(Object.entries(X.definitions).map(([Q,J])=>[J._def,{def:J._def,path:[...X.basePath,X.definitionPath,Q],jsonSchema:void 0}]))})},YE9=(Y,X)=>{var G;let Q=eL9(X),J=typeof X==="object"&&X.definitions?Object.entries(X.definitions).reduce((H,[U,N])=>{var B;return F5(J4({},H),{[U]:(B=c5(N._def,F5(J4({},Q),{currentPath:[...Q.basePath,Q.definitionPath,U]}),!0))!=null?B:J3()})},{}):void 0,$=typeof X==="string"?X:(X==null?void 0:X.nameStrategy)==="title"?void 0:X==null?void 0:X.name,Z=(G=c5(Y._def,$===void 0?Q:F5(J4({},Q),{currentPath:[...Q.basePath,Q.definitionPath,$]}),!1))!=null?G:J3(),W=typeof X==="object"&&X.name!==void 0&&X.nameStrategy==="title"?X.name:void 0;if(W!==void 0)Z.title=W;let K=$===void 0?J?F5(J4({},Z),{[Q.definitionPath]:J}):Z:{$ref:[...Q.$refStrategy==="relative"?[]:Q.basePath,Q.definitionPath,$].join("/"),[Q.definitionPath]:F5(J4({},J),{[$]:Z})};return K.$schema="http://json-schema.org/draft-07/schema#",K},fQ0,UE9=()=>globalThis.fetch,jj=async({url:Y,headers:X,body:G,failedResponseHandler:Q,successfulResponseHandler:J,abortSignal:$,fetch:Z})=>NE9({url:Y,headers:J4({"Content-Type":"application/json"},X),body:{content:JSON.stringify(G),values:G},failedResponseHandler:Q,successfulResponseHandler:J,abortSignal:$,fetch:Z}),NE9=async({url:Y,headers:X={},body:G,successfulResponseHandler:Q,failedResponseHandler:J,abortSignal:$,fetch:Z=UE9()})=>{try{let W=await Z(Y,{method:"POST",headers:ey4(X,`ai-sdk/provider-utils/${Yh4}`,sy4()),body:G.content,signal:$}),K=_81(W);if(!W.ok){let H;try{H=await J({response:W,url:Y,requestBodyValues:G.values})}catch(U){if(k81(U)||xG.isInstance(U))throw U;throw new xG({message:"Failed to process error response",cause:U,statusCode:W.status,url:Y,responseHeaders:K,requestBodyValues:G.values})}throw H.value}try{return await Q({response:W,url:Y,requestBodyValues:G.values})}catch(H){if(H instanceof Error){if(k81(H)||xG.isInstance(H))throw H}throw new xG({message:"Failed to process successful response",cause:H,statusCode:W.status,url:Y,responseHeaders:K,requestBodyValues:G.values})}}catch(W){throw oy4({error:W,url:Y,requestBodyValues:G.values})}},zE9=({errorSchema:Y,errorToMessage:X,isRetryable:G})=>async({response:Q,url:J,requestBodyValues:$})=>{let Z=await Q.text(),W=_81(Q);if(Z.trim()==="")return{responseHeaders:W,value:new xG({message:Q.statusText,url:J,requestBodyValues:$,statusCode:Q.status,responseHeaders:W,responseBody:Z,isRetryable:G==null?void 0:G(Q)})};try{let K=await HE9({text:Z,schema:Y});return{responseHeaders:W,value:new xG({message:X(K),url:J,requestBodyValues:$,statusCode:Q.status,responseHeaders:W,responseBody:Z,data:K,isRetryable:G==null?void 0:G(Q,K)})}}catch(K){return{responseHeaders:W,value:new xG({message:Q.statusText,url:J,requestBodyValues:$,statusCode:Q.status,responseHeaders:W,responseBody:Z,isRetryable:G==null?void 0:G(Q)})}}},Wh4=(Y)=>async({response:X})=>{let G=_81(X);if(X.body==null)throw new xw9({});return{responseHeaders:G,value:FE9({stream:X.body,schema:Y})}},ci=(Y)=>async({response:X,url:G,requestBodyValues:Q})=>{let J=await X.text(),$=await $h4({text:J,schema:Y}),Z=_81(X);if(!$.success)throw new xG({message:"Invalid JSON response",cause:$.error,statusCode:X.status,responseHeaders:Z,responseBody:J,url:G,requestBodyValues:Q});return{responseHeaders:Z,value:$.value,rawValue:$.rawValue}},Kh4,wE9="anthropic-claude-v1",lQ0,LE9,EE9,PE9,Hh4,eD1,Ww1,MFX,Kw1,iE,Fh4,mQ0,yQ0,Yw1,TE9=class{constructor(){fw9(this,Yw1,new Set)}upsert(Y){let X=this.getCanonicalKey(Y);if(X===null)return!1;if(_b4(this,Yw1).has(X))return!1;return _b4(this,Yw1).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}}},jE9,Bh4,kE9,CFX,bE9,yE9,Oh4,zh4,hE9,xE9,gE9=class{constructor(Y,X,G){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=G}getArgs({prompt:Y,maxOutputTokens:X,temperature:G,topP:Q,frequencyPenalty:J,presencePenalty:$,seed:Z,stopSequences:W,responseFormat:K,topK:H,tools:U,toolChoice:N}){var B,O;let z=J4(J4({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!=null?X:this.settings.maxTokens,temperature:G!=null?G:this.settings.temperature,top_p:Q!=null?Q:this.settings.topP,frequency_penalty:J!=null?J:this.settings.frequencyPenalty,presence_penalty:$!=null?$:this.settings.presencePenalty,seed:Z,stop:W,response_format:(K==null?void 0:K.type)==="json"?K.schema!=null?{type:"json_schema",json_schema:J4({schema:K.schema,strict:!0,name:(B=K.name)!=null?B:"response"},K.description&&{description:K.description})}:{type:"json_object"}:void 0,top_k:H!=null?H:this.settings.topK,messages:ME9(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(U&&U.length>0){let w=[];for(let E of U)if(E.type==="function"){let P=(O=E.providerOptions)==null?void 0:O.openrouter,I=P==null?void 0:P.eager_input_streaming;w.push(J4({type:"function",function:{name:E.name,description:E.description,parameters:E.inputSchema}},I!=null&&{eager_input_streaming:I}))}else if(E.type==="provider")w.push(uE9(E));return F5(J4({},z),{tools:w,tool_choice:N?fE9(N):void 0})}return z}async doGenerate(Y){var X,G,Q,J,$,Z,W,K,H,U,N,B,O,z,w,E,P,I,V,M,j;let _=(Y.providerOptions||{}).openrouter||{},{cacheControl:v}=_,y=di(_,["cacheControl"]),g=J4(J4(J4({},this.getArgs(Y)),y),v!=null&&!("cache_control"in y)?{cache_control:v}:{}),{value:i,responseHeaders:n}=await jj({url:this.config.url({path:"/chat/completions",modelId:this.modelId}),headers:Tj(this.config.headers(),Y.headers),body:g,failedResponseHandler:iE,successfulResponseHandler:ci(hE9),abortSignal:Y.abortSignal,fetch:this.config.fetch});if("error"in i){let Y1=i.error;throw new xG({message:Y1.message,url:this.config.url({path:"/chat/completions",modelId:this.modelId}),requestBodyValues:g,statusCode:200,responseHeaders:n,data:Y1})}let b=i,m=b.choices[0];if(!m)throw new xQ0({message:"No choice in response"});let e=b.usage?Jw1(b.usage):Uh4(),s=(X=m.message.reasoning_details)!=null?X:[],O1=s.length>0?s.map((Y1)=>{switch(Y1.type){case"reasoning.text":{if(Y1.text)return{type:"reasoning",text:Y1.text,providerMetadata:{openrouter:{reasoning_details:[Y1]}}};break}case"reasoning.summary":{if(Y1.summary)return{type:"reasoning",text:Y1.summary,providerMetadata:{openrouter:{reasoning_details:[Y1]}}};break}case"reasoning.encrypted":break;default:}return null}).filter((Y1)=>Y1!==null):m.message.reasoning?[{type:"reasoning",text:m.message.reasoning}]:[],P1=[];if(P1.push(...O1),m.message.content)P1.push({type:"text",text:m.message.content});if(m.message.tool_calls){let Y1=!1,b1=new Set;for(let G0 of m.message.tool_calls){let a1=G0.id;if(!a1||b1.has(a1))a1=sN();b1.add(a1),P1.push({type:"tool-call",toolCallId:a1,toolName:G0.function.name,input:(G=G0.function.arguments)!=null?G:"{}",providerMetadata:!Y1?{openrouter:{reasoning_details:s}}:void 0}),Y1=!0}}if(m.message.images)for(let Y1 of m.message.images)P1.push({type:"file",mediaType:zy4(Y1.image_url.url,"image/jpeg"),data:v81(Y1.image_url.url)});if(m.message.annotations){for(let Y1 of m.message.annotations)if(Y1.type==="url_citation")P1.push({type:"source",sourceType:"url",id:Y1.url_citation.url,url:Y1.url_citation.url,title:(Q=Y1.url_citation.title)!=null?Q:"",providerMetadata:{openrouter:{content:(J=Y1.url_citation.content)!=null?J:"",startIndex:($=Y1.url_citation.start_index)!=null?$:0,endIndex:(Z=Y1.url_citation.end_index)!=null?Z:0}}})}let B1=(W=m.message.annotations)==null?void 0:W.filter((Y1)=>Y1.type==="file"),w1=m.message.tool_calls&&m.message.tool_calls.length>0,J1=s.some((Y1)=>Y1.type==="reasoning.encrypted"&&Y1.data),f1=w1&&J1&&m.finish_reason==="stop"?vK("tool-calls",(K=m.finish_reason)!=null?K:void 0):Zw1(m.finish_reason),S1=w1&&f1.unified==="other"?vK("tool-calls",f1.raw):f1;return{content:P1,finishReason:S1,usage:e,warnings:[],providerMetadata:{openrouter:mQ0.parse({provider:(H=b.provider)!=null?H:"",reasoning_details:(U=m.message.reasoning_details)!=null?U:[],annotations:B1&&B1.length>0?B1:void 0,usage:J4(J4(J4(J4({promptTokens:(N=e.inputTokens.total)!=null?N:0,completionTokens:(B=e.outputTokens.total)!=null?B:0,totalTokens:((O=e.inputTokens.total)!=null?O:0)+((z=e.outputTokens.total)!=null?z:0)},((w=b.usage)==null?void 0:w.cost)!=null?{cost:b.usage.cost}:{}),((P=(E=b.usage)==null?void 0:E.prompt_tokens_details)==null?void 0:P.cached_tokens)!=null?{promptTokensDetails:{cachedTokens:b.usage.prompt_tokens_details.cached_tokens}}:{}),((V=(I=b.usage)==null?void 0:I.completion_tokens_details)==null?void 0:V.reasoning_tokens)!=null?{completionTokensDetails:{reasoningTokens:b.usage.completion_tokens_details.reasoning_tokens}}:{}),((j=(M=b.usage)==null?void 0:M.cost_details)==null?void 0:j.upstream_inference_cost)!=null?{costDetails:{upstreamInferenceCost:b.usage.cost_details.upstream_inference_cost}}:{})})},request:{body:g},response:{id:b.id,modelId:b.model,headers:n,body:b}}}async doStream(Y){var X;let J=(Y.providerOptions||{}).openrouter||{},{cacheControl:$}=J,Z=di(J,["cacheControl"]),W=J4(J4(J4({},this.getArgs(Y)),Z),$!=null&&!("cache_control"in Z)?{cache_control:$}:{}),{value:K,responseHeaders:H}=await jj({url:this.config.url({path:"/chat/completions",modelId:this.modelId}),headers:Tj(this.config.headers(),Y.headers),body:F5(J4({},W),{stream:!0,stream_options:this.config.compatibility==="strict"?J4({include_usage:!0},((X=this.settings.usage)==null?void 0:X.include)?{include_usage:!0}:{}):void 0}),failedResponseHandler:iE,successfulResponseHandler:Wh4(xE9),abortSignal:Y.abortSignal,fetch:this.config.fetch}),U,N=Nh4(K,(g)=>{U=g}),B=[],O=new Set,z=vK("other"),w={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},E={},P,I=[],V=!1,M=[],j=!1,S=!1,C,_,v,y;return{stream:N.pipeThrough(new TransformStream({transform(g,i){var n,b,m,e,s,O1,P1,B1,w1,J1,y1,f1,S1,Y1,b1,G0,a1,E1,L1,U1,Q1;if(Y.includeRawChunks)i.enqueue({type:"raw",rawValue:g.rawValue});if(!g.success){z=vK("error"),i.enqueue({type:"error",error:g.error});return}let I1=g.value;if("error"in I1){z=vK("error"),i.enqueue({type:"error",error:I1.error});return}if(I1.provider)y=I1.provider;if(I1.id)v=I1.id,i.enqueue({type:"response-metadata",id:I1.id});if(I1.model)i.enqueue({type:"response-metadata",modelId:I1.model});if(I1.usage!=null){let i1=Jw1(I1.usage);Object.assign(w.inputTokens,i1.inputTokens),Object.assign(w.outputTokens,i1.outputTokens),P=I1.usage;let B0=(n=I1.usage.prompt_tokens)!=null?n:0,L0=(b=I1.usage.completion_tokens)!=null?b:0;if(E.promptTokens=B0,I1.usage.prompt_tokens_details)E.promptTokensDetails={cachedTokens:(m=I1.usage.prompt_tokens_details.cached_tokens)!=null?m:0};if(E.completionTokens=L0,I1.usage.completion_tokens_details)E.completionTokensDetails={reasoningTokens:(e=I1.usage.completion_tokens_details.reasoning_tokens)!=null?e:0};if(I1.usage.cost!=null)E.cost=I1.usage.cost;E.totalTokens=I1.usage.total_tokens;let v4=(s=I1.usage.cost_details)==null?void 0:s.upstream_inference_cost;if(v4!=null)E.costDetails={upstreamInferenceCost:v4}}let j1=I1.choices[0];if((j1==null?void 0:j1.finish_reason)!=null)z=Zw1(j1.finish_reason);if((j1==null?void 0:j1.delta)==null)return;let c1=j1.delta,t1=(i1)=>{if(!S)_=sN(),i.enqueue({type:"reasoning-start",id:_}),S=!0;i.enqueue({type:"reasoning-delta",delta:i1,id:_||sN()})};if(c1.reasoning_details&&c1.reasoning_details.length>0){for(let i1 of c1.reasoning_details)if(i1.type==="reasoning.text"){let B0=I[I.length-1];if((B0==null?void 0:B0.type)==="reasoning.text")B0.text=(B0.text||"")+(i1.text||""),B0.signature=B0.signature||i1.signature,B0.format=B0.format||i1.format;else I.push(J4({},i1))}else I.push(i1);if(!j)for(let i1 of c1.reasoning_details)switch(i1.type){case"reasoning.text":{t1(i1.text||"");break}case"reasoning.encrypted":break;case"reasoning.summary":{if(i1.summary)t1(i1.summary);break}default:break}}else if(c1.reasoning&&!j)t1(c1.reasoning);if(c1.content){if(S&&!j)i.enqueue({type:"reasoning-end",id:_||sN(),providerMetadata:{openrouter:{reasoning_details:I}}}),S=!1;if(!j)C=v||sN(),i.enqueue({type:"text-start",id:C}),j=!0;i.enqueue({type:"text-delta",delta:c1.content,id:C||sN()})}if(c1.annotations){for(let i1 of c1.annotations)if(i1.type==="url_citation")i.enqueue({type:"source",sourceType:"url",id:i1.url_citation.url,url:i1.url_citation.url,title:(O1=i1.url_citation.title)!=null?O1:"",providerMetadata:{openrouter:{content:(P1=i1.url_citation.content)!=null?P1:"",startIndex:(B1=i1.url_citation.start_index)!=null?B1:0,endIndex:(w1=i1.url_citation.end_index)!=null?w1:0}}});else if(i1.type==="file"){let B0=i1.file;if(B0&&typeof B0==="object"&&"hash"in B0&&"name"in B0)M.push(i1)}}if(c1.tool_calls!=null)for(let i1 of c1.tool_calls){let B0=(J1=i1.index)!=null?J1:B.length-1;if(B[B0]==null){if(i1.type!=="function")throw new oD1({data:i1,message:"Expected 'function' type."});if(((y1=i1.function)==null?void 0:y1.name)==null)throw new oD1({data:i1,message:"Expected 'function.name' to be a string."});let v4=(f1=i1.id)!=null?f1:"";if(!v4||O.has(v4))v4=sN();O.add(v4),B[B0]={id:v4,type:"function",function:{name:i1.function.name,arguments:(S1=i1.function.arguments)!=null?S1:""},inputStarted:!1,sent:!1};let d0=B[B0];if(d0==null)throw new oD1({data:{index:B0,toolCallsLength:B.length},message:`Tool call at index ${B0} is missing after creation.`});if(((Y1=d0.function)==null?void 0:Y1.name)!=null&&((b1=d0.function)==null?void 0:b1.arguments)!=null&&CQ0(d0.function.arguments))d0.inputStarted=!0,i.enqueue({type:"tool-input-start",id:d0.id,toolName:d0.function.name}),i.enqueue({type:"tool-input-delta",id:d0.id,delta:d0.function.arguments}),i.enqueue({type:"tool-input-end",id:d0.id}),i.enqueue({type:"tool-call",toolCallId:d0.id,toolName:d0.function.name,input:d0.function.arguments,providerMetadata:!V?{openrouter:{reasoning_details:I}}:void 0}),V=!0,d0.sent=!0;continue}let L0=B[B0];if(L0==null)throw new oD1({data:{index:B0,toolCallsLength:B.length,toolCallDelta:i1},message:`Tool call at index ${B0} is missing during merge.`});if(!L0.inputStarted){if(L0.inputStarted=!0,i.enqueue({type:"tool-input-start",id:L0.id,toolName:L0.function.name}),L0.function.arguments)i.enqueue({type:"tool-input-delta",id:L0.id,delta:L0.function.arguments})}if(((G0=i1.function)==null?void 0:G0.arguments)!=null)L0.function.arguments+=(E1=(a1=i1.function)==null?void 0:a1.arguments)!=null?E1:"";if(i.enqueue({type:"tool-input-delta",id:L0.id,delta:(L1=i1.function.arguments)!=null?L1:""}),((U1=L0.function)==null?void 0:U1.name)!=null&&((Q1=L0.function)==null?void 0:Q1.arguments)!=null&&CQ0(L0.function.arguments))i.enqueue({type:"tool-input-end",id:L0.id}),i.enqueue({type:"tool-call",toolCallId:L0.id,toolName:L0.function.name,input:L0.function.arguments,providerMetadata:!V?{openrouter:{reasoning_details:I}}:void 0}),V=!0,L0.sent=!0}if(c1.images!=null)for(let i1 of c1.images)i.enqueue({type:"file",mediaType:zy4(i1.image_url.url,"image/jpeg"),data:v81(i1.image_url.url)})},flush(g){let i=B.length>0;if(U!=null)z=vK("error"),g.enqueue({type:"error",error:U});let n=I.some((m)=>m.type==="reasoning.encrypted"&&m.data);if(i&&n&&z.unified==="stop")z=vK("tool-calls",z.raw);if(i&&z.unified==="other")z=vK("tool-calls",z.raw);if(z.unified==="tool-calls"){for(let m of B)if(m&&!m.sent){let e=CQ0(m.function.arguments)?m.function.arguments:"{}";if(!m.inputStarted)g.enqueue({type:"tool-input-start",id:m.id,toolName:m.function.name}),g.enqueue({type:"tool-input-delta",id:m.id,delta:e});g.enqueue({type:"tool-input-end",id:m.id}),g.enqueue({type:"tool-call",toolCallId:m.id,toolName:m.function.name,input:e,providerMetadata:!V?{openrouter:{reasoning_details:I}}:void 0}),V=!0,m.sent=!0}}if(S)g.enqueue({type:"reasoning-end",id:_||sN(),providerMetadata:{openrouter:{reasoning_details:I}}});if(j)g.enqueue({type:"text-end",id:C||sN()});let b={usage:E};if(y!==void 0)b.provider=y;if(b.reasoning_details=I,M.length>0)b.annotations=M;if(w.inputTokens.total===void 0&&E.promptTokens!==void 0)w.inputTokens.total=E.promptTokens;if(w.outputTokens.total===void 0&&E.completionTokens!==void 0)w.outputTokens.total=E.completionTokens;w.raw=P,g.enqueue({type:"finish",finishReason:z,usage:w,providerMetadata:{openrouter:b}})}})),warnings:[],request:{body:W},response:{headers:H}}}},Dy4,dE9=class{constructor(Y,X,G){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=G}getArgs({prompt:Y,maxOutputTokens:X,temperature:G,topP:Q,frequencyPenalty:J,presencePenalty:$,seed:Z,responseFormat:W,topK:K,stopSequences:H,tools:U,toolChoice:N}){let{prompt:B}=mE9({prompt:Y,inputFormat:"prompt"});if(U==null?void 0:U.length)throw new dz({functionality:"tools"});if(N)throw new dz({functionality:"toolChoice"});return J4(J4({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!=null?X:this.settings.maxTokens,temperature:G!=null?G:this.settings.temperature,top_p:Q!=null?Q:this.settings.topP,frequency_penalty:J!=null?J:this.settings.frequencyPenalty,presence_penalty:$!=null?$:this.settings.presencePenalty,seed:Z,stop:H,response_format:W,top_k:K!=null?K:this.settings.topK,prompt:B,include_reasoning:this.settings.includeReasoning,reasoning:this.settings.reasoning},this.config.extraBody),this.settings.extraBody)}async doGenerate(Y){var X,G,Q,J,$,Z,W,K,H,U,N,B,O,z,w,E,P;let V=(Y.providerOptions||{}).openrouter||{},M=J4(J4({},this.getArgs(Y)),V),{value:j,responseHeaders:S}=await jj({url:this.config.url({path:"/completions",modelId:this.modelId}),headers:Tj(this.config.headers(),Y.headers),body:M,failedResponseHandler:iE,successfulResponseHandler:ci(Dy4),abortSignal:Y.abortSignal,fetch:this.config.fetch});if("error"in j){let _=j.error;throw new xG({message:_.message,url:this.config.url({path:"/completions",modelId:this.modelId}),requestBodyValues:M,statusCode:200,responseHeaders:S,data:_})}let C=j.choices[0];if(!C)throw new xQ0({message:"No choice in OpenRouter completion response"});return{content:[{type:"text",text:(X=C.text)!=null?X:""}],finishReason:Zw1(C.finish_reason),usage:j.usage?Jw1(j.usage):Uh4(),warnings:[],providerMetadata:{openrouter:mQ0.parse({provider:(G=j.provider)!=null?G:"",usage:J4(J4(J4(J4({promptTokens:(J=(Q=j.usage)==null?void 0:Q.prompt_tokens)!=null?J:0,completionTokens:(Z=($=j.usage)==null?void 0:$.completion_tokens)!=null?Z:0,totalTokens:((K=(W=j.usage)==null?void 0:W.prompt_tokens)!=null?K:0)+((U=(H=j.usage)==null?void 0:H.completion_tokens)!=null?U:0)},((N=j.usage)==null?void 0:N.cost)!=null?{cost:j.usage.cost}:{}),((O=(B=j.usage)==null?void 0:B.prompt_tokens_details)==null?void 0:O.cached_tokens)!=null?{promptTokensDetails:{cachedTokens:j.usage.prompt_tokens_details.cached_tokens}}:{}),((w=(z=j.usage)==null?void 0:z.completion_tokens_details)==null?void 0:w.reasoning_tokens)!=null?{completionTokensDetails:{reasoningTokens:j.usage.completion_tokens_details.reasoning_tokens}}:{}),((P=(E=j.usage)==null?void 0:E.cost_details)==null?void 0:P.upstream_inference_cost)!=null?{costDetails:{upstreamInferenceCost:j.usage.cost_details.upstream_inference_cost}}:{})})},response:{headers:S}}}async doStream(Y){let G=(Y.providerOptions||{}).openrouter||{},Q=J4(J4({},this.getArgs(Y)),G),{value:J,responseHeaders:$}=await jj({url:this.config.url({path:"/completions",modelId:this.modelId}),headers:Tj(this.config.headers(),Y.headers),body:F5(J4({},Q),{stream:!0,stream_options:this.config.compatibility==="strict"?{include_usage:!0}:void 0}),failedResponseHandler:iE,successfulResponseHandler:Wh4(Dy4),abortSignal:Y.abortSignal,fetch:this.config.fetch}),Z,W=Nh4(J,(O)=>{Z=O}),K=vK("other"),H={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},U={},N,B;return{stream:W.pipeThrough(new TransformStream({transform(O,z){var w,E,P,I,V;if(Y.includeRawChunks)z.enqueue({type:"raw",rawValue:O.rawValue});if(!O.success){K=vK("error"),z.enqueue({type:"error",error:O.error});return}let M=O.value;if("error"in M){K=vK("error"),z.enqueue({type:"error",error:M.error});return}if(M.provider)N=M.provider;if(M.usage!=null){let S=Jw1(M.usage);Object.assign(H.inputTokens,S.inputTokens),Object.assign(H.outputTokens,S.outputTokens),B=M.usage;let C=(w=M.usage.prompt_tokens)!=null?w:0,_=(E=M.usage.completion_tokens)!=null?E:0;if(U.promptTokens=C,M.usage.prompt_tokens_details)U.promptTokensDetails={cachedTokens:(P=M.usage.prompt_tokens_details.cached_tokens)!=null?P:0};if(U.completionTokens=_,M.usage.completion_tokens_details)U.completionTokensDetails={reasoningTokens:(I=M.usage.completion_tokens_details.reasoning_tokens)!=null?I:0};if(M.usage.cost!=null)U.cost=M.usage.cost;U.totalTokens=M.usage.total_tokens;let v=(V=M.usage.cost_details)==null?void 0:V.upstream_inference_cost;if(v!=null)U.costDetails={upstreamInferenceCost:v}}let j=M.choices[0];if((j==null?void 0:j.finish_reason)!=null)K=Zw1(j.finish_reason);if((j==null?void 0:j.text)!=null)z.enqueue({type:"text-delta",delta:j.text,id:sN()})},flush(O){if(Z!=null)K=vK("error"),O.enqueue({type:"error",error:Z});H.raw=B;let z={usage:U};if(N!==void 0)z.provider=N;O.enqueue({type:"finish",finishReason:K,usage:H,providerMetadata:{openrouter:z}})}})),response:{headers:$}}}},cE9,iE9,pE9,nE9=class{constructor(Y,X,G){this.specificationVersion="v3",this.provider="openrouter",this.maxEmbeddingsPerCall=void 0,this.supportsParallelCalls=!0,this.modelId=Y,this.settings=X,this.config=G}async doEmbed(Y){var X,G,Q,J,$,Z;let{values:W,abortSignal:K,headers:H}=Y,U=J4(J4({model:this.modelId,input:W,user:this.settings.user,provider:this.settings.provider},this.config.extraBody),this.settings.extraBody),{value:N,responseHeaders:B}=await jj({url:this.config.url({path:"/embeddings",modelId:this.modelId}),headers:Tj(this.config.headers(),H),body:U,failedResponseHandler:iE,successfulResponseHandler:ci(pE9),abortSignal:K,fetch:this.config.fetch});return{embeddings:N.data.map((O)=>O.embedding),usage:N.usage?{tokens:N.usage.prompt_tokens}:void 0,providerMetadata:{openrouter:mQ0.parse({provider:(X=N.provider)!=null?X:"",usage:J4({promptTokens:(Q=(G=N.usage)==null?void 0:G.prompt_tokens)!=null?Q:0,completionTokens:0,totalTokens:($=(J=N.usage)==null?void 0:J.total_tokens)!=null?$:0},((Z=N.usage)==null?void 0:Z.cost)!=null?{cost:N.usage.cost}:{})})},response:{headers:B,body:N},warnings:[]}}},aE9,rE9=class{constructor(Y,X,G){this.specificationVersion="v3",this.provider="openrouter",this.maxImagesPerCall=1,this.modelId=Y,this.settings=X,this.config=G}async doGenerate(Y){var X;let{prompt:G,n:Q,size:J,aspectRatio:$,seed:Z,files:W,mask:K,abortSignal:H,headers:U,providerOptions:N}=Y,B=(N==null?void 0:N.openrouter)||{},O=[];if(K!==void 0)throw new dz({functionality:"image inpainting (mask parameter)"});if(Q>1)O.push({type:"unsupported",feature:"n > 1",details:`OpenRouter image generation returns 1 image per call. Requested ${Q} images.`});if(J!==void 0)O.push({type:"unsupported",feature:"size",details:"Use aspectRatio instead. Size parameter is not supported by OpenRouter image generation."});let z=$!==void 0?{aspect_ratio:$}:void 0,E=W!==void 0&&W.length>0?[...W.map((C)=>oE9(C)),{type:"text",text:G!=null?G:""}]:G!=null?G:"",P=J4(J4(J4(J4(J4(J4(J4({model:this.modelId,messages:[{role:"user",content:E}],modalities:["image","text"]},z!==void 0&&{image_config:z}),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),B),{value:I,responseHeaders:V}=await jj({url:this.config.url({path:"/chat/completions",modelId:this.modelId}),headers:Tj(this.config.headers(),U),body:P,failedResponseHandler:iE,successfulResponseHandler:ci(aE9),abortSignal:H,fetch:this.config.fetch}),M=I.choices[0];if(!M)throw new xQ0({message:"No choice in response"});let j=[];if((X=M.message)==null?void 0:X.images)for(let C of M.message.images){let _=C.image_url.url;j.push(v81(_))}let S=I.usage?{inputTokens:I.usage.prompt_tokens,outputTokens:I.usage.completion_tokens,totalTokens:I.usage.total_tokens}:void 0;return{images:j,warnings:O,response:{timestamp:new Date,modelId:I.model,headers:V},usage:S}}},tE9="image/png",sE9,eE9,JP9="2.8.1",ZP9,$P9,WP9=2000,KP9=600000,HP9=class{constructor(Y,X,G){this.specificationVersion="v3",this.provider="openrouter",this.maxVideosPerCall=1,this.modelId=Y,this.settings=X,this.config=G}async doGenerate(Y){var X,G,Q,J,$;let{prompt:Z,n:W,aspectRatio:K,resolution:H,duration:U,seed:N,image:B,abortSignal:O,headers:z,providerOptions:w}=Y,E=[];if(W>1)E.push({type:"unsupported",feature:"n > 1",details:`OpenRouter video generation returns 1 video per call. Requested ${W} videos.`});let P=J4(J4(J4(J4(J4(J4(J4(J4(J4({model:this.modelId,prompt:Z!=null?Z:""},K!==void 0&&{aspect_ratio:K}),H!==void 0&&{size:H}),U!==void 0&&{duration:U}),N!==void 0&&{seed:N}),this.settings.generateAudio!==void 0&&{generate_audio:this.settings.generateAudio}),B!==void 0&&{frame_images:[FP9(B)]}),this.config.extraBody),this.settings.extraBody),w.openrouter),I=Tj(this.config.headers(),z),{value:V,responseHeaders:M}=await jj({url:this.config.url({path:"/videos",modelId:this.modelId}),headers:I,body:P,failedResponseHandler:iE,successfulResponseHandler:ci(ZP9),abortSignal:O,fetch:this.config.fetch}),j=(X=this.settings.pollIntervalMs)!=null?X:WP9,S=(G=this.settings.maxPollTimeMs)!=null?G:KP9,C=await this.pollUntilComplete({jobId:V.id,headers:I,abortSignal:O,pollIntervalMs:j,maxPollTimeMs:S}),_=[];if(C.unsigned_urls)for(let y of C.unsigned_urls)_.push({type:"url",url:y,mediaType:"video/mp4"});let v={openrouter:{generationId:(Q=C.generation_id)!=null?Q:null,cost:($=(J=C.usage)==null?void 0:J.cost)!=null?$:null}};return{videos:_,warnings:E,providerMetadata:v,response:{timestamp:new Date,modelId:this.modelId,headers:M}}}async pollUntilComplete({jobId:Y,headers:X,abortSignal:G,pollIntervalMs:Q,maxPollTimeMs:J}){var $;let Z=Date.now();while(Date.now()-Z<J){G==null||G.throwIfAborted(),await YL9(Q),G==null||G.throwIfAborted();let{value:W}=await FL9({url:this.config.url({path:`/videos/${Y}`,modelId:this.modelId}),headers:X,failedResponseHandler:iE,successfulResponseHandler:ci($P9),abortSignal:G,fetch:this.config.fetch});if(W.status==="completed")return{generation_id:W.generation_id,unsigned_urls:W.unsigned_urls,usage:W.usage};if(W.status==="failed"||W.status==="dead"||W.status==="cancelled"||W.status==="expired")throw new xG({message:($=W.error)!=null?$:`Video generation failed with status: ${W.status}`,url:this.config.url({path:`/videos/${Y}`,modelId:this.modelId}),requestBodyValues:{},statusCode:500,isRetryable:!1})}throw new xG({message:`Video generation timed out after ${J}ms`,url:this.config.url({path:`/videos/${Y}`,modelId:this.modelId}),requestBodyValues:{},statusCode:408,isRetryable:!0})}},gFX;var Dh4=D(()=>{l0();uH();uH();uH();l0();l0();l0();l0();l0();l0();l0();l0();l0();l0();l0();kw9=Object.defineProperty,Cw9=Object.defineProperties,vw9=Object.getOwnPropertyDescriptors,Gw1=Object.getOwnPropertySymbols,wy4=Object.prototype.hasOwnProperty,Ly4=Object.prototype.propertyIsEnumerable,bw9=Symbol.for(Py4),OY=class Y extends(bb4=Error,fb4=bw9,bb4){constructor({name:X,message:G,cause:Q}){super(G);this[fb4]=!0,this.name=X,this.cause=Q}static isInstance(X){return Y.hasMarker(X,Py4)}static hasMarker(X,G){let Q=Symbol.for(G);return X!=null&&typeof X==="object"&&Q in X&&typeof X[Q]==="boolean"&&X[Q]===!0}},Ay4=`vercel.ai.error.${qy4}`,yw9=Symbol.for(Ay4),xG=class extends(hb4=OY,yb4=yw9,hb4){constructor({message:Y,url:X,requestBodyValues:G,statusCode:Q,responseHeaders:J,responseBody:$,cause:Z,isRetryable:W=Q!=null&&(Q===408||Q===409||Q===429||Q>=500),data:K}){super({name:qy4,message:Y,cause:Z});this[yb4]=!0,this.url=X,this.requestBodyValues=G,this.statusCode=Q,this.responseHeaders=J,this.responseBody=$,this.isRetryable=W,this.data=K}static isInstance(Y){return OY.hasMarker(Y,Ay4)}},Ty4=`vercel.ai.error.${Iy4}`,hw9=Symbol.for(Ty4),xw9=class extends(gb4=OY,xb4=hw9,gb4){constructor({message:Y="Empty response body"}={}){super({name:Iy4,message:Y});this[xb4]=!0}static isInstance(Y){return OY.hasMarker(Y,Ty4)}};My4=`vercel.ai.error.${Vy4}`,gw9=Symbol.for(My4),Ry4=class extends(lb4=OY,ub4=gw9,lb4){constructor({message:Y,cause:X,argument:G}){super({name:Vy4,message:Y,cause:X});this[ub4]=!0,this.argument=G}static isInstance(Y){return OY.hasMarker(Y,My4)}},ky4=`vercel.ai.error.${Sy4}`,uw9=Symbol.for(ky4),lw9=class extends(db4=OY,mb4=uw9,db4){constructor({prompt:Y,message:X,cause:G}){super({name:Sy4,message:`Invalid prompt: ${X}`,cause:G});this[mb4]=!0,this.prompt=Y}static isInstance(Y){return OY.hasMarker(Y,ky4)}},vy4=`vercel.ai.error.${Cy4}`,mw9=Symbol.for(vy4),oD1=class extends(ib4=OY,cb4=mw9,ib4){constructor({data:Y,message:X=`Invalid response data: ${JSON.stringify(Y)}.`}){super({name:Cy4,message:X});this[cb4]=!0,this.data=Y}static isInstance(Y){return OY.hasMarker(Y,vy4)}},fy4=`vercel.ai.error.${_y4}`,dw9=Symbol.for(fy4),Qw1=class extends(nb4=OY,pb4=dw9,nb4){constructor({text:Y,cause:X}){super({name:_y4,message:`JSON parsing failed: Text: ${Y}.
|
|
1128
1128
|
Error message: ${jy4(X)}`,cause:X});this[pb4]=!0,this.text=Y}static isInstance(Y){return OY.hasMarker(Y,fy4)}},yy4=`vercel.ai.error.${by4}`,cw9=Symbol.for(yy4),sD1=class extends(rb4=OY,ab4=cw9,rb4){constructor({message:Y}){super({name:by4,message:Y});this[ab4]=!0}static isInstance(Y){return OY.hasMarker(Y,yy4)}},xy4=`vercel.ai.error.${hy4}`,iw9=Symbol.for(xy4),LFX=class extends(ob4=OY,tb4=iw9,ob4){constructor({message:Y}){super({name:hy4,message:Y});this[tb4]=!0}static isInstance(Y){return OY.hasMarker(Y,xy4)}},uy4=`vercel.ai.error.${gy4}`,pw9=Symbol.for(uy4),xQ0=class extends(eb4=OY,sb4=pw9,eb4){constructor({message:Y="No content generated."}={}){super({name:gy4,message:Y});this[sb4]=!0}static isInstance(Y){return OY.hasMarker(Y,uy4)}},my4=`vercel.ai.error.${ly4}`,nw9=Symbol.for(my4),EFX=class extends(Xy4=OY,Yy4=nw9,Xy4){constructor({errorName:Y=ly4,modelId:X,modelType:G,message:Q=`No such ${G}: ${X}`}){super({name:Y,message:Q});this[Yy4]=!0,this.modelId=X,this.modelType=G}static isInstance(Y){return OY.hasMarker(Y,my4)}},cy4=`vercel.ai.error.${dy4}`,aw9=Symbol.for(cy4),PFX=class extends(Qy4=OY,Gy4=aw9,Qy4){constructor(Y){super({name:dy4,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[Gy4]=!0,this.provider=Y.provider,this.modelId=Y.modelId,this.maxEmbeddingsPerCall=Y.maxEmbeddingsPerCall,this.values=Y.values}static isInstance(Y){return OY.hasMarker(Y,cy4)}},py4=`vercel.ai.error.${iy4}`,rw9=Symbol.for(py4),S81=class Y extends(Zy4=OY,Jy4=rw9,Zy4){constructor({value:X,cause:G,context:Q}){let J="Type validation failed";if(Q==null?void 0:Q.field)J+=` for ${Q.field}`;if((Q==null?void 0:Q.entityName)||(Q==null?void 0:Q.entityId)){J+=" (";let $=[];if(Q.entityName)$.push(Q.entityName);if(Q.entityId)$.push(`id: "${Q.entityId}"`);J+=$.join(", "),J+=")"}super({name:iy4,message:`${J}: Value: ${JSON.stringify(X)}.
|
|
1129
|
-
Error message: ${jy4(G)}`,cause:G});this[Jy4]=!0,this.value=X,this.context=Q}static isInstance(X){return OY.hasMarker(X,py4)}static wrap({value:X,cause:G,context:Q}){var J,$,Z;if(Y.isInstance(G)&&G.value===X&&((J=G.context)==null?void 0:J.field)===(Q==null?void 0:Q.field)&&(($=G.context)==null?void 0:$.entityName)===(Q==null?void 0:Q.entityName)&&((Z=G.context)==null?void 0:Z.entityId)===(Q==null?void 0:Q.entityId))return G;return new Y({value:X,cause:G,context:Q})}},ay4=`vercel.ai.error.${ny4}`,tw9=Symbol.for(ay4),dz=class extends(Wy4=OY,$y4=tw9,Wy4){constructor({functionality:Y,message:X=`'${Y}' functionality not supported.`}){super({name:ny4,message:X});this[$y4]=!0,this.functionality=Y}static isInstance(Y){return OY.hasMarker(Y,ay4)}},Ky4=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}};ew9=class extends TransformStream{constructor({onError:Y,onRetry:X,onComment:G}={}){let Q;super({start(J){Q=ow9({onEvent:($)=>{J.enqueue($)},onError($){Y==="terminate"?J.error($):typeof Y=="function"&&Y($)},onRetry:X,onComment:G})},transform(J){Q.feed(J)}})}};({btoa:XL9,atob:TFX}=globalThis);ty4=`vercel.ai.error.${ry4}`,QL9=Symbol.for(ty4),jFX=class extends(Uy4=OY,Fy4=QL9,Uy4){constructor({url:Y,statusCode:X,statusText:G,cause:Q,message:J=Q==null?`Failed to download ${Y}: ${X} ${G}`:`Failed to download ${Y}: ${Q}`}){super({name:ry4,message:J,cause:Q});this[Fy4]=!0,this.url=Y,this.statusCode=X,this.statusText=G}static isInstance(Y){return OY.hasMarker(Y,ty4)}},sN=JL9();ZL9=["fetch failed","failed to fetch"],$L9=["ConnectionRefused","ConnectionClosed","FailedToOpenSocket","ECONNRESET","ECONNREFUSED","ETIMEDOUT","EPIPE"];NL9=/"(?:_|\\u005[Ff])(?:_|\\u005[Ff])(?:p|\\u0070)(?:r|\\u0072)(?:o|\\u006[Ff])(?:t|\\u0074)(?:o|\\u006[Ff])(?:_|\\u005[Ff])(?:_|\\u005[Ff])"\s*:/,BL9=/"(?:c|\\u0063)(?:o|\\u006[Ff])(?:n|\\u006[Ee])(?:s|\\u0073)(?:t|\\u0074)(?:r|\\u0072)(?:u|\\u0075)(?:c|\\u0063)(?:t|\\u0074)(?:o|\\u006[Ff])(?:r|\\u0072)"\s*:/;zL9=Symbol("Let zodToJsonSchema decide on which parser to use"),By4={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"};RF={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(SQ0===void 0)SQ0=RegExp("^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$","u");return SQ0},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-_]*$/};RL9=new Set("ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789");_Q0={ZodString:"string",ZodNumber:"number",ZodBigInt:"integer",ZodBoolean:"boolean",ZodNull:"null"};fQ0=Symbol.for("vercel.ai.schema");Kh4=((Y)=>{return Y.Unknown="unknown",Y.OpenAIResponsesV1="openai-responses-v1",Y.AzureOpenAIResponsesV1="azure-openai-responses-v1",Y.XAIResponsesV1="xai-responses-v1",Y.AnthropicClaudeV1="anthropic-claude-v1",Y.GoogleGeminiV1="google-gemini-v1",Y})(Kh4||{}),lQ0=F.object({id:F.string().nullish(),format:F.enum(Kh4).nullish(),index:F.number().optional()}).loose(),LE9=F.object({type:F.literal("reasoning.summary"),summary:F.string()}).extend(lQ0.shape),EE9=F.object({type:F.literal("reasoning.encrypted"),data:F.string()}).extend(lQ0.shape),PE9=F.object({type:F.literal("reasoning.text"),text:F.string().nullish(),signature:F.string().nullish()}).extend(lQ0.shape),Hh4=F.union([LE9,EE9,PE9]),eD1=F.union([Hh4,F.unknown().transform(()=>null)]),Ww1=F.array(eD1).transform((Y)=>Y.filter((X)=>!!X)),MFX=F.union([F.object({delta:F.object({reasoning_details:F.array(eD1)})}).transform((Y)=>Y.delta.reasoning_details.filter(vQ0)),F.object({message:F.object({reasoning_details:F.array(eD1)})}).transform((Y)=>Y.message.reasoning_details.filter(vQ0)),F.object({text:F.string(),reasoning_details:F.array(eD1)}).transform((Y)=>Y.reasoning_details.filter(vQ0))]),Kw1=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();iE=zE9({errorSchema:Kw1,errorToMessage:qE9}),Fh4=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()),mQ0=F.object({provider:F.string(),reasoning_details:F.array(Hh4).optional(),annotations:F.array(Fh4).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()),yQ0=F.object({openrouter:F.object({reasoning_details:Ww1.optional(),annotations:F.array(Fh4).optional()}).optional()}).optional();Yw1=new WeakMap;jE9=["wav","mp3","aiff","aac","ogg","flac","m4a","pcm16","pcm24"];Bh4={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"};kE9=new Set(["jpg","jpeg","png","gif","webp","svg","bmp","ico","tif","tiff","avif"]);CFX=F.union([F.literal("auto"),F.literal("none"),F.literal("required"),F.object({type:F.literal("function"),function:F.object({name:F.string()})})]);bE9=F.object({type:F.literal("image_url"),image_url:F.object({url:F.string()}).passthrough()}).passthrough(),yE9=F.union([bE9,F.unknown().transform(()=>null)]),Oh4=F.array(yE9).transform((Y)=>Y.filter((X)=>!!X)),zh4=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(),hE9=F.union([zh4.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:Ww1.nullish(),images:Oh4.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())}),Kw1.extend({user_id:F.string().optional()})]),xE9=F.union([zh4.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:Ww1.nullish(),images:Oh4.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())}),Kw1]);Dy4=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:Ww1.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(),Kw1]),cE9=F.object({prompt_tokens:F.number(),total_tokens:F.number(),cost:F.number().optional()}),iE9=F.object({object:F.literal("embedding"),embedding:F.array(F.number()),index:F.number().optional()}),pE9=F.object({id:F.string().optional(),object:F.literal("list"),data:F.array(iE9),model:F.string(),provider:F.string().optional(),usage:cE9.optional()}),aE9=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();sE9=F.object({results:F.array(F.unknown()).optional()}),eE9=OE9({id:"openrouter.web_search",inputSchema:sE9});ZP9=F.object({id:F.string(),generation_id:F.string().optional(),polling_url:F.string(),status:F.string()}).passthrough(),$P9=F.object({id:F.string(),generation_id:F.string().optional(),polling_url:F.string(),status:F.string(),unsigned_urls:F.array(F.string()).optional(),usage:F.object({cost:F.number().optional(),is_byok:F.boolean().optional()}).passthrough().optional(),error:F.string().optional()}).passthrough();gFX=cQ0({compatibility:"strict"})});var UP9="https://assets.decocache.com/decocms/284f1ad9-3fd8-494c-be88-16671069f3b9/openrouter.svg",Hw1;var iQ0=D(()=>{Dh4();Hw1={info:{id:"openrouter",name:"OpenRouter",description:"Unified API for multiple AI providers",logo:UP9},supportedMethods:["oauth-pkce","api-key"],getOAuthUrl({callbackUrl:Y,codeChallenge:X,codeChallengeMethod:G}){return`https://openrouter.ai/auth?${new URLSearchParams({callback_url:Y,code_challenge:X,code_challenge_method:G})}`},async exchangeOAuthCode({code:Y,codeVerifier:X,codeChallengeMethod:G}){let Q=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:G}),signal:AbortSignal.timeout(30000)});if(!Q.ok)throw Error(`OpenRouter OAuth exchange failed: ${Q.status}`);let J=await Q.json();return{apiKey:J.key,userId:J.user_id}},create(Y){let X=cQ0({apiKey:Y}),G={Authorization:`Bearer ${Y}`};return{info:this.info,aiSdk:X,async listModels(){let Q=(W)=>{return{providerId:"openrouter",modelId:W.id,title:W.name,description:W.description??null,logo:null,capabilities:[...new Set([...W.architecture.input_modalities.map((K)=>K==="image"?"vision":K),...W.architecture.output_modalities,...W.supported_parameters?.includes("tools")?["tools"]:[],...W.supported_parameters?.includes("reasoning")?["reasoning"]:[]])],limits:{contextWindow:W.context_length??0,maxOutputTokens:W.top_provider.max_completion_tokens||null},costs:{input:W.pricing.prompt??0,output:W.pricing.completion??0}}},J=await fetch("https://openrouter.ai/api/v1/models",{headers:G,signal:AbortSignal.timeout(30000)});if(!J.ok)throw Error(`OpenRouter listModels failed: ${J.status}`);let{data:$}=await J.json();return $.map(Q)}}}}});function pQ0(){return S4().aiGatewayUrl??"https://ai-site.decocache.com"}var f81;var nQ0=D(()=>{iQ0();YY();f81={info:{id:"deco",name:"Deco AI Gateway",description:"Deco-managed keys with access to 100+ models",logo:"/logos/deco logo.svg"},supportedMethods:["api-key"],async getTopUpUrl(Y,X,G,Q="usd"){let J=await fetch(`${pQ0()}/api/credits/checkout`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${Y}`},body:JSON.stringify({teamId:X,amountCents:G,currency:Q}),signal:AbortSignal.timeout(1e4)});if(!J.ok)throw Error(`Failed to create top-up checkout: ${J.status}`);return(await J.json()).url},async getCreditsBalance(Y,X){let G=await fetch(`${pQ0()}/api/teams/${X}/balance`,{headers:{Authorization:`Bearer ${Y}`},signal:AbortSignal.timeout(1e4)});if(!G.ok)throw Error(`Failed to fetch credits balance: ${G.status}`);return{balanceCents:(await G.json()).balance_cents}},async provisionKey(Y,X){let G=S4().studioProvisionSecretKey??"";if(!G)throw Error("STUDIO_PROVISION_SECRET_KEY is not set");let Q=await fetch(`${pQ0()}/api/keys/provision`,{method:"POST",headers:{"Content-Type":"application/json","X-Provision-Key":G,Authorization:`Bearer ${Y}`},body:JSON.stringify({organization_id:X}),signal:AbortSignal.timeout(15000)});if(!Q.ok)throw Error(`Deco AI Gateway key provisioning failed: ${Q.status}`);return(await Q.json()).key},create(Y){return{...Hw1.create(Y),info:this.info}}}});import{createCipheriv as NP9,createDecipheriv as BP9,randomBytes as wh4}from"crypto";class Vj{key;constructor(Y){if(Buffer.from(Y,"base64").length===Ph4)this.key=Buffer.from(Y,"base64");else{let X=_1("crypto");this.key=X.createHash("sha256").update(Y).digest()}}async encrypt(Y){let X=wh4(b81),G=NP9(Lh4,this.key,X),Q=G.update(Y,"utf8");Q=Buffer.concat([Q,G.final()]);let J=G.getAuthTag();return Buffer.concat([X,J,Q]).toString("base64")}async decrypt(Y){let X=Buffer.from(Y,"base64"),G=X.subarray(0,b81),Q=X.subarray(b81,b81+Eh4),J=X.subarray(b81+Eh4),$=BP9(Lh4,this.key,G);$.setAuthTag(Q);let Z=$.update(J);return Z=Buffer.concat([Z,$.final()]),Z.toString("utf8")}static generateKey(){return wh4(Ph4).toString("base64")}}var Lh4="aes-256-gcm",b81=16,Eh4=16,Ph4=32;var Fw1=()=>{};var qh4="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";import{webcrypto as Ah4}from"crypto";function zP9(Y){if(!Mj||Mj.length<Y)Mj=Buffer.allocUnsafe(Y*OP9),Ah4.getRandomValues(Mj),ii=0;else if(ii+Y>Mj.length)Ah4.getRandomValues(Mj),ii=0;ii+=Y}function Ih4(Y=21){zP9(Y|=0);let X="";for(let G=ii-Y;G<ii;G++)X+=qh4[Mj[G]&63];return X}var OP9=128,Mj,ii;var Th4=()=>{};function kY(Y){return`${Y}_${Ih4()}`}var _K=D(()=>{Th4()});import{createHash as DP9}from"crypto";function jh4(Y){return DP9("sha256").update(Y).digest("hex")}class y81{db;vault;constructor(Y,X){this.db=Y;this.vault=X}rowToKeyInfo(Y){return{id:Y.id,providerId:Y.provider_id,label:Y.label,organizationId:Y.organization_id,createdBy:Y.created_by,createdAt:Y.created_at instanceof Date?Y.created_at.toISOString():String(Y.created_at)}}async create(Y){let X=kY("aik"),G=await this.vault.encrypt(Y.apiKey),Q=jh4(Y.apiKey),J=new Date;return await this.db.insertInto("ai_provider_keys").values({id:X,organization_id:Y.organizationId,provider_id:Y.providerId,label:Y.label,encrypted_api_key:G,key_hash:Q,created_by:Y.createdBy,created_at:J}).execute(),this.rowToKeyInfo({id:X,provider_id:Y.providerId,label:Y.label,organization_id:Y.organizationId,created_by:Y.createdBy,created_at:J})}async upsert(Y){let X=kY("aik"),G=await this.vault.encrypt(Y.apiKey),Q=jh4(Y.apiKey),J=new Date,$=await this.db.insertInto("ai_provider_keys").values({id:X,organization_id:Y.organizationId,provider_id:Y.providerId,label:Y.label,encrypted_api_key:G,key_hash:Q,created_by:Y.createdBy,created_at:J}).onConflict((Z)=>Z.columns(["organization_id","provider_id","key_hash"]).doUpdateSet({label:Y.label})).returning(["id","provider_id","label","organization_id","created_by","created_at"]).executeTakeFirstOrThrow();return this.rowToKeyInfo($)}async list(Y){let X=this.db.selectFrom("ai_provider_keys").where("organization_id","=",Y.organizationId).select(["id","provider_id","label","organization_id","created_by","created_at"]);if(Y.providerId)X=X.where("provider_id","=",Y.providerId);return(await X.orderBy("created_at","desc").execute()).map((Q)=>this.rowToKeyInfo(Q))}async resolve(Y,X){let G=await this.db.selectFrom("ai_provider_keys").where("id","=",Y).where("organization_id","=",X).selectAll().executeTakeFirstOrThrow(),Q=await this.vault.decrypt(G.encrypted_api_key);return{keyInfo:this.rowToKeyInfo(G),apiKey:Q}}async delete(Y,X){if(!(await this.db.deleteFrom("ai_provider_keys").where("id","=",Y).where("organization_id","=",X).executeTakeFirst()).numDeletedRows)throw Error(`AI provider key ${Y} not found`)}async findById(Y,X){let G=await this.db.selectFrom("ai_provider_keys").where("id","=",Y).where("organization_id","=",X).select(["id","provider_id","label","organization_id","created_by","created_at"]).executeTakeFirst();if(!G)throw Error("Provider key not found");return this.rowToKeyInfo(G)}}var aQ0=D(()=>{_K()});var cz=D(()=>{eU1()});function Uw1(Y){return Y.toLowerCase().trim().replace(/\//g,"-").replace(/[^a-z0-9\s_-]+/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}function h81(Y){if(Y.app_name)return Y.app_name;if(Y.connection_url)try{let X=new URL(Y.connection_url),Q=((X.port?`${X.hostname}-${X.port}`:X.hostname)+X.pathname).replace(/\/+$/,"");return Uw1(Q)}catch{return Uw1(Y.connection_url)}if(Y.title)return Uw1(Y.title);return Y.id??"unknown"}var rQ0=()=>{};function Mh4(Y){if(Y.length===0)return null;let X=Y[0];if(Y.length===1&&LP9.has(X))return p1.ref(X);if(Y.length===2&&Vh4.has(X)){let G=Y[1];return p1`${p1.ref(X)}->>${p1.lit(G)}`}if(Y.length>2&&Vh4.has(X)){let G=`{${Y.slice(1).join(",")}}`;return p1`${p1.ref(X)}#>>${p1.lit(G)}`}return null}function Rh4(Y){if("conditions"in Y){let{operator:$,conditions:Z}=Y;if(Z.length===0)return p1`true`;let W=Z.map((K)=>Rh4(K));switch($){case"and":return p1`(${p1.join(W,p1` AND `)})`;case"or":return p1`(${p1.join(W,p1` OR `)})`;case"not":return p1`NOT (${p1.join(W,p1` AND `)})`;default:return p1`true`}}let{field:X,operator:G,value:Q}=Y,J=Mh4(X);if(!J)return p1`true`;switch(G){case"eq":return Q===null?p1`${J} IS NULL`:p1`${J} = ${p1.val(Q)}`;case"gt":return p1`${J} > ${p1.val(Q)}`;case"gte":return p1`${J} >= ${p1.val(Q)}`;case"lt":return p1`${J} < ${p1.val(Q)}`;case"lte":return p1`${J} <= ${p1.val(Q)}`;case"in":if(!Array.isArray(Q)||Q.length===0)return p1`false`;return p1`${J} IN (${p1.join(Q.map(($)=>p1.val($)))})`;case"like":return p1`${J} ILIKE ${p1.val(Q)}`;case"contains":{let $=String(Q).replace(/[%_\\]/g,"\\$&");return p1`${J} ILIKE ${p1.val(`%${$}%`)}`}default:return p1`true`}}class x81{db;vault;constructor(Y,X){this.db=Y;this.vault=X}async create(Y){let X=Y.id??kY("conn"),G=new Date().toISOString(),Q=await this.findById(X);if(Q){if(Q.organization_id!==Y.organization_id)throw Error("Connection ID already exists");return this.update(X,Y)}let J=h81(Y),$=await this.serializeConnection({...Y,id:Y.id??X,slug:J,status:"active",created_at:G,updated_at:G});await this.db.insertInto("connections").values($).execute();let Z=await this.findById(X);if(!Z)throw Error(`Failed to create connection with id: ${X}`);return Z}async findById(Y,X){let G=WN(Y);if(G)return y40(X??G);let Q=this.db.selectFrom("connections").selectAll().where("id","=",Y);if(X)Q=Q.where("organization_id","=",X);let J=await Q.executeTakeFirst();return J?this.deserializeConnection(J):null}async list(Y,X){let G=this.db.selectFrom("connections").selectAll().where("organization_id","=",Y);if(!X?.includeVirtual)G=G.where("connection_type","!=","VIRTUAL");if(X?.slug)G=G.where("slug","=",X.slug);if(X?.where)G=G.where(Rh4(X.where));let $=(await this.db.selectFrom(G.as("filtered")).select(p1`count(*)::int`.as("count")).executeTakeFirst())?.count??0;if(X?.orderBy&&X.orderBy.length>0)for(let K of X.orderBy){let H=Mh4(K.field);if(!H)continue;let U=K.direction==="desc"?p1`desc`:p1`asc`,N=K.nulls==="first"?p1`nulls first`:p1`nulls last`;G=G.orderBy(p1`${H} ${U} ${N}`)}if(X?.limit)G=G.limit(X.limit);if(X?.offset)G=G.offset(X.offset);let Z=await G.execute();return{items:await Promise.all(Z.map((K)=>this.deserializeConnection(K))),totalCount:$}}async update(Y,X){if(Object.keys(X).length===0){let $=await this.findById(Y);if(!$)throw Error("Connection not found");return $}let G={...X};if(X.app_name!==void 0||X.connection_url!==void 0||X.title!==void 0){let $=await this.findById(Y);if($)G.slug=h81({app_name:X.app_name??$.app_name,connection_url:X.connection_url??$.connection_url,title:X.title??$.title,id:Y})}let Q=await this.serializeConnection({...G,updated_at:new Date().toISOString()});await this.db.updateTable("connections").set(Q).where("id","=",Y).execute();let J=await this.findById(Y);if(!J)throw Error("Connection not found after update");return J}async delete(Y){await this.db.deleteFrom("connections").where("id","=",Y).execute()}async testConnection(Y,X){let G=await this.findById(Y);if(!G)throw Error("Connection not found");let Q=Date.now();if(G.connection_type==="STDIO")return{healthy:!0,latencyMs:Date.now()-Q};if(!G.connection_url)return{healthy:!1,latencyMs:Date.now()-Q};try{let J=G.connection_headers,$=await fetch(G.connection_url,{method:"POST",headers:{"Content-Type":"application/json",...G.connection_token&&{Authorization:`Bearer ${G.connection_token}`},...J?.headers,...X},body:JSON.stringify({jsonrpc:"2.0",method:"ping",id:1})});return{healthy:$.ok||$.status===404,latencyMs:Date.now()-Q}}catch{return{healthy:!1,latencyMs:Date.now()-Q}}}async serializeConnection(Y){let X={};for(let[G,Q]of Object.entries(Y)){if(Q===void 0)continue;if(G==="tools")continue;if(G==="connection_token"&&Q)X[G]=await this.vault.encrypt(Q);else if(G==="configuration_state"&&Q){let J=JSON.stringify(Q);X[G]=await this.vault.encrypt(J)}else if(G==="connection_headers"&&Q){let J=Q;if(HN(J)&&J.envVars){let $={};for(let[Z,W]of Object.entries(J.envVars))$[Z]=await this.vault.encrypt(W);X[G]=JSON.stringify({...J,envVars:$})}else X[G]=JSON.stringify(J)}else if(wP9.includes(G))X[G]=Q?JSON.stringify(Q):null;else X[G]=Q}return X}async deserializeConnection(Y){let X=null;if(Y.connection_token)try{X=await this.vault.decrypt(Y.connection_token)}catch($){console.error(`Failed to decrypt connection token for connection ${Y.id} (org: ${Y.organization_id}, type: ${Y.connection_type}, title: ${Y.title}):`,$)}let G=null;if(Y.configuration_state)try{let $=await this.vault.decrypt(Y.configuration_state);G=JSON.parse($)}catch($){console.error(`Failed to decrypt configuration state for connection ${Y.id} (org: ${Y.organization_id}, type: ${Y.connection_type}, title: ${Y.title}):`,$)}let Q=null;if(Y.connection_headers)try{let $=JSON.parse(Y.connection_headers);if(HN($)&&$.envVars){let Z={};for(let[W,K]of Object.entries($.envVars))try{Z[W]=await this.vault.decrypt(K)}catch{Z[W]=K}Q={...$,envVars:Z}}else Q=$}catch($){console.error(`Failed to parse connection_headers for connection ${Y.id} (org: ${Y.organization_id}, type: ${Y.connection_type}, title: ${Y.title}):`,$)}let J=($)=>{if($===null)return null;if(typeof $==="string")try{return JSON.parse($)}catch{return null}return $};return{id:Y.id,organization_id:Y.organization_id,created_by:Y.created_by,updated_by:Y.updated_by??void 0,title:Y.title,description:Y.description,icon:Y.icon,app_name:Y.app_name,app_id:Y.app_id,slug:Y.slug,connection_type:Y.connection_type,connection_url:Y.connection_url,connection_token:X,connection_headers:Q,oauth_config:J(Y.oauth_config),configuration_state:G,configuration_scopes:J(Y.configuration_scopes),metadata:J(Y.metadata),tools:null,bindings:J(Y.bindings),status:Y.status,created_at:Y.created_at,updated_at:Y.updated_at}}}var wP9,LP9,Vh4;var tQ0=D(()=>{j7();cz();_K();x5();rQ0();wP9=["connection_headers","oauth_config","configuration_scopes","metadata","bindings"],LP9=new Set(["id","organization_id","created_by","updated_by","title","description","icon","app_name","app_id","slug","connection_type","connection_url","status","created_at","updated_at"]),Vh4=new Set(["metadata","configuration_scopes","bindings"])});class g81{db;constructor(Y){this.db=Y}async create(Y,X,G,Q){let J=Q?.id??kY("vir"),$=new Date().toISOString();if(await this.db.insertInto("connections").values({id:J,organization_id:Y,created_by:X,title:G.title,description:G.description??null,icon:G.icon??null,app_name:null,app_id:null,connection_type:"VIRTUAL",pinned:G.pinned??!1,connection_url:`virtual://${J}`,connection_token:null,connection_headers:null,oauth_config:null,configuration_state:null,configuration_scopes:null,metadata:G.metadata?JSON.stringify(G.metadata):null,bindings:null,status:G.status??"active",created_at:$,updated_at:$}).execute(),G.connections.length>0)await this.db.insertInto("connection_aggregations").values(G.connections.map((W)=>({id:kY("agg"),parent_connection_id:J,child_connection_id:W.connection_id,selected_tools:W.selected_tools?JSON.stringify(W.selected_tools):null,selected_resources:W.selected_resources?JSON.stringify(W.selected_resources):null,selected_prompts:W.selected_prompts?JSON.stringify(W.selected_prompts):null,dependency_mode:"direct",created_at:$}))).execute();let Z=await this.findById(J);if(!Z)throw Error(`Failed to create virtual MCP with id: ${J}`);return Z}async findById(Y,X){let G=WN(Y);if(G){let Q=X??G,J=await this.db.selectFrom("connections").selectAll().where("organization_id","=",Q).where("status","!=","inactive").where("status","!=","error").execute();return{...tU1(Q),pinned:!1,connections:J.map(($)=>({connection_id:$.id,selected_tools:null,selected_resources:null,selected_prompts:null}))}}return this.findByIdInternal(this.db,Y)}async findByIdInternal(Y,X){let G=await Y.selectFrom("connections").selectAll().where("id","=",X).where("connection_type","=","VIRTUAL").executeTakeFirst();if(!G)return null;let Q=await Y.selectFrom("connection_aggregations").selectAll().where("parent_connection_id","=",X).where("dependency_mode","=","direct").execute();return this.deserializeVirtualMCPEntity(G,Q)}async list(Y,X){let G=this.db.selectFrom("connections").selectAll().where("organization_id","=",Y).where("connection_type","=","VIRTUAL");if(X?.pinnedOnly)G=G.where("pinned","=",!0);let Q=await G.execute(),J=Q.map((W)=>W.id);if(J.length===0)return[];let $=await this.db.selectFrom("connection_aggregations").selectAll().where("parent_connection_id","in",J).where("dependency_mode","=","direct").execute(),Z=new Map;for(let W of $){let K=Z.get(W.parent_connection_id)??[];K.push(W),Z.set(W.parent_connection_id,K)}return Q.map((W)=>this.deserializeVirtualMCPEntity(W,Z.get(W.id)??[]))}async listByConnectionId(Y,X){let Q=(await this.db.selectFrom("connection_aggregations").select("parent_connection_id").where("child_connection_id","=",X).execute()).map((K)=>K.parent_connection_id);if(Q.length===0)return[];let J=await this.db.selectFrom("connections").selectAll().where("id","in",Q).where("organization_id","=",Y).where("connection_type","=","VIRTUAL").execute();if(J.length===0)return[];let $=J.map((K)=>K.id),Z=await this.db.selectFrom("connection_aggregations").selectAll().where("parent_connection_id","in",$).where("dependency_mode","=","direct").execute(),W=new Map;for(let K of Z){let H=W.get(K.parent_connection_id)??[];H.push(K),W.set(K.parent_connection_id,H)}return J.map((K)=>this.deserializeVirtualMCPEntity(K,W.get(K.id)??[]))}async update(Y,X,G){let Q=new Date().toISOString(),J={updated_at:Q,updated_by:X};if(G.title!==void 0)J.title=G.title;if(G.description!==void 0)J.description=G.description;if(G.icon!==void 0)J.icon=G.icon;if(G.status!==void 0)J.status=G.status;if(G.pinned!==void 0)J.pinned=G.pinned;if(G.metadata!==void 0)J.metadata=G.metadata?JSON.stringify(G.metadata):null;if(await this.db.updateTable("connections").set(J).where("id","=",Y).where("connection_type","=","VIRTUAL").execute(),G.connections!==void 0){let Z=await this.db.selectFrom("connection_aggregations").select("child_connection_id").where("parent_connection_id","=",Y).where("dependency_mode","=","direct").execute(),W=new Set(Z.map((H)=>H.child_connection_id));if(await this.db.deleteFrom("connection_aggregations").where("parent_connection_id","=",Y).where("dependency_mode","=","direct").execute(),G.connections.length>0)await this.db.insertInto("connection_aggregations").values(G.connections.map((H)=>({id:kY("agg"),parent_connection_id:Y,child_connection_id:H.connection_id,selected_tools:H.selected_tools?JSON.stringify(H.selected_tools):null,selected_resources:H.selected_resources?JSON.stringify(H.selected_resources):null,selected_prompts:H.selected_prompts?JSON.stringify(H.selected_prompts):null,dependency_mode:"direct",created_at:Q}))).execute();let K=new Set(G.connections.map((H)=>H.connection_id));for(let H of W)if(!K.has(H))await this.cleanOrphanedPinnedViews([Y],H)}let $=await this.findById(Y);if(!$)throw Error("Virtual MCP not found after update");return $}async delete(Y){await this.db.deleteFrom("connection_aggregations").where("parent_connection_id","=",Y).execute(),await this.db.deleteFrom("connections").where("id","=",Y).where("connection_type","=","VIRTUAL").execute()}async removeConnectionReferences(Y){let X=await this.db.selectFrom("connection_aggregations").select("parent_connection_id").where("child_connection_id","=",Y).execute();await this.db.deleteFrom("connection_aggregations").where("child_connection_id","=",Y).execute(),await this.cleanOrphanedPinnedViews(X.map((G)=>G.parent_connection_id),Y)}async cleanOrphanedPinnedViews(Y,X){for(let G of Y){let Q=await this.db.selectFrom("connections").select("metadata").where("id","=",G).executeTakeFirst();if(!Q?.metadata)continue;let J;try{J=typeof Q.metadata==="string"?JSON.parse(Q.metadata):Q.metadata}catch{continue}let $=J?.ui?.pinnedViews;if(!Array.isArray($))continue;let Z=$.filter((H)=>H.connectionId!==X);if(Z.length===$.length)continue;let W=J.ui??{},K={...J,ui:{...W,pinnedViews:Z.length>0?Z:null}};await this.db.updateTable("connections").set({metadata:JSON.stringify(K)}).where("id","=",G).execute()}}deserializeVirtualMCPEntity(Y,X){let G=Y.created_at instanceof Date?Y.created_at.toISOString():Y.created_at,Q=Y.updated_at instanceof Date?Y.updated_at.toISOString():Y.updated_at,J=Y.status==="active"?"active":"inactive",$=this.parseJson(Y.metadata);return{id:Y.id,organization_id:Y.organization_id,title:Y.title,description:Y.description,icon:Y.icon,status:J,pinned:Y.pinned,created_at:G,updated_at:Q,created_by:Y.created_by,updated_by:Y.updated_by??void 0,metadata:{...$,instructions:$?.instructions??null},connections:X.map((Z)=>({connection_id:Z.child_connection_id,selected_tools:this.parseJson(Z.selected_tools),selected_resources:this.parseJson(Z.selected_resources),selected_prompts:this.parseJson(Z.selected_prompts)}))}}parseJson(Y){if(Y===null)return null;if(typeof Y==="string")try{return JSON.parse(Y)}catch{return null}return Y}}var oQ0=D(()=>{_K();x5()});function EP9(Y){let X=globalThis.DOMException;return typeof X=="function"?new X(Y,"SyntaxError"):SyntaxError(Y)}function eQ0(Y){return Y instanceof Error?"errors"in Y&&Array.isArray(Y.errors)?Y.errors.map(eQ0).join(", "):("cause"in Y)&&Y.cause instanceof Error?`${Y}: ${eQ0(Y.cause)}`:Y.message:`${Y}`}function Sh4(Y){return{type:Y.type,message:Y.message,code:Y.code,defaultPrevented:Y.defaultPrevented,cancelable:Y.cancelable,timeStamp:Y.timeStamp}}function PP9(){let Y="document"in globalThis?globalThis.document:void 0;return Y&&typeof Y=="object"&&"baseURI"in Y&&typeof Y.baseURI=="string"?Y.baseURI:void 0}var sQ0,Ch4=(Y)=>{throw TypeError(Y)},WJ0=(Y,X,G)=>X.has(Y)||Ch4("Cannot "+G),J9=(Y,X,G)=>(WJ0(Y,X,"read from private field"),G?G.call(Y):X.get(Y)),t7=(Y,X,G)=>X.has(Y)?Ch4("Cannot add the same private member more than once"):X instanceof WeakSet?X.add(Y):X.set(Y,G),BX=(Y,X,G,Q)=>(WJ0(Y,X,"write to private field"),X.set(Y,G),G),iz=(Y,X,G)=>(WJ0(Y,X,"access private method"),G),i$,Rj,pi,Nw1,Bw1,m81,ri,d81,pE,ni,ti,ai,u81,kF,YJ0,XJ0,GJ0,kh4,QJ0,JJ0,l81,ZJ0,$J0,oi;var vh4=D(()=>{R40();sQ0=class sQ0 extends Event{constructor(Y,X){var G,Q;super(Y),this.code=(G=X==null?void 0:X.code)!=null?G:void 0,this.message=(Q=X==null?void 0:X.message)!=null?Q:void 0}[Symbol.for("nodejs.util.inspect.custom")](Y,X,G){return G(Sh4(this),X)}[Symbol.for("Deno.customInspect")](Y,X){return Y(Sh4(this),X)}};oi=class oi extends EventTarget{constructor(Y,X){var G,Q;super(),t7(this,kF),this.CONNECTING=0,this.OPEN=1,this.CLOSED=2,t7(this,i$),t7(this,Rj),t7(this,pi),t7(this,Nw1),t7(this,Bw1),t7(this,m81),t7(this,ri),t7(this,d81,null),t7(this,pE),t7(this,ni),t7(this,ti,null),t7(this,ai,null),t7(this,u81,null),t7(this,XJ0,async(J)=>{var $;J9(this,ni).reset();let{body:Z,redirected:W,status:K,headers:H}=J;if(K===204){iz(this,kF,l81).call(this,"Server sent HTTP 204, not reconnecting",204),this.close();return}if(W?BX(this,pi,new URL(J.url)):BX(this,pi,void 0),K!==200){iz(this,kF,l81).call(this,`Non-200 status code (${K})`,K);return}if(!(H.get("content-type")||"").startsWith("text/event-stream")){iz(this,kF,l81).call(this,'Invalid content type, expected "text/event-stream"',K);return}if(J9(this,i$)===this.CLOSED)return;BX(this,i$,this.OPEN);let U=new Event("open");if(($=J9(this,u81))==null||$.call(this,U),this.dispatchEvent(U),typeof Z!="object"||!Z||!("getReader"in Z)){iz(this,kF,l81).call(this,"Invalid response body, expected a web ReadableStream",K),this.close();return}let N=new TextDecoder,B=Z.getReader(),O=!0;do{let{done:z,value:w}=await B.read();w&&J9(this,ni).feed(N.decode(w,{stream:!z})),z&&(O=!1,J9(this,ni).reset(),iz(this,kF,ZJ0).call(this))}while(O)}),t7(this,GJ0,(J)=>{BX(this,pE,void 0),!(J.name==="AbortError"||J.type==="aborted")&&iz(this,kF,ZJ0).call(this,eQ0(J))}),t7(this,QJ0,(J)=>{typeof J.id=="string"&&BX(this,d81,J.id);let $=new MessageEvent(J.event||"message",{data:J.data,origin:J9(this,pi)?J9(this,pi).origin:J9(this,Rj).origin,lastEventId:J.id||""});J9(this,ai)&&(!J.event||J.event==="message")&&J9(this,ai).call(this,$),this.dispatchEvent($)}),t7(this,JJ0,(J)=>{BX(this,m81,J)}),t7(this,$J0,()=>{BX(this,ri,void 0),J9(this,i$)===this.CONNECTING&&iz(this,kF,YJ0).call(this)});try{if(Y instanceof URL)BX(this,Rj,Y);else if(typeof Y=="string")BX(this,Rj,new URL(Y,PP9()));else throw Error("Invalid URL")}catch{throw EP9("An invalid or illegal string was specified")}BX(this,ni,aU1({onEvent:J9(this,QJ0),onRetry:J9(this,JJ0)})),BX(this,i$,this.CONNECTING),BX(this,m81,3000),BX(this,Bw1,(G=X==null?void 0:X.fetch)!=null?G:globalThis.fetch),BX(this,Nw1,(Q=X==null?void 0:X.withCredentials)!=null?Q:!1),iz(this,kF,YJ0).call(this)}get readyState(){return J9(this,i$)}get url(){return J9(this,Rj).href}get withCredentials(){return J9(this,Nw1)}get onerror(){return J9(this,ti)}set onerror(Y){BX(this,ti,Y)}get onmessage(){return J9(this,ai)}set onmessage(Y){BX(this,ai,Y)}get onopen(){return J9(this,u81)}set onopen(Y){BX(this,u81,Y)}addEventListener(Y,X,G){let Q=X;super.addEventListener(Y,Q,G)}removeEventListener(Y,X,G){let Q=X;super.removeEventListener(Y,Q,G)}close(){J9(this,ri)&&clearTimeout(J9(this,ri)),J9(this,i$)!==this.CLOSED&&(J9(this,pE)&&J9(this,pE).abort(),BX(this,i$,this.CLOSED),BX(this,pE,void 0))}};i$=new WeakMap,Rj=new WeakMap,pi=new WeakMap,Nw1=new WeakMap,Bw1=new WeakMap,m81=new WeakMap,ri=new WeakMap,d81=new WeakMap,pE=new WeakMap,ni=new WeakMap,ti=new WeakMap,ai=new WeakMap,u81=new WeakMap,kF=new WeakSet,YJ0=function(){BX(this,i$,this.CONNECTING),BX(this,pE,new AbortController),J9(this,Bw1)(J9(this,Rj),iz(this,kF,kh4).call(this)).then(J9(this,XJ0)).catch(J9(this,GJ0))},XJ0=new WeakMap,GJ0=new WeakMap,kh4=function(){var Y;let X={mode:"cors",redirect:"follow",headers:{Accept:"text/event-stream",...J9(this,d81)?{"Last-Event-ID":J9(this,d81)}:void 0},cache:"no-store",signal:(Y=J9(this,pE))==null?void 0:Y.signal};return"window"in globalThis&&(X.credentials=this.withCredentials?"include":"same-origin"),X},QJ0=new WeakMap,JJ0=new WeakMap,l81=function(Y,X){var G;J9(this,i$)!==this.CLOSED&&BX(this,i$,this.CLOSED);let Q=new sQ0("error",{code:X,message:Y});(G=J9(this,ti))==null||G.call(this,Q),this.dispatchEvent(Q)},ZJ0=function(Y,X){var G;if(J9(this,i$)===this.CLOSED)return;BX(this,i$,this.CONNECTING);let Q=new sQ0("error",{code:X,message:Y});(G=J9(this,ti))==null||G.call(this,Q),this.dispatchEvent(Q),BX(this,ri,setTimeout(J9(this,$J0),J9(this,m81)))},$J0=new WeakMap,oi.CONNECTING=0,oi.OPEN=1,oi.CLOSED=2});class pz{constructor(Y,X){this._url=Y,this._resourceMetadataUrl=void 0,this._scope=void 0,this._eventSourceInit=X?.eventSourceInit,this._requestInit=X?.requestInit,this._authProvider=X?.authProvider,this._fetch=X?.fetch,this._fetchWithInit=fU1(X?.fetch,X?.requestInit)}async _authThenStart(){if(!this._authProvider)throw new V$("No auth provider");let Y;try{Y=await ZN(this._authProvider,{serverUrl:this._url,resourceMetadataUrl:this._resourceMetadataUrl,scope:this._scope,fetchFn:this._fetchWithInit})}catch(X){throw this.onerror?.(X),X}if(Y!=="AUTHORIZED")throw new V$;return await this._startOrAuth()}async _commonHeaders(){let Y={};if(this._authProvider){let G=await this._authProvider.tokens();if(G)Y.Authorization=`Bearer ${G.access_token}`}if(this._protocolVersion)Y["mcp-protocol-version"]=this._protocolVersion;let X=Td(this._requestInit?.headers);return new Headers({...Y,...X})}_startOrAuth(){let Y=this?._eventSourceInit?.fetch??this._fetch??fetch;return new Promise((X,G)=>{this._eventSource=new oi(this._url.href,{...this._eventSourceInit,fetch:async(Q,J)=>{let $=await this._commonHeaders();$.set("Accept","text/event-stream");let Z=await Y(Q,{...J,headers:$});if(Z.status===401&&Z.headers.has("www-authenticate")){let{resourceMetadataUrl:W,scope:K}=Sd(Z);this._resourceMetadataUrl=W,this._scope=K}return Z}}),this._abortController=new AbortController,this._eventSource.onerror=(Q)=>{if(Q.code===401&&this._authProvider){this._authThenStart().then(X,G);return}let J=new _h4(Q.code,Q.message,Q);G(J),this.onerror?.(J)},this._eventSource.onopen=()=>{},this._eventSource.addEventListener("endpoint",(Q)=>{let J=Q;try{if(this._endpoint=new URL(J.data,this._url),this._endpoint.origin!==this._url.origin)throw Error(`Endpoint origin does not match connection origin: ${this._endpoint.origin}`)}catch($){G($),this.onerror?.($),this.close();return}X()}),this._eventSource.onmessage=(Q)=>{let J=Q,$;try{$=vW.parse(JSON.parse(J.data))}catch(Z){this.onerror?.(Z);return}this.onmessage?.($)}})}async start(){if(this._eventSource)throw Error("SSEClientTransport already started! If using Client class, note that connect() calls start() automatically.");return await this._startOrAuth()}async finishAuth(Y){if(!this._authProvider)throw new V$("No auth provider");if(await ZN(this._authProvider,{serverUrl:this._url,authorizationCode:Y,resourceMetadataUrl:this._resourceMetadataUrl,scope:this._scope,fetchFn:this._fetchWithInit})!=="AUTHORIZED")throw new V$("Failed to authorize")}async close(){this._abortController?.abort(),this._eventSource?.close(),this.onclose?.()}async send(Y){if(!this._endpoint)throw Error("Not connected");try{let X=await this._commonHeaders();X.set("content-type","application/json");let G={...this._requestInit,method:"POST",headers:X,body:JSON.stringify(Y),signal:this._abortController?.signal},Q=await(this._fetch??fetch)(this._endpoint,G);if(!Q.ok){let J=await Q.text().catch(()=>null);if(Q.status===401&&this._authProvider){let{resourceMetadataUrl:$,scope:Z}=Sd(Q);if(this._resourceMetadataUrl=$,this._scope=Z,await ZN(this._authProvider,{serverUrl:this._url,resourceMetadataUrl:this._resourceMetadataUrl,scope:this._scope,fetchFn:this._fetchWithInit})!=="AUTHORIZED")throw new V$;return this.send(Y)}throw Error(`Error POSTing to endpoint (HTTP ${Q.status}): ${J}`)}await Q.body?.cancel()}catch(X){throw this.onerror?.(X),X}}setProtocolVersion(Y){this._protocolVersion=Y}}var _h4;var c81=D(()=>{vh4();hX();nU1();_h4=class _h4 extends Error{constructor(Y,X,G){super(`SSE error: ${X}`);this.code=Y,this.event=G}}});var xh4=k((iUX,hh4)=>{hh4.exports=yh4;yh4.sync=AP9;var fh4=_1("fs");function qP9(Y,X){var G=X.pathExt!==void 0?X.pathExt:process.env.PATHEXT;if(!G)return!0;if(G=G.split(";"),G.indexOf("")!==-1)return!0;for(var Q=0;Q<G.length;Q++){var J=G[Q].toLowerCase();if(J&&Y.substr(-J.length).toLowerCase()===J)return!0}return!1}function bh4(Y,X,G){if(!Y.isSymbolicLink()&&!Y.isFile())return!1;return qP9(X,G)}function yh4(Y,X,G){fh4.stat(Y,function(Q,J){G(Q,Q?!1:bh4(J,Y,X))})}function AP9(Y,X){return bh4(fh4.statSync(Y),Y,X)}});var dh4=k((pUX,mh4)=>{mh4.exports=uh4;uh4.sync=IP9;var gh4=_1("fs");function uh4(Y,X,G){gh4.stat(Y,function(Q,J){G(Q,Q?!1:lh4(J,X))})}function IP9(Y,X){return lh4(gh4.statSync(Y),X)}function lh4(Y,X){return Y.isFile()&&TP9(Y,X)}function TP9(Y,X){var{mode:G,uid:Q,gid:J}=Y,$=X.uid!==void 0?X.uid:process.getuid&&process.getuid(),Z=X.gid!==void 0?X.gid:process.getgid&&process.getgid(),W=parseInt("100",8),K=parseInt("010",8),H=parseInt("001",8),U=W|K,N=G&H||G&K&&J===Z||G&W&&Q===$||G&U&&$===0;return N}});var ih4=k((aUX,ch4)=>{var nUX=_1("fs"),Ow1;if(process.platform==="win32"||global.TESTING_WINDOWS)Ow1=xh4();else Ow1=dh4();ch4.exports=KJ0;KJ0.sync=jP9;function KJ0(Y,X,G){if(typeof X==="function")G=X,X={};if(!G){if(typeof Promise!=="function")throw TypeError("callback not provided");return new Promise(function(Q,J){KJ0(Y,X||{},function($,Z){if($)J($);else Q(Z)})})}Ow1(Y,X||{},function(Q,J){if(Q){if(Q.code==="EACCES"||X&&X.ignoreErrors)Q=null,J=!1}G(Q,J)})}function jP9(Y,X){try{return Ow1.sync(Y,X||{})}catch(G){if(X&&X.ignoreErrors||G.code==="EACCES")return!1;else throw G}}});var sh4=k((rUX,oh4)=>{var si=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",ph4=_1("path"),VP9=si?";":":",nh4=ih4(),ah4=(Y)=>Object.assign(Error(`not found: ${Y}`),{code:"ENOENT"}),rh4=(Y,X)=>{let G=X.colon||VP9,Q=Y.match(/\//)||si&&Y.match(/\\/)?[""]:[...si?[process.cwd()]:[],...(X.path||process.env.PATH||"").split(G)],J=si?X.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",$=si?J.split(G):[""];if(si){if(Y.indexOf(".")!==-1&&$[0]!=="")$.unshift("")}return{pathEnv:Q,pathExt:$,pathExtExe:J}},th4=(Y,X,G)=>{if(typeof X==="function")G=X,X={};if(!X)X={};let{pathEnv:Q,pathExt:J,pathExtExe:$}=rh4(Y,X),Z=[],W=(H)=>new Promise((U,N)=>{if(H===Q.length)return X.all&&Z.length?U(Z):N(ah4(Y));let B=Q[H],O=/^".*"$/.test(B)?B.slice(1,-1):B,z=ph4.join(O,Y),w=!O&&/^\.[\\\/]/.test(Y)?Y.slice(0,2)+z:z;U(K(w,H,0))}),K=(H,U,N)=>new Promise((B,O)=>{if(N===J.length)return B(W(U+1));let z=J[N];nh4(H+z,{pathExt:$},(w,E)=>{if(!w&&E)if(X.all)Z.push(H+z);else return B(H+z);return B(K(H,U,N+1))})});return G?W(0).then((H)=>G(null,H),G):W(0)},MP9=(Y,X)=>{X=X||{};let{pathEnv:G,pathExt:Q,pathExtExe:J}=rh4(Y,X),$=[];for(let Z=0;Z<G.length;Z++){let W=G[Z],K=/^".*"$/.test(W)?W.slice(1,-1):W,H=ph4.join(K,Y),U=!K&&/^\.[\\\/]/.test(Y)?Y.slice(0,2)+H:H;for(let N=0;N<Q.length;N++){let B=U+Q[N];try{if(nh4.sync(B,{pathExt:J}))if(X.all)$.push(B);else return B}catch(O){}}}if(X.all&&$.length)return $;if(X.nothrow)return null;throw ah4(Y)};oh4.exports=th4;th4.sync=MP9});var Yx4=k((tUX,HJ0)=>{var eh4=(Y={})=>{let X=Y.env||process.env;if((Y.platform||process.platform)!=="win32")return"PATH";return Object.keys(X).reverse().find((Q)=>Q.toUpperCase()==="PATH")||"Path"};HJ0.exports=eh4;HJ0.exports.default=eh4});var Jx4=k((oUX,Qx4)=>{var Xx4=_1("path"),RP9=sh4(),SP9=Yx4();function Gx4(Y,X){let G=Y.options.env||process.env,Q=process.cwd(),J=Y.options.cwd!=null,$=J&&process.chdir!==void 0&&!process.chdir.disabled;if($)try{process.chdir(Y.options.cwd)}catch(W){}let Z;try{Z=RP9.sync(Y.command,{path:G[SP9({env:G})],pathExt:X?Xx4.delimiter:void 0})}catch(W){}finally{if($)process.chdir(Q)}if(Z)Z=Xx4.resolve(J?Y.options.cwd:"",Z);return Z}function kP9(Y){return Gx4(Y)||Gx4(Y,!0)}Qx4.exports=kP9});var Zx4=k((_P9,UJ0)=>{var FJ0=/([()\][%!^"`<>&|;, *?])/g;function CP9(Y){return Y=Y.replace(FJ0,"^$1"),Y}function vP9(Y,X){if(Y=`${Y}`,Y=Y.replace(/(?=(\\+?)?)\1"/g,"$1$1\\\""),Y=Y.replace(/(?=(\\+?)?)\1$/,"$1$1"),Y=`"${Y}"`,Y=Y.replace(FJ0,"^$1"),X)Y=Y.replace(FJ0,"^$1");return Y}_P9.command=CP9;_P9.argument=vP9});var Wx4=k((sUX,$x4)=>{$x4.exports=/^#!(.*)/});var Hx4=k((eUX,Kx4)=>{var yP9=Wx4();Kx4.exports=(Y="")=>{let X=Y.match(yP9);if(!X)return null;let[G,Q]=X[0].replace(/#! ?/,"").split(" "),J=G.split("/").pop();if(J==="env")return Q;return Q?`${J} ${Q}`:J}});var Ux4=k((YNX,Fx4)=>{var NJ0=_1("fs"),hP9=Hx4();function xP9(Y){let G=Buffer.alloc(150),Q;try{Q=NJ0.openSync(Y,"r"),NJ0.readSync(Q,G,0,150,0),NJ0.closeSync(Q)}catch(J){}return hP9(G.toString())}Fx4.exports=xP9});var zx4=k((XNX,Ox4)=>{var gP9=_1("path"),Nx4=Jx4(),Bx4=Zx4(),uP9=Ux4(),lP9=process.platform==="win32",mP9=/\.(?:com|exe)$/i,dP9=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function cP9(Y){Y.file=Nx4(Y);let X=Y.file&&uP9(Y.file);if(X)return Y.args.unshift(Y.file),Y.command=X,Nx4(Y);return Y.file}function iP9(Y){if(!lP9)return Y;let X=cP9(Y),G=!mP9.test(X);if(Y.options.forceShell||G){let Q=dP9.test(X);Y.command=gP9.normalize(Y.command),Y.command=Bx4.command(Y.command),Y.args=Y.args.map(($)=>Bx4.argument($,Q));let J=[Y.command].concat(Y.args).join(" ");Y.args=["/d","/s","/c",`"${J}"`],Y.command=process.env.comspec||"cmd.exe",Y.options.windowsVerbatimArguments=!0}return Y}function pP9(Y,X,G){if(X&&!Array.isArray(X))G=X,X=null;X=X?X.slice(0):[],G=Object.assign({},G);let Q={command:Y,args:X,options:G,file:void 0,original:{command:Y,args:X}};return G.shell?Q:iP9(Q)}Ox4.exports=pP9});var Lx4=k((GNX,wx4)=>{var BJ0=process.platform==="win32";function OJ0(Y,X){return Object.assign(Error(`${X} ${Y.command} ENOENT`),{code:"ENOENT",errno:"ENOENT",syscall:`${X} ${Y.command}`,path:Y.command,spawnargs:Y.args})}function nP9(Y,X){if(!BJ0)return;let G=Y.emit;Y.emit=function(Q,J){if(Q==="exit"){let $=Dx4(J,X);if($)return G.call(Y,"error",$)}return G.apply(Y,arguments)}}function Dx4(Y,X){if(BJ0&&Y===1&&!X.file)return OJ0(X.original,"spawn");return null}function aP9(Y,X){if(BJ0&&Y===1&&!X.file)return OJ0(X.original,"spawnSync");return null}wx4.exports={hookChildProcess:nP9,verifyENOENT:Dx4,verifyENOENTSync:aP9,notFoundError:OJ0}});var qx4=k((QNX,ei)=>{var Ex4=_1("child_process"),zJ0=zx4(),DJ0=Lx4();function Px4(Y,X,G){let Q=zJ0(Y,X,G),J=Ex4.spawn(Q.command,Q.args,Q.options);return DJ0.hookChildProcess(J,Q),J}function rP9(Y,X,G){let Q=zJ0(Y,X,G),J=Ex4.spawnSync(Q.command,Q.args,Q.options);return J.error=J.error||DJ0.verifyENOENTSync(J.status,Q),J}ei.exports=Px4;ei.exports.spawn=Px4;ei.exports.sync=rP9;ei.exports._parse=zJ0;ei.exports._enoent=DJ0});class wJ0{append(Y){this._buffer=this._buffer?Buffer.concat([this._buffer,Y]):Y}readMessage(){if(!this._buffer)return null;let Y=this._buffer.indexOf(`
|
|
1129
|
+
Error message: ${jy4(G)}`,cause:G});this[Jy4]=!0,this.value=X,this.context=Q}static isInstance(X){return OY.hasMarker(X,py4)}static wrap({value:X,cause:G,context:Q}){var J,$,Z;if(Y.isInstance(G)&&G.value===X&&((J=G.context)==null?void 0:J.field)===(Q==null?void 0:Q.field)&&(($=G.context)==null?void 0:$.entityName)===(Q==null?void 0:Q.entityName)&&((Z=G.context)==null?void 0:Z.entityId)===(Q==null?void 0:Q.entityId))return G;return new Y({value:X,cause:G,context:Q})}},ay4=`vercel.ai.error.${ny4}`,tw9=Symbol.for(ay4),dz=class extends(Wy4=OY,$y4=tw9,Wy4){constructor({functionality:Y,message:X=`'${Y}' functionality not supported.`}){super({name:ny4,message:X});this[$y4]=!0,this.functionality=Y}static isInstance(Y){return OY.hasMarker(Y,ay4)}},Ky4=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}};ew9=class extends TransformStream{constructor({onError:Y,onRetry:X,onComment:G}={}){let Q;super({start(J){Q=ow9({onEvent:($)=>{J.enqueue($)},onError($){Y==="terminate"?J.error($):typeof Y=="function"&&Y($)},onRetry:X,onComment:G})},transform(J){Q.feed(J)}})}};({btoa:XL9,atob:TFX}=globalThis);ty4=`vercel.ai.error.${ry4}`,QL9=Symbol.for(ty4),jFX=class extends(Uy4=OY,Fy4=QL9,Uy4){constructor({url:Y,statusCode:X,statusText:G,cause:Q,message:J=Q==null?`Failed to download ${Y}: ${X} ${G}`:`Failed to download ${Y}: ${Q}`}){super({name:ry4,message:J,cause:Q});this[Fy4]=!0,this.url=Y,this.statusCode=X,this.statusText=G}static isInstance(Y){return OY.hasMarker(Y,ty4)}},sN=JL9();ZL9=["fetch failed","failed to fetch"],$L9=["ConnectionRefused","ConnectionClosed","FailedToOpenSocket","ECONNRESET","ECONNREFUSED","ETIMEDOUT","EPIPE"];NL9=/"(?:_|\\u005[Ff])(?:_|\\u005[Ff])(?:p|\\u0070)(?:r|\\u0072)(?:o|\\u006[Ff])(?:t|\\u0074)(?:o|\\u006[Ff])(?:_|\\u005[Ff])(?:_|\\u005[Ff])"\s*:/,BL9=/"(?:c|\\u0063)(?:o|\\u006[Ff])(?:n|\\u006[Ee])(?:s|\\u0073)(?:t|\\u0074)(?:r|\\u0072)(?:u|\\u0075)(?:c|\\u0063)(?:t|\\u0074)(?:o|\\u006[Ff])(?:r|\\u0072)"\s*:/;zL9=Symbol("Let zodToJsonSchema decide on which parser to use"),By4={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"};RF={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(SQ0===void 0)SQ0=RegExp("^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$","u");return SQ0},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-_]*$/};RL9=new Set("ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789");_Q0={ZodString:"string",ZodNumber:"number",ZodBigInt:"integer",ZodBoolean:"boolean",ZodNull:"null"};fQ0=Symbol.for("vercel.ai.schema");Kh4=((Y)=>{return Y.Unknown="unknown",Y.OpenAIResponsesV1="openai-responses-v1",Y.AzureOpenAIResponsesV1="azure-openai-responses-v1",Y.XAIResponsesV1="xai-responses-v1",Y.AnthropicClaudeV1="anthropic-claude-v1",Y.GoogleGeminiV1="google-gemini-v1",Y})(Kh4||{}),lQ0=F.object({id:F.string().nullish(),format:F.enum(Kh4).nullish(),index:F.number().optional()}).loose(),LE9=F.object({type:F.literal("reasoning.summary"),summary:F.string()}).extend(lQ0.shape),EE9=F.object({type:F.literal("reasoning.encrypted"),data:F.string()}).extend(lQ0.shape),PE9=F.object({type:F.literal("reasoning.text"),text:F.string().nullish(),signature:F.string().nullish()}).extend(lQ0.shape),Hh4=F.union([LE9,EE9,PE9]),eD1=F.union([Hh4,F.unknown().transform(()=>null)]),Ww1=F.array(eD1).transform((Y)=>Y.filter((X)=>!!X)),MFX=F.union([F.object({delta:F.object({reasoning_details:F.array(eD1)})}).transform((Y)=>Y.delta.reasoning_details.filter(vQ0)),F.object({message:F.object({reasoning_details:F.array(eD1)})}).transform((Y)=>Y.message.reasoning_details.filter(vQ0)),F.object({text:F.string(),reasoning_details:F.array(eD1)}).transform((Y)=>Y.reasoning_details.filter(vQ0))]),Kw1=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();iE=zE9({errorSchema:Kw1,errorToMessage:qE9}),Fh4=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()),mQ0=F.object({provider:F.string(),reasoning_details:F.array(Hh4).optional(),annotations:F.array(Fh4).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()),yQ0=F.object({openrouter:F.object({reasoning_details:Ww1.optional(),annotations:F.array(Fh4).optional()}).optional()}).optional();Yw1=new WeakMap;jE9=["wav","mp3","aiff","aac","ogg","flac","m4a","pcm16","pcm24"];Bh4={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"};kE9=new Set(["jpg","jpeg","png","gif","webp","svg","bmp","ico","tif","tiff","avif"]);CFX=F.union([F.literal("auto"),F.literal("none"),F.literal("required"),F.object({type:F.literal("function"),function:F.object({name:F.string()})})]);bE9=F.object({type:F.literal("image_url"),image_url:F.object({url:F.string()}).passthrough()}).passthrough(),yE9=F.union([bE9,F.unknown().transform(()=>null)]),Oh4=F.array(yE9).transform((Y)=>Y.filter((X)=>!!X)),zh4=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(),hE9=F.union([zh4.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:Ww1.nullish(),images:Oh4.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())}),Kw1.extend({user_id:F.string().optional()})]),xE9=F.union([zh4.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:Ww1.nullish(),images:Oh4.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())}),Kw1]);Dy4=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:Ww1.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(),Kw1]),cE9=F.object({prompt_tokens:F.number(),total_tokens:F.number(),cost:F.number().optional()}),iE9=F.object({object:F.literal("embedding"),embedding:F.array(F.number()),index:F.number().optional()}),pE9=F.object({id:F.string().optional(),object:F.literal("list"),data:F.array(iE9),model:F.string(),provider:F.string().optional(),usage:cE9.optional()}),aE9=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();sE9=F.object({results:F.array(F.unknown()).optional()}),eE9=OE9({id:"openrouter.web_search",inputSchema:sE9});ZP9=F.object({id:F.string(),generation_id:F.string().optional(),polling_url:F.string(),status:F.string()}).passthrough(),$P9=F.object({id:F.string(),generation_id:F.string().optional(),polling_url:F.string(),status:F.string(),unsigned_urls:F.array(F.string()).optional(),usage:F.object({cost:F.number().optional(),is_byok:F.boolean().optional()}).passthrough().optional(),error:F.string().optional()}).passthrough();gFX=cQ0({compatibility:"strict"})});var UP9="https://assets.decocache.com/decocms/284f1ad9-3fd8-494c-be88-16671069f3b9/openrouter.svg",Hw1;var iQ0=D(()=>{Dh4();Hw1={info:{id:"openrouter",name:"OpenRouter",description:"Unified API for multiple AI providers",logo:UP9},supportedMethods:["oauth-pkce","api-key"],getOAuthUrl({callbackUrl:Y,codeChallenge:X,codeChallengeMethod:G}){return`https://openrouter.ai/auth?${new URLSearchParams({callback_url:Y,code_challenge:X,code_challenge_method:G})}`},async exchangeOAuthCode({code:Y,codeVerifier:X,codeChallengeMethod:G}){let Q=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:G}),signal:AbortSignal.timeout(30000)});if(!Q.ok)throw Error(`OpenRouter OAuth exchange failed: ${Q.status}`);let J=await Q.json();return{apiKey:J.key,userId:J.user_id}},create(Y){let X=cQ0({apiKey:Y}),G={Authorization:`Bearer ${Y}`};return{info:this.info,aiSdk:X,async listModels(){let Q=(W)=>{return{providerId:"openrouter",modelId:W.id,title:W.name,description:W.description??null,logo:null,capabilities:[...new Set([...W.architecture.input_modalities.map((K)=>K==="image"?"vision":K),...W.architecture.output_modalities,...W.supported_parameters?.includes("tools")?["tools"]:[],...W.supported_parameters?.includes("reasoning")?["reasoning"]:[]])],limits:{contextWindow:W.context_length??0,maxOutputTokens:W.top_provider.max_completion_tokens||null},costs:{input:W.pricing.prompt??0,output:W.pricing.completion??0}}},J=await fetch("https://openrouter.ai/api/v1/models",{headers:G,signal:AbortSignal.timeout(30000)});if(!J.ok)throw Error(`OpenRouter listModels failed: ${J.status}`);let{data:$}=await J.json();return $.map(Q)}}}}});function pQ0(){return S4().aiGatewayUrl??"https://ai-site.decocache.com"}var f81;var nQ0=D(()=>{iQ0();YY();f81={info:{id:"deco",name:"Deco AI Gateway",description:"Deco-managed keys with access to 100+ models",logo:"/logos/deco logo.svg"},supportedMethods:["api-key"],async getTopUpUrl(Y,X,G,Q="usd"){let J=await fetch(`${pQ0()}/api/credits/checkout`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${Y}`},body:JSON.stringify({teamId:X,amountCents:G,currency:Q}),signal:AbortSignal.timeout(1e4)});if(!J.ok)throw Error(`Failed to create top-up checkout: ${J.status}`);return(await J.json()).url},async getCreditsBalance(Y,X){let G=await fetch(`${pQ0()}/api/teams/${X}/balance`,{headers:{Authorization:`Bearer ${Y}`},signal:AbortSignal.timeout(1e4)});if(!G.ok)throw Error(`Failed to fetch credits balance: ${G.status}`);return{balanceCents:(await G.json()).balance_cents}},async provisionKey(Y,X){let G=S4().studioProvisionSecretKey??"";if(!G)throw Error("STUDIO_PROVISION_SECRET_KEY is not set");let Q=await fetch(`${pQ0()}/api/keys/provision`,{method:"POST",headers:{"Content-Type":"application/json","X-Provision-Key":G,Authorization:`Bearer ${Y}`},body:JSON.stringify({organization_id:X}),signal:AbortSignal.timeout(15000)});if(!Q.ok)throw Error(`Deco AI Gateway key provisioning failed: ${Q.status}`);return(await Q.json()).key},create(Y){return{...Hw1.create(Y),info:this.info}}}});import{createCipheriv as NP9,createDecipheriv as BP9,randomBytes as wh4}from"crypto";class Vj{key;constructor(Y){if(Buffer.from(Y,"base64").length===Ph4)this.key=Buffer.from(Y,"base64");else{let X=_1("crypto");this.key=X.createHash("sha256").update(Y).digest()}}async encrypt(Y){let X=wh4(b81),G=NP9(Lh4,this.key,X),Q=G.update(Y,"utf8");Q=Buffer.concat([Q,G.final()]);let J=G.getAuthTag();return Buffer.concat([X,J,Q]).toString("base64")}async decrypt(Y){let X=Buffer.from(Y,"base64"),G=X.subarray(0,b81),Q=X.subarray(b81,b81+Eh4),J=X.subarray(b81+Eh4),$=BP9(Lh4,this.key,G);$.setAuthTag(Q);let Z=$.update(J);return Z=Buffer.concat([Z,$.final()]),Z.toString("utf8")}static generateKey(){return wh4(Ph4).toString("base64")}}var Lh4="aes-256-gcm",b81=16,Eh4=16,Ph4=32;var Fw1=()=>{};var qh4="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";import{webcrypto as Ah4}from"crypto";function zP9(Y){if(!Mj||Mj.length<Y)Mj=Buffer.allocUnsafe(Y*OP9),Ah4.getRandomValues(Mj),ii=0;else if(ii+Y>Mj.length)Ah4.getRandomValues(Mj),ii=0;ii+=Y}function Ih4(Y=21){zP9(Y|=0);let X="";for(let G=ii-Y;G<ii;G++)X+=qh4[Mj[G]&63];return X}var OP9=128,Mj,ii;var Th4=()=>{};function kY(Y){return`${Y}_${Ih4()}`}var _K=D(()=>{Th4()});import{createHash as DP9}from"crypto";function jh4(Y){return DP9("sha256").update(Y).digest("hex")}class y81{db;vault;constructor(Y,X){this.db=Y;this.vault=X}rowToKeyInfo(Y){return{id:Y.id,providerId:Y.provider_id,label:Y.label,presetId:Y.preset_id,organizationId:Y.organization_id,createdBy:Y.created_by,createdAt:Y.created_at instanceof Date?Y.created_at.toISOString():String(Y.created_at)}}async create(Y){let X=kY("aik"),G=await this.vault.encrypt(Y.apiKey),Q=jh4(Y.apiKey),J=new Date,$=Y.presetId??null;return await this.db.insertInto("ai_provider_keys").values({id:X,organization_id:Y.organizationId,provider_id:Y.providerId,label:Y.label,preset_id:$,encrypted_api_key:G,key_hash:Q,created_by:Y.createdBy,created_at:J}).execute(),this.rowToKeyInfo({id:X,provider_id:Y.providerId,label:Y.label,preset_id:$,organization_id:Y.organizationId,created_by:Y.createdBy,created_at:J})}async upsert(Y){let X=kY("aik"),G=await this.vault.encrypt(Y.apiKey),Q=jh4(Y.apiKey),J=new Date,$=Y.presetId??null,Z=await this.db.insertInto("ai_provider_keys").values({id:X,organization_id:Y.organizationId,provider_id:Y.providerId,label:Y.label,preset_id:$,encrypted_api_key:G,key_hash:Q,created_by:Y.createdBy,created_at:J}).onConflict((W)=>W.columns(["organization_id","provider_id","key_hash"]).doUpdateSet({label:Y.label,preset_id:$})).returning(["id","provider_id","label","preset_id","organization_id","created_by","created_at"]).executeTakeFirstOrThrow();return this.rowToKeyInfo(Z)}async list(Y){let X=this.db.selectFrom("ai_provider_keys").where("organization_id","=",Y.organizationId).select(["id","provider_id","label","preset_id","organization_id","created_by","created_at"]);if(Y.providerId)X=X.where("provider_id","=",Y.providerId);return(await X.orderBy("created_at","desc").execute()).map((Q)=>this.rowToKeyInfo(Q))}async resolve(Y,X){let G=await this.db.selectFrom("ai_provider_keys").where("id","=",Y).where("organization_id","=",X).selectAll().executeTakeFirstOrThrow(),Q=await this.vault.decrypt(G.encrypted_api_key);return{keyInfo:this.rowToKeyInfo(G),apiKey:Q}}async delete(Y,X){if(!(await this.db.deleteFrom("ai_provider_keys").where("id","=",Y).where("organization_id","=",X).executeTakeFirst()).numDeletedRows)throw Error(`AI provider key ${Y} not found`)}async findById(Y,X){let G=await this.db.selectFrom("ai_provider_keys").where("id","=",Y).where("organization_id","=",X).select(["id","provider_id","label","preset_id","organization_id","created_by","created_at"]).executeTakeFirst();if(!G)throw Error("Provider key not found");return this.rowToKeyInfo(G)}}var aQ0=D(()=>{_K()});var cz=D(()=>{eU1()});function Uw1(Y){return Y.toLowerCase().trim().replace(/\//g,"-").replace(/[^a-z0-9\s_-]+/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}function h81(Y){if(Y.app_name)return Y.app_name;if(Y.connection_url)try{let X=new URL(Y.connection_url),Q=((X.port?`${X.hostname}-${X.port}`:X.hostname)+X.pathname).replace(/\/+$/,"");return Uw1(Q)}catch{return Uw1(Y.connection_url)}if(Y.title)return Uw1(Y.title);return Y.id??"unknown"}var rQ0=()=>{};function Mh4(Y){if(Y.length===0)return null;let X=Y[0];if(Y.length===1&&LP9.has(X))return p1.ref(X);if(Y.length===2&&Vh4.has(X)){let G=Y[1];return p1`${p1.ref(X)}->>${p1.lit(G)}`}if(Y.length>2&&Vh4.has(X)){let G=`{${Y.slice(1).join(",")}}`;return p1`${p1.ref(X)}#>>${p1.lit(G)}`}return null}function Rh4(Y){if("conditions"in Y){let{operator:$,conditions:Z}=Y;if(Z.length===0)return p1`true`;let W=Z.map((K)=>Rh4(K));switch($){case"and":return p1`(${p1.join(W,p1` AND `)})`;case"or":return p1`(${p1.join(W,p1` OR `)})`;case"not":return p1`NOT (${p1.join(W,p1` AND `)})`;default:return p1`true`}}let{field:X,operator:G,value:Q}=Y,J=Mh4(X);if(!J)return p1`true`;switch(G){case"eq":return Q===null?p1`${J} IS NULL`:p1`${J} = ${p1.val(Q)}`;case"gt":return p1`${J} > ${p1.val(Q)}`;case"gte":return p1`${J} >= ${p1.val(Q)}`;case"lt":return p1`${J} < ${p1.val(Q)}`;case"lte":return p1`${J} <= ${p1.val(Q)}`;case"in":if(!Array.isArray(Q)||Q.length===0)return p1`false`;return p1`${J} IN (${p1.join(Q.map(($)=>p1.val($)))})`;case"like":return p1`${J} ILIKE ${p1.val(Q)}`;case"contains":{let $=String(Q).replace(/[%_\\]/g,"\\$&");return p1`${J} ILIKE ${p1.val(`%${$}%`)}`}default:return p1`true`}}class x81{db;vault;constructor(Y,X){this.db=Y;this.vault=X}async create(Y){let X=Y.id??kY("conn"),G=new Date().toISOString(),Q=await this.findById(X);if(Q){if(Q.organization_id!==Y.organization_id)throw Error("Connection ID already exists");return this.update(X,Y)}let J=h81(Y),$=await this.serializeConnection({...Y,id:Y.id??X,slug:J,status:"active",created_at:G,updated_at:G});await this.db.insertInto("connections").values($).execute();let Z=await this.findById(X);if(!Z)throw Error(`Failed to create connection with id: ${X}`);return Z}async findById(Y,X){let G=WN(Y);if(G)return y40(X??G);let Q=this.db.selectFrom("connections").selectAll().where("id","=",Y);if(X)Q=Q.where("organization_id","=",X);let J=await Q.executeTakeFirst();return J?this.deserializeConnection(J):null}async list(Y,X){let G=this.db.selectFrom("connections").selectAll().where("organization_id","=",Y);if(!X?.includeVirtual)G=G.where("connection_type","!=","VIRTUAL");if(X?.slug)G=G.where("slug","=",X.slug);if(X?.where)G=G.where(Rh4(X.where));let $=(await this.db.selectFrom(G.as("filtered")).select(p1`count(*)::int`.as("count")).executeTakeFirst())?.count??0;if(X?.orderBy&&X.orderBy.length>0)for(let K of X.orderBy){let H=Mh4(K.field);if(!H)continue;let U=K.direction==="desc"?p1`desc`:p1`asc`,N=K.nulls==="first"?p1`nulls first`:p1`nulls last`;G=G.orderBy(p1`${H} ${U} ${N}`)}if(X?.limit)G=G.limit(X.limit);if(X?.offset)G=G.offset(X.offset);let Z=await G.execute();return{items:await Promise.all(Z.map((K)=>this.deserializeConnection(K))),totalCount:$}}async update(Y,X){if(Object.keys(X).length===0){let $=await this.findById(Y);if(!$)throw Error("Connection not found");return $}let G={...X};if(X.app_name!==void 0||X.connection_url!==void 0||X.title!==void 0){let $=await this.findById(Y);if($)G.slug=h81({app_name:X.app_name??$.app_name,connection_url:X.connection_url??$.connection_url,title:X.title??$.title,id:Y})}let Q=await this.serializeConnection({...G,updated_at:new Date().toISOString()});await this.db.updateTable("connections").set(Q).where("id","=",Y).execute();let J=await this.findById(Y);if(!J)throw Error("Connection not found after update");return J}async delete(Y){await this.db.deleteFrom("connections").where("id","=",Y).execute()}async testConnection(Y,X){let G=await this.findById(Y);if(!G)throw Error("Connection not found");let Q=Date.now();if(G.connection_type==="STDIO")return{healthy:!0,latencyMs:Date.now()-Q};if(!G.connection_url)return{healthy:!1,latencyMs:Date.now()-Q};try{let J=G.connection_headers,$=await fetch(G.connection_url,{method:"POST",headers:{"Content-Type":"application/json",...G.connection_token&&{Authorization:`Bearer ${G.connection_token}`},...J?.headers,...X},body:JSON.stringify({jsonrpc:"2.0",method:"ping",id:1})});return{healthy:$.ok||$.status===404,latencyMs:Date.now()-Q}}catch{return{healthy:!1,latencyMs:Date.now()-Q}}}async serializeConnection(Y){let X={};for(let[G,Q]of Object.entries(Y)){if(Q===void 0)continue;if(G==="tools")continue;if(G==="connection_token"&&Q)X[G]=await this.vault.encrypt(Q);else if(G==="configuration_state"&&Q){let J=JSON.stringify(Q);X[G]=await this.vault.encrypt(J)}else if(G==="connection_headers"&&Q){let J=Q;if(HN(J)&&J.envVars){let $={};for(let[Z,W]of Object.entries(J.envVars))$[Z]=await this.vault.encrypt(W);X[G]=JSON.stringify({...J,envVars:$})}else X[G]=JSON.stringify(J)}else if(wP9.includes(G))X[G]=Q?JSON.stringify(Q):null;else X[G]=Q}return X}async deserializeConnection(Y){let X=null;if(Y.connection_token)try{X=await this.vault.decrypt(Y.connection_token)}catch($){console.error(`Failed to decrypt connection token for connection ${Y.id} (org: ${Y.organization_id}, type: ${Y.connection_type}, title: ${Y.title}):`,$)}let G=null;if(Y.configuration_state)try{let $=await this.vault.decrypt(Y.configuration_state);G=JSON.parse($)}catch($){console.error(`Failed to decrypt configuration state for connection ${Y.id} (org: ${Y.organization_id}, type: ${Y.connection_type}, title: ${Y.title}):`,$)}let Q=null;if(Y.connection_headers)try{let $=JSON.parse(Y.connection_headers);if(HN($)&&$.envVars){let Z={};for(let[W,K]of Object.entries($.envVars))try{Z[W]=await this.vault.decrypt(K)}catch{Z[W]=K}Q={...$,envVars:Z}}else Q=$}catch($){console.error(`Failed to parse connection_headers for connection ${Y.id} (org: ${Y.organization_id}, type: ${Y.connection_type}, title: ${Y.title}):`,$)}let J=($)=>{if($===null)return null;if(typeof $==="string")try{return JSON.parse($)}catch{return null}return $};return{id:Y.id,organization_id:Y.organization_id,created_by:Y.created_by,updated_by:Y.updated_by??void 0,title:Y.title,description:Y.description,icon:Y.icon,app_name:Y.app_name,app_id:Y.app_id,slug:Y.slug,connection_type:Y.connection_type,connection_url:Y.connection_url,connection_token:X,connection_headers:Q,oauth_config:J(Y.oauth_config),configuration_state:G,configuration_scopes:J(Y.configuration_scopes),metadata:J(Y.metadata),tools:null,bindings:J(Y.bindings),status:Y.status,created_at:Y.created_at,updated_at:Y.updated_at}}}var wP9,LP9,Vh4;var tQ0=D(()=>{j7();cz();_K();x5();rQ0();wP9=["connection_headers","oauth_config","configuration_scopes","metadata","bindings"],LP9=new Set(["id","organization_id","created_by","updated_by","title","description","icon","app_name","app_id","slug","connection_type","connection_url","status","created_at","updated_at"]),Vh4=new Set(["metadata","configuration_scopes","bindings"])});class g81{db;constructor(Y){this.db=Y}async create(Y,X,G,Q){let J=Q?.id??kY("vir"),$=new Date().toISOString();if(await this.db.insertInto("connections").values({id:J,organization_id:Y,created_by:X,title:G.title,description:G.description??null,icon:G.icon??null,app_name:null,app_id:null,connection_type:"VIRTUAL",pinned:G.pinned??!1,connection_url:`virtual://${J}`,connection_token:null,connection_headers:null,oauth_config:null,configuration_state:null,configuration_scopes:null,metadata:G.metadata?JSON.stringify(G.metadata):null,bindings:null,status:G.status??"active",created_at:$,updated_at:$}).execute(),G.connections.length>0)await this.db.insertInto("connection_aggregations").values(G.connections.map((W)=>({id:kY("agg"),parent_connection_id:J,child_connection_id:W.connection_id,selected_tools:W.selected_tools?JSON.stringify(W.selected_tools):null,selected_resources:W.selected_resources?JSON.stringify(W.selected_resources):null,selected_prompts:W.selected_prompts?JSON.stringify(W.selected_prompts):null,dependency_mode:"direct",created_at:$}))).execute();let Z=await this.findById(J);if(!Z)throw Error(`Failed to create virtual MCP with id: ${J}`);return Z}async findById(Y,X){let G=WN(Y);if(G){let Q=X??G,J=await this.db.selectFrom("connections").selectAll().where("organization_id","=",Q).where("status","!=","inactive").where("status","!=","error").execute();return{...tU1(Q),pinned:!1,connections:J.map(($)=>({connection_id:$.id,selected_tools:null,selected_resources:null,selected_prompts:null}))}}return this.findByIdInternal(this.db,Y)}async findByIdInternal(Y,X){let G=await Y.selectFrom("connections").selectAll().where("id","=",X).where("connection_type","=","VIRTUAL").executeTakeFirst();if(!G)return null;let Q=await Y.selectFrom("connection_aggregations").selectAll().where("parent_connection_id","=",X).where("dependency_mode","=","direct").execute();return this.deserializeVirtualMCPEntity(G,Q)}async list(Y,X){let G=this.db.selectFrom("connections").selectAll().where("organization_id","=",Y).where("connection_type","=","VIRTUAL");if(X?.pinnedOnly)G=G.where("pinned","=",!0);let Q=await G.execute(),J=Q.map((W)=>W.id);if(J.length===0)return[];let $=await this.db.selectFrom("connection_aggregations").selectAll().where("parent_connection_id","in",J).where("dependency_mode","=","direct").execute(),Z=new Map;for(let W of $){let K=Z.get(W.parent_connection_id)??[];K.push(W),Z.set(W.parent_connection_id,K)}return Q.map((W)=>this.deserializeVirtualMCPEntity(W,Z.get(W.id)??[]))}async listByConnectionId(Y,X){let Q=(await this.db.selectFrom("connection_aggregations").select("parent_connection_id").where("child_connection_id","=",X).execute()).map((K)=>K.parent_connection_id);if(Q.length===0)return[];let J=await this.db.selectFrom("connections").selectAll().where("id","in",Q).where("organization_id","=",Y).where("connection_type","=","VIRTUAL").execute();if(J.length===0)return[];let $=J.map((K)=>K.id),Z=await this.db.selectFrom("connection_aggregations").selectAll().where("parent_connection_id","in",$).where("dependency_mode","=","direct").execute(),W=new Map;for(let K of Z){let H=W.get(K.parent_connection_id)??[];H.push(K),W.set(K.parent_connection_id,H)}return J.map((K)=>this.deserializeVirtualMCPEntity(K,W.get(K.id)??[]))}async update(Y,X,G){let Q=new Date().toISOString(),J={updated_at:Q,updated_by:X};if(G.title!==void 0)J.title=G.title;if(G.description!==void 0)J.description=G.description;if(G.icon!==void 0)J.icon=G.icon;if(G.status!==void 0)J.status=G.status;if(G.pinned!==void 0)J.pinned=G.pinned;if(G.metadata!==void 0)J.metadata=G.metadata?JSON.stringify(G.metadata):null;if(await this.db.updateTable("connections").set(J).where("id","=",Y).where("connection_type","=","VIRTUAL").execute(),G.connections!==void 0){let Z=await this.db.selectFrom("connection_aggregations").select("child_connection_id").where("parent_connection_id","=",Y).where("dependency_mode","=","direct").execute(),W=new Set(Z.map((H)=>H.child_connection_id));if(await this.db.deleteFrom("connection_aggregations").where("parent_connection_id","=",Y).where("dependency_mode","=","direct").execute(),G.connections.length>0)await this.db.insertInto("connection_aggregations").values(G.connections.map((H)=>({id:kY("agg"),parent_connection_id:Y,child_connection_id:H.connection_id,selected_tools:H.selected_tools?JSON.stringify(H.selected_tools):null,selected_resources:H.selected_resources?JSON.stringify(H.selected_resources):null,selected_prompts:H.selected_prompts?JSON.stringify(H.selected_prompts):null,dependency_mode:"direct",created_at:Q}))).execute();let K=new Set(G.connections.map((H)=>H.connection_id));for(let H of W)if(!K.has(H))await this.cleanOrphanedPinnedViews([Y],H)}let $=await this.findById(Y);if(!$)throw Error("Virtual MCP not found after update");return $}async delete(Y){await this.db.deleteFrom("connection_aggregations").where("parent_connection_id","=",Y).execute(),await this.db.deleteFrom("connections").where("id","=",Y).where("connection_type","=","VIRTUAL").execute()}async removeConnectionReferences(Y){let X=await this.db.selectFrom("connection_aggregations").select("parent_connection_id").where("child_connection_id","=",Y).execute();await this.db.deleteFrom("connection_aggregations").where("child_connection_id","=",Y).execute(),await this.cleanOrphanedPinnedViews(X.map((G)=>G.parent_connection_id),Y)}async cleanOrphanedPinnedViews(Y,X){for(let G of Y){let Q=await this.db.selectFrom("connections").select("metadata").where("id","=",G).executeTakeFirst();if(!Q?.metadata)continue;let J;try{J=typeof Q.metadata==="string"?JSON.parse(Q.metadata):Q.metadata}catch{continue}let $=J?.ui?.pinnedViews;if(!Array.isArray($))continue;let Z=$.filter((H)=>H.connectionId!==X);if(Z.length===$.length)continue;let W=J.ui??{},K={...J,ui:{...W,pinnedViews:Z.length>0?Z:null}};await this.db.updateTable("connections").set({metadata:JSON.stringify(K)}).where("id","=",G).execute()}}deserializeVirtualMCPEntity(Y,X){let G=Y.created_at instanceof Date?Y.created_at.toISOString():Y.created_at,Q=Y.updated_at instanceof Date?Y.updated_at.toISOString():Y.updated_at,J=Y.status==="active"?"active":"inactive",$=this.parseJson(Y.metadata);return{id:Y.id,organization_id:Y.organization_id,title:Y.title,description:Y.description,icon:Y.icon,status:J,pinned:Y.pinned,created_at:G,updated_at:Q,created_by:Y.created_by,updated_by:Y.updated_by??void 0,metadata:{...$,instructions:$?.instructions??null},connections:X.map((Z)=>({connection_id:Z.child_connection_id,selected_tools:this.parseJson(Z.selected_tools),selected_resources:this.parseJson(Z.selected_resources),selected_prompts:this.parseJson(Z.selected_prompts)}))}}parseJson(Y){if(Y===null)return null;if(typeof Y==="string")try{return JSON.parse(Y)}catch{return null}return Y}}var oQ0=D(()=>{_K();x5()});function EP9(Y){let X=globalThis.DOMException;return typeof X=="function"?new X(Y,"SyntaxError"):SyntaxError(Y)}function eQ0(Y){return Y instanceof Error?"errors"in Y&&Array.isArray(Y.errors)?Y.errors.map(eQ0).join(", "):("cause"in Y)&&Y.cause instanceof Error?`${Y}: ${eQ0(Y.cause)}`:Y.message:`${Y}`}function Sh4(Y){return{type:Y.type,message:Y.message,code:Y.code,defaultPrevented:Y.defaultPrevented,cancelable:Y.cancelable,timeStamp:Y.timeStamp}}function PP9(){let Y="document"in globalThis?globalThis.document:void 0;return Y&&typeof Y=="object"&&"baseURI"in Y&&typeof Y.baseURI=="string"?Y.baseURI:void 0}var sQ0,Ch4=(Y)=>{throw TypeError(Y)},WJ0=(Y,X,G)=>X.has(Y)||Ch4("Cannot "+G),J9=(Y,X,G)=>(WJ0(Y,X,"read from private field"),G?G.call(Y):X.get(Y)),t7=(Y,X,G)=>X.has(Y)?Ch4("Cannot add the same private member more than once"):X instanceof WeakSet?X.add(Y):X.set(Y,G),BX=(Y,X,G,Q)=>(WJ0(Y,X,"write to private field"),X.set(Y,G),G),iz=(Y,X,G)=>(WJ0(Y,X,"access private method"),G),i$,Rj,pi,Nw1,Bw1,m81,ri,d81,pE,ni,ti,ai,u81,kF,YJ0,XJ0,GJ0,kh4,QJ0,JJ0,l81,ZJ0,$J0,oi;var vh4=D(()=>{R40();sQ0=class sQ0 extends Event{constructor(Y,X){var G,Q;super(Y),this.code=(G=X==null?void 0:X.code)!=null?G:void 0,this.message=(Q=X==null?void 0:X.message)!=null?Q:void 0}[Symbol.for("nodejs.util.inspect.custom")](Y,X,G){return G(Sh4(this),X)}[Symbol.for("Deno.customInspect")](Y,X){return Y(Sh4(this),X)}};oi=class oi extends EventTarget{constructor(Y,X){var G,Q;super(),t7(this,kF),this.CONNECTING=0,this.OPEN=1,this.CLOSED=2,t7(this,i$),t7(this,Rj),t7(this,pi),t7(this,Nw1),t7(this,Bw1),t7(this,m81),t7(this,ri),t7(this,d81,null),t7(this,pE),t7(this,ni),t7(this,ti,null),t7(this,ai,null),t7(this,u81,null),t7(this,XJ0,async(J)=>{var $;J9(this,ni).reset();let{body:Z,redirected:W,status:K,headers:H}=J;if(K===204){iz(this,kF,l81).call(this,"Server sent HTTP 204, not reconnecting",204),this.close();return}if(W?BX(this,pi,new URL(J.url)):BX(this,pi,void 0),K!==200){iz(this,kF,l81).call(this,`Non-200 status code (${K})`,K);return}if(!(H.get("content-type")||"").startsWith("text/event-stream")){iz(this,kF,l81).call(this,'Invalid content type, expected "text/event-stream"',K);return}if(J9(this,i$)===this.CLOSED)return;BX(this,i$,this.OPEN);let U=new Event("open");if(($=J9(this,u81))==null||$.call(this,U),this.dispatchEvent(U),typeof Z!="object"||!Z||!("getReader"in Z)){iz(this,kF,l81).call(this,"Invalid response body, expected a web ReadableStream",K),this.close();return}let N=new TextDecoder,B=Z.getReader(),O=!0;do{let{done:z,value:w}=await B.read();w&&J9(this,ni).feed(N.decode(w,{stream:!z})),z&&(O=!1,J9(this,ni).reset(),iz(this,kF,ZJ0).call(this))}while(O)}),t7(this,GJ0,(J)=>{BX(this,pE,void 0),!(J.name==="AbortError"||J.type==="aborted")&&iz(this,kF,ZJ0).call(this,eQ0(J))}),t7(this,QJ0,(J)=>{typeof J.id=="string"&&BX(this,d81,J.id);let $=new MessageEvent(J.event||"message",{data:J.data,origin:J9(this,pi)?J9(this,pi).origin:J9(this,Rj).origin,lastEventId:J.id||""});J9(this,ai)&&(!J.event||J.event==="message")&&J9(this,ai).call(this,$),this.dispatchEvent($)}),t7(this,JJ0,(J)=>{BX(this,m81,J)}),t7(this,$J0,()=>{BX(this,ri,void 0),J9(this,i$)===this.CONNECTING&&iz(this,kF,YJ0).call(this)});try{if(Y instanceof URL)BX(this,Rj,Y);else if(typeof Y=="string")BX(this,Rj,new URL(Y,PP9()));else throw Error("Invalid URL")}catch{throw EP9("An invalid or illegal string was specified")}BX(this,ni,aU1({onEvent:J9(this,QJ0),onRetry:J9(this,JJ0)})),BX(this,i$,this.CONNECTING),BX(this,m81,3000),BX(this,Bw1,(G=X==null?void 0:X.fetch)!=null?G:globalThis.fetch),BX(this,Nw1,(Q=X==null?void 0:X.withCredentials)!=null?Q:!1),iz(this,kF,YJ0).call(this)}get readyState(){return J9(this,i$)}get url(){return J9(this,Rj).href}get withCredentials(){return J9(this,Nw1)}get onerror(){return J9(this,ti)}set onerror(Y){BX(this,ti,Y)}get onmessage(){return J9(this,ai)}set onmessage(Y){BX(this,ai,Y)}get onopen(){return J9(this,u81)}set onopen(Y){BX(this,u81,Y)}addEventListener(Y,X,G){let Q=X;super.addEventListener(Y,Q,G)}removeEventListener(Y,X,G){let Q=X;super.removeEventListener(Y,Q,G)}close(){J9(this,ri)&&clearTimeout(J9(this,ri)),J9(this,i$)!==this.CLOSED&&(J9(this,pE)&&J9(this,pE).abort(),BX(this,i$,this.CLOSED),BX(this,pE,void 0))}};i$=new WeakMap,Rj=new WeakMap,pi=new WeakMap,Nw1=new WeakMap,Bw1=new WeakMap,m81=new WeakMap,ri=new WeakMap,d81=new WeakMap,pE=new WeakMap,ni=new WeakMap,ti=new WeakMap,ai=new WeakMap,u81=new WeakMap,kF=new WeakSet,YJ0=function(){BX(this,i$,this.CONNECTING),BX(this,pE,new AbortController),J9(this,Bw1)(J9(this,Rj),iz(this,kF,kh4).call(this)).then(J9(this,XJ0)).catch(J9(this,GJ0))},XJ0=new WeakMap,GJ0=new WeakMap,kh4=function(){var Y;let X={mode:"cors",redirect:"follow",headers:{Accept:"text/event-stream",...J9(this,d81)?{"Last-Event-ID":J9(this,d81)}:void 0},cache:"no-store",signal:(Y=J9(this,pE))==null?void 0:Y.signal};return"window"in globalThis&&(X.credentials=this.withCredentials?"include":"same-origin"),X},QJ0=new WeakMap,JJ0=new WeakMap,l81=function(Y,X){var G;J9(this,i$)!==this.CLOSED&&BX(this,i$,this.CLOSED);let Q=new sQ0("error",{code:X,message:Y});(G=J9(this,ti))==null||G.call(this,Q),this.dispatchEvent(Q)},ZJ0=function(Y,X){var G;if(J9(this,i$)===this.CLOSED)return;BX(this,i$,this.CONNECTING);let Q=new sQ0("error",{code:X,message:Y});(G=J9(this,ti))==null||G.call(this,Q),this.dispatchEvent(Q),BX(this,ri,setTimeout(J9(this,$J0),J9(this,m81)))},$J0=new WeakMap,oi.CONNECTING=0,oi.OPEN=1,oi.CLOSED=2});class pz{constructor(Y,X){this._url=Y,this._resourceMetadataUrl=void 0,this._scope=void 0,this._eventSourceInit=X?.eventSourceInit,this._requestInit=X?.requestInit,this._authProvider=X?.authProvider,this._fetch=X?.fetch,this._fetchWithInit=fU1(X?.fetch,X?.requestInit)}async _authThenStart(){if(!this._authProvider)throw new V$("No auth provider");let Y;try{Y=await ZN(this._authProvider,{serverUrl:this._url,resourceMetadataUrl:this._resourceMetadataUrl,scope:this._scope,fetchFn:this._fetchWithInit})}catch(X){throw this.onerror?.(X),X}if(Y!=="AUTHORIZED")throw new V$;return await this._startOrAuth()}async _commonHeaders(){let Y={};if(this._authProvider){let G=await this._authProvider.tokens();if(G)Y.Authorization=`Bearer ${G.access_token}`}if(this._protocolVersion)Y["mcp-protocol-version"]=this._protocolVersion;let X=Td(this._requestInit?.headers);return new Headers({...Y,...X})}_startOrAuth(){let Y=this?._eventSourceInit?.fetch??this._fetch??fetch;return new Promise((X,G)=>{this._eventSource=new oi(this._url.href,{...this._eventSourceInit,fetch:async(Q,J)=>{let $=await this._commonHeaders();$.set("Accept","text/event-stream");let Z=await Y(Q,{...J,headers:$});if(Z.status===401&&Z.headers.has("www-authenticate")){let{resourceMetadataUrl:W,scope:K}=Sd(Z);this._resourceMetadataUrl=W,this._scope=K}return Z}}),this._abortController=new AbortController,this._eventSource.onerror=(Q)=>{if(Q.code===401&&this._authProvider){this._authThenStart().then(X,G);return}let J=new _h4(Q.code,Q.message,Q);G(J),this.onerror?.(J)},this._eventSource.onopen=()=>{},this._eventSource.addEventListener("endpoint",(Q)=>{let J=Q;try{if(this._endpoint=new URL(J.data,this._url),this._endpoint.origin!==this._url.origin)throw Error(`Endpoint origin does not match connection origin: ${this._endpoint.origin}`)}catch($){G($),this.onerror?.($),this.close();return}X()}),this._eventSource.onmessage=(Q)=>{let J=Q,$;try{$=vW.parse(JSON.parse(J.data))}catch(Z){this.onerror?.(Z);return}this.onmessage?.($)}})}async start(){if(this._eventSource)throw Error("SSEClientTransport already started! If using Client class, note that connect() calls start() automatically.");return await this._startOrAuth()}async finishAuth(Y){if(!this._authProvider)throw new V$("No auth provider");if(await ZN(this._authProvider,{serverUrl:this._url,authorizationCode:Y,resourceMetadataUrl:this._resourceMetadataUrl,scope:this._scope,fetchFn:this._fetchWithInit})!=="AUTHORIZED")throw new V$("Failed to authorize")}async close(){this._abortController?.abort(),this._eventSource?.close(),this.onclose?.()}async send(Y){if(!this._endpoint)throw Error("Not connected");try{let X=await this._commonHeaders();X.set("content-type","application/json");let G={...this._requestInit,method:"POST",headers:X,body:JSON.stringify(Y),signal:this._abortController?.signal},Q=await(this._fetch??fetch)(this._endpoint,G);if(!Q.ok){let J=await Q.text().catch(()=>null);if(Q.status===401&&this._authProvider){let{resourceMetadataUrl:$,scope:Z}=Sd(Q);if(this._resourceMetadataUrl=$,this._scope=Z,await ZN(this._authProvider,{serverUrl:this._url,resourceMetadataUrl:this._resourceMetadataUrl,scope:this._scope,fetchFn:this._fetchWithInit})!=="AUTHORIZED")throw new V$;return this.send(Y)}throw Error(`Error POSTing to endpoint (HTTP ${Q.status}): ${J}`)}await Q.body?.cancel()}catch(X){throw this.onerror?.(X),X}}setProtocolVersion(Y){this._protocolVersion=Y}}var _h4;var c81=D(()=>{vh4();hX();nU1();_h4=class _h4 extends Error{constructor(Y,X,G){super(`SSE error: ${X}`);this.code=Y,this.event=G}}});var xh4=k((iUX,hh4)=>{hh4.exports=yh4;yh4.sync=AP9;var fh4=_1("fs");function qP9(Y,X){var G=X.pathExt!==void 0?X.pathExt:process.env.PATHEXT;if(!G)return!0;if(G=G.split(";"),G.indexOf("")!==-1)return!0;for(var Q=0;Q<G.length;Q++){var J=G[Q].toLowerCase();if(J&&Y.substr(-J.length).toLowerCase()===J)return!0}return!1}function bh4(Y,X,G){if(!Y.isSymbolicLink()&&!Y.isFile())return!1;return qP9(X,G)}function yh4(Y,X,G){fh4.stat(Y,function(Q,J){G(Q,Q?!1:bh4(J,Y,X))})}function AP9(Y,X){return bh4(fh4.statSync(Y),Y,X)}});var dh4=k((pUX,mh4)=>{mh4.exports=uh4;uh4.sync=IP9;var gh4=_1("fs");function uh4(Y,X,G){gh4.stat(Y,function(Q,J){G(Q,Q?!1:lh4(J,X))})}function IP9(Y,X){return lh4(gh4.statSync(Y),X)}function lh4(Y,X){return Y.isFile()&&TP9(Y,X)}function TP9(Y,X){var{mode:G,uid:Q,gid:J}=Y,$=X.uid!==void 0?X.uid:process.getuid&&process.getuid(),Z=X.gid!==void 0?X.gid:process.getgid&&process.getgid(),W=parseInt("100",8),K=parseInt("010",8),H=parseInt("001",8),U=W|K,N=G&H||G&K&&J===Z||G&W&&Q===$||G&U&&$===0;return N}});var ih4=k((aUX,ch4)=>{var nUX=_1("fs"),Ow1;if(process.platform==="win32"||global.TESTING_WINDOWS)Ow1=xh4();else Ow1=dh4();ch4.exports=KJ0;KJ0.sync=jP9;function KJ0(Y,X,G){if(typeof X==="function")G=X,X={};if(!G){if(typeof Promise!=="function")throw TypeError("callback not provided");return new Promise(function(Q,J){KJ0(Y,X||{},function($,Z){if($)J($);else Q(Z)})})}Ow1(Y,X||{},function(Q,J){if(Q){if(Q.code==="EACCES"||X&&X.ignoreErrors)Q=null,J=!1}G(Q,J)})}function jP9(Y,X){try{return Ow1.sync(Y,X||{})}catch(G){if(X&&X.ignoreErrors||G.code==="EACCES")return!1;else throw G}}});var sh4=k((rUX,oh4)=>{var si=process.platform==="win32"||process.env.OSTYPE==="cygwin"||process.env.OSTYPE==="msys",ph4=_1("path"),VP9=si?";":":",nh4=ih4(),ah4=(Y)=>Object.assign(Error(`not found: ${Y}`),{code:"ENOENT"}),rh4=(Y,X)=>{let G=X.colon||VP9,Q=Y.match(/\//)||si&&Y.match(/\\/)?[""]:[...si?[process.cwd()]:[],...(X.path||process.env.PATH||"").split(G)],J=si?X.pathExt||process.env.PATHEXT||".EXE;.CMD;.BAT;.COM":"",$=si?J.split(G):[""];if(si){if(Y.indexOf(".")!==-1&&$[0]!=="")$.unshift("")}return{pathEnv:Q,pathExt:$,pathExtExe:J}},th4=(Y,X,G)=>{if(typeof X==="function")G=X,X={};if(!X)X={};let{pathEnv:Q,pathExt:J,pathExtExe:$}=rh4(Y,X),Z=[],W=(H)=>new Promise((U,N)=>{if(H===Q.length)return X.all&&Z.length?U(Z):N(ah4(Y));let B=Q[H],O=/^".*"$/.test(B)?B.slice(1,-1):B,z=ph4.join(O,Y),w=!O&&/^\.[\\\/]/.test(Y)?Y.slice(0,2)+z:z;U(K(w,H,0))}),K=(H,U,N)=>new Promise((B,O)=>{if(N===J.length)return B(W(U+1));let z=J[N];nh4(H+z,{pathExt:$},(w,E)=>{if(!w&&E)if(X.all)Z.push(H+z);else return B(H+z);return B(K(H,U,N+1))})});return G?W(0).then((H)=>G(null,H),G):W(0)},MP9=(Y,X)=>{X=X||{};let{pathEnv:G,pathExt:Q,pathExtExe:J}=rh4(Y,X),$=[];for(let Z=0;Z<G.length;Z++){let W=G[Z],K=/^".*"$/.test(W)?W.slice(1,-1):W,H=ph4.join(K,Y),U=!K&&/^\.[\\\/]/.test(Y)?Y.slice(0,2)+H:H;for(let N=0;N<Q.length;N++){let B=U+Q[N];try{if(nh4.sync(B,{pathExt:J}))if(X.all)$.push(B);else return B}catch(O){}}}if(X.all&&$.length)return $;if(X.nothrow)return null;throw ah4(Y)};oh4.exports=th4;th4.sync=MP9});var Yx4=k((tUX,HJ0)=>{var eh4=(Y={})=>{let X=Y.env||process.env;if((Y.platform||process.platform)!=="win32")return"PATH";return Object.keys(X).reverse().find((Q)=>Q.toUpperCase()==="PATH")||"Path"};HJ0.exports=eh4;HJ0.exports.default=eh4});var Jx4=k((oUX,Qx4)=>{var Xx4=_1("path"),RP9=sh4(),SP9=Yx4();function Gx4(Y,X){let G=Y.options.env||process.env,Q=process.cwd(),J=Y.options.cwd!=null,$=J&&process.chdir!==void 0&&!process.chdir.disabled;if($)try{process.chdir(Y.options.cwd)}catch(W){}let Z;try{Z=RP9.sync(Y.command,{path:G[SP9({env:G})],pathExt:X?Xx4.delimiter:void 0})}catch(W){}finally{if($)process.chdir(Q)}if(Z)Z=Xx4.resolve(J?Y.options.cwd:"",Z);return Z}function kP9(Y){return Gx4(Y)||Gx4(Y,!0)}Qx4.exports=kP9});var Zx4=k((_P9,UJ0)=>{var FJ0=/([()\][%!^"`<>&|;, *?])/g;function CP9(Y){return Y=Y.replace(FJ0,"^$1"),Y}function vP9(Y,X){if(Y=`${Y}`,Y=Y.replace(/(?=(\\+?)?)\1"/g,"$1$1\\\""),Y=Y.replace(/(?=(\\+?)?)\1$/,"$1$1"),Y=`"${Y}"`,Y=Y.replace(FJ0,"^$1"),X)Y=Y.replace(FJ0,"^$1");return Y}_P9.command=CP9;_P9.argument=vP9});var Wx4=k((sUX,$x4)=>{$x4.exports=/^#!(.*)/});var Hx4=k((eUX,Kx4)=>{var yP9=Wx4();Kx4.exports=(Y="")=>{let X=Y.match(yP9);if(!X)return null;let[G,Q]=X[0].replace(/#! ?/,"").split(" "),J=G.split("/").pop();if(J==="env")return Q;return Q?`${J} ${Q}`:J}});var Ux4=k((YNX,Fx4)=>{var NJ0=_1("fs"),hP9=Hx4();function xP9(Y){let G=Buffer.alloc(150),Q;try{Q=NJ0.openSync(Y,"r"),NJ0.readSync(Q,G,0,150,0),NJ0.closeSync(Q)}catch(J){}return hP9(G.toString())}Fx4.exports=xP9});var zx4=k((XNX,Ox4)=>{var gP9=_1("path"),Nx4=Jx4(),Bx4=Zx4(),uP9=Ux4(),lP9=process.platform==="win32",mP9=/\.(?:com|exe)$/i,dP9=/node_modules[\\/].bin[\\/][^\\/]+\.cmd$/i;function cP9(Y){Y.file=Nx4(Y);let X=Y.file&&uP9(Y.file);if(X)return Y.args.unshift(Y.file),Y.command=X,Nx4(Y);return Y.file}function iP9(Y){if(!lP9)return Y;let X=cP9(Y),G=!mP9.test(X);if(Y.options.forceShell||G){let Q=dP9.test(X);Y.command=gP9.normalize(Y.command),Y.command=Bx4.command(Y.command),Y.args=Y.args.map(($)=>Bx4.argument($,Q));let J=[Y.command].concat(Y.args).join(" ");Y.args=["/d","/s","/c",`"${J}"`],Y.command=process.env.comspec||"cmd.exe",Y.options.windowsVerbatimArguments=!0}return Y}function pP9(Y,X,G){if(X&&!Array.isArray(X))G=X,X=null;X=X?X.slice(0):[],G=Object.assign({},G);let Q={command:Y,args:X,options:G,file:void 0,original:{command:Y,args:X}};return G.shell?Q:iP9(Q)}Ox4.exports=pP9});var Lx4=k((GNX,wx4)=>{var BJ0=process.platform==="win32";function OJ0(Y,X){return Object.assign(Error(`${X} ${Y.command} ENOENT`),{code:"ENOENT",errno:"ENOENT",syscall:`${X} ${Y.command}`,path:Y.command,spawnargs:Y.args})}function nP9(Y,X){if(!BJ0)return;let G=Y.emit;Y.emit=function(Q,J){if(Q==="exit"){let $=Dx4(J,X);if($)return G.call(Y,"error",$)}return G.apply(Y,arguments)}}function Dx4(Y,X){if(BJ0&&Y===1&&!X.file)return OJ0(X.original,"spawn");return null}function aP9(Y,X){if(BJ0&&Y===1&&!X.file)return OJ0(X.original,"spawnSync");return null}wx4.exports={hookChildProcess:nP9,verifyENOENT:Dx4,verifyENOENTSync:aP9,notFoundError:OJ0}});var qx4=k((QNX,ei)=>{var Ex4=_1("child_process"),zJ0=zx4(),DJ0=Lx4();function Px4(Y,X,G){let Q=zJ0(Y,X,G),J=Ex4.spawn(Q.command,Q.args,Q.options);return DJ0.hookChildProcess(J,Q),J}function rP9(Y,X,G){let Q=zJ0(Y,X,G),J=Ex4.spawnSync(Q.command,Q.args,Q.options);return J.error=J.error||DJ0.verifyENOENTSync(J.status,Q),J}ei.exports=Px4;ei.exports.spawn=Px4;ei.exports.sync=rP9;ei.exports._parse=zJ0;ei.exports._enoent=DJ0});class wJ0{append(Y){this._buffer=this._buffer?Buffer.concat([this._buffer,Y]):Y}readMessage(){if(!this._buffer)return null;let Y=this._buffer.indexOf(`
|
|
1130
1130
|
`);if(Y===-1)return null;let X=this._buffer.toString("utf8",0,Y).replace(/\r$/,"");return this._buffer=this._buffer.subarray(Y+1),tP9(X)}clear(){this._buffer=void 0}}function tP9(Y){return vW.parse(JSON.parse(Y))}function Ax4(Y){return JSON.stringify(Y)+`
|
|
1131
1131
|
`}var Ix4=D(()=>{hX()});import zw1 from"process";import{PassThrough as oP9}from"stream";function eP9(){let Y={};for(let X of sP9){let G=zw1.env[X];if(G===void 0)continue;if(G.startsWith("()"))continue;Y[X]=G}return Y}class i81{constructor(Y){if(this._readBuffer=new wJ0,this._stderrStream=null,this._serverParams=Y,Y.stderr==="pipe"||Y.stderr==="overlapped")this._stderrStream=new oP9}async start(){if(this._process)throw Error("StdioClientTransport already started! If using Client class, note that connect() calls start() automatically.");return new Promise((Y,X)=>{if(this._process=Tx4.default(this._serverParams.command,this._serverParams.args??[],{env:{...eP9(),...this._serverParams.env},stdio:["pipe","pipe",this._serverParams.stderr??"inherit"],shell:!1,windowsHide:zw1.platform==="win32"&&Yq9(),cwd:this._serverParams.cwd}),this._process.on("error",(G)=>{X(G),this.onerror?.(G)}),this._process.on("spawn",()=>{Y()}),this._process.on("close",(G)=>{this._process=void 0,this.onclose?.()}),this._process.stdin?.on("error",(G)=>{this.onerror?.(G)}),this._process.stdout?.on("data",(G)=>{this._readBuffer.append(G),this.processReadBuffer()}),this._process.stdout?.on("error",(G)=>{this.onerror?.(G)}),this._stderrStream&&this._process.stderr)this._process.stderr.pipe(this._stderrStream)})}get stderr(){if(this._stderrStream)return this._stderrStream;return this._process?.stderr??null}get pid(){return this._process?.pid??null}processReadBuffer(){while(!0)try{let Y=this._readBuffer.readMessage();if(Y===null)break;this.onmessage?.(Y)}catch(Y){this.onerror?.(Y)}}async close(){if(this._process){let Y=this._process;this._process=void 0;let X=new Promise((G)=>{Y.once("close",()=>{G()})});try{Y.stdin?.end()}catch{}if(await Promise.race([X,new Promise((G)=>setTimeout(G,2000).unref())]),Y.exitCode===null){try{Y.kill("SIGTERM")}catch{}await Promise.race([X,new Promise((G)=>setTimeout(G,2000).unref())])}if(Y.exitCode===null)try{Y.kill("SIGKILL")}catch{}}this._readBuffer.clear()}send(Y){return new Promise((X)=>{if(!this._process?.stdin)throw Error("Not connected");let G=Ax4(Y);if(this._process.stdin.write(G))X();else this._process.stdin.once("drain",X)})}}function Yq9(){return"type"in zw1}var Tx4,sP9;var LJ0=D(()=>{Ix4();Tx4=X1(qx4(),1),sP9=zw1.platform==="win32"?["APPDATA","HOMEDRIVE","HOMEPATH","LOCALAPPDATA","PATH","PROCESSOR_ARCHITECTURE","SYSTEMDRIVE","SYSTEMROOT","TEMP","USERNAME","USERPROFILE","PROGRAMFILES"]:["HOME","LOGNAME","PATH","SHELL","TERM","USER"]});async function nE(Y){switch(Y.connection_type){case"STDIO":return Qq9(Y);case"HTTP":case"Websocket":return Xq9(Y);case"SSE":return Gq9(Y);case"VIRTUAL":return null;default:return null}}async function EJ0(Y){try{let X=new Promise((Q,J)=>setTimeout(()=>J(Error("MCP_CONFIGURATION timeout")),5000)),G=await Promise.race([Y.callTool({name:"MCP_CONFIGURATION",arguments:{}}),X]);if(!G.isError&&Array.isArray(G.content)){let Q=G.content.find((J)=>J.type==="text");if(Q&&"text"in Q){let J=JSON.parse(String(Q.text));if(Array.isArray(J.scopes)&&J.scopes.length>0)return J.scopes}}}catch{}return null}async function Xq9(Y){if(!Y.connection_url)return console.error(`HTTP connection ${Y.id} missing URL`),null;let X=null;try{let G={"Content-Type":"application/json"};if(Y.connection_token)G.Authorization=`Bearer ${Y.connection_token}`;let Q=Y.connection_headers;if(Q?.headers)Object.assign(G,Q.headers);let J=new $N(new URL(Y.connection_url),{requestInit:{headers:G}});X=new A7({name:"mcp-cms-tool-fetcher",version:"1.0.0"});let $=new Promise((H,U)=>{setTimeout(()=>U(Error("Connection timeout")),1e4)});await Promise.race([X.connect(J),$]);let Z=await Promise.race([X.listTools(),$]),W=Z.tools&&Z.tools.length>0?Z.tools.map((H)=>({name:H.name,description:H.description??void 0,inputSchema:H.inputSchema??{},outputSchema:H.outputSchema?{...H.outputSchema,additionalProperties:!0}:void 0,annotations:H.annotations??void 0,_meta:H._meta??void 0})):null,K=await EJ0(X);return{tools:W,scopes:K}}catch(G){return console.error(`Failed to fetch tools from HTTP connection ${Y.id}:`,G),null}finally{try{if(X&&typeof X.close==="function")await X.close()}catch(G){console.warn(`Failed to close HTTP client for ${Y.id}:`,G)}}}async function Gq9(Y){if(!Y.connection_url)return console.error(`SSE connection ${Y.id} missing URL`),null;let X=null;try{let G={"Content-Type":"application/json"};if(Y.connection_token)G.Authorization=`Bearer ${Y.connection_token}`;let Q=Y.connection_headers;if(Q?.headers)Object.assign(G,Q.headers);let J=new pz(new URL(Y.connection_url),{requestInit:{headers:G}});X=new A7({name:"mcp-cms-tool-fetcher",version:"1.0.0"});let $=new Promise((H,U)=>{setTimeout(()=>U(Error("SSE connection timeout")),15000)});await Promise.race([X.connect(J),$]);let Z=await Promise.race([X.listTools(),$]),W=Z.tools&&Z.tools.length>0?Z.tools.map((H)=>({name:H.name,description:H.description??void 0,inputSchema:H.inputSchema??{},outputSchema:H.outputSchema?{...H.outputSchema,additionalProperties:!0}:void 0,annotations:H.annotations??void 0,_meta:H._meta??void 0})):null,K=await EJ0(X);return{tools:W,scopes:K}}catch(G){return console.error(`Failed to fetch tools from SSE connection ${Y.id}:`,G),null}finally{try{await X?.close()}catch(G){console.warn(`Failed to close SSE client for ${Y.id}:`,G)}}}async function Qq9(Y){let X=HN(Y.connection_headers)?Y.connection_headers:null;if(!X)return console.error(`STDIO connection ${Y.id} missing parameters`),null;let G=null;try{let Q=new i81({command:X.command,args:X.args,env:X.envVars,cwd:X.cwd});G=new A7({name:"mcp-cms-tool-fetcher",version:"1.0.0"});let J=new Promise((K,H)=>{setTimeout(()=>H(Error("Tool fetch timeout")),1e4)});await Promise.race([G.connect(Q),J]);let $=await Promise.race([G.listTools(),J]),Z=$.tools&&$.tools.length>0?$.tools.map((K)=>({name:K.name,description:K.description??void 0,inputSchema:K.inputSchema??{},outputSchema:K.outputSchema??void 0,annotations:K.annotations??void 0,_meta:K._meta??void 0})):null,W=await EJ0(G);return{tools:Z,scopes:W}}catch(Q){return console.error(`Failed to fetch tools from STDIO connection ${Y.id}:`,Q),null}finally{try{if(G&&typeof G.close==="function")await G.close()}catch(Q){console.warn(`Failed to close STDIO client for ${Y.id}:`,Q)}}}var p81=D(()=>{JN();c81();LJ0();kd();cz()});async function jx4(Y,X,G){let Q=JY.SELF(Y);await Promise.all(Wq9.map((J)=>{let $=J.getId(Y);return G.create(Y,X,{title:J.title,description:J.description,icon:J.icon,status:"active",pinned:!1,metadata:{instructions:J.instructions},connections:[{connection_id:Q,selected_tools:[...J.selectedTools],selected_resources:null,selected_prompts:null}]},{id:$})}))}var Jq9=`<role>
|
|
1132
1132
|
You are the Agent Manager. You create, configure, and maintain agents (Virtual MCPs) in this workspace.
|
|
@@ -1907,7 +1907,7 @@ data:
|
|
|
1907
1907
|
`;if(Q)J+=`id: ${Q}
|
|
1908
1908
|
`;return J+=`data: ${JSON.stringify(G)}
|
|
1909
1909
|
|
|
1910
|
-
`,Y.enqueue(X.encode(J)),!0}catch(J){return this.onerror?.(J),!1}}handleUnsupportedRequest(){return this.onerror?.(Error("Method not allowed.")),new Response(JSON.stringify({jsonrpc:"2.0",error:{code:-32000,message:"Method not allowed."},id:null}),{status:405,headers:{Allow:"GET, POST, DELETE","Content-Type":"application/json"}})}async handlePostRequest(Y,X){try{let G=Y.headers.get("accept");if(!G?.includes("application/json")||!G.includes("text/event-stream"))return this.onerror?.(Error("Not Acceptable: Client must accept both application/json and text/event-stream")),this.createJsonErrorResponse(406,-32000,"Not Acceptable: Client must accept both application/json and text/event-stream");let Q=Y.headers.get("content-type");if(!Q||!Q.includes("application/json"))return this.onerror?.(Error("Unsupported Media Type: Content-Type must be application/json")),this.createJsonErrorResponse(415,-32000,"Unsupported Media Type: Content-Type must be application/json");let J={headers:Object.fromEntries(Y.headers.entries()),url:new URL(Y.url)},$;if(X?.parsedBody!==void 0)$=X.parsedBody;else try{$=await Y.json()}catch{return this.onerror?.(Error("Parse error: Invalid JSON")),this.createJsonErrorResponse(400,-32700,"Parse error: Invalid JSON")}let Z;try{if(Array.isArray($))Z=$.map((E)=>vW.parse(E));else Z=[vW.parse($)]}catch{return this.onerror?.(Error("Parse error: Invalid JSON-RPC message")),this.createJsonErrorResponse(400,-32700,"Parse error: Invalid JSON-RPC message")}let W=Z.some(F10);if(W){if(this._initialized&&this.sessionId!==void 0)return this.onerror?.(Error("Invalid Request: Server already initialized")),this.createJsonErrorResponse(400,-32600,"Invalid Request: Server already initialized");if(Z.length>1)return this.onerror?.(Error("Invalid Request: Only one initialization request is allowed")),this.createJsonErrorResponse(400,-32600,"Invalid Request: Only one initialization request is allowed");if(this.sessionId=this.sessionIdGenerator?.(),this._initialized=!0,this.sessionId&&this._onsessioninitialized)await Promise.resolve(this._onsessioninitialized(this.sessionId))}if(!W){let E=this.validateSession(Y);if(E)return E;let P=this.validateProtocolVersion(Y);if(P)return P}if(!Z.some(eU)){for(let E of Z)this.onmessage?.(E,{authInfo:X?.authInfo,requestInfo:J});return new Response(null,{status:202})}let H=crypto.randomUUID(),U=Z.find((E)=>F10(E)),N=U?U.params.protocolVersion:Y.headers.get("mcp-protocol-version")??jB4;if(this._enableJsonResponse)return new Promise((E)=>{this._streamMapping.set(H,{resolveJson:E,cleanup:()=>{this._streamMapping.delete(H)}});for(let P of Z)if(eU(P))this._requestToStreamMapping.set(P.id,H);for(let P of Z)this.onmessage?.(P,{authInfo:X?.authInfo,requestInfo:J})});let B=new TextEncoder,O,z=new ReadableStream({start:(E)=>{O=E},cancel:()=>{this._streamMapping.delete(H)}}),w={"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"};if(this.sessionId!==void 0)w["mcp-session-id"]=this.sessionId;for(let E of Z)if(eU(E))this._streamMapping.set(H,{controller:O,encoder:B,cleanup:()=>{this._streamMapping.delete(H);try{O.close()}catch{}}}),this._requestToStreamMapping.set(E.id,H);await this.writePrimingEvent(O,B,H,N);for(let E of Z){let P,I;if(eU(E)&&this._eventStore&&N>="2025-11-25")P=()=>{this.closeSSEStream(E.id)},I=()=>{this.closeStandaloneSSEStream()};this.onmessage?.(E,{authInfo:X?.authInfo,requestInfo:J,closeSSEStream:P,closeStandaloneSSEStream:I})}return new Response(z,{status:200,headers:w})}catch(G){return this.onerror?.(G),this.createJsonErrorResponse(400,-32700,"Parse error",{data:String(G)})}}async handleDeleteRequest(Y){let X=this.validateSession(Y);if(X)return X;let G=this.validateProtocolVersion(Y);if(G)return G;return await Promise.resolve(this._onsessionclosed?.(this.sessionId)),await this.close(),new Response(null,{status:200})}validateSession(Y){if(this.sessionIdGenerator===void 0)return;if(!this._initialized)return this.onerror?.(Error("Bad Request: Server not initialized")),this.createJsonErrorResponse(400,-32000,"Bad Request: Server not initialized");let X=Y.headers.get("mcp-session-id");if(!X)return this.onerror?.(Error("Bad Request: Mcp-Session-Id header is required")),this.createJsonErrorResponse(400,-32000,"Bad Request: Mcp-Session-Id header is required");if(X!==this.sessionId)return this.onerror?.(Error("Session not found")),this.createJsonErrorResponse(404,-32001,"Session not found");return}validateProtocolVersion(Y){let X=Y.headers.get("mcp-protocol-version");if(X!==null&&!EL.includes(X))return this.onerror?.(Error(`Bad Request: Unsupported protocol version: ${X} (supported versions: ${EL.join(", ")})`)),this.createJsonErrorResponse(400,-32000,`Bad Request: Unsupported protocol version: ${X} (supported versions: ${EL.join(", ")})`);return}async close(){this._streamMapping.forEach(({cleanup:Y})=>{Y()}),this._streamMapping.clear(),this._requestResponseMap.clear(),this.onclose?.()}closeSSEStream(Y){let X=this._requestToStreamMapping.get(Y);if(!X)return;let G=this._streamMapping.get(X);if(G)G.cleanup()}closeStandaloneSSEStream(){let Y=this._streamMapping.get(this._standaloneSseStreamId);if(Y)Y.cleanup()}async send(Y,X){let G=X?.relatedRequestId;if(iH(Y)||Wd(Y))G=Y.id;if(G===void 0){if(iH(Y)||Wd(Y))throw Error("Cannot send a response on a standalone SSE stream unless resuming a previous client request");let $;if(this._eventStore)$=await this._eventStore.storeEvent(this._standaloneSseStreamId,Y);let Z=this._streamMapping.get(this._standaloneSseStreamId);if(Z===void 0)return;if(Z.controller&&Z.encoder)this.writeSSEEvent(Z.controller,Z.encoder,Y,$);return}let Q=this._requestToStreamMapping.get(G);if(!Q)throw Error(`No connection established for request ID: ${String(G)}`);let J=this._streamMapping.get(Q);if(!this._enableJsonResponse&&J?.controller&&J?.encoder){let $;if(this._eventStore)$=await this._eventStore.storeEvent(Q,Y);this.writeSSEEvent(J.controller,J.encoder,Y,$)}if(iH(Y)||Wd(Y)){this._requestResponseMap.set(G,Y);let $=Array.from(this._requestToStreamMapping.entries()).filter(([W,K])=>K===Q).map(([W])=>W);if($.every((W)=>this._requestResponseMap.has(W))){if(!J)throw Error(`No connection established for request ID: ${String(G)}`);if(this._enableJsonResponse&&J.resolveJson){let W={"Content-Type":"application/json"};if(this.sessionId!==void 0)W["mcp-session-id"]=this.sessionId;let K=$.map((H)=>this._requestResponseMap.get(H));if(K.length===1)J.resolveJson(new Response(JSON.stringify(K[0]),{status:200,headers:W}));else J.resolveJson(new Response(JSON.stringify(K),{status:200,headers:W}))}else J.cleanup();for(let W of $)this._requestResponseMap.delete(W),this._requestToStreamMapping.delete(W)}}}}var Er=D(()=>{hX()});async function fj1(Y,X){let G=Y.get("meshContext");try{let Q=Y.req.header("x-org-id"),J=Y.req.header("x-org-slug"),$=Q?Q:J?await G.db.selectFrom("organization").select("id").where("slug","=",J).executeTakeFirst().then((O)=>O?.id):null,Z=X?X:$?KN($):null;if(!Z)return Y.json({error:"Agent ID or organization ID is required"},400);let W=await G.storage.virtualMcps.findById(Z,$??void 0);if(!W)return Y.json({error:"Agent not found"},404);if($&&W.organization_id!==$)return Y.json({error:"Agent not found"},404);if(W.status!=="active")return Y.json({error:`Agent is inactive: ${W.id??"Decopilot"}`},503);if(G.organization?.id&&W.organization_id!==G.organization.id)return Y.json({error:"Forbidden: Agent does not belong to your organization"},403);G.connectionId=W.id??void 0;let K=await G.db.selectFrom("organization").select(["id","slug","name"]).where("id","=",W.organization_id).executeTakeFirst();if(K)G.organization={id:K.id,slug:K.slug,name:K.name};let H=await i2(W,G,"passthrough"),U={name:W.id??"Decopilot",version:"1.0.0",title:W.title??void 0,description:W.description??void 0,icons:W.icon?[{src:W.icon}]:void 0},N=nO(H,U,{capabilities:{tools:{},resources:{},prompts:{}},instructions:typeof W.metadata?.instructions==="string"?W.metadata.instructions:void 0,toolCallTimeoutMs:uP}),B=new KH({enableJsonResponse:Y.req.header("Accept")?.includes("application/json")??!1});return await N.connect(B),await B.handleRequest(Y.req.raw)}catch(Q){let J=Q;return console.error("[virtual-mcp] Error handling virtual MCP request:",J),Y.json({error:"Internal server error",message:J.message},500)}}var oA0,LT6;var sA0=D(()=>{x5();Er();PG();JG1();oA0=new P9;oA0.all("/gateway/:virtualMcpId?",async(Y)=>{let X=Y.req.param("virtualMcpId")||Y.req.header("x-virtual-mcp-id");return fj1(Y,X)});oA0.all("/virtual-mcp/:virtualMcpId?",async(Y)=>{let X=Y.req.param("virtualMcpId")||Y.req.header("x-virtual-mcp-id");return fj1(Y,X)});LT6=oA0});var bj1,ET6=(Y,X)=>{if(Y.message.includes("not found"))return X.json({error:Y.message},404);if(Y.message.includes("does not belong to the active organization"))return X.json({error:"Connection not found"},404);if(Y.message.includes("inactive"))return X.json({error:Y.message},503);return X.json({error:"Internal server error",message:Y.message},500)},PT6;var eA0=D(()=>{zr();Er();PG();L60();wr();qj1();sA0();pP1();bj1=new P9;bj1.all("/",async(Y)=>{return fj1(Y,void 0)});bj1.all("/:connectionId",async(Y)=>{let X=Y.req.param("connectionId"),G=Y.get("meshContext");if(X.endsWith("_self")){let Q=X.slice(0,-5);if(!G.organization||G.organization.id!==Q)return Y.json({error:"Connection not found"},404);let J=await Pr(G),$=new KH({enableJsonResponse:Y.req.raw.headers.get("Accept")?.includes("application/json")??!1});return await J.connect($),await $.handleRequest(Y.req.raw)}try{try{if(!G.organization?.id)return Y.json({error:"Organization context is required"},403);UK(Y,"mcp.find_connection");let Q=await G.storage.connections.findById(X,G.organization.id);if(_W(Y,"mcp.find_connection"),!Q)throw Error("Connection not found");if(Q.organization_id!==G.organization.id)throw Error("Connection does not belong to the active organization");if(Q.status!=="active")throw Error(`Connection inactive: ${Q.status}`);if(Q.connection_url)UK(Y,"mcp.client_handshake"),await GW(Q,G,!1),_W(Y,"mcp.client_handshake");UK(Y,"mcp.create_server");let J=lq0(Q,G,!1);_W(Y,"mcp.create_server");let $=new KH({enableJsonResponse:Y.req.raw.headers.get("Accept")?.includes("application/json")??!1});UK(Y,"mcp.server_connect"),await J.connect($),_W(Y,"mcp.server_connect"),UK(Y,"mcp.handle_request");let Z=await $.handleRequest(Y.req.raw);return _W(Y,"mcp.handle_request"),Z}catch(Q){let J=await G.storage.connections.findById(X,G.organization?.id);if(J?.connection_url){let $=await AA6({error:Q,reqUrl:new URL(Y.req.raw.url),connectionId:X,connectionUrl:J.connection_url,headers:{}});if($)return $}throw Q}}catch(Q){return ET6(Q,Y)}});bj1.all("/:connectionId/call-tool/:toolName",async(Y)=>{let X=Y.req.param("connectionId"),G=Y.req.param("toolName"),Q=Y.get("meshContext");try{let J=await Q.storage.connections.findById(X,Q.organization?.id);if(!J)return Y.json({error:"Connection not found"},404);let Z=await(await GW(J,Q,!1)).callTool({name:G,arguments:await Y.req.json()});if(Z instanceof Response)return Z;if(Z.isError)return new Response(JSON.stringify(Z.content),{headers:{"Content-Type":"application/json"},status:500});return new Response(JSON.stringify(Z.structuredContent??Z.content),{headers:{"Content-Type":"application/json"}})}catch(J){return ET6(J,Y)}});PT6=bj1});async function Cq(Y,X,G,Q){if(X.type!=="event"||!X.connection_id)return{success:!0};let J=await Y.storage.connections.findById(X.connection_id);if(!J)return{success:!0};let $=Y.organization?.id;try{let Z=await GW(J,Y,!0),W=D30.forClient(kY1(Z)),K,H,U;if(G&&Q&&$){let z=await Q.generateTokenPair();H=z.plaintext,U=z.hash,K=`${Y.baseUrl}/api/trigger-callback`}let N=5000,B=!1,O=new Promise((z,w)=>setTimeout(()=>{B=!0,w(Error("TRIGGER_CONFIGURE timeout"))},N));try{await Promise.race([W.TRIGGER_CONFIGURE({type:X.event_type,params:JSON.parse(X.params??"{}"),enabled:G,callbackUrl:K,callbackToken:H}),O])}catch(z){if(B&&G&&Q&&$&&U)await Q.persistTokenHash($,X.connection_id,U);return{success:!1,error:String(z)}}try{if(G&&Q&&$&&U)await Q.persistTokenHash($,X.connection_id,U);if(!G&&Q&&$)await Q.deleteByConnection(X.connection_id,$)}catch(z){console.error("[configureTriggerOnMcp] Token persistence failed after successful TRIGGER_CONFIGURE:",z)}return{success:!0}}catch(Z){return{success:!1,error:String(Z)}}}var NG1=D(()=>{zr();eA0();w30()});var YI0;var qT6=D(()=>{H0();b0();NG1();YI0=l1({name:"AUTOMATION_UPDATE",description:"Update an automation's config. Toggling active state reconfigures event triggers on MCPs.",annotations:{title:"Update Automation",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:F.object({id:F.string(),name:F.string().min(1).max(255).optional(),active:F.boolean().optional(),agent:F.object({id:F.string()}).optional(),messages:F.union([F.string(),F.array(F.looseObject({id:F.string().optional(),role:F.enum(["user","assistant","system"]),parts:F.array(F.record(F.string(),F.unknown())),metadata:F.unknown().optional()}))]).optional(),models:F.object({credentialId:F.string(),thinking:F.object({id:F.string(),capabilities:F.object({vision:F.boolean().optional(),text:F.boolean().optional(),tools:F.boolean().optional()}).optional(),provider:F.enum(["openai","anthropic","google","xai","deepseek","openrouter","openai-compatible"]).optional().nullable(),limits:F.object({contextWindow:F.number().optional(),maxOutputTokens:F.number().optional()}).optional()}),coding:F.object({id:F.string()}).optional(),fast:F.object({id:F.string()}).optional()}).loose().optional(),temperature:F.number().optional()}),outputSchema:F.object({id:F.string(),name:F.string(),active:F.boolean(),updated_at:F.string()}),handler:async(Y,X)=>{U0(X);let G=s1(X);await X.access.check();let Q=await X.storage.automations.findById(Y.id,G.id);if(!Q)throw Error("Automation not found");let J={};if(Y.name!==void 0)J.name=Y.name;if(Y.active!==void 0)J.active=Y.active;if(Y.agent!==void 0)J.agent=JSON.stringify(Y.agent);if(Y.messages!==void 0){let Z=_j1(Y.messages);J.messages=JSON.stringify(Z)}if(Y.models!==void 0)J.models=JSON.stringify(Y.models);if(Y.temperature!==void 0)J.temperature=Y.temperature;let $=await X.storage.automations.update(Y.id,G.id,J);if(Y.active!==void 0&&Y.active!==Q.active){let W=(await X.storage.automations.listTriggers($.id)).filter((K)=>K.type==="event");await Promise.allSettled(W.map(async(K)=>{let H=await Cq(X,K,Y.active);if(!H.success)console.warn(`Failed to configure trigger ${K.id}: ${H.error}`)}))}return{id:$.id,name:$.name,active:$.active,updated_at:$.updated_at}}})});var XI0;var AT6=D(()=>{H0();NX();b0();NG1();XI0=l1({name:"AUTOMATION_DELETE",description:"Permanently delete an automation. Disables all event triggers on connected MCPs first.",annotations:{title:"Delete Automation",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!1},inputSchema:F.object({id:F.string()}),outputSchema:F.object({success:F.boolean()}),handler:async(Y,X)=>{U0(X);let G=s1(X);if(await X.access.check(),!await X.storage.automations.findById(Y.id,G.id))throw Error("Automation not found");let J=await X.storage.automations.listTriggers(Y.id),$=J.filter((K)=>K.type==="event");await Promise.allSettled($.map(async(K)=>{let H=await Cq(X,K,!1);if(!H.success)console.warn(`Failed to disable trigger ${K.id}: ${H.error}`)}));let{success:Z}=await X.storage.automations.delete(Y.id,G.id),W=L6(X);if(W)q6.capture({distinctId:W,event:"automation_deleted",groups:{organization:G.id},properties:{organization_id:G.id,automation_id:Y.id,trigger_count:J.length}});return{success:Z}}})});function dJ(Y,X,G,Q,J,$,Z,W){return dJ.fromTZ(dJ.tp(Y,X,G,Q,J,$,Z),W)}function GI0(Y,X=new Date){let G=X.toLocaleString("en-US",{timeZone:Y,timeZoneName:"shortOffset"}).split(" ").slice(-1)[0],Q=X.toLocaleString("en-US").replace(/[\u202f]/," ");return Date.parse(`${Q} GMT`)-Date.parse(`${Q} ${G}`)}function oI5(Y,X){let G=new Date(Date.parse(Y));if(isNaN(G))throw Error("minitz: Invalid ISO8601 passed to parser.");let Q=Y.substring(9);return Y.includes("Z")||Q.includes("-")||Q.includes("+")?dJ.tp(G.getUTCFullYear(),G.getUTCMonth()+1,G.getUTCDate(),G.getUTCHours(),G.getUTCMinutes(),G.getUTCSeconds(),"Etc/UTC"):dJ.tp(G.getFullYear(),G.getMonth()+1,G.getDate(),G.getHours(),G.getMinutes(),G.getSeconds(),X)}function sI5(Y){if(Y===void 0&&(Y={}),delete Y.name,Y.legacyMode=Y.legacyMode===void 0?!0:Y.legacyMode,Y.paused=Y.paused===void 0?!1:Y.paused,Y.maxRuns=Y.maxRuns===void 0?1/0:Y.maxRuns,Y.catch=Y.catch===void 0?!1:Y.catch,Y.interval=Y.interval===void 0?0:parseInt(Y.interval.toString(),10),Y.utcOffset=Y.utcOffset===void 0?void 0:parseInt(Y.utcOffset.toString(),10),Y.unref=Y.unref===void 0?!1:Y.unref,Y.startAt&&(Y.startAt=new HH(Y.startAt,Y.timezone)),Y.stopAt&&(Y.stopAt=new HH(Y.stopAt,Y.timezone)),Y.interval!==null){if(isNaN(Y.interval))throw Error("CronOptions: Supplied value for interval is not a number");if(Y.interval<0)throw Error("CronOptions: Supplied value for interval can not be negative")}if(Y.utcOffset!==void 0){if(isNaN(Y.utcOffset))throw Error("CronOptions: Invalid value passed for utcOffset, should be number representing minutes offset from UTC.");if(Y.utcOffset<-870||Y.utcOffset>870)throw Error("CronOptions: utcOffset out of bounds.");if(Y.utcOffset!==void 0&&Y.timezone)throw Error("CronOptions: Combining 'utcOffset' with 'timezone' is not allowed.")}if(Y.unref!==!0&&Y.unref!==!1)throw Error("CronOptions: Unref should be either true, false or undefined(false).");return Y}function BG1(Y){return Object.prototype.toString.call(Y)==="[object Function]"||typeof Y=="function"||Y instanceof Function}function eI5(Y){return BG1(Y)}function YT5(Y){typeof Deno<"u"&&typeof Deno.unrefTimer<"u"?Deno.unrefTimer(Y):Y&&typeof Y.unref<"u"&&Y.unref()}var QI0=32,OG1,VT6,IT6=class{pattern;timezone;second;minute;hour;day;month;dayOfWeek;lastDayOfMonth;starDOM;starDOW;constructor(Y,X){this.pattern=Y,this.timezone=X,this.second=Array(60).fill(0),this.minute=Array(60).fill(0),this.hour=Array(24).fill(0),this.day=Array(31).fill(0),this.month=Array(12).fill(0),this.dayOfWeek=Array(7).fill(0),this.lastDayOfMonth=!1,this.starDOM=!1,this.starDOW=!1,this.parse()}parse(){if(!(typeof this.pattern=="string"||this.pattern instanceof String))throw TypeError("CronPattern: Pattern has to be of type string.");this.pattern.indexOf("@")>=0&&(this.pattern=this.handleNicknames(this.pattern).trim());let Y=this.pattern.replace(/\s+/g," ").split(" ");if(Y.length<5||Y.length>6)throw TypeError("CronPattern: invalid configuration format ('"+this.pattern+"'), exactly five or six space separated parts are required.");if(Y.length===5&&Y.unshift("0"),Y[3].indexOf("L")>=0&&(Y[3]=Y[3].replace("L",""),this.lastDayOfMonth=!0),Y[3]=="*"&&(this.starDOM=!0),Y[4].length>=3&&(Y[4]=this.replaceAlphaMonths(Y[4])),Y[5].length>=3&&(Y[5]=this.replaceAlphaDays(Y[5])),Y[5]=="*"&&(this.starDOW=!0),this.pattern.indexOf("?")>=0){let X=new HH(new Date,this.timezone).getDate(!0);Y[0]=Y[0].replace("?",X.getSeconds().toString()),Y[1]=Y[1].replace("?",X.getMinutes().toString()),Y[2]=Y[2].replace("?",X.getHours().toString()),this.starDOM||(Y[3]=Y[3].replace("?",X.getDate().toString())),Y[4]=Y[4].replace("?",(X.getMonth()+1).toString()),this.starDOW||(Y[5]=Y[5].replace("?",X.getDay().toString()))}this.throwAtIllegalCharacters(Y),this.partToArray("second",Y[0],0,1),this.partToArray("minute",Y[1],0,1),this.partToArray("hour",Y[2],0,1),this.partToArray("day",Y[3],-1,1),this.partToArray("month",Y[4],-1,1),this.partToArray("dayOfWeek",Y[5],0,OG1),this.dayOfWeek[7]&&(this.dayOfWeek[0]=this.dayOfWeek[7])}partToArray(Y,X,G,Q){let J=this[Y],$=Y==="day"&&this.lastDayOfMonth;if(X===""&&!$)throw TypeError("CronPattern: configuration entry "+Y+" ("+X+") is empty, check for trailing spaces.");if(X==="*")return J.fill(Q);let Z=X.split(",");if(Z.length>1)for(let W=0;W<Z.length;W++)this.partToArray(Y,Z[W],G,Q);else X.indexOf("-")!==-1&&X.indexOf("/")!==-1?this.handleRangeWithStepping(X,Y,G,Q):X.indexOf("-")!==-1?this.handleRange(X,Y,G,Q):X.indexOf("/")!==-1?this.handleStepping(X,Y,G,Q):X!==""&&this.handleNumber(X,Y,G,Q)}throwAtIllegalCharacters(Y){for(let X=0;X<Y.length;X++)if((X===5?/[^/*0-9,\-#L]+/:/[^/*0-9,-]+/).test(Y[X]))throw TypeError("CronPattern: configuration entry "+X+" ("+Y[X]+") contains illegal characters.")}handleNumber(Y,X,G,Q){let J=this.extractNth(Y,X),$=parseInt(J[0],10)+G;if(isNaN($))throw TypeError("CronPattern: "+X+" is not a number: '"+Y+"'");this.setPart(X,$,J[1]||Q)}setPart(Y,X,G){if(!Object.prototype.hasOwnProperty.call(this,Y))throw TypeError("CronPattern: Invalid part specified: "+Y);if(Y==="dayOfWeek"){if(X===7&&(X=0),X<0||X>6)throw RangeError("CronPattern: Invalid value for dayOfWeek: "+X);this.setNthWeekdayOfMonth(X,G);return}if(Y==="second"||Y==="minute"){if(X<0||X>=60)throw RangeError("CronPattern: Invalid value for "+Y+": "+X)}else if(Y==="hour"){if(X<0||X>=24)throw RangeError("CronPattern: Invalid value for "+Y+": "+X)}else if(Y==="day"){if(X<0||X>=31)throw RangeError("CronPattern: Invalid value for "+Y+": "+X)}else if(Y==="month"&&(X<0||X>=12))throw RangeError("CronPattern: Invalid value for "+Y+": "+X);this[Y][X]=G}handleRangeWithStepping(Y,X,G,Q){let J=this.extractNth(Y,X),$=J[0].match(/^(\d+)-(\d+)\/(\d+)$/);if($===null)throw TypeError("CronPattern: Syntax error, illegal range with stepping: '"+Y+"'");let[,Z,W,K]=$,H=parseInt(Z,10)+G,U=parseInt(W,10)+G,N=parseInt(K,10);if(isNaN(H))throw TypeError("CronPattern: Syntax error, illegal lower range (NaN)");if(isNaN(U))throw TypeError("CronPattern: Syntax error, illegal upper range (NaN)");if(isNaN(N))throw TypeError("CronPattern: Syntax error, illegal stepping: (NaN)");if(N===0)throw TypeError("CronPattern: Syntax error, illegal stepping: 0");if(N>this[X].length)throw TypeError("CronPattern: Syntax error, steps cannot be greater than maximum value of part ("+this[X].length+")");if(H>U)throw TypeError("CronPattern: From value is larger than to value: '"+Y+"'");for(let B=H;B<=U;B+=N)this.setPart(X,B,J[1]||Q)}extractNth(Y,X){let G=Y,Q;if(G.includes("#")){if(X!=="dayOfWeek")throw Error("CronPattern: nth (#) only allowed in day-of-week field");Q=G.split("#")[1],G=G.split("#")[0]}return[G,Q]}handleRange(Y,X,G,Q){let J=this.extractNth(Y,X),$=J[0].split("-");if($.length!==2)throw TypeError("CronPattern: Syntax error, illegal range: '"+Y+"'");let Z=parseInt($[0],10)+G,W=parseInt($[1],10)+G;if(isNaN(Z))throw TypeError("CronPattern: Syntax error, illegal lower range (NaN)");if(isNaN(W))throw TypeError("CronPattern: Syntax error, illegal upper range (NaN)");if(Z>W)throw TypeError("CronPattern: From value is larger than to value: '"+Y+"'");for(let K=Z;K<=W;K++)this.setPart(X,K,J[1]||Q)}handleStepping(Y,X,G,Q){let J=this.extractNth(Y,X),$=J[0].split("/");if($.length!==2)throw TypeError("CronPattern: Syntax error, illegal stepping: '"+Y+"'");$[0]===""&&($[0]="*");let Z=0;$[0]!=="*"&&(Z=parseInt($[0],10)+G);let W=parseInt($[1],10);if(isNaN(W))throw TypeError("CronPattern: Syntax error, illegal stepping: (NaN)");if(W===0)throw TypeError("CronPattern: Syntax error, illegal stepping: 0");if(W>this[X].length)throw TypeError("CronPattern: Syntax error, max steps for part is ("+this[X].length+")");for(let K=Z;K<this[X].length;K+=W)this.setPart(X,K,J[1]||Q)}replaceAlphaDays(Y){return Y.replace(/-sun/gi,"-7").replace(/sun/gi,"0").replace(/mon/gi,"1").replace(/tue/gi,"2").replace(/wed/gi,"3").replace(/thu/gi,"4").replace(/fri/gi,"5").replace(/sat/gi,"6")}replaceAlphaMonths(Y){return Y.replace(/jan/gi,"1").replace(/feb/gi,"2").replace(/mar/gi,"3").replace(/apr/gi,"4").replace(/may/gi,"5").replace(/jun/gi,"6").replace(/jul/gi,"7").replace(/aug/gi,"8").replace(/sep/gi,"9").replace(/oct/gi,"10").replace(/nov/gi,"11").replace(/dec/gi,"12")}handleNicknames(Y){let X=Y.trim().toLowerCase();return X==="@yearly"||X==="@annually"?"0 0 1 1 *":X==="@monthly"?"0 0 1 * *":X==="@weekly"?"0 0 * * 0":X==="@daily"?"0 0 * * *":X==="@hourly"?"0 * * * *":Y}setNthWeekdayOfMonth(Y,X){if(typeof X!="number"&&X==="L")this.dayOfWeek[Y]=this.dayOfWeek[Y]|QI0;else if(X===OG1)this.dayOfWeek[Y]=OG1;else if(X<6&&X>0)this.dayOfWeek[Y]=this.dayOfWeek[Y]|VT6[X-1];else throw TypeError(`CronPattern: nth weekday out of range, should be 1-5 or L. Value: ${X}, Type: ${typeof X}`)}},TT6,Gw,HH=class Y{tz;ms;second;minute;hour;day;month;year;constructor(X,G){if(this.tz=G,X&&X instanceof Date)if(!isNaN(X))this.fromDate(X);else throw TypeError("CronDate: Invalid date passed to CronDate constructor");else if(X===void 0)this.fromDate(new Date);else if(X&&typeof X=="string")this.fromString(X);else if(X instanceof Y)this.fromCronDate(X);else throw TypeError("CronDate: Invalid type ("+typeof X+") passed to CronDate constructor")}isNthWeekdayOfMonth(X,G,Q,J){let $=new Date(Date.UTC(X,G,Q)).getUTCDay(),Z=0;for(let W=1;W<=Q;W++)new Date(Date.UTC(X,G,W)).getUTCDay()===$&&Z++;if(J&OG1&&VT6[Z-1]&J)return!0;if(J&QI0){let W=new Date(Date.UTC(X,G+1,0)).getUTCDate();for(let K=Q+1;K<=W;K++)if(new Date(Date.UTC(X,G,K)).getUTCDay()===$)return!1;return!0}return!1}fromDate(X){if(this.tz!==void 0)if(typeof this.tz=="number")this.ms=X.getUTCMilliseconds(),this.second=X.getUTCSeconds(),this.minute=X.getUTCMinutes()+this.tz,this.hour=X.getUTCHours(),this.day=X.getUTCDate(),this.month=X.getUTCMonth(),this.year=X.getUTCFullYear(),this.apply();else{let G=dJ.toTZ(X,this.tz);this.ms=X.getMilliseconds(),this.second=G.s,this.minute=G.i,this.hour=G.h,this.day=G.d,this.month=G.m-1,this.year=G.y}else this.ms=X.getMilliseconds(),this.second=X.getSeconds(),this.minute=X.getMinutes(),this.hour=X.getHours(),this.day=X.getDate(),this.month=X.getMonth(),this.year=X.getFullYear()}fromCronDate(X){this.tz=X.tz,this.year=X.year,this.month=X.month,this.day=X.day,this.hour=X.hour,this.minute=X.minute,this.second=X.second,this.ms=X.ms}apply(){if(this.month>11||this.day>TT6[this.month]||this.hour>59||this.minute>59||this.second>59||this.hour<0||this.minute<0||this.second<0){let X=new Date(Date.UTC(this.year,this.month,this.day,this.hour,this.minute,this.second,this.ms));return this.ms=X.getUTCMilliseconds(),this.second=X.getUTCSeconds(),this.minute=X.getUTCMinutes(),this.hour=X.getUTCHours(),this.day=X.getUTCDate(),this.month=X.getUTCMonth(),this.year=X.getUTCFullYear(),!0}else return!1}fromString(X){if(typeof this.tz=="number"){let G=dJ.fromTZISO(X);this.ms=G.getUTCMilliseconds(),this.second=G.getUTCSeconds(),this.minute=G.getUTCMinutes(),this.hour=G.getUTCHours(),this.day=G.getUTCDate(),this.month=G.getUTCMonth(),this.year=G.getUTCFullYear(),this.apply()}else return this.fromDate(dJ.fromTZISO(X,this.tz))}findNext(X,G,Q,J){let $=this[G],Z;Q.lastDayOfMonth&&(this.month!==1?Z=TT6[this.month]:Z=new Date(Date.UTC(this.year,this.month+1,0,0,0,0,0)).getUTCDate());let W=!Q.starDOW&&G=="day"?new Date(Date.UTC(this.year,this.month,1,0,0,0,0)).getUTCDay():void 0;for(let K=this[G]+J;K<Q[G].length;K++){let H=Q[G][K];if(G==="day"&&Q.lastDayOfMonth&&K-J==Z&&(H=1),G==="day"&&!Q.starDOW){let U=Q.dayOfWeek[(W+(K-J-1))%7];if(U&&U&OG1)U=this.isNthWeekdayOfMonth(this.year,this.month,K-J,U)?1:0;else if(U)throw Error(`CronDate: Invalid value for dayOfWeek encountered. ${U}`);X.legacyMode&&!Q.starDOM?H=H||U:H=H&&U}if(H)return this[G]=K-J,$!==this[G]?2:1}return 3}recurse(X,G,Q){let J=this.findNext(G,Gw[Q][0],X,Gw[Q][2]);if(J>1){let $=Q+1;for(;$<Gw.length;)this[Gw[$][0]]=-Gw[$][2],$++;if(J===3)return this[Gw[Q][1]]++,this[Gw[Q][0]]=-Gw[Q][2],this.apply(),this.recurse(X,G,0);if(this.apply())return this.recurse(X,G,Q-1)}return Q+=1,Q>=Gw.length?this:this.year>=3000?null:this.recurse(X,G,Q)}increment(X,G,Q){return this.second+=G.interval!==void 0&&G.interval>1&&Q?G.interval:1,this.ms=0,this.apply(),this.recurse(X,G,0)}getDate(X){return X||this.tz===void 0?new Date(this.year,this.month,this.day,this.hour,this.minute,this.second,this.ms):typeof this.tz=="number"?new Date(Date.UTC(this.year,this.month,this.day,this.hour,this.minute-this.tz,this.second,this.ms)):dJ.fromTZ(dJ.tp(this.year,this.month+1,this.day,this.hour,this.minute,this.second,this.tz),!1)}getTime(){return this.getDate(!1).getTime()}},jT6=30000,yj1,Qw=class{name;options;_states;fn;constructor(Y,X,G){let Q,J;if(BG1(X))J=X;else if(typeof X=="object")Q=X;else if(X!==void 0)throw Error("Cron: Invalid argument passed for optionsIn. Should be one of function, or object (options).");if(BG1(G))J=G;else if(typeof G=="object")Q=G;else if(G!==void 0)throw Error("Cron: Invalid argument passed for funcIn. Should be one of function, or object (options).");if(this.name=Q?.name,this.options=sI5(Q),this._states={kill:!1,blocking:!1,previousRun:void 0,currentRun:void 0,once:void 0,currentTimeout:void 0,maxRuns:Q?Q.maxRuns:void 0,paused:Q?Q.paused:!1,pattern:new IT6("* * * * *")},Y&&(Y instanceof Date||typeof Y=="string"&&Y.indexOf(":")>0)?this._states.once=new HH(Y,this.options.timezone||this.options.utcOffset):this._states.pattern=new IT6(Y,this.options.timezone),this.name){if(yj1.find(($)=>$.name===this.name))throw Error("Cron: Tried to initialize new named job '"+this.name+"', but name already taken.");yj1.push(this)}return J!==void 0&&eI5(J)&&(this.fn=J,this.schedule()),this}nextRun(Y){let X=this._next(Y);return X?X.getDate(!1):null}nextRuns(Y,X){this._states.maxRuns!==void 0&&Y>this._states.maxRuns&&(Y=this._states.maxRuns);let G=[],Q=X||this._states.currentRun||void 0;for(;Y--&&(Q=this.nextRun(Q));)G.push(Q);return G}getPattern(){return this._states.pattern?this._states.pattern.pattern:void 0}isRunning(){let Y=this.nextRun(this._states.currentRun),X=!this._states.paused,G=this.fn!==void 0,Q=!this._states.kill;return X&&G&&Q&&Y!==null}isStopped(){return this._states.kill}isBusy(){return this._states.blocking}currentRun(){return this._states.currentRun?this._states.currentRun.getDate():null}previousRun(){return this._states.previousRun?this._states.previousRun.getDate():null}msToNext(Y){let X=this._next(Y);return X?Y instanceof HH||Y instanceof Date?X.getTime()-Y.getTime():X.getTime()-new HH(Y).getTime():null}stop(){this._states.kill=!0,this._states.currentTimeout&&clearTimeout(this._states.currentTimeout);let Y=yj1.indexOf(this);Y>=0&&yj1.splice(Y,1)}pause(){return this._states.paused=!0,!this._states.kill}resume(){return this._states.paused=!1,!this._states.kill}schedule(Y){if(Y&&this.fn)throw Error("Cron: It is not allowed to schedule two functions using the same Croner instance.");Y&&(this.fn=Y);let X=this.msToNext(),G=this.nextRun(this._states.currentRun);return X==null||isNaN(X)||G===null?this:(X>jT6&&(X=jT6),this._states.currentTimeout=setTimeout(()=>this._checkTrigger(G),X),this._states.currentTimeout&&this.options.unref&&YT5(this._states.currentTimeout),this)}async _trigger(Y){if(this._states.blocking=!0,this._states.currentRun=new HH(void 0,this.options.timezone||this.options.utcOffset),this.options.catch)try{this.fn!==void 0&&await this.fn(this,this.options.context)}catch(X){BG1(this.options.catch)&&this.options.catch(X,this)}else this.fn!==void 0&&await this.fn(this,this.options.context);this._states.previousRun=new HH(Y,this.options.timezone||this.options.utcOffset),this._states.blocking=!1}async trigger(){await this._trigger()}runsLeft(){return this._states.maxRuns}_checkTrigger(Y){let X=new Date,G=!this._states.paused&&X.getTime()>=Y.getTime(),Q=this._states.blocking&&this.options.protect;G&&!Q?(this._states.maxRuns!==void 0&&this._states.maxRuns--,this._trigger()):G&&Q&&BG1(this.options.protect)&&setTimeout(()=>this.options.protect(this),0),this.schedule()}_next(Y){let X=!!(Y||this._states.currentRun),G=!1;!Y&&this.options.startAt&&this.options.interval&&([Y,X]=this._calculatePreviousRun(Y,X),G=!Y),Y=new HH(Y,this.options.timezone||this.options.utcOffset),this.options.startAt&&Y&&Y.getTime()<this.options.startAt.getTime()&&(Y=this.options.startAt);let Q=this._states.once||new HH(Y,this.options.timezone||this.options.utcOffset);return!G&&Q!==this._states.once&&(Q=Q.increment(this._states.pattern,this.options,X)),this._states.once&&this._states.once.getTime()<=Y.getTime()||Q===null||this._states.maxRuns!==void 0&&this._states.maxRuns<=0||this._states.kill||this.options.stopAt&&Q.getTime()>=this.options.stopAt.getTime()?null:Q}_calculatePreviousRun(Y,X){let G=new HH(void 0,this.options.timezone||this.options.utcOffset),Q=Y;if(this.options.startAt.getTime()<=G.getTime()){Q=this.options.startAt;let J=Q.getTime()+this.options.interval*1000;for(;J<=G.getTime();)Q=new HH(Q,this.options.timezone||this.options.utcOffset).increment(this._states.pattern,this.options,!0),J=Q.getTime()+this.options.interval*1000;X=!0}return Q===null&&(Q=void 0),[Q,X]}};var zG1=D(()=>{dJ.fromTZISO=(Y,X,G)=>dJ.fromTZ(oI5(Y,X),G);dJ.fromTZ=function(Y,X){let G=new Date(Date.UTC(Y.y,Y.m-1,Y.d,Y.h,Y.i,Y.s)),Q=GI0(Y.tz,G),J=new Date(G.getTime()-Q),$=GI0(Y.tz,J);if($-Q===0)return J;{let Z=new Date(G.getTime()-$),W=GI0(Y.tz,Z);if(W-$===0)return Z;if(!X&&W-$>0)return Z;if(X)throw Error("Invalid date passed to fromTZ()");return J}};dJ.toTZ=function(Y,X){let G=Y.toLocaleString("en-US",{timeZone:X}).replace(/[\u202f]/," "),Q=new Date(G);return{y:Q.getFullYear(),m:Q.getMonth()+1,d:Q.getDate(),h:Q.getHours(),i:Q.getMinutes(),s:Q.getSeconds(),tz:X}};dJ.tp=(Y,X,G,Q,J,$,Z)=>({y:Y,m:X,d:G,h:Q,i:J,s:$,tz:Z});dJ.minitz=dJ;OG1=31|QI0,VT6=[1,2,4,8,16],TT6=[31,28,31,30,31,30,31,31,30,31,30,31],Gw=[["month","year",0],["day","month",-1],["hour","day",0],["minute","hour",0],["second","minute",0]];yj1=[]});class vq{storage;publishJob;now;running=!1;processing=!1;pendingNotify=!1;started=!1;constructor(Y,X,G=()=>new Date){this.storage=Y;this.publishJob=X;this.now=G}async start(){if(this.running=!0,!this.started)await this.recomputeStaleNextRunAt(),this.started=!0}async stop(){this.running=!1}async processNow(){if(!this.running)return;if(this.processing){this.pendingNotify=!0;return}this.processing=!0;try{do this.pendingNotify=!1,await this.processDueTriggers();while(this.pendingNotify)}finally{this.processing=!1}}static computeNextRunAt(Y,X){try{return new Qw(Y,{timezone:"UTC"}).nextRun(X)??null}catch{return null}}static isDue(Y,X,G){try{let Q=new Qw(Y,{timezone:"UTC"});if(!X)return!0;let J=Q.nextRun(new Date(X));return J!=null&&J.getTime()<=G.getTime()}catch{return!1}}async recomputeStaleNextRunAt(){let Y=await this.storage.findAllCronTriggersForRecompute();for(let X of Y){if(!X.cron_expression)continue;let G=X.last_run_at?new Date(X.last_run_at):new Date(X.created_at),Q=vq.computeNextRunAt(X.cron_expression,G);await this.storage.updateNextRunAt(X.id,Q?Q.toISOString():null)}}async processDueTriggers(){try{let Q=await this.storage.failZombieAutomationRuns(XT5);if(Q>0)console.warn(`[AutomationCronWorker] Force-failed ${Q} zombie automation run(s)`)}catch(Q){console.error("[AutomationCronWorker] Zombie run cleanup failed:",Q)}let Y=this.now(),X=20,G=await this.storage.findDueCronTriggers(Y,X);await Promise.allSettled(G.map(({automation:Q,...J})=>this.dispatchTrigger(J,{triggerId:J.id,automationId:Q.id,organizationId:Q.organization_id})))}async dispatchTrigger(Y,X){let G=this.now();if(await this.storage.updateTriggerLastRunAt(Y.id,G.toISOString()),Y.cron_expression){let Q=vq.computeNextRunAt(Y.cron_expression,G);await this.storage.updateNextRunAt(Y.id,Q?Q.toISOString():null)}await this.publishJob(X)}}var XT5=600000;var JI0=D(()=>{zG1()});var ZI0;var MT6=D(()=>{JI0();zG1();H0();b0();NG1();ZI0=l1({name:"AUTOMATION_TRIGGER_ADD",description:"Add a cron or event-based trigger to an automation.",annotations:{title:"Add Trigger",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!1},inputSchema:F.object({automation_id:F.string(),type:F.enum(["cron","event"]),cron_expression:F.string().optional(),connection_id:F.string().optional(),event_type:F.string().optional(),params:F.record(F.string(),F.string()).optional()}),outputSchema:F.object({id:F.string(),automation_id:F.string(),type:F.enum(["cron","event"]),created_at:F.string()}),handler:async(Y,X)=>{U0(X);let G=s1(X);if(await X.access.check(),!await X.storage.automations.findById(Y.automation_id,G.id))throw Error("Automation not found");if(Y.type==="cron"){if(!Y.cron_expression)throw Error("cron_expression is required for cron triggers");let Z=new Qw(Y.cron_expression,{timezone:"UTC"}),W=Z.nextRuns(2);if(W.length>=2&&W[1].getTime()-W[0].getTime()<60000)throw Error("Cron interval must be at least 60 seconds between runs");if(!Z.nextRun())throw Error("Cron expression has no future runs")}if(Y.type==="event"){if(!Y.connection_id)throw Error("connection_id is required for event triggers");if(!Y.event_type)throw Error("event_type is required for event triggers");if(!await X.storage.connections.findById(Y.connection_id,G.id))throw Error("Connection not found");let W={id:"",automation_id:Y.automation_id,type:"event",cron_expression:null,connection_id:Y.connection_id,event_type:Y.event_type,params:Y.params?JSON.stringify(Y.params):null,last_run_at:null,next_run_at:null,created_at:""},K=await Cq(X,W,!0,X.storage.triggerCallbackTokens);if(!K.success)throw Error(`Failed to configure trigger on connection: ${K.error}`)}let J=Y.type==="cron"&&Y.cron_expression?vq.computeNextRunAt(Y.cron_expression,new Date):null,$=await X.storage.automations.addTrigger({automation_id:Y.automation_id,type:Y.type,cron_expression:Y.type==="cron"?Y.cron_expression:null,connection_id:Y.type==="event"?Y.connection_id:null,event_type:Y.type==="event"?Y.event_type:null,params:Y.params?JSON.stringify(Y.params):null,next_run_at:J?.toISOString()??null});return{id:$.id,automation_id:$.automation_id,type:$.type,created_at:$.created_at}}})});var $I0;var RT6=D(()=>{H0();b0();NG1();$I0=l1({name:"AUTOMATION_TRIGGER_REMOVE",description:"Remove a trigger from an automation. Disables associated event listeners on MCPs.",annotations:{title:"Remove Trigger",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!1},inputSchema:F.object({trigger_id:F.string()}),outputSchema:F.object({success:F.boolean()}),handler:async(Y,X)=>{U0(X);let G=s1(X);await X.access.check();let Q=await X.storage.automations.findTriggerById(Y.trigger_id);if(!Q)throw Error("Trigger not found");if(!await X.storage.automations.findById(Q.automation_id,G.id))throw Error("Automation not found");if(Q.type==="event"){let Z=await Cq(X,Q,!1,X.storage.triggerCallbackTokens);if(!Z.success)console.warn(`Failed to disable trigger ${Q.id}: ${Z.error}`)}let{success:$}=await X.storage.automations.removeTrigger(Q.id,Q.automation_id);return{success:$}}})});var WI0;var ST6=D(()=>{H0();NX();b0();WI0=l1({name:"AUTOMATION_RUN",description:"Manually trigger an automation run. Bypasses configured triggers.",annotations:{title:"Run Automation",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!1},inputSchema:F.object({id:F.string()}),outputSchema:F.object({threadId:F.string().optional(),error:F.string().optional(),skipped:F.string().optional()}),handler:async(Y,X)=>{U0(X);let G=s1(X);if(await X.access.check(),!X.automationRunner)throw Error("Automation runner not available");let Q=L6(X);if(!Q)throw Error("User ID not available");let J=await X.automationRunner(Y.id,G.id,Q);if(q6.capture({distinctId:Q,event:"automation_run",groups:{organization:G.id},properties:{organization_id:G.id,automation_id:Y.id,thread_id:"taskId"in J?J.taskId:void 0,status:"skipped"in J?"skipped":("error"in J)?"error":"started",skip_reason:"skipped"in J?J.skipped:void 0,error_message:"error"in J?J.error:void 0}}),"skipped"in J)return{skipped:J.skipped};if("error"in J)return{threadId:J.taskId,error:J.error};return{threadId:J.taskId}}})});var kT6=D(()=>{zT6();DT6();wT6();qT6();AT6();MT6();RT6();ST6()});var QT5,JT5,KI0;var CT6=D(()=>{H0();b0();QT5=F.object({id:F.string().min(1)}),JT5=F.object({user:F.object({id:F.string(),name:F.string(),email:F.string(),image:F.string().nullable()}).nullable()}),KI0=l1({name:"USER_GET",description:"Get a user's profile by ID. Only returns users who share an organization with the caller.",annotations:{title:"Get User",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:QT5,outputSchema:JT5,handler:async(Y,X)=>{await X.access.check(),U0(X);let G=L6(X);if(!G)throw Error("Authentication required");let Q=await X.storage.users.findById(Y.id,G);if(!Q)return{user:null};return{user:{id:Q.id,name:Q.name,email:Q.email,image:Q.image??null}}}})});var vT6=D(()=>{CT6()});var HI0;var _T6=D(()=>{H0();b0();CD();HI0=l1({name:"AI_PROVIDERS_LIST",description:"List all supported AI providers and their connection methods (API key, OAuth).",annotations:{readOnlyHint:!0,idempotentHint:!0},inputSchema:p0.object({}),outputSchema:p0.object({providers:p0.array(p0.object({id:p0.string(),name:p0.string(),description:p0.string(),logo:p0.string().optional(),supportedMethods:p0.array(p0.enum(["api-key","oauth-pkce","cli-activate"])),supportsTopUp:p0.boolean().optional(),supportsCredits:p0.boolean().optional(),supportsProvision:p0.boolean().optional()}))}),handler:async(Y,X)=>{return U0(X),s1(X),await X.access.check(),{providers:Object.values(xQ()).filter((Q)=>!!Q).map((Q)=>({...Q.info,supportedMethods:Q.supportedMethods,supportsTopUp:!!Q.getTopUpUrl,supportsCredits:!!Q.getCreditsBalance,supportsProvision:!!Q.provisionKey}))}}})});function $T5(Y){if(!Y)return;if(!("models"in Y))return;return Y.models??void 0}function fT6(Y,X){if(!Y)return!0;if(Y.includes("*:*"))return!0;return Y.some((G)=>G.startsWith(`${X}:`))}function _q(Y,X,G){if(!Y)return!0;return Y.includes("*:*")||Y.includes(`${X}:*`)||Y.includes(`${X}:${G}`)}function bT6(Y){if(!Y)return{allowAll:!0,models:{}};if(Y.includes("*:*"))return{allowAll:!0,models:{}};let X={};for(let G of Y){let Q=G.indexOf(":");if(Q===-1)continue;let J=G.slice(0,Q),$=G.slice(Q+1);if(!X[J])X[J]=[];X[J].push($)}return{allowAll:!1,models:X}}async function UU(Y,X,G){if(!G||mn.includes(G))return;let Q=await Y.selectFrom("organizationRole").select(["permission"]).where("organizationId","=",X).where("role","=",G).executeTakeFirst();if(!Q?.permission)return;try{let J=JSON.parse(Q.permission);return $T5(J)}catch{return console.error(`[model-permissions] Failed to parse permissions for role: ${G}`),[]}}var DG1=D(()=>{CY1()});var FI0;var yT6=D(()=>{H0();b0();DG1();vq1();gq1();FI0=l1({name:"AI_PROVIDERS_LIST_MODELS",description:"List models available from an AI provider. Requires a valid stored API key.",annotations:{readOnlyHint:!0,idempotentHint:!0},inputSchema:p0.object({keyId:p0.string().describe("The provider key ID to use")}),outputSchema:p0.object({models:p0.array(p0.object({providerId:p0.string(),modelId:p0.string(),title:p0.string(),description:p0.string().nullish(),logo:p0.string().nullish(),capabilities:p0.array(p0.string()),limits:p0.object({contextWindow:p0.coerce.number(),maxOutputTokens:p0.coerce.number().nullable()}).nullish(),costs:p0.object({input:p0.coerce.number(),output:p0.coerce.number()}).nullish()}))}),handler:async(Y,X)=>{U0(X);let G=s1(X);await X.access.check();let Q=await X.storage.aiProviderKeys.findById(Y.keyId,G.id).catch(()=>null);if(Q?.providerId==="claude-code")return{models:aF0};if(Q?.providerId==="codex")return{models:NU0};let J=await UU(X.db,G.id,X.auth.user?.role);return{models:(await X.aiProviders.listModels(Y.keyId,G.id)).filter((W)=>_q(J,Y.keyId,W.modelId))}}})});var UI0;var hT6=D(()=>{H0();b0();CD();UI0=l1({name:"AI_PROVIDERS_ACTIVE",description:"List AI providers that have at least one API key configured and ready to use.",inputSchema:p0.object({}),outputSchema:p0.object({providers:p0.array(p0.object({id:p0.string(),name:p0.string(),description:p0.string(),logo:p0.string().optional(),keyCount:p0.number()}))}),handler:async(Y,X)=>{U0(X);let G=s1(X);await X.access.check();let Q=await X.storage.aiProviderKeys.list({organizationId:G.id}),J=new Map;for(let Z of Q)J.set(Z.providerId,(J.get(Z.providerId)??0)+1);return{providers:[...J.entries()].flatMap(([Z,W])=>{let H=xQ()[Z];if(!H)return console.warn(`AI provider "${Z}" has stored keys but is not in the registry; skipping.`),[];return[{...H.info,keyCount:W}]})}}})});var fq=D(()=>{x5()});var wG1,NI0;var hj1=D(()=>{H0();NX();b0();fq();wG1=p0.object({id:p0.string(),providerId:p0.string(),label:p0.string(),createdAt:p0.string()}),NI0=l1({name:"AI_PROVIDER_KEY_CREATE",description:"Store an API key for an AI provider. The key is encrypted at rest in the vault.",inputSchema:p0.object({providerId:p0.enum($Q),label:p0.string().min(1).max(100),apiKey:p0.string().min(1)}),outputSchema:wG1,handler:async(Y,X)=>{U0(X);let G=s1(X);await X.access.check();let Q=await X.storage.aiProviderKeys.create({providerId:Y.providerId,label:Y.label,apiKey:Y.apiKey,organizationId:G.id,createdBy:X.auth.user.id});return q6.capture({distinctId:X.auth.user.id,event:"ai_provider_key_created",groups:{organization:G.id},properties:{organization_id:G.id,provider_id:Q.providerId,key_id:Q.id,label:Q.label}}),{id:Q.id,providerId:Q.providerId,label:Q.label,createdAt:Q.createdAt}}})});var LG1=(Y,X)=>Y&&Y.keyId===X?null:Y,WT5=(Y,X)=>{let G={enabled:Y.enabled,chat:{fast:LG1(Y.chat.fast,X),smart:LG1(Y.chat.smart,X),thinking:LG1(Y.chat.thinking,X)},image:LG1(Y.image,X),webResearch:LG1(Y.webResearch,X)},Q=G.chat.fast!==Y.chat.fast||G.chat.smart!==Y.chat.smart||G.chat.thinking!==Y.chat.thinking||G.image!==Y.image||G.webResearch!==Y.webResearch;return{config:G,changed:Q}},BI0;var xT6=D(()=>{H0();NX();b0();BI0=l1({name:"AI_PROVIDER_KEY_DELETE",description:"Delete a stored AI provider API key. Cannot be undone.",inputSchema:p0.object({keyId:p0.string().describe("The provider key ID to delete")}),outputSchema:p0.object({success:p0.boolean()}),handler:async(Y,X)=>{U0(X);let G=s1(X);await X.access.check(),await X.storage.aiProviderKeys.delete(Y.keyId,G.id);let Q=await X.storage.organizationSettings.get(G.id);if(Q?.simple_mode){let{config:J,changed:$}=WT5(Q.simple_mode,Y.keyId);if($)await X.storage.organizationSettings.upsert(G.id,{simple_mode:J})}return q6.capture({distinctId:X.auth.user.id,event:"ai_provider_key_deleted",groups:{organization:G.id},properties:{organization_id:G.id,key_id:Y.keyId}}),{success:!0}}})});var OI0;var gT6=D(()=>{H0();b0();fq();DG1();OI0=l1({name:"AI_PROVIDER_KEY_LIST",description:"List stored AI provider API keys. Returns metadata only \u2014 secrets are never exposed.",annotations:{readOnlyHint:!0,idempotentHint:!0},inputSchema:p0.object({providerId:p0.enum($Q).optional()}),outputSchema:p0.object({keys:p0.array(p0.object({id:p0.string(),providerId:p0.string(),label:p0.string(),createdBy:p0.string(),createdAt:p0.string()}))}),handler:async(Y,X)=>{U0(X);let G=s1(X);await X.access.check();let[Q,J]=await Promise.all([X.storage.aiProviderKeys.list({organizationId:G.id,providerId:Y.providerId}),UU(X.db,G.id,X.auth.user?.role)]);return{keys:Q.filter((W)=>fT6(J,W.id)).map(({organizationId:W,...K})=>K)}}})});import{createHash as KT5,randomBytes as HT5}from"crypto";function uT6(){return HT5(32).toString("base64url")}function lT6(Y){return KT5("sha256").update(Y).digest("base64url")}var mT6=()=>{};var zI0;var dT6=D(()=>{H0();b0();fq();CD();mT6();YY();zI0=l1({name:"AI_PROVIDER_OAUTH_URL",description:"Get the OAuth PKCE authorization URL for a provider. Returns URL and state token.",inputSchema:p0.object({providerId:p0.enum($Q),callbackUrl:p0.string().url().refine((Y)=>{let X=S4(),G=X.baseUrl??`http://localhost:${X.port}`;return new URL(Y).origin===new URL(G).origin},{message:"callbackUrl must be on the same origin as BASE_URL"})}),outputSchema:p0.object({url:p0.string(),stateToken:p0.string().describe("Opaque token \u2014 pass to AI_PROVIDER_OAUTH_EXCHANGE")}),handler:async(Y,X)=>{U0(X);let G=s1(X);await X.access.check();let Q=xQ()[Y.providerId];if(!Q)throw Error(`Unknown provider: ${Y.providerId}`);if(!Q.supportedMethods.includes("oauth-pkce")||!Q.getOAuthUrl)throw Error(`Provider ${Y.providerId} does not support OAuth PKCE`);let J=uT6(),$=lT6(J),Z=await X.storage.oauthPkceStates.create(J,G.id,X.auth.user.id),W=new URL(Y.callbackUrl);W.searchParams.set("state",Z);let K={callbackUrl:W.toString(),codeChallenge:$,codeChallengeMethod:"S256",organizationId:G.id};return{url:Q.getOAuthUrl(K),stateToken:Z}}})});var DI0;var cT6=D(()=>{H0();b0();fq();CD();hj1();DI0=l1({name:"AI_PROVIDER_OAUTH_EXCHANGE",description:"Exchange an OAuth authorization code for an API key. Completes the OAuth flow started by AI_PROVIDER_OAUTH_URL.",inputSchema:p0.object({providerId:p0.enum($Q),code:p0.string(),stateToken:p0.string().describe("The stateToken returned by AI_PROVIDER_OAUTH_URL"),label:p0.string().min(1).max(100).default("Connected via OAuth")}),outputSchema:wG1,handler:async(Y,X)=>{U0(X);let G=s1(X);await X.access.check();let Q=xQ()[Y.providerId];if(!Q)throw Error(`Unknown provider: ${Y.providerId}`);if(!Q.supportedMethods.includes("oauth-pkce")||!Q.exchangeOAuthCode)throw Error(`Provider ${Y.providerId} does not support OAuth PKCE`);let J=L6(X);if(!J)throw Error("Unable to determine user ID");let $=await X.storage.oauthPkceStates.consume(Y.stateToken,G.id,J),{apiKey:Z}=await Q.exchangeOAuthCode({code:Y.code,codeVerifier:$,codeChallengeMethod:"S256"}),W=await X.storage.aiProviderKeys.upsert({providerId:Y.providerId,label:Y.label,apiKey:Z,organizationId:G.id,createdBy:J});return{id:W.id,providerId:W.providerId,label:W.label,createdAt:W.createdAt}}})});var wI0;var iT6=D(()=>{H0();b0();fq();CD();Sj();hj1();wI0=l1({name:"AI_PROVIDER_PROVISION_KEY",description:"Auto-provision an API key for a provider that supports server-to-server key creation (e.g. Deco AI Gateway).",inputSchema:p0.object({providerId:p0.enum($Q)}),outputSchema:wG1,handler:async(Y,X)=>{U0(X);let G=s1(X);await X.access.check();let Q=L6(X);if(!Q)throw Error("Unable to determine user ID");let J=xQ()[Y.providerId];if(!J)throw Error(`Unknown provider: ${Y.providerId}`);if(!J.provisionKey)throw Error(`Provider ${Y.providerId} does not support key provisioning`);let $=await aE(Q),Z=await J.provisionKey($,G.id),W=await X.storage.aiProviderKeys.upsert({providerId:Y.providerId,label:"Auto-provisioned",apiKey:Z,organizationId:G.id,createdBy:Q});return{id:W.id,providerId:W.providerId,label:W.label,createdAt:W.createdAt}}})});var LI0;var pT6=D(()=>{H0();b0();fq();CD();Sj();LI0=l1({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:p0.object({providerId:p0.enum($Q),amountCents:p0.number().int().positive().describe("Amount in cents (e.g. 1000 = $10.00)"),currency:p0.enum(["usd","brl"]).default("usd")}),outputSchema:p0.object({url:p0.string().describe("Checkout URL \u2014 open in browser to complete payment")}),handler:async(Y,X)=>{U0(X);let G=s1(X);await X.access.check();let Q=L6(X);if(!Q)throw Error("Unable to determine user ID");let J=xQ()[Y.providerId];if(!J)throw Error(`Unknown provider: ${Y.providerId}`);if(!J.getTopUpUrl)throw Error(`Provider ${Y.providerId} does not support credit top-ups`);let $=await aE(Q);return{url:await J.getTopUpUrl($,G.id,Y.amountCents,Y.currency)}}})});var EI0;var nT6=D(()=>{H0();b0();fq();CD();Sj();EI0=l1({name:"AI_PROVIDER_CREDITS",description:"Get the current credit balance for a provider (providers that support it, e.g. Deco AI Gateway)",inputSchema:p0.object({providerId:p0.enum($Q)}),outputSchema:p0.object({balanceCents:p0.number().describe("Remaining balance in cents (e.g. 1000 = $10.00)")}),handler:async(Y,X)=>{U0(X);let G=s1(X);await X.access.check();let Q=L6(X);if(!Q)throw Error("Unable to determine user ID");let J=xQ()[Y.providerId];if(!J)throw Error(`Unknown provider: ${Y.providerId}`);if(!J.getCreditsBalance)throw Error(`Provider ${Y.providerId} does not expose a credits balance`);let $=await aE(Q);return J.getCreditsBalance($,G.id)}})});import{query as FT5}from"@anthropic-ai/claude-agent-sdk";async function UT5(){try{let Y=FT5({prompt:"",options:{maxTurns:1}}),X=await Y.accountInfo();if(Y.return(void 0),!X.email)return{activated:!1,error:"Claude Code is not authenticated. Run: claude auth login"};return{activated:!0,email:X.email}}catch{return{activated:!1,error:"Claude Code is not available. Install from https://docs.anthropic.com/en/docs/claude-code/overview"}}}async function NT5(){try{let Y=Bun.spawn(["codex","--version"],{stdout:"pipe",stderr:"pipe"}),X=setTimeout(()=>Y.kill(),1e4),G=await Y.exited;if(clearTimeout(X),G!==0)return{activated:!1,error:"Codex CLI is not available. Install with: npm install -g @openai/codex"}}catch{return{activated:!1,error:"Codex CLI is not available. Install with: npm install -g @openai/codex"}}return{activated:!0}}var PI0;var aT6=D(()=>{H0();b0();PI0=l1({name:"AI_PROVIDER_CLI_ACTIVATE",description:"Check if a CLI-based AI provider (Claude Code or Codex) is installed and authenticated, then activate it.",inputSchema:p0.object({providerId:p0.enum(["claude-code","codex"]).default("claude-code").describe("Which CLI provider to activate")}),outputSchema:p0.object({activated:p0.boolean(),email:p0.string().optional(),error:p0.string().optional()}),handler:async(Y,X)=>{U0(X);let G=s1(X);await X.access.check();let Q=Y.providerId==="codex"?await NT5():await UT5();if(!Q.activated)return Q;return await X.storage.aiProviderKeys.upsert({providerId:Y.providerId,label:Y.providerId==="codex"?"Codex CLI":"Claude CLI",apiKey:"cli-local",organizationId:G.id,createdBy:X.auth.user.id}),Q}})});var rT6=D(()=>{_T6();yT6();hT6();hj1();xT6();gT6();dT6();cT6();iT6();pT6();nT6();aT6()});var tT6,oT6;var sT6=D(()=>{tT6=[{name:"agents-create",title:"Create Agents",description:"Build a new agent for a specific role or workflow.",text:`# Create agent
|
|
1910
|
+
`,Y.enqueue(X.encode(J)),!0}catch(J){return this.onerror?.(J),!1}}handleUnsupportedRequest(){return this.onerror?.(Error("Method not allowed.")),new Response(JSON.stringify({jsonrpc:"2.0",error:{code:-32000,message:"Method not allowed."},id:null}),{status:405,headers:{Allow:"GET, POST, DELETE","Content-Type":"application/json"}})}async handlePostRequest(Y,X){try{let G=Y.headers.get("accept");if(!G?.includes("application/json")||!G.includes("text/event-stream"))return this.onerror?.(Error("Not Acceptable: Client must accept both application/json and text/event-stream")),this.createJsonErrorResponse(406,-32000,"Not Acceptable: Client must accept both application/json and text/event-stream");let Q=Y.headers.get("content-type");if(!Q||!Q.includes("application/json"))return this.onerror?.(Error("Unsupported Media Type: Content-Type must be application/json")),this.createJsonErrorResponse(415,-32000,"Unsupported Media Type: Content-Type must be application/json");let J={headers:Object.fromEntries(Y.headers.entries()),url:new URL(Y.url)},$;if(X?.parsedBody!==void 0)$=X.parsedBody;else try{$=await Y.json()}catch{return this.onerror?.(Error("Parse error: Invalid JSON")),this.createJsonErrorResponse(400,-32700,"Parse error: Invalid JSON")}let Z;try{if(Array.isArray($))Z=$.map((E)=>vW.parse(E));else Z=[vW.parse($)]}catch{return this.onerror?.(Error("Parse error: Invalid JSON-RPC message")),this.createJsonErrorResponse(400,-32700,"Parse error: Invalid JSON-RPC message")}let W=Z.some(F10);if(W){if(this._initialized&&this.sessionId!==void 0)return this.onerror?.(Error("Invalid Request: Server already initialized")),this.createJsonErrorResponse(400,-32600,"Invalid Request: Server already initialized");if(Z.length>1)return this.onerror?.(Error("Invalid Request: Only one initialization request is allowed")),this.createJsonErrorResponse(400,-32600,"Invalid Request: Only one initialization request is allowed");if(this.sessionId=this.sessionIdGenerator?.(),this._initialized=!0,this.sessionId&&this._onsessioninitialized)await Promise.resolve(this._onsessioninitialized(this.sessionId))}if(!W){let E=this.validateSession(Y);if(E)return E;let P=this.validateProtocolVersion(Y);if(P)return P}if(!Z.some(eU)){for(let E of Z)this.onmessage?.(E,{authInfo:X?.authInfo,requestInfo:J});return new Response(null,{status:202})}let H=crypto.randomUUID(),U=Z.find((E)=>F10(E)),N=U?U.params.protocolVersion:Y.headers.get("mcp-protocol-version")??jB4;if(this._enableJsonResponse)return new Promise((E)=>{this._streamMapping.set(H,{resolveJson:E,cleanup:()=>{this._streamMapping.delete(H)}});for(let P of Z)if(eU(P))this._requestToStreamMapping.set(P.id,H);for(let P of Z)this.onmessage?.(P,{authInfo:X?.authInfo,requestInfo:J})});let B=new TextEncoder,O,z=new ReadableStream({start:(E)=>{O=E},cancel:()=>{this._streamMapping.delete(H)}}),w={"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"};if(this.sessionId!==void 0)w["mcp-session-id"]=this.sessionId;for(let E of Z)if(eU(E))this._streamMapping.set(H,{controller:O,encoder:B,cleanup:()=>{this._streamMapping.delete(H);try{O.close()}catch{}}}),this._requestToStreamMapping.set(E.id,H);await this.writePrimingEvent(O,B,H,N);for(let E of Z){let P,I;if(eU(E)&&this._eventStore&&N>="2025-11-25")P=()=>{this.closeSSEStream(E.id)},I=()=>{this.closeStandaloneSSEStream()};this.onmessage?.(E,{authInfo:X?.authInfo,requestInfo:J,closeSSEStream:P,closeStandaloneSSEStream:I})}return new Response(z,{status:200,headers:w})}catch(G){return this.onerror?.(G),this.createJsonErrorResponse(400,-32700,"Parse error",{data:String(G)})}}async handleDeleteRequest(Y){let X=this.validateSession(Y);if(X)return X;let G=this.validateProtocolVersion(Y);if(G)return G;return await Promise.resolve(this._onsessionclosed?.(this.sessionId)),await this.close(),new Response(null,{status:200})}validateSession(Y){if(this.sessionIdGenerator===void 0)return;if(!this._initialized)return this.onerror?.(Error("Bad Request: Server not initialized")),this.createJsonErrorResponse(400,-32000,"Bad Request: Server not initialized");let X=Y.headers.get("mcp-session-id");if(!X)return this.onerror?.(Error("Bad Request: Mcp-Session-Id header is required")),this.createJsonErrorResponse(400,-32000,"Bad Request: Mcp-Session-Id header is required");if(X!==this.sessionId)return this.onerror?.(Error("Session not found")),this.createJsonErrorResponse(404,-32001,"Session not found");return}validateProtocolVersion(Y){let X=Y.headers.get("mcp-protocol-version");if(X!==null&&!EL.includes(X))return this.onerror?.(Error(`Bad Request: Unsupported protocol version: ${X} (supported versions: ${EL.join(", ")})`)),this.createJsonErrorResponse(400,-32000,`Bad Request: Unsupported protocol version: ${X} (supported versions: ${EL.join(", ")})`);return}async close(){this._streamMapping.forEach(({cleanup:Y})=>{Y()}),this._streamMapping.clear(),this._requestResponseMap.clear(),this.onclose?.()}closeSSEStream(Y){let X=this._requestToStreamMapping.get(Y);if(!X)return;let G=this._streamMapping.get(X);if(G)G.cleanup()}closeStandaloneSSEStream(){let Y=this._streamMapping.get(this._standaloneSseStreamId);if(Y)Y.cleanup()}async send(Y,X){let G=X?.relatedRequestId;if(iH(Y)||Wd(Y))G=Y.id;if(G===void 0){if(iH(Y)||Wd(Y))throw Error("Cannot send a response on a standalone SSE stream unless resuming a previous client request");let $;if(this._eventStore)$=await this._eventStore.storeEvent(this._standaloneSseStreamId,Y);let Z=this._streamMapping.get(this._standaloneSseStreamId);if(Z===void 0)return;if(Z.controller&&Z.encoder)this.writeSSEEvent(Z.controller,Z.encoder,Y,$);return}let Q=this._requestToStreamMapping.get(G);if(!Q)throw Error(`No connection established for request ID: ${String(G)}`);let J=this._streamMapping.get(Q);if(!this._enableJsonResponse&&J?.controller&&J?.encoder){let $;if(this._eventStore)$=await this._eventStore.storeEvent(Q,Y);this.writeSSEEvent(J.controller,J.encoder,Y,$)}if(iH(Y)||Wd(Y)){this._requestResponseMap.set(G,Y);let $=Array.from(this._requestToStreamMapping.entries()).filter(([W,K])=>K===Q).map(([W])=>W);if($.every((W)=>this._requestResponseMap.has(W))){if(!J)throw Error(`No connection established for request ID: ${String(G)}`);if(this._enableJsonResponse&&J.resolveJson){let W={"Content-Type":"application/json"};if(this.sessionId!==void 0)W["mcp-session-id"]=this.sessionId;let K=$.map((H)=>this._requestResponseMap.get(H));if(K.length===1)J.resolveJson(new Response(JSON.stringify(K[0]),{status:200,headers:W}));else J.resolveJson(new Response(JSON.stringify(K),{status:200,headers:W}))}else J.cleanup();for(let W of $)this._requestResponseMap.delete(W),this._requestToStreamMapping.delete(W)}}}}var Er=D(()=>{hX()});async function fj1(Y,X){let G=Y.get("meshContext");try{let Q=Y.req.header("x-org-id"),J=Y.req.header("x-org-slug"),$=Q?Q:J?await G.db.selectFrom("organization").select("id").where("slug","=",J).executeTakeFirst().then((O)=>O?.id):null,Z=X?X:$?KN($):null;if(!Z)return Y.json({error:"Agent ID or organization ID is required"},400);let W=await G.storage.virtualMcps.findById(Z,$??void 0);if(!W)return Y.json({error:"Agent not found"},404);if($&&W.organization_id!==$)return Y.json({error:"Agent not found"},404);if(W.status!=="active")return Y.json({error:`Agent is inactive: ${W.id??"Decopilot"}`},503);if(G.organization?.id&&W.organization_id!==G.organization.id)return Y.json({error:"Forbidden: Agent does not belong to your organization"},403);G.connectionId=W.id??void 0;let K=await G.db.selectFrom("organization").select(["id","slug","name"]).where("id","=",W.organization_id).executeTakeFirst();if(K)G.organization={id:K.id,slug:K.slug,name:K.name};let H=await i2(W,G,"passthrough"),U={name:W.id??"Decopilot",version:"1.0.0",title:W.title??void 0,description:W.description??void 0,icons:W.icon?[{src:W.icon}]:void 0},N=nO(H,U,{capabilities:{tools:{},resources:{},prompts:{}},instructions:typeof W.metadata?.instructions==="string"?W.metadata.instructions:void 0,toolCallTimeoutMs:uP}),B=new KH({enableJsonResponse:Y.req.header("Accept")?.includes("application/json")??!1});return await N.connect(B),await B.handleRequest(Y.req.raw)}catch(Q){let J=Q;return console.error("[virtual-mcp] Error handling virtual MCP request:",J),Y.json({error:"Internal server error",message:J.message},500)}}var oA0,LT6;var sA0=D(()=>{x5();Er();PG();JG1();oA0=new P9;oA0.all("/gateway/:virtualMcpId?",async(Y)=>{let X=Y.req.param("virtualMcpId")||Y.req.header("x-virtual-mcp-id");return fj1(Y,X)});oA0.all("/virtual-mcp/:virtualMcpId?",async(Y)=>{let X=Y.req.param("virtualMcpId")||Y.req.header("x-virtual-mcp-id");return fj1(Y,X)});LT6=oA0});var bj1,ET6=(Y,X)=>{if(Y.message.includes("not found"))return X.json({error:Y.message},404);if(Y.message.includes("does not belong to the active organization"))return X.json({error:"Connection not found"},404);if(Y.message.includes("inactive"))return X.json({error:Y.message},503);return X.json({error:"Internal server error",message:Y.message},500)},PT6;var eA0=D(()=>{zr();Er();PG();L60();wr();qj1();sA0();pP1();bj1=new P9;bj1.all("/",async(Y)=>{return fj1(Y,void 0)});bj1.all("/:connectionId",async(Y)=>{let X=Y.req.param("connectionId"),G=Y.get("meshContext");if(X.endsWith("_self")){let Q=X.slice(0,-5);if(!G.organization||G.organization.id!==Q)return Y.json({error:"Connection not found"},404);let J=await Pr(G),$=new KH({enableJsonResponse:Y.req.raw.headers.get("Accept")?.includes("application/json")??!1});return await J.connect($),await $.handleRequest(Y.req.raw)}try{try{if(!G.organization?.id)return Y.json({error:"Organization context is required"},403);UK(Y,"mcp.find_connection");let Q=await G.storage.connections.findById(X,G.organization.id);if(_W(Y,"mcp.find_connection"),!Q)throw Error("Connection not found");if(Q.organization_id!==G.organization.id)throw Error("Connection does not belong to the active organization");if(Q.status!=="active")throw Error(`Connection inactive: ${Q.status}`);if(Q.connection_url)UK(Y,"mcp.client_handshake"),await GW(Q,G,!1),_W(Y,"mcp.client_handshake");UK(Y,"mcp.create_server");let J=lq0(Q,G,!1);_W(Y,"mcp.create_server");let $=new KH({enableJsonResponse:Y.req.raw.headers.get("Accept")?.includes("application/json")??!1});UK(Y,"mcp.server_connect"),await J.connect($),_W(Y,"mcp.server_connect"),UK(Y,"mcp.handle_request");let Z=await $.handleRequest(Y.req.raw);return _W(Y,"mcp.handle_request"),Z}catch(Q){let J=await G.storage.connections.findById(X,G.organization?.id);if(J?.connection_url){let $=await AA6({error:Q,reqUrl:new URL(Y.req.raw.url),connectionId:X,connectionUrl:J.connection_url,headers:{}});if($)return $}throw Q}}catch(Q){return ET6(Q,Y)}});bj1.all("/:connectionId/call-tool/:toolName",async(Y)=>{let X=Y.req.param("connectionId"),G=Y.req.param("toolName"),Q=Y.get("meshContext");try{let J=await Q.storage.connections.findById(X,Q.organization?.id);if(!J)return Y.json({error:"Connection not found"},404);let Z=await(await GW(J,Q,!1)).callTool({name:G,arguments:await Y.req.json()});if(Z instanceof Response)return Z;if(Z.isError)return new Response(JSON.stringify(Z.content),{headers:{"Content-Type":"application/json"},status:500});return new Response(JSON.stringify(Z.structuredContent??Z.content),{headers:{"Content-Type":"application/json"}})}catch(J){return ET6(J,Y)}});PT6=bj1});async function Cq(Y,X,G,Q){if(X.type!=="event"||!X.connection_id)return{success:!0};let J=await Y.storage.connections.findById(X.connection_id);if(!J)return{success:!0};let $=Y.organization?.id;try{let Z=await GW(J,Y,!0),W=D30.forClient(kY1(Z)),K,H,U;if(G&&Q&&$){let z=await Q.generateTokenPair();H=z.plaintext,U=z.hash,K=`${Y.baseUrl}/api/trigger-callback`}let N=5000,B=!1,O=new Promise((z,w)=>setTimeout(()=>{B=!0,w(Error("TRIGGER_CONFIGURE timeout"))},N));try{await Promise.race([W.TRIGGER_CONFIGURE({type:X.event_type,params:JSON.parse(X.params??"{}"),enabled:G,callbackUrl:K,callbackToken:H}),O])}catch(z){if(B&&G&&Q&&$&&U)await Q.persistTokenHash($,X.connection_id,U);return{success:!1,error:String(z)}}try{if(G&&Q&&$&&U)await Q.persistTokenHash($,X.connection_id,U);if(!G&&Q&&$)await Q.deleteByConnection(X.connection_id,$)}catch(z){console.error("[configureTriggerOnMcp] Token persistence failed after successful TRIGGER_CONFIGURE:",z)}return{success:!0}}catch(Z){return{success:!1,error:String(Z)}}}var NG1=D(()=>{zr();eA0();w30()});var YI0;var qT6=D(()=>{H0();b0();NG1();YI0=l1({name:"AUTOMATION_UPDATE",description:"Update an automation's config. Toggling active state reconfigures event triggers on MCPs.",annotations:{title:"Update Automation",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:F.object({id:F.string(),name:F.string().min(1).max(255).optional(),active:F.boolean().optional(),agent:F.object({id:F.string()}).optional(),messages:F.union([F.string(),F.array(F.looseObject({id:F.string().optional(),role:F.enum(["user","assistant","system"]),parts:F.array(F.record(F.string(),F.unknown())),metadata:F.unknown().optional()}))]).optional(),models:F.object({credentialId:F.string(),thinking:F.object({id:F.string(),capabilities:F.object({vision:F.boolean().optional(),text:F.boolean().optional(),tools:F.boolean().optional()}).optional(),provider:F.enum(["openai","anthropic","google","xai","deepseek","openrouter","openai-compatible"]).optional().nullable(),limits:F.object({contextWindow:F.number().optional(),maxOutputTokens:F.number().optional()}).optional()}),coding:F.object({id:F.string()}).optional(),fast:F.object({id:F.string()}).optional()}).loose().optional(),temperature:F.number().optional()}),outputSchema:F.object({id:F.string(),name:F.string(),active:F.boolean(),updated_at:F.string()}),handler:async(Y,X)=>{U0(X);let G=s1(X);await X.access.check();let Q=await X.storage.automations.findById(Y.id,G.id);if(!Q)throw Error("Automation not found");let J={};if(Y.name!==void 0)J.name=Y.name;if(Y.active!==void 0)J.active=Y.active;if(Y.agent!==void 0)J.agent=JSON.stringify(Y.agent);if(Y.messages!==void 0){let Z=_j1(Y.messages);J.messages=JSON.stringify(Z)}if(Y.models!==void 0)J.models=JSON.stringify(Y.models);if(Y.temperature!==void 0)J.temperature=Y.temperature;let $=await X.storage.automations.update(Y.id,G.id,J);if(Y.active!==void 0&&Y.active!==Q.active){let W=(await X.storage.automations.listTriggers($.id)).filter((K)=>K.type==="event");await Promise.allSettled(W.map(async(K)=>{let H=await Cq(X,K,Y.active);if(!H.success)console.warn(`Failed to configure trigger ${K.id}: ${H.error}`)}))}return{id:$.id,name:$.name,active:$.active,updated_at:$.updated_at}}})});var XI0;var AT6=D(()=>{H0();NX();b0();NG1();XI0=l1({name:"AUTOMATION_DELETE",description:"Permanently delete an automation. Disables all event triggers on connected MCPs first.",annotations:{title:"Delete Automation",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!1},inputSchema:F.object({id:F.string()}),outputSchema:F.object({success:F.boolean()}),handler:async(Y,X)=>{U0(X);let G=s1(X);if(await X.access.check(),!await X.storage.automations.findById(Y.id,G.id))throw Error("Automation not found");let J=await X.storage.automations.listTriggers(Y.id),$=J.filter((K)=>K.type==="event");await Promise.allSettled($.map(async(K)=>{let H=await Cq(X,K,!1);if(!H.success)console.warn(`Failed to disable trigger ${K.id}: ${H.error}`)}));let{success:Z}=await X.storage.automations.delete(Y.id,G.id),W=L6(X);if(W)q6.capture({distinctId:W,event:"automation_deleted",groups:{organization:G.id},properties:{organization_id:G.id,automation_id:Y.id,trigger_count:J.length}});return{success:Z}}})});function dJ(Y,X,G,Q,J,$,Z,W){return dJ.fromTZ(dJ.tp(Y,X,G,Q,J,$,Z),W)}function GI0(Y,X=new Date){let G=X.toLocaleString("en-US",{timeZone:Y,timeZoneName:"shortOffset"}).split(" ").slice(-1)[0],Q=X.toLocaleString("en-US").replace(/[\u202f]/," ");return Date.parse(`${Q} GMT`)-Date.parse(`${Q} ${G}`)}function oI5(Y,X){let G=new Date(Date.parse(Y));if(isNaN(G))throw Error("minitz: Invalid ISO8601 passed to parser.");let Q=Y.substring(9);return Y.includes("Z")||Q.includes("-")||Q.includes("+")?dJ.tp(G.getUTCFullYear(),G.getUTCMonth()+1,G.getUTCDate(),G.getUTCHours(),G.getUTCMinutes(),G.getUTCSeconds(),"Etc/UTC"):dJ.tp(G.getFullYear(),G.getMonth()+1,G.getDate(),G.getHours(),G.getMinutes(),G.getSeconds(),X)}function sI5(Y){if(Y===void 0&&(Y={}),delete Y.name,Y.legacyMode=Y.legacyMode===void 0?!0:Y.legacyMode,Y.paused=Y.paused===void 0?!1:Y.paused,Y.maxRuns=Y.maxRuns===void 0?1/0:Y.maxRuns,Y.catch=Y.catch===void 0?!1:Y.catch,Y.interval=Y.interval===void 0?0:parseInt(Y.interval.toString(),10),Y.utcOffset=Y.utcOffset===void 0?void 0:parseInt(Y.utcOffset.toString(),10),Y.unref=Y.unref===void 0?!1:Y.unref,Y.startAt&&(Y.startAt=new HH(Y.startAt,Y.timezone)),Y.stopAt&&(Y.stopAt=new HH(Y.stopAt,Y.timezone)),Y.interval!==null){if(isNaN(Y.interval))throw Error("CronOptions: Supplied value for interval is not a number");if(Y.interval<0)throw Error("CronOptions: Supplied value for interval can not be negative")}if(Y.utcOffset!==void 0){if(isNaN(Y.utcOffset))throw Error("CronOptions: Invalid value passed for utcOffset, should be number representing minutes offset from UTC.");if(Y.utcOffset<-870||Y.utcOffset>870)throw Error("CronOptions: utcOffset out of bounds.");if(Y.utcOffset!==void 0&&Y.timezone)throw Error("CronOptions: Combining 'utcOffset' with 'timezone' is not allowed.")}if(Y.unref!==!0&&Y.unref!==!1)throw Error("CronOptions: Unref should be either true, false or undefined(false).");return Y}function BG1(Y){return Object.prototype.toString.call(Y)==="[object Function]"||typeof Y=="function"||Y instanceof Function}function eI5(Y){return BG1(Y)}function YT5(Y){typeof Deno<"u"&&typeof Deno.unrefTimer<"u"?Deno.unrefTimer(Y):Y&&typeof Y.unref<"u"&&Y.unref()}var QI0=32,OG1,VT6,IT6=class{pattern;timezone;second;minute;hour;day;month;dayOfWeek;lastDayOfMonth;starDOM;starDOW;constructor(Y,X){this.pattern=Y,this.timezone=X,this.second=Array(60).fill(0),this.minute=Array(60).fill(0),this.hour=Array(24).fill(0),this.day=Array(31).fill(0),this.month=Array(12).fill(0),this.dayOfWeek=Array(7).fill(0),this.lastDayOfMonth=!1,this.starDOM=!1,this.starDOW=!1,this.parse()}parse(){if(!(typeof this.pattern=="string"||this.pattern instanceof String))throw TypeError("CronPattern: Pattern has to be of type string.");this.pattern.indexOf("@")>=0&&(this.pattern=this.handleNicknames(this.pattern).trim());let Y=this.pattern.replace(/\s+/g," ").split(" ");if(Y.length<5||Y.length>6)throw TypeError("CronPattern: invalid configuration format ('"+this.pattern+"'), exactly five or six space separated parts are required.");if(Y.length===5&&Y.unshift("0"),Y[3].indexOf("L")>=0&&(Y[3]=Y[3].replace("L",""),this.lastDayOfMonth=!0),Y[3]=="*"&&(this.starDOM=!0),Y[4].length>=3&&(Y[4]=this.replaceAlphaMonths(Y[4])),Y[5].length>=3&&(Y[5]=this.replaceAlphaDays(Y[5])),Y[5]=="*"&&(this.starDOW=!0),this.pattern.indexOf("?")>=0){let X=new HH(new Date,this.timezone).getDate(!0);Y[0]=Y[0].replace("?",X.getSeconds().toString()),Y[1]=Y[1].replace("?",X.getMinutes().toString()),Y[2]=Y[2].replace("?",X.getHours().toString()),this.starDOM||(Y[3]=Y[3].replace("?",X.getDate().toString())),Y[4]=Y[4].replace("?",(X.getMonth()+1).toString()),this.starDOW||(Y[5]=Y[5].replace("?",X.getDay().toString()))}this.throwAtIllegalCharacters(Y),this.partToArray("second",Y[0],0,1),this.partToArray("minute",Y[1],0,1),this.partToArray("hour",Y[2],0,1),this.partToArray("day",Y[3],-1,1),this.partToArray("month",Y[4],-1,1),this.partToArray("dayOfWeek",Y[5],0,OG1),this.dayOfWeek[7]&&(this.dayOfWeek[0]=this.dayOfWeek[7])}partToArray(Y,X,G,Q){let J=this[Y],$=Y==="day"&&this.lastDayOfMonth;if(X===""&&!$)throw TypeError("CronPattern: configuration entry "+Y+" ("+X+") is empty, check for trailing spaces.");if(X==="*")return J.fill(Q);let Z=X.split(",");if(Z.length>1)for(let W=0;W<Z.length;W++)this.partToArray(Y,Z[W],G,Q);else X.indexOf("-")!==-1&&X.indexOf("/")!==-1?this.handleRangeWithStepping(X,Y,G,Q):X.indexOf("-")!==-1?this.handleRange(X,Y,G,Q):X.indexOf("/")!==-1?this.handleStepping(X,Y,G,Q):X!==""&&this.handleNumber(X,Y,G,Q)}throwAtIllegalCharacters(Y){for(let X=0;X<Y.length;X++)if((X===5?/[^/*0-9,\-#L]+/:/[^/*0-9,-]+/).test(Y[X]))throw TypeError("CronPattern: configuration entry "+X+" ("+Y[X]+") contains illegal characters.")}handleNumber(Y,X,G,Q){let J=this.extractNth(Y,X),$=parseInt(J[0],10)+G;if(isNaN($))throw TypeError("CronPattern: "+X+" is not a number: '"+Y+"'");this.setPart(X,$,J[1]||Q)}setPart(Y,X,G){if(!Object.prototype.hasOwnProperty.call(this,Y))throw TypeError("CronPattern: Invalid part specified: "+Y);if(Y==="dayOfWeek"){if(X===7&&(X=0),X<0||X>6)throw RangeError("CronPattern: Invalid value for dayOfWeek: "+X);this.setNthWeekdayOfMonth(X,G);return}if(Y==="second"||Y==="minute"){if(X<0||X>=60)throw RangeError("CronPattern: Invalid value for "+Y+": "+X)}else if(Y==="hour"){if(X<0||X>=24)throw RangeError("CronPattern: Invalid value for "+Y+": "+X)}else if(Y==="day"){if(X<0||X>=31)throw RangeError("CronPattern: Invalid value for "+Y+": "+X)}else if(Y==="month"&&(X<0||X>=12))throw RangeError("CronPattern: Invalid value for "+Y+": "+X);this[Y][X]=G}handleRangeWithStepping(Y,X,G,Q){let J=this.extractNth(Y,X),$=J[0].match(/^(\d+)-(\d+)\/(\d+)$/);if($===null)throw TypeError("CronPattern: Syntax error, illegal range with stepping: '"+Y+"'");let[,Z,W,K]=$,H=parseInt(Z,10)+G,U=parseInt(W,10)+G,N=parseInt(K,10);if(isNaN(H))throw TypeError("CronPattern: Syntax error, illegal lower range (NaN)");if(isNaN(U))throw TypeError("CronPattern: Syntax error, illegal upper range (NaN)");if(isNaN(N))throw TypeError("CronPattern: Syntax error, illegal stepping: (NaN)");if(N===0)throw TypeError("CronPattern: Syntax error, illegal stepping: 0");if(N>this[X].length)throw TypeError("CronPattern: Syntax error, steps cannot be greater than maximum value of part ("+this[X].length+")");if(H>U)throw TypeError("CronPattern: From value is larger than to value: '"+Y+"'");for(let B=H;B<=U;B+=N)this.setPart(X,B,J[1]||Q)}extractNth(Y,X){let G=Y,Q;if(G.includes("#")){if(X!=="dayOfWeek")throw Error("CronPattern: nth (#) only allowed in day-of-week field");Q=G.split("#")[1],G=G.split("#")[0]}return[G,Q]}handleRange(Y,X,G,Q){let J=this.extractNth(Y,X),$=J[0].split("-");if($.length!==2)throw TypeError("CronPattern: Syntax error, illegal range: '"+Y+"'");let Z=parseInt($[0],10)+G,W=parseInt($[1],10)+G;if(isNaN(Z))throw TypeError("CronPattern: Syntax error, illegal lower range (NaN)");if(isNaN(W))throw TypeError("CronPattern: Syntax error, illegal upper range (NaN)");if(Z>W)throw TypeError("CronPattern: From value is larger than to value: '"+Y+"'");for(let K=Z;K<=W;K++)this.setPart(X,K,J[1]||Q)}handleStepping(Y,X,G,Q){let J=this.extractNth(Y,X),$=J[0].split("/");if($.length!==2)throw TypeError("CronPattern: Syntax error, illegal stepping: '"+Y+"'");$[0]===""&&($[0]="*");let Z=0;$[0]!=="*"&&(Z=parseInt($[0],10)+G);let W=parseInt($[1],10);if(isNaN(W))throw TypeError("CronPattern: Syntax error, illegal stepping: (NaN)");if(W===0)throw TypeError("CronPattern: Syntax error, illegal stepping: 0");if(W>this[X].length)throw TypeError("CronPattern: Syntax error, max steps for part is ("+this[X].length+")");for(let K=Z;K<this[X].length;K+=W)this.setPart(X,K,J[1]||Q)}replaceAlphaDays(Y){return Y.replace(/-sun/gi,"-7").replace(/sun/gi,"0").replace(/mon/gi,"1").replace(/tue/gi,"2").replace(/wed/gi,"3").replace(/thu/gi,"4").replace(/fri/gi,"5").replace(/sat/gi,"6")}replaceAlphaMonths(Y){return Y.replace(/jan/gi,"1").replace(/feb/gi,"2").replace(/mar/gi,"3").replace(/apr/gi,"4").replace(/may/gi,"5").replace(/jun/gi,"6").replace(/jul/gi,"7").replace(/aug/gi,"8").replace(/sep/gi,"9").replace(/oct/gi,"10").replace(/nov/gi,"11").replace(/dec/gi,"12")}handleNicknames(Y){let X=Y.trim().toLowerCase();return X==="@yearly"||X==="@annually"?"0 0 1 1 *":X==="@monthly"?"0 0 1 * *":X==="@weekly"?"0 0 * * 0":X==="@daily"?"0 0 * * *":X==="@hourly"?"0 * * * *":Y}setNthWeekdayOfMonth(Y,X){if(typeof X!="number"&&X==="L")this.dayOfWeek[Y]=this.dayOfWeek[Y]|QI0;else if(X===OG1)this.dayOfWeek[Y]=OG1;else if(X<6&&X>0)this.dayOfWeek[Y]=this.dayOfWeek[Y]|VT6[X-1];else throw TypeError(`CronPattern: nth weekday out of range, should be 1-5 or L. Value: ${X}, Type: ${typeof X}`)}},TT6,Gw,HH=class Y{tz;ms;second;minute;hour;day;month;year;constructor(X,G){if(this.tz=G,X&&X instanceof Date)if(!isNaN(X))this.fromDate(X);else throw TypeError("CronDate: Invalid date passed to CronDate constructor");else if(X===void 0)this.fromDate(new Date);else if(X&&typeof X=="string")this.fromString(X);else if(X instanceof Y)this.fromCronDate(X);else throw TypeError("CronDate: Invalid type ("+typeof X+") passed to CronDate constructor")}isNthWeekdayOfMonth(X,G,Q,J){let $=new Date(Date.UTC(X,G,Q)).getUTCDay(),Z=0;for(let W=1;W<=Q;W++)new Date(Date.UTC(X,G,W)).getUTCDay()===$&&Z++;if(J&OG1&&VT6[Z-1]&J)return!0;if(J&QI0){let W=new Date(Date.UTC(X,G+1,0)).getUTCDate();for(let K=Q+1;K<=W;K++)if(new Date(Date.UTC(X,G,K)).getUTCDay()===$)return!1;return!0}return!1}fromDate(X){if(this.tz!==void 0)if(typeof this.tz=="number")this.ms=X.getUTCMilliseconds(),this.second=X.getUTCSeconds(),this.minute=X.getUTCMinutes()+this.tz,this.hour=X.getUTCHours(),this.day=X.getUTCDate(),this.month=X.getUTCMonth(),this.year=X.getUTCFullYear(),this.apply();else{let G=dJ.toTZ(X,this.tz);this.ms=X.getMilliseconds(),this.second=G.s,this.minute=G.i,this.hour=G.h,this.day=G.d,this.month=G.m-1,this.year=G.y}else this.ms=X.getMilliseconds(),this.second=X.getSeconds(),this.minute=X.getMinutes(),this.hour=X.getHours(),this.day=X.getDate(),this.month=X.getMonth(),this.year=X.getFullYear()}fromCronDate(X){this.tz=X.tz,this.year=X.year,this.month=X.month,this.day=X.day,this.hour=X.hour,this.minute=X.minute,this.second=X.second,this.ms=X.ms}apply(){if(this.month>11||this.day>TT6[this.month]||this.hour>59||this.minute>59||this.second>59||this.hour<0||this.minute<0||this.second<0){let X=new Date(Date.UTC(this.year,this.month,this.day,this.hour,this.minute,this.second,this.ms));return this.ms=X.getUTCMilliseconds(),this.second=X.getUTCSeconds(),this.minute=X.getUTCMinutes(),this.hour=X.getUTCHours(),this.day=X.getUTCDate(),this.month=X.getUTCMonth(),this.year=X.getUTCFullYear(),!0}else return!1}fromString(X){if(typeof this.tz=="number"){let G=dJ.fromTZISO(X);this.ms=G.getUTCMilliseconds(),this.second=G.getUTCSeconds(),this.minute=G.getUTCMinutes(),this.hour=G.getUTCHours(),this.day=G.getUTCDate(),this.month=G.getUTCMonth(),this.year=G.getUTCFullYear(),this.apply()}else return this.fromDate(dJ.fromTZISO(X,this.tz))}findNext(X,G,Q,J){let $=this[G],Z;Q.lastDayOfMonth&&(this.month!==1?Z=TT6[this.month]:Z=new Date(Date.UTC(this.year,this.month+1,0,0,0,0,0)).getUTCDate());let W=!Q.starDOW&&G=="day"?new Date(Date.UTC(this.year,this.month,1,0,0,0,0)).getUTCDay():void 0;for(let K=this[G]+J;K<Q[G].length;K++){let H=Q[G][K];if(G==="day"&&Q.lastDayOfMonth&&K-J==Z&&(H=1),G==="day"&&!Q.starDOW){let U=Q.dayOfWeek[(W+(K-J-1))%7];if(U&&U&OG1)U=this.isNthWeekdayOfMonth(this.year,this.month,K-J,U)?1:0;else if(U)throw Error(`CronDate: Invalid value for dayOfWeek encountered. ${U}`);X.legacyMode&&!Q.starDOM?H=H||U:H=H&&U}if(H)return this[G]=K-J,$!==this[G]?2:1}return 3}recurse(X,G,Q){let J=this.findNext(G,Gw[Q][0],X,Gw[Q][2]);if(J>1){let $=Q+1;for(;$<Gw.length;)this[Gw[$][0]]=-Gw[$][2],$++;if(J===3)return this[Gw[Q][1]]++,this[Gw[Q][0]]=-Gw[Q][2],this.apply(),this.recurse(X,G,0);if(this.apply())return this.recurse(X,G,Q-1)}return Q+=1,Q>=Gw.length?this:this.year>=3000?null:this.recurse(X,G,Q)}increment(X,G,Q){return this.second+=G.interval!==void 0&&G.interval>1&&Q?G.interval:1,this.ms=0,this.apply(),this.recurse(X,G,0)}getDate(X){return X||this.tz===void 0?new Date(this.year,this.month,this.day,this.hour,this.minute,this.second,this.ms):typeof this.tz=="number"?new Date(Date.UTC(this.year,this.month,this.day,this.hour,this.minute-this.tz,this.second,this.ms)):dJ.fromTZ(dJ.tp(this.year,this.month+1,this.day,this.hour,this.minute,this.second,this.tz),!1)}getTime(){return this.getDate(!1).getTime()}},jT6=30000,yj1,Qw=class{name;options;_states;fn;constructor(Y,X,G){let Q,J;if(BG1(X))J=X;else if(typeof X=="object")Q=X;else if(X!==void 0)throw Error("Cron: Invalid argument passed for optionsIn. Should be one of function, or object (options).");if(BG1(G))J=G;else if(typeof G=="object")Q=G;else if(G!==void 0)throw Error("Cron: Invalid argument passed for funcIn. Should be one of function, or object (options).");if(this.name=Q?.name,this.options=sI5(Q),this._states={kill:!1,blocking:!1,previousRun:void 0,currentRun:void 0,once:void 0,currentTimeout:void 0,maxRuns:Q?Q.maxRuns:void 0,paused:Q?Q.paused:!1,pattern:new IT6("* * * * *")},Y&&(Y instanceof Date||typeof Y=="string"&&Y.indexOf(":")>0)?this._states.once=new HH(Y,this.options.timezone||this.options.utcOffset):this._states.pattern=new IT6(Y,this.options.timezone),this.name){if(yj1.find(($)=>$.name===this.name))throw Error("Cron: Tried to initialize new named job '"+this.name+"', but name already taken.");yj1.push(this)}return J!==void 0&&eI5(J)&&(this.fn=J,this.schedule()),this}nextRun(Y){let X=this._next(Y);return X?X.getDate(!1):null}nextRuns(Y,X){this._states.maxRuns!==void 0&&Y>this._states.maxRuns&&(Y=this._states.maxRuns);let G=[],Q=X||this._states.currentRun||void 0;for(;Y--&&(Q=this.nextRun(Q));)G.push(Q);return G}getPattern(){return this._states.pattern?this._states.pattern.pattern:void 0}isRunning(){let Y=this.nextRun(this._states.currentRun),X=!this._states.paused,G=this.fn!==void 0,Q=!this._states.kill;return X&&G&&Q&&Y!==null}isStopped(){return this._states.kill}isBusy(){return this._states.blocking}currentRun(){return this._states.currentRun?this._states.currentRun.getDate():null}previousRun(){return this._states.previousRun?this._states.previousRun.getDate():null}msToNext(Y){let X=this._next(Y);return X?Y instanceof HH||Y instanceof Date?X.getTime()-Y.getTime():X.getTime()-new HH(Y).getTime():null}stop(){this._states.kill=!0,this._states.currentTimeout&&clearTimeout(this._states.currentTimeout);let Y=yj1.indexOf(this);Y>=0&&yj1.splice(Y,1)}pause(){return this._states.paused=!0,!this._states.kill}resume(){return this._states.paused=!1,!this._states.kill}schedule(Y){if(Y&&this.fn)throw Error("Cron: It is not allowed to schedule two functions using the same Croner instance.");Y&&(this.fn=Y);let X=this.msToNext(),G=this.nextRun(this._states.currentRun);return X==null||isNaN(X)||G===null?this:(X>jT6&&(X=jT6),this._states.currentTimeout=setTimeout(()=>this._checkTrigger(G),X),this._states.currentTimeout&&this.options.unref&&YT5(this._states.currentTimeout),this)}async _trigger(Y){if(this._states.blocking=!0,this._states.currentRun=new HH(void 0,this.options.timezone||this.options.utcOffset),this.options.catch)try{this.fn!==void 0&&await this.fn(this,this.options.context)}catch(X){BG1(this.options.catch)&&this.options.catch(X,this)}else this.fn!==void 0&&await this.fn(this,this.options.context);this._states.previousRun=new HH(Y,this.options.timezone||this.options.utcOffset),this._states.blocking=!1}async trigger(){await this._trigger()}runsLeft(){return this._states.maxRuns}_checkTrigger(Y){let X=new Date,G=!this._states.paused&&X.getTime()>=Y.getTime(),Q=this._states.blocking&&this.options.protect;G&&!Q?(this._states.maxRuns!==void 0&&this._states.maxRuns--,this._trigger()):G&&Q&&BG1(this.options.protect)&&setTimeout(()=>this.options.protect(this),0),this.schedule()}_next(Y){let X=!!(Y||this._states.currentRun),G=!1;!Y&&this.options.startAt&&this.options.interval&&([Y,X]=this._calculatePreviousRun(Y,X),G=!Y),Y=new HH(Y,this.options.timezone||this.options.utcOffset),this.options.startAt&&Y&&Y.getTime()<this.options.startAt.getTime()&&(Y=this.options.startAt);let Q=this._states.once||new HH(Y,this.options.timezone||this.options.utcOffset);return!G&&Q!==this._states.once&&(Q=Q.increment(this._states.pattern,this.options,X)),this._states.once&&this._states.once.getTime()<=Y.getTime()||Q===null||this._states.maxRuns!==void 0&&this._states.maxRuns<=0||this._states.kill||this.options.stopAt&&Q.getTime()>=this.options.stopAt.getTime()?null:Q}_calculatePreviousRun(Y,X){let G=new HH(void 0,this.options.timezone||this.options.utcOffset),Q=Y;if(this.options.startAt.getTime()<=G.getTime()){Q=this.options.startAt;let J=Q.getTime()+this.options.interval*1000;for(;J<=G.getTime();)Q=new HH(Q,this.options.timezone||this.options.utcOffset).increment(this._states.pattern,this.options,!0),J=Q.getTime()+this.options.interval*1000;X=!0}return Q===null&&(Q=void 0),[Q,X]}};var zG1=D(()=>{dJ.fromTZISO=(Y,X,G)=>dJ.fromTZ(oI5(Y,X),G);dJ.fromTZ=function(Y,X){let G=new Date(Date.UTC(Y.y,Y.m-1,Y.d,Y.h,Y.i,Y.s)),Q=GI0(Y.tz,G),J=new Date(G.getTime()-Q),$=GI0(Y.tz,J);if($-Q===0)return J;{let Z=new Date(G.getTime()-$),W=GI0(Y.tz,Z);if(W-$===0)return Z;if(!X&&W-$>0)return Z;if(X)throw Error("Invalid date passed to fromTZ()");return J}};dJ.toTZ=function(Y,X){let G=Y.toLocaleString("en-US",{timeZone:X}).replace(/[\u202f]/," "),Q=new Date(G);return{y:Q.getFullYear(),m:Q.getMonth()+1,d:Q.getDate(),h:Q.getHours(),i:Q.getMinutes(),s:Q.getSeconds(),tz:X}};dJ.tp=(Y,X,G,Q,J,$,Z)=>({y:Y,m:X,d:G,h:Q,i:J,s:$,tz:Z});dJ.minitz=dJ;OG1=31|QI0,VT6=[1,2,4,8,16],TT6=[31,28,31,30,31,30,31,31,30,31,30,31],Gw=[["month","year",0],["day","month",-1],["hour","day",0],["minute","hour",0],["second","minute",0]];yj1=[]});class vq{storage;publishJob;now;running=!1;processing=!1;pendingNotify=!1;started=!1;constructor(Y,X,G=()=>new Date){this.storage=Y;this.publishJob=X;this.now=G}async start(){if(this.running=!0,!this.started)await this.recomputeStaleNextRunAt(),this.started=!0}async stop(){this.running=!1}async processNow(){if(!this.running)return;if(this.processing){this.pendingNotify=!0;return}this.processing=!0;try{do this.pendingNotify=!1,await this.processDueTriggers();while(this.pendingNotify)}finally{this.processing=!1}}static computeNextRunAt(Y,X){try{return new Qw(Y,{timezone:"UTC"}).nextRun(X)??null}catch{return null}}static isDue(Y,X,G){try{let Q=new Qw(Y,{timezone:"UTC"});if(!X)return!0;let J=Q.nextRun(new Date(X));return J!=null&&J.getTime()<=G.getTime()}catch{return!1}}async recomputeStaleNextRunAt(){let Y=await this.storage.findAllCronTriggersForRecompute();for(let X of Y){if(!X.cron_expression)continue;let G=X.last_run_at?new Date(X.last_run_at):new Date(X.created_at),Q=vq.computeNextRunAt(X.cron_expression,G);await this.storage.updateNextRunAt(X.id,Q?Q.toISOString():null)}}async processDueTriggers(){try{let Q=await this.storage.failZombieAutomationRuns(XT5);if(Q>0)console.warn(`[AutomationCronWorker] Force-failed ${Q} zombie automation run(s)`)}catch(Q){console.error("[AutomationCronWorker] Zombie run cleanup failed:",Q)}let Y=this.now(),X=20,G=await this.storage.findDueCronTriggers(Y,X);await Promise.allSettled(G.map(({automation:Q,...J})=>this.dispatchTrigger(J,{triggerId:J.id,automationId:Q.id,organizationId:Q.organization_id})))}async dispatchTrigger(Y,X){let G=this.now();if(await this.storage.updateTriggerLastRunAt(Y.id,G.toISOString()),Y.cron_expression){let Q=vq.computeNextRunAt(Y.cron_expression,G);await this.storage.updateNextRunAt(Y.id,Q?Q.toISOString():null)}await this.publishJob(X)}}var XT5=600000;var JI0=D(()=>{zG1()});var ZI0;var MT6=D(()=>{JI0();zG1();H0();b0();NG1();ZI0=l1({name:"AUTOMATION_TRIGGER_ADD",description:"Add a cron or event-based trigger to an automation.",annotations:{title:"Add Trigger",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!1},inputSchema:F.object({automation_id:F.string(),type:F.enum(["cron","event"]),cron_expression:F.string().optional(),connection_id:F.string().optional(),event_type:F.string().optional(),params:F.record(F.string(),F.string()).optional()}),outputSchema:F.object({id:F.string(),automation_id:F.string(),type:F.enum(["cron","event"]),created_at:F.string()}),handler:async(Y,X)=>{U0(X);let G=s1(X);if(await X.access.check(),!await X.storage.automations.findById(Y.automation_id,G.id))throw Error("Automation not found");if(Y.type==="cron"){if(!Y.cron_expression)throw Error("cron_expression is required for cron triggers");let Z=new Qw(Y.cron_expression,{timezone:"UTC"}),W=Z.nextRuns(2);if(W.length>=2&&W[1].getTime()-W[0].getTime()<60000)throw Error("Cron interval must be at least 60 seconds between runs");if(!Z.nextRun())throw Error("Cron expression has no future runs")}if(Y.type==="event"){if(!Y.connection_id)throw Error("connection_id is required for event triggers");if(!Y.event_type)throw Error("event_type is required for event triggers");if(!await X.storage.connections.findById(Y.connection_id,G.id))throw Error("Connection not found");let W={id:"",automation_id:Y.automation_id,type:"event",cron_expression:null,connection_id:Y.connection_id,event_type:Y.event_type,params:Y.params?JSON.stringify(Y.params):null,last_run_at:null,next_run_at:null,created_at:""},K=await Cq(X,W,!0,X.storage.triggerCallbackTokens);if(!K.success)throw Error(`Failed to configure trigger on connection: ${K.error}`)}let J=Y.type==="cron"&&Y.cron_expression?vq.computeNextRunAt(Y.cron_expression,new Date):null,$=await X.storage.automations.addTrigger({automation_id:Y.automation_id,type:Y.type,cron_expression:Y.type==="cron"?Y.cron_expression:null,connection_id:Y.type==="event"?Y.connection_id:null,event_type:Y.type==="event"?Y.event_type:null,params:Y.params?JSON.stringify(Y.params):null,next_run_at:J?.toISOString()??null});return{id:$.id,automation_id:$.automation_id,type:$.type,created_at:$.created_at}}})});var $I0;var RT6=D(()=>{H0();b0();NG1();$I0=l1({name:"AUTOMATION_TRIGGER_REMOVE",description:"Remove a trigger from an automation. Disables associated event listeners on MCPs.",annotations:{title:"Remove Trigger",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!1},inputSchema:F.object({trigger_id:F.string()}),outputSchema:F.object({success:F.boolean()}),handler:async(Y,X)=>{U0(X);let G=s1(X);await X.access.check();let Q=await X.storage.automations.findTriggerById(Y.trigger_id);if(!Q)throw Error("Trigger not found");if(!await X.storage.automations.findById(Q.automation_id,G.id))throw Error("Automation not found");if(Q.type==="event"){let Z=await Cq(X,Q,!1,X.storage.triggerCallbackTokens);if(!Z.success)console.warn(`Failed to disable trigger ${Q.id}: ${Z.error}`)}let{success:$}=await X.storage.automations.removeTrigger(Q.id,Q.automation_id);return{success:$}}})});var WI0;var ST6=D(()=>{H0();NX();b0();WI0=l1({name:"AUTOMATION_RUN",description:"Manually trigger an automation run. Bypasses configured triggers.",annotations:{title:"Run Automation",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!1},inputSchema:F.object({id:F.string()}),outputSchema:F.object({threadId:F.string().optional(),error:F.string().optional(),skipped:F.string().optional()}),handler:async(Y,X)=>{U0(X);let G=s1(X);if(await X.access.check(),!X.automationRunner)throw Error("Automation runner not available");let Q=L6(X);if(!Q)throw Error("User ID not available");let J=await X.automationRunner(Y.id,G.id,Q);if(q6.capture({distinctId:Q,event:"automation_run",groups:{organization:G.id},properties:{organization_id:G.id,automation_id:Y.id,thread_id:"taskId"in J?J.taskId:void 0,status:"skipped"in J?"skipped":("error"in J)?"error":"started",skip_reason:"skipped"in J?J.skipped:void 0,error_message:"error"in J?J.error:void 0}}),"skipped"in J)return{skipped:J.skipped};if("error"in J)return{threadId:J.taskId,error:J.error};return{threadId:J.taskId}}})});var kT6=D(()=>{zT6();DT6();wT6();qT6();AT6();MT6();RT6();ST6()});var QT5,JT5,KI0;var CT6=D(()=>{H0();b0();QT5=F.object({id:F.string().min(1)}),JT5=F.object({user:F.object({id:F.string(),name:F.string(),email:F.string(),image:F.string().nullable()}).nullable()}),KI0=l1({name:"USER_GET",description:"Get a user's profile by ID. Only returns users who share an organization with the caller.",annotations:{title:"Get User",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:QT5,outputSchema:JT5,handler:async(Y,X)=>{await X.access.check(),U0(X);let G=L6(X);if(!G)throw Error("Authentication required");let Q=await X.storage.users.findById(Y.id,G);if(!Q)return{user:null};return{user:{id:Q.id,name:Q.name,email:Q.email,image:Q.image??null}}}})});var vT6=D(()=>{CT6()});var HI0;var _T6=D(()=>{H0();b0();CD();HI0=l1({name:"AI_PROVIDERS_LIST",description:"List all supported AI providers and their connection methods (API key, OAuth).",annotations:{readOnlyHint:!0,idempotentHint:!0},inputSchema:p0.object({}),outputSchema:p0.object({providers:p0.array(p0.object({id:p0.string(),name:p0.string(),description:p0.string(),logo:p0.string().optional(),supportedMethods:p0.array(p0.enum(["api-key","oauth-pkce","cli-activate"])),supportsTopUp:p0.boolean().optional(),supportsCredits:p0.boolean().optional(),supportsProvision:p0.boolean().optional()}))}),handler:async(Y,X)=>{return U0(X),s1(X),await X.access.check(),{providers:Object.values(xQ()).filter((Q)=>!!Q).map((Q)=>({...Q.info,supportedMethods:Q.supportedMethods,supportsTopUp:!!Q.getTopUpUrl,supportsCredits:!!Q.getCreditsBalance,supportsProvision:!!Q.provisionKey}))}}})});function $T5(Y){if(!Y)return;if(!("models"in Y))return;return Y.models??void 0}function fT6(Y,X){if(!Y)return!0;if(Y.includes("*:*"))return!0;return Y.some((G)=>G.startsWith(`${X}:`))}function _q(Y,X,G){if(!Y)return!0;return Y.includes("*:*")||Y.includes(`${X}:*`)||Y.includes(`${X}:${G}`)}function bT6(Y){if(!Y)return{allowAll:!0,models:{}};if(Y.includes("*:*"))return{allowAll:!0,models:{}};let X={};for(let G of Y){let Q=G.indexOf(":");if(Q===-1)continue;let J=G.slice(0,Q),$=G.slice(Q+1);if(!X[J])X[J]=[];X[J].push($)}return{allowAll:!1,models:X}}async function UU(Y,X,G){if(!G||mn.includes(G))return;let Q=await Y.selectFrom("organizationRole").select(["permission"]).where("organizationId","=",X).where("role","=",G).executeTakeFirst();if(!Q?.permission)return;try{let J=JSON.parse(Q.permission);return $T5(J)}catch{return console.error(`[model-permissions] Failed to parse permissions for role: ${G}`),[]}}var DG1=D(()=>{CY1()});var FI0;var yT6=D(()=>{H0();b0();DG1();vq1();gq1();FI0=l1({name:"AI_PROVIDERS_LIST_MODELS",description:"List models available from an AI provider. Requires a valid stored API key.",annotations:{readOnlyHint:!0,idempotentHint:!0},inputSchema:p0.object({keyId:p0.string().describe("The provider key ID to use")}),outputSchema:p0.object({models:p0.array(p0.object({providerId:p0.string(),modelId:p0.string(),title:p0.string(),description:p0.string().nullish(),logo:p0.string().nullish(),capabilities:p0.array(p0.string()),limits:p0.object({contextWindow:p0.coerce.number(),maxOutputTokens:p0.coerce.number().nullable()}).nullish(),costs:p0.object({input:p0.coerce.number(),output:p0.coerce.number()}).nullish()}))}),handler:async(Y,X)=>{U0(X);let G=s1(X);await X.access.check();let Q=await X.storage.aiProviderKeys.findById(Y.keyId,G.id).catch(()=>null);if(Q?.providerId==="claude-code")return{models:aF0};if(Q?.providerId==="codex")return{models:NU0};let J=await UU(X.db,G.id,X.auth.user?.role);return{models:(await X.aiProviders.listModels(Y.keyId,G.id)).filter((W)=>_q(J,Y.keyId,W.modelId))}}})});var UI0;var hT6=D(()=>{H0();b0();CD();UI0=l1({name:"AI_PROVIDERS_ACTIVE",description:"List AI providers that have at least one API key configured and ready to use.",inputSchema:p0.object({}),outputSchema:p0.object({providers:p0.array(p0.object({id:p0.string(),name:p0.string(),description:p0.string(),logo:p0.string().optional(),keyCount:p0.number()}))}),handler:async(Y,X)=>{U0(X);let G=s1(X);await X.access.check();let Q=await X.storage.aiProviderKeys.list({organizationId:G.id}),J=new Map;for(let Z of Q)J.set(Z.providerId,(J.get(Z.providerId)??0)+1);return{providers:[...J.entries()].flatMap(([Z,W])=>{let H=xQ()[Z];if(!H)return console.warn(`AI provider "${Z}" has stored keys but is not in the registry; skipping.`),[];return[{...H.info,keyCount:W}]})}}})});var fq=D(()=>{x5()});var wG1,NI0;var hj1=D(()=>{H0();NX();b0();fq();wG1=p0.object({id:p0.string(),providerId:p0.string(),label:p0.string(),presetId:p0.string().nullable(),createdAt:p0.string()}),NI0=l1({name:"AI_PROVIDER_KEY_CREATE",description:"Store an API key for an AI provider. The key is encrypted at rest in the vault.",inputSchema:p0.object({providerId:p0.enum($Q),label:p0.string().min(1).max(100),apiKey:p0.string().min(1),presetId:p0.string().min(1).max(64).optional()}),outputSchema:wG1,handler:async(Y,X)=>{U0(X);let G=s1(X);await X.access.check();let Q=await X.storage.aiProviderKeys.create({providerId:Y.providerId,label:Y.label,apiKey:Y.apiKey,organizationId:G.id,createdBy:X.auth.user.id,presetId:Y.presetId??null});return q6.capture({distinctId:X.auth.user.id,event:"ai_provider_key_created",groups:{organization:G.id},properties:{organization_id:G.id,provider_id:Q.providerId,preset_id:Q.presetId,key_id:Q.id,label:Q.label}}),{id:Q.id,providerId:Q.providerId,label:Q.label,presetId:Q.presetId,createdAt:Q.createdAt}}})});var LG1=(Y,X)=>Y&&Y.keyId===X?null:Y,WT5=(Y,X)=>{let G={enabled:Y.enabled,chat:{fast:LG1(Y.chat.fast,X),smart:LG1(Y.chat.smart,X),thinking:LG1(Y.chat.thinking,X)},image:LG1(Y.image,X),webResearch:LG1(Y.webResearch,X)},Q=G.chat.fast!==Y.chat.fast||G.chat.smart!==Y.chat.smart||G.chat.thinking!==Y.chat.thinking||G.image!==Y.image||G.webResearch!==Y.webResearch;return{config:G,changed:Q}},BI0;var xT6=D(()=>{H0();NX();b0();BI0=l1({name:"AI_PROVIDER_KEY_DELETE",description:"Delete a stored AI provider API key. Cannot be undone.",inputSchema:p0.object({keyId:p0.string().describe("The provider key ID to delete")}),outputSchema:p0.object({success:p0.boolean()}),handler:async(Y,X)=>{U0(X);let G=s1(X);await X.access.check(),await X.storage.aiProviderKeys.delete(Y.keyId,G.id);let Q=await X.storage.organizationSettings.get(G.id);if(Q?.simple_mode){let{config:J,changed:$}=WT5(Q.simple_mode,Y.keyId);if($)await X.storage.organizationSettings.upsert(G.id,{simple_mode:J})}return q6.capture({distinctId:X.auth.user.id,event:"ai_provider_key_deleted",groups:{organization:G.id},properties:{organization_id:G.id,key_id:Y.keyId}}),{success:!0}}})});var OI0;var gT6=D(()=>{H0();b0();fq();DG1();OI0=l1({name:"AI_PROVIDER_KEY_LIST",description:"List stored AI provider API keys. Returns metadata only \u2014 secrets are never exposed.",annotations:{readOnlyHint:!0,idempotentHint:!0},inputSchema:p0.object({providerId:p0.enum($Q).optional()}),outputSchema:p0.object({keys:p0.array(p0.object({id:p0.string(),providerId:p0.string(),label:p0.string(),presetId:p0.string().nullable(),createdBy:p0.string(),createdAt:p0.string()}))}),handler:async(Y,X)=>{U0(X);let G=s1(X);await X.access.check();let[Q,J]=await Promise.all([X.storage.aiProviderKeys.list({organizationId:G.id,providerId:Y.providerId}),UU(X.db,G.id,X.auth.user?.role)]);return{keys:Q.filter((W)=>fT6(J,W.id)).map(({organizationId:W,...K})=>K)}}})});import{createHash as KT5,randomBytes as HT5}from"crypto";function uT6(){return HT5(32).toString("base64url")}function lT6(Y){return KT5("sha256").update(Y).digest("base64url")}var mT6=()=>{};var zI0;var dT6=D(()=>{H0();b0();fq();CD();mT6();YY();zI0=l1({name:"AI_PROVIDER_OAUTH_URL",description:"Get the OAuth PKCE authorization URL for a provider. Returns URL and state token.",inputSchema:p0.object({providerId:p0.enum($Q),callbackUrl:p0.string().url().refine((Y)=>{let X=S4(),G=X.baseUrl??`http://localhost:${X.port}`;return new URL(Y).origin===new URL(G).origin},{message:"callbackUrl must be on the same origin as BASE_URL"})}),outputSchema:p0.object({url:p0.string(),stateToken:p0.string().describe("Opaque token \u2014 pass to AI_PROVIDER_OAUTH_EXCHANGE")}),handler:async(Y,X)=>{U0(X);let G=s1(X);await X.access.check();let Q=xQ()[Y.providerId];if(!Q)throw Error(`Unknown provider: ${Y.providerId}`);if(!Q.supportedMethods.includes("oauth-pkce")||!Q.getOAuthUrl)throw Error(`Provider ${Y.providerId} does not support OAuth PKCE`);let J=uT6(),$=lT6(J),Z=await X.storage.oauthPkceStates.create(J,G.id,X.auth.user.id),W=new URL(Y.callbackUrl);W.searchParams.set("state",Z);let K={callbackUrl:W.toString(),codeChallenge:$,codeChallengeMethod:"S256",organizationId:G.id};return{url:Q.getOAuthUrl(K),stateToken:Z}}})});var DI0;var cT6=D(()=>{H0();b0();fq();CD();hj1();DI0=l1({name:"AI_PROVIDER_OAUTH_EXCHANGE",description:"Exchange an OAuth authorization code for an API key. Completes the OAuth flow started by AI_PROVIDER_OAUTH_URL.",inputSchema:p0.object({providerId:p0.enum($Q),code:p0.string(),stateToken:p0.string().describe("The stateToken returned by AI_PROVIDER_OAUTH_URL"),label:p0.string().min(1).max(100).default("Connected via OAuth")}),outputSchema:wG1,handler:async(Y,X)=>{U0(X);let G=s1(X);await X.access.check();let Q=xQ()[Y.providerId];if(!Q)throw Error(`Unknown provider: ${Y.providerId}`);if(!Q.supportedMethods.includes("oauth-pkce")||!Q.exchangeOAuthCode)throw Error(`Provider ${Y.providerId} does not support OAuth PKCE`);let J=L6(X);if(!J)throw Error("Unable to determine user ID");let $=await X.storage.oauthPkceStates.consume(Y.stateToken,G.id,J),{apiKey:Z}=await Q.exchangeOAuthCode({code:Y.code,codeVerifier:$,codeChallengeMethod:"S256"}),W=await X.storage.aiProviderKeys.upsert({providerId:Y.providerId,label:Y.label,apiKey:Z,organizationId:G.id,createdBy:J});return{id:W.id,providerId:W.providerId,label:W.label,presetId:W.presetId,createdAt:W.createdAt}}})});var wI0;var iT6=D(()=>{H0();b0();fq();CD();Sj();hj1();wI0=l1({name:"AI_PROVIDER_PROVISION_KEY",description:"Auto-provision an API key for a provider that supports server-to-server key creation (e.g. Deco AI Gateway).",inputSchema:p0.object({providerId:p0.enum($Q)}),outputSchema:wG1,handler:async(Y,X)=>{U0(X);let G=s1(X);await X.access.check();let Q=L6(X);if(!Q)throw Error("Unable to determine user ID");let J=xQ()[Y.providerId];if(!J)throw Error(`Unknown provider: ${Y.providerId}`);if(!J.provisionKey)throw Error(`Provider ${Y.providerId} does not support key provisioning`);let $=await aE(Q),Z=await J.provisionKey($,G.id),W=await X.storage.aiProviderKeys.upsert({providerId:Y.providerId,label:"Auto-provisioned",apiKey:Z,organizationId:G.id,createdBy:Q});return{id:W.id,providerId:W.providerId,label:W.label,presetId:W.presetId,createdAt:W.createdAt}}})});var LI0;var pT6=D(()=>{H0();b0();fq();CD();Sj();LI0=l1({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:p0.object({providerId:p0.enum($Q),amountCents:p0.number().int().positive().describe("Amount in cents (e.g. 1000 = $10.00)"),currency:p0.enum(["usd","brl"]).default("usd")}),outputSchema:p0.object({url:p0.string().describe("Checkout URL \u2014 open in browser to complete payment")}),handler:async(Y,X)=>{U0(X);let G=s1(X);await X.access.check();let Q=L6(X);if(!Q)throw Error("Unable to determine user ID");let J=xQ()[Y.providerId];if(!J)throw Error(`Unknown provider: ${Y.providerId}`);if(!J.getTopUpUrl)throw Error(`Provider ${Y.providerId} does not support credit top-ups`);let $=await aE(Q);return{url:await J.getTopUpUrl($,G.id,Y.amountCents,Y.currency)}}})});var EI0;var nT6=D(()=>{H0();b0();fq();CD();Sj();EI0=l1({name:"AI_PROVIDER_CREDITS",description:"Get the current credit balance for a provider (providers that support it, e.g. Deco AI Gateway)",inputSchema:p0.object({providerId:p0.enum($Q)}),outputSchema:p0.object({balanceCents:p0.number().describe("Remaining balance in cents (e.g. 1000 = $10.00)")}),handler:async(Y,X)=>{U0(X);let G=s1(X);await X.access.check();let Q=L6(X);if(!Q)throw Error("Unable to determine user ID");let J=xQ()[Y.providerId];if(!J)throw Error(`Unknown provider: ${Y.providerId}`);if(!J.getCreditsBalance)throw Error(`Provider ${Y.providerId} does not expose a credits balance`);let $=await aE(Q);return J.getCreditsBalance($,G.id)}})});import{query as FT5}from"@anthropic-ai/claude-agent-sdk";async function UT5(){try{let Y=FT5({prompt:"",options:{maxTurns:1}}),X=await Y.accountInfo();if(Y.return(void 0),!X.email)return{activated:!1,error:"Claude Code is not authenticated. Run: claude auth login"};return{activated:!0,email:X.email}}catch{return{activated:!1,error:"Claude Code is not available. Install from https://docs.anthropic.com/en/docs/claude-code/overview"}}}async function NT5(){try{let Y=Bun.spawn(["codex","--version"],{stdout:"pipe",stderr:"pipe"}),X=setTimeout(()=>Y.kill(),1e4),G=await Y.exited;if(clearTimeout(X),G!==0)return{activated:!1,error:"Codex CLI is not available. Install with: npm install -g @openai/codex"}}catch{return{activated:!1,error:"Codex CLI is not available. Install with: npm install -g @openai/codex"}}return{activated:!0}}var PI0;var aT6=D(()=>{H0();b0();PI0=l1({name:"AI_PROVIDER_CLI_ACTIVATE",description:"Check if a CLI-based AI provider (Claude Code or Codex) is installed and authenticated, then activate it.",inputSchema:p0.object({providerId:p0.enum(["claude-code","codex"]).default("claude-code").describe("Which CLI provider to activate")}),outputSchema:p0.object({activated:p0.boolean(),email:p0.string().optional(),error:p0.string().optional()}),handler:async(Y,X)=>{U0(X);let G=s1(X);await X.access.check();let Q=Y.providerId==="codex"?await NT5():await UT5();if(!Q.activated)return Q;return await X.storage.aiProviderKeys.upsert({providerId:Y.providerId,label:Y.providerId==="codex"?"Codex CLI":"Claude CLI",apiKey:"cli-local",organizationId:G.id,createdBy:X.auth.user.id}),Q}})});var rT6=D(()=>{_T6();yT6();hT6();hj1();xT6();gT6();dT6();cT6();iT6();pT6();nT6();aT6()});var tT6,oT6;var sT6=D(()=>{tT6=[{name:"agents-create",title:"Create Agents",description:"Build a new agent for a specific role or workflow.",text:`# Create agent
|
|
1911
1911
|
|
|
1912
1912
|
Goal: create a new agent that has a clear role, the correct connections, and instructions that are specific enough to be reliable.
|
|
1913
1913
|
|