decocms 2.178.0 → 2.178.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (340) hide show
  1. package/dist/client/assets/{AlertCircle-DOAxiEBN.js → AlertCircle-12chRuly.js} +1 -1
  2. package/dist/client/assets/{AlignLeft-CRMPlioa.js → AlignLeft-_LT9deOt.js} +1 -1
  3. package/dist/client/assets/{ArrowDown-xJyK-tRR.js → ArrowDown-7rbX3zqZ.js} +1 -1
  4. package/dist/client/assets/{ArrowLeft-B-tpcvF0.js → ArrowLeft-erI8s3G2.js} +1 -1
  5. package/dist/client/assets/{ArrowUp-BO7WH9Uq.js → ArrowUp-DoIG5eQh.js} +1 -1
  6. package/dist/client/assets/{Building02-D30T2TCD.js → Building02-Dr7IyBdv.js} +1 -1
  7. package/dist/client/assets/{Check-BTP9VTUM.js → Check-DW8AVFkq.js} +1 -1
  8. package/dist/client/assets/{CheckCircle-DoZ7ERyW.js → CheckCircle-hBpanOsI.js} +1 -1
  9. package/dist/client/assets/{CheckSquare-Dbh9CJyx.js → CheckSquare-Cr3IzSXp.js} +1 -1
  10. package/dist/client/assets/{CheckVerified02-CyloHbYs.js → CheckVerified02-r17ymUCs.js} +1 -1
  11. package/dist/client/assets/{ChevronDown-CLapIRmf.js → ChevronDown-BIRGQoZ5.js} +1 -1
  12. package/dist/client/assets/{ChevronLeft-CMUbV0KP.js → ChevronLeft-D-e7F7Gj.js} +1 -1
  13. package/dist/client/assets/{ChevronRight-DWZgTrde.js → ChevronRight-DsjLlugM.js} +1 -1
  14. package/dist/client/assets/{ChevronUp-DGOtRvEF.js → ChevronUp-Bi3NMXzv.js} +1 -1
  15. package/dist/client/assets/{Clock-BYjyd9hX.js → Clock-D4xJnA3P.js} +1 -1
  16. package/dist/client/assets/{Code01-BkNgeom6.js → Code01-YGq5QwlZ.js} +1 -1
  17. package/dist/client/assets/{Container-D7IaxBn4.js → Container-DHyMOW_p.js} +1 -1
  18. package/dist/client/assets/{Copy01-BJ5f3Ft8.js → Copy01-DkcjIGiS.js} +1 -1
  19. package/dist/client/assets/{Dataflow03-DE7FXw07.js → Dataflow03-CD3eo8oO.js} +1 -1
  20. package/dist/client/assets/{DotsHorizontal-BFhhKBhk.js → DotsHorizontal-CjYGc80C.js} +1 -1
  21. package/dist/client/assets/{DotsVertical-CmyZ1eER.js → DotsVertical-2nyye7GD.js} +1 -1
  22. package/dist/client/assets/{Download01-C0zy7iAO.js → Download01-BvtNZalG.js} +1 -1
  23. package/dist/client/assets/{Edit01-BsJ32les.js → Edit01-CoeKfJ-u.js} +1 -1
  24. package/dist/client/assets/{Edit05-BD2d2k-5.js → Edit05-CbbEzOoe.js} +1 -1
  25. package/dist/client/assets/{Eye-B3PAdhmZ.js → Eye-hBqNQHpc.js} +1 -1
  26. package/dist/client/assets/{EyeOff-_G9JY6d-.js → EyeOff-CJoTkAtN.js} +1 -1
  27. package/dist/client/assets/{File02-CAND2NHE.js → File02-D19u2hUl.js} +1 -1
  28. package/dist/client/assets/{File06-Bvs2lp94.js → File06-Bp4ioOvR.js} +1 -1
  29. package/dist/client/assets/{FilterLines-D-lo1vJH.js → FilterLines-Dvk7BhWf.js} +1 -1
  30. package/dist/client/assets/{Globe01-jlGiKRJ-.js → Globe01-B8Ib7knn.js} +1 -1
  31. package/dist/client/assets/{Globe02-DpkPR1qQ.js → Globe02-wRhoc1N5.js} +1 -1
  32. package/dist/client/assets/{Grid01-Bootsry8.js → Grid01-C5e9ReQ4.js} +1 -1
  33. package/dist/client/assets/{Home02-Cn5GN0Zh.js → Home02-JZJR9jmQ.js} +1 -1
  34. package/dist/client/assets/{Image01-BGiNuXLR.js → Image01-DjoSkYp_.js} +1 -1
  35. package/dist/client/assets/{Inbox01-QN0h6e9y.js → Inbox01-ClVaT7W5.js} +1 -1
  36. package/dist/client/assets/{InfoCircle-BlKvj0NG.js → InfoCircle-DzyfpQes.js} +1 -1
  37. package/dist/client/assets/{Key01-p6odXPoE.js → Key01-qNySmY39.js} +1 -1
  38. package/dist/client/assets/{LayersTwo01-Dj6OMOTN.js → LayersTwo01-dfSlQT0y.js} +1 -1
  39. package/dist/client/assets/{LayoutLeft-Bl9wlb-l.js → LayoutLeft-B2KZfn2n.js} +1 -1
  40. package/dist/client/assets/{Link01-GDNtvq6w.js → Link01-Cz_ZRKoB.js} +1 -1
  41. package/dist/client/assets/{LinkExternal01-Cmp1Jq7T.js → LinkExternal01-CKvCiQnV.js} +1 -1
  42. package/dist/client/assets/{List-BFzJ8d3-.js → List-NLa0AhO4.js} +1 -1
  43. package/dist/client/assets/{Loading01-Bgt2pWQu.js → Loading01-Bb8FCosd.js} +1 -1
  44. package/dist/client/assets/{Lock01-CrtAKCVY.js → Lock01-CnZITIks.js} +1 -1
  45. package/dist/client/assets/{Play-C6mSLsW0.js → Play-Bw5lQw7j.js} +1 -1
  46. package/dist/client/assets/{Plus-Bah3bfIq.js → Plus-CajZ9VfC.js} +1 -1
  47. package/dist/client/assets/{RefreshCcw01-D6TQ-sWU.js → RefreshCcw01-B_NTitRE.js} +1 -1
  48. package/dist/client/assets/{Save01-DMdPXvfp.js → Save01-8oEsqMkJ.js} +1 -1
  49. package/dist/client/assets/{SearchMd-CbNARIB_.js → SearchMd-eZWeU0sP.js} +1 -1
  50. package/dist/client/assets/{Settings01-ncSo0UF1.js → Settings01-ClPVpLPy.js} +1 -1
  51. package/dist/client/assets/{Shield01-jjVa8gNb.js → Shield01-N4ace-oo.js} +1 -1
  52. package/dist/client/assets/{Terminal-BkHJq74m.js → Terminal-CGwuP-_5.js} +1 -1
  53. package/dist/client/assets/{Tool01-CCSFIqz9.js → Tool01-D1m8i7Ez.js} +1 -1
  54. package/dist/client/assets/{Trash01-DJLT0hlL.js → Trash01-B_4PTwjI.js} +1 -1
  55. package/dist/client/assets/{Upload01-CrylBwgE.js → Upload01-CLIOr3Tj.js} +1 -1
  56. package/dist/client/assets/{Users03-ClHTtWuU.js → Users03-Bv-hUQkl.js} +1 -1
  57. package/dist/client/assets/{X-Dr3IGE6q.js → X-LzehymHS.js} +1 -1
  58. package/dist/client/assets/{XClose-CM_PUH0D.js → XClose-CcNXqPQc.js} +1 -1
  59. package/dist/client/assets/{Zap-DNAzZ691.js → Zap-BFN1DqIC.js} +1 -1
  60. package/dist/client/assets/{agent-connections-preview-D9yVR2mI.js → agent-connections-preview-3pYXfstj.js} +1 -1
  61. package/dist/client/assets/{agent-detail-D9yhjqjE.js → agent-detail-DMK-u3yi.js} +1 -1
  62. package/dist/client/assets/{agents-UYgbyoc-.js → agents-Wfe5dNfh.js} +1 -1
  63. package/dist/client/assets/{ai-providers-logos-CKXeyPmY.js → ai-providers-logos-CCp39UCk.js} +1 -1
  64. package/dist/client/assets/{alert-dialog-CGRFjIvo.js → alert-dialog-B_ae3oRt.js} +1 -1
  65. package/dist/client/assets/{auth-catchall-DJtyBhDQ.js → auth-catchall-DAx9m28t.js} +1 -1
  66. package/dist/client/assets/{automation-detail-Da-KIL0v.js → automation-detail-DfFkGT_5.js} +1 -1
  67. package/dist/client/assets/{automations-BBeFyOp2.js → automations-A8NOzTSS.js} +1 -1
  68. package/dist/client/assets/{avatar-B6y4oqG6.js → avatar-B2yArl-q.js} +1 -1
  69. package/dist/client/assets/{badge-BWsagPlP.js → badge-DtRom7JO.js} +1 -1
  70. package/dist/client/assets/{binder-BfA1Jrrc.js → binder-D4cqx_Kx.js} +1 -1
  71. package/dist/client/assets/{breadcrumb-D8mb9kpq.js → breadcrumb-C2RG4nAQ.js} +1 -1
  72. package/dist/client/assets/{card-C0MItTW_.js → card-B8qDZGCZ.js} +1 -1
  73. package/dist/client/assets/{checkbox-DUU3Nuea.js → checkbox-B1rexahu.js} +1 -1
  74. package/dist/client/assets/{collapsible-CtLdTa6t.js → collapsible-BtjeaBAE.js} +1 -1
  75. package/dist/client/assets/{collection-detail-DPIki4up.js → collection-detail-BaBGI9i2.js} +1 -1
  76. package/dist/client/assets/{collection-display-button-DdFInvSR.js → collection-display-button-CpVZ4wHm.js} +1 -1
  77. package/dist/client/assets/{collection-search-CGfzh4mC.js → collection-search-BYV7N3mr.js} +1 -1
  78. package/dist/client/assets/{collection-table-wrapper-DLe2aR6i.js → collection-table-wrapper-CHFJQd21.js} +1 -1
  79. package/dist/client/assets/{collection-tabs-DAHXpc2n.js → collection-tabs-CJEa3dRy.js} +1 -1
  80. package/dist/client/assets/{command-C4HnUxgr.js → command-Drksh_DO.js} +1 -1
  81. package/dist/client/assets/{connection-card-DRd8H1I5.js → connection-card-Bak2l1_M.js} +1 -1
  82. package/dist/client/assets/{connection-detail-MKWBWpRr.js → connection-detail-BKy2ZsS6.js} +1 -1
  83. package/dist/client/assets/{connections-CIQDC3QM.js → connections-Dxf4eIOE.js} +1 -1
  84. package/dist/client/assets/{constants-C6R-Odkq.js → constants-D7qXOYRn.js} +1 -1
  85. package/dist/client/assets/{context-BFTRA5vP.js → context-DxQMlFKC.js} +1 -1
  86. package/dist/client/assets/{create-organization-dialog-Bez2nZe0.js → create-organization-dialog-CNWB-72r.js} +1 -1
  87. package/dist/client/assets/{create-project-dialog-MCGuKGij.js → create-project-dialog-BeIY4Oy9.js} +1 -1
  88. package/dist/client/assets/{danger-D1zng7LS.js → danger-YWbxrjNq.js} +1 -1
  89. package/dist/client/assets/{danger-zone-DbcRzYYG.js → danger-zone-DGg0ZzSy.js} +1 -1
  90. package/dist/client/assets/{dependencies-B8EkZe-H.js → dependencies-DtAVTWu-.js} +1 -1
  91. package/dist/client/assets/{dialog-Bw5T2ogY.js → dialog-ChXYvlDt.js} +1 -1
  92. package/dist/client/assets/{dropdown-menu-Dan8nMb8.js → dropdown-menu-BxlQMXgW.js} +1 -1
  93. package/dist/client/assets/{dynamic-plugin-layout-BDxV3RAS.js → dynamic-plugin-layout-JpZTv0Ay.js} +1 -1
  94. package/dist/client/assets/{editable-task-title-wfBXYVIh.js → editable-task-title-Cm-uIwFs.js} +1 -1
  95. package/dist/client/assets/{empty-state-CoA3_x_6.js → empty-state-qLM_bVsv.js} +1 -1
  96. package/dist/client/assets/{empty-state-C1iyyf7G.js → empty-state-xIvMMy-_.js} +1 -1
  97. package/dist/client/assets/{env-vars-editor-CxyeKMFS.js → env-vars-editor-Yss1wn0m.js} +1 -1
  98. package/dist/client/assets/{extract-connection-data-C8ZedtM3.js → extract-connection-data-48N591A_.js} +1 -1
  99. package/dist/client/assets/{file-browser-CShFs9BG.js → file-browser-BbqpPFZK.js} +2 -2
  100. package/dist/client/assets/{form-B1LLlQBa.js → form-CaFPTMVC.js} +1 -1
  101. package/dist/client/assets/{general-Dnfj_B7U.js → general-DI9irVIQ.js} +1 -1
  102. package/dist/client/assets/{generate-id-WpAuYSZF.js → generate-id-BiV6m8fS.js} +1 -1
  103. package/dist/client/assets/{grid-view-PzYdekcz.js → grid-view-DurgUMuo.js} +1 -1
  104. package/dist/client/assets/{home-CKa-gWjN.js → home-CspK560n.js} +1 -1
  105. package/dist/client/assets/{index-lUO5B2Do.js → index-ChUIqRBi.js} +1 -1
  106. package/dist/client/assets/{index-D-AXXJqO.js → index-CqWJIMlG.js} +1 -1
  107. package/dist/client/assets/{index-CgSAwZ8g.js → index-CqtWW-Tq.js} +1 -1
  108. package/dist/client/assets/{index-DtZLm-Fz.js → index-CqyqI90F.js} +1 -1
  109. package/dist/client/assets/{index-BaVHKLOw.js → index-De1iYnQy.js} +1 -1
  110. package/dist/client/assets/{index-De7oAufQ.js → index-NjMxPJgF.js} +3 -3
  111. package/dist/client/assets/{index-BkxamE0W.js → index-TV8hw8s3.js} +1 -1
  112. package/dist/client/assets/{index-CVayrapI.js → index-YL7q5tyF.js} +1 -1
  113. package/dist/client/assets/{index-BFJo8BQ3.js → index-YRudAQp7.js} +1 -1
  114. package/dist/client/assets/{index-J5pIXVfD.js → index-yiVP4brl.js} +1 -1
  115. package/dist/client/assets/{index-OdE2HBl6.js → index-zWpUeKAz.js} +1 -1
  116. package/dist/client/assets/{infiniteQueryObserver-C7xXp1jr.js → infiniteQueryObserver-JZ0YxCW-.js} +1 -1
  117. package/dist/client/assets/{input-_VKm0O_1.js → input-B89sozd8.js} +1 -1
  118. package/dist/client/assets/{integration-icon-BkY1vh6I.js → integration-icon-BPVDVJvP.js} +1 -1
  119. package/dist/client/assets/{label-BhDDQ3-n.js → label-DkiEYJcU.js} +1 -1
  120. package/dist/client/assets/{layout-BIFV7MZL.js → layout-Cqn-h1Jz.js} +1 -1
  121. package/dist/client/assets/{layout-CZKgiZuG.js → layout-DcmGLVHZ.js} +1 -1
  122. package/dist/client/assets/{login-uo65TNIo.js → login-qT_ItpIx.js} +1 -1
  123. package/dist/client/assets/{logo-upload-CXS8-AgL.js → logo-upload-CoGaedUC.js} +1 -1
  124. package/dist/client/assets/{mcp-app-renderer-BcsrfZJp.js → mcp-app-renderer-By1mQEU9.js} +1 -1
  125. package/dist/client/assets/{mcp-server-card-Bp6C5W6n.js → mcp-server-card-B3Nrrgyk.js} +1 -1
  126. package/dist/client/assets/{mcp-server-detail-Ctbkl5jL.js → mcp-server-detail-DMfy0V9h.js} +2 -2
  127. package/dist/client/assets/{members-DCfL7gNX.js → members-Q81LXZu1.js} +1 -1
  128. package/dist/client/assets/{monaco-editor-DPC7_J-G.js → monaco-editor-ZB27PMAe.js} +1 -1
  129. package/dist/client/assets/{monitoring-ByXLzXVV.js → monitoring-C31A03PZ.js} +1 -1
  130. package/dist/client/assets/{monitoring-dashboard-edit-YR1gT6FF.js → monitoring-dashboard-edit-Dfi8Jxeb.js} +1 -1
  131. package/dist/client/assets/{monitoring-dashboard-view-BbtnIBfa.js → monitoring-dashboard-view-CxjxBHLW.js} +1 -1
  132. package/dist/client/assets/{monitoring-stats-row-Df9ANyzv.js → monitoring-stats-row-CAn-8pVZ.js} +1 -1
  133. package/dist/client/assets/{oauth-callback-DAQSPrcu.js → oauth-callback-B8DRnSok.js} +1 -1
  134. package/dist/client/assets/{oauth-callback-ai-provider-BM5LYNPq.js → oauth-callback-ai-provider-CsTCxPAY.js} +1 -1
  135. package/dist/client/assets/{org-ai-providers-6KYO-veN.js → org-ai-providers-DaYyItUL.js} +1 -1
  136. package/dist/client/assets/{page-JhhtSWZh.js → page-BjLk0DX_.js} +1 -1
  137. package/dist/client/assets/{page-30eMAMiN.js → page-C2I5Nlmu.js} +1 -1
  138. package/dist/client/assets/{plugin-empty-state-Cl2I2geD.js → plugin-empty-state-K02oXRNN.js} +1 -1
  139. package/dist/client/assets/{plugin-empty-state-R2BzERoW.js → plugin-empty-state-l30u7dec.js} +1 -1
  140. package/dist/client/assets/{plugin-header-Bakz3z0e.js → plugin-header-B_wkRb4Y.js} +1 -1
  141. package/dist/client/assets/{plugin-header-aEsNVQjp.js → plugin-header-CE-BhILm.js} +1 -1
  142. package/dist/client/assets/plugins-6p4XZdw1.js +1 -0
  143. package/dist/client/assets/{popover-D_qGIJiq.js → popover-Br8QkMK3.js} +1 -1
  144. package/dist/client/assets/{project-app-view-BFgEphLV.js → project-app-view-CRe7LVZk.js} +1 -1
  145. package/dist/client/assets/{project-layout-C8oyOOGc.js → project-layout-Bg1hlIaM.js} +1 -1
  146. package/dist/client/assets/{project-plugins-BVt_WzcU.js → project-plugins-BHOZZsH7.js} +1 -1
  147. package/dist/client/assets/{projects-list-C02pKlJj.js → projects-list-i4ZvUqtI.js} +1 -1
  148. package/dist/client/assets/{registry-layout-C-yQnDXG.js → registry-layout-DQV7LhSo.js} +1 -1
  149. package/dist/client/assets/{registry-utils-Dqc_kCiP.js → registry-utils-cjX9P5J9.js} +1 -1
  150. package/dist/client/assets/{reset-password-Cqvt_aDI.js → reset-password-Cgcrl5ZG.js} +1 -1
  151. package/dist/client/assets/{resizable-CO0Uh73H.js → resizable-Nu1SqaJD.js} +1 -1
  152. package/dist/client/assets/{save-actions-ju1vjafj.js → save-actions-CVl6VtT2.js} +1 -1
  153. package/dist/client/assets/{scroll-area-DL2xzsPP.js → scroll-area-BTJQ86Ry.js} +1 -1
  154. package/dist/client/assets/{select-B4liIMVc.js → select-Dx3T3-4n.js} +1 -1
  155. package/dist/client/assets/{select-virtual-mcp-CuflMlTt.js → select-virtual-mcp-BS537pmy.js} +1 -1
  156. package/dist/client/assets/{sheet-Cjr3EcYH.js → sheet-C3HM0Uwr.js} +1 -1
  157. package/dist/client/assets/{shell-layout-DfTROeX_.js → shell-layout-Bco0BFOl.js} +2 -2
  158. package/dist/client/assets/{sidebar-settings-BljNzJVO.js → sidebar-settings-JhN4X_jg.js} +1 -1
  159. package/dist/client/assets/{skeleton-Bt7MRTvB.js → skeleton-Cjm8s7CT.js} +1 -1
  160. package/dist/client/assets/{spinner-Cse1gKnw.js → spinner-Dzx7B3Jl.js} +1 -1
  161. package/dist/client/assets/{store-invite-D8XeTZbu.js → store-invite-BPcFU0aw.js} +1 -1
  162. package/dist/client/assets/{switch-DHS6rwq-.js → switch-CA_oYDia.js} +1 -1
  163. package/dist/client/assets/{table-BPkNFl3F.js → table-C-1rP_rt.js} +1 -1
  164. package/dist/client/assets/{tabs-D9xzXdQn.js → tabs-BSOe8gLq.js} +1 -1
  165. package/dist/client/assets/{task-status-DPcRgg7n.js → task-status-DYx9R7EL.js} +24 -24
  166. package/dist/client/assets/tasks-D1X8oLa3.js +1 -0
  167. package/dist/client/assets/{tasks-panel-i3VUreUx.js → tasks-panel-BJ3TfA-_.js} +1 -1
  168. package/dist/client/assets/{textarea-C_pKpP9s.js → textarea-DIJzFUWn.js} +1 -1
  169. package/dist/client/assets/{time-range-picker-BuykPBni.js → time-range-picker-CGBh-D6p.js} +1 -1
  170. package/dist/client/assets/{toggle-group-VpRSF_Gl.js → toggle-group-DlZGDyPQ.js} +1 -1
  171. package/dist/client/assets/{tools-list-DDFWIxxm.js → tools-list-D-T64862.js} +1 -1
  172. package/dist/client/assets/{tooltip-C4rlkzSj.js → tooltip-BJMSu0c2.js} +1 -1
  173. package/dist/client/assets/{topbar-portal-CF1YRovU.js → topbar-portal-ChPXVsi1.js} +1 -1
  174. package/dist/client/assets/{types-DQbIwrMI.js → types-BHeMLyAV.js} +1 -1
  175. package/dist/client/assets/{use-automations-C1HgdvUZ.js → use-automations-Bmw3x7Dk.js} +1 -1
  176. package/dist/client/assets/{use-collections-CN-KZdhF.js → use-collections-C0cYiFfV.js} +1 -1
  177. package/dist/client/assets/{use-connection-C4RNTGYe.js → use-connection-CHFdKnsr.js} +1 -1
  178. package/dist/client/assets/{use-copy-Cyun7kVE.js → use-copy-xhdji_Bl.js} +1 -1
  179. package/dist/client/assets/{use-create-virtual-mcp-4JnIm_fY.js → use-create-virtual-mcp-B7odZ_c3.js} +1 -1
  180. package/dist/client/assets/{use-infinite-scroll-B1b4xMpn.js → use-infinite-scroll-CPhZNIw7.js} +1 -1
  181. package/dist/client/assets/{use-install-from-registry-CytyaLQX.js → use-install-from-registry-BzwuBLOx.js} +1 -1
  182. package/dist/client/assets/{use-list-state-CCkxYz8q.js → use-list-state-CbsN6RbJ.js} +1 -1
  183. package/dist/client/assets/{use-mcp-prompts-BGZnglwN.js → use-mcp-prompts-Bel4H4rh.js} +1 -1
  184. package/dist/client/assets/{use-mcp-resources-DSKOWSEO.js → use-mcp-resources-qGdymfRz.js} +1 -1
  185. package/dist/client/assets/{use-mcp-tools-C2aTDAuJ.js → use-mcp-tools-BCZI_Wqc.js} +1 -1
  186. package/dist/client/assets/{use-members-DjL_-1xN.js → use-members-B4ncWtMV.js} +1 -1
  187. package/dist/client/assets/{use-mobile-CMHMyYVi.js → use-mobile-DOUfTohp.js} +1 -1
  188. package/dist/client/assets/{use-project-DxPDjIre.js → use-project-b5C3lq5-.js} +1 -1
  189. package/dist/client/assets/{use-store-discovery-BBXrVOcG.js → use-store-discovery-B402mTHd.js} +1 -1
  190. package/dist/client/assets/{use-view-mode-CXln2RGt.js → use-view-mode-ss3eRodO.js} +1 -1
  191. package/dist/client/assets/{use-virtual-mcp-AdVimCkX.js → use-virtual-mcp-BP6aaUzw.js} +1 -1
  192. package/dist/client/assets/useInfiniteQuery-BXDrDvlH.js +1 -0
  193. package/dist/client/assets/{useMutation-BDzOMrvq.js → useMutation-68NxhXCf.js} +1 -1
  194. package/dist/client/assets/useQuery-BYBCFxgb.js +1 -0
  195. package/dist/client/assets/useSuspenseInfiniteQuery-X3jXt04i.js +1 -0
  196. package/dist/client/assets/{user-DSh4pFej.js → user-iDZRuimU.js} +1 -1
  197. package/dist/client/assets/{workflow-mIahQD3R.js → workflow-CrrTPehP.js} +1 -1
  198. package/dist/client/index.html +1 -1
  199. package/dist/server/cli.js +2 -2
  200. package/dist/server/migrate.js +1 -1
  201. package/dist/server/node_modules/pg-cloudflare/README.md +112 -0
  202. package/dist/server/node_modules/pg-cloudflare/dist/empty.d.ts +2 -0
  203. package/dist/server/node_modules/pg-cloudflare/dist/empty.js +6 -0
  204. package/dist/server/node_modules/pg-cloudflare/dist/empty.js.map +1 -0
  205. package/dist/server/node_modules/pg-cloudflare/dist/index.d.ts +31 -0
  206. package/dist/server/node_modules/pg-cloudflare/dist/index.js +152 -0
  207. package/dist/server/node_modules/pg-cloudflare/dist/index.js.map +1 -0
  208. package/dist/server/node_modules/pg-cloudflare/esm/index.mjs +3 -0
  209. package/dist/server/node_modules/pg-cloudflare/package.json +39 -0
  210. package/dist/server/node_modules/pg-cloudflare/src/empty.ts +3 -0
  211. package/dist/server/node_modules/pg-cloudflare/src/index.ts +166 -0
  212. package/dist/server/node_modules/pg-cloudflare/src/types.d.ts +25 -0
  213. package/dist/server/node_modules/pg-connection-string/LICENSE +21 -0
  214. package/dist/server/node_modules/pg-connection-string/README.md +105 -0
  215. package/dist/server/node_modules/pg-connection-string/esm/index.mjs +8 -0
  216. package/dist/server/node_modules/pg-connection-string/index.d.ts +36 -0
  217. package/dist/server/node_modules/pg-connection-string/index.js +231 -0
  218. package/dist/server/node_modules/pg-connection-string/package.json +52 -0
  219. package/dist/server/node_modules/pg-int8/LICENSE +13 -0
  220. package/dist/server/node_modules/pg-int8/README.md +16 -0
  221. package/dist/server/node_modules/pg-int8/index.js +100 -0
  222. package/dist/server/node_modules/pg-int8/package.json +24 -0
  223. package/dist/server/node_modules/pg-pool/LICENSE +21 -0
  224. package/dist/server/node_modules/pg-pool/README.md +357 -0
  225. package/dist/server/node_modules/pg-pool/esm/index.mjs +5 -0
  226. package/dist/server/node_modules/pg-pool/index.js +517 -0
  227. package/dist/server/node_modules/pg-pool/package.json +51 -0
  228. package/dist/server/node_modules/pg-protocol/LICENSE +21 -0
  229. package/dist/server/node_modules/pg-protocol/README.md +3 -0
  230. package/dist/server/node_modules/pg-protocol/dist/b.d.ts +1 -0
  231. package/dist/server/node_modules/pg-protocol/dist/b.js +23 -0
  232. package/dist/server/node_modules/pg-protocol/dist/b.js.map +1 -0
  233. package/dist/server/node_modules/pg-protocol/dist/buffer-reader.d.ts +15 -0
  234. package/dist/server/node_modules/pg-protocol/dist/buffer-reader.js +55 -0
  235. package/dist/server/node_modules/pg-protocol/dist/buffer-reader.js.map +1 -0
  236. package/dist/server/node_modules/pg-protocol/dist/buffer-writer.d.ts +16 -0
  237. package/dist/server/node_modules/pg-protocol/dist/buffer-writer.js +81 -0
  238. package/dist/server/node_modules/pg-protocol/dist/buffer-writer.js.map +1 -0
  239. package/dist/server/node_modules/pg-protocol/dist/inbound-parser.test.d.ts +1 -0
  240. package/dist/server/node_modules/pg-protocol/dist/inbound-parser.test.js +530 -0
  241. package/dist/server/node_modules/pg-protocol/dist/inbound-parser.test.js.map +1 -0
  242. package/dist/server/node_modules/pg-protocol/dist/index.d.ts +6 -0
  243. package/dist/server/node_modules/pg-protocol/dist/index.js +15 -0
  244. package/dist/server/node_modules/pg-protocol/dist/index.js.map +1 -0
  245. package/dist/server/node_modules/pg-protocol/dist/messages.d.ts +162 -0
  246. package/dist/server/node_modules/pg-protocol/dist/messages.js +160 -0
  247. package/dist/server/node_modules/pg-protocol/dist/messages.js.map +1 -0
  248. package/dist/server/node_modules/pg-protocol/dist/outbound-serializer.test.d.ts +1 -0
  249. package/dist/server/node_modules/pg-protocol/dist/outbound-serializer.test.js +252 -0
  250. package/dist/server/node_modules/pg-protocol/dist/outbound-serializer.test.js.map +1 -0
  251. package/dist/server/node_modules/pg-protocol/dist/parser.d.ts +24 -0
  252. package/dist/server/node_modules/pg-protocol/dist/parser.js +324 -0
  253. package/dist/server/node_modules/pg-protocol/dist/parser.js.map +1 -0
  254. package/dist/server/node_modules/pg-protocol/dist/serializer.d.ts +42 -0
  255. package/dist/server/node_modules/pg-protocol/dist/serializer.js +189 -0
  256. package/dist/server/node_modules/pg-protocol/dist/serializer.js.map +1 -0
  257. package/dist/server/node_modules/pg-protocol/esm/index.js +11 -0
  258. package/dist/server/node_modules/pg-protocol/package.json +45 -0
  259. package/dist/server/node_modules/pg-protocol/src/b.ts +25 -0
  260. package/dist/server/node_modules/pg-protocol/src/buffer-reader.ts +58 -0
  261. package/dist/server/node_modules/pg-protocol/src/buffer-writer.ts +85 -0
  262. package/dist/server/node_modules/pg-protocol/src/inbound-parser.test.ts +575 -0
  263. package/dist/server/node_modules/pg-protocol/src/index.ts +11 -0
  264. package/dist/server/node_modules/pg-protocol/src/messages.ts +262 -0
  265. package/dist/server/node_modules/pg-protocol/src/outbound-serializer.test.ts +276 -0
  266. package/dist/server/node_modules/pg-protocol/src/parser.ts +413 -0
  267. package/dist/server/node_modules/pg-protocol/src/serializer.ts +274 -0
  268. package/dist/server/node_modules/pg-protocol/src/testing/buffer-list.ts +67 -0
  269. package/dist/server/node_modules/pg-protocol/src/testing/test-buffers.ts +166 -0
  270. package/dist/server/node_modules/pg-protocol/src/types/chunky.d.ts +1 -0
  271. package/dist/server/node_modules/pg-types/.travis.yml +7 -0
  272. package/dist/server/node_modules/pg-types/Makefile +14 -0
  273. package/dist/server/node_modules/pg-types/README.md +75 -0
  274. package/dist/server/node_modules/pg-types/index.d.ts +137 -0
  275. package/dist/server/node_modules/pg-types/index.js +47 -0
  276. package/dist/server/node_modules/pg-types/index.test-d.ts +21 -0
  277. package/dist/server/node_modules/pg-types/lib/arrayParser.js +11 -0
  278. package/dist/server/node_modules/pg-types/lib/binaryParsers.js +257 -0
  279. package/dist/server/node_modules/pg-types/lib/builtins.js +73 -0
  280. package/dist/server/node_modules/pg-types/lib/textParsers.js +215 -0
  281. package/dist/server/node_modules/pg-types/package.json +42 -0
  282. package/dist/server/node_modules/pg-types/test/index.js +24 -0
  283. package/dist/server/node_modules/pg-types/test/types.js +597 -0
  284. package/dist/server/node_modules/pgpass/README.md +74 -0
  285. package/dist/server/node_modules/pgpass/lib/helper.js +233 -0
  286. package/dist/server/node_modules/pgpass/lib/index.js +23 -0
  287. package/dist/server/node_modules/pgpass/package.json +41 -0
  288. package/dist/server/node_modules/postgres-array/index.d.ts +4 -0
  289. package/dist/server/node_modules/postgres-array/index.js +97 -0
  290. package/dist/server/node_modules/postgres-array/license +21 -0
  291. package/dist/server/node_modules/postgres-array/package.json +35 -0
  292. package/dist/server/node_modules/postgres-array/readme.md +43 -0
  293. package/dist/server/node_modules/postgres-bytea/index.js +33 -0
  294. package/dist/server/node_modules/postgres-bytea/license +21 -0
  295. package/dist/server/node_modules/postgres-bytea/package.json +34 -0
  296. package/dist/server/node_modules/postgres-bytea/readme.md +34 -0
  297. package/dist/server/node_modules/postgres-date/index.js +116 -0
  298. package/dist/server/node_modules/postgres-date/license +21 -0
  299. package/dist/server/node_modules/postgres-date/package.json +33 -0
  300. package/dist/server/node_modules/postgres-date/readme.md +49 -0
  301. package/dist/server/node_modules/postgres-interval/index.d.ts +20 -0
  302. package/dist/server/node_modules/postgres-interval/index.js +125 -0
  303. package/dist/server/node_modules/postgres-interval/license +21 -0
  304. package/dist/server/node_modules/postgres-interval/package.json +36 -0
  305. package/dist/server/node_modules/postgres-interval/readme.md +48 -0
  306. package/dist/server/node_modules/split2/LICENSE +13 -0
  307. package/dist/server/node_modules/split2/README.md +85 -0
  308. package/dist/server/node_modules/split2/bench.js +27 -0
  309. package/dist/server/node_modules/split2/index.js +141 -0
  310. package/dist/server/node_modules/split2/package.json +39 -0
  311. package/dist/server/node_modules/split2/test.js +409 -0
  312. package/dist/server/server.js +2 -2
  313. package/package.json +1 -1
  314. package/dist/client/assets/plugins-CJOgdAgY.js +0 -1
  315. package/dist/client/assets/tasks-CAcIEtSF.js +0 -1
  316. package/dist/client/assets/useInfiniteQuery-Dw4aF3nd.js +0 -1
  317. package/dist/client/assets/useQuery-CTePvczf.js +0 -1
  318. package/dist/client/assets/useSuspenseInfiniteQuery-All2JJwt.js +0 -1
  319. package/dist/server/node_modules/pg/README.md +0 -95
  320. package/dist/server/node_modules/pg/esm/index.mjs +0 -20
  321. package/dist/server/node_modules/pg/lib/client.js +0 -743
  322. package/dist/server/node_modules/pg/lib/connection-parameters.js +0 -171
  323. package/dist/server/node_modules/pg/lib/connection.js +0 -221
  324. package/dist/server/node_modules/pg/lib/crypto/cert-signatures.js +0 -122
  325. package/dist/server/node_modules/pg/lib/crypto/sasl.js +0 -212
  326. package/dist/server/node_modules/pg/lib/crypto/utils-legacy.js +0 -43
  327. package/dist/server/node_modules/pg/lib/crypto/utils-webcrypto.js +0 -89
  328. package/dist/server/node_modules/pg/lib/crypto/utils.js +0 -9
  329. package/dist/server/node_modules/pg/lib/defaults.js +0 -91
  330. package/dist/server/node_modules/pg/lib/index.js +0 -73
  331. package/dist/server/node_modules/pg/lib/native/client.js +0 -323
  332. package/dist/server/node_modules/pg/lib/native/index.js +0 -2
  333. package/dist/server/node_modules/pg/lib/native/query.js +0 -165
  334. package/dist/server/node_modules/pg/lib/query.js +0 -252
  335. package/dist/server/node_modules/pg/lib/result.js +0 -109
  336. package/dist/server/node_modules/pg/lib/stream.js +0 -83
  337. package/dist/server/node_modules/pg/lib/type-overrides.js +0 -35
  338. package/dist/server/node_modules/pg/lib/utils.js +0 -217
  339. package/dist/server/node_modules/pg/package.json +0 -76
  340. /package/dist/server/node_modules/{pg → pg-cloudflare}/LICENSE +0 -0
@@ -1586,7 +1586,7 @@ ${Q}
1586
1586
  `;break}case"tool":throw new Eq({functionality:"tool messages"});default:break}return W+=`${G}:
1587
1587
  `,{prompt:W}}function i38(Y){if(Y.type==="url")return{type:"image_url",image_url:{url:Y.url}};return{type:"image_url",image_url:{url:oF6({data:Y.data,mediaType:Y.mediaType,defaultMediaType:n38})}}}function a38(Y){return Object.fromEntries(Object.entries(Y).filter(([,X])=>X!=null))}function r38(Y){if(!Y)return{};if(Y instanceof Headers)return Object.fromEntries(Y.entries());if(Array.isArray(Y))return Object.fromEntries(Y);return Y}function o38(Y,X){let J=X.toLowerCase();return Object.keys(Y).find((G)=>G.toLowerCase()===J)}function s38(Y,...X){let J=r38(Y),G=a38(J),W=o38(G,"user-agent"),K=W?G[W]:void 0,Z=(K==null?void 0:K.trim())?K:X.filter(Boolean).join(" "),Q=Object.fromEntries(Object.entries(G).filter(([H])=>H.toLowerCase()!=="user-agent"));return f9(J6({},Q),{"user-agent":Z})}function Rx1(Y={}){var X,J,G;let W=(J=D38((X=Y.baseURL)!=null?X:Y.baseUrl))!=null?J:"https://openrouter.ai/api/v1",K=(G=Y.compatibility)!=null?G:"compatible",Z=()=>s38(J6(J6({Authorization:`Bearer ${NH8({apiKey:Y.apiKey,environmentVariableName:"OPENROUTER_API_KEY",description:"OpenRouter"})}`},Y.headers),Y.api_keys&&Object.keys(Y.api_keys).length>0&&{"X-Provider-API-Keys":JSON.stringify(Y.api_keys)}),`ai-sdk/openrouter/${t38}`),Q=(q,L={})=>new b38(q,L,{provider:"openrouter.chat",url:({path:N})=>`${W}${N}`,headers:Z,compatibility:K,fetch:Y.fetch,extraBody:Y.extraBody}),H=(q,L={})=>new g38(q,L,{provider:"openrouter.completion",url:({path:N})=>`${W}${N}`,headers:Z,compatibility:K,fetch:Y.fetch,extraBody:Y.extraBody}),$=(q,L={})=>new d38(q,L,{provider:"openrouter.embedding",url:({path:N})=>`${W}${N}`,headers:Z,fetch:Y.fetch,extraBody:Y.extraBody}),V=(q,L={})=>new p38(q,L,{provider:"openrouter.image",url:({path:N})=>`${W}${N}`,headers:Z,fetch:Y.fetch,extraBody:Y.extraBody}),z=(q,L)=>{if(new.target)throw Error("The OpenRouter model function cannot be called with the new keyword.");if(q==="openai/gpt-3.5-turbo-instruct")return H(q,L);return Q(q,L)},U=(q,L)=>z(q,L);return U.languageModel=z,U.chat=Q,U.completion=H,U.textEmbeddingModel=$,U.embedding=$,U.imageModel=V,U}var hK8,bK8,xK8,RJ1,ZF6,QF6,KF6=(Y)=>{throw TypeError(Y)},M$6=(Y,X,J)=>(X in Y)?hK8(Y,X,{enumerable:!0,configurable:!0,writable:!0,value:J}):Y[X]=J,J6=(Y,X)=>{for(var J in X||(X={}))if(ZF6.call(X,J))M$6(Y,J,X[J]);if(RJ1){for(var J of RJ1(X))if(QF6.call(X,J))M$6(Y,J,X[J])}return Y},f9=(Y,X)=>bK8(Y,xK8(X)),tl=(Y,X)=>{var J={};for(var G in Y)if(ZF6.call(Y,G)&&X.indexOf(G)<0)J[G]=Y[G];if(Y!=null&&RJ1){for(var G of RJ1(Y))if(X.indexOf(G)<0&&QF6.call(Y,G))J[G]=Y[G]}return J},gK8=(Y,X,J)=>X.has(Y)||KF6("Cannot "+J),A$6=(Y,X,J)=>(gK8(Y,X,"read from private field"),J?J.call(Y):X.get(Y)),uK8=(Y,X,J)=>X.has(Y)?KF6("Cannot add the same private member more than once"):X instanceof WeakSet?X.add(Y):X.set(Y,J),HF6="vercel.ai.error",mK8,P$6,E$6,kY,$F6="AI_APICallError",FF6,lK8,T$6,R$6,F$,VF6="AI_EmptyResponseBodyError",zF6,dK8,C$6,I$6,cK8,qF6="AI_InvalidArgumentError",LF6,pK8,j$6,S$6,NF6,OF6="AI_InvalidPromptError",BF6,nK8,_$6,k$6,iK8,DF6="AI_InvalidResponseDataError",wF6,aK8,v$6,f$6,sl,MF6="AI_JSONParseError",AF6,rK8,y$6,h$6,CJ1,PF6="AI_LoadAPIKeyError",EF6,oK8,b$6,x$6,AJ1,TF6="AI_LoadSettingError",RF6,sK8,g$6,u$6,ihY,CF6="AI_NoContentGeneratedError",IF6,tK8,m$6,l$6,Dx1,jF6="AI_NoSuchModelError",SF6,eK8,d$6,c$6,ahY,_F6="AI_TooManyEmbeddingValuesForCallError",kF6,YH8,p$6,n$6,rhY,vF6="AI_TypeValidationError",fF6,XH8,i$6,a$6,el,yF6="AI_UnsupportedFunctionalityError",hF6,JH8,r$6,o$6,Eq,s$6,ZH8,QH8,ehY,bF6="AI_DownloadError",xF6,HH8,t$6,e$6,YbY,$H8=({prefix:Y,size:X=16,alphabet:J="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",separator:G="-"}={})=>{let W=()=>{let K=J.length,Z=Array(X);for(let Q=0;Q<X;Q++)Z[Q]=J[Math.random()*K|0];return Z.join("")};if(Y==null)return W;if(J.includes(G))throw new NF6({argument:"separator",message:`The separator "${G}" must not be part of the alphabet "${J}".`});return()=>`${Y}${G}${W()}`},$$,FH8,LH8="4.0.1",OH8,BH8,wH8,XF6,MH8=(Y)=>typeof Y==="string"?f9(J6({},XF6),{name:Y}):J6(J6({},XF6),Y),TH8=(Y,X)=>{return BY(Y.innerType._def,X)},RH8=(Y)=>{let X={type:"integer",format:"unix-time"};for(let J of Y.checks)switch(J.kind){case"min":X.minimum=J.value;break;case"max":X.maximum=J.value;break}return X},SH8=(Y)=>{if("type"in Y&&Y.type==="string")return!1;return"allOf"in Y},Fx1=void 0,K$,vH8,Lx1,uH8=(Y,X)=>{let J=(Y.options instanceof Map?Array.from(Y.options.values()):Y.options).map((G,W)=>BY(G._def,f9(J6({},X),{currentPath:[...X.currentPath,"anyOf",`${W}`]}))).filter((G)=>!!G&&(!X.strictUnions||typeof G==="object"&&Object.keys(G).length>0));return J.length?{anyOf:J}:void 0},nH8=(Y,X)=>{var J;if(X.currentPath.toString()===((J=X.propertyPath)==null?void 0:J.toString()))return BY(Y.innerType._def,X);let G=BY(Y.innerType._def,f9(J6({},X),{currentPath:[...X.currentPath,"anyOf","1"]}));return G?{anyOf:[{not:oQ()},G]}:oQ()},iH8=(Y,X)=>{if(X.pipeStrategy==="input")return BY(Y.in._def,X);else if(X.pipeStrategy==="output")return BY(Y.out._def,X);let J=BY(Y.in._def,f9(J6({},X),{currentPath:[...X.currentPath,"allOf","0"]})),G=BY(Y.out._def,f9(J6({},X),{currentPath:[...X.currentPath,"allOf",J?"1":"0"]}));return{allOf:[J,G].filter((W)=>W!==void 0)}},eH8=(Y,X)=>{return BY(Y.innerType._def,X)},Y38=(Y,X,J)=>{switch(X){case g1.ZodString:return mF6(Y,J);case g1.ZodNumber:return lH8(Y);case g1.ZodObject:return dH8(Y,J);case g1.ZodBigInt:return PH8(Y);case g1.ZodBoolean:return EH8();case g1.ZodDate:return uF6(Y,J);case g1.ZodUndefined:return sH8();case g1.ZodNull:return xH8();case g1.ZodArray:return AH8(Y,J);case g1.ZodUnion:case g1.ZodDiscriminatedUnion:return gH8(Y,J);case g1.ZodIntersection:return _H8(Y,J);case g1.ZodTuple:return oH8(Y,J);case g1.ZodRecord:return lF6(Y,J);case g1.ZodLiteral:return kH8(Y);case g1.ZodEnum:return jH8(Y);case g1.ZodNativeEnum:return hH8(Y);case g1.ZodNullable:return mH8(Y,J);case g1.ZodOptional:return nH8(Y,J);case g1.ZodMap:return yH8(Y,J);case g1.ZodSet:return rH8(Y,J);case g1.ZodLazy:return()=>Y.getter()._def;case g1.ZodPromise:return aH8(Y,J);case g1.ZodNaN:case g1.ZodNever:return bH8();case g1.ZodEffects:return IH8(Y,J);case g1.ZodAny:return oQ();case g1.ZodUnknown:return tH8();case g1.ZodDefault:return CH8(Y,J);case g1.ZodBranded:return gF6(Y,J);case g1.ZodReadonly:return eH8(Y,J);case g1.ZodCatch:return TH8(Y,J);case g1.ZodPipeline:return iH8(Y,J);case g1.ZodFunction:case g1.ZodVoid:case g1.ZodSymbol:return;default:return((G)=>{return})(X)}},X38=(Y,X)=>{let J=0;for(;J<Y.length&&J<X.length;J++)if(Y[J]!==X[J])break;return[(Y.length-J).toString(),...X.slice(J)].join("/")},J38=(Y,X)=>{switch(X.$refStrategy){case"root":return{$ref:Y.path.join("/")};case"relative":return{$ref:X38(X.currentPath,Y.path)};case"none":case"seen":{if(Y.path.length<X.currentPath.length&&Y.path.every((J,G)=>X.currentPath[G]===J))return console.warn(`Recursive reference detected at ${X.currentPath.join("/")}! Defaulting to any`),oQ();return X.$refStrategy==="seen"?oQ():void 0}}},G38=(Y,X,J)=>{if(Y.description)J.description=Y.description;return J},W38=(Y)=>{let X=MH8(Y),J=X.name!==void 0?[...X.basePath,X.definitionPath,X.name]:X.basePath;return f9(J6({},X),{currentPath:J,propertyPath:void 0,seen:new Map(Object.entries(X.definitions).map(([G,W])=>[W._def,{def:W._def,path:[...X.basePath,X.definitionPath,G],jsonSchema:void 0}]))})},Z38=(Y,X)=>{var J;let G=W38(X),W=typeof X==="object"&&X.definitions?Object.entries(X.definitions).reduce(($,[V,z])=>{var U;return f9(J6({},$),{[V]:(U=BY(z._def,f9(J6({},G),{currentPath:[...G.basePath,G.definitionPath,V]}),!0))!=null?U:oQ()})},{}):void 0,K=typeof X==="string"?X:(X==null?void 0:X.nameStrategy)==="title"?void 0:X==null?void 0:X.name,Z=(J=BY(Y._def,K===void 0?G:f9(J6({},G),{currentPath:[...G.basePath,G.definitionPath,K]}),!1))!=null?J:oQ(),Q=typeof X==="object"&&X.name!==void 0&&X.nameStrategy==="title"?X.name:void 0;if(Q!==void 0)Z.title=Q;let H=K===void 0?W?f9(J6({},Z),{[G.definitionPath]:W}):Z:{$ref:[...G.$refStrategy==="relative"?[]:G.basePath,G.definitionPath,K].join("/"),[G.definitionPath]:f9(J6({},W),{[K]:Z})};return H.$schema="http://json-schema.org/draft-07/schema#",H},Nx1,N38=()=>globalThis.fetch,FS=async({url:Y,headers:X,body:J,failedResponseHandler:G,successfulResponseHandler:W,abortSignal:K,fetch:Z})=>O38({url:Y,headers:J6({"Content-Type":"application/json"},X),body:{content:JSON.stringify(J),values:J},failedResponseHandler:G,successfulResponseHandler:W,abortSignal:K,fetch:Z}),O38=async({url:Y,headers:X={},body:J,successfulResponseHandler:G,failedResponseHandler:W,abortSignal:K,fetch:Z=N38()})=>{try{let Q=await Z(Y,{method:"POST",headers:qH8(X,`ai-sdk/provider-utils/${LH8}`,zH8()),body:J.content,signal:K}),H=_J1(Q);if(!Q.ok){let $;try{$=await W({response:Q,url:Y,requestBodyValues:J.values})}catch(V){if(qx1(V)||F$.isInstance(V))throw V;throw new F$({message:"Failed to process error response",cause:V,statusCode:Q.status,url:Y,responseHeaders:H,requestBodyValues:J.values})}throw $.value}try{return await G({response:Q,url:Y,requestBodyValues:J.values})}catch($){if($ instanceof Error){if(qx1($)||F$.isInstance($))throw $}throw new F$({message:"Failed to process successful response",cause:$,statusCode:Q.status,url:Y,responseHeaders:H,requestBodyValues:J.values})}}catch(Q){throw VH8({error:Q,url:Y,requestBodyValues:J.values})}},B38=({errorSchema:Y,errorToMessage:X,isRetryable:J})=>async({response:G,url:W,requestBodyValues:K})=>{let Z=await G.text(),Q=_J1(G);if(Z.trim()==="")return{responseHeaders:Q,value:new F$({message:G.statusText,url:W,requestBodyValues:K,statusCode:G.status,responseHeaders:Q,responseBody:Z,isRetryable:J==null?void 0:J(G)})};try{let H=await q38({text:Z,schema:Y});return{responseHeaders:Q,value:new F$({message:X(H),url:W,requestBodyValues:K,statusCode:G.status,responseHeaders:Q,responseBody:Z,data:H,isRetryable:J==null?void 0:J(G,H)})}}catch(H){return{responseHeaders:Q,value:new F$({message:G.statusText,url:W,requestBodyValues:K,statusCode:G.status,responseHeaders:Q,responseBody:Z,isRetryable:J==null?void 0:J(G)})}}},pF6=(Y)=>async({response:X})=>{let J=_J1(X);if(X.body==null)throw new cK8({});return{responseHeaders:J,value:L38({stream:X.body,schema:Y})}},vJ1=(Y)=>async({response:X,url:J,requestBodyValues:G})=>{let W=await X.text(),K=await cF6({text:W,schema:Y}),Z=_J1(X);if(!K.success)throw new F$({message:"Invalid JSON response",cause:K.error,statusCode:X.status,responseHeaders:Z,responseBody:W,url:J,requestBodyValues:G});return{responseHeaders:Z,value:K.value,rawValue:K.rawValue}},nF6,Mx1,w38,M38,A38,Ax1,EJ1,Px1,JbY,fJ1,VS,iF6,Ex1,aF6,TJ1,T38=class{constructor(){uK8(this,TJ1,new Set)}upsert(Y){let X=this.getCanonicalKey(Y);if(X===null)return!1;if(A$6(this,TJ1).has(X))return!1;return A$6(this,TJ1).add(X),!0}getCanonicalKey(Y){switch(Y.type){case"reasoning.summary":return Y.summary;case"reasoning.encrypted":if(Y.id)return Y.id;return Y.data;case"reasoning.text":{if(Y.text)return Y.text;if(Y.signature)return Y.signature;return null}default:return null}}},R38,C38,QbY,v38,f38,sF6,tF6,y38,h38,b38=class{constructor(Y,X,J){this.specificationVersion="v3",this.provider="openrouter",this.defaultObjectGenerationMode="tool",this.supportsImageUrls=!0,this.supportedUrls={"image/*":[/^data:image\/[a-zA-Z]+;base64,/,/^https?:\/\/.+\.(jpg|jpeg|png|gif|webp)$/i],"application/*":[/^data:application\//,/^https?:\/\/.+$/]},this.modelId=Y,this.settings=X,this.config=J}getArgs({prompt:Y,maxOutputTokens:X,temperature:J,topP:G,frequencyPenalty:W,presencePenalty:K,seed:Z,stopSequences:Q,responseFormat:H,topK:$,tools:V,toolChoice:z}){var U;let q=J6(J6({model:this.modelId,models:this.settings.models,logit_bias:this.settings.logitBias,logprobs:this.settings.logprobs===!0||typeof this.settings.logprobs==="number"?!0:void 0,top_logprobs:typeof this.settings.logprobs==="number"?this.settings.logprobs:typeof this.settings.logprobs==="boolean"?this.settings.logprobs?0:void 0:void 0,user:this.settings.user,parallel_tool_calls:this.settings.parallelToolCalls,max_tokens:X,temperature:J,top_p:G,frequency_penalty:W,presence_penalty:K,seed:Z,stop:Q,response_format:(H==null?void 0:H.type)==="json"?H.schema!=null?{type:"json_schema",json_schema:J6({schema:H.schema,strict:!0,name:(U=H.name)!=null?U:"response"},H.description&&{description:H.description})}:{type:"json_object"}:void 0,top_k:$,messages:j38(Y),include_reasoning:this.settings.includeReasoning,reasoning:this.settings.reasoning,usage:this.settings.usage,plugins:this.settings.plugins,web_search_options:this.settings.web_search_options,provider:this.settings.provider,debug:this.settings.debug,cache_control:this.settings.cache_control},this.config.extraBody),this.settings.extraBody);if(V&&V.length>0){let L=V.filter((N)=>N.type==="function").map((N)=>({type:"function",function:{name:N.name,description:N.description,parameters:N.inputSchema}}));return f9(J6({},q),{tools:L,tool_choice:z?k38(z):void 0})}return q}async doGenerate(Y){var X,J,G,W,K,Z,Q,H,$,V,z,U,q,L,N,M,P,R,I,T,E,j;let g=(Y.providerOptions||{}).openrouter||{},{cacheControl:f}=g,y=tl(g,["cacheControl"]),a=J6(J6(J6({},this.getArgs(Y)),y),f!=null&&!("cache_control"in y)?{cache_control:f}:{}),{value:c,responseHeaders:m}=await FS({url:this.config.url({path:"/chat/completions",modelId:this.modelId}),headers:$S(this.config.headers(),Y.headers),body:a,failedResponseHandler:VS,successfulResponseHandler:vJ1(y38),abortSignal:Y.abortSignal,fetch:this.config.fetch});if("error"in c){let Q1=c.error;throw new F$({message:Q1.message,url:this.config.url({path:"/chat/completions",modelId:this.modelId}),requestBodyValues:a,statusCode:200,responseHeaders:m,data:Q1})}let i=c,H1=i.choices[0];if(!H1)throw new Dx1({message:"No choice in response"});let G1=i.usage?IJ1(i.usage):rF6(),D1=(X=H1.message.reasoning_details)!=null?X:[],M1=D1.length>0?D1.map((Q1)=>{switch(Q1.type){case"reasoning.text":{if(Q1.text)return{type:"reasoning",text:Q1.text,providerMetadata:{openrouter:{reasoning_details:[Q1]}}};break}case"reasoning.summary":{if(Q1.summary)return{type:"reasoning",text:Q1.summary,providerMetadata:{openrouter:{reasoning_details:[Q1]}}};break}case"reasoning.encrypted":{if(Q1.data)return{type:"reasoning",text:"[REDACTED]",providerMetadata:{openrouter:{reasoning_details:[Q1]}}};break}default:}return null}).filter((Q1)=>Q1!==null):H1.message.reasoning?[{type:"reasoning",text:H1.message.reasoning}]:[],P1=[];if(P1.push(...M1),H1.message.content)P1.push({type:"text",text:H1.message.content});if(H1.message.tool_calls){let Q1=!1;for(let r1 of H1.message.tool_calls)P1.push({type:"tool-call",toolCallId:(J=r1.id)!=null?J:$$(),toolName:r1.function.name,input:(G=r1.function.arguments)!=null?G:"{}",providerMetadata:!Q1?{openrouter:{reasoning_details:D1}}:void 0}),Q1=!0}if(H1.message.images)for(let Q1 of H1.message.images)P1.push({type:"file",mediaType:GF6(Q1.image_url.url,"image/jpeg"),data:SJ1(Q1.image_url.url)});if(H1.message.annotations){for(let Q1 of H1.message.annotations)if(Q1.type==="url_citation")P1.push({type:"source",sourceType:"url",id:Q1.url_citation.url,url:Q1.url_citation.url,title:(W=Q1.url_citation.title)!=null?W:"",providerMetadata:{openrouter:{content:(K=Q1.url_citation.content)!=null?K:"",startIndex:(Z=Q1.url_citation.start_index)!=null?Z:0,endIndex:(Q=Q1.url_citation.end_index)!=null?Q:0}}})}let v1=(H=H1.message.annotations)==null?void 0:H.filter((Q1)=>Q1.type==="file"),h1=H1.message.tool_calls&&H1.message.tool_calls.length>0,Z0=D1.some((Q1)=>Q1.type==="reasoning.encrypted"&&Q1.data),y1=h1&&Z0&&H1.finish_reason==="stop"?WB("tool-calls",($=H1.finish_reason)!=null?$:void 0):jJ1(H1.finish_reason);return{content:P1,finishReason:y1,usage:G1,warnings:[],providerMetadata:{openrouter:Ex1.parse({provider:(V=i.provider)!=null?V:"",reasoning_details:(z=H1.message.reasoning_details)!=null?z:[],annotations:v1&&v1.length>0?v1:void 0,usage:J6(J6(J6(J6({promptTokens:(U=G1.inputTokens.total)!=null?U:0,completionTokens:(q=G1.outputTokens.total)!=null?q:0,totalTokens:((L=G1.inputTokens.total)!=null?L:0)+((N=G1.outputTokens.total)!=null?N:0)},((M=i.usage)==null?void 0:M.cost)!=null?{cost:i.usage.cost}:{}),((R=(P=i.usage)==null?void 0:P.prompt_tokens_details)==null?void 0:R.cached_tokens)!=null?{promptTokensDetails:{cachedTokens:i.usage.prompt_tokens_details.cached_tokens}}:{}),((T=(I=i.usage)==null?void 0:I.completion_tokens_details)==null?void 0:T.reasoning_tokens)!=null?{completionTokensDetails:{reasoningTokens:i.usage.completion_tokens_details.reasoning_tokens}}:{}),((j=(E=i.usage)==null?void 0:E.cost_details)==null?void 0:j.upstream_inference_cost)!=null?{costDetails:{upstreamInferenceCost:i.usage.cost_details.upstream_inference_cost}}:{})})},request:{body:a},response:{id:i.id,modelId:i.model,headers:m}}}async doStream(Y){var X;let W=(Y.providerOptions||{}).openrouter||{},{cacheControl:K}=W,Z=tl(W,["cacheControl"]),Q=J6(J6(J6({},this.getArgs(Y)),Z),K!=null&&!("cache_control"in Z)?{cache_control:K}:{}),{value:H,responseHeaders:$}=await FS({url:this.config.url({path:"/chat/completions",modelId:this.modelId}),headers:$S(this.config.headers(),Y.headers),body:f9(J6({},Q),{stream:!0,stream_options:this.config.compatibility==="strict"?J6({include_usage:!0},((X=this.settings.usage)==null?void 0:X.include)?{include_usage:!0}:{}):void 0}),failedResponseHandler:VS,successfulResponseHandler:pF6(h38),abortSignal:Y.abortSignal,fetch:this.config.fetch}),V=[],z=WB("other"),U={inputTokens:{total:void 0,noCache:void 0,cacheRead:void 0,cacheWrite:void 0},outputTokens:{total:void 0,text:void 0,reasoning:void 0},raw:void 0},q={},L,N=[],M=!1,P=[],R=!1,I=!1,T,E,j,v;return{stream:H.pipeThrough(new TransformStream({transform(k,g){var f,y,a,c,m,i,H1,G1,D1,M1,P1,v1,h1,Z0,d1,y1,Q1,r1,w0,q0,u1;if(Y.includeRawChunks)g.enqueue({type:"raw",rawValue:k.rawValue});if(!k.success){z=WB("error"),g.enqueue({type:"error",error:k.error});return}let A1=k.value;if("error"in A1){z=WB("error"),g.enqueue({type:"error",error:A1.error});return}if(A1.provider)v=A1.provider;if(A1.id)j=A1.id,g.enqueue({type:"response-metadata",id:A1.id});if(A1.model)g.enqueue({type:"response-metadata",modelId:A1.model});if(A1.usage!=null){let z1=IJ1(A1.usage);Object.assign(U.inputTokens,z1.inputTokens),Object.assign(U.outputTokens,z1.outputTokens),L=A1.usage;let s1=(f=A1.usage.prompt_tokens)!=null?f:0,m1=(y=A1.usage.completion_tokens)!=null?y:0;if(q.promptTokens=s1,A1.usage.prompt_tokens_details)q.promptTokensDetails={cachedTokens:(a=A1.usage.prompt_tokens_details.cached_tokens)!=null?a:0};if(q.completionTokens=m1,A1.usage.completion_tokens_details)q.completionTokensDetails={reasoningTokens:(c=A1.usage.completion_tokens_details.reasoning_tokens)!=null?c:0};if(A1.usage.cost!=null)q.cost=A1.usage.cost;q.totalTokens=A1.usage.total_tokens;let a1=(m=A1.usage.cost_details)==null?void 0:m.upstream_inference_cost;if(a1!=null)q.costDetails={upstreamInferenceCost:a1}}let U1=A1.choices[0];if((U1==null?void 0:U1.finish_reason)!=null)z=jJ1(U1.finish_reason);if((U1==null?void 0:U1.delta)==null)return;let K1=U1.delta,B1=(z1,s1)=>{if(!I)E=j||$$(),g.enqueue({providerMetadata:s1,type:"reasoning-start",id:E}),I=!0;g.enqueue({providerMetadata:s1,type:"reasoning-delta",delta:z1,id:E||$$()})};if(K1.reasoning_details&&K1.reasoning_details.length>0){for(let s1 of K1.reasoning_details)if(s1.type==="reasoning.text"){let m1=N[N.length-1];if((m1==null?void 0:m1.type)==="reasoning.text")m1.text=(m1.text||"")+(s1.text||""),m1.signature=m1.signature||s1.signature,m1.format=m1.format||s1.format;else N.push(J6({},s1))}else N.push(s1);let z1={openrouter:{reasoning_details:N.map((s1)=>J6({},s1))}};for(let s1 of K1.reasoning_details)switch(s1.type){case"reasoning.text":{B1(s1.text||"",z1);break}case"reasoning.encrypted":{if(s1.data)B1("[REDACTED]",z1);break}case"reasoning.summary":{if(s1.summary)B1(s1.summary,z1);break}default:break}}else if(K1.reasoning)B1(K1.reasoning);if(K1.content){if(I&&!R)g.enqueue({type:"reasoning-end",id:E||$$(),providerMetadata:N.length>0?{openrouter:{reasoning_details:N}}:void 0}),I=!1;if(!R)T=j||$$(),g.enqueue({type:"text-start",id:T}),R=!0;g.enqueue({type:"text-delta",delta:K1.content,id:T||$$()})}if(K1.annotations){for(let z1 of K1.annotations)if(z1.type==="url_citation")g.enqueue({type:"source",sourceType:"url",id:z1.url_citation.url,url:z1.url_citation.url,title:(i=z1.url_citation.title)!=null?i:"",providerMetadata:{openrouter:{content:(H1=z1.url_citation.content)!=null?H1:"",startIndex:(G1=z1.url_citation.start_index)!=null?G1:0,endIndex:(D1=z1.url_citation.end_index)!=null?D1:0}}});else if(z1.type==="file"){let s1=z1.file;if(s1&&typeof s1==="object"&&"hash"in s1&&"name"in s1)P.push(z1)}}if(K1.tool_calls!=null)for(let z1 of K1.tool_calls){let s1=(M1=z1.index)!=null?M1:V.length-1;if(V[s1]==null){if(z1.type!=="function")throw new sl({data:z1,message:"Expected 'function' type."});if(z1.id==null)throw new sl({data:z1,message:"Expected 'id' to be a string."});if(((P1=z1.function)==null?void 0:P1.name)==null)throw new sl({data:z1,message:"Expected 'function.name' to be a string."});V[s1]={id:z1.id,type:"function",function:{name:z1.function.name,arguments:(v1=z1.function.arguments)!=null?v1:""},inputStarted:!1,sent:!1};let a1=V[s1];if(a1==null)throw new sl({data:{index:s1,toolCallsLength:V.length},message:`Tool call at index ${s1} is missing after creation.`});if(((h1=a1.function)==null?void 0:h1.name)!=null&&((Z0=a1.function)==null?void 0:Z0.arguments)!=null&&zx1(a1.function.arguments))a1.inputStarted=!0,g.enqueue({type:"tool-input-start",id:a1.id,toolName:a1.function.name}),g.enqueue({type:"tool-input-delta",id:a1.id,delta:a1.function.arguments}),g.enqueue({type:"tool-input-end",id:a1.id}),g.enqueue({type:"tool-call",toolCallId:a1.id,toolName:a1.function.name,input:a1.function.arguments,providerMetadata:!M?{openrouter:{reasoning_details:N}}:void 0}),M=!0,a1.sent=!0;continue}let m1=V[s1];if(m1==null)throw new sl({data:{index:s1,toolCallsLength:V.length,toolCallDelta:z1},message:`Tool call at index ${s1} is missing during merge.`});if(!m1.inputStarted)m1.inputStarted=!0,g.enqueue({type:"tool-input-start",id:m1.id,toolName:m1.function.name});if(((d1=z1.function)==null?void 0:d1.arguments)!=null)m1.function.arguments+=(Q1=(y1=z1.function)==null?void 0:y1.arguments)!=null?Q1:"";if(g.enqueue({type:"tool-input-delta",id:m1.id,delta:(r1=z1.function.arguments)!=null?r1:""}),((w0=m1.function)==null?void 0:w0.name)!=null&&((q0=m1.function)==null?void 0:q0.arguments)!=null&&zx1(m1.function.arguments))g.enqueue({type:"tool-call",toolCallId:(u1=m1.id)!=null?u1:$$(),toolName:m1.function.name,input:m1.function.arguments,providerMetadata:!M?{openrouter:{reasoning_details:N}}:void 0}),M=!0,m1.sent=!0}if(K1.images!=null)for(let z1 of K1.images)g.enqueue({type:"file",mediaType:GF6(z1.image_url.url,"image/jpeg"),data:SJ1(z1.image_url.url)})},flush(k){var g;let f=V.length>0,y=N.some((c)=>c.type==="reasoning.encrypted"&&c.data);if(f&&y&&z.unified==="stop")z=WB("tool-calls",z.raw);if(z.unified==="tool-calls"){for(let c of V)if(c&&!c.sent)k.enqueue({type:"tool-call",toolCallId:(g=c.id)!=null?g:$$(),toolName:c.function.name,input:zx1(c.function.arguments)?c.function.arguments:"{}",providerMetadata:!M?{openrouter:{reasoning_details:N}}:void 0}),M=!0,c.sent=!0}if(I)k.enqueue({type:"reasoning-end",id:E||$$(),providerMetadata:N.length>0?{openrouter:{reasoning_details:N}}:void 0});if(R)k.enqueue({type:"text-end",id:T||$$()});let a={usage:q};if(v!==void 0)a.provider=v;if(N.length>0)a.reasoning_details=N;if(P.length>0)a.annotations=P;U.raw=L,k.enqueue({type:"finish",finishReason:z,usage:U,providerMetadata:{openrouter:a}})}})),warnings:[],request:{body:Q},response:{headers:$}}}},WF6,g38=class{constructor(Y,X,J){this.specificationVersion="v3",this.provider="openrouter",this.supportsImageUrls=!0,this.supportedUrls={"image/*":[/^data:image\/[a-zA-Z]+;base64,/,/^https?:\/\/.+\.(jpg|jpeg|png|gif|webp)$/i],"text/*":[/^data:text\//,/^https?:\/\/.+$/],"application/*":[/^data:application\//,/^https?:\/\/.+$/]},this.defaultObjectGenerationMode=void 0,this.modelId=Y,this.settings=X,this.config=J}getArgs({prompt:Y,maxOutputTokens:X,temperature:J,topP:G,frequencyPenalty:W,presencePenalty:K,seed:Z,responseFormat:Q,topK:H,stopSequences:$,tools:V,toolChoice:z}){let{prompt:U}=x38({prompt:Y,inputFormat:"prompt"});if(V==null?void 0:V.length)throw new Eq({functionality:"tools"});if(z)throw new Eq({functionality:"toolChoice"});return J6(J6({model:this.modelId,models:this.settings.models,logit_bias:this.settings.logitBias,logprobs:typeof this.settings.logprobs==="number"?this.settings.logprobs:typeof this.settings.logprobs==="boolean"?this.settings.logprobs?0:void 0:void 0,suffix:this.settings.suffix,user:this.settings.user,max_tokens:X,temperature:J,top_p:G,frequency_penalty:W,presence_penalty:K,seed:Z,stop:$,response_format:Q,top_k:H,prompt:U,include_reasoning:this.settings.includeReasoning,reasoning:this.settings.reasoning},this.config.extraBody),this.settings.extraBody)}async doGenerate(Y){var X,J,G,W,K,Z,Q,H,$,V,z,U,q,L,N,M,P;let I=(Y.providerOptions||{}).openrouter||{},T=J6(J6({},this.getArgs(Y)),I),{value:E,responseHeaders:j}=await FS({url:this.config.url({path:"/completions",modelId:this.modelId}),headers:$S(this.config.headers(),Y.headers),body:T,failedResponseHandler:VS,successfulResponseHandler:vJ1(WF6),abortSignal:Y.abortSignal,fetch:this.config.fetch});if("error"in E){let k=E.error;throw new F$({message:k.message,url:this.config.url({path:"/completions",modelId:this.modelId}),requestBodyValues:T,statusCode:200,responseHeaders:j,data:k})}let v=E.choices[0];if(!v)throw new Dx1({message:"No choice in OpenRouter completion response"});return{content:[{type:"text",text:(X=v.text)!=null?X:""}],finishReason:jJ1(v.finish_reason),usage:E.usage?IJ1(E.usage):rF6(),warnings:[],providerMetadata:{openrouter:Ex1.parse({provider:(J=E.provider)!=null?J:"",usage:J6(J6(J6(J6({promptTokens:(W=(G=E.usage)==null?void 0:G.prompt_tokens)!=null?W:0,completionTokens:(Z=(K=E.usage)==null?void 0:K.completion_tokens)!=null?Z:0,totalTokens:((H=(Q=E.usage)==null?void 0:Q.prompt_tokens)!=null?H:0)+((V=($=E.usage)==null?void 0:$.completion_tokens)!=null?V:0)},((z=E.usage)==null?void 0:z.cost)!=null?{cost:E.usage.cost}:{}),((q=(U=E.usage)==null?void 0:U.prompt_tokens_details)==null?void 0:q.cached_tokens)!=null?{promptTokensDetails:{cachedTokens:E.usage.prompt_tokens_details.cached_tokens}}:{}),((N=(L=E.usage)==null?void 0:L.completion_tokens_details)==null?void 0:N.reasoning_tokens)!=null?{completionTokensDetails:{reasoningTokens:E.usage.completion_tokens_details.reasoning_tokens}}:{}),((P=(M=E.usage)==null?void 0:M.cost_details)==null?void 0:P.upstream_inference_cost)!=null?{costDetails:{upstreamInferenceCost:E.usage.cost_details.upstream_inference_cost}}:{})})},response:{headers:j}}}async doStream(Y){let J=(Y.providerOptions||{}).openrouter||{},G=J6(J6({},this.getArgs(Y)),J),{value:W,responseHeaders:K}=await FS({url:this.config.url({path:"/completions",modelId:this.modelId}),headers:$S(this.config.headers(),Y.headers),body:f9(J6({},G),{stream:!0,stream_options:this.config.compatibility==="strict"?{include_usage:!0}:void 0}),failedResponseHandler:VS,successfulResponseHandler:pF6(WF6),abortSignal:Y.abortSignal,fetch:this.config.fetch}),Z=WB("other"),Q={inputTokens:{total:void 0,noCache:void 0,cacheRead:void 0,cacheWrite:void 0},outputTokens:{total:void 0,text:void 0,reasoning:void 0},raw:void 0},H={},$,V;return{stream:W.pipeThrough(new TransformStream({transform(z,U){var q,L,N,M,P;if(Y.includeRawChunks)U.enqueue({type:"raw",rawValue:z.rawValue});if(!z.success){Z=WB("error"),U.enqueue({type:"error",error:z.error});return}let R=z.value;if("error"in R){Z=WB("error"),U.enqueue({type:"error",error:R.error});return}if(R.provider)$=R.provider;if(R.usage!=null){let T=IJ1(R.usage);Object.assign(Q.inputTokens,T.inputTokens),Object.assign(Q.outputTokens,T.outputTokens),V=R.usage;let E=(q=R.usage.prompt_tokens)!=null?q:0,j=(L=R.usage.completion_tokens)!=null?L:0;if(H.promptTokens=E,R.usage.prompt_tokens_details)H.promptTokensDetails={cachedTokens:(N=R.usage.prompt_tokens_details.cached_tokens)!=null?N:0};if(H.completionTokens=j,R.usage.completion_tokens_details)H.completionTokensDetails={reasoningTokens:(M=R.usage.completion_tokens_details.reasoning_tokens)!=null?M:0};if(R.usage.cost!=null)H.cost=R.usage.cost;H.totalTokens=R.usage.total_tokens;let v=(P=R.usage.cost_details)==null?void 0:P.upstream_inference_cost;if(v!=null)H.costDetails={upstreamInferenceCost:v}}let I=R.choices[0];if((I==null?void 0:I.finish_reason)!=null)Z=jJ1(I.finish_reason);if((I==null?void 0:I.text)!=null)U.enqueue({type:"text-delta",delta:I.text,id:$$()})},flush(z){Q.raw=V;let U={usage:H};if($!==void 0)U.provider=$;z.enqueue({type:"finish",finishReason:Z,usage:Q,providerMetadata:{openrouter:U}})}})),response:{headers:K}}}},u38,m38,l38,d38=class{constructor(Y,X,J){this.specificationVersion="v3",this.provider="openrouter",this.maxEmbeddingsPerCall=void 0,this.supportsParallelCalls=!0,this.modelId=Y,this.settings=X,this.config=J}async doEmbed(Y){var X,J,G,W,K,Z;let{values:Q,abortSignal:H,headers:$}=Y,V=J6(J6({model:this.modelId,input:Q,user:this.settings.user,provider:this.settings.provider},this.config.extraBody),this.settings.extraBody),{value:z,responseHeaders:U}=await FS({url:this.config.url({path:"/embeddings",modelId:this.modelId}),headers:$S(this.config.headers(),$),body:V,failedResponseHandler:VS,successfulResponseHandler:vJ1(l38),abortSignal:H,fetch:this.config.fetch});return{embeddings:z.data.map((q)=>q.embedding),usage:z.usage?{tokens:z.usage.prompt_tokens}:void 0,providerMetadata:{openrouter:Ex1.parse({provider:(X=z.provider)!=null?X:"",usage:J6({promptTokens:(G=(J=z.usage)==null?void 0:J.prompt_tokens)!=null?G:0,completionTokens:0,totalTokens:(K=(W=z.usage)==null?void 0:W.total_tokens)!=null?K:0},((Z=z.usage)==null?void 0:Z.cost)!=null?{cost:z.usage.cost}:{})})},response:{headers:U,body:z},warnings:[]}}},c38,p38=class{constructor(Y,X,J){this.specificationVersion="v3",this.provider="openrouter",this.maxImagesPerCall=1,this.modelId=Y,this.settings=X,this.config=J}async doGenerate(Y){var X;let{prompt:J,n:G,size:W,aspectRatio:K,seed:Z,files:Q,mask:H,abortSignal:$,headers:V,providerOptions:z}=Y,U=(z==null?void 0:z.openrouter)||{},q=[];if(H!==void 0)throw new Eq({functionality:"image inpainting (mask parameter)"});if(G>1)q.push({type:"unsupported",feature:"n > 1",details:`OpenRouter image generation returns 1 image per call. Requested ${G} images.`});if(W!==void 0)q.push({type:"unsupported",feature:"size",details:"Use aspectRatio instead. Size parameter is not supported by OpenRouter image generation."});let L=K!==void 0?{aspect_ratio:K}:void 0,M=Q!==void 0&&Q.length>0?[...Q.map((v)=>i38(v)),{type:"text",text:J!=null?J:""}]:J!=null?J:"",P=J6(J6(J6(J6(J6(J6(J6({model:this.modelId,messages:[{role:"user",content:M}],modalities:["image","text"]},L!==void 0&&{image_config:L}),Z!==void 0&&{seed:Z}),this.settings.user!==void 0&&{user:this.settings.user}),this.settings.provider!==void 0&&{provider:this.settings.provider}),this.config.extraBody),this.settings.extraBody),U),{value:R,responseHeaders:I}=await FS({url:this.config.url({path:"/chat/completions",modelId:this.modelId}),headers:$S(this.config.headers(),V),body:P,failedResponseHandler:VS,successfulResponseHandler:vJ1(c38),abortSignal:$,fetch:this.config.fetch}),T=R.choices[0];if(!T)throw new Dx1({message:"No choice in response"});let E=[];if((X=T.message)==null?void 0:X.images)for(let v of T.message.images){let k=v.image_url.url;E.push(SJ1(k))}let j=R.usage?{inputTokens:R.usage.prompt_tokens,outputTokens:R.usage.completion_tokens,totalTokens:R.usage.total_tokens}:void 0;return{images:E,warnings:q,response:{timestamp:new Date,modelId:R.model,headers:I},usage:j}}},n38="image/png",t38="2.3.1",zbY;var eF6=A(()=>{Z6();xH();xH();xH();Z6();Z6();Z6();Z6();Z6();Z6();Z6();Z6();Z6();hK8=Object.defineProperty,bK8=Object.defineProperties,xK8=Object.getOwnPropertyDescriptors,RJ1=Object.getOwnPropertySymbols,ZF6=Object.prototype.hasOwnProperty,QF6=Object.prototype.propertyIsEnumerable,mK8=Symbol.for(HF6),kY=class Y extends(E$6=Error,P$6=mK8,E$6){constructor({name:X,message:J,cause:G}){super(J);this[P$6]=!0,this.name=X,this.cause=G}static isInstance(X){return Y.hasMarker(X,HF6)}static hasMarker(X,J){let G=Symbol.for(J);return X!=null&&typeof X==="object"&&G in X&&typeof X[G]==="boolean"&&X[G]===!0}},FF6=`vercel.ai.error.${$F6}`,lK8=Symbol.for(FF6),F$=class extends(R$6=kY,T$6=lK8,R$6){constructor({message:Y,url:X,requestBodyValues:J,statusCode:G,responseHeaders:W,responseBody:K,cause:Z,isRetryable:Q=G!=null&&(G===408||G===409||G===429||G>=500),data:H}){super({name:$F6,message:Y,cause:Z});this[T$6]=!0,this.url=X,this.requestBodyValues=J,this.statusCode=G,this.responseHeaders=W,this.responseBody=K,this.isRetryable=Q,this.data=H}static isInstance(Y){return kY.hasMarker(Y,FF6)}},zF6=`vercel.ai.error.${VF6}`,dK8=Symbol.for(zF6),cK8=class extends(I$6=kY,C$6=dK8,I$6){constructor({message:Y="Empty response body"}={}){super({name:VF6,message:Y});this[C$6]=!0}static isInstance(Y){return kY.hasMarker(Y,zF6)}};LF6=`vercel.ai.error.${qF6}`,pK8=Symbol.for(LF6),NF6=class extends(S$6=kY,j$6=pK8,S$6){constructor({message:Y,cause:X,argument:J}){super({name:qF6,message:Y,cause:X});this[j$6]=!0,this.argument=J}static isInstance(Y){return kY.hasMarker(Y,LF6)}},BF6=`vercel.ai.error.${OF6}`,nK8=Symbol.for(BF6),iK8=class extends(k$6=kY,_$6=nK8,k$6){constructor({prompt:Y,message:X,cause:J}){super({name:OF6,message:`Invalid prompt: ${X}`,cause:J});this[_$6]=!0,this.prompt=Y}static isInstance(Y){return kY.hasMarker(Y,BF6)}},wF6=`vercel.ai.error.${DF6}`,aK8=Symbol.for(wF6),sl=class extends(f$6=kY,v$6=aK8,f$6){constructor({data:Y,message:X=`Invalid response data: ${JSON.stringify(Y)}.`}){super({name:DF6,message:X});this[v$6]=!0,this.data=Y}static isInstance(Y){return kY.hasMarker(Y,wF6)}},AF6=`vercel.ai.error.${MF6}`,rK8=Symbol.for(AF6),CJ1=class extends(h$6=kY,y$6=rK8,h$6){constructor({text:Y,cause:X}){super({name:MF6,message:`JSON parsing failed: Text: ${Y}.
1588
1588
  Error message: ${UF6(X)}`,cause:X});this[y$6]=!0,this.text=Y}static isInstance(Y){return kY.hasMarker(Y,AF6)}},EF6=`vercel.ai.error.${PF6}`,oK8=Symbol.for(EF6),AJ1=class extends(x$6=kY,b$6=oK8,x$6){constructor({message:Y}){super({name:PF6,message:Y});this[b$6]=!0}static isInstance(Y){return kY.hasMarker(Y,EF6)}},RF6=`vercel.ai.error.${TF6}`,sK8=Symbol.for(RF6),ihY=class extends(u$6=kY,g$6=sK8,u$6){constructor({message:Y}){super({name:TF6,message:Y});this[g$6]=!0}static isInstance(Y){return kY.hasMarker(Y,RF6)}},IF6=`vercel.ai.error.${CF6}`,tK8=Symbol.for(IF6),Dx1=class extends(l$6=kY,m$6=tK8,l$6){constructor({message:Y="No content generated."}={}){super({name:CF6,message:Y});this[m$6]=!0}static isInstance(Y){return kY.hasMarker(Y,IF6)}},SF6=`vercel.ai.error.${jF6}`,eK8=Symbol.for(SF6),ahY=class extends(c$6=kY,d$6=eK8,c$6){constructor({errorName:Y=jF6,modelId:X,modelType:J,message:G=`No such ${J}: ${X}`}){super({name:Y,message:G});this[d$6]=!0,this.modelId=X,this.modelType=J}static isInstance(Y){return kY.hasMarker(Y,SF6)}},kF6=`vercel.ai.error.${_F6}`,YH8=Symbol.for(kF6),rhY=class extends(n$6=kY,p$6=YH8,n$6){constructor(Y){super({name:_F6,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[p$6]=!0,this.provider=Y.provider,this.modelId=Y.modelId,this.maxEmbeddingsPerCall=Y.maxEmbeddingsPerCall,this.values=Y.values}static isInstance(Y){return kY.hasMarker(Y,kF6)}},fF6=`vercel.ai.error.${vF6}`,XH8=Symbol.for(fF6),el=class Y extends(a$6=kY,i$6=XH8,a$6){constructor({value:X,cause:J}){super({name:vF6,message:`Type validation failed: Value: ${JSON.stringify(X)}.
1589
- Error message: ${UF6(J)}`,cause:J});this[i$6]=!0,this.value=X}static isInstance(X){return kY.hasMarker(X,fF6)}static wrap({value:X,cause:J}){return Y.isInstance(J)&&J.value===X?J:new Y({value:X,cause:J})}},hF6=`vercel.ai.error.${yF6}`,JH8=Symbol.for(hF6),Eq=class extends(o$6=kY,r$6=JH8,o$6){constructor({functionality:Y,message:X=`'${Y}' functionality not supported.`}){super({name:yF6,message:X});this[r$6]=!0,this.functionality=Y}static isInstance(Y){return kY.hasMarker(Y,hF6)}},s$6=class extends Error{constructor(Y,X){super(Y),this.name="ParseError",this.type=X.type,this.field=X.field,this.value=X.value,this.line=X.line}};ZH8=class extends TransformStream{constructor({onError:Y,onRetry:X,onComment:J}={}){let G;super({start(W){G=GH8({onEvent:(K)=>{W.enqueue(K)},onError(K){Y==="terminate"?W.error(K):typeof Y=="function"&&Y(K)},onRetry:X,onComment:J})},transform(W){G.feed(W)}})}};({btoa:QH8,atob:ehY}=globalThis);xF6=`vercel.ai.error.${bF6}`,HH8=Symbol.for(xF6),YbY=class extends(e$6=kY,t$6=HH8,e$6){constructor({url:Y,statusCode:X,statusText:J,cause:G,message:W=G==null?`Failed to download ${Y}: ${X} ${J}`:`Failed to download ${Y}: ${G}`}){super({name:bF6,message:W,cause:G});this[t$6]=!0,this.url=Y,this.statusCode=X,this.statusText=J}static isInstance(Y){return kY.hasMarker(Y,xF6)}},$$=$H8();FH8=["fetch failed","failed to fetch"];OH8=/"__proto__"\s*:/,BH8=/"constructor"\s*:/;wH8=Symbol("Let zodToJsonSchema decide on which parser to use"),XF6={name:void 0,$refStrategy:"root",basePath:["#"],effectStrategy:"input",pipeStrategy:"all",dateStrategy:"format:date-time",mapStrategy:"entries",removeAdditionalStrategy:"passthrough",allowedAdditionalProperties:!0,rejectedAdditionalProperties:!1,definitionPath:"definitions",strictUnions:!1,definitions:{},errorMessages:!1,patternStrategy:"escape",applyRegexFlags:!1,emailStrategy:"format:email",base64Strategy:"contentEncoding:base64",nameStrategy:"ref"};K$={cuid:/^[cC][^\s-]{8,}$/,cuid2:/^[0-9a-z]+$/,ulid:/^[0-9A-HJKMNP-TV-Z]{26}$/,email:/^(?!\.)(?!.*\.\.)([a-zA-Z0-9_'+\-\.]*)[a-zA-Z0-9_+-]@([a-zA-Z0-9][a-zA-Z0-9\-]*\.)+[a-zA-Z]{2,}$/,emoji:()=>{if(Fx1===void 0)Fx1=RegExp("^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$","u");return Fx1},uuid:/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/,ipv4:/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,ipv4Cidr:/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,ipv6:/^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/,ipv6Cidr:/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,base64:/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,base64url:/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,nanoid:/^[a-zA-Z0-9_-]{21}$/,jwt:/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/};vH8=new Set("ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789");Lx1={ZodString:"string",ZodNumber:"number",ZodBigInt:"integer",ZodBoolean:"boolean",ZodNull:"null"};Nx1=Symbol.for("vercel.ai.schema");nF6=((Y)=>{return Y.Unknown="unknown",Y.OpenAIResponsesV1="openai-responses-v1",Y.XAIResponsesV1="xai-responses-v1",Y.AnthropicClaudeV1="anthropic-claude-v1",Y.GoogleGeminiV1="google-gemini-v1",Y})(nF6||{}),Mx1=F.object({id:F.string().nullish(),format:F.enum(nF6).nullish(),index:F.number().optional()}).loose(),w38=F.object({type:F.literal("reasoning.summary"),summary:F.string()}).extend(Mx1.shape),M38=F.object({type:F.literal("reasoning.encrypted"),data:F.string()}).extend(Mx1.shape),A38=F.object({type:F.literal("reasoning.text"),text:F.string().nullish(),signature:F.string().nullish()}).extend(Mx1.shape),Ax1=F.union([w38,M38,A38]),EJ1=F.union([Ax1,F.unknown().transform(()=>null)]),Px1=F.array(EJ1).transform((Y)=>Y.filter((X)=>!!X)),JbY=F.union([F.object({delta:F.object({reasoning_details:F.array(EJ1)})}).transform((Y)=>Y.delta.reasoning_details.filter(Ux1)),F.object({message:F.object({reasoning_details:F.array(EJ1)})}).transform((Y)=>Y.message.reasoning_details.filter(Ux1)),F.object({text:F.string(),reasoning_details:F.array(EJ1)}).transform((Y)=>Y.reasoning_details.filter(Ux1))]),fJ1=F.object({error:F.object({code:F.union([F.string(),F.number()]).nullable().optional().default(null),message:F.string(),type:F.string().nullable().optional().default(null),param:F.any().nullable().optional().default(null)}).passthrough()}).passthrough();VS=B38({errorSchema:fJ1,errorToMessage:P38}),iF6=F.object({type:F.literal("file"),file:F.object({hash:F.string(),name:F.string(),content:F.array(F.object({type:F.string(),text:F.string().optional()}).catchall(F.any())).optional()}).catchall(F.any())}).catchall(F.any()),Ex1=F.object({provider:F.string(),reasoning_details:F.array(Ax1).optional(),annotations:F.array(iF6).optional(),usage:F.object({promptTokens:F.number(),promptTokensDetails:F.object({cachedTokens:F.number()}).catchall(F.any()).optional(),completionTokens:F.number(),completionTokensDetails:F.object({reasoningTokens:F.number()}).catchall(F.any()).optional(),totalTokens:F.number(),cost:F.number().optional(),costDetails:F.object({upstreamInferenceCost:F.number()}).catchall(F.any()).optional()}).catchall(F.any())}).catchall(F.any()),aF6=F.object({openrouter:F.object({reasoning_details:F.array(Ax1).optional(),annotations:F.array(iF6).optional()}).optional()}).optional();TJ1=new WeakMap;R38=["wav","mp3","aiff","aac","ogg","flac","m4a","pcm16","pcm24"];C38={mpeg:"mp3",mp3:"mp3","x-wav":"wav",wave:"wav",wav:"wav",ogg:"ogg",vorbis:"ogg",aac:"aac","x-aac":"aac",m4a:"m4a","x-m4a":"m4a",mp4:"m4a",aiff:"aiff","x-aiff":"aiff",flac:"flac","x-flac":"flac",pcm16:"pcm16",pcm24:"pcm24"};QbY=F.union([F.literal("auto"),F.literal("none"),F.literal("required"),F.object({type:F.literal("function"),function:F.object({name:F.string()})})]);v38=F.object({type:F.literal("image_url"),image_url:F.object({url:F.string()}).passthrough()}).passthrough(),f38=F.union([v38,F.unknown().transform(()=>null)]),sF6=F.array(f38).transform((Y)=>Y.filter((X)=>!!X)),tF6=F.object({id:F.string().optional(),model:F.string().optional(),provider:F.string().optional(),usage:F.object({prompt_tokens:F.number(),prompt_tokens_details:F.object({cached_tokens:F.number(),cache_write_tokens:F.number().nullish()}).passthrough().nullish(),completion_tokens:F.number(),completion_tokens_details:F.object({reasoning_tokens:F.number()}).passthrough().nullish(),total_tokens:F.number(),cost:F.number().optional(),cost_details:F.object({upstream_inference_cost:F.number().nullish()}).passthrough().nullish()}).passthrough().nullish()}).passthrough(),y38=F.union([tF6.extend({choices:F.array(F.object({message:F.object({role:F.literal("assistant"),content:F.string().nullable().optional(),reasoning:F.string().nullable().optional(),reasoning_details:Px1.nullish(),images:sF6.nullish(),tool_calls:F.array(F.object({id:F.string().optional().nullable(),type:F.literal("function"),function:F.object({name:F.string(),arguments:F.string().optional()}).passthrough()}).passthrough()).optional(),annotations:F.array(F.union([F.object({type:F.literal("url_citation"),url_citation:F.object({url:F.string(),title:F.string().optional(),start_index:F.number().optional(),end_index:F.number().optional(),content:F.string().optional()}).passthrough()}).passthrough(),F.object({type:F.literal("file_annotation"),file_annotation:F.object({file_id:F.string(),quote:F.string().optional()}).passthrough()}).passthrough(),F.object({type:F.literal("file"),file:F.object({hash:F.string(),name:F.string(),content:F.array(F.object({type:F.string(),text:F.string().optional()}).passthrough()).optional()}).passthrough()}).passthrough()])).nullish()}).passthrough(),index:F.number().nullish(),logprobs:F.object({content:F.array(F.object({token:F.string(),logprob:F.number(),top_logprobs:F.array(F.object({token:F.string(),logprob:F.number()}).passthrough())}).passthrough()).nullable()}).passthrough().nullable().optional(),finish_reason:F.string().optional().nullable()}).passthrough())}),fJ1.extend({user_id:F.string().optional()})]),h38=F.union([tF6.extend({choices:F.array(F.object({delta:F.object({role:F.enum(["assistant"]).optional(),content:F.string().nullish(),reasoning:F.string().nullish().optional(),reasoning_details:Px1.nullish(),images:sF6.nullish(),tool_calls:F.array(F.object({index:F.number().nullish(),id:F.string().nullish(),type:F.literal("function").optional(),function:F.object({name:F.string().nullish(),arguments:F.string().nullish()}).passthrough()}).passthrough()).nullish(),annotations:F.array(F.union([F.object({type:F.literal("url_citation"),url_citation:F.object({url:F.string(),title:F.string().optional(),start_index:F.number().optional(),end_index:F.number().optional(),content:F.string().optional()}).passthrough()}).passthrough(),F.object({type:F.literal("file_annotation"),file_annotation:F.object({file_id:F.string(),quote:F.string().optional()}).passthrough()}).passthrough(),F.object({type:F.literal("file"),file:F.object({hash:F.string(),name:F.string(),content:F.array(F.object({type:F.string(),text:F.string().optional()}).passthrough()).optional()}).passthrough()}).passthrough()])).nullish()}).passthrough().nullish(),logprobs:F.object({content:F.array(F.object({token:F.string(),logprob:F.number(),top_logprobs:F.array(F.object({token:F.string(),logprob:F.number()}).passthrough())}).passthrough()).nullable()}).passthrough().nullish(),finish_reason:F.string().nullable().optional(),index:F.number().nullish()}).passthrough())}),fJ1]);WF6=F.union([F.object({id:F.string().optional(),model:F.string().optional(),provider:F.string().optional(),choices:F.array(F.object({text:F.string(),reasoning:F.string().nullish().optional(),reasoning_details:Px1.nullish(),finish_reason:F.string().nullish(),index:F.number().nullish(),logprobs:F.object({tokens:F.array(F.string()),token_logprobs:F.array(F.number()),top_logprobs:F.array(F.record(F.string(),F.number())).nullable()}).passthrough().nullable().optional()}).passthrough()),usage:F.object({prompt_tokens:F.number(),prompt_tokens_details:F.object({cached_tokens:F.number(),cache_write_tokens:F.number().nullish()}).passthrough().nullish(),completion_tokens:F.number(),completion_tokens_details:F.object({reasoning_tokens:F.number()}).passthrough().nullish(),total_tokens:F.number(),cost:F.number().optional(),cost_details:F.object({upstream_inference_cost:F.number().nullish()}).passthrough().nullish()}).passthrough().nullish()}).passthrough(),fJ1]),u38=F.object({prompt_tokens:F.number(),total_tokens:F.number(),cost:F.number().optional()}),m38=F.object({object:F.literal("embedding"),embedding:F.array(F.number()),index:F.number().optional()}),l38=F.object({id:F.string().optional(),object:F.literal("list"),data:F.array(m38),model:F.string(),provider:F.string().optional(),usage:u38.optional()}),c38=F.object({id:F.string().optional(),object:F.string().optional(),created:F.number().optional(),model:F.string(),choices:F.array(F.object({index:F.number(),message:F.object({role:F.string(),content:F.string().nullable().optional(),images:F.array(F.object({type:F.literal("image_url"),image_url:F.object({url:F.string()})}).passthrough()).optional()}).passthrough(),finish_reason:F.string().nullable().optional()}).passthrough()),usage:F.object({prompt_tokens:F.number(),completion_tokens:F.number(),total_tokens:F.number()}).passthrough().optional()}).passthrough();zbY=Rx1({compatibility:"strict"})});var e38="https://assets.decocache.com/decocms/b2e2f64f-6025-45f7-9e8c-3b3ebdd073d8/openrouter_logojpg.jpg",yJ1;var Cx1=A(()=>{eF6();yJ1={info:{id:"openrouter",name:"OpenRouter",description:"Unified API for multiple AI providers",logo:e38},supportedMethods:["oauth-pkce","api-key"],getOAuthUrl({callbackUrl:Y,codeChallenge:X,codeChallengeMethod:J}){return`https://openrouter.ai/auth?${new URLSearchParams({callback_url:Y,code_challenge:X,code_challenge_method:J})}`},async exchangeOAuthCode({code:Y,codeVerifier:X,codeChallengeMethod:J}){let G=await fetch("https://openrouter.ai/api/v1/auth/keys",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({code:Y,code_verifier:X,code_challenge_method:J}),signal:AbortSignal.timeout(30000)});if(!G.ok)throw Error(`OpenRouter OAuth exchange failed: ${G.status}`);let W=await G.json();return{apiKey:W.key,userId:W.user_id}},create(Y){let X=Rx1({apiKey:Y}),J={Authorization:`Bearer ${Y}`};return{info:this.info,aiSdk:X,async listModels(){let G=(Q)=>{return{providerId:"openrouter",modelId:Q.id,title:Q.name,description:Q.description??null,logo:null,capabilities:[...new Set([...Q.architecture.input_modalities,...Q.architecture.output_modalities,...Q.supported_parameters?.includes("tools")?["tools"]:[],...Q.supported_parameters?.includes("reasoning")?["reasoning"]:[]])],limits:{contextWindow:Q.context_length??0,maxOutputTokens:Q.top_provider.max_completion_tokens||null},costs:{input:Q.pricing.prompt??0,output:Q.pricing.completion??0}}},W=await fetch("https://openrouter.ai/api/v1/models",{headers:J,signal:AbortSignal.timeout(30000)});if(!W.ok)throw Error(`OpenRouter listModels failed: ${W.status}`);let{data:K}=await W.json();return K.map(G)}}}}});var hJ1,YV6;var XV6=A(()=>{Cx1();b5();hJ1=$6.DECO_AI_GATEWAY_URL??"https://ai-site.decocache.com",YV6={info:{id:"deco",name:"Deco AI Gateway",description:"Deco-managed keys with access to 100+ models",logo:"/logos/deco logo.svg"},supportedMethods:["oauth-pkce","api-key"],getOAuthUrl({callbackUrl:Y,codeChallenge:X,codeChallengeMethod:J,organizationId:G}){let W=new URLSearchParams({redirect_uri:Y,code_challenge:X,code_challenge_method:J,organization_id:G});return`${hJ1}/oauth/authorize?${W}`},async exchangeOAuthCode({code:Y,codeVerifier:X}){let J=await fetch(`${hJ1}/oauth/token`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({code:Y,code_verifier:X,grant_type:"authorization_code"}),signal:AbortSignal.timeout(30000)});if(!J.ok)throw Error(`Deco AI Gateway OAuth exchange failed: ${J.status}`);return{apiKey:(await J.json()).key}},async getTopUpUrl(Y,X,J="usd"){let G=await fetch(`${hJ1}/api/credits/topup`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${Y}`},body:JSON.stringify({amountCents:X,currency:J}),signal:AbortSignal.timeout(1e4)});if(!G.ok)throw Error(`Failed to create top-up checkout: ${G.status}`);return(await G.json()).url},async getCreditsBalance(Y,X){let J=await fetch(`${hJ1}/api/teams/${X}/balance`,{headers:{Authorization:`Bearer ${Y}`},signal:AbortSignal.timeout(1e4)});if(!J.ok)throw Error(`Failed to fetch credits balance: ${J.status}`);return{balanceCents:(await J.json()).balance_cents}},create(Y){return{...yJ1.create(Y),info:this.info}}}});var Y$8,_W;var ZB=A(()=>{Z$6();w$6();Cx1();XV6();b5();Y$8=$6.DECO_AI_GATEWAY_ENABLED,_W={...Y$8&&{deco:YV6},anthropic:W$6,google:D$6,openrouter:yJ1}});var Ix1;var JV6=A(()=>{o1();i0();ZB();Ix1=b1({name:"AI_PROVIDERS_LIST",description:"List all available AI providers that can be connected with an API key",inputSchema:d0.object({}),outputSchema:d0.object({providers:d0.array(d0.object({id:d0.string(),name:d0.string(),description:d0.string(),logo:d0.string().optional(),supportedMethods:d0.array(d0.enum(["api-key","oauth-pkce"])),supportsTopUp:d0.boolean().optional(),supportsCredits:d0.boolean().optional()}))}),handler:async(Y,X)=>{return G0(X),L0(X),await X.access.check(),{providers:Object.values(_W).filter((G)=>!!G).map((G)=>({...G.info,supportedMethods:G.supportedMethods,supportsTopUp:!!G.getTopUpUrl,supportsCredits:!!G.getCreditsBalance}))}}})});var jx1,bJ1;var xJ1=A(()=>{jx1=["owner","admin","user"],bJ1=["owner","admin"]});function X$8(Y){if(!Y)return;if(!("models"in Y))return;return Y.models??void 0}function GV6(Y,X){if(!Y)return!0;if(Y.includes("*:*"))return!0;return Y.some((J)=>J.startsWith(`${X}:`))}function MP(Y,X,J){if(!Y)return!0;return Y.includes("*:*")||Y.includes(`${X}:*`)||Y.includes(`${X}:${J}`)}function WV6(Y){if(!Y)return{allowAll:!0,models:{}};if(Y.includes("*:*"))return{allowAll:!0,models:{}};let X={};for(let J of Y){let G=J.indexOf(":");if(G===-1)continue;let W=J.slice(0,G),K=J.slice(G+1);if(!X[W])X[W]=[];X[W].push(K)}return{allowAll:!1,models:X}}async function Tq(Y,X,J){if(!J||bJ1.includes(J))return;let G=await Y.selectFrom("organizationRole").select(["permission"]).where("organizationId","=",X).where("role","=",J).executeTakeFirst();if(!G?.permission)return;try{let W=JSON.parse(G.permission);return X$8(W)}catch{return console.error(`[model-permissions] Failed to parse permissions for role: ${J}`),[]}}var Yd=A(()=>{xJ1()});var Sx1;var ZV6=A(()=>{o1();i0();Yd();Sx1=b1({name:"AI_PROVIDERS_LIST_MODELS",description:"List models available from an AI provider using a specific API key",inputSchema:d0.object({keyId:d0.string().describe("The provider key ID to use")}),outputSchema:d0.object({models:d0.array(d0.object({providerId:d0.string(),modelId:d0.string(),title:d0.string(),description:d0.string().nullish(),logo:d0.string().nullish(),capabilities:d0.array(d0.string()),limits:d0.object({contextWindow:d0.coerce.number(),maxOutputTokens:d0.coerce.number().nullable()}).nullish(),costs:d0.object({input:d0.coerce.number(),output:d0.coerce.number()}).nullish()}))}),handler:async(Y,X)=>{G0(X);let J=L0(X);await X.access.check();let G=await Tq(X.db,J.id,X.auth.user?.role);return{models:(await X.aiProviders.listModels(Y.keyId,J.id)).filter((Z)=>MP(G,Y.keyId,Z.modelId))}}})});var _x1;var QV6=A(()=>{o1();i0();ZB();_x1=b1({name:"AI_PROVIDERS_ACTIVE",description:"List AI providers that have at least one API key configured",inputSchema:d0.object({}),outputSchema:d0.object({providers:d0.array(d0.object({id:d0.string(),name:d0.string(),description:d0.string(),logo:d0.string().optional(),keyCount:d0.number()}))}),handler:async(Y,X)=>{G0(X);let J=L0(X);await X.access.check();let G=await X.storage.aiProviderKeys.list({organizationId:J.id}),W=new Map;for(let Z of G)W.set(Z.providerId,(W.get(Z.providerId)??0)+1);return{providers:[...W.entries()].flatMap(([Z,Q])=>{let H=_W[Z];if(!H)return console.warn(`AI provider "${Z}" has stored keys but is not in the registry; skipping.`),[];return[{...H.info,keyCount:Q}]})}}})});var AP=A(()=>{JY()});var kx1,vx1;var fx1=A(()=>{o1();i0();AP();kx1=d0.object({id:d0.string(),providerId:d0.string(),label:d0.string(),createdAt:d0.string()}),vx1=b1({name:"AI_PROVIDER_KEY_CREATE",description:"Store an API key for an AI provider",inputSchema:d0.object({providerId:d0.enum(pG),label:d0.string().min(1).max(100),apiKey:d0.string().min(1)}),outputSchema:kx1,handler:async(Y,X)=>{G0(X);let J=L0(X);await X.access.check();let G=await X.storage.aiProviderKeys.create({providerId:Y.providerId,label:Y.label,apiKey:Y.apiKey,organizationId:J.id,createdBy:X.auth.user.id});return{id:G.id,providerId:G.providerId,label:G.label,createdAt:G.createdAt}}})});var yx1;var KV6=A(()=>{o1();i0();yx1=b1({name:"AI_PROVIDER_KEY_DELETE",description:"Delete a stored AI provider API key",inputSchema:d0.object({keyId:d0.string().describe("The provider key ID to delete")}),outputSchema:d0.object({success:d0.boolean()}),handler:async(Y,X)=>{G0(X);let J=L0(X);return await X.access.check(),await X.storage.aiProviderKeys.delete(Y.keyId,J.id),{success:!0}}})});var hx1;var HV6=A(()=>{o1();i0();AP();Yd();hx1=b1({name:"AI_PROVIDER_KEY_LIST",description:"List stored API keys for AI providers (metadata only, no secrets)",inputSchema:d0.object({providerId:d0.enum(pG).optional()}),outputSchema:d0.object({keys:d0.array(d0.object({id:d0.string(),providerId:d0.string(),label:d0.string(),createdBy:d0.string(),createdAt:d0.string()}))}),handler:async(Y,X)=>{G0(X);let J=L0(X);await X.access.check();let[G,W]=await Promise.all([X.storage.aiProviderKeys.list({organizationId:J.id,providerId:Y.providerId}),Tq(X.db,J.id,X.auth.user?.role)]);return{keys:G.filter((Z)=>GV6(W,Z.id)).map(({organizationId:Z,...Q})=>Q)}}})});import{createHash as J$8,randomBytes as G$8}from"crypto";function $V6(){return G$8(32).toString("base64url")}function FV6(Y){return J$8("sha256").update(Y).digest("base64url")}var VV6=()=>{};var bx1;var zV6=A(()=>{o1();i0();AP();ZB();VV6();b5();bx1=b1({name:"AI_PROVIDER_OAUTH_URL",description:"Get the OAuth authorization URL for a provider that supports OAuth PKCE",inputSchema:d0.object({providerId:d0.enum(pG),callbackUrl:d0.string().url().refine((Y)=>{let X=$6.BASE_URL??`http://localhost:${$6.PORT}`;return new URL(Y).origin===new URL(X).origin},{message:"callbackUrl must be on the same origin as BASE_URL"})}),outputSchema:d0.object({url:d0.string(),stateToken:d0.string().describe("Opaque token \u2014 pass to AI_PROVIDER_OAUTH_EXCHANGE")}),handler:async(Y,X)=>{G0(X);let J=L0(X);await X.access.check();let G=_W[Y.providerId];if(!G)throw Error(`Unknown provider: ${Y.providerId}`);if(!G.supportedMethods.includes("oauth-pkce")||!G.getOAuthUrl)throw Error(`Provider ${Y.providerId} does not support OAuth PKCE`);let W=$V6(),K=FV6(W),Z=await X.storage.oauthPkceStates.create(W,J.id,X.auth.user.id),Q=new URL(Y.callbackUrl);Q.searchParams.set("state",Z);let H={callbackUrl:Q.toString(),codeChallenge:K,codeChallengeMethod:"S256",organizationId:J.id};return{url:G.getOAuthUrl(H),stateToken:Z}}})});var xx1;var UV6=A(()=>{o1();i0();AP();ZB();fx1();xx1=b1({name:"AI_PROVIDER_OAUTH_EXCHANGE",description:"Exchange an OAuth authorization code for an API key and store it",inputSchema:d0.object({providerId:d0.enum(pG),code:d0.string(),stateToken:d0.string().describe("The stateToken returned by AI_PROVIDER_OAUTH_URL"),label:d0.string().min(1).max(100).default("Connected via OAuth")}),outputSchema:kx1,handler:async(Y,X)=>{G0(X);let J=L0(X);await X.access.check();let G=_W[Y.providerId];if(!G)throw Error(`Unknown provider: ${Y.providerId}`);if(!G.supportedMethods.includes("oauth-pkce")||!G.exchangeOAuthCode)throw Error(`Provider ${Y.providerId} does not support OAuth PKCE`);let W=$9(X);if(!W)throw Error("Unable to determine user ID");let K=await X.storage.oauthPkceStates.consume(Y.stateToken,J.id,W),{apiKey:Z}=await G.exchangeOAuthCode({code:Y.code,codeVerifier:K,codeChallengeMethod:"S256"}),Q=await X.storage.aiProviderKeys.upsert({providerId:Y.providerId,label:Y.label,apiKey:Z,organizationId:J.id,createdBy:W});return{id:Q.id,providerId:Q.providerId,label:Q.label,createdAt:Q.createdAt}}})});var gx1;var qV6=A(()=>{o1();i0();AP();ZB();gx1=b1({name:"AI_PROVIDER_TOPUP_URL",description:"Get a checkout URL to top up credits for a provider that supports it (e.g. Deco AI Gateway)",inputSchema:d0.object({providerId:d0.enum(pG),keyId:d0.string().describe("The ID of the stored provider key to top up"),amountCents:d0.number().int().positive().describe("Amount in cents (e.g. 1000 = $10.00)"),currency:d0.enum(["usd","brl"]).default("usd")}),outputSchema:d0.object({url:d0.string().describe("Checkout URL \u2014 open in browser to complete payment")}),handler:async(Y,X)=>{G0(X);let J=L0(X);await X.access.check();let G=_W[Y.providerId];if(!G)throw Error(`Unknown provider: ${Y.providerId}`);if(!G.getTopUpUrl)throw Error(`Provider ${Y.providerId} does not support credit top-ups`);let{apiKey:W}=await X.storage.aiProviderKeys.resolve(Y.keyId,J.id);return{url:await G.getTopUpUrl(W,Y.amountCents,Y.currency)}}})});var ux1;var LV6=A(()=>{o1();i0();AP();ZB();j51();ux1=b1({name:"AI_PROVIDER_CREDITS",description:"Get the current credit balance for a provider (providers that support it, e.g. Deco AI Gateway)",inputSchema:d0.object({providerId:d0.enum(pG)}),outputSchema:d0.object({balanceCents:d0.number().describe("Remaining balance in cents (e.g. 1000 = $10.00)")}),handler:async(Y,X)=>{G0(X);let J=L0(X);await X.access.check();let G=$9(X);if(!G)throw Error("Unable to determine user ID");let W=_W[Y.providerId];if(!W)throw Error(`Unknown provider: ${Y.providerId}`);if(!W.getCreditsBalance)throw Error(`Provider ${Y.providerId} does not expose a credits balance`);let K=await iJ6(G);return W.getCreditsBalance(K,J.id)}})});var NV6=A(()=>{JV6();ZV6();QV6();fx1();KV6();HV6();zV6();UV6();qV6();LV6()});var BV6={};M6(BV6,{managementMCP:()=>mx1,ALL_TOOLS:()=>OV6});var Z$8,Q$8,OV6,mx1=async(Y)=>{let X=null;if(Y.organization){let W=await Y.storage.organizationSettings.get(Y.organization.id),K=await Y.storage.projects.list(Y.organization.id),Z=new Set(W?.enabled_plugins??[]);for(let Q of K)if(Q.enabledPlugins)for(let H of Q.enabledPlugins)Z.add(H);X=Z.size>0?[...Z]:null}let J=FV0(OV6,X),G=new wz({name:"mcp-mesh-management",version:"1.0.0"},{capabilities:{tools:{}}});for(let W of J){let K=W.inputSchema&&typeof W.inputSchema==="object"&&"shape"in W.inputSchema?W.inputSchema:F.object({}),Z=W.outputSchema&&typeof W.outputSchema==="object"&&"shape"in W.outputSchema?W.outputSchema:void 0,Q=K.shape,H=Z?.shape;G.registerTool(W.name,{description:W.description??"",inputSchema:Q,outputSchema:H,annotations:W.annotations,_meta:W._meta},async($)=>{Y.access.setToolName(W.name);try{let V=await W.execute($,Y);return{content:[{type:"text",text:JSON.stringify(V)}],structuredContent:V}}catch(V){return{content:[{type:"text",text:`Error: ${V.message}`}],isError:!0}}})}return G};var lx1=A(()=>{oR();rf();o1();LJ6();kJ6();eQ6();GK6();UK6();wK6();RK6();jK6();xK6();oK6();$H6();LH6();CH6();uH6();lH6();NV6();Z$8=[zh1,Uh1,qh1,Lh1,Nh1,Bh1,Dh1,wh1,Mh1,Ah1,Ph1,Ev1,jv1,Sv1,yy1,hy1,by1,py1,iy1,ay1,ry1,oy1,sy1,ty1,ey1,Yh1,Xh1,JK6,Jh1,Gh1,Zh1,Qh1,Kh1,Hh1,$h1,Fh1,Vh1,Uv1,Lv1,Nv1,qv1,xy1,gy1,uy1,my1,ly1,dy1,cy1,Jb1,Mv1,Av1,Pv1,uh1,mh1,lh1,dh1,ch1,ph1,yh1,hh1,bh1,xh1,gh1,nh1,ih1,ah1,rh1,oh1,eh1,Yb1,Xb1,Eh1,Th1,Rh1,Ch1,Ih1,jh1,Sh1,_h1,kh1,vh1,fh1,Ix1,Sx1,_x1,vx1,yx1,hx1,bx1,xx1,gx1,ux1],Q$8=VV0(),OV6=[...Z$8,...Q$8]});function K$8(Y){return[{permissions:{self:["*"]},getTools:async()=>{let{ALL_TOOLS:X}=await Promise.resolve().then(() => (lx1(),BV6));return X.map((J)=>{return{name:J.name,inputSchema:F.toJSONSchema(J.inputSchema,{unrepresentable:"any"}),outputSchema:J.outputSchema?F.toJSONSchema(J.outputSchema,{unrepresentable:"any"}):void 0,description:J.description}})},data:PU1(SQ(),Y)},{data:AU1()},{data:MU1(Y)}]}async function DV6(Y,X){try{let J=bQ(),G=new lA($6.ENCRYPTION_KEY),W=new Lm(J.db,G),K=new Nm(J.db),Z=K$8(Y);try{await K.create({organizationId:Y,slug:hH,name:cE,description:"Organization administration and settings",enabledPlugins:null,ui:null})}catch(Q){console.warn("Could not create org-admin project (may already exist):",Q)}await Promise.all(Z.map(async(Q)=>{let H=null;if(Q.permissions)H=(await SZ.api.createApiKey({body:{name:`${Q.data.app_name??crypto.randomUUID()}-mcp`,userId:X,permissions:Q.permissions,rateLimitEnabled:!1,metadata:{organization:{id:Y},purpose:"default-org-connections"}}}))?.key;let $=await CO({id:"pending",title:Q.data.title,connection_type:Q.data.connection_type,connection_url:Q.data.connection_url,connection_token:Q.data.connection_token,connection_headers:Q.data.connection_headers}).catch(()=>null),V=await Q.getTools?.()??$?.tools??null,z=$?.scopes?.length?$.scopes:null,U=Q.data.id?Q.data.id.startsWith(`${Y}_`)?Q.data.id:`${Y}_${Q.data.id}`:void 0;await W.create({...Q.data,id:U,tools:V,configuration_scopes:z,organization_id:Y,created_by:X,connection_token:Q.data.connection_token??H})}))}catch(J){console.error("Error creating default MCP connections:",J)}}var wV6=A(()=>{JY();pN();gA();N51();tk1();ek1();Bm();o1();b5();SO()});async function $$8(Y){let{user:X,token:J}=Y;if(!J?.idToken)return;let G;try{G=KY(J.idToken)}catch{return}let{preferred_username:W,upn:K}=G,Z=[W,K].filter(($)=>typeof $==="string"&&$.length>0&&$.toLowerCase()!==X.email.toLowerCase()).map(($)=>$.toLowerCase());if(Z.length===0)return;let{db:Q}=bQ(),H=await Q.selectFrom("user").selectAll().where("email","in",Z).where("id","!=",X.id).executeTakeFirst();if(!H)return;console.info(`[SSO] Merging duplicate user ${X.id} (${X.email}) into original ${H.id} (${H.email})`);try{await Q.transaction().execute(async($)=>{await k1`UPDATE "account" SET "userId" = ${H.id} WHERE "userId" = ${X.id}`.execute($),await k1`UPDATE "session" SET "userId" = ${H.id} WHERE "userId" = ${X.id}`.execute($),await k1`
1589
+ Error message: ${UF6(J)}`,cause:J});this[i$6]=!0,this.value=X}static isInstance(X){return kY.hasMarker(X,fF6)}static wrap({value:X,cause:J}){return Y.isInstance(J)&&J.value===X?J:new Y({value:X,cause:J})}},hF6=`vercel.ai.error.${yF6}`,JH8=Symbol.for(hF6),Eq=class extends(o$6=kY,r$6=JH8,o$6){constructor({functionality:Y,message:X=`'${Y}' functionality not supported.`}){super({name:yF6,message:X});this[r$6]=!0,this.functionality=Y}static isInstance(Y){return kY.hasMarker(Y,hF6)}},s$6=class extends Error{constructor(Y,X){super(Y),this.name="ParseError",this.type=X.type,this.field=X.field,this.value=X.value,this.line=X.line}};ZH8=class extends TransformStream{constructor({onError:Y,onRetry:X,onComment:J}={}){let G;super({start(W){G=GH8({onEvent:(K)=>{W.enqueue(K)},onError(K){Y==="terminate"?W.error(K):typeof Y=="function"&&Y(K)},onRetry:X,onComment:J})},transform(W){G.feed(W)}})}};({btoa:QH8,atob:ehY}=globalThis);xF6=`vercel.ai.error.${bF6}`,HH8=Symbol.for(xF6),YbY=class extends(e$6=kY,t$6=HH8,e$6){constructor({url:Y,statusCode:X,statusText:J,cause:G,message:W=G==null?`Failed to download ${Y}: ${X} ${J}`:`Failed to download ${Y}: ${G}`}){super({name:bF6,message:W,cause:G});this[t$6]=!0,this.url=Y,this.statusCode=X,this.statusText=J}static isInstance(Y){return kY.hasMarker(Y,xF6)}},$$=$H8();FH8=["fetch failed","failed to fetch"];OH8=/"__proto__"\s*:/,BH8=/"constructor"\s*:/;wH8=Symbol("Let zodToJsonSchema decide on which parser to use"),XF6={name:void 0,$refStrategy:"root",basePath:["#"],effectStrategy:"input",pipeStrategy:"all",dateStrategy:"format:date-time",mapStrategy:"entries",removeAdditionalStrategy:"passthrough",allowedAdditionalProperties:!0,rejectedAdditionalProperties:!1,definitionPath:"definitions",strictUnions:!1,definitions:{},errorMessages:!1,patternStrategy:"escape",applyRegexFlags:!1,emailStrategy:"format:email",base64Strategy:"contentEncoding:base64",nameStrategy:"ref"};K$={cuid:/^[cC][^\s-]{8,}$/,cuid2:/^[0-9a-z]+$/,ulid:/^[0-9A-HJKMNP-TV-Z]{26}$/,email:/^(?!\.)(?!.*\.\.)([a-zA-Z0-9_'+\-\.]*)[a-zA-Z0-9_+-]@([a-zA-Z0-9][a-zA-Z0-9\-]*\.)+[a-zA-Z]{2,}$/,emoji:()=>{if(Fx1===void 0)Fx1=RegExp("^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$","u");return Fx1},uuid:/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/,ipv4:/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,ipv4Cidr:/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,ipv6:/^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/,ipv6Cidr:/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,base64:/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,base64url:/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,nanoid:/^[a-zA-Z0-9_-]{21}$/,jwt:/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/};vH8=new Set("ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789");Lx1={ZodString:"string",ZodNumber:"number",ZodBigInt:"integer",ZodBoolean:"boolean",ZodNull:"null"};Nx1=Symbol.for("vercel.ai.schema");nF6=((Y)=>{return Y.Unknown="unknown",Y.OpenAIResponsesV1="openai-responses-v1",Y.XAIResponsesV1="xai-responses-v1",Y.AnthropicClaudeV1="anthropic-claude-v1",Y.GoogleGeminiV1="google-gemini-v1",Y})(nF6||{}),Mx1=F.object({id:F.string().nullish(),format:F.enum(nF6).nullish(),index:F.number().optional()}).loose(),w38=F.object({type:F.literal("reasoning.summary"),summary:F.string()}).extend(Mx1.shape),M38=F.object({type:F.literal("reasoning.encrypted"),data:F.string()}).extend(Mx1.shape),A38=F.object({type:F.literal("reasoning.text"),text:F.string().nullish(),signature:F.string().nullish()}).extend(Mx1.shape),Ax1=F.union([w38,M38,A38]),EJ1=F.union([Ax1,F.unknown().transform(()=>null)]),Px1=F.array(EJ1).transform((Y)=>Y.filter((X)=>!!X)),JbY=F.union([F.object({delta:F.object({reasoning_details:F.array(EJ1)})}).transform((Y)=>Y.delta.reasoning_details.filter(Ux1)),F.object({message:F.object({reasoning_details:F.array(EJ1)})}).transform((Y)=>Y.message.reasoning_details.filter(Ux1)),F.object({text:F.string(),reasoning_details:F.array(EJ1)}).transform((Y)=>Y.reasoning_details.filter(Ux1))]),fJ1=F.object({error:F.object({code:F.union([F.string(),F.number()]).nullable().optional().default(null),message:F.string(),type:F.string().nullable().optional().default(null),param:F.any().nullable().optional().default(null)}).passthrough()}).passthrough();VS=B38({errorSchema:fJ1,errorToMessage:P38}),iF6=F.object({type:F.literal("file"),file:F.object({hash:F.string(),name:F.string(),content:F.array(F.object({type:F.string(),text:F.string().optional()}).catchall(F.any())).optional()}).catchall(F.any())}).catchall(F.any()),Ex1=F.object({provider:F.string(),reasoning_details:F.array(Ax1).optional(),annotations:F.array(iF6).optional(),usage:F.object({promptTokens:F.number(),promptTokensDetails:F.object({cachedTokens:F.number()}).catchall(F.any()).optional(),completionTokens:F.number(),completionTokensDetails:F.object({reasoningTokens:F.number()}).catchall(F.any()).optional(),totalTokens:F.number(),cost:F.number().optional(),costDetails:F.object({upstreamInferenceCost:F.number()}).catchall(F.any()).optional()}).catchall(F.any())}).catchall(F.any()),aF6=F.object({openrouter:F.object({reasoning_details:F.array(Ax1).optional(),annotations:F.array(iF6).optional()}).optional()}).optional();TJ1=new WeakMap;R38=["wav","mp3","aiff","aac","ogg","flac","m4a","pcm16","pcm24"];C38={mpeg:"mp3",mp3:"mp3","x-wav":"wav",wave:"wav",wav:"wav",ogg:"ogg",vorbis:"ogg",aac:"aac","x-aac":"aac",m4a:"m4a","x-m4a":"m4a",mp4:"m4a",aiff:"aiff","x-aiff":"aiff",flac:"flac","x-flac":"flac",pcm16:"pcm16",pcm24:"pcm24"};QbY=F.union([F.literal("auto"),F.literal("none"),F.literal("required"),F.object({type:F.literal("function"),function:F.object({name:F.string()})})]);v38=F.object({type:F.literal("image_url"),image_url:F.object({url:F.string()}).passthrough()}).passthrough(),f38=F.union([v38,F.unknown().transform(()=>null)]),sF6=F.array(f38).transform((Y)=>Y.filter((X)=>!!X)),tF6=F.object({id:F.string().optional(),model:F.string().optional(),provider:F.string().optional(),usage:F.object({prompt_tokens:F.number(),prompt_tokens_details:F.object({cached_tokens:F.number(),cache_write_tokens:F.number().nullish()}).passthrough().nullish(),completion_tokens:F.number(),completion_tokens_details:F.object({reasoning_tokens:F.number()}).passthrough().nullish(),total_tokens:F.number(),cost:F.number().optional(),cost_details:F.object({upstream_inference_cost:F.number().nullish()}).passthrough().nullish()}).passthrough().nullish()}).passthrough(),y38=F.union([tF6.extend({choices:F.array(F.object({message:F.object({role:F.literal("assistant"),content:F.string().nullable().optional(),reasoning:F.string().nullable().optional(),reasoning_details:Px1.nullish(),images:sF6.nullish(),tool_calls:F.array(F.object({id:F.string().optional().nullable(),type:F.literal("function"),function:F.object({name:F.string(),arguments:F.string().optional()}).passthrough()}).passthrough()).optional(),annotations:F.array(F.union([F.object({type:F.literal("url_citation"),url_citation:F.object({url:F.string(),title:F.string().optional(),start_index:F.number().optional(),end_index:F.number().optional(),content:F.string().optional()}).passthrough()}).passthrough(),F.object({type:F.literal("file_annotation"),file_annotation:F.object({file_id:F.string(),quote:F.string().optional()}).passthrough()}).passthrough(),F.object({type:F.literal("file"),file:F.object({hash:F.string(),name:F.string(),content:F.array(F.object({type:F.string(),text:F.string().optional()}).passthrough()).optional()}).passthrough()}).passthrough()])).nullish()}).passthrough(),index:F.number().nullish(),logprobs:F.object({content:F.array(F.object({token:F.string(),logprob:F.number(),top_logprobs:F.array(F.object({token:F.string(),logprob:F.number()}).passthrough())}).passthrough()).nullable()}).passthrough().nullable().optional(),finish_reason:F.string().optional().nullable()}).passthrough())}),fJ1.extend({user_id:F.string().optional()})]),h38=F.union([tF6.extend({choices:F.array(F.object({delta:F.object({role:F.enum(["assistant"]).optional(),content:F.string().nullish(),reasoning:F.string().nullish().optional(),reasoning_details:Px1.nullish(),images:sF6.nullish(),tool_calls:F.array(F.object({index:F.number().nullish(),id:F.string().nullish(),type:F.literal("function").optional(),function:F.object({name:F.string().nullish(),arguments:F.string().nullish()}).passthrough()}).passthrough()).nullish(),annotations:F.array(F.union([F.object({type:F.literal("url_citation"),url_citation:F.object({url:F.string(),title:F.string().optional(),start_index:F.number().optional(),end_index:F.number().optional(),content:F.string().optional()}).passthrough()}).passthrough(),F.object({type:F.literal("file_annotation"),file_annotation:F.object({file_id:F.string(),quote:F.string().optional()}).passthrough()}).passthrough(),F.object({type:F.literal("file"),file:F.object({hash:F.string(),name:F.string(),content:F.array(F.object({type:F.string(),text:F.string().optional()}).passthrough()).optional()}).passthrough()}).passthrough()])).nullish()}).passthrough().nullish(),logprobs:F.object({content:F.array(F.object({token:F.string(),logprob:F.number(),top_logprobs:F.array(F.object({token:F.string(),logprob:F.number()}).passthrough())}).passthrough()).nullable()}).passthrough().nullish(),finish_reason:F.string().nullable().optional(),index:F.number().nullish()}).passthrough())}),fJ1]);WF6=F.union([F.object({id:F.string().optional(),model:F.string().optional(),provider:F.string().optional(),choices:F.array(F.object({text:F.string(),reasoning:F.string().nullish().optional(),reasoning_details:Px1.nullish(),finish_reason:F.string().nullish(),index:F.number().nullish(),logprobs:F.object({tokens:F.array(F.string()),token_logprobs:F.array(F.number()),top_logprobs:F.array(F.record(F.string(),F.number())).nullable()}).passthrough().nullable().optional()}).passthrough()),usage:F.object({prompt_tokens:F.number(),prompt_tokens_details:F.object({cached_tokens:F.number(),cache_write_tokens:F.number().nullish()}).passthrough().nullish(),completion_tokens:F.number(),completion_tokens_details:F.object({reasoning_tokens:F.number()}).passthrough().nullish(),total_tokens:F.number(),cost:F.number().optional(),cost_details:F.object({upstream_inference_cost:F.number().nullish()}).passthrough().nullish()}).passthrough().nullish()}).passthrough(),fJ1]),u38=F.object({prompt_tokens:F.number(),total_tokens:F.number(),cost:F.number().optional()}),m38=F.object({object:F.literal("embedding"),embedding:F.array(F.number()),index:F.number().optional()}),l38=F.object({id:F.string().optional(),object:F.literal("list"),data:F.array(m38),model:F.string(),provider:F.string().optional(),usage:u38.optional()}),c38=F.object({id:F.string().optional(),object:F.string().optional(),created:F.number().optional(),model:F.string(),choices:F.array(F.object({index:F.number(),message:F.object({role:F.string(),content:F.string().nullable().optional(),images:F.array(F.object({type:F.literal("image_url"),image_url:F.object({url:F.string()})}).passthrough()).optional()}).passthrough(),finish_reason:F.string().nullable().optional()}).passthrough()),usage:F.object({prompt_tokens:F.number(),completion_tokens:F.number(),total_tokens:F.number()}).passthrough().optional()}).passthrough();zbY=Rx1({compatibility:"strict"})});var e38="https://assets.decocache.com/decocms/b2e2f64f-6025-45f7-9e8c-3b3ebdd073d8/openrouter_logojpg.jpg",yJ1;var Cx1=A(()=>{eF6();yJ1={info:{id:"openrouter",name:"OpenRouter",description:"Unified API for multiple AI providers",logo:e38},supportedMethods:["oauth-pkce","api-key"],getOAuthUrl({callbackUrl:Y,codeChallenge:X,codeChallengeMethod:J}){return`https://openrouter.ai/auth?${new URLSearchParams({callback_url:Y,code_challenge:X,code_challenge_method:J})}`},async exchangeOAuthCode({code:Y,codeVerifier:X,codeChallengeMethod:J}){let G=await fetch("https://openrouter.ai/api/v1/auth/keys",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({code:Y,code_verifier:X,code_challenge_method:J}),signal:AbortSignal.timeout(30000)});if(!G.ok)throw Error(`OpenRouter OAuth exchange failed: ${G.status}`);let W=await G.json();return{apiKey:W.key,userId:W.user_id}},create(Y){let X=Rx1({apiKey:Y}),J={Authorization:`Bearer ${Y}`};return{info:this.info,aiSdk:X,async listModels(){let G=(Q)=>{return{providerId:"openrouter",modelId:Q.id,title:Q.name,description:Q.description??null,logo:null,capabilities:[...new Set([...Q.architecture.input_modalities,...Q.architecture.output_modalities,...Q.supported_parameters?.includes("tools")?["tools"]:[],...Q.supported_parameters?.includes("reasoning")?["reasoning"]:[]])],limits:{contextWindow:Q.context_length??0,maxOutputTokens:Q.top_provider.max_completion_tokens||null},costs:{input:Number(Q.pricing.prompt)||0,output:Number(Q.pricing.completion)||0}}},W=await fetch("https://openrouter.ai/api/v1/models",{headers:J,signal:AbortSignal.timeout(30000)});if(!W.ok)throw Error(`OpenRouter listModels failed: ${W.status}`);let{data:K}=await W.json();return K.map(G)}}}}});var hJ1,YV6;var XV6=A(()=>{Cx1();b5();hJ1=$6.DECO_AI_GATEWAY_URL??"https://ai-site.decocache.com",YV6={info:{id:"deco",name:"Deco AI Gateway",description:"Deco-managed keys with access to 100+ models",logo:"/logos/deco logo.svg"},supportedMethods:["oauth-pkce","api-key"],getOAuthUrl({callbackUrl:Y,codeChallenge:X,codeChallengeMethod:J,organizationId:G}){let W=new URLSearchParams({redirect_uri:Y,code_challenge:X,code_challenge_method:J,organization_id:G});return`${hJ1}/oauth/authorize?${W}`},async exchangeOAuthCode({code:Y,codeVerifier:X}){let J=await fetch(`${hJ1}/oauth/token`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({code:Y,code_verifier:X,grant_type:"authorization_code"}),signal:AbortSignal.timeout(30000)});if(!J.ok)throw Error(`Deco AI Gateway OAuth exchange failed: ${J.status}`);return{apiKey:(await J.json()).key}},async getTopUpUrl(Y,X,J="usd"){let G=await fetch(`${hJ1}/api/credits/topup`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${Y}`},body:JSON.stringify({amountCents:X,currency:J}),signal:AbortSignal.timeout(1e4)});if(!G.ok)throw Error(`Failed to create top-up checkout: ${G.status}`);return(await G.json()).url},async getCreditsBalance(Y,X){let J=await fetch(`${hJ1}/api/teams/${X}/balance`,{headers:{Authorization:`Bearer ${Y}`},signal:AbortSignal.timeout(1e4)});if(!J.ok)throw Error(`Failed to fetch credits balance: ${J.status}`);return{balanceCents:(await J.json()).balance_cents}},create(Y){return{...yJ1.create(Y),info:this.info}}}});var Y$8,_W;var ZB=A(()=>{Z$6();w$6();Cx1();XV6();b5();Y$8=$6.DECO_AI_GATEWAY_ENABLED,_W={...Y$8&&{deco:YV6},anthropic:W$6,google:D$6,openrouter:yJ1}});var Ix1;var JV6=A(()=>{o1();i0();ZB();Ix1=b1({name:"AI_PROVIDERS_LIST",description:"List all available AI providers that can be connected with an API key",inputSchema:d0.object({}),outputSchema:d0.object({providers:d0.array(d0.object({id:d0.string(),name:d0.string(),description:d0.string(),logo:d0.string().optional(),supportedMethods:d0.array(d0.enum(["api-key","oauth-pkce"])),supportsTopUp:d0.boolean().optional(),supportsCredits:d0.boolean().optional()}))}),handler:async(Y,X)=>{return G0(X),L0(X),await X.access.check(),{providers:Object.values(_W).filter((G)=>!!G).map((G)=>({...G.info,supportedMethods:G.supportedMethods,supportsTopUp:!!G.getTopUpUrl,supportsCredits:!!G.getCreditsBalance}))}}})});var jx1,bJ1;var xJ1=A(()=>{jx1=["owner","admin","user"],bJ1=["owner","admin"]});function X$8(Y){if(!Y)return;if(!("models"in Y))return;return Y.models??void 0}function GV6(Y,X){if(!Y)return!0;if(Y.includes("*:*"))return!0;return Y.some((J)=>J.startsWith(`${X}:`))}function MP(Y,X,J){if(!Y)return!0;return Y.includes("*:*")||Y.includes(`${X}:*`)||Y.includes(`${X}:${J}`)}function WV6(Y){if(!Y)return{allowAll:!0,models:{}};if(Y.includes("*:*"))return{allowAll:!0,models:{}};let X={};for(let J of Y){let G=J.indexOf(":");if(G===-1)continue;let W=J.slice(0,G),K=J.slice(G+1);if(!X[W])X[W]=[];X[W].push(K)}return{allowAll:!1,models:X}}async function Tq(Y,X,J){if(!J||bJ1.includes(J))return;let G=await Y.selectFrom("organizationRole").select(["permission"]).where("organizationId","=",X).where("role","=",J).executeTakeFirst();if(!G?.permission)return;try{let W=JSON.parse(G.permission);return X$8(W)}catch{return console.error(`[model-permissions] Failed to parse permissions for role: ${J}`),[]}}var Yd=A(()=>{xJ1()});var Sx1;var ZV6=A(()=>{o1();i0();Yd();Sx1=b1({name:"AI_PROVIDERS_LIST_MODELS",description:"List models available from an AI provider using a specific API key",inputSchema:d0.object({keyId:d0.string().describe("The provider key ID to use")}),outputSchema:d0.object({models:d0.array(d0.object({providerId:d0.string(),modelId:d0.string(),title:d0.string(),description:d0.string().nullish(),logo:d0.string().nullish(),capabilities:d0.array(d0.string()),limits:d0.object({contextWindow:d0.coerce.number(),maxOutputTokens:d0.coerce.number().nullable()}).nullish(),costs:d0.object({input:d0.coerce.number(),output:d0.coerce.number()}).nullish()}))}),handler:async(Y,X)=>{G0(X);let J=L0(X);await X.access.check();let G=await Tq(X.db,J.id,X.auth.user?.role);return{models:(await X.aiProviders.listModels(Y.keyId,J.id)).filter((Z)=>MP(G,Y.keyId,Z.modelId))}}})});var _x1;var QV6=A(()=>{o1();i0();ZB();_x1=b1({name:"AI_PROVIDERS_ACTIVE",description:"List AI providers that have at least one API key configured",inputSchema:d0.object({}),outputSchema:d0.object({providers:d0.array(d0.object({id:d0.string(),name:d0.string(),description:d0.string(),logo:d0.string().optional(),keyCount:d0.number()}))}),handler:async(Y,X)=>{G0(X);let J=L0(X);await X.access.check();let G=await X.storage.aiProviderKeys.list({organizationId:J.id}),W=new Map;for(let Z of G)W.set(Z.providerId,(W.get(Z.providerId)??0)+1);return{providers:[...W.entries()].flatMap(([Z,Q])=>{let H=_W[Z];if(!H)return console.warn(`AI provider "${Z}" has stored keys but is not in the registry; skipping.`),[];return[{...H.info,keyCount:Q}]})}}})});var AP=A(()=>{JY()});var kx1,vx1;var fx1=A(()=>{o1();i0();AP();kx1=d0.object({id:d0.string(),providerId:d0.string(),label:d0.string(),createdAt:d0.string()}),vx1=b1({name:"AI_PROVIDER_KEY_CREATE",description:"Store an API key for an AI provider",inputSchema:d0.object({providerId:d0.enum(pG),label:d0.string().min(1).max(100),apiKey:d0.string().min(1)}),outputSchema:kx1,handler:async(Y,X)=>{G0(X);let J=L0(X);await X.access.check();let G=await X.storage.aiProviderKeys.create({providerId:Y.providerId,label:Y.label,apiKey:Y.apiKey,organizationId:J.id,createdBy:X.auth.user.id});return{id:G.id,providerId:G.providerId,label:G.label,createdAt:G.createdAt}}})});var yx1;var KV6=A(()=>{o1();i0();yx1=b1({name:"AI_PROVIDER_KEY_DELETE",description:"Delete a stored AI provider API key",inputSchema:d0.object({keyId:d0.string().describe("The provider key ID to delete")}),outputSchema:d0.object({success:d0.boolean()}),handler:async(Y,X)=>{G0(X);let J=L0(X);return await X.access.check(),await X.storage.aiProviderKeys.delete(Y.keyId,J.id),{success:!0}}})});var hx1;var HV6=A(()=>{o1();i0();AP();Yd();hx1=b1({name:"AI_PROVIDER_KEY_LIST",description:"List stored API keys for AI providers (metadata only, no secrets)",inputSchema:d0.object({providerId:d0.enum(pG).optional()}),outputSchema:d0.object({keys:d0.array(d0.object({id:d0.string(),providerId:d0.string(),label:d0.string(),createdBy:d0.string(),createdAt:d0.string()}))}),handler:async(Y,X)=>{G0(X);let J=L0(X);await X.access.check();let[G,W]=await Promise.all([X.storage.aiProviderKeys.list({organizationId:J.id,providerId:Y.providerId}),Tq(X.db,J.id,X.auth.user?.role)]);return{keys:G.filter((Z)=>GV6(W,Z.id)).map(({organizationId:Z,...Q})=>Q)}}})});import{createHash as J$8,randomBytes as G$8}from"crypto";function $V6(){return G$8(32).toString("base64url")}function FV6(Y){return J$8("sha256").update(Y).digest("base64url")}var VV6=()=>{};var bx1;var zV6=A(()=>{o1();i0();AP();ZB();VV6();b5();bx1=b1({name:"AI_PROVIDER_OAUTH_URL",description:"Get the OAuth authorization URL for a provider that supports OAuth PKCE",inputSchema:d0.object({providerId:d0.enum(pG),callbackUrl:d0.string().url().refine((Y)=>{let X=$6.BASE_URL??`http://localhost:${$6.PORT}`;return new URL(Y).origin===new URL(X).origin},{message:"callbackUrl must be on the same origin as BASE_URL"})}),outputSchema:d0.object({url:d0.string(),stateToken:d0.string().describe("Opaque token \u2014 pass to AI_PROVIDER_OAUTH_EXCHANGE")}),handler:async(Y,X)=>{G0(X);let J=L0(X);await X.access.check();let G=_W[Y.providerId];if(!G)throw Error(`Unknown provider: ${Y.providerId}`);if(!G.supportedMethods.includes("oauth-pkce")||!G.getOAuthUrl)throw Error(`Provider ${Y.providerId} does not support OAuth PKCE`);let W=$V6(),K=FV6(W),Z=await X.storage.oauthPkceStates.create(W,J.id,X.auth.user.id),Q=new URL(Y.callbackUrl);Q.searchParams.set("state",Z);let H={callbackUrl:Q.toString(),codeChallenge:K,codeChallengeMethod:"S256",organizationId:J.id};return{url:G.getOAuthUrl(H),stateToken:Z}}})});var xx1;var UV6=A(()=>{o1();i0();AP();ZB();fx1();xx1=b1({name:"AI_PROVIDER_OAUTH_EXCHANGE",description:"Exchange an OAuth authorization code for an API key and store it",inputSchema:d0.object({providerId:d0.enum(pG),code:d0.string(),stateToken:d0.string().describe("The stateToken returned by AI_PROVIDER_OAUTH_URL"),label:d0.string().min(1).max(100).default("Connected via OAuth")}),outputSchema:kx1,handler:async(Y,X)=>{G0(X);let J=L0(X);await X.access.check();let G=_W[Y.providerId];if(!G)throw Error(`Unknown provider: ${Y.providerId}`);if(!G.supportedMethods.includes("oauth-pkce")||!G.exchangeOAuthCode)throw Error(`Provider ${Y.providerId} does not support OAuth PKCE`);let W=$9(X);if(!W)throw Error("Unable to determine user ID");let K=await X.storage.oauthPkceStates.consume(Y.stateToken,J.id,W),{apiKey:Z}=await G.exchangeOAuthCode({code:Y.code,codeVerifier:K,codeChallengeMethod:"S256"}),Q=await X.storage.aiProviderKeys.upsert({providerId:Y.providerId,label:Y.label,apiKey:Z,organizationId:J.id,createdBy:W});return{id:Q.id,providerId:Q.providerId,label:Q.label,createdAt:Q.createdAt}}})});var gx1;var qV6=A(()=>{o1();i0();AP();ZB();gx1=b1({name:"AI_PROVIDER_TOPUP_URL",description:"Get a checkout URL to top up credits for a provider that supports it (e.g. Deco AI Gateway)",inputSchema:d0.object({providerId:d0.enum(pG),keyId:d0.string().describe("The ID of the stored provider key to top up"),amountCents:d0.number().int().positive().describe("Amount in cents (e.g. 1000 = $10.00)"),currency:d0.enum(["usd","brl"]).default("usd")}),outputSchema:d0.object({url:d0.string().describe("Checkout URL \u2014 open in browser to complete payment")}),handler:async(Y,X)=>{G0(X);let J=L0(X);await X.access.check();let G=_W[Y.providerId];if(!G)throw Error(`Unknown provider: ${Y.providerId}`);if(!G.getTopUpUrl)throw Error(`Provider ${Y.providerId} does not support credit top-ups`);let{apiKey:W}=await X.storage.aiProviderKeys.resolve(Y.keyId,J.id);return{url:await G.getTopUpUrl(W,Y.amountCents,Y.currency)}}})});var ux1;var LV6=A(()=>{o1();i0();AP();ZB();j51();ux1=b1({name:"AI_PROVIDER_CREDITS",description:"Get the current credit balance for a provider (providers that support it, e.g. Deco AI Gateway)",inputSchema:d0.object({providerId:d0.enum(pG)}),outputSchema:d0.object({balanceCents:d0.number().describe("Remaining balance in cents (e.g. 1000 = $10.00)")}),handler:async(Y,X)=>{G0(X);let J=L0(X);await X.access.check();let G=$9(X);if(!G)throw Error("Unable to determine user ID");let W=_W[Y.providerId];if(!W)throw Error(`Unknown provider: ${Y.providerId}`);if(!W.getCreditsBalance)throw Error(`Provider ${Y.providerId} does not expose a credits balance`);let K=await iJ6(G);return W.getCreditsBalance(K,J.id)}})});var NV6=A(()=>{JV6();ZV6();QV6();fx1();KV6();HV6();zV6();UV6();qV6();LV6()});var BV6={};M6(BV6,{managementMCP:()=>mx1,ALL_TOOLS:()=>OV6});var Z$8,Q$8,OV6,mx1=async(Y)=>{let X=null;if(Y.organization){let W=await Y.storage.organizationSettings.get(Y.organization.id),K=await Y.storage.projects.list(Y.organization.id),Z=new Set(W?.enabled_plugins??[]);for(let Q of K)if(Q.enabledPlugins)for(let H of Q.enabledPlugins)Z.add(H);X=Z.size>0?[...Z]:null}let J=FV0(OV6,X),G=new wz({name:"mcp-mesh-management",version:"1.0.0"},{capabilities:{tools:{}}});for(let W of J){let K=W.inputSchema&&typeof W.inputSchema==="object"&&"shape"in W.inputSchema?W.inputSchema:F.object({}),Z=W.outputSchema&&typeof W.outputSchema==="object"&&"shape"in W.outputSchema?W.outputSchema:void 0,Q=K.shape,H=Z?.shape;G.registerTool(W.name,{description:W.description??"",inputSchema:Q,outputSchema:H,annotations:W.annotations,_meta:W._meta},async($)=>{Y.access.setToolName(W.name);try{let V=await W.execute($,Y);return{content:[{type:"text",text:JSON.stringify(V)}],structuredContent:V}}catch(V){return{content:[{type:"text",text:`Error: ${V.message}`}],isError:!0}}})}return G};var lx1=A(()=>{oR();rf();o1();LJ6();kJ6();eQ6();GK6();UK6();wK6();RK6();jK6();xK6();oK6();$H6();LH6();CH6();uH6();lH6();NV6();Z$8=[zh1,Uh1,qh1,Lh1,Nh1,Bh1,Dh1,wh1,Mh1,Ah1,Ph1,Ev1,jv1,Sv1,yy1,hy1,by1,py1,iy1,ay1,ry1,oy1,sy1,ty1,ey1,Yh1,Xh1,JK6,Jh1,Gh1,Zh1,Qh1,Kh1,Hh1,$h1,Fh1,Vh1,Uv1,Lv1,Nv1,qv1,xy1,gy1,uy1,my1,ly1,dy1,cy1,Jb1,Mv1,Av1,Pv1,uh1,mh1,lh1,dh1,ch1,ph1,yh1,hh1,bh1,xh1,gh1,nh1,ih1,ah1,rh1,oh1,eh1,Yb1,Xb1,Eh1,Th1,Rh1,Ch1,Ih1,jh1,Sh1,_h1,kh1,vh1,fh1,Ix1,Sx1,_x1,vx1,yx1,hx1,bx1,xx1,gx1,ux1],Q$8=VV0(),OV6=[...Z$8,...Q$8]});function K$8(Y){return[{permissions:{self:["*"]},getTools:async()=>{let{ALL_TOOLS:X}=await Promise.resolve().then(() => (lx1(),BV6));return X.map((J)=>{return{name:J.name,inputSchema:F.toJSONSchema(J.inputSchema,{unrepresentable:"any"}),outputSchema:J.outputSchema?F.toJSONSchema(J.outputSchema,{unrepresentable:"any"}):void 0,description:J.description}})},data:PU1(SQ(),Y)},{data:AU1()},{data:MU1(Y)}]}async function DV6(Y,X){try{let J=bQ(),G=new lA($6.ENCRYPTION_KEY),W=new Lm(J.db,G),K=new Nm(J.db),Z=K$8(Y);try{await K.create({organizationId:Y,slug:hH,name:cE,description:"Organization administration and settings",enabledPlugins:null,ui:null})}catch(Q){console.warn("Could not create org-admin project (may already exist):",Q)}await Promise.all(Z.map(async(Q)=>{let H=null;if(Q.permissions)H=(await SZ.api.createApiKey({body:{name:`${Q.data.app_name??crypto.randomUUID()}-mcp`,userId:X,permissions:Q.permissions,rateLimitEnabled:!1,metadata:{organization:{id:Y},purpose:"default-org-connections"}}}))?.key;let $=await CO({id:"pending",title:Q.data.title,connection_type:Q.data.connection_type,connection_url:Q.data.connection_url,connection_token:Q.data.connection_token,connection_headers:Q.data.connection_headers}).catch(()=>null),V=await Q.getTools?.()??$?.tools??null,z=$?.scopes?.length?$.scopes:null,U=Q.data.id?Q.data.id.startsWith(`${Y}_`)?Q.data.id:`${Y}_${Q.data.id}`:void 0;await W.create({...Q.data,id:U,tools:V,configuration_scopes:z,organization_id:Y,created_by:X,connection_token:Q.data.connection_token??H})}))}catch(J){console.error("Error creating default MCP connections:",J)}}var wV6=A(()=>{JY();pN();gA();N51();tk1();ek1();Bm();o1();b5();SO()});async function $$8(Y){let{user:X,token:J}=Y;if(!J?.idToken)return;let G;try{G=KY(J.idToken)}catch{return}let{preferred_username:W,upn:K}=G,Z=[W,K].filter(($)=>typeof $==="string"&&$.length>0&&$.toLowerCase()!==X.email.toLowerCase()).map(($)=>$.toLowerCase());if(Z.length===0)return;let{db:Q}=bQ(),H=await Q.selectFrom("user").selectAll().where("email","in",Z).where("id","!=",X.id).executeTakeFirst();if(!H)return;console.info(`[SSO] Merging duplicate user ${X.id} (${X.email}) into original ${H.id} (${H.email})`);try{await Q.transaction().execute(async($)=>{await k1`UPDATE "account" SET "userId" = ${H.id} WHERE "userId" = ${X.id}`.execute($),await k1`UPDATE "session" SET "userId" = ${H.id} WHERE "userId" = ${X.id}`.execute($),await k1`
1590
1590
  UPDATE "member" SET "userId" = ${H.id}
1591
1591
  WHERE "userId" = ${X.id}
1592
1592
  AND "organizationId" NOT IN (
@@ -1761,7 +1761,7 @@ Example input: "How do I connect to a database?"
1761
1761
  Example output: Database Connection Setup
1762
1762
 
1763
1763
  Example input: "What tools are available?"
1764
- Example output: Available Tools Overview`;var aP=A(()=>{TW();gO6=["user_ask","subtask"]});function ZG1(Y){return typeof Y==="string"?Y:Y.toISOString()}class Pc{inner;organizationId;constructor(Y,X){this.inner=Y;this.organizationId=X}requireOrg(){if(!this.organizationId)throw Error("OrgScopedThreadStorage: thread operations require an authenticated organization");return this.organizationId}create(Y){let X=this.requireOrg();return this.inner.create({...Y,organization_id:X})}get(Y){return this.inner.get(Y,this.requireOrg())}update(Y,X){return this.inner.update(Y,this.requireOrg(),X)}forceFailIfInProgress(Y){return this.inner.forceFailIfInProgress(Y,this.requireOrg())}delete(Y){return this.inner.delete(Y,this.requireOrg())}list(Y,X){return this.inner.list(this.requireOrg(),Y,X)}listByTriggerIds(Y,X){return this.inner.listByTriggerIds(this.requireOrg(),Y,X)}saveMessages(Y){return this.inner.saveMessages(Y,this.requireOrg())}listMessages(Y,X){return this.inner.listMessages(Y,this.requireOrg(),X)}}class Ec{db;constructor(Y){this.db=Y}async create(Y){let X=Y.id??a8("thrd"),J=new Date().toISOString();if(!Y.organization_id)throw Error("organization_id is required");if(!Y.created_by)throw Error("created_by is required");if(!Y.title)Y.title=WG1;let G={id:X,organization_id:Y.organization_id,title:Y.title,description:Y.description??null,status:Y.status??"completed",trigger_id:Y.trigger_id??null,created_at:J,updated_at:J,created_by:Y.created_by,updated_by:Y.updated_by??null},W=await this.db.insertInto("threads").values(G).returningAll().executeTakeFirstOrThrow();return this.threadFromDbRow(W)}async get(Y,X){let J=await this.db.selectFrom("threads").selectAll().where("id","=",Y).where("organization_id","=",X).executeTakeFirst();return J?this.threadFromDbRow(J):null}async update(Y,X,J){let W={updated_at:new Date().toISOString()};if(J.title!==void 0)W.title=J.title;if(J.description!==void 0)W.description=J.description;if(J.updated_by!==void 0)W.updated_by=J.updated_by;if(J.hidden!==void 0)W.hidden=J.hidden;if(J.status!==void 0)W.status=J.status;await this.db.updateTable("threads").set(W).where("id","=",Y).where("organization_id","=",X).execute();let K=await this.get(Y,X);if(!K)throw Error("Thread not found after update");return K}async forceFailIfInProgress(Y,X){let J=new Date().toISOString();return((await this.db.updateTable("threads").set({status:"failed",updated_at:J}).where("id","=",Y).where("organization_id","=",X).where("status","=","in_progress").executeTakeFirst()).numUpdatedRows??BigInt(0))>BigInt(0)}async delete(Y,X){await this.db.deleteFrom("threads").where("id","=",Y).where("organization_id","=",X).execute()}async list(Y,X,J){let G=this.db.selectFrom("threads").selectAll().where("organization_id","=",Y).where("hidden","=",!1).orderBy("updated_at","desc");if(X)G=G.where("created_by","=",X);let W=this.db.selectFrom("threads").select((Q)=>Q.fn.count("id").as("count")).where("organization_id","=",Y).where("hidden","=",!1);if(X)W=W.where("created_by","=",X);if(J?.limit)G=G.limit(J.limit);if(J?.offset)G=G.offset(J.offset);let[K,Z]=await Promise.all([G.execute(),W.executeTakeFirst()]);return{threads:K.map((Q)=>this.threadFromDbRow(Q)),total:Number(Z?.count||0)}}async listByTriggerIds(Y,X,J){if(X.length===0)return{threads:[],total:0};let G=this.db.selectFrom("threads").selectAll().where("organization_id","=",Y).where("hidden","=",!1).where("trigger_id","in",X).orderBy("updated_at","desc"),W=this.db.selectFrom("threads").select((Q)=>Q.fn.count("id").as("count")).where("organization_id","=",Y).where("hidden","=",!1).where("trigger_id","in",X);if(J?.limit)G=G.limit(J.limit);if(J?.offset)G=G.offset(J.offset);let[K,Z]=await Promise.all([G.execute(),W.executeTakeFirst()]);return{threads:K.map((Q)=>this.threadFromDbRow(Q)),total:Number(Z?.count||0)}}async saveMessages(Y,X){let J=new Date().toISOString(),G=Y[0]?.thread_id;if(!G)throw Error("thread_id is required when creating multiple messages");if(!await this.get(G,X))throw Error("Thread not found or access denied");let K=new Map;for(let $ of Y){let V=K.get($.id);if(V&&V.thread_id!==$.thread_id)throw Error(`Duplicate message id "${$.id}" with conflicting thread_ids: "${V.thread_id}" vs "${$.thread_id}"`);K.set($.id,$)}let Z=[...K.values()],Q=Z.find(($)=>$.thread_id!==G);if(Q)throw Error(`All messages must target the same thread. Expected thread_id "${G}", but message "${Q.id}" has thread_id "${Q.thread_id}"`);let H=Z.map(($)=>({id:$.id,thread_id:G,metadata:$.metadata?JSON.stringify($.metadata):null,parts:JSON.stringify($.parts),role:$.role,created_at:$.created_at??J,updated_at:J}));await this.db.transaction().execute(async($)=>{await $.insertInto("thread_messages").values(H).onConflict((V)=>V.column("id").doUpdateSet((z)=>({metadata:z.ref("excluded.metadata"),parts:z.ref("excluded.parts"),role:z.ref("excluded.role"),updated_at:z.ref("excluded.updated_at")}))).execute(),await $.updateTable("threads").set({updated_at:J}).where("id","=",G).where("organization_id","=",X).execute()})}async listMessages(Y,X,J){if(!await this.get(Y,X))return{messages:[],total:0};let W=J?.sort??"asc",K=this.db.selectFrom("thread_messages").selectAll().where("thread_id","=",Y).orderBy("created_at",W).orderBy("id",W),Z=this.db.selectFrom("thread_messages").select(($)=>$.fn.count("id").as("count")).where("thread_id","=",Y);if(J?.limit)K=K.limit(J.limit);if(J?.offset)K=K.offset(J.offset);let[Q,H]=await Promise.all([K.execute(),Z.executeTakeFirst()]);return{messages:Q.map(($)=>this.messageFromDbRow($)),total:Number(H?.count||0)}}threadFromDbRow(Y){return{id:Y.id,organization_id:Y.organization_id,title:Y.title,description:Y.description,status:Y.status,trigger_id:Y.trigger_id??null,created_at:ZG1(Y.created_at),updated_at:ZG1(Y.updated_at),created_by:Y.created_by,updated_by:Y.updated_by,hidden:!!Y.hidden}}messageFromDbRow(Y){let X,J;try{X=Y.metadata?JSON.parse(Y.metadata):void 0}catch(G){console.error(`Failed to parse metadata for message ${Y.id}:`,Y.metadata,G),X=void 0}try{J=typeof Y.parts==="string"?JSON.parse(Y.parts):Y.parts}catch(G){console.error(`Failed to parse parts for message ${Y.id}:`,Y.parts,G),J=[]}return{id:Y.id,thread_id:Y.thread_id,metadata:X,parts:J,role:Y.role,created_at:ZG1(Y.created_at),updated_at:ZG1(Y.updated_at)}}}var Hm1=A(()=>{TW();aP()});import{createHash as oB8}from"crypto";function mO6(Y){return oB8("sha256").update(Y).digest("hex")}class $m1{db;vault;constructor(Y,X){this.db=Y;this.vault=X}rowToKeyInfo(Y){return{id:Y.id,providerId:Y.provider_id,label:Y.label,organizationId:Y.organization_id,createdBy:Y.created_by,createdAt:Y.created_at instanceof Date?Y.created_at.toISOString():String(Y.created_at)}}async create(Y){let X=a8("aik"),J=await this.vault.encrypt(Y.apiKey),G=mO6(Y.apiKey),W=new Date;return await this.db.insertInto("ai_provider_keys").values({id:X,organization_id:Y.organizationId,provider_id:Y.providerId,label:Y.label,encrypted_api_key:J,key_hash:G,created_by:Y.createdBy,created_at:W}).execute(),this.rowToKeyInfo({id:X,provider_id:Y.providerId,label:Y.label,organization_id:Y.organizationId,created_by:Y.createdBy,created_at:W})}async upsert(Y){let X=a8("aik"),J=await this.vault.encrypt(Y.apiKey),G=mO6(Y.apiKey),W=new Date,K=await this.db.insertInto("ai_provider_keys").values({id:X,organization_id:Y.organizationId,provider_id:Y.providerId,label:Y.label,encrypted_api_key:J,key_hash:G,created_by:Y.createdBy,created_at:W}).onConflict((Z)=>Z.columns(["organization_id","provider_id","key_hash"]).doUpdateSet({label:Y.label})).returning(["id","provider_id","label","organization_id","created_by","created_at"]).executeTakeFirstOrThrow();return this.rowToKeyInfo(K)}async list(Y){let X=this.db.selectFrom("ai_provider_keys").where("organization_id","=",Y.organizationId).select(["id","provider_id","label","organization_id","created_by","created_at"]);if(Y.providerId)X=X.where("provider_id","=",Y.providerId);return(await X.orderBy("created_at","desc").execute()).map((G)=>this.rowToKeyInfo(G))}async resolve(Y,X){let J=await this.db.selectFrom("ai_provider_keys").where("id","=",Y).where("organization_id","=",X).selectAll().executeTakeFirstOrThrow(),G=await this.vault.decrypt(J.encrypted_api_key);return{keyInfo:this.rowToKeyInfo(J),apiKey:G}}async delete(Y,X){if(!(await this.db.deleteFrom("ai_provider_keys").where("id","=",Y).where("organization_id","=",X).executeTakeFirst()).numDeletedRows)throw Error(`AI provider key ${Y} not found`)}async findById(Y,X){let J=await this.db.selectFrom("ai_provider_keys").where("id","=",Y).where("organization_id","=",X).select(["id","provider_id","label","organization_id","created_by","created_at"]).executeTakeFirst();if(!J)throw Error("Provider key not found");return this.rowToKeyInfo(J)}}var lO6=A(()=>{TW()});class Fm1{db;constructor(Y){this.db=Y}async create(Y,X,J){let G=crypto.randomUUID(),W=new Date(Date.now()+600000);return await this.db.insertInto("oauth_pkce_states").values({id:G,organization_id:X,user_id:J,code_verifier:Y,expires_at:W,created_at:new Date}).execute(),G}async consume(Y,X,J){let G=await this.db.deleteFrom("oauth_pkce_states").where("id","=",Y).where("organization_id","=",X).where("user_id","=",J).returningAll().executeTakeFirst();if(!G)throw Error("Invalid or expired OAuth state token");if((G.expires_at instanceof Date?G.expires_at:new Date(G.expires_at))<new Date)throw Error("OAuth state token has expired");return G.code_verifier}}function sB8(Y){return Y.includes("/")?Y.split("/").slice(1).join("/"):Y}function tB8(Y){let X=Y.supported_parameters.includes("tools"),J=Y.supported_parameters.includes("reasoning");return{providerId:"openrouter",modelId:sB8(Y.id),title:Y.name,description:Y.description||null,logo:null,capabilities:[...new Set([...Y.architecture.input_modalities,...Y.architecture.output_modalities,...X?["tools"]:[],...J?["reasoning"]:[]])],limits:{contextWindow:Y.context_length,maxOutputTokens:Y.top_provider.max_completion_tokens||null},costs:{input:Y.pricing.prompt,output:Y.pricing.completion}}}function cO6(Y){let X=new Map;for(let J of Y){let G={description:J.description,capabilities:J.capabilities,limits:J.limits,costs:J.costs};X.set(J.modelId,G);let W=J.modelId.replace(/\./g,"-");if(W!==J.modelId)X.set(W,G)}return X}async function eB8(Y){if(Y){let X=await Y.get(dO6,"openrouter");if(X)return cO6(X)}try{let X=await fetch("https://openrouter.ai/api/v1/models",{signal:AbortSignal.timeout(1e4)});if(!X.ok)return new Map;let{data:J}=await X.json(),G=J.map(tB8);if(Y)await Y.set(dO6,"openrouter",G);return cO6(G)}catch{return new Map}}function YD8(Y){let X=Y.replace(/\./g,"-"),J=Y.replace(/-\d{8}$/,""),G=J.replace(/\./g,"-");return[...new Set([Y,X,J,G])]}function XD8(Y,X){return Y.map((J)=>{let W=YD8(J.modelId).map((K)=>X.get(K)).find(Boolean);if(!W)return J;return{...J,description:J.description??W.description??null,capabilities:J.capabilities.length?J.capabilities:W.capabilities??[],limits:J.limits??W.limits??null,costs:J.costs??W.costs??null}})}class Vm1{storage;cache;constructor(Y,X){this.storage=Y;this.cache=X}async activate(Y,X){let{keyInfo:J,apiKey:G}=await this.storage.resolve(Y,X),W=_W[J.providerId];if(!W)throw Error(`Unknown provider: ${J.providerId}`);return W.create(G)}async listModels(Y,X){let{keyInfo:J,apiKey:G}=await this.storage.resolve(Y,X),W=J.providerId;if(this.cache){let z=await this.cache.get(X,W);if(z)return z}let K=_W[W];if(!K)throw Error(`Unknown provider: ${W}`);let Q=await K.create(G).listModels(),H=new Set,$=Q.filter((z)=>{if(H.has(z.modelId))return!1;return H.add(z.modelId),!0});if(W!=="openrouter"){let z=await eB8(this.cache);$=XD8($,z)}let V=$.map((z)=>({...z,providerId:W}));if(this.cache)await this.cache.set(X,W,V);return V}}var dO6="_global";var pO6=A(()=>{ZB()});function JD8(Y){if(!Y)return;try{let X=JSON.parse(Y);if(typeof X!=="object"||X===null||Array.isArray(X))return;let J={};for(let[G,W]of Object.entries(X))if(typeof W==="string")J[G]=W;return Object.keys(J).length>0?J:void 0}catch{return}}function GD8(Y,X){for(let[J,G]of Object.entries(X)){let W=Y[J];if(!W||W.length===0){let K=Y["*"];if(!K||K.length===0)return!1;if(K.includes("*"))continue;for(let Z of G)if(!K.includes(Z))return!1;continue}if(W.includes("*"))continue;for(let K of G)if(!W.includes(K))return!1}return!0}function zm1(Y){let{auth:X,headers:J,role:G,permissions:W,userId:K}=Y,Z=X.api.hasPermission;return{hasPermission:async(Q)=>{if(G&&jx1.includes(G))return!0;if(W)return GD8(W,Q);if(!Z)return console.error("[Auth] hasPermission API not available"),!1;try{if((await Z({headers:J,body:{permission:Q}}))?.success===!0)return!0;let $={};for(let z of Object.keys(Q))$[z]=["*"];return(await Z({headers:J,body:{permission:$}}))?.success===!0}catch(H){return console.error("[Auth] Permission check failed:",H),!1}},organization:{create:async(Q)=>{return X.api.createOrganization({headers:J,body:Q})},update:async(Q)=>{return X.api.updateOrganization({headers:J,body:Q})},delete:async(Q)=>{await X.api.deleteOrganization({headers:J,body:{organizationId:Q}})},get:async(Q)=>{return X.api.getFullOrganization({headers:J,query:Q?{organizationId:Q}:void 0})},list:async(Q)=>{return X.api.listOrganizations({headers:J,query:Q?{userId:Q}:void 0})},addMember:async(Q)=>{return X.api.addMember({headers:J,body:Q})},removeMember:async(Q)=>{await X.api.removeMember({headers:J,body:Q})},listMembers:async(Q)=>{return X.api.listMembers({headers:J,query:Q?{organizationId:Q.organizationId,limit:Q.limit,offset:Q.offset}:void 0})},updateMemberRole:async(Q)=>{return X.api.updateMemberRole({headers:J,body:Q})}},apiKey:{create:async(Q)=>{return X.api.createApiKey({body:{...Q,userId:K}})},list:async()=>{return X.api.listApiKeys({headers:J})},update:async(Q)=>{return X.api.updateApiKey({body:{...Q,userId:K}})},delete:async(Q)=>{await X.api.deleteApiKey({headers:J,body:{keyId:Q}})}}}}async function WD8(Y,X,J){if(jx1.includes(J))return;let G=await Y.selectFrom("organizationRole").select(["permission"]).where("organizationId","=",X).where("role","=",J).executeTakeFirst();if(!G?.permission)return;try{return JSON.parse(G.permission)}catch{console.error(`[Auth] Failed to parse permissions for role: ${J}`);return}}async function ZD8(Y,X,J,G=iO6){let W=Y.headers.get("Authorization");try{let K=new Headers(Y.headers);K.set("X-MCP-Session-Auth","true");let Z=await G.measure("auth_get_mcp_session",()=>X.api.getMcpSession({headers:K}));if(Z){let Q=Z.userId,H=await G.measure("auth_query_membership",()=>J.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["member.role","member.organizationId","organization.id as orgId","organization.slug as orgSlug","organization.name as orgName"]).where("member.userId","=",Q).executeTakeFirst()),$=H?.role,V=H?{id:H.orgId,slug:H.orgSlug,name:H.orgName}:void 0,z;if(H&&$)z=await G.measure("auth_fetch_role_permissions",()=>WD8(J,H.organizationId,$));return{user:{id:Q,role:$},role:$,permissions:z,organization:V}}}catch(K){console.error("[Auth] OAuth session check failed:",K)}if(W?.startsWith("Bearer ")){let K=W.replace("Bearer ","").trim();try{let Z=await G.measure("auth_verify_mesh_jwt",()=>nJ6(K));if(Z){let Q,H=Z.metadata?.organizationId;if(Z.sub&&H)Q=(await G.measure("auth_query_membership",()=>J.selectFrom("member").select(["member.role"]).where("member.userId","=",Z.sub).where("member.organizationId","=",H).executeTakeFirst()))?.role;let $,V=Z.metadata?.organizationId;if(V){let z=Z.metadata?.organizationName,U=Z.metadata?.organizationSlug;if(z||U)$={id:V,name:z,slug:U};else{let q=await G.measure("auth_query_org_for_mesh_jwt",()=>J.selectFrom("organization").select(["id","slug","name"]).where("id","=",V).executeTakeFirst());$=q?{id:q.id,slug:q.slug,name:q.name}:{id:V}}}return{user:{id:Z.sub,connectionId:Z.metadata?.connectionId,role:Q},role:Q,permissions:Z.permissions,organization:$}}}catch{}try{let Z=await G.measure("auth_verify_api_key",()=>X.api.verifyApiKey({body:{key:K}}));if(Z?.valid&&Z.key){let Q=Z.key.metadata?.organization,H=Z.key.permissions,$,V=Z.key.userId;if(V&&Q?.id)$=(await G.measure("auth_query_membership",()=>J.selectFrom("member").select(["member.role"]).where("member.userId","=",V).where("member.organizationId","=",Q.id).executeTakeFirst()))?.role;return{apiKeyId:Z.key.id,user:{id:Z.key.userId,role:$},role:$,permissions:H,organization:Q?{id:Q.id,slug:Q.slug,name:Q.name}:void 0}}}catch(Z){console.error("[Auth] API key check failed:",Z)}}try{let K=new Headers(Y.headers);K.delete("Authorization");let Z=await G.measure("auth_get_session",()=>X.api.getSession({headers:K}));if(Z){let Q,H;if(Z.session.activeOrganizationId){let $=await G.measure("auth_get_full_organization",()=>X.api.getFullOrganization({headers:K}).catch(()=>null));if($)Q={id:$.id,slug:$.slug,name:$.name},H=$.members?.find((z)=>z.userId===Z.user.id)?.role;else Q={id:Z.session.activeOrganizationId,slug:"",name:""}}return{user:{id:Z.user.id,email:Z.user.email,role:H},role:H,organization:Q}}}catch(K){let Z=K;console.error("[Auth] Session check failed:",JSON.stringify({message:Z.message,body:Z.body,stack:Z.stack},null,2))}return{user:void 0}}async function aO6(Y){let X=new lA(Y.encryption.key),J=!!$6.CLICKHOUSE_URL,G=J?"clickhouse":"duckdb",W,K;if(J)W=new wc($6.CLICKHOUSE_URL),K=new wc($6.CLICKHOUSE_URL);else{let{engine:q}=await nu1({basePath:gU}),{engine:L}=await nu1({basePath:qA});W=q,K=L}let{resolve:Z}=await import("path"),Q=Z(gU),H=Z(qA),$=J?(q)=>"monitoring_logs":(q)=>`read_ndjson('${Q}/${q}/**/*.ndjson', auto_detect=true)`,V=J?(q)=>"monitoring_metrics":(q)=>`read_ndjson('${H}/${q}/**/*.ndjson', auto_detect=true)`,z=new Ec(Y.db),U={connections:new Lm(Y.db,X),organizationSettings:new ru1(Y.db),monitoring:new Vg1(W,$,K,V,G),monitoringDashboards:new au1(Y.db),virtualMcps:new Qg1(Y.db),users:new Ym1(Y.db),tags:new eu1(Y.db),projects:new Nm(Y.db),projectConnections:new ou1(Y.db),projectPluginConfigs:new su1(Y.db),aiProviderKeys:new $m1(Y.db,X),oauthPkceStates:new Fm1(Y.db),automations:s71(Y.db)};return async(q,L)=>{let N=L?.timings??iO6,M=Pj(),P=q?.headers.get("x-caller-id")??void 0,R=q?await ZD8(q,Y.auth,Y.db,N):{user:void 0},I=zm1({auth:Y.auth,headers:q?.headers??new Headers,role:R.role,permissions:R.permissions,userId:R.user?.id}),T={user:R.user};if(R.apiKeyId)T.apiKey={id:R.apiKeyId,name:"",userId:""};let E=R.organization,j=q?$6.BASE_URL??`${new URL(q.url).origin}`:SQ(),v=new e3(Y.auth,T.user?.id,void 0,I,R.role,"self"),k={...U,threads:new Pc(z,E?.id)},g=new Vm1(k.aiProviderKeys,Y.modelListCache),f={timings:N,auth:T,connectionId:P,organization:E,storage:k,vault:X,authInstance:Y.auth,boundAuth:I,access:v,db:Y.db,tracer:Y.observability.tracer,meter:Y.observability.meter,baseUrl:j,metadata:{requestId:crypto.randomUUID(),timestamp:new Date,wellKnownForwardableHeaders:Object.fromEntries(QD8.map((y)=>[y,q?.headers.get(y)??null]).filter(([y,a])=>a!==null)),userAgent:q?.headers.get("x-mesh-client")||q?.headers.get("User-Agent")||void 0,ipAddress:(q?.headers.get("CF-Connecting-IP")||q?.headers.get("X-Forwarded-For"))??void 0,properties:JD8(q?.headers.get("x-mesh-properties"))},eventBus:Y.eventBus,aiProviders:g,createMCPProxy:async(y)=>{return await vO6(y,f)},getOrCreateClient:M};return f}}var nO6,xV,iO6,QD8;var YG1=A(()=>{j51();N51();b5();pN();tk1();gz6();dz6();iu1();iu1();iK();BO6();ek1();DO6();wO6();tu1();AO6();Ej();F_();xJ1();Hm1();_51();lO6();pO6();xV={set:(Y)=>{nO6=Y},create:async(Y,X)=>{return await nO6(Y,X)}},iO6={measure:async(Y,X)=>{return await X()}},QD8=["x-hub-signature-256"]});class rO6{db;constructor(Y){this.db=Y}mapRowToSubscription(Y){return{id:Y.id,organizationId:Y.organization_id,connectionId:Y.connection_id,publisher:Y.publisher,eventType:Y.event_type,filter:Y.filter,enabled:Boolean(Y.enabled),createdAt:Y.created_at,updatedAt:Y.updated_at}}async publishEvent(Y){let X=new Date().toISOString();return await this.db.insertInto("events").values({id:Y.id,organization_id:Y.organizationId,type:Y.type,source:Y.source,specversion:"1.0",subject:Y.subject??null,time:Y.time,datacontenttype:Y.datacontenttype??"application/json",dataschema:Y.dataschema??null,data:Y.data?JSON.stringify(Y.data):null,cron:Y.cron??null,status:"pending",attempts:0,last_error:null,next_retry_at:null,created_at:X,updated_at:X}).execute(),{id:Y.id,organizationId:Y.organizationId,type:Y.type,source:Y.source,specversion:"1.0",subject:Y.subject??null,time:Y.time,datacontenttype:Y.datacontenttype??"application/json",dataschema:Y.dataschema??null,data:Y.data??null,cron:Y.cron??null,status:"pending",attempts:0,lastError:null,nextRetryAt:null,createdAt:X,updatedAt:X}}async subscribe(Y){let X=this.db.selectFrom("event_subscriptions").selectAll().where("organization_id","=",Y.organizationId).where("connection_id","=",Y.connectionId).where("event_type","=",Y.eventType);if(Y.publisher)X=X.where("publisher","=",Y.publisher);else X=X.where("publisher","is",null);if(Y.filter)X=X.where("filter","=",Y.filter);else X=X.where("filter","is",null);let J=await X.executeTakeFirst();if(J)return this.mapRowToSubscription(J);let G=new Date().toISOString();return await this.db.insertInto("event_subscriptions").values({id:Y.id,organization_id:Y.organizationId,connection_id:Y.connectionId,publisher:Y.publisher??null,event_type:Y.eventType,filter:Y.filter??null,enabled:1,created_at:G,updated_at:G}).execute(),{id:Y.id,organizationId:Y.organizationId,connectionId:Y.connectionId,publisher:Y.publisher??null,eventType:Y.eventType,filter:Y.filter??null,enabled:1,createdAt:G,updatedAt:G}}async unsubscribe(Y,X){return{success:((await this.db.deleteFrom("event_subscriptions").where("id","=",Y).where("organization_id","=",X).executeTakeFirst()).numDeletedRows??0n)>0n}}async listSubscriptions(Y,X){let J=this.db.selectFrom("event_subscriptions").selectAll().where("organization_id","=",Y);if(X)J=J.where("connection_id","=",X);return(await J.execute()).map((W)=>this.mapRowToSubscription(W))}async getSubscription(Y,X){let J=await this.db.selectFrom("event_subscriptions").selectAll().where("id","=",Y).where("organization_id","=",X).executeTakeFirst();if(!J)return null;return this.mapRowToSubscription(J)}async getMatchingSubscriptions(Y){return(await this.db.selectFrom("event_subscriptions").selectAll().where("organization_id","=",Y.organizationId).where("enabled","=",1).where("event_type","=",Y.type).where((J)=>J.or([J("publisher","is",null),J("publisher","=",Y.source)])).execute()).map((J)=>this.mapRowToSubscription(J))}async createDeliveries(Y,X,J){if(X.length===0)return;let G=new Date().toISOString(),W=J??null,K=X.map((Z)=>({id:crypto.randomUUID(),event_id:Y,subscription_id:Z,status:"pending",attempts:0,last_error:null,delivered_at:null,next_retry_at:W,created_at:G}));await this.db.insertInto("event_deliveries").values(K).execute()}async claimPendingDeliveries(Y){let X=new Date().toISOString(),G=(await this.db.updateTable("event_deliveries").set({status:"processing"}).where("id","in",(K)=>K.selectFrom("event_deliveries as d").innerJoin("event_subscriptions as s","s.id","d.subscription_id").select("d.id").where("d.status","=","pending").where("s.enabled","=",1).where((Z)=>Z.or([Z("d.next_retry_at","is",null),Z("d.next_retry_at","<=",X)])).orderBy("d.created_at","asc").limit(Y)).where("status","=","pending").returning(["id"]).execute()).map((K)=>K.id);if(G.length===0)return[];return(await this.db.selectFrom("event_deliveries as d").innerJoin("events as e","e.id","d.event_id").innerJoin("event_subscriptions as s","s.id","d.subscription_id").select(["d.id as delivery_id","d.event_id","d.subscription_id","d.status as delivery_status","d.attempts as delivery_attempts","d.last_error as delivery_last_error","d.delivered_at","d.next_retry_at as delivery_next_retry_at","d.created_at as delivery_created_at","e.organization_id","e.type","e.source","e.specversion","e.subject","e.time","e.datacontenttype","e.dataschema","e.data","e.cron","e.status as event_status","e.attempts as event_attempts","e.last_error as event_last_error","e.next_retry_at","e.created_at as event_created_at","e.updated_at as event_updated_at","s.connection_id","s.publisher","s.event_type","s.filter","s.enabled","s.created_at as subscription_created_at","s.updated_at as subscription_updated_at"]).where("d.id","in",G).where("d.status","=","processing").execute()).map((K)=>({delivery:{id:K.delivery_id,eventId:K.event_id,subscriptionId:K.subscription_id,status:K.delivery_status,attempts:K.delivery_attempts,lastError:K.delivery_last_error,deliveredAt:K.delivered_at,nextRetryAt:K.delivery_next_retry_at,createdAt:K.delivery_created_at},event:{id:K.event_id,organizationId:K.organization_id,type:K.type,source:K.source,specversion:K.specversion,subject:K.subject,time:K.time,datacontenttype:K.datacontenttype,dataschema:K.dataschema,data:K.data?JSON.parse(K.data):null,cron:K.cron,status:K.event_status,attempts:K.event_attempts,lastError:K.event_last_error,nextRetryAt:K.next_retry_at,createdAt:K.event_created_at,updatedAt:K.event_updated_at},subscription:{id:K.subscription_id,organizationId:K.organization_id,connectionId:K.connection_id,publisher:K.publisher,eventType:K.event_type,filter:K.filter,enabled:Boolean(K.enabled),createdAt:K.subscription_created_at,updatedAt:K.subscription_updated_at}}))}async markDeliveriesDelivered(Y){if(Y.length===0)return;let X=new Date().toISOString();await this.db.updateTable("event_deliveries").set({status:"delivered",delivered_at:X}).where("id","in",Y).execute()}async markDeliveriesPermanentlyFailed(Y,X){if(Y.length===0)return;await this.db.updateTable("event_deliveries").set({status:"failed",last_error:X,next_retry_at:null}).where("id","in",Y).execute()}async markDeliveriesFailed(Y,X,J=20,G=1000,W=3600000){if(Y.length===0)return;for(let K of Y){let Z=await this.db.selectFrom("event_deliveries").select(["attempts"]).where("id","=",K).executeTakeFirst();if(!Z)continue;let Q=Z.attempts+1;if(Q>=J)await this.db.updateTable("event_deliveries").set({attempts:Q,last_error:X,status:"failed",next_retry_at:null}).where("id","=",K).execute();else{let H=Math.min(G*Math.pow(2,Q-1),W),$=new Date(Date.now()+H).toISOString();await this.db.updateTable("event_deliveries").set({attempts:Q,last_error:X,status:"pending",next_retry_at:$}).where("id","=",K).execute()}}}async updateEventStatus(Y){let X=await this.db.selectFrom("event_deliveries").select(["status"]).where("event_id","=",Y).execute();if(X.length===0)return;let J=X.every((K)=>K.status==="delivered"),G=X.some((K)=>K.status==="failed"),W=X.some((K)=>K.status==="pending"||K.status==="processing");if(J)await this.db.updateTable("events").set({status:"delivered",updated_at:new Date().toISOString()}).where("id","=",Y).execute();else if(G&&!W)await this.db.updateTable("events").set({status:"failed",updated_at:new Date().toISOString()}).where("id","=",Y).execute()}async resetStuckDeliveries(){let Y=await this.db.updateTable("event_deliveries").set({status:"pending"}).where("status","=","processing").executeTakeFirst();return Number(Y.numUpdatedRows??0)}async getEvent(Y,X){let J=await this.db.selectFrom("events").selectAll().where("id","=",Y).where("organization_id","=",X).executeTakeFirst();if(!J)return null;return{id:J.id,organizationId:J.organization_id,type:J.type,source:J.source,specversion:J.specversion,subject:J.subject,time:J.time,datacontenttype:J.datacontenttype,dataschema:J.dataschema,data:J.data?JSON.parse(J.data):null,cron:J.cron,status:J.status,attempts:J.attempts,lastError:J.last_error,nextRetryAt:J.next_retry_at,createdAt:J.created_at,updatedAt:J.updated_at}}async findActiveCronEvent(Y,X,J,G){let W=await this.db.selectFrom("events").selectAll().where("organization_id","=",Y).where("type","=",X).where("source","=",J).where("cron","=",G).where("status","in",["pending","processing","delivered"]).orderBy("created_at","desc").executeTakeFirst();if(!W)return null;return{id:W.id,organizationId:W.organization_id,type:W.type,source:W.source,specversion:W.specversion,subject:W.subject,time:W.time,datacontenttype:W.datacontenttype,dataschema:W.dataschema,data:W.data?JSON.parse(W.data):null,cron:W.cron,status:W.status,attempts:W.attempts,lastError:W.last_error,nextRetryAt:W.next_retry_at,createdAt:W.created_at,updatedAt:W.updated_at}}async findOrphanedCronEvents(){return(await this.db.selectFrom("events").selectAll().where("cron","is not",null).where("status","=","delivered").where((X)=>X.not(X.exists(X.selectFrom("event_deliveries").select("id").whereRef("event_deliveries.event_id","=","events.id").where("event_deliveries.status","in",["pending","processing"])))).execute()).map((X)=>({id:X.id,organizationId:X.organization_id,type:X.type,source:X.source,specversion:X.specversion,subject:X.subject,time:X.time,datacontenttype:X.datacontenttype,dataschema:X.dataschema,data:X.data?JSON.parse(X.data):null,cron:X.cron,status:X.status,attempts:X.attempts,lastError:X.last_error,nextRetryAt:X.next_retry_at,createdAt:X.created_at,updatedAt:X.updated_at}))}async cancelEvent(Y,X,J){let G=await this.db.updateTable("events").set({status:"failed",last_error:"Cancelled by publisher",updated_at:new Date().toISOString()}).where("id","=",Y).where("organization_id","=",X).where("source","=",J).where("status","in",["pending","processing"]).executeTakeFirst();if((G.numUpdatedRows??0n)>0n)await this.db.updateTable("event_deliveries").set({status:"failed",last_error:"Event cancelled by publisher"}).where("event_id","=",Y).where("status","in",["pending","processing"]).execute();return{success:(G.numUpdatedRows??0n)>0n}}async scheduleRetryWithoutAttemptIncrement(Y,X){if(Y.length===0)return;let J=new Date(Date.now()+X).toISOString();await this.db.updateTable("event_deliveries").set({status:"pending",next_retry_at:J}).where("id","in",Y).execute()}async ackDelivery(Y,X,J){if(!await this.db.selectFrom("events").select(["id"]).where("id","=",Y).where("organization_id","=",X).executeTakeFirst())return{success:!1};let K=((await this.db.updateTable("event_deliveries").set({status:"delivered",delivered_at:new Date().toISOString()}).where("event_id","=",Y).where("status","in",["pending","processing"]).where((Z)=>Z.exists(Z.selectFrom("event_subscriptions").select("id").whereRef("event_subscriptions.id","=","event_deliveries.subscription_id").where("event_subscriptions.connection_id","=",J).where("event_subscriptions.organization_id","=",X))).executeTakeFirst()).numUpdatedRows??0n)>0n;if(K)await this.updateEventStatus(Y);return{success:K}}async syncSubscriptions(Y){let{organizationId:X,connectionId:J,subscriptions:G}=Y,W=(P,R)=>{return`${P}::${R??""}`},K=await this.listSubscriptions(X,J),Z=new Map;for(let P of K)Z.set(W(P.eventType,P.publisher),P);let Q=new Map;for(let P of G)Q.set(W(P.eventType,P.publisher),P);let H=new Date().toISOString(),$=[],V=[],z=[],U=0;for(let[P,R]of Q){let I=Z.get(P);if(!I)$.push({id:crypto.randomUUID(),organization_id:X,connection_id:J,event_type:R.eventType,publisher:R.publisher??null,filter:R.filter??null,enabled:1,created_at:H,updated_at:H});else{let T=I.filter??null,E=R.filter??null;if(T!==E)V.push({id:I.id,filter:E});else U++}}for(let[P,R]of Z)if(!Q.has(P))z.push(R.id);if($.length>0)await this.db.insertInto("event_subscriptions").values($).execute();if(V.length>0)await Promise.all(V.map((P)=>this.db.updateTable("event_subscriptions").set({filter:P.filter,updated_at:H}).where("id","=",P.id).execute()));if(z.length>0)await this.db.deleteFrom("event_subscriptions").where("id","in",z).execute();let q=$.length,L=V.length,N=z.length,M=await this.listSubscriptions(X,J);return{created:q,updated:L,deleted:N,unchanged:U,subscriptions:M}}}function oO6(Y){return new rO6(Y)}class sO6{listeners=new Map;totalCount=0;strategy=null;started=!1;async start(Y){if(this.started){if(!Y)return;await this.stop()}this.strategy=Y,await this.strategy.start((X,J)=>this.localEmit(X,J)),this.started=!0}async stop(){if(!this.started||!this.strategy)return;await this.strategy.stop(),this.started=!1}add(Y){if(this.totalCount>=500)return console.warn("[SSEHub] Total connection limit reached (500)"),null;let X=this.listeners.get(Y.organizationId);if(!X)X=new Map,this.listeners.set(Y.organizationId,X);if(X.size>=50)return console.warn(`[SSEHub] Per-org connection limit reached for ${Y.organizationId} (50)`),null;return X.set(Y.id,Y),this.totalCount++,Y.id}remove(Y,X){let J=this.listeners.get(Y);if(!J)return;if(J.delete(X)){if(this.totalCount--,J.size===0)this.listeners.delete(Y)}}emit(Y,X){if(this.strategy)this.strategy.broadcast(Y,X);else this.localEmit(Y,X)}countForOrg(Y){return this.listeners.get(Y)?.size??0}get count(){return this.totalCount}localEmit(Y,X){let J=this.listeners.get(Y);if(!J||J.size===0)return;for(let G of J.values()){if(G.typePatterns&&!KD8(X.type,G.typePatterns))continue;try{G.push(X)}catch{this.remove(Y,G.id)}}}}function KD8(Y,X){for(let J of X){if(J===Y)return!0;if(J.endsWith(".*")){let G=J.slice(0,-1);if(Y.startsWith(G))return!0}}return!1}function tO6(Y){return{id:Y.id,type:Y.type,source:Y.source,subject:Y.subject,data:Y.data?HD8(Y.data):void 0,time:Y.time}}function HD8(Y){if(typeof Y==="string")try{return JSON.parse(Y)}catch{return Y}return Y}var N$;var QG1=A(()=>{N$=new sO6});function eO6(Y){if(typeof Y==="object"&&Y!==null){let G=Y,W=G.status??G.code;if(typeof W==="number"&&$D8.has(W))return!0}let X=Y instanceof Error?Y.message:typeof Y==="string"?Y:"";if(!X)return!1;let J=X.toLowerCase();if(/\b401\b/.test(J))return!0;return FD8.some((G)=>J.includes(G))}var $D8,FD8,Tc;var Um1=A(()=>{$D8=new Set([401]),FD8=["unauthorized","invalid_token","invalid api key","api key required","api-key required"];Tc=class Tc extends Error{constructor(Y){super(Y);this.name="PermanentDeliveryError"}}});var KG1;var qm1=A(()=>{KG1={pollIntervalMs:5000,batchSize:100,maxAttempts:20,retryDelayMs:1000,maxDelayMs:3600000}});function VD8(Y){return Y.endsWith("_self")}function zD8(Y){return Y.slice(0,-5)}function YB6(){return async(Y,X)=>{try{if(VD8(Y)&&lM1()){let Z=zD8(Y),Q=await xV.create();if(await qV0(X,{organizationId:Z,connectionId:Y,publish:async(V,z,U,q)=>{await Q.eventBus.publish(Z,Y,{type:V,subject:z,data:U,deliverAt:q?.deliverAt})},createMCPProxy:async(V)=>{let z={...Q,getOrCreateClient:Pj()},U=await Qm1(V,z);return{callTool:async(q,L,N)=>{let M=await U.callTool(q,L,N);return{content:M.content,structuredContent:M.structuredContent,isError:M.isError}},close:()=>U.close()}}}))return{success:!0}}let J=await xV.create(),G=await Qm1(Y,J),K=await _O1.forClient(Ac(G)).ON_EVENTS({events:X});return{success:K.success,error:K.error,retryAfter:K.retryAfter,results:K.results}}catch(J){let G=J instanceof Error?J.message:String(J);if(console.error(`[EventBus] Failed to notify connection ${Y}:`,G),eO6(J))throw new Tc(G);return{success:!1,error:G}}}}var XB6=A(()=>{YG1();oR();_51();Dh();F_();Um1()});function JB6(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 UD8(Y){let X=new Map;for(let G of Y){let W=G.subscription.connectionId,K=X.get(W);if(K){if(K.deliveryIds.push(G.delivery.id),!K.seenEventIds.has(G.event.id))K.seenEventIds.add(G.event.id),K.events.push(JB6(G.event))}else X.set(W,{connectionId:G.subscription.connectionId,deliveryIds:[G.delivery.id],events:[JB6(G.event)],seenEventIds:new Set([G.event.id])})}let J=new Map;for(let[G,W]of X)J.set(G,{connectionId:W.connectionId,deliveryIds:W.deliveryIds,events:W.events});return J}class Lm1{storage;notifySubscriber;running=!1;processing=!1;pendingNotify=!1;config;eventTriggerEngine;constructor(Y,X,J){this.storage=Y;this.notifySubscriber=J??YB6(),this.config={...KG1,...X}}setEventTriggerEngine(Y){this.eventTriggerEngine=Y}async start(){if(this.running)return;let Y=await this.storage.resetStuckDeliveries();if(Y>0)console.log(`[EventBus] Reset ${Y} stuck deliveries from previous shutdown`);let X=await this.storage.findOrphanedCronEvents();for(let J of X)await this.scheduleNextCronDelivery(J),console.log(`[EventBus] Recovered orphaned cron event ${J.id} (${J.type}, cron: ${J.cron})`);if(X.length>0)console.log(`[EventBus] Recovered ${X.length} orphaned cron event(s)`);this.running=!0}stop(){this.running=!1}isRunning(){return this.running}async processNow(){if(!this.running)return;if(this.processing){this.pendingNotify=!0;return}this.processing=!0;try{do this.pendingNotify=!1,await this.processEvents();while(this.pendingNotify)}catch(Y){console.error("[EventBus] Error processing events:",Y)}finally{this.processing=!1}}async processEvents(){let Y=await this.storage.claimPendingDeliveries(this.config.batchSize);if(Y.length===0)return;let X=UD8(Y),J=await Promise.allSettled(Array.from(X.entries()).map(async([K,Z])=>{let Q=new Set;try{let $=await this.notifySubscriber(Z.connectionId,Z.events);if($.results&&Object.keys($.results).length>0)await this.processPerEventResults(Z,$);else if($.success)await this.storage.markDeliveriesDelivered(Z.deliveryIds);else if($.retryAfter&&$.retryAfter>0)await this.storage.scheduleRetryWithoutAttemptIncrement(Z.deliveryIds,$.retryAfter);else await this.storage.markDeliveriesFailed(Z.deliveryIds,$.error||"Subscriber returned success=false",this.config.maxAttempts,this.config.retryDelayMs,this.config.maxDelayMs)}catch($){if($ instanceof Tc){await this.storage.markDeliveriesPermanentlyFailed(Z.deliveryIds,$.message);for(let V of Z.events)Q.add(V.id)}else{let V=$ instanceof Error?$.message:String($);console.error(`[EventBus] Failed to notify subscription ${K}:`,V),await this.storage.markDeliveriesFailed(Z.deliveryIds,V,this.config.maxAttempts,this.config.retryDelayMs,this.config.maxDelayMs)}}let H=new Set;for(let $ of Y)if(Z.deliveryIds.includes($.delivery.id))H.add($.event.id);return{eventIds:H,permanentlyFailed:Q}})),G=new Set,W=new Set;for(let K of J)if(K.status==="fulfilled"){for(let Z of K.value.eventIds)G.add(Z);for(let Z of K.value.permanentlyFailed)W.add(Z)}for(let K of G)try{await this.storage.updateEventStatus(K);let Z=Y.find((Q)=>Q.event.id===K)?.event;if(Z?.cron&&!W.has(K))await this.scheduleNextCronDelivery(Z)}catch(Z){console.error(`[EventBus] Failed to update event status ${K}:`,Z)}if(this.eventTriggerEngine){let K=new Set,Z=[];for(let Q of Y){if(Q.delivery.attempts>0)continue;if(!K.has(Q.event.id))K.add(Q.event.id),Z.push({source:Q.event.source,type:Q.event.type,data:Q.event.data,organizationId:Q.event.organizationId})}if(Z.length>0)this.eventTriggerEngine.notifyEvents(Z)}}async processPerEventResults(Y,X){let J=[],G=new Map,W=[],K=new Map;for(let Z=0;Z<Y.events.length;Z++){let Q=Y.events?.[Z];if(!Q)continue;let H=Y.deliveryIds?.[Z];if(!H)continue;K.set(Q.id,H)}for(let Z of Y.events){let Q=K.get(Z.id);if(!Q)continue;let H=X.results?.[Z.id];if(H)if(H.success)J.push(Q);else if(H.retryAfter&&H.retryAfter>0){let $=G.get(H.retryAfter)||[];$.push(Q),G.set(H.retryAfter,$)}else W.push({deliveryId:Q,error:H.error||"Event processing failed"});else if(X.success)J.push(Q);else if(X.retryAfter&&X.retryAfter>0){let $=G.get(X.retryAfter)||[];$.push(Q),G.set(X.retryAfter,$)}else W.push({deliveryId:Q,error:X.error||"Batch processing failed"})}if(J.length>0)await this.storage.markDeliveriesDelivered(J);for(let[Z,Q]of G)await this.storage.scheduleRetryWithoutAttemptIncrement(Q,Z);if(W.length>0){let Z=new Map;for(let{deliveryId:Q,error:H}of W){let $=Z.get(H)||[];$.push(Q),Z.set(H,$)}for(let[Q,H]of Z)await this.storage.markDeliveriesFailed(H,Q,this.config.maxAttempts,this.config.retryDelayMs,this.config.maxDelayMs)}}async scheduleNextCronDelivery(Y){if(!Y.cron)return;try{let J=new rO(Y.cron,{timezone:"UTC"}).nextRun();if(!J){console.log(`[EventBus] Cron expression for event ${Y.id} has no more runs`);return}let G=J.toISOString(),W=await this.storage.getMatchingSubscriptions(Y);if(W.length===0){console.log(`[EventBus] No subscriptions for cron event ${Y.id}, skipping next delivery`);return}await this.storage.createDeliveries(Y.id,W.map((K)=>K.id),G),console.log(`[EventBus] Scheduled next cron delivery for event ${Y.id} at ${G}`)}catch(X){console.error(`[EventBus] Failed to schedule next cron delivery for event ${Y.id}:`,X)}}}var GB6=A(()=>{Kl();Um1();qm1();XB6()});class Nm1{storage;worker;notifyStrategy;running=!1;constructor(Y){this.storage=Y.storage,this.notifyStrategy=Y.notifyStrategy,this.worker=new Lm1(this.storage,Y.config)}setEventTriggerEngine(Y){this.worker.setEventTriggerEngine(Y)}async publish(Y,X,J){if(J.deliverAt&&J.cron)throw Error("Cannot set both deliverAt and cron. Use one or the other.");let G;if(J.cron){try{let V=new rO(J.cron,{timezone:"UTC"}).nextRun();if(!V)throw Error("Cron expression does not produce a next run time");G=V.toISOString()}catch($){throw Error(`Invalid cron expression: ${$ instanceof Error?$.message:String($)}`)}let H=await this.storage.findActiveCronEvent(Y,J.type,X,J.cron);if(H)return H}let W=crypto.randomUUID(),K=new Date().toISOString(),Z=await this.storage.publishEvent({id:W,organizationId:Y,type:J.type,source:X,subject:J.subject,time:K,data:J.data,cron:J.cron});N$.emit(Y,tO6(Z));let Q=await this.storage.getMatchingSubscriptions(Z);if(Q.length>0){let H=J.deliverAt??G;if(await this.storage.createDeliveries(W,Q.map(($)=>$.id),H),this.notifyStrategy&&!H)await this.notifyStrategy.notify(W).catch(($)=>{console.warn("[EventBus] Notify failed (non-critical):",$)})}return Z}async subscribe(Y,X){return this.storage.subscribe({id:crypto.randomUUID(),organizationId:Y,connectionId:X.connectionId,publisher:X.publisher,eventType:X.eventType,filter:X.filter})}async unsubscribe(Y,X){return this.storage.unsubscribe(X,Y)}async listSubscriptions(Y,X){return this.storage.listSubscriptions(Y,X)}async getSubscription(Y,X){return this.storage.getSubscription(X,Y)}async getEvent(Y,X){return this.storage.getEvent(X,Y)}async cancelEvent(Y,X,J){return this.storage.cancelEvent(X,Y,J)}async ackEvent(Y,X,J){return this.storage.ackDelivery(X,Y,J)}async syncSubscriptions(Y,X){return this.storage.syncSubscriptions({organizationId:Y,...X})}async start(){if(this.running)return;if(this.running=!0,await this.worker.start(),this.notifyStrategy)await this.notifyStrategy.start(()=>{this.worker.processNow().catch((Y)=>{console.error("[EventBus] Error processing after notify:",Y)})});await this.worker.processNow().catch((Y)=>{console.error("[EventBus] Error processing pending events on startup:",Y)})}async stop(){if(!this.running)return;if(this.running=!1,this.worker.stop(),this.notifyStrategy)try{await this.notifyStrategy.stop()}catch(Y){console.error("[EventBus] Error stopping notify strategy:",Y)}}isRunning(){return this.running}}var WB6=A(()=>{Kl();QG1();GB6()});class Om1{options;sub=null;onNotify=null;encoder=new TextEncoder;constructor(Y){this.options=Y}async start(Y){if(this.sub)return;this.onNotify=Y,this.sub=this.options.getConnection().subscribe("mesh.events.notify"),(async()=>{for await(let X of this.sub)this.onNotify?.()})().catch((X)=>{console.error("[NatsNotify] Subscription error:",X)})}async stop(){this.sub?.unsubscribe(),this.sub=null,this.onNotify=null}async notify(Y){try{this.options.getConnection().publish("mesh.events.notify",this.encoder.encode(Y))}catch(X){console.warn("[NatsNotify] Publish failed (non-critical):",X)}}}class Bm1{options;sub=null;localEmit=null;originId=crypto.randomUUID();encoder=new TextEncoder;constructor(Y){this.options=Y}async start(Y){if(this.localEmit=Y,this.sub)return;this.sub=this.options.getConnection().subscribe("mesh.sse.broadcast");let X=new TextDecoder;(async()=>{for await(let J of this.sub)try{let G=JSON.parse(X.decode(J.data));if(typeof G?.originId!=="string"||typeof G?.organizationId!=="string"||typeof G?.event?.id!=="string"||typeof G?.event?.type!=="string")continue;if(G.originId===this.originId)continue;this.localEmit?.(G.organizationId,G.event)}catch{}})().catch((J)=>{console.error("[NatsSSEBroadcast] Subscription error:",J)})}broadcast(Y,X){this.localEmit?.(Y,X);let J={originId:this.originId,organizationId:Y,event:X};try{this.options.getConnection().publish("mesh.sse.broadcast",this.encoder.encode(JSON.stringify(J)))}catch(G){console.warn("[NatsSSEBroadcast] Publish failed (non-critical):",G)}}async stop(){this.sub?.unsubscribe(),this.sub=null,this.localEmit=null}}function ZB6(...Y){return{async start(X){await Promise.all(Y.map((J)=>J.start(X)))},async stop(){await Promise.all(Y.map((X)=>X.stop().catch((J)=>{console.error("[NotifyStrategy] Error stopping strategy:",J)})))},async notify(X){await Promise.all(Y.map((J)=>J.notify(X).catch((G)=>{console.warn("[NotifyStrategy] Notify failed (non-critical):",G)})))}}}class Dm1{intervalMs;timer=null;onNotify=null;constructor(Y){this.intervalMs=Y}async start(Y){if(this.timer)return;this.onNotify=Y,this.scheduleNext()}async stop(){if(this.timer)clearTimeout(this.timer),this.timer=null;this.onNotify=null}async notify(Y){if(this.onNotify)this.onNotify()}scheduleNext(){this.timer=setTimeout(()=>{if(this.onNotify)this.onNotify();if(this.timer)this.scheduleNext()},this.intervalMs)}}function QB6(Y,X,J){let G=oO6(Y.db),W=J?.pollIntervalMs??KG1.pollIntervalMs,K=ZB6(new Dm1(W),new Om1({getConnection:()=>X.getConnection()})),Z=new Bm1({getConnection:()=>X.getConnection()});return N$.start(Z).catch((Q)=>{console.error("[SSEHub] Failed to start broadcast strategy:",Q)}),new Nm1({storage:G,config:J,notifyStrategy:K})}var wm1=A(()=>{WB6();qm1();QG1();QG1()});var KB6=()=>{};var Mm1=()=>{};var HB6=()=>{};var qD8,BiY;var $B6=A(()=>{KB6();Mm1();QB();HB6();qD8={br:".br",zstd:".zst",gzip:".gz"},BiY=Object.keys(qD8)});var FB6=A(()=>{$B6()});var VB6=()=>{};var zB6=A(()=>{VB6()});var UB6=()=>{};var qB6=A(()=>{tx1()});var Am1=A(()=>{KB();qB6()});var Pm1="x-hono-disable-ssg",biY;var Em1=A(()=>{Am1();biY=(()=>{try{return new Response("SSG is disabled",{status:404,headers:{[Pm1]:"true"}})}catch{return null}})()});var LB6=A(()=>{pJ1()});var Tm1=A(()=>{LB6()});var NB6=A(()=>{zB6();UB6();Mm1();Em1();Tm1();Am1()});var OB6=A(()=>{Em1();Tm1();NB6()});var BaY;var BB6=A(()=>{OB6();({write:BaY}=Bun)});var OD8=class{#Y;constructor(Y){this.#Y=Y,this.raw=Y.raw,this.url=Y.url?new URL(Y.url):null,this.protocol=Y.protocol??null}send(Y,X){this.#Y.send(Y,X??{})}raw;binaryType="arraybuffer";get readyState(){return this.#Y.readyState}url;protocol;close(Y,X){this.#Y.close(Y,X)}},DB6=(Y)=>{return(...X)=>{if(typeof X[0]==="function"){let[J,G]=X;return async function(K,Z){let Q=await J(K),H=await Y(K,Q,G);if(H)return H;await Z()}}else{let[J,G,W]=X;return(async()=>{let K=await Y(J,G,W);if(!K)throw Error("Failed to upgrade WebSocket");return K})()}}};var wB6=()=>{};var Rc=(Y)=>("server"in Y.env)?Y.env.server:Y.env;var HG1=()=>{};var BD8;var MB6=A(()=>{wB6();HG1();BD8=DB6((Y,X)=>{let J=Rc(Y);if(!J)throw TypeError("env has to include the 2nd argument of fetch.");if(J.upgrade(Y.req.raw,{data:{events:X,url:new URL(Y.req.url),protocol:Y.req.url}}))return new Response(null);return})});var Rm1=(Y)=>{let X=Rc(Y);if(!X)throw TypeError("env has to include the 2nd argument of fetch.");if(typeof X.requestIP!=="function")throw TypeError("server.requestIP is not a function.");let J=X.requestIP(Y.req.raw);if(!J)return{remote:{}};return{remote:{address:J.address,addressType:J.family==="IPv6"||J.family==="IPv4"?J.family:void 0,port:J.port}}};var AB6=A(()=>{HG1()});var PB6=A(()=>{FB6();BB6();MB6();AB6();HG1()});var EB6;var TB6=A(()=>{EB6={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 VG1={};M6(VG1,{waitForSeed:()=>SD8,seedLocalMode:()=>CD8,markSeedComplete:()=>jD8,isLocalMode:()=>rP,getLocalAdminUser:()=>Cm1,getLocalAdminPassword:()=>FG1});import{randomBytes as DD8}from"crypto";import{mkdir as wD8,writeFile as MD8,chmod as AD8}from"fs/promises";import{userInfo as PD8}from"os";import{join as ED8}from"path";async function FG1(){if($G1)return $G1;let Y=$6.DATA_DIR,X=ED8(Y,"secrets.json");try{let G=Bun.file(X);if(await G.exists()){let W=await G.json();if(W.LOCAL_ADMIN_PASSWORD){let K=W.LOCAL_ADMIN_PASSWORD;return $G1=K,K}}}catch{}let J=DD8(24).toString("base64");try{await wD8(Y,{recursive:!0,mode:448});let G={};try{let W=Bun.file(X);if(await W.exists())G=await W.json()}catch{}G.LOCAL_ADMIN_PASSWORD=J,await MD8(X,JSON.stringify(G,null,2),{mode:384}),await AD8(X,384)}catch(G){console.warn("Warning: Could not save secrets file:",G)}return $G1=J,J}function RB6(){try{return PD8().username||"local"}catch{return"local"}}function TD8(Y){return Y.charAt(0).toUpperCase()+Y.slice(1)}async function RD8(){let Y=bQ(),X=await Y.db.selectFrom("user").select(Y.db.fn.countAll().as("count")).executeTakeFirst();return Number(X?.count??0)===0}async function CD8(){if(!await RD8())return!1;let X=RB6(),J=`${X}@localhost.mesh`,G=TD8(X),W=await FG1(),K=await SZ.api.signUpEmail({body:{email:J,password:W,name:G}});if(!K?.user?.id)throw Error("Failed to create local admin user");let Z=K.user.id,Q=bQ();await Q.db.updateTable("user").set({role:"admin"}).where("id","=",Z).execute();let H=`${X}-local`.toLowerCase().replace(/[^a-z0-9-]/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,""),$=`${G} Local`;return await Q.db.updateTable("organization").set({name:$,slug:H}).where("id","in",(V)=>V.selectFrom("member").select("organizationId").where("userId","=",Z)).execute(),!0}async function Cm1(){let Y=bQ(),X=`${RB6()}@localhost.mesh`;return Y.db.selectFrom("user").where("email","=",X).selectAll().executeTakeFirst()}function rP(){return $6.MESH_LOCAL_MODE}function jD8(){CB6()}function SD8(){return ID8}var $G1=null,CB6,ID8;var z_=A(()=>{gA();b5();SO();ID8=new Promise((Y)=>{if(CB6=Y,!rP())Y()})});var Im1,IB6;var jB6=A(()=>{_Z();PB6();b5();SO();TB6();z_();Im1=new aY;Im1.get("/config",async(Y)=>{try{let X=Object.keys(F8.socialProviders??{}),J=X.length>0,G=X.map((Z)=>({name:Z,icon:EB6[Z].icon})),W=$6.NODE_ENV!=="production"||$6.UNSAFE_ALLOW_STDIO_TRANSPORT,K={emailAndPassword:{enabled:F8.emailAndPassword?.enabled??!1},magicLink:{enabled:F8.magicLinkConfig?.enabled??!1},emailOtp:{enabled:F8.emailOtpConfig?.enabled??!1},resetPassword:{enabled:uJ1},socialProviders:{enabled:J,providers:G},sso:F8.ssoConfig?{enabled:!0,providerId:F8.ssoConfig.providerId}:{enabled:!1},stdioEnabled:W,localMode:rP()};return Y.json({success:!0,config:K})}catch(X){let J=X instanceof Error?X.message:"Failed to load auth config";return Y.json({success:!1,error:J},500)}});Im1.post("/local-session",async(Y)=>{if(!rP())return Y.json({success:!1,error:"Local mode is not active"},403);let X;try{X=Rm1(Y).remote.address}catch{}if(!(X==="127.0.0.1"||X==="::1"||X==="::ffff:127.0.0.1"))return Y.json({success:!1,error:"Forbidden"},403);try{let{waitForSeed:G}=await Promise.resolve().then(() => (z_(),VG1));await G();let{auth:W}=await Promise.resolve().then(() => (SO(),CV6)),K=await Cm1();if(!K)return Y.json({success:!1,error:"Local admin user not found"},500);let Z=await FG1();return await W.api.signInEmail({body:{email:K.email,password:Z},asResponse:!0})}catch(G){return console.error("Failed to create local session:",G),Y.json({success:!1,error:G instanceof Error?G.message:"Failed to create local session"},500)}});IB6=Im1});function SB6(Y){let X=Y.filter((G)=>G.role==="system"),J=Y.find((G)=>G.role!=="system");return{systemMessages:X,requestMessage:J}}function _D8(Y){let X=!1,J=Y.map((G)=>{if(G.role!=="assistant")return G;if(!G.parts.some((K)=>("state"in K)&&K.state==="approval-requested"))return G;return X=!0,{...G,parts:G.parts.map((K)=>{if(!("state"in K)||K.state!=="approval-requested"||!("approval"in K)||!K.approval)return K;return{...K,state:"output-denied",approval:{...K.approval,approved:!1,reason:"User sent a new message without approving this tool call."}}})}});return X?J:Y}function kD8(Y){let[X,J]=Y.reduce((G,W)=>{if(W.role==="system")G[0].push(W);else G[1].push(W);return G},[[],[]]);return{systemMessages:X,messages:J}}async function vD8(Y,X){return await Y.loadHistory(X)}function fD8(Y,X){let J=Y.filter((K)=>K.parts&&K.parts.length>0),G=J.findIndex((K)=>K.id===X.id);return G>=0?[...J.slice(0,G),X]:[...J,X]}async function _B6(Y,X,J,G){let W=await vD8(Y,G),K=fD8(W,X);return[...J,...K]}async function kB6(Y,X){let J=await EQ0({messages:Y}),G=_D8(J),W=await PQ0(G,{tools:X.tools,ignoreIncompleteToolCalls:!0}),{systemMessages:K,messages:Z}=kD8(W),Q=X.models.thinking.capabilities?.reasoning!==!1,H=RQ0({messages:Z,reasoning:Q?"all":"none",emptyMessages:"remove",toolCalls:"none"});return{systemMessages:K,messages:H,originalMessages:J}}var jm1=A(()=>{MK()});function vB6(Y){let{toolOutputMap:X}=Y;return V7({description:"The input is a string. Dont make assumptions about its format; prefer using regexes and string manipulation to extract the desired information. You may call this tool multiple times to extract the desired information.",inputExamples:[{input:{tool_call_id:"tool_call_id_1",code:"export default (input) => { return input.match(/[a-z]/g); }"}},{input:{tool_call_id:"tool_call_id_2",code:"export default (input) => { return input.split(' ').map(word => word.length); }"}}],inputSchema:M0(F.object({tool_call_id:F.string(),code:F.string().min(1).describe("JavaScript code to transform the tool output. The code must be an ES module: `export default (input) => { ... }`")})),execute:async({tool_call_id:J,code:G})=>{if(!X.has(J))throw Error(`Tool output not found for tool call id: ${J}`);let W=X.get(J),K=await wv1({input:W,code:G,timeoutMs:5000}),Z=Sm1({return:K.returnValue});if(Z>4000)throw Error(`Tool call ${J} output is too long to display (${Z} tokens), reduce or truncate the output`);return{result:K.returnValue,error:K.error,consoleLogs:K.consoleLogs}}})}function bD8(Y){if(!Y)return 0;let X=Y.match(hD8)?.length??0,J=Y.length-X;return Math.ceil(J/yD8)+Math.ceil(X*1.5)}function Sm1(Y){let X=typeof Y==="string"?Y:JSON.stringify(Y);return bD8(X)}var yD8=4,hD8;var _m1=A(()=>{MK();o1();M51();hD8=/[\u3000-\u303f\u3040-\u309f\u30a0-\u30ff\u4e00-\u9fff\u3400-\u4dbf\uf900-\ufaff]/g});function zG1(Y,X){if(Y==="yolo")return!1;if(Y==="none")return!0;return X!==!0}function UG1(Y){let X=Y.get("meshContext").organization;if(!X)throw Error("Organization context is required");if((X.slug??X.id)!==Y.req.param("org"))throw Error("Organization mismatch");return X}async function Cc(Y,X,J,G="none",W){let K=!W?.disableOutputTruncation,Q=(await Y.listTools()).tools.map((H)=>{let{name:$,title:V,description:z,inputSchema:U,annotations:q,_meta:L}=H;return[$,V7({title:V??$,description:z,inputSchema:wK(U),outputSchema:void 0,needsApproval:zG1(G,q?.readOnlyHint),execute:async(N,M)=>{let P=performance.now();try{return await Y.callTool({name:H.name,arguments:N},h$,{signal:M.abortSignal,timeout:_O6})}finally{if(J){let R=performance.now()-P;J.write({type:"data-tool-metadata",id:M.toolCallId,data:{_meta:L,annotations:q,latencyMs:R}})}}},toModelOutput:async({output:N,toolCallId:M})=>{if(K){let R=Sm1(N.structuredContent??N.content);if(R>4000)return X.set(M,JSON.stringify(N.structuredContent??N.content)),{type:"text",value:`Tool call ${M} output is too long to display (${R} tokens), use the read_tool_output tool`}}if(N.isError)return{type:"error-text",value:N.content.map((I)=>I.type==="text"?I.text:null).filter(Boolean).join(`
1764
+ Example output: Available Tools Overview`;var aP=A(()=>{TW();gO6=["user_ask","subtask"]});function ZG1(Y){return typeof Y==="string"?Y:Y.toISOString()}class Pc{inner;organizationId;constructor(Y,X){this.inner=Y;this.organizationId=X}requireOrg(){if(!this.organizationId)throw Error("OrgScopedThreadStorage: thread operations require an authenticated organization");return this.organizationId}create(Y){let X=this.requireOrg();return this.inner.create({...Y,organization_id:X})}get(Y){return this.inner.get(Y,this.requireOrg())}update(Y,X){return this.inner.update(Y,this.requireOrg(),X)}forceFailIfInProgress(Y){return this.inner.forceFailIfInProgress(Y,this.requireOrg())}delete(Y){return this.inner.delete(Y,this.requireOrg())}list(Y,X){return this.inner.list(this.requireOrg(),Y,X)}listByTriggerIds(Y,X){return this.inner.listByTriggerIds(this.requireOrg(),Y,X)}saveMessages(Y){return this.inner.saveMessages(Y,this.requireOrg())}listMessages(Y,X){return this.inner.listMessages(Y,this.requireOrg(),X)}}class Ec{db;constructor(Y){this.db=Y}async create(Y){let X=Y.id??a8("thrd"),J=new Date().toISOString();if(!Y.organization_id)throw Error("organization_id is required");if(!Y.created_by)throw Error("created_by is required");if(!Y.title)Y.title=WG1;let G={id:X,organization_id:Y.organization_id,title:Y.title,description:Y.description??null,status:Y.status??"completed",trigger_id:Y.trigger_id??null,created_at:J,updated_at:J,created_by:Y.created_by,updated_by:Y.updated_by??null},W=await this.db.insertInto("threads").values(G).returningAll().executeTakeFirstOrThrow();return this.threadFromDbRow(W)}async get(Y,X){let J=await this.db.selectFrom("threads").selectAll().where("id","=",Y).where("organization_id","=",X).executeTakeFirst();return J?this.threadFromDbRow(J):null}async update(Y,X,J){let W={updated_at:new Date().toISOString()};if(J.title!==void 0)W.title=J.title;if(J.description!==void 0)W.description=J.description;if(J.updated_by!==void 0)W.updated_by=J.updated_by;if(J.hidden!==void 0)W.hidden=J.hidden;if(J.status!==void 0)W.status=J.status;await this.db.updateTable("threads").set(W).where("id","=",Y).where("organization_id","=",X).execute();let K=await this.get(Y,X);if(!K)throw Error("Thread not found after update");return K}async forceFailIfInProgress(Y,X){let J=new Date().toISOString();return((await this.db.updateTable("threads").set({status:"failed",updated_at:J}).where("id","=",Y).where("organization_id","=",X).where("status","=","in_progress").executeTakeFirst()).numUpdatedRows??BigInt(0))>BigInt(0)}async delete(Y,X){await this.db.deleteFrom("threads").where("id","=",Y).where("organization_id","=",X).execute()}async list(Y,X,J){let G=this.db.selectFrom("threads").selectAll().where("organization_id","=",Y).where("hidden","=",!1).orderBy("updated_at","desc");if(X)G=G.where("created_by","=",X);let W=this.db.selectFrom("threads").select((Q)=>Q.fn.count("id").as("count")).where("organization_id","=",Y).where("hidden","=",!1);if(X)W=W.where("created_by","=",X);if(J?.limit)G=G.limit(J.limit);if(J?.offset)G=G.offset(J.offset);let[K,Z]=await Promise.all([G.execute(),W.executeTakeFirst()]);return{threads:K.map((Q)=>this.threadFromDbRow(Q)),total:Number(Z?.count||0)}}async listByTriggerIds(Y,X,J){if(X.length===0)return{threads:[],total:0};let G=this.db.selectFrom("threads").selectAll().where("organization_id","=",Y).where("hidden","=",!1).where("trigger_id","in",X).orderBy("updated_at","desc"),W=this.db.selectFrom("threads").select((Q)=>Q.fn.count("id").as("count")).where("organization_id","=",Y).where("hidden","=",!1).where("trigger_id","in",X);if(J?.limit)G=G.limit(J.limit);if(J?.offset)G=G.offset(J.offset);let[K,Z]=await Promise.all([G.execute(),W.executeTakeFirst()]);return{threads:K.map((Q)=>this.threadFromDbRow(Q)),total:Number(Z?.count||0)}}async saveMessages(Y,X){let J=new Date().toISOString(),G=Y[0]?.thread_id;if(!G)throw Error("thread_id is required when creating multiple messages");if(!await this.get(G,X))throw Error("Thread not found or access denied");let K=new Map;for(let $ of Y){let V=K.get($.id);if(V&&V.thread_id!==$.thread_id)throw Error(`Duplicate message id "${$.id}" with conflicting thread_ids: "${V.thread_id}" vs "${$.thread_id}"`);K.set($.id,$)}let Z=[...K.values()],Q=Z.find(($)=>$.thread_id!==G);if(Q)throw Error(`All messages must target the same thread. Expected thread_id "${G}", but message "${Q.id}" has thread_id "${Q.thread_id}"`);let H=Z.map(($)=>({id:$.id,thread_id:G,metadata:$.metadata?JSON.stringify($.metadata):null,parts:JSON.stringify($.parts),role:$.role,created_at:$.created_at??J,updated_at:J}));await this.db.transaction().execute(async($)=>{await $.insertInto("thread_messages").values(H).onConflict((V)=>V.column("id").doUpdateSet((z)=>({metadata:z.ref("excluded.metadata"),parts:z.ref("excluded.parts"),role:z.ref("excluded.role"),updated_at:z.ref("excluded.updated_at")}))).execute(),await $.updateTable("threads").set({updated_at:J}).where("id","=",G).where("organization_id","=",X).execute()})}async listMessages(Y,X,J){if(!await this.get(Y,X))return{messages:[],total:0};let W=J?.sort??"asc",K=this.db.selectFrom("thread_messages").selectAll().where("thread_id","=",Y).orderBy("created_at",W).orderBy("id",W),Z=this.db.selectFrom("thread_messages").select(($)=>$.fn.count("id").as("count")).where("thread_id","=",Y);if(J?.limit)K=K.limit(J.limit);if(J?.offset)K=K.offset(J.offset);let[Q,H]=await Promise.all([K.execute(),Z.executeTakeFirst()]);return{messages:Q.map(($)=>this.messageFromDbRow($)),total:Number(H?.count||0)}}threadFromDbRow(Y){return{id:Y.id,organization_id:Y.organization_id,title:Y.title,description:Y.description,status:Y.status,trigger_id:Y.trigger_id??null,created_at:ZG1(Y.created_at),updated_at:ZG1(Y.updated_at),created_by:Y.created_by,updated_by:Y.updated_by,hidden:!!Y.hidden}}messageFromDbRow(Y){let X,J;try{X=Y.metadata?JSON.parse(Y.metadata):void 0}catch(G){console.error(`Failed to parse metadata for message ${Y.id}:`,Y.metadata,G),X=void 0}try{J=typeof Y.parts==="string"?JSON.parse(Y.parts):Y.parts}catch(G){console.error(`Failed to parse parts for message ${Y.id}:`,Y.parts,G),J=[]}return{id:Y.id,thread_id:Y.thread_id,metadata:X,parts:J,role:Y.role,created_at:ZG1(Y.created_at),updated_at:ZG1(Y.updated_at)}}}var Hm1=A(()=>{TW();aP()});import{createHash as oB8}from"crypto";function mO6(Y){return oB8("sha256").update(Y).digest("hex")}class $m1{db;vault;constructor(Y,X){this.db=Y;this.vault=X}rowToKeyInfo(Y){return{id:Y.id,providerId:Y.provider_id,label:Y.label,organizationId:Y.organization_id,createdBy:Y.created_by,createdAt:Y.created_at instanceof Date?Y.created_at.toISOString():String(Y.created_at)}}async create(Y){let X=a8("aik"),J=await this.vault.encrypt(Y.apiKey),G=mO6(Y.apiKey),W=new Date;return await this.db.insertInto("ai_provider_keys").values({id:X,organization_id:Y.organizationId,provider_id:Y.providerId,label:Y.label,encrypted_api_key:J,key_hash:G,created_by:Y.createdBy,created_at:W}).execute(),this.rowToKeyInfo({id:X,provider_id:Y.providerId,label:Y.label,organization_id:Y.organizationId,created_by:Y.createdBy,created_at:W})}async upsert(Y){let X=a8("aik"),J=await this.vault.encrypt(Y.apiKey),G=mO6(Y.apiKey),W=new Date,K=await this.db.insertInto("ai_provider_keys").values({id:X,organization_id:Y.organizationId,provider_id:Y.providerId,label:Y.label,encrypted_api_key:J,key_hash:G,created_by:Y.createdBy,created_at:W}).onConflict((Z)=>Z.columns(["organization_id","provider_id","key_hash"]).doUpdateSet({label:Y.label})).returning(["id","provider_id","label","organization_id","created_by","created_at"]).executeTakeFirstOrThrow();return this.rowToKeyInfo(K)}async list(Y){let X=this.db.selectFrom("ai_provider_keys").where("organization_id","=",Y.organizationId).select(["id","provider_id","label","organization_id","created_by","created_at"]);if(Y.providerId)X=X.where("provider_id","=",Y.providerId);return(await X.orderBy("created_at","desc").execute()).map((G)=>this.rowToKeyInfo(G))}async resolve(Y,X){let J=await this.db.selectFrom("ai_provider_keys").where("id","=",Y).where("organization_id","=",X).selectAll().executeTakeFirstOrThrow(),G=await this.vault.decrypt(J.encrypted_api_key);return{keyInfo:this.rowToKeyInfo(J),apiKey:G}}async delete(Y,X){if(!(await this.db.deleteFrom("ai_provider_keys").where("id","=",Y).where("organization_id","=",X).executeTakeFirst()).numDeletedRows)throw Error(`AI provider key ${Y} not found`)}async findById(Y,X){let J=await this.db.selectFrom("ai_provider_keys").where("id","=",Y).where("organization_id","=",X).select(["id","provider_id","label","organization_id","created_by","created_at"]).executeTakeFirst();if(!J)throw Error("Provider key not found");return this.rowToKeyInfo(J)}}var lO6=A(()=>{TW()});class Fm1{db;constructor(Y){this.db=Y}async create(Y,X,J){let G=crypto.randomUUID(),W=new Date(Date.now()+600000);return await this.db.insertInto("oauth_pkce_states").values({id:G,organization_id:X,user_id:J,code_verifier:Y,expires_at:W,created_at:new Date}).execute(),G}async consume(Y,X,J){let G=await this.db.deleteFrom("oauth_pkce_states").where("id","=",Y).where("organization_id","=",X).where("user_id","=",J).returningAll().executeTakeFirst();if(!G)throw Error("Invalid or expired OAuth state token");if((G.expires_at instanceof Date?G.expires_at:new Date(G.expires_at))<new Date)throw Error("OAuth state token has expired");return G.code_verifier}}function sB8(Y){return Y.includes("/")?Y.split("/").slice(1).join("/"):Y}function tB8(Y){let X=Y.supported_parameters.includes("tools"),J=Y.supported_parameters.includes("reasoning");return{providerId:"openrouter",modelId:sB8(Y.id),title:Y.name,description:Y.description||null,logo:null,capabilities:[...new Set([...Y.architecture.input_modalities,...Y.architecture.output_modalities,...X?["tools"]:[],...J?["reasoning"]:[]])],limits:{contextWindow:Y.context_length,maxOutputTokens:Y.top_provider.max_completion_tokens||null},costs:{input:Number(Y.pricing.prompt)||0,output:Number(Y.pricing.completion)||0}}}function cO6(Y){let X=new Map;for(let J of Y){let G={description:J.description,capabilities:J.capabilities,limits:J.limits,costs:J.costs};X.set(J.modelId,G);let W=J.modelId.replace(/\./g,"-");if(W!==J.modelId)X.set(W,G)}return X}async function eB8(Y){if(Y){let X=await Y.get(dO6,"openrouter");if(X)return cO6(X)}try{let X=await fetch("https://openrouter.ai/api/v1/models",{signal:AbortSignal.timeout(1e4)});if(!X.ok)return new Map;let{data:J}=await X.json(),G=J.map(tB8);if(Y)await Y.set(dO6,"openrouter",G);return cO6(G)}catch{return new Map}}function YD8(Y){let X=Y.replace(/\./g,"-"),J=Y.replace(/-\d{8}$/,""),G=J.replace(/\./g,"-");return[...new Set([Y,X,J,G])]}function XD8(Y,X){return Y.map((J)=>{let W=YD8(J.modelId).map((K)=>X.get(K)).find(Boolean);if(!W)return J;return{...J,description:J.description??W.description??null,capabilities:J.capabilities.length?J.capabilities:W.capabilities??[],limits:J.limits??W.limits??null,costs:J.costs??W.costs??null}})}class Vm1{storage;cache;constructor(Y,X){this.storage=Y;this.cache=X}async activate(Y,X){let{keyInfo:J,apiKey:G}=await this.storage.resolve(Y,X),W=_W[J.providerId];if(!W)throw Error(`Unknown provider: ${J.providerId}`);return W.create(G)}async listModels(Y,X){let{keyInfo:J,apiKey:G}=await this.storage.resolve(Y,X),W=J.providerId;if(this.cache){let z=await this.cache.get(X,W);if(z)return z}let K=_W[W];if(!K)throw Error(`Unknown provider: ${W}`);let Q=await K.create(G).listModels(),H=new Set,$=Q.filter((z)=>{if(H.has(z.modelId))return!1;return H.add(z.modelId),!0});if(W!=="openrouter"){let z=await eB8(this.cache);$=XD8($,z)}let V=$.map((z)=>({...z,providerId:W}));if(this.cache)await this.cache.set(X,W,V);return V}}var dO6="_global";var pO6=A(()=>{ZB()});function JD8(Y){if(!Y)return;try{let X=JSON.parse(Y);if(typeof X!=="object"||X===null||Array.isArray(X))return;let J={};for(let[G,W]of Object.entries(X))if(typeof W==="string")J[G]=W;return Object.keys(J).length>0?J:void 0}catch{return}}function GD8(Y,X){for(let[J,G]of Object.entries(X)){let W=Y[J];if(!W||W.length===0){let K=Y["*"];if(!K||K.length===0)return!1;if(K.includes("*"))continue;for(let Z of G)if(!K.includes(Z))return!1;continue}if(W.includes("*"))continue;for(let K of G)if(!W.includes(K))return!1}return!0}function zm1(Y){let{auth:X,headers:J,role:G,permissions:W,userId:K}=Y,Z=X.api.hasPermission;return{hasPermission:async(Q)=>{if(G&&jx1.includes(G))return!0;if(W)return GD8(W,Q);if(!Z)return console.error("[Auth] hasPermission API not available"),!1;try{if((await Z({headers:J,body:{permission:Q}}))?.success===!0)return!0;let $={};for(let z of Object.keys(Q))$[z]=["*"];return(await Z({headers:J,body:{permission:$}}))?.success===!0}catch(H){return console.error("[Auth] Permission check failed:",H),!1}},organization:{create:async(Q)=>{return X.api.createOrganization({headers:J,body:Q})},update:async(Q)=>{return X.api.updateOrganization({headers:J,body:Q})},delete:async(Q)=>{await X.api.deleteOrganization({headers:J,body:{organizationId:Q}})},get:async(Q)=>{return X.api.getFullOrganization({headers:J,query:Q?{organizationId:Q}:void 0})},list:async(Q)=>{return X.api.listOrganizations({headers:J,query:Q?{userId:Q}:void 0})},addMember:async(Q)=>{return X.api.addMember({headers:J,body:Q})},removeMember:async(Q)=>{await X.api.removeMember({headers:J,body:Q})},listMembers:async(Q)=>{return X.api.listMembers({headers:J,query:Q?{organizationId:Q.organizationId,limit:Q.limit,offset:Q.offset}:void 0})},updateMemberRole:async(Q)=>{return X.api.updateMemberRole({headers:J,body:Q})}},apiKey:{create:async(Q)=>{return X.api.createApiKey({body:{...Q,userId:K}})},list:async()=>{return X.api.listApiKeys({headers:J})},update:async(Q)=>{return X.api.updateApiKey({body:{...Q,userId:K}})},delete:async(Q)=>{await X.api.deleteApiKey({headers:J,body:{keyId:Q}})}}}}async function WD8(Y,X,J){if(jx1.includes(J))return;let G=await Y.selectFrom("organizationRole").select(["permission"]).where("organizationId","=",X).where("role","=",J).executeTakeFirst();if(!G?.permission)return;try{return JSON.parse(G.permission)}catch{console.error(`[Auth] Failed to parse permissions for role: ${J}`);return}}async function ZD8(Y,X,J,G=iO6){let W=Y.headers.get("Authorization");try{let K=new Headers(Y.headers);K.set("X-MCP-Session-Auth","true");let Z=await G.measure("auth_get_mcp_session",()=>X.api.getMcpSession({headers:K}));if(Z){let Q=Z.userId,H=await G.measure("auth_query_membership",()=>J.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["member.role","member.organizationId","organization.id as orgId","organization.slug as orgSlug","organization.name as orgName"]).where("member.userId","=",Q).executeTakeFirst()),$=H?.role,V=H?{id:H.orgId,slug:H.orgSlug,name:H.orgName}:void 0,z;if(H&&$)z=await G.measure("auth_fetch_role_permissions",()=>WD8(J,H.organizationId,$));return{user:{id:Q,role:$},role:$,permissions:z,organization:V}}}catch(K){console.error("[Auth] OAuth session check failed:",K)}if(W?.startsWith("Bearer ")){let K=W.replace("Bearer ","").trim();try{let Z=await G.measure("auth_verify_mesh_jwt",()=>nJ6(K));if(Z){let Q,H=Z.metadata?.organizationId;if(Z.sub&&H)Q=(await G.measure("auth_query_membership",()=>J.selectFrom("member").select(["member.role"]).where("member.userId","=",Z.sub).where("member.organizationId","=",H).executeTakeFirst()))?.role;let $,V=Z.metadata?.organizationId;if(V){let z=Z.metadata?.organizationName,U=Z.metadata?.organizationSlug;if(z||U)$={id:V,name:z,slug:U};else{let q=await G.measure("auth_query_org_for_mesh_jwt",()=>J.selectFrom("organization").select(["id","slug","name"]).where("id","=",V).executeTakeFirst());$=q?{id:q.id,slug:q.slug,name:q.name}:{id:V}}}return{user:{id:Z.sub,connectionId:Z.metadata?.connectionId,role:Q},role:Q,permissions:Z.permissions,organization:$}}}catch{}try{let Z=await G.measure("auth_verify_api_key",()=>X.api.verifyApiKey({body:{key:K}}));if(Z?.valid&&Z.key){let Q=Z.key.metadata?.organization,H=Z.key.permissions,$,V=Z.key.userId;if(V&&Q?.id)$=(await G.measure("auth_query_membership",()=>J.selectFrom("member").select(["member.role"]).where("member.userId","=",V).where("member.organizationId","=",Q.id).executeTakeFirst()))?.role;return{apiKeyId:Z.key.id,user:{id:Z.key.userId,role:$},role:$,permissions:H,organization:Q?{id:Q.id,slug:Q.slug,name:Q.name}:void 0}}}catch(Z){console.error("[Auth] API key check failed:",Z)}}try{let K=new Headers(Y.headers);K.delete("Authorization");let Z=await G.measure("auth_get_session",()=>X.api.getSession({headers:K}));if(Z){let Q,H;if(Z.session.activeOrganizationId){let $=await G.measure("auth_get_full_organization",()=>X.api.getFullOrganization({headers:K}).catch(()=>null));if($)Q={id:$.id,slug:$.slug,name:$.name},H=$.members?.find((z)=>z.userId===Z.user.id)?.role;else Q={id:Z.session.activeOrganizationId,slug:"",name:""}}return{user:{id:Z.user.id,email:Z.user.email,role:H},role:H,organization:Q}}}catch(K){let Z=K;console.error("[Auth] Session check failed:",JSON.stringify({message:Z.message,body:Z.body,stack:Z.stack},null,2))}return{user:void 0}}async function aO6(Y){let X=new lA(Y.encryption.key),J=!!$6.CLICKHOUSE_URL,G=J?"clickhouse":"duckdb",W,K;if(J)W=new wc($6.CLICKHOUSE_URL),K=new wc($6.CLICKHOUSE_URL);else{let{engine:q}=await nu1({basePath:gU}),{engine:L}=await nu1({basePath:qA});W=q,K=L}let{resolve:Z}=await import("path"),Q=Z(gU),H=Z(qA),$=J?(q)=>"monitoring_logs":(q)=>`read_ndjson('${Q}/${q}/**/*.ndjson', auto_detect=true)`,V=J?(q)=>"monitoring_metrics":(q)=>`read_ndjson('${H}/${q}/**/*.ndjson', auto_detect=true)`,z=new Ec(Y.db),U={connections:new Lm(Y.db,X),organizationSettings:new ru1(Y.db),monitoring:new Vg1(W,$,K,V,G),monitoringDashboards:new au1(Y.db),virtualMcps:new Qg1(Y.db),users:new Ym1(Y.db),tags:new eu1(Y.db),projects:new Nm(Y.db),projectConnections:new ou1(Y.db),projectPluginConfigs:new su1(Y.db),aiProviderKeys:new $m1(Y.db,X),oauthPkceStates:new Fm1(Y.db),automations:s71(Y.db)};return async(q,L)=>{let N=L?.timings??iO6,M=Pj(),P=q?.headers.get("x-caller-id")??void 0,R=q?await ZD8(q,Y.auth,Y.db,N):{user:void 0},I=zm1({auth:Y.auth,headers:q?.headers??new Headers,role:R.role,permissions:R.permissions,userId:R.user?.id}),T={user:R.user};if(R.apiKeyId)T.apiKey={id:R.apiKeyId,name:"",userId:""};let E=R.organization,j=q?$6.BASE_URL??`${new URL(q.url).origin}`:SQ(),v=new e3(Y.auth,T.user?.id,void 0,I,R.role,"self"),k={...U,threads:new Pc(z,E?.id)},g=new Vm1(k.aiProviderKeys,Y.modelListCache),f={timings:N,auth:T,connectionId:P,organization:E,storage:k,vault:X,authInstance:Y.auth,boundAuth:I,access:v,db:Y.db,tracer:Y.observability.tracer,meter:Y.observability.meter,baseUrl:j,metadata:{requestId:crypto.randomUUID(),timestamp:new Date,wellKnownForwardableHeaders:Object.fromEntries(QD8.map((y)=>[y,q?.headers.get(y)??null]).filter(([y,a])=>a!==null)),userAgent:q?.headers.get("x-mesh-client")||q?.headers.get("User-Agent")||void 0,ipAddress:(q?.headers.get("CF-Connecting-IP")||q?.headers.get("X-Forwarded-For"))??void 0,properties:JD8(q?.headers.get("x-mesh-properties"))},eventBus:Y.eventBus,aiProviders:g,createMCPProxy:async(y)=>{return await vO6(y,f)},getOrCreateClient:M};return f}}var nO6,xV,iO6,QD8;var YG1=A(()=>{j51();N51();b5();pN();tk1();gz6();dz6();iu1();iu1();iK();BO6();ek1();DO6();wO6();tu1();AO6();Ej();F_();xJ1();Hm1();_51();lO6();pO6();xV={set:(Y)=>{nO6=Y},create:async(Y,X)=>{return await nO6(Y,X)}},iO6={measure:async(Y,X)=>{return await X()}},QD8=["x-hub-signature-256"]});class rO6{db;constructor(Y){this.db=Y}mapRowToSubscription(Y){return{id:Y.id,organizationId:Y.organization_id,connectionId:Y.connection_id,publisher:Y.publisher,eventType:Y.event_type,filter:Y.filter,enabled:Boolean(Y.enabled),createdAt:Y.created_at,updatedAt:Y.updated_at}}async publishEvent(Y){let X=new Date().toISOString();return await this.db.insertInto("events").values({id:Y.id,organization_id:Y.organizationId,type:Y.type,source:Y.source,specversion:"1.0",subject:Y.subject??null,time:Y.time,datacontenttype:Y.datacontenttype??"application/json",dataschema:Y.dataschema??null,data:Y.data?JSON.stringify(Y.data):null,cron:Y.cron??null,status:"pending",attempts:0,last_error:null,next_retry_at:null,created_at:X,updated_at:X}).execute(),{id:Y.id,organizationId:Y.organizationId,type:Y.type,source:Y.source,specversion:"1.0",subject:Y.subject??null,time:Y.time,datacontenttype:Y.datacontenttype??"application/json",dataschema:Y.dataschema??null,data:Y.data??null,cron:Y.cron??null,status:"pending",attempts:0,lastError:null,nextRetryAt:null,createdAt:X,updatedAt:X}}async subscribe(Y){let X=this.db.selectFrom("event_subscriptions").selectAll().where("organization_id","=",Y.organizationId).where("connection_id","=",Y.connectionId).where("event_type","=",Y.eventType);if(Y.publisher)X=X.where("publisher","=",Y.publisher);else X=X.where("publisher","is",null);if(Y.filter)X=X.where("filter","=",Y.filter);else X=X.where("filter","is",null);let J=await X.executeTakeFirst();if(J)return this.mapRowToSubscription(J);let G=new Date().toISOString();return await this.db.insertInto("event_subscriptions").values({id:Y.id,organization_id:Y.organizationId,connection_id:Y.connectionId,publisher:Y.publisher??null,event_type:Y.eventType,filter:Y.filter??null,enabled:1,created_at:G,updated_at:G}).execute(),{id:Y.id,organizationId:Y.organizationId,connectionId:Y.connectionId,publisher:Y.publisher??null,eventType:Y.eventType,filter:Y.filter??null,enabled:1,createdAt:G,updatedAt:G}}async unsubscribe(Y,X){return{success:((await this.db.deleteFrom("event_subscriptions").where("id","=",Y).where("organization_id","=",X).executeTakeFirst()).numDeletedRows??0n)>0n}}async listSubscriptions(Y,X){let J=this.db.selectFrom("event_subscriptions").selectAll().where("organization_id","=",Y);if(X)J=J.where("connection_id","=",X);return(await J.execute()).map((W)=>this.mapRowToSubscription(W))}async getSubscription(Y,X){let J=await this.db.selectFrom("event_subscriptions").selectAll().where("id","=",Y).where("organization_id","=",X).executeTakeFirst();if(!J)return null;return this.mapRowToSubscription(J)}async getMatchingSubscriptions(Y){return(await this.db.selectFrom("event_subscriptions").selectAll().where("organization_id","=",Y.organizationId).where("enabled","=",1).where("event_type","=",Y.type).where((J)=>J.or([J("publisher","is",null),J("publisher","=",Y.source)])).execute()).map((J)=>this.mapRowToSubscription(J))}async createDeliveries(Y,X,J){if(X.length===0)return;let G=new Date().toISOString(),W=J??null,K=X.map((Z)=>({id:crypto.randomUUID(),event_id:Y,subscription_id:Z,status:"pending",attempts:0,last_error:null,delivered_at:null,next_retry_at:W,created_at:G}));await this.db.insertInto("event_deliveries").values(K).execute()}async claimPendingDeliveries(Y){let X=new Date().toISOString(),G=(await this.db.updateTable("event_deliveries").set({status:"processing"}).where("id","in",(K)=>K.selectFrom("event_deliveries as d").innerJoin("event_subscriptions as s","s.id","d.subscription_id").select("d.id").where("d.status","=","pending").where("s.enabled","=",1).where((Z)=>Z.or([Z("d.next_retry_at","is",null),Z("d.next_retry_at","<=",X)])).orderBy("d.created_at","asc").limit(Y)).where("status","=","pending").returning(["id"]).execute()).map((K)=>K.id);if(G.length===0)return[];return(await this.db.selectFrom("event_deliveries as d").innerJoin("events as e","e.id","d.event_id").innerJoin("event_subscriptions as s","s.id","d.subscription_id").select(["d.id as delivery_id","d.event_id","d.subscription_id","d.status as delivery_status","d.attempts as delivery_attempts","d.last_error as delivery_last_error","d.delivered_at","d.next_retry_at as delivery_next_retry_at","d.created_at as delivery_created_at","e.organization_id","e.type","e.source","e.specversion","e.subject","e.time","e.datacontenttype","e.dataschema","e.data","e.cron","e.status as event_status","e.attempts as event_attempts","e.last_error as event_last_error","e.next_retry_at","e.created_at as event_created_at","e.updated_at as event_updated_at","s.connection_id","s.publisher","s.event_type","s.filter","s.enabled","s.created_at as subscription_created_at","s.updated_at as subscription_updated_at"]).where("d.id","in",G).where("d.status","=","processing").execute()).map((K)=>({delivery:{id:K.delivery_id,eventId:K.event_id,subscriptionId:K.subscription_id,status:K.delivery_status,attempts:K.delivery_attempts,lastError:K.delivery_last_error,deliveredAt:K.delivered_at,nextRetryAt:K.delivery_next_retry_at,createdAt:K.delivery_created_at},event:{id:K.event_id,organizationId:K.organization_id,type:K.type,source:K.source,specversion:K.specversion,subject:K.subject,time:K.time,datacontenttype:K.datacontenttype,dataschema:K.dataschema,data:K.data?JSON.parse(K.data):null,cron:K.cron,status:K.event_status,attempts:K.event_attempts,lastError:K.event_last_error,nextRetryAt:K.next_retry_at,createdAt:K.event_created_at,updatedAt:K.event_updated_at},subscription:{id:K.subscription_id,organizationId:K.organization_id,connectionId:K.connection_id,publisher:K.publisher,eventType:K.event_type,filter:K.filter,enabled:Boolean(K.enabled),createdAt:K.subscription_created_at,updatedAt:K.subscription_updated_at}}))}async markDeliveriesDelivered(Y){if(Y.length===0)return;let X=new Date().toISOString();await this.db.updateTable("event_deliveries").set({status:"delivered",delivered_at:X}).where("id","in",Y).execute()}async markDeliveriesPermanentlyFailed(Y,X){if(Y.length===0)return;await this.db.updateTable("event_deliveries").set({status:"failed",last_error:X,next_retry_at:null}).where("id","in",Y).execute()}async markDeliveriesFailed(Y,X,J=20,G=1000,W=3600000){if(Y.length===0)return;for(let K of Y){let Z=await this.db.selectFrom("event_deliveries").select(["attempts"]).where("id","=",K).executeTakeFirst();if(!Z)continue;let Q=Z.attempts+1;if(Q>=J)await this.db.updateTable("event_deliveries").set({attempts:Q,last_error:X,status:"failed",next_retry_at:null}).where("id","=",K).execute();else{let H=Math.min(G*Math.pow(2,Q-1),W),$=new Date(Date.now()+H).toISOString();await this.db.updateTable("event_deliveries").set({attempts:Q,last_error:X,status:"pending",next_retry_at:$}).where("id","=",K).execute()}}}async updateEventStatus(Y){let X=await this.db.selectFrom("event_deliveries").select(["status"]).where("event_id","=",Y).execute();if(X.length===0)return;let J=X.every((K)=>K.status==="delivered"),G=X.some((K)=>K.status==="failed"),W=X.some((K)=>K.status==="pending"||K.status==="processing");if(J)await this.db.updateTable("events").set({status:"delivered",updated_at:new Date().toISOString()}).where("id","=",Y).execute();else if(G&&!W)await this.db.updateTable("events").set({status:"failed",updated_at:new Date().toISOString()}).where("id","=",Y).execute()}async resetStuckDeliveries(){let Y=await this.db.updateTable("event_deliveries").set({status:"pending"}).where("status","=","processing").executeTakeFirst();return Number(Y.numUpdatedRows??0)}async getEvent(Y,X){let J=await this.db.selectFrom("events").selectAll().where("id","=",Y).where("organization_id","=",X).executeTakeFirst();if(!J)return null;return{id:J.id,organizationId:J.organization_id,type:J.type,source:J.source,specversion:J.specversion,subject:J.subject,time:J.time,datacontenttype:J.datacontenttype,dataschema:J.dataschema,data:J.data?JSON.parse(J.data):null,cron:J.cron,status:J.status,attempts:J.attempts,lastError:J.last_error,nextRetryAt:J.next_retry_at,createdAt:J.created_at,updatedAt:J.updated_at}}async findActiveCronEvent(Y,X,J,G){let W=await this.db.selectFrom("events").selectAll().where("organization_id","=",Y).where("type","=",X).where("source","=",J).where("cron","=",G).where("status","in",["pending","processing","delivered"]).orderBy("created_at","desc").executeTakeFirst();if(!W)return null;return{id:W.id,organizationId:W.organization_id,type:W.type,source:W.source,specversion:W.specversion,subject:W.subject,time:W.time,datacontenttype:W.datacontenttype,dataschema:W.dataschema,data:W.data?JSON.parse(W.data):null,cron:W.cron,status:W.status,attempts:W.attempts,lastError:W.last_error,nextRetryAt:W.next_retry_at,createdAt:W.created_at,updatedAt:W.updated_at}}async findOrphanedCronEvents(){return(await this.db.selectFrom("events").selectAll().where("cron","is not",null).where("status","=","delivered").where((X)=>X.not(X.exists(X.selectFrom("event_deliveries").select("id").whereRef("event_deliveries.event_id","=","events.id").where("event_deliveries.status","in",["pending","processing"])))).execute()).map((X)=>({id:X.id,organizationId:X.organization_id,type:X.type,source:X.source,specversion:X.specversion,subject:X.subject,time:X.time,datacontenttype:X.datacontenttype,dataschema:X.dataschema,data:X.data?JSON.parse(X.data):null,cron:X.cron,status:X.status,attempts:X.attempts,lastError:X.last_error,nextRetryAt:X.next_retry_at,createdAt:X.created_at,updatedAt:X.updated_at}))}async cancelEvent(Y,X,J){let G=await this.db.updateTable("events").set({status:"failed",last_error:"Cancelled by publisher",updated_at:new Date().toISOString()}).where("id","=",Y).where("organization_id","=",X).where("source","=",J).where("status","in",["pending","processing"]).executeTakeFirst();if((G.numUpdatedRows??0n)>0n)await this.db.updateTable("event_deliveries").set({status:"failed",last_error:"Event cancelled by publisher"}).where("event_id","=",Y).where("status","in",["pending","processing"]).execute();return{success:(G.numUpdatedRows??0n)>0n}}async scheduleRetryWithoutAttemptIncrement(Y,X){if(Y.length===0)return;let J=new Date(Date.now()+X).toISOString();await this.db.updateTable("event_deliveries").set({status:"pending",next_retry_at:J}).where("id","in",Y).execute()}async ackDelivery(Y,X,J){if(!await this.db.selectFrom("events").select(["id"]).where("id","=",Y).where("organization_id","=",X).executeTakeFirst())return{success:!1};let K=((await this.db.updateTable("event_deliveries").set({status:"delivered",delivered_at:new Date().toISOString()}).where("event_id","=",Y).where("status","in",["pending","processing"]).where((Z)=>Z.exists(Z.selectFrom("event_subscriptions").select("id").whereRef("event_subscriptions.id","=","event_deliveries.subscription_id").where("event_subscriptions.connection_id","=",J).where("event_subscriptions.organization_id","=",X))).executeTakeFirst()).numUpdatedRows??0n)>0n;if(K)await this.updateEventStatus(Y);return{success:K}}async syncSubscriptions(Y){let{organizationId:X,connectionId:J,subscriptions:G}=Y,W=(P,R)=>{return`${P}::${R??""}`},K=await this.listSubscriptions(X,J),Z=new Map;for(let P of K)Z.set(W(P.eventType,P.publisher),P);let Q=new Map;for(let P of G)Q.set(W(P.eventType,P.publisher),P);let H=new Date().toISOString(),$=[],V=[],z=[],U=0;for(let[P,R]of Q){let I=Z.get(P);if(!I)$.push({id:crypto.randomUUID(),organization_id:X,connection_id:J,event_type:R.eventType,publisher:R.publisher??null,filter:R.filter??null,enabled:1,created_at:H,updated_at:H});else{let T=I.filter??null,E=R.filter??null;if(T!==E)V.push({id:I.id,filter:E});else U++}}for(let[P,R]of Z)if(!Q.has(P))z.push(R.id);if($.length>0)await this.db.insertInto("event_subscriptions").values($).execute();if(V.length>0)await Promise.all(V.map((P)=>this.db.updateTable("event_subscriptions").set({filter:P.filter,updated_at:H}).where("id","=",P.id).execute()));if(z.length>0)await this.db.deleteFrom("event_subscriptions").where("id","in",z).execute();let q=$.length,L=V.length,N=z.length,M=await this.listSubscriptions(X,J);return{created:q,updated:L,deleted:N,unchanged:U,subscriptions:M}}}function oO6(Y){return new rO6(Y)}class sO6{listeners=new Map;totalCount=0;strategy=null;started=!1;async start(Y){if(this.started){if(!Y)return;await this.stop()}this.strategy=Y,await this.strategy.start((X,J)=>this.localEmit(X,J)),this.started=!0}async stop(){if(!this.started||!this.strategy)return;await this.strategy.stop(),this.started=!1}add(Y){if(this.totalCount>=500)return console.warn("[SSEHub] Total connection limit reached (500)"),null;let X=this.listeners.get(Y.organizationId);if(!X)X=new Map,this.listeners.set(Y.organizationId,X);if(X.size>=50)return console.warn(`[SSEHub] Per-org connection limit reached for ${Y.organizationId} (50)`),null;return X.set(Y.id,Y),this.totalCount++,Y.id}remove(Y,X){let J=this.listeners.get(Y);if(!J)return;if(J.delete(X)){if(this.totalCount--,J.size===0)this.listeners.delete(Y)}}emit(Y,X){if(this.strategy)this.strategy.broadcast(Y,X);else this.localEmit(Y,X)}countForOrg(Y){return this.listeners.get(Y)?.size??0}get count(){return this.totalCount}localEmit(Y,X){let J=this.listeners.get(Y);if(!J||J.size===0)return;for(let G of J.values()){if(G.typePatterns&&!KD8(X.type,G.typePatterns))continue;try{G.push(X)}catch{this.remove(Y,G.id)}}}}function KD8(Y,X){for(let J of X){if(J===Y)return!0;if(J.endsWith(".*")){let G=J.slice(0,-1);if(Y.startsWith(G))return!0}}return!1}function tO6(Y){return{id:Y.id,type:Y.type,source:Y.source,subject:Y.subject,data:Y.data?HD8(Y.data):void 0,time:Y.time}}function HD8(Y){if(typeof Y==="string")try{return JSON.parse(Y)}catch{return Y}return Y}var N$;var QG1=A(()=>{N$=new sO6});function eO6(Y){if(typeof Y==="object"&&Y!==null){let G=Y,W=G.status??G.code;if(typeof W==="number"&&$D8.has(W))return!0}let X=Y instanceof Error?Y.message:typeof Y==="string"?Y:"";if(!X)return!1;let J=X.toLowerCase();if(/\b401\b/.test(J))return!0;return FD8.some((G)=>J.includes(G))}var $D8,FD8,Tc;var Um1=A(()=>{$D8=new Set([401]),FD8=["unauthorized","invalid_token","invalid api key","api key required","api-key required"];Tc=class Tc extends Error{constructor(Y){super(Y);this.name="PermanentDeliveryError"}}});var KG1;var qm1=A(()=>{KG1={pollIntervalMs:5000,batchSize:100,maxAttempts:20,retryDelayMs:1000,maxDelayMs:3600000}});function VD8(Y){return Y.endsWith("_self")}function zD8(Y){return Y.slice(0,-5)}function YB6(){return async(Y,X)=>{try{if(VD8(Y)&&lM1()){let Z=zD8(Y),Q=await xV.create();if(await qV0(X,{organizationId:Z,connectionId:Y,publish:async(V,z,U,q)=>{await Q.eventBus.publish(Z,Y,{type:V,subject:z,data:U,deliverAt:q?.deliverAt})},createMCPProxy:async(V)=>{let z={...Q,getOrCreateClient:Pj()},U=await Qm1(V,z);return{callTool:async(q,L,N)=>{let M=await U.callTool(q,L,N);return{content:M.content,structuredContent:M.structuredContent,isError:M.isError}},close:()=>U.close()}}}))return{success:!0}}let J=await xV.create(),G=await Qm1(Y,J),K=await _O1.forClient(Ac(G)).ON_EVENTS({events:X});return{success:K.success,error:K.error,retryAfter:K.retryAfter,results:K.results}}catch(J){let G=J instanceof Error?J.message:String(J);if(console.error(`[EventBus] Failed to notify connection ${Y}:`,G),eO6(J))throw new Tc(G);return{success:!1,error:G}}}}var XB6=A(()=>{YG1();oR();_51();Dh();F_();Um1()});function JB6(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 UD8(Y){let X=new Map;for(let G of Y){let W=G.subscription.connectionId,K=X.get(W);if(K){if(K.deliveryIds.push(G.delivery.id),!K.seenEventIds.has(G.event.id))K.seenEventIds.add(G.event.id),K.events.push(JB6(G.event))}else X.set(W,{connectionId:G.subscription.connectionId,deliveryIds:[G.delivery.id],events:[JB6(G.event)],seenEventIds:new Set([G.event.id])})}let J=new Map;for(let[G,W]of X)J.set(G,{connectionId:W.connectionId,deliveryIds:W.deliveryIds,events:W.events});return J}class Lm1{storage;notifySubscriber;running=!1;processing=!1;pendingNotify=!1;config;eventTriggerEngine;constructor(Y,X,J){this.storage=Y;this.notifySubscriber=J??YB6(),this.config={...KG1,...X}}setEventTriggerEngine(Y){this.eventTriggerEngine=Y}async start(){if(this.running)return;let Y=await this.storage.resetStuckDeliveries();if(Y>0)console.log(`[EventBus] Reset ${Y} stuck deliveries from previous shutdown`);let X=await this.storage.findOrphanedCronEvents();for(let J of X)await this.scheduleNextCronDelivery(J),console.log(`[EventBus] Recovered orphaned cron event ${J.id} (${J.type}, cron: ${J.cron})`);if(X.length>0)console.log(`[EventBus] Recovered ${X.length} orphaned cron event(s)`);this.running=!0}stop(){this.running=!1}isRunning(){return this.running}async processNow(){if(!this.running)return;if(this.processing){this.pendingNotify=!0;return}this.processing=!0;try{do this.pendingNotify=!1,await this.processEvents();while(this.pendingNotify)}catch(Y){console.error("[EventBus] Error processing events:",Y)}finally{this.processing=!1}}async processEvents(){let Y=await this.storage.claimPendingDeliveries(this.config.batchSize);if(Y.length===0)return;let X=UD8(Y),J=await Promise.allSettled(Array.from(X.entries()).map(async([K,Z])=>{let Q=new Set;try{let $=await this.notifySubscriber(Z.connectionId,Z.events);if($.results&&Object.keys($.results).length>0)await this.processPerEventResults(Z,$);else if($.success)await this.storage.markDeliveriesDelivered(Z.deliveryIds);else if($.retryAfter&&$.retryAfter>0)await this.storage.scheduleRetryWithoutAttemptIncrement(Z.deliveryIds,$.retryAfter);else await this.storage.markDeliveriesFailed(Z.deliveryIds,$.error||"Subscriber returned success=false",this.config.maxAttempts,this.config.retryDelayMs,this.config.maxDelayMs)}catch($){if($ instanceof Tc){await this.storage.markDeliveriesPermanentlyFailed(Z.deliveryIds,$.message);for(let V of Z.events)Q.add(V.id)}else{let V=$ instanceof Error?$.message:String($);console.error(`[EventBus] Failed to notify subscription ${K}:`,V),await this.storage.markDeliveriesFailed(Z.deliveryIds,V,this.config.maxAttempts,this.config.retryDelayMs,this.config.maxDelayMs)}}let H=new Set;for(let $ of Y)if(Z.deliveryIds.includes($.delivery.id))H.add($.event.id);return{eventIds:H,permanentlyFailed:Q}})),G=new Set,W=new Set;for(let K of J)if(K.status==="fulfilled"){for(let Z of K.value.eventIds)G.add(Z);for(let Z of K.value.permanentlyFailed)W.add(Z)}for(let K of G)try{await this.storage.updateEventStatus(K);let Z=Y.find((Q)=>Q.event.id===K)?.event;if(Z?.cron&&!W.has(K))await this.scheduleNextCronDelivery(Z)}catch(Z){console.error(`[EventBus] Failed to update event status ${K}:`,Z)}if(this.eventTriggerEngine){let K=new Set,Z=[];for(let Q of Y){if(Q.delivery.attempts>0)continue;if(!K.has(Q.event.id))K.add(Q.event.id),Z.push({source:Q.event.source,type:Q.event.type,data:Q.event.data,organizationId:Q.event.organizationId})}if(Z.length>0)this.eventTriggerEngine.notifyEvents(Z)}}async processPerEventResults(Y,X){let J=[],G=new Map,W=[],K=new Map;for(let Z=0;Z<Y.events.length;Z++){let Q=Y.events?.[Z];if(!Q)continue;let H=Y.deliveryIds?.[Z];if(!H)continue;K.set(Q.id,H)}for(let Z of Y.events){let Q=K.get(Z.id);if(!Q)continue;let H=X.results?.[Z.id];if(H)if(H.success)J.push(Q);else if(H.retryAfter&&H.retryAfter>0){let $=G.get(H.retryAfter)||[];$.push(Q),G.set(H.retryAfter,$)}else W.push({deliveryId:Q,error:H.error||"Event processing failed"});else if(X.success)J.push(Q);else if(X.retryAfter&&X.retryAfter>0){let $=G.get(X.retryAfter)||[];$.push(Q),G.set(X.retryAfter,$)}else W.push({deliveryId:Q,error:X.error||"Batch processing failed"})}if(J.length>0)await this.storage.markDeliveriesDelivered(J);for(let[Z,Q]of G)await this.storage.scheduleRetryWithoutAttemptIncrement(Q,Z);if(W.length>0){let Z=new Map;for(let{deliveryId:Q,error:H}of W){let $=Z.get(H)||[];$.push(Q),Z.set(H,$)}for(let[Q,H]of Z)await this.storage.markDeliveriesFailed(H,Q,this.config.maxAttempts,this.config.retryDelayMs,this.config.maxDelayMs)}}async scheduleNextCronDelivery(Y){if(!Y.cron)return;try{let J=new rO(Y.cron,{timezone:"UTC"}).nextRun();if(!J){console.log(`[EventBus] Cron expression for event ${Y.id} has no more runs`);return}let G=J.toISOString(),W=await this.storage.getMatchingSubscriptions(Y);if(W.length===0){console.log(`[EventBus] No subscriptions for cron event ${Y.id}, skipping next delivery`);return}await this.storage.createDeliveries(Y.id,W.map((K)=>K.id),G),console.log(`[EventBus] Scheduled next cron delivery for event ${Y.id} at ${G}`)}catch(X){console.error(`[EventBus] Failed to schedule next cron delivery for event ${Y.id}:`,X)}}}var GB6=A(()=>{Kl();Um1();qm1();XB6()});class Nm1{storage;worker;notifyStrategy;running=!1;constructor(Y){this.storage=Y.storage,this.notifyStrategy=Y.notifyStrategy,this.worker=new Lm1(this.storage,Y.config)}setEventTriggerEngine(Y){this.worker.setEventTriggerEngine(Y)}async publish(Y,X,J){if(J.deliverAt&&J.cron)throw Error("Cannot set both deliverAt and cron. Use one or the other.");let G;if(J.cron){try{let V=new rO(J.cron,{timezone:"UTC"}).nextRun();if(!V)throw Error("Cron expression does not produce a next run time");G=V.toISOString()}catch($){throw Error(`Invalid cron expression: ${$ instanceof Error?$.message:String($)}`)}let H=await this.storage.findActiveCronEvent(Y,J.type,X,J.cron);if(H)return H}let W=crypto.randomUUID(),K=new Date().toISOString(),Z=await this.storage.publishEvent({id:W,organizationId:Y,type:J.type,source:X,subject:J.subject,time:K,data:J.data,cron:J.cron});N$.emit(Y,tO6(Z));let Q=await this.storage.getMatchingSubscriptions(Z);if(Q.length>0){let H=J.deliverAt??G;if(await this.storage.createDeliveries(W,Q.map(($)=>$.id),H),this.notifyStrategy&&!H)await this.notifyStrategy.notify(W).catch(($)=>{console.warn("[EventBus] Notify failed (non-critical):",$)})}return Z}async subscribe(Y,X){return this.storage.subscribe({id:crypto.randomUUID(),organizationId:Y,connectionId:X.connectionId,publisher:X.publisher,eventType:X.eventType,filter:X.filter})}async unsubscribe(Y,X){return this.storage.unsubscribe(X,Y)}async listSubscriptions(Y,X){return this.storage.listSubscriptions(Y,X)}async getSubscription(Y,X){return this.storage.getSubscription(X,Y)}async getEvent(Y,X){return this.storage.getEvent(X,Y)}async cancelEvent(Y,X,J){return this.storage.cancelEvent(X,Y,J)}async ackEvent(Y,X,J){return this.storage.ackDelivery(X,Y,J)}async syncSubscriptions(Y,X){return this.storage.syncSubscriptions({organizationId:Y,...X})}async start(){if(this.running)return;if(this.running=!0,await this.worker.start(),this.notifyStrategy)await this.notifyStrategy.start(()=>{this.worker.processNow().catch((Y)=>{console.error("[EventBus] Error processing after notify:",Y)})});await this.worker.processNow().catch((Y)=>{console.error("[EventBus] Error processing pending events on startup:",Y)})}async stop(){if(!this.running)return;if(this.running=!1,this.worker.stop(),this.notifyStrategy)try{await this.notifyStrategy.stop()}catch(Y){console.error("[EventBus] Error stopping notify strategy:",Y)}}isRunning(){return this.running}}var WB6=A(()=>{Kl();QG1();GB6()});class Om1{options;sub=null;onNotify=null;encoder=new TextEncoder;constructor(Y){this.options=Y}async start(Y){if(this.sub)return;this.onNotify=Y,this.sub=this.options.getConnection().subscribe("mesh.events.notify"),(async()=>{for await(let X of this.sub)this.onNotify?.()})().catch((X)=>{console.error("[NatsNotify] Subscription error:",X)})}async stop(){this.sub?.unsubscribe(),this.sub=null,this.onNotify=null}async notify(Y){try{this.options.getConnection().publish("mesh.events.notify",this.encoder.encode(Y))}catch(X){console.warn("[NatsNotify] Publish failed (non-critical):",X)}}}class Bm1{options;sub=null;localEmit=null;originId=crypto.randomUUID();encoder=new TextEncoder;constructor(Y){this.options=Y}async start(Y){if(this.localEmit=Y,this.sub)return;this.sub=this.options.getConnection().subscribe("mesh.sse.broadcast");let X=new TextDecoder;(async()=>{for await(let J of this.sub)try{let G=JSON.parse(X.decode(J.data));if(typeof G?.originId!=="string"||typeof G?.organizationId!=="string"||typeof G?.event?.id!=="string"||typeof G?.event?.type!=="string")continue;if(G.originId===this.originId)continue;this.localEmit?.(G.organizationId,G.event)}catch{}})().catch((J)=>{console.error("[NatsSSEBroadcast] Subscription error:",J)})}broadcast(Y,X){this.localEmit?.(Y,X);let J={originId:this.originId,organizationId:Y,event:X};try{this.options.getConnection().publish("mesh.sse.broadcast",this.encoder.encode(JSON.stringify(J)))}catch(G){console.warn("[NatsSSEBroadcast] Publish failed (non-critical):",G)}}async stop(){this.sub?.unsubscribe(),this.sub=null,this.localEmit=null}}function ZB6(...Y){return{async start(X){await Promise.all(Y.map((J)=>J.start(X)))},async stop(){await Promise.all(Y.map((X)=>X.stop().catch((J)=>{console.error("[NotifyStrategy] Error stopping strategy:",J)})))},async notify(X){await Promise.all(Y.map((J)=>J.notify(X).catch((G)=>{console.warn("[NotifyStrategy] Notify failed (non-critical):",G)})))}}}class Dm1{intervalMs;timer=null;onNotify=null;constructor(Y){this.intervalMs=Y}async start(Y){if(this.timer)return;this.onNotify=Y,this.scheduleNext()}async stop(){if(this.timer)clearTimeout(this.timer),this.timer=null;this.onNotify=null}async notify(Y){if(this.onNotify)this.onNotify()}scheduleNext(){this.timer=setTimeout(()=>{if(this.onNotify)this.onNotify();if(this.timer)this.scheduleNext()},this.intervalMs)}}function QB6(Y,X,J){let G=oO6(Y.db),W=J?.pollIntervalMs??KG1.pollIntervalMs,K=ZB6(new Dm1(W),new Om1({getConnection:()=>X.getConnection()})),Z=new Bm1({getConnection:()=>X.getConnection()});return N$.start(Z).catch((Q)=>{console.error("[SSEHub] Failed to start broadcast strategy:",Q)}),new Nm1({storage:G,config:J,notifyStrategy:K})}var wm1=A(()=>{WB6();qm1();QG1();QG1()});var KB6=()=>{};var Mm1=()=>{};var HB6=()=>{};var qD8,BiY;var $B6=A(()=>{KB6();Mm1();QB();HB6();qD8={br:".br",zstd:".zst",gzip:".gz"},BiY=Object.keys(qD8)});var FB6=A(()=>{$B6()});var VB6=()=>{};var zB6=A(()=>{VB6()});var UB6=()=>{};var qB6=A(()=>{tx1()});var Am1=A(()=>{KB();qB6()});var Pm1="x-hono-disable-ssg",biY;var Em1=A(()=>{Am1();biY=(()=>{try{return new Response("SSG is disabled",{status:404,headers:{[Pm1]:"true"}})}catch{return null}})()});var LB6=A(()=>{pJ1()});var Tm1=A(()=>{LB6()});var NB6=A(()=>{zB6();UB6();Mm1();Em1();Tm1();Am1()});var OB6=A(()=>{Em1();Tm1();NB6()});var BaY;var BB6=A(()=>{OB6();({write:BaY}=Bun)});var OD8=class{#Y;constructor(Y){this.#Y=Y,this.raw=Y.raw,this.url=Y.url?new URL(Y.url):null,this.protocol=Y.protocol??null}send(Y,X){this.#Y.send(Y,X??{})}raw;binaryType="arraybuffer";get readyState(){return this.#Y.readyState}url;protocol;close(Y,X){this.#Y.close(Y,X)}},DB6=(Y)=>{return(...X)=>{if(typeof X[0]==="function"){let[J,G]=X;return async function(K,Z){let Q=await J(K),H=await Y(K,Q,G);if(H)return H;await Z()}}else{let[J,G,W]=X;return(async()=>{let K=await Y(J,G,W);if(!K)throw Error("Failed to upgrade WebSocket");return K})()}}};var wB6=()=>{};var Rc=(Y)=>("server"in Y.env)?Y.env.server:Y.env;var HG1=()=>{};var BD8;var MB6=A(()=>{wB6();HG1();BD8=DB6((Y,X)=>{let J=Rc(Y);if(!J)throw TypeError("env has to include the 2nd argument of fetch.");if(J.upgrade(Y.req.raw,{data:{events:X,url:new URL(Y.req.url),protocol:Y.req.url}}))return new Response(null);return})});var Rm1=(Y)=>{let X=Rc(Y);if(!X)throw TypeError("env has to include the 2nd argument of fetch.");if(typeof X.requestIP!=="function")throw TypeError("server.requestIP is not a function.");let J=X.requestIP(Y.req.raw);if(!J)return{remote:{}};return{remote:{address:J.address,addressType:J.family==="IPv6"||J.family==="IPv4"?J.family:void 0,port:J.port}}};var AB6=A(()=>{HG1()});var PB6=A(()=>{FB6();BB6();MB6();AB6();HG1()});var EB6;var TB6=A(()=>{EB6={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 VG1={};M6(VG1,{waitForSeed:()=>SD8,seedLocalMode:()=>CD8,markSeedComplete:()=>jD8,isLocalMode:()=>rP,getLocalAdminUser:()=>Cm1,getLocalAdminPassword:()=>FG1});import{randomBytes as DD8}from"crypto";import{mkdir as wD8,writeFile as MD8,chmod as AD8}from"fs/promises";import{userInfo as PD8}from"os";import{join as ED8}from"path";async function FG1(){if($G1)return $G1;let Y=$6.DATA_DIR,X=ED8(Y,"secrets.json");try{let G=Bun.file(X);if(await G.exists()){let W=await G.json();if(W.LOCAL_ADMIN_PASSWORD){let K=W.LOCAL_ADMIN_PASSWORD;return $G1=K,K}}}catch{}let J=DD8(24).toString("base64");try{await wD8(Y,{recursive:!0,mode:448});let G={};try{let W=Bun.file(X);if(await W.exists())G=await W.json()}catch{}G.LOCAL_ADMIN_PASSWORD=J,await MD8(X,JSON.stringify(G,null,2),{mode:384}),await AD8(X,384)}catch(G){console.warn("Warning: Could not save secrets file:",G)}return $G1=J,J}function RB6(){try{return PD8().username||"local"}catch{return"local"}}function TD8(Y){return Y.charAt(0).toUpperCase()+Y.slice(1)}async function RD8(){let Y=bQ(),X=await Y.db.selectFrom("user").select(Y.db.fn.countAll().as("count")).executeTakeFirst();return Number(X?.count??0)===0}async function CD8(){if(!await RD8())return!1;let X=RB6(),J=`${X}@localhost.mesh`,G=TD8(X),W=await FG1(),K=await SZ.api.signUpEmail({body:{email:J,password:W,name:G}});if(!K?.user?.id)throw Error("Failed to create local admin user");let Z=K.user.id,Q=bQ();await Q.db.updateTable("user").set({role:"admin"}).where("id","=",Z).execute();let H=`${X}-local`.toLowerCase().replace(/[^a-z0-9-]/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,""),$=`${G} Local`;return await Q.db.updateTable("organization").set({name:$,slug:H}).where("id","in",(V)=>V.selectFrom("member").select("organizationId").where("userId","=",Z)).execute(),!0}async function Cm1(){let Y=bQ(),X=`${RB6()}@localhost.mesh`;return Y.db.selectFrom("user").where("email","=",X).selectAll().executeTakeFirst()}function rP(){return $6.MESH_LOCAL_MODE}function jD8(){CB6()}function SD8(){return ID8}var $G1=null,CB6,ID8;var z_=A(()=>{gA();b5();SO();ID8=new Promise((Y)=>{if(CB6=Y,!rP())Y()})});var Im1,IB6;var jB6=A(()=>{_Z();PB6();b5();SO();TB6();z_();Im1=new aY;Im1.get("/config",async(Y)=>{try{let X=Object.keys(F8.socialProviders??{}),J=X.length>0,G=X.map((Z)=>({name:Z,icon:EB6[Z].icon})),W=$6.NODE_ENV!=="production"||$6.UNSAFE_ALLOW_STDIO_TRANSPORT,K={emailAndPassword:{enabled:F8.emailAndPassword?.enabled??!1},magicLink:{enabled:F8.magicLinkConfig?.enabled??!1},emailOtp:{enabled:F8.emailOtpConfig?.enabled??!1},resetPassword:{enabled:uJ1},socialProviders:{enabled:J,providers:G},sso:F8.ssoConfig?{enabled:!0,providerId:F8.ssoConfig.providerId}:{enabled:!1},stdioEnabled:W,localMode:rP()};return Y.json({success:!0,config:K})}catch(X){let J=X instanceof Error?X.message:"Failed to load auth config";return Y.json({success:!1,error:J},500)}});Im1.post("/local-session",async(Y)=>{if(!rP())return Y.json({success:!1,error:"Local mode is not active"},403);let X;try{X=Rm1(Y).remote.address}catch{}if(!(X==="127.0.0.1"||X==="::1"||X==="::ffff:127.0.0.1"))return Y.json({success:!1,error:"Forbidden"},403);try{let{waitForSeed:G}=await Promise.resolve().then(() => (z_(),VG1));await G();let{auth:W}=await Promise.resolve().then(() => (SO(),CV6)),K=await Cm1();if(!K)return Y.json({success:!1,error:"Local admin user not found"},500);let Z=await FG1();return await W.api.signInEmail({body:{email:K.email,password:Z},asResponse:!0})}catch(G){return console.error("Failed to create local session:",G),Y.json({success:!1,error:G instanceof Error?G.message:"Failed to create local session"},500)}});IB6=Im1});function SB6(Y){let X=Y.filter((G)=>G.role==="system"),J=Y.find((G)=>G.role!=="system");return{systemMessages:X,requestMessage:J}}function _D8(Y){let X=!1,J=Y.map((G)=>{if(G.role!=="assistant")return G;if(!G.parts.some((K)=>("state"in K)&&K.state==="approval-requested"))return G;return X=!0,{...G,parts:G.parts.map((K)=>{if(!("state"in K)||K.state!=="approval-requested"||!("approval"in K)||!K.approval)return K;return{...K,state:"output-denied",approval:{...K.approval,approved:!1,reason:"User sent a new message without approving this tool call."}}})}});return X?J:Y}function kD8(Y){let[X,J]=Y.reduce((G,W)=>{if(W.role==="system")G[0].push(W);else G[1].push(W);return G},[[],[]]);return{systemMessages:X,messages:J}}async function vD8(Y,X){return await Y.loadHistory(X)}function fD8(Y,X){let J=Y.filter((K)=>K.parts&&K.parts.length>0),G=J.findIndex((K)=>K.id===X.id);return G>=0?[...J.slice(0,G),X]:[...J,X]}async function _B6(Y,X,J,G){let W=await vD8(Y,G),K=fD8(W,X);return[...J,...K]}async function kB6(Y,X){let J=await EQ0({messages:Y}),G=_D8(J),W=await PQ0(G,{tools:X.tools,ignoreIncompleteToolCalls:!0}),{systemMessages:K,messages:Z}=kD8(W),Q=X.models.thinking.capabilities?.reasoning!==!1,H=RQ0({messages:Z,reasoning:Q?"all":"none",emptyMessages:"remove",toolCalls:"none"});return{systemMessages:K,messages:H,originalMessages:J}}var jm1=A(()=>{MK()});function vB6(Y){let{toolOutputMap:X}=Y;return V7({description:"The input is a string. Dont make assumptions about its format; prefer using regexes and string manipulation to extract the desired information. You may call this tool multiple times to extract the desired information.",inputExamples:[{input:{tool_call_id:"tool_call_id_1",code:"export default (input) => { return input.match(/[a-z]/g); }"}},{input:{tool_call_id:"tool_call_id_2",code:"export default (input) => { return input.split(' ').map(word => word.length); }"}}],inputSchema:M0(F.object({tool_call_id:F.string(),code:F.string().min(1).describe("JavaScript code to transform the tool output. The code must be an ES module: `export default (input) => { ... }`")})),execute:async({tool_call_id:J,code:G})=>{if(!X.has(J))throw Error(`Tool output not found for tool call id: ${J}`);let W=X.get(J),K=await wv1({input:W,code:G,timeoutMs:5000}),Z=Sm1({return:K.returnValue});if(Z>4000)throw Error(`Tool call ${J} output is too long to display (${Z} tokens), reduce or truncate the output`);return{result:K.returnValue,error:K.error,consoleLogs:K.consoleLogs}}})}function bD8(Y){if(!Y)return 0;let X=Y.match(hD8)?.length??0,J=Y.length-X;return Math.ceil(J/yD8)+Math.ceil(X*1.5)}function Sm1(Y){let X=typeof Y==="string"?Y:JSON.stringify(Y);return bD8(X)}var yD8=4,hD8;var _m1=A(()=>{MK();o1();M51();hD8=/[\u3000-\u303f\u3040-\u309f\u30a0-\u30ff\u4e00-\u9fff\u3400-\u4dbf\uf900-\ufaff]/g});function zG1(Y,X){if(Y==="yolo")return!1;if(Y==="none")return!0;return X!==!0}function UG1(Y){let X=Y.get("meshContext").organization;if(!X)throw Error("Organization context is required");if((X.slug??X.id)!==Y.req.param("org"))throw Error("Organization mismatch");return X}async function Cc(Y,X,J,G="none",W){let K=!W?.disableOutputTruncation,Q=(await Y.listTools()).tools.map((H)=>{let{name:$,title:V,description:z,inputSchema:U,annotations:q,_meta:L}=H;return[$,V7({title:V??$,description:z,inputSchema:wK(U),outputSchema:void 0,needsApproval:zG1(G,q?.readOnlyHint),execute:async(N,M)=>{let P=performance.now();try{return await Y.callTool({name:H.name,arguments:N},h$,{signal:M.abortSignal,timeout:_O6})}finally{if(J){let R=performance.now()-P;J.write({type:"data-tool-metadata",id:M.toolCallId,data:{_meta:L,annotations:q,latencyMs:R}})}}},toModelOutput:async({output:N,toolCallId:M})=>{if(K){let R=Sm1(N.structuredContent??N.content);if(R>4000)return X.set(M,JSON.stringify(N.structuredContent??N.content)),{type:"text",value:`Tool call ${M} output is too long to display (${R} tokens), use the read_tool_output tool`}}if(N.isError)return{type:"error-text",value:N.content.map((I)=>I.type==="text"?I.text:null).filter(Boolean).join(`
1765
1765
  `)||"Unknown error"};if("structuredContent"in N)return{type:"json",value:N.structuredContent};return{type:"text",value:N.content.map((R)=>{if(R.type==="text")return R.text;return JSON.stringify(R)}).join(`
1766
1766
  `)}}})]});return Object.fromEntries(Q)}async function km1(Y){let X=Y.get("meshContext"),J=X.auth?.user?.id;if(!J)throw new dJ(401,{message:"Unauthorized"});let G=UG1(Y),W=Y.req.param("threadId");if(!W)throw new dJ(400,{message:"Missing thread ID"});if(/[.*>\s]/.test(W))throw new dJ(400,{message:"Invalid thread ID"});let K=await X.storage.threads.get(W);if(!K)throw new dJ(404,{message:"Thread not found"});return{ctx:X,organization:G,thread:K,threadId:W,userId:J}}async function fB6(Y){let X=await km1(Y);if(X.thread.created_by!==X.userId)throw new dJ(403,{message:"Not authorized"});return X}var Ic=A(()=>{EX();MK();zS();F_();_m1()});var xD8,gD8,uD8,yB6,vm1,mD8,lD8,hB6;var bB6=A(()=>{o1();aP();xD8=F.looseObject({id:F.string().optional(),role:F.enum(["user","assistant","system"]),parts:F.array(F.record(F.string(),F.unknown())),metadata:F.unknown().optional()}),gD8=F.object({windowSize:F.number().default(V_),thread_id:F.string()}),uD8=F.enum(["openai","anthropic","google","xai","deepseek","openrouter","openai-compatible","deco"]),yB6=uD8.optional().nullable(),vm1=F.object({id:F.string(),title:F.string(),capabilities:F.object({vision:F.boolean().optional(),text:F.boolean().optional(),tools:F.boolean().optional(),reasoning:F.boolean().optional()}).optional(),provider:yB6,limits:F.object({contextWindow:F.number().optional(),maxOutputTokens:F.number().optional()}).optional()}),mD8=vm1.extend({provider:yB6}),lD8=F.object({credentialId:F.string(),thinking:mD8.describe("Backbone model for the agentic loop"),coding:vm1.optional().describe("Good coding model"),fast:vm1.optional().describe("Cheap model for simple tasks")}).loose(),hB6=F.object({messages:F.array(xD8).min(1).refine((Y)=>Y.filter((X)=>X.role!=="system").length===1,{message:"Expected exactly one non-system message"}),memory:gD8.optional(),models:lD8,agent:F.object({id:F.string(),mode:F.enum(["passthrough","smart_tool_selection","code_execution"])}).loose(),stream:F.boolean().optional(),temperature:F.number().default(0.5),thread_id:F.string().optional(),toolApprovalLevel:F.enum(["none","readonly","yolo"]).default("none")})});function fm1(Y){cD8({...Y,tracer:Y.ctx.tracer})}function cD8(Y){try{if(!Y.organizationId)return;let X=Y.tracer.startSpan(o81),J=qG1.trace.setSpan(qG1.context.active(),X);Rj({type:CI,organizationId:Y.organizationId,connectionId:t81,connectionTitle:dD8,toolName:Y.modelId,toolArguments:{model:Y.modelId,credentialId:Y.credentialId,threadId:Y.threadId,...Y.request?.body!==void 0?{requestBody:Y.request.body}:{}},result:{...Y.usage??{},...Y.totalUsage?{totalUsage:Y.totalUsage}:{},...Y.finishReason?{finishReason:Y.finishReason}:{},...Y.response?{responseId:Y.response.id,responseModelId:Y.response.modelId,responseTimestamp:Y.response.timestamp,messages:Y.response.messages}:{},logType:CI},duration:Y.durationMs,isError:Y.isError,errorMessage:Y.errorMessage??null,userId:Y.userId,requestId:Y.requestId,userAgent:Y.userAgent??null,virtualMcpId:Y.agentId??null,properties:{model_title:Y.modelTitle,credential_id:Y.credentialId,thread_id:Y.threadId,log_type:CI,...Y.response?{response_id:Y.response.id}:{}}},J),X.end()}catch{}}var qG1,dD8="Decopilot";var xB6=A(()=>{k51();iK();qG1=X4(T0(),1)});function ym1(Y){let{ctx:X,organizationId:J,modelId:G,durationMs:W,isError:K,inputTokens:Z,outputTokens:Q}=Y;if(!J||!G)return;let H={"connection.id":t81,"tool.name":G,"organization.id":J,status:K?"error":"success","error.type":K?Y.errorType||"Error":""};if(X.meter.createHistogram("tool.execution.duration",{description:"Duration of tool executions in milliseconds",unit:"ms"}).record(W,H),X.meter.createCounter("tool.execution.count",{description:"Number of tool executions"}).add(1,H),Z!=null||Q!=null){let $={...H};X.meter.createCounter("tool.execution.tokens",{description:"Number of tokens used by LLM calls"}).add((Z??0)+(Q??0),$)}}var gB6=A(()=>{iK()});function uB6(Y,X,J){let{organization:G,needsApproval:W}=X;return V7({description:iD8,inputSchema:M0(pD8),outputSchema:M0(nD8),needsApproval:W,execute:async({search_term:K},Z)=>{let Q=performance.now();try{let $=(await J.storage.virtualMcps.list(G.id)).filter((z)=>z.status==="active");if(K&&K.trim().length>0){let z=K.toLowerCase();$=$.filter((U)=>{let q=U.title.toLowerCase().includes(z),L=U.description?.toLowerCase().includes(z)??!1;return q||L})}return{agents:$.map((z)=>({agent_id:z.id,name:z.title,purpose:z.description,capabilities:[]}))}}finally{let H=performance.now()-Q;Y.write({type:"data-tool-metadata",id:Z.toolCallId,data:{annotations:aD8,latencyMs:H}})}}})}var pD8,nD8,iD8="Search for agents configured in the organization. Returns agent metadata including purpose and capabilities. Use this to discover specialized agents before delegating work with subtask_run.",aD8;var mB6=A(()=>{MK();o1();pD8=F.object({search_term:F.string().optional().describe("Optional search term to filter agents by name, title, or description. Leave empty to return all available agents.")}),nD8=F.object({agents:F.array(F.object({agent_id:F.string().describe("Unique identifier for the agent"),name:F.string().describe("Human-readable agent name"),purpose:F.string().nullable().describe("What the agent is designed to do"),capabilities:F.array(F.string()).describe("List of capabilities the agent has")}))}),aD8={readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1}});function tD8(Y){let X=`You are a focused subtask agent delegated a specific task by a parent agent.
1767
1767