@decocms/mesh 2.65.0 → 2.65.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.
Files changed (136) hide show
  1. package/dist/client/assets/{AlertCircle-BLu8Aodi.js → AlertCircle-Sq0aBvsC.js} +1 -1
  2. package/dist/client/assets/{ArrowUp-TSXJSHlb.js → ArrowUp-CvxgIRrE.js} +1 -1
  3. package/dist/client/assets/{Calendar-B_PCwOFB.js → Calendar-DS_6zH5D.js} +1 -1
  4. package/dist/client/assets/{Check-TVVdApmr.js → Check-DNCI8C1c.js} +1 -1
  5. package/dist/client/assets/{CheckCircle-BZgpD8UD.js → CheckCircle-COsIOW0_.js} +1 -1
  6. package/dist/client/assets/{ChevronDown-DQimov-w.js → ChevronDown-CmDSkkyU.js} +1 -1
  7. package/dist/client/assets/{ChevronRight-C1wmaJaY.js → ChevronRight-Cme_aOxM.js} +1 -1
  8. package/dist/client/assets/{Code01-C-_CZ4Yt.js → Code01-DlwIBx5j.js} +1 -1
  9. package/dist/client/assets/{Copy01-CsYLZnEs.js → Copy01-CX9SC5FE.js} +1 -1
  10. package/dist/client/assets/{DotsHorizontal-DoBmdgcU.js → DotsHorizontal-Dz0bRPai.js} +1 -1
  11. package/dist/client/assets/{DotsVertical-BmpdBChT.js → DotsVertical-CC8faZfe.js} +1 -1
  12. package/dist/client/assets/{Download01-dA91PaJn.js → Download01-Cj1VuArg.js} +1 -1
  13. package/dist/client/assets/{Edit01-Cax2qmzX.js → Edit01-C8mqwImV.js} +1 -1
  14. package/dist/client/assets/{File02-SOxsIjUX.js → File02-3scwR97O.js} +1 -1
  15. package/dist/client/assets/{File06-CJnXWkSw.js → File06-BmoKv1ZA.js} +1 -1
  16. package/dist/client/assets/{FilterLines-BciMLF4N.js → FilterLines-BcuJXQ3t.js} +1 -1
  17. package/dist/client/assets/{Globe02-CZ780J53.js → Globe02-BQTpYCGK.js} +1 -1
  18. package/dist/client/assets/{Grid01-CDiu9G8k.js → Grid01-CH_80p-4.js} +1 -1
  19. package/dist/client/assets/{Home02-CayMHoZF.js → Home02-KQaRNwL3.js} +1 -1
  20. package/dist/client/assets/{Image01-eW3uiaQL.js → Image01-qkpxD1yj.js} +1 -1
  21. package/dist/client/assets/{Inbox01-CVff9P-h.js → Inbox01-mn1giWLi.js} +1 -1
  22. package/dist/client/assets/{InfoCircle-Cwf7A7aM.js → InfoCircle-jWdDj_pa.js} +1 -1
  23. package/dist/client/assets/{LinkExternal01-BjOSGZOe.js → LinkExternal01-BJcBkMgt.js} +1 -1
  24. package/dist/client/assets/{List-Blxn6IBl.js → List-BWbZDQVx.js} +1 -1
  25. package/dist/client/assets/{Loading01-CatM6JDa.js → Loading01-DuNH8QVR.js} +1 -1
  26. package/dist/client/assets/{Lock01-CrPQKqta.js → Lock01-CCyf9a9X.js} +1 -1
  27. package/dist/client/assets/{Pin01-D3LZgLE8.js → Pin01-CU7bB1L8.js} +1 -1
  28. package/dist/client/assets/{Play-BA6_L1fM.js → Play-CrBwr4cr.js} +1 -1
  29. package/dist/client/assets/{Plus-LdanziaX.js → Plus-ZDIS0vbh.js} +1 -1
  30. package/dist/client/assets/{SearchMd-CDLQipSw.js → SearchMd-6GhPnBK1.js} +1 -1
  31. package/dist/client/assets/{Share07-DPsUpckx.js → Share07-BDsQfZYE.js} +1 -1
  32. package/dist/client/assets/{Terminal-C0IzqPpG.js → Terminal-Bx4QINJq.js} +1 -1
  33. package/dist/client/assets/{Tool01-BUbXFy6J.js → Tool01-DoELZ-Fj.js} +1 -1
  34. package/dist/client/assets/{Trash01-Du6SwTAz.js → Trash01-DGR7JKVH.js} +1 -1
  35. package/dist/client/assets/{Upload01-CgP92uxk.js → Upload01-C08PhgQO.js} +1 -1
  36. package/dist/client/assets/{Users03-CsLBIBVK.js → Users03-C-DkXcQ6.js} +1 -1
  37. package/dist/client/assets/{X-D7ML9mux.js → X-Cw8dXC6B.js} +1 -1
  38. package/dist/client/assets/{XClose-U1yU7qCl.js → XClose-BOKH0Ji3.js} +1 -1
  39. package/dist/client/assets/{agent-connections-preview-CsYvxmEm.js → agent-connections-preview-C1QLXOEH.js} +1 -1
  40. package/dist/client/assets/{agent-detail-wkiWbQKN.js → agent-detail-Jt4PhiY7.js} +1 -1
  41. package/dist/client/assets/{agents-kNb1WD8x.js → agents-Br3GzWPS.js} +1 -1
  42. package/dist/client/assets/{alert-dialog-DZBrJq-m.js → alert-dialog-Bt2DNs-q.js} +1 -1
  43. package/dist/client/assets/{auth-catchall-BEy8E7j_.js → auth-catchall-C-ZsonS7.js} +1 -1
  44. package/dist/client/assets/{badge-Cw5-hSpe.js → badge-DsLVLnaN.js} +1 -1
  45. package/dist/client/assets/{binder-ClDDqAqe.js → binder-AghfMQli.js} +1 -1
  46. package/dist/client/assets/{breadcrumb-Caj5YR93.js → breadcrumb-k6_ciPji.js} +1 -1
  47. package/dist/client/assets/{button-BgBCyPX0.js → button-C2Npiaxw.js} +1 -1
  48. package/dist/client/assets/{card-DElUPHrE.js → card-CuSLw2Wn.js} +1 -1
  49. package/dist/client/assets/{checkbox-C3ba2fF0.js → checkbox-CeETLr6E.js} +1 -1
  50. package/dist/client/assets/{circle-alert-C2UMYCQm.js → circle-alert-Bwtfy9KA.js} +1 -1
  51. package/dist/client/assets/{collapsible-Rf1qFjgA.js → collapsible-kdbIagB_.js} +1 -1
  52. package/dist/client/assets/{collection-detail-D7X5ych8.js → collection-detail-BioqVjvv.js} +1 -1
  53. package/dist/client/assets/{collection-search-DuFKyqlJ.js → collection-search-BT1Haqdl.js} +1 -1
  54. package/dist/client/assets/{collection-tab-BiZnyYe2.js → collection-tab-CadD9eyl.js} +1 -1
  55. package/dist/client/assets/{collection-table-wrapper-Cd3HlK0O.js → collection-table-wrapper-BlVqD0Fp.js} +1 -1
  56. package/dist/client/assets/{collection-tabs-Dh1QsIBU.js → collection-tabs-D8pHKDB9.js} +1 -1
  57. package/dist/client/assets/{command-Di7AyqP9.js → command-Dzjf2dKr.js} +1 -1
  58. package/dist/client/assets/{connect-D9Hcd45W.js → connect-BulmDFHR.js} +1 -1
  59. package/dist/client/assets/{connection-card-bCbaOHws.js → connection-card-_pmn_9ur.js} +1 -1
  60. package/dist/client/assets/{connection-detail-CZ9gXvAv.js → connection-detail-DtAXMJt7.js} +1 -1
  61. package/dist/client/assets/{connections-DIaziwAv.js → connections-Cgg4Ehdx.js} +1 -1
  62. package/dist/client/assets/constants-BLEeM90x.js +1 -0
  63. package/dist/client/assets/{constants-BfWMVBcn.js → constants-CiJIPOcv.js} +1 -1
  64. package/dist/client/assets/{create-organization-dialog-WF7bdDSH.js → create-organization-dialog-CUyzVLEt.js} +1 -1
  65. package/dist/client/assets/{dialog-Bnus_vJ4.js → dialog-ByiIrjjH.js} +1 -1
  66. package/dist/client/assets/{dropdown-menu-BdLRctPP.js → dropdown-menu-BXLews1x.js} +1 -1
  67. package/dist/client/assets/{dynamic-plugin-layout-C4Hm0K_j.js → dynamic-plugin-layout-CQpxZjNJ.js} +1 -1
  68. package/dist/client/assets/{empty-state-BHEu_dw7.js → empty-state-BhLPGCFf.js} +1 -1
  69. package/dist/client/assets/{empty-state-IVJXfQvW.js → empty-state-DCefUqf-.js} +1 -1
  70. package/dist/client/assets/{env-vars-editor-BQGzh8xm.js → env-vars-editor-CyRZUIFU.js} +1 -1
  71. package/dist/client/assets/{error-boundary-Cqs9yFyH.js → error-boundary-CZlFheRY.js} +1 -1
  72. package/dist/client/assets/{extract-connection-data-BttJNYGh.js → extract-connection-data-DQkYWC-q.js} +1 -1
  73. package/dist/client/assets/{file-browser-D9rjJxeo.js → file-browser-bPGGZg11.js} +2 -2
  74. package/dist/client/assets/{form-gT1yr3Qo.js → form-CJsO1IWr.js} +1 -1
  75. package/dist/client/assets/{grid-view-B3IbROP2.js → grid-view-CQCNSuKd.js} +1 -1
  76. package/dist/client/assets/{home-DDpJgZ3V.js → home-B_4GnWnZ.js} +1 -1
  77. package/dist/client/assets/{index-DtEKIwl5.js → index-9jleOnNn.js} +1 -1
  78. package/dist/client/assets/{index-CrhNqpPK.js → index-Cm3M40mu.js} +1 -1
  79. package/dist/client/assets/{index-Cfcn3j8H.js → index-CuLYtmwa.js} +1 -1
  80. package/dist/client/assets/{index-VemZ02DZ.js → index-DR06FVTS.js} +1 -1
  81. package/dist/client/assets/{index-CZuZisdm.js → index-DaLWui-m.js} +1 -1
  82. package/dist/client/assets/{index--WoOZV8D.js → index-EJkHYsSC.js} +1 -1
  83. package/dist/client/assets/{index-ByQ-WW1t.js → index-S9nBXez3.js} +3 -3
  84. package/dist/client/assets/{index-CzUXuhMT.js → index-ymK78sXU.js} +1 -1
  85. package/dist/client/assets/{infiniteQueryObserver-BYaSWja-.js → infiniteQueryObserver-Bk6kPCGD.js} +1 -1
  86. package/dist/client/assets/{input-CZnIHLcz.js → input-WEkqgPCx.js} +1 -1
  87. package/dist/client/assets/{layout-cMYqFuJn.js → layout-DhWpZyaF.js} +1 -1
  88. package/dist/client/assets/{localstorage-keys-CmNyjwKR.js → localstorage-keys-1daarnfj.js} +1 -1
  89. package/dist/client/assets/{login-XOYvZmH2.js → login-C6Z0Hf-G.js} +1 -1
  90. package/dist/client/assets/{mcp-oauth-Cb_Gab-K.js → mcp-oauth-BeGVYXYi.js} +1 -1
  91. package/dist/client/assets/{mcp-server-card-uMBYGp_W.js → mcp-server-card-TH49CKyg.js} +1 -1
  92. package/dist/client/assets/{mcp-server-detail-aBjEsXJ_.js → mcp-server-detail-B5lwLhNL.js} +2 -2
  93. package/dist/client/assets/members-CGC1M2Fl.js +3 -0
  94. package/dist/client/assets/{monaco-editor-BKGJwQX8.js → monaco-editor-D62uyIRE.js} +1 -1
  95. package/dist/client/assets/{monitoring-CTVn2xIM.js → monitoring-C8lQE18O.js} +1 -1
  96. package/dist/client/assets/{oauth-callback-BK14KwlT.js → oauth-callback-BRmmw_vE.js} +1 -1
  97. package/dist/client/assets/{page-BRoCqKJJ.js → page-C11n8gYY.js} +1 -1
  98. package/dist/client/assets/{page-C_q1Hu0d.js → page-C6Z5AAxa.js} +1 -1
  99. package/dist/client/assets/{plugin-empty-state-DFlDiIxl.js → plugin-empty-state-CiNAFBPt.js} +1 -1
  100. package/dist/client/assets/{plugin-header-CBL4cwNA.js → plugin-header-Cs7vmVyn.js} +1 -1
  101. package/dist/client/assets/{plugins-CZKUVOCn.js → plugins-DxTFEvsx.js} +1 -1
  102. package/dist/client/assets/{popover-5IvuXkII.js → popover-DyvWBt1E.js} +1 -1
  103. package/dist/client/assets/{registry-utils-BhwI9Zxs.js → registry-utils-RKHarYmu.js} +1 -1
  104. package/dist/client/assets/{resizable-BwJPsyFO.js → resizable-DqIEdFEF.js} +1 -1
  105. package/dist/client/assets/{select-CTRzFFUx.js → select-DP5Dfkvv.js} +1 -1
  106. package/dist/client/assets/{settings-BexesTWb.js → settings-DW3RHdzH.js} +1 -1
  107. package/dist/client/assets/{shell-layout-B1C9fUMW.js → shell-layout-DVjDk4PE.js} +1 -1
  108. package/dist/client/assets/{spinner-DOOIz_y9.js → spinner-CAgETmH3.js} +1 -1
  109. package/dist/client/assets/{store-invite-Ba7ZRzca.js → store-invite-DfU-qVkO.js} +1 -1
  110. package/dist/client/assets/{switch-_3WnqN5a.js → switch-D7U_Vekt.js} +1 -1
  111. package/dist/client/assets/{table-DpIrnboJ.js → table-20ccyhvp.js} +1 -1
  112. package/dist/client/assets/{textarea-DGIzduMJ.js → textarea-D3xU8GPb.js} +1 -1
  113. package/dist/client/assets/{tools-list-BAYACY-u.js → tools-list-DTW_RJ6B.js} +1 -1
  114. package/dist/client/assets/{typewriter-title-BUxC2Fu_.js → typewriter-title-BZWOVDcY.js} +1 -1
  115. package/dist/client/assets/{use-binding-DULZGaaF.js → use-binding-OJZZKHfM.js} +1 -1
  116. package/dist/client/assets/{use-connection-BKNC3gBB.js → use-connection-DsOrNBOn.js} +1 -1
  117. package/dist/client/assets/{use-create-virtual-mcp-D3Pg2rlz.js → use-create-virtual-mcp-BJbJkcpt.js} +1 -1
  118. package/dist/client/assets/{use-deco-chat-open-DiV8AU-5.js → use-deco-chat-open-BWq3TCrl.js} +1 -1
  119. package/dist/client/assets/{use-list-state-DqBnjzP2.js → use-list-state--e44Cg6A.js} +1 -1
  120. package/dist/client/assets/{use-mcp-prompts-DKz5CZB0.js → use-mcp-prompts-m9itAfo1.js} +1 -1
  121. package/dist/client/assets/{use-mobile-YX8Ptv-0.js → use-mobile-BQcJDrUC.js} +1 -1
  122. package/dist/client/assets/{use-organization-settings-Bz__LWh9.js → use-organization-settings-DT-GwMSs.js} +1 -1
  123. package/dist/client/assets/{use-virtual-mcp-DDcNtB11.js → use-virtual-mcp-Bib66D0T.js} +1 -1
  124. package/dist/client/assets/useInfiniteQuery-DEJMvJ24.js +1 -0
  125. package/dist/client/assets/{useMutation-kTl5A-lQ.js → useMutation-D0FAjxJB.js} +1 -1
  126. package/dist/client/assets/useQuery-9ftL5KuZ.js +1 -0
  127. package/dist/client/assets/{view-mode-toggle-BibpdmwA.js → view-mode-toggle-e1wVUIQC.js} +1 -1
  128. package/dist/client/assets/{workflow-BFrCK9lY.js → workflow-Criibj7u.js} +1 -1
  129. package/dist/client/index.html +1 -1
  130. package/dist/server/cli.js +4 -4
  131. package/dist/server/migrate.js +4 -4
  132. package/package.json +1 -1
  133. package/dist/client/assets/constants-DRQ176RT.js +0 -1
  134. package/dist/client/assets/members-BZdwsMln.js +0 -3
  135. package/dist/client/assets/useInfiniteQuery-CNM2deBK.js +0 -1
  136. package/dist/client/assets/useQuery-Cjcoc_Gz.js +0 -1
@@ -1209,12 +1209,12 @@ ${X.stack}`;return G}}catch{}if(typeof X.toString==="function")try{let G=X.toStr
1209
1209
  WHERE plugin_id = ${Z} AND name = ${H}
1210
1210
  `.execute(Y);if(Number(F.rows[0]?.cnt)===0){console.warn(` \u26A0\uFE0F Failed to migrate ${Z}/${H}, keeping in old table`);continue}}await HK`
1211
1211
  DELETE FROM kysely_migration WHERE name = ${J}
1212
- `.execute(Y)}}async function RQ4(Y,X){let Q=AU1();if(Q.length===0)return;await CQ4(Y,X),await IQ4(Y,X);let J=await HK`
1212
+ `.execute(Y)}}async function RQ4(Y){let X=AU1();if(X.length===0)return;let Q=await HK`
1213
1213
  SELECT plugin_id, name FROM plugin_migrations
1214
- `.execute(Y),G=new Set(J.rows.map((Z)=>`${Z.plugin_id}/${Z.name}`)),K=new Map;for(let{pluginId:Z,migration:H}of Q){if(!K.has(Z))K.set(Z,[]);K.get(Z).push({name:H.name,up:H.up})}let W=0;for(let[Z,H]of K){H.sort((F,V)=>F.name.localeCompare(V.name));for(let F of H){let V=`${Z}/${F.name}`;if(G.has(V))continue;if(W===0)console.log("\uD83D\uDD0C Running plugin migrations...");W++,console.log(` Running: ${V}`),await F.up(Y);let $=new Date().toISOString();await HK`
1214
+ `.execute(Y),J=new Set(Q.rows.map((W)=>`${W.plugin_id}/${W.name}`)),G=new Map;for(let{pluginId:W,migration:Z}of X){if(!G.has(W))G.set(W,[]);G.get(W).push({name:Z.name,up:Z.up})}let K=0;for(let[W,Z]of G){Z.sort((H,F)=>H.name.localeCompare(F.name));for(let H of Z){let F=`${W}/${H.name}`;if(J.has(F))continue;if(K===0)console.log("\uD83D\uDD0C Running plugin migrations...");K++,console.log(` Running: ${F}`),await H.up(Y);let V=new Date().toISOString();await HK`
1215
1215
  INSERT INTO plugin_migrations (plugin_id, name, timestamp)
1216
- VALUES (${Z}, ${F.name}, ${$})
1217
- `.execute(Y)}}if(W>0)console.log(`\u2705 ${W} plugin migration(s) completed`)}async function RN1(Y){let X=new CN1({db:Y,provider:{getMigrations:()=>Promise.resolve(KE)}}),{error:Q,results:J}=await X.migrateToLatest();if(J?.forEach((G)=>{if(G.status==="Success")console.log(`\u2705 Migration "${G.migrationName}" executed successfully`);else if(G.status==="Error")console.error(`\u274C Failed to execute migration "${G.migrationName}"`)}),Q)throw console.error("Failed to migrate"),console.error(Q),Q}async function jQ4(Y){let{keepOpen:X=!1,database:Q,skipBetterAuth:J=!1,seed:G}=Y??{};if(!J&&!Q)await PN1();let K=Q??w$(),W=async()=>{if(!X&&!Q)console.log("\uD83D\uDD12 Closing database connection..."),await YK1(K).catch((Z)=>{console.warn("Warning: Error closing database:",Z)})};try{console.log("\uD83D\uDCCA Running Kysely migrations..."),await RN1(K.db),console.log("\uD83C\uDF89 Core migrations completed successfully"),await RQ4(K.db,K.type);let Z;if(G)Z=await yg(K.db,G);return await W(),{seedResult:Z}}catch(Z){throw await W(),Z}}async function SQ4(){let Y=w$(),X=new CN1({db:Y.db,provider:{getMigrations:()=>Promise.resolve(KE)}}),{error:Q,results:J}=await X.migrateDown();if(J?.forEach((G)=>{if(G.status==="Success")console.log(`\u2705 Migration "${G.migrationName}" rolled back successfully`);else if(G.status==="Error")console.error(`\u274C Failed to rollback migration "${G.migrationName}"`)}),Q)throw console.error("Failed to rollback migration"),console.error(Q),Q}var SN1=S(()=>{_g();OZ0();EN1();ux();ST()});var _3;var C2=S(()=>{_3=class extends Error{res;status;constructor(Y=500,X){super(X?.message,{cause:X?.cause});this.res=X?.res,this.status=Y}getResponse(){if(this.res)return new Response(this.res.body,{status:this.status,headers:this.res.headers});return new Response(this.message,{status:this.status})}}});var kN1,kQ4,vQ4=(Y,X)=>{if(!Y)return{};let Q=new Headers(Y.headers);if(X){let J=Q.get("connection");if(J){let G=J.split(",").map((W)=>W.trim()),K=G.filter((W)=>!kQ4.test(W));if(K.length>0)throw new _3(400,{message:`Invalid Connection header value: ${K.join(", ")}`});G.forEach((W)=>{Q.delete(W)})}}return kN1.forEach((J)=>{Q.delete(J)}),{method:Y.method,body:Y.body,duplex:Y.body?"half":void 0,headers:Q,signal:Y.signal}},_Q4=(Y)=>{if(!Y.headers||Array.isArray(Y.headers)||Y.headers instanceof Headers)return Y;let X=new Headers;for(let[Q,J]of Object.entries(Y.headers))if(J==null)X.delete(Q);else X.set(Q,J);return Y.headers=X,Y},vN1=async(Y,X)=>{let{raw:Q,customFetch:J,strictConnectionProcessing:G=!1,...K}=X instanceof Request?{raw:X}:X??{},W=new Request(Y,{...vQ4(Q,G),..._Q4(K)});W.headers.delete("accept-encoding");let Z=await(J||fetch)(W),H=new Headers(Z.headers);if(kN1.forEach((F)=>{H.delete(F)}),H.has("content-encoding"))H.delete("content-encoding"),H.delete("content-length");return new Response(Z.body,{status:Z.status,statusText:Z.statusText,headers:H})};var _N1=S(()=>{C2();kN1=["connection","keep-alive","proxy-authenticate","proxy-authorization","te","trailer","transfer-encoding","upgrade"],kQ4=/^[!#$%&'*+\-.0-9A-Z^_`a-z|~]+$/});var yN1=(Y)=>(X)=>{let Q=new URL(X.req.raw.url),J=new URL(Y);return J.pathname=Q.pathname,J.search=Q.search,vN1(J,{raw:X.req.raw,headers:{...X.req.raw.headers}})};var fN1=S(()=>{_N1()});import{resolve as I2,dirname as yQ4,join as fQ4,extname as hQ4}from"path";function uQ4(Y,X){let Q=I2(X),J=I2(Y);return J===Q||J.startsWith(Q+"/")}function gQ4({requestPath:Y,clientDir:X}){let Q=Y.startsWith("/")?Y.slice(1):Y,J=I2(X,Q);if(!uQ4(J,X))return null;return J}function hN1(Y,X="../client"){let Q=new URL(Y),J=yQ4(Q.pathname);return I2(J,X)}function bN1(Y={}){let{env:X="production",devServerUrl:Q=bQ4,clientDir:J=xQ4,isServerPath:G=()=>!1}=Y;if(X==="development"){let K=yN1(Q);return async function(Z){let H=new URL(Z.url);if(G(H.pathname))return null;let F={req:{raw:Z,url:Z.url}};return K(F)}}return async function(W){if(W.method!=="GET")return null;let Z=new URL(W.url),H;try{H=decodeURIComponent(Z.pathname)}catch{return null}if(G(H))return null;let F=gQ4({requestPath:H,clientDir:J});if(!F)return null;let V=fQ4(F,"index.html"),$=I2(J,"index.html"),q=W.headers.get("accept"),D=q?.includes("text/html")||q?.includes("*/*")&&["",".html"].includes(hQ4(F))?[V,$]:[];for(let O of[F,...D])try{let L=Bun.file(O);if(await L.exists())return new Response(L)}catch{}return null}}var bQ4="http://localhost:4000",xQ4="./dist/client";var xN1=S(()=>{fN1()});function gN1(Y){if(!Y)return!1;try{return new URL(Y).host==="api.decocms.com"&&Y!=="https://api.decocms.com/mcp/registry"}catch{return!1}}var uN1="https://api.decocms.com/mcp/registry";var Z70=(Y,X,Q)=>{return(J,G)=>{let K=-1;return W(0);async function W(Z){if(Z<=K)throw Error("next() called multiple times");K=Z;let H,F=!1,V;if(Y[Z])V=Y[Z][0][0],J.req.routeIndex=Z;else V=Z===Y.length&&G||void 0;if(V)try{H=await V(J,()=>W(Z+1))}catch($){if($ instanceof Error&&X)J.error=$,H=await X($,J),F=!0;else throw $}else if(J.finalized===!1&&Q)H=await Q(J);if(H&&(J.finalized===!1||F))J.res=H;return J}}};var mN1=()=>{};var lN1;var dN1=S(()=>{lN1=Symbol()});async function mQ4(Y,X){let Q=await Y.formData();if(Q)return lQ4(Q,X);return{}}function lQ4(Y,X){let Q=Object.create(null);if(Y.forEach((J,G)=>{if(!(X.all||G.endsWith("[]")))Q[G]=J;else dQ4(Q,G,J)}),X.dot)Object.entries(Q).forEach(([J,G])=>{if(J.includes("."))pQ4(Q,J,G),delete Q[J]});return Q}var pN1=async(Y,X=Object.create(null))=>{let{all:Q=!1,dot:J=!1}=X,K=(Y instanceof Ku?Y.raw.headers:Y.headers).get("Content-Type");if(K?.startsWith("multipart/form-data")||K?.startsWith("application/x-www-form-urlencoded"))return mQ4(Y,{all:Q,dot:J});return{}},dQ4=(Y,X,Q)=>{if(Y[X]!==void 0)if(Array.isArray(Y[X]))Y[X].push(Q);else Y[X]=[Y[X],Q];else if(!X.endsWith("[]"))Y[X]=Q;else Y[X]=[Q]},pQ4=(Y,X,Q)=>{let J=Y,G=X.split(".");G.forEach((K,W)=>{if(W===G.length-1)J[K]=Q;else{if(!J[K]||typeof J[K]!=="object"||Array.isArray(J[K])||J[K]instanceof File)J[K]=Object.create(null);J=J[K]}})};var cN1=S(()=>{K70()});var F70=(Y)=>{let X=Y.split("/");if(X[0]==="")X.shift();return X},nN1=(Y)=>{let{groups:X,path:Q}=cQ4(Y),J=F70(Q);return nQ4(J,X)},cQ4=(Y)=>{let X=[];return Y=Y.replace(/\{[^}]+\}/g,(Q,J)=>{let G=`@${J}`;return X.push([G,Q]),G}),{groups:X,path:Y}},nQ4=(Y,X)=>{for(let Q=X.length-1;Q>=0;Q--){let[J]=X[Q];for(let G=Y.length-1;G>=0;G--)if(Y[G].includes(J)){Y[G]=Y[G].replace(J,X[Q][1]);break}}return Y},Hu,iN1=(Y,X)=>{if(Y==="*")return"*";let Q=Y.match(/^\:([^\{\}]+)(?:\{(.+)\})?$/);if(Q){let J=`${Y}#${X}`;if(!Hu[J])if(Q[2])Hu[J]=X&&X[0]!==":"&&X[0]!=="*"?[J,Q[1],new RegExp(`^${Q[2]}(?=/${X})`)]:[Y,Q[1],new RegExp(`^${Q[2]}$`)];else Hu[J]=[Y,Q[1],!0];return Hu[J]}return null},JO=(Y,X)=>{try{return X(Y)}catch{return Y.replace(/(?:%[0-9A-Fa-f]{2})+/g,(Q)=>{try{return X(Q)}catch{return Q}})}},iQ4=(Y)=>JO(Y,decodeURI),V70=(Y)=>{let X=Y.url,Q=X.indexOf("/",X.indexOf(":")+4),J=Q;for(;J<X.length;J++){let G=X.charCodeAt(J);if(G===37){let K=X.indexOf("?",J),W=X.slice(Q,K===-1?void 0:K);return iQ4(W.includes("%25")?W.replace(/%25/g,"%2525"):W)}else if(G===63)break}return X.slice(Q,J)},aN1=(Y)=>{let X=V70(Y);return X.length>1&&X.at(-1)==="/"?X.slice(0,-1):X},a$=(Y,X,...Q)=>{if(Q.length)X=a$(X,...Q);return`${Y?.[0]==="/"?"":"/"}${Y}${X==="/"?"":`${Y?.at(-1)==="/"?"":"/"}${X?.[0]==="/"?X.slice(1):X}`}`},Fu=(Y)=>{if(Y.charCodeAt(Y.length-1)!==63||!Y.includes(":"))return null;let X=Y.split("/"),Q=[],J="";return X.forEach((G)=>{if(G!==""&&!/\:/.test(G))J+="/"+G;else if(/\:/.test(G))if(/\?/.test(G)){if(Q.length===0&&J==="")Q.push("/");else Q.push(J);let K=G.replace("?","");J+="/"+K,Q.push(J)}else J+="/"+G}),Q.filter((G,K,W)=>W.indexOf(G)===K)},H70=(Y)=>{if(!/[%+]/.test(Y))return Y;if(Y.indexOf("+")!==-1)Y=Y.replace(/\+/g," ");return Y.indexOf("%")!==-1?JO(Y,R2):Y},rN1=(Y,X,Q)=>{let J;if(!Q&&X&&!/[%+]/.test(X)){let W=Y.indexOf("?",8);if(W===-1)return;if(!Y.startsWith(X,W+1))W=Y.indexOf(`&${X}`,W+1);while(W!==-1){let Z=Y.charCodeAt(W+X.length+1);if(Z===61){let H=W+X.length+2,F=Y.indexOf("&",H);return H70(Y.slice(H,F===-1?void 0:F))}else if(Z==38||isNaN(Z))return"";W=Y.indexOf(`&${X}`,W+1)}if(J=/[%+]/.test(Y),!J)return}let G={};J??=/[%+]/.test(Y);let K=Y.indexOf("?",8);while(K!==-1){let W=Y.indexOf("&",K+1),Z=Y.indexOf("=",K);if(Z>W&&W!==-1)Z=-1;let H=Y.slice(K+1,Z===-1?W===-1?void 0:W:Z);if(J)H=H70(H);if(K=W,H==="")continue;let F;if(Z===-1)F="";else if(F=Y.slice(Z+1,W===-1?void 0:W),J)F=H70(F);if(Q){if(!(G[H]&&Array.isArray(G[H])))G[H]=[];G[H].push(F)}else G[H]??=F}return X?G[X]:G},oN1,sN1=(Y,X)=>{return rN1(Y,X,!0)},R2;var r$=S(()=>{Hu={},oN1=rN1,R2=decodeURIComponent});var tN1=(Y)=>JO(Y,R2),Ku;var K70=S(()=>{C2();dN1();cN1();r$();Ku=class{raw;#Y;#X;routeIndex=0;path;bodyCache={};constructor(Y,X="/",Q=[[]]){this.raw=Y,this.path=X,this.#X=Q,this.#Y={}}param(Y){return Y?this.#Q(Y):this.#J()}#Q(Y){let X=this.#X[0][this.routeIndex][1][Y],Q=this.#W(X);return Q&&/\%/.test(Q)?tN1(Q):Q}#J(){let Y={},X=Object.keys(this.#X[0][this.routeIndex][1]);for(let Q of X){let J=this.#W(this.#X[0][this.routeIndex][1][Q]);if(J!==void 0)Y[Q]=/\%/.test(J)?tN1(J):J}return Y}#W(Y){return this.#X[1]?this.#X[1][Y]:Y}query(Y){return oN1(this.url,Y)}queries(Y){return sN1(this.url,Y)}header(Y){if(Y)return this.raw.headers.get(Y)??void 0;let X={};return this.raw.headers.forEach((Q,J)=>{X[J]=Q}),X}async parseBody(Y){return this.bodyCache.parsedBody??=await pN1(this,Y)}#G=(Y)=>{let{bodyCache:X,raw:Q}=this,J=X[Y];if(J)return J;let G=Object.keys(X)[0];if(G)return X[G].then((K)=>{if(G==="json")K=JSON.stringify(K);return new Response(K)[Y]()});return X[Y]=Q[Y]()};json(){return this.#G("text").then((Y)=>JSON.parse(Y))}text(){return this.#G("text")}arrayBuffer(){return this.#G("arrayBuffer")}blob(){return this.#G("blob")}formData(){return this.#G("formData")}addValidatedData(Y,X){this.#Y[Y]=X}valid(Y){return this.#Y[Y]}get url(){return this.raw.url}get method(){return this.raw.method}get[lN1](){return this.#X}get matchedRoutes(){return this.#X[0].map(([[,Y]])=>Y)}get routePath(){return this.#X[0].map(([[,Y]])=>Y)[this.routeIndex].path}}});var Vu,aQ4=(Y,X)=>{let Q=new String(Y);return Q.isEscaped=!0,Q.callbacks=X,Q},j2=async(Y,X,Q,J,G)=>{if(typeof Y==="object"&&!(Y instanceof String)){if(!(Y instanceof Promise))Y=Y.toString();if(Y instanceof Promise)Y=await Y}let K=Y.callbacks;if(!K?.length)return Promise.resolve(Y);if(G)G[0]+=Y;else G=[Y];let W=Promise.all(K.map((Z)=>Z({phase:X,buffer:G,context:J}))).then((Z)=>Promise.all(Z.filter(Boolean).map((H)=>j2(H,X,!1,J,G))).then(()=>G[0]));if(Q)return aQ4(await W,K);else return W};var $70=S(()=>{Vu={Stringify:1,BeforeStream:2,Stream:3}});var eN1="text/plain; charset=UTF-8",q70=(Y,X)=>{return{"Content-Type":Y,...X}},YL1=class{#Y;#X;env={};#Q;finalized=!1;error;#J;#W;#G;#K;#Z;#F;#H;#$;#q;constructor(Y,X){if(this.#Y=Y,X)this.#W=X.executionCtx,this.env=X.env,this.#F=X.notFoundHandler,this.#q=X.path,this.#$=X.matchResult}get req(){return this.#X??=new Ku(this.#Y,this.#q,this.#$),this.#X}get event(){if(this.#W&&"respondWith"in this.#W)return this.#W;else throw Error("This context has no FetchEvent")}get executionCtx(){if(this.#W)return this.#W;else throw Error("This context has no ExecutionContext")}get res(){return this.#G||=new Response(null,{headers:this.#H??=new Headers})}set res(Y){if(this.#G&&Y){Y=new Response(Y.body,Y);for(let[X,Q]of this.#G.headers.entries()){if(X==="content-type")continue;if(X==="set-cookie"){let J=this.#G.headers.getSetCookie();Y.headers.delete("set-cookie");for(let G of J)Y.headers.append("set-cookie",G)}else Y.headers.set(X,Q)}}this.#G=Y,this.finalized=!0}render=(...Y)=>{return this.#Z??=(X)=>this.html(X),this.#Z(...Y)};setLayout=(Y)=>this.#K=Y;getLayout=()=>this.#K;setRenderer=(Y)=>{this.#Z=Y};header=(Y,X,Q)=>{if(this.finalized)this.#G=new Response(this.#G.body,this.#G);let J=this.#G?this.#G.headers:this.#H??=new Headers;if(X===void 0)J.delete(Y);else if(Q?.append)J.append(Y,X);else J.set(Y,X)};status=(Y)=>{this.#J=Y};set=(Y,X)=>{this.#Q??=new Map,this.#Q.set(Y,X)};get=(Y)=>{return this.#Q?this.#Q.get(Y):void 0};get var(){if(!this.#Q)return{};return Object.fromEntries(this.#Q)}#V(Y,X,Q){let J=this.#G?new Headers(this.#G.headers):this.#H??new Headers;if(typeof X==="object"&&"headers"in X){let K=X.headers instanceof Headers?X.headers:new Headers(X.headers);for(let[W,Z]of K)if(W.toLowerCase()==="set-cookie")J.append(W,Z);else J.set(W,Z)}if(Q)for(let[K,W]of Object.entries(Q))if(typeof W==="string")J.set(K,W);else{J.delete(K);for(let Z of W)J.append(K,Z)}let G=typeof X==="number"?X:X?.status??this.#J;return new Response(Y,{status:G,headers:J})}newResponse=(...Y)=>this.#V(...Y);body=(Y,X,Q)=>this.#V(Y,X,Q);text=(Y,X,Q)=>{return!this.#H&&!this.#J&&!X&&!Q&&!this.finalized?new Response(Y):this.#V(Y,X,q70(eN1,Q))};json=(Y,X,Q)=>{return this.#V(JSON.stringify(Y),X,q70("application/json",Q))};html=(Y,X,Q)=>{let J=(G)=>this.#V(G,X,q70("text/html; charset=UTF-8",Q));return typeof Y==="object"?j2(Y,Vu.Stringify,!1,{}).then(J):J(Y)};redirect=(Y,X)=>{let Q=String(Y);return this.header("Location",!/[^\x00-\xFF]/.test(Q)?Q:encodeURI(Q)),this.newResponse(null,X??302)};notFound=()=>{return this.#F??=()=>new Response,this.#F(this)}};var $u=S(()=>{K70();$70()});var F8="ALL",XL1="all",QL1,qu="Can not add a route since the matcher is already built.",zu;var o$=S(()=>{QL1=["get","post","put","delete","options","patch"],zu=class extends Error{}});var JL1="__COMPOSED_HANDLER";var GL1=()=>{};var rQ4=(Y)=>{return Y.text("404 Not Found",404)},WL1=(Y,X)=>{if("getResponse"in Y){let Q=Y.getResponse();return X.newResponse(Q.body,Q)}return console.error(Y),X.text("Internal Server Error",500)},ZL1=class Y{get;post;put;delete;options;patch;all;on;use;router;getPath;_basePath="/";#Y="/";routes=[];constructor(X={}){[...QL1,XL1].forEach((K)=>{this[K]=(W,...Z)=>{if(typeof W==="string")this.#Y=W;else this.#J(K,this.#Y,W);return Z.forEach((H)=>{this.#J(K,this.#Y,H)}),this}}),this.on=(K,W,...Z)=>{for(let H of[W].flat()){this.#Y=H;for(let F of[K].flat())Z.map((V)=>{this.#J(F.toUpperCase(),this.#Y,V)})}return this},this.use=(K,...W)=>{if(typeof K==="string")this.#Y=K;else this.#Y="*",W.unshift(K);return W.forEach((Z)=>{this.#J(F8,this.#Y,Z)}),this};let{strict:J,...G}=X;Object.assign(this,G),this.getPath=J??!0?X.getPath??V70:aN1}#X(){let X=new Y({router:this.router,getPath:this.getPath});return X.errorHandler=this.errorHandler,X.#Q=this.#Q,X.routes=this.routes,X}#Q=rQ4;errorHandler=WL1;route(X,Q){let J=this.basePath(X);return Q.routes.map((G)=>{let K;if(Q.errorHandler===WL1)K=G.handler;else K=async(W,Z)=>(await Z70([],Q.errorHandler)(W,()=>G.handler(W,Z))).res,K[JL1]=G.handler;J.#J(G.method,G.path,K)}),this}basePath(X){let Q=this.#X();return Q._basePath=a$(this._basePath,X),Q}onError=(X)=>{return this.errorHandler=X,this};notFound=(X)=>{return this.#Q=X,this};mount(X,Q,J){let G,K;if(J)if(typeof J==="function")K=J;else if(K=J.optionHandler,J.replaceRequest===!1)G=(H)=>H;else G=J.replaceRequest;let W=K?(H)=>{let F=K(H);return Array.isArray(F)?F:[F]}:(H)=>{let F=void 0;try{F=H.executionCtx}catch{}return[H.env,F]};G||=(()=>{let H=a$(this._basePath,X),F=H==="/"?0:H.length;return(V)=>{let $=new URL(V.url);return $.pathname=$.pathname.slice(F)||"/",new Request($,V)}})();let Z=async(H,F)=>{let V=await Q(G(H.req.raw),...W(H));if(V)return V;await F()};return this.#J(F8,a$(X,"*"),Z),this}#J(X,Q,J){X=X.toUpperCase(),Q=a$(this._basePath,Q);let G={basePath:this._basePath,path:Q,method:X,handler:J};this.router.add(X,Q,[J,G]),this.routes.push(G)}#W(X,Q){if(X instanceof Error)return this.errorHandler(X,Q);throw X}#G(X,Q,J,G){if(G==="HEAD")return(async()=>new Response(null,await this.#G(X,Q,J,"GET")))();let K=this.getPath(X,{env:J}),W=this.router.match(G,K),Z=new YL1(X,{path:K,matchResult:W,env:J,executionCtx:Q,notFoundHandler:this.#Q});if(W[0].length===1){let F;try{F=W[0][0][0][0](Z,async()=>{Z.res=await this.#Q(Z)})}catch(V){return this.#W(V,Z)}return F instanceof Promise?F.then((V)=>V||(Z.finalized?Z.res:this.#Q(Z))).catch((V)=>this.#W(V,Z)):F??this.#Q(Z)}let H=Z70(W[0],this.errorHandler,this.#Q);return(async()=>{try{let F=await H(Z);if(!F.finalized)throw Error("Context is not finalized. Did you forget to return a Response object or `await next()`?");return F.res}catch(F){return this.#W(F,Z)}})()}fetch=(X,...Q)=>{return this.#G(X,Q[1],Q[0],X.method)};request=(X,Q,J,G)=>{if(X instanceof Request)return this.fetch(Q?new Request(X,Q):X,J,G);return X=X.toString(),this.fetch(new Request(/^https?:\/\//.test(X)?X:`http://localhost${a$("/",X)}`,Q),J,G)};fire=()=>{addEventListener("fetch",(X)=>{X.respondWith(this.#G(X.request,X,void 0,X.request.method))})}};var KL1=S(()=>{mN1();$u();o$();GL1();r$()});function Bu(Y,X){let Q=this.buildAllMatchers(),J=(G,K)=>{let W=Q[G]||Q[F8],Z=W[2][K];if(Z)return Z;let H=K.match(W[0]);if(!H)return[[],S2];let F=H.indexOf("",1);return[W[1][F],H]};return this.match=J,J(Y,X)}var S2;var z70=S(()=>{o$();S2=[]});function sQ4(Y,X){if(Y.length===1)return X.length===1?Y<X?-1:1:-1;if(X.length===1)return 1;if(Y===k2||Y===v2)return 1;else if(X===k2||X===v2)return-1;if(Y===Uu)return 1;else if(X===Uu)return-1;return Y.length===X.length?Y<X?-1:1:X.length-Y.length}var Uu="[^/]+",k2=".*",v2="(?:|/.*)",s$,oQ4,HL1=class Y{#Y;#X;#Q=Object.create(null);insert(X,Q,J,G,K){if(X.length===0){if(this.#Y!==void 0)throw s$;if(K)return;this.#Y=Q;return}let[W,...Z]=X,H=W==="*"?Z.length===0?["","",k2]:["","",Uu]:W==="/*"?["","",v2]:W.match(/^\:([^\{\}]+)(?:\{(.+)\})?$/),F;if(H){let V=H[1],$=H[2]||Uu;if(V&&H[2]){if($===".*")throw s$;if($=$.replace(/^\((?!\?:)(?=[^)]+\)$)/,"(?:"),/\((?!\?:)/.test($))throw s$}if(F=this.#Q[$],!F){if(Object.keys(this.#Q).some((q)=>q!==k2&&q!==v2))throw s$;if(K)return;if(F=this.#Q[$]=new Y,V!=="")F.#X=G.varIndex++}if(!K&&V!=="")J.push([V,F.#X])}else if(F=this.#Q[W],!F){if(Object.keys(this.#Q).some((V)=>V.length>1&&V!==k2&&V!==v2))throw s$;if(K)return;F=this.#Q[W]=new Y}F.insert(Z,Q,J,G,K)}buildRegExpStr(){let Q=Object.keys(this.#Q).sort(sQ4).map((J)=>{let G=this.#Q[J];return(typeof G.#X==="number"?`(${J})@${G.#X}`:oQ4.has(J)?`\\${J}`:J)+G.buildRegExpStr()});if(typeof this.#Y==="number")Q.unshift(`#${this.#Y}`);if(Q.length===0)return"";if(Q.length===1)return Q[0];return"(?:"+Q.join("|")+")"}};var B70=S(()=>{s$=Symbol(),oQ4=new Set(".\\+*[^]$()")});var FL1=class{#Y={varIndex:0};#X=new HL1;insert(Y,X,Q){let J=[],G=[];for(let W=0;;){let Z=!1;if(Y=Y.replace(/\{[^}]+\}/g,(H)=>{let F=`@\\${W}`;return G[W]=[F,H],W++,Z=!0,F}),!Z)break}let K=Y.match(/(?::[^\/]+)|(?:\/\*$)|./g)||[];for(let W=G.length-1;W>=0;W--){let[Z]=G[W];for(let H=K.length-1;H>=0;H--)if(K[H].indexOf(Z)!==-1){K[H]=K[H].replace(Z,G[W][1]);break}}return this.#X.insert(K,X,J,this.#Y,Q),J}buildRegExp(){let Y=this.#X.buildRegExpStr();if(Y==="")return[/^$/,[],[]];let X=0,Q=[],J=[];return Y=Y.replace(/#(\d+)|@(\d+)|\.\*\$/g,(G,K,W)=>{if(K!==void 0)return Q[++X]=Number(K),"$()";if(W!==void 0)return J[Number(W)]=++X,"";return""}),[new RegExp(`^${Y}`),Q,J]}};var VL1=S(()=>{B70()});function qL1(Y){return $L1[Y]??=new RegExp(Y==="*"?"":`^${Y.replace(/\/\*$|([.\\+*[^\]$()])/g,(X,Q)=>Q?`\\${Q}`:"(?:|/.*)")}$`)}function eQ4(){$L1=Object.create(null)}function YJ4(Y){let X=new FL1,Q=[];if(Y.length===0)return tQ4;let J=Y.map((F)=>[!/\*|\/:/.test(F[0]),...F]).sort(([F,V],[$,q])=>F?1:$?-1:V.length-q.length),G=Object.create(null);for(let F=0,V=-1,$=J.length;F<$;F++){let[q,B,D]=J[F];if(q)G[B]=[D.map(([L])=>[L,Object.create(null)]),S2];else V++;let O;try{O=X.insert(B,V,q)}catch(L){throw L===s$?new zu(B):L}if(q)continue;Q[V]=D.map(([L,w])=>{let R=Object.create(null);w-=1;for(;w>=0;w--){let[P,T]=O[w];R[P]=T}return[L,R]})}let[K,W,Z]=X.buildRegExp();for(let F=0,V=Q.length;F<V;F++)for(let $=0,q=Q[F].length;$<q;$++){let B=Q[F][$]?.[1];if(!B)continue;let D=Object.keys(B);for(let O=0,L=D.length;O<L;O++)B[D[O]]=Z[B[D[O]]]}let H=[];for(let F in W)H[F]=Q[W[F]];return[K,H,G]}function GO(Y,X){if(!Y)return;for(let Q of Object.keys(Y).sort((J,G)=>G.length-J.length))if(qL1(Q).test(X))return[...Y[Q]];return}var tQ4,$L1,Du=class{name="RegExpRouter";#Y;#X;constructor(){this.#Y={[F8]:Object.create(null)},this.#X={[F8]:Object.create(null)}}add(Y,X,Q){let J=this.#Y,G=this.#X;if(!J||!G)throw Error(qu);if(!J[Y])[J,G].forEach((Z)=>{Z[Y]=Object.create(null),Object.keys(Z[F8]).forEach((H)=>{Z[Y][H]=[...Z[F8][H]]})});if(X==="/*")X="*";let K=(X.match(/\/:/g)||[]).length;if(/\*$/.test(X)){let Z=qL1(X);if(Y===F8)Object.keys(J).forEach((H)=>{J[H][X]||=GO(J[H],X)||GO(J[F8],X)||[]});else J[Y][X]||=GO(J[Y],X)||GO(J[F8],X)||[];Object.keys(J).forEach((H)=>{if(Y===F8||Y===H)Object.keys(J[H]).forEach((F)=>{Z.test(F)&&J[H][F].push([Q,K])})}),Object.keys(G).forEach((H)=>{if(Y===F8||Y===H)Object.keys(G[H]).forEach((F)=>Z.test(F)&&G[H][F].push([Q,K]))});return}let W=Fu(X)||[X];for(let Z=0,H=W.length;Z<H;Z++){let F=W[Z];Object.keys(G).forEach((V)=>{if(Y===F8||Y===V)G[V][F]||=[...GO(J[V],F)||GO(J[F8],F)||[]],G[V][F].push([Q,K-H+Z+1])})}}match=Bu;buildAllMatchers(){let Y=Object.create(null);return Object.keys(this.#X).concat(Object.keys(this.#Y)).forEach((X)=>{Y[X]||=this.#Q(X)}),this.#Y=this.#X=void 0,eQ4(),Y}#Q(Y){let X=[],Q=Y===F8;if([this.#Y,this.#X].forEach((J)=>{let G=J[Y]?Object.keys(J[Y]).map((K)=>[K,J[Y][K]]):[];if(G.length!==0)Q||=!0,X.push(...G);else if(Y!==F8)X.push(...Object.keys(J[F8]).map((K)=>[K,J[F8][K]]))}),!Q)return null;else return YJ4(X)}};var U70=S(()=>{o$();r$();z70();B70();VL1();tQ4=[/^$/,[],Object.create(null)],$L1=Object.create(null)});var XJ4=class{name="PreparedRegExpRouter";#Y;#X;constructor(Y,X){this.#Y=Y,this.#X=X}#Q(Y,X){let Q=this.#Y[Y];Q[1].forEach((J)=>J&&J.push(X)),Object.values(Q[2]).forEach((J)=>J[0].push(X))}#J(Y,X,Q,J,G){let K=this.#Y[Y];if(!G)K[2][X][0].push([Q,{}]);else J.forEach((W)=>{if(typeof W==="number")K[1][W].push([Q,G]);else K[2][W||X][0].push([Q,G])})}add(Y,X,Q){if(!this.#Y[Y]){let G=this.#Y[F8],K={};for(let W in G[2])K[W]=[G[2][W][0].slice(),S2];this.#Y[Y]=[G[0],G[1].map((W)=>Array.isArray(W)?W.slice():0),K]}if(X==="/*"||X==="*"){let G=[Q,{}];if(Y===F8)for(let K in this.#Y)this.#Q(K,G);else this.#Q(Y,G);return}let J=this.#X[X];if(!J)throw Error(`Path ${X} is not registered`);for(let[G,K]of J)if(Y===F8)for(let W in this.#Y)this.#J(W,X,Q,G,K);else this.#J(Y,X,Q,G,K)}buildAllMatchers(){return this.#Y}match=Bu};var zL1=S(()=>{o$();z70();U70()});var BL1=S(()=>{U70();zL1()});var D70=class{name="SmartRouter";#Y=[];#X=[];constructor(Y){this.#Y=Y.routers}add(Y,X,Q){if(!this.#X)throw Error(qu);this.#X.push([Y,X,Q])}match(Y,X){if(!this.#X)throw Error("Fatal error");let Q=this.#Y,J=this.#X,G=Q.length,K=0,W;for(;K<G;K++){let Z=Q[K];try{for(let H=0,F=J.length;H<F;H++)Z.add(...J[H]);W=Z.match(Y,X)}catch(H){if(H instanceof zu)continue;throw H}this.match=Z.match.bind(Z),this.#Y=[Z],this.#X=void 0;break}if(K===G)throw Error("Fatal error");return this.name=`SmartRouter + ${this.activeRouter.name}`,W}get activeRouter(){if(this.#X||this.#Y.length!==1)throw Error("No active router has been determined yet.");return this.#Y[0]}};var UL1=S(()=>{o$()});var DL1=S(()=>{UL1()});var _2,OL1=class Y{#Y;#X;#Q;#J=0;#W=_2;constructor(X,Q,J){if(this.#X=J||Object.create(null),this.#Y=[],X&&Q){let G=Object.create(null);G[X]={handler:Q,possibleKeys:[],score:0},this.#Y=[G]}this.#Q=[]}insert(X,Q,J){this.#J=++this.#J;let G=this,K=nN1(Q),W=[];for(let Z=0,H=K.length;Z<H;Z++){let F=K[Z],V=K[Z+1],$=iN1(F,V),q=Array.isArray($)?$[0]:F;if(q in G.#X){if(G=G.#X[q],$)W.push($[1]);continue}if(G.#X[q]=new Y,$)G.#Q.push($),W.push($[1]);G=G.#X[q]}return G.#Y.push({[X]:{handler:J,possibleKeys:W.filter((Z,H,F)=>F.indexOf(Z)===H),score:this.#J}}),G}#G(X,Q,J,G){let K=[];for(let W=0,Z=X.#Y.length;W<Z;W++){let H=X.#Y[W],F=H[Q]||H[F8],V={};if(F!==void 0){if(F.params=Object.create(null),K.push(F),J!==_2||G&&G!==_2)for(let $=0,q=F.possibleKeys.length;$<q;$++){let B=F.possibleKeys[$],D=V[F.score];F.params[B]=G?.[B]&&!D?G[B]:J[B]??G?.[B],V[F.score]=!0}}}return K}search(X,Q){let J=[];this.#W=_2;let K=[this],W=F70(Q),Z=[];for(let H=0,F=W.length;H<F;H++){let V=W[H],$=H===F-1,q=[];for(let B=0,D=K.length;B<D;B++){let O=K[B],L=O.#X[V];if(L)if(L.#W=O.#W,$){if(L.#X["*"])J.push(...this.#G(L.#X["*"],X,O.#W));J.push(...this.#G(L,X,O.#W))}else q.push(L);for(let w=0,R=O.#Q.length;w<R;w++){let P=O.#Q[w],T=O.#W===_2?{}:{...O.#W};if(P==="*"){let f=O.#X["*"];if(f)J.push(...this.#G(f,X,O.#W)),f.#W=T,q.push(f);continue}let[A,I,j]=P;if(!V&&!(j instanceof RegExp))continue;let k=O.#X[A],y=W.slice(H).join("/");if(j instanceof RegExp){let f=j.exec(y);if(f){if(T[I]=f[0],J.push(...this.#G(k,X,O.#W,T)),Object.keys(k.#X).length){k.#W=T;let h=f[0].match(/\//)?.length??0;(Z[h]||=[]).push(k)}continue}}if(j===!0||j.test(V))if(T[I]=V,$){if(J.push(...this.#G(k,X,T,O.#W)),k.#X["*"])J.push(...this.#G(k.#X["*"],X,T,O.#W))}else k.#W=T,q.push(k)}}K=q.concat(Z.shift()??[])}if(J.length>1)J.sort((H,F)=>{return H.score-F.score});return[J.map(({handler:H,params:F})=>[H,F])]}};var NL1=S(()=>{o$();r$();_2=Object.create(null)});var O70=class{name="TrieRouter";#Y;constructor(){this.#Y=new OL1}add(Y,X,Q){let J=Fu(X);if(J){for(let G=0,K=J.length;G<K;G++)this.#Y.insert(Y,J[G],Q);return}this.#Y.insert(Y,X,Q)}match(Y,X){return this.#Y.search(Y,X)}};var LL1=S(()=>{r$();NL1()});var wL1=S(()=>{LL1()});var O9;var ML1=S(()=>{KL1();BL1();DL1();wL1();O9=class extends ZL1{constructor(Y={}){super(Y);this.router=Y.router??new D70({routers:[new Du,new O70]})}}});var vG=S(()=>{ML1()});var QJ4,JJ4,N70=(Y,X)=>{if(X&&Y.indexOf(X)===-1)return{};let Q=Y.trim().split(";"),J={};for(let G of Q){G=G.trim();let K=G.indexOf("=");if(K===-1)continue;let W=G.substring(0,K).trim();if(X&&X!==W||!QJ4.test(W))continue;let Z=G.substring(K+1).trim();if(Z.startsWith('"')&&Z.endsWith('"'))Z=Z.slice(1,-1);if(JJ4.test(Z)){if(J[W]=Z.indexOf("%")!==-1?JO(Z,R2):Z,X)break}}return J};var AL1=S(()=>{r$();QJ4=/^[\w!#$%&'*.^`|~+-]+$/,JJ4=/^[ !#-:<-[\]-~]*$/});var TL1=(Y,X,Q)=>{let J=Y.req.raw.headers.get("Cookie");if(typeof X==="string"){if(!J)return;let K=X;if(Q==="secure")K="__Secure-"+X;else if(Q==="host")K="__Host-"+X;return N70(J,K)[K]}if(!J)return{};return N70(J)};var PL1=S(()=>{AL1()});var EL1=(Y)=>{let Q={...{origin:"*",allowMethods:["GET","HEAD","PUT","POST","DELETE","PATCH"],allowHeaders:[],exposeHeaders:[]},...Y},J=((K)=>{if(typeof K==="string")if(K==="*")return()=>K;else return(W)=>K===W?W:null;else if(typeof K==="function")return K;else return(W)=>K.includes(W)?W:null})(Q.origin),G=((K)=>{if(typeof K==="function")return K;else if(Array.isArray(K))return()=>K;else return()=>[]})(Q.allowMethods);return async function(W,Z){function H(V,$){W.res.headers.set(V,$)}let F=await J(W.req.header("origin")||"",W);if(F)H("Access-Control-Allow-Origin",F);if(Q.credentials)H("Access-Control-Allow-Credentials","true");if(Q.exposeHeaders?.length)H("Access-Control-Expose-Headers",Q.exposeHeaders.join(","));if(W.req.method==="OPTIONS"){if(Q.origin!=="*")H("Vary","Origin");if(Q.maxAge!=null)H("Access-Control-Max-Age",Q.maxAge.toString());let V=await G(W.req.header("origin")||"",W);if(V.length)H("Access-Control-Allow-Methods",V.join(","));let $=Q.allowHeaders;if(!$?.length){let q=W.req.header("Access-Control-Request-Headers");if(q)$=q.split(/\s*,\s*/)}if($?.length)H("Access-Control-Allow-Headers",$.join(",")),W.res.headers.append("Vary","Access-Control-Request-Headers");return W.res.headers.delete("Content-Length"),W.res.headers.delete("Content-Type"),new Response(null,{headers:W.res.headers,status:204,statusText:"No Content"})}if(await Z(),Q.origin!=="*")W.header("Vary","Origin",{append:!0})}};var CL1=()=>{};function GJ4(){let{process:Y,Deno:X}=globalThis;return!(typeof X?.noColor==="boolean"?X.noColor:Y!==void 0?"NO_COLOR"in Y?.env:!1)}async function IL1(){let{navigator:Y}=globalThis,X="cloudflare:workers";return!(Y!==void 0&&Y.userAgent==="Cloudflare-Workers"?await(async()=>{try{return"NO_COLOR"in((await import("cloudflare:workers")).env??{})}catch{return!1}})():!GJ4())}var RL1=()=>{};async function jL1(Y,X,Q,J,G=0,K){let W=X==="<--"?`${X} ${Q} ${J}`:`${X} ${Q} ${J} ${await KJ4(G)} ${K}`;Y(W)}var WJ4=(Y)=>{let[X,Q]=[",","."];return Y.map((G)=>G.replace(/(\d)(?=(\d\d\d)+(?!\d))/g,"$1"+X)).join(Q)},ZJ4=(Y)=>{let X=Date.now()-Y;return WJ4([X<1000?X+"ms":Math.round(X/1000)+"s"])},KJ4=async(Y)=>{if(await IL1())switch(Y/100|0){case 5:return`\x1B[31m${Y}\x1B[0m`;case 4:return`\x1B[33m${Y}\x1B[0m`;case 3:return`\x1B[36m${Y}\x1B[0m`;case 2:return`\x1B[32m${Y}\x1B[0m`}return`${Y}`},SL1=(Y=console.log)=>{return async function(Q,J){let{method:G,url:K}=Q.req,W=K.slice(K.indexOf("/",8));await jL1(Y,"<--",G,W);let Z=Date.now();await J(),await jL1(Y,"-->",G,W,Q.res.status,ZJ4(Z))}};var kL1=S(()=>{RL1()});var vL1=()=>{try{return performance.now()}catch{}return Date.now()},L70=(Y)=>{let X={total:!0,enabled:!0,totalDescription:"Total Response Time",autoEnd:!0,crossOrigin:!1,...Y};return async function(J,G){let K=[],W=new Map;if(J.get("metric"))return await G();if(J.set("metric",{headers:K,timers:W}),X.total)WO(J,"total",X.totalDescription);if(await G(),X.total)t$(J,"total");if(X.autoEnd)W.forEach((H,F)=>t$(J,F));if(typeof X.enabled==="function"?X.enabled(J):X.enabled){J.res.headers.append("Server-Timing",K.join(","));let H=typeof X.crossOrigin==="function"?X.crossOrigin(J):X.crossOrigin;if(H)J.res.headers.append("Timing-Allow-Origin",typeof H==="string"?H:"*")}}},_L1=(Y,X,Q,J,G)=>{let K=Y.get("metric");if(!K){console.warn("Metrics not initialized! Please add the `timing()` middleware to this route!");return}if(typeof Q==="number"){let W=Q.toFixed(G||1),Z=J?`${X};dur=${W};desc="${J}"`:`${X};dur=${W}`;K.headers.push(Z)}else{let W=Q?`${X};desc="${Q}"`:`${X}`;K.headers.push(W)}},WO=(Y,X,Q)=>{let J=Y.get("metric");if(!J){console.warn("Metrics not initialized! Please add the `timing()` middleware to this route!");return}J.timers.set(X,{description:Q,start:vL1()})},t$=(Y,X,Q)=>{let J=Y.get("metric");if(!J){console.warn("Metrics not initialized! Please add the `timing()` middleware to this route!");return}let G=J.timers.get(X);if(!G){console.warn(`Timer "${X}" does not exist!`);return}let{description:K,start:W}=G,Z=vL1()-W;_L1(Y,X,Z,K,Q),J.timers.delete(X)};var yL1=S(()=>{$u()});var fL1=S(()=>{yL1()});import{randomBytes as HJ4}from"crypto";function hL1(){if(y2)return y2;let Y=process.env.MESH_JWT_SECRET??D9.jwt?.secret??process.env.BETTER_AUTH_SECRET;if(Y)y2=new TextEncoder().encode(Y);else console.warn("MESH_JWT_SECRET not set - generating random secret (not persistent)"),y2=new Uint8Array(HJ4(32));return y2}async function bL1(Y,X="5m"){let Q=hL1();return await new KQ(Y).setProtectedHeader({alg:"HS256",typ:"JWT"}).setIssuedAt().setExpirationTime(X).sign(Q)}async function xL1(Y){try{let X=hL1(),{payload:Q}=await O8(Y,X);return Q}catch{return}}var y2=null;var w70=S(()=>{dQ();QO()});class M70{db;constructor(Y){this.db=Y}async create(Y,X,Q){let J=P8("vir"),G=new Date().toISOString();if(await this.db.insertInto("connections").values({id:J,organization_id:Y,created_by:X,title:Q.title,description:Q.description??null,icon:Q.icon??null,app_name:null,app_id:null,connection_type:"VIRTUAL",connection_url:`virtual://${J}`,connection_token:null,connection_headers:null,oauth_config:null,configuration_state:null,configuration_scopes:null,metadata:Q.metadata?JSON.stringify(Q.metadata):null,tools:null,bindings:null,status:Q.status??"active",created_at:G,updated_at:G}).execute(),Q.connections.length>0)await this.db.insertInto("connection_aggregations").values(Q.connections.map((W)=>({id:P8("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,created_at:G}))).execute();let K=await this.findById(J);if(!K)throw Error(`Failed to create virtual MCP with id: ${J}`);return K}async findById(Y,X){let Q=sZ(Y);if(Q){let J=X??Q,G=await this.db.selectFrom("connections").selectAll().where("organization_id","=",J).where("status","!=","inactive").where("status","!=","error").execute();return{...Px(J),connections:G.map((K)=>({connection_id:K.id,selected_tools:null,selected_resources:null,selected_prompts:null}))}}return this.findByIdInternal(this.db,Y)}async findByIdInternal(Y,X){let Q=await Y.selectFrom("connections").selectAll().where("id","=",X).where("connection_type","=","VIRTUAL").executeTakeFirst();if(!Q)return null;let J=await Y.selectFrom("connection_aggregations").selectAll().where("parent_connection_id","=",X).execute();return this.deserializeVirtualMCPEntity(Q,J)}async list(Y){let X=await this.db.selectFrom("connections").selectAll().where("organization_id","=",Y).where("connection_type","=","VIRTUAL").execute(),Q=X.map((K)=>K.id);if(Q.length===0)return[];let J=await this.db.selectFrom("connection_aggregations").selectAll().where("parent_connection_id","in",Q).execute(),G=new Map;for(let K of J){let W=G.get(K.parent_connection_id)??[];W.push(K),G.set(K.parent_connection_id,W)}return X.map((K)=>this.deserializeVirtualMCPEntity(K,G.get(K.id)??[]))}async listByConnectionId(Y,X){let J=(await this.db.selectFrom("connection_aggregations").select("parent_connection_id").where("child_connection_id","=",X).execute()).map((H)=>H.parent_connection_id);if(J.length===0)return[];let G=await this.db.selectFrom("connections").selectAll().where("id","in",J).where("organization_id","=",Y).where("connection_type","=","VIRTUAL").execute();if(G.length===0)return[];let K=G.map((H)=>H.id),W=await this.db.selectFrom("connection_aggregations").selectAll().where("parent_connection_id","in",K).execute(),Z=new Map;for(let H of W){let F=Z.get(H.parent_connection_id)??[];F.push(H),Z.set(H.parent_connection_id,F)}return G.map((H)=>this.deserializeVirtualMCPEntity(H,Z.get(H.id)??[]))}async update(Y,X,Q){let J=new Date().toISOString(),G={updated_at:J,updated_by:X};if(Q.title!==void 0)G.title=Q.title;if(Q.description!==void 0)G.description=Q.description;if(Q.icon!==void 0)G.icon=Q.icon;if(Q.status!==void 0)G.status=Q.status;if(Q.metadata!==void 0)G.metadata=Q.metadata?JSON.stringify(Q.metadata):null;if(await this.db.updateTable("connections").set(G).where("id","=",Y).where("connection_type","=","VIRTUAL").execute(),Q.connections!==void 0){if(await this.db.deleteFrom("connection_aggregations").where("parent_connection_id","=",Y).execute(),Q.connections.length>0)await this.db.insertInto("connection_aggregations").values(Q.connections.map((W)=>({id:P8("agg"),parent_connection_id:Y,child_connection_id:W.connection_id,selected_tools:W.selected_tools?JSON.stringify(W.selected_tools):null,selected_resources:W.selected_resources?JSON.stringify(W.selected_resources):null,selected_prompts:W.selected_prompts?JSON.stringify(W.selected_prompts):null,created_at:J}))).execute()}let K=await this.findById(Y);if(!K)throw Error("Virtual MCP not found after update");return K}async delete(Y){await this.db.deleteFrom("connection_aggregations").where("parent_connection_id","=",Y).execute(),await this.db.deleteFrom("connections").where("id","=",Y).where("connection_type","=","VIRTUAL").execute()}deserializeVirtualMCPEntity(Y,X){let Q=Y.created_at instanceof Date?Y.created_at.toISOString():Y.created_at,J=Y.updated_at instanceof Date?Y.updated_at.toISOString():Y.updated_at,G=Y.status==="active"?"active":"inactive",K=this.parseJson(Y.metadata);return{id:Y.id,organization_id:Y.organization_id,title:Y.title,description:Y.description,icon:Y.icon,status:G,created_at:Q,updated_at:J,created_by:Y.created_by,updated_by:Y.updated_by??void 0,metadata:{...K,instructions:K?.instructions??null},connections:X.map((W)=>({connection_id:W.child_connection_id,selected_tools:this.parseJson(W.selected_tools),selected_resources:this.parseJson(W.selected_resources),selected_prompts:this.parseJson(W.selected_prompts)}))}}parseJson(Y){if(Y===null)return null;if(typeof Y==="string")try{return JSON.parse(Y)}catch{return null}return Y}}var uL1=S(()=>{UW();j5()});class A70{patterns=[{type:"email",regex:/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/g},{type:"api_key",regex:/(?:api[_-]?key|token|secret|password|bearer)\s*[:=]\s*['"]?[\w-]{16,}['"]?/gi},{type:"jwt",regex:/eyJ[A-Za-z0-9-_]+\.eyJ[A-Za-z0-9-_]+\.[A-Za-z0-9-_.+/=]*/g},{type:"credit_card",regex:/\b\d{4}[- ]?\d{4}[- ]?\d{4}[- ]?\d{4}\b/g},{type:"ssn",regex:/\b\d{3}-\d{2}-\d{4}\b/g}];redact(Y){if(Y===null||Y===void 0)return Y;if(typeof Y==="string")return this.redactString(Y);if(Array.isArray(Y))return Y.map((X)=>this.redact(X));if(typeof Y==="object"){let X={};for(let[Q,J]of Object.entries(Y)){let G=this.redactString(Q);X[G]=this.redact(J)}return X}return Y}redactString(Y){let X=Y;for(let Q of this.patterns)X=X.replace(Q.regex,`[REDACTED:${Q.type}]`);return X}}import{sql as FK}from"kysely";class T70{db;redactor;databaseType;constructor(Y,X="sqlite"){this.db=Y;this.redactor=new A70,this.databaseType=X}jsonExtract(Y,X){if(this.databaseType==="postgres")return FK`(${FK.ref(Y)}::jsonb)->>${X}`;let Q=`$.${X}`;return FK`json_extract(${FK.ref(Y)}, ${Q})`}jsonExtractWithCommas(Y,X){if(this.databaseType==="postgres")return FK`(',' || (${FK.ref(Y)}::jsonb)->>${X} || ',')`;let Q=`$.${X}`;return FK`(',' || json_extract(${FK.ref(Y)}, ${Q}) || ',')`}escapeLikeWildcards(Y){return Y.replace(/\\/g,"\\\\").replace(/%/g,"\\%").replace(/_/g,"\\_")}async log(Y){await this.logBatch([Y])}async logBatch(Y){if(Y.length===0)return;let X=Y.map((Q)=>({...Q,input:this.redactor.redact(Q.input),output:this.redactor.redact(Q.output)}));await this.db.transaction().execute(async(Q)=>{await Q.insertInto("monitoring_logs").values(X.map((J)=>this.toDbRow(J))).execute()})}async query(Y){let X=this.db.selectFrom("monitoring_logs").selectAll(),Q=this.db.selectFrom("monitoring_logs").select((Z)=>Z.fn.count("id").as("count"));if(Y.organizationId)X=X.where("organization_id","=",Y.organizationId),Q=Q.where("organization_id","=",Y.organizationId);if(Y.connectionId)X=X.where("connection_id","=",Y.connectionId),Q=Q.where("connection_id","=",Y.connectionId);if(Y.virtualMcpId)X=X.where("virtual_mcp_id","=",Y.virtualMcpId),Q=Q.where("virtual_mcp_id","=",Y.virtualMcpId);if(Y.toolName)X=X.where("tool_name","=",Y.toolName),Q=Q.where("tool_name","=",Y.toolName);if(Y.isError!==void 0)X=X.where("is_error","=",Y.isError?1:0),Q=Q.where("is_error","=",Y.isError?1:0);if(Y.startDate)X=X.where("timestamp",">=",Y.startDate.toISOString()),Q=Q.where("timestamp",">=",Y.startDate.toISOString());if(Y.endDate)X=X.where("timestamp","<=",Y.endDate.toISOString()),Q=Q.where("timestamp","<=",Y.endDate.toISOString());if(Y.propertyFilters){let{properties:Z,propertyKeys:H,propertyPatterns:F,propertyInValues:V}=Y.propertyFilters;if(Z)for(let[$,q]of Object.entries(Z)){let B=this.jsonExtract("properties",$);X=X.where(B,"=",q),Q=Q.where(B,"=",q)}if(H&&H.length>0)for(let $ of H){let q=this.jsonExtract("properties",$);X=X.where(q,"is not",null),Q=Q.where(q,"is not",null)}if(F)for(let[$,q]of Object.entries(F)){let B=this.jsonExtract("properties",$),D=this.databaseType==="postgres"?"ilike":"like";X=X.where(B,D,q),Q=Q.where(B,D,q)}if(V)for(let[$,q]of Object.entries(V)){let B=this.jsonExtractWithCommas("properties",$),O=`%,${this.escapeLikeWildcards(q)},%`,L=FK`${B} LIKE ${O} ESCAPE '\\'`;X=X.where(L),Q=Q.where(L)}}if(X=X.orderBy("timestamp","desc"),Y.limit)X=X.limit(Y.limit);if(Y.offset)X=X.offset(Y.offset);let[J,G]=await Promise.all([X.execute(),Q.executeTakeFirst()]),K=Number(G?.count||0);return{logs:J.map((Z)=>this.fromDbRow(Z)),total:K}}async getStats(Y){let X=this.db.selectFrom("monitoring_logs").where("organization_id","=",Y.organizationId);if(Y.startDate)X=X.where("timestamp",">=",Y.startDate.toISOString());if(Y.endDate)X=X.where("timestamp","<=",Y.endDate.toISOString());let Q=await X.select([(W)=>W.fn.count("id").as("total_count"),(W)=>W.fn.sum(W.ref("is_error")).as("error_count"),(W)=>W.fn.avg("duration_ms").as("avg_duration")]).executeTakeFirst(),J=Number(Q?.total_count||0),G=Number(Q?.error_count||0),K=Number(Q?.avg_duration||0);return{totalCalls:J,errorRate:J>0?G/J:0,avgDurationMs:K}}toDbRow(Y){return{id:Y.id||P8("log"),organization_id:Y.organizationId,connection_id:Y.connectionId,connection_title:Y.connectionTitle,tool_name:Y.toolName,input:JSON.stringify(Y.input),output:JSON.stringify(Y.output),is_error:Y.isError?1:0,error_message:Y.errorMessage||null,duration_ms:Y.durationMs,timestamp:Y.timestamp instanceof Date?Y.timestamp.toISOString():Y.timestamp,user_id:Y.userId||null,request_id:Y.requestId,user_agent:Y.userAgent||null,virtual_mcp_id:Y.virtualMcpId||null,properties:Y.properties?JSON.stringify(Y.properties):null}}fromDbRow(Y){let X=typeof Y.input==="string"?JSON.parse(Y.input):Y.input,Q=typeof Y.output==="string"?JSON.parse(Y.output):Y.output,J=typeof Y.timestamp==="string"?new Date(Y.timestamp):Y.timestamp,G=Y.properties?typeof Y.properties==="string"?JSON.parse(Y.properties):Y.properties:null;return{id:Y.id,organizationId:Y.organization_id,connectionId:Y.connection_id,connectionTitle:Y.connection_title,toolName:Y.tool_name,input:X,output:Q,isError:Y.is_error===1,errorMessage:Y.error_message,durationMs:Y.duration_ms,timestamp:J,userId:Y.user_id,requestId:Y.request_id,userAgent:Y.user_agent,virtualMcpId:Y.virtual_mcp_id,properties:G}}}var gL1=S(()=>{UW()});class P70{db;constructor(Y){this.db=Y}async get(Y){let X=await this.db.selectFrom("organization_settings").selectAll().where("organizationId","=",Y).executeTakeFirst();if(!X)return null;return{organizationId:X.organizationId,sidebar_items:X.sidebar_items?typeof X.sidebar_items==="string"?JSON.parse(X.sidebar_items):X.sidebar_items:null,enabled_plugins:X.enabled_plugins?typeof X.enabled_plugins==="string"?JSON.parse(X.enabled_plugins):X.enabled_plugins:null,createdAt:X.createdAt,updatedAt:X.updatedAt}}async upsert(Y,X){let Q=new Date().toISOString(),J=X?.sidebar_items?JSON.stringify(X.sidebar_items):null,G=X?.enabled_plugins?JSON.stringify(X.enabled_plugins):null;await this.db.insertInto("organization_settings").values({organizationId:Y,sidebar_items:J,enabled_plugins:G,createdAt:Q,updatedAt:Q}).onConflict((W)=>W.column("organizationId").doUpdateSet({sidebar_items:J?J:void 0,enabled_plugins:G?G:void 0,updatedAt:Q})).execute();let K=await this.get(Y);if(!K)return{organizationId:Y,sidebar_items:X?.sidebar_items??null,enabled_plugins:X?.enabled_plugins??null,createdAt:Q,updatedAt:Q};return K}}class E70{db;constructor(Y){this.db=Y}async listOrgTags(Y){return(await this.db.selectFrom("organization_tags").selectAll().where("organization_id","=",Y).orderBy("name","asc").execute()).map((Q)=>this.tagFromDbRow(Q))}async getTag(Y){let X=await this.db.selectFrom("organization_tags").selectAll().where("id","=",Y).executeTakeFirst();return X?this.tagFromDbRow(X):null}async getTagByName(Y,X){let Q=await this.db.selectFrom("organization_tags").selectAll().where("organization_id","=",Y).where("name","=",X).executeTakeFirst();return Q?this.tagFromDbRow(Q):null}async createTag(Y,X){let Q=P8("tag"),J=new Date().toISOString();await this.db.insertInto("organization_tags").values({id:Q,organization_id:Y,name:X,created_at:J}).onConflict((K)=>K.columns(["organization_id","name"]).doNothing()).execute();let G=await this.getTagByName(Y,X);if(!G)throw Error(`Failed to create or retrieve tag: ${X}`);return G}async deleteTag(Y){await this.db.deleteFrom("organization_tags").where("id","=",Y).execute()}async getMemberTags(Y){return(await this.db.selectFrom("member_tags").innerJoin("organization_tags","organization_tags.id","member_tags.tag_id").select(["organization_tags.id","organization_tags.organization_id","organization_tags.name","organization_tags.created_at"]).where("member_tags.member_id","=",Y).orderBy("organization_tags.name","asc").execute()).map((Q)=>this.tagFromDbRow(Q))}async setMemberTags(Y,X){await this.db.transaction().execute(async(Q)=>{if(await Q.deleteFrom("member_tags").where("member_id","=",Y).execute(),X.length>0){let J=new Date().toISOString();await Q.insertInto("member_tags").values(X.map((G)=>({id:P8("mtag"),member_id:Y,tag_id:G,created_at:J}))).execute()}})}async addMemberTag(Y,X){let Q=new Date().toISOString();await this.db.insertInto("member_tags").values({id:P8("mtag"),member_id:Y,tag_id:X,created_at:Q}).onConflict((J)=>J.columns(["member_id","tag_id"]).doNothing()).execute()}async removeMemberTag(Y,X){await this.db.deleteFrom("member_tags").where("member_id","=",Y).where("tag_id","=",X).execute()}async verifyMemberOrg(Y,X){return await this.db.selectFrom("member").select("id").where("id","=",Y).where("organizationId","=",X).executeTakeFirst()!==void 0}async getUserTagsInOrg(Y,X){return(await this.db.selectFrom("member").innerJoin("member_tags","member_tags.member_id","member.id").innerJoin("organization_tags","organization_tags.id","member_tags.tag_id").select(["organization_tags.id","organization_tags.organization_id","organization_tags.name","organization_tags.created_at"]).where("member.userId","=",Y).where("member.organizationId","=",X).orderBy("organization_tags.name","asc").execute()).map((J)=>this.tagFromDbRow(J))}async getMembersWithTags(Y){let X=await this.db.selectFrom("member").leftJoin("member_tags","member_tags.member_id","member.id").leftJoin("organization_tags","organization_tags.id","member_tags.tag_id").select(["member.id as memberId","organization_tags.name as tagName"]).where("member.organizationId","=",Y).execute(),Q=new Map;for(let J of X){if(!Q.has(J.memberId))Q.set(J.memberId,[]);if(J.tagName)Q.get(J.memberId).push(J.tagName)}return Q}tagFromDbRow(Y){return{id:Y.id,organizationId:Y.organization_id,name:Y.name,createdAt:Y.created_at}}}var mL1=S(()=>{UW()});class C70{db;constructor(Y){this.db=Y}async findById(Y,X){let Q=await this.db.selectFrom("user").select(["user.id","user.name","user.email","user.image","user.createdAt","user.updatedAt"]).where("user.id","=",Y).where((J)=>J.exists(J.selectFrom("member as m1").innerJoin("member as m2","m1.organizationId","m2.organizationId").select("m1.id").where("m1.userId","=",Y).where("m2.userId","=",X))).executeTakeFirst();if(!Q)return null;return{id:Q.id,name:Q.name,email:Q.email,role:"",createdAt:Q.createdAt,updatedAt:Q.updatedAt,image:Q.image??void 0}}}var lL1="mcp.mesh";var dL1,I70,y3;var Ou=S(()=>{dL1=class dL1 extends Error{constructor(Y){super(Y);this.name="UnauthorizedError"}};I70=class I70 extends Error{constructor(Y){super(Y);this.name="ForbiddenError"}};y3=class y3{userId;toolName;boundAuth;role;connectionId;getToolMeta;_granted=!1;constructor(Y,X,Q,J,G,K="self",W){this.userId=X;this.toolName=Q;this.boundAuth=J;this.role=G;this.connectionId=K;this.getToolMeta=W}[Symbol.dispose](){this._granted=!1}setToolName(Y){this.toolName=Y}grant(){return this._granted=!0,{[Symbol.dispose]:()=>{this._granted=!1}}}async check(...Y){if(this._granted)return;if(this.toolName?.startsWith("MESH_PUBLIC_")){this.grant();return}if(!this.userId&&!this.boundAuth){if(this.getToolMeta&&await this.isToolPublic()){this.grant();return}throw new dL1("Authentication required. Please provide a valid OAuth token or API key.")}let X=Y.length>0?Y:this.toolName?[this.toolName]:[];if(X.length===0)throw new I70("No resources specified for access check");for(let Q of X)if(await this.checkResource(Q)){this.grant();return}throw new I70(`Access denied to: ${X.join(", ")}`)}async checkResource(Y){if(!this.userId&&!this.boundAuth)return!1;if(this.role==="admin"||this.role==="owner")return!0;if(!this.boundAuth)return!1;let X={};if(this.connectionId)X[this.connectionId]=[Y];return this.boundAuth.hasPermission(X)}async isToolPublic(){if(this.toolName?.startsWith("MESH_PUBLIC_"))return!0;if(!this.getToolMeta)return!1;try{let Y=await this.getToolMeta();if(!Y)return!1;let Q=Y[lL1]?.public_tool;return Q===!0||Q==="true"}catch{return!1}}granted(){return this._granted}}});async function pL1(Y){if(!Y.refreshToken)return{success:!1,error:"No refresh token available"};if(!Y.tokenEndpoint)return{success:!1,error:"No token endpoint available"};if(!Y.clientId)return{success:!1,error:"No client ID available"};try{let X=new URLSearchParams({grant_type:"refresh_token",refresh_token:Y.refreshToken,client_id:Y.clientId});if(Y.clientSecret)X.set("client_secret",Y.clientSecret);if(Y.scope)X.set("scope",Y.scope);let Q=await fetch(Y.tokenEndpoint,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:X.toString()});if(!Q.ok){let G=await Q.text();console.error(`[TokenRefresh] Failed to refresh token: ${Q.status}`,G);try{let K=JSON.parse(G);return{success:!1,error:K.error_description||K.error||`Token refresh failed: ${Q.status}`}}catch{return{success:!1,error:`Token refresh failed: ${Q.status}`}}}let J=await Q.json();return{success:!0,accessToken:J.access_token,refreshToken:J.refresh_token||Y.refreshToken,expiresIn:J.expires_in,scope:J.scope}}catch(X){return console.error("[TokenRefresh] Error refreshing token:",X),{success:!1,error:X instanceof Error?X.message:"Token refresh failed"}}}async function f2(Y,X,Q){let J=Y.id,G=qG0(Y.configuration_state,Y.configuration_scopes),K=X.auth.user?.id??X.auth.apiKey?.userId??(Q?Y.created_by:void 0),[W,Z]=K?await bL1({sub:K,user:{id:K},metadata:{state:Y.configuration_state??void 0,meshUrl:process.env.MESH_URL??X.baseUrl,connectionId:J,organizationId:X.organization?.id},permissions:G}).then((B)=>[B,null]).catch((B)=>[null,B]):[null,Error("User ID required to issue configuration token")];if(Z)console.error("Failed to issue configuration token:",W);let H=X.auth.user?.connectionId,F={...H?{"x-caller-id":H}:{},...X.metadata.wellKnownForwardableHeaders??{},"x-request-id":X.metadata.requestId},V=null,$=new ZK(X.db,X.vault),q=await $.get(J);if(q){let B=!!q.refreshToken&&!!q.tokenEndpoint;if($.isExpired(q,B?300000:0))if(B){console.log(`[Proxy] Token expired for ${J}, attempting refresh`);let O=await pL1(q);if(O.success&&O.accessToken)await $.upsert({connectionId:J,accessToken:O.accessToken,refreshToken:O.refreshToken??q.refreshToken,scope:O.scope??q.scope,expiresAt:O.expiresIn?new Date(Date.now()+O.expiresIn*1000):null,clientId:q.clientId,clientSecret:q.clientSecret,tokenEndpoint:q.tokenEndpoint}),V=O.accessToken,console.log(`[Proxy] Token refreshed for ${J}`);else await $.delete(J),console.error(`[Proxy] Token refresh failed for ${J}: ${O.error}`)}else await $.delete(J),console.log(`[Proxy] Token expired without refresh capability for ${J}`);else V=q.accessToken}if(!V&&Y.connection_token)V=Y.connection_token;if(V)F.Authorization=`Bearer ${V}`;if(W)F["x-mesh-token"]=W;return F}var R70=S(()=>{zG0();w70();Gu()});function cL1(Y){let X=new iP({command:Y.command,args:Y.args,env:Y.env,cwd:Y.cwd,stderr:"pipe"}),Q=Y.name||Y.id,J="\x1B[2m",G="\x1B[0m";return X.stderr?.on("data",(K)=>{let W=K.toString().trimEnd();if(W)console.error(`${W} \x1B[2m[${Q}]\x1B[0m`)}),X}var nL1=S(()=>{L50()});async function iL1(Y,X,Q=!1){let J=Y.id;switch(Y.connection_type){case"STDIO":{if(process.env.UNSAFE_ALLOW_STDIO_TRANSPORT!=="true")throw Error("STDIO connections are disabled in production. Set UNSAFE_ALLOW_STDIO_TRANSPORT=true to enable.");let G=Y.connection_headers;if(!BW(G))throw Error("STDIO connection missing parameters");let K=cL1({id:J,name:Y.title,command:G.command,args:G.args,env:G.envVars,cwd:G.cwd});return X.getOrCreateClient(K,J)}case"HTTP":case"Websocket":{if(!Y.connection_url)throw Error(`${Y.connection_type} connection missing URL`);let G=await f2(Y,X,Q),K=Y.connection_headers;if(K&&"headers"in K)Object.assign(G,K.headers);let W=new P3(new URL(Y.connection_url),{requestInit:{headers:G}});return X.getOrCreateClient(W,J)}case"SSE":{if(!Y.connection_url)throw Error("SSE connection missing URL");let G=await f2(Y,X,Q),K=Y.connection_headers;if(K&&"headers"in K)Object.assign(G,K.headers);let W=new u$(new URL(Y.connection_url),{requestInit:{headers:G}});return X.getOrCreateClient(W,J)}default:throw Error(`Unknown connection type: ${Y.connection_type}`)}}var aL1=S(()=>{tZ();kx();vP();R70();nL1()});class rL1{factory;promise=null;constructor(Y){this.factory=Y}getOrCreatePromise(){if(!this.promise)this.promise=this.factory();return this.promise}then(Y,X){return this.getOrCreatePromise().then(Y,X)}catch(Y){return this.getOrCreatePromise().catch(Y)}finally(Y){return this.getOrCreatePromise().finally(Y)}}function e$(Y){return new rL1(Y)}async function FJ4(Y,X){let Q=await Promise.all(Y.map(async(J)=>{try{let G=await X.createMCPProxy(J);return[J.id,G]}catch(G){return console.warn(`[aggregator] Failed to create proxy for connection ${J.id}:`,G),null}}));return new Map(Q.filter((J)=>!!J))}async function oL1(Y){let X=[];for(let[,Q]of Y)X.push(Q.close().catch(()=>{}));await Promise.all(X)}var ZO;var j70=S(()=>{kD();ZO=class ZO extends R5{options;ctx;_cachedTools;_cachedResources;_cachedPrompts;_clients;_connections;_selectionMap;constructor(Y,X){super({name:"virtual-mcp-passthrough",version:"1.0.0"},{capabilities:{tasks:{list:{},cancel:{},requests:{tool:{call:{}}}}}});this.options=Y;this.ctx=X;this._selectionMap=new Map;for(let Q of Y.virtualMcp.connections)this._selectionMap.set(Q.connection_id,Q);this._connections=new Map;for(let Q of Y.connections)this._connections.set(Q.id,Q);this._clients=e$(()=>FJ4(this.options.connections,this.ctx)),this._cachedTools=e$(()=>this.loadCache("tools")),this._cachedResources=e$(()=>this.loadCache("resources")),this._cachedPrompts=e$(()=>this.loadCache("prompts"))}async loadCache(Y){let X=await this._clients,Q=await Promise.all(Array.from(X.entries()).map(async([K,W])=>{try{let Z=Y==="tools"?await W.listTools().then((F)=>F.tools):Y==="resources"?await W.listResources().then((F)=>F.resources):await W.listPrompts().then((F)=>F.prompts),H=this._selectionMap.get(K);if(H?.[`selected_${Y}`]?.length){let F=new Set(H[`selected_${Y}`]);Z=Z.filter((V)=>F.has(V.name))}return{connectionId:K,data:Z}}catch(Z){return console.error(`[PassthroughClient] Failed to load cache for connection ${K}:`,Z),null}})),J=[],G=new Map;for(let K of Q){if(!K)continue;let{connectionId:W,data:Z}=K,F=this._connections.get(W)?.title??"";for(let V of Z){let $=V.name;if(G.has($))continue;let q={...V,_meta:{connectionId:W,connectionTitle:F,...V?._meta}};J.push(q),G.set($,W)}}return{data:J,mappings:G}}async listTools(){return{tools:(await this._cachedTools).data}}async callTool(Y){let[X,Q]=await Promise.all([this._cachedTools,this._clients]),J=X.mappings.get(Y.name);if(!J)return{content:[{type:"text",text:`Tool not found: ${Y.name}`}],isError:!0};let G=Q.get(J);if(!G)return{content:[{type:"text",text:`Connection not found for tool: ${Y.name}`}],isError:!0};return await G.callTool({name:Y.name,arguments:Y.arguments??{}})}async listResources(){return{resources:(await this._cachedResources).data}}async readResource(Y){let[X,Q]=await Promise.all([this._cachedResources,this._clients]),J=X.mappings.get(Y.uri);if(!J)throw Error(`Resource not found: ${Y.uri}`);let G=Q.get(J);if(!G)throw Error(`Connection not found for resource: ${Y.uri}`);return await G.readResource(Y)}async listPrompts(){return{prompts:(await this._cachedPrompts).data}}async getPrompt(Y){let[X,Q]=await Promise.all([this._cachedPrompts,this._clients]),J=X.mappings.get(Y.name);if(!J)throw Error(`Prompt not found: ${Y.name}`);let G=Q.get(J);if(!G)throw Error(`Connection not found for prompt: ${Y.name}`);return await G.getPrompt(Y)}async callStreamableTool(Y,X){let[Q,J]=await Promise.all([this._cachedTools,this._clients]),G=Q.mappings.get(Y);if(G){let W=J.get(G);if(W)return W.callStreamableTool(Y,X)}let K=await this.callTool({name:Y,arguments:X});return new Response(JSON.stringify(K),{headers:{"Content-Type":"application/json"}})}async[Symbol.asyncDispose](){let Y=await this._clients;if(Y)await oL1(Y)}async close(){let Y=await this._clients;if(Y)await oL1(Y);await super.close()}getInstructions(){return this.options.virtualMcp.metadata?.instructions??void 0}}});var sL1,VJ4,tL1,$J4,h2;var S70=S(()=>{n0();c$();j70();sL1=z.object({query:z.string().min(1).describe("Search query to find tools by name or description"),limit:z.number().default(10).describe("Maximum number of results to return")}),VJ4=z.toJSONSchema(sL1),tL1=z.object({tools:z.array(z.string()).min(1).describe("Array of tool names to get detailed schemas for")}),$J4=z.toJSONSchema(tL1);h2=class h2 extends ZO{constructor(Y,X){super(Y,X)}getSearchTool(Y){return{name:"GATEWAY_SEARCH_TOOLS",description:`Search for available tools by name or description. Returns tool names and brief descriptions without full schemas. Use this to discover tools before calling GATEWAY_DESCRIBE_TOOLS for detailed schemas. Total tools: ${Y}.`,inputSchema:VJ4}}getDescribeTool(){return{name:"GATEWAY_DESCRIBE_TOOLS",description:"Get detailed schemas for specific tools. Call after GATEWAY_SEARCH_TOOLS to get full input/output schemas.",inputSchema:$J4}}async handleSearch(Y){let X=sL1.safeParse(Y);if(!X.success)return S3({error:X.error.flatten()});let Q=await this._cachedTools,J=QK(Q.data),G=px(X.data.query,J,X.data.limit);return J2({query:X.data.query,results:G.map((K)=>({name:K.name,description:K.description,connection:K._meta.connectionTitle})),totalAvailable:J.length})}async handleDescribe(Y){let X=tL1.safeParse(Y);if(!X.success)return S3({error:X.error.flatten()});let Q=await this._cachedTools,J=QK(Q.data),G=cx(X.data.tools,J);return J2({tools:G.tools,notFound:G.notFound})}async listTools(){let Y=await this._cachedTools,X=QK(Y.data);return{tools:[this.getSearchTool(X.length),this.getDescribeTool()]}}async callTool(Y){if(Y.name==="GATEWAY_SEARCH_TOOLS")return this.handleSearch(Y.arguments??{});if(Y.name==="GATEWAY_DESCRIBE_TOOLS")return this.handleDescribe(Y.arguments??{});return{content:[{type:"text",text:`Unknown tool: ${Y.name}. Available: GATEWAY_SEARCH_TOOLS, GATEWAY_DESCRIBE_TOOLS`}],isError:!0}}async routeToolCall(Y){return ZO.prototype.callTool.call(this,Y)}}});var eL1,qJ4,k70;var Yw1=S(()=>{n0();c$();S70();eL1=z.object({code:z.string().min(1).describe("JavaScript code to execute. It runs as an async function body; you can use top-level `return` and `await`."),timeoutMs:z.number().default(3000).describe("Max execution time in milliseconds (default: 3000).")}),qJ4=z.toJSONSchema(eL1);k70=class k70 extends h2{constructor(Y,X){super(Y,X)}getRunCodeTool(){return{name:"GATEWAY_RUN_CODE",description:'Run JavaScript code in a sandbox. Code must be an ES module that `export default`s an async function that receives (tools) as its first parameter. Use GATEWAY_DESCRIBE_TOOLS to understand the input/output schemas for a tool before calling it. Use `await tools.toolName(args)` or `await tools["tool-name"](args)` to call tools.',inputSchema:qJ4}}async handleRunCode(Y){let X=eL1.safeParse(Y);if(!X.success)return S3({error:X.error.flatten()});let Q=await this._cachedTools,G={tools:QK(Q.data),callTool:async(W,Z)=>{return this.routeToolCall({name:W,arguments:Z})}},K=await nx(X.data.code,G,X.data.timeoutMs);if(K.error)return S3(K);return J2(K)}async listTools(){return{tools:[...(await super.listTools()).tools,this.getRunCodeTool()]}}async callTool(Y){if(Y.name==="GATEWAY_RUN_CODE")return this.handleRunCode(Y.arguments??{});return super.callTool(Y)}}});function Qw1(Y){let X=Y.slice().sort().join(","),Q=Xw1.get(X);if(!Q){let J=z.object({name:(Y.length>0?z.enum(Y):z.string()).describe("The name of the tool to execute"),arguments:z.record(z.string(),z.unknown()).default({}).describe("Arguments to pass to the tool")});Q={schema:J,jsonSchema:z.toJSONSchema(J)},Xw1.set(X,Q)}return Q}var Xw1,v70;var Jw1=S(()=>{n0();c$();S70();Xw1=new Map;v70=class v70 extends h2{constructor(Y,X){super(Y,X)}async getCallTool(){let Y=await this._cachedTools,Q=QK(Y.data).map((G)=>G.name),{jsonSchema:J}=Qw1(Q);return{name:"GATEWAY_CALL_TOOL",description:"Execute a tool by name. Use GATEWAY_DESCRIBE_TOOLS first to understand the input schema.",inputSchema:J}}async handleCallTool(Y){let X=await this._cachedTools,Q=QK(X.data),J=Q.map((F)=>F.name),{schema:G}=Qw1(J),K=G.safeParse(Y);if(!K.success)return S3({error:K.error.flatten()});let{name:W,arguments:Z}=K.data;if(!new Map(Q.map((F)=>[F.name,F])).has(W))return{content:[{type:"text",text:`Tool not found: ${W}. Use GATEWAY_SEARCH_TOOLS to find available tools.`}],isError:!0};return this.routeToolCall({name:W,arguments:Z})}async listTools(){let Y=await super.listTools(),X=await this.getCallTool();return{tools:[...Y.tools,X]}}async callTool(Y){if(Y.name==="GATEWAY_CALL_TOOL")return this.handleCallTool(Y.arguments??{});return super.callTool(Y)}}});function _70(Y){switch(Y){case"smart_tool_selection":return"smart_tool_selection";case"code_execution":return"code_execution";case"passthrough":default:return"passthrough"}}function zJ4(Y,X){if(Y.connection_type!=="VIRTUAL")return!1;if(!X||sZ(X))return!1;return Y.id===X}async function Gw1(Y,X){let Q=Y.id,J=await X.storage.virtualMcps.findById(Q);if(!J)throw Error(`Virtual MCP not found: ${Q}`);return b2(J,X,"passthrough")}async function b2(Y,X,Q){let G=Y.connections.map((H)=>H.connection_id).map((H)=>X.storage.connections.findById(H)),Z={connections:(await Promise.all(G)).filter((H)=>H!==null&&H.status==="active"&&!zJ4(H,Y.id)),virtualMcp:Y};return Q==="smart_tool_selection"?new v70(Z,X):Q==="code_execution"?new k70(Z,X):new ZO(Z,X)}var Nu=S(()=>{j5();Yw1();j70();Jw1()});async function Ww1(Y,X,Q=!1){if(Y.connection_type==="VIRTUAL")return Gw1(Y,X);return iL1(Y,X,Q)}var Zw1=S(()=>{aL1();Nu()});async function Lu(Y,X){let Q=Y.get("meshContext");try{let J=Y.req.header("x-org-id"),G=Y.req.header("x-org-slug"),K=J?J:G?await Q.db.selectFrom("organization").select("id").where("slug","=",G).executeTakeFirst().then((B)=>B?.id):null,W=X?X:K?Ex(K):null;if(!W)return Y.json({error:"Agent ID or organization ID is required"},400);let Z=await Q.storage.virtualMcps.findById(W,K??void 0);if(!Z)return Y.json({error:"Agent not found"},404);if(K&&Z.organization_id!==K)return Y.json({error:"Agent not found"},404);if(Z.status!=="active")return Y.json({error:`Agent is inactive: ${Z.id??"Decopilot"}`},503);Q.connectionId=Z.id??void 0;let H=await Q.db.selectFrom("organization").select(["id","slug","name"]).where("id","=",Z.organization_id).executeTakeFirst();if(H)Q.organization={id:H.id,slug:H.slug,name:H.name};let F=_70(Y.req.query("mode")),V=await b2(Z,Q,F),$=gP(V,{name:`mcp-virtual-mcp-${Z.title??"Decopilot"}`,version:"1.0.0"},{capabilities:{tools:{},resources:{},prompts:{}},instructions:Z.metadata?.instructions??void 0}),q=new g$({enableJsonResponse:Y.req.header("Accept")?.includes("application/json")??!1});return await $.connect(q),await q.handleRequest(Y.req.raw)}catch(J){let G=J;return console.error("[virtual-mcp] Error handling virtual MCP request:",G),Y.json({error:"Internal server error",message:G.message},500)}}var y70,Kw1;var f70=S(()=>{j5();fx();vG();Nu();y70=new O9;y70.all("/gateway/:virtualMcpId?",async(Y)=>{let X=Y.req.param("virtualMcpId")||Y.req.header("x-virtual-mcp-id");return Lu(Y,X)});y70.all("/virtual-mcp/:virtualMcpId?",async(Y)=>{let X=Y.req.param("virtualMcpId")||Y.req.header("x-virtual-mcp-id");return Lu(Y,X)});Kw1=y70});async function Hw1(Y,X){return(await X.storage.connections.findById(Y))?.connection_url??null}function BJ4(Y){let X=Y.toLowerCase();return X.includes("resource_metadata=")||X.includes("invalid_token")||X.includes("oauth")}async function Fw1(Y,X={}){try{let Q=await fetch(Y,{method:"POST",headers:{...X,"Content-Type":"application/json",Accept:"application/json, text/event-stream"},body:JSON.stringify({jsonrpc:"2.0",id:0,method:"initialize",params:{protocolVersion:"2025-06-18",capabilities:{},clientInfo:{name:"mcp-mesh-proxy",version:"1.0.0"}}})});if(Q.status===401){let J=Q.headers.get("WWW-Authenticate");if(J){if(BJ4(J))return J}if(await UJ4(Y))return'Bearer realm="mcp"'}return null}catch{return null}}async function UJ4(Y){try{let X=new URL(Y),Q=new URL("/.well-known/oauth-authorization-server",X.origin),J=await fetch(Q.toString(),{method:"GET",headers:{Accept:"application/json"}});if(J.ok){let G=await J.json();if(G.authorization_endpoint||G.token_endpoint||G.issuer)return!0}return!1}catch{return!1}}async function Mu(Y){let Q=new URL(Y).pathname;if(Q.endsWith("/"))Q=Q.slice(0,-1);let J=new URL(Y);J.pathname=`${Q}/.well-known/oauth-protected-resource`;let G=await fetch(J.toString(),{method:"GET",headers:{Accept:"application/json"}});if(G.ok)return G;if(!h70.includes(G.status))return G;let K=new URL(Y);if(K.pathname=`/.well-known/oauth-protected-resource${Q}`,G=await fetch(K.toString(),{method:"GET",headers:{Accept:"application/json"}}),!h70.includes(G.status))return G;let W=new URL(Y);return W.pathname="/.well-known/oauth-protected-resource",G=await fetch(W.toString(),{method:"GET",headers:{Accept:"application/json"}}),G}async function DJ4(Y,X){let Q=await Hw1(Y,X);if(!Q)return null;let J;try{J=new URL(Q).origin}catch{return null}try{let G=await Mu(Q);if(G.ok){let K=await G.json();if(K.authorization_servers?.[0])return K.authorization_servers[0]}}catch{}return J}async function Vw1(Y){let X=Y.get("meshContext");if(!X)X=await f3.create(Y.req.raw),Y.set("meshContext",X);return X}async function $w1({error:Y,reqUrl:X,connectionId:Q,connectionUrl:J,headers:G}){let K=Y.message?.toLowerCase()??"";if(!(Y.status===401||Y.code===401||Y.message?.includes("401")||K.includes("unauthorized")||K.includes("invalid_token")||K.includes("api key required")||K.includes("api-key required")))return null;if(Boolean(await Fw1(J,G)))return new Response(null,{status:401,headers:{"WWW-Authenticate":`Bearer realm="mcp",resource_metadata="${X.origin}/mcp/${Q}/.well-known/oauth-protected-resource"`}});return new Response(JSON.stringify({error:"unauthorized",message:"Authentication required but server does not support OAuth"}),{status:401,headers:{"Content-Type":"application/json"}})}async function b70(Y){let Q=new URL(Y).pathname;if(Q.endsWith("/"))Q=Q.slice(0,-1);let J=Q!==""&&Q!=="/",G=[];if(J){let W=new URL(Y);W.pathname=`/.well-known/oauth-authorization-server${Q}`,G.push(W);let Z=new URL(Y);Z.pathname=`/.well-known/openid-configuration${Q}`,G.push(Z);let H=new URL(Y);H.pathname=`${Q}/.well-known/openid-configuration`,G.push(H)}else{let W=new URL(Y);W.pathname="/.well-known/oauth-authorization-server",G.push(W);let Z=new URL(Y);Z.pathname="/.well-known/openid-configuration",G.push(Z)}let K=null;for(let W of G){if(K=await fetch(W.toString(),{method:"GET",headers:{Accept:"application/json"}}),K.ok)return K;if(K.status!==404&&K.status!==401)return K}return K}var wu,h70,qw1=(Y)=>{if(!(Y.hostname==="localhost"||Y.hostname==="127.0.0.1"))Y.protocol="https:";return Y},zw1=async(Y)=>{let X=Y.req.param("connectionId"),Q=await Vw1(Y),J=await Hw1(X,Q);if(!J)return Y.json({error:"Connection not found"},404);let G=qw1(new URL(Y.req.url)),K=`${G.origin}/mcp/${X}`,W=`${G.origin}/oauth-proxy/${X}`;try{let Z=await Mu(J);if(!Z.ok&&h70.includes(Z.status)){if(await Fw1(J))return new Response(JSON.stringify({resource:K,authorization_servers:[W],bearer_methods_supported:["header"],scopes_supported:["*"]}),{status:200,headers:{"Content-Type":"application/json"}});return new Response(Z.body,{status:Z.status,statusText:Z.statusText,headers:{"Content-Type":"application/json"}})}if(!Z.ok)return new Response(Z.body,{status:Z.status,statusText:Z.statusText,headers:{"Content-Type":"application/json"}});let H=await Z.json();if("issuer"in H&&!("resource"in H)&&(("authorization_endpoint"in H)||("token_endpoint"in H))){let $={resource:K,authorization_servers:[W],bearer_methods_supported:["header"],scopes_supported:"scopes_supported"in H&&Array.isArray(H.scopes_supported)&&H.scopes_supported.length>0?H.scopes_supported:["*"]};return new Response(JSON.stringify($),{status:200,headers:{"Content-Type":"application/json"}})}let V={...H,resource:K,authorization_servers:[W]};return new Response(JSON.stringify(V),{status:Z.status,statusText:Z.statusText,headers:{"Content-Type":"application/json"}})}catch(Z){let H=Z;return console.error("[oauth-proxy] Failed to proxy OAuth protected resource metadata:",H),Y.json({error:"Failed to proxy OAuth metadata",message:H.message},502)}},Bw1;var x70=S(()=>{vG();Au();wu=new O9,h70=[404,401,406];wu.get("/.well-known/oauth-protected-resource/mcp/:connectionId",(Y)=>zw1(Y));wu.get("/mcp/:connectionId/.well-known/oauth-protected-resource",(Y)=>zw1(Y));wu.get("/.well-known/oauth-authorization-server/oauth-proxy/:connectionId",async(Y)=>{let X=Y.req.param("connectionId"),Q=await Vw1(Y),J=await DJ4(X,Q);if(!J)return Y.json({error:"Connection not found or no auth server"},404);try{let G=await b70(J);if(!G.ok)return new Response(G.body,{status:G.status,statusText:G.statusText,headers:{"Content-Type":"application/json"}});let K=await G.json(),Z=`${qw1(new URL(Y.req.url)).origin}/oauth-proxy/${X}`,H={...K,authorization_endpoint:K.authorization_endpoint?`${Z}/authorize`:void 0,token_endpoint:K.token_endpoint?`${Z}/token`:void 0,registration_endpoint:K.registration_endpoint?`${Z}/register`:void 0};return new Response(JSON.stringify(H),{status:200,headers:{"Content-Type":"application/json"}})}catch(G){let K=G;return console.error("[oauth-proxy] Failed to proxy auth server metadata:",K),Y.json({error:"Failed to proxy auth server metadata",message:K.message},502)}});Bw1=wu});function OJ4(Y){if(!Y.isError)return;let X=Y.content;if(!Array.isArray(X))return;for(let Q of X)if(Q&&typeof Q==="object"&&"type"in Q&&Q.type==="text"&&"text"in Q&&typeof Q.text==="string")return Q.text;return}function NJ4(Y){if(!Y)return;let X=Y._meta;if(!X||typeof X!=="object"||Array.isArray(X))return;let Q=X.properties;if(!Q||typeof Q!=="object"||Array.isArray(Q))return;let J={};for(let[G,K]of Object.entries(Q))if(typeof K==="string")J[G]=K;return Object.keys(J).length>0?J:void 0}function LJ4(Y,X){if(!Y&&!X)return;if(!Y)return X;if(!X)return Y;return{...X,...Y}}function Dw1(Y){if(Y&&typeof Y==="object"&&!Array.isArray(Y)){let X=Y,Q=X.structuredContent;if(Q&&typeof Q==="object"&&!Array.isArray(Q))return Q;return X}return{value:Y}}async function wJ4(Y,X){let Q=Y.body;if(!Q)return{text:"",truncated:!1};let J=Q.getReader(),G=new TextDecoder,K=!1,W=0,Z=[];try{while(!0){let{value:H,done:F}=await J.read();if(F)break;if(H){if(W+=H.byteLength,W>X){K=!0;let V=X-(W-H.byteLength);if(V>0)Z.push(G.decode(H.slice(0,V),{stream:!0}));break}Z.push(G.decode(H,{stream:!0}))}}}finally{J.releaseLock()}return Z.push(G.decode()),{text:Z.join(""),truncated:K}}async function x2(Y){let{ctx:X,enabled:Q}=Y,J=Y.organizationId??X.organization?.id;if(!Q||!J)return;if(sZ(Y.connectionId))return;let G=NJ4(Y.request.params.arguments),K=LJ4(X.metadata.properties,G),W=X.auth.user?.id||X.auth.apiKey?.userId;if(W)try{let Z=await X.storage.tags.getUserTagsInOrg(W,J);if(Z.length>0){let H=Z.map((F)=>F.name).join(",");K={...K,user_tags:H}}}catch{}await X.storage.monitoring.log({organizationId:J,connectionId:Y.connectionId,connectionTitle:Y.connectionTitle,toolName:Y.request.params.name,input:Y.request.params.arguments??{},output:Y.output,isError:Y.isError,errorMessage:Y.errorMessage,durationMs:Y.durationMs,timestamp:new Date,userId:X.auth.user?.id||X.auth.apiKey?.userId||null,requestId:X.metadata.requestId,userAgent:X.metadata.userAgent,virtualMcpId:Y.virtualMcpId,properties:K})}function Ow1(Y){let{ctx:X,enabled:Q,connectionId:J,connectionTitle:G,virtualMcpId:K}=Y;return async(W,Z)=>{let H=Date.now();try{let F=await Z(),V=Date.now()-H;return await x2({ctx:X,enabled:Q,connectionId:J,connectionTitle:G,virtualMcpId:K,request:W,output:Dw1(F),isError:Boolean(F.isError),errorMessage:OJ4(F),durationMs:V}),F}catch(F){let V=F,$=Date.now()-H;throw await x2({ctx:X,enabled:Q,connectionId:J,connectionTitle:G,virtualMcpId:K,request:W,output:{},isError:!0,errorMessage:V.message,durationMs:$}),F}}}function Nw1(Y){let{ctx:X,enabled:Q,connectionId:J,connectionTitle:G,virtualMcpId:K}=Y;return async(W,Z)=>{let H=Date.now();try{let F=await Z(),V=X.organization?.id;if(Q&&V){let $=F.clone();(async()=>{try{let{text:q,truncated:B}=await wJ4($,Uw1),D=Date.now()-H,O=$.headers.get("content-type")??"",L=q;if(O.includes("application/json"))try{L=q.length?JSON.parse(q):null}catch{L=q}let w=F.status>=400,R=w&&L&&typeof L==="object"&&"error"in L?L.error:void 0,P=typeof R==="string"&&R?R:w&&typeof L==="string"&&L.trim()?L.slice(0,500):w?`HTTP ${F.status} ${F.statusText}`.trim():B?`Response body truncated to ${Uw1} bytes`:void 0;await x2({ctx:X,enabled:Q,organizationId:V,connectionId:J,connectionTitle:G,virtualMcpId:K,request:W,output:Dw1(L),isError:w,errorMessage:P,durationMs:D})}catch(q){let B=Date.now()-H;await x2({ctx:X,enabled:Q,organizationId:V,connectionId:J,connectionTitle:G,virtualMcpId:K,request:W,output:{},isError:!0,errorMessage:`Failed to read streamable response body: ${q.message}`,durationMs:B})}})()}return F}catch(F){let V=F,$=Date.now()-H;throw await x2({ctx:X,enabled:Q,connectionId:J,connectionTitle:G,virtualMcpId:K,request:W,output:{},isError:!0,errorMessage:V.message,durationMs:$}),F}}}var Uw1=262144;var Lw1=S(()=>{j5()});function MJ4(Y,X,Q){return async(J,G)=>{try{let K=J.params.name,W=async()=>{let{tools:H}=await Q();return H.find((V)=>V.name===K)?._meta};return await new y3(Y.authInstance,Y.auth.user?.id??Y.auth.apiKey?.userId,K,Y.boundAuth,Y.auth.user?.role,X,W).check(K),await G()}catch(K){return{content:[{type:"text",text:`Authorization failed: ${K.message}`}],isError:!0}}}}function AJ4(Y,X,Q){return async(J,G)=>{try{let K=J.params.name,W=async()=>{let{tools:H}=await Q();return H.find((V)=>V.name===K)?._meta};return await new y3(Y.authInstance,Y.auth.user?.id??Y.auth.apiKey?.userId,K,Y.boundAuth,Y.auth.user?.role,X,W).check(K),await G()}catch(K){return new Response(JSON.stringify({error:`Authorization failed: ${K.message}`}),{status:403,headers:{"Content-Type":"application/json"}})}}}function Yq(Y){return{client:{callTool:Y.callTool.bind(Y),listTools:Y.listTools.bind(Y)},callStreamableTool:Y.callStreamableTool.bind(Y)}}async function ww1(Y,X,{superUser:Q}){let J=typeof Y==="string"?await X.storage.connections.findById(Y,X.organization?.id):Y;if(!J)throw Error("Connection not found");let G=J?.id;if(X.organization&&J.organization_id!==X.organization.id)throw Error("Connection does not belong to the active organization");if(X.organization??={id:J.organization_id},J.status!=="active")throw Error(`Connection inactive: ${J.status}`);let K=await Ww1(J,X,Q),W=async()=>{if(J.tools&&J.tools.length>0)return{tools:J.tools.map((w)=>({name:w.name,description:w.description,inputSchema:w.inputSchema,outputSchema:w.outputSchema,annotations:w.annotations,_meta:w._meta}))};return await K.listTools()},Z=X.connectionId&&X.connectionId!==G?X.connectionId:void 0,H={enabled:FT0().enabled,connectionId:G,connectionTitle:J.title,virtualMcpId:Z,ctx:X},F=async(w)=>{return aP(Ow1(H),Q?async(P,T)=>await T():MJ4(X,G,W))(w,async()=>{let P=Date.now(),T={...w.params};if(T.arguments&&"_meta"in T.arguments){let{_meta:A,...I}=T.arguments;T.arguments=I}return await X.tracer.startActiveSpan("mcp.proxy.callTool",{attributes:{"connection.id":G,"tool.name":w.params.name,"request.id":X.metadata.requestId}},async(A)=>{try{let I=await K.callTool(T,void 0,{timeout:u70}),j=Date.now()-P;return X.meter.createHistogram("connection.proxy.duration").record(j,{"connection.id":G,"tool.name":w.params.name,status:"success"}),X.meter.createCounter("connection.proxy.requests").add(1,{"connection.id":G,"tool.name":w.params.name,status:"success"}),A.end(),I}catch(I){let j=I,k=Date.now()-P;throw X.meter.createHistogram("connection.proxy.duration").record(k,{"connection.id":G,"tool.name":w.params.name,status:"error"}),X.meter.createCounter("connection.proxy.errors").add(1,{"connection.id":G,"tool.name":w.params.name,error:j.message}),A.recordException(j),A.end(),I}})})};return{callTool:(w)=>F({method:"tools/call",params:w}),listTools:W,listResources:async()=>{try{return await K.listResources()}catch(w){if(w instanceof $1&&w.code===O1.MethodNotFound)return{resources:[]};throw w}},readResource:async(w)=>K.readResource(w),listResourceTemplates:async()=>{try{return await K.listResourceTemplates()}catch(w){if(w instanceof $1&&w.code===O1.MethodNotFound)return{resourceTemplates:[]};throw w}},listPrompts:async()=>{try{return await K.listPrompts()}catch(w){if(w instanceof $1&&w.code===O1.MethodNotFound)return{prompts:[]};throw w}},getPrompt:async(w)=>K.getPrompt(w),getServerCapabilities:()=>TJ4,getInstructions:()=>K.getInstructions(),close:()=>K.close(),callStreamableTool:async(w,R)=>{if(J.connection_type==="VIRTUAL"){let I=await F({method:"tools/call",params:{name:w,arguments:R}});return new Response(JSON.stringify(I),{headers:{"Content-Type":"application/json"}})}if(!J.connection_url)throw Error("Streamable tools require HTTP connection with URL");let P=J.connection_url,T={method:"tools/call",params:{name:w,arguments:R}};return aP(Nw1(H),Q?async(I,j)=>await j():AJ4(X,G,W))(T,async()=>{let I=await f2(J,X,Q),j=J.connection_headers;if(j&&"headers"in j)Object.assign(I,j.headers);let k=new URL(P);return k.pathname=k.pathname.replace(/\/$/,"")+`/call-tool/${T.params.name}`,await X.tracer.startActiveSpan("mcp.proxy.callStreamableTool",{attributes:{"connection.id":G,"tool.name":T.params.name,"request.id":X.metadata.requestId}},async(y)=>{let f=Date.now();try{let h=await fetch(k.toString(),{method:"POST",redirect:"manual",body:JSON.stringify(T.params.arguments),headers:{...I,"Content-Type":"application/json"}}),s=Date.now()-f;return X.meter.createHistogram("connection.proxy.streamable.duration").record(s,{"connection.id":G,"tool.name":T.params.name,status:h.ok?"success":"error"}),X.meter.createCounter("connection.proxy.streamable.requests").add(1,{"connection.id":G,"tool.name":T.params.name,status:h.ok?"success":"error"}),y.end(),h}catch(h){let s=h,u=Date.now()-f;throw X.meter.createHistogram("connection.proxy.streamable.duration").record(u,{"connection.id":G,"tool.name":T.params.name,status:"error"}),X.meter.createCounter("connection.proxy.streamable.errors").add(1,{"connection.id":G,"tool.name":T.params.name,error:s.message}),y.recordException(s),y.end(),h}})})},[Symbol.asyncDispose]:()=>K.close()}}async function Mw1(Y,X){return ww1(Y,X,{superUser:!1})}async function Aw1(Y,X){return ww1(Y,X,{superUser:!0})}var Tu,u70=300000,TJ4,Tw1=(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)},Pw1;var Xq=S(()=>{Rv();Zw1();R70();j5();fx();UX();vG();Ou();f70();x70();Lw1();Tu=new O9;TJ4={tools:{},resources:{},prompts:{}};Tu.all("/",async(Y)=>{return Lu(Y,void 0)});Tu.all("/:connectionId",async(Y)=>{let X=Y.req.param("connectionId"),Q=Y.get("meshContext");try{try{let J=await Q.createMCPProxy(X),G=gP(J,{name:"mcp-mesh",version:"1.0.0"}),K=new g$({enableJsonResponse:Y.req.raw.headers.get("Accept")?.includes("application/json")??!1});return await G.connect(K),await K.handleRequest(Y.req.raw)}catch(J){let G=await Q.storage.connections.findById(X,Q.organization?.id);if(G?.connection_url){let K=await $w1({error:J,reqUrl:new URL(Y.req.raw.url),connectionId:X,connectionUrl:G.connection_url,headers:{}});if(K)return K}throw J}}catch(J){return Tw1(J,Y)}});Tu.all("/:connectionId/call-tool/:toolName",async(Y)=>{let X=Y.req.param("connectionId"),Q=Y.req.param("toolName"),J=Y.get("meshContext");try{let K=await(await J.createMCPProxy(X)).callTool({name:Q,arguments:await Y.req.json()});if(K instanceof Response)return K;if(K.isError)return new Response(JSON.stringify(K.content),{headers:{"Content-Type":"application/json"},status:500});return new Response(JSON.stringify(K.structuredContent??K.content),{headers:{"Content-Type":"application/json"}})}catch(G){return Tw1(G,Y)}});Pw1=Tu});class g70{db;constructor(Y){this.db=Y}async create(Y){let X=Y.id??P8("thrd"),Q=new Date().toISOString();if(!Y.organizationId)throw Error("organizationId is required");if(!Y.createdBy)throw Error("createdBy is required");if(!Y.title)Y.title="New Thread - "+Q;let J={id:X,organization_id:Y.organizationId,title:Y.title,description:Y.description??null,created_at:Q,updated_at:Q,created_by:Y.createdBy,updated_by:Y.updatedBy??null},G=await this.db.insertInto("threads").values(J).returningAll().executeTakeFirstOrThrow();return this.threadFromDbRow(G)}async get(Y){let X=await this.db.selectFrom("threads").selectAll().where("id","=",Y).executeTakeFirst();return X?this.threadFromDbRow(X):null}async update(Y,X){let J={updated_at:new Date().toISOString()};if(X.title!==void 0)J.title=X.title;if(X.description!==void 0)J.description=X.description;if(X.updatedBy!==void 0)J.updated_by=X.updatedBy;if(X.hidden!==void 0)J.hidden=X.hidden;await this.db.updateTable("threads").set(J).where("id","=",Y).execute();let G=await this.get(Y);if(!G)throw Error("Thread not found after update");return G}async delete(Y){await this.db.deleteFrom("threads").where("id","=",Y).execute()}async list(Y,X,Q){let J=this.db.selectFrom("threads").selectAll().where("organization_id","=",Y).where("hidden","=",!1).orderBy("updated_at","desc");if(X)J=J.where("created_by","=",X);let G=this.db.selectFrom("threads").select((Z)=>Z.fn.count("id").as("count")).where("organization_id","=",Y).where("hidden","=",!1);if(X)G=G.where("created_by","=",X);if(Q?.limit)J=J.limit(Q.limit);if(Q?.offset)J=J.offset(Q.offset);let[K,W]=await Promise.all([J.execute(),G.executeTakeFirst()]);return{threads:K.map((Z)=>this.threadFromDbRow(Z)),total:Number(W?.count||0)}}async saveMessages(Y){let X=new Date().toISOString(),Q=Y[0]?.threadId;if(!Q)throw Error("threadId is required when creating multiple messages");let J=Y.find((K)=>K.threadId!==Q);if(J)throw Error(`All messages must target the same thread. Expected threadId "${Q}", but message "${J.id}" has threadId "${J.threadId}"`);let G=Y.map((K)=>({id:K.id,thread_id:Q,metadata:K.metadata?JSON.stringify(K.metadata):null,parts:JSON.stringify(K.parts),role:K.role,created_at:K.createdAt??X,updated_at:X}));await this.db.transaction().execute(async(K)=>{await K.insertInto("thread_messages").values(G).execute(),await K.updateTable("threads").set({updated_at:X}).where("id","=",Q).execute()})}async listMessages(Y,X){let Q=this.db.selectFrom("thread_messages").selectAll().where("thread_id","=",Y).orderBy("created_at","asc").orderBy("id","asc"),J=this.db.selectFrom("thread_messages").select((W)=>W.fn.count("id").as("count")).where("thread_id","=",Y);if(X?.limit)Q=Q.limit(X.limit);if(X?.offset)Q=Q.offset(X.offset);let[G,K]=await Promise.all([Q.execute(),J.executeTakeFirst()]);return{messages:G.map((W)=>this.messageFromDbRow(W)),total:Number(K?.count||0)}}threadFromDbRow(Y){return{id:Y.id,organizationId:Y.organization_id,title:Y.title,description:Y.description,createdAt:typeof Y.created_at==="string"?Y.created_at:Y.created_at.toISOString(),updatedAt:typeof Y.updated_at==="string"?Y.updated_at:Y.updated_at.toISOString(),createdBy:Y.created_by,updatedBy:Y.updated_by,hidden:!!Y.hidden}}messageFromDbRow(Y){let X,Q;try{X=Y.metadata?JSON.parse(Y.metadata):void 0}catch(J){console.error(`Failed to parse metadata for message ${Y.id}:`,Y.metadata,J),X=void 0}try{Q=typeof Y.parts==="string"?JSON.parse(Y.parts):Y.parts}catch(J){console.error(`Failed to parse parts for message ${Y.id}:`,Y.parts,J),Q=[]}return{id:Y.id,threadId:Y.thread_id,metadata:X,parts:Q,role:Y.role,createdAt:typeof Y.created_at==="string"?Y.created_at:Y.created_at.toISOString(),updatedAt:typeof Y.updated_at==="string"?Y.updated_at:Y.updated_at.toISOString()}}}var Ew1=S(()=>{UW()});function Cw1(){let Y=new Map;function X(J,G){let K=Y.get(G);if(K)return console.log(`[ClientPool] Reusing cached client for ${G}`),K;let W=new R5({name:`outbound-client-${G}`,version:"1.0.0"},{capabilities:{tasks:{list:{},cancel:{},requests:{tool:{call:{}}}}}});W.onclose=()=>{Y.delete(G)};let Z=W.connect(J,{timeout:30000}).then(()=>W).catch((H)=>{throw Y.delete(G),H});return Y.set(G,Z),Z}return Object.assign(X,{[Symbol.asyncDispose]:async()=>{let J=[];for(let[G,K]of Y)J.push(K.then((W)=>W.close()).catch((W)=>console.error(`[ClientPool] Error closing client ${G}:`,W)));await Promise.all(J),Y.clear()}})}var Iw1=S(()=>{kD()});function PJ4(Y){if(!Y)return;try{let X=JSON.parse(Y);if(typeof X!=="object"||X===null||Array.isArray(X))return;let Q={};for(let[J,G]of Object.entries(X))if(typeof G==="string")Q[J]=G;return Object.keys(Q).length>0?Q:void 0}catch{return}}function EJ4(Y,X){for(let[Q,J]of Object.entries(X)){let G=Y[Q];if(!G||G.length===0){let K=Y["*"];if(!K||K.length===0)return!1;if(K.includes("*"))continue;for(let W of J)if(!K.includes(W))return!1;continue}if(G.includes("*"))continue;for(let K of J)if(!G.includes(K))return!1}return!0}function CJ4(Y){let{auth:X,headers:Q,role:J,permissions:G,userId:K}=Y,W=X.api.hasPermission;return{hasPermission:async(Z)=>{if(J&&G70.includes(J))return!0;if(G)return EJ4(G,Z);if(!W)return console.error("[Auth] hasPermission API not available"),!1;try{if((await W({headers:Q,body:{permission:Z}}))?.success===!0)return!0;let F={};for(let $ of Object.keys(Z))F[$]=["*"];return(await W({headers:Q,body:{permission:F}}))?.success===!0}catch(H){return console.error("[Auth] Permission check failed:",H),!1}},organization:{create:async(Z)=>{return X.api.createOrganization({headers:Q,body:Z})},update:async(Z)=>{return X.api.updateOrganization({headers:Q,body:Z})},delete:async(Z)=>{await X.api.deleteOrganization({headers:Q,body:{organizationId:Z}})},get:async(Z)=>{return X.api.getFullOrganization({headers:Q,query:Z?{organizationId:Z}:void 0})},list:async(Z)=>{return X.api.listOrganizations({headers:Q,query:Z?{userId:Z}:void 0})},addMember:async(Z)=>{return X.api.addMember({headers:Q,body:Z})},removeMember:async(Z)=>{await X.api.removeMember({headers:Q,body:Z})},listMembers:async(Z)=>{return X.api.listMembers({headers:Q,query:Z?{organizationId:Z.organizationId,limit:Z.limit,offset:Z.offset}:void 0})},updateMemberRole:async(Z)=>{return X.api.updateMemberRole({headers:Q,body:Z})}},apiKey:{create:async(Z)=>{return X.api.createApiKey({body:{...Z,userId:K}})},list:async()=>{return X.api.listApiKeys({headers:Q})},update:async(Z)=>{return X.api.updateApiKey({body:{...Z,userId:K}})},delete:async(Z)=>{await X.api.deleteApiKey({headers:Q,body:{keyId:Z}})}}}}async function IJ4(Y,X,Q){if(G70.includes(Q))return;let J=await Y.selectFrom("organizationRole").select(["permission"]).where("organizationId","=",X).where("role","=",Q).executeTakeFirst();if(!J?.permission)return;try{return JSON.parse(J.permission)}catch{console.error(`[Auth] Failed to parse permissions for role: ${Q}`);return}}async function RJ4(Y,X,Q,J=jw1){let G=Y.headers.get("Authorization");try{let K=new Headers(Y.headers);K.set("X-MCP-Session-Auth","true");let W=await J.measure("auth_get_mcp_session",()=>X.api.getMcpSession({headers:K}));if(W){let Z=W.userId,H=await J.measure("auth_query_membership",()=>Q.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["member.role","member.organizationId","organization.id as orgId","organization.slug as orgSlug","organization.name as orgName"]).where("member.userId","=",Z).executeTakeFirst()),F=H?.role,V=H?{id:H.orgId,slug:H.orgSlug,name:H.orgName}:void 0,$;if(H&&F)$=await J.measure("auth_fetch_role_permissions",()=>IJ4(Q,H.organizationId,F));return{user:{id:Z,role:F},role:F,permissions:$,organization:V}}}catch(K){console.error("[Auth] OAuth session check failed:",K)}if(G?.startsWith("Bearer ")){let K=G.replace("Bearer ","").trim();try{let W=await J.measure("auth_verify_mesh_jwt",()=>xL1(K));if(W){let Z,H=W.metadata?.organizationId;if(W.sub&&H)Z=(await J.measure("auth_query_membership",()=>Q.selectFrom("member").select(["member.role"]).where("member.userId","=",W.sub).where("member.organizationId","=",H).executeTakeFirst()))?.role;return{user:{id:W.sub,connectionId:W.metadata?.connectionId,role:Z},role:Z,permissions:W.permissions,organization:W.metadata?.organizationId?{id:W.metadata?.organizationId}:void 0}}}catch{}try{let W=await J.measure("auth_verify_api_key",()=>X.api.verifyApiKey({body:{key:K}}));if(W?.valid&&W.key){let Z=W.key.metadata?.organization,H=W.key.permissions,F,V=W.key.userId;if(V&&Z?.id)F=(await J.measure("auth_query_membership",()=>Q.selectFrom("member").select(["member.role"]).where("member.userId","=",V).where("member.organizationId","=",Z.id).executeTakeFirst()))?.role;return{apiKeyId:W.key.id,user:{id:W.key.userId,role:F},role:F,permissions:H,organization:Z?{id:Z.id,slug:Z.slug,name:Z.name}:void 0}}}catch(W){console.error("[Auth] API key check failed:",W)}}try{let K=await J.measure("auth_get_session",()=>X.api.getSession({headers:Y.headers}));if(K){let W,Z;if(K.session.activeOrganizationId){let H=await J.measure("auth_get_full_organization",()=>X.api.getFullOrganization({headers:Y.headers}).catch(()=>null));if(H)W={id:H.id,slug:H.slug,name:H.name},Z=H.members?.find((V)=>V.userId===K.user.id)?.role;else W={id:K.session.activeOrganizationId,slug:"",name:""}}return{user:{id:K.user.id,email:K.user.email,role:Z},role:Z,organization:W}}}catch(K){let W=K;console.error("[Auth] Session check failed:",JSON.stringify({message:W.message,body:W.body,stack:W.stack},null,2))}return{user:void 0}}async function Sw1(Y){let G=[];try{let X=new h$(Y.encryption.key);let Q={connections:new lP(Y.db,X),organizationSettings:new P70(Y.db),monitoring:new T70(Y.db,Y.databaseType),virtualMcps:new M70(Y.db),users:new C70(Y.db),threads:new g70(Y.db),tags:new E70(Y.db)};const J=gG(G,Cw1(),1);return async(F,V)=>{let $=V?.timings??jw1,q=F?.headers.get("x-caller-id")??void 0,B=F?await RJ4(F,Y.auth,Y.db,$):{user:void 0},D=CJ4({auth:Y.auth,headers:F?.headers??new Headers,role:B.role,permissions:B.permissions,userId:B.user?.id}),O={user:B.user};if(B.apiKeyId)O.apiKey={id:B.apiKeyId,name:"",userId:""};let L=B.organization,w=F?process.env.BASE_URL??`${new URL(F.url).origin}`:t5(),R=new y3(Y.auth,O.user?.id,void 0,D,B.role,"self"),P={timings:$,auth:O,connectionId:q,organization:L,storage:Q,vault:X,authInstance:Y.auth,boundAuth:D,access:R,db:Y.db,tracer:Y.observability.tracer,meter:Y.observability.meter,baseUrl:w,metadata:{requestId:crypto.randomUUID(),timestamp:new Date,wellKnownForwardableHeaders:Object.fromEntries(jJ4.map((T)=>[T,F?.headers.get(T)??null]).filter(([T,A])=>A!==null)),userAgent:F?.headers.get("x-mesh-client")||F?.headers.get("User-Agent")||void 0,ipAddress:(F?.headers.get("CF-Connecting-IP")||F?.headers.get("X-Forwarded-For"))??void 0,properties:PJ4(F?.headers.get("x-mesh-properties"))},eventBus:Y.eventBus,createMCPProxy:async(T)=>{return await Mw1(T,P)},getOrCreateClient:J};return P}}catch(K){var W=K,Z=1}finally{var H=CW(G,W,Z);H&&await H}}var Rw1,f3,jw1,jJ4;var Au=S(()=>{w70();Rx();tJ0();uL1();gL1();mL1();Ou();Xq();W70();Ew1();Iw1();f3={set:(Y)=>{Rw1=Y},create:async(Y,X)=>{return await Rw1(Y,X)}},jw1={measure:async(Y,X)=>{return await X()}},jJ4=["x-hub-signature-256"]});class kw1{db;constructor(Y){this.db=Y}async publishEvent(Y){let X=new Date().toISOString();return await this.db.insertInto("events").values({id:Y.id,organization_id:Y.organizationId,type:Y.type,source:Y.source,specversion:"1.0",subject:Y.subject??null,time:Y.time,datacontenttype:Y.datacontenttype??"application/json",dataschema:Y.dataschema??null,data:Y.data?JSON.stringify(Y.data):null,cron:Y.cron??null,status:"pending",attempts:0,last_error:null,next_retry_at:null,created_at:X,updated_at:X}).execute(),{id:Y.id,organizationId:Y.organizationId,type:Y.type,source:Y.source,specversion:"1.0",subject:Y.subject??null,time:Y.time,datacontenttype:Y.datacontenttype??"application/json",dataschema:Y.dataschema??null,data:Y.data??null,cron:Y.cron??null,status:"pending",attempts:0,lastError:null,nextRetryAt:null,createdAt:X,updatedAt:X}}async subscribe(Y){let X=this.db.selectFrom("event_subscriptions").selectAll().where("organization_id","=",Y.organizationId).where("connection_id","=",Y.connectionId).where("event_type","=",Y.eventType);if(Y.publisher)X=X.where("publisher","=",Y.publisher);else X=X.where("publisher","is",null);if(Y.filter)X=X.where("filter","=",Y.filter);else X=X.where("filter","is",null);let Q=await X.executeTakeFirst();if(Q)return{id:Q.id,organizationId:Q.organization_id,connectionId:Q.connection_id,publisher:Q.publisher,eventType:Q.event_type,filter:Q.filter,enabled:Q.enabled===1,createdAt:Q.created_at,updatedAt:Q.updated_at};let J=new Date().toISOString();return await this.db.insertInto("event_subscriptions").values({id:Y.id,organization_id:Y.organizationId,connection_id:Y.connectionId,publisher:Y.publisher??null,event_type:Y.eventType,filter:Y.filter??null,enabled:1,created_at:J,updated_at:J}).execute(),{id:Y.id,organizationId:Y.organizationId,connectionId:Y.connectionId,publisher:Y.publisher??null,eventType:Y.eventType,filter:Y.filter??null,enabled:!0,createdAt:J,updatedAt:J}}async unsubscribe(Y,X){return{success:((await this.db.deleteFrom("event_subscriptions").where("id","=",Y).where("organization_id","=",X).executeTakeFirst()).numDeletedRows??0n)>0n}}async listSubscriptions(Y,X){let Q=this.db.selectFrom("event_subscriptions").selectAll().where("organization_id","=",Y);if(X)Q=Q.where("connection_id","=",X);return(await Q.execute()).map((G)=>({id:G.id,organizationId:G.organization_id,connectionId:G.connection_id,publisher:G.publisher,eventType:G.event_type,filter:G.filter,enabled:G.enabled===1,createdAt:G.created_at,updatedAt:G.updated_at}))}async getSubscription(Y,X){let Q=await this.db.selectFrom("event_subscriptions").selectAll().where("id","=",Y).where("organization_id","=",X).executeTakeFirst();if(!Q)return null;return{id:Q.id,organizationId:Q.organization_id,connectionId:Q.connection_id,publisher:Q.publisher,eventType:Q.event_type,filter:Q.filter,enabled:Q.enabled===1,createdAt:Q.created_at,updatedAt:Q.updated_at}}async getMatchingSubscriptions(Y){return(await this.db.selectFrom("event_subscriptions").selectAll().where("organization_id","=",Y.organizationId).where("enabled","=",1).where("event_type","=",Y.type).where((Q)=>Q.or([Q("publisher","is",null),Q("publisher","=",Y.source)])).execute()).map((Q)=>({id:Q.id,organizationId:Q.organization_id,connectionId:Q.connection_id,publisher:Q.publisher,eventType:Q.event_type,filter:Q.filter,enabled:Q.enabled===1,createdAt:Q.created_at,updatedAt:Q.updated_at}))}async createDeliveries(Y,X,Q){if(X.length===0)return;let J=new Date().toISOString(),G=Q??null,K=X.map((W)=>({id:crypto.randomUUID(),event_id:Y,subscription_id:W,status:"pending",attempts:0,last_error:null,delivered_at:null,next_retry_at:G,created_at:J}));await this.db.insertInto("event_deliveries").values(K).execute()}async claimPendingDeliveries(Y){let X=new Date().toISOString(),Q;try{Q=(await this.db.updateTable("event_deliveries").set({status:"processing"}).where("id","in",(K)=>K.selectFrom("event_deliveries as d").innerJoin("event_subscriptions as s","s.id","d.subscription_id").select("d.id").where("d.status","=","pending").where("s.enabled","=",1).where((W)=>W.or([W("d.next_retry_at","is",null),W("d.next_retry_at","<=",X)])).orderBy("d.created_at","asc").limit(Y)).where("status","=","pending").returning(["id"]).execute()).map((K)=>K.id)}catch{let G=await this.db.selectFrom("event_deliveries as d").innerJoin("event_subscriptions as s","s.id","d.subscription_id").select(["d.id"]).where("d.status","=","pending").where("s.enabled","=",1).where((K)=>K.or([K("d.next_retry_at","is",null),K("d.next_retry_at","<=",X)])).orderBy("d.created_at","asc").limit(Y).execute();if(G.length===0)return[];Q=G.map((K)=>K.id),await this.db.updateTable("event_deliveries").set({status:"processing"}).where("id","in",Q).where("status","=","pending").execute()}if(Q.length===0)return[];return(await this.db.selectFrom("event_deliveries as d").innerJoin("events as e","e.id","d.event_id").innerJoin("event_subscriptions as s","s.id","d.subscription_id").select(["d.id as delivery_id","d.event_id","d.subscription_id","d.status as delivery_status","d.attempts as delivery_attempts","d.last_error as delivery_last_error","d.delivered_at","d.next_retry_at as delivery_next_retry_at","d.created_at as delivery_created_at","e.organization_id","e.type","e.source","e.specversion","e.subject","e.time","e.datacontenttype","e.dataschema","e.data","e.cron","e.status as event_status","e.attempts as event_attempts","e.last_error as event_last_error","e.next_retry_at","e.created_at as event_created_at","e.updated_at as event_updated_at","s.connection_id","s.publisher","s.event_type","s.filter","s.enabled","s.created_at as subscription_created_at","s.updated_at as subscription_updated_at"]).where("d.id","in",Q).where("d.status","=","processing").execute()).map((G)=>({delivery:{id:G.delivery_id,eventId:G.event_id,subscriptionId:G.subscription_id,status:G.delivery_status,attempts:G.delivery_attempts,lastError:G.delivery_last_error,deliveredAt:G.delivered_at,nextRetryAt:G.delivery_next_retry_at,createdAt:G.delivery_created_at},event:{id:G.event_id,organizationId:G.organization_id,type:G.type,source:G.source,specversion:G.specversion,subject:G.subject,time:G.time,datacontenttype:G.datacontenttype,dataschema:G.dataschema,data:G.data?JSON.parse(G.data):null,cron:G.cron,status:G.event_status,attempts:G.event_attempts,lastError:G.event_last_error,nextRetryAt:G.next_retry_at,createdAt:G.event_created_at,updatedAt:G.event_updated_at},subscription:{id:G.subscription_id,organizationId:G.organization_id,connectionId:G.connection_id,publisher:G.publisher,eventType:G.event_type,filter:G.filter,enabled:G.enabled===1,createdAt:G.subscription_created_at,updatedAt:G.subscription_updated_at}}))}async markDeliveriesDelivered(Y){if(Y.length===0)return;let X=new Date().toISOString();await this.db.updateTable("event_deliveries").set({status:"delivered",delivered_at:X}).where("id","in",Y).execute()}async markDeliveriesFailed(Y,X,Q=20,J=1000,G=3600000){if(Y.length===0)return;for(let K of Y){let W=await this.db.selectFrom("event_deliveries").select(["attempts"]).where("id","=",K).executeTakeFirst();if(!W)continue;let Z=W.attempts+1;if(Z>=Q)await this.db.updateTable("event_deliveries").set({attempts:Z,last_error:X,status:"failed",next_retry_at:null}).where("id","=",K).execute();else{let H=Math.min(J*Math.pow(2,Z-1),G),F=new Date(Date.now()+H).toISOString();await this.db.updateTable("event_deliveries").set({attempts:Z,last_error:X,status:"pending",next_retry_at:F}).where("id","=",K).execute()}}}async updateEventStatus(Y){let X=await this.db.selectFrom("event_deliveries").select(["status"]).where("event_id","=",Y).execute();if(X.length===0)return;let Q=X.every((K)=>K.status==="delivered"),J=X.some((K)=>K.status==="failed"),G=X.some((K)=>K.status==="pending"||K.status==="processing");if(Q)await this.db.updateTable("events").set({status:"delivered",updated_at:new Date().toISOString()}).where("id","=",Y).execute();else if(J&&!G)await this.db.updateTable("events").set({status:"failed",updated_at:new Date().toISOString()}).where("id","=",Y).execute()}async resetStuckDeliveries(){let Y=await this.db.updateTable("event_deliveries").set({status:"pending"}).where("status","=","processing").executeTakeFirst();return Number(Y.numUpdatedRows??0)}async getEvent(Y,X){let Q=await this.db.selectFrom("events").selectAll().where("id","=",Y).where("organization_id","=",X).executeTakeFirst();if(!Q)return null;return{id:Q.id,organizationId:Q.organization_id,type:Q.type,source:Q.source,specversion:Q.specversion,subject:Q.subject,time:Q.time,datacontenttype:Q.datacontenttype,dataschema:Q.dataschema,data:Q.data?JSON.parse(Q.data):null,cron:Q.cron,status:Q.status,attempts:Q.attempts,lastError:Q.last_error,nextRetryAt:Q.next_retry_at,createdAt:Q.created_at,updatedAt:Q.updated_at}}async findActiveCronEvent(Y,X,Q,J){let G=await this.db.selectFrom("events").selectAll().where("organization_id","=",Y).where("type","=",X).where("source","=",Q).where("cron","=",J).where("status","in",["pending","processing","delivered"]).orderBy("created_at","desc").executeTakeFirst();if(!G)return null;return{id:G.id,organizationId:G.organization_id,type:G.type,source:G.source,specversion:G.specversion,subject:G.subject,time:G.time,datacontenttype:G.datacontenttype,dataschema:G.dataschema,data:G.data?JSON.parse(G.data):null,cron:G.cron,status:G.status,attempts:G.attempts,lastError:G.last_error,nextRetryAt:G.next_retry_at,createdAt:G.created_at,updatedAt:G.updated_at}}async cancelEvent(Y,X,Q){let J=await this.db.updateTable("events").set({status:"failed",last_error:"Cancelled by publisher",updated_at:new Date().toISOString()}).where("id","=",Y).where("organization_id","=",X).where("source","=",Q).where("status","in",["pending","processing"]).executeTakeFirst();if((J.numUpdatedRows??0n)>0n)await this.db.updateTable("event_deliveries").set({status:"failed",last_error:"Event cancelled by publisher"}).where("event_id","=",Y).where("status","in",["pending","processing"]).execute();return{success:(J.numUpdatedRows??0n)>0n}}async scheduleRetryWithoutAttemptIncrement(Y,X){if(Y.length===0)return;let Q=new Date(Date.now()+X).toISOString();await this.db.updateTable("event_deliveries").set({status:"pending",next_retry_at:Q}).where("id","in",Y).execute()}async ackDelivery(Y,X,Q){if(!await this.db.selectFrom("events").select(["id"]).where("id","=",Y).where("organization_id","=",X).executeTakeFirst())return{success:!1};let K=((await this.db.updateTable("event_deliveries").set({status:"delivered",delivered_at:new Date().toISOString()}).where("event_id","=",Y).where("status","in",["pending","processing"]).where((W)=>W.exists(W.selectFrom("event_subscriptions").select("id").whereRef("event_subscriptions.id","=","event_deliveries.subscription_id").where("event_subscriptions.connection_id","=",Q).where("event_subscriptions.organization_id","=",X))).executeTakeFirst()).numUpdatedRows??0n)>0n;if(K)await this.updateEventStatus(Y);return{success:K}}async syncSubscriptions(Y){let{organizationId:X,connectionId:Q,subscriptions:J}=Y,G=(w,R)=>{return`${w}::${R??""}`},K=await this.listSubscriptions(X,Q),W=new Map;for(let w of K)W.set(G(w.eventType,w.publisher),w);let Z=new Map;for(let w of J)Z.set(G(w.eventType,w.publisher),w);let H=new Date().toISOString(),F=[],V=[],$=[],q=0;for(let[w,R]of Z){let P=W.get(w);if(!P)F.push({id:crypto.randomUUID(),organization_id:X,connection_id:Q,event_type:R.eventType,publisher:R.publisher??null,filter:R.filter??null,enabled:1,created_at:H,updated_at:H});else{let T=P.filter??null,A=R.filter??null;if(T!==A)V.push({id:P.id,filter:A});else q++}}for(let[w,R]of W)if(!Z.has(w))$.push(R.id);if(F.length>0)await this.db.insertInto("event_subscriptions").values(F).execute();if(V.length>0)await Promise.all(V.map((w)=>this.db.updateTable("event_subscriptions").set({filter:w.filter,updated_at:H}).where("id","=",w.id).execute()));if($.length>0)await this.db.deleteFrom("event_subscriptions").where("id","in",$).execute();let B=F.length,D=V.length,O=$.length,L=await this.listSubscriptions(X,Q);return{created:B,updated:D,deleted:O,unchanged:q,subscriptions:L}}}function vw1(Y){return new kw1(Y)}function LX(Y,X,Q,J,G,K,W,Z){return LX.fromTZ(LX.tp(Y,X,Q,J,G,K,W),Z)}function m70(Y,X=new Date){let Q=X.toLocaleString("en-US",{timeZone:Y,timeZoneName:"shortOffset"}).split(" ").slice(-1)[0],J=X.toLocaleString("en-US").replace(/[\u202f]/," ");return Date.parse(`${J} GMT`)-Date.parse(`${J} ${Q}`)}function SJ4(Y,X){let Q=new Date(Date.parse(Y));if(isNaN(Q))throw Error("minitz: Invalid ISO8601 passed to parser.");let J=Y.substring(9);return Y.includes("Z")||J.includes("-")||J.includes("+")?LX.tp(Q.getUTCFullYear(),Q.getUTCMonth()+1,Q.getUTCDate(),Q.getUTCHours(),Q.getUTCMinutes(),Q.getUTCSeconds(),"Etc/UTC"):LX.tp(Q.getFullYear(),Q.getMonth()+1,Q.getDate(),Q.getHours(),Q.getMinutes(),Q.getSeconds(),X)}function kJ4(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 k5(Y.startAt,Y.timezone)),Y.stopAt&&(Y.stopAt=new k5(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 u2(Y){return Object.prototype.toString.call(Y)==="[object Function]"||typeof Y=="function"||Y instanceof Function}function vJ4(Y){return u2(Y)}function _J4(Y){typeof Deno<"u"&&typeof Deno.unrefTimer<"u"?Deno.unrefTimer(Y):Y&&typeof Y.unref<"u"&&Y.unref()}var l70=32,g2,hw1,_w1=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 k5(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,g2),this.dayOfWeek[7]&&(this.dayOfWeek[0]=this.dayOfWeek[7])}partToArray(Y,X,Q,J){let G=this[Y],K=Y==="day"&&this.lastDayOfMonth;if(X===""&&!K)throw TypeError("CronPattern: configuration entry "+Y+" ("+X+") is empty, check for trailing spaces.");if(X==="*")return G.fill(J);let W=X.split(",");if(W.length>1)for(let Z=0;Z<W.length;Z++)this.partToArray(Y,W[Z],Q,J);else X.indexOf("-")!==-1&&X.indexOf("/")!==-1?this.handleRangeWithStepping(X,Y,Q,J):X.indexOf("-")!==-1?this.handleRange(X,Y,Q,J):X.indexOf("/")!==-1?this.handleStepping(X,Y,Q,J):X!==""&&this.handleNumber(X,Y,Q,J)}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,Q,J){let G=this.extractNth(Y,X),K=parseInt(G[0],10)+Q;if(isNaN(K))throw TypeError("CronPattern: "+X+" is not a number: '"+Y+"'");this.setPart(X,K,G[1]||J)}setPart(Y,X,Q){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,Q);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]=Q}handleRangeWithStepping(Y,X,Q,J){let G=this.extractNth(Y,X),K=G[0].match(/^(\d+)-(\d+)\/(\d+)$/);if(K===null)throw TypeError("CronPattern: Syntax error, illegal range with stepping: '"+Y+"'");let[,W,Z,H]=K,F=parseInt(W,10)+Q,V=parseInt(Z,10)+Q,$=parseInt(H,10);if(isNaN(F))throw TypeError("CronPattern: Syntax error, illegal lower range (NaN)");if(isNaN(V))throw TypeError("CronPattern: Syntax error, illegal upper range (NaN)");if(isNaN($))throw TypeError("CronPattern: Syntax error, illegal stepping: (NaN)");if($===0)throw TypeError("CronPattern: Syntax error, illegal stepping: 0");if($>this[X].length)throw TypeError("CronPattern: Syntax error, steps cannot be greater than maximum value of part ("+this[X].length+")");if(F>V)throw TypeError("CronPattern: From value is larger than to value: '"+Y+"'");for(let q=F;q<=V;q+=$)this.setPart(X,q,G[1]||J)}extractNth(Y,X){let Q=Y,J;if(Q.includes("#")){if(X!=="dayOfWeek")throw Error("CronPattern: nth (#) only allowed in day-of-week field");J=Q.split("#")[1],Q=Q.split("#")[0]}return[Q,J]}handleRange(Y,X,Q,J){let G=this.extractNth(Y,X),K=G[0].split("-");if(K.length!==2)throw TypeError("CronPattern: Syntax error, illegal range: '"+Y+"'");let W=parseInt(K[0],10)+Q,Z=parseInt(K[1],10)+Q;if(isNaN(W))throw TypeError("CronPattern: Syntax error, illegal lower range (NaN)");if(isNaN(Z))throw TypeError("CronPattern: Syntax error, illegal upper range (NaN)");if(W>Z)throw TypeError("CronPattern: From value is larger than to value: '"+Y+"'");for(let H=W;H<=Z;H++)this.setPart(X,H,G[1]||J)}handleStepping(Y,X,Q,J){let G=this.extractNth(Y,X),K=G[0].split("/");if(K.length!==2)throw TypeError("CronPattern: Syntax error, illegal stepping: '"+Y+"'");K[0]===""&&(K[0]="*");let W=0;K[0]!=="*"&&(W=parseInt(K[0],10)+Q);let Z=parseInt(K[1],10);if(isNaN(Z))throw TypeError("CronPattern: Syntax error, illegal stepping: (NaN)");if(Z===0)throw TypeError("CronPattern: Syntax error, illegal stepping: 0");if(Z>this[X].length)throw TypeError("CronPattern: Syntax error, max steps for part is ("+this[X].length+")");for(let H=W;H<this[X].length;H+=Z)this.setPart(X,H,G[1]||J)}replaceAlphaDays(Y){return Y.replace(/-sun/gi,"-7").replace(/sun/gi,"0").replace(/mon/gi,"1").replace(/tue/gi,"2").replace(/wed/gi,"3").replace(/thu/gi,"4").replace(/fri/gi,"5").replace(/sat/gi,"6")}replaceAlphaMonths(Y){return Y.replace(/jan/gi,"1").replace(/feb/gi,"2").replace(/mar/gi,"3").replace(/apr/gi,"4").replace(/may/gi,"5").replace(/jun/gi,"6").replace(/jul/gi,"7").replace(/aug/gi,"8").replace(/sep/gi,"9").replace(/oct/gi,"10").replace(/nov/gi,"11").replace(/dec/gi,"12")}handleNicknames(Y){let 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]|l70;else if(X===g2)this.dayOfWeek[Y]=g2;else if(X<6&&X>0)this.dayOfWeek[Y]=this.dayOfWeek[Y]|hw1[X-1];else throw TypeError(`CronPattern: nth weekday out of range, should be 1-5 or L. Value: ${X}, Type: ${typeof X}`)}},yw1,VK,k5=class Y{tz;ms;second;minute;hour;day;month;year;constructor(X,Q){if(this.tz=Q,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,Q,J,G){let K=new Date(Date.UTC(X,Q,J)).getUTCDay(),W=0;for(let Z=1;Z<=J;Z++)new Date(Date.UTC(X,Q,Z)).getUTCDay()===K&&W++;if(G&g2&&hw1[W-1]&G)return!0;if(G&l70){let Z=new Date(Date.UTC(X,Q+1,0)).getUTCDate();for(let H=J+1;H<=Z;H++)if(new Date(Date.UTC(X,Q,H)).getUTCDay()===K)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 Q=LX.toTZ(X,this.tz);this.ms=X.getMilliseconds(),this.second=Q.s,this.minute=Q.i,this.hour=Q.h,this.day=Q.d,this.month=Q.m-1,this.year=Q.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>yw1[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 Q=LX.fromTZISO(X);this.ms=Q.getUTCMilliseconds(),this.second=Q.getUTCSeconds(),this.minute=Q.getUTCMinutes(),this.hour=Q.getUTCHours(),this.day=Q.getUTCDate(),this.month=Q.getUTCMonth(),this.year=Q.getUTCFullYear(),this.apply()}else return this.fromDate(LX.fromTZISO(X,this.tz))}findNext(X,Q,J,G){let K=this[Q],W;J.lastDayOfMonth&&(this.month!==1?W=yw1[this.month]:W=new Date(Date.UTC(this.year,this.month+1,0,0,0,0,0)).getUTCDate());let Z=!J.starDOW&&Q=="day"?new Date(Date.UTC(this.year,this.month,1,0,0,0,0)).getUTCDay():void 0;for(let H=this[Q]+G;H<J[Q].length;H++){let F=J[Q][H];if(Q==="day"&&J.lastDayOfMonth&&H-G==W&&(F=1),Q==="day"&&!J.starDOW){let V=J.dayOfWeek[(Z+(H-G-1))%7];if(V&&V&g2)V=this.isNthWeekdayOfMonth(this.year,this.month,H-G,V)?1:0;else if(V)throw Error(`CronDate: Invalid value for dayOfWeek encountered. ${V}`);X.legacyMode&&!J.starDOM?F=F||V:F=F&&V}if(F)return this[Q]=H-G,K!==this[Q]?2:1}return 3}recurse(X,Q,J){let G=this.findNext(Q,VK[J][0],X,VK[J][2]);if(G>1){let K=J+1;for(;K<VK.length;)this[VK[K][0]]=-VK[K][2],K++;if(G===3)return this[VK[J][1]]++,this[VK[J][0]]=-VK[J][2],this.apply(),this.recurse(X,Q,0);if(this.apply())return this.recurse(X,Q,J-1)}return J+=1,J>=VK.length?this:this.year>=3000?null:this.recurse(X,Q,J)}increment(X,Q,J){return this.second+=Q.interval!==void 0&&Q.interval>1&&J?Q.interval:1,this.ms=0,this.apply(),this.recurse(X,Q,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)):LX.fromTZ(LX.tp(this.year,this.month+1,this.day,this.hour,this.minute,this.second,this.tz),!1)}getTime(){return this.getDate(!1).getTime()}},fw1=30000,Pu,Eu=class{name;options;_states;fn;constructor(Y,X,Q){let J,G;if(u2(X))G=X;else if(typeof X=="object")J=X;else if(X!==void 0)throw Error("Cron: Invalid argument passed for optionsIn. Should be one of function, or object (options).");if(u2(Q))G=Q;else if(typeof Q=="object")J=Q;else if(Q!==void 0)throw Error("Cron: Invalid argument passed for funcIn. Should be one of function, or object (options).");if(this.name=J?.name,this.options=kJ4(J),this._states={kill:!1,blocking:!1,previousRun:void 0,currentRun:void 0,once:void 0,currentTimeout:void 0,maxRuns:J?J.maxRuns:void 0,paused:J?J.paused:!1,pattern:new _w1("* * * * *")},Y&&(Y instanceof Date||typeof Y=="string"&&Y.indexOf(":")>0)?this._states.once=new k5(Y,this.options.timezone||this.options.utcOffset):this._states.pattern=new _w1(Y,this.options.timezone),this.name){if(Pu.find((K)=>K.name===this.name))throw Error("Cron: Tried to initialize new named job '"+this.name+"', but name already taken.");Pu.push(this)}return G!==void 0&&vJ4(G)&&(this.fn=G,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 Q=[],J=X||this._states.currentRun||void 0;for(;Y--&&(J=this.nextRun(J));)Q.push(J);return Q}getPattern(){return this._states.pattern?this._states.pattern.pattern:void 0}isRunning(){let Y=this.nextRun(this._states.currentRun),X=!this._states.paused,Q=this.fn!==void 0,J=!this._states.kill;return X&&Q&&J&&Y!==null}isStopped(){return this._states.kill}isBusy(){return this._states.blocking}currentRun(){return this._states.currentRun?this._states.currentRun.getDate():null}previousRun(){return this._states.previousRun?this._states.previousRun.getDate():null}msToNext(Y){let X=this._next(Y);return X?Y instanceof k5||Y instanceof Date?X.getTime()-Y.getTime():X.getTime()-new k5(Y).getTime():null}stop(){this._states.kill=!0,this._states.currentTimeout&&clearTimeout(this._states.currentTimeout);let Y=Pu.indexOf(this);Y>=0&&Pu.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(),Q=this.nextRun(this._states.currentRun);return X==null||isNaN(X)||Q===null?this:(X>fw1&&(X=fw1),this._states.currentTimeout=setTimeout(()=>this._checkTrigger(Q),X),this._states.currentTimeout&&this.options.unref&&_J4(this._states.currentTimeout),this)}async _trigger(Y){if(this._states.blocking=!0,this._states.currentRun=new k5(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){u2(this.options.catch)&&this.options.catch(X,this)}else this.fn!==void 0&&await this.fn(this,this.options.context);this._states.previousRun=new k5(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,Q=!this._states.paused&&X.getTime()>=Y.getTime(),J=this._states.blocking&&this.options.protect;Q&&!J?(this._states.maxRuns!==void 0&&this._states.maxRuns--,this._trigger()):Q&&J&&u2(this.options.protect)&&setTimeout(()=>this.options.protect(this),0),this.schedule()}_next(Y){let X=!!(Y||this._states.currentRun),Q=!1;!Y&&this.options.startAt&&this.options.interval&&([Y,X]=this._calculatePreviousRun(Y,X),Q=!Y),Y=new k5(Y,this.options.timezone||this.options.utcOffset),this.options.startAt&&Y&&Y.getTime()<this.options.startAt.getTime()&&(Y=this.options.startAt);let J=this._states.once||new k5(Y,this.options.timezone||this.options.utcOffset);return!Q&&J!==this._states.once&&(J=J.increment(this._states.pattern,this.options,X)),this._states.once&&this._states.once.getTime()<=Y.getTime()||J===null||this._states.maxRuns!==void 0&&this._states.maxRuns<=0||this._states.kill||this.options.stopAt&&J.getTime()>=this.options.stopAt.getTime()?null:J}_calculatePreviousRun(Y,X){let Q=new k5(void 0,this.options.timezone||this.options.utcOffset),J=Y;if(this.options.startAt.getTime()<=Q.getTime()){J=this.options.startAt;let G=J.getTime()+this.options.interval*1000;for(;G<=Q.getTime();)J=new k5(J,this.options.timezone||this.options.utcOffset).increment(this._states.pattern,this.options,!0),G=J.getTime()+this.options.interval*1000;X=!0}return J===null&&(J=void 0),[J,X]}};var d70=S(()=>{LX.fromTZISO=(Y,X,Q)=>LX.fromTZ(SJ4(Y,X),Q);LX.fromTZ=function(Y,X){let Q=new Date(Date.UTC(Y.y,Y.m-1,Y.d,Y.h,Y.i,Y.s)),J=m70(Y.tz,Q),G=new Date(Q.getTime()-J),K=m70(Y.tz,G);if(K-J===0)return G;{let W=new Date(Q.getTime()-K),Z=m70(Y.tz,W);if(Z-K===0)return W;if(!X&&Z-K>0)return W;if(X)throw Error("Invalid date passed to fromTZ()");return G}};LX.toTZ=function(Y,X){let Q=Y.toLocaleString("en-US",{timeZone:X}).replace(/[\u202f]/," "),J=new Date(Q);return{y:J.getFullYear(),m:J.getMonth()+1,d:J.getDate(),h:J.getHours(),i:J.getMinutes(),s:J.getSeconds(),tz:X}};LX.tp=(Y,X,Q,J,G,K,W)=>({y:Y,m:X,d:Q,h:J,i:G,s:K,tz:W});LX.minitz=LX;g2=31|l70,hw1=[1,2,4,8,16],yw1=[31,28,31,30,31,30,31,31,30,31,30,31],VK=[["month","year",0],["day","month",-1],["hour","day",0],["minute","hour",0],["second","minute",0]];Pu=[]});var Cu;var p70=S(()=>{Cu={pollIntervalMs:5000,batchSize:100,maxAttempts:20,retryDelayMs:1000,maxDelayMs:3600000}});function bw1(){return async(Y,X)=>{try{let Q=await f3.create(),J=await Aw1(Y,Q),K=await ZG0.forClient(Yq(J)).ON_EVENTS({events:X});return{success:K.success,error:K.error,retryAfter:K.retryAfter,results:K.results}}catch(Q){let J=Q instanceof Error?Q.message:String(Q);return console.error(`[EventBus] Failed to notify connection ${Y}:`,J),{success:!1,error:J}}}}var xw1=S(()=>{Au();tx();Xq()});function uw1(Y){return{specversion:"1.0",id:Y.id,source:Y.source,type:Y.type,time:Y.time,subject:Y.subject??void 0,datacontenttype:Y.datacontenttype,dataschema:Y.dataschema??void 0,data:Y.data??void 0}}function yJ4(Y){let X=new Map;for(let J of Y){let G=J.subscription.connectionId,K=X.get(G);if(K){if(K.deliveryIds.push(J.delivery.id),!K.seenEventIds.has(J.event.id))K.seenEventIds.add(J.event.id),K.events.push(uw1(J.event))}else X.set(G,{connectionId:J.subscription.connectionId,deliveryIds:[J.delivery.id],events:[uw1(J.event)],seenEventIds:new Set([J.event.id])})}let Q=new Map;for(let[J,G]of X)Q.set(J,{connectionId:G.connectionId,deliveryIds:G.deliveryIds,events:G.events});return Q}class c70{storage;notifySubscriber;running=!1;processing=!1;config;constructor(Y,X){this.storage=Y;this.notifySubscriber=bw1(),this.config={...Cu,...X}}async start(){if(this.running)return;let Y=await this.storage.resetStuckDeliveries();if(Y>0)console.log(`[EventBus] Reset ${Y} stuck deliveries from previous shutdown`);this.running=!0}stop(){this.running=!1,console.log("[EventBus] Worker stopped")}isRunning(){return this.running}async processNow(){if(!this.running)return;if(this.processing)return;this.processing=!0;try{await this.processEvents()}catch(Y){console.error("[EventBus] Error processing events:",Y)}finally{this.processing=!1}}async processEvents(){let Y=await this.storage.claimPendingDeliveries(this.config.batchSize);if(Y.length===0)return;let X=yJ4(Y),Q=new Set;for(let[J,G]of X){try{let K=await this.notifySubscriber(G.connectionId,G.events);if(K.results&&Object.keys(K.results).length>0)await this.processPerEventResults(G,K);else if(K.success)await this.storage.markDeliveriesDelivered(G.deliveryIds);else if(K.retryAfter&&K.retryAfter>0)await this.storage.scheduleRetryWithoutAttemptIncrement(G.deliveryIds,K.retryAfter);else await this.storage.markDeliveriesFailed(G.deliveryIds,K.error||"Subscriber returned success=false",this.config.maxAttempts,this.config.retryDelayMs,this.config.maxDelayMs)}catch(K){let W=K instanceof Error?K.message:String(K);console.error(`[EventBus] Failed to notify subscription ${J}:`,W),await this.storage.markDeliveriesFailed(G.deliveryIds,W,this.config.maxAttempts,this.config.retryDelayMs,this.config.maxDelayMs)}for(let K of Y)if(G.deliveryIds.includes(K.delivery.id))Q.add(K.event.id)}for(let J of Q)try{await this.storage.updateEventStatus(J);let G=Y.find((K)=>K.event.id===J)?.event;if(G?.cron)await this.scheduleNextCronDelivery(G)}catch(G){console.error(`[EventBus] Failed to update event status ${J}:`,G)}}async processPerEventResults(Y,X){let Q=[],J=new Map,G=[],K=new Map;for(let W=0;W<Y.events.length;W++){let Z=Y.events?.[W];if(!Z)continue;let H=Y.deliveryIds?.[W];if(!H)continue;K.set(Z.id,H)}for(let W of Y.events){let Z=K.get(W.id);if(!Z)continue;let H=X.results?.[W.id];if(H)if(H.success)Q.push(Z);else if(H.retryAfter&&H.retryAfter>0){let F=J.get(H.retryAfter)||[];F.push(Z),J.set(H.retryAfter,F)}else G.push({deliveryId:Z,error:H.error||"Event processing failed"});else if(X.success)Q.push(Z);else if(X.retryAfter&&X.retryAfter>0){let F=J.get(X.retryAfter)||[];F.push(Z),J.set(X.retryAfter,F)}else G.push({deliveryId:Z,error:X.error||"Batch processing failed"})}if(Q.length>0)await this.storage.markDeliveriesDelivered(Q);for(let[W,Z]of J)await this.storage.scheduleRetryWithoutAttemptIncrement(Z,W);if(G.length>0){let W=new Map;for(let{deliveryId:Z,error:H}of G){let F=W.get(H)||[];F.push(Z),W.set(H,F)}for(let[Z,H]of W)await this.storage.markDeliveriesFailed(H,Z,this.config.maxAttempts,this.config.retryDelayMs,this.config.maxDelayMs)}}async scheduleNextCronDelivery(Y){if(!Y.cron)return;try{let Q=new Eu(Y.cron).nextRun();if(!Q){console.log(`[EventBus] Cron expression for event ${Y.id} has no more runs`);return}let J=Q.toISOString(),G=await this.storage.getMatchingSubscriptions(Y);if(G.length===0){console.log(`[EventBus] No subscriptions for cron event ${Y.id}, skipping next delivery`);return}await this.storage.createDeliveries(Y.id,G.map((K)=>K.id),J),console.log(`[EventBus] Scheduled next cron delivery for event ${Y.id} at ${J}`)}catch(X){console.error(`[EventBus] Failed to schedule next cron delivery for event ${Y.id}:`,X)}}}var gw1=S(()=>{d70();p70();xw1()});class n70{storage;worker;notifyStrategy;running=!1;constructor(Y){this.storage=Y.storage,this.notifyStrategy=Y.notifyStrategy,this.worker=new c70(this.storage,Y.config)}async publish(Y,X,Q){if(Q.deliverAt&&Q.cron)throw Error("Cannot set both deliverAt and cron. Use one or the other.");let J;if(Q.cron){try{let V=new Eu(Q.cron).nextRun();if(!V)throw Error("Cron expression does not produce a next run time");J=V.toISOString()}catch(F){throw Error(`Invalid cron expression: ${F instanceof Error?F.message:String(F)}`)}let H=await this.storage.findActiveCronEvent(Y,Q.type,X,Q.cron);if(H)return H}let G=crypto.randomUUID(),K=new Date().toISOString(),W=await this.storage.publishEvent({id:G,organizationId:Y,type:Q.type,source:X,subject:Q.subject,time:K,data:Q.data,cron:Q.cron}),Z=await this.storage.getMatchingSubscriptions(W);if(Z.length>0){let H=Q.deliverAt??J;if(await this.storage.createDeliveries(G,Z.map((F)=>F.id),H),this.notifyStrategy&&!H)await this.notifyStrategy.notify(G).catch((F)=>{console.warn("[EventBus] Notify failed (non-critical):",F)})}return W}async subscribe(Y,X){return this.storage.subscribe({id:crypto.randomUUID(),organizationId:Y,connectionId:X.connectionId,publisher:X.publisher,eventType:X.eventType,filter:X.filter})}async unsubscribe(Y,X){return this.storage.unsubscribe(X,Y)}async listSubscriptions(Y,X){return this.storage.listSubscriptions(Y,X)}async getSubscription(Y,X){return this.storage.getSubscription(X,Y)}async getEvent(Y,X){return this.storage.getEvent(X,Y)}async cancelEvent(Y,X,Q){return this.storage.cancelEvent(X,Y,Q)}async ackEvent(Y,X,Q){return this.storage.ackDelivery(X,Y,Q)}async syncSubscriptions(Y,X){return this.storage.syncSubscriptions({organizationId:Y,...X})}async start(){if(this.running)return;if(this.running=!0,await this.worker.start(),this.notifyStrategy)await this.notifyStrategy.start(()=>{this.worker.processNow().catch((Y)=>{console.error("[EventBus] Error processing after notify:",Y)})});await this.worker.processNow().catch((Y)=>{console.error("[EventBus] Error processing pending events on startup:",Y)})}async stop(){if(!this.running)return;if(this.running=!1,this.worker.stop(),this.notifyStrategy)try{await this.notifyStrategy.stop()}catch(Y){console.error("[EventBus] Error stopping notify strategy:",Y)}console.log("[EventBus] Stopped")}isRunning(){return this.running}}var mw1=S(()=>{d70();gw1()});function lw1(...Y){return{async start(X){await Promise.all(Y.map((Q)=>Q.start(X)))},async stop(){await Promise.all(Y.map((X)=>X.stop().catch((Q)=>{console.error("[NotifyStrategy] Error stopping strategy:",Q)})))},async notify(X){await Promise.all(Y.map((Q)=>Q.notify(X).catch((J)=>{console.warn("[NotifyStrategy] Notify failed (non-critical):",J)})))}}}class Iu{intervalMs;timer=null;onNotify=null;constructor(Y){this.intervalMs=Y}async start(Y){if(this.timer)return;this.onNotify=Y,this.scheduleNext(),console.log(`[Polling] Started polling every ${this.intervalMs}ms`)}async stop(){if(this.timer)clearTimeout(this.timer),this.timer=null,console.log("[Polling] Stopped polling");this.onNotify=null}async notify(Y){if(this.onNotify)this.onNotify()}scheduleNext(){this.timer=setTimeout(()=>{if(this.onNotify)this.onNotify();if(this.timer)this.scheduleNext()},this.intervalMs)}}import{sql as fJ4}from"kysely";class i70{db;pool;listenClient=null;onNotify=null;constructor(Y,X){this.db=Y;this.pool=X}async start(Y){if(this.listenClient)return;this.onNotify=Y;try{this.listenClient=await this.pool.connect(),this.listenClient.on("notification",(X)=>{if(X.channel===KO&&this.onNotify)this.onNotify()}),this.listenClient.on("error",(X)=>{console.error("[PostgresNotify] Connection error:",X),this.cleanup()}),await this.listenClient.query(`LISTEN ${KO}`),console.log("[PostgresNotify] Started LISTEN on",KO)}catch(X){console.error("[PostgresNotify] Failed to start LISTEN:",X),this.cleanup()}}async stop(){if(this.listenClient){try{await this.listenClient.query(`UNLISTEN ${KO}`),console.log("[PostgresNotify] Stopped LISTEN on",KO)}catch{}this.cleanup()}}async notify(Y){try{await fJ4`SELECT pg_notify(${KO}, ${Y})`.execute(this.db)}catch(X){console.warn("[PostgresNotify] Failed to send NOTIFY:",X)}}cleanup(){if(this.listenClient)this.listenClient.release(),this.listenClient=null;this.onNotify=null}}var KO="mesh_events";var dw1=()=>{};function pw1(Y,X){let Q=vw1(Y.db),J=X?.pollIntervalMs??Cu.pollIntervalMs,G=Y.type==="postgres"?lw1(new Iu(J),new i70(Y.db,Y.pool)):new Iu(J);return new n70({storage:Q,config:X,notifyStrategy:G})}var cw1=S(()=>{mw1();p70();dw1()});var nw1;var iw1=S(()=>{nw1={google:{name:"Google",icon:"https://assets.decocache.com/webdraw/eb7480aa-a68b-4ce4-98ff-36aa121762a7/google.svg"},github:{name:"GitHub",icon:"https://assets.decocache.com/webdraw/5f999dcb-c8a6-4572-948c-9996ef1d502f/github.svg"},microsoft:{name:"Microsoft",icon:"https://assets.decocache.com/mcp/aa6f6e1a-6526-4bca-99cc-82e2ec38b0e4/microsoft.png"}}});var aw1,rw1;var ow1=S(()=>{vG();QO();iw1();aw1=new O9;aw1.get("/config",async(Y)=>{try{let X=Object.keys(D9.socialProviders??{}),Q=X.length>0,J=X.map((W)=>({name:W,icon:nw1[W].icon})),G=process.env.UNSAFE_ALLOW_STDIO_TRANSPORT==="true",K={emailAndPassword:{enabled:D9.emailAndPassword?.enabled??!1},magicLink:{enabled:D9.magicLinkConfig?.enabled??!1},socialProviders:{enabled:Q,providers:J},sso:D9.ssoConfig?{enabled:!0,providerId:D9.ssoConfig.providerId}:{enabled:!1},stdioEnabled:G};return Y.json({success:!0,config:K})}catch(X){let Q=X instanceof Error?X.message:"Failed to load auth config";return Y.json({success:!1,error:Q},500)}});rw1=aw1});function _G(Y){if(Y==null)return"unknown error";if(typeof Y==="string")return Y;if(Y instanceof Error)return Y.message;return JSON.stringify(Y)}var EM1="vercel.ai.error",hJ4,sw1,tw1,w1,CM1="AI_APICallError",IM1,bJ4,ew1,YM1,X9,RM1="AI_EmptyResponseBodyError",jM1,xJ4,XM1,QM1,SM1,kM1="AI_InvalidArgumentError",vM1,uJ4,JM1,GM1,_M1,yM1="AI_InvalidPromptError",fM1,gJ4,WM1,ZM1,Qq,hM1="AI_InvalidResponseDataError",bM1,mJ4,KM1,HM1,rM8,xM1="AI_JSONParseError",uM1,lJ4,FM1,VM1,m2,gM1="AI_LoadAPIKeyError",mM1,dJ4,$M1,qM1,oM8,lM1="AI_LoadSettingError",dM1,pJ4,zM1,BM1,sM8,pM1="AI_NoContentGeneratedError",cM1,cJ4,UM1,DM1,tM8,nM1="AI_NoSuchModelError",iM1,nJ4,OM1,NM1,eM8,aM1="AI_TooManyEmbeddingValuesForCallError",rM1,iJ4,LM1,wM1,YA8,oM1="AI_TypeValidationError",sM1,aJ4,MM1,AM1,gQ,tM1="AI_UnsupportedFunctionalityError",eM1,rJ4,TM1,PM1,YA1;var A4=S(()=>{hJ4=Symbol.for(EM1),w1=class Y extends(tw1=Error,sw1=hJ4,tw1){constructor({name:X,message:Q,cause:J}){super(Q);this[sw1]=!0,this.name=X,this.cause=J}static isInstance(X){return Y.hasMarker(X,EM1)}static hasMarker(X,Q){let J=Symbol.for(Q);return X!=null&&typeof X==="object"&&J in X&&typeof X[J]==="boolean"&&X[J]===!0}},IM1=`vercel.ai.error.${CM1}`,bJ4=Symbol.for(IM1),X9=class extends(YM1=w1,ew1=bJ4,YM1){constructor({message:Y,url:X,requestBodyValues:Q,statusCode:J,responseHeaders:G,responseBody:K,cause:W,isRetryable:Z=J!=null&&(J===408||J===409||J===429||J>=500),data:H}){super({name:CM1,message:Y,cause:W});this[ew1]=!0,this.url=X,this.requestBodyValues=Q,this.statusCode=J,this.responseHeaders=G,this.responseBody=K,this.isRetryable=Z,this.data=H}static isInstance(Y){return w1.hasMarker(Y,IM1)}},jM1=`vercel.ai.error.${RM1}`,xJ4=Symbol.for(jM1),SM1=class extends(QM1=w1,XM1=xJ4,QM1){constructor({message:Y="Empty response body"}={}){super({name:RM1,message:Y});this[XM1]=!0}static isInstance(Y){return w1.hasMarker(Y,jM1)}};vM1=`vercel.ai.error.${kM1}`,uJ4=Symbol.for(vM1),_M1=class extends(GM1=w1,JM1=uJ4,GM1){constructor({message:Y,cause:X,argument:Q}){super({name:kM1,message:Y,cause:X});this[JM1]=!0,this.argument=Q}static isInstance(Y){return w1.hasMarker(Y,vM1)}},fM1=`vercel.ai.error.${yM1}`,gJ4=Symbol.for(fM1),Qq=class extends(ZM1=w1,WM1=gJ4,ZM1){constructor({prompt:Y,message:X,cause:Q}){super({name:yM1,message:`Invalid prompt: ${X}`,cause:Q});this[WM1]=!0,this.prompt=Y}static isInstance(Y){return w1.hasMarker(Y,fM1)}},bM1=`vercel.ai.error.${hM1}`,mJ4=Symbol.for(bM1),rM8=class extends(HM1=w1,KM1=mJ4,HM1){constructor({data:Y,message:X=`Invalid response data: ${JSON.stringify(Y)}.`}){super({name:hM1,message:X});this[KM1]=!0,this.data=Y}static isInstance(Y){return w1.hasMarker(Y,bM1)}},uM1=`vercel.ai.error.${xM1}`,lJ4=Symbol.for(uM1),m2=class extends(VM1=w1,FM1=lJ4,VM1){constructor({text:Y,cause:X}){super({name:xM1,message:`JSON parsing failed: Text: ${Y}.
1216
+ VALUES (${W}, ${H.name}, ${V})
1217
+ `.execute(Y)}}if(K>0)console.log(`\u2705 ${K} plugin migration(s) completed`)}async function RN1(Y,X){await CQ4(Y,X),await IQ4(Y,X);let Q=new CN1({db:Y,provider:{getMigrations:()=>Promise.resolve(KE)}}),{error:J,results:G}=await Q.migrateToLatest();if(G?.forEach((K)=>{if(K.status==="Success")console.log(`\u2705 Migration "${K.migrationName}" executed successfully`);else if(K.status==="Error")console.error(`\u274C Failed to execute migration "${K.migrationName}"`)}),J)throw console.error("Failed to migrate"),console.error(J),J}async function jQ4(Y){let{keepOpen:X=!1,database:Q,skipBetterAuth:J=!1,seed:G}=Y??{};if(!J&&!Q)await PN1();let K=Q??w$(),W=async()=>{if(!X&&!Q)console.log("\uD83D\uDD12 Closing database connection..."),await YK1(K).catch((Z)=>{console.warn("Warning: Error closing database:",Z)})};try{console.log("\uD83D\uDCCA Running Kysely migrations..."),await RN1(K.db,K.type),console.log("\uD83C\uDF89 Core migrations completed successfully"),await RQ4(K.db);let Z;if(G)Z=await yg(K.db,G);return await W(),{seedResult:Z}}catch(Z){throw await W(),Z}}async function SQ4(){let Y=w$(),X=new CN1({db:Y.db,provider:{getMigrations:()=>Promise.resolve(KE)}}),{error:Q,results:J}=await X.migrateDown();if(J?.forEach((G)=>{if(G.status==="Success")console.log(`\u2705 Migration "${G.migrationName}" rolled back successfully`);else if(G.status==="Error")console.error(`\u274C Failed to rollback migration "${G.migrationName}"`)}),Q)throw console.error("Failed to rollback migration"),console.error(Q),Q}var SN1=S(()=>{_g();OZ0();EN1();ux();ST()});var _3;var C2=S(()=>{_3=class extends Error{res;status;constructor(Y=500,X){super(X?.message,{cause:X?.cause});this.res=X?.res,this.status=Y}getResponse(){if(this.res)return new Response(this.res.body,{status:this.status,headers:this.res.headers});return new Response(this.message,{status:this.status})}}});var kN1,kQ4,vQ4=(Y,X)=>{if(!Y)return{};let Q=new Headers(Y.headers);if(X){let J=Q.get("connection");if(J){let G=J.split(",").map((W)=>W.trim()),K=G.filter((W)=>!kQ4.test(W));if(K.length>0)throw new _3(400,{message:`Invalid Connection header value: ${K.join(", ")}`});G.forEach((W)=>{Q.delete(W)})}}return kN1.forEach((J)=>{Q.delete(J)}),{method:Y.method,body:Y.body,duplex:Y.body?"half":void 0,headers:Q,signal:Y.signal}},_Q4=(Y)=>{if(!Y.headers||Array.isArray(Y.headers)||Y.headers instanceof Headers)return Y;let X=new Headers;for(let[Q,J]of Object.entries(Y.headers))if(J==null)X.delete(Q);else X.set(Q,J);return Y.headers=X,Y},vN1=async(Y,X)=>{let{raw:Q,customFetch:J,strictConnectionProcessing:G=!1,...K}=X instanceof Request?{raw:X}:X??{},W=new Request(Y,{...vQ4(Q,G),..._Q4(K)});W.headers.delete("accept-encoding");let Z=await(J||fetch)(W),H=new Headers(Z.headers);if(kN1.forEach((F)=>{H.delete(F)}),H.has("content-encoding"))H.delete("content-encoding"),H.delete("content-length");return new Response(Z.body,{status:Z.status,statusText:Z.statusText,headers:H})};var _N1=S(()=>{C2();kN1=["connection","keep-alive","proxy-authenticate","proxy-authorization","te","trailer","transfer-encoding","upgrade"],kQ4=/^[!#$%&'*+\-.0-9A-Z^_`a-z|~]+$/});var yN1=(Y)=>(X)=>{let Q=new URL(X.req.raw.url),J=new URL(Y);return J.pathname=Q.pathname,J.search=Q.search,vN1(J,{raw:X.req.raw,headers:{...X.req.raw.headers}})};var fN1=S(()=>{_N1()});import{resolve as I2,dirname as yQ4,join as fQ4,extname as hQ4}from"path";function uQ4(Y,X){let Q=I2(X),J=I2(Y);return J===Q||J.startsWith(Q+"/")}function gQ4({requestPath:Y,clientDir:X}){let Q=Y.startsWith("/")?Y.slice(1):Y,J=I2(X,Q);if(!uQ4(J,X))return null;return J}function hN1(Y,X="../client"){let Q=new URL(Y),J=yQ4(Q.pathname);return I2(J,X)}function bN1(Y={}){let{env:X="production",devServerUrl:Q=bQ4,clientDir:J=xQ4,isServerPath:G=()=>!1}=Y;if(X==="development"){let K=yN1(Q);return async function(Z){let H=new URL(Z.url);if(G(H.pathname))return null;let F={req:{raw:Z,url:Z.url}};return K(F)}}return async function(W){if(W.method!=="GET")return null;let Z=new URL(W.url),H;try{H=decodeURIComponent(Z.pathname)}catch{return null}if(G(H))return null;let F=gQ4({requestPath:H,clientDir:J});if(!F)return null;let V=fQ4(F,"index.html"),$=I2(J,"index.html"),q=W.headers.get("accept"),D=q?.includes("text/html")||q?.includes("*/*")&&["",".html"].includes(hQ4(F))?[V,$]:[];for(let O of[F,...D])try{let L=Bun.file(O);if(await L.exists())return new Response(L)}catch{}return null}}var bQ4="http://localhost:4000",xQ4="./dist/client";var xN1=S(()=>{fN1()});function gN1(Y){if(!Y)return!1;try{return new URL(Y).host==="api.decocms.com"&&Y!=="https://api.decocms.com/mcp/registry"}catch{return!1}}var uN1="https://api.decocms.com/mcp/registry";var Z70=(Y,X,Q)=>{return(J,G)=>{let K=-1;return W(0);async function W(Z){if(Z<=K)throw Error("next() called multiple times");K=Z;let H,F=!1,V;if(Y[Z])V=Y[Z][0][0],J.req.routeIndex=Z;else V=Z===Y.length&&G||void 0;if(V)try{H=await V(J,()=>W(Z+1))}catch($){if($ instanceof Error&&X)J.error=$,H=await X($,J),F=!0;else throw $}else if(J.finalized===!1&&Q)H=await Q(J);if(H&&(J.finalized===!1||F))J.res=H;return J}}};var mN1=()=>{};var lN1;var dN1=S(()=>{lN1=Symbol()});async function mQ4(Y,X){let Q=await Y.formData();if(Q)return lQ4(Q,X);return{}}function lQ4(Y,X){let Q=Object.create(null);if(Y.forEach((J,G)=>{if(!(X.all||G.endsWith("[]")))Q[G]=J;else dQ4(Q,G,J)}),X.dot)Object.entries(Q).forEach(([J,G])=>{if(J.includes("."))pQ4(Q,J,G),delete Q[J]});return Q}var pN1=async(Y,X=Object.create(null))=>{let{all:Q=!1,dot:J=!1}=X,K=(Y instanceof Ku?Y.raw.headers:Y.headers).get("Content-Type");if(K?.startsWith("multipart/form-data")||K?.startsWith("application/x-www-form-urlencoded"))return mQ4(Y,{all:Q,dot:J});return{}},dQ4=(Y,X,Q)=>{if(Y[X]!==void 0)if(Array.isArray(Y[X]))Y[X].push(Q);else Y[X]=[Y[X],Q];else if(!X.endsWith("[]"))Y[X]=Q;else Y[X]=[Q]},pQ4=(Y,X,Q)=>{let J=Y,G=X.split(".");G.forEach((K,W)=>{if(W===G.length-1)J[K]=Q;else{if(!J[K]||typeof J[K]!=="object"||Array.isArray(J[K])||J[K]instanceof File)J[K]=Object.create(null);J=J[K]}})};var cN1=S(()=>{K70()});var F70=(Y)=>{let X=Y.split("/");if(X[0]==="")X.shift();return X},nN1=(Y)=>{let{groups:X,path:Q}=cQ4(Y),J=F70(Q);return nQ4(J,X)},cQ4=(Y)=>{let X=[];return Y=Y.replace(/\{[^}]+\}/g,(Q,J)=>{let G=`@${J}`;return X.push([G,Q]),G}),{groups:X,path:Y}},nQ4=(Y,X)=>{for(let Q=X.length-1;Q>=0;Q--){let[J]=X[Q];for(let G=Y.length-1;G>=0;G--)if(Y[G].includes(J)){Y[G]=Y[G].replace(J,X[Q][1]);break}}return Y},Hu,iN1=(Y,X)=>{if(Y==="*")return"*";let Q=Y.match(/^\:([^\{\}]+)(?:\{(.+)\})?$/);if(Q){let J=`${Y}#${X}`;if(!Hu[J])if(Q[2])Hu[J]=X&&X[0]!==":"&&X[0]!=="*"?[J,Q[1],new RegExp(`^${Q[2]}(?=/${X})`)]:[Y,Q[1],new RegExp(`^${Q[2]}$`)];else Hu[J]=[Y,Q[1],!0];return Hu[J]}return null},JO=(Y,X)=>{try{return X(Y)}catch{return Y.replace(/(?:%[0-9A-Fa-f]{2})+/g,(Q)=>{try{return X(Q)}catch{return Q}})}},iQ4=(Y)=>JO(Y,decodeURI),V70=(Y)=>{let X=Y.url,Q=X.indexOf("/",X.indexOf(":")+4),J=Q;for(;J<X.length;J++){let G=X.charCodeAt(J);if(G===37){let K=X.indexOf("?",J),W=X.slice(Q,K===-1?void 0:K);return iQ4(W.includes("%25")?W.replace(/%25/g,"%2525"):W)}else if(G===63)break}return X.slice(Q,J)},aN1=(Y)=>{let X=V70(Y);return X.length>1&&X.at(-1)==="/"?X.slice(0,-1):X},a$=(Y,X,...Q)=>{if(Q.length)X=a$(X,...Q);return`${Y?.[0]==="/"?"":"/"}${Y}${X==="/"?"":`${Y?.at(-1)==="/"?"":"/"}${X?.[0]==="/"?X.slice(1):X}`}`},Fu=(Y)=>{if(Y.charCodeAt(Y.length-1)!==63||!Y.includes(":"))return null;let X=Y.split("/"),Q=[],J="";return X.forEach((G)=>{if(G!==""&&!/\:/.test(G))J+="/"+G;else if(/\:/.test(G))if(/\?/.test(G)){if(Q.length===0&&J==="")Q.push("/");else Q.push(J);let K=G.replace("?","");J+="/"+K,Q.push(J)}else J+="/"+G}),Q.filter((G,K,W)=>W.indexOf(G)===K)},H70=(Y)=>{if(!/[%+]/.test(Y))return Y;if(Y.indexOf("+")!==-1)Y=Y.replace(/\+/g," ");return Y.indexOf("%")!==-1?JO(Y,R2):Y},rN1=(Y,X,Q)=>{let J;if(!Q&&X&&!/[%+]/.test(X)){let W=Y.indexOf("?",8);if(W===-1)return;if(!Y.startsWith(X,W+1))W=Y.indexOf(`&${X}`,W+1);while(W!==-1){let Z=Y.charCodeAt(W+X.length+1);if(Z===61){let H=W+X.length+2,F=Y.indexOf("&",H);return H70(Y.slice(H,F===-1?void 0:F))}else if(Z==38||isNaN(Z))return"";W=Y.indexOf(`&${X}`,W+1)}if(J=/[%+]/.test(Y),!J)return}let G={};J??=/[%+]/.test(Y);let K=Y.indexOf("?",8);while(K!==-1){let W=Y.indexOf("&",K+1),Z=Y.indexOf("=",K);if(Z>W&&W!==-1)Z=-1;let H=Y.slice(K+1,Z===-1?W===-1?void 0:W:Z);if(J)H=H70(H);if(K=W,H==="")continue;let F;if(Z===-1)F="";else if(F=Y.slice(Z+1,W===-1?void 0:W),J)F=H70(F);if(Q){if(!(G[H]&&Array.isArray(G[H])))G[H]=[];G[H].push(F)}else G[H]??=F}return X?G[X]:G},oN1,sN1=(Y,X)=>{return rN1(Y,X,!0)},R2;var r$=S(()=>{Hu={},oN1=rN1,R2=decodeURIComponent});var tN1=(Y)=>JO(Y,R2),Ku;var K70=S(()=>{C2();dN1();cN1();r$();Ku=class{raw;#Y;#X;routeIndex=0;path;bodyCache={};constructor(Y,X="/",Q=[[]]){this.raw=Y,this.path=X,this.#X=Q,this.#Y={}}param(Y){return Y?this.#Q(Y):this.#J()}#Q(Y){let X=this.#X[0][this.routeIndex][1][Y],Q=this.#W(X);return Q&&/\%/.test(Q)?tN1(Q):Q}#J(){let Y={},X=Object.keys(this.#X[0][this.routeIndex][1]);for(let Q of X){let J=this.#W(this.#X[0][this.routeIndex][1][Q]);if(J!==void 0)Y[Q]=/\%/.test(J)?tN1(J):J}return Y}#W(Y){return this.#X[1]?this.#X[1][Y]:Y}query(Y){return oN1(this.url,Y)}queries(Y){return sN1(this.url,Y)}header(Y){if(Y)return this.raw.headers.get(Y)??void 0;let X={};return this.raw.headers.forEach((Q,J)=>{X[J]=Q}),X}async parseBody(Y){return this.bodyCache.parsedBody??=await pN1(this,Y)}#G=(Y)=>{let{bodyCache:X,raw:Q}=this,J=X[Y];if(J)return J;let G=Object.keys(X)[0];if(G)return X[G].then((K)=>{if(G==="json")K=JSON.stringify(K);return new Response(K)[Y]()});return X[Y]=Q[Y]()};json(){return this.#G("text").then((Y)=>JSON.parse(Y))}text(){return this.#G("text")}arrayBuffer(){return this.#G("arrayBuffer")}blob(){return this.#G("blob")}formData(){return this.#G("formData")}addValidatedData(Y,X){this.#Y[Y]=X}valid(Y){return this.#Y[Y]}get url(){return this.raw.url}get method(){return this.raw.method}get[lN1](){return this.#X}get matchedRoutes(){return this.#X[0].map(([[,Y]])=>Y)}get routePath(){return this.#X[0].map(([[,Y]])=>Y)[this.routeIndex].path}}});var Vu,aQ4=(Y,X)=>{let Q=new String(Y);return Q.isEscaped=!0,Q.callbacks=X,Q},j2=async(Y,X,Q,J,G)=>{if(typeof Y==="object"&&!(Y instanceof String)){if(!(Y instanceof Promise))Y=Y.toString();if(Y instanceof Promise)Y=await Y}let K=Y.callbacks;if(!K?.length)return Promise.resolve(Y);if(G)G[0]+=Y;else G=[Y];let W=Promise.all(K.map((Z)=>Z({phase:X,buffer:G,context:J}))).then((Z)=>Promise.all(Z.filter(Boolean).map((H)=>j2(H,X,!1,J,G))).then(()=>G[0]));if(Q)return aQ4(await W,K);else return W};var $70=S(()=>{Vu={Stringify:1,BeforeStream:2,Stream:3}});var eN1="text/plain; charset=UTF-8",q70=(Y,X)=>{return{"Content-Type":Y,...X}},YL1=class{#Y;#X;env={};#Q;finalized=!1;error;#J;#W;#G;#K;#Z;#F;#H;#$;#q;constructor(Y,X){if(this.#Y=Y,X)this.#W=X.executionCtx,this.env=X.env,this.#F=X.notFoundHandler,this.#q=X.path,this.#$=X.matchResult}get req(){return this.#X??=new Ku(this.#Y,this.#q,this.#$),this.#X}get event(){if(this.#W&&"respondWith"in this.#W)return this.#W;else throw Error("This context has no FetchEvent")}get executionCtx(){if(this.#W)return this.#W;else throw Error("This context has no ExecutionContext")}get res(){return this.#G||=new Response(null,{headers:this.#H??=new Headers})}set res(Y){if(this.#G&&Y){Y=new Response(Y.body,Y);for(let[X,Q]of this.#G.headers.entries()){if(X==="content-type")continue;if(X==="set-cookie"){let J=this.#G.headers.getSetCookie();Y.headers.delete("set-cookie");for(let G of J)Y.headers.append("set-cookie",G)}else Y.headers.set(X,Q)}}this.#G=Y,this.finalized=!0}render=(...Y)=>{return this.#Z??=(X)=>this.html(X),this.#Z(...Y)};setLayout=(Y)=>this.#K=Y;getLayout=()=>this.#K;setRenderer=(Y)=>{this.#Z=Y};header=(Y,X,Q)=>{if(this.finalized)this.#G=new Response(this.#G.body,this.#G);let J=this.#G?this.#G.headers:this.#H??=new Headers;if(X===void 0)J.delete(Y);else if(Q?.append)J.append(Y,X);else J.set(Y,X)};status=(Y)=>{this.#J=Y};set=(Y,X)=>{this.#Q??=new Map,this.#Q.set(Y,X)};get=(Y)=>{return this.#Q?this.#Q.get(Y):void 0};get var(){if(!this.#Q)return{};return Object.fromEntries(this.#Q)}#V(Y,X,Q){let J=this.#G?new Headers(this.#G.headers):this.#H??new Headers;if(typeof X==="object"&&"headers"in X){let K=X.headers instanceof Headers?X.headers:new Headers(X.headers);for(let[W,Z]of K)if(W.toLowerCase()==="set-cookie")J.append(W,Z);else J.set(W,Z)}if(Q)for(let[K,W]of Object.entries(Q))if(typeof W==="string")J.set(K,W);else{J.delete(K);for(let Z of W)J.append(K,Z)}let G=typeof X==="number"?X:X?.status??this.#J;return new Response(Y,{status:G,headers:J})}newResponse=(...Y)=>this.#V(...Y);body=(Y,X,Q)=>this.#V(Y,X,Q);text=(Y,X,Q)=>{return!this.#H&&!this.#J&&!X&&!Q&&!this.finalized?new Response(Y):this.#V(Y,X,q70(eN1,Q))};json=(Y,X,Q)=>{return this.#V(JSON.stringify(Y),X,q70("application/json",Q))};html=(Y,X,Q)=>{let J=(G)=>this.#V(G,X,q70("text/html; charset=UTF-8",Q));return typeof Y==="object"?j2(Y,Vu.Stringify,!1,{}).then(J):J(Y)};redirect=(Y,X)=>{let Q=String(Y);return this.header("Location",!/[^\x00-\xFF]/.test(Q)?Q:encodeURI(Q)),this.newResponse(null,X??302)};notFound=()=>{return this.#F??=()=>new Response,this.#F(this)}};var $u=S(()=>{K70();$70()});var F8="ALL",XL1="all",QL1,qu="Can not add a route since the matcher is already built.",zu;var o$=S(()=>{QL1=["get","post","put","delete","options","patch"],zu=class extends Error{}});var JL1="__COMPOSED_HANDLER";var GL1=()=>{};var rQ4=(Y)=>{return Y.text("404 Not Found",404)},WL1=(Y,X)=>{if("getResponse"in Y){let Q=Y.getResponse();return X.newResponse(Q.body,Q)}return console.error(Y),X.text("Internal Server Error",500)},ZL1=class Y{get;post;put;delete;options;patch;all;on;use;router;getPath;_basePath="/";#Y="/";routes=[];constructor(X={}){[...QL1,XL1].forEach((K)=>{this[K]=(W,...Z)=>{if(typeof W==="string")this.#Y=W;else this.#J(K,this.#Y,W);return Z.forEach((H)=>{this.#J(K,this.#Y,H)}),this}}),this.on=(K,W,...Z)=>{for(let H of[W].flat()){this.#Y=H;for(let F of[K].flat())Z.map((V)=>{this.#J(F.toUpperCase(),this.#Y,V)})}return this},this.use=(K,...W)=>{if(typeof K==="string")this.#Y=K;else this.#Y="*",W.unshift(K);return W.forEach((Z)=>{this.#J(F8,this.#Y,Z)}),this};let{strict:J,...G}=X;Object.assign(this,G),this.getPath=J??!0?X.getPath??V70:aN1}#X(){let X=new Y({router:this.router,getPath:this.getPath});return X.errorHandler=this.errorHandler,X.#Q=this.#Q,X.routes=this.routes,X}#Q=rQ4;errorHandler=WL1;route(X,Q){let J=this.basePath(X);return Q.routes.map((G)=>{let K;if(Q.errorHandler===WL1)K=G.handler;else K=async(W,Z)=>(await Z70([],Q.errorHandler)(W,()=>G.handler(W,Z))).res,K[JL1]=G.handler;J.#J(G.method,G.path,K)}),this}basePath(X){let Q=this.#X();return Q._basePath=a$(this._basePath,X),Q}onError=(X)=>{return this.errorHandler=X,this};notFound=(X)=>{return this.#Q=X,this};mount(X,Q,J){let G,K;if(J)if(typeof J==="function")K=J;else if(K=J.optionHandler,J.replaceRequest===!1)G=(H)=>H;else G=J.replaceRequest;let W=K?(H)=>{let F=K(H);return Array.isArray(F)?F:[F]}:(H)=>{let F=void 0;try{F=H.executionCtx}catch{}return[H.env,F]};G||=(()=>{let H=a$(this._basePath,X),F=H==="/"?0:H.length;return(V)=>{let $=new URL(V.url);return $.pathname=$.pathname.slice(F)||"/",new Request($,V)}})();let Z=async(H,F)=>{let V=await Q(G(H.req.raw),...W(H));if(V)return V;await F()};return this.#J(F8,a$(X,"*"),Z),this}#J(X,Q,J){X=X.toUpperCase(),Q=a$(this._basePath,Q);let G={basePath:this._basePath,path:Q,method:X,handler:J};this.router.add(X,Q,[J,G]),this.routes.push(G)}#W(X,Q){if(X instanceof Error)return this.errorHandler(X,Q);throw X}#G(X,Q,J,G){if(G==="HEAD")return(async()=>new Response(null,await this.#G(X,Q,J,"GET")))();let K=this.getPath(X,{env:J}),W=this.router.match(G,K),Z=new YL1(X,{path:K,matchResult:W,env:J,executionCtx:Q,notFoundHandler:this.#Q});if(W[0].length===1){let F;try{F=W[0][0][0][0](Z,async()=>{Z.res=await this.#Q(Z)})}catch(V){return this.#W(V,Z)}return F instanceof Promise?F.then((V)=>V||(Z.finalized?Z.res:this.#Q(Z))).catch((V)=>this.#W(V,Z)):F??this.#Q(Z)}let H=Z70(W[0],this.errorHandler,this.#Q);return(async()=>{try{let F=await H(Z);if(!F.finalized)throw Error("Context is not finalized. Did you forget to return a Response object or `await next()`?");return F.res}catch(F){return this.#W(F,Z)}})()}fetch=(X,...Q)=>{return this.#G(X,Q[1],Q[0],X.method)};request=(X,Q,J,G)=>{if(X instanceof Request)return this.fetch(Q?new Request(X,Q):X,J,G);return X=X.toString(),this.fetch(new Request(/^https?:\/\//.test(X)?X:`http://localhost${a$("/",X)}`,Q),J,G)};fire=()=>{addEventListener("fetch",(X)=>{X.respondWith(this.#G(X.request,X,void 0,X.request.method))})}};var KL1=S(()=>{mN1();$u();o$();GL1();r$()});function Bu(Y,X){let Q=this.buildAllMatchers(),J=(G,K)=>{let W=Q[G]||Q[F8],Z=W[2][K];if(Z)return Z;let H=K.match(W[0]);if(!H)return[[],S2];let F=H.indexOf("",1);return[W[1][F],H]};return this.match=J,J(Y,X)}var S2;var z70=S(()=>{o$();S2=[]});function sQ4(Y,X){if(Y.length===1)return X.length===1?Y<X?-1:1:-1;if(X.length===1)return 1;if(Y===k2||Y===v2)return 1;else if(X===k2||X===v2)return-1;if(Y===Uu)return 1;else if(X===Uu)return-1;return Y.length===X.length?Y<X?-1:1:X.length-Y.length}var Uu="[^/]+",k2=".*",v2="(?:|/.*)",s$,oQ4,HL1=class Y{#Y;#X;#Q=Object.create(null);insert(X,Q,J,G,K){if(X.length===0){if(this.#Y!==void 0)throw s$;if(K)return;this.#Y=Q;return}let[W,...Z]=X,H=W==="*"?Z.length===0?["","",k2]:["","",Uu]:W==="/*"?["","",v2]:W.match(/^\:([^\{\}]+)(?:\{(.+)\})?$/),F;if(H){let V=H[1],$=H[2]||Uu;if(V&&H[2]){if($===".*")throw s$;if($=$.replace(/^\((?!\?:)(?=[^)]+\)$)/,"(?:"),/\((?!\?:)/.test($))throw s$}if(F=this.#Q[$],!F){if(Object.keys(this.#Q).some((q)=>q!==k2&&q!==v2))throw s$;if(K)return;if(F=this.#Q[$]=new Y,V!=="")F.#X=G.varIndex++}if(!K&&V!=="")J.push([V,F.#X])}else if(F=this.#Q[W],!F){if(Object.keys(this.#Q).some((V)=>V.length>1&&V!==k2&&V!==v2))throw s$;if(K)return;F=this.#Q[W]=new Y}F.insert(Z,Q,J,G,K)}buildRegExpStr(){let Q=Object.keys(this.#Q).sort(sQ4).map((J)=>{let G=this.#Q[J];return(typeof G.#X==="number"?`(${J})@${G.#X}`:oQ4.has(J)?`\\${J}`:J)+G.buildRegExpStr()});if(typeof this.#Y==="number")Q.unshift(`#${this.#Y}`);if(Q.length===0)return"";if(Q.length===1)return Q[0];return"(?:"+Q.join("|")+")"}};var B70=S(()=>{s$=Symbol(),oQ4=new Set(".\\+*[^]$()")});var FL1=class{#Y={varIndex:0};#X=new HL1;insert(Y,X,Q){let J=[],G=[];for(let W=0;;){let Z=!1;if(Y=Y.replace(/\{[^}]+\}/g,(H)=>{let F=`@\\${W}`;return G[W]=[F,H],W++,Z=!0,F}),!Z)break}let K=Y.match(/(?::[^\/]+)|(?:\/\*$)|./g)||[];for(let W=G.length-1;W>=0;W--){let[Z]=G[W];for(let H=K.length-1;H>=0;H--)if(K[H].indexOf(Z)!==-1){K[H]=K[H].replace(Z,G[W][1]);break}}return this.#X.insert(K,X,J,this.#Y,Q),J}buildRegExp(){let Y=this.#X.buildRegExpStr();if(Y==="")return[/^$/,[],[]];let X=0,Q=[],J=[];return Y=Y.replace(/#(\d+)|@(\d+)|\.\*\$/g,(G,K,W)=>{if(K!==void 0)return Q[++X]=Number(K),"$()";if(W!==void 0)return J[Number(W)]=++X,"";return""}),[new RegExp(`^${Y}`),Q,J]}};var VL1=S(()=>{B70()});function qL1(Y){return $L1[Y]??=new RegExp(Y==="*"?"":`^${Y.replace(/\/\*$|([.\\+*[^\]$()])/g,(X,Q)=>Q?`\\${Q}`:"(?:|/.*)")}$`)}function eQ4(){$L1=Object.create(null)}function YJ4(Y){let X=new FL1,Q=[];if(Y.length===0)return tQ4;let J=Y.map((F)=>[!/\*|\/:/.test(F[0]),...F]).sort(([F,V],[$,q])=>F?1:$?-1:V.length-q.length),G=Object.create(null);for(let F=0,V=-1,$=J.length;F<$;F++){let[q,B,D]=J[F];if(q)G[B]=[D.map(([L])=>[L,Object.create(null)]),S2];else V++;let O;try{O=X.insert(B,V,q)}catch(L){throw L===s$?new zu(B):L}if(q)continue;Q[V]=D.map(([L,w])=>{let R=Object.create(null);w-=1;for(;w>=0;w--){let[P,T]=O[w];R[P]=T}return[L,R]})}let[K,W,Z]=X.buildRegExp();for(let F=0,V=Q.length;F<V;F++)for(let $=0,q=Q[F].length;$<q;$++){let B=Q[F][$]?.[1];if(!B)continue;let D=Object.keys(B);for(let O=0,L=D.length;O<L;O++)B[D[O]]=Z[B[D[O]]]}let H=[];for(let F in W)H[F]=Q[W[F]];return[K,H,G]}function GO(Y,X){if(!Y)return;for(let Q of Object.keys(Y).sort((J,G)=>G.length-J.length))if(qL1(Q).test(X))return[...Y[Q]];return}var tQ4,$L1,Du=class{name="RegExpRouter";#Y;#X;constructor(){this.#Y={[F8]:Object.create(null)},this.#X={[F8]:Object.create(null)}}add(Y,X,Q){let J=this.#Y,G=this.#X;if(!J||!G)throw Error(qu);if(!J[Y])[J,G].forEach((Z)=>{Z[Y]=Object.create(null),Object.keys(Z[F8]).forEach((H)=>{Z[Y][H]=[...Z[F8][H]]})});if(X==="/*")X="*";let K=(X.match(/\/:/g)||[]).length;if(/\*$/.test(X)){let Z=qL1(X);if(Y===F8)Object.keys(J).forEach((H)=>{J[H][X]||=GO(J[H],X)||GO(J[F8],X)||[]});else J[Y][X]||=GO(J[Y],X)||GO(J[F8],X)||[];Object.keys(J).forEach((H)=>{if(Y===F8||Y===H)Object.keys(J[H]).forEach((F)=>{Z.test(F)&&J[H][F].push([Q,K])})}),Object.keys(G).forEach((H)=>{if(Y===F8||Y===H)Object.keys(G[H]).forEach((F)=>Z.test(F)&&G[H][F].push([Q,K]))});return}let W=Fu(X)||[X];for(let Z=0,H=W.length;Z<H;Z++){let F=W[Z];Object.keys(G).forEach((V)=>{if(Y===F8||Y===V)G[V][F]||=[...GO(J[V],F)||GO(J[F8],F)||[]],G[V][F].push([Q,K-H+Z+1])})}}match=Bu;buildAllMatchers(){let Y=Object.create(null);return Object.keys(this.#X).concat(Object.keys(this.#Y)).forEach((X)=>{Y[X]||=this.#Q(X)}),this.#Y=this.#X=void 0,eQ4(),Y}#Q(Y){let X=[],Q=Y===F8;if([this.#Y,this.#X].forEach((J)=>{let G=J[Y]?Object.keys(J[Y]).map((K)=>[K,J[Y][K]]):[];if(G.length!==0)Q||=!0,X.push(...G);else if(Y!==F8)X.push(...Object.keys(J[F8]).map((K)=>[K,J[F8][K]]))}),!Q)return null;else return YJ4(X)}};var U70=S(()=>{o$();r$();z70();B70();VL1();tQ4=[/^$/,[],Object.create(null)],$L1=Object.create(null)});var XJ4=class{name="PreparedRegExpRouter";#Y;#X;constructor(Y,X){this.#Y=Y,this.#X=X}#Q(Y,X){let Q=this.#Y[Y];Q[1].forEach((J)=>J&&J.push(X)),Object.values(Q[2]).forEach((J)=>J[0].push(X))}#J(Y,X,Q,J,G){let K=this.#Y[Y];if(!G)K[2][X][0].push([Q,{}]);else J.forEach((W)=>{if(typeof W==="number")K[1][W].push([Q,G]);else K[2][W||X][0].push([Q,G])})}add(Y,X,Q){if(!this.#Y[Y]){let G=this.#Y[F8],K={};for(let W in G[2])K[W]=[G[2][W][0].slice(),S2];this.#Y[Y]=[G[0],G[1].map((W)=>Array.isArray(W)?W.slice():0),K]}if(X==="/*"||X==="*"){let G=[Q,{}];if(Y===F8)for(let K in this.#Y)this.#Q(K,G);else this.#Q(Y,G);return}let J=this.#X[X];if(!J)throw Error(`Path ${X} is not registered`);for(let[G,K]of J)if(Y===F8)for(let W in this.#Y)this.#J(W,X,Q,G,K);else this.#J(Y,X,Q,G,K)}buildAllMatchers(){return this.#Y}match=Bu};var zL1=S(()=>{o$();z70();U70()});var BL1=S(()=>{U70();zL1()});var D70=class{name="SmartRouter";#Y=[];#X=[];constructor(Y){this.#Y=Y.routers}add(Y,X,Q){if(!this.#X)throw Error(qu);this.#X.push([Y,X,Q])}match(Y,X){if(!this.#X)throw Error("Fatal error");let Q=this.#Y,J=this.#X,G=Q.length,K=0,W;for(;K<G;K++){let Z=Q[K];try{for(let H=0,F=J.length;H<F;H++)Z.add(...J[H]);W=Z.match(Y,X)}catch(H){if(H instanceof zu)continue;throw H}this.match=Z.match.bind(Z),this.#Y=[Z],this.#X=void 0;break}if(K===G)throw Error("Fatal error");return this.name=`SmartRouter + ${this.activeRouter.name}`,W}get activeRouter(){if(this.#X||this.#Y.length!==1)throw Error("No active router has been determined yet.");return this.#Y[0]}};var UL1=S(()=>{o$()});var DL1=S(()=>{UL1()});var _2,OL1=class Y{#Y;#X;#Q;#J=0;#W=_2;constructor(X,Q,J){if(this.#X=J||Object.create(null),this.#Y=[],X&&Q){let G=Object.create(null);G[X]={handler:Q,possibleKeys:[],score:0},this.#Y=[G]}this.#Q=[]}insert(X,Q,J){this.#J=++this.#J;let G=this,K=nN1(Q),W=[];for(let Z=0,H=K.length;Z<H;Z++){let F=K[Z],V=K[Z+1],$=iN1(F,V),q=Array.isArray($)?$[0]:F;if(q in G.#X){if(G=G.#X[q],$)W.push($[1]);continue}if(G.#X[q]=new Y,$)G.#Q.push($),W.push($[1]);G=G.#X[q]}return G.#Y.push({[X]:{handler:J,possibleKeys:W.filter((Z,H,F)=>F.indexOf(Z)===H),score:this.#J}}),G}#G(X,Q,J,G){let K=[];for(let W=0,Z=X.#Y.length;W<Z;W++){let H=X.#Y[W],F=H[Q]||H[F8],V={};if(F!==void 0){if(F.params=Object.create(null),K.push(F),J!==_2||G&&G!==_2)for(let $=0,q=F.possibleKeys.length;$<q;$++){let B=F.possibleKeys[$],D=V[F.score];F.params[B]=G?.[B]&&!D?G[B]:J[B]??G?.[B],V[F.score]=!0}}}return K}search(X,Q){let J=[];this.#W=_2;let K=[this],W=F70(Q),Z=[];for(let H=0,F=W.length;H<F;H++){let V=W[H],$=H===F-1,q=[];for(let B=0,D=K.length;B<D;B++){let O=K[B],L=O.#X[V];if(L)if(L.#W=O.#W,$){if(L.#X["*"])J.push(...this.#G(L.#X["*"],X,O.#W));J.push(...this.#G(L,X,O.#W))}else q.push(L);for(let w=0,R=O.#Q.length;w<R;w++){let P=O.#Q[w],T=O.#W===_2?{}:{...O.#W};if(P==="*"){let f=O.#X["*"];if(f)J.push(...this.#G(f,X,O.#W)),f.#W=T,q.push(f);continue}let[A,I,j]=P;if(!V&&!(j instanceof RegExp))continue;let k=O.#X[A],y=W.slice(H).join("/");if(j instanceof RegExp){let f=j.exec(y);if(f){if(T[I]=f[0],J.push(...this.#G(k,X,O.#W,T)),Object.keys(k.#X).length){k.#W=T;let h=f[0].match(/\//)?.length??0;(Z[h]||=[]).push(k)}continue}}if(j===!0||j.test(V))if(T[I]=V,$){if(J.push(...this.#G(k,X,T,O.#W)),k.#X["*"])J.push(...this.#G(k.#X["*"],X,T,O.#W))}else k.#W=T,q.push(k)}}K=q.concat(Z.shift()??[])}if(J.length>1)J.sort((H,F)=>{return H.score-F.score});return[J.map(({handler:H,params:F})=>[H,F])]}};var NL1=S(()=>{o$();r$();_2=Object.create(null)});var O70=class{name="TrieRouter";#Y;constructor(){this.#Y=new OL1}add(Y,X,Q){let J=Fu(X);if(J){for(let G=0,K=J.length;G<K;G++)this.#Y.insert(Y,J[G],Q);return}this.#Y.insert(Y,X,Q)}match(Y,X){return this.#Y.search(Y,X)}};var LL1=S(()=>{r$();NL1()});var wL1=S(()=>{LL1()});var O9;var ML1=S(()=>{KL1();BL1();DL1();wL1();O9=class extends ZL1{constructor(Y={}){super(Y);this.router=Y.router??new D70({routers:[new Du,new O70]})}}});var vG=S(()=>{ML1()});var QJ4,JJ4,N70=(Y,X)=>{if(X&&Y.indexOf(X)===-1)return{};let Q=Y.trim().split(";"),J={};for(let G of Q){G=G.trim();let K=G.indexOf("=");if(K===-1)continue;let W=G.substring(0,K).trim();if(X&&X!==W||!QJ4.test(W))continue;let Z=G.substring(K+1).trim();if(Z.startsWith('"')&&Z.endsWith('"'))Z=Z.slice(1,-1);if(JJ4.test(Z)){if(J[W]=Z.indexOf("%")!==-1?JO(Z,R2):Z,X)break}}return J};var AL1=S(()=>{r$();QJ4=/^[\w!#$%&'*.^`|~+-]+$/,JJ4=/^[ !#-:<-[\]-~]*$/});var TL1=(Y,X,Q)=>{let J=Y.req.raw.headers.get("Cookie");if(typeof X==="string"){if(!J)return;let K=X;if(Q==="secure")K="__Secure-"+X;else if(Q==="host")K="__Host-"+X;return N70(J,K)[K]}if(!J)return{};return N70(J)};var PL1=S(()=>{AL1()});var EL1=(Y)=>{let Q={...{origin:"*",allowMethods:["GET","HEAD","PUT","POST","DELETE","PATCH"],allowHeaders:[],exposeHeaders:[]},...Y},J=((K)=>{if(typeof K==="string")if(K==="*")return()=>K;else return(W)=>K===W?W:null;else if(typeof K==="function")return K;else return(W)=>K.includes(W)?W:null})(Q.origin),G=((K)=>{if(typeof K==="function")return K;else if(Array.isArray(K))return()=>K;else return()=>[]})(Q.allowMethods);return async function(W,Z){function H(V,$){W.res.headers.set(V,$)}let F=await J(W.req.header("origin")||"",W);if(F)H("Access-Control-Allow-Origin",F);if(Q.credentials)H("Access-Control-Allow-Credentials","true");if(Q.exposeHeaders?.length)H("Access-Control-Expose-Headers",Q.exposeHeaders.join(","));if(W.req.method==="OPTIONS"){if(Q.origin!=="*")H("Vary","Origin");if(Q.maxAge!=null)H("Access-Control-Max-Age",Q.maxAge.toString());let V=await G(W.req.header("origin")||"",W);if(V.length)H("Access-Control-Allow-Methods",V.join(","));let $=Q.allowHeaders;if(!$?.length){let q=W.req.header("Access-Control-Request-Headers");if(q)$=q.split(/\s*,\s*/)}if($?.length)H("Access-Control-Allow-Headers",$.join(",")),W.res.headers.append("Vary","Access-Control-Request-Headers");return W.res.headers.delete("Content-Length"),W.res.headers.delete("Content-Type"),new Response(null,{headers:W.res.headers,status:204,statusText:"No Content"})}if(await Z(),Q.origin!=="*")W.header("Vary","Origin",{append:!0})}};var CL1=()=>{};function GJ4(){let{process:Y,Deno:X}=globalThis;return!(typeof X?.noColor==="boolean"?X.noColor:Y!==void 0?"NO_COLOR"in Y?.env:!1)}async function IL1(){let{navigator:Y}=globalThis,X="cloudflare:workers";return!(Y!==void 0&&Y.userAgent==="Cloudflare-Workers"?await(async()=>{try{return"NO_COLOR"in((await import("cloudflare:workers")).env??{})}catch{return!1}})():!GJ4())}var RL1=()=>{};async function jL1(Y,X,Q,J,G=0,K){let W=X==="<--"?`${X} ${Q} ${J}`:`${X} ${Q} ${J} ${await KJ4(G)} ${K}`;Y(W)}var WJ4=(Y)=>{let[X,Q]=[",","."];return Y.map((G)=>G.replace(/(\d)(?=(\d\d\d)+(?!\d))/g,"$1"+X)).join(Q)},ZJ4=(Y)=>{let X=Date.now()-Y;return WJ4([X<1000?X+"ms":Math.round(X/1000)+"s"])},KJ4=async(Y)=>{if(await IL1())switch(Y/100|0){case 5:return`\x1B[31m${Y}\x1B[0m`;case 4:return`\x1B[33m${Y}\x1B[0m`;case 3:return`\x1B[36m${Y}\x1B[0m`;case 2:return`\x1B[32m${Y}\x1B[0m`}return`${Y}`},SL1=(Y=console.log)=>{return async function(Q,J){let{method:G,url:K}=Q.req,W=K.slice(K.indexOf("/",8));await jL1(Y,"<--",G,W);let Z=Date.now();await J(),await jL1(Y,"-->",G,W,Q.res.status,ZJ4(Z))}};var kL1=S(()=>{RL1()});var vL1=()=>{try{return performance.now()}catch{}return Date.now()},L70=(Y)=>{let X={total:!0,enabled:!0,totalDescription:"Total Response Time",autoEnd:!0,crossOrigin:!1,...Y};return async function(J,G){let K=[],W=new Map;if(J.get("metric"))return await G();if(J.set("metric",{headers:K,timers:W}),X.total)WO(J,"total",X.totalDescription);if(await G(),X.total)t$(J,"total");if(X.autoEnd)W.forEach((H,F)=>t$(J,F));if(typeof X.enabled==="function"?X.enabled(J):X.enabled){J.res.headers.append("Server-Timing",K.join(","));let H=typeof X.crossOrigin==="function"?X.crossOrigin(J):X.crossOrigin;if(H)J.res.headers.append("Timing-Allow-Origin",typeof H==="string"?H:"*")}}},_L1=(Y,X,Q,J,G)=>{let K=Y.get("metric");if(!K){console.warn("Metrics not initialized! Please add the `timing()` middleware to this route!");return}if(typeof Q==="number"){let W=Q.toFixed(G||1),Z=J?`${X};dur=${W};desc="${J}"`:`${X};dur=${W}`;K.headers.push(Z)}else{let W=Q?`${X};desc="${Q}"`:`${X}`;K.headers.push(W)}},WO=(Y,X,Q)=>{let J=Y.get("metric");if(!J){console.warn("Metrics not initialized! Please add the `timing()` middleware to this route!");return}J.timers.set(X,{description:Q,start:vL1()})},t$=(Y,X,Q)=>{let J=Y.get("metric");if(!J){console.warn("Metrics not initialized! Please add the `timing()` middleware to this route!");return}let G=J.timers.get(X);if(!G){console.warn(`Timer "${X}" does not exist!`);return}let{description:K,start:W}=G,Z=vL1()-W;_L1(Y,X,Z,K,Q),J.timers.delete(X)};var yL1=S(()=>{$u()});var fL1=S(()=>{yL1()});import{randomBytes as HJ4}from"crypto";function hL1(){if(y2)return y2;let Y=process.env.MESH_JWT_SECRET??D9.jwt?.secret??process.env.BETTER_AUTH_SECRET;if(Y)y2=new TextEncoder().encode(Y);else console.warn("MESH_JWT_SECRET not set - generating random secret (not persistent)"),y2=new Uint8Array(HJ4(32));return y2}async function bL1(Y,X="5m"){let Q=hL1();return await new KQ(Y).setProtectedHeader({alg:"HS256",typ:"JWT"}).setIssuedAt().setExpirationTime(X).sign(Q)}async function xL1(Y){try{let X=hL1(),{payload:Q}=await O8(Y,X);return Q}catch{return}}var y2=null;var w70=S(()=>{dQ();QO()});class M70{db;constructor(Y){this.db=Y}async create(Y,X,Q){let J=P8("vir"),G=new Date().toISOString();if(await this.db.insertInto("connections").values({id:J,organization_id:Y,created_by:X,title:Q.title,description:Q.description??null,icon:Q.icon??null,app_name:null,app_id:null,connection_type:"VIRTUAL",connection_url:`virtual://${J}`,connection_token:null,connection_headers:null,oauth_config:null,configuration_state:null,configuration_scopes:null,metadata:Q.metadata?JSON.stringify(Q.metadata):null,tools:null,bindings:null,status:Q.status??"active",created_at:G,updated_at:G}).execute(),Q.connections.length>0)await this.db.insertInto("connection_aggregations").values(Q.connections.map((W)=>({id:P8("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,created_at:G}))).execute();let K=await this.findById(J);if(!K)throw Error(`Failed to create virtual MCP with id: ${J}`);return K}async findById(Y,X){let Q=sZ(Y);if(Q){let J=X??Q,G=await this.db.selectFrom("connections").selectAll().where("organization_id","=",J).where("status","!=","inactive").where("status","!=","error").execute();return{...Px(J),connections:G.map((K)=>({connection_id:K.id,selected_tools:null,selected_resources:null,selected_prompts:null}))}}return this.findByIdInternal(this.db,Y)}async findByIdInternal(Y,X){let Q=await Y.selectFrom("connections").selectAll().where("id","=",X).where("connection_type","=","VIRTUAL").executeTakeFirst();if(!Q)return null;let J=await Y.selectFrom("connection_aggregations").selectAll().where("parent_connection_id","=",X).execute();return this.deserializeVirtualMCPEntity(Q,J)}async list(Y){let X=await this.db.selectFrom("connections").selectAll().where("organization_id","=",Y).where("connection_type","=","VIRTUAL").execute(),Q=X.map((K)=>K.id);if(Q.length===0)return[];let J=await this.db.selectFrom("connection_aggregations").selectAll().where("parent_connection_id","in",Q).execute(),G=new Map;for(let K of J){let W=G.get(K.parent_connection_id)??[];W.push(K),G.set(K.parent_connection_id,W)}return X.map((K)=>this.deserializeVirtualMCPEntity(K,G.get(K.id)??[]))}async listByConnectionId(Y,X){let J=(await this.db.selectFrom("connection_aggregations").select("parent_connection_id").where("child_connection_id","=",X).execute()).map((H)=>H.parent_connection_id);if(J.length===0)return[];let G=await this.db.selectFrom("connections").selectAll().where("id","in",J).where("organization_id","=",Y).where("connection_type","=","VIRTUAL").execute();if(G.length===0)return[];let K=G.map((H)=>H.id),W=await this.db.selectFrom("connection_aggregations").selectAll().where("parent_connection_id","in",K).execute(),Z=new Map;for(let H of W){let F=Z.get(H.parent_connection_id)??[];F.push(H),Z.set(H.parent_connection_id,F)}return G.map((H)=>this.deserializeVirtualMCPEntity(H,Z.get(H.id)??[]))}async update(Y,X,Q){let J=new Date().toISOString(),G={updated_at:J,updated_by:X};if(Q.title!==void 0)G.title=Q.title;if(Q.description!==void 0)G.description=Q.description;if(Q.icon!==void 0)G.icon=Q.icon;if(Q.status!==void 0)G.status=Q.status;if(Q.metadata!==void 0)G.metadata=Q.metadata?JSON.stringify(Q.metadata):null;if(await this.db.updateTable("connections").set(G).where("id","=",Y).where("connection_type","=","VIRTUAL").execute(),Q.connections!==void 0){if(await this.db.deleteFrom("connection_aggregations").where("parent_connection_id","=",Y).execute(),Q.connections.length>0)await this.db.insertInto("connection_aggregations").values(Q.connections.map((W)=>({id:P8("agg"),parent_connection_id:Y,child_connection_id:W.connection_id,selected_tools:W.selected_tools?JSON.stringify(W.selected_tools):null,selected_resources:W.selected_resources?JSON.stringify(W.selected_resources):null,selected_prompts:W.selected_prompts?JSON.stringify(W.selected_prompts):null,created_at:J}))).execute()}let K=await this.findById(Y);if(!K)throw Error("Virtual MCP not found after update");return K}async delete(Y){await this.db.deleteFrom("connection_aggregations").where("parent_connection_id","=",Y).execute(),await this.db.deleteFrom("connections").where("id","=",Y).where("connection_type","=","VIRTUAL").execute()}deserializeVirtualMCPEntity(Y,X){let Q=Y.created_at instanceof Date?Y.created_at.toISOString():Y.created_at,J=Y.updated_at instanceof Date?Y.updated_at.toISOString():Y.updated_at,G=Y.status==="active"?"active":"inactive",K=this.parseJson(Y.metadata);return{id:Y.id,organization_id:Y.organization_id,title:Y.title,description:Y.description,icon:Y.icon,status:G,created_at:Q,updated_at:J,created_by:Y.created_by,updated_by:Y.updated_by??void 0,metadata:{...K,instructions:K?.instructions??null},connections:X.map((W)=>({connection_id:W.child_connection_id,selected_tools:this.parseJson(W.selected_tools),selected_resources:this.parseJson(W.selected_resources),selected_prompts:this.parseJson(W.selected_prompts)}))}}parseJson(Y){if(Y===null)return null;if(typeof Y==="string")try{return JSON.parse(Y)}catch{return null}return Y}}var uL1=S(()=>{UW();j5()});class A70{patterns=[{type:"email",regex:/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/g},{type:"api_key",regex:/(?:api[_-]?key|token|secret|password|bearer)\s*[:=]\s*['"]?[\w-]{16,}['"]?/gi},{type:"jwt",regex:/eyJ[A-Za-z0-9-_]+\.eyJ[A-Za-z0-9-_]+\.[A-Za-z0-9-_.+/=]*/g},{type:"credit_card",regex:/\b\d{4}[- ]?\d{4}[- ]?\d{4}[- ]?\d{4}\b/g},{type:"ssn",regex:/\b\d{3}-\d{2}-\d{4}\b/g}];redact(Y){if(Y===null||Y===void 0)return Y;if(typeof Y==="string")return this.redactString(Y);if(Array.isArray(Y))return Y.map((X)=>this.redact(X));if(typeof Y==="object"){let X={};for(let[Q,J]of Object.entries(Y)){let G=this.redactString(Q);X[G]=this.redact(J)}return X}return Y}redactString(Y){let X=Y;for(let Q of this.patterns)X=X.replace(Q.regex,`[REDACTED:${Q.type}]`);return X}}import{sql as FK}from"kysely";class T70{db;redactor;databaseType;constructor(Y,X="sqlite"){this.db=Y;this.redactor=new A70,this.databaseType=X}jsonExtract(Y,X){if(this.databaseType==="postgres")return FK`(${FK.ref(Y)}::jsonb)->>${X}`;let Q=`$.${X}`;return FK`json_extract(${FK.ref(Y)}, ${Q})`}jsonExtractWithCommas(Y,X){if(this.databaseType==="postgres")return FK`(',' || (${FK.ref(Y)}::jsonb)->>${X} || ',')`;let Q=`$.${X}`;return FK`(',' || json_extract(${FK.ref(Y)}, ${Q}) || ',')`}escapeLikeWildcards(Y){return Y.replace(/\\/g,"\\\\").replace(/%/g,"\\%").replace(/_/g,"\\_")}async log(Y){await this.logBatch([Y])}async logBatch(Y){if(Y.length===0)return;let X=Y.map((Q)=>({...Q,input:this.redactor.redact(Q.input),output:this.redactor.redact(Q.output)}));await this.db.transaction().execute(async(Q)=>{await Q.insertInto("monitoring_logs").values(X.map((J)=>this.toDbRow(J))).execute()})}async query(Y){let X=this.db.selectFrom("monitoring_logs").selectAll(),Q=this.db.selectFrom("monitoring_logs").select((Z)=>Z.fn.count("id").as("count"));if(Y.organizationId)X=X.where("organization_id","=",Y.organizationId),Q=Q.where("organization_id","=",Y.organizationId);if(Y.connectionId)X=X.where("connection_id","=",Y.connectionId),Q=Q.where("connection_id","=",Y.connectionId);if(Y.virtualMcpId)X=X.where("virtual_mcp_id","=",Y.virtualMcpId),Q=Q.where("virtual_mcp_id","=",Y.virtualMcpId);if(Y.toolName)X=X.where("tool_name","=",Y.toolName),Q=Q.where("tool_name","=",Y.toolName);if(Y.isError!==void 0)X=X.where("is_error","=",Y.isError?1:0),Q=Q.where("is_error","=",Y.isError?1:0);if(Y.startDate)X=X.where("timestamp",">=",Y.startDate.toISOString()),Q=Q.where("timestamp",">=",Y.startDate.toISOString());if(Y.endDate)X=X.where("timestamp","<=",Y.endDate.toISOString()),Q=Q.where("timestamp","<=",Y.endDate.toISOString());if(Y.propertyFilters){let{properties:Z,propertyKeys:H,propertyPatterns:F,propertyInValues:V}=Y.propertyFilters;if(Z)for(let[$,q]of Object.entries(Z)){let B=this.jsonExtract("properties",$);X=X.where(B,"=",q),Q=Q.where(B,"=",q)}if(H&&H.length>0)for(let $ of H){let q=this.jsonExtract("properties",$);X=X.where(q,"is not",null),Q=Q.where(q,"is not",null)}if(F)for(let[$,q]of Object.entries(F)){let B=this.jsonExtract("properties",$),D=this.databaseType==="postgres"?"ilike":"like";X=X.where(B,D,q),Q=Q.where(B,D,q)}if(V)for(let[$,q]of Object.entries(V)){let B=this.jsonExtractWithCommas("properties",$),O=`%,${this.escapeLikeWildcards(q)},%`,L=FK`${B} LIKE ${O} ESCAPE '\\'`;X=X.where(L),Q=Q.where(L)}}if(X=X.orderBy("timestamp","desc"),Y.limit)X=X.limit(Y.limit);if(Y.offset)X=X.offset(Y.offset);let[J,G]=await Promise.all([X.execute(),Q.executeTakeFirst()]),K=Number(G?.count||0);return{logs:J.map((Z)=>this.fromDbRow(Z)),total:K}}async getStats(Y){let X=this.db.selectFrom("monitoring_logs").where("organization_id","=",Y.organizationId);if(Y.startDate)X=X.where("timestamp",">=",Y.startDate.toISOString());if(Y.endDate)X=X.where("timestamp","<=",Y.endDate.toISOString());let Q=await X.select([(W)=>W.fn.count("id").as("total_count"),(W)=>W.fn.sum(W.ref("is_error")).as("error_count"),(W)=>W.fn.avg("duration_ms").as("avg_duration")]).executeTakeFirst(),J=Number(Q?.total_count||0),G=Number(Q?.error_count||0),K=Number(Q?.avg_duration||0);return{totalCalls:J,errorRate:J>0?G/J:0,avgDurationMs:K}}toDbRow(Y){return{id:Y.id||P8("log"),organization_id:Y.organizationId,connection_id:Y.connectionId,connection_title:Y.connectionTitle,tool_name:Y.toolName,input:JSON.stringify(Y.input),output:JSON.stringify(Y.output),is_error:Y.isError?1:0,error_message:Y.errorMessage||null,duration_ms:Y.durationMs,timestamp:Y.timestamp instanceof Date?Y.timestamp.toISOString():Y.timestamp,user_id:Y.userId||null,request_id:Y.requestId,user_agent:Y.userAgent||null,virtual_mcp_id:Y.virtualMcpId||null,properties:Y.properties?JSON.stringify(Y.properties):null}}fromDbRow(Y){let X=typeof Y.input==="string"?JSON.parse(Y.input):Y.input,Q=typeof Y.output==="string"?JSON.parse(Y.output):Y.output,J=typeof Y.timestamp==="string"?new Date(Y.timestamp):Y.timestamp,G=Y.properties?typeof Y.properties==="string"?JSON.parse(Y.properties):Y.properties:null;return{id:Y.id,organizationId:Y.organization_id,connectionId:Y.connection_id,connectionTitle:Y.connection_title,toolName:Y.tool_name,input:X,output:Q,isError:Y.is_error===1,errorMessage:Y.error_message,durationMs:Y.duration_ms,timestamp:J,userId:Y.user_id,requestId:Y.request_id,userAgent:Y.user_agent,virtualMcpId:Y.virtual_mcp_id,properties:G}}}var gL1=S(()=>{UW()});class P70{db;constructor(Y){this.db=Y}async get(Y){let X=await this.db.selectFrom("organization_settings").selectAll().where("organizationId","=",Y).executeTakeFirst();if(!X)return null;return{organizationId:X.organizationId,sidebar_items:X.sidebar_items?typeof X.sidebar_items==="string"?JSON.parse(X.sidebar_items):X.sidebar_items:null,enabled_plugins:X.enabled_plugins?typeof X.enabled_plugins==="string"?JSON.parse(X.enabled_plugins):X.enabled_plugins:null,createdAt:X.createdAt,updatedAt:X.updatedAt}}async upsert(Y,X){let Q=new Date().toISOString(),J=X?.sidebar_items?JSON.stringify(X.sidebar_items):null,G=X?.enabled_plugins?JSON.stringify(X.enabled_plugins):null;await this.db.insertInto("organization_settings").values({organizationId:Y,sidebar_items:J,enabled_plugins:G,createdAt:Q,updatedAt:Q}).onConflict((W)=>W.column("organizationId").doUpdateSet({sidebar_items:J?J:void 0,enabled_plugins:G?G:void 0,updatedAt:Q})).execute();let K=await this.get(Y);if(!K)return{organizationId:Y,sidebar_items:X?.sidebar_items??null,enabled_plugins:X?.enabled_plugins??null,createdAt:Q,updatedAt:Q};return K}}class E70{db;constructor(Y){this.db=Y}async listOrgTags(Y){return(await this.db.selectFrom("organization_tags").selectAll().where("organization_id","=",Y).orderBy("name","asc").execute()).map((Q)=>this.tagFromDbRow(Q))}async getTag(Y){let X=await this.db.selectFrom("organization_tags").selectAll().where("id","=",Y).executeTakeFirst();return X?this.tagFromDbRow(X):null}async getTagByName(Y,X){let Q=await this.db.selectFrom("organization_tags").selectAll().where("organization_id","=",Y).where("name","=",X).executeTakeFirst();return Q?this.tagFromDbRow(Q):null}async createTag(Y,X){let Q=P8("tag"),J=new Date().toISOString();await this.db.insertInto("organization_tags").values({id:Q,organization_id:Y,name:X,created_at:J}).onConflict((K)=>K.columns(["organization_id","name"]).doNothing()).execute();let G=await this.getTagByName(Y,X);if(!G)throw Error(`Failed to create or retrieve tag: ${X}`);return G}async deleteTag(Y){await this.db.deleteFrom("organization_tags").where("id","=",Y).execute()}async getMemberTags(Y){return(await this.db.selectFrom("member_tags").innerJoin("organization_tags","organization_tags.id","member_tags.tag_id").select(["organization_tags.id","organization_tags.organization_id","organization_tags.name","organization_tags.created_at"]).where("member_tags.member_id","=",Y).orderBy("organization_tags.name","asc").execute()).map((Q)=>this.tagFromDbRow(Q))}async setMemberTags(Y,X){await this.db.transaction().execute(async(Q)=>{if(await Q.deleteFrom("member_tags").where("member_id","=",Y).execute(),X.length>0){let J=new Date().toISOString();await Q.insertInto("member_tags").values(X.map((G)=>({id:P8("mtag"),member_id:Y,tag_id:G,created_at:J}))).execute()}})}async addMemberTag(Y,X){let Q=new Date().toISOString();await this.db.insertInto("member_tags").values({id:P8("mtag"),member_id:Y,tag_id:X,created_at:Q}).onConflict((J)=>J.columns(["member_id","tag_id"]).doNothing()).execute()}async removeMemberTag(Y,X){await this.db.deleteFrom("member_tags").where("member_id","=",Y).where("tag_id","=",X).execute()}async verifyMemberOrg(Y,X){return await this.db.selectFrom("member").select("id").where("id","=",Y).where("organizationId","=",X).executeTakeFirst()!==void 0}async getUserTagsInOrg(Y,X){return(await this.db.selectFrom("member").innerJoin("member_tags","member_tags.member_id","member.id").innerJoin("organization_tags","organization_tags.id","member_tags.tag_id").select(["organization_tags.id","organization_tags.organization_id","organization_tags.name","organization_tags.created_at"]).where("member.userId","=",Y).where("member.organizationId","=",X).orderBy("organization_tags.name","asc").execute()).map((J)=>this.tagFromDbRow(J))}async getMembersWithTags(Y){let X=await this.db.selectFrom("member").leftJoin("member_tags","member_tags.member_id","member.id").leftJoin("organization_tags","organization_tags.id","member_tags.tag_id").select(["member.id as memberId","organization_tags.name as tagName"]).where("member.organizationId","=",Y).execute(),Q=new Map;for(let J of X){if(!Q.has(J.memberId))Q.set(J.memberId,[]);if(J.tagName)Q.get(J.memberId).push(J.tagName)}return Q}tagFromDbRow(Y){return{id:Y.id,organizationId:Y.organization_id,name:Y.name,createdAt:Y.created_at}}}var mL1=S(()=>{UW()});class C70{db;constructor(Y){this.db=Y}async findById(Y,X){let Q=await this.db.selectFrom("user").select(["user.id","user.name","user.email","user.image","user.createdAt","user.updatedAt"]).where("user.id","=",Y).where((J)=>J.exists(J.selectFrom("member as m1").innerJoin("member as m2","m1.organizationId","m2.organizationId").select("m1.id").where("m1.userId","=",Y).where("m2.userId","=",X))).executeTakeFirst();if(!Q)return null;return{id:Q.id,name:Q.name,email:Q.email,role:"",createdAt:Q.createdAt,updatedAt:Q.updatedAt,image:Q.image??void 0}}}var lL1="mcp.mesh";var dL1,I70,y3;var Ou=S(()=>{dL1=class dL1 extends Error{constructor(Y){super(Y);this.name="UnauthorizedError"}};I70=class I70 extends Error{constructor(Y){super(Y);this.name="ForbiddenError"}};y3=class y3{userId;toolName;boundAuth;role;connectionId;getToolMeta;_granted=!1;constructor(Y,X,Q,J,G,K="self",W){this.userId=X;this.toolName=Q;this.boundAuth=J;this.role=G;this.connectionId=K;this.getToolMeta=W}[Symbol.dispose](){this._granted=!1}setToolName(Y){this.toolName=Y}grant(){return this._granted=!0,{[Symbol.dispose]:()=>{this._granted=!1}}}async check(...Y){if(this._granted)return;if(this.toolName?.startsWith("MESH_PUBLIC_")){this.grant();return}if(!this.userId&&!this.boundAuth){if(this.getToolMeta&&await this.isToolPublic()){this.grant();return}throw new dL1("Authentication required. Please provide a valid OAuth token or API key.")}let X=Y.length>0?Y:this.toolName?[this.toolName]:[];if(X.length===0)throw new I70("No resources specified for access check");for(let Q of X)if(await this.checkResource(Q)){this.grant();return}throw new I70(`Access denied to: ${X.join(", ")}`)}async checkResource(Y){if(!this.userId&&!this.boundAuth)return!1;if(this.role==="admin"||this.role==="owner")return!0;if(!this.boundAuth)return!1;let X={};if(this.connectionId)X[this.connectionId]=[Y];return this.boundAuth.hasPermission(X)}async isToolPublic(){if(this.toolName?.startsWith("MESH_PUBLIC_"))return!0;if(!this.getToolMeta)return!1;try{let Y=await this.getToolMeta();if(!Y)return!1;let Q=Y[lL1]?.public_tool;return Q===!0||Q==="true"}catch{return!1}}granted(){return this._granted}}});async function pL1(Y){if(!Y.refreshToken)return{success:!1,error:"No refresh token available"};if(!Y.tokenEndpoint)return{success:!1,error:"No token endpoint available"};if(!Y.clientId)return{success:!1,error:"No client ID available"};try{let X=new URLSearchParams({grant_type:"refresh_token",refresh_token:Y.refreshToken,client_id:Y.clientId});if(Y.clientSecret)X.set("client_secret",Y.clientSecret);if(Y.scope)X.set("scope",Y.scope);let Q=await fetch(Y.tokenEndpoint,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:X.toString()});if(!Q.ok){let G=await Q.text();console.error(`[TokenRefresh] Failed to refresh token: ${Q.status}`,G);try{let K=JSON.parse(G);return{success:!1,error:K.error_description||K.error||`Token refresh failed: ${Q.status}`}}catch{return{success:!1,error:`Token refresh failed: ${Q.status}`}}}let J=await Q.json();return{success:!0,accessToken:J.access_token,refreshToken:J.refresh_token||Y.refreshToken,expiresIn:J.expires_in,scope:J.scope}}catch(X){return console.error("[TokenRefresh] Error refreshing token:",X),{success:!1,error:X instanceof Error?X.message:"Token refresh failed"}}}async function f2(Y,X,Q){let J=Y.id,G=qG0(Y.configuration_state,Y.configuration_scopes),K=X.auth.user?.id??X.auth.apiKey?.userId??(Q?Y.created_by:void 0),[W,Z]=K?await bL1({sub:K,user:{id:K},metadata:{state:Y.configuration_state??void 0,meshUrl:process.env.MESH_URL??X.baseUrl,connectionId:J,organizationId:X.organization?.id},permissions:G}).then((B)=>[B,null]).catch((B)=>[null,B]):[null,Error("User ID required to issue configuration token")];if(Z)console.error("Failed to issue configuration token:",W);let H=X.auth.user?.connectionId,F={...H?{"x-caller-id":H}:{},...X.metadata.wellKnownForwardableHeaders??{},"x-request-id":X.metadata.requestId},V=null,$=new ZK(X.db,X.vault),q=await $.get(J);if(q){let B=!!q.refreshToken&&!!q.tokenEndpoint;if($.isExpired(q,B?300000:0))if(B){console.log(`[Proxy] Token expired for ${J}, attempting refresh`);let O=await pL1(q);if(O.success&&O.accessToken)await $.upsert({connectionId:J,accessToken:O.accessToken,refreshToken:O.refreshToken??q.refreshToken,scope:O.scope??q.scope,expiresAt:O.expiresIn?new Date(Date.now()+O.expiresIn*1000):null,clientId:q.clientId,clientSecret:q.clientSecret,tokenEndpoint:q.tokenEndpoint}),V=O.accessToken,console.log(`[Proxy] Token refreshed for ${J}`);else await $.delete(J),console.error(`[Proxy] Token refresh failed for ${J}: ${O.error}`)}else await $.delete(J),console.log(`[Proxy] Token expired without refresh capability for ${J}`);else V=q.accessToken}if(!V&&Y.connection_token)V=Y.connection_token;if(V)F.Authorization=`Bearer ${V}`;if(W)F["x-mesh-token"]=W;return F}var R70=S(()=>{zG0();w70();Gu()});function cL1(Y){let X=new iP({command:Y.command,args:Y.args,env:Y.env,cwd:Y.cwd,stderr:"pipe"}),Q=Y.name||Y.id,J="\x1B[2m",G="\x1B[0m";return X.stderr?.on("data",(K)=>{let W=K.toString().trimEnd();if(W)console.error(`${W} \x1B[2m[${Q}]\x1B[0m`)}),X}var nL1=S(()=>{L50()});async function iL1(Y,X,Q=!1){let J=Y.id;switch(Y.connection_type){case"STDIO":{if(process.env.UNSAFE_ALLOW_STDIO_TRANSPORT!=="true")throw Error("STDIO connections are disabled in production. Set UNSAFE_ALLOW_STDIO_TRANSPORT=true to enable.");let G=Y.connection_headers;if(!BW(G))throw Error("STDIO connection missing parameters");let K=cL1({id:J,name:Y.title,command:G.command,args:G.args,env:G.envVars,cwd:G.cwd});return X.getOrCreateClient(K,J)}case"HTTP":case"Websocket":{if(!Y.connection_url)throw Error(`${Y.connection_type} connection missing URL`);let G=await f2(Y,X,Q),K=Y.connection_headers;if(K&&"headers"in K)Object.assign(G,K.headers);let W=new P3(new URL(Y.connection_url),{requestInit:{headers:G}});return X.getOrCreateClient(W,J)}case"SSE":{if(!Y.connection_url)throw Error("SSE connection missing URL");let G=await f2(Y,X,Q),K=Y.connection_headers;if(K&&"headers"in K)Object.assign(G,K.headers);let W=new u$(new URL(Y.connection_url),{requestInit:{headers:G}});return X.getOrCreateClient(W,J)}default:throw Error(`Unknown connection type: ${Y.connection_type}`)}}var aL1=S(()=>{tZ();kx();vP();R70();nL1()});class rL1{factory;promise=null;constructor(Y){this.factory=Y}getOrCreatePromise(){if(!this.promise)this.promise=this.factory();return this.promise}then(Y,X){return this.getOrCreatePromise().then(Y,X)}catch(Y){return this.getOrCreatePromise().catch(Y)}finally(Y){return this.getOrCreatePromise().finally(Y)}}function e$(Y){return new rL1(Y)}async function FJ4(Y,X){let Q=await Promise.all(Y.map(async(J)=>{try{let G=await X.createMCPProxy(J);return[J.id,G]}catch(G){return console.warn(`[aggregator] Failed to create proxy for connection ${J.id}:`,G),null}}));return new Map(Q.filter((J)=>!!J))}async function oL1(Y){let X=[];for(let[,Q]of Y)X.push(Q.close().catch(()=>{}));await Promise.all(X)}var ZO;var j70=S(()=>{kD();ZO=class ZO extends R5{options;ctx;_cachedTools;_cachedResources;_cachedPrompts;_clients;_connections;_selectionMap;constructor(Y,X){super({name:"virtual-mcp-passthrough",version:"1.0.0"},{capabilities:{tasks:{list:{},cancel:{},requests:{tool:{call:{}}}}}});this.options=Y;this.ctx=X;this._selectionMap=new Map;for(let Q of Y.virtualMcp.connections)this._selectionMap.set(Q.connection_id,Q);this._connections=new Map;for(let Q of Y.connections)this._connections.set(Q.id,Q);this._clients=e$(()=>FJ4(this.options.connections,this.ctx)),this._cachedTools=e$(()=>this.loadCache("tools")),this._cachedResources=e$(()=>this.loadCache("resources")),this._cachedPrompts=e$(()=>this.loadCache("prompts"))}async loadCache(Y){let X=await this._clients,Q=await Promise.all(Array.from(X.entries()).map(async([K,W])=>{try{let Z=Y==="tools"?await W.listTools().then((F)=>F.tools):Y==="resources"?await W.listResources().then((F)=>F.resources):await W.listPrompts().then((F)=>F.prompts),H=this._selectionMap.get(K);if(H?.[`selected_${Y}`]?.length){let F=new Set(H[`selected_${Y}`]);Z=Z.filter((V)=>F.has(V.name))}return{connectionId:K,data:Z}}catch(Z){return console.error(`[PassthroughClient] Failed to load cache for connection ${K}:`,Z),null}})),J=[],G=new Map;for(let K of Q){if(!K)continue;let{connectionId:W,data:Z}=K,F=this._connections.get(W)?.title??"";for(let V of Z){let $=V.name;if(G.has($))continue;let q={...V,_meta:{connectionId:W,connectionTitle:F,...V?._meta}};J.push(q),G.set($,W)}}return{data:J,mappings:G}}async listTools(){return{tools:(await this._cachedTools).data}}async callTool(Y){let[X,Q]=await Promise.all([this._cachedTools,this._clients]),J=X.mappings.get(Y.name);if(!J)return{content:[{type:"text",text:`Tool not found: ${Y.name}`}],isError:!0};let G=Q.get(J);if(!G)return{content:[{type:"text",text:`Connection not found for tool: ${Y.name}`}],isError:!0};return await G.callTool({name:Y.name,arguments:Y.arguments??{}})}async listResources(){return{resources:(await this._cachedResources).data}}async readResource(Y){let[X,Q]=await Promise.all([this._cachedResources,this._clients]),J=X.mappings.get(Y.uri);if(!J)throw Error(`Resource not found: ${Y.uri}`);let G=Q.get(J);if(!G)throw Error(`Connection not found for resource: ${Y.uri}`);return await G.readResource(Y)}async listPrompts(){return{prompts:(await this._cachedPrompts).data}}async getPrompt(Y){let[X,Q]=await Promise.all([this._cachedPrompts,this._clients]),J=X.mappings.get(Y.name);if(!J)throw Error(`Prompt not found: ${Y.name}`);let G=Q.get(J);if(!G)throw Error(`Connection not found for prompt: ${Y.name}`);return await G.getPrompt(Y)}async callStreamableTool(Y,X){let[Q,J]=await Promise.all([this._cachedTools,this._clients]),G=Q.mappings.get(Y);if(G){let W=J.get(G);if(W)return W.callStreamableTool(Y,X)}let K=await this.callTool({name:Y,arguments:X});return new Response(JSON.stringify(K),{headers:{"Content-Type":"application/json"}})}async[Symbol.asyncDispose](){let Y=await this._clients;if(Y)await oL1(Y)}async close(){let Y=await this._clients;if(Y)await oL1(Y);await super.close()}getInstructions(){return this.options.virtualMcp.metadata?.instructions??void 0}}});var sL1,VJ4,tL1,$J4,h2;var S70=S(()=>{n0();c$();j70();sL1=z.object({query:z.string().min(1).describe("Search query to find tools by name or description"),limit:z.number().default(10).describe("Maximum number of results to return")}),VJ4=z.toJSONSchema(sL1),tL1=z.object({tools:z.array(z.string()).min(1).describe("Array of tool names to get detailed schemas for")}),$J4=z.toJSONSchema(tL1);h2=class h2 extends ZO{constructor(Y,X){super(Y,X)}getSearchTool(Y){return{name:"GATEWAY_SEARCH_TOOLS",description:`Search for available tools by name or description. Returns tool names and brief descriptions without full schemas. Use this to discover tools before calling GATEWAY_DESCRIBE_TOOLS for detailed schemas. Total tools: ${Y}.`,inputSchema:VJ4}}getDescribeTool(){return{name:"GATEWAY_DESCRIBE_TOOLS",description:"Get detailed schemas for specific tools. Call after GATEWAY_SEARCH_TOOLS to get full input/output schemas.",inputSchema:$J4}}async handleSearch(Y){let X=sL1.safeParse(Y);if(!X.success)return S3({error:X.error.flatten()});let Q=await this._cachedTools,J=QK(Q.data),G=px(X.data.query,J,X.data.limit);return J2({query:X.data.query,results:G.map((K)=>({name:K.name,description:K.description,connection:K._meta.connectionTitle})),totalAvailable:J.length})}async handleDescribe(Y){let X=tL1.safeParse(Y);if(!X.success)return S3({error:X.error.flatten()});let Q=await this._cachedTools,J=QK(Q.data),G=cx(X.data.tools,J);return J2({tools:G.tools,notFound:G.notFound})}async listTools(){let Y=await this._cachedTools,X=QK(Y.data);return{tools:[this.getSearchTool(X.length),this.getDescribeTool()]}}async callTool(Y){if(Y.name==="GATEWAY_SEARCH_TOOLS")return this.handleSearch(Y.arguments??{});if(Y.name==="GATEWAY_DESCRIBE_TOOLS")return this.handleDescribe(Y.arguments??{});return{content:[{type:"text",text:`Unknown tool: ${Y.name}. Available: GATEWAY_SEARCH_TOOLS, GATEWAY_DESCRIBE_TOOLS`}],isError:!0}}async routeToolCall(Y){return ZO.prototype.callTool.call(this,Y)}}});var eL1,qJ4,k70;var Yw1=S(()=>{n0();c$();S70();eL1=z.object({code:z.string().min(1).describe("JavaScript code to execute. It runs as an async function body; you can use top-level `return` and `await`."),timeoutMs:z.number().default(3000).describe("Max execution time in milliseconds (default: 3000).")}),qJ4=z.toJSONSchema(eL1);k70=class k70 extends h2{constructor(Y,X){super(Y,X)}getRunCodeTool(){return{name:"GATEWAY_RUN_CODE",description:'Run JavaScript code in a sandbox. Code must be an ES module that `export default`s an async function that receives (tools) as its first parameter. Use GATEWAY_DESCRIBE_TOOLS to understand the input/output schemas for a tool before calling it. Use `await tools.toolName(args)` or `await tools["tool-name"](args)` to call tools.',inputSchema:qJ4}}async handleRunCode(Y){let X=eL1.safeParse(Y);if(!X.success)return S3({error:X.error.flatten()});let Q=await this._cachedTools,G={tools:QK(Q.data),callTool:async(W,Z)=>{return this.routeToolCall({name:W,arguments:Z})}},K=await nx(X.data.code,G,X.data.timeoutMs);if(K.error)return S3(K);return J2(K)}async listTools(){return{tools:[...(await super.listTools()).tools,this.getRunCodeTool()]}}async callTool(Y){if(Y.name==="GATEWAY_RUN_CODE")return this.handleRunCode(Y.arguments??{});return super.callTool(Y)}}});function Qw1(Y){let X=Y.slice().sort().join(","),Q=Xw1.get(X);if(!Q){let J=z.object({name:(Y.length>0?z.enum(Y):z.string()).describe("The name of the tool to execute"),arguments:z.record(z.string(),z.unknown()).default({}).describe("Arguments to pass to the tool")});Q={schema:J,jsonSchema:z.toJSONSchema(J)},Xw1.set(X,Q)}return Q}var Xw1,v70;var Jw1=S(()=>{n0();c$();S70();Xw1=new Map;v70=class v70 extends h2{constructor(Y,X){super(Y,X)}async getCallTool(){let Y=await this._cachedTools,Q=QK(Y.data).map((G)=>G.name),{jsonSchema:J}=Qw1(Q);return{name:"GATEWAY_CALL_TOOL",description:"Execute a tool by name. Use GATEWAY_DESCRIBE_TOOLS first to understand the input schema.",inputSchema:J}}async handleCallTool(Y){let X=await this._cachedTools,Q=QK(X.data),J=Q.map((F)=>F.name),{schema:G}=Qw1(J),K=G.safeParse(Y);if(!K.success)return S3({error:K.error.flatten()});let{name:W,arguments:Z}=K.data;if(!new Map(Q.map((F)=>[F.name,F])).has(W))return{content:[{type:"text",text:`Tool not found: ${W}. Use GATEWAY_SEARCH_TOOLS to find available tools.`}],isError:!0};return this.routeToolCall({name:W,arguments:Z})}async listTools(){let Y=await super.listTools(),X=await this.getCallTool();return{tools:[...Y.tools,X]}}async callTool(Y){if(Y.name==="GATEWAY_CALL_TOOL")return this.handleCallTool(Y.arguments??{});return super.callTool(Y)}}});function _70(Y){switch(Y){case"smart_tool_selection":return"smart_tool_selection";case"code_execution":return"code_execution";case"passthrough":default:return"passthrough"}}function zJ4(Y,X){if(Y.connection_type!=="VIRTUAL")return!1;if(!X||sZ(X))return!1;return Y.id===X}async function Gw1(Y,X){let Q=Y.id,J=await X.storage.virtualMcps.findById(Q);if(!J)throw Error(`Virtual MCP not found: ${Q}`);return b2(J,X,"passthrough")}async function b2(Y,X,Q){let G=Y.connections.map((H)=>H.connection_id).map((H)=>X.storage.connections.findById(H)),Z={connections:(await Promise.all(G)).filter((H)=>H!==null&&H.status==="active"&&!zJ4(H,Y.id)),virtualMcp:Y};return Q==="smart_tool_selection"?new v70(Z,X):Q==="code_execution"?new k70(Z,X):new ZO(Z,X)}var Nu=S(()=>{j5();Yw1();j70();Jw1()});async function Ww1(Y,X,Q=!1){if(Y.connection_type==="VIRTUAL")return Gw1(Y,X);return iL1(Y,X,Q)}var Zw1=S(()=>{aL1();Nu()});async function Lu(Y,X){let Q=Y.get("meshContext");try{let J=Y.req.header("x-org-id"),G=Y.req.header("x-org-slug"),K=J?J:G?await Q.db.selectFrom("organization").select("id").where("slug","=",G).executeTakeFirst().then((B)=>B?.id):null,W=X?X:K?Ex(K):null;if(!W)return Y.json({error:"Agent ID or organization ID is required"},400);let Z=await Q.storage.virtualMcps.findById(W,K??void 0);if(!Z)return Y.json({error:"Agent not found"},404);if(K&&Z.organization_id!==K)return Y.json({error:"Agent not found"},404);if(Z.status!=="active")return Y.json({error:`Agent is inactive: ${Z.id??"Decopilot"}`},503);Q.connectionId=Z.id??void 0;let H=await Q.db.selectFrom("organization").select(["id","slug","name"]).where("id","=",Z.organization_id).executeTakeFirst();if(H)Q.organization={id:H.id,slug:H.slug,name:H.name};let F=_70(Y.req.query("mode")),V=await b2(Z,Q,F),$=gP(V,{name:`mcp-virtual-mcp-${Z.title??"Decopilot"}`,version:"1.0.0"},{capabilities:{tools:{},resources:{},prompts:{}},instructions:Z.metadata?.instructions??void 0}),q=new g$({enableJsonResponse:Y.req.header("Accept")?.includes("application/json")??!1});return await $.connect(q),await q.handleRequest(Y.req.raw)}catch(J){let G=J;return console.error("[virtual-mcp] Error handling virtual MCP request:",G),Y.json({error:"Internal server error",message:G.message},500)}}var y70,Kw1;var f70=S(()=>{j5();fx();vG();Nu();y70=new O9;y70.all("/gateway/:virtualMcpId?",async(Y)=>{let X=Y.req.param("virtualMcpId")||Y.req.header("x-virtual-mcp-id");return Lu(Y,X)});y70.all("/virtual-mcp/:virtualMcpId?",async(Y)=>{let X=Y.req.param("virtualMcpId")||Y.req.header("x-virtual-mcp-id");return Lu(Y,X)});Kw1=y70});async function Hw1(Y,X){return(await X.storage.connections.findById(Y))?.connection_url??null}function BJ4(Y){let X=Y.toLowerCase();return X.includes("resource_metadata=")||X.includes("invalid_token")||X.includes("oauth")}async function Fw1(Y,X={}){try{let Q=await fetch(Y,{method:"POST",headers:{...X,"Content-Type":"application/json",Accept:"application/json, text/event-stream"},body:JSON.stringify({jsonrpc:"2.0",id:0,method:"initialize",params:{protocolVersion:"2025-06-18",capabilities:{},clientInfo:{name:"mcp-mesh-proxy",version:"1.0.0"}}})});if(Q.status===401){let J=Q.headers.get("WWW-Authenticate");if(J){if(BJ4(J))return J}if(await UJ4(Y))return'Bearer realm="mcp"'}return null}catch{return null}}async function UJ4(Y){try{let X=new URL(Y),Q=new URL("/.well-known/oauth-authorization-server",X.origin),J=await fetch(Q.toString(),{method:"GET",headers:{Accept:"application/json"}});if(J.ok){let G=await J.json();if(G.authorization_endpoint||G.token_endpoint||G.issuer)return!0}return!1}catch{return!1}}async function Mu(Y){let Q=new URL(Y).pathname;if(Q.endsWith("/"))Q=Q.slice(0,-1);let J=new URL(Y);J.pathname=`${Q}/.well-known/oauth-protected-resource`;let G=await fetch(J.toString(),{method:"GET",headers:{Accept:"application/json"}});if(G.ok)return G;if(!h70.includes(G.status))return G;let K=new URL(Y);if(K.pathname=`/.well-known/oauth-protected-resource${Q}`,G=await fetch(K.toString(),{method:"GET",headers:{Accept:"application/json"}}),!h70.includes(G.status))return G;let W=new URL(Y);return W.pathname="/.well-known/oauth-protected-resource",G=await fetch(W.toString(),{method:"GET",headers:{Accept:"application/json"}}),G}async function DJ4(Y,X){let Q=await Hw1(Y,X);if(!Q)return null;let J;try{J=new URL(Q).origin}catch{return null}try{let G=await Mu(Q);if(G.ok){let K=await G.json();if(K.authorization_servers?.[0])return K.authorization_servers[0]}}catch{}return J}async function Vw1(Y){let X=Y.get("meshContext");if(!X)X=await f3.create(Y.req.raw),Y.set("meshContext",X);return X}async function $w1({error:Y,reqUrl:X,connectionId:Q,connectionUrl:J,headers:G}){let K=Y.message?.toLowerCase()??"";if(!(Y.status===401||Y.code===401||Y.message?.includes("401")||K.includes("unauthorized")||K.includes("invalid_token")||K.includes("api key required")||K.includes("api-key required")))return null;if(Boolean(await Fw1(J,G)))return new Response(null,{status:401,headers:{"WWW-Authenticate":`Bearer realm="mcp",resource_metadata="${X.origin}/mcp/${Q}/.well-known/oauth-protected-resource"`}});return new Response(JSON.stringify({error:"unauthorized",message:"Authentication required but server does not support OAuth"}),{status:401,headers:{"Content-Type":"application/json"}})}async function b70(Y){let Q=new URL(Y).pathname;if(Q.endsWith("/"))Q=Q.slice(0,-1);let J=Q!==""&&Q!=="/",G=[];if(J){let W=new URL(Y);W.pathname=`/.well-known/oauth-authorization-server${Q}`,G.push(W);let Z=new URL(Y);Z.pathname=`/.well-known/openid-configuration${Q}`,G.push(Z);let H=new URL(Y);H.pathname=`${Q}/.well-known/openid-configuration`,G.push(H)}else{let W=new URL(Y);W.pathname="/.well-known/oauth-authorization-server",G.push(W);let Z=new URL(Y);Z.pathname="/.well-known/openid-configuration",G.push(Z)}let K=null;for(let W of G){if(K=await fetch(W.toString(),{method:"GET",headers:{Accept:"application/json"}}),K.ok)return K;if(K.status!==404&&K.status!==401)return K}return K}var wu,h70,qw1=(Y)=>{if(!(Y.hostname==="localhost"||Y.hostname==="127.0.0.1"))Y.protocol="https:";return Y},zw1=async(Y)=>{let X=Y.req.param("connectionId"),Q=await Vw1(Y),J=await Hw1(X,Q);if(!J)return Y.json({error:"Connection not found"},404);let G=qw1(new URL(Y.req.url)),K=`${G.origin}/mcp/${X}`,W=`${G.origin}/oauth-proxy/${X}`;try{let Z=await Mu(J);if(!Z.ok&&h70.includes(Z.status)){if(await Fw1(J))return new Response(JSON.stringify({resource:K,authorization_servers:[W],bearer_methods_supported:["header"],scopes_supported:["*"]}),{status:200,headers:{"Content-Type":"application/json"}});return new Response(Z.body,{status:Z.status,statusText:Z.statusText,headers:{"Content-Type":"application/json"}})}if(!Z.ok)return new Response(Z.body,{status:Z.status,statusText:Z.statusText,headers:{"Content-Type":"application/json"}});let H=await Z.json();if("issuer"in H&&!("resource"in H)&&(("authorization_endpoint"in H)||("token_endpoint"in H))){let $={resource:K,authorization_servers:[W],bearer_methods_supported:["header"],scopes_supported:"scopes_supported"in H&&Array.isArray(H.scopes_supported)&&H.scopes_supported.length>0?H.scopes_supported:["*"]};return new Response(JSON.stringify($),{status:200,headers:{"Content-Type":"application/json"}})}let V={...H,resource:K,authorization_servers:[W]};return new Response(JSON.stringify(V),{status:Z.status,statusText:Z.statusText,headers:{"Content-Type":"application/json"}})}catch(Z){let H=Z;return console.error("[oauth-proxy] Failed to proxy OAuth protected resource metadata:",H),Y.json({error:"Failed to proxy OAuth metadata",message:H.message},502)}},Bw1;var x70=S(()=>{vG();Au();wu=new O9,h70=[404,401,406];wu.get("/.well-known/oauth-protected-resource/mcp/:connectionId",(Y)=>zw1(Y));wu.get("/mcp/:connectionId/.well-known/oauth-protected-resource",(Y)=>zw1(Y));wu.get("/.well-known/oauth-authorization-server/oauth-proxy/:connectionId",async(Y)=>{let X=Y.req.param("connectionId"),Q=await Vw1(Y),J=await DJ4(X,Q);if(!J)return Y.json({error:"Connection not found or no auth server"},404);try{let G=await b70(J);if(!G.ok)return new Response(G.body,{status:G.status,statusText:G.statusText,headers:{"Content-Type":"application/json"}});let K=await G.json(),Z=`${qw1(new URL(Y.req.url)).origin}/oauth-proxy/${X}`,H={...K,authorization_endpoint:K.authorization_endpoint?`${Z}/authorize`:void 0,token_endpoint:K.token_endpoint?`${Z}/token`:void 0,registration_endpoint:K.registration_endpoint?`${Z}/register`:void 0};return new Response(JSON.stringify(H),{status:200,headers:{"Content-Type":"application/json"}})}catch(G){let K=G;return console.error("[oauth-proxy] Failed to proxy auth server metadata:",K),Y.json({error:"Failed to proxy auth server metadata",message:K.message},502)}});Bw1=wu});function OJ4(Y){if(!Y.isError)return;let X=Y.content;if(!Array.isArray(X))return;for(let Q of X)if(Q&&typeof Q==="object"&&"type"in Q&&Q.type==="text"&&"text"in Q&&typeof Q.text==="string")return Q.text;return}function NJ4(Y){if(!Y)return;let X=Y._meta;if(!X||typeof X!=="object"||Array.isArray(X))return;let Q=X.properties;if(!Q||typeof Q!=="object"||Array.isArray(Q))return;let J={};for(let[G,K]of Object.entries(Q))if(typeof K==="string")J[G]=K;return Object.keys(J).length>0?J:void 0}function LJ4(Y,X){if(!Y&&!X)return;if(!Y)return X;if(!X)return Y;return{...X,...Y}}function Dw1(Y){if(Y&&typeof Y==="object"&&!Array.isArray(Y)){let X=Y,Q=X.structuredContent;if(Q&&typeof Q==="object"&&!Array.isArray(Q))return Q;return X}return{value:Y}}async function wJ4(Y,X){let Q=Y.body;if(!Q)return{text:"",truncated:!1};let J=Q.getReader(),G=new TextDecoder,K=!1,W=0,Z=[];try{while(!0){let{value:H,done:F}=await J.read();if(F)break;if(H){if(W+=H.byteLength,W>X){K=!0;let V=X-(W-H.byteLength);if(V>0)Z.push(G.decode(H.slice(0,V),{stream:!0}));break}Z.push(G.decode(H,{stream:!0}))}}}finally{J.releaseLock()}return Z.push(G.decode()),{text:Z.join(""),truncated:K}}async function x2(Y){let{ctx:X,enabled:Q}=Y,J=Y.organizationId??X.organization?.id;if(!Q||!J)return;if(sZ(Y.connectionId))return;let G=NJ4(Y.request.params.arguments),K=LJ4(X.metadata.properties,G),W=X.auth.user?.id||X.auth.apiKey?.userId;if(W)try{let Z=await X.storage.tags.getUserTagsInOrg(W,J);if(Z.length>0){let H=Z.map((F)=>F.name).join(",");K={...K,user_tags:H}}}catch{}await X.storage.monitoring.log({organizationId:J,connectionId:Y.connectionId,connectionTitle:Y.connectionTitle,toolName:Y.request.params.name,input:Y.request.params.arguments??{},output:Y.output,isError:Y.isError,errorMessage:Y.errorMessage,durationMs:Y.durationMs,timestamp:new Date,userId:X.auth.user?.id||X.auth.apiKey?.userId||null,requestId:X.metadata.requestId,userAgent:X.metadata.userAgent,virtualMcpId:Y.virtualMcpId,properties:K})}function Ow1(Y){let{ctx:X,enabled:Q,connectionId:J,connectionTitle:G,virtualMcpId:K}=Y;return async(W,Z)=>{let H=Date.now();try{let F=await Z(),V=Date.now()-H;return await x2({ctx:X,enabled:Q,connectionId:J,connectionTitle:G,virtualMcpId:K,request:W,output:Dw1(F),isError:Boolean(F.isError),errorMessage:OJ4(F),durationMs:V}),F}catch(F){let V=F,$=Date.now()-H;throw await x2({ctx:X,enabled:Q,connectionId:J,connectionTitle:G,virtualMcpId:K,request:W,output:{},isError:!0,errorMessage:V.message,durationMs:$}),F}}}function Nw1(Y){let{ctx:X,enabled:Q,connectionId:J,connectionTitle:G,virtualMcpId:K}=Y;return async(W,Z)=>{let H=Date.now();try{let F=await Z(),V=X.organization?.id;if(Q&&V){let $=F.clone();(async()=>{try{let{text:q,truncated:B}=await wJ4($,Uw1),D=Date.now()-H,O=$.headers.get("content-type")??"",L=q;if(O.includes("application/json"))try{L=q.length?JSON.parse(q):null}catch{L=q}let w=F.status>=400,R=w&&L&&typeof L==="object"&&"error"in L?L.error:void 0,P=typeof R==="string"&&R?R:w&&typeof L==="string"&&L.trim()?L.slice(0,500):w?`HTTP ${F.status} ${F.statusText}`.trim():B?`Response body truncated to ${Uw1} bytes`:void 0;await x2({ctx:X,enabled:Q,organizationId:V,connectionId:J,connectionTitle:G,virtualMcpId:K,request:W,output:Dw1(L),isError:w,errorMessage:P,durationMs:D})}catch(q){let B=Date.now()-H;await x2({ctx:X,enabled:Q,organizationId:V,connectionId:J,connectionTitle:G,virtualMcpId:K,request:W,output:{},isError:!0,errorMessage:`Failed to read streamable response body: ${q.message}`,durationMs:B})}})()}return F}catch(F){let V=F,$=Date.now()-H;throw await x2({ctx:X,enabled:Q,connectionId:J,connectionTitle:G,virtualMcpId:K,request:W,output:{},isError:!0,errorMessage:V.message,durationMs:$}),F}}}var Uw1=262144;var Lw1=S(()=>{j5()});function MJ4(Y,X,Q){return async(J,G)=>{try{let K=J.params.name,W=async()=>{let{tools:H}=await Q();return H.find((V)=>V.name===K)?._meta};return await new y3(Y.authInstance,Y.auth.user?.id??Y.auth.apiKey?.userId,K,Y.boundAuth,Y.auth.user?.role,X,W).check(K),await G()}catch(K){return{content:[{type:"text",text:`Authorization failed: ${K.message}`}],isError:!0}}}}function AJ4(Y,X,Q){return async(J,G)=>{try{let K=J.params.name,W=async()=>{let{tools:H}=await Q();return H.find((V)=>V.name===K)?._meta};return await new y3(Y.authInstance,Y.auth.user?.id??Y.auth.apiKey?.userId,K,Y.boundAuth,Y.auth.user?.role,X,W).check(K),await G()}catch(K){return new Response(JSON.stringify({error:`Authorization failed: ${K.message}`}),{status:403,headers:{"Content-Type":"application/json"}})}}}function Yq(Y){return{client:{callTool:Y.callTool.bind(Y),listTools:Y.listTools.bind(Y)},callStreamableTool:Y.callStreamableTool.bind(Y)}}async function ww1(Y,X,{superUser:Q}){let J=typeof Y==="string"?await X.storage.connections.findById(Y,X.organization?.id):Y;if(!J)throw Error("Connection not found");let G=J?.id;if(X.organization&&J.organization_id!==X.organization.id)throw Error("Connection does not belong to the active organization");if(X.organization??={id:J.organization_id},J.status!=="active")throw Error(`Connection inactive: ${J.status}`);let K=await Ww1(J,X,Q),W=async()=>{if(J.tools&&J.tools.length>0)return{tools:J.tools.map((w)=>({name:w.name,description:w.description,inputSchema:w.inputSchema,outputSchema:w.outputSchema,annotations:w.annotations,_meta:w._meta}))};return await K.listTools()},Z=X.connectionId&&X.connectionId!==G?X.connectionId:void 0,H={enabled:FT0().enabled,connectionId:G,connectionTitle:J.title,virtualMcpId:Z,ctx:X},F=async(w)=>{return aP(Ow1(H),Q?async(P,T)=>await T():MJ4(X,G,W))(w,async()=>{let P=Date.now(),T={...w.params};if(T.arguments&&"_meta"in T.arguments){let{_meta:A,...I}=T.arguments;T.arguments=I}return await X.tracer.startActiveSpan("mcp.proxy.callTool",{attributes:{"connection.id":G,"tool.name":w.params.name,"request.id":X.metadata.requestId}},async(A)=>{try{let I=await K.callTool(T,void 0,{timeout:u70}),j=Date.now()-P;return X.meter.createHistogram("connection.proxy.duration").record(j,{"connection.id":G,"tool.name":w.params.name,status:"success"}),X.meter.createCounter("connection.proxy.requests").add(1,{"connection.id":G,"tool.name":w.params.name,status:"success"}),A.end(),I}catch(I){let j=I,k=Date.now()-P;throw X.meter.createHistogram("connection.proxy.duration").record(k,{"connection.id":G,"tool.name":w.params.name,status:"error"}),X.meter.createCounter("connection.proxy.errors").add(1,{"connection.id":G,"tool.name":w.params.name,error:j.message}),A.recordException(j),A.end(),I}})})};return{callTool:(w)=>F({method:"tools/call",params:w}),listTools:W,listResources:async()=>{try{return await K.listResources()}catch(w){if(w instanceof $1&&w.code===O1.MethodNotFound)return{resources:[]};throw w}},readResource:async(w)=>K.readResource(w),listResourceTemplates:async()=>{try{return await K.listResourceTemplates()}catch(w){if(w instanceof $1&&w.code===O1.MethodNotFound)return{resourceTemplates:[]};throw w}},listPrompts:async()=>{try{return await K.listPrompts()}catch(w){if(w instanceof $1&&w.code===O1.MethodNotFound)return{prompts:[]};throw w}},getPrompt:async(w)=>K.getPrompt(w),getServerCapabilities:()=>TJ4,getInstructions:()=>K.getInstructions(),close:()=>K.close(),callStreamableTool:async(w,R)=>{if(J.connection_type==="VIRTUAL"){let I=await F({method:"tools/call",params:{name:w,arguments:R}});return new Response(JSON.stringify(I),{headers:{"Content-Type":"application/json"}})}if(!J.connection_url)throw Error("Streamable tools require HTTP connection with URL");let P=J.connection_url,T={method:"tools/call",params:{name:w,arguments:R}};return aP(Nw1(H),Q?async(I,j)=>await j():AJ4(X,G,W))(T,async()=>{let I=await f2(J,X,Q),j=J.connection_headers;if(j&&"headers"in j)Object.assign(I,j.headers);let k=new URL(P);return k.pathname=k.pathname.replace(/\/$/,"")+`/call-tool/${T.params.name}`,await X.tracer.startActiveSpan("mcp.proxy.callStreamableTool",{attributes:{"connection.id":G,"tool.name":T.params.name,"request.id":X.metadata.requestId}},async(y)=>{let f=Date.now();try{let h=await fetch(k.toString(),{method:"POST",redirect:"manual",body:JSON.stringify(T.params.arguments),headers:{...I,"Content-Type":"application/json"}}),s=Date.now()-f;return X.meter.createHistogram("connection.proxy.streamable.duration").record(s,{"connection.id":G,"tool.name":T.params.name,status:h.ok?"success":"error"}),X.meter.createCounter("connection.proxy.streamable.requests").add(1,{"connection.id":G,"tool.name":T.params.name,status:h.ok?"success":"error"}),y.end(),h}catch(h){let s=h,u=Date.now()-f;throw X.meter.createHistogram("connection.proxy.streamable.duration").record(u,{"connection.id":G,"tool.name":T.params.name,status:"error"}),X.meter.createCounter("connection.proxy.streamable.errors").add(1,{"connection.id":G,"tool.name":T.params.name,error:s.message}),y.recordException(s),y.end(),h}})})},[Symbol.asyncDispose]:()=>K.close()}}async function Mw1(Y,X){return ww1(Y,X,{superUser:!1})}async function Aw1(Y,X){return ww1(Y,X,{superUser:!0})}var Tu,u70=300000,TJ4,Tw1=(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)},Pw1;var Xq=S(()=>{Rv();Zw1();R70();j5();fx();UX();vG();Ou();f70();x70();Lw1();Tu=new O9;TJ4={tools:{},resources:{},prompts:{}};Tu.all("/",async(Y)=>{return Lu(Y,void 0)});Tu.all("/:connectionId",async(Y)=>{let X=Y.req.param("connectionId"),Q=Y.get("meshContext");try{try{let J=await Q.createMCPProxy(X),G=gP(J,{name:"mcp-mesh",version:"1.0.0"}),K=new g$({enableJsonResponse:Y.req.raw.headers.get("Accept")?.includes("application/json")??!1});return await G.connect(K),await K.handleRequest(Y.req.raw)}catch(J){let G=await Q.storage.connections.findById(X,Q.organization?.id);if(G?.connection_url){let K=await $w1({error:J,reqUrl:new URL(Y.req.raw.url),connectionId:X,connectionUrl:G.connection_url,headers:{}});if(K)return K}throw J}}catch(J){return Tw1(J,Y)}});Tu.all("/:connectionId/call-tool/:toolName",async(Y)=>{let X=Y.req.param("connectionId"),Q=Y.req.param("toolName"),J=Y.get("meshContext");try{let K=await(await J.createMCPProxy(X)).callTool({name:Q,arguments:await Y.req.json()});if(K instanceof Response)return K;if(K.isError)return new Response(JSON.stringify(K.content),{headers:{"Content-Type":"application/json"},status:500});return new Response(JSON.stringify(K.structuredContent??K.content),{headers:{"Content-Type":"application/json"}})}catch(G){return Tw1(G,Y)}});Pw1=Tu});class g70{db;constructor(Y){this.db=Y}async create(Y){let X=Y.id??P8("thrd"),Q=new Date().toISOString();if(!Y.organizationId)throw Error("organizationId is required");if(!Y.createdBy)throw Error("createdBy is required");if(!Y.title)Y.title="New Thread - "+Q;let J={id:X,organization_id:Y.organizationId,title:Y.title,description:Y.description??null,created_at:Q,updated_at:Q,created_by:Y.createdBy,updated_by:Y.updatedBy??null},G=await this.db.insertInto("threads").values(J).returningAll().executeTakeFirstOrThrow();return this.threadFromDbRow(G)}async get(Y){let X=await this.db.selectFrom("threads").selectAll().where("id","=",Y).executeTakeFirst();return X?this.threadFromDbRow(X):null}async update(Y,X){let J={updated_at:new Date().toISOString()};if(X.title!==void 0)J.title=X.title;if(X.description!==void 0)J.description=X.description;if(X.updatedBy!==void 0)J.updated_by=X.updatedBy;if(X.hidden!==void 0)J.hidden=X.hidden;await this.db.updateTable("threads").set(J).where("id","=",Y).execute();let G=await this.get(Y);if(!G)throw Error("Thread not found after update");return G}async delete(Y){await this.db.deleteFrom("threads").where("id","=",Y).execute()}async list(Y,X,Q){let J=this.db.selectFrom("threads").selectAll().where("organization_id","=",Y).where("hidden","=",!1).orderBy("updated_at","desc");if(X)J=J.where("created_by","=",X);let G=this.db.selectFrom("threads").select((Z)=>Z.fn.count("id").as("count")).where("organization_id","=",Y).where("hidden","=",!1);if(X)G=G.where("created_by","=",X);if(Q?.limit)J=J.limit(Q.limit);if(Q?.offset)J=J.offset(Q.offset);let[K,W]=await Promise.all([J.execute(),G.executeTakeFirst()]);return{threads:K.map((Z)=>this.threadFromDbRow(Z)),total:Number(W?.count||0)}}async saveMessages(Y){let X=new Date().toISOString(),Q=Y[0]?.threadId;if(!Q)throw Error("threadId is required when creating multiple messages");let J=Y.find((K)=>K.threadId!==Q);if(J)throw Error(`All messages must target the same thread. Expected threadId "${Q}", but message "${J.id}" has threadId "${J.threadId}"`);let G=Y.map((K)=>({id:K.id,thread_id:Q,metadata:K.metadata?JSON.stringify(K.metadata):null,parts:JSON.stringify(K.parts),role:K.role,created_at:K.createdAt??X,updated_at:X}));await this.db.transaction().execute(async(K)=>{await K.insertInto("thread_messages").values(G).execute(),await K.updateTable("threads").set({updated_at:X}).where("id","=",Q).execute()})}async listMessages(Y,X){let Q=this.db.selectFrom("thread_messages").selectAll().where("thread_id","=",Y).orderBy("created_at","asc").orderBy("id","asc"),J=this.db.selectFrom("thread_messages").select((W)=>W.fn.count("id").as("count")).where("thread_id","=",Y);if(X?.limit)Q=Q.limit(X.limit);if(X?.offset)Q=Q.offset(X.offset);let[G,K]=await Promise.all([Q.execute(),J.executeTakeFirst()]);return{messages:G.map((W)=>this.messageFromDbRow(W)),total:Number(K?.count||0)}}threadFromDbRow(Y){return{id:Y.id,organizationId:Y.organization_id,title:Y.title,description:Y.description,createdAt:typeof Y.created_at==="string"?Y.created_at:Y.created_at.toISOString(),updatedAt:typeof Y.updated_at==="string"?Y.updated_at:Y.updated_at.toISOString(),createdBy:Y.created_by,updatedBy:Y.updated_by,hidden:!!Y.hidden}}messageFromDbRow(Y){let X,Q;try{X=Y.metadata?JSON.parse(Y.metadata):void 0}catch(J){console.error(`Failed to parse metadata for message ${Y.id}:`,Y.metadata,J),X=void 0}try{Q=typeof Y.parts==="string"?JSON.parse(Y.parts):Y.parts}catch(J){console.error(`Failed to parse parts for message ${Y.id}:`,Y.parts,J),Q=[]}return{id:Y.id,threadId:Y.thread_id,metadata:X,parts:Q,role:Y.role,createdAt:typeof Y.created_at==="string"?Y.created_at:Y.created_at.toISOString(),updatedAt:typeof Y.updated_at==="string"?Y.updated_at:Y.updated_at.toISOString()}}}var Ew1=S(()=>{UW()});function Cw1(){let Y=new Map;function X(J,G){let K=Y.get(G);if(K)return console.log(`[ClientPool] Reusing cached client for ${G}`),K;let W=new R5({name:`outbound-client-${G}`,version:"1.0.0"},{capabilities:{tasks:{list:{},cancel:{},requests:{tool:{call:{}}}}}});W.onclose=()=>{Y.delete(G)};let Z=W.connect(J,{timeout:30000}).then(()=>W).catch((H)=>{throw Y.delete(G),H});return Y.set(G,Z),Z}return Object.assign(X,{[Symbol.asyncDispose]:async()=>{let J=[];for(let[G,K]of Y)J.push(K.then((W)=>W.close()).catch((W)=>console.error(`[ClientPool] Error closing client ${G}:`,W)));await Promise.all(J),Y.clear()}})}var Iw1=S(()=>{kD()});function PJ4(Y){if(!Y)return;try{let X=JSON.parse(Y);if(typeof X!=="object"||X===null||Array.isArray(X))return;let Q={};for(let[J,G]of Object.entries(X))if(typeof G==="string")Q[J]=G;return Object.keys(Q).length>0?Q:void 0}catch{return}}function EJ4(Y,X){for(let[Q,J]of Object.entries(X)){let G=Y[Q];if(!G||G.length===0){let K=Y["*"];if(!K||K.length===0)return!1;if(K.includes("*"))continue;for(let W of J)if(!K.includes(W))return!1;continue}if(G.includes("*"))continue;for(let K of J)if(!G.includes(K))return!1}return!0}function CJ4(Y){let{auth:X,headers:Q,role:J,permissions:G,userId:K}=Y,W=X.api.hasPermission;return{hasPermission:async(Z)=>{if(J&&G70.includes(J))return!0;if(G)return EJ4(G,Z);if(!W)return console.error("[Auth] hasPermission API not available"),!1;try{if((await W({headers:Q,body:{permission:Z}}))?.success===!0)return!0;let F={};for(let $ of Object.keys(Z))F[$]=["*"];return(await W({headers:Q,body:{permission:F}}))?.success===!0}catch(H){return console.error("[Auth] Permission check failed:",H),!1}},organization:{create:async(Z)=>{return X.api.createOrganization({headers:Q,body:Z})},update:async(Z)=>{return X.api.updateOrganization({headers:Q,body:Z})},delete:async(Z)=>{await X.api.deleteOrganization({headers:Q,body:{organizationId:Z}})},get:async(Z)=>{return X.api.getFullOrganization({headers:Q,query:Z?{organizationId:Z}:void 0})},list:async(Z)=>{return X.api.listOrganizations({headers:Q,query:Z?{userId:Z}:void 0})},addMember:async(Z)=>{return X.api.addMember({headers:Q,body:Z})},removeMember:async(Z)=>{await X.api.removeMember({headers:Q,body:Z})},listMembers:async(Z)=>{return X.api.listMembers({headers:Q,query:Z?{organizationId:Z.organizationId,limit:Z.limit,offset:Z.offset}:void 0})},updateMemberRole:async(Z)=>{return X.api.updateMemberRole({headers:Q,body:Z})}},apiKey:{create:async(Z)=>{return X.api.createApiKey({body:{...Z,userId:K}})},list:async()=>{return X.api.listApiKeys({headers:Q})},update:async(Z)=>{return X.api.updateApiKey({body:{...Z,userId:K}})},delete:async(Z)=>{await X.api.deleteApiKey({headers:Q,body:{keyId:Z}})}}}}async function IJ4(Y,X,Q){if(G70.includes(Q))return;let J=await Y.selectFrom("organizationRole").select(["permission"]).where("organizationId","=",X).where("role","=",Q).executeTakeFirst();if(!J?.permission)return;try{return JSON.parse(J.permission)}catch{console.error(`[Auth] Failed to parse permissions for role: ${Q}`);return}}async function RJ4(Y,X,Q,J=jw1){let G=Y.headers.get("Authorization");try{let K=new Headers(Y.headers);K.set("X-MCP-Session-Auth","true");let W=await J.measure("auth_get_mcp_session",()=>X.api.getMcpSession({headers:K}));if(W){let Z=W.userId,H=await J.measure("auth_query_membership",()=>Q.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["member.role","member.organizationId","organization.id as orgId","organization.slug as orgSlug","organization.name as orgName"]).where("member.userId","=",Z).executeTakeFirst()),F=H?.role,V=H?{id:H.orgId,slug:H.orgSlug,name:H.orgName}:void 0,$;if(H&&F)$=await J.measure("auth_fetch_role_permissions",()=>IJ4(Q,H.organizationId,F));return{user:{id:Z,role:F},role:F,permissions:$,organization:V}}}catch(K){console.error("[Auth] OAuth session check failed:",K)}if(G?.startsWith("Bearer ")){let K=G.replace("Bearer ","").trim();try{let W=await J.measure("auth_verify_mesh_jwt",()=>xL1(K));if(W){let Z,H=W.metadata?.organizationId;if(W.sub&&H)Z=(await J.measure("auth_query_membership",()=>Q.selectFrom("member").select(["member.role"]).where("member.userId","=",W.sub).where("member.organizationId","=",H).executeTakeFirst()))?.role;return{user:{id:W.sub,connectionId:W.metadata?.connectionId,role:Z},role:Z,permissions:W.permissions,organization:W.metadata?.organizationId?{id:W.metadata?.organizationId}:void 0}}}catch{}try{let W=await J.measure("auth_verify_api_key",()=>X.api.verifyApiKey({body:{key:K}}));if(W?.valid&&W.key){let Z=W.key.metadata?.organization,H=W.key.permissions,F,V=W.key.userId;if(V&&Z?.id)F=(await J.measure("auth_query_membership",()=>Q.selectFrom("member").select(["member.role"]).where("member.userId","=",V).where("member.organizationId","=",Z.id).executeTakeFirst()))?.role;return{apiKeyId:W.key.id,user:{id:W.key.userId,role:F},role:F,permissions:H,organization:Z?{id:Z.id,slug:Z.slug,name:Z.name}:void 0}}}catch(W){console.error("[Auth] API key check failed:",W)}}try{let K=await J.measure("auth_get_session",()=>X.api.getSession({headers:Y.headers}));if(K){let W,Z;if(K.session.activeOrganizationId){let H=await J.measure("auth_get_full_organization",()=>X.api.getFullOrganization({headers:Y.headers}).catch(()=>null));if(H)W={id:H.id,slug:H.slug,name:H.name},Z=H.members?.find((V)=>V.userId===K.user.id)?.role;else W={id:K.session.activeOrganizationId,slug:"",name:""}}return{user:{id:K.user.id,email:K.user.email,role:Z},role:Z,organization:W}}}catch(K){let W=K;console.error("[Auth] Session check failed:",JSON.stringify({message:W.message,body:W.body,stack:W.stack},null,2))}return{user:void 0}}async function Sw1(Y){let G=[];try{let X=new h$(Y.encryption.key);let Q={connections:new lP(Y.db,X),organizationSettings:new P70(Y.db),monitoring:new T70(Y.db,Y.databaseType),virtualMcps:new M70(Y.db),users:new C70(Y.db),threads:new g70(Y.db),tags:new E70(Y.db)};const J=gG(G,Cw1(),1);return async(F,V)=>{let $=V?.timings??jw1,q=F?.headers.get("x-caller-id")??void 0,B=F?await RJ4(F,Y.auth,Y.db,$):{user:void 0},D=CJ4({auth:Y.auth,headers:F?.headers??new Headers,role:B.role,permissions:B.permissions,userId:B.user?.id}),O={user:B.user};if(B.apiKeyId)O.apiKey={id:B.apiKeyId,name:"",userId:""};let L=B.organization,w=F?process.env.BASE_URL??`${new URL(F.url).origin}`:t5(),R=new y3(Y.auth,O.user?.id,void 0,D,B.role,"self"),P={timings:$,auth:O,connectionId:q,organization:L,storage:Q,vault:X,authInstance:Y.auth,boundAuth:D,access:R,db:Y.db,tracer:Y.observability.tracer,meter:Y.observability.meter,baseUrl:w,metadata:{requestId:crypto.randomUUID(),timestamp:new Date,wellKnownForwardableHeaders:Object.fromEntries(jJ4.map((T)=>[T,F?.headers.get(T)??null]).filter(([T,A])=>A!==null)),userAgent:F?.headers.get("x-mesh-client")||F?.headers.get("User-Agent")||void 0,ipAddress:(F?.headers.get("CF-Connecting-IP")||F?.headers.get("X-Forwarded-For"))??void 0,properties:PJ4(F?.headers.get("x-mesh-properties"))},eventBus:Y.eventBus,createMCPProxy:async(T)=>{return await Mw1(T,P)},getOrCreateClient:J};return P}}catch(K){var W=K,Z=1}finally{var H=CW(G,W,Z);H&&await H}}var Rw1,f3,jw1,jJ4;var Au=S(()=>{w70();Rx();tJ0();uL1();gL1();mL1();Ou();Xq();W70();Ew1();Iw1();f3={set:(Y)=>{Rw1=Y},create:async(Y,X)=>{return await Rw1(Y,X)}},jw1={measure:async(Y,X)=>{return await X()}},jJ4=["x-hub-signature-256"]});class kw1{db;constructor(Y){this.db=Y}async publishEvent(Y){let X=new Date().toISOString();return await this.db.insertInto("events").values({id:Y.id,organization_id:Y.organizationId,type:Y.type,source:Y.source,specversion:"1.0",subject:Y.subject??null,time:Y.time,datacontenttype:Y.datacontenttype??"application/json",dataschema:Y.dataschema??null,data:Y.data?JSON.stringify(Y.data):null,cron:Y.cron??null,status:"pending",attempts:0,last_error:null,next_retry_at:null,created_at:X,updated_at:X}).execute(),{id:Y.id,organizationId:Y.organizationId,type:Y.type,source:Y.source,specversion:"1.0",subject:Y.subject??null,time:Y.time,datacontenttype:Y.datacontenttype??"application/json",dataschema:Y.dataschema??null,data:Y.data??null,cron:Y.cron??null,status:"pending",attempts:0,lastError:null,nextRetryAt:null,createdAt:X,updatedAt:X}}async subscribe(Y){let X=this.db.selectFrom("event_subscriptions").selectAll().where("organization_id","=",Y.organizationId).where("connection_id","=",Y.connectionId).where("event_type","=",Y.eventType);if(Y.publisher)X=X.where("publisher","=",Y.publisher);else X=X.where("publisher","is",null);if(Y.filter)X=X.where("filter","=",Y.filter);else X=X.where("filter","is",null);let Q=await X.executeTakeFirst();if(Q)return{id:Q.id,organizationId:Q.organization_id,connectionId:Q.connection_id,publisher:Q.publisher,eventType:Q.event_type,filter:Q.filter,enabled:Q.enabled===1,createdAt:Q.created_at,updatedAt:Q.updated_at};let J=new Date().toISOString();return await this.db.insertInto("event_subscriptions").values({id:Y.id,organization_id:Y.organizationId,connection_id:Y.connectionId,publisher:Y.publisher??null,event_type:Y.eventType,filter:Y.filter??null,enabled:1,created_at:J,updated_at:J}).execute(),{id:Y.id,organizationId:Y.organizationId,connectionId:Y.connectionId,publisher:Y.publisher??null,eventType:Y.eventType,filter:Y.filter??null,enabled:!0,createdAt:J,updatedAt:J}}async unsubscribe(Y,X){return{success:((await this.db.deleteFrom("event_subscriptions").where("id","=",Y).where("organization_id","=",X).executeTakeFirst()).numDeletedRows??0n)>0n}}async listSubscriptions(Y,X){let Q=this.db.selectFrom("event_subscriptions").selectAll().where("organization_id","=",Y);if(X)Q=Q.where("connection_id","=",X);return(await Q.execute()).map((G)=>({id:G.id,organizationId:G.organization_id,connectionId:G.connection_id,publisher:G.publisher,eventType:G.event_type,filter:G.filter,enabled:G.enabled===1,createdAt:G.created_at,updatedAt:G.updated_at}))}async getSubscription(Y,X){let Q=await this.db.selectFrom("event_subscriptions").selectAll().where("id","=",Y).where("organization_id","=",X).executeTakeFirst();if(!Q)return null;return{id:Q.id,organizationId:Q.organization_id,connectionId:Q.connection_id,publisher:Q.publisher,eventType:Q.event_type,filter:Q.filter,enabled:Q.enabled===1,createdAt:Q.created_at,updatedAt:Q.updated_at}}async getMatchingSubscriptions(Y){return(await this.db.selectFrom("event_subscriptions").selectAll().where("organization_id","=",Y.organizationId).where("enabled","=",1).where("event_type","=",Y.type).where((Q)=>Q.or([Q("publisher","is",null),Q("publisher","=",Y.source)])).execute()).map((Q)=>({id:Q.id,organizationId:Q.organization_id,connectionId:Q.connection_id,publisher:Q.publisher,eventType:Q.event_type,filter:Q.filter,enabled:Q.enabled===1,createdAt:Q.created_at,updatedAt:Q.updated_at}))}async createDeliveries(Y,X,Q){if(X.length===0)return;let J=new Date().toISOString(),G=Q??null,K=X.map((W)=>({id:crypto.randomUUID(),event_id:Y,subscription_id:W,status:"pending",attempts:0,last_error:null,delivered_at:null,next_retry_at:G,created_at:J}));await this.db.insertInto("event_deliveries").values(K).execute()}async claimPendingDeliveries(Y){let X=new Date().toISOString(),Q;try{Q=(await this.db.updateTable("event_deliveries").set({status:"processing"}).where("id","in",(K)=>K.selectFrom("event_deliveries as d").innerJoin("event_subscriptions as s","s.id","d.subscription_id").select("d.id").where("d.status","=","pending").where("s.enabled","=",1).where((W)=>W.or([W("d.next_retry_at","is",null),W("d.next_retry_at","<=",X)])).orderBy("d.created_at","asc").limit(Y)).where("status","=","pending").returning(["id"]).execute()).map((K)=>K.id)}catch{let G=await this.db.selectFrom("event_deliveries as d").innerJoin("event_subscriptions as s","s.id","d.subscription_id").select(["d.id"]).where("d.status","=","pending").where("s.enabled","=",1).where((K)=>K.or([K("d.next_retry_at","is",null),K("d.next_retry_at","<=",X)])).orderBy("d.created_at","asc").limit(Y).execute();if(G.length===0)return[];Q=G.map((K)=>K.id),await this.db.updateTable("event_deliveries").set({status:"processing"}).where("id","in",Q).where("status","=","pending").execute()}if(Q.length===0)return[];return(await this.db.selectFrom("event_deliveries as d").innerJoin("events as e","e.id","d.event_id").innerJoin("event_subscriptions as s","s.id","d.subscription_id").select(["d.id as delivery_id","d.event_id","d.subscription_id","d.status as delivery_status","d.attempts as delivery_attempts","d.last_error as delivery_last_error","d.delivered_at","d.next_retry_at as delivery_next_retry_at","d.created_at as delivery_created_at","e.organization_id","e.type","e.source","e.specversion","e.subject","e.time","e.datacontenttype","e.dataschema","e.data","e.cron","e.status as event_status","e.attempts as event_attempts","e.last_error as event_last_error","e.next_retry_at","e.created_at as event_created_at","e.updated_at as event_updated_at","s.connection_id","s.publisher","s.event_type","s.filter","s.enabled","s.created_at as subscription_created_at","s.updated_at as subscription_updated_at"]).where("d.id","in",Q).where("d.status","=","processing").execute()).map((G)=>({delivery:{id:G.delivery_id,eventId:G.event_id,subscriptionId:G.subscription_id,status:G.delivery_status,attempts:G.delivery_attempts,lastError:G.delivery_last_error,deliveredAt:G.delivered_at,nextRetryAt:G.delivery_next_retry_at,createdAt:G.delivery_created_at},event:{id:G.event_id,organizationId:G.organization_id,type:G.type,source:G.source,specversion:G.specversion,subject:G.subject,time:G.time,datacontenttype:G.datacontenttype,dataschema:G.dataschema,data:G.data?JSON.parse(G.data):null,cron:G.cron,status:G.event_status,attempts:G.event_attempts,lastError:G.event_last_error,nextRetryAt:G.next_retry_at,createdAt:G.event_created_at,updatedAt:G.event_updated_at},subscription:{id:G.subscription_id,organizationId:G.organization_id,connectionId:G.connection_id,publisher:G.publisher,eventType:G.event_type,filter:G.filter,enabled:G.enabled===1,createdAt:G.subscription_created_at,updatedAt:G.subscription_updated_at}}))}async markDeliveriesDelivered(Y){if(Y.length===0)return;let X=new Date().toISOString();await this.db.updateTable("event_deliveries").set({status:"delivered",delivered_at:X}).where("id","in",Y).execute()}async markDeliveriesFailed(Y,X,Q=20,J=1000,G=3600000){if(Y.length===0)return;for(let K of Y){let W=await this.db.selectFrom("event_deliveries").select(["attempts"]).where("id","=",K).executeTakeFirst();if(!W)continue;let Z=W.attempts+1;if(Z>=Q)await this.db.updateTable("event_deliveries").set({attempts:Z,last_error:X,status:"failed",next_retry_at:null}).where("id","=",K).execute();else{let H=Math.min(J*Math.pow(2,Z-1),G),F=new Date(Date.now()+H).toISOString();await this.db.updateTable("event_deliveries").set({attempts:Z,last_error:X,status:"pending",next_retry_at:F}).where("id","=",K).execute()}}}async updateEventStatus(Y){let X=await this.db.selectFrom("event_deliveries").select(["status"]).where("event_id","=",Y).execute();if(X.length===0)return;let Q=X.every((K)=>K.status==="delivered"),J=X.some((K)=>K.status==="failed"),G=X.some((K)=>K.status==="pending"||K.status==="processing");if(Q)await this.db.updateTable("events").set({status:"delivered",updated_at:new Date().toISOString()}).where("id","=",Y).execute();else if(J&&!G)await this.db.updateTable("events").set({status:"failed",updated_at:new Date().toISOString()}).where("id","=",Y).execute()}async resetStuckDeliveries(){let Y=await this.db.updateTable("event_deliveries").set({status:"pending"}).where("status","=","processing").executeTakeFirst();return Number(Y.numUpdatedRows??0)}async getEvent(Y,X){let Q=await this.db.selectFrom("events").selectAll().where("id","=",Y).where("organization_id","=",X).executeTakeFirst();if(!Q)return null;return{id:Q.id,organizationId:Q.organization_id,type:Q.type,source:Q.source,specversion:Q.specversion,subject:Q.subject,time:Q.time,datacontenttype:Q.datacontenttype,dataschema:Q.dataschema,data:Q.data?JSON.parse(Q.data):null,cron:Q.cron,status:Q.status,attempts:Q.attempts,lastError:Q.last_error,nextRetryAt:Q.next_retry_at,createdAt:Q.created_at,updatedAt:Q.updated_at}}async findActiveCronEvent(Y,X,Q,J){let G=await this.db.selectFrom("events").selectAll().where("organization_id","=",Y).where("type","=",X).where("source","=",Q).where("cron","=",J).where("status","in",["pending","processing","delivered"]).orderBy("created_at","desc").executeTakeFirst();if(!G)return null;return{id:G.id,organizationId:G.organization_id,type:G.type,source:G.source,specversion:G.specversion,subject:G.subject,time:G.time,datacontenttype:G.datacontenttype,dataschema:G.dataschema,data:G.data?JSON.parse(G.data):null,cron:G.cron,status:G.status,attempts:G.attempts,lastError:G.last_error,nextRetryAt:G.next_retry_at,createdAt:G.created_at,updatedAt:G.updated_at}}async cancelEvent(Y,X,Q){let J=await this.db.updateTable("events").set({status:"failed",last_error:"Cancelled by publisher",updated_at:new Date().toISOString()}).where("id","=",Y).where("organization_id","=",X).where("source","=",Q).where("status","in",["pending","processing"]).executeTakeFirst();if((J.numUpdatedRows??0n)>0n)await this.db.updateTable("event_deliveries").set({status:"failed",last_error:"Event cancelled by publisher"}).where("event_id","=",Y).where("status","in",["pending","processing"]).execute();return{success:(J.numUpdatedRows??0n)>0n}}async scheduleRetryWithoutAttemptIncrement(Y,X){if(Y.length===0)return;let Q=new Date(Date.now()+X).toISOString();await this.db.updateTable("event_deliveries").set({status:"pending",next_retry_at:Q}).where("id","in",Y).execute()}async ackDelivery(Y,X,Q){if(!await this.db.selectFrom("events").select(["id"]).where("id","=",Y).where("organization_id","=",X).executeTakeFirst())return{success:!1};let K=((await this.db.updateTable("event_deliveries").set({status:"delivered",delivered_at:new Date().toISOString()}).where("event_id","=",Y).where("status","in",["pending","processing"]).where((W)=>W.exists(W.selectFrom("event_subscriptions").select("id").whereRef("event_subscriptions.id","=","event_deliveries.subscription_id").where("event_subscriptions.connection_id","=",Q).where("event_subscriptions.organization_id","=",X))).executeTakeFirst()).numUpdatedRows??0n)>0n;if(K)await this.updateEventStatus(Y);return{success:K}}async syncSubscriptions(Y){let{organizationId:X,connectionId:Q,subscriptions:J}=Y,G=(w,R)=>{return`${w}::${R??""}`},K=await this.listSubscriptions(X,Q),W=new Map;for(let w of K)W.set(G(w.eventType,w.publisher),w);let Z=new Map;for(let w of J)Z.set(G(w.eventType,w.publisher),w);let H=new Date().toISOString(),F=[],V=[],$=[],q=0;for(let[w,R]of Z){let P=W.get(w);if(!P)F.push({id:crypto.randomUUID(),organization_id:X,connection_id:Q,event_type:R.eventType,publisher:R.publisher??null,filter:R.filter??null,enabled:1,created_at:H,updated_at:H});else{let T=P.filter??null,A=R.filter??null;if(T!==A)V.push({id:P.id,filter:A});else q++}}for(let[w,R]of W)if(!Z.has(w))$.push(R.id);if(F.length>0)await this.db.insertInto("event_subscriptions").values(F).execute();if(V.length>0)await Promise.all(V.map((w)=>this.db.updateTable("event_subscriptions").set({filter:w.filter,updated_at:H}).where("id","=",w.id).execute()));if($.length>0)await this.db.deleteFrom("event_subscriptions").where("id","in",$).execute();let B=F.length,D=V.length,O=$.length,L=await this.listSubscriptions(X,Q);return{created:B,updated:D,deleted:O,unchanged:q,subscriptions:L}}}function vw1(Y){return new kw1(Y)}function LX(Y,X,Q,J,G,K,W,Z){return LX.fromTZ(LX.tp(Y,X,Q,J,G,K,W),Z)}function m70(Y,X=new Date){let Q=X.toLocaleString("en-US",{timeZone:Y,timeZoneName:"shortOffset"}).split(" ").slice(-1)[0],J=X.toLocaleString("en-US").replace(/[\u202f]/," ");return Date.parse(`${J} GMT`)-Date.parse(`${J} ${Q}`)}function SJ4(Y,X){let Q=new Date(Date.parse(Y));if(isNaN(Q))throw Error("minitz: Invalid ISO8601 passed to parser.");let J=Y.substring(9);return Y.includes("Z")||J.includes("-")||J.includes("+")?LX.tp(Q.getUTCFullYear(),Q.getUTCMonth()+1,Q.getUTCDate(),Q.getUTCHours(),Q.getUTCMinutes(),Q.getUTCSeconds(),"Etc/UTC"):LX.tp(Q.getFullYear(),Q.getMonth()+1,Q.getDate(),Q.getHours(),Q.getMinutes(),Q.getSeconds(),X)}function kJ4(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 k5(Y.startAt,Y.timezone)),Y.stopAt&&(Y.stopAt=new k5(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 u2(Y){return Object.prototype.toString.call(Y)==="[object Function]"||typeof Y=="function"||Y instanceof Function}function vJ4(Y){return u2(Y)}function _J4(Y){typeof Deno<"u"&&typeof Deno.unrefTimer<"u"?Deno.unrefTimer(Y):Y&&typeof Y.unref<"u"&&Y.unref()}var l70=32,g2,hw1,_w1=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 k5(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,g2),this.dayOfWeek[7]&&(this.dayOfWeek[0]=this.dayOfWeek[7])}partToArray(Y,X,Q,J){let G=this[Y],K=Y==="day"&&this.lastDayOfMonth;if(X===""&&!K)throw TypeError("CronPattern: configuration entry "+Y+" ("+X+") is empty, check for trailing spaces.");if(X==="*")return G.fill(J);let W=X.split(",");if(W.length>1)for(let Z=0;Z<W.length;Z++)this.partToArray(Y,W[Z],Q,J);else X.indexOf("-")!==-1&&X.indexOf("/")!==-1?this.handleRangeWithStepping(X,Y,Q,J):X.indexOf("-")!==-1?this.handleRange(X,Y,Q,J):X.indexOf("/")!==-1?this.handleStepping(X,Y,Q,J):X!==""&&this.handleNumber(X,Y,Q,J)}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,Q,J){let G=this.extractNth(Y,X),K=parseInt(G[0],10)+Q;if(isNaN(K))throw TypeError("CronPattern: "+X+" is not a number: '"+Y+"'");this.setPart(X,K,G[1]||J)}setPart(Y,X,Q){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,Q);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]=Q}handleRangeWithStepping(Y,X,Q,J){let G=this.extractNth(Y,X),K=G[0].match(/^(\d+)-(\d+)\/(\d+)$/);if(K===null)throw TypeError("CronPattern: Syntax error, illegal range with stepping: '"+Y+"'");let[,W,Z,H]=K,F=parseInt(W,10)+Q,V=parseInt(Z,10)+Q,$=parseInt(H,10);if(isNaN(F))throw TypeError("CronPattern: Syntax error, illegal lower range (NaN)");if(isNaN(V))throw TypeError("CronPattern: Syntax error, illegal upper range (NaN)");if(isNaN($))throw TypeError("CronPattern: Syntax error, illegal stepping: (NaN)");if($===0)throw TypeError("CronPattern: Syntax error, illegal stepping: 0");if($>this[X].length)throw TypeError("CronPattern: Syntax error, steps cannot be greater than maximum value of part ("+this[X].length+")");if(F>V)throw TypeError("CronPattern: From value is larger than to value: '"+Y+"'");for(let q=F;q<=V;q+=$)this.setPart(X,q,G[1]||J)}extractNth(Y,X){let Q=Y,J;if(Q.includes("#")){if(X!=="dayOfWeek")throw Error("CronPattern: nth (#) only allowed in day-of-week field");J=Q.split("#")[1],Q=Q.split("#")[0]}return[Q,J]}handleRange(Y,X,Q,J){let G=this.extractNth(Y,X),K=G[0].split("-");if(K.length!==2)throw TypeError("CronPattern: Syntax error, illegal range: '"+Y+"'");let W=parseInt(K[0],10)+Q,Z=parseInt(K[1],10)+Q;if(isNaN(W))throw TypeError("CronPattern: Syntax error, illegal lower range (NaN)");if(isNaN(Z))throw TypeError("CronPattern: Syntax error, illegal upper range (NaN)");if(W>Z)throw TypeError("CronPattern: From value is larger than to value: '"+Y+"'");for(let H=W;H<=Z;H++)this.setPart(X,H,G[1]||J)}handleStepping(Y,X,Q,J){let G=this.extractNth(Y,X),K=G[0].split("/");if(K.length!==2)throw TypeError("CronPattern: Syntax error, illegal stepping: '"+Y+"'");K[0]===""&&(K[0]="*");let W=0;K[0]!=="*"&&(W=parseInt(K[0],10)+Q);let Z=parseInt(K[1],10);if(isNaN(Z))throw TypeError("CronPattern: Syntax error, illegal stepping: (NaN)");if(Z===0)throw TypeError("CronPattern: Syntax error, illegal stepping: 0");if(Z>this[X].length)throw TypeError("CronPattern: Syntax error, max steps for part is ("+this[X].length+")");for(let H=W;H<this[X].length;H+=Z)this.setPart(X,H,G[1]||J)}replaceAlphaDays(Y){return Y.replace(/-sun/gi,"-7").replace(/sun/gi,"0").replace(/mon/gi,"1").replace(/tue/gi,"2").replace(/wed/gi,"3").replace(/thu/gi,"4").replace(/fri/gi,"5").replace(/sat/gi,"6")}replaceAlphaMonths(Y){return Y.replace(/jan/gi,"1").replace(/feb/gi,"2").replace(/mar/gi,"3").replace(/apr/gi,"4").replace(/may/gi,"5").replace(/jun/gi,"6").replace(/jul/gi,"7").replace(/aug/gi,"8").replace(/sep/gi,"9").replace(/oct/gi,"10").replace(/nov/gi,"11").replace(/dec/gi,"12")}handleNicknames(Y){let 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]|l70;else if(X===g2)this.dayOfWeek[Y]=g2;else if(X<6&&X>0)this.dayOfWeek[Y]=this.dayOfWeek[Y]|hw1[X-1];else throw TypeError(`CronPattern: nth weekday out of range, should be 1-5 or L. Value: ${X}, Type: ${typeof X}`)}},yw1,VK,k5=class Y{tz;ms;second;minute;hour;day;month;year;constructor(X,Q){if(this.tz=Q,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,Q,J,G){let K=new Date(Date.UTC(X,Q,J)).getUTCDay(),W=0;for(let Z=1;Z<=J;Z++)new Date(Date.UTC(X,Q,Z)).getUTCDay()===K&&W++;if(G&g2&&hw1[W-1]&G)return!0;if(G&l70){let Z=new Date(Date.UTC(X,Q+1,0)).getUTCDate();for(let H=J+1;H<=Z;H++)if(new Date(Date.UTC(X,Q,H)).getUTCDay()===K)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 Q=LX.toTZ(X,this.tz);this.ms=X.getMilliseconds(),this.second=Q.s,this.minute=Q.i,this.hour=Q.h,this.day=Q.d,this.month=Q.m-1,this.year=Q.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>yw1[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 Q=LX.fromTZISO(X);this.ms=Q.getUTCMilliseconds(),this.second=Q.getUTCSeconds(),this.minute=Q.getUTCMinutes(),this.hour=Q.getUTCHours(),this.day=Q.getUTCDate(),this.month=Q.getUTCMonth(),this.year=Q.getUTCFullYear(),this.apply()}else return this.fromDate(LX.fromTZISO(X,this.tz))}findNext(X,Q,J,G){let K=this[Q],W;J.lastDayOfMonth&&(this.month!==1?W=yw1[this.month]:W=new Date(Date.UTC(this.year,this.month+1,0,0,0,0,0)).getUTCDate());let Z=!J.starDOW&&Q=="day"?new Date(Date.UTC(this.year,this.month,1,0,0,0,0)).getUTCDay():void 0;for(let H=this[Q]+G;H<J[Q].length;H++){let F=J[Q][H];if(Q==="day"&&J.lastDayOfMonth&&H-G==W&&(F=1),Q==="day"&&!J.starDOW){let V=J.dayOfWeek[(Z+(H-G-1))%7];if(V&&V&g2)V=this.isNthWeekdayOfMonth(this.year,this.month,H-G,V)?1:0;else if(V)throw Error(`CronDate: Invalid value for dayOfWeek encountered. ${V}`);X.legacyMode&&!J.starDOM?F=F||V:F=F&&V}if(F)return this[Q]=H-G,K!==this[Q]?2:1}return 3}recurse(X,Q,J){let G=this.findNext(Q,VK[J][0],X,VK[J][2]);if(G>1){let K=J+1;for(;K<VK.length;)this[VK[K][0]]=-VK[K][2],K++;if(G===3)return this[VK[J][1]]++,this[VK[J][0]]=-VK[J][2],this.apply(),this.recurse(X,Q,0);if(this.apply())return this.recurse(X,Q,J-1)}return J+=1,J>=VK.length?this:this.year>=3000?null:this.recurse(X,Q,J)}increment(X,Q,J){return this.second+=Q.interval!==void 0&&Q.interval>1&&J?Q.interval:1,this.ms=0,this.apply(),this.recurse(X,Q,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)):LX.fromTZ(LX.tp(this.year,this.month+1,this.day,this.hour,this.minute,this.second,this.tz),!1)}getTime(){return this.getDate(!1).getTime()}},fw1=30000,Pu,Eu=class{name;options;_states;fn;constructor(Y,X,Q){let J,G;if(u2(X))G=X;else if(typeof X=="object")J=X;else if(X!==void 0)throw Error("Cron: Invalid argument passed for optionsIn. Should be one of function, or object (options).");if(u2(Q))G=Q;else if(typeof Q=="object")J=Q;else if(Q!==void 0)throw Error("Cron: Invalid argument passed for funcIn. Should be one of function, or object (options).");if(this.name=J?.name,this.options=kJ4(J),this._states={kill:!1,blocking:!1,previousRun:void 0,currentRun:void 0,once:void 0,currentTimeout:void 0,maxRuns:J?J.maxRuns:void 0,paused:J?J.paused:!1,pattern:new _w1("* * * * *")},Y&&(Y instanceof Date||typeof Y=="string"&&Y.indexOf(":")>0)?this._states.once=new k5(Y,this.options.timezone||this.options.utcOffset):this._states.pattern=new _w1(Y,this.options.timezone),this.name){if(Pu.find((K)=>K.name===this.name))throw Error("Cron: Tried to initialize new named job '"+this.name+"', but name already taken.");Pu.push(this)}return G!==void 0&&vJ4(G)&&(this.fn=G,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 Q=[],J=X||this._states.currentRun||void 0;for(;Y--&&(J=this.nextRun(J));)Q.push(J);return Q}getPattern(){return this._states.pattern?this._states.pattern.pattern:void 0}isRunning(){let Y=this.nextRun(this._states.currentRun),X=!this._states.paused,Q=this.fn!==void 0,J=!this._states.kill;return X&&Q&&J&&Y!==null}isStopped(){return this._states.kill}isBusy(){return this._states.blocking}currentRun(){return this._states.currentRun?this._states.currentRun.getDate():null}previousRun(){return this._states.previousRun?this._states.previousRun.getDate():null}msToNext(Y){let X=this._next(Y);return X?Y instanceof k5||Y instanceof Date?X.getTime()-Y.getTime():X.getTime()-new k5(Y).getTime():null}stop(){this._states.kill=!0,this._states.currentTimeout&&clearTimeout(this._states.currentTimeout);let Y=Pu.indexOf(this);Y>=0&&Pu.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(),Q=this.nextRun(this._states.currentRun);return X==null||isNaN(X)||Q===null?this:(X>fw1&&(X=fw1),this._states.currentTimeout=setTimeout(()=>this._checkTrigger(Q),X),this._states.currentTimeout&&this.options.unref&&_J4(this._states.currentTimeout),this)}async _trigger(Y){if(this._states.blocking=!0,this._states.currentRun=new k5(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){u2(this.options.catch)&&this.options.catch(X,this)}else this.fn!==void 0&&await this.fn(this,this.options.context);this._states.previousRun=new k5(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,Q=!this._states.paused&&X.getTime()>=Y.getTime(),J=this._states.blocking&&this.options.protect;Q&&!J?(this._states.maxRuns!==void 0&&this._states.maxRuns--,this._trigger()):Q&&J&&u2(this.options.protect)&&setTimeout(()=>this.options.protect(this),0),this.schedule()}_next(Y){let X=!!(Y||this._states.currentRun),Q=!1;!Y&&this.options.startAt&&this.options.interval&&([Y,X]=this._calculatePreviousRun(Y,X),Q=!Y),Y=new k5(Y,this.options.timezone||this.options.utcOffset),this.options.startAt&&Y&&Y.getTime()<this.options.startAt.getTime()&&(Y=this.options.startAt);let J=this._states.once||new k5(Y,this.options.timezone||this.options.utcOffset);return!Q&&J!==this._states.once&&(J=J.increment(this._states.pattern,this.options,X)),this._states.once&&this._states.once.getTime()<=Y.getTime()||J===null||this._states.maxRuns!==void 0&&this._states.maxRuns<=0||this._states.kill||this.options.stopAt&&J.getTime()>=this.options.stopAt.getTime()?null:J}_calculatePreviousRun(Y,X){let Q=new k5(void 0,this.options.timezone||this.options.utcOffset),J=Y;if(this.options.startAt.getTime()<=Q.getTime()){J=this.options.startAt;let G=J.getTime()+this.options.interval*1000;for(;G<=Q.getTime();)J=new k5(J,this.options.timezone||this.options.utcOffset).increment(this._states.pattern,this.options,!0),G=J.getTime()+this.options.interval*1000;X=!0}return J===null&&(J=void 0),[J,X]}};var d70=S(()=>{LX.fromTZISO=(Y,X,Q)=>LX.fromTZ(SJ4(Y,X),Q);LX.fromTZ=function(Y,X){let Q=new Date(Date.UTC(Y.y,Y.m-1,Y.d,Y.h,Y.i,Y.s)),J=m70(Y.tz,Q),G=new Date(Q.getTime()-J),K=m70(Y.tz,G);if(K-J===0)return G;{let W=new Date(Q.getTime()-K),Z=m70(Y.tz,W);if(Z-K===0)return W;if(!X&&Z-K>0)return W;if(X)throw Error("Invalid date passed to fromTZ()");return G}};LX.toTZ=function(Y,X){let Q=Y.toLocaleString("en-US",{timeZone:X}).replace(/[\u202f]/," "),J=new Date(Q);return{y:J.getFullYear(),m:J.getMonth()+1,d:J.getDate(),h:J.getHours(),i:J.getMinutes(),s:J.getSeconds(),tz:X}};LX.tp=(Y,X,Q,J,G,K,W)=>({y:Y,m:X,d:Q,h:J,i:G,s:K,tz:W});LX.minitz=LX;g2=31|l70,hw1=[1,2,4,8,16],yw1=[31,28,31,30,31,30,31,31,30,31,30,31],VK=[["month","year",0],["day","month",-1],["hour","day",0],["minute","hour",0],["second","minute",0]];Pu=[]});var Cu;var p70=S(()=>{Cu={pollIntervalMs:5000,batchSize:100,maxAttempts:20,retryDelayMs:1000,maxDelayMs:3600000}});function bw1(){return async(Y,X)=>{try{let Q=await f3.create(),J=await Aw1(Y,Q),K=await ZG0.forClient(Yq(J)).ON_EVENTS({events:X});return{success:K.success,error:K.error,retryAfter:K.retryAfter,results:K.results}}catch(Q){let J=Q instanceof Error?Q.message:String(Q);return console.error(`[EventBus] Failed to notify connection ${Y}:`,J),{success:!1,error:J}}}}var xw1=S(()=>{Au();tx();Xq()});function uw1(Y){return{specversion:"1.0",id:Y.id,source:Y.source,type:Y.type,time:Y.time,subject:Y.subject??void 0,datacontenttype:Y.datacontenttype,dataschema:Y.dataschema??void 0,data:Y.data??void 0}}function yJ4(Y){let X=new Map;for(let J of Y){let G=J.subscription.connectionId,K=X.get(G);if(K){if(K.deliveryIds.push(J.delivery.id),!K.seenEventIds.has(J.event.id))K.seenEventIds.add(J.event.id),K.events.push(uw1(J.event))}else X.set(G,{connectionId:J.subscription.connectionId,deliveryIds:[J.delivery.id],events:[uw1(J.event)],seenEventIds:new Set([J.event.id])})}let Q=new Map;for(let[J,G]of X)Q.set(J,{connectionId:G.connectionId,deliveryIds:G.deliveryIds,events:G.events});return Q}class c70{storage;notifySubscriber;running=!1;processing=!1;config;constructor(Y,X){this.storage=Y;this.notifySubscriber=bw1(),this.config={...Cu,...X}}async start(){if(this.running)return;let Y=await this.storage.resetStuckDeliveries();if(Y>0)console.log(`[EventBus] Reset ${Y} stuck deliveries from previous shutdown`);this.running=!0}stop(){this.running=!1,console.log("[EventBus] Worker stopped")}isRunning(){return this.running}async processNow(){if(!this.running)return;if(this.processing)return;this.processing=!0;try{await this.processEvents()}catch(Y){console.error("[EventBus] Error processing events:",Y)}finally{this.processing=!1}}async processEvents(){let Y=await this.storage.claimPendingDeliveries(this.config.batchSize);if(Y.length===0)return;let X=yJ4(Y),Q=new Set;for(let[J,G]of X){try{let K=await this.notifySubscriber(G.connectionId,G.events);if(K.results&&Object.keys(K.results).length>0)await this.processPerEventResults(G,K);else if(K.success)await this.storage.markDeliveriesDelivered(G.deliveryIds);else if(K.retryAfter&&K.retryAfter>0)await this.storage.scheduleRetryWithoutAttemptIncrement(G.deliveryIds,K.retryAfter);else await this.storage.markDeliveriesFailed(G.deliveryIds,K.error||"Subscriber returned success=false",this.config.maxAttempts,this.config.retryDelayMs,this.config.maxDelayMs)}catch(K){let W=K instanceof Error?K.message:String(K);console.error(`[EventBus] Failed to notify subscription ${J}:`,W),await this.storage.markDeliveriesFailed(G.deliveryIds,W,this.config.maxAttempts,this.config.retryDelayMs,this.config.maxDelayMs)}for(let K of Y)if(G.deliveryIds.includes(K.delivery.id))Q.add(K.event.id)}for(let J of Q)try{await this.storage.updateEventStatus(J);let G=Y.find((K)=>K.event.id===J)?.event;if(G?.cron)await this.scheduleNextCronDelivery(G)}catch(G){console.error(`[EventBus] Failed to update event status ${J}:`,G)}}async processPerEventResults(Y,X){let Q=[],J=new Map,G=[],K=new Map;for(let W=0;W<Y.events.length;W++){let Z=Y.events?.[W];if(!Z)continue;let H=Y.deliveryIds?.[W];if(!H)continue;K.set(Z.id,H)}for(let W of Y.events){let Z=K.get(W.id);if(!Z)continue;let H=X.results?.[W.id];if(H)if(H.success)Q.push(Z);else if(H.retryAfter&&H.retryAfter>0){let F=J.get(H.retryAfter)||[];F.push(Z),J.set(H.retryAfter,F)}else G.push({deliveryId:Z,error:H.error||"Event processing failed"});else if(X.success)Q.push(Z);else if(X.retryAfter&&X.retryAfter>0){let F=J.get(X.retryAfter)||[];F.push(Z),J.set(X.retryAfter,F)}else G.push({deliveryId:Z,error:X.error||"Batch processing failed"})}if(Q.length>0)await this.storage.markDeliveriesDelivered(Q);for(let[W,Z]of J)await this.storage.scheduleRetryWithoutAttemptIncrement(Z,W);if(G.length>0){let W=new Map;for(let{deliveryId:Z,error:H}of G){let F=W.get(H)||[];F.push(Z),W.set(H,F)}for(let[Z,H]of W)await this.storage.markDeliveriesFailed(H,Z,this.config.maxAttempts,this.config.retryDelayMs,this.config.maxDelayMs)}}async scheduleNextCronDelivery(Y){if(!Y.cron)return;try{let Q=new Eu(Y.cron).nextRun();if(!Q){console.log(`[EventBus] Cron expression for event ${Y.id} has no more runs`);return}let J=Q.toISOString(),G=await this.storage.getMatchingSubscriptions(Y);if(G.length===0){console.log(`[EventBus] No subscriptions for cron event ${Y.id}, skipping next delivery`);return}await this.storage.createDeliveries(Y.id,G.map((K)=>K.id),J),console.log(`[EventBus] Scheduled next cron delivery for event ${Y.id} at ${J}`)}catch(X){console.error(`[EventBus] Failed to schedule next cron delivery for event ${Y.id}:`,X)}}}var gw1=S(()=>{d70();p70();xw1()});class n70{storage;worker;notifyStrategy;running=!1;constructor(Y){this.storage=Y.storage,this.notifyStrategy=Y.notifyStrategy,this.worker=new c70(this.storage,Y.config)}async publish(Y,X,Q){if(Q.deliverAt&&Q.cron)throw Error("Cannot set both deliverAt and cron. Use one or the other.");let J;if(Q.cron){try{let V=new Eu(Q.cron).nextRun();if(!V)throw Error("Cron expression does not produce a next run time");J=V.toISOString()}catch(F){throw Error(`Invalid cron expression: ${F instanceof Error?F.message:String(F)}`)}let H=await this.storage.findActiveCronEvent(Y,Q.type,X,Q.cron);if(H)return H}let G=crypto.randomUUID(),K=new Date().toISOString(),W=await this.storage.publishEvent({id:G,organizationId:Y,type:Q.type,source:X,subject:Q.subject,time:K,data:Q.data,cron:Q.cron}),Z=await this.storage.getMatchingSubscriptions(W);if(Z.length>0){let H=Q.deliverAt??J;if(await this.storage.createDeliveries(G,Z.map((F)=>F.id),H),this.notifyStrategy&&!H)await this.notifyStrategy.notify(G).catch((F)=>{console.warn("[EventBus] Notify failed (non-critical):",F)})}return W}async subscribe(Y,X){return this.storage.subscribe({id:crypto.randomUUID(),organizationId:Y,connectionId:X.connectionId,publisher:X.publisher,eventType:X.eventType,filter:X.filter})}async unsubscribe(Y,X){return this.storage.unsubscribe(X,Y)}async listSubscriptions(Y,X){return this.storage.listSubscriptions(Y,X)}async getSubscription(Y,X){return this.storage.getSubscription(X,Y)}async getEvent(Y,X){return this.storage.getEvent(X,Y)}async cancelEvent(Y,X,Q){return this.storage.cancelEvent(X,Y,Q)}async ackEvent(Y,X,Q){return this.storage.ackDelivery(X,Y,Q)}async syncSubscriptions(Y,X){return this.storage.syncSubscriptions({organizationId:Y,...X})}async start(){if(this.running)return;if(this.running=!0,await this.worker.start(),this.notifyStrategy)await this.notifyStrategy.start(()=>{this.worker.processNow().catch((Y)=>{console.error("[EventBus] Error processing after notify:",Y)})});await this.worker.processNow().catch((Y)=>{console.error("[EventBus] Error processing pending events on startup:",Y)})}async stop(){if(!this.running)return;if(this.running=!1,this.worker.stop(),this.notifyStrategy)try{await this.notifyStrategy.stop()}catch(Y){console.error("[EventBus] Error stopping notify strategy:",Y)}console.log("[EventBus] Stopped")}isRunning(){return this.running}}var mw1=S(()=>{d70();gw1()});function lw1(...Y){return{async start(X){await Promise.all(Y.map((Q)=>Q.start(X)))},async stop(){await Promise.all(Y.map((X)=>X.stop().catch((Q)=>{console.error("[NotifyStrategy] Error stopping strategy:",Q)})))},async notify(X){await Promise.all(Y.map((Q)=>Q.notify(X).catch((J)=>{console.warn("[NotifyStrategy] Notify failed (non-critical):",J)})))}}}class Iu{intervalMs;timer=null;onNotify=null;constructor(Y){this.intervalMs=Y}async start(Y){if(this.timer)return;this.onNotify=Y,this.scheduleNext(),console.log(`[Polling] Started polling every ${this.intervalMs}ms`)}async stop(){if(this.timer)clearTimeout(this.timer),this.timer=null,console.log("[Polling] Stopped polling");this.onNotify=null}async notify(Y){if(this.onNotify)this.onNotify()}scheduleNext(){this.timer=setTimeout(()=>{if(this.onNotify)this.onNotify();if(this.timer)this.scheduleNext()},this.intervalMs)}}import{sql as fJ4}from"kysely";class i70{db;pool;listenClient=null;onNotify=null;constructor(Y,X){this.db=Y;this.pool=X}async start(Y){if(this.listenClient)return;this.onNotify=Y;try{this.listenClient=await this.pool.connect(),this.listenClient.on("notification",(X)=>{if(X.channel===KO&&this.onNotify)this.onNotify()}),this.listenClient.on("error",(X)=>{console.error("[PostgresNotify] Connection error:",X),this.cleanup()}),await this.listenClient.query(`LISTEN ${KO}`),console.log("[PostgresNotify] Started LISTEN on",KO)}catch(X){console.error("[PostgresNotify] Failed to start LISTEN:",X),this.cleanup()}}async stop(){if(this.listenClient){try{await this.listenClient.query(`UNLISTEN ${KO}`),console.log("[PostgresNotify] Stopped LISTEN on",KO)}catch{}this.cleanup()}}async notify(Y){try{await fJ4`SELECT pg_notify(${KO}, ${Y})`.execute(this.db)}catch(X){console.warn("[PostgresNotify] Failed to send NOTIFY:",X)}}cleanup(){if(this.listenClient)this.listenClient.release(),this.listenClient=null;this.onNotify=null}}var KO="mesh_events";var dw1=()=>{};function pw1(Y,X){let Q=vw1(Y.db),J=X?.pollIntervalMs??Cu.pollIntervalMs,G=Y.type==="postgres"?lw1(new Iu(J),new i70(Y.db,Y.pool)):new Iu(J);return new n70({storage:Q,config:X,notifyStrategy:G})}var cw1=S(()=>{mw1();p70();dw1()});var nw1;var iw1=S(()=>{nw1={google:{name:"Google",icon:"https://assets.decocache.com/webdraw/eb7480aa-a68b-4ce4-98ff-36aa121762a7/google.svg"},github:{name:"GitHub",icon:"https://assets.decocache.com/webdraw/5f999dcb-c8a6-4572-948c-9996ef1d502f/github.svg"},microsoft:{name:"Microsoft",icon:"https://assets.decocache.com/mcp/aa6f6e1a-6526-4bca-99cc-82e2ec38b0e4/microsoft.png"}}});var aw1,rw1;var ow1=S(()=>{vG();QO();iw1();aw1=new O9;aw1.get("/config",async(Y)=>{try{let X=Object.keys(D9.socialProviders??{}),Q=X.length>0,J=X.map((W)=>({name:W,icon:nw1[W].icon})),G=process.env.UNSAFE_ALLOW_STDIO_TRANSPORT==="true",K={emailAndPassword:{enabled:D9.emailAndPassword?.enabled??!1},magicLink:{enabled:D9.magicLinkConfig?.enabled??!1},socialProviders:{enabled:Q,providers:J},sso:D9.ssoConfig?{enabled:!0,providerId:D9.ssoConfig.providerId}:{enabled:!1},stdioEnabled:G};return Y.json({success:!0,config:K})}catch(X){let Q=X instanceof Error?X.message:"Failed to load auth config";return Y.json({success:!1,error:Q},500)}});rw1=aw1});function _G(Y){if(Y==null)return"unknown error";if(typeof Y==="string")return Y;if(Y instanceof Error)return Y.message;return JSON.stringify(Y)}var EM1="vercel.ai.error",hJ4,sw1,tw1,w1,CM1="AI_APICallError",IM1,bJ4,ew1,YM1,X9,RM1="AI_EmptyResponseBodyError",jM1,xJ4,XM1,QM1,SM1,kM1="AI_InvalidArgumentError",vM1,uJ4,JM1,GM1,_M1,yM1="AI_InvalidPromptError",fM1,gJ4,WM1,ZM1,Qq,hM1="AI_InvalidResponseDataError",bM1,mJ4,KM1,HM1,rM8,xM1="AI_JSONParseError",uM1,lJ4,FM1,VM1,m2,gM1="AI_LoadAPIKeyError",mM1,dJ4,$M1,qM1,oM8,lM1="AI_LoadSettingError",dM1,pJ4,zM1,BM1,sM8,pM1="AI_NoContentGeneratedError",cM1,cJ4,UM1,DM1,tM8,nM1="AI_NoSuchModelError",iM1,nJ4,OM1,NM1,eM8,aM1="AI_TooManyEmbeddingValuesForCallError",rM1,iJ4,LM1,wM1,YA8,oM1="AI_TypeValidationError",sM1,aJ4,MM1,AM1,gQ,tM1="AI_UnsupportedFunctionalityError",eM1,rJ4,TM1,PM1,YA1;var A4=S(()=>{hJ4=Symbol.for(EM1),w1=class Y extends(tw1=Error,sw1=hJ4,tw1){constructor({name:X,message:Q,cause:J}){super(Q);this[sw1]=!0,this.name=X,this.cause=J}static isInstance(X){return Y.hasMarker(X,EM1)}static hasMarker(X,Q){let J=Symbol.for(Q);return X!=null&&typeof X==="object"&&J in X&&typeof X[J]==="boolean"&&X[J]===!0}},IM1=`vercel.ai.error.${CM1}`,bJ4=Symbol.for(IM1),X9=class extends(YM1=w1,ew1=bJ4,YM1){constructor({message:Y,url:X,requestBodyValues:Q,statusCode:J,responseHeaders:G,responseBody:K,cause:W,isRetryable:Z=J!=null&&(J===408||J===409||J===429||J>=500),data:H}){super({name:CM1,message:Y,cause:W});this[ew1]=!0,this.url=X,this.requestBodyValues=Q,this.statusCode=J,this.responseHeaders=G,this.responseBody=K,this.isRetryable=Z,this.data=H}static isInstance(Y){return w1.hasMarker(Y,IM1)}},jM1=`vercel.ai.error.${RM1}`,xJ4=Symbol.for(jM1),SM1=class extends(QM1=w1,XM1=xJ4,QM1){constructor({message:Y="Empty response body"}={}){super({name:RM1,message:Y});this[XM1]=!0}static isInstance(Y){return w1.hasMarker(Y,jM1)}};vM1=`vercel.ai.error.${kM1}`,uJ4=Symbol.for(vM1),_M1=class extends(GM1=w1,JM1=uJ4,GM1){constructor({message:Y,cause:X,argument:Q}){super({name:kM1,message:Y,cause:X});this[JM1]=!0,this.argument=Q}static isInstance(Y){return w1.hasMarker(Y,vM1)}},fM1=`vercel.ai.error.${yM1}`,gJ4=Symbol.for(fM1),Qq=class extends(ZM1=w1,WM1=gJ4,ZM1){constructor({prompt:Y,message:X,cause:Q}){super({name:yM1,message:`Invalid prompt: ${X}`,cause:Q});this[WM1]=!0,this.prompt=Y}static isInstance(Y){return w1.hasMarker(Y,fM1)}},bM1=`vercel.ai.error.${hM1}`,mJ4=Symbol.for(bM1),rM8=class extends(HM1=w1,KM1=mJ4,HM1){constructor({data:Y,message:X=`Invalid response data: ${JSON.stringify(Y)}.`}){super({name:hM1,message:X});this[KM1]=!0,this.data=Y}static isInstance(Y){return w1.hasMarker(Y,bM1)}},uM1=`vercel.ai.error.${xM1}`,lJ4=Symbol.for(uM1),m2=class extends(VM1=w1,FM1=lJ4,VM1){constructor({text:Y,cause:X}){super({name:xM1,message:`JSON parsing failed: Text: ${Y}.
1218
1218
  Error message: ${_G(X)}`,cause:X});this[FM1]=!0,this.text=Y}static isInstance(Y){return w1.hasMarker(Y,uM1)}},mM1=`vercel.ai.error.${gM1}`,dJ4=Symbol.for(mM1),oM8=class extends(qM1=w1,$M1=dJ4,qM1){constructor({message:Y}){super({name:gM1,message:Y});this[$M1]=!0}static isInstance(Y){return w1.hasMarker(Y,mM1)}},dM1=`vercel.ai.error.${lM1}`,pJ4=Symbol.for(dM1),sM8=class extends(BM1=w1,zM1=pJ4,BM1){constructor({message:Y}){super({name:lM1,message:Y});this[zM1]=!0}static isInstance(Y){return w1.hasMarker(Y,dM1)}},cM1=`vercel.ai.error.${pM1}`,cJ4=Symbol.for(cM1),tM8=class extends(DM1=w1,UM1=cJ4,DM1){constructor({message:Y="No content generated."}={}){super({name:pM1,message:Y});this[UM1]=!0}static isInstance(Y){return w1.hasMarker(Y,cM1)}},iM1=`vercel.ai.error.${nM1}`,nJ4=Symbol.for(iM1),eM8=class extends(NM1=w1,OM1=nJ4,NM1){constructor({errorName:Y=nM1,modelId:X,modelType:Q,message:J=`No such ${Q}: ${X}`}){super({name:Y,message:J});this[OM1]=!0,this.modelId=X,this.modelType=Q}static isInstance(Y){return w1.hasMarker(Y,iM1)}},rM1=`vercel.ai.error.${aM1}`,iJ4=Symbol.for(rM1),YA8=class extends(wM1=w1,LM1=iJ4,wM1){constructor(Y){super({name:aM1,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[LM1]=!0,this.provider=Y.provider,this.modelId=Y.modelId,this.maxEmbeddingsPerCall=Y.maxEmbeddingsPerCall,this.values=Y.values}static isInstance(Y){return w1.hasMarker(Y,rM1)}},sM1=`vercel.ai.error.${oM1}`,aJ4=Symbol.for(sM1),gQ=class Y extends(AM1=w1,MM1=aJ4,AM1){constructor({value:X,cause:Q,context:J}){let G="Type validation failed";if(J==null?void 0:J.field)G+=` for ${J.field}`;if((J==null?void 0:J.entityName)||(J==null?void 0:J.entityId)){G+=" (";let K=[];if(J.entityName)K.push(J.entityName);if(J.entityId)K.push(`id: "${J.entityId}"`);G+=K.join(", "),G+=")"}super({name:oM1,message:`${G}: Value: ${JSON.stringify(X)}.
1219
1219
  Error message: ${_G(Q)}`,cause:Q});this[MM1]=!0,this.value=X,this.context=J}static isInstance(X){return w1.hasMarker(X,sM1)}static wrap({value:X,cause:Q,context:J}){var G,K,W;if(Y.isInstance(Q)&&Q.value===X&&((G=Q.context)==null?void 0:G.field)===(J==null?void 0:J.field)&&((K=Q.context)==null?void 0:K.entityName)===(J==null?void 0:J.entityName)&&((W=Q.context)==null?void 0:W.entityId)===(J==null?void 0:J.entityId))return Q;return new Y({value:X,cause:Q,context:J})}},eM1=`vercel.ai.error.${tM1}`,rJ4=Symbol.for(eM1),YA1=class extends(PM1=w1,TM1=rJ4,PM1){constructor({functionality:Y,message:X=`'${Y}' functionality not supported.`}){super({name:tM1,message:X});this[TM1]=!0,this.functionality=Y}static isInstance(Y){return w1.hasMarker(Y,eM1)}}});function Gq(...Y){return Y.reduce((X,Q)=>({...X,...Q!=null?Q:{}}),{})}async function KA1(Y,X){if(Y==null)return Promise.resolve();let Q=X==null?void 0:X.abortSignal;return new Promise((J,G)=>{if(Q==null?void 0:Q.aborted){G(XA1());return}let K=setTimeout(()=>{W(),J()},Y),W=()=>{clearTimeout(K),Q==null||Q.removeEventListener("abort",Z)},Z=()=>{W(),G(XA1())};Q==null||Q.addEventListener("abort",Z)})}function XA1(){return new DOMException("Delay was aborted","AbortError")}function l2(Y){return Object.fromEntries([...Y.headers])}function HO(Y){let X=Y.replace(/-/g,"+").replace(/_/g,"/"),Q=sJ4(X);return Uint8Array.from(Q,(J)=>J.codePointAt(0))}function Zq(Y){let X="";for(let Q=0;Q<Y.length;Q++)X+=String.fromCodePoint(Y[Q]);return oJ4(X)}function FO(Y){if(Y==null)return"unknown error";if(typeof Y==="string")return Y;if(Y instanceof Error)return Y.message;return JSON.stringify(Y)}function $K(Y){return(Y instanceof Error||Y instanceof DOMException)&&(Y.name==="AbortError"||Y.name==="ResponseAborted"||Y.name==="TimeoutError")}function Q54(Y){if(!(Y instanceof Error))return!1;let X=Y.code;if(typeof X==="string"&&X54.includes(X))return!0;return!1}function VA1({error:Y,url:X,requestBodyValues:Q}){if($K(Y))return Y;if(Y instanceof TypeError&&Y54.includes(Y.message.toLowerCase())){let J=Y.cause;if(J!=null)return new X9({message:`Cannot connect to API: ${J.message}`,cause:J,url:X,requestBodyValues:Q,isRetryable:!0})}if(Q54(Y))return new X9({message:`Cannot connect to API: ${Y.message}`,cause:Y,url:X,requestBodyValues:Q,isRetryable:!0});return Y}function ju(Y=globalThis){var X,Q,J;if(Y.window)return"runtime/browser";if((X=Y.navigator)==null?void 0:X.userAgent)return`runtime/${Y.navigator.userAgent.toLowerCase()}`;if((J=(Q=Y.process)==null?void 0:Q.versions)==null?void 0:J.node)return`runtime/node.js/${Y.process.version.substring(0)}`;if(Y.EdgeRuntime)return"runtime/vercel-edge";return"runtime/unknown"}function J54(Y){if(Y==null)return{};let X={};if(Y instanceof Headers)Y.forEach((Q,J)=>{X[J.toLowerCase()]=Q});else{if(!Array.isArray(Y))Y=Object.entries(Y);for(let[Q,J]of Y)if(J!=null)X[Q.toLowerCase()]=J}return X}function qK(Y,...X){let Q=new Headers(J54(Y)),J=Q.get("user-agent")||"";return Q.set("user-agent",[J,...X].filter(Boolean).join(" ")),Object.fromEntries(Q.entries())}function qA1(Y){return Y!=null}function zA1({mediaType:Y,url:X,supportedUrls:Q}){return X=X.toLowerCase(),Y=Y.toLowerCase(),Object.entries(Q).map(([J,G])=>{let K=J.toLowerCase();return K==="*"||K==="*/*"?{mediaTypePrefix:"",regexes:G}:{mediaTypePrefix:K.replace(/\*/,""),regexes:G}}).filter(({mediaTypePrefix:J})=>Y.startsWith(J)).flatMap(({regexes:J})=>J).some((J)=>J.test(X))}function d2({settingValue:Y,environmentVariableName:X}){if(typeof Y==="string")return Y;if(Y!=null||typeof process>"u")return;if(Y=process.env[X],Y==null||typeof Y!=="string")return;return Y}function GA1(Y){let X=JSON.parse(Y);if(X===null||typeof X!=="object")return X;if(W54.test(Y)===!1&&Z54.test(Y)===!1)return X;return K54(X)}function K54(Y){let X=[Y];while(X.length){let Q=X;X=[];for(let J of Q){if(Object.prototype.hasOwnProperty.call(J,"__proto__"))throw SyntaxError("Object contains forbidden prototype property");if(Object.prototype.hasOwnProperty.call(J,"constructor")&&Object.prototype.hasOwnProperty.call(J.constructor,"prototype"))throw SyntaxError("Object contains forbidden prototype property");for(let G in J){let K=J[G];if(K&&typeof K==="object")X.push(K)}}}return Y}function BA1(Y){let{stackTraceLimit:X}=Error;try{Error.stackTraceLimit=0}catch(Q){return GA1(Y)}try{return GA1(Y)}finally{Error.stackTraceLimit=X}}function e70(Y){if(Y.type==="object"||Array.isArray(Y.type)&&Y.type.includes("object")){Y.additionalProperties=!1;let{properties:Q}=Y;if(Q!=null)for(let J of Object.keys(Q))Q[J]=Jq(Q[J])}if(Y.items!=null)Y.items=Array.isArray(Y.items)?Y.items.map(Jq):Jq(Y.items);if(Y.anyOf!=null)Y.anyOf=Y.anyOf.map(Jq);if(Y.allOf!=null)Y.allOf=Y.allOf.map(Jq);if(Y.oneOf!=null)Y.oneOf=Y.oneOf.map(Jq);let{definitions:X}=Y;if(X!=null)for(let Q of Object.keys(X))X[Q]=Jq(X[Q]);return Y}function Jq(Y){if(typeof Y==="boolean")return Y;return e70(Y)}function AJ(){return{}}function V54(Y,X){var Q,J,G;let K={type:"array"};if(((Q=Y.type)==null?void 0:Q._def)&&((G=(J=Y.type)==null?void 0:J._def)==null?void 0:G.typeName)!==j0.ZodAny)K.items=i4(Y.type._def,{...X,currentPath:[...X.currentPath,"items"]});if(Y.minLength)K.minItems=Y.minLength.value;if(Y.maxLength)K.maxItems=Y.maxLength.value;if(Y.exactLength)K.minItems=Y.exactLength.value,K.maxItems=Y.exactLength.value;return K}function $54(Y){let X={type:"integer",format:"int64"};if(!Y.checks)return X;for(let Q of Y.checks)switch(Q.kind){case"min":if(Q.inclusive)X.minimum=Q.value;else X.exclusiveMinimum=Q.value;break;case"max":if(Q.inclusive)X.maximum=Q.value;else X.exclusiveMaximum=Q.value;break;case"multipleOf":X.multipleOf=Q.value;break}return X}function q54(){return{type:"boolean"}}function UA1(Y,X){return i4(Y.type._def,X)}function DA1(Y,X,Q){let J=Q!=null?Q:X.dateStrategy;if(Array.isArray(J))return{anyOf:J.map((G,K)=>DA1(Y,X,G))};switch(J){case"string":case"format:date-time":return{type:"string",format:"date-time"};case"format:date":return{type:"string",format:"date"};case"integer":return B54(Y)}}function U54(Y,X){return{...i4(Y.innerType._def,X),default:Y.defaultValue()}}function D54(Y,X){return X.effectStrategy==="input"?i4(Y.schema._def,X):AJ()}function O54(Y){return{type:"string",enum:Array.from(Y.values)}}function L54(Y,X){let Q=[i4(Y.left._def,{...X,currentPath:[...X.currentPath,"allOf","0"]}),i4(Y.right._def,{...X,currentPath:[...X.currentPath,"allOf","1"]})].filter((G)=>!!G),J=[];return Q.forEach((G)=>{if(N54(G))J.push(...G.allOf);else{let K=G;if("additionalProperties"in G&&G.additionalProperties===!1){let{additionalProperties:W,...Z}=G;K=Z}J.push(K)}}),J.length?{allOf:J}:void 0}function w54(Y){let X=typeof Y.value;if(X!=="bigint"&&X!=="number"&&X!=="boolean"&&X!=="string")return{type:Array.isArray(Y.value)?"array":"object"};return{type:X==="bigint"?"integer":X,const:Y.value}}function OA1(Y,X){let Q={type:"string"};if(Y.checks)for(let J of Y.checks)switch(J.kind){case"min":Q.minLength=typeof Q.minLength==="number"?Math.max(Q.minLength,J.value):J.value;break;case"max":Q.maxLength=typeof Q.maxLength==="number"?Math.min(Q.maxLength,J.value):J.value;break;case"email":switch(X.emailStrategy){case"format:email":fG(Q,"email",J.message,X);break;case"format:idn-email":fG(Q,"idn-email",J.message,X);break;case"pattern:zod":JQ(Q,yG.email,J.message,X);break}break;case"url":fG(Q,"uri",J.message,X);break;case"uuid":fG(Q,"uuid",J.message,X);break;case"regex":JQ(Q,J.regex,J.message,X);break;case"cuid":JQ(Q,yG.cuid,J.message,X);break;case"cuid2":JQ(Q,yG.cuid2,J.message,X);break;case"startsWith":JQ(Q,RegExp(`^${r70(J.value,X)}`),J.message,X);break;case"endsWith":JQ(Q,RegExp(`${r70(J.value,X)}$`),J.message,X);break;case"datetime":fG(Q,"date-time",J.message,X);break;case"date":fG(Q,"date",J.message,X);break;case"time":fG(Q,"time",J.message,X);break;case"duration":fG(Q,"duration",J.message,X);break;case"length":Q.minLength=typeof Q.minLength==="number"?Math.max(Q.minLength,J.value):J.value,Q.maxLength=typeof Q.maxLength==="number"?Math.min(Q.maxLength,J.value):J.value;break;case"includes":{JQ(Q,RegExp(r70(J.value,X)),J.message,X);break}case"ip":{if(J.version!=="v6")fG(Q,"ipv4",J.message,X);if(J.version!=="v4")fG(Q,"ipv6",J.message,X);break}case"base64url":JQ(Q,yG.base64url,J.message,X);break;case"jwt":JQ(Q,yG.jwt,J.message,X);break;case"cidr":{if(J.version!=="v6")JQ(Q,yG.ipv4Cidr,J.message,X);if(J.version!=="v4")JQ(Q,yG.ipv6Cidr,J.message,X);break}case"emoji":JQ(Q,yG.emoji(),J.message,X);break;case"ulid":{JQ(Q,yG.ulid,J.message,X);break}case"base64":{switch(X.base64Strategy){case"format:binary":{fG(Q,"binary",J.message,X);break}case"contentEncoding:base64":{Q.contentEncoding="base64";break}case"pattern:zod":{JQ(Q,yG.base64,J.message,X);break}}break}case"nanoid":JQ(Q,yG.nanoid,J.message,X);case"toLowerCase":case"toUpperCase":case"trim":break;default:}return Q}function r70(Y,X){return X.patternStrategy==="escape"?A54(Y):Y}function A54(Y){let X="";for(let Q=0;Q<Y.length;Q++){if(!M54.has(Y[Q]))X+="\\";X+=Y[Q]}return X}function fG(Y,X,Q,J){var G;if(Y.format||((G=Y.anyOf)==null?void 0:G.some((K)=>K.format))){if(!Y.anyOf)Y.anyOf=[];if(Y.format)Y.anyOf.push({format:Y.format}),delete Y.format;Y.anyOf.push({format:X,...Q&&J.errorMessages&&{errorMessage:{format:Q}}})}else Y.format=X}function JQ(Y,X,Q,J){var G;if(Y.pattern||((G=Y.allOf)==null?void 0:G.some((K)=>K.pattern))){if(!Y.allOf)Y.allOf=[];if(Y.pattern)Y.allOf.push({pattern:Y.pattern}),delete Y.pattern;Y.allOf.push({pattern:ZA1(X,J),...Q&&J.errorMessages&&{errorMessage:{pattern:Q}}})}else Y.pattern=ZA1(X,J)}function ZA1(Y,X){var Q;if(!X.applyRegexFlags||!Y.flags)return Y.source;let J={i:Y.flags.includes("i"),m:Y.flags.includes("m"),s:Y.flags.includes("s")},G=J.i?Y.source.toLowerCase():Y.source,K="",W=!1,Z=!1,H=!1;for(let F=0;F<G.length;F++){if(W){K+=G[F],W=!1;continue}if(J.i){if(Z){if(G[F].match(/[a-z]/)){if(H)K+=G[F],K+=`${G[F-2]}-${G[F]}`.toUpperCase(),H=!1;else if(G[F+1]==="-"&&((Q=G[F+2])==null?void 0:Q.match(/[a-z]/)))K+=G[F],H=!0;else K+=`${G[F]}${G[F].toUpperCase()}`;continue}}else if(G[F].match(/[a-z]/)){K+=`[${G[F]}${G[F].toUpperCase()}]`;continue}}if(J.m){if(G[F]==="^"){K+=`(^|(?<=[\r
1220
1220
  ]))`;continue}else if(G[F]==="$"){K+=`($|(?=[\r