decocms 4.367.5 → 4.367.6

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 (359) hide show
  1. package/dist/client/assets/{AlertCircle-DnN73amm.js → AlertCircle-CZODjB-G.js} +1 -1
  2. package/dist/client/assets/{AreaChart-tgDBMHH-.js → AreaChart-CIyBmnKJ.js} +1 -1
  3. package/dist/client/assets/{ArrowLeft-XVmyXzT1.js → ArrowLeft-qXobBdxD.js} +1 -1
  4. package/dist/client/assets/{ArrowRight-C5X_ZNy2.js → ArrowRight-_qaicB3i.js} +1 -1
  5. package/dist/client/assets/{ArrowUp-CPI9CNny.js → ArrowUp-B2y3FAZT.js} +1 -1
  6. package/dist/client/assets/{Check-Bxv_6vm1.js → Check-DYuLLcXz.js} +1 -1
  7. package/dist/client/assets/{CheckCircle-D6A5oB4p.js → CheckCircle-Cpa5ukkn.js} +1 -1
  8. package/dist/client/assets/{ChevronRight-CnNj4eZz.js → ChevronRight-BvrNCsKT.js} +1 -1
  9. package/dist/client/assets/{ChevronUp-DqQeOV1H.js → ChevronUp-B-GxN-tN.js} +1 -1
  10. package/dist/client/assets/{Copy01-lznapbKA.js → Copy01-BKbbYkAO.js} +1 -1
  11. package/dist/client/assets/{CreditCard01-BXcJiS22.js → CreditCard01-D16_sfKz.js} +1 -1
  12. package/dist/client/assets/{Database01-ClkFDWDG.js → Database01-C9bPAMOv.js} +1 -1
  13. package/dist/client/assets/{DotsVertical-B2EdGD-H.js → DotsVertical-BKAvE_4x.js} +1 -1
  14. package/dist/client/assets/{Download01-BjL9Q4CH.js → Download01-BvE_0avp.js} +1 -1
  15. package/dist/client/assets/{ErrorBarContext-BYd7dlrZ.js → ErrorBarContext-C42cr3OZ.js} +1 -1
  16. package/dist/client/assets/{Eye-BunsX0IL.js → Eye-CO0I0F0e.js} +1 -1
  17. package/dist/client/assets/{File02-ChvmdkAp.js → File02-Cnt06RSY.js} +1 -1
  18. package/dist/client/assets/{GitBranch01-Bj2U--5C.js → GitBranch01-BPIVJl4U.js} +1 -1
  19. package/dist/client/assets/{Globe01-C44OPauE.js → Globe01-DjDoxbql.js} +1 -1
  20. package/dist/client/assets/{HardDrive-BuYkYSPd.js → HardDrive-UFyvehqQ.js} +1 -1
  21. package/dist/client/assets/{Image01-BHWSoYgY.js → Image01-D3ZQNp9r.js} +1 -1
  22. package/dist/client/assets/{Key01-q0G-NfYN.js → Key01-0kVvyKcG.js} +1 -1
  23. package/dist/client/assets/{Link01-BYdywRZL.js → Link01-Ct7pxTAu.js} +1 -1
  24. package/dist/client/assets/{LinkExternal01-CYW6oMa4.js → LinkExternal01-DCfxP5B_.js} +1 -1
  25. package/dist/client/assets/{MessageCircle01-PKJU_kXZ.js → MessageCircle01-CweHuqp7.js} +1 -1
  26. package/dist/client/assets/{Monitor01-v-NC0LAC.js → Monitor01-BWZHqfxa.js} +1 -1
  27. package/dist/client/assets/{Package-BlQhffiq.js → Package-T9dujty4.js} +1 -1
  28. package/dist/client/assets/{Palette-CKV7NEd1.js → Palette-B9i9hnCi.js} +1 -1
  29. package/dist/client/assets/{Play-CMyxMbjO.js → Play-BIZK_qUZ.js} +1 -1
  30. package/dist/client/assets/{Plus-DGRcwD1C.js → Plus-DaMIkku0.js} +1 -1
  31. package/dist/client/assets/{Printer-LFyevNNM.js → Printer-AWNoUKRJ.js} +1 -1
  32. package/dist/client/assets/{SearchLg-C3ZKLzF0.js → SearchLg-C2sftj0S.js} +1 -1
  33. package/dist/client/assets/{SearchMd-BJ1JfDmo.js → SearchMd-B6arCmyn.js} +1 -1
  34. package/dist/client/assets/{Sector-CSsOzbl3.js → Sector-BM01w_NE.js} +1 -1
  35. package/dist/client/assets/{Settings02-BxjmvoL1.js → Settings02-Cng3FY1l.js} +1 -1
  36. package/dist/client/assets/{Share07-DV6EcWz3.js → Share07-BgGqkker.js} +1 -1
  37. package/dist/client/assets/{Shield01-CVAE-iA-.js → Shield01-CVF7EZQb.js} +1 -1
  38. package/dist/client/assets/{Stars01-CDRvN6fQ.js → Stars01-DSWmseOt.js} +1 -1
  39. package/dist/client/assets/{Sun-ByqVPxWa.js → Sun-B2S_0TDV.js} +1 -1
  40. package/dist/client/assets/{SwitchHorizontal01-CSa05wqz.js → SwitchHorizontal01-BaPOYupn.js} +1 -1
  41. package/dist/client/assets/{Tool01-C2sl4oS8.js → Tool01-DW_T3YR5.js} +1 -1
  42. package/dist/client/assets/{Tool02-Boab0JMh.js → Tool02-zLL5jksN.js} +1 -1
  43. package/dist/client/assets/{Trash01-D10MWaS7.js → Trash01-CchLM2HV.js} +1 -1
  44. package/dist/client/assets/{TrendUp01-CsD4AjDF.js → TrendUp01-CSoUpxS1.js} +1 -1
  45. package/dist/client/assets/{Upload01-CP2Gss0k.js → Upload01-G3c4UCfB.js} +1 -1
  46. package/dist/client/assets/{User01-HCRUnfwJ.js → User01-CZRm273k.js} +1 -1
  47. package/dist/client/assets/{UserSquare-CzBMUItn.js → UserSquare-BdoEkD8Z.js} +1 -1
  48. package/dist/client/assets/{Users01-4eNyBeFs.js → Users01-D_H_0-Jf.js} +1 -1
  49. package/dist/client/assets/{Users03-DZxrVKZM.js → Users03-DSBIUomT.js} +1 -1
  50. package/dist/client/assets/{X-Df68-kGa.js → X-Dr0Tqjzv.js} +1 -1
  51. package/dist/client/assets/{XCircle-nMBHI38d.js → XCircle-Ce8PGmrS.js} +1 -1
  52. package/dist/client/assets/{XClose-Biw-w8yi.js → XClose-5naA93fy.js} +1 -1
  53. package/dist/client/assets/{Zap-dUD3-QQY.js → Zap-XMkPrxNc.js} +1 -1
  54. package/dist/client/assets/{ZoomOut-CR5b1C5j.js → ZoomOut-BLK0GcJv.js} +1 -1
  55. package/dist/client/assets/{access-gate-CujU4RfE.js → access-gate-Cql3KqwB.js} +1 -1
  56. package/dist/client/assets/{add-connection-dialog--adN0Sqj.js → add-connection-dialog-BFK-aGDM.js} +1 -1
  57. package/dist/client/assets/{agent-analytics-eWHu5DTt.js → agent-analytics-BiLU3geK.js} +1 -1
  58. package/dist/client/assets/agent-app-CmHjLSBh.js +1 -0
  59. package/dist/client/assets/{agent-assets-Cn7JoWXb.js → agent-assets-l4c7ivCP.js} +1 -1
  60. package/dist/client/assets/{agent-automation-BSKvYosf.js → agent-automation-Dr_aQL2N.js} +1 -1
  61. package/dist/client/assets/{agent-automations-DF1MxYOz.js → agent-automations-BtQVYGNC.js} +1 -1
  62. package/dist/client/assets/{agent-connect-sources-xG1C2rM6.js → agent-connect-sources-B72Z2yOq.js} +1 -1
  63. package/dist/client/assets/agent-deck-BmbZkAAh.js +1 -0
  64. package/dist/client/assets/{agent-e2e-Dn0A3WpY.js → agent-e2e-BC-S1G-I.js} +1 -1
  65. package/dist/client/assets/agent-file-DWz6GUfE.js +1 -0
  66. package/dist/client/assets/{agent-git-CY5p5ep3.js → agent-git-BCY9JF0p.js} +1 -1
  67. package/dist/client/assets/{agent-hosting-aXTVd4NM.js → agent-hosting-BTRnh7Qw.js} +1 -1
  68. package/dist/client/assets/{agent-icon-CQLL7oQA.js → agent-icon-I_u5FzRN.js} +1 -1
  69. package/dist/client/assets/agent-library-file-Buf4K-5l.js +1 -0
  70. package/dist/client/assets/{agent-monitor-BPy3Zx5C.js → agent-monitor-C3BUSOjB.js} +1 -1
  71. package/dist/client/assets/{agent-overview-Bdo9pXFc.js → agent-overview-DLgGJyEN.js} +1 -1
  72. package/dist/client/assets/agent-settings-D9FokKv0.js +1 -0
  73. package/dist/client/assets/{agent-site-editor-BUlEwPeW.js → agent-site-editor-CcVudugZ.js} +1 -1
  74. package/dist/client/assets/agent-site-editor-code-Bjs5yYWF.js +2 -0
  75. package/dist/client/assets/{agent-site-editor-content-C1e9OU1F.js → agent-site-editor-content-C_xKa1S3.js} +2 -2
  76. package/dist/client/assets/{agent-site-editor-preview-CHL3OjfL.js → agent-site-editor-preview-DHkNf2Kb.js} +3 -3
  77. package/dist/client/assets/agent-view-DMFjk5Go.js +1 -0
  78. package/dist/client/assets/{agent-view-guard-CDMKVKUO.js → agent-view-guard-jbDY82eS.js} +1 -1
  79. package/dist/client/assets/{agents-list-BOOwFdef.js → agents-list-CF5eQ1pF.js} +1 -1
  80. package/dist/client/assets/{ai-providers-sMmu9wsX.js → ai-providers-COjB4NMg.js} +1 -1
  81. package/dist/client/assets/{alert-C14pJE8a.js → alert-DwSbSu1x.js} +1 -1
  82. package/dist/client/assets/{alert-dialog-UIve_Qbz.js → alert-dialog-dzu9U-o1.js} +1 -1
  83. package/dist/client/assets/api-keys-CWLFncf0.js +1 -0
  84. package/dist/client/assets/{api-keys-D2jNxWS5.js → api-keys-Cpho4Cho.js} +1 -1
  85. package/dist/client/assets/app-editor-BwzQ2tDT.js +1 -0
  86. package/dist/client/assets/{asset-utils-6ysSrocK.js → asset-utils-DLlbY7-O.js} +1 -1
  87. package/dist/client/assets/{auth-DmzS8LV2.js → auth-UveS8wF5.js} +1 -1
  88. package/dist/client/assets/{auth-catchall-Ca2pTkME.js → auth-catchall-CxHpvtO-.js} +1 -1
  89. package/dist/client/assets/{auth-entry-C64nF1Ms.js → auth-entry-BVtguEOj.js} +1 -1
  90. package/dist/client/assets/{auth-split-layout-d1DjV_Yi.js → auth-split-layout-DzJReBpa.js} +1 -1
  91. package/dist/client/assets/{authenticate-and-persist-oauth-DFWHiV6v.js → authenticate-and-persist-oauth-CrVNvw_C.js} +1 -1
  92. package/dist/client/assets/{automation-list-row-B9jAq9z4.js → automation-list-row-CXkhnqzA.js} +1 -1
  93. package/dist/client/assets/{automation-runs-BzTOS9F7.js → automation-runs-DBxHk2or.js} +1 -1
  94. package/dist/client/assets/{automations-DDJD4roA.js → automations-DFVUH58q.js} +1 -1
  95. package/dist/client/assets/{autosend-DJaBf7X2.js → autosend-BsJQ1aCs.js} +1 -1
  96. package/dist/client/assets/{avatar-BkGSc9H5.js → avatar-DV69nhm1.js} +1 -1
  97. package/dist/client/assets/{badge-CZpoNlx_.js → badge-Bx6TdTjC.js} +1 -1
  98. package/dist/client/assets/{block-document-BetLtfOz.js → block-document-Bz-5kssp.js} +1 -1
  99. package/dist/client/assets/{blocks-preview-workspace-context-Lz1gj5TO.js → blocks-preview-workspace-context-CzxgcZDm.js} +1 -1
  100. package/dist/client/assets/{breadcrumb-BHbw_kt8.js → breadcrumb-D4EWX36X.js} +1 -1
  101. package/dist/client/assets/{buckets-C2TBlqFE.js → buckets-B9z_Rm90.js} +1 -1
  102. package/dist/client/assets/{build-improve-prompt-doc-2Kj0ps7w.js → build-improve-prompt-doc-BWFSRTpm.js} +1 -1
  103. package/dist/client/assets/{bulk-category-panel-BT7d_iMl.js → bulk-category-panel-Dq461a8g.js} +1 -1
  104. package/dist/client/assets/{calendar-BJTEYvCF.js → calendar-BGdb4p0V.js} +1 -1
  105. package/dist/client/assets/{capability-load-error-wXKD3wMZ.js → capability-load-error-Dnwh9vPw.js} +1 -1
  106. package/dist/client/assets/{cards-CGLoDCpv.js → cards-CnQ4nU1q.js} +1 -1
  107. package/dist/client/assets/{category-editor-1f2gwKY5.js → category-editor-DYvQntUV.js} +1 -1
  108. package/dist/client/assets/{chart-ReltbOFE.js → chart-D7o3Rjgy.js} +1 -1
  109. package/dist/client/assets/{chat-context-CCpuTz2y.js → chat-context-Bj6XM8r6.js} +1 -1
  110. package/dist/client/assets/{chat-draft-BCtS6jQv.js → chat-draft-B57QKpbd.js} +1 -1
  111. package/dist/client/assets/{checkbox-C_yQd9-l.js → checkbox-DXk_ASm3.js} +1 -1
  112. package/dist/client/assets/{choose-editor-iAt-xDCA.js → choose-editor-yiYqZgm0.js} +1 -1
  113. package/dist/client/assets/{cli-auth-success-D0CsTuda.js → cli-auth-success-DaIMiHKG.js} +1 -1
  114. package/dist/client/assets/{client-icons-hGGX6Uo0.js → client-icons-BIZcUQix.js} +1 -1
  115. package/dist/client/assets/{collapsible-BBXFOyeS.js → collapsible-DvCpQaDP.js} +1 -1
  116. package/dist/client/assets/{collection-detail-CcxacW9K.js → collection-detail-GwafUKCA.js} +1 -1
  117. package/dist/client/assets/{collection-display-button-DwJpdHBM.js → collection-display-button-C8HgvUa3.js} +1 -1
  118. package/dist/client/assets/{collection-search-u7viusIZ.js → collection-search-BgR7E5C_.js} +1 -1
  119. package/dist/client/assets/{collection-table-wrapper-Dt0i03qe.js → collection-table-wrapper-CenPQBXL.js} +1 -1
  120. package/dist/client/assets/{collection-tabs-DCuy8V17.js → collection-tabs-BKMxlcTD.js} +1 -1
  121. package/dist/client/assets/{command-tKFpnUWi.js → command-PF8SQ01C.js} +1 -1
  122. package/dist/client/assets/{command-palette-store-D_KrAOxe.js → command-palette-store-3XeVzDCK.js} +1 -1
  123. package/dist/client/assets/{companion-mcps-section-CYcavt6d.js → companion-mcps-section-BcH1woZ_.js} +1 -1
  124. package/dist/client/assets/{connect-BORMc4s_.js → connect-cRr5yrcf.js} +1 -1
  125. package/dist/client/assets/{connect-layout-DBwBtlb7.js → connect-layout-DlS-pJxG.js} +1 -1
  126. package/dist/client/assets/{connection-BAtKmP5z.js → connection-D83jUgKt.js} +1 -1
  127. package/dist/client/assets/{connection-card-DmcRJGd6.js → connection-card-B6pHDnUn.js} +1 -1
  128. package/dist/client/assets/{connection-detail-Bl9OQ2_2.js → connection-detail-cjhq0_Le.js} +1 -1
  129. package/dist/client/assets/{connection-form-helpers-ChXzy84U.js → connection-form-helpers-CjgrOGRh.js} +1 -1
  130. package/dist/client/assets/{connections-BM_owntf.js → connections-jZ71xb1b.js} +1 -1
  131. package/dist/client/assets/{create-organization-dialog-D2vLvEWI.js → create-organization-dialog-Wy8ivV4K.js} +1 -1
  132. package/dist/client/assets/{decofile-api-DOQaHe6-.js → decofile-api-DGTmPuak.js} +1 -1
  133. package/dist/client/assets/{decopilot-U6qm51mC.js → decopilot-BQ5v61IW.js} +1 -1
  134. package/dist/client/assets/{dialog-CDIoGuZ9.js → dialog-DKHdGeG-.js} +1 -1
  135. package/dist/client/assets/{discover-CJtERFqE.js → discover-BpZ5XWNf.js} +1 -1
  136. package/dist/client/assets/{domain-settings-AexGm65m.js → domain-settings-bYxFZI5Z.js} +1 -1
  137. package/dist/client/assets/{download-app-dialog-CZpe9Bpu.js → download-app-dialog-BhmQVCrs.js} +1 -1
  138. package/dist/client/assets/{drawer-DD_d9Ihm.js → drawer-B1TxBXeW.js} +1 -1
  139. package/dist/client/assets/{dropdown-menu-lXpvP8fX.js → dropdown-menu-CoycaRIZ.js} +1 -1
  140. package/dist/client/assets/{editor-pfBZu3U7.js → editor-BEf-Idam.js} +1 -1
  141. package/dist/client/assets/{empty-state-CUxtDNbB.js → empty-state-BN3l0e1m.js} +1 -1
  142. package/dist/client/assets/{empty-state-B-bUlmIL.js → empty-state-BuDUIKwc.js} +1 -1
  143. package/dist/client/assets/{extract-connection-data-BdkbURJm.js → extract-connection-data-Bs0-7FAn.js} +1 -1
  144. package/dist/client/assets/{feature-gate-ilSWzddu.js → feature-gate-DXl7j_Gb.js} +1 -1
  145. package/dist/client/assets/{feature-paywall-CGQIXFyp.js → feature-paywall-2uPHyVRd.js} +1 -1
  146. package/dist/client/assets/{file-explorer-Y4B8gahR.js → file-explorer-CWZPR_uA.js} +1 -1
  147. package/dist/client/assets/{file-preview-BArnKs-h.js → file-preview-CZ1TplhI.js} +1 -1
  148. package/dist/client/assets/{file-share-button-yaLXJrdZ.js → file-share-button-I_P-fFZ5.js} +1 -1
  149. package/dist/client/assets/{file-type-icon-Xl3X9h9X.js → file-type-icon-SwABlaSO.js} +1 -1
  150. package/dist/client/assets/{folder-icon-DgraP_jj.js → folder-icon-Bj6hz7oH.js} +1 -1
  151. package/dist/client/assets/{form-D3bb_HbP.js → form-CCI8usbr.js} +1 -1
  152. package/dist/client/assets/{gateway-client-MOoaTBYd.js → gateway-client-2Mbrw7Hg.js} +1 -1
  153. package/dist/client/assets/{general-DGadMqdI.js → general-T1zzubww.js} +1 -1
  154. package/dist/client/assets/{github-icon-OYnbrvjW.js → github-icon-CCyh_tld.js} +1 -1
  155. package/dist/client/assets/{home-R10BeitL.js → home-nMTACPWA.js} +1 -1
  156. package/dist/client/assets/{hooks-DxGBuaYU.js → hooks-C4BbSdNW.js} +1 -1
  157. package/dist/client/assets/{hooks-BFEQOnMH.js → hooks-DxP9ms8F.js} +1 -1
  158. package/dist/client/assets/{index-BeOidgbu.js → index-B7wVUCeI.js} +1 -1
  159. package/dist/client/assets/{index-ClORI_ru.js → index-BIFBhz6Y.js} +1 -1
  160. package/dist/client/assets/{index-DB6Ge3je.js → index-BW3bCYgD.js} +1 -1
  161. package/dist/client/assets/{index-H6rDZVZ0.js → index-BeW32OQZ.js} +1 -1
  162. package/dist/client/assets/{index-BcAU6jUB.js → index-BpW_HPV1.js} +1 -1
  163. package/dist/client/assets/{index-DtMPShzz.js → index-BzGfYuHA.js} +1 -1
  164. package/dist/client/assets/{index-36q0KH9q.js → index-C1OUd215.js} +1 -1
  165. package/dist/client/assets/{index-DnAk9Nyh.js → index-CR7IhZdQ.js} +1 -1
  166. package/dist/client/assets/{index-DBO9cCXt.js → index-CfiHR5p3.js} +2 -2
  167. package/dist/client/assets/{index-7GIBUNmw.js → index-D6hy4U5O.js} +1 -1
  168. package/dist/client/assets/{index-IErtOCOr.js → index-DplUenCs.js} +1 -1
  169. package/dist/client/assets/{index-BO3LYThj.js → index-DvsuDjpW.js} +1 -1
  170. package/dist/client/assets/{index-X5MI3pus.js → index-L41E_jdu.js} +1 -1
  171. package/dist/client/assets/{index-CfkgapAu.js → index-S-urKMuN.js} +1 -1
  172. package/dist/client/assets/{index-redirect-DJd8-Xc3.js → index-redirect-D31X29B5.js} +1 -1
  173. package/dist/client/assets/{index-C_U_Ej5y.js → index-wju8DM5a.js} +1 -1
  174. package/dist/client/assets/{infiniteQueryObserver-B2DNwqpn.js → infiniteQueryObserver-F_wqd-Rj.js} +1 -1
  175. package/dist/client/assets/{infra-billing-B7aFZq_z.js → infra-billing-D0PNqi3s.js} +1 -1
  176. package/dist/client/assets/{input-BqEtrH9V.js → input-DOqceFPC.js} +1 -1
  177. package/dist/client/assets/{input-MnCp8I9S.js → input-S-gsq7gD.js} +1 -1
  178. package/dist/client/assets/{input-Cib8uNJq.js → input-SZCoDRD-.js} +1 -1
  179. package/dist/client/assets/{integration-icon-CI_HCWP1.js → integration-icon-_HXUWC0Q.js} +1 -1
  180. package/dist/client/assets/{label-C7gaXCZI.js → label-DCUE6TYd.js} +1 -1
  181. package/dist/client/assets/{last-preview-page-CjF-vPej.js → last-preview-page-D9Fx5pKm.js} +1 -1
  182. package/dist/client/assets/{layout-Da4R3PKB.js → layout-DRh2IKmg.js} +1 -1
  183. package/dist/client/assets/{legacy-agents-deep-C5W7c4qv.js → legacy-agents-deep-BPmqpQyn.js} +1 -1
  184. package/dist/client/assets/{legacy-main-redirect-C4YsYRGW.js → legacy-main-redirect-34brc64A.js} +1 -1
  185. package/dist/client/assets/{library-Uh4LG-cO.js → library-D0EEtDE-.js} +1 -1
  186. package/dist/client/assets/{login-BCqFTTN3.js → login-wXsz7PP7.js} +1 -1
  187. package/dist/client/assets/{markdown-BA0OOTT5.js → markdown-CCv5IlPx.js} +1 -1
  188. package/dist/client/assets/{mcp-app-renderer-DNK8Ww9U.js → mcp-app-renderer-BVpwtvW6.js} +1 -1
  189. package/dist/client/assets/{mcp-oauth-E1-_MSLJ.js → mcp-oauth-DbZXTEaP.js} +1 -1
  190. package/dist/client/assets/{members-DMFS5j6T.js → members-D8EXLICP.js} +1 -1
  191. package/dist/client/assets/{message-templates-CHL289gR.js → message-templates-xXuDAWxI.js} +1 -1
  192. package/dist/client/assets/{mini-report-page-D55GaVnW.js → mini-report-page-BuRwBHqD.js} +1 -1
  193. package/dist/client/assets/{mock-board-CJ3XB0zZ.js → mock-board-CRzDhPtf.js} +3 -3
  194. package/dist/client/assets/{monaco-editor-DcRJRpxQ.js → monaco-editor-QBiS6INp.js} +1 -1
  195. package/dist/client/assets/{monitoring-stats-row-C2LqUf0n.js → monitoring-stats-row-YHUVjX34.js} +1 -1
  196. package/dist/client/assets/{multi-select-Bjr_EhQN.js → multi-select-BPe8FRks.js} +1 -1
  197. package/dist/client/assets/{mustache-itxfxEAe.js → mustache-Cghs0xAa.js} +1 -1
  198. package/dist/client/assets/{oauth-callback-BWcHdGO5.js → oauth-callback-DasyYGDW.js} +1 -1
  199. package/dist/client/assets/{oauth-callback-ai-provider-BTf9EDbX.js → oauth-callback-ai-provider-PZGmoG1J.js} +1 -1
  200. package/dist/client/assets/{onboarding-BBCR8xK6.js → onboarding-CxwToftc.js} +1 -1
  201. package/dist/client/assets/{optimistic-project-sidebar-views-BUuVL5HA.js → optimistic-project-sidebar-views-CkdziasT.js} +1 -1
  202. package/dist/client/assets/{organization-choice-DzRgCtEh.js → organization-choice-DyW08sxK.js} +1 -1
  203. package/dist/client/assets/{orgs-DQtWe6lg.js → orgs-DJ8iJmJH.js} +1 -1
  204. package/dist/client/assets/{page-seo-form-BNgf6hzv.js → page-seo-form-Di_npWJ4.js} +1 -1
  205. package/dist/client/assets/{pair-Cq_eCXFK.js → pair-Dpg5RzdY.js} +1 -1
  206. package/dist/client/assets/{plan-ladder-C-CKfgUk.js → plan-ladder-ClS63sS8.js} +1 -1
  207. package/dist/client/assets/{popover-DR-dG5KR.js → popover-RErMjkys.js} +1 -1
  208. package/dist/client/assets/{post-calendar-BYiZ29h-.js → post-calendar-Ba_bnQmW.js} +1 -1
  209. package/dist/client/assets/{post-editor-CV_ATL0Q.js → post-editor-CMawN_7j.js} +1 -1
  210. package/dist/client/assets/{preview-content-bwgn_bz9.js → preview-content-Cir3xjov.js} +1 -1
  211. package/dist/client/assets/{preview-dialog-Cfw3j9Dw.js → preview-dialog-DXRDlQ04.js} +1 -1
  212. package/dist/client/assets/{primitives-Cm5UH1ss.js → primitives-D5fyRotM.js} +1 -1
  213. package/dist/client/assets/{profile-H1FxU5Go.js → profile-CARb014r.js} +1 -1
  214. package/dist/client/assets/{project-app-view-Cp5-B5A0.js → project-app-view-CbZ9X9YB.js} +1 -1
  215. package/dist/client/assets/{project-feed-BMnjN7RJ.js → project-feed-BnvodKMh.js} +1 -1
  216. package/dist/client/assets/{project-icon-CDxBSoB_.js → project-icon-B0ih2u61.js} +1 -1
  217. package/dist/client/assets/project-reports-N4YBKsf_.js +1 -0
  218. package/dist/client/assets/project-tasks-Bhadpjy2.js +1 -0
  219. package/dist/client/assets/{prompts-Xn8WtcY4.js → prompts-DC4p_0y3.js} +1 -1
  220. package/dist/client/assets/record-editor-B7I5ENzo.js +1 -0
  221. package/dist/client/assets/{redirect-editor-DLE97NUb.js → redirect-editor-B55pPerd.js} +1 -1
  222. package/dist/client/assets/registry-C0G-_nW5.js +2 -0
  223. package/dist/client/assets/{registry-layout-CrzAqZeN.js → registry-layout-hY2gP5kb.js} +1 -1
  224. package/dist/client/assets/reports-B1m4nLcC.js +1 -0
  225. package/dist/client/assets/{reports-CV3sX1WT.js → reports-BRDL0pEv.js} +1 -1
  226. package/dist/client/assets/{reports-onboarding-UzOhW8yd.js → reports-onboarding-CVlJWsoz.js} +1 -1
  227. package/dist/client/assets/{reports-tab-CPU-wV1j.js → reports-tab-DSQtYmT9.js} +2 -2
  228. package/dist/client/assets/{repositories-CABW2wYh.js → repositories-D8heZRgl.js} +1 -1
  229. package/dist/client/assets/{repository-import-picker-BqkK7zXL.js → repository-import-picker-C2CebsOL.js} +1 -1
  230. package/dist/client/assets/{repository-picker-BsfTUz0Z.js → repository-picker-5XZZ15v0.js} +1 -1
  231. package/dist/client/assets/{require-capability-DCm3xEVH.js → require-capability-BJkKy0kt.js} +1 -1
  232. package/dist/client/assets/{required-auth-layout-By-Cm9L3.js → required-auth-layout-BwX4AD0R.js} +1 -1
  233. package/dist/client/assets/{reset-password-BbkaUrpa.js → reset-password-D0tmp0EO.js} +1 -1
  234. package/dist/client/assets/{resizable-noYdBaXy.js → resizable-DDt8g8vK.js} +1 -1
  235. package/dist/client/assets/{review-settings-xEEquwgL.js → review-settings-BuR2yqLd.js} +1 -1
  236. package/dist/client/assets/{rich-text-link-control-D0WOrLmt.js → rich-text-link-control-BU04B-4N.js} +1 -1
  237. package/dist/client/assets/{roles-0HIRr5Ri.js → roles-Dlq8_r8a.js} +1 -1
  238. package/dist/client/assets/{route-DCadoPQC.js → route-CVpzQ3gM.js} +1 -1
  239. package/dist/client/assets/{route-DKnEJmhu.js → route-DE-oHInD.js} +1 -1
  240. package/dist/client/assets/{route-DrLKmE9A.js → route-Kp0M8uVs.js} +1 -1
  241. package/dist/client/assets/{runnable-block-editor-pB3LBrJG.js → runnable-block-editor-CS_U3fa-.js} +1 -1
  242. package/dist/client/assets/{sandbox-lifecycle-context-DYGk3uhe.js → sandbox-lifecycle-context-CsT5D-QV.js} +1 -1
  243. package/dist/client/assets/{schema-BeeGelcJ.js → schema-kS1q2dfz.js} +1 -1
  244. package/dist/client/assets/{scroll-area-DMzzzKoj.js → scroll-area-CXYGaVSO.js} +1 -1
  245. package/dist/client/assets/{search-input-DT6HnLyR.js → search-input-BtpfjT5l.js} +1 -1
  246. package/dist/client/assets/{secrets-CWw6j4gW.js → secrets-DriRRH1t.js} +1 -1
  247. package/dist/client/assets/{sections-editor-CXpbeOKT.js → sections-editor-C9C533d2.js} +1 -1
  248. package/dist/client/assets/{select-Bg8M-SBL.js → select-BOl9wnf6.js} +1 -1
  249. package/dist/client/assets/{select-model-BTAEn-o-.js → select-model-S4XMti-S.js} +1 -1
  250. package/dist/client/assets/{seo-editor-CsF8qWXD.js → seo-editor-BFKhbHb8.js} +1 -1
  251. package/dist/client/assets/{settings-tab-a6jg2R8E.js → settings-tab-CzTdGYon.js} +1 -1
  252. package/dist/client/assets/{sheet-DXK46bFL.js → sheet-Ceo6cjp6.js} +1 -1
  253. package/dist/client/assets/{shell-layout-zxLGAzC4.js → shell-layout-CQI5EYIN.js} +1 -1
  254. package/dist/client/assets/{sidebar-H--OWLmJ.js → sidebar-Cr04YrvT.js} +1 -1
  255. package/dist/client/assets/{skill-preview-y37W05KI.js → skill-preview-CJENC0FV.js} +1 -1
  256. package/dist/client/assets/{skills-ZTxx2FQt.js → skills-_wNQ3Q4Z.js} +1 -1
  257. package/dist/client/assets/{sso-DtS1pp7O.js → sso-DcjvBhN8.js} +1 -1
  258. package/dist/client/assets/{store-CCMmsV8z.js → store-C8yaccqA.js} +1 -1
  259. package/dist/client/assets/store-registry-C4goSG7S.js +2 -0
  260. package/dist/client/assets/{switch-BJbN9Hof.js → switch-DbzO6PiM.js} +1 -1
  261. package/dist/client/assets/{synced-repos-dT-fmTlS.js → synced-repos-CUy4rER9.js} +1 -1
  262. package/dist/client/assets/{table-CPJOwfRj.js → table-CUSmiMk_.js} +1 -1
  263. package/dist/client/assets/{tabs-M6MjL7bf.js → tabs-52cPaZXm.js} +1 -1
  264. package/dist/client/assets/{task-board-DqB2XE8W.js → task-board-CurTs85l.js} +1 -1
  265. package/dist/client/assets/{task-route-D_gHz_Ej.js → task-route-Bm0ou-_S.js} +1 -1
  266. package/dist/client/assets/{task-status-C7QvXgZU.js → task-status-BaM-QAj1.js} +1 -1
  267. package/dist/client/assets/tasks-B9F5PMjK.js +1 -0
  268. package/dist/client/assets/{tasks-DWgtKv6L.js → tasks-BwcO5_EM.js} +1 -1
  269. package/dist/client/assets/{textarea-DHCNd9eE.js → textarea-Q7sXwojB.js} +1 -1
  270. package/dist/client/assets/{thread-intent-C9vyWsKq.js → thread-intent-DEVJhxVt.js} +1 -1
  271. package/dist/client/assets/{thread-route-Ikku3vet.js → thread-route-D6xj1qQJ.js} +1 -1
  272. package/dist/client/assets/{thread-route-CsLpKMHf.js → thread-route-Dwt9n8IO.js} +1 -1
  273. package/dist/client/assets/{thread-sheet-body-DWP_ioKW.js → thread-sheet-body-BZp0HOAe.js} +1 -1
  274. package/dist/client/assets/{toggle-group-wc_J_R0E.js → toggle-group-CXPhZI2J.js} +1 -1
  275. package/dist/client/assets/{toolbar-icon-button-BUHr7qyk.js → toolbar-icon-button-B5qgEXx3.js} +1 -1
  276. package/dist/client/assets/{tooltip-jmvQwLuk.js → tooltip-DIW02rf-.js} +1 -1
  277. package/dist/client/assets/{track-DyNbDPiZ.js → track-B4UKRWe_.js} +1 -1
  278. package/dist/client/assets/{types-raXS_M8t.js → types-B3jTqzVf.js} +1 -1
  279. package/dist/client/assets/{usage-stats-CHgRSpwy.js → usage-stats-Bb9Gp-Dh.js} +1 -1
  280. package/dist/client/assets/{use-ai-providers-CX8K3zeX.js → use-ai-providers-DMafZHsF.js} +1 -1
  281. package/dist/client/assets/{use-automations-jgaie9h_.js → use-automations-COtBDrNr.js} +1 -1
  282. package/dist/client/assets/{use-autosave-DKm-ZzOp.js → use-autosave-CVgSUfQU.js} +1 -1
  283. package/dist/client/assets/{use-connect-companion-BBY2aTFC.js → use-connect-companion-DMsU19hB.js} +1 -1
  284. package/dist/client/assets/{use-connection-B3aUmG9U.js → use-connection-Cgge7ejL.js} +1 -1
  285. package/dist/client/assets/{use-copy-BZxbbwx9.js → use-copy-Cfn-m-ZW.js} +1 -1
  286. package/dist/client/assets/{use-create-virtual-mcp-DA_KW4Fn.js → use-create-virtual-mcp-CIJNntTR.js} +1 -1
  287. package/dist/client/assets/{use-date-fns-locale-C_d3iiTU.js → use-date-fns-locale-BUWupqqb.js} +1 -1
  288. package/dist/client/assets/{use-debounced-autosave-CQrsVPU1.js → use-debounced-autosave-Z2J2ec3T.js} +1 -1
  289. package/dist/client/assets/{use-debounced-value-VSXNufNs.js → use-debounced-value-DfSh3fpE.js} +1 -1
  290. package/dist/client/assets/{use-deco-credits-D0y4xTjc.js → use-deco-credits-Du018wK9.js} +1 -1
  291. package/dist/client/assets/{use-decopilot-events-DeVrdd52.js → use-decopilot-events-B-nXlaQa.js} +1 -1
  292. package/dist/client/assets/{use-delete-connection-DQ-3ghw2.js → use-delete-connection-CbdREeJX.js} +1 -1
  293. package/dist/client/assets/{use-deployment-admin-CO4dsbjq.js → use-deployment-admin-BfQ856y9.js} +1 -1
  294. package/dist/client/assets/{use-entitlements-kcDnxiY2.js → use-entitlements-Bir1zQcD.js} +1 -1
  295. package/dist/client/assets/{use-fast-preview-draft-url-DkEWSnVl.js → use-fast-preview-draft-url-CI4dqTq2.js} +1 -1
  296. package/dist/client/assets/{use-file-configs-BZu8P36G.js → use-file-configs-B04A692l.js} +1 -1
  297. package/dist/client/assets/{use-infinite-scroll-Ba--hX3Q.js → use-infinite-scroll-NmeaxM7f.js} +1 -1
  298. package/dist/client/assets/{use-join-requests-BZznmzvf.js → use-join-requests-DI0a8svX.js} +1 -1
  299. package/dist/client/assets/{use-main-panel-tabs-CcuQQ7t9.js → use-main-panel-tabs-CBiJ8PZZ.js} +1 -1
  300. package/dist/client/assets/{use-mcp-auth-status--E_iOlPq.js → use-mcp-auth-status-B5PR04-x.js} +1 -1
  301. package/dist/client/assets/{use-mcp-client-CFENhVTu.js → use-mcp-client-2DKlVY7y.js} +1 -1
  302. package/dist/client/assets/{use-mcp-prompts-CvSNcrto.js → use-mcp-prompts-DPn1lgbL.js} +1 -1
  303. package/dist/client/assets/{use-mcp-tools-BQhinLYS.js → use-mcp-tools-0KttftJq.js} +1 -1
  304. package/dist/client/assets/{use-members-C7CiF_Ox.js → use-members-BOo0dfib.js} +1 -1
  305. package/dist/client/assets/{use-mobile-DFIDGOkY.js → use-mobile-dc5AlUoG.js} +1 -1
  306. package/dist/client/assets/{use-navigate-to-agent-DHdbR7N5.js → use-navigate-to-agent-BsM0_8Qa.js} +1 -1
  307. package/dist/client/assets/{use-open-billing-url-DkJS-zaj.js → use-open-billing-url-DU-RhPSk.js} +1 -1
  308. package/dist/client/assets/{use-org-auth-client-B3C76NaL.js → use-org-auth-client-EU2_QrcX.js} +1 -1
  309. package/dist/client/assets/{use-org-fs-z-OQ_g_P.js → use-org-fs-CPcFon5v.js} +1 -1
  310. package/dist/client/assets/{use-org-notice-MaHYxEkZ.js → use-org-notice-CJ4ginwY.js} +1 -1
  311. package/dist/client/assets/{use-org-sso-BPi8buGP.js → use-org-sso-DliUqcof.js} +1 -1
  312. package/dist/client/assets/{use-organization-roles-DhBO1Ts6.js → use-organization-roles-DWRM5Xlm.js} +1 -1
  313. package/dist/client/assets/{use-organization-settings-1t_21qnn.js → use-organization-settings-CZaZMu7C.js} +1 -1
  314. package/dist/client/assets/{use-panel-navigate-BaXOn89z.js → use-panel-navigate-ClG-UYrb.js} +1 -1
  315. package/dist/client/assets/{use-project-native-view-presence-HrNtSzTv.js → use-project-native-view-presence-YmT7vpKk.js} +1 -1
  316. package/dist/client/assets/{use-project-scope-BLg8LJSu.js → use-project-scope-CsFUzitf.js} +1 -1
  317. package/dist/client/assets/{use-registry-connections-NZIxdL-z.js → use-registry-connections-JpgvKLOj.js} +1 -1
  318. package/dist/client/assets/{use-releases-DnsfA1SK.js → use-releases-Bgl6UW0_.js} +1 -1
  319. package/dist/client/assets/{use-reports-diagnostic-Bvkqpj5y.js → use-reports-diagnostic-eNPzfjim.js} +1 -1
  320. package/dist/client/assets/{use-route-default-main-ERgPxe4V.js → use-route-default-main-DDalOeoB.js} +1 -1
  321. package/dist/client/assets/{use-secrets-saKEG6uD.js → use-secrets-WK-wxIoH.js} +1 -1
  322. package/dist/client/assets/{use-section-preview-base-BSsgI0pp.js → use-section-preview-base-CUFpzI8Q.js} +1 -1
  323. package/dist/client/assets/{use-session-runtime-CfHLK7v7.js → use-session-runtime-CwgGPQkM.js} +1 -1
  324. package/dist/client/assets/{use-tags-D9C5HZyh.js → use-tags-BqLVEjBd.js} +1 -1
  325. package/dist/client/assets/{use-task-metadata-L9jRDdBp.js → use-task-metadata-D1gl7viW.js} +1 -1
  326. package/dist/client/assets/{use-thread-outputs-ctdnQS_F.js → use-thread-outputs-BnQmraib.js} +1 -1
  327. package/dist/client/assets/{use-view-mode-Bsjm3Emn.js → use-view-mode-BLK8sDZS.js} +1 -1
  328. package/dist/client/assets/{use-virtual-mcp-BNclwWrf.js → use-virtual-mcp-vVWql7vM.js} +1 -1
  329. package/dist/client/assets/useInfiniteQuery-BUDJQ-a0.js +1 -0
  330. package/dist/client/assets/{useQueries-Bwlz6BY3.js → useQueries-Do0UR3yN.js} +1 -1
  331. package/dist/client/assets/useSuspenseInfiniteQuery-BCBsko2y.js +1 -0
  332. package/dist/client/assets/{users-DAnuRLHR.js → users-DtkqmbRr.js} +1 -1
  333. package/dist/client/assets/{utils-Deo6cHH9.js → utils-WGdymi8M.js} +1 -1
  334. package/dist/client/assets/{variant-calendar-tHHVG6SE.js → variant-calendar-DBuSS1Kj.js} +1 -1
  335. package/dist/client/assets/{variant-matcher-override-DGI73MmS.js → variant-matcher-override-zmFjw0un.js} +1 -1
  336. package/dist/client/assets/{view-mode-toggle-CNRI2GCY.js → view-mode-toggle-5ObOX782.js} +1 -1
  337. package/dist/client/assets/{virtual-mcp-DFTQ_e3C.js → virtual-mcp-DhQhvEKt.js} +1 -1
  338. package/dist/client/index.html +1 -1
  339. package/dist/server/cli.js +2 -2
  340. package/dist/server/server.js +2 -2
  341. package/package.json +1 -1
  342. package/dist/client/assets/agent-app-Gfc2coLy.js +0 -1
  343. package/dist/client/assets/agent-deck-4T-PW0D9.js +0 -1
  344. package/dist/client/assets/agent-file-CKdAFcim.js +0 -1
  345. package/dist/client/assets/agent-library-file-B3g3OsK3.js +0 -1
  346. package/dist/client/assets/agent-settings-BnkExNHD.js +0 -1
  347. package/dist/client/assets/agent-site-editor-code-Ck23JptD.js +0 -2
  348. package/dist/client/assets/agent-view-OMgY_bvf.js +0 -1
  349. package/dist/client/assets/api-keys-B4eTKmoS.js +0 -1
  350. package/dist/client/assets/app-editor-H6TPM1GK.js +0 -1
  351. package/dist/client/assets/project-reports-QTC8uOco.js +0 -1
  352. package/dist/client/assets/project-tasks-De69tF-f.js +0 -1
  353. package/dist/client/assets/record-editor-CqB6PK2b.js +0 -1
  354. package/dist/client/assets/registry-D9UQpXZr.js +0 -2
  355. package/dist/client/assets/reports-aGsYwN1j.js +0 -1
  356. package/dist/client/assets/store-registry-ChqgNS-o.js +0 -2
  357. package/dist/client/assets/tasks-R0aJT0ut.js +0 -1
  358. package/dist/client/assets/useInfiniteQuery-CbTYAVvH.js +0 -1
  359. package/dist/client/assets/useSuspenseInfiniteQuery-BKR7qjCf.js +0 -1
@@ -2076,7 +2076,7 @@ Usage: deco services <up|down|status>`),process.exit(1)}}var Ce1=D(()=>{jg()});f
2076
2076
  `.execute($);if(Number(W.rows[0]?.cnt)===0){console.warn(`Failed to migrate ${G}/${K}, keeping in old table`);continue}}await dh`
2077
2077
  DELETE FROM kysely_migration WHERE name = ${Q}
2078
2078
  `.execute($)}}async function e4$($){await NQ4($),await BQ4($);let Z=new a4$({db:$,provider:{getMigrations:()=>Promise.resolve(oa0)}}),{error:Q,results:X}=await Z.migrateToLatest(),Y=0;if(X?.forEach((J)=>{if(J.status==="Success")Y++;else if(J.status==="Error")console.error(`Failed to execute migration "${J.migrationName}"`)}),Q)throw console.error("Failed to migrate"),console.error(Q),Q;return Y}async function OQ4($){let{keepOpen:Z=!1,database:Q,skipBetterAuth:X=!1}=$??{},Y="skipped";if(!X&&!Q)Y=await Dn0();let J=Q??l$(),G=async()=>{if(!Z&&!Q)await ID(J).catch((K)=>{console.warn("Warning: Error closing database:",K)})};try{let K=await e4$(J.db);return await G(),{betterAuth:Y,kysely:K}}catch(K){throw await G(),K}}async function DQ4(){let $=l$(),Z=new a4$({db:$.db,provider:{getMigrations:()=>Promise.resolve(oa0)}}),{error:Q,results:X}=await Z.migrateDown();if(X?.forEach((Y)=>{if(Y.status==="Success")console.log(`\u2705 Migration "${Y.migrationName}" rolled back successfully`);else if(Y.status==="Error")console.error(`\u274C Failed to rollback migration "${Y.migrationName}"`)}),Q)throw console.error("Failed to rollback migration"),console.error(Q),Q}var Z6$=D(()=>{r4$();Ln0();bQ()});async function iY0($){let Z={...process.env},Q=f50($,Z);console.log(v21(Q.settings.encryptionKey));let X=Q.settings.betterAuthSecret||(Q.settings.localMode?H1$(Q.settings.dataDir):""),{ensureServices:Y}=await Promise.resolve().then(() => (nX0(),pX0)),{outputs:J,services:G}=await Y({home:Q.settings.dataDir,externalDatabaseUrl:Q.externalDatabaseUrl,externalNatsUrl:Q.externalNatsUrl});if(!Q.skipMigrations){let{migrateBetterAuth:W}=await Promise.resolve().then(() => (Ln0(),U1$));await W(J.databaseUrl);let{createDatabase:H}=await Promise.resolve().then(() => (bQ(),I0$)),{migrateToLatest:F}=await Promise.resolve().then(() => (Z6$(),$6$)),U=H(J.databaseUrl);await F({keepOpen:!0,database:U,skipBetterAuth:!0})}let K={...Q.settings,betterAuthSecret:X,databaseUrl:J.databaseUrl,natsUrls:J.natsUrls,...J.s3?{s3Endpoint:J.s3.endpoint,s3Bucket:J.s3.bucket,s3AccessKeyId:J.s3.accessKeyId,s3SecretAccessKey:J.s3.secretAccessKey,s3ForcePathStyle:J.s3.forcePathStyle}:{}};return _e1(K),{settings:K,services:G.map((W)=>({name:W.name==="PostgreSQL"?"Postgres":W.name,port:W.port})),managedServiceNames:G.filter((W)=>W.owner==="managed").map((W)=>W.name)}}var ra0=D(()=>{jg();F1$();Z$()});var J6$={};e(J6$,{updateService:()=>Sz,subscribeCliState:()=>ea0,setTuiConsoleIntercepted:()=>pY0,setServerUrl:()=>Xo,setMigrationsDone:()=>Qo,setDevMode:()=>wQ4,resetCliStateForTests:()=>LQ4,isTuiConsoleIntercepted:()=>nY0,getCliState:()=>sa0,addLogEntry:()=>vD});function Q6$(){return[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}]}function X6$(){return{services:Q6$(),migrationsStatus:"pending",serverUrl:null,logs:[]}}function LQ4(){qY=X6$()}function Zo(){for(let $ of aa0)$()}function sa0(){return qY}function ea0($){return aa0.add($),()=>aa0.delete($)}function Sz($){qY={...qY,services:qY.services.map((Z)=>Z.name===$.name?$:Z)},Zo()}function Qo(){qY={...qY,migrationsStatus:"done"},Zo()}function Xo($){qY={...qY,serverUrl:$},Zo()}function vD($){let Z=[...qY.logs,$];qY={...qY,logs:Z.length>500?Z.slice(-500):Z},Zo()}function wQ4(){qY={...qY,services:[...Q6$(),{name:"API",status:"pending",port:0},{name:"Vite",status:"pending",port:0}]},Zo()}function pY0($){Y6$=$}function nY0(){return Y6$}var qY,aa0,Y6$=!1;var Cz=D(()=>{qY=X6$();aa0=new Set});import{createServer as G6$}from"net";function jQ4($){return new Promise((Z)=>{let Q=G6$();Q.once("error",()=>Z(!1)),Q.listen($,"0.0.0.0",()=>{Q.close(()=>Z(!0))})})}async function Yo($){if(await jQ4($))return $;let Z=await new Promise((Q,X)=>{let Y=G6$();Y.once("error",X),Y.listen(0,"0.0.0.0",()=>{let J=Y.address(),G=typeof J==="object"&&J?J.port:0;Y.close(()=>Q(G))})});return console.warn(`Port ${$} is in use, using port ${Z} instead.`),Z}var $s0=()=>{};var Qs0={};e(Qs0,{startDevServer:()=>zQ4,pipeToLogStore:()=>Zs0});import{join as EQ4}from"path";function Zs0($){let Z=$.getReader(),Q=new TextDecoder,X="";function Y(){let J=X.split(`
2079
- `);X=J.pop()??"";for(let G of J){let K=Bun.stripANSI(G).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;vD({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:K})}}(async()=>{try{for(;;){let{done:J,value:G}=await Z.read();if(J)break;X+=Q.decode(G,{stream:!0}),Y()}}catch{}if(X.trim()){let J=Bun.stripANSI(X).replace(/^\[\d+\]\s*/,"").trim();if(J)vD({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:J})}})()}async function zQ4($){let{baseUrl:Z,noTui:Q}=$,X=process.env.HOST==="0.0.0.0"&&Boolean(process.env.PORT),Y=X?process.env.PORT:$.vitePort,J=Z||`http://localhost:${Y}`,G=X?await Yo(Number(Y)+1):await Yo(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await iY0({port:String(G),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let L of W)Sz({name:L.name,status:"ready",port:L.port});Qo();let F=EQ4(import.meta.dir,"..","..","..","..",".."),U=Q===!0,N=Bun.spawn(["bun","run","dev:servers"],{cwd:F,env:{...process.env,PORT:String(K.port),VITE_PORT:String(Y),DATABASE_URL:K.databaseUrl,NATS_URL:K.natsUrls.join(","),NODE_ENV:K.nodeEnv,BASE_URL:J,DECOCMS_LOCAL_MODE:String(K.localMode),DECOCMS_HOME:K.dataDir,DATA_DIR:K.dataDir,DECO_CLI:"1",...K.betterAuthSecret?{BETTER_AUTH_SECRET:K.betterAuthSecret}:{},...K.s3Endpoint?{S3_ENDPOINT:K.s3Endpoint,S3_BUCKET:K.s3Bucket??"",S3_ACCESS_KEY_ID:K.s3AccessKeyId??"",S3_SECRET_ACCESS_KEY:K.s3SecretAccessKey??"",S3_FORCE_PATH_STYLE:String(K.s3ForcePathStyle)}:{},...K.natsCredsPath?{NATS_CREDS:K.natsCredsPath}:{}},stdio:["inherit",U?"inherit":"pipe",U?"inherit":"pipe"]});if(!U)Zs0(N.stdout),Zs0(N.stderr);Xo(J),Sz({name:"Vite",status:"ready",port:Number(Y)}),Sz({name:"API",status:"ready",port:Number(K.port)});let O=async(L)=>{if(N.kill(L),await N.exited,H.length>0){let{stopServices:w}=await Promise.resolve().then(() => (nX0(),pX0));await w(K.dataDir)}};return process.on("SIGINT",()=>O("SIGINT")),process.on("SIGTERM",()=>O("SIGTERM")),{port:Number(Y),process:N}}var Xs0=D(()=>{ra0();Cz();$s0()});var tY0;var Ys0=D(()=>{tY0={name:"decocms",version:"4.367.5",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});import{Box as AQ4,Text as K6$}from"ink";import{jsx as TQ4,jsxs as W6$}from"react/jsx-runtime";function H6$({version:$}){return W6$(AQ4,{flexDirection:"column",marginTop:1,children:[LY0.map((Z,Q)=>TQ4(K6$,{color:wY0[Q],children:Z},Q)),W6$(K6$,{dimColor:!0,children:[" v",$]})]})}var F6$=D(()=>{lt()});import{Box as _z,Text as xD}from"ink";import{Spinner as RQ4}from"@inkjs/ui";import{jsx as dJ,jsxs as ih}from"react/jsx-runtime";function U6$({status:$}){if($==="pending")return dJ(RQ4,{label:""});return dJ(xD,{color:"green",children:"\u2713"})}function qQ4($){return`${$.name}: ${$.port||"...."}`}function N6$({services:$,migrationsStatus:Z,home:Q,serverUrl:X}){return ih(_z,{flexDirection:"column",paddingBottom:1,children:[dJ(H6$,{version:tY0.version}),dJ(_z,{marginBottom:1,children:dJ(xD,{dimColor:!0,children:"\u2500".repeat(80)})}),dJ(_z,{children:ih(xD,{dimColor:!0,children:["Home: ",Q]})}),ih(_z,{gap:2,children:[$.map((Y)=>ih(_z,{gap:1,children:[dJ(xD,{children:qQ4(Y)}),dJ(U6$,{status:Y.status})]},Y.name)),ih(_z,{gap:1,children:[dJ(xD,{children:"Migrations"}),dJ(U6$,{status:Z})]})]}),dJ(_z,{children:X?ih(xD,{children:["Open in browser: ",dJ(xD,{color:"cyan",children:X})]}):dJ(xD,{dimColor:!0,children:"Starting..."})})]})}var B6$=D(()=>{Ys0();F6$()});import{Box as MQ4,Text as Jo}from"ink";import{jsx as Js0,jsxs as Gs0}from"react/jsx-runtime";function IQ4($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function O6$({logs:$}){return Js0(MQ4,{flexDirection:"column",children:$.map((Z,Q)=>{if(Z.rawLine)return Js0(Jo,{dimColor:!0,children:Z.rawLine},Q);let X=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return Gs0(Jo,{children:[Gs0(Jo,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),Js0(Jo,{color:IQ4(Z.status),children:Z.status}),Gs0(Jo,{dimColor:!0,children:[" ",X.padStart(8)]})]},Q)})})}var D6$=()=>{};var Ks0={};e(Ks0,{App:()=>SQ4});import{Box as VQ4}from"ink";import{useSyncExternalStore as kQ4}from"react";import{jsx as L6$,jsxs as CQ4}from"react/jsx-runtime";function SQ4({home:$}){let Z=kQ4(ea0,sa0);return CQ4(VQ4,{flexDirection:"column",children:[L6$(N6$,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),L6$(O6$,{logs:Z.logs})]})}var Ws0=D(()=>{B6$();D6$();Cz()});var LG="thread-gate",VN="decopilot-hosted-harness",kN="decopilot-hosted-harness-sandboxed",wG="automations",fD="background-tools",vz="task-board-github-reads";var w6$="11";function j6$($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:w6$,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var E6$=()=>{};import _Q4 from"pg";async function P6$($,Z){let{databaseUrl:Q,lockTimeoutMs:X=vQ4}=$,Y=$.log??((W)=>console.log(W)),J=new _Q4.Client({connectionString:Q});await J.connect();let G=Date.now(),K=!1;try{while(!K){if(K=(await J.query("SELECT pg_try_advisory_lock($1) AS locked",[z6$.toString()])).rows[0]?.locked===!0,K)break;if(Date.now()-G>=X)throw Error(`Timed out after ${X}ms waiting for the DBOS migration lock. Another process is still migrating the dbos schema; this pod will restart and retry.`);await O$(xQ4)}let W=Date.now()-G;if(W>1000)Y(`[dbos] waited ${W}ms for the migration lock; another process migrated first`);return await Z()}finally{if(K)try{await J.query("SELECT pg_advisory_unlock($1)",[z6$.toString()])}catch{}await J.end().catch(()=>{})}}var z6$=8314027461559302n,vQ4=600000,xQ4=500;var A6$=D(()=>{i$()});function fQ4(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function Hs0($,Z){for(let Q=0;Q<$.length;Q++){let X=$[Q];if(X===void 0)continue;if(X===Z)return $[Q+1];if(X.startsWith(`${Z}=`))return X.slice(Z.length+1)}return}function T6$(){let $=fQ4();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:Hs0($,"--cpu-prof-dir")??process.cwd(),name:Hs0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(Hs0($,"--cpu-prof-interval")??1000),note:"profile is written on process exit"}));return}if(process.env.CPU_PROFILE)console.warn(JSON.stringify({msg:"cpu-profiling-requested-but-inactive",hint:'CPU profiling is a Bun launch flag. Set BUN_OPTIONS="--cpu-prof --cpu-prof-md --cpu-prof-dir=/tmp" before starting the process.'}))}function R6$(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let Q=Mz();if(!Q)return;let X={};try{let{heapStats:Y}=await import("bun:jsc"),J=Y(),G=Object.entries(J.objectTypeCounts).sort((K,W)=>W[1]-K[1]).slice(0,20);X={objectCount:J.objectCount,heapSize:J.heapSize,top:Object.fromEntries(G)}}catch{}console.log(JSON.stringify({msg:"heap-watch",ts:new Date().toISOString(),uptimeS:Math.round(process.uptime()),rss:Q.rss,heapUsed:Q.heapUsed,heapTotal:Q.heapTotal,external:Q.external,arrayBuffers:Q.arrayBuffers,...X}))};return Z().catch(()=>{}),oY0=setInterval(()=>void Z().catch(()=>{}),$),oY0.unref?.(),process.on("SIGUSR2",()=>{try{let Q=Bun.generateHeapSnapshot("v8"),X=typeof Q==="string"?Q:JSON.stringify(Q),Y=`/tmp/heap-${process.pid}-${Date.now()}.heapsnapshot`;Bun.write(Y,X),console.log(JSON.stringify({msg:"heap-snapshot-written",path:Y}))}catch(Q){console.error("[heap-watch] snapshot failed:",Q)}}),()=>{if(oY0)clearInterval(oY0)}}var oY0;var q6$=()=>{};import*as bQ4 from"bun:jsc";function M6$(){if(process.env.STALL_WATCHDOG!=="1")return()=>{};let $=Number(process.env.STALL_WATCHDOG_MS??100),Z=Number(process.env.STALL_WATCHDOG_TICK_MS??50);try{yQ4()}catch(J){return console.error("[stall-watchdog] failed to start sampling profiler:",J),()=>{}}let Q,X=performance.now()+Z,Y=()=>{let J=performance.now(),G=J-X;X=J+Z;let K=[];try{K=gQ4()?.traces??[]}catch{}if(G>$&&K.length>0){let W=new Map;for(let F of K){let U=F.frames.find((O)=>O.sourceURL&&!/Unknown Executable/.test(O.category??""))??F.frames[0];if(!U)continue;let N=(U.sourceURL??"?").replace(/^.*\/node_modules\//,"node_modules/"),B=`${U.name??"?"} @ ${N}:${U.line??"?"}`;W.set(B,(W.get(B)??0)+1)}let H=[...W.entries()].sort((F,U)=>U[1]-F[1]).slice(0,8).map(([F,U])=>({frame:F,count:U}));console.warn(JSON.stringify({msg:"stall-stack",ts:new Date().toISOString(),lagMs:Math.round(G),samplesInWindow:K.length,top:H}))}Q=setTimeout(Y,Z),Q.unref?.()};return Q=setTimeout(Y,Z),Q.unref?.(),()=>{if(Q)clearTimeout(Q)}}var yQ4,gQ4;var I6$=D(()=>{({startSamplingProfiler:yQ4,samplingProfilerStackTraces:gQ4}=bQ4)});function V6$(){T6$();let $=[R6$(),E0$(),M6$()];return()=>{for(let Z of $)Z()}}var k6$=D(()=>{Kn0();q6$();I6$()});var xz=v((S6$)=>{Object.defineProperty(S6$,"__esModule",{value:!0});S6$.RepublishHeaders=S6$.DirectMsgHeaders=S6$.JsHeaders=S6$.AdvisoryKind=void 0;S6$.isOrderedPushConsumerOptions=hQ4;S6$.isPullConsumer=uQ4;S6$.isPushConsumer=lQ4;S6$.isBoundPushConsumerOptions=cQ4;function hQ4($){if($&&typeof $==="object")return"name_prefix"in $||"deliver_subject_prefix"in $||"filter_subjects"in $||"filter_subject"in $||"deliver_policy"in $||"opt_start_seq"in $||"opt_start_time"in $||"replay_policy"in $||"inactive_threshold"in $||"headers_only"in $||"deliver_prefix"in $;return!1}function uQ4($){return $.isPullConsumer()}function lQ4($){return $.isPushConsumer()}function cQ4($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}S6$.AdvisoryKind={API:"api_audit",StreamAction:"stream_action",ConsumerAction:"consumer_action",SnapshotCreate:"snapshot_create",SnapshotComplete:"snapshot_complete",RestoreCreate:"restore_create",RestoreComplete:"restore_complete",MaxDeliver:"max_deliver",Terminated:"terminated",Ack:"consumer_ack",StreamLeaderElected:"stream_leader_elected",StreamQuorumLost:"stream_quorum_lost",ConsumerLeaderElected:"consumer_leader_elected",ConsumerQuorumLost:"consumer_quorum_lost"};S6$.JsHeaders={StreamSourceHdr:"Nats-Stream-Source",LastConsumerSeqHdr:"Nats-Last-Consumer",LastStreamSeqHdr:"Nats-Last-Stream",ConsumerStalledHdr:"Nats-Consumer-Stalled",MessageSizeHdr:"Nats-Msg-Size",RollupHdr:"Nats-Rollup",RollupValueSubject:"sub",RollupValueAll:"all",PendingMessagesHdr:"Nats-Pending-Messages",PendingBytesHdr:"Nats-Pending-Bytes",RequiredApiLevel:"Nats-Required-Api-Level"};S6$.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};S6$.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var iJ=v((_6$)=>{Object.defineProperty(_6$,"__esModule",{value:!0});_6$.TD=_6$.TE=_6$.Empty=void 0;_6$.encode=aQ4;_6$.decode=sQ4;_6$.Empty=new Uint8Array(0);_6$.TE=new TextEncoder;_6$.TD=new TextDecoder;function rQ4(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let Q=new Uint8Array(Z),X=0;for(let Y=0;Y<$.length;Y++)Q.set($[Y],X),X+=$[Y].length;return Q}function aQ4(...$){let Z=[];for(let Q=0;Q<$.length;Q++)Z.push(_6$.TE.encode($[Q]));if(Z.length===0)return _6$.Empty;if(Z.length===1)return Z[0];return rQ4(...Z)}function sQ4($){if(!$||$.length===0)return"";return _6$.TD.decode($)}});var pJ=v((f6$)=>{Object.defineProperty(f6$,"__esModule",{value:!0});f6$.errors=f6$.PermissionViolationError=f6$.NoRespondersError=f6$.TimeoutError=f6$.RequestError=f6$.ProtocolError=f6$.ConnectionError=f6$.DrainingConnectionError=f6$.ClosedConnectionError=f6$.AuthorizationError=f6$.UserAuthenticationExpiredError=f6$.InvalidOperationError=f6$.InvalidArgumentError=f6$.InvalidSubjectError=void 0;class Us0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}f6$.InvalidSubjectError=Us0;class rY0 extends Error{constructor($,Z){super($,Z);this.name="InvalidArgumentError"}static format($,Z,Q){if(Array.isArray(Z)&&Z.length>1)Z=Z[0];if(Array.isArray($))$=$.map((X)=>`'${X}'`),$=$.join(",");else $=`'${$}'`;return new rY0(`${$} ${Z}`,Q)}}f6$.InvalidArgumentError=rY0;class Ns0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}f6$.InvalidOperationError=Ns0;class aY0 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new aY0($);return null}}f6$.UserAuthenticationExpiredError=aY0;class sY0 extends Error{constructor($,Z){super($,Z);this.name="AuthorizationError"}static parse($){let Z=["authorization violation","account authentication expired","authentication timeout"],Q=$.toLowerCase();for(let X=0;X<Z.length;X++)if(Q.indexOf(Z[X])!==-1)return new sY0($);return null}}f6$.AuthorizationError=sY0;class Bs0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}f6$.ClosedConnectionError=Bs0;class Os0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}f6$.DrainingConnectionError=Os0;class Ds0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}f6$.ConnectionError=Ds0;class Ls0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}f6$.ProtocolError=Ls0;class ws0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof eY0}}f6$.RequestError=ws0;class js0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}f6$.TimeoutError=js0;class eY0 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}f6$.NoRespondersError=eY0;class $J0 extends Error{operation;subject;queue;constructor($,Z,Q,X,Y){super($,Y);this.name="PermissionViolationError",this.operation=Z,this.subject=Q,this.queue=X}static parse($){if(($?$.toLowerCase():"").indexOf("permissions violation")===-1)return null;let Q="publish",X="",Y=void 0,J=$.match(/(Publish|Subscription) to "(\S+)"/);if(J){if(Q=J[1].toLowerCase(),X=J[2],Q==="subscription"){let G=$.match(/using queue "(\S+)"/);if(G)Y=G[1]}}return new $J0($,Q,X,Y)}}f6$.PermissionViolationError=$J0;f6$.errors={AuthorizationError:sY0,ClosedConnectionError:Bs0,ConnectionError:Ds0,DrainingConnectionError:Os0,InvalidArgumentError:rY0,InvalidOperationError:Ns0,InvalidSubjectError:Us0,NoRespondersError:eY0,PermissionViolationError:$J0,ProtocolError:Ls0,RequestError:ws0,TimeoutError:js0,UserAuthenticationExpiredError:aY0}});var pK=v((u6$)=>{Object.defineProperty(u6$,"__esModule",{value:!0});u6$.SimpleMutex=u6$.Perf=void 0;u6$.extend=DX4;u6$.render=LX4;u6$.timeout=wX4;u6$.delay=jX4;u6$.deadline=EX4;u6$.deferred=zs0;u6$.debugDeferred=zX4;u6$.shuffle=PX4;u6$.collect=AX4;u6$.jitter=h6$;u6$.backoff=TX4;u6$.nanos=RX4;u6$.millis=qX4;u6$.randomToken=VX4;var OX4=iJ(),Es0=pJ();function DX4($,...Z){for(let Q=0;Q<Z.length;Q++){let X=Z[Q];Object.keys(X).forEach(function(Y){$[Y]=X[Y]})}return $}function LX4($){return OX4.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function wX4($,Z=!0){let Q=Z?new Es0.TimeoutError:null,X,Y,J=new Promise((G,K)=>{X={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(Q===null)K(new Es0.TimeoutError);else K(Q)},$)});return Object.assign(J,X)}function jX4($=0){let Z,Q=new Promise((X)=>{let Y=setTimeout(()=>{X()},$);Z={cancel:()=>{if(Y)clearTimeout(Y),X()}}});return Object.assign(Q,Z)}async function EX4($,Z=1000){let Q=zs0(),X=setTimeout(()=>{Q.reject(new Es0.TimeoutError)},Z);try{return await Promise.race([$,Q])}finally{clearTimeout(X)}}function zs0(){let $={},Z=new Promise((Q,X)=>{$={resolve:Q,reject:X}});return Object.assign(Z,$)}function zX4(){let $={},Z=new Promise((Q,X)=>{$={resolve:(Y)=>{console.trace("resolve",Y),Q(Y)},reject:(Y)=>{console.trace("reject"),X(Y)}}});return Object.assign(Z,$)}function PX4($){for(let Z=$.length-1;Z>0;Z--){let Q=Math.floor(Math.random()*(Z+1));[$[Z],$[Q]]=[$[Q],$[Z]]}return $}async function AX4($){let Z=[];for await(let Q of $)Z.push(Q);return Z}class y6${timers;measures;constructor(){this.timers=new Map,this.measures=new Map}mark($){this.timers.set($,performance.now())}measure($,Z,Q){let X=this.timers.get(Z);if(X===void 0)throw Error(`${Z} is not defined`);let Y=this.timers.get(Q);if(Y===void 0)throw Error(`${Q} is not defined`);this.measures.set($,Y-X)}getEntries(){let $=[];return this.measures.forEach((Z,Q)=>{$.push({name:Q,duration:Z})}),$}}u6$.Perf=y6$;class g6${max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=zs0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}u6$.SimpleMutex=g6$;function h6$($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function TX4($=[0,250,250,500,500,3000,5000]){if(!Array.isArray($))$=[0,250,250,500,500,3000,5000];let Z=$.length-1;return{backoff(Q){return h6$(Q>Z?$[Z]:$[Q])}}}function RX4($){return $*1e6}function qX4($){return Math.floor($/1e6)}var MX4="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",SN=new Uint8Array(62);for(let $=0;$<62;$++)SN[$]=MX4.charCodeAt($);var IX4=218340105584896;function VX4(){let $=Math.floor(Math.random()*IX4),Z=$%62,Q=SN[Z];$=($-Z)/62,Z=$%62;let X=SN[Z];$=($-Z)/62,Z=$%62;let Y=SN[Z];$=($-Z)/62,Z=$%62;let J=SN[Z];$=($-Z)/62,Z=$%62;let G=SN[Z];$=($-Z)/62,Z=$%62;let K=SN[Z];$=($-Z)/62,Z=$%62;let W=SN[Z];$=($-Z)/62;let H=SN[$];return String.fromCharCode(Q,X,Y,J,G,K,W,H)}});var t6$=v((p6$)=>{Object.defineProperty(p6$,"__esModule",{value:!0});p6$.nuid=p6$.NuidImpl=void 0;var dX4="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",bD=62,QJ0=12,d6$=10,c6$=33,iX4=333,m6$=QJ0+d6$,As0=new Uint8Array(bD);for(let $=0;$<bD;$++)As0[$]=dX4.charCodeAt($);var ZJ0=4294967296,i6$=BigInt(bD)**BigInt(d6$),Go=Number(i6$/(1n<<32n)),Ps0=Number(i6$%(1n<<32n));function pX4($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function nX4($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else pX4($)}class Ts0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(m6$),this.cbuf=new Uint8Array(QJ0),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(Go+1)),this.seqLo=Math.floor(Math.random()*ZJ0);while($++<8&&this.seqHi===Go&&this.seqLo>=Ps0);if(this.seqHi===Go&&this.seqLo>=Ps0)this.seqLo=0;this.inc=Math.random()*(iX4-c6$)+c6$|0}setPre(){nX4(this.cbuf);for(let $=0;$<QJ0;$++)this.buf[$]=As0[this.cbuf[$]%bD]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let Q=m6$-1;Q>=QJ0;Q--){let X=Math.floor($/bD),J=($-X*bD)*ZJ0+Z,G=Math.floor(J/bD),K=J-G*bD;this.buf[Q]=As0[K],$=X,Z=G}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=ZJ0)this.seqLo-=ZJ0,this.seqHi+=1;if(this.seqHi>Go||this.seqHi===Go&&this.seqLo>=Ps0)this.setPre(),this.initSeqAndInc();this.fillSeq();let $=this.buf;return String.fromCharCode($[0],$[1],$[2],$[3],$[4],$[5],$[6],$[7],$[8],$[9],$[10],$[11],$[12],$[13],$[14],$[15],$[16],$[17],$[18],$[19],$[20],$[21])}reset(){this.init()}}p6$.NuidImpl=Ts0;p6$.nuid=new Ts0});var s6$=v((r6$)=>{Object.defineProperty(r6$,"__esModule",{value:!0});r6$.nuid=r6$.Nuid=void 0;var o6$=t6$();r6$.Nuid=o6$.NuidImpl;r6$.nuid=o6$.nuid});var YJ0=v((XJ0)=>{Object.defineProperty(XJ0,"__esModule",{value:!0});XJ0.nuid=XJ0.Nuid=void 0;var e6$=s6$();Object.defineProperty(XJ0,"Nuid",{enumerable:!0,get:function(){return e6$.Nuid}});Object.defineProperty(XJ0,"nuid",{enumerable:!0,get:function(){return e6$.nuid}})});var yD=v(($5$)=>{Object.defineProperty($5$,"__esModule",{value:!0});$5$.DEFAULT_HOST=$5$.DEFAULT_PORT=$5$.Match=void 0;$5$.syncIterator=eX4;$5$.createInbox=$Y4;var aX4=YJ0(),sX4=pJ();$5$.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function eX4($){let Z=$[Symbol.asyncIterator]();return{async next(){let Q=await Z.next();if(Q.done)return Promise.resolve(null);return Promise.resolve(Q.value)}}}function $Y4($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw sX4.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${aX4.nuid.next()}`}$5$.DEFAULT_PORT=4222;$5$.DEFAULT_HOST="127.0.0.1"});var Ko=v((Y5$)=>{Object.defineProperty(Y5$,"__esModule",{value:!0});Y5$.DataBuffer=void 0;var Q5$=iJ();class X5${buffers;byteLength;constructor(){this.buffers=[],this.byteLength=0}static concat(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let Q=new Uint8Array(Z),X=0;for(let Y=0;Y<$.length;Y++)Q.set($[Y],X),X+=$[Y].length;return Q}static fromAscii($){if(!$)$="";return Q5$.TE.encode($)}static toAscii($){return Q5$.TD.decode($)}reset(){this.buffers.length=0,this.byteLength=0}pack(){if(this.buffers.length>1){let $=new Uint8Array(this.byteLength),Z=0;for(let Q=0;Q<this.buffers.length;Q++)$.set(this.buffers[Q],Z),Z+=this.buffers[Q].length;this.buffers.length=0,this.buffers.push($)}}shift(){if(this.buffers.length){let $=this.buffers.shift();if($)return this.byteLength-=$.length,$}return new Uint8Array(0)}drain($){if(this.buffers.length){this.pack();let Z=this.buffers.pop();if(Z){let Q=this.byteLength;if($===void 0||$>Q)$=Q;let X=Z.subarray(0,$);if(Q>$)this.buffers.push(Z.subarray($));return this.byteLength=Q-$,X}}return new Uint8Array(0)}fill($,...Z){if($)this.buffers.push($),this.byteLength+=$.length;for(let Q=0;Q<Z.length;Q++)if(Z[Q]&&Z[Q].length)this.buffers.push(Z[Q]),this.byteLength+=Z[Q].length}peek(){if(this.buffers.length)return this.pack(),this.buffers[0];return new Uint8Array(0)}size(){return this.byteLength}length(){return this.buffers.length}}Y5$.DataBuffer=X5$});var fz=v((K5$)=>{Object.defineProperty(K5$,"__esModule",{value:!0});K5$.LF=K5$.CR=K5$.CRLF=K5$.CR_LF_LEN=K5$.CR_LF=void 0;K5$.setTransportFactory=WY4;K5$.defaultPort=HY4;K5$.getUrlParseFn=FY4;K5$.newTransport=UY4;K5$.getResolveFn=NY4;K5$.protoLen=G5$;K5$.extractProtocolMessage=BY4;var JY4=iJ(),GY4=yD(),KY4=Ko(),nJ;function WY4($){nJ=$}function HY4(){return nJ!==void 0&&nJ.defaultPort!==void 0?nJ.defaultPort:GY4.DEFAULT_PORT}function FY4(){return nJ!==void 0&&nJ.urlParseFn?nJ.urlParseFn:void 0}function UY4(){if(!nJ||typeof nJ.factory!=="function")throw Error("transport fn is not set");return nJ.factory()}function NY4(){return nJ!==void 0&&nJ.dnsResolveFn?nJ.dnsResolveFn:void 0}K5$.CR_LF=`\r
2079
+ `);X=J.pop()??"";for(let G of J){let K=Bun.stripANSI(G).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;vD({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:K})}}(async()=>{try{for(;;){let{done:J,value:G}=await Z.read();if(J)break;X+=Q.decode(G,{stream:!0}),Y()}}catch{}if(X.trim()){let J=Bun.stripANSI(X).replace(/^\[\d+\]\s*/,"").trim();if(J)vD({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:J})}})()}async function zQ4($){let{baseUrl:Z,noTui:Q}=$,X=process.env.HOST==="0.0.0.0"&&Boolean(process.env.PORT),Y=X?process.env.PORT:$.vitePort,J=Z||`http://localhost:${Y}`,G=X?await Yo(Number(Y)+1):await Yo(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await iY0({port:String(G),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let L of W)Sz({name:L.name,status:"ready",port:L.port});Qo();let F=EQ4(import.meta.dir,"..","..","..","..",".."),U=Q===!0,N=Bun.spawn(["bun","run","dev:servers"],{cwd:F,env:{...process.env,PORT:String(K.port),VITE_PORT:String(Y),DATABASE_URL:K.databaseUrl,NATS_URL:K.natsUrls.join(","),NODE_ENV:K.nodeEnv,BASE_URL:J,DECOCMS_LOCAL_MODE:String(K.localMode),DECOCMS_HOME:K.dataDir,DATA_DIR:K.dataDir,DECO_CLI:"1",...K.betterAuthSecret?{BETTER_AUTH_SECRET:K.betterAuthSecret}:{},...K.s3Endpoint?{S3_ENDPOINT:K.s3Endpoint,S3_BUCKET:K.s3Bucket??"",S3_ACCESS_KEY_ID:K.s3AccessKeyId??"",S3_SECRET_ACCESS_KEY:K.s3SecretAccessKey??"",S3_FORCE_PATH_STYLE:String(K.s3ForcePathStyle)}:{},...K.natsCredsPath?{NATS_CREDS:K.natsCredsPath}:{}},stdio:["inherit",U?"inherit":"pipe",U?"inherit":"pipe"]});if(!U)Zs0(N.stdout),Zs0(N.stderr);Xo(J),Sz({name:"Vite",status:"ready",port:Number(Y)}),Sz({name:"API",status:"ready",port:Number(K.port)});let O=async(L)=>{if(N.kill(L),await N.exited,H.length>0){let{stopServices:w}=await Promise.resolve().then(() => (nX0(),pX0));await w(K.dataDir)}};return process.on("SIGINT",()=>O("SIGINT")),process.on("SIGTERM",()=>O("SIGTERM")),{port:Number(Y),process:N}}var Xs0=D(()=>{ra0();Cz();$s0()});var tY0;var Ys0=D(()=>{tY0={name:"decocms",version:"4.367.6",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});import{Box as AQ4,Text as K6$}from"ink";import{jsx as TQ4,jsxs as W6$}from"react/jsx-runtime";function H6$({version:$}){return W6$(AQ4,{flexDirection:"column",marginTop:1,children:[LY0.map((Z,Q)=>TQ4(K6$,{color:wY0[Q],children:Z},Q)),W6$(K6$,{dimColor:!0,children:[" v",$]})]})}var F6$=D(()=>{lt()});import{Box as _z,Text as xD}from"ink";import{Spinner as RQ4}from"@inkjs/ui";import{jsx as dJ,jsxs as ih}from"react/jsx-runtime";function U6$({status:$}){if($==="pending")return dJ(RQ4,{label:""});return dJ(xD,{color:"green",children:"\u2713"})}function qQ4($){return`${$.name}: ${$.port||"...."}`}function N6$({services:$,migrationsStatus:Z,home:Q,serverUrl:X}){return ih(_z,{flexDirection:"column",paddingBottom:1,children:[dJ(H6$,{version:tY0.version}),dJ(_z,{marginBottom:1,children:dJ(xD,{dimColor:!0,children:"\u2500".repeat(80)})}),dJ(_z,{children:ih(xD,{dimColor:!0,children:["Home: ",Q]})}),ih(_z,{gap:2,children:[$.map((Y)=>ih(_z,{gap:1,children:[dJ(xD,{children:qQ4(Y)}),dJ(U6$,{status:Y.status})]},Y.name)),ih(_z,{gap:1,children:[dJ(xD,{children:"Migrations"}),dJ(U6$,{status:Z})]})]}),dJ(_z,{children:X?ih(xD,{children:["Open in browser: ",dJ(xD,{color:"cyan",children:X})]}):dJ(xD,{dimColor:!0,children:"Starting..."})})]})}var B6$=D(()=>{Ys0();F6$()});import{Box as MQ4,Text as Jo}from"ink";import{jsx as Js0,jsxs as Gs0}from"react/jsx-runtime";function IQ4($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function O6$({logs:$}){return Js0(MQ4,{flexDirection:"column",children:$.map((Z,Q)=>{if(Z.rawLine)return Js0(Jo,{dimColor:!0,children:Z.rawLine},Q);let X=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return Gs0(Jo,{children:[Gs0(Jo,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),Js0(Jo,{color:IQ4(Z.status),children:Z.status}),Gs0(Jo,{dimColor:!0,children:[" ",X.padStart(8)]})]},Q)})})}var D6$=()=>{};var Ks0={};e(Ks0,{App:()=>SQ4});import{Box as VQ4}from"ink";import{useSyncExternalStore as kQ4}from"react";import{jsx as L6$,jsxs as CQ4}from"react/jsx-runtime";function SQ4({home:$}){let Z=kQ4(ea0,sa0);return CQ4(VQ4,{flexDirection:"column",children:[L6$(N6$,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),L6$(O6$,{logs:Z.logs})]})}var Ws0=D(()=>{B6$();D6$();Cz()});var LG="thread-gate",VN="decopilot-hosted-harness",kN="decopilot-hosted-harness-sandboxed",wG="automations",fD="background-tools",vz="task-board-github-reads";var w6$="11";function j6$($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:w6$,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var E6$=()=>{};import _Q4 from"pg";async function P6$($,Z){let{databaseUrl:Q,lockTimeoutMs:X=vQ4}=$,Y=$.log??((W)=>console.log(W)),J=new _Q4.Client({connectionString:Q});await J.connect();let G=Date.now(),K=!1;try{while(!K){if(K=(await J.query("SELECT pg_try_advisory_lock($1) AS locked",[z6$.toString()])).rows[0]?.locked===!0,K)break;if(Date.now()-G>=X)throw Error(`Timed out after ${X}ms waiting for the DBOS migration lock. Another process is still migrating the dbos schema; this pod will restart and retry.`);await O$(xQ4)}let W=Date.now()-G;if(W>1000)Y(`[dbos] waited ${W}ms for the migration lock; another process migrated first`);return await Z()}finally{if(K)try{await J.query("SELECT pg_advisory_unlock($1)",[z6$.toString()])}catch{}await J.end().catch(()=>{})}}var z6$=8314027461559302n,vQ4=600000,xQ4=500;var A6$=D(()=>{i$()});function fQ4(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function Hs0($,Z){for(let Q=0;Q<$.length;Q++){let X=$[Q];if(X===void 0)continue;if(X===Z)return $[Q+1];if(X.startsWith(`${Z}=`))return X.slice(Z.length+1)}return}function T6$(){let $=fQ4();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:Hs0($,"--cpu-prof-dir")??process.cwd(),name:Hs0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(Hs0($,"--cpu-prof-interval")??1000),note:"profile is written on process exit"}));return}if(process.env.CPU_PROFILE)console.warn(JSON.stringify({msg:"cpu-profiling-requested-but-inactive",hint:'CPU profiling is a Bun launch flag. Set BUN_OPTIONS="--cpu-prof --cpu-prof-md --cpu-prof-dir=/tmp" before starting the process.'}))}function R6$(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let Q=Mz();if(!Q)return;let X={};try{let{heapStats:Y}=await import("bun:jsc"),J=Y(),G=Object.entries(J.objectTypeCounts).sort((K,W)=>W[1]-K[1]).slice(0,20);X={objectCount:J.objectCount,heapSize:J.heapSize,top:Object.fromEntries(G)}}catch{}console.log(JSON.stringify({msg:"heap-watch",ts:new Date().toISOString(),uptimeS:Math.round(process.uptime()),rss:Q.rss,heapUsed:Q.heapUsed,heapTotal:Q.heapTotal,external:Q.external,arrayBuffers:Q.arrayBuffers,...X}))};return Z().catch(()=>{}),oY0=setInterval(()=>void Z().catch(()=>{}),$),oY0.unref?.(),process.on("SIGUSR2",()=>{try{let Q=Bun.generateHeapSnapshot("v8"),X=typeof Q==="string"?Q:JSON.stringify(Q),Y=`/tmp/heap-${process.pid}-${Date.now()}.heapsnapshot`;Bun.write(Y,X),console.log(JSON.stringify({msg:"heap-snapshot-written",path:Y}))}catch(Q){console.error("[heap-watch] snapshot failed:",Q)}}),()=>{if(oY0)clearInterval(oY0)}}var oY0;var q6$=()=>{};import*as bQ4 from"bun:jsc";function M6$(){if(process.env.STALL_WATCHDOG!=="1")return()=>{};let $=Number(process.env.STALL_WATCHDOG_MS??100),Z=Number(process.env.STALL_WATCHDOG_TICK_MS??50);try{yQ4()}catch(J){return console.error("[stall-watchdog] failed to start sampling profiler:",J),()=>{}}let Q,X=performance.now()+Z,Y=()=>{let J=performance.now(),G=J-X;X=J+Z;let K=[];try{K=gQ4()?.traces??[]}catch{}if(G>$&&K.length>0){let W=new Map;for(let F of K){let U=F.frames.find((O)=>O.sourceURL&&!/Unknown Executable/.test(O.category??""))??F.frames[0];if(!U)continue;let N=(U.sourceURL??"?").replace(/^.*\/node_modules\//,"node_modules/"),B=`${U.name??"?"} @ ${N}:${U.line??"?"}`;W.set(B,(W.get(B)??0)+1)}let H=[...W.entries()].sort((F,U)=>U[1]-F[1]).slice(0,8).map(([F,U])=>({frame:F,count:U}));console.warn(JSON.stringify({msg:"stall-stack",ts:new Date().toISOString(),lagMs:Math.round(G),samplesInWindow:K.length,top:H}))}Q=setTimeout(Y,Z),Q.unref?.()};return Q=setTimeout(Y,Z),Q.unref?.(),()=>{if(Q)clearTimeout(Q)}}var yQ4,gQ4;var I6$=D(()=>{({startSamplingProfiler:yQ4,samplingProfilerStackTraces:gQ4}=bQ4)});function V6$(){T6$();let $=[R6$(),E0$(),M6$()];return()=>{for(let Z of $)Z()}}var k6$=D(()=>{Kn0();q6$();I6$()});var xz=v((S6$)=>{Object.defineProperty(S6$,"__esModule",{value:!0});S6$.RepublishHeaders=S6$.DirectMsgHeaders=S6$.JsHeaders=S6$.AdvisoryKind=void 0;S6$.isOrderedPushConsumerOptions=hQ4;S6$.isPullConsumer=uQ4;S6$.isPushConsumer=lQ4;S6$.isBoundPushConsumerOptions=cQ4;function hQ4($){if($&&typeof $==="object")return"name_prefix"in $||"deliver_subject_prefix"in $||"filter_subjects"in $||"filter_subject"in $||"deliver_policy"in $||"opt_start_seq"in $||"opt_start_time"in $||"replay_policy"in $||"inactive_threshold"in $||"headers_only"in $||"deliver_prefix"in $;return!1}function uQ4($){return $.isPullConsumer()}function lQ4($){return $.isPushConsumer()}function cQ4($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}S6$.AdvisoryKind={API:"api_audit",StreamAction:"stream_action",ConsumerAction:"consumer_action",SnapshotCreate:"snapshot_create",SnapshotComplete:"snapshot_complete",RestoreCreate:"restore_create",RestoreComplete:"restore_complete",MaxDeliver:"max_deliver",Terminated:"terminated",Ack:"consumer_ack",StreamLeaderElected:"stream_leader_elected",StreamQuorumLost:"stream_quorum_lost",ConsumerLeaderElected:"consumer_leader_elected",ConsumerQuorumLost:"consumer_quorum_lost"};S6$.JsHeaders={StreamSourceHdr:"Nats-Stream-Source",LastConsumerSeqHdr:"Nats-Last-Consumer",LastStreamSeqHdr:"Nats-Last-Stream",ConsumerStalledHdr:"Nats-Consumer-Stalled",MessageSizeHdr:"Nats-Msg-Size",RollupHdr:"Nats-Rollup",RollupValueSubject:"sub",RollupValueAll:"all",PendingMessagesHdr:"Nats-Pending-Messages",PendingBytesHdr:"Nats-Pending-Bytes",RequiredApiLevel:"Nats-Required-Api-Level"};S6$.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};S6$.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var iJ=v((_6$)=>{Object.defineProperty(_6$,"__esModule",{value:!0});_6$.TD=_6$.TE=_6$.Empty=void 0;_6$.encode=aQ4;_6$.decode=sQ4;_6$.Empty=new Uint8Array(0);_6$.TE=new TextEncoder;_6$.TD=new TextDecoder;function rQ4(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let Q=new Uint8Array(Z),X=0;for(let Y=0;Y<$.length;Y++)Q.set($[Y],X),X+=$[Y].length;return Q}function aQ4(...$){let Z=[];for(let Q=0;Q<$.length;Q++)Z.push(_6$.TE.encode($[Q]));if(Z.length===0)return _6$.Empty;if(Z.length===1)return Z[0];return rQ4(...Z)}function sQ4($){if(!$||$.length===0)return"";return _6$.TD.decode($)}});var pJ=v((f6$)=>{Object.defineProperty(f6$,"__esModule",{value:!0});f6$.errors=f6$.PermissionViolationError=f6$.NoRespondersError=f6$.TimeoutError=f6$.RequestError=f6$.ProtocolError=f6$.ConnectionError=f6$.DrainingConnectionError=f6$.ClosedConnectionError=f6$.AuthorizationError=f6$.UserAuthenticationExpiredError=f6$.InvalidOperationError=f6$.InvalidArgumentError=f6$.InvalidSubjectError=void 0;class Us0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}f6$.InvalidSubjectError=Us0;class rY0 extends Error{constructor($,Z){super($,Z);this.name="InvalidArgumentError"}static format($,Z,Q){if(Array.isArray(Z)&&Z.length>1)Z=Z[0];if(Array.isArray($))$=$.map((X)=>`'${X}'`),$=$.join(",");else $=`'${$}'`;return new rY0(`${$} ${Z}`,Q)}}f6$.InvalidArgumentError=rY0;class Ns0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}f6$.InvalidOperationError=Ns0;class aY0 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new aY0($);return null}}f6$.UserAuthenticationExpiredError=aY0;class sY0 extends Error{constructor($,Z){super($,Z);this.name="AuthorizationError"}static parse($){let Z=["authorization violation","account authentication expired","authentication timeout"],Q=$.toLowerCase();for(let X=0;X<Z.length;X++)if(Q.indexOf(Z[X])!==-1)return new sY0($);return null}}f6$.AuthorizationError=sY0;class Bs0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}f6$.ClosedConnectionError=Bs0;class Os0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}f6$.DrainingConnectionError=Os0;class Ds0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}f6$.ConnectionError=Ds0;class Ls0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}f6$.ProtocolError=Ls0;class ws0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof eY0}}f6$.RequestError=ws0;class js0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}f6$.TimeoutError=js0;class eY0 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}f6$.NoRespondersError=eY0;class $J0 extends Error{operation;subject;queue;constructor($,Z,Q,X,Y){super($,Y);this.name="PermissionViolationError",this.operation=Z,this.subject=Q,this.queue=X}static parse($){if(($?$.toLowerCase():"").indexOf("permissions violation")===-1)return null;let Q="publish",X="",Y=void 0,J=$.match(/(Publish|Subscription) to "(\S+)"/);if(J){if(Q=J[1].toLowerCase(),X=J[2],Q==="subscription"){let G=$.match(/using queue "(\S+)"/);if(G)Y=G[1]}}return new $J0($,Q,X,Y)}}f6$.PermissionViolationError=$J0;f6$.errors={AuthorizationError:sY0,ClosedConnectionError:Bs0,ConnectionError:Ds0,DrainingConnectionError:Os0,InvalidArgumentError:rY0,InvalidOperationError:Ns0,InvalidSubjectError:Us0,NoRespondersError:eY0,PermissionViolationError:$J0,ProtocolError:Ls0,RequestError:ws0,TimeoutError:js0,UserAuthenticationExpiredError:aY0}});var pK=v((u6$)=>{Object.defineProperty(u6$,"__esModule",{value:!0});u6$.SimpleMutex=u6$.Perf=void 0;u6$.extend=DX4;u6$.render=LX4;u6$.timeout=wX4;u6$.delay=jX4;u6$.deadline=EX4;u6$.deferred=zs0;u6$.debugDeferred=zX4;u6$.shuffle=PX4;u6$.collect=AX4;u6$.jitter=h6$;u6$.backoff=TX4;u6$.nanos=RX4;u6$.millis=qX4;u6$.randomToken=VX4;var OX4=iJ(),Es0=pJ();function DX4($,...Z){for(let Q=0;Q<Z.length;Q++){let X=Z[Q];Object.keys(X).forEach(function(Y){$[Y]=X[Y]})}return $}function LX4($){return OX4.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function wX4($,Z=!0){let Q=Z?new Es0.TimeoutError:null,X,Y,J=new Promise((G,K)=>{X={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(Q===null)K(new Es0.TimeoutError);else K(Q)},$)});return Object.assign(J,X)}function jX4($=0){let Z,Q=new Promise((X)=>{let Y=setTimeout(()=>{X()},$);Z={cancel:()=>{if(Y)clearTimeout(Y),X()}}});return Object.assign(Q,Z)}async function EX4($,Z=1000){let Q=zs0(),X=setTimeout(()=>{Q.reject(new Es0.TimeoutError)},Z);try{return await Promise.race([$,Q])}finally{clearTimeout(X)}}function zs0(){let $={},Z=new Promise((Q,X)=>{$={resolve:Q,reject:X}});return Object.assign(Z,$)}function zX4(){let $={},Z=new Promise((Q,X)=>{$={resolve:(Y)=>{console.trace("resolve",Y),Q(Y)},reject:(Y)=>{console.trace("reject"),X(Y)}}});return Object.assign(Z,$)}function PX4($){for(let Z=$.length-1;Z>0;Z--){let Q=Math.floor(Math.random()*(Z+1));[$[Z],$[Q]]=[$[Q],$[Z]]}return $}async function AX4($){let Z=[];for await(let Q of $)Z.push(Q);return Z}class y6${timers;measures;constructor(){this.timers=new Map,this.measures=new Map}mark($){this.timers.set($,performance.now())}measure($,Z,Q){let X=this.timers.get(Z);if(X===void 0)throw Error(`${Z} is not defined`);let Y=this.timers.get(Q);if(Y===void 0)throw Error(`${Q} is not defined`);this.measures.set($,Y-X)}getEntries(){let $=[];return this.measures.forEach((Z,Q)=>{$.push({name:Q,duration:Z})}),$}}u6$.Perf=y6$;class g6${max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=zs0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}u6$.SimpleMutex=g6$;function h6$($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function TX4($=[0,250,250,500,500,3000,5000]){if(!Array.isArray($))$=[0,250,250,500,500,3000,5000];let Z=$.length-1;return{backoff(Q){return h6$(Q>Z?$[Z]:$[Q])}}}function RX4($){return $*1e6}function qX4($){return Math.floor($/1e6)}var MX4="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",SN=new Uint8Array(62);for(let $=0;$<62;$++)SN[$]=MX4.charCodeAt($);var IX4=218340105584896;function VX4(){let $=Math.floor(Math.random()*IX4),Z=$%62,Q=SN[Z];$=($-Z)/62,Z=$%62;let X=SN[Z];$=($-Z)/62,Z=$%62;let Y=SN[Z];$=($-Z)/62,Z=$%62;let J=SN[Z];$=($-Z)/62,Z=$%62;let G=SN[Z];$=($-Z)/62,Z=$%62;let K=SN[Z];$=($-Z)/62,Z=$%62;let W=SN[Z];$=($-Z)/62;let H=SN[$];return String.fromCharCode(Q,X,Y,J,G,K,W,H)}});var t6$=v((p6$)=>{Object.defineProperty(p6$,"__esModule",{value:!0});p6$.nuid=p6$.NuidImpl=void 0;var dX4="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",bD=62,QJ0=12,d6$=10,c6$=33,iX4=333,m6$=QJ0+d6$,As0=new Uint8Array(bD);for(let $=0;$<bD;$++)As0[$]=dX4.charCodeAt($);var ZJ0=4294967296,i6$=BigInt(bD)**BigInt(d6$),Go=Number(i6$/(1n<<32n)),Ps0=Number(i6$%(1n<<32n));function pX4($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function nX4($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else pX4($)}class Ts0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(m6$),this.cbuf=new Uint8Array(QJ0),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(Go+1)),this.seqLo=Math.floor(Math.random()*ZJ0);while($++<8&&this.seqHi===Go&&this.seqLo>=Ps0);if(this.seqHi===Go&&this.seqLo>=Ps0)this.seqLo=0;this.inc=Math.random()*(iX4-c6$)+c6$|0}setPre(){nX4(this.cbuf);for(let $=0;$<QJ0;$++)this.buf[$]=As0[this.cbuf[$]%bD]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let Q=m6$-1;Q>=QJ0;Q--){let X=Math.floor($/bD),J=($-X*bD)*ZJ0+Z,G=Math.floor(J/bD),K=J-G*bD;this.buf[Q]=As0[K],$=X,Z=G}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=ZJ0)this.seqLo-=ZJ0,this.seqHi+=1;if(this.seqHi>Go||this.seqHi===Go&&this.seqLo>=Ps0)this.setPre(),this.initSeqAndInc();this.fillSeq();let $=this.buf;return String.fromCharCode($[0],$[1],$[2],$[3],$[4],$[5],$[6],$[7],$[8],$[9],$[10],$[11],$[12],$[13],$[14],$[15],$[16],$[17],$[18],$[19],$[20],$[21])}reset(){this.init()}}p6$.NuidImpl=Ts0;p6$.nuid=new Ts0});var s6$=v((r6$)=>{Object.defineProperty(r6$,"__esModule",{value:!0});r6$.nuid=r6$.Nuid=void 0;var o6$=t6$();r6$.Nuid=o6$.NuidImpl;r6$.nuid=o6$.nuid});var YJ0=v((XJ0)=>{Object.defineProperty(XJ0,"__esModule",{value:!0});XJ0.nuid=XJ0.Nuid=void 0;var e6$=s6$();Object.defineProperty(XJ0,"Nuid",{enumerable:!0,get:function(){return e6$.Nuid}});Object.defineProperty(XJ0,"nuid",{enumerable:!0,get:function(){return e6$.nuid}})});var yD=v(($5$)=>{Object.defineProperty($5$,"__esModule",{value:!0});$5$.DEFAULT_HOST=$5$.DEFAULT_PORT=$5$.Match=void 0;$5$.syncIterator=eX4;$5$.createInbox=$Y4;var aX4=YJ0(),sX4=pJ();$5$.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function eX4($){let Z=$[Symbol.asyncIterator]();return{async next(){let Q=await Z.next();if(Q.done)return Promise.resolve(null);return Promise.resolve(Q.value)}}}function $Y4($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw sX4.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${aX4.nuid.next()}`}$5$.DEFAULT_PORT=4222;$5$.DEFAULT_HOST="127.0.0.1"});var Ko=v((Y5$)=>{Object.defineProperty(Y5$,"__esModule",{value:!0});Y5$.DataBuffer=void 0;var Q5$=iJ();class X5${buffers;byteLength;constructor(){this.buffers=[],this.byteLength=0}static concat(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let Q=new Uint8Array(Z),X=0;for(let Y=0;Y<$.length;Y++)Q.set($[Y],X),X+=$[Y].length;return Q}static fromAscii($){if(!$)$="";return Q5$.TE.encode($)}static toAscii($){return Q5$.TD.decode($)}reset(){this.buffers.length=0,this.byteLength=0}pack(){if(this.buffers.length>1){let $=new Uint8Array(this.byteLength),Z=0;for(let Q=0;Q<this.buffers.length;Q++)$.set(this.buffers[Q],Z),Z+=this.buffers[Q].length;this.buffers.length=0,this.buffers.push($)}}shift(){if(this.buffers.length){let $=this.buffers.shift();if($)return this.byteLength-=$.length,$}return new Uint8Array(0)}drain($){if(this.buffers.length){this.pack();let Z=this.buffers.pop();if(Z){let Q=this.byteLength;if($===void 0||$>Q)$=Q;let X=Z.subarray(0,$);if(Q>$)this.buffers.push(Z.subarray($));return this.byteLength=Q-$,X}}return new Uint8Array(0)}fill($,...Z){if($)this.buffers.push($),this.byteLength+=$.length;for(let Q=0;Q<Z.length;Q++)if(Z[Q]&&Z[Q].length)this.buffers.push(Z[Q]),this.byteLength+=Z[Q].length}peek(){if(this.buffers.length)return this.pack(),this.buffers[0];return new Uint8Array(0)}size(){return this.byteLength}length(){return this.buffers.length}}Y5$.DataBuffer=X5$});var fz=v((K5$)=>{Object.defineProperty(K5$,"__esModule",{value:!0});K5$.LF=K5$.CR=K5$.CRLF=K5$.CR_LF_LEN=K5$.CR_LF=void 0;K5$.setTransportFactory=WY4;K5$.defaultPort=HY4;K5$.getUrlParseFn=FY4;K5$.newTransport=UY4;K5$.getResolveFn=NY4;K5$.protoLen=G5$;K5$.extractProtocolMessage=BY4;var JY4=iJ(),GY4=yD(),KY4=Ko(),nJ;function WY4($){nJ=$}function HY4(){return nJ!==void 0&&nJ.defaultPort!==void 0?nJ.defaultPort:GY4.DEFAULT_PORT}function FY4(){return nJ!==void 0&&nJ.urlParseFn?nJ.urlParseFn:void 0}function UY4(){if(!nJ||typeof nJ.factory!=="function")throw Error("transport fn is not set");return nJ.factory()}function NY4(){return nJ!==void 0&&nJ.dnsResolveFn?nJ.dnsResolveFn:void 0}K5$.CR_LF=`\r
2080
2080
  `;K5$.CR_LF_LEN=K5$.CR_LF.length;K5$.CRLF=KY4.DataBuffer.fromAscii(K5$.CR_LF);K5$.CR=new Uint8Array(K5$.CRLF)[0];K5$.LF=new Uint8Array(K5$.CRLF)[1];function G5$($){for(let Z=0;Z<$.length;Z++){let Q=Z+1;if($.byteLength>Q&&$[Z]===K5$.CR&&$[Q]===K5$.LF)return Q+1}return 0}function BY4($){let Z=G5$($);if(Z>0){let X=new Uint8Array($).slice(0,Z);return JY4.TD.decode(X)}return""}});var Vs0=v((D5$)=>{Object.defineProperty(D5$,"__esModule",{value:!0});D5$.ipV4=N5$;D5$.isIP=RY4;D5$.parseIP=B5$;var Wo=4,bz=16,JJ0=48,U5$=57,H5$=65,AY4=70,F5$=97,TY4=102,Is0=16777215;function N5$($,Z,Q,X){let Y=new Uint8Array(bz);return[0,0,0,0,0,0,0,0,0,0,255,255].forEach((G,K)=>{Y[K]=G}),Y[12]=$,Y[13]=Z,Y[14]=Q,Y[15]=X,Y}function RY4($){return B5$($)!==void 0}function B5$($){for(let Z=0;Z<$.length;Z++)switch($[Z]){case".":return O5$($);case":":return qY4($)}return}function O5$($){let Z=new Uint8Array(Wo);for(let Q=0;Q<Wo;Q++){if($.length===0)return;if(Q>0){if($[0]!==".")return;$=$.substring(1)}let{n:X,c:Y,ok:J}=MY4($);if(!J||X>255)return;$=$.substring(Y),Z[Q]=X}return N5$(Z[0],Z[1],Z[2],Z[3])}function qY4($){let Z=new Uint8Array(bz),Q=-1;if($.length>=2&&$[0]===":"&&$[1]===":"){if(Q=0,$=$.substring(2),$.length===0)return Z}let X=0;while(X<bz){let{n:Y,c:J,ok:G}=IY4($);if(!G||Y>65535)return;if(J<$.length&&$[J]==="."){if(Q<0&&X!=bz-Wo)return;if(X+Wo>bz)return;let K=O5$($);if(K===void 0)return;Z[X]=K[12],Z[X+1]=K[13],Z[X+2]=K[14],Z[X+3]=K[15],$="",X+=Wo;break}if(Z[X]=Y>>8,Z[X+1]=Y,X+=2,$=$.substring(J),$.length===0)break;if($[0]!==":"||$.length==1)return;if($=$.substring(1),$[0]===":"){if(Q>=0)return;if(Q=X,$=$.substring(1),$.length===0)break}}if($.length!==0)return;if(X<bz){if(Q<0)return;let Y=bz-X;for(let J=X-1;J>=Q;J--)Z[J+Y]=Z[J];for(let J=Q+Y-1;J>=Q;J--)Z[J]=0}else if(Q>=0)return;return Z}function MY4($){let Z=0,Q=0;for(Z=0;Z<$.length&&JJ0<=$.charCodeAt(Z)&&$.charCodeAt(Z)<=U5$;Z++)if(Q=Q*10+($.charCodeAt(Z)-JJ0),Q>=Is0)return{n:Is0,c:Z,ok:!1};if(Z===0)return{n:0,c:0,ok:!1};return{n:Q,c:Z,ok:!0}}function IY4($){let Z=0,Q=0;for(Q=0;Q<$.length;Q++){if(JJ0<=$.charCodeAt(Q)&&$.charCodeAt(Q)<=U5$)Z*=16,Z+=$.charCodeAt(Q)-JJ0;else if(F5$<=$.charCodeAt(Q)&&$.charCodeAt(Q)<=TY4)Z*=16,Z+=$.charCodeAt(Q)-F5$+10;else if(H5$<=$.charCodeAt(Q)&&$.charCodeAt(Q)<=AY4)Z*=16,Z+=$.charCodeAt(Q)-H5$+10;else break;if(Z>=Is0)return{n:0,c:Q,ok:!1}}if(Q===0)return{n:0,c:Q,ok:!1};return{n:Z,c:Q,ok:!0}}});var xs0=v((w5$)=>{Object.defineProperty(w5$,"__esModule",{value:!0});w5$.Servers=w5$.ServerImpl=void 0;w5$.isIPV4OrHostname=L5$;w5$.hostPort=vs0;var ks0=fz(),Ss0=pK(),Cs0=Vs0(),CY4=yD(),_Y4=pJ();function L5$($){if($.indexOf("[")!==-1||$.indexOf("::")!==-1)return!1;if($.indexOf(".")!==-1)return!0;if($.split(":").length<=2)return!0;return!1}function _s0($){return!L5$($)}function vY4($){let Q=$.toUpperCase().indexOf("::FFFF:");if(Q!==-1&&$.indexOf(".")!==-1){let X=$.substring(Q+7);return X=X.replace("[",""),X.replace("]","")}return $}function vs0($){if($=$.trim(),$.match(/^(.*:\/\/)(.*)/m))$=$.replace(/^(.*:\/\/)(.*)/gm,"$2");if($=vY4($),_s0($)&&$.indexOf("[")===-1)$=`[${$}]`;let Z=_s0($)?$.match(/(]:)(\d+)/):$.match(/(:)(\d+)/),Q=Z&&Z.length===3&&Z[1]&&Z[2]?parseInt(Z[2]):CY4.DEFAULT_PORT,Y=new URL(`${Q===80?"https":"http"}://${$}`);Y.port=`${Q}`;let J=Y.hostname;if(J.charAt(0)==="[")J=J.substring(1,J.length-1);return{listen:Y.host,hostname:J,port:Q}}class ph{src;listen;hostname;port;didConnect;reconnects;lastConnect;gossiped;tlsName;resolves;constructor($,Z=!1){this.src=$,this.tlsName="";let Q=vs0($);this.listen=Q.listen,this.hostname=Q.hostname,this.port=Q.port,this.didConnect=!1,this.reconnects=0,this.lastConnect=0,this.gossiped=Z}toString(){return this.listen}async resolve($){if(!$.fn||$.resolve===!1)return[this];let Z=[];if((0,Cs0.isIP)(this.hostname))return[this];else{let Q=await $.fn(this.hostname);if($.debug)console.log(`resolve ${this.hostname} = ${Q.join(",")}`);for(let X of Q){let Y=this.port===80?"https":"http",J=new URL(`${Y}://${_s0(X)?"["+X+"]":X}`);J.port=`${this.port}`;let G=new ph(J.host,!1);G.tlsName=this.hostname,Z.push(G)}}if($.randomize)(0,Ss0.shuffle)(Z);return this.resolves=Z,Z}}w5$.ServerImpl=ph;class GJ0{firstSelect;servers;currentServer;tlsName;randomize;constructor($={}){this.firstSelect=!0,this.servers=[],this.tlsName="",this.randomize=$.randomize||!1}setServers($){if(!Array.isArray($)||$.length===0)throw _Y4.InvalidArgumentError.format("servers","cannot be empty");let Z=(0,ks0.getUrlParseFn)(),Q=new Map;for(let Y of this.servers)Q.set(Y.listen,Y);let X=[];for(let Y of $){Y=Z?Z(Y):Y;let{listen:J}=vs0(Y),G=Q.get(J);if(G)G.gossiped=!1,X.push(G);else X.push(new ph(Y))}if(this.randomize)(0,Ss0.shuffle)(X);if(this.servers=X,this.currentServer===void 0||!X.includes(this.currentServer))this.currentServer=X[0],this.firstSelect=!0}clear(){this.servers.length=0}updateTLSName(){let $=this.getCurrentServer();if(!(0,Cs0.isIP)($.hostname))this.tlsName=$.hostname,this.servers.forEach((Z)=>{if(Z.gossiped)Z.tlsName=this.tlsName})}getCurrentServer(){return this.currentServer}addServer($,Z=!1){let Q=(0,ks0.getUrlParseFn)();$=Q?Q($):$;let X=new ph($,Z);if((0,Cs0.isIP)(X.hostname))X.tlsName=this.tlsName;this.servers.push(X)}selectServer(){if(this.firstSelect)return this.firstSelect=!1,this.currentServer;let $=this.servers.shift();if($)this.servers.push($),this.currentServer=$;return $}removeCurrentServer(){this.removeServer(this.currentServer)}removeServer($){if($){let Z=this.servers.indexOf($);this.servers.splice(Z,1)}}snapshot(){return GJ0.freezeAll(this.servers)}snapshotForHandler(){let $=this.currentServer;if(!$)return this.snapshot();let Z=this.servers.indexOf($);if(Z<=0)return this.snapshot();return GJ0.freezeAll([$,...this.servers.slice(0,Z),...this.servers.slice(Z+1)])}static freezeAll($){return $.map((Z)=>Object.freeze({hostname:Z.hostname,port:Z.port,listen:Z.listen,src:Z.src,tlsName:Z.tlsName,reconnects:Z.reconnects,lastConnect:Z.lastConnect,gossiped:Z.gossiped,didConnect:Z.didConnect}))}find($){return this.servers.find((Z)=>Z.listen===$.listen)}setCurrent($){this.currentServer=$}length(){return this.servers.length}next(){return this.servers.length?this.servers[0]:void 0}getServers(){return this.servers}update($,Z){let Q=[],X=[],Y=(0,ks0.getUrlParseFn)(),J=new Map;if($.connect_urls&&$.connect_urls.length>0)$.connect_urls.forEach((K)=>{K=Y?Y(K,Z):K;let W=new ph(K,!0);J.set(K,W)});let G=[];if(this.servers.forEach((K,W)=>{let H=K.listen;if(K.gossiped&&this.currentServer.listen!==H&&J.get(H)===void 0)G.push(W);J.delete(H)}),G.reverse(),G.forEach((K)=>{let W=this.servers.splice(K,1);X=X.concat(W[0].listen)}),J.forEach((K,W)=>{this.servers.push(K),Q.push(W)}),this.randomize&&Q.length>0){let K=this.currentServer,W=this.servers.filter((H)=>H!==K);(0,Ss0.shuffle)(W),this.servers=K?[K,...W]:W}return{added:Q,deleted:X}}}w5$.Servers=GJ0});var KJ0=v((P5$)=>{Object.defineProperty(P5$,"__esModule",{value:!0});P5$.QueuedIteratorImpl=void 0;var fs0=pK(),E5$=pJ();class z5${inflight;processed;received;noIterator;iterClosed;done;signal;yields;filtered;pendingFiltered;ctx;_data;err;time;profile;yielding;didBreak;constructor(){this.inflight=0,this.filtered=0,this.pendingFiltered=0,this.processed=0,this.received=0,this.noIterator=!1,this.done=!1,this.signal=(0,fs0.deferred)(),this.yields=[],this.iterClosed=(0,fs0.deferred)(),this.time=0,this.yielding=!1,this.didBreak=!1,this.profile=!1}[Symbol.asyncIterator](){return this.iterate()}push($){if(this.done)return;if(this.didBreak){if(typeof $==="function"){let Z=$;try{Z()}catch(Q){}}return}if(typeof $==="function")this.pendingFiltered++;this.yields.push($),this.signal.resolve()}async*iterate(){if(this.noIterator)throw new E5$.InvalidOperationError("iterator cannot be used when a callback is registered");if(this.yielding)throw new E5$.InvalidOperationError("iterator is already yielding");this.yielding=!0;try{while(!0){if(this.yields.length===0)await this.signal;if(this.err)throw this.err;let $=this.yields;this.inflight=$.length,this.yields=[];for(let Z=0;Z<$.length;Z++){if(typeof $[Z]==="function"){this.pendingFiltered--;let X=$[Z];try{X()}catch(Y){throw Y}if(this.err)throw this.err;continue}this.processed++,this.inflight--;let Q=this.profile?Date.now():0;yield $[Z],this.time=this.profile?Date.now()-Q:0}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,fs0.deferred)()}}finally{this.didBreak=!0,this.stop()}}stop($){if(this.done)return;this.err=$,this.done=!0,this.signal.resolve(),this.iterClosed.resolve($)}getProcessed(){return this.noIterator?this.received:this.processed}getPending(){return this.yields.length+this.inflight-this.pendingFiltered}getReceived(){return this.received-this.filtered}}P5$.QueuedIteratorImpl=z5$});var bs0=v((q5$)=>{Object.defineProperty(q5$,"__esModule",{value:!0});q5$.MuxSubscription=void 0;var yY4=yD(),T5$=pJ();class R5${baseInbox;reqs;constructor(){this.reqs=new Map}size(){return this.reqs.size}init($){return this.baseInbox=`${(0,yY4.createInbox)($)}.`,this.baseInbox}add($){if(!isNaN($.received))$.received=0;this.reqs.set($.token,$)}get($){return this.reqs.get($)}cancel($){this.reqs.delete($.token)}getToken($){let Z=$.subject||"";if(Z.indexOf(this.baseInbox)===0)return Z.substring(this.baseInbox.length);return null}all(){return Array.from(this.reqs.values())}handleError($,Z){if($)return this.all().forEach((Q)=>{Q.resolver(Z,{})}),!0;if(Z.operation==="publish"){let Q=this.all().find((X)=>{return X.requestSubject===Z.subject});if(Q)return Q.resolver(Z,{}),!0}return!1}dispatcher(){return($,Z)=>{let Q=this.getToken(Z);if(Q){let X=this.get(Q);if(X){if($===null)$=Z?.data?.length===0&&Z.headers?.code===503?new T5$.NoRespondersError(X.requestSubject):null;X.resolver($,Z)}}}}close(){let $=new T5$.RequestError("connection closed");this.reqs.forEach((Z)=>{Z.resolver($,{})})}}q5$.MuxSubscription=R5$});var ys0=v((V5$)=>{Object.defineProperty(V5$,"__esModule",{value:!0});V5$.Heartbeat=void 0;var gY4=pK();class I5${ph;interval;maxOut;timer;pendings;constructor($,Z,Q){this.ph=$,this.interval=Z,this.maxOut=Q,this.pendings=[]}start(){this.cancel(),this._schedule()}cancel($){if(this.timer)clearTimeout(this.timer),this.timer=void 0;if(this._reset(),$)this.ph.disconnect()}_schedule(){this.timer=setTimeout(()=>{if(this.ph.dispatchStatus({type:"ping",pendingPings:this.pendings.length+1}),this.pendings.length===this.maxOut){this.cancel(!0);return}let $=(0,gY4.deferred)();this.ph.flush($).then(()=>{this._reset()}).catch(()=>{this.cancel()}),this.pendings.push($),this._schedule()},this.interval)}_reset(){this.pendings=this.pendings.filter(($)=>{return $.resolve(),!1})}}V5$.Heartbeat=I5$});var us0=v((v5$)=>{Object.defineProperty(v5$,"__esModule",{value:!0});v5$.DenoBuffer=v5$.MAX_SIZE=v5$.AssertionError=void 0;v5$.assert=C5$;v5$.concat=_5$;v5$.append=uY4;v5$.readAll=lY4;v5$.writeAll=cY4;var hY4=iJ();class gs0 extends Error{constructor($){super($);this.name="AssertionError"}}v5$.AssertionError=gs0;function C5$($,Z="Assertion failed."){if(!$)throw new gs0(Z)}var S5$=32768;v5$.MAX_SIZE=4294967294;function WJ0($,Z,Q=0){let X=Z.byteLength-Q;if($.byteLength>X)$=$.subarray(0,X);return Z.set($,Q),$.byteLength}function _5$($,Z){if($===void 0&&Z===void 0)return new Uint8Array(0);if($===void 0)return Z;if(Z===void 0)return $;let Q=new Uint8Array($.length+Z.length);return Q.set($,0),Q.set(Z,$.length),Q}function uY4($,Z){return _5$($,Uint8Array.of(Z))}class hs0{_buf;_off;constructor($){if(this._off=0,$==null){this._buf=new Uint8Array(0);return}this._buf=new Uint8Array($)}bytes($={copy:!0}){if($.copy===!1)return this._buf.subarray(this._off);return this._buf.slice(this._off)}empty(){return this._buf.byteLength<=this._off}get length(){return this._buf.byteLength-this._off}get capacity(){return this._buf.buffer.byteLength}truncate($){if($===0){this.reset();return}if($<0||$>this.length)throw Error("bytes.Buffer: truncation out of range");this._reslice(this._off+$)}reset(){this._reslice(0),this._off=0}_tryGrowByReslice($){let Z=this._buf.byteLength;if($<=this.capacity-Z)return this._reslice(Z+$),Z;return-1}_reslice($){C5$($<=this._buf.buffer.byteLength),this._buf=new Uint8Array(this._buf.buffer,0,$)}readByte(){let $=new Uint8Array(1);if(this.read($))return $[0];return null}read($){if(this.empty()){if(this.reset(),$.byteLength===0)return 0;return null}let Z=WJ0(this._buf.subarray(this._off),$);return this._off+=Z,Z}writeByte($){return this.write(Uint8Array.of($))}writeString($){return this.write(hY4.TE.encode($))}write($){let Z=this._grow($.byteLength);return WJ0($,this._buf,Z)}_grow($){let Z=this.length;if(Z===0&&this._off!==0)this.reset();let Q=this._tryGrowByReslice($);if(Q>=0)return Q;let X=this.capacity;if($<=Math.floor(X/2)-Z)WJ0(this._buf.subarray(this._off),this._buf);else if(X+$>v5$.MAX_SIZE)throw Error("The buffer cannot be grown beyond the maximum size.");else{let Y=new Uint8Array(Math.min(2*X+$,v5$.MAX_SIZE));WJ0(this._buf.subarray(this._off),Y),this._buf=Y}return this._off=0,this._reslice(Math.min(Z+$,v5$.MAX_SIZE)),Z}grow($){if($<0)throw Error("Buffer._grow: negative count");let Z=this._grow($);this._reslice(Z)}readFrom($){let Z=0,Q=new Uint8Array(S5$);while(!0){let X=this.capacity-this.length<S5$,Y=X?Q:new Uint8Array(this._buf.buffer,this.length),J=$.read(Y);if(J===null)return Z;if(X)this.write(Y.subarray(0,J));else this._reslice(this.length+J);Z+=J}}}v5$.DenoBuffer=hs0;function lY4($){let Z=new hs0;return Z.readFrom($),Z.bytes()}function cY4($,Z){let Q=0;while(Q<Z.length)Q+=$.write(Z.subarray(Q))}});var ms0=v((g5$)=>{Object.defineProperty(g5$,"__esModule",{value:!0});g5$.cc=g5$.State=g5$.Parser=g5$.Kind=void 0;g5$.describe=oY4;var ls0=us0(),cs0=iJ();g5$.Kind={OK:0,ERR:1,MSG:2,INFO:3,PING:4,PONG:5};function oY4($){let Z,Q="";switch($.kind){case g5$.Kind.MSG:Z="MSG";break;case g5$.Kind.OK:Z="OK";break;case g5$.Kind.ERR:Z="ERR",Q=cs0.TD.decode($.data);break;case g5$.Kind.PING:Z="PING";break;case g5$.Kind.PONG:Z="PONG";break;case g5$.Kind.INFO:Z="INFO",Q=cs0.TD.decode($.data)}return`${Z}: ${Q}`}function f5$(){let $={};return $.sid=-1,$.hdr=-1,$.size=-1,$}var b5$=48,rY4=57,nh=67108864;class y5${dispatcher;state;as;drop;hdr;ma;argBuf;msgBuf;constructor($){this.dispatcher=$,this.state=g5$.State.OP_START,this.as=0,this.drop=0,this.hdr=0}parse($){let Z;for(Z=0;Z<$.length;Z++){let Q=$[Z];switch(this.state){case g5$.State.OP_START:switch(Q){case g5$.cc.M:case g5$.cc.m:this.state=g5$.State.OP_M,this.hdr=-1,this.ma=f5$();break;case g5$.cc.H:case g5$.cc.h:this.state=g5$.State.OP_H,this.hdr=0,this.ma=f5$();break;case g5$.cc.P:case g5$.cc.p:this.state=g5$.State.OP_P;break;case g5$.cc.PLUS:this.state=g5$.State.OP_PLUS;break;case g5$.cc.MINUS:this.state=g5$.State.OP_MINUS;break;case g5$.cc.I:case g5$.cc.i:this.state=g5$.State.OP_I;break;default:throw this.fail($.subarray(Z))}break;case g5$.State.OP_H:switch(Q){case g5$.cc.M:case g5$.cc.m:this.state=g5$.State.OP_M;break;default:throw this.fail($.subarray(Z))}break;case g5$.State.OP_M:switch(Q){case g5$.cc.S:case g5$.cc.s:this.state=g5$.State.OP_MS;break;default:throw this.fail($.subarray(Z))}break;case g5$.State.OP_MS:switch(Q){case g5$.cc.G:case g5$.cc.g:this.state=g5$.State.OP_MSG;break;default:throw this.fail($.subarray(Z))}break;case g5$.State.OP_MSG:switch(Q){case g5$.cc.SPACE:case g5$.cc.TAB:this.state=g5$.State.OP_MSG_SPC;break;default:throw this.fail($.subarray(Z))}break;case g5$.State.OP_MSG_SPC:switch(Q){case g5$.cc.SPACE:case g5$.cc.TAB:continue;default:this.state=g5$.State.MSG_ARG,this.as=Z}break;case g5$.State.MSG_ARG:switch(Q){case g5$.cc.CR:this.drop=1;break;case g5$.cc.NL:{let X=this.argBuf?this.argBuf.bytes():$.subarray(this.as,Z-this.drop);this.processMsgArgs(X),this.drop=0,this.as=Z+1,this.state=g5$.State.MSG_PAYLOAD,Z=this.as+this.ma.size-1;break}default:if(this.argBuf)this.argBuf.writeByte(Q)}break;case g5$.State.MSG_PAYLOAD:if(this.msgBuf)if(this.msgBuf.length>=this.ma.size){let X=this.msgBuf.bytes({copy:!1});this.dispatcher.push({kind:g5$.Kind.MSG,msg:this.ma,data:X}),this.argBuf=void 0,this.msgBuf=void 0,this.state=g5$.State.MSG_END}else{let X=this.ma.size-this.msgBuf.length,Y=$.length-Z;if(Y<X)X=Y;if(X>0)this.msgBuf.write($.subarray(Z,Z+X)),Z=Z+X-1;else this.msgBuf.writeByte(Q)}else if(Z-this.as>=this.ma.size)this.dispatcher.push({kind:g5$.Kind.MSG,msg:this.ma,data:$.subarray(this.as,Z)}),this.argBuf=void 0,this.msgBuf=void 0,this.state=g5$.State.MSG_END;break;case g5$.State.MSG_END:switch(Q){case g5$.cc.NL:this.drop=0,this.as=Z+1,this.state=g5$.State.OP_START;break;default:continue}break;case g5$.State.OP_PLUS:switch(Q){case g5$.cc.O:case g5$.cc.o:this.state=g5$.State.OP_PLUS_O;break;default:throw this.fail($.subarray(Z))}break;case g5$.State.OP_PLUS_O:switch(Q){case g5$.cc.K:case g5$.cc.k:this.state=g5$.State.OP_PLUS_OK;break;default:throw this.fail($.subarray(Z))}break;case g5$.State.OP_PLUS_OK:switch(Q){case g5$.cc.NL:this.dispatcher.push({kind:g5$.Kind.OK}),this.drop=0,this.state=g5$.State.OP_START;break}break;case g5$.State.OP_MINUS:switch(Q){case g5$.cc.E:case g5$.cc.e:this.state=g5$.State.OP_MINUS_E;break;default:throw this.fail($.subarray(Z))}break;case g5$.State.OP_MINUS_E:switch(Q){case g5$.cc.R:case g5$.cc.r:this.state=g5$.State.OP_MINUS_ER;break;default:throw this.fail($.subarray(Z))}break;case g5$.State.OP_MINUS_ER:switch(Q){case g5$.cc.R:case g5$.cc.r:this.state=g5$.State.OP_MINUS_ERR;break;default:throw this.fail($.subarray(Z))}break;case g5$.State.OP_MINUS_ERR:switch(Q){case g5$.cc.SPACE:case g5$.cc.TAB:this.state=g5$.State.OP_MINUS_ERR_SPC;break;default:throw this.fail($.subarray(Z))}break;case g5$.State.OP_MINUS_ERR_SPC:switch(Q){case g5$.cc.SPACE:case g5$.cc.TAB:continue;default:this.state=g5$.State.MINUS_ERR_ARG,this.as=Z}break;case g5$.State.MINUS_ERR_ARG:switch(Q){case g5$.cc.CR:this.drop=1;break;case g5$.cc.NL:{let X;if(this.argBuf)X=this.argBuf.bytes(),this.argBuf=void 0;else X=$.subarray(this.as,Z-this.drop);this.dispatcher.push({kind:g5$.Kind.ERR,data:X}),this.drop=0,this.as=Z+1,this.state=g5$.State.OP_START;break}default:if(this.argBuf)this.argBuf.write(Uint8Array.of(Q))}break;case g5$.State.OP_P:switch(Q){case g5$.cc.I:case g5$.cc.i:this.state=g5$.State.OP_PI;break;case g5$.cc.O:case g5$.cc.o:this.state=g5$.State.OP_PO;break;default:throw this.fail($.subarray(Z))}break;case g5$.State.OP_PO:switch(Q){case g5$.cc.N:case g5$.cc.n:this.state=g5$.State.OP_PON;break;default:throw this.fail($.subarray(Z))}break;case g5$.State.OP_PON:switch(Q){case g5$.cc.G:case g5$.cc.g:this.state=g5$.State.OP_PONG;break;default:throw this.fail($.subarray(Z))}break;case g5$.State.OP_PONG:switch(Q){case g5$.cc.NL:this.dispatcher.push({kind:g5$.Kind.PONG}),this.drop=0,this.state=g5$.State.OP_START;break}break;case g5$.State.OP_PI:switch(Q){case g5$.cc.N:case g5$.cc.n:this.state=g5$.State.OP_PIN;break;default:throw this.fail($.subarray(Z))}break;case g5$.State.OP_PIN:switch(Q){case g5$.cc.G:case g5$.cc.g:this.state=g5$.State.OP_PING;break;default:throw this.fail($.subarray(Z))}break;case g5$.State.OP_PING:switch(Q){case g5$.cc.NL:this.dispatcher.push({kind:g5$.Kind.PING}),this.drop=0,this.state=g5$.State.OP_START;break}break;case g5$.State.OP_I:switch(Q){case g5$.cc.N:case g5$.cc.n:this.state=g5$.State.OP_IN;break;default:throw this.fail($.subarray(Z))}break;case g5$.State.OP_IN:switch(Q){case g5$.cc.F:case g5$.cc.f:this.state=g5$.State.OP_INF;break;default:throw this.fail($.subarray(Z))}break;case g5$.State.OP_INF:switch(Q){case g5$.cc.O:case g5$.cc.o:this.state=g5$.State.OP_INFO;break;default:throw this.fail($.subarray(Z))}break;case g5$.State.OP_INFO:switch(Q){case g5$.cc.SPACE:case g5$.cc.TAB:this.state=g5$.State.OP_INFO_SPC;break;default:throw this.fail($.subarray(Z))}break;case g5$.State.OP_INFO_SPC:switch(Q){case g5$.cc.SPACE:case g5$.cc.TAB:continue;default:this.state=g5$.State.INFO_ARG,this.as=Z}break;case g5$.State.INFO_ARG:switch(Q){case g5$.cc.CR:this.drop=1;break;case g5$.cc.NL:{let X;if(this.argBuf)X=this.argBuf.bytes(),this.argBuf=void 0;else X=$.subarray(this.as,Z-this.drop);this.dispatcher.push({kind:g5$.Kind.INFO,data:X}),this.drop=0,this.as=Z+1,this.state=g5$.State.OP_START;break}default:if(this.argBuf)this.argBuf.writeByte(Q)}break;default:throw this.fail($.subarray(Z))}}if((this.state===g5$.State.MSG_ARG||this.state===g5$.State.MINUS_ERR_ARG||this.state===g5$.State.INFO_ARG)&&!this.argBuf)this.argBuf=new ls0.DenoBuffer($.subarray(this.as,Z-this.drop));if(this.state===g5$.State.MSG_PAYLOAD&&!this.msgBuf){if(!this.argBuf)this.cloneMsgArg();this.msgBuf=new ls0.DenoBuffer($.subarray(this.as))}}cloneMsgArg(){let $=this.ma.subject.length,Z=this.ma.reply?this.ma.reply.length:0,Q=new Uint8Array($+Z);if(Q.set(this.ma.subject),this.ma.reply)Q.set(this.ma.reply,$);if(this.argBuf=new ls0.DenoBuffer(Q),this.ma.subject=Q.subarray(0,$),this.ma.reply)this.ma.reply=Q.subarray($)}processMsgArgs($){if(this.hdr>=0)return this.processHeaderMsgArgs($);let Z=[],Q=-1;for(let X=0;X<$.length;X++)switch($[X]){case g5$.cc.SPACE:case g5$.cc.TAB:case g5$.cc.CR:case g5$.cc.NL:if(Q>=0)Z.push($.subarray(Q,X)),Q=-1;break;default:if(Q<0)Q=X}if(Q>=0)Z.push($.subarray(Q));switch(Z.length){case 3:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=void 0,this.ma.size=this.protoParseInt(Z[2],nh);break;case 4:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=Z[2],this.ma.size=this.protoParseInt(Z[3],nh);break;default:throw this.fail($,"processMsgArgs Parse Error")}if(this.ma.sid<0)throw this.fail($,"processMsgArgs Bad or Missing Sid Error");if(this.ma.size<0)throw this.fail($,"processMsgArgs Bad or Missing Size Error")}fail($,Z=""){if(!Z)Z=`parse error [${this.state}]`;else Z=`${Z} [${this.state}]`;return Error(`${Z}: ${cs0.TD.decode($)}`)}processHeaderMsgArgs($){let Z=[],Q=-1;for(let X=0;X<$.length;X++)switch($[X]){case g5$.cc.SPACE:case g5$.cc.TAB:case g5$.cc.CR:case g5$.cc.NL:if(Q>=0)Z.push($.subarray(Q,X)),Q=-1;break;default:if(Q<0)Q=X}if(Q>=0)Z.push($.subarray(Q));switch(Z.length){case 4:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=void 0,this.ma.hdr=this.protoParseInt(Z[2],nh),this.ma.size=this.protoParseInt(Z[3],nh);break;case 5:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=Z[2],this.ma.hdr=this.protoParseInt(Z[3],nh),this.ma.size=this.protoParseInt(Z[4],nh);break;default:throw this.fail($,"processHeaderMsgArgs Parse Error")}if(this.ma.sid<0)throw this.fail($,"processHeaderMsgArgs Bad or Missing Sid Error");if(this.ma.hdr<0||this.ma.hdr>this.ma.size)throw this.fail($,"processHeaderMsgArgs Bad or Missing Header Size Error");if(this.ma.size<0)throw this.fail($,"processHeaderMsgArgs Bad or Missing Size Error")}protoParseInt($,Z){if($.length===0||$.length>15)return-1;let Q=0;for(let X=0;X<$.length;X++){if($[X]<b5$||$[X]>rY4)return-1;Q=Q*10+($[X]-b5$)}return Z!==void 0&&Q>Z?-1:Q}}g5$.Parser=y5$;g5$.State={OP_START:0,OP_PLUS:1,OP_PLUS_O:2,OP_PLUS_OK:3,OP_MINUS:4,OP_MINUS_E:5,OP_MINUS_ER:6,OP_MINUS_ERR:7,OP_MINUS_ERR_SPC:8,MINUS_ERR_ARG:9,OP_M:10,OP_MS:11,OP_MSG:12,OP_MSG_SPC:13,MSG_ARG:14,MSG_PAYLOAD:15,MSG_END:16,OP_H:17,OP_P:18,OP_PI:19,OP_PIN:20,OP_PING:21,OP_PO:22,OP_PON:23,OP_PONG:24,OP_I:25,OP_IN:26,OP_INF:27,OP_INFO:28,OP_INFO_SPC:29,INFO_ARG:30};g5$.cc={CR:13,E:69,e:101,F:70,f:102,G:71,g:103,H:72,h:104,I:73,i:105,K:75,k:107,M:77,m:109,MINUS:45,N:78,n:110,NL:10,O:79,o:111,P:80,p:112,PLUS:43,R:82,r:114,S:83,s:115,SPACE:32,TAB:9}});var UJ0=v((u5$)=>{Object.defineProperty(u5$,"__esModule",{value:!0});u5$.MsgHdrsImpl=void 0;u5$.canonicalMIMEHeaderKey=is0;u5$.headers=eY4;var h5$=iJ(),nK=yD(),FJ0=pJ();function is0($){let F=!0,U=Array($.length);for(let N=0;N<$.length;N++){let B=$.charCodeAt(N);if(B===58||B<33||B>126)throw FJ0.InvalidArgumentError.format("header",`'${$[N]}' is not a valid character in a header name`);if(F&&97<=B&&B<=122)B-=32;else if(!F&&65<=B&&B<=90)B+=32;U[N]=B,F=B==45}return String.fromCharCode(...U)}function eY4($=0,Z=""){if($===0&&Z!=="")throw FJ0.InvalidArgumentError.format("code","is required");else if($>0&&Z==="")throw FJ0.InvalidArgumentError.format("description","is required");return new th($,Z)}var ds0="NATS/1.0";class th{_code;headers;_description;constructor($=0,Z=""){this._code=$,this._description=Z,this.headers=new Map}[Symbol.iterator](){return this.headers.entries()}size(){return this.headers.size}equals($){if($&&this.headers.size===$.headers.size&&this._code===$._code){for(let[Z,Q]of this.headers){let X=$.values(Z);if(Q.length!==X.length)return!1;let Y=[...Q].sort(),J=[...X].sort();for(let G=0;G<Y.length;G++)if(Y[G]!==J[G])return!1}return!0}return!1}static decode($){let Z=new th,X=h5$.TD.decode($).split(`\r
2081
2081
  `),Y=X[0];if(Y!==ds0){let J=Y.replace(ds0,"").trim();if(J.length>0){if(Z._code=parseInt(J,10),isNaN(Z._code))Z._code=0;let G=Z._code.toString();J=J.replace(G,""),Z._description=J.trim()}}if(X.length>=1)X.slice(1).map((J)=>{if(J){let G=J.indexOf(":");if(G>-1){let K=J.slice(0,G),W=J.slice(G+1).trim();Z.append(K,W)}}});return Z}toString(){if(this.headers.size===0&&this._code===0)return"";let $=ds0;if(this._code>0&&this._description!=="")$+=` ${this._code} ${this._description}`;for(let[Z,Q]of this.headers)for(let X=0;X<Q.length;X++)$=`${$}\r
2082
2082
  ${Z}: ${Q[X]}`;return`${$}\r
@@ -3013,7 +3013,7 @@ You are the Usage Manager. You analyze how this workspace is actually used \u201
3013
3013
  b. MONITORING_LOGS_LIST with isError true (plus connectionId/toolName/virtualMcpId filters) \u2192 failing calls.
3014
3014
  c. MONITORING_LOG_GET on specific log ids for full input/output when the error message isn't enough.
3015
3015
  d. Report the failing tool/connection, error pattern, and suggest the fix or owner.
3016
- </workflows>`,kR$={id:"studio-usage-manager",title:"Usage Manager",icon:"icon://BarChart10?color=blue",description:"Analyze usage, costs, and clean up idle agents and connections",selectedTools:["MONITORING_STATS","MONITORING_LOGS_LIST","MONITORING_LOG_GET","MONITORING_THREAD_USAGE","COLLECTION_VIRTUAL_MCP_LIST","COLLECTION_VIRTUAL_MCP_GET","COLLECTION_VIRTUAL_MCP_DELETE","VIRTUAL_MCP_LAST_USED_LIST","COLLECTION_CONNECTIONS_LIST","COLLECTION_CONNECTIONS_GET","COLLECTION_CONNECTIONS_DELETE","ORGANIZATION_MEMBER_LIST"],selectedConnections:null,selectedPrompts:[],instructions:fc4,getId:hG.USAGE_MANAGER}});function s71($){return xA.find((Z)=>$.startsWith(`${Z.id}_`))??null}async function yc4($,Z){if("resolveRuntime"in $)return $.resolveRuntime(Z);return{instructions:$.instructions,selectedTools:$.selectedTools}}async function zF0({virtualMcp:$,agentId:Z=$.id,organizationId:Q,ctx:X}){let Y=s71(Z);if(!Y)return $;let J=await yc4(Y,{orgId:Q,ctx:X}),G=J.selectedTools?[...J.selectedTools]:null;return{...$,metadata:{...$.metadata??{},instructions:J.instructions},connections:$.connections.map((K)=>({...K,selected_tools:G}))}}async function PF0($,Z){if(!("checklist"in $))return[];return Promise.all($.checklist.map(async(Q)=>({label:Q.label,activeForm:Q.activeForm,action:Q.action,completed:await Q.isCompleted(Z),alwaysSuggest:Q.alwaysSuggest})))}async function CR$($,Z,Q){let X={self:I8.SELF($),registry:I8.REGISTRY($),"community-registry":I8.COMMUNITY_REGISTRY($)};await Promise.all(bc4.map((Y)=>Q.delete(`${Y}${$}`))),await Promise.all(xA.map(async(Y)=>{let J=Y.getId($),G=await Q.findById(J,$),W=(Y.selectedConnections??["self"]).map((H)=>X[H]);if(G){await Q.update(J,Z,{metadata:{...G.metadata??{},instructions:Y.instructions},connections:W.map((H)=>{let F=G.connections.find((U)=>U.connection_id===H);return{connection_id:H,selected_tools:Y.selectedTools?[...Y.selectedTools]:null,selected_resources:F?.selected_resources??null,selected_prompts:F?.selected_prompts??null}})});return}await Q.create($,Z,{title:Y.title,description:Y.description,icon:Y.icon,status:"active",pinned:!1,metadata:{instructions:Y.instructions},connections:W.map((H)=>({connection_id:H,selected_tools:Y.selectedTools?[...Y.selectedTools]:null,selected_resources:null,selected_prompts:Y.selectedPrompts?[...Y.selectedPrompts]:null}))},{id:J})}))}var bc4,xA;var sc=D(()=>{V8();wR$();ER$();RR$();MR$();VR$();SR$();bc4=P51,xA=[TR$,jR$,qR$,LR$,IR$,kR$]});import{DBOS as AF0}from"@dbos-inc/dbos-sdk";async function gc4($){let Z=l$(),Q=new yl(Z.db);await CR$($.orgId,$.createdBy,Q)}async function hc4($){let Z=l$(),Q=new yl(Z.db);for(let X of xA){let Y=X.getId($.orgId),J=await Q.findById(Y,$.orgId);if(!J)continue;let G=X.selectedPrompts?[...X.selectedPrompts]:null;if(J.connections.every((W)=>{let H=W.selected_prompts;if(G===null)return H===null;if(H===null)return!1;if(H.length!==G.length)return!1;return H.every((F,U)=>F===G[U])}))continue;await Q.update(Y,$.createdBy,{connections:J.connections.map((W)=>({connection_id:W.connection_id,selected_tools:W.selected_tools,selected_resources:W.selected_resources,selected_prompts:G}))})}}async function uc4($){await AF0.runStep(()=>gc4($),{name:"installStudioPack"}),await AF0.runStep(()=>hc4($),{name:"backfillSelectedPrompts"})}async function e71($){await AF0.startWorkflow(lc4,{workflowID:`install-studio-pack:${cc4}:${$.orgId}`})($)}async function _R$(){let Z=await l$().db.selectFrom("member").select(["organizationId","userId"]).orderBy("createdAt","asc").execute(),Q=new Map;for(let X of Z)if(!Q.has(X.organizationId))Q.set(X.organizationId,X.userId);await rc(Array.from(Q),10,async([X,Y])=>{try{await e71({orgId:X,createdBy:Y})}catch(J){console.error("[studio-pack-backfill] enqueue failed",{orgId:X},J)}})}var lc4,cc4="v6";var TF0=D(()=>{bQ();v51();sc();lc4=AF0.registerWorkflow(uc4,{name:"installStudioPackWorkflow"})});class $00{constructor(){this._messageQueue=[]}static createLinkedPair(){let $=new $00,Z=new $00;return $._otherTransport=Z,Z._otherTransport=$,[$,Z]}async start(){while(this._messageQueue.length>0){let $=this._messageQueue.shift();this.onmessage?.($.message,$.extra)}}async close(){let $=this._otherTransport;this._otherTransport=void 0,await $?.close(),this.onclose?.()}async send($,Z){if(!this._otherTransport)throw Error("Not connected");if(this._otherTransport.onmessage)this._otherTransport.onmessage($,{authInfo:Z?.authInfo});else this._otherTransport._messageQueue.push({message:$,extra:{authInfo:Z?.authInfo}})}}import{z as g8}from"zod";var xR$,vR$=1000,mc4=500,fR$,bR$,yR$,gR$,hR$,uR$,lR$,cR$,mR$,dR$;var ec=D(()=>{xR$=g8.record(g8.string(),g8.array(g8.string())),fR$=g8.record(g8.string(),g8.array(g8.string()).max(mc4)).refine(($)=>Object.keys($).length<=vR$,{message:`Permissions cannot grant more than ${vR$} resources`}),bR$=g8.object({id:g8.string().describe("Unique identifier for the API key"),name:g8.string().describe("Human-readable name for the API key"),userId:g8.string().describe("ID of the user who owns this API key"),permissions:xR$.describe('Permissions granted to this API key. Format: { resource: [actions] } where resource is "self" for management tools or "conn_<UUID>" for connection-specific tools. Example: { "self": ["API_KEY_CREATE"], "conn_abc123": ["SEND_MESSAGE"] }'),expiresAt:g8.string().datetime().nullable().optional().describe("Expiration date of the API key (ISO 8601)"),createdAt:g8.string().datetime().describe("When the API key was created (ISO 8601)")}),yR$=g8.object({name:g8.string().min(1).max(64).describe("Human-readable name for the API key"),permissions:fR$.describe(`Permissions to grant (REQUIRED \u2014 there is no implicit default). Format: { resource: [actions] }. Resource is "self" for management tools or "conn_<UUID>" for connection-specific tools. Actions are tool names (e.g., ["ORGANIZATION_GET"]) or ["*"] for all. Example: { "self": ["ORGANIZATION_GET", "COLLECTION_CONNECTIONS_LIST"] }. The key is authorized solely by this allowlist; the creator's role does not widen it.`),expiresIn:g8.number().positive().optional().describe("Expiration time in seconds. If not provided, key never expires."),metadata:g8.record(g8.string(),g8.unknown()).optional().describe("Additional metadata to store with the API key")}),gR$=g8.object({id:g8.string().describe("Unique identifier for the API key"),name:g8.string().describe("Human-readable name for the API key"),key:g8.string().describe("The actual API key value. STORE THIS SECURELY - it will not be shown again!"),permissions:xR$.describe('Permissions granted to this API key. Format: { resource: [actions] } where resource is "self" for management tools or "conn_<UUID>" for connection-specific tools'),expiresAt:g8.string().datetime().nullable().optional().describe("Expiration date of the API key (ISO 8601)"),createdAt:g8.string().datetime().describe("When the API key was created (ISO 8601)")}),hR$=g8.object({}),uR$=g8.object({items:g8.array(bR$).describe("List of API keys (without key values)")}),lR$=g8.object({keyId:g8.string().describe("ID of the API key to update"),name:g8.string().min(1).max(64).optional().describe("New name for the API key"),permissions:fR$.optional().describe('New permissions. Format: { resource: [actions] } where resource is "self" for management tools or "conn_<UUID>" for connection-specific tools. Actions are tool names or "*" for all. Example: { "self": ["API_KEY_CREATE"] }. Replaces existing permissions.'),metadata:g8.record(g8.string(),g8.unknown()).optional().describe("New metadata. Replaces existing metadata.")}),cR$=g8.object({item:bR$.describe("The updated API key (without key value)")}),mR$=g8.object({keyId:g8.string().describe("ID of the API key to delete")}),dR$=g8.object({success:g8.boolean().describe("Whether the deletion was successful"),keyId:g8.string().describe("ID of the deleted API key")})});var $Q1;var iR$=D(()=>{b4();q0();ec();$Q1=h({name:"API_KEY_CREATE",description:"Create an API key with scoped permissions. The key value is returned only once \u2014 store it immediately.",annotations:{title:"Create API Key",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!1},inputSchema:yR$,outputSchema:gR$,handler:async($,Z)=>{t(Z),await Z.access.check();let Q=await Z.boundAuth.apiKey.create({name:$.name,permissions:$.permissions,expiresIn:$.expiresIn,metadata:{...$.metadata,organization:Z.organization}}),X=Q.expiresAt?Q.expiresAt instanceof Date?Q.expiresAt.toISOString():Q.expiresAt:null,Y=Q.createdAt instanceof Date?Q.createdAt.toISOString():Q.createdAt,J=d0(Z);if(J)k1.capture({distinctId:J,event:"api_key_created",...Z.organization?.id?{groups:{organization:Z.organization.id}}:{},properties:{key_id:Q.id,key_name:Q.name??$.name,organization_id:Z.organization?.id,has_expiry:!!X}});return{id:Q.id,name:Q.name??$.name,key:Q.key,permissions:Q.permissions??{},expiresAt:X,createdAt:Y}}})});var ZQ1;var pR$=D(()=>{b4();q0();ec();ZQ1=h({name:"API_KEY_DELETE",description:"Delete and instantly revoke an API key. Cannot be undone.",annotations:{title:"Delete API Key",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:mR$,outputSchema:dR$,handler:async($,Z)=>{t(Z),await Z.access.check();let Q=d0(Z);if(!Q)throw Error("User ID required to delete API key");let Y=(await Z.boundAuth.apiKey.list())?.find((W)=>W.id===$.keyId);if(!Y)throw Error("API key not found");let G=Y.metadata?.organization?.id,K=Z.organization?.id;if(G!==K)throw Error("Cannot delete API key from another organization");if(await Z.boundAuth.apiKey.delete($.keyId),K)k1.capture({distinctId:Q,event:"api_key_deleted",groups:{organization:K},properties:{key_id:$.keyId,organization_id:K}});return{success:!0,keyId:$.keyId}}})});var QQ1;var nR$=D(()=>{q0();ec();QQ1=h({name:"API_KEY_LIST",description:"List API keys for the current user in the current organization. Returns metadata only \u2014 key values are never shown after creation.",annotations:{title:"List API Keys",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:hR$,outputSchema:uR$,handler:async($,Z)=>{t(Z),await Z.access.check();let Q=await Z.boundAuth.apiKey.list(),X=Z.organization?.id;return{items:(Q??[]).filter((J)=>{return J.metadata?.organization?.id===X}).map((J)=>({id:J.id,name:J.name??"Unnamed Key",userId:J.userId,permissions:J.permissions??{},expiresAt:J.expiresAt?J.expiresAt instanceof Date?J.expiresAt.toISOString():J.expiresAt:null,createdAt:J.createdAt instanceof Date?J.createdAt.toISOString():J.createdAt}))}}})});var XQ1;var tR$=D(()=>{q0();ec();XQ1=h({name:"API_KEY_UPDATE",description:"Update an API key's name, permissions, or metadata. The key value cannot be changed or retrieved.",annotations:{title:"Update API Key",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:lR$,outputSchema:cR$,handler:async($,Z)=>{if(t(Z),await Z.access.check(),!d0(Z))throw Error("User ID required to update API key");let Y=(await Z.boundAuth.apiKey.list())?.find((H)=>H.id===$.keyId);if(!Y)throw Error(`API key not found: ${$.keyId}`);let G=Y.metadata?.organization?.id,K=Z.organization?.id;if(G!==K)throw Error("Cannot update API key from another organization");let W=await Z.boundAuth.apiKey.update({keyId:$.keyId,name:$.name,permissions:$.permissions,metadata:{...$.metadata,organization:Z.organization}});if(!W)throw Error(`Failed to update API key: ${$.keyId}`);return{item:{id:W.id,name:W.name??$.name??"Unnamed Key",userId:W.userId,permissions:W.permissions??{},expiresAt:W.expiresAt?W.expiresAt instanceof Date?W.expiresAt.toISOString():W.expiresAt:null,createdAt:W.createdAt instanceof Date?W.createdAt.toISOString():W.createdAt}}}})});var oR$=D(()=>{iR$();pR$();nR$();tR$();ec()});function ww($){let Z=$.trim();if(!Z)return{ok:!1,error:"Enter a website URL."};let Q=ic4.test(Z),X=pc4.test(Z),Y=nc4.test(Z);if(Q&&!X&&!Y)return{ok:!1,error:"Use an HTTP or HTTPS website URL."};let J=X?Z:`https://${Z}`,G;try{G=new URL(J)}catch{return{ok:!1,error:"Enter a valid website URL."}}if(G.protocol!=="http:"&&G.protocol!=="https:")return{ok:!1,error:"Use an HTTP or HTTPS website URL."};let K=G.hostname.split(".");if(K.length<2||K.some((W)=>!W||!tc4.test(W)))return{ok:!1,error:"Enter a valid website URL."};return G.protocol="https:",{ok:!0,value:G.origin}}var ic4,pc4,nc4,tc4;var Z00=D(()=>{ic4=/^[a-zA-Z][a-zA-Z\d+.-]*:/,pc4=/^[a-zA-Z][a-zA-Z\d+.-]*:\/\//,nc4=/^[^\s/:?#]+\.[^\s/:?#]+:\d+(?:[/?#]|$)/,tc4=/^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$/i});import{z as aY}from"zod";function RF0($){return{repository_id:$.repositoryId,provider:$.provider,host:$.host,path:$.path,default_branch:$.defaultBranch??null,web_url:$.webUrl??null}}function aR$($){let Z=oc4.safeParse($);if(!Z.success)return null;return{repositoryId:Z.data.repository_id,provider:Z.data.provider,host:Z.data.host,path:Z.data.path,defaultBranch:Z.data.default_branch??null,webUrl:Z.data.web_url??null}}function qF0($){return $.provider==="github"&&$.host.toLowerCase()==="github.com"?$.path:null}var rR$,oc4;var MF0=D(()=>{rR$=aY.object({repositoryId:aY.string().min(1),provider:aY.enum(["github","gitlab","bitbucket"]),host:aY.string().min(1),path:aY.string().min(1),defaultBranch:aY.string().nullable().optional(),webUrl:aY.string().nullable().optional()}),oc4=aY.object({repository_id:aY.string().min(1),provider:aY.enum(["github","gitlab","bitbucket"]),host:aY.string().min(1),path:aY.string().min(1),default_branch:aY.string().nullable().optional(),web_url:aY.string().nullable().optional()})});import{z as aX}from"zod";function _F($){if($.baseUrl)return $.baseUrl.replace(/\/+$/,"");return(($.settings??z0()).reportsInternalApiUrl??rc4).replace(/\/+$/,"")}function eR$($={}){return`${_F($)}/api/v2/mcp`}function fA($){let Z=$.apiKey??($.settings??z0()).reportsInternalApiKey;if(!Z)throw Error("REPORTS_INTERNAL_API_KEY (or the legacy COMMERCE_DISCOVERY_INTERNAL_API_KEY) is required to set up reports.");return Z}function VF0($){return new URL($).hostname}function sc4($){return $==="ownership_unverified"||$==="already_claimed_by_other_org"}function ec4($,Z={}){switch($){case"ownership_unverified":{let Q=Z.email?`O e-mail ${Z.email}`:"Este e-mail",X=Z.domain?` ${Z.domain}`:" este site";return`${Q} n\xE3o tem permiss\xE3o para reivindicar${X}. Use um e-mail do dom\xEDnio do site ou pe\xE7a ao suporte para autorizar seu dom\xEDnio.`}case"already_claimed_by_other_org":return"Este site j\xE1 pertence a outra organiza\xE7\xE3o. Fale com o suporte para transferir o acesso.";case"unknown":return"N\xE3o foi poss\xEDvel configurar o Reports. Tente novamente ou fale com o suporte.";default:return $}}async function $m4($){let Z=await Q00($);return sc4(Z?.error)?Z.error:"unknown"}async function Q00($){let Z=await $.text().catch(()=>"");if(!Z)return;try{return JSON.parse(Z)}catch{return}}async function kF0($){let Z=`Reports auth failed with status ${$.status}.`,Q=await $.text().catch(()=>"");if(!Q)return Z;try{let X=JSON.parse(Q),Y=typeof X.error==="string"?X.error:typeof X.message==="string"?X.message:null;return Y?`Reports auth failed: ${Y}.`:Z}catch{return Z}}async function Zq$($,Z={}){let Q=_F(Z),X=fA(Z),Y=Z.fetchImpl??fetch,J=VF0($.siteUrl),G=`${Q}/api/v2/internal/diagnostics/${encodeURIComponent(J)}/upgrade`,K=await Y(G,{method:"POST",headers:{Authorization:`Bearer ${X}`,"Content-Type":"application/json"},body:JSON.stringify({org_id:$.orgId,...$.orgName?{name:$.orgName}:{},...$.email?{email:$.email}:{},...$.reportUrl?{report_url:$.reportUrl}:{}}),signal:AbortSignal.timeout(IF0)});if(!K.ok){let H=await $m4(K);throw new $q$(H,{email:$.email,domain:J})}let W=ac4.safeParse(await Q00(K));if(!W.success)throw Error("Reports auth response did not include a token.");return{authorizationToken:W.data.token}}async function Qq$($,Z={}){let Q=_F(Z),X=fA(Z),Y=Z.fetchImpl??fetch,J=VF0($.siteUrl),G=`${Q}/api/v2/internal/diagnostics/${encodeURIComponent(J)}/bindings`,K=await Y(G,{method:"POST",headers:{Authorization:`Bearer ${X}`,"Content-Type":"application/json"},body:JSON.stringify({org_id:$.orgId,provider:$.provider,resource_id:$.resourceId}),signal:AbortSignal.timeout(IF0)});if(K.status===409)return{ok:!1,reason:"resource_already_bound",detail:"Este recurso j\xE1 est\xE1 vinculado a outra loja. Se ele \xE9 seu, fale com o suporte para revis\xE3o manual."};if(K.status===422){let H=sR$.safeParse(await Q00(K));return{ok:!1,reason:H.success?H.data.reason??"verification_failed":"verification_failed",detail:(H.success?H.data.detail:void 0)??"N\xE3o foi poss\xEDvel verificar o acesso a este recurso."}}if(!K.ok)throw Error(await kF0(K));let W=sR$.safeParse(await Q00(K));if(!W.success||!W.data.binding)throw Error("Reports bind response did not include a binding.");return{ok:!0,resourceId:W.data.binding.resource_id,evidence:W.data.binding.evidence}}async function Xq$($,Z={}){let Q=_F(Z),X=fA(Z),Y=Z.fetchImpl??fetch,J=VF0($.siteUrl),G=`${Q}/api/v2/internal/diagnostics/${encodeURIComponent(J)}/run`,K=await Y(G,{method:"POST",headers:{Authorization:`Bearer ${X}`,"Content-Type":"application/json"},body:JSON.stringify({org_id:$.orgId,...$.repository?{repository:RF0($.repository)}:{},...$.githubRepo?{github_repo:$.githubRepo}:{}}),signal:AbortSignal.timeout(IF0)});if(K.status===409)return{triggered:!1,reason:"not_upgraded"};if(!K.ok)throw Error(await kF0(K));return{triggered:!0}}async function Zm4($,Z,Q){try{return await Q8(async()=>{let X=await $(Z,{method:"GET",headers:{Authorization:`Bearer ${Q}`},signal:AbortSignal.timeout(IF0)});if(X.status>=500||X.status===429)throw new YQ1(await kF0(X));return X},{maxAttempts:3,minTimeout:200,maxTimeout:2000,multiplier:2,jitter:1,isRetriable:(X)=>X instanceof YQ1})}catch(X){if(X instanceof i6&&X.cause instanceof Error)throw X.cause;throw X}}async function Yq$($,Z={}){let Q=_F(Z),X=fA(Z),Y=Z.fetchImpl??fetch,J=VF0($.siteUrl),G=`${Q}/api/v2/internal/diagnostics/${encodeURIComponent(J)}/connections/status?org_id=${encodeURIComponent($.orgId)}`,K=await Zm4(Y,G,X);if(K.status===404||K.status===409)return{providers:{},claimed:!1};if(!K.ok)throw Error(await kF0(K));let W=Qm4.safeParse(await Q00(K));return{providers:W.success?W.data.providers:{},claimed:!0}}var rc4,IF0=15000,ac4,sR$,$q$,YQ1,Qm4;var bA=D(()=>{V8();i$();MF0();Z$();rc4=new URL(MD$).origin,ac4=aX.object({token:aX.string().min(1)}),sR$=aX.object({binding:aX.object({resource_id:aX.string(),evidence:aX.string()}).optional(),reason:aX.string().optional(),detail:aX.string().optional()});$q$=class $q$ extends Error{code;constructor($,Z={}){super(ec4($,Z));this.name="ReportsClaimError",this.code=$}};YQ1=class YQ1 extends Error{};Qm4=aX.object({providers:aX.record(aX.string(),aX.object({connected:aX.boolean(),via:aX.enum(["oauth","sa"]).nullable(),resource:aX.string().nullable()}))})});import{z as w3}from"zod";var Xm4,Ym4,JQ1;var Jq$=D(()=>{Z00();q0();bA();Xm4=w3.object({siteUrl:w3.string().min(1).describe("Website URL of the store being bound."),provider:w3.enum(["ga4","gsc"]).describe("Which Google source to bind: ga4 (Analytics) or gsc (Search Console)."),resourceId:w3.string().min(1).describe("The resource id the client typed: GA4 numeric property id, or GSC site (sc-domain:example.com or https://example.com/).")}),Ym4=w3.discriminatedUnion("ok",[w3.object({ok:w3.literal(!0),resourceId:w3.string(),evidence:w3.string()}),w3.object({ok:w3.literal(!1),reason:w3.string(),detail:w3.string()})]),JQ1=h({name:"REPORTS_BIND",description:"Bind a GA4 property or GSC site to the org's store via the shared service account (consent-free lane). The client grants deco-reader@\u2026 access to the resource and provides its id; Reports verifies the resource belongs to this domain before persisting. Returns ok:false with an actionable pt-BR detail when verification fails or the resource is already bound elsewhere.",annotations:{title:"Bind Reports Data Source",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},inputSchema:Xm4,outputSchema:Ym4,handler:async($,Z)=>{t(Z);let Q=n(Z);await Z.access.check("REPORTS_BIND","COMMERCE_DISCOVERY_BIND");let X=ww($.siteUrl);if(!X.ok)throw Error(X.error);return Qq$({siteUrl:X.value,orgId:Q.id,provider:$.provider,resourceId:$.resourceId.trim()})}})});import{z as vF}from"zod";var Jm4,Gm4,GQ1;var Gq$=D(()=>{Z00();q0();bA();Jm4=vF.object({siteUrl:vF.string().min(1).describe("Website URL of the store to inspect.")}),Gm4=vF.object({providers:vF.record(vF.string(),vF.object({connected:vF.boolean(),via:vF.enum(["oauth","sa"]).nullable(),resource:vF.string().nullable()})),claimed:vF.boolean().describe("False when the site isn't claimed/upgraded for this org \u2014 providers is then empty because the status is unreadable, NOT because nothing is connected. The UI must warn instead of rendering existing bindings as disconnected.")}),GQ1=h({name:"REPORTS_CONNECTION_STATUS",description:"Read per-provider connection status (ga4/gsc/vtex) for the org's store \u2014 { connected, via: oauth|sa, resource }. The single source of truth for whether a data source is connected, unifying the OAuth (Studio vault) and shared-SA binding lanes. Read-only.",annotations:{title:"Reports Connection Status",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},inputSchema:Jm4,outputSchema:Gm4,handler:async($,Z)=>{t(Z);let Q=n(Z);await Z.access.check("REPORTS_CONNECTION_STATUS","COMMERCE_DISCOVERY_CONNECTION_STATUS");let X=ww($.siteUrl);if(!X.ok)throw Error(X.error);return Yq$({siteUrl:X.value,orgId:Q.id})}})});import{z as X00}from"zod";var Km4,Wm4,KQ1;var Kq$=D(()=>{V8();MF0();Z00();q0();bA();Km4=X00.object({siteUrl:X00.string().min(1).describe("Website URL to run the diagnostic for.")}),Wm4=X00.object({triggered:X00.boolean(),reason:X00.string().optional()}),KQ1=h({name:"REPORTS_RUN",description:"Trigger the Reports diagnostic run for the current organization's store. Call once the data sources (GA4/GSC/VTEX) are connected \u2014 this run resolves credentials and produces the enriched report.",annotations:{title:"Run Reports",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},inputSchema:Km4,outputSchema:Wm4,requiresFeature:"diagnostic_enriched",requiresAiBudget:!0,handler:async($,Z)=>{t(Z);let Q=n(Z);await Z.access.check("REPORTS_RUN","COMMERCE_DISCOVERY_RUN");let X=ww($.siteUrl);if(!X.ok)throw Error(X.error);let Y=I8.REPORTS(Q.id),G=(await Z.storage.connections.findById(Y,Q.id))?.configuration_state,K=G&&typeof G==="object"?G:null,W=aR$(K?.repository),H=typeof K?.github_repo==="string"&&K.github_repo.length>0?K.github_repo:void 0;return Xq$({siteUrl:X.value,orgId:Q.id,repository:W??void 0,githubRepo:(W?qF0(W):H)??void 0})}})});import{z as e6}from"zod";var Hm4,Y00,Fm4,Um4,Nm4,Bm4,Wq$,Hq$,WQ1;var Fq$=D(()=>{Hm4=["github","gitlab","bitbucket"],Y00=e6.enum(Hm4),Fm4=["github_app","oauth","token","github_cli"],Um4=e6.enum(Fm4),Nm4=["active","revoked"],Bm4=e6.enum(Nm4),Wq$=e6.object({provider:Y00,host:e6.string().min(1).describe("Provider host, e.g. github.com"),path:e6.string().min(1).describe("Full namespace path, e.g. owner/name or group/sub/project")}),Hq$=e6.object({id:e6.string(),organizationId:e6.string(),type:Y00,host:e6.string(),authKind:Um4,externalAccountId:e6.string().describe("Provider-side account identity: installation id (GitHub App), user/group id (GitLab) or user/workspace uuid (Bitbucket)."),login:e6.string().describe("Display login of the account/namespace"),avatarUrl:e6.string().nullable(),installationId:e6.number().nullable().describe("GitHub App installation id; null for other auth kinds."),status:Bm4,createdAt:e6.string(),updatedAt:e6.string()}),WQ1=e6.object({id:e6.string(),organizationId:e6.string(),accountId:e6.string().nullable().describe("Credential-holding account; null for anonymous public clones."),provider:Y00,host:e6.string(),path:e6.string(),externalId:e6.string().nullable().describe("Provider repository/project id, when known."),defaultBranch:e6.string().nullable(),webUrl:e6.string(),visibility:e6.enum(["public","private","internal"]).nullable(),createdAt:e6.string(),updatedAt:e6.string()})});function Lm4($){let Z=$.toLowerCase();if(Z==="github.com"||Z==="www.github.com")return"github";if(Z==="gitlab.com"||Z==="www.gitlab.com")return"gitlab";if(Z==="bitbucket.org"||Z==="www.bitbucket.org")return"bitbucket";if(/(^|[.-])gitlab([.-]|$)/.test(Z))return"gitlab";return null}function Uq$($){let Z=$.toLowerCase();return Z.startsWith("www.")?Z.slice(4):Z}function xW($,Z){let Q=$.trim();if(!Q)return null;let X,Y,J=/^(?:[\w.-]+@)?([\w.-]+(?::\d+)?):(?!\/\/)(.+)$/.exec(Q);if(J&&!/^[a-z][a-z0-9+.-]*:\/\//i.test(Q))X=J[1],Y=J[2];else if(/^[a-z][a-z0-9+.-]*:\/\//i.test(Q)){let F;try{F=new URL(Q)}catch{return null}if(!/^(https?|ssh|git)(\+ssh)?:$/.test(F.protocol))return null;X=F.host,Y=F.pathname}else if(Z?.provider)X=Z.host??SF0[Z.provider],Y=Q;else return null;X=Uq$(X);let G=Z?.provider??Lm4(X);if(!G)return null;let K=Y.split("/").map((F)=>F.trim()).filter(Boolean),W=K.indexOf("-");if(W>=0)K=K.slice(0,W);if(Dm4.has(G))K=K.slice(0,2);if(K.length<2)return null;let H=K[K.length-1];if(K[K.length-1]=H.replace(/\.git$/i,""),K.some((F)=>F.length===0||F==="."||F===".."))return null;return{provider:G,host:X,path:K.join("/")}}function fW($){return`${$.host.toLowerCase()}/${$.path.toLowerCase()}`}function HQ1($){let Z=$.path.split("/");return Z[Z.length-1]??$.path}function wm4($){let Z=$.path.lastIndexOf("/");return Z<0?"":$.path.slice(0,Z)}function F9($){return{owner:wm4($),name:HQ1($)}}function sY($){return`https://${$.host}/${$.path}`}function FQ1($,Z){let Q=`${$.host}/${$.path}.git`;if(!Z)return`https://${Q}`;return`https://${Om4[$.provider]}:${encodeURIComponent(Z)}@${Q}`}function NB($,Z){let Q=Uq$(Z);switch($){case"github":return Q==="github.com"?"https://api.github.com":`https://${Q}/api/v3`;case"gitlab":return`https://${Q}/api/v4`;case"bitbucket":return"https://api.bitbucket.org/2.0"}}function BB($,Z){return{provider:"github",host:SF0.github,path:`${$}/${Z}`}}var SF0,Om4,Dm4;var UQ1=D(()=>{SF0={github:"github.com",gitlab:"gitlab.com",bitbucket:"bitbucket.org"},Om4={github:"x-access-token",gitlab:"oauth2",bitbucket:"x-token-auth"},Dm4=new Set(["github","bitbucket"])});function tG($,Z){return`${sY($)}/${jm4[$.provider]}/${Z}`}function Pm4($){let Z=$.toLowerCase();return zm4[Z]??Z}function Am4($,Z){let Q=Number($[3]);if(!Number.isSafeInteger(Q)||Q<=0)return null;let X=Pm4($[1]),Y=$[2],J=Z?decodeURIComponent(Y):Y;if(/^\d+$/.test(J))return null;let G=xW(`https://${X}/${J}`);if(!G)return null;return{repo:G,number:Q,url:tG(G,Q)}}function NQ1($){let Z=$.length>Nq$?$.slice(0,Nq$):$;for(let{re:Q,api:X}of Em4){let Y=Q.exec(Z),J=Y?Am4(Y,X===!0):null;if(J)return J}return null}var jm4,Em4,zm4,Nq$=200000;var Bq$=D(()=>{UQ1();jm4={github:"pull",gitlab:"-/merge_requests",bitbucket:"pull-requests"};Em4=[{re:/https?:\/\/([^/\s"']+)\/([^\s"']+?)\/-\/merge_requests\/(\d+)/},{re:/https?:\/\/([^/\s"']+)\/([^/\s"']+\/[^/\s"']+)\/pull\/(\d+)/},{re:/https?:\/\/([^/\s"']+)\/([^/\s"']+\/[^/\s"']+)\/pull-requests\/(\d+)/},{re:/https?:\/\/([^/\s"']+)\/repos\/([^/\s"']+\/[^/\s"']+)\/pulls\/(\d+)/,api:!0},{re:/https?:\/\/([^/\s"']+)\/api\/v4\/projects\/([^/\s"']+)\/merge_requests\/(\d+)/,api:!0},{re:/https?:\/\/([^/\s"']+)\/2\.0\/repositories\/([^/\s"']+\/[^/\s"']+)\/pullrequests\/(\d+)/,api:!0}],zm4={"api.github.com":"github.com","api.bitbucket.org":"bitbucket.org"}});function Oq$($){return BQ1[$]}function OQ1($,Z){return BQ1[$].checkoutCommand.replace("{number}",String(Z))}function Dq$($,Z){let{abbreviation:Q,numberSigil:X}=BQ1[$];return`${Q} ${X}${Z}`}var BQ1;var Lq$=D(()=>{BQ1={github:{name:"GitHub",cli:"gh",changeRequest:"pull request",abbreviation:"PR",createCommand:"gh pr create",checkoutCommand:"gh pr checkout {number}",numberSigil:"#"},gitlab:{name:"GitLab",cli:"glab",changeRequest:"merge request",abbreviation:"MR",createCommand:"glab mr create",checkoutCommand:"glab mr checkout {number}",numberSigil:"!"},bitbucket:{name:"Bitbucket",cli:null,changeRequest:"pull request",abbreviation:"PR",createCommand:`curl -fsS -X POST -H "Authorization: Bearer $BITBUCKET_TOKEN" -H "Content-Type: application/json" https://api.bitbucket.org/2.0/repositories/<workspace>/<repo>/pullrequests -d '{"title":"<title>","source":{"branch":{"name":"<branch>"}},"destination":{"branch":{"name":"<base>"}}}'`,checkoutCommand:"git fetch origin <source branch> && git checkout <source branch>",numberSigil:"#"}}});var W6=D(()=>{Fq$();UQ1();Bq$();Lq$()});async function DQ1($,Z,Q){let X=new AbortController,Y,J=new Promise((K,W)=>{Y=setTimeout(()=>{X.abort(),W(new wq$($.id,Q))},Q)}),G=(async()=>{let K=await KQ($,Z,!0);try{return(await K.listTools(void 0,{timeout:Q,signal:X.signal})).tools}finally{await K.close().catch(()=>{})}})();G.catch(()=>{});try{return await Promise.race([G,J])}finally{if(Y)clearTimeout(Y)}}var wq$;var jq$=D(()=>{J00();wq$=class wq$ extends Error{constructor($,Z){super(`listTools timed out after ${Z}ms for connection ${$}`);this.name="ListToolsTimeoutError"}}});var LQ1=v((Eq$)=>{Object.defineProperty(Eq$,"__esModule",{value:!0});Eq$.kvPrefix=Eq$.KvWatchInclude=void 0;Eq$.KvWatchInclude={LastValue:"",AllHistory:"history",UpdatesOnly:"updates"};Eq$.kvPrefix="KV_"});var Cq$=v((kq$)=>{Object.defineProperty(kq$,"__esModule",{value:!0});kq$.KvStatusImpl=kq$.Bucket=kq$.Kvm=kq$.kvOperationHdr=void 0;kq$.Base64KeyCodec=Rm4;kq$.NoopKvCodecs=wQ1;kq$.defaultBucketOpts=Aq$;kq$.validateKey=Tq$;kq$.validateSearchKey=Rq$;kq$.hasWildcards=qq$;kq$.validateBucket=CF0;var N9=tJ(),I5=gJ0(),U9=LQ1();function Rm4(){let $=(Z,Q)=>{let X=[];for(let Y of Z.split("."))switch(Y){case">":case"*":X.push(Y);break;default:X.push(Q(Y));break}return X.join(".")};return{encode(Z){return $(Z,btoa)},decode(Z){return $(Z,atob)}}}function wQ1(){return{key:{encode($){return $},decode($){return $}},value:{encode($){return typeof $==="string"?new TextEncoder().encode($):$},decode($){return $}}}}function Aq$(){return{replicas:1,history:1,timeout:2000,max_bytes:-1,maxValueSize:-1,codec:wQ1(),storage:I5.StorageType.File}}kq$.kvOperationHdr="KV-Operation";var Pq$="$KV",qm4=/^[-/=.\w]+$/,Mm4=/^[-/=.>*\w]+$/,Im4=/^[-\w]+$/;function Tq$($){if($.startsWith(".")||$.endsWith(".")||!qm4.test($))throw Error(`invalid key: ${$}`)}function Rq$($){if($.startsWith(".")||$.endsWith(".")||$.includes("..")||!Mm4.test($))throw Error(`invalid key: ${$}`)}function qq$($){if($.startsWith(".")||$.endsWith("."))throw Error(`invalid key: ${$}`);let Z=$.split("."),Q=!1;for(let X=0;X<Z.length;X++)switch(Z[X]){case"*":Q=!0;break;case">":if(X!==Z.length-1)throw Error(`invalid key: ${$}`);Q=!0;break;default:}return Q}function CF0($){if(!Im4.test($))throw Error(`invalid bucket name: ${$}`)}class Mq${js;constructor($){this.js=(0,I5.toJetStreamClient)($)}create($,Z={}){return this.#$($,Z)}open($,Z={}){return Z.bindOnly=!0,this.#$($,Z)}#$($,Z={}){let{ok:Q,min:X}=this.js.nc.features.get(N9.Feature.JS_KV);if(!Q)return Promise.reject(Error(`kv is only supported on servers ${X} or better`));if(Z.bindOnly)return $m.bind(this.js,$,Z);return $m.create(this.js,$,Z)}list(){let $=(Q)=>{let Y=Q.streams.filter((G)=>{return G.config.name.startsWith(U9.kvPrefix)});Y.forEach((G)=>{G.config.sealed=G.config.sealed||!1,G.config.deny_delete=G.config.deny_delete||!1,G.config.deny_purge=G.config.deny_purge||!1,G.config.allow_rollup_hdrs=G.config.allow_rollup_hdrs||!1});let J="";if(Y.length)J=this.js.nc.info?.cluster??"";return Y.map((G)=>{return new _F0(G,J)})},Z=`${this.js.prefix}.STREAM.LIST`;return new I5.ListerImpl(Z,$,this.js)}}kq$.Kvm=Mq$;class $m{js;jsm;stream;bucket;direct;codec;prefix;editPrefix;useJsPrefix;_prefixLen;constructor($,Z,Q){CF0($),this.js=Z,this.jsm=Q,this.bucket=$,this.prefix=Pq$,this.editPrefix="",this.useJsPrefix=!1,this._prefixLen=0}static async create($,Z,Q={}){CF0(Z);let X=await $.jetstreamManager(),Y=new $m(Z,$,X);return await Y.init(Q),Y}static async bind($,Z,Q={}){let X=$.getOptions()?.checkAPI||Q.bindOnly===!1,Y=await $.jetstreamManager(X),J={config:{allow_direct:Q.allow_direct}};CF0(Z);let G=new $m(Z,$,Y);return J.config.name=Q.streamName??G.bucketName(),Object.assign(G,J),G.stream=J.config.name,G.codec=Q.codec||wQ1(),G.direct=J.config.allow_direct??!1,G.initializePrefixes(J),G}async init($={}){let Z=Object.assign(Aq$(),$);this.codec=Z.codec;let Q={};if(this.stream=Q.name=$.streamName??this.bucketName(),Q.retention=I5.RetentionPolicy.Limits,Q.max_msgs_per_subject=Z.history,Z.max_bytes)Q.max_bytes=Z.max_bytes;if(Q.max_msg_size=Z.maxValueSize,Q.storage=Z.storage,$.placement)Q.placement=$.placement;if($.republish)Q.republish=$.republish;if($.description)Q.description=$.description;if($.markerTTL)Q.allow_msg_ttl=!0,Q.subject_delete_marker_ttl=(0,N9.nanos)(Z.markerTTL);if($.mirror){let H=Object.assign({},$.mirror);if(!H.name.startsWith(U9.kvPrefix))H.name=`${U9.kvPrefix}${H.name}`;Q.mirror=H,Q.mirror_direct=!0}else if($.sources){let H=$.sources.map((F)=>{let U=Object.assign({},F),N=U.name.startsWith(U9.kvPrefix)?U.name.substring(U9.kvPrefix.length):U.name;if(!U.name.startsWith(U9.kvPrefix))U.name=`${U9.kvPrefix}${U.name}`;if(!F.external&&N!==this.bucket)U.subject_transforms=[{src:`$KV.${N}.>`,dest:`$KV.${this.bucket}.>`}];return U});Q.sources=H,Q.subjects=[this.subjectForBucket()]}else Q.subjects=[this.subjectForBucket()];if($.metadata)Q.metadata=$.metadata;if(typeof $.compression==="boolean")Q.compression=$.compression?I5.StoreCompression.S2:I5.StoreCompression.None;let X=this.js.nc,Y=X.getServerVersion(),J=Y?(0,N9.compare)(Y,(0,N9.parseSemVer)("2.7.2"))>=0:!1;Q.discard=J?I5.DiscardPolicy.New:I5.DiscardPolicy.Old;let{ok:G,min:K}=X.features.get(N9.Feature.JS_ALLOW_DIRECT);if(!G&&$.allow_direct===!0){let H=Y?`${Y.major}.${Y.minor}.${Y.micro}`:"unknown";return Promise.reject(Error(`allow_direct is not available on server version ${H} - requires ${K}`))}if($.allow_direct=typeof $.allow_direct==="boolean"?$.allow_direct:G,Q.allow_direct=$.allow_direct,this.direct=Q.allow_direct,Q.num_replicas=Z.replicas,Z.ttl)Q.max_age=(0,N9.nanos)(Z.ttl);Q.allow_rollup_hdrs=!0;let W;try{if(W=await this.jsm.streams.info(Q.name),!W.config.allow_direct&&this.direct===!0)this.direct=!1}catch(H){if(H.message==="stream not found")W=await this.jsm.streams.add(Q);else throw H}this.initializePrefixes(W)}initializePrefixes($){this._prefixLen=0,this.prefix=`$KV.${this.bucket}`,this.useJsPrefix=this.js.apiPrefix!=="$JS.API";let{mirror:Z}=$.config;if(Z){let Q=Z.name;if(Q.startsWith(U9.kvPrefix))Q=Q.substring(U9.kvPrefix.length);if(Z.external&&Z.external.api!==""){let X=Z.name.substring(U9.kvPrefix.length);this.useJsPrefix=!1,this.prefix=`$KV.${X}`,this.editPrefix=`${Z.external.api}.$KV.${Q}`}else this.editPrefix=this.prefix}}bucketName(){return this.stream??`${U9.kvPrefix}${this.bucket}`}subjectForBucket(){return`${this.prefix}.${this.bucket}.>`}subjectForKey($,Z=!1){let Q=[];if(Z){if(this.useJsPrefix)Q.push(this.js.apiPrefix);if(this.editPrefix!=="")Q.push(this.editPrefix);else Q.push(this.prefix)}else if(this.prefix)Q.push(this.prefix);return Q.push($),Q.join(".")}fullKeyName($){if(this.prefix!=="")return`${this.prefix}.${$}`;return`${Pq$}.${this.bucket}.${$}`}get prefixLen(){if(this._prefixLen===0)this._prefixLen=this.prefix.length+1;return this._prefixLen}encodeKey($){let Z=[];for(let Q of $.split("."))switch(Q){case">":case"*":Z.push(Q);break;default:Z.push(this.codec.key.encode(Q));break}return Z.join(".")}decodeKey($){let Z=[];for(let Q of $.split("."))switch(Q){case">":case"*":Z.push(Q);break;default:Z.push(this.codec.key.decode(Q));break}return Z.join(".")}validateKey=Tq$;validateSearchKey=Rq$;hasWildcards=qq$;close(){return Promise.resolve()}dataLen($,Z){let Q=Z?Z.get(I5.JsHeaders.MessageSizeHdr)||"":"";if(Q!=="")return parseInt(Q,10);return $.length}smToEntry($){return new Iq$(this.bucket,this.prefixLen,$,this.codec)}jmToWatchEntry($,Z){return new Vq$(this.bucket,this.prefixLen,$,Z,this.codec)}async create($,Z,Q){let X;try{let J={previousSeq:0},G=await this._put($,Z,J,Q);return Promise.resolve(G)}catch(J){if(X=J,J instanceof I5.JetStreamApiError){let G=J;if(G.code!==I5.JetStreamApiCodes.StreamWrongLastSequence&&G.code!==I5.JetStreamApiCodes.StreamWrongLastSequenceUnknown)return Promise.reject(J)}}let Y=0;try{let J=await this.get($);if(J?.operation==="DEL"||J?.operation==="PURGE")return Y=J!==null?J.revision:0,this._put($,Z,{previousSeq:Y},Q);else return Promise.reject(X)}catch(J){return Promise.reject(J)}}update($,Z,Q,X){if(Q<=0)throw Error("version must be greater than 0");return this.put($,Z,{previousSeq:Q,timeout:X})}async _put($,Z,Q={},X){let Y=this.encodeKey($);this.validateKey(Y),Z=this.codec.value.encode(Z);let J={timeout:Q?.timeout};if(Q.previousSeq!==void 0){let G=(0,N9.headers)();J.headers=G,G.set(I5.PubHeaders.ExpectedLastSubjectSequenceHdr,`${Q.previousSeq}`)}if(X)(J.headers||(0,N9.headers)()).set(I5.PubHeaders.MessageTTL,X);try{return(await this.js.publish(this.subjectForKey(Y,!0),Z,J)).seq}catch(G){return Promise.reject(G)}}put($,Z,Q={}){return this._put($,Z,Q)}async get($,Z){let Q=this.encodeKey($);this.validateKey(Q);let X={last_by_subj:this.subjectForKey(Q)};if(Z&&Z.revision>0)X={seq:Z.revision};let Y=null;try{if(this.direct)Y=await this.jsm.direct.getMessage(this.bucketName(),X);else Y=await this.jsm.streams.getMessage(this.bucketName(),X);if(Y===null)return null;let J=this.smToEntry(Y);if(J.rawKey!==Q)return null;return J}catch(J){throw J}}purge($,Z){return this._deleteOrPurge($,"PURGE",Z)}delete($,Z){return this._deleteOrPurge($,"DEL",Z)}async purgeDeletes($=1800000){let Z=[],Q=await this.history({key:">"});await(async()=>{for await(let G of Q)if(G.operation==="DEL"||G.operation==="PURGE")Z.push(G)})().then(),Q.stop();let X=Date.now()-$,Y=Z.map((G)=>{let K=this.subjectForKey(G.key);if(G.created.getTime()>=X)return this.jsm.streams.purge(this.stream,{filter:K,keep:1});else return this.jsm.streams.purge(this.stream,{filter:K,keep:0})}),J=await Promise.all(Y);return J.unshift({success:!0,purged:0}),J.reduce((G,K)=>{return G.purged+=K.purged,G})}async _deleteOrPurge($,Z,Q){if(!this.hasWildcards($))return this._doDeleteOrPurge($,Z,Q);let X=await this.keys($),Y=[];for await(let J of X)if(Y.push(this._doDeleteOrPurge(J,Z)),Y.length===100)await Promise.all(Y),Y.length=0;if(Y.length>0)await Promise.all(Y)}async _doDeleteOrPurge($,Z,Q){let X=this.encodeKey($);this.validateKey(X);let Y=(0,N9.headers)();if(Y.set(kq$.kvOperationHdr,Z),Z==="PURGE"){let J=Q;if(Y.set(I5.JsHeaders.RollupHdr,I5.JsHeaders.RollupValueSubject),typeof J?.ttl==="string"&&J.ttl!=="")Y.set(I5.PubHeaders.MessageTTL,`${J.ttl}`)}if(Q?.previousSeq)Y.set(I5.PubHeaders.ExpectedLastSubjectSequenceHdr,`${Q.previousSeq}`);await this.js.publish(this.subjectForKey(X,!0),N9.Empty,{headers:Y})}_buildCC($,Z,Q={}){let Y=(!Array.isArray($)?[$]:$).map((K)=>{let W=this.encodeKey(K);return this.validateSearchKey(K),this.fullKeyName(W)}),J=I5.DeliverPolicy.LastPerSubject;if(Z===U9.KvWatchInclude.AllHistory)J=I5.DeliverPolicy.All;if(Z===U9.KvWatchInclude.UpdatesOnly)J=I5.DeliverPolicy.New;let G=void 0;if(Y.length===1)G=Y[0],Y=void 0;return Object.assign({deliver_policy:J,ack_policy:I5.AckPolicy.None,filter_subjects:Y,filter_subject:G,flow_control:!0,idle_heartbeat:(0,N9.nanos)(5000)},Q)}remove($){return this.purge($)}async history($={}){let Z=$.key??">",Q={};Q.headers_only=$.headers_only||!1;let X=new N9.QueuedIteratorImpl,Y=()=>{X.stop()},J=this._buildCC(Z,U9.KvWatchInclude.AllHistory,Q),G=await this.js.consumers.getPushConsumer(this.stream,J);if(X._data=G,(await G.info(!0)).num_pending===0)return X.push(Y),X;let W=await G.consume({callback:(H)=>{let F=this.jmToWatchEntry(H,!1);if(X.push(F),X.received++,H.info.pending===0)X.push(Y)}});return W.closed().then(()=>{X.push(Y)}),(async()=>{for await(let H of W.status())switch(H.type){case"heartbeat":X.push(()=>{X.stop()});break}})().then(),X.iterClosed.then(()=>{W.stop()}),X}canSetWatcherName(){let $=this.js.nc,{ok:Z}=$.features.get(N9.Feature.JS_NEW_CONSUMER_CREATE_API);return Z}async watch($={}){let Z=$.key??">",Q=new N9.QueuedIteratorImpl,X={};X.headers_only=$.headers_only||!1;let Y=U9.KvWatchInclude.LastValue;if($.include===U9.KvWatchInclude.AllHistory)Y=U9.KvWatchInclude.AllHistory;else if($.include===U9.KvWatchInclude.UpdatesOnly)Y=U9.KvWatchInclude.UpdatesOnly;let J=$.ignoreDeletes===!0,G=this._buildCC(Z,Y,X);if(G.name=`KV_WATCHER_${N9.nuid.next()}`,$.resumeFromRevision&&$.resumeFromRevision>0)G.deliver_policy=I5.DeliverPolicy.StartSequence,G.opt_start_seq=$.resumeFromRevision;let K=await this.js.consumers.getPushConsumer(this.stream,G),H=(await K.info(!0)).num_pending,F=Y===U9.KvWatchInclude.UpdatesOnly||H===0;Q._data=K;let U=0,N=await K.consume({callback:(B)=>{if(!F)U++,F=U>=H;let O=this.jmToWatchEntry(B,F);if(J&&O.operation==="DEL")return;Q.push(O),Q.received++}});return Q.iterClosed.then(()=>{N.stop()}),N.closed().then(()=>{Q.push(()=>{Q.stop()})}),Q}async keys($=">"){let Z=new N9.QueuedIteratorImpl,Q=this._buildCC($,U9.KvWatchInclude.LastValue,{headers_only:!0}),X=await this.js.consumers.getPushConsumer(this.stream,Q);if((await X.info()).num_pending===0)return Z.stop(),Z;Z._data=X;let J=await X.consume({callback:(G)=>{let K=G.headers?.get(kq$.kvOperationHdr);if(K!=="DEL"&&K!=="PURGE"){let W=this.decodeKey(G.subject.substring(this.prefixLen));Z.push(W)}if(G.info.pending===0)J.stop()}});return(async()=>{for await(let G of J.status())switch(G.type){case"heartbeat":Z.push(()=>{Z.stop()});break}})().then(),J.closed().then(()=>{Z.push(()=>{Z.stop()})}),Z.iterClosed.then(()=>{J.stop()}),Z}purgeBucket($){return this.jsm.streams.purge(this.bucketName(),$)}destroy(){return this.jsm.streams.delete(this.bucketName())}async status(){let Z=this.js.nc.info?.cluster??"",Q=this.bucketName(),X=await this.jsm.streams.info(Q);return new _F0(X,Z)}}kq$.Bucket=$m;class _F0{si;cluster;constructor($,Z=""){this.si=$,this.cluster=Z}get bucket(){return this.si.config.name.startsWith(U9.kvPrefix)?this.si.config.name.substring(U9.kvPrefix.length):this.si.config.name}get values(){return this.si.state.messages}get history(){return this.si.config.max_msgs_per_subject}get ttl(){return(0,N9.millis)(this.si.config.max_age)}get markerTTL(){if(typeof this.si.config.subject_delete_marker_ttl==="number")return(0,N9.millis)(this.si.config.subject_delete_marker_ttl);return 0}get bucket_location(){return this.cluster}get backingStore(){return this.si.config.storage}get storage(){return this.si.config.storage}get replicas(){return this.si.config.num_replicas}get description(){return this.si.config.description??""}get maxBucketSize(){return this.si.config.max_bytes}get maxValueSize(){return this.si.config.max_msg_size}get max_bytes(){return this.si.config.max_bytes}get placement(){return this.si.config.placement||{cluster:"",tags:[]}}get placementCluster(){return this.si.config.placement?.cluster??""}get republish(){return this.si.config.republish??{src:"",dest:""}}get streamInfo(){return this.si}get size(){return this.si.state.bytes}get metadata(){return this.si.config.metadata??{}}get compression(){if(this.si.config.compression)return this.si.config.compression!==I5.StoreCompression.None;return!1}}kq$.KvStatusImpl=_F0;class Iq${bucket;sm;prefixLen;codec;constructor($,Z,Q,X){this.bucket=$,this.prefixLen=Z,this.sm=Q,this.codec=X}get rawKey(){return this.sm.subject.substring(this.prefixLen)}get key(){return this.codec.key.decode(this.rawKey)}get value(){return this.codec.value.decode(this.sm.data)}get delta(){return 0}get created(){return this.sm.time}get revision(){return this.sm.seq}get operation(){if(this.sm.header?.has("Nats-Marker-Reason")){if(this.sm.header?.get("Nats-Marker-Reason")==="MaxAge")return"PURGE"}return this.sm.header?.get(kq$.kvOperationHdr)||"PUT"}get length(){let $=this.sm.header.get(I5.JsHeaders.MessageSizeHdr)||"";if($!=="")return parseInt($,10);return this.sm.data.length}json($){return JSON.parse(N9.TD.decode(this.value),$)}string(){return N9.TD.decode(this.value)}}class Vq${bucket;sm;prefixLen;update;codec;constructor($,Z,Q,X,Y){this.bucket=$,this.prefixLen=Z,this.sm=Q,this.update=X,this.codec=Y}get rawKey(){return this.sm.subject.substring(this.prefixLen)}get key(){return this.codec.key.decode(this.rawKey)}get value(){return this.codec.value.decode(this.sm.data)}get created(){return new Date((0,N9.millis)(this.sm.info.timestampNanos))}get revision(){return this.sm.seq}get operation(){if(this.sm.headers?.has("Nats-Marker-Reason")){if(this.sm.headers?.get("Nats-Marker-Reason")==="MaxAge")return"PURGE"}return this.sm.headers?.get(kq$.kvOperationHdr)||"PUT"}get delta(){return this.sm.info.pending}get length(){let $=this.sm.headers?.get(I5.JsHeaders.MessageSizeHdr)||"";if($!=="")return parseInt($,10);return this.sm.data.length}get isUpdate(){return this.update}json($){return JSON.parse(N9.TD.decode(this.value),$)}string(){return N9.TD.decode(this.value)}}});var jQ1=v((bW)=>{Object.defineProperty(bW,"__esModule",{value:!0});bW.validateKey=bW.validateBucket=bW.NoopKvCodecs=bW.Kvm=bW.defaultBucketOpts=bW.Bucket=bW.Base64KeyCodec=bW.KvWatchInclude=bW.kvPrefix=void 0;var _q$=LQ1();Object.defineProperty(bW,"kvPrefix",{enumerable:!0,get:function(){return _q$.kvPrefix}});Object.defineProperty(bW,"KvWatchInclude",{enumerable:!0,get:function(){return _q$.KvWatchInclude}});var yA=Cq$();Object.defineProperty(bW,"Base64KeyCodec",{enumerable:!0,get:function(){return yA.Base64KeyCodec}});Object.defineProperty(bW,"Bucket",{enumerable:!0,get:function(){return yA.Bucket}});Object.defineProperty(bW,"defaultBucketOpts",{enumerable:!0,get:function(){return yA.defaultBucketOpts}});Object.defineProperty(bW,"Kvm",{enumerable:!0,get:function(){return yA.Kvm}});Object.defineProperty(bW,"NoopKvCodecs",{enumerable:!0,get:function(){return yA.NoopKvCodecs}});Object.defineProperty(bW,"validateBucket",{enumerable:!0,get:function(){return yA.validateBucket}});Object.defineProperty(bW,"validateKey",{enumerable:!0,get:function(){return yA.validateKey}})});var W00=v((jw)=>{Object.defineProperty(jw,"__esModule",{value:!0});jw.NoopKvCodecs=jw.Kvm=jw.defaultBucketOpts=jw.Bucket=jw.Base64KeyCodec=jw.KvWatchInclude=void 0;var gm4=jQ1();Object.defineProperty(jw,"KvWatchInclude",{enumerable:!0,get:function(){return gm4.KvWatchInclude}});var K00=jQ1();Object.defineProperty(jw,"Base64KeyCodec",{enumerable:!0,get:function(){return K00.Base64KeyCodec}});Object.defineProperty(jw,"Bucket",{enumerable:!0,get:function(){return K00.Bucket}});Object.defineProperty(jw,"defaultBucketOpts",{enumerable:!0,get:function(){return K00.defaultBucketOpts}});Object.defineProperty(jw,"Kvm",{enumerable:!0,get:function(){return K00.Kvm}});Object.defineProperty(jw,"NoopKvCodecs",{enumerable:!0,get:function(){return K00.NoopKvCodecs}})});function Ew(){let $=new TextEncoder,Z=new TextDecoder;return{encode:(Q)=>$.encode(JSON.stringify(Q)),decode:(Q)=>JSON.parse(Z.decode(Q))}}class EQ1{options;kv=null;codec=Ew();constructor($){this.options=$}async init(){let $=this.options.getJetStream();if(!$)return;this.kv=await new xq$.Kvm($).create(um4,{storage:vq$.StorageType.Memory})}async get($,Z){if(!this.kv)return null;try{let Q=await this.kv.get(`${$}.${Z}`);if(!Q?.value?.length)return null;if(Q.operation==="DEL"||Q.operation==="PURGE")return null;return this.codec.decode(Q.value)}catch{return null}}async set($,Z,Q){if(!this.kv)return;try{await this.kv.put(`${$}.${Z}`,this.codec.encode(Q))}catch{}}async invalidate($){if(!this.kv)return;await Promise.all(["tools","resources","prompts"].map(async(Q)=>{try{await this.kv.delete(`${Q}.${$}`)}catch{}}))}teardown(){this.kv=null}}function lm4($,Z,Q){if(Q<=0)return!0;if($===void 0)return!0;return Z-$>=Q}function fq$($){let Z=["tools","resources","prompts"];for(let Q of Z){let X=`${Q}:${$}`;xF0.delete(X),F00.delete(X)}}function vF0($){return $ instanceof z1&&$.code===V1.MethodNotFound}function cm4($){return $ instanceof z1&&$.code===-32000&&/connection closed/i.test($.message)}async function Pw($,Z,Q,X,Y,J=0){if(!X)try{return await Q()}catch(H){if(vF0(H))return[];return H00.add(1,{type:$,outcome:"error",stage:"no_cache"}),null}let G=`${$}:${Z}`,K=await X.get($,Z);if(K===null)try{let H=await Q();return X.set($,Z,H).catch(()=>{}),xF0.set(G,Date.now()),H00.add(1,{type:$,outcome:"miss",stage:"miss"}),H}catch(H){if(vF0(H))return X.set($,Z,[]).catch(()=>{}),[];return H00.add(1,{type:$,outcome:"error",stage:"miss"}),null}if(H00.add(1,{type:$,outcome:"hit",stage:"hit"}),lm4(xF0.get(G),Date.now(),J)&&!F00.has(G)){F00.add(G),xF0.set(G,Date.now());let H=Q().then((F)=>X.set($,Z,F)).catch((F)=>{if(vF0(F)||cm4(F)){if(vF0(F))X.set($,Z,[]).catch(()=>{});return}H00.add(1,{type:$,outcome:"error",stage:"revalidation"})}).finally(()=>F00.delete(G));Y?.(H)}return K}function zQ1($){bq$=$}function b9(){return bq$}var vq$,xq$,H00,um4="DECOCMS_MCP_LISTS",F00,xF0,zw=30000,bq$=null;var eY=D(()=>{k9();B6();vq$=k(bN(),1),xq$=k(W00(),1),H00=J$.createCounter("mcp_list_cache.fetches",{description:"MCP list cache fetch outcomes (hit, miss, error)",unit:"{fetches}"});F00=new Set;J$.createObservableGauge("mcp_list_cache.pending_revalidations",{description:"In-flight background MCP list revalidations on this pod",unit:"{revalidations}"}).addCallback(($)=>$.observe(F00.size));xF0=new Map});function fF0($){return(Z)=>{if(Z instanceof z1&&Z.code===V1.MethodNotFound)return $;throw Z}}var yq$=D(()=>{k9()});function bF0($,Z,Q){let X=Aw($,Z,Q,b9()??void 0),Y=dP(X,{name:"studio-mcp-server",version:"1.0.0"},{capabilities:mm4,toolCallTimeoutMs:vl});Y.server.setRequestHandler(tD,async()=>{return await X.listResources().catch(fF0({resources:[]}))}),Y.server.setRequestHandler(oD,async()=>{return await X.listResourceTemplates().catch(fF0({resourceTemplates:[]}))}),Y.server.setRequestHandler(rD,async()=>{return await X.listPrompts().catch(fF0({prompts:[]}))});let J=Y.close.bind(Y);return Y.close=async()=>{await J(),await X.close().catch(()=>{})},Y}var mm4;var gq$=D(()=>{sQ();k9();U00();eY();yq$();mm4={tools:{},resources:{},prompts:{}}});var gA=D(()=>{J00();jq$();gq$()});async function yF0($,Z,Q){await(await KQ(Z,$,!1)).callTool({name:"ON_MCP_CONFIGURATION",arguments:{state:Q.state,scopes:Q.scopes,firstRun:Q.firstRun,...Q.vault?{vault:Q.vault}:{}}})}var PQ1=D(()=>{gA()});import{z as AQ1}from"zod";function pm4($){let{owner:Z,name:Q}=F9({path:$.path});return{owner:Z,name:Q,url:$.webUrl??`https://${$.host}/${$.path}`,repositoryId:$.repositoryId}}function nm4($,Z){if(!Z)return $;return $.filter((Q)=>Q.connection_id!==Z)}function tm4($,Z){let{repository:Q,github_repo:X,...Y}=$,J=Z?qF0(Z):null;return{...Y,...Z?{repository:RF0(Z)}:{},...J?{github_repo:J}:{}}}async function om4($,Z,Q){let X=I8.REPORTS(Z),Y=await $.storage.connections.findById(X,Z);if(!Y)throw Error("Reports is not set up for this organization yet");let J=tm4(Y.configuration_state??{},Q);await $.storage.connections.update(X,{configuration_state:J});try{await yF0($,{...Y,configuration_state:J},{state:J,scopes:Y.configuration_scopes??[],firstRun:!1})}catch(G){console.error("[reports] ON_MCP_CONFIGURATION after repository change failed",G)}}async function rm4($,Z,Q,X){let Y=Cl(Z),J=await $.storage.virtualMcps.findById(Y,Z);if(!J)return;let G=J.metadata??{},K=G.githubRepo,{githubRepo:W,...H}=G;await $.storage.virtualMcps.update(Y,Q,{metadata:{...H,...X?{githubRepo:pm4(X)}:{}},connections:nm4(J.connections??[],K?.connectionId??null)})}var dm4,im4,TQ1;var hq$=D(()=>{V8();W6();MF0();q0();PQ1();dm4=AQ1.object({repositoryId:AQ1.string().min(1).nullable().describe("Studio repository id to diagnose, or null to unlink the current one.")}),im4=AQ1.object({repository:rR$.nullable()});TQ1=h({name:"REPORTS_SET_REPOSITORY",description:"Point the organization's Reports diagnostic at one of its linked repositories, or unlink the current one. Works for GitHub, GitLab and Bitbucket.",annotations:{title:"Set Reports Repository",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:dm4,outputSchema:im4,handler:async($,Z)=>{t(Z);let Q=n(Z);await Z.access.check();let X=d0(Z);if(!X)throw Error("User ID required to set the diagnostic's repository");let Y=null;if($.repositoryId){let J=await Z.storage.repositories.get($.repositoryId,Q.id);if(!J)throw Error(`Repository ${$.repositoryId} is not linked to this organization`);Y={repositoryId:J.id,provider:J.provider,host:J.host,path:J.path,defaultBranch:J.defaultBranch,webUrl:J.webUrl}}return await om4(Z,Q.id,Y),await rm4(Z,Q.id,X,Y),{repository:Y}}})});function Tw($,Z){let Q=`/${encodeURIComponent($)}/settings`;return Z?`${Q}/${Z}`:Q}function gF0($,Z){let Q=`/${encodeURIComponent($)}/agents`,X=Z.panel?`${Q}/${Z.panel}`:Q,Y=new URLSearchParams({virtualmcpid:Z.projectId,...Z.search??{}});return`${X}?${Y.toString()}`}var Rw=D(()=>{O30()});import{z as xF}from"zod";async function $d4($,Z,Q,X){let Y=await $.storage.connections.findById(Z,Q);if(Y)return Y;throw X}async function Zd4($,Z,Q,X){let Y=await $.storage.virtualMcps.findById(Z,Q);if(Y)return Y;throw X}var RQ1,am4=3600000,sm4,em4,qQ1;var uq$=D(()=>{V8();Z00();q0();sH();Rw();bA();RQ1=LW0,sm4=xF.object({siteUrl:xF.string().min(1).describe("Website URL to configure.")}),em4=xF.object({connection:gQ,virtualMcp:hQ,reportApp:xF.object({connectionId:xF.string(),virtualMcpId:xF.string(),toolName:xF.literal(RQ1)}),created:xF.object({connection:xF.boolean(),virtualMcp:xF.boolean()})});qQ1=h({name:"REPORTS_SETUP",description:"Create or return the Reports connection and virtual MCP for the current organization.",annotations:{title:"Set Up Reports",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:sm4,outputSchema:em4,handler:async($,Z)=>{t(Z);let Q=n(Z);await Z.access.check("COLLECTION_CONNECTIONS_CREATE");let X=d0(Z);if(!X)throw Error("User ID required to set up Reports");let Y=ww($.siteUrl);if(!Y.ok)throw Error(Y.error);let J=I8.REPORTS(Q.id),G=Cl(Q.id),K={email:Z.auth.user?.email,reportUrl:`${Z.baseUrl}${gF0(Q.slug??Q.id,{projectId:G,panel:"app",search:{connection:J,tool:RQ1}})}`},W=await Z.storage.connections.findById(J,Q.id),H={connection:!1,virtualMcp:!1},F=await Zq$({siteUrl:Y.value,orgId:Q.id,orgName:Q.name,...K}),U=eR$();if(W)console.log("[reports] syncing connection to claimed site",{orgId:Q.id,siteUrl:Y.value,connectionId:J}),W=await Z.storage.connections.update(W.id,{connection_url:U,connection_token:F.authorizationToken,metadata:{...W.metadata??{},siteUrl:Y.value}});else{console.log("[reports] creating connection",{orgId:Q.id,siteUrl:Y.value,connectionId:J});try{let L=hD$(Q.id,F.authorizationToken,U);W=await Z.storage.connections.create({...L,metadata:{...L.metadata??{},siteUrl:Y.value},organization_id:Q.id,created_by:X}),H.connection=!0}catch(L){W=await $d4(Z,J,Q.id,L)}}let N=await Z.storage.virtualMcps.findById(G,Q.id);if(!N){console.log("[reports] creating virtual MCP",{orgId:Q.id,siteUrl:Y.value,connectionId:W.id,virtualMcpId:G});try{N=await Z.storage.virtualMcps.create(Q.id,X,uD$(Q.id,W.id),{id:G}),H.virtualMcp=!0}catch(L){N=await Zd4(Z,G,Q.id,L)}}if(!N.pinned)N=await Z.storage.virtualMcps.update(N.id,X,{pinned:!0});let B=await Z.db.selectFrom("organization").select(["createdAt"]).where("id","=",Q.id).executeTakeFirst();if((B?Date.now()-new Date(B.createdAt).getTime():Number.POSITIVE_INFINITY)<am4){let w=(await Z.storage.organizationSettings.get(Q.id))?.flags,j={};if(w?.reports_only==null)j.reports_only=!0;if(Object.keys(j).length>0)await Z.storage.organizationSettings.upsert(Q.id,{flags:j})}return{connection:W,virtualMcp:N,reportApp:{connectionId:W.id,virtualMcpId:N.id,toolName:RQ1},created:H}}})});var lq$=D(()=>{Jq$();Gq$();Kq$();hq$();uq$()});function N00($,Z,Q){if(Z.some((X)=>X!=="*"&&X.startsWith("SELF::"))&&$.SELF===void 0)$.SELF={value:`${Q}_self`}}function B00($,Z){let Q=new Map;for(let X of Z){if(X==="*")continue;let[Y,J]=uH0(X);if(!Xd4.has(J))continue;let G=ve(Y,$);if(typeof G!=="object"||G===null||!("value"in G))continue;let K=G.value;if(typeof K!=="string")continue;Q.set(`${K}:${J}`,{targetConnectionId:K,scope:J})}return[...Q.values()]}async function O00($,Z,Q,X){for(let G of Z){if(G==="*")continue;let[K]=uH0(G),W=ve(K,$);if(W===void 0||W===null)throw Error(`Scope references key "${K}" but it's not present in state`)}let Y=RP$($,Z),J=`${Q}_self`;for(let G of Y){if(G===J)continue;let K=await X.storage.connections.findById(G);if(!K||K.organization_id!==Q)throw Error(`Referenced connection not found: ${G}`);try{await X.access.check(G)}catch(W){throw Error(`Access denied to referenced connection: ${G}. ${W.message}`)}}}var Xd4;var MQ1=D(()=>{uZ1();MW0();Xd4=new Set([RW0,qW0])});import{z as cq$}from"zod";var Yd4,Jd4,IQ1;var mq$=D(()=>{b4();q0();Z$();eY();gA();MQ1();EF0();sH();Yd4=cq$.object({data:K30.describe("Data for the new connection (id is auto-generated if not provided)")}),Jd4=cq$.object({item:gQ.describe("The created connection entity")}),IQ1=h({name:"COLLECTION_CONNECTIONS_CREATE",description:"Create a new MCP connection. Auto-fetches and caches the server's tool list.",annotations:{title:"Create Connection",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!1},inputSchema:Yd4,outputSchema:Jd4,handler:async($,Z)=>{t(Z);let Q=n(Z);await Z.access.check();let X=d0(Z);if(!X)throw Error("User ID required to create connection");let Y={...$.data,organization_id:Q.id,created_by:X};if(Y.id){if((await Z.storage.connections.findById(Y.id))?.organization_id===Q.id)throw Error("Connection already exists in organization");if(await Z.storage.connections.findBySanitizedId(Y.id))throw Error("Connection id conflicts with an existing connection's isolated database schema")}if(Y.connection_type==="VIRTUAL"){let U=Bu(Y.connection_url);if(!U)throw Error("VIRTUAL connection requires connection_url in format: virtual://$virtual_mcp_id");let N=await Z.storage.virtualMcps.findById(U);if(!N)throw Error(`Virtual MCP not found: ${U}`);if(N.organization_id!==Q.id)throw Error("Virtual MCP does not belong to the current organization");Y.connection_url=Ou(U)}if(Y.connection_type==="STDIO"&&!z0().localMode)throw Error("STDIO connections are only available in local mode (--local-mode).");let J=await oc({id:`pending-${Date.now()}`,title:Y.title,connection_type:Y.connection_type,connection_url:Y.connection_url,connection_token:Y.connection_token,connection_headers:Y.connection_headers}).catch(()=>null),G=J?.tools?.length?J.tools:null,K=J?.scopes?.length?J.scopes:Y.configuration_scopes??null,W=Y.configuration_state??null;if(W&&K?.length)N00(W,K,Q.id),await O00(W,K,Q.id,Z);let H=await Z.storage.connections.createNew({...Y,tools:null,configuration_state:W,configuration_scopes:K}),F=W&&K?.length?B00(W,K):[];if(F.length>0){let U;try{await Z.storage.connectionCredentialVault.replaceGrantsForSubject({organizationId:Q.id,subjectConnectionId:H.id,createdBy:X,grants:F});let{plaintextToken:N,record:B}=await Z.storage.connectionCredentialVault.createOrRotateWorkloadToken({organizationId:Q.id,subjectConnectionId:H.id});U=B.id,await(await KQ(H,Z,!1)).callTool({name:"ON_MCP_CONFIGURATION",arguments:{state:W,scopes:K,firstRun:!0,vault:{baseUrl:Z.baseUrl,org:Q.slug??Q.id,subjectConnectionId:H.id,token:N}}})}catch(N){if(U)await Z.storage.connectionCredentialVault.revokeWorkloadToken({organizationId:Q.id,subjectConnectionId:H.id,tokenId:U});throw await Z.storage.connections.delete(H.id),N}}if(G)b9()?.set("tools",H.id,G).catch(()=>{});return k1.capture({distinctId:X,event:"connection_created",groups:{organization:Q.id},properties:{connection_id:H.id,connection_type:H.connection_type,app_name:H.app_name??null,organization_id:Q.id,tools_count:G?.length??0}}),{item:H}}})});import{z as oG}from"zod/v4";import{z as dq$}from"zod/v4";import{z as hF0}from"zod/v4";import{z as fF}from"zod/v4";import{z as Hd4}from"zod/v4";import{z as hA}from"zod/v4";import{z as bF}from"zod/v4";import{z as R7}from"zod/v4";import{z as iq$}from"zod/v4";import{z as cF0}from"zod/v4";import{z as _d4}from"zod/v4";import{z as pq$}from"zod/v4";import{z as uF0}from"zod/v4";import{z as ld4}from"zod/v4";function D00($,Z){if($===Z)return!0;if($==null||Z==null)return $===Z;if(typeof $!==typeof Z)return!1;if(Array.isArray($)&&Array.isArray(Z)){if($.length!==Z.length)return!1;return $.every((Q,X)=>D00(Q,Z[X]))}if(typeof $==="object"&&typeof Z==="object"){let Q=Object.keys($),X=Object.keys(Z);if(Q.length!==X.length)return!1;return Q.every((Y)=>X.includes(Y)&&D00($[Y],Z[Y]))}return!1}function kd4(){return($)=>{if(!Array.isArray($))return!0;let Z=[];return $.every((Q)=>{if(Z.some((Y)=>D00(Q,Y)))return!1;return Z.push(Q),!0})}}function lF0($,Z){return $.safeParse(Z).success}function WQ($){if(typeof $==="boolean")return $?oG.any():oG.never();let Z={};for(let Y of id4)Y.apply(Z,$);let Q=[];if(Z.string!==!1)Q.push(Z.string||oG.string());if(Z.number!==!1)Q.push(Z.number||oG.number());if(Z.boolean!==!1)Q.push(Z.boolean||oG.boolean());if(Z.null!==!1)Q.push(Z.null||oG.null());if(Z.array!==!1)Q.push(Z.array||oG.array(oG.any()));if(Z.tuple!==!1&&Z.tuple!==void 0)Q.push(Z.tuple);if(Z.object!==!1)if(Z.object)Q.push(Z.object);else{let Y=oG.custom((J)=>{return typeof J==="object"&&J!==null&&!Array.isArray(J)},"Must be an object, not an array");Q.push(Y)}if(Z.file!==!1&&Z.file!==void 0)Q.push(Z.file);let X;if(Q.length===0)X=oG.never();else if(Q.length===1)X=Q[0];else if(!Object.keys($).some((J)=>J!=="$schema"&&J!=="title"&&J!=="description"))X=oG.any();else X=oG.union(Q);for(let Y of pd4)X=Y.apply(X,$);return X}var Gd4=class{apply($,Z){if(!Z.type)return;let Q=Array.isArray(Z.type)?Z.type:[Z.type],X=new Set(Q);if(!X.has("string"))$.string=!1;if(!X.has("number")&&!X.has("integer"))$.number=!1;if(!X.has("boolean"))$.boolean=!1;if(!X.has("null"))$.null=!1;if(!X.has("array"))$.array=!1;if(!X.has("object"))$.object=!1;if(X.has("integer")&&$.number!==!1){let Y=$.number||dq$.number();if(Y instanceof dq$.ZodNumber)$.number=Y.int()}}},Kd4=class{apply($,Z){if(Z.const===void 0)return;let Q=Z.const;if($.string=!1,$.number=!1,$.boolean=!1,$.null=!1,$.array=!1,$.object=!1,typeof Q==="string")$.string=hF0.literal(Q);else if(typeof Q==="number")$.number=hF0.literal(Q);else if(typeof Q==="boolean")$.boolean=hF0.literal(Q);else if(Q===null)$.null=hF0.null();else if(Array.isArray(Q))$.array=void 0;else if(typeof Q==="object")$.object=void 0}},Wd4=class{apply($,Z){if(!Z.enum)return;if(Z.enum.length===0){if(!Z.type)$.string=!1,$.number=!1,$.boolean=!1,$.null=!1,$.array=!1,$.object=!1;return}let Q={string:Z.enum.filter((X)=>typeof X==="string"),number:Z.enum.filter((X)=>typeof X==="number"),boolean:Z.enum.filter((X)=>typeof X==="boolean"),null:Z.enum.filter((X)=>X===null),array:Z.enum.filter((X)=>Array.isArray(X)),object:Z.enum.filter((X)=>typeof X==="object"&&X!==null&&!Array.isArray(X))};$.string=this.createTypeSchema(Q.string,"string"),$.number=this.createTypeSchema(Q.number,"number"),$.boolean=this.createTypeSchema(Q.boolean,"boolean"),$.null=Q.null.length>0?fF.null():!1,$.array=Q.array.length>0?void 0:!1,$.object=Q.object.length>0?void 0:!1}createTypeSchema($,Z){if($.length===0)return!1;if($.length===1)return fF.literal($[0]);if(Z==="string")return fF.enum($);if(Z==="number"){let[Q,X,...Y]=$;return fF.union([fF.literal(Q),fF.literal(X),...Y.map((J)=>fF.literal(J))])}if(Z==="boolean")return fF.union([fF.literal(!0),fF.literal(!1)]);return!1}},Fd4=class{apply($,Z){let Q=Z;if(Q.type==="string"&&Q.format==="binary"&&Q.contentEncoding==="binary"){let X=Hd4.file();if(Q.minLength!==void 0)X=X.min(Q.minLength);if(Q.maxLength!==void 0)X=X.max(Q.maxLength);if(Q.contentMediaType!==void 0)X=X.mime(Q.contentMediaType);$.file=X,$.string=!1}}},Ud4=class{apply($,Z){let Q=Z;if(Z.type===void 0&&(Q.minLength!==void 0||Q.maxLength!==void 0||Q.pattern!==void 0)){if($.string===void 0)$.string=hA.string()}}},Nd4=class{apply($,Z){let Q=Z;if(Q.minLength===void 0)return;if($.string!==!1){let X=$.string||hA.string();if(X instanceof hA.ZodString)$.string=X.refine((Y)=>{return Array.from(Y).length>=Q.minLength},{message:`String must be at least ${Q.minLength} characters long`})}}},Bd4=class{apply($,Z){let Q=Z;if(Q.maxLength===void 0)return;if($.string!==!1){let X=$.string||hA.string();if(X instanceof hA.ZodString)$.string=X.refine((Y)=>{return Array.from(Y).length<=Q.maxLength},{message:`String must be at most ${Q.maxLength} characters long`})}}},Od4=class{apply($,Z){let Q=Z;if(!Q.pattern)return;if($.string!==!1){let X=$.string||hA.string();if(X instanceof hA.ZodString){let Y=new RegExp(Q.pattern);$.string=X.regex(Y)}}}},Dd4=class{apply($,Z){let Q=Z;if(Q.minimum===void 0)return;if($.number!==!1){let X=$.number||bF.number();if(X instanceof bF.ZodNumber)$.number=X.min(Q.minimum)}}},Ld4=class{apply($,Z){let Q=Z;if(Q.maximum===void 0)return;if($.number!==!1){let X=$.number||bF.number();if(X instanceof bF.ZodNumber)$.number=X.max(Q.maximum)}}},wd4=class{apply($,Z){let Q=Z;if(Q.exclusiveMinimum===void 0)return;if($.number!==!1){let X=$.number||bF.number();if(X instanceof bF.ZodNumber)if(typeof Q.exclusiveMinimum==="number")$.number=X.gt(Q.exclusiveMinimum);else $.number=!1}}},jd4=class{apply($,Z){let Q=Z;if(Q.exclusiveMaximum===void 0)return;if($.number!==!1){let X=$.number||bF.number();if(X instanceof bF.ZodNumber)if(typeof Q.exclusiveMaximum==="number")$.number=X.lt(Q.exclusiveMaximum);else $.number=!1}}},Ed4=class{apply($,Z){let Q=Z;if(Q.multipleOf===void 0)return;if($.number!==!1){let X=$.number||bF.number();if(X instanceof bF.ZodNumber)$.number=X.refine((Y)=>{if(Q.multipleOf===0)return!1;let J=Y/Q.multipleOf,G=Math.round(J),K=Math.min(Math.abs(Y)*Number.EPSILON*10,Math.abs(Q.multipleOf)*Number.EPSILON*10);return Math.abs(J-G)<=K/Math.abs(Q.multipleOf)},{message:`Must be a multiple of ${Q.multipleOf}`})}}},zd4=class{apply($,Z){let Q=Z;if(Z.type===void 0&&(Q.minItems!==void 0||Q.maxItems!==void 0||Q.items!==void 0||Q.prefixItems!==void 0)){if($.array===void 0)$.array=R7.array(R7.any())}}},Pd4=class{apply($,Z){let Q=Z;if(Q.minItems===void 0)return;if($.array!==!1)$.array=($.array||R7.array(R7.any())).min(Q.minItems)}},Ad4=class{apply($,Z){let Q=Z;if(Q.maxItems===void 0)return;if($.array!==!1)$.array=($.array||R7.array(R7.any())).max(Q.maxItems)}},Td4=class{apply($,Z){let Q=Z;if($.array===!1)return;if(Array.isArray(Q.items))$.array=$.array||R7.array(R7.any());else if(Q.items&&typeof Q.items!=="boolean"&&!Q.prefixItems){let X=WQ(Q.items),Y=R7.array(X);if($.array&&$.array instanceof R7.ZodArray){let J=$.array._def;if(J.checks)J.checks.forEach((G)=>{if(G._zod&&G._zod.def){let K=G._zod.def;if(K.check==="min_length"&&K.minimum!==void 0)Y=Y.min(K.minimum);else if(K.check==="max_length"&&K.maximum!==void 0)Y=Y.max(K.maximum)}})}$.array=Y}else if(typeof Q.items==="boolean"&&Q.items===!1)if(!Q.prefixItems)$.array=R7.array(R7.any()).max(0);else $.array=$.array||R7.array(R7.any());else if(typeof Q.items==="boolean"&&Q.items===!0)$.array=$.array||R7.array(R7.any());else if(Q.prefixItems)$.array=$.array||R7.array(R7.any())}},Rd4=class{apply($,Z){if(Z.type!=="array")return;let Q=Z;if(!Array.isArray(Q.items))return;if($.array===!1)return;let X=Q.items.map((J)=>WQ(J)),Y;if(X.length===0)Y=iq$.tuple([]);else Y=iq$.tuple(X);if(Q.minItems!==void 0&&Q.minItems>X.length)Y=!1;if(Q.maxItems!==void 0&&Q.maxItems<X.length)Y=!1;$.tuple=Y,$.array=!1}},qd4=class{apply($,Z){let Q=Z;if($.object===!1)return;if(Q.properties||Q.required||Q.additionalProperties!==void 0)$.object=$.object||cF0.object({}).passthrough()}},Md4=class{apply($,Z){let Q=Z;if(Z.type===void 0&&(Q.maxProperties!==void 0||Q.minProperties!==void 0)){if($.object===void 0)$.object=cF0.object({}).passthrough()}}},Id4=class{apply($,Z){let Q=Z;if(Q.maxProperties===void 0)return;if($.object!==!1){let X=$.object||cF0.object({}).passthrough();$.object=X.refine((Y)=>Object.keys(Y).length<=Q.maxProperties,{message:`Object must have at most ${Q.maxProperties} properties`})}}},Vd4=class{apply($,Z){let Q=Z;if(Q.minProperties===void 0)return;if($.object!==!1){let X=$.object||cF0.object({}).passthrough();$.object=X.refine((Y)=>Object.keys(Y).length>=Q.minProperties,{message:`Object must have at least ${Q.minProperties} properties`})}}},Sd4=class{apply($,Z){if(!Z.not)return $;let Q=WQ(Z.not);return $.refine((X)=>!lF0(Q,X),{message:"Value must not match the 'not' schema"})}},Cd4=class{apply($,Z){if(Z.uniqueItems!==!0)return $;return $.refine(kd4(),{message:"Array items must be unique"})}},vd4=class{apply($,Z){if(!Z.allOf||Z.allOf.length===0)return $;return Z.allOf.map((X)=>WQ(X)).reduce((X,Y)=>_d4.intersection(X,Y),$)}},xd4=class{apply($,Z){if(!Z.anyOf||Z.anyOf.length===0)return $;let Q=Z.anyOf.length===1?WQ(Z.anyOf[0]):pq$.union([WQ(Z.anyOf[0]),WQ(Z.anyOf[1]),...Z.anyOf.slice(2).map((X)=>WQ(X))]);return pq$.intersection($,Q)}},fd4=class{apply($,Z){if(!Z.oneOf||Z.oneOf.length===0)return $;let Q=Z.oneOf.map((X)=>WQ(X));return $.refine((X)=>{let Y=0;for(let J of Q)if(J.safeParse(X).success){if(Y++,Y>1)return!1}return Y===1},{message:"Value must match exactly one of the oneOf schemas"})}},bd4=class{apply($,Z){let Q=Z;if(Q.prefixItems&&Array.isArray(Q.prefixItems)){let Y=Q.prefixItems.map((J)=>WQ(J));return $.refine((J)=>{if(!Array.isArray(J))return!0;for(let G=0;G<Math.min(J.length,Y.length);G++)if(!lF0(Y[G],J[G]))return!1;if(J.length>Y.length){if(typeof Q.items==="boolean"&&Q.items===!1)return!1;else if(Q.items&&typeof Q.items==="object"&&!Array.isArray(Q.items)){let G=WQ(Q.items);for(let K=Y.length;K<J.length;K++)if(!lF0(G,J[K]))return!1}}return!0},{message:"Array does not match prefixItems schema"})}return $}},yd4=class{apply($,Z){let Q=Z;if(!Q.properties&&!Q.required&&Q.additionalProperties!==!1)return $;if($ instanceof uF0.ZodObject||$ instanceof uF0.ZodRecord){let X={};if(Q.properties){for(let[Y,J]of Object.entries(Q.properties))if(J!==void 0)X[Y]=WQ(J)}if(Q.required&&Array.isArray(Q.required)){let Y=new Set(Q.required);for(let J of Object.keys(X))if(!Y.has(J))X[J]=X[J].optional()}else for(let Y of Object.keys(X))X[Y]=X[Y].optional();if(Q.additionalProperties===!1)return uF0.object(X);else return uF0.object(X).passthrough()}return $.refine((X)=>{if(typeof X!=="object"||X===null||Array.isArray(X))return!0;if(Q.properties){for(let[Y,J]of Object.entries(Q.properties))if(J!==void 0){if(Object.getOwnPropertyDescriptor(X,Y)!==void 0){if(!WQ(J).safeParse(X[Y]).success)return!1}}}if(Q.required&&Array.isArray(Q.required)){for(let Y of Q.required)if(Object.getOwnPropertyDescriptor(X,Y)===void 0)return!1}if(Q.additionalProperties===!1&&Q.properties){let Y=new Set(Object.keys(Q.properties));for(let J in X)if(!Y.has(J))return!1}return!0},{message:"Object constraints validation failed"})}},gd4=class{apply($,Z){if(!Z.enum||Z.enum.length===0)return $;let Q=Z.enum.filter((X)=>Array.isArray(X)||typeof X==="object"&&X!==null);if(Q.length===0)return $;return $.refine((X)=>{if(typeof X!=="object"||X===null)return!0;return Q.some((Y)=>D00(X,Y))},{message:"Value must match one of the enum values"})}},hd4=class{apply($,Z){if(Z.const===void 0)return $;let Q=Z.const;if(typeof Q!=="object"||Q===null)return $;return $.refine((X)=>D00(X,Q),{message:"Value must equal the const value"})}},ud4=class{apply($,Z){if(Z.description)$=$.describe(Z.description);return $}},cd4=class{apply($,Z){var Q;let X=Z;if(!((Q=X.required)==null?void 0:Q.includes("__proto__"))||Z.type!==void 0)return $;return ld4.any().refine((Y)=>this.validateRequired(Y,X.required),{message:"Missing required properties"})}validateRequired($,Z){if(typeof $!=="object"||$===null||Array.isArray($))return!0;return Z.every((Q)=>Object.prototype.hasOwnProperty.call($,Q))}},md4=class{apply($,Z){var Q;let X=Z;if(X.contains===void 0)return $;let Y=WQ(X.contains),J=(Q=X.minContains)!=null?Q:1,G=X.maxContains;return $.refine((K)=>{if(!Array.isArray(K))return!0;let W=0;for(let H of K)if(lF0(Y,H))W++;if(W<J)return!1;if(G!==void 0&&W>G)return!1;return!0},{message:"Array must contain required items matching the schema"})}},dd4=class{apply($,Z){let{default:Q}=Z;if(Q===void 0)return $;if(!$.safeParse(Q).success)return $;return $.default(Q)}},id4,pd4;var nq$=D(()=>{id4=[new Kd4,new Wd4,new Gd4,new Fd4,new Ud4,new zd4,new Md4,new Nd4,new Bd4,new Od4,new Dd4,new Ld4,new wd4,new jd4,new Ed4,new Rd4,new Pd4,new Ad4,new Td4,new Id4,new Vd4,new qd4],pd4=[new cd4,new gd4,new hd4,new vd4,new xd4,new fd4,new bd4,new yd4,new md4,new Sd4,new Cd4,new dd4,new ud4]});class VQ1{constructor($){this._url=$}start(){if(this._socket)throw Error("WebSocketClientTransport already started! If using Client class, note that connect() calls start() automatically.");return new Promise(($,Z)=>{this._socket=new WebSocket(this._url,nd4),this._socket.onerror=(Q)=>{let X="error"in Q?Q.error:Error(`WebSocket error: ${JSON.stringify(Q)}`);Z(X),this.onerror?.(X)},this._socket.onopen=()=>{$()},this._socket.onclose=()=>{this.onclose?.()},this._socket.onmessage=(Q)=>{let X;try{X=sJ.parse(JSON.parse(Q.data))}catch(Y){this.onerror?.(Y);return}this.onmessage?.(X)}})}async close(){this._socket?.close()}send($){return new Promise((Z,Q)=>{if(!this._socket){Q(Error("Not connected"));return}this._socket?.send(JSON.stringify($)),Z()})}}var nd4="mcp";var tq$=D(()=>{k9()});function td4($){let Z=$;if(!Z||typeof Z!=="object"||!("method"in Z))return null;switch(Z.method){case"initialize":{let Q=Z?.params?.protocolVersion;if(!Q)return null;return{type:"emit",message:{result:{protocolVersion:Q,capabilities:{tools:{}},serverInfo:{name:"deco-chat-server",version:"1.0.0"}},jsonrpc:Z.jsonrpc??"2.0",id:Z.id}}}case"notifications/roots/list_changed":case"notifications/initialized":case"notifications/cancelled":case"notifications/progress":return{type:"suppress"};default:return null}}var mF0;var kQ1=D(()=>{Tl();mF0=class mF0 extends AF{constructor($,Z){super($,Z)}send($,Z){let Q=td4($);if(Q?.type==="emit")return this.onmessage?.(Q.message),Promise.resolve();if(Q?.type==="suppress")return Promise.resolve();return super.send($,Z)}}});var oq$,rq$=async($,Z,Q)=>{let X=od4($.connection,Z,Q);if(!X)throw Error("Unknown MCP connection type");let Y=new oq$({name:$?.name??"MCP Client",version:"1.0.0"});return await Y.connect(X),{client:Y}},od4=($,Z,Q)=>{if($.type==="Websocket")return new VQ1(new URL($.url));if($.type!=="SSE"&&$.type!=="HTTP")return null;let Y={...$.token?{authorization:`Bearer ${$.token}`}:{},...Q??{},..."headers"in $?$.headers||{}:{}};if($.type==="SSE"){let J={requestInit:{headers:Y,signal:Z}};if($.token)J.eventSourceInit={fetch:(G,K)=>{return fetch(G,{...K,headers:{...Y,Accept:"text/event-stream"},signal:Z})}};return new JB(new URL($.url),J)}return new mF0(new URL($.url),{requestInit:{headers:Y,signal:Z,credentials:"include"}})};var aq$=D(()=>{zF();Hs();tq$();k9();sQ();kQ1();oq$=class oq$ extends LZ{constructor($,Z){super($,{jsonSchemaValidator:u5,...Z})}async listTools($,Z){return await this.request({method:"tools/list",params:$},lo,Z)}}});function ad4($,Z){if(uA.set($,Z),uA.size>rd4){let Q=uA.keys().next().value;if(Q!==void 0)uA.delete(Q)}}function $M$($){let Z=(Q)=>{if("connection"in $)return rq$({connection:$.connection},void 0,Q);return $.client};return new Proxy({},{get(Q,X){if(X==="toJSON")return null;if(typeof X!=="string")throw Error("Name must be a string");if(X==="listTools")return K;async function Y(W,H=X){let F=$?.debugId?.(),U=F?{"x-trace-debug-id":F}:void 0,{client:N}=await Z(U),{structuredContent:B,isError:O,content:L}=await N.callTool({name:String(H),arguments:W});if(O){let j=L?.[0]?.text,E=typeof j==="string"?sq$(j):null,z=E?.code&&typeof $?.getErrorByStatusCode==="function"?$.getErrorByStatusCode(E.code,E.message,E.traceId):null;if(z)throw z;throw Error(`Tool ${String(H)} returned an error: ${JSON.stringify(B??L)}`)}if(B!==void 0)return B;let w=L?.[0]?.text;return typeof w==="string"?sq$(w):void 0}async function J(){let{client:W}=await Z(),{tools:H}=await W.listTools();return H}async function G(){if(!("connection"in $))return J();let W=$.connection,H=JSON.stringify(W);try{if(!uA.has(H))ad4(H,J());return await uA.get(H)}catch(F){console.error("Failed to list tools",F),uA.delete(H);return}}async function K(){return(await G()??[]).map((H)=>eq$(H,Y))}return Y.asTool=async()=>{let H=(await G()??[]).find((F)=>F.name===X);if(!H)throw Error(`Tool ${X} not found`);return eq$(H,Y)},Y}})}var sq$=($)=>{try{return JSON.parse($)}catch{return $}},rd4=500,uA,eq$=($,Z)=>{return{...$,id:$.name,inputSchema:$.inputSchema?WQ($.inputSchema):void 0,outputSchema:$.outputSchema?WQ($.outputSchema):void 0,execute:(Q)=>{return Z(Q.context,$.name)}}};var ZM$=D(()=>{nq$();aq$();uA=new Map});function qw($){return $M$($)}var Zm;var SQ1=D(()=>{ZM$();Zm=new Proxy({},{get($,Z){if(Z==="toJSON")return null;if(Z==="forConnection")return(Q)=>qw({connection:Q});if(Z==="forClient")return(Q)=>qw({client:Q});return globalThis[Z]}})});function dF0($){return{isImplementedBy:(Z)=>{for(let Q of $){let X=typeof Q.name==="string"?new RegExp(`^${Q.name}$`):Q.name,Y=Z.find((J)=>X.test(J.name));if(!Y&&Q.opt)continue;if(!Y)return!1}return!0}}}var yF=($)=>{return{...dF0($),forClient:(Z)=>{return qw({client:Z})},forConnection:(Z)=>{return qw({connection:Z})}}};var lA=D(()=>{SQ1()});import{z as B9}from"zod";var QM$,iF0,XM$,pF0,YM$,sd4;var JM$=D(()=>{lA();QM$=B9.object({specversion:B9.literal("1.0").describe("CloudEvents specification version"),id:B9.string().describe("Unique identifier for this event (UUID recommended)"),source:B9.string().describe("Connection ID of the event publisher"),type:B9.string().describe("Event type (e.g., 'order.created', 'user.signup')"),time:B9.string().datetime().optional().describe("Timestamp of when the event occurred (ISO 8601)"),subject:B9.string().optional().describe("Subject/resource identifier (e.g., order ID, user ID)"),datacontenttype:B9.string().optional().default("application/json").describe("Content type of the data attribute"),dataschema:B9.string().url().optional().describe("URI to the schema for the data attribute"),data:B9.unknown().optional().describe("Event payload (any JSON value)")}),iF0=B9.object({events:B9.array(QM$).min(1).describe("Batch of CloudEvents to process")}),XM$=B9.object({success:B9.boolean().optional().describe("Whether this event was processed successfully"),error:B9.string().optional().describe("Error message for this event"),retryAfter:B9.number().int().positive().optional().describe("Re-deliver this event after this many ms")}),pF0=B9.object({success:B9.boolean().optional().describe("Batch success - applies to events not in results"),error:B9.string().optional().describe("Batch error message - applies to events not in results"),processedCount:B9.number().int().min(0).optional().describe("Number of events successfully processed"),retryAfter:B9.number().int().positive().optional().describe("Batch retryAfter - applies to events not in results"),results:B9.record(B9.string(),XM$).optional().describe("Per-event results keyed by event ID")}),YM$=[{name:"ON_EVENTS",inputSchema:iF0,outputSchema:pF0}],sd4=yF(YM$)});import{z as O9}from"zod";var GM$,KM$,WM$,HM$,FM$,UM$,nF0,CQ1;var _Q1=D(()=>{lA();GM$=O9.object({type:O9.literal("string"),enum:O9.array(O9.string()).optional(),description:O9.string().optional()}),KM$=O9.object({type:O9.string(),description:O9.string(),paramsSchema:O9.record(O9.string(),GM$)}),WM$=O9.object({}),HM$=O9.object({triggers:O9.array(KM$)}),FM$=O9.object({type:O9.string(),params:O9.record(O9.string(),O9.string()),enabled:O9.boolean(),callbackUrl:O9.url().optional(),callbackToken:O9.string().min(1).optional()}),UM$=O9.object({success:O9.boolean()}),nF0=[{name:"TRIGGER_LIST",inputSchema:WM$,outputSchema:HM$},{name:"TRIGGER_CONFIGURE",inputSchema:FM$,outputSchema:UM$}],CQ1=yF(nF0)});import{z as b$}from"zod";var ed4,$i4,Zi4,Qi4,Xi4,Yi4,Ji4,Gi4,Ki4,Wi4,Hi4,Fi4,cA;var L00=D(()=>{ed4=b$.object({prefix:b$.string().optional().describe("Filter objects by prefix (e.g., 'folder/' for folder contents)"),maxKeys:b$.number().optional().default(1000).describe("Maximum number of keys to return (default: 1000)"),continuationToken:b$.string().optional().describe("Token for pagination from previous response"),delimiter:b$.string().optional().describe("Delimiter for grouping keys (typically '/'). When set, commonPrefixes returns folder paths.")}),$i4=b$.object({objects:b$.array(b$.object({key:b$.string().describe("Object key/path"),size:b$.number().describe("Object size in bytes"),lastModified:b$.string().describe("Last modified timestamp"),etag:b$.string().describe("Entity tag for the object")})),nextContinuationToken:b$.string().optional().describe("Token for fetching next page of results"),isTruncated:b$.boolean().describe("Whether there are more results available"),commonPrefixes:b$.array(b$.string()).optional().describe("Folder paths when delimiter is used (e.g., ['photos/2024/', 'photos/2025/'])")}),Zi4=b$.object({key:b$.string().describe("Object key/path to get metadata for")}),Qi4=b$.object({contentType:b$.string().optional().describe("MIME type of the object"),contentLength:b$.number().describe("Size of the object in bytes"),lastModified:b$.string().describe("Last modified timestamp"),etag:b$.string().describe("Entity tag for the object"),metadata:b$.record(b$.string(),b$.string()).optional().describe("Custom metadata key-value pairs")}),Xi4=b$.object({key:b$.string().describe("Object key/path to generate URL for"),expiresIn:b$.number().optional().describe("URL expiration time in seconds (default: from state config or 3600)")}),Yi4=b$.object({url:b$.string().describe("Presigned URL for downloading the object"),expiresIn:b$.number().describe("Expiration time in seconds that was used")}),Ji4=b$.object({key:b$.string().describe("Object key/path for the upload"),expiresIn:b$.number().optional().describe("URL expiration time in seconds (default: from state config or 3600)"),contentType:b$.string().optional().describe("MIME type for the object being uploaded")}),Gi4=b$.object({url:b$.string().describe("Presigned URL for uploading the object"),expiresIn:b$.number().describe("Expiration time in seconds that was used")}),Ki4=b$.object({key:b$.string().describe("Object key/path to delete")}),Wi4=b$.object({success:b$.boolean().describe("Whether the deletion was successful"),key:b$.string().describe("The key that was deleted")}),Hi4=b$.object({keys:b$.array(b$.string()).max(1000).describe("Array of object keys/paths to delete (max 1000)")}),Fi4=b$.object({deleted:b$.array(b$.string()).describe("Array of successfully deleted keys"),errors:b$.array(b$.object({key:b$.string(),message:b$.string()})).describe("Array of errors for failed deletions")}),cA=[{name:"LIST_OBJECTS",inputSchema:ed4,outputSchema:$i4},{name:"GET_OBJECT_METADATA",inputSchema:Zi4,outputSchema:Qi4},{name:"GET_PRESIGNED_URL",inputSchema:Xi4,outputSchema:Yi4},{name:"PUT_PRESIGNED_URL",inputSchema:Ji4,outputSchema:Gi4},{name:"DELETE_OBJECT",inputSchema:Ki4,outputSchema:Wi4},{name:"DELETE_OBJECTS",inputSchema:Hi4,outputSchema:Fi4}]});import{z as h6}from"zod";var NM$,BM$,OM$,w00,tF0,oF0,rF0,aF0,Ui4;var vQ1=D(()=>{lA();NM$=h6.object({primary:h6.string().optional().describe("Primary brand color (hex)"),secondary:h6.string().optional().describe("Secondary brand color (hex)"),accent:h6.string().optional().describe("Accent / highlight color (hex)"),background:h6.string().optional().describe("Background color (hex)"),foreground:h6.string().optional().describe("Foreground / text color (hex)")}),BM$=h6.object({heading:h6.string().optional().describe("Font family for headings"),body:h6.string().optional().describe("Font family for body text"),code:h6.string().optional().describe("Font family for code / monospace")}),OM$=h6.object({logo:h6.string().optional().describe("Logo URL"),favicon:h6.string().optional().describe("Favicon URL"),ogImage:h6.string().optional().describe("Open Graph image URL")}),w00=h6.object({id:h6.string(),name:h6.string().describe("Brand / company name"),domain:h6.string().optional().describe("Company domain (e.g. example.com)"),colors:NM$.optional().describe("Semantic color palette"),fonts:BM$.optional().describe("Font families by role"),assets:OM$.optional().describe("Visual identity assets"),overview:h6.string().optional().describe("Company overview / description"),tagline:h6.string().optional().describe("Brand tagline"),tone:h6.string().optional().describe("Tone of voice description"),metadata:h6.record(h6.string(),h6.unknown()).optional().describe("Extra design tokens and metadata")}),tF0=h6.object({id:h6.string().optional().describe("Brand ID. Omit to get the default brand.")}),oF0=h6.object({}),rF0=h6.object({items:h6.array(w00)}),aF0=[{name:"BRAND_GET",inputSchema:tF0,outputSchema:w00},{name:"BRAND_LIST",inputSchema:oF0,outputSchema:rF0,opt:!0}],Ui4=yF(aF0)});var xQ1=D(()=>{lA();JM$();_Q1();L00();vQ1()});import{z as C8}from"zod";function eF0($){let Q=$.replace(/[.*+?^${}()|[\]\\]/g,"\\$&").replace(/%/g,".*").replace(/_/g,".");return new RegExp(`^${Q}$`,"i")}function OB($){return C8.object({items:C8.array($).describe("Array of collection items"),totalCount:C8.number().int().min(0).optional().describe("Total number of matching items (if available)"),hasMore:C8.boolean().optional().describe("Whether there are more items available")})}function E00($){return C8.object({item:$.nullable().describe("The retrieved item, or null if not found")})}function Oi4($){return C8.object({data:$.partial().describe("Data for the new entity (id may be auto-generated)")})}function Di4($){return C8.object({item:$.describe("The created entity with generated id")})}function Li4($){return C8.object({id:C8.string().describe("ID of the entity to update"),data:$.partial().describe("Partial entity data to update")})}function wi4($){return C8.object({item:$.describe("The updated entity")})}function P00($){return C8.object({item:$.describe("The deleted entity")})}function $U0($,Z,Q){let X=$.toUpperCase(),Y=Q?.readOnly??!1,J=[{name:`COLLECTION_${X}_LIST`,inputSchema:yW,outputSchema:OB(Z)},{name:`COLLECTION_${X}_GET`,inputSchema:j00,outputSchema:E00(Z)}];if(!Y)J.push({name:`COLLECTION_${X}_CREATE`,inputSchema:Oi4(Z),outputSchema:Di4(Z),opt:!0},{name:`COLLECTION_${X}_UPDATE`,inputSchema:Li4(Z),outputSchema:wi4(Z),opt:!0},{name:`COLLECTION_${X}_DELETE`,inputSchema:z00,outputSchema:P00(Z),opt:!0});return J}var sF0,Ni4,DM$,Bi4,yW,j00,z00;var j3=D(()=>{sF0=C8.object({id:C8.string().describe("Unique identifier for the entity"),title:C8.string().describe("Human-readable title for the entity"),description:C8.string().nullish().describe("Description of the entity"),created_at:C8.string().datetime(),updated_at:C8.string().datetime(),created_by:C8.string().optional(),updated_by:C8.string().optional()}),Ni4=C8.object({field:C8.array(C8.string()),operator:C8.enum(["eq","gt","gte","lt","lte","in","like","contains"]),value:C8.unknown()}),DM$=C8.lazy(()=>C8.union([Ni4,C8.object({operator:C8.enum(["and","or","not"]),conditions:C8.array(DM$)})]));Bi4=C8.object({field:C8.array(C8.string()),direction:C8.enum(["asc","desc"]),nulls:C8.enum(["first","last"]).optional()}),yW=C8.object({where:DM$.optional().describe("Filter expression"),orderBy:C8.array(Bi4).optional().describe("Sort expressions"),limit:C8.number().int().min(1).max(1000).optional().describe("Maximum number of items to return"),offset:C8.number().int().min(0).optional().describe("Number of items to skip")});j00=C8.object({id:C8.string().describe("ID of the entity to retrieve")});z00=C8.object({id:C8.string().describe("ID of the entity to delete")})});import{z as Qm}from"zod";var ji4,Ei4,LM$;var wM$=D(()=>{j3();ji4=sF0.extend({avatar:Qm.string().describe("URL or data URI to the assistant's avatar image"),system_prompt:Qm.string().describe("System prompt that defines the assistant's behavior"),virtual_mcp_id:Qm.string().describe("Virtual MCP ID to use for this assistant"),model:Qm.object({id:Qm.string().describe("Model ID"),connectionId:Qm.string().describe("Connection ID that provides the model")}).describe("Selected model reference for this assistant")}),Ei4=$U0("assistant",ji4),LM$=[...Ei4]});import{z as N0}from"zod";var A00,DB,EM$,zi4,Pi4,zM$,Ai4,Ti4,Ri4,qi4,Mi4,Ii4,PM$,Vi4,ki4,Si4,Ci4,_i4,vi4,xi4,fi4,bi4,yi4,uW9,gi4,lW9,jM$,hi4,ui4,ZU0,cW9;var AM$=D(()=>{lA();j3();A00=N0.lazy(()=>N0.union([N0.null(),N0.string(),N0.number(),N0.boolean(),N0.record(N0.string(),A00),N0.array(A00)])),DB=N0.record(N0.string(),N0.record(N0.string(),A00)).optional().describe("Additional provider-specific options. Outer record keyed by provider name, inner by option key"),EM$=N0.object({type:N0.literal("text"),text:N0.string().describe("The text content"),providerOptions:DB}),zi4=N0.object({type:N0.literal("text"),text:N0.string().describe("The text content"),providerMetadata:N0.any().optional().describe("Additional provider-specific metadata")}),Pi4=N0.string().describe("File data as URL string"),zM$=N0.object({type:N0.literal("file"),filename:N0.string().optional().describe("Optional filename of the file"),data:Pi4,mediaType:N0.string().describe("IANA media type of the file (e.g., image/png, audio/mp3)"),providerOptions:DB}),Ai4=N0.object({type:N0.literal("file"),mediaType:N0.string().describe("IANA media type of the file (e.g., image/png, audio/mp3)"),data:N0.string().describe("Generated file data as base64 encoded string")}),Ti4=N0.object({type:N0.literal("reasoning"),text:N0.string().describe("The reasoning text"),providerOptions:DB}),Ri4=N0.object({type:N0.literal("reasoning"),text:N0.string().describe("The reasoning text"),providerMetadata:N0.any().optional().describe("Additional provider-specific metadata")}),qi4=N0.object({type:N0.literal("tool-call"),toolCallId:N0.string().describe("ID of the tool call, used to match with tool result"),toolName:N0.string().describe("Name of the tool being called"),input:N0.string().describe("Arguments of the tool call (JSON-serializable object matching tool input schema)"),providerExecuted:N0.boolean().optional().describe("Whether the tool call will be executed by the provider"),providerOptions:DB}),Mi4=N0.object({type:N0.literal("tool-call"),toolCallId:N0.string().describe("ID of the tool call"),toolName:N0.string().describe("Name of the tool being called"),input:N0.string().describe("Stringified JSON object with the tool call arguments"),providerExecuted:N0.boolean().optional().describe("Whether the tool call will be executed by the provider"),providerMetadata:N0.any().optional().describe("Additional provider-specific metadata")}),Ii4=N0.union([N0.object({type:N0.literal("text"),value:N0.string()}),N0.object({type:N0.literal("json"),value:A00}),N0.object({type:N0.literal("error-text"),value:N0.string()}),N0.object({type:N0.literal("error-json"),value:A00}),N0.object({type:N0.literal("content"),value:N0.array(N0.union([N0.object({type:N0.literal("text"),text:N0.string().describe("Text content")}),N0.object({type:N0.literal("media"),data:N0.string().describe("Base-64 encoded media data"),mediaType:N0.string().describe("IANA media type")})]))}),N0.object({type:N0.literal("execution-denied"),reason:N0.string().optional()}),N0.string().describe("Raw or JSON-serialized output (e.g. from AI SDK mapToolResultOutput)")]),PM$=N0.object({type:N0.literal("tool-result"),toolCallId:N0.string().describe("ID of the tool call that this result is associated with"),toolName:N0.string().describe("Name of the tool that generated this result"),output:Ii4.describe("Result of the tool call"),result:N0.unknown().describe("Unknown result of the tool call"),providerOptions:DB}),Vi4=N0.object({type:N0.literal("tool-result"),toolCallId:N0.string().describe("ID of the tool call that this result is associated with"),toolName:N0.string().describe("Name of the tool that generated this result"),result:N0.any().describe("Result of the tool call (JSON-serializable)"),isError:N0.boolean().optional().describe("Whether the result is an error or error message"),providerExecuted:N0.boolean().optional().describe("Whether the tool result was generated by the provider"),providerMetadata:N0.any().optional().describe("Additional provider-specific metadata")}),ki4=N0.union([N0.object({type:N0.literal("source"),sourceType:N0.literal("url"),id:N0.string().describe("The ID of the source"),url:N0.string().describe("The URL of the source"),title:N0.string().optional().describe("The title of the source"),providerMetadata:N0.any().optional().describe("Additional provider-specific metadata")}),N0.object({type:N0.literal("source"),sourceType:N0.literal("document"),id:N0.string().describe("The ID of the source"),mediaType:N0.string().describe("IANA media type of the document (e.g., application/pdf)"),title:N0.string().describe("The title of the document"),filename:N0.string().optional().describe("Optional filename of the document"),providerMetadata:N0.any().optional().describe("Additional provider-specific metadata")})]),Si4=N0.object({role:N0.literal("system"),content:N0.string().describe("System message content"),providerOptions:DB}),Ci4=N0.object({role:N0.literal("user"),content:N0.array(N0.union([EM$,zM$])).describe("User message content parts (text or file)"),providerOptions:DB}),_i4=N0.object({role:N0.literal("assistant"),content:N0.array(N0.union([EM$,zM$,Ti4,qi4,PM$])).describe("Assistant message content parts (text, file, reasoning, tool-call, or tool-result)"),providerOptions:DB}),vi4=N0.object({role:N0.literal("tool"),content:N0.array(PM$).describe("Tool message content (tool results)"),providerOptions:DB}),xi4=N0.union([Si4,Ci4,_i4,vi4]),fi4=N0.array(xi4).describe("A list of messages forming the prompt"),bi4=N0.object({prompt:fi4.describe("A language model prompt is a standardized prompt type (array of messages with roles: system, user, assistant, tool)"),maxOutputTokens:N0.number().optional().describe("Maximum number of tokens to generate"),temperature:N0.number().optional().describe("Temperature setting. The range depends on the provider and model"),topP:N0.number().optional().describe("Nucleus sampling parameter"),topK:N0.number().optional().describe("Only sample from the top K options for each subsequent token. Used to remove long tail low probability responses"),presencePenalty:N0.number().optional().describe("Presence penalty setting. It affects the likelihood of the model to repeat information that is already in the prompt"),frequencyPenalty:N0.number().optional().describe("Frequency penalty setting. It affects the likelihood of the model to repeatedly use the same words or phrases"),seed:N0.number().optional().describe("The seed (integer) to use for random sampling. If set and supported by the model, calls will generate deterministic results"),stopSequences:N0.array(N0.string()).optional().describe("Stop sequences. If set, the model will stop generating text when one of the stop sequences is generated"),responseFormat:N0.union([N0.object({type:N0.literal("text")}),N0.object({type:N0.literal("json"),schema:N0.any().optional().describe("JSON schema that the generated output should conform to"),name:N0.string().optional().describe("Name of output that should be generated"),description:N0.string().optional().describe("Description of the output that should be generated")})]).optional().describe("Response format. The output can either be text or JSON. Default is text"),tools:N0.array(N0.any()).optional().describe("The tools that are available for the model"),toolChoice:N0.any().optional().describe("Specifies how the tool should be selected. Defaults to 'auto'"),includeRawChunks:N0.boolean().optional().describe("Include raw chunks in the stream. Only applicable for streaming calls"),abortSignal:N0.any().optional().describe("Abort signal for cancelling the operation"),providerOptions:N0.any().optional().describe("Additional provider-specific options")}),yi4=N0.object({content:N0.array(N0.union([zi4,Ai4,Ri4,Mi4,Vi4,ki4])).describe("Ordered content that the model has generated (text, tool-calls, reasoning, files, sources)"),finishReason:N0.enum(["stop","length","content-filter","tool-calls","error","other","unknown"]).describe("Reason why generation stopped"),usage:N0.looseObject({inputTokens:N0.number().optional(),outputTokens:N0.number().optional(),totalTokens:N0.number().optional(),reasoningTokens:N0.number().optional()}).describe("Usage information for the language model call"),providerMetadata:N0.any().optional().describe("Additional provider-specific metadata"),request:N0.object({body:N0.any().optional().describe("Request HTTP body sent to the provider API")}).optional().describe("Optional request information for telemetry and debugging"),response:N0.object({id:N0.string().optional().describe("ID for the generated response"),timestamp:N0.iso.datetime().optional().describe("Timestamp for the start of the generated response"),modelId:N0.string().optional().describe("The ID of the response model that was used"),headers:N0.record(N0.string(),N0.string()).optional().describe("Response headers"),body:N0.any().optional().describe("Response HTTP body")}).optional().describe("Optional response information for telemetry and debugging"),warnings:N0.array(N0.any()).describe("Warnings for the call, e.g. unsupported settings")}),uW9=N0.object({stream:N0.any().describe("ReadableStream of LanguageModelV2StreamPart"),request:N0.object({body:N0.any().optional().describe("Request HTTP body sent to the provider API")}).optional().describe("Optional request information for telemetry and debugging"),response:N0.object({headers:N0.record(N0.string(),N0.string()).optional().describe("Response headers")}).optional().describe("Optional response data")}),gi4=N0.object({supportedUrls:N0.record(N0.string(),N0.array(N0.string())).describe("Supported URL patterns by media type for the provider")}),lW9=N0.object({modelId:N0.string().describe("The ID of the model"),logo:N0.string().nullable(),description:N0.string().nullable(),capabilities:N0.array(N0.string()),limits:N0.object({contextWindow:N0.number(),maxOutputTokens:N0.number()}).nullable(),costs:N0.object({input:N0.number(),output:N0.number()}).nullable(),provider:N0.enum(["openai","anthropic","google","x-ai","deepseek","openai-compatible","openrouter"]).nullable()}),jM$=N0.object({modelId:N0.string().describe("The ID of the model"),callOptions:bi4}),hi4=sF0.extend({logo:N0.string().nullable(),description:N0.string().nullable(),capabilities:N0.array(N0.string()),limits:N0.object({contextWindow:N0.number(),maxOutputTokens:N0.number()}).nullable(),costs:N0.object({input:N0.number(),output:N0.number()}).nullable(),provider:N0.enum(["openai","anthropic","google","xai","deepseek","openai-compatible","openrouter"]).nullable()}),ui4=$U0("llm",hi4,{readOnly:!0}),ZU0=[{name:"LLM_METADATA",inputSchema:N0.object({modelId:N0.string().describe("The ID of the model")}),outputSchema:gi4},{name:"LLM_DO_STREAM",inputSchema:jM$},{name:"LLM_DO_GENERATE",inputSchema:jM$,outputSchema:yi4},...ui4],cW9=yF(ZU0)});import{z as mA}from"zod";var li4,TM$;var RM$=D(()=>{li4=mA.object({scopes:mA.array(mA.string()).describe("List of scopes available"),stateSchema:mA.record(mA.string(),mA.unknown()).describe("JSON Schema (draft-07) defining the state structure")}),TM$=[{name:"MCP_CONFIGURATION",inputSchema:mA.object({}),outputSchema:li4}]});import{z as D9}from"zod";var ci4,mi4,qM$;var MM$=D(()=>{ci4=D9.object({}).strict(),mi4=D9.object({billing:D9.object({mode:D9.enum(["prepaid","postpaid"]),limitPeriod:D9.enum(["daily","weekly","monthly"]).nullable()}),limit:D9.object({total:D9.number().nullable(),remaining:D9.number().nullable(),reset:D9.string().nullable()}),usage:D9.object({total:D9.number(),daily:D9.number(),weekly:D9.number(),monthly:D9.number()}),alert:D9.object({enabled:D9.boolean(),threshold_usd:D9.number(),email:D9.string().nullable()}),connectionId:D9.string()}),qM$=[{name:"GATEWAY_USAGE",inputSchema:ci4,outputSchema:mi4},{name:"GATEWAY_SET_LIMIT",inputSchema:D9.object({}),outputSchema:D9.object({}),opt:!0},{name:"GATEWAY_SET_ALERT",inputSchema:D9.object({}),outputSchema:D9.object({}),opt:!0}]});import{z as IM$}from"zod";function $J(){return p7()===null}function Xm($,Z){return $===I8.DEV_ASSETS(Z)}function Ym($,Z){let Q=SD$(Z,$),X=new Date().toISOString();return{id:Q.id??I8.DEV_ASSETS($),title:Q.title,description:Q.description??null,icon:Q.icon??null,app_name:Q.app_name??null,app_id:Q.app_id??null,organization_id:$,created_by:"system",created_at:X,updated_at:X,connection_type:Q.connection_type,connection_url:Q.connection_url??null,connection_token:null,connection_headers:null,oauth_config:null,configuration_state:null,configuration_scopes:null,metadata:Q.metadata??null,tools:di4,bindings:["OBJECT_STORAGE"],status:"active"}}var di4;var dA=D(()=>{qN();L00();V8();di4=cA.map(($)=>({name:$.name,description:`${$.name} operation for local file storage`,inputSchema:IM$.toJSONSchema($.inputSchema),outputSchema:IM$.toJSONSchema($.outputSchema)}))});function VM$($,Z){return $||Z===0}function kM$($,Z,Q,X,Y){let J=Z?Y+1:Y,G=$.slice(0,Q),K=X+Q<J;return{items:G,totalCount:J,hasMore:K}}function SM$($,Z,Q){if(!Q)return{sqlOffset:$,sqlLimit:Z};if($===0)return{sqlOffset:0,sqlLimit:Math.max(Z-1,0)};return{sqlOffset:$-1,sqlLimit:Z}}function ii4($,Z){if(Z.length===0)return;let[Q,...X]=Z,Y=Q==="slug"?bL($):$[Q];for(let J of X){if(Y===null||typeof Y!=="object")return;Y=Y[J]}return Y}function pi4($,Z,Q){if($===void 0)return!0;switch(Z){case"eq":return Q===null?$===null:$===Q;case"gt":return $>Q;case"gte":return $>=Q;case"lt":return $<Q;case"lte":return $<=Q;case"in":return Array.isArray(Q)&&Q.includes($);case"like":return typeof $==="string"&&eF0(String(Q)).test($);case"contains":return String($).toLowerCase().includes(String(Q).toLowerCase());default:return!0}}function T00($,Z){if(!Z)return!0;if("conditions"in Z){let{operator:X,conditions:Y}=Z;if(Y.length===0)return!0;switch(X){case"and":return Y.every((J)=>T00($,J));case"or":return Y.some((J)=>T00($,J));case"not":return!Y.every((J)=>T00($,J));default:return!0}}let Q=ii4($,Z.field);return pi4(Q,Z.operator,Z.value)}var CM$=D(()=>{zW0();j3()});import{z as Mw}from"zod";var ni4=8,ti4,oi4,ri4,ai4,iA;var fQ1=D(()=>{xQ1();wM$();j3();AM$();RM$();L00();MM$();V8();q0();A5();eY();gA();dA();sH();zW0();CM$();ti4=[{name:/^(COLLECTION_REGISTRY_APP_LIST|REGISTRY_ITEM_LIST)$/,inputSchema:Mw.object({})}],oi4={LLM:ZU0,LLMS:ZU0,ASSISTANTS:LM$,MCP:TM$,OBJECT_STORAGE:cA,AI_GATEWAY_BILLING:qM$,TRIGGER:nF0,REGISTRY:ti4,BRAND:aF0},ri4=yW.extend({binding:Mw.union([Mw.array(Mw.object({}).passthrough()),Mw.object({}).passthrough(),Mw.string()]).optional(),include_virtual:Mw.boolean().optional().describe("Whether to include VIRTUAL connections in the results. Defaults to false."),slug:Mw.string().optional().describe("Filter by connection slug. Matches against app_name, or a slug derived from connection_url or title.")}),ai4=OB(gQ),iA=h({name:"COLLECTION_CONNECTIONS_LIST",description:"List all connections in the organization with filtering, sorting, and pagination",annotations:{title:"List Connections",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:ri4,outputSchema:ai4,handler:async($,Z)=>{await Z.access.check();let Q=n(Z),X=$.binding?typeof $.binding==="string"?(()=>{let j=oi4[$.binding.toUpperCase()];if(!j)throw Error(`Unknown binding: ${$.binding}`);return j})():$.binding:void 0,Y=X?dF0(X):void 0,J=!!Y,G=$.limit??100,K=$.offset??0,W=P5(),H=I8.DEV_ASSETS(Q.id),F=Ym(Q.id,W),U=(!$.slug||bL(F)===$.slug)&&T00(F,$.where),N=$J()&&!J&&U,{sqlOffset:B,sqlLimit:O}=SM$(K,G,N),{items:L,totalCount:w}=await Z.storage.connections.list(Q.id,{includeVirtual:$.include_virtual??!1,slug:$.slug,where:$.where,orderBy:$.orderBy,limit:J?void 0:O,offset:J?void 0:B});if(Y){let j=b9(),E=I8.SELF(Q.id);await rc(L,ni4,async(z)=>{if(z.tools!==null)return;let P=z.id===E?async()=>{let{listManagementTools:q}=await Promise.resolve().then(() => (Iw(),QU0));return q(Z)}:()=>DQ1(z,Z,PW0),A=await Pw("tools",z.id,P,j,(q)=>Z.pendingRevalidations.push(q),zw);if(A!==null)z.tools=A})}if($J()&&VM$(J,K)&&U&&!L.some((j)=>j.id===H))L.unshift(F);if(J){let j=(await Promise.all(L.map(async(A)=>{if(!A.tools||A.tools.length===0)return null;return Y.isImplementedBy(A.tools.map((V)=>({name:V.name,inputSchema:V.inputSchema,outputSchema:V.outputSchema})))?A:null}))).filter((A)=>A!==null),E=j.length,z=j.slice(K,K+G),P=K+G<E;return{items:z,totalCount:E,hasMore:P}}return kM$(L,N,G,K,w)}})});var si4,pA;var bQ1=D(()=>{j3();V8();q0();A5();eY();gA();dA();sH();si4=E00(gQ),pA=h({name:"COLLECTION_CONNECTIONS_GET",description:"Get a connection's configuration, tools list, and status by ID.",annotations:{title:"Get Connection",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},_meta:{ui:{visibility:["app"]}},inputSchema:j00,outputSchema:si4,handler:async($,Z)=>{let Q=n(Z);if(await Z.access.check(),$J()&&Xm($.id,Q.id))return{item:Ym(Q.id,P5())};let X=await Z.storage.connections.findById($.id);if(!X||X.organization_id!==Q.id)return{item:null};if(X.tools===null){let Y=I8.SELF(Q.id),J=X.id===Y?async()=>{let{listManagementTools:K}=await Promise.resolve().then(() => (Iw(),QU0));return K(Z)}:async()=>{let K=await KQ(X,Z,!0);try{return(await K.listTools()).tools}finally{await K.close().catch(()=>{})}},G=await Pw("tools",X.id,J,b9(),(K)=>Z.pendingRevalidations.push(K),zw);if(G!==null)X.tools=G}return{item:X}}})});class l5{db;vault;constructor($,Z){this.db=$;this.vault=Z}async get($){let Z=await this.db.selectFrom("downstream_tokens").selectAll().where("connectionId","=",$).executeTakeFirst();if(!Z)return null;return ei4(this.vault,Z)}async upsert($){let Z=new Date().toISOString(),Q=await this.vault.encrypt($.accessToken),X=$.refreshToken?await this.vault.encrypt($.refreshToken):null,Y=$.clientSecret?await this.vault.encrypt($.clientSecret):null,J=$.expiresAt?.toISOString()??null,G=await this.db.insertInto("downstream_tokens").values({id:b8("dtok"),connectionId:$.connectionId,accessToken:Q,refreshToken:X,scope:$.scope,expiresAt:J,clientId:$.clientId,clientSecret:Y,tokenEndpoint:$.tokenEndpoint,createdAt:Z,updatedAt:Z}).onConflict((K)=>K.column("connectionId").doUpdateSet({accessToken:Q,refreshToken:X,scope:$.scope,expiresAt:J,clientId:$.clientId,clientSecret:Y,tokenEndpoint:$.tokenEndpoint,updatedAt:Z})).returning(["id","createdAt"]).executeTakeFirstOrThrow();return{id:G.id,connectionId:$.connectionId,accessToken:$.accessToken,refreshToken:$.refreshToken,scope:$.scope,expiresAt:$.expiresAt,createdAt:G.createdAt,updatedAt:Z,clientId:$.clientId,clientSecret:$.clientSecret,tokenEndpoint:$.tokenEndpoint}}async delete($){await this.db.deleteFrom("downstream_tokens").where("connectionId","=",$).execute()}isExpired($,Z=0){if(!$.expiresAt)return!1;let X=($.expiresAt instanceof Date?$.expiresAt:new Date($.expiresAt)).getTime();if(Number.isNaN(X))return!0;return X-Z<Date.now()}}async function ei4($,Z){try{let Q=await $.decrypt(Z.accessToken),X=Z.refreshToken?await $.decrypt(Z.refreshToken):null,Y=Z.clientSecret?await $.decrypt(Z.clientSecret):null;return{id:Z.id,connectionId:Z.connectionId,accessToken:Q,refreshToken:X,scope:Z.scope,expiresAt:Z.expiresAt,createdAt:Z.createdAt,updatedAt:Z.updatedAt,clientId:Z.clientId,clientSecret:Y,tokenEndpoint:Z.tokenEndpoint}}catch(Q){return console.warn("[DownstreamToken] failed to decrypt token row",{connectionId:Z.connectionId,message:Q instanceof Error?Q.message:String(Q)}),null}}var gW=D(()=>{eQ()});function Jm(...$){if(Xp4)console.log("[mcp-read-cache]",...$)}function Yp4($){return $.kind==="org"?"org":`u:${$.userId}`}function yQ1($){if($===null||typeof $!=="object")return JSON.stringify($)??"null";if(Array.isArray($))return`[${$.map(yQ1).join(",")}]`;return`{${Object.keys($).sort().map((Q)=>`${JSON.stringify(Q)}:${yQ1($[Q])}`).join(",")}}`}class JU0{config;maxEntries;now;maxTotalBytes;store=new Map;revalidating=new Set;totalBytes=0;constructor($=$p4,Z=Zp4,Q=()=>Date.now(),X=Qp4){this.config=$;this.maxEntries=Z;this.now=Q;this.maxTotalBytes=X}stats(){return{entries:this.store.size,bytes:this.totalBytes}}deleteKey($){let Z=this.store.get($);if(Z)this.store.delete($),this.totalBytes-=Z.bytes}key($,Z,Q,X){return`${Z}:${Yp4(Q)}:${$}:${yQ1(X)}`}storeSet($,Z,Q,X){let Y;try{Y=JSON.stringify(Z).length}catch{Jm("SKIP non-serializable",$);return}if(Y>X){Jm("SKIP oversize",$,`${Y}b > cap ${X}b`);return}this.deleteKey($);while(this.store.size>0&&(this.store.size>=this.maxEntries||this.totalBytes+Y>this.maxTotalBytes)){let J=this.store.keys().next().value;if(J===void 0)break;this.deleteKey(J)}this.store.set($,{value:Z,storedAt:Q,bytes:Y}),this.totalBytes+=Y}async fetch($){let{type:Z,connectionId:Q,scope:X,params:Y,fetchLive:J,shouldCache:G,onRevalidation:K}=$,W=this.config[Z],H=this.key(Z,Q,X,Y),F=this.now(),U=this.store.get(H),N=U?F-U.storedAt:1/0;if(!U||N>W.maxStaleMs){XU0.add(1,{type:Z,outcome:"miss"}),Jm(U?"EXPIRED":"MISS",H);let B=await J();if(G?.(B)??!0)this.storeSet(H,B,this.now(),W.maxValueBytes);else Jm("NOT-CACHED (shouldCache=false)",H);return B}if(this.store.delete(H),this.store.set(H,U),N>W.revalidateAfterMs&&!this.revalidating.has(H)){XU0.add(1,{type:Z,outcome:"stale"}),Jm("STALE \u2192 serve + revalidate",H,`age=${N}ms`),this.revalidating.add(H);let B=J().then((O)=>{if(G?.(O)??!0)this.storeSet(H,O,this.now(),W.maxValueBytes)}).catch(()=>{XU0.add(1,{type:Z,outcome:"error"})}).finally(()=>this.revalidating.delete(H));K?.(B)}else XU0.add(1,{type:Z,outcome:"hit"}),Jm("HIT",H,`age=${N}ms`);return U.value}invalidate($){let Z=`${$}:`;for(let Q of[...this.store.keys()])if(Q.startsWith(Z))this.deleteKey(Q)}}function hQ1(){return z0().mcpCacheEnabled}function GU0(){return hQ1()?gQ1:null}var XU0,YU0=1024,_M$,$p4,Zp4=2000,Qp4,Xp4,gQ1;var R00=D(()=>{B6();Z$();XU0=J$.createCounter("mcp_read_cache.fetches",{description:"MCP read cache outcomes (hit, stale, miss, error)",unit:"{fetches}"}),_M$=YU0*YU0,$p4={"tools/call":{revalidateAfterMs:30000,maxStaleMs:300000,maxValueBytes:512*YU0},"resources/read":{revalidateAfterMs:60000,maxStaleMs:300000,maxValueBytes:4*_M$},"prompts/get":{revalidateAfterMs:60000,maxStaleMs:300000,maxValueBytes:512*YU0}},Qp4=256*_M$,Xp4=typeof process<"u"&&!!process.env?.MCP_CACHE_DEBUG;gQ1=new JU0;J$.createObservableGauge("mcp_read_cache.entries",{description:"Current entry count in the per-pod MCP read cache",unit:"{entries}"}).addCallback(($)=>$.observe(gQ1.stats().entries));J$.createObservableGauge("mcp_read_cache.bytes",{description:"Approximate total bytes held in the per-pod MCP read cache",unit:"By"}).addCallback(($)=>$.observe(gQ1.stats().bytes))});function bM$(){if(vM$)return;vM$=!0;try{xM$=J$.createCounter("virtual_mcp.aggregate_cache.lookups",{description:"Virtual MCP aggregate tool-list cache lookups by outcome (hit, miss, expired)",unit:"{lookups}"}),fM$=J$.createCounter("virtual_mcp.aggregate_cache.evictions",{description:"Virtual MCP aggregate tool-list cache entries dropped, by reason (capacity, invalidated, failed)",unit:"{entries}"}),J$.createObservableGauge("virtual_mcp.aggregate_cache.entries",{description:"Live entries in this pod's Virtual MCP aggregate tool-list cache",unit:"{entries}"}).addCallback(($)=>$.observe(rG.size))}catch($){console.error("[aggregate-cache] failed to register metrics:",$)}}function uQ1($){bM$(),xM$?.add(1,{outcome:$})}function lQ1($,Z=1){if(Z<=0)return;bM$(),fM$?.add(Z,{reason:$})}function yM$($){return[$.virtualMcpId??"",$.userId??"",$.superUser?"su":"",[...$.connectionIds].sort().join(",")].join("|")}function gM$($){let Z=rG.get($);if(!Z)return uQ1("miss"),null;if(Date.now()-Z.at>=Jp4)return rG.delete($),uQ1("expired"),null;return uQ1("hit"),Z.value}function hM$($,Z,Q){let X=Q.catch((J)=>{if(rG.get($)?.value===X)rG.delete($),lQ1("failed");throw J});rG.delete($),rG.set($,{at:Date.now(),deps:Z,value:X});let Y=0;while(rG.size>Gp4){let J=rG.keys().next();if(J.done)break;rG.delete(J.value),Y++}return lQ1("capacity",Y),X}function uM$($){let Z=0;for(let[Q,X]of rG)if(X.deps.includes($))rG.delete(Q),Z++;lQ1("invalidated",Z)}var Jp4=30000,Gp4=500,rG,xM$=null,fM$=null,vM$=!1;var cQ1=D(()=>{B6();rG=new Map});function mM$($){GU0()?.invalidate($),fq$($),uM$($)}function Gm($){mM$($);let Z=mQ1?.();if(!Z)return;try{Z.publish(lM$,Kp4.encode(JSON.stringify({connectionId:$,originId:cM$})))}catch(Q){console.warn("[McpCacheInvalidation] publish failed (non-critical):",Q)}}function dM$($){if(mQ1=$,q00)return;let Z=$();if(!Z)return;q00=Z.subscribe(lM$),(async()=>{for await(let Q of q00)try{let X=JSON.parse(Wp4.decode(Q.data));if(X.originId===cM$)continue;mM$(X.connectionId)}catch{}})().catch(console.error)}function iM$(){q00?.unsubscribe(),q00=null,mQ1=void 0}var lM$="studio.mcp-cache.invalidate",cM$,Kp4,Wp4,mQ1,q00=null;var M00=D(()=>{R00();eY();cQ1();cM$=crypto.randomUUID(),Kp4=new TextEncoder,Wp4=new TextDecoder});import{z as dQ1}from"zod";function Fp4($){let Z={...$};for(let Q of Hp4)delete Z[Q];return Z}function Up4($,Z){return $.connection_url!==void 0?$.connection_url:Z}function Op4($,Z){return $.length===Z.length&&$.every((Q,X)=>Q===Z[X])}var Hp4,Np4,Bp4,iQ1;var pM$=D(()=>{PQ1();gW();q0();Z$();eY();M00();MQ1();EF0();sH();Hp4=["id","organization_id","created_by","created_at"];Np4=dQ1.object({id:dQ1.string().describe("ID of the connection to update"),data:W30.describe("Partial connection data to update")}),Bp4=dQ1.object({item:gQ.describe("The updated connection entity")});iQ1=h({name:"COLLECTION_CONNECTIONS_UPDATE",description:"Update a connection's configuration. Re-fetches tools from the server on URL change.",annotations:{title:"Update Connection",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:Np4,outputSchema:Bp4,handler:async($,Z)=>{t(Z);let Q=n(Z);await Z.access.check();let X=d0(Z);if(!X)throw Error("User ID required to update connection");let{id:Y}=$,J=Fp4($.data),G=J.configuration_state!==void 0||J.configuration_scopes!==void 0,K=await Z.storage.connections.findById(Y);if(!K||K.organization_id!==Q.id)throw Error("Connection not found in organization");let W=J.connection_type??K.connection_type,H=Up4(J,K.connection_url);if(W==="VIRTUAL"){let x=Bu(H);if(!x)throw Error("VIRTUAL connection requires connection_url in format: virtual://$virtual_mcp_id");let b=await Z.storage.virtualMcps.findById(x);if(!b)throw Error(`Virtual MCP not found: ${x}`);if(b.organization_id!==Q.id)throw Error("Virtual MCP does not belong to the current organization");H=Ou(x)}let F=J.configuration_state??K.configuration_state??{},U=J.configuration_scopes??K.configuration_scopes??[];if(G){if(J.configuration_state!==void 0)F=J.configuration_state??{};else if(F===null||F===void 0)F={};if(J.configuration_scopes!==void 0)U=J.configuration_scopes??[];if(U.length>0){let x=F;N00(x,U,Q.id),await O00(x,U,Q.id,Z)}}if(W==="STDIO"&&!z0().localMode)throw Error("STDIO connections are only available in local mode (--local-mode).");let N=J.connection_token??K.connection_token;if(!N)try{let b=await new l5(Z.db,Z.vault).get(Y);if(b?.accessToken)N=b.accessToken}catch{}let B=await oc({id:K.id,title:J.title??K.title,connection_type:W,connection_url:H,connection_token:N,connection_headers:J.connection_headers??K.connection_headers}).catch(()=>null),O=B?.tools?.length?B.tools:null,L=!1;if(J.configuration_scopes===void 0&&B?.scopes?.length)L=!Op4(U,B.scopes),U=B.scopes;if(N00(F,U,Q.id),L&&U.length>0)await O00(F,U,Q.id,Z);let w=G||L,j=w?B00(F,U):[],E=w?B00(K.configuration_state??{},K.configuration_scopes??[]):[],z=K.configuration_state,P=z==null||Object.keys(z).length===0,A,q,V=async()=>{try{await Z.storage.connectionCredentialVault.replaceGrantsForSubject({organizationId:Q.id,subjectConnectionId:Y,createdBy:X,grants:E})}catch(x){console.error("Failed to restore credential grants after credential vault mutation failed",x)}},M={...J,connection_url:H,tools:null,configuration_state:F,configuration_scopes:U,updated_by:X},C={...K,...M};if(w)try{if(await Z.storage.connectionCredentialVault.replaceGrantsForSubject({organizationId:Q.id,subjectConnectionId:Y,createdBy:X,grants:j}),j.length>0){if(!await Z.storage.connectionCredentialVault.findActiveWorkloadToken({organizationId:Q.id,subjectConnectionId:Y})){let{plaintextToken:b,record:i}=await Z.storage.connectionCredentialVault.createOrRotateWorkloadToken({organizationId:Q.id,subjectConnectionId:Y});q=i.id,A={baseUrl:Z.baseUrl,org:Q.slug??Q.id,subjectConnectionId:Y,token:b}}}}catch(x){if(q)await Z.storage.connectionCredentialVault.revokeWorkloadToken({organizationId:Q.id,subjectConnectionId:Y,tokenId:q});throw await V(),x}if(w&&F&&U)try{await yF0(Z,C,{state:F,scopes:U,firstRun:P,...A?{vault:A}:{}})}catch(x){if(console.error("Failed to invoke ON_MCP_CONFIGURATION callback",x),q)await Z.storage.connectionCredentialVault.revokeWorkloadToken({organizationId:Q.id,subjectConnectionId:Y,tokenId:q});if(j.length>0)throw await V(),x}let c;try{c=await Z.storage.connections.update(Y,M)}catch(x){if(w){if(q)await Z.storage.connectionCredentialVault.revokeWorkloadToken({organizationId:Q.id,subjectConnectionId:Y,tokenId:q});await V()}throw x}if(O)b9()?.set("tools",Y,O).catch(()=>{});return Gm(Y),{item:c}}})});import{z as Dp4}from"zod";var Lp4,pQ1;var nM$=D(()=>{j3();b4();q0();eY();M00();aG();dA();sH();Lp4=z00.extend({force:Dp4.boolean().optional().describe("If true, removes this connection from all agents that reference it before deleting")}),pQ1=h({name:"COLLECTION_CONNECTIONS_DELETE",description:"Permanently delete a connection. Set force=true to auto-remove from referencing Virtual MCPs.",annotations:{title:"Delete Connection",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:Lp4,outputSchema:P00(gQ),handler:async($,Z)=>{t(Z);let Q=n(Z);if(await Z.access.check(),$J()&&Xm($.id,Q.id))throw Error("This connection is a fixed system connection and cannot be deleted");let X=await Z.storage.connections.findById($.id);if(!X)throw Error(`Connection not found: ${$.id}`);if(X.organization_id!==Q.id)throw Error("Connection not found in organization");if(X.metadata?.isFixed===!0)throw Error("This connection is a fixed system connection and cannot be deleted");let J=await Z.storage.virtualMcps.listByConnectionId(Q.id,$.id);if(J.length>0)if($.force)await Z.storage.virtualMcps.removeConnectionReferences($.id);else throw Error(JSON.stringify({code:"CONNECTION_IN_USE",agentNames:J.map((H)=>H.title)}));if(await Z.storage.connections.isReferencedByThread($.id))throw Error(JSON.stringify({code:"CONNECTION_IN_USE_BY_THREAD"}));let G=await Z.storage.automations.listActiveByEventTriggerConnectionId($.id);if(G.length>0)if($.force)await Promise.all(G.map((H)=>Z.storage.automations.deactivateAutomation(H.id)));else throw Error(JSON.stringify({code:"CONNECTION_IN_USE_BY_AUTOMATION",automationNames:G.map((H)=>H.name)}));await Z.storage.connections.delete($.id),tM$($.id),await Z.storage.triggerCallbackTokens.deleteByConnection($.id,Q.id);let K=await Z.storage.organizationSettings.get(Q.id);if(K?.registry_config){let{registries:H,blockedMcps:F}=K.registry_config;if($.id in H){let{[$.id]:U,...N}=H;await Z.storage.organizationSettings.upsert(Q.id,{registry_config:{registries:N,blockedMcps:F}})}}b9()?.invalidate($.id).catch(()=>{}),Gm($.id);let W=d0(Z);if(W)k1.capture({distinctId:W,event:"connection_deleted",groups:{organization:Q.id},properties:{connection_id:X.id,connection_type:X.connection_type,app_name:X.app_name??null,organization_id:Q.id,forced:$.force??!1}});return{item:X}}})});import{z as Km}from"zod";var nQ1;var oM$=D(()=>{q0();nQ1=h({name:"CONNECTION_TEST",description:"Test connection health and latency",annotations:{title:"Test Connection",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},inputSchema:Km.object({id:Km.string()}),outputSchema:Km.object({id:Km.string(),healthy:Km.boolean(),latencyMs:Km.number()}),handler:async($,Z)=>{let Q=n(Z);await Z.access.check();let X=await Z.storage.connections.findById($.id);if(!X||X.organization_id!==Q.id)throw Error("Connection not found");let Y=await Z.storage.connections.testConnection($.id);return{id:$.id,...Y}}})});var rM$=D(()=>{mq$();fQ1();bQ1();pM$();nM$();oM$()});import{sql as t4}from"kysely";import{z as gF}from"zod";function aM$($){if($===null||$===void 0)return"NULL";if(typeof $==="number")return String($);if(typeof $==="boolean")return $?"TRUE":"FALSE";if(typeof $==="string")return`'${$.replace(/'/g,"''")}'`;if($ instanceof Date)return`'${$.toISOString()}'`;return`'${JSON.stringify($).replace(/'/g,"''")}'`}function Ep4($,Z){let Q="",X=0,Y=!1,J=!1,G=!1,K=null;for(let W=0;W<$.length;W++){let H=$[W];if(!Y&&!J&&K===null){if($.startsWith("--",W)){let F=$.indexOf(`
3016
+ </workflows>`,kR$={id:"studio-usage-manager",title:"Usage Manager",icon:"icon://BarChart10?color=blue",description:"Analyze usage, costs, and clean up idle agents and connections",selectedTools:["MONITORING_STATS","MONITORING_LOGS_LIST","MONITORING_LOG_GET","MONITORING_THREAD_USAGE","COLLECTION_VIRTUAL_MCP_LIST","COLLECTION_VIRTUAL_MCP_GET","COLLECTION_VIRTUAL_MCP_DELETE","VIRTUAL_MCP_LAST_USED_LIST","COLLECTION_CONNECTIONS_LIST","COLLECTION_CONNECTIONS_GET","COLLECTION_CONNECTIONS_DELETE","ORGANIZATION_MEMBER_LIST"],selectedConnections:null,selectedPrompts:[],instructions:fc4,getId:hG.USAGE_MANAGER}});function s71($){return xA.find((Z)=>$.startsWith(`${Z.id}_`))??null}async function yc4($,Z){if("resolveRuntime"in $)return $.resolveRuntime(Z);return{instructions:$.instructions,selectedTools:$.selectedTools}}async function zF0({virtualMcp:$,agentId:Z=$.id,organizationId:Q,ctx:X}){let Y=s71(Z);if(!Y)return $;let J=await yc4(Y,{orgId:Q,ctx:X}),G=J.selectedTools?[...J.selectedTools]:null;return{...$,metadata:{...$.metadata??{},instructions:J.instructions},connections:$.connections.map((K)=>({...K,selected_tools:G}))}}async function PF0($,Z){if(!("checklist"in $))return[];return Promise.all($.checklist.map(async(Q)=>({label:Q.label,activeForm:Q.activeForm,action:Q.action,completed:await Q.isCompleted(Z),alwaysSuggest:Q.alwaysSuggest})))}async function CR$($,Z,Q){let X={self:I8.SELF($),registry:I8.REGISTRY($),"community-registry":I8.COMMUNITY_REGISTRY($)};await Promise.all(bc4.map((Y)=>Q.delete(`${Y}${$}`))),await Promise.all(xA.map(async(Y)=>{let J=Y.getId($),G=await Q.findById(J,$),W=(Y.selectedConnections??["self"]).map((H)=>X[H]);if(G){await Q.update(J,Z,{metadata:{...G.metadata??{},instructions:Y.instructions},connections:W.map((H)=>{let F=G.connections.find((U)=>U.connection_id===H);return{connection_id:H,selected_tools:Y.selectedTools?[...Y.selectedTools]:null,selected_resources:F?.selected_resources??null,selected_prompts:F?.selected_prompts??null}})});return}await Q.create($,Z,{title:Y.title,description:Y.description,icon:Y.icon,status:"active",pinned:!1,metadata:{instructions:Y.instructions},connections:W.map((H)=>({connection_id:H,selected_tools:Y.selectedTools?[...Y.selectedTools]:null,selected_resources:null,selected_prompts:Y.selectedPrompts?[...Y.selectedPrompts]:null}))},{id:J})}))}var bc4,xA;var sc=D(()=>{V8();wR$();ER$();RR$();MR$();VR$();SR$();bc4=P51,xA=[TR$,jR$,qR$,LR$,IR$,kR$]});import{DBOS as AF0}from"@dbos-inc/dbos-sdk";async function gc4($){let Z=l$(),Q=new yl(Z.db);await CR$($.orgId,$.createdBy,Q)}async function hc4($){let Z=l$(),Q=new yl(Z.db);for(let X of xA){let Y=X.getId($.orgId),J=await Q.findById(Y,$.orgId);if(!J)continue;let G=X.selectedPrompts?[...X.selectedPrompts]:null;if(J.connections.every((W)=>{let H=W.selected_prompts;if(G===null)return H===null;if(H===null)return!1;if(H.length!==G.length)return!1;return H.every((F,U)=>F===G[U])}))continue;await Q.update(Y,$.createdBy,{connections:J.connections.map((W)=>({connection_id:W.connection_id,selected_tools:W.selected_tools,selected_resources:W.selected_resources,selected_prompts:G}))})}}async function uc4($){await AF0.runStep(()=>gc4($),{name:"installStudioPack"}),await AF0.runStep(()=>hc4($),{name:"backfillSelectedPrompts"})}async function e71($){await AF0.startWorkflow(lc4,{workflowID:`install-studio-pack:${cc4}:${$.orgId}`})($)}async function _R$(){let Z=await l$().db.selectFrom("member").select(["organizationId","userId"]).orderBy("createdAt","asc").execute(),Q=new Map;for(let X of Z)if(!Q.has(X.organizationId))Q.set(X.organizationId,X.userId);await rc(Array.from(Q),10,async([X,Y])=>{try{await e71({orgId:X,createdBy:Y})}catch(J){console.error("[studio-pack-backfill] enqueue failed",{orgId:X},J)}})}var lc4,cc4="v6";var TF0=D(()=>{bQ();v51();sc();lc4=AF0.registerWorkflow(uc4,{name:"installStudioPackWorkflow"})});class $00{constructor(){this._messageQueue=[]}static createLinkedPair(){let $=new $00,Z=new $00;return $._otherTransport=Z,Z._otherTransport=$,[$,Z]}async start(){while(this._messageQueue.length>0){let $=this._messageQueue.shift();this.onmessage?.($.message,$.extra)}}async close(){let $=this._otherTransport;this._otherTransport=void 0,await $?.close(),this.onclose?.()}async send($,Z){if(!this._otherTransport)throw Error("Not connected");if(this._otherTransport.onmessage)this._otherTransport.onmessage($,{authInfo:Z?.authInfo});else this._otherTransport._messageQueue.push({message:$,extra:{authInfo:Z?.authInfo}})}}import{z as g8}from"zod";var xR$,vR$=1000,mc4=500,fR$,bR$,yR$,gR$,hR$,uR$,lR$,cR$,mR$,dR$;var ec=D(()=>{xR$=g8.record(g8.string(),g8.array(g8.string())),fR$=g8.record(g8.string(),g8.array(g8.string()).max(mc4)).refine(($)=>Object.keys($).length<=vR$,{message:`Permissions cannot grant more than ${vR$} resources`}),bR$=g8.object({id:g8.string().describe("Unique identifier for the API key"),name:g8.string().describe("Human-readable name for the API key"),userId:g8.string().describe("ID of the user who owns this API key"),permissions:xR$.describe('Permissions granted to this API key. Format: { resource: [actions] } where resource is "self" for management tools or "conn_<UUID>" for connection-specific tools. Example: { "self": ["API_KEY_CREATE"], "conn_abc123": ["SEND_MESSAGE"] }'),expiresAt:g8.string().datetime().nullable().optional().describe("Expiration date of the API key (ISO 8601)"),createdAt:g8.string().datetime().describe("When the API key was created (ISO 8601)")}),yR$=g8.object({name:g8.string().min(1).max(64).describe("Human-readable name for the API key"),permissions:fR$.describe(`Permissions to grant (REQUIRED \u2014 there is no implicit default). Format: { resource: [actions] }. Resource is "self" for management tools or "conn_<UUID>" for connection-specific tools. Actions are tool names (e.g., ["ORGANIZATION_GET"]) or ["*"] for all. Example: { "self": ["ORGANIZATION_GET", "COLLECTION_CONNECTIONS_LIST"] }. The key is authorized solely by this allowlist; the creator's role does not widen it.`),expiresIn:g8.number().positive().optional().describe("Expiration time in seconds. If not provided, key never expires."),metadata:g8.record(g8.string(),g8.unknown()).optional().describe("Additional metadata to store with the API key")}),gR$=g8.object({id:g8.string().describe("Unique identifier for the API key"),name:g8.string().describe("Human-readable name for the API key"),key:g8.string().describe("The actual API key value. STORE THIS SECURELY - it will not be shown again!"),permissions:xR$.describe('Permissions granted to this API key. Format: { resource: [actions] } where resource is "self" for management tools or "conn_<UUID>" for connection-specific tools'),expiresAt:g8.string().datetime().nullable().optional().describe("Expiration date of the API key (ISO 8601)"),createdAt:g8.string().datetime().describe("When the API key was created (ISO 8601)")}),hR$=g8.object({}),uR$=g8.object({items:g8.array(bR$).describe("List of API keys (without key values)")}),lR$=g8.object({keyId:g8.string().describe("ID of the API key to update"),name:g8.string().min(1).max(64).optional().describe("New name for the API key"),permissions:fR$.optional().describe('New permissions. Format: { resource: [actions] } where resource is "self" for management tools or "conn_<UUID>" for connection-specific tools. Actions are tool names or "*" for all. Example: { "self": ["API_KEY_CREATE"] }. Replaces existing permissions.'),metadata:g8.record(g8.string(),g8.unknown()).optional().describe("New metadata. Replaces existing metadata.")}),cR$=g8.object({item:bR$.describe("The updated API key (without key value)")}),mR$=g8.object({keyId:g8.string().describe("ID of the API key to delete")}),dR$=g8.object({success:g8.boolean().describe("Whether the deletion was successful"),keyId:g8.string().describe("ID of the deleted API key")})});var $Q1;var iR$=D(()=>{b4();q0();ec();$Q1=h({name:"API_KEY_CREATE",description:"Create an API key with scoped permissions. The key value is returned only once \u2014 store it immediately.",annotations:{title:"Create API Key",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!1},inputSchema:yR$,outputSchema:gR$,handler:async($,Z)=>{t(Z),await Z.access.check();let Q=await Z.boundAuth.apiKey.create({name:$.name,permissions:$.permissions,expiresIn:$.expiresIn,metadata:{...$.metadata,organization:Z.organization}}),X=Q.expiresAt?Q.expiresAt instanceof Date?Q.expiresAt.toISOString():Q.expiresAt:null,Y=Q.createdAt instanceof Date?Q.createdAt.toISOString():Q.createdAt,J=d0(Z);if(J)k1.capture({distinctId:J,event:"api_key_created",...Z.organization?.id?{groups:{organization:Z.organization.id}}:{},properties:{key_id:Q.id,key_name:Q.name??$.name,organization_id:Z.organization?.id,has_expiry:!!X}});return{id:Q.id,name:Q.name??$.name,key:Q.key,permissions:Q.permissions??{},expiresAt:X,createdAt:Y}}})});var ZQ1;var pR$=D(()=>{b4();q0();ec();ZQ1=h({name:"API_KEY_DELETE",description:"Delete and instantly revoke an API key. Cannot be undone.",annotations:{title:"Delete API Key",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:mR$,outputSchema:dR$,handler:async($,Z)=>{t(Z),await Z.access.check();let Q=d0(Z);if(!Q)throw Error("User ID required to delete API key");let Y=(await Z.boundAuth.apiKey.list())?.find((W)=>W.id===$.keyId);if(!Y)throw Error("API key not found");let G=Y.metadata?.organization?.id,K=Z.organization?.id;if(G!==K)throw Error("Cannot delete API key from another organization");if(await Z.boundAuth.apiKey.delete($.keyId),K)k1.capture({distinctId:Q,event:"api_key_deleted",groups:{organization:K},properties:{key_id:$.keyId,organization_id:K}});return{success:!0,keyId:$.keyId}}})});var QQ1;var nR$=D(()=>{q0();ec();QQ1=h({name:"API_KEY_LIST",description:"List API keys for the current user in the current organization. Returns metadata only \u2014 key values are never shown after creation.",annotations:{title:"List API Keys",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:hR$,outputSchema:uR$,handler:async($,Z)=>{t(Z),await Z.access.check();let Q=await Z.boundAuth.apiKey.list(),X=Z.organization?.id;return{items:(Q??[]).filter((J)=>{return J.metadata?.organization?.id===X}).map((J)=>({id:J.id,name:J.name??"Unnamed Key",userId:J.userId,permissions:J.permissions??{},expiresAt:J.expiresAt?J.expiresAt instanceof Date?J.expiresAt.toISOString():J.expiresAt:null,createdAt:J.createdAt instanceof Date?J.createdAt.toISOString():J.createdAt}))}}})});var XQ1;var tR$=D(()=>{q0();ec();XQ1=h({name:"API_KEY_UPDATE",description:"Update an API key's name, permissions, or metadata. The key value cannot be changed or retrieved.",annotations:{title:"Update API Key",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:lR$,outputSchema:cR$,handler:async($,Z)=>{if(t(Z),await Z.access.check(),!d0(Z))throw Error("User ID required to update API key");let Y=(await Z.boundAuth.apiKey.list())?.find((H)=>H.id===$.keyId);if(!Y)throw Error(`API key not found: ${$.keyId}`);let G=Y.metadata?.organization?.id,K=Z.organization?.id;if(G!==K)throw Error("Cannot update API key from another organization");let W=await Z.boundAuth.apiKey.update({keyId:$.keyId,name:$.name,permissions:$.permissions,metadata:{...$.metadata,organization:Z.organization}});if(!W)throw Error(`Failed to update API key: ${$.keyId}`);return{item:{id:W.id,name:W.name??$.name??"Unnamed Key",userId:W.userId,permissions:W.permissions??{},expiresAt:W.expiresAt?W.expiresAt instanceof Date?W.expiresAt.toISOString():W.expiresAt:null,createdAt:W.createdAt instanceof Date?W.createdAt.toISOString():W.createdAt}}}})});var oR$=D(()=>{iR$();pR$();nR$();tR$();ec()});function ww($){let Z=$.trim();if(!Z)return{ok:!1,error:"Enter a website URL."};let Q=ic4.test(Z),X=pc4.test(Z),Y=nc4.test(Z);if(Q&&!X&&!Y)return{ok:!1,error:"Use an HTTP or HTTPS website URL."};let J=X?Z:`https://${Z}`,G;try{G=new URL(J)}catch{return{ok:!1,error:"Enter a valid website URL."}}if(G.protocol!=="http:"&&G.protocol!=="https:")return{ok:!1,error:"Use an HTTP or HTTPS website URL."};let K=G.hostname.split(".");if(K.length<2||K.some((W)=>!W||!tc4.test(W)))return{ok:!1,error:"Enter a valid website URL."};return G.protocol="https:",{ok:!0,value:G.origin}}var ic4,pc4,nc4,tc4;var Z00=D(()=>{ic4=/^[a-zA-Z][a-zA-Z\d+.-]*:/,pc4=/^[a-zA-Z][a-zA-Z\d+.-]*:\/\//,nc4=/^[^\s/:?#]+\.[^\s/:?#]+:\d+(?:[/?#]|$)/,tc4=/^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$/i});import{z as aY}from"zod";function RF0($){return{repository_id:$.repositoryId,provider:$.provider,host:$.host,path:$.path,default_branch:$.defaultBranch??null,web_url:$.webUrl??null}}function aR$($){let Z=oc4.safeParse($);if(!Z.success)return null;return{repositoryId:Z.data.repository_id,provider:Z.data.provider,host:Z.data.host,path:Z.data.path,defaultBranch:Z.data.default_branch??null,webUrl:Z.data.web_url??null}}function qF0($){return $.provider==="github"&&$.host.toLowerCase()==="github.com"?$.path:null}var rR$,oc4;var MF0=D(()=>{rR$=aY.object({repositoryId:aY.string().min(1),provider:aY.enum(["github","gitlab","bitbucket"]),host:aY.string().min(1),path:aY.string().min(1),defaultBranch:aY.string().nullable().optional(),webUrl:aY.string().nullable().optional()}),oc4=aY.object({repository_id:aY.string().min(1),provider:aY.enum(["github","gitlab","bitbucket"]),host:aY.string().min(1),path:aY.string().min(1),default_branch:aY.string().nullable().optional(),web_url:aY.string().nullable().optional()})});import{z as aX}from"zod";function _F($){if($.baseUrl)return $.baseUrl.replace(/\/+$/,"");return(($.settings??z0()).reportsInternalApiUrl??rc4).replace(/\/+$/,"")}function eR$($={}){return`${_F($)}/api/v2/mcp`}function fA($){let Z=$.apiKey??($.settings??z0()).reportsInternalApiKey;if(!Z)throw Error("REPORTS_INTERNAL_API_KEY (or the legacy COMMERCE_DISCOVERY_INTERNAL_API_KEY) is required to set up reports.");return Z}function VF0($){return new URL($).hostname}function sc4($){return $==="ownership_unverified"||$==="already_claimed_by_other_org"}function ec4($,Z={}){switch($){case"ownership_unverified":{let Q=Z.email?`O e-mail ${Z.email}`:"Este e-mail",X=Z.domain?` ${Z.domain}`:" este site";return`${Q} n\xE3o tem permiss\xE3o para reivindicar${X}. Use um e-mail do dom\xEDnio do site ou pe\xE7a ao suporte para autorizar seu dom\xEDnio.`}case"already_claimed_by_other_org":return"Este site j\xE1 pertence a outra organiza\xE7\xE3o. Fale com o suporte para transferir o acesso.";case"unknown":return"N\xE3o foi poss\xEDvel configurar o Reports. Tente novamente ou fale com o suporte.";default:return $}}async function $m4($){let Z=await Q00($);return sc4(Z?.error)?Z.error:"unknown"}async function Q00($){let Z=await $.text().catch(()=>"");if(!Z)return;try{return JSON.parse(Z)}catch{return}}async function kF0($){let Z=`Reports auth failed with status ${$.status}.`,Q=await $.text().catch(()=>"");if(!Q)return Z;try{let X=JSON.parse(Q),Y=typeof X.error==="string"?X.error:typeof X.message==="string"?X.message:null;return Y?`Reports auth failed: ${Y}.`:Z}catch{return Z}}async function Zq$($,Z={}){let Q=_F(Z),X=fA(Z),Y=Z.fetchImpl??fetch,J=VF0($.siteUrl),G=`${Q}/api/v2/internal/diagnostics/${encodeURIComponent(J)}/upgrade`,K=await Y(G,{method:"POST",headers:{Authorization:`Bearer ${X}`,"Content-Type":"application/json"},body:JSON.stringify({org_id:$.orgId,...$.orgName?{name:$.orgName}:{},...$.email?{email:$.email}:{},...$.reportUrl?{report_url:$.reportUrl}:{}}),signal:AbortSignal.timeout(IF0)});if(!K.ok){let H=await $m4(K);throw new $q$(H,{email:$.email,domain:J})}let W=ac4.safeParse(await Q00(K));if(!W.success)throw Error("Reports auth response did not include a token.");return{authorizationToken:W.data.token}}async function Qq$($,Z={}){let Q=_F(Z),X=fA(Z),Y=Z.fetchImpl??fetch,J=VF0($.siteUrl),G=`${Q}/api/v2/internal/diagnostics/${encodeURIComponent(J)}/bindings`,K=await Y(G,{method:"POST",headers:{Authorization:`Bearer ${X}`,"Content-Type":"application/json"},body:JSON.stringify({org_id:$.orgId,provider:$.provider,resource_id:$.resourceId}),signal:AbortSignal.timeout(IF0)});if(K.status===409)return{ok:!1,reason:"resource_already_bound",detail:"Este recurso j\xE1 est\xE1 vinculado a outra loja. Se ele \xE9 seu, fale com o suporte para revis\xE3o manual."};if(K.status===422){let H=sR$.safeParse(await Q00(K));return{ok:!1,reason:H.success?H.data.reason??"verification_failed":"verification_failed",detail:(H.success?H.data.detail:void 0)??"N\xE3o foi poss\xEDvel verificar o acesso a este recurso."}}if(!K.ok)throw Error(await kF0(K));let W=sR$.safeParse(await Q00(K));if(!W.success||!W.data.binding)throw Error("Reports bind response did not include a binding.");return{ok:!0,resourceId:W.data.binding.resource_id,evidence:W.data.binding.evidence}}async function Xq$($,Z={}){let Q=_F(Z),X=fA(Z),Y=Z.fetchImpl??fetch,J=VF0($.siteUrl),G=`${Q}/api/v2/internal/diagnostics/${encodeURIComponent(J)}/run`,K=await Y(G,{method:"POST",headers:{Authorization:`Bearer ${X}`,"Content-Type":"application/json"},body:JSON.stringify({org_id:$.orgId,...$.repository?{repository:RF0($.repository)}:{},...$.githubRepo?{github_repo:$.githubRepo}:{}}),signal:AbortSignal.timeout(IF0)});if(K.status===409)return{triggered:!1,reason:"not_upgraded"};if(!K.ok)throw Error(await kF0(K));return{triggered:!0}}async function Zm4($,Z,Q){try{return await Q8(async()=>{let X=await $(Z,{method:"GET",headers:{Authorization:`Bearer ${Q}`},signal:AbortSignal.timeout(IF0)});if(X.status>=500||X.status===429)throw new YQ1(await kF0(X));return X},{maxAttempts:3,minTimeout:200,maxTimeout:2000,multiplier:2,jitter:1,isRetriable:(X)=>X instanceof YQ1})}catch(X){if(X instanceof i6&&X.cause instanceof Error)throw X.cause;throw X}}async function Yq$($,Z={}){let Q=_F(Z),X=fA(Z),Y=Z.fetchImpl??fetch,J=VF0($.siteUrl),G=`${Q}/api/v2/internal/diagnostics/${encodeURIComponent(J)}/connections/status?org_id=${encodeURIComponent($.orgId)}`,K=await Zm4(Y,G,X);if(K.status===404||K.status===409)return{providers:{},claimed:!1};if(!K.ok)throw Error(await kF0(K));let W=Qm4.safeParse(await Q00(K));return{providers:W.success?W.data.providers:{},claimed:!0}}var rc4,IF0=15000,ac4,sR$,$q$,YQ1,Qm4;var bA=D(()=>{V8();i$();MF0();Z$();rc4=new URL(MD$).origin,ac4=aX.object({token:aX.string().min(1)}),sR$=aX.object({binding:aX.object({resource_id:aX.string(),evidence:aX.string()}).optional(),reason:aX.string().optional(),detail:aX.string().optional()});$q$=class $q$ extends Error{code;constructor($,Z={}){super(ec4($,Z));this.name="ReportsClaimError",this.code=$}};YQ1=class YQ1 extends Error{};Qm4=aX.object({providers:aX.record(aX.string(),aX.object({connected:aX.boolean(),via:aX.enum(["oauth","sa"]).nullable(),resource:aX.string().nullable()}))})});import{z as w3}from"zod";var Xm4,Ym4,JQ1;var Jq$=D(()=>{Z00();q0();bA();Xm4=w3.object({siteUrl:w3.string().min(1).describe("Website URL of the store being bound."),provider:w3.enum(["ga4","gsc"]).describe("Which Google source to bind: ga4 (Analytics) or gsc (Search Console)."),resourceId:w3.string().min(1).describe("The resource id the client typed: GA4 numeric property id, or GSC site (sc-domain:example.com or https://example.com/).")}),Ym4=w3.discriminatedUnion("ok",[w3.object({ok:w3.literal(!0),resourceId:w3.string(),evidence:w3.string()}),w3.object({ok:w3.literal(!1),reason:w3.string(),detail:w3.string()})]),JQ1=h({name:"REPORTS_BIND",description:"Bind a GA4 property or GSC site to the org's store via the shared service account (consent-free lane). The client grants deco-reader@\u2026 access to the resource and provides its id; Reports verifies the resource belongs to this domain before persisting. Returns ok:false with an actionable pt-BR detail when verification fails or the resource is already bound elsewhere.",annotations:{title:"Bind Reports Data Source",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},inputSchema:Xm4,outputSchema:Ym4,handler:async($,Z)=>{t(Z);let Q=n(Z);await Z.access.check("REPORTS_BIND","COMMERCE_DISCOVERY_BIND");let X=ww($.siteUrl);if(!X.ok)throw Error(X.error);return Qq$({siteUrl:X.value,orgId:Q.id,provider:$.provider,resourceId:$.resourceId.trim()})}})});import{z as vF}from"zod";var Jm4,Gm4,GQ1;var Gq$=D(()=>{Z00();q0();bA();Jm4=vF.object({siteUrl:vF.string().min(1).describe("Website URL of the store to inspect.")}),Gm4=vF.object({providers:vF.record(vF.string(),vF.object({connected:vF.boolean(),via:vF.enum(["oauth","sa"]).nullable(),resource:vF.string().nullable()})),claimed:vF.boolean().describe("False when the site isn't claimed/upgraded for this org \u2014 providers is then empty because the status is unreadable, NOT because nothing is connected. The UI must warn instead of rendering existing bindings as disconnected.")}),GQ1=h({name:"REPORTS_CONNECTION_STATUS",description:"Read per-provider connection status (ga4/gsc/vtex) for the org's store \u2014 { connected, via: oauth|sa, resource }. The single source of truth for whether a data source is connected, unifying the OAuth (Studio vault) and shared-SA binding lanes. Read-only.",annotations:{title:"Reports Connection Status",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},inputSchema:Jm4,outputSchema:Gm4,handler:async($,Z)=>{t(Z);let Q=n(Z);await Z.access.check("REPORTS_CONNECTION_STATUS","COMMERCE_DISCOVERY_CONNECTION_STATUS");let X=ww($.siteUrl);if(!X.ok)throw Error(X.error);return Yq$({siteUrl:X.value,orgId:Q.id})}})});import{z as X00}from"zod";var Km4,Wm4,KQ1;var Kq$=D(()=>{V8();MF0();Z00();q0();bA();Km4=X00.object({siteUrl:X00.string().min(1).describe("Website URL to run the diagnostic for.")}),Wm4=X00.object({triggered:X00.boolean(),reason:X00.string().optional()}),KQ1=h({name:"REPORTS_RUN",description:"Trigger the Reports diagnostic run for the current organization's store. Call once the data sources (GA4/GSC/VTEX) are connected \u2014 this run resolves credentials and produces the enriched report.",annotations:{title:"Run Reports",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},inputSchema:Km4,outputSchema:Wm4,requiresFeature:"diagnostic_enriched",requiresAiBudget:!0,handler:async($,Z)=>{t(Z);let Q=n(Z);await Z.access.check("REPORTS_RUN","COMMERCE_DISCOVERY_RUN");let X=ww($.siteUrl);if(!X.ok)throw Error(X.error);let Y=I8.REPORTS(Q.id),G=(await Z.storage.connections.findById(Y,Q.id))?.configuration_state,K=G&&typeof G==="object"?G:null,W=aR$(K?.repository),H=typeof K?.github_repo==="string"&&K.github_repo.length>0?K.github_repo:void 0;return Xq$({siteUrl:X.value,orgId:Q.id,repository:W??void 0,githubRepo:(W?qF0(W):H)??void 0})}})});import{z as e6}from"zod";var Hm4,Y00,Fm4,Um4,Nm4,Bm4,Wq$,Hq$,WQ1;var Fq$=D(()=>{Hm4=["github","gitlab","bitbucket"],Y00=e6.enum(Hm4),Fm4=["github_app","oauth","token","github_cli"],Um4=e6.enum(Fm4),Nm4=["active","revoked"],Bm4=e6.enum(Nm4),Wq$=e6.object({provider:Y00,host:e6.string().min(1).describe("Provider host, e.g. github.com"),path:e6.string().min(1).describe("Full namespace path, e.g. owner/name or group/sub/project")}),Hq$=e6.object({id:e6.string(),organizationId:e6.string(),type:Y00,host:e6.string(),authKind:Um4,externalAccountId:e6.string().describe("Provider-side account identity: installation id (GitHub App), user/group id (GitLab) or user/workspace uuid (Bitbucket)."),login:e6.string().describe("Display login of the account/namespace"),avatarUrl:e6.string().nullable(),installationId:e6.number().nullable().describe("GitHub App installation id; null for other auth kinds."),status:Bm4,createdAt:e6.string(),updatedAt:e6.string()}),WQ1=e6.object({id:e6.string(),organizationId:e6.string(),accountId:e6.string().nullable().describe("Credential-holding account; null for anonymous public clones."),provider:Y00,host:e6.string(),path:e6.string(),externalId:e6.string().nullable().describe("Provider repository/project id, when known."),defaultBranch:e6.string().nullable(),webUrl:e6.string(),visibility:e6.enum(["public","private","internal"]).nullable(),createdAt:e6.string(),updatedAt:e6.string()})});function Lm4($){let Z=$.toLowerCase();if(Z==="github.com"||Z==="www.github.com")return"github";if(Z==="gitlab.com"||Z==="www.gitlab.com")return"gitlab";if(Z==="bitbucket.org"||Z==="www.bitbucket.org")return"bitbucket";if(/(^|[.-])gitlab([.-]|$)/.test(Z))return"gitlab";return null}function Uq$($){let Z=$.toLowerCase();return Z.startsWith("www.")?Z.slice(4):Z}function xW($,Z){let Q=$.trim();if(!Q)return null;let X,Y,J=/^(?:[\w.-]+@)?([\w.-]+(?::\d+)?):(?!\/\/)(.+)$/.exec(Q);if(J&&!/^[a-z][a-z0-9+.-]*:\/\//i.test(Q))X=J[1],Y=J[2];else if(/^[a-z][a-z0-9+.-]*:\/\//i.test(Q)){let F;try{F=new URL(Q)}catch{return null}if(!/^(https?|ssh|git)(\+ssh)?:$/.test(F.protocol))return null;X=F.host,Y=F.pathname}else if(Z?.provider)X=Z.host??SF0[Z.provider],Y=Q;else return null;X=Uq$(X);let G=Z?.provider??Lm4(X);if(!G)return null;let K=Y.split("/").map((F)=>F.trim()).filter(Boolean),W=K.indexOf("-");if(W>=0)K=K.slice(0,W);if(Dm4.has(G))K=K.slice(0,2);if(K.length<2)return null;let H=K[K.length-1];if(K[K.length-1]=H.replace(/\.git$/i,""),K.some((F)=>F.length===0||F==="."||F===".."))return null;return{provider:G,host:X,path:K.join("/")}}function fW($){return`${$.host.toLowerCase()}/${$.path.toLowerCase()}`}function HQ1($){let Z=$.path.split("/");return Z[Z.length-1]??$.path}function wm4($){let Z=$.path.lastIndexOf("/");return Z<0?"":$.path.slice(0,Z)}function F9($){return{owner:wm4($),name:HQ1($)}}function sY($){return`https://${$.host}/${$.path}`}function FQ1($,Z){let Q=`${$.host}/${$.path}.git`;if(!Z)return`https://${Q}`;return`https://${Om4[$.provider]}:${encodeURIComponent(Z)}@${Q}`}function NB($,Z){let Q=Uq$(Z);switch($){case"github":return Q==="github.com"?"https://api.github.com":`https://${Q}/api/v3`;case"gitlab":return`https://${Q}/api/v4`;case"bitbucket":return"https://api.bitbucket.org/2.0"}}function BB($,Z){return{provider:"github",host:SF0.github,path:`${$}/${Z}`}}var SF0,Om4,Dm4;var UQ1=D(()=>{SF0={github:"github.com",gitlab:"gitlab.com",bitbucket:"bitbucket.org"},Om4={github:"x-access-token",gitlab:"oauth2",bitbucket:"x-token-auth"},Dm4=new Set(["github","bitbucket"])});function tG($,Z){return`${sY($)}/${jm4[$.provider]}/${Z}`}function Pm4($){let Z=$.toLowerCase();return zm4[Z]??Z}function Am4($,Z){let Q=Number($[3]);if(!Number.isSafeInteger(Q)||Q<=0)return null;let X=Pm4($[1]),Y=$[2],J=Z?decodeURIComponent(Y):Y;if(/^\d+$/.test(J))return null;let G=xW(`https://${X}/${J}`);if(!G)return null;return{repo:G,number:Q,url:tG(G,Q)}}function NQ1($){let Z=$.length>Nq$?$.slice(0,Nq$):$;for(let{re:Q,api:X}of Em4){let Y=Q.exec(Z),J=Y?Am4(Y,X===!0):null;if(J)return J}return null}var jm4,Em4,zm4,Nq$=200000;var Bq$=D(()=>{UQ1();jm4={github:"pull",gitlab:"-/merge_requests",bitbucket:"pull-requests"};Em4=[{re:/https?:\/\/([^/\s"']+)\/([^\s"']+?)\/-\/merge_requests\/(\d+)/},{re:/https?:\/\/([^/\s"']+)\/([^/\s"']+\/[^/\s"']+)\/pull\/(\d+)/},{re:/https?:\/\/([^/\s"']+)\/([^/\s"']+\/[^/\s"']+)\/pull-requests\/(\d+)/},{re:/https?:\/\/([^/\s"']+)\/repos\/([^/\s"']+\/[^/\s"']+)\/pulls\/(\d+)/,api:!0},{re:/https?:\/\/([^/\s"']+)\/api\/v4\/projects\/([^/\s"']+)\/merge_requests\/(\d+)/,api:!0},{re:/https?:\/\/([^/\s"']+)\/2\.0\/repositories\/([^/\s"']+\/[^/\s"']+)\/pullrequests\/(\d+)/,api:!0}],zm4={"api.github.com":"github.com","api.bitbucket.org":"bitbucket.org"}});function Oq$($){return BQ1[$]}function OQ1($,Z){return BQ1[$].checkoutCommand.replace("{number}",String(Z))}function Dq$($,Z){let{abbreviation:Q,numberSigil:X}=BQ1[$];return`${Q} ${X}${Z}`}var BQ1;var Lq$=D(()=>{BQ1={github:{name:"GitHub",cli:"gh",changeRequest:"pull request",abbreviation:"PR",createCommand:"gh pr create",checkoutCommand:"gh pr checkout {number}",numberSigil:"#"},gitlab:{name:"GitLab",cli:"glab",changeRequest:"merge request",abbreviation:"MR",createCommand:"glab mr create",checkoutCommand:"glab mr checkout {number}",numberSigil:"!"},bitbucket:{name:"Bitbucket",cli:null,changeRequest:"pull request",abbreviation:"PR",createCommand:`curl -fsS -X POST -H "Authorization: Bearer $BITBUCKET_TOKEN" -H "Content-Type: application/json" https://api.bitbucket.org/2.0/repositories/<workspace>/<repo>/pullrequests -d '{"title":"<title>","source":{"branch":{"name":"<branch>"}},"destination":{"branch":{"name":"<base>"}}}'`,checkoutCommand:"git fetch origin <source branch> && git checkout <source branch>",numberSigil:"#"}}});var W6=D(()=>{Fq$();UQ1();Bq$();Lq$()});async function DQ1($,Z,Q){let X=new AbortController,Y,J=new Promise((K,W)=>{Y=setTimeout(()=>{X.abort(),W(new wq$($.id,Q))},Q)}),G=(async()=>{let K=await KQ($,Z,!0);try{return(await K.listTools(void 0,{timeout:Q,signal:X.signal})).tools}finally{await K.close().catch(()=>{})}})();G.catch(()=>{});try{return await Promise.race([G,J])}finally{if(Y)clearTimeout(Y)}}var wq$;var jq$=D(()=>{J00();wq$=class wq$ extends Error{constructor($,Z){super(`listTools timed out after ${Z}ms for connection ${$}`);this.name="ListToolsTimeoutError"}}});var LQ1=v((Eq$)=>{Object.defineProperty(Eq$,"__esModule",{value:!0});Eq$.kvPrefix=Eq$.KvWatchInclude=void 0;Eq$.KvWatchInclude={LastValue:"",AllHistory:"history",UpdatesOnly:"updates"};Eq$.kvPrefix="KV_"});var Cq$=v((kq$)=>{Object.defineProperty(kq$,"__esModule",{value:!0});kq$.KvStatusImpl=kq$.Bucket=kq$.Kvm=kq$.kvOperationHdr=void 0;kq$.Base64KeyCodec=Rm4;kq$.NoopKvCodecs=wQ1;kq$.defaultBucketOpts=Aq$;kq$.validateKey=Tq$;kq$.validateSearchKey=Rq$;kq$.hasWildcards=qq$;kq$.validateBucket=CF0;var N9=tJ(),I5=gJ0(),U9=LQ1();function Rm4(){let $=(Z,Q)=>{let X=[];for(let Y of Z.split("."))switch(Y){case">":case"*":X.push(Y);break;default:X.push(Q(Y));break}return X.join(".")};return{encode(Z){return $(Z,btoa)},decode(Z){return $(Z,atob)}}}function wQ1(){return{key:{encode($){return $},decode($){return $}},value:{encode($){return typeof $==="string"?new TextEncoder().encode($):$},decode($){return $}}}}function Aq$(){return{replicas:1,history:1,timeout:2000,max_bytes:-1,maxValueSize:-1,codec:wQ1(),storage:I5.StorageType.File}}kq$.kvOperationHdr="KV-Operation";var Pq$="$KV",qm4=/^[-/=.\w]+$/,Mm4=/^[-/=.>*\w]+$/,Im4=/^[-\w]+$/;function Tq$($){if($.startsWith(".")||$.endsWith(".")||!qm4.test($))throw Error(`invalid key: ${$}`)}function Rq$($){if($.startsWith(".")||$.endsWith(".")||$.includes("..")||!Mm4.test($))throw Error(`invalid key: ${$}`)}function qq$($){if($.startsWith(".")||$.endsWith("."))throw Error(`invalid key: ${$}`);let Z=$.split("."),Q=!1;for(let X=0;X<Z.length;X++)switch(Z[X]){case"*":Q=!0;break;case">":if(X!==Z.length-1)throw Error(`invalid key: ${$}`);Q=!0;break;default:}return Q}function CF0($){if(!Im4.test($))throw Error(`invalid bucket name: ${$}`)}class Mq${js;constructor($){this.js=(0,I5.toJetStreamClient)($)}create($,Z={}){return this.#$($,Z)}open($,Z={}){return Z.bindOnly=!0,this.#$($,Z)}#$($,Z={}){let{ok:Q,min:X}=this.js.nc.features.get(N9.Feature.JS_KV);if(!Q)return Promise.reject(Error(`kv is only supported on servers ${X} or better`));if(Z.bindOnly)return $m.bind(this.js,$,Z);return $m.create(this.js,$,Z)}list(){let $=(Q)=>{let Y=Q.streams.filter((G)=>{return G.config.name.startsWith(U9.kvPrefix)});Y.forEach((G)=>{G.config.sealed=G.config.sealed||!1,G.config.deny_delete=G.config.deny_delete||!1,G.config.deny_purge=G.config.deny_purge||!1,G.config.allow_rollup_hdrs=G.config.allow_rollup_hdrs||!1});let J="";if(Y.length)J=this.js.nc.info?.cluster??"";return Y.map((G)=>{return new _F0(G,J)})},Z=`${this.js.prefix}.STREAM.LIST`;return new I5.ListerImpl(Z,$,this.js)}}kq$.Kvm=Mq$;class $m{js;jsm;stream;bucket;direct;codec;prefix;editPrefix;useJsPrefix;_prefixLen;constructor($,Z,Q){CF0($),this.js=Z,this.jsm=Q,this.bucket=$,this.prefix=Pq$,this.editPrefix="",this.useJsPrefix=!1,this._prefixLen=0}static async create($,Z,Q={}){CF0(Z);let X=await $.jetstreamManager(),Y=new $m(Z,$,X);return await Y.init(Q),Y}static async bind($,Z,Q={}){let X=$.getOptions()?.checkAPI||Q.bindOnly===!1,Y=await $.jetstreamManager(X),J={config:{allow_direct:Q.allow_direct}};CF0(Z);let G=new $m(Z,$,Y);return J.config.name=Q.streamName??G.bucketName(),Object.assign(G,J),G.stream=J.config.name,G.codec=Q.codec||wQ1(),G.direct=J.config.allow_direct??!1,G.initializePrefixes(J),G}async init($={}){let Z=Object.assign(Aq$(),$);this.codec=Z.codec;let Q={};if(this.stream=Q.name=$.streamName??this.bucketName(),Q.retention=I5.RetentionPolicy.Limits,Q.max_msgs_per_subject=Z.history,Z.max_bytes)Q.max_bytes=Z.max_bytes;if(Q.max_msg_size=Z.maxValueSize,Q.storage=Z.storage,$.placement)Q.placement=$.placement;if($.republish)Q.republish=$.republish;if($.description)Q.description=$.description;if($.markerTTL)Q.allow_msg_ttl=!0,Q.subject_delete_marker_ttl=(0,N9.nanos)(Z.markerTTL);if($.mirror){let H=Object.assign({},$.mirror);if(!H.name.startsWith(U9.kvPrefix))H.name=`${U9.kvPrefix}${H.name}`;Q.mirror=H,Q.mirror_direct=!0}else if($.sources){let H=$.sources.map((F)=>{let U=Object.assign({},F),N=U.name.startsWith(U9.kvPrefix)?U.name.substring(U9.kvPrefix.length):U.name;if(!U.name.startsWith(U9.kvPrefix))U.name=`${U9.kvPrefix}${U.name}`;if(!F.external&&N!==this.bucket)U.subject_transforms=[{src:`$KV.${N}.>`,dest:`$KV.${this.bucket}.>`}];return U});Q.sources=H,Q.subjects=[this.subjectForBucket()]}else Q.subjects=[this.subjectForBucket()];if($.metadata)Q.metadata=$.metadata;if(typeof $.compression==="boolean")Q.compression=$.compression?I5.StoreCompression.S2:I5.StoreCompression.None;let X=this.js.nc,Y=X.getServerVersion(),J=Y?(0,N9.compare)(Y,(0,N9.parseSemVer)("2.7.2"))>=0:!1;Q.discard=J?I5.DiscardPolicy.New:I5.DiscardPolicy.Old;let{ok:G,min:K}=X.features.get(N9.Feature.JS_ALLOW_DIRECT);if(!G&&$.allow_direct===!0){let H=Y?`${Y.major}.${Y.minor}.${Y.micro}`:"unknown";return Promise.reject(Error(`allow_direct is not available on server version ${H} - requires ${K}`))}if($.allow_direct=typeof $.allow_direct==="boolean"?$.allow_direct:G,Q.allow_direct=$.allow_direct,this.direct=Q.allow_direct,Q.num_replicas=Z.replicas,Z.ttl)Q.max_age=(0,N9.nanos)(Z.ttl);Q.allow_rollup_hdrs=!0;let W;try{if(W=await this.jsm.streams.info(Q.name),!W.config.allow_direct&&this.direct===!0)this.direct=!1}catch(H){if(H.message==="stream not found")W=await this.jsm.streams.add(Q);else throw H}this.initializePrefixes(W)}initializePrefixes($){this._prefixLen=0,this.prefix=`$KV.${this.bucket}`,this.useJsPrefix=this.js.apiPrefix!=="$JS.API";let{mirror:Z}=$.config;if(Z){let Q=Z.name;if(Q.startsWith(U9.kvPrefix))Q=Q.substring(U9.kvPrefix.length);if(Z.external&&Z.external.api!==""){let X=Z.name.substring(U9.kvPrefix.length);this.useJsPrefix=!1,this.prefix=`$KV.${X}`,this.editPrefix=`${Z.external.api}.$KV.${Q}`}else this.editPrefix=this.prefix}}bucketName(){return this.stream??`${U9.kvPrefix}${this.bucket}`}subjectForBucket(){return`${this.prefix}.${this.bucket}.>`}subjectForKey($,Z=!1){let Q=[];if(Z){if(this.useJsPrefix)Q.push(this.js.apiPrefix);if(this.editPrefix!=="")Q.push(this.editPrefix);else Q.push(this.prefix)}else if(this.prefix)Q.push(this.prefix);return Q.push($),Q.join(".")}fullKeyName($){if(this.prefix!=="")return`${this.prefix}.${$}`;return`${Pq$}.${this.bucket}.${$}`}get prefixLen(){if(this._prefixLen===0)this._prefixLen=this.prefix.length+1;return this._prefixLen}encodeKey($){let Z=[];for(let Q of $.split("."))switch(Q){case">":case"*":Z.push(Q);break;default:Z.push(this.codec.key.encode(Q));break}return Z.join(".")}decodeKey($){let Z=[];for(let Q of $.split("."))switch(Q){case">":case"*":Z.push(Q);break;default:Z.push(this.codec.key.decode(Q));break}return Z.join(".")}validateKey=Tq$;validateSearchKey=Rq$;hasWildcards=qq$;close(){return Promise.resolve()}dataLen($,Z){let Q=Z?Z.get(I5.JsHeaders.MessageSizeHdr)||"":"";if(Q!=="")return parseInt(Q,10);return $.length}smToEntry($){return new Iq$(this.bucket,this.prefixLen,$,this.codec)}jmToWatchEntry($,Z){return new Vq$(this.bucket,this.prefixLen,$,Z,this.codec)}async create($,Z,Q){let X;try{let J={previousSeq:0},G=await this._put($,Z,J,Q);return Promise.resolve(G)}catch(J){if(X=J,J instanceof I5.JetStreamApiError){let G=J;if(G.code!==I5.JetStreamApiCodes.StreamWrongLastSequence&&G.code!==I5.JetStreamApiCodes.StreamWrongLastSequenceUnknown)return Promise.reject(J)}}let Y=0;try{let J=await this.get($);if(J?.operation==="DEL"||J?.operation==="PURGE")return Y=J!==null?J.revision:0,this._put($,Z,{previousSeq:Y},Q);else return Promise.reject(X)}catch(J){return Promise.reject(J)}}update($,Z,Q,X){if(Q<=0)throw Error("version must be greater than 0");return this.put($,Z,{previousSeq:Q,timeout:X})}async _put($,Z,Q={},X){let Y=this.encodeKey($);this.validateKey(Y),Z=this.codec.value.encode(Z);let J={timeout:Q?.timeout};if(Q.previousSeq!==void 0){let G=(0,N9.headers)();J.headers=G,G.set(I5.PubHeaders.ExpectedLastSubjectSequenceHdr,`${Q.previousSeq}`)}if(X)(J.headers||(0,N9.headers)()).set(I5.PubHeaders.MessageTTL,X);try{return(await this.js.publish(this.subjectForKey(Y,!0),Z,J)).seq}catch(G){return Promise.reject(G)}}put($,Z,Q={}){return this._put($,Z,Q)}async get($,Z){let Q=this.encodeKey($);this.validateKey(Q);let X={last_by_subj:this.subjectForKey(Q)};if(Z&&Z.revision>0)X={seq:Z.revision};let Y=null;try{if(this.direct)Y=await this.jsm.direct.getMessage(this.bucketName(),X);else Y=await this.jsm.streams.getMessage(this.bucketName(),X);if(Y===null)return null;let J=this.smToEntry(Y);if(J.rawKey!==Q)return null;return J}catch(J){throw J}}purge($,Z){return this._deleteOrPurge($,"PURGE",Z)}delete($,Z){return this._deleteOrPurge($,"DEL",Z)}async purgeDeletes($=1800000){let Z=[],Q=await this.history({key:">"});await(async()=>{for await(let G of Q)if(G.operation==="DEL"||G.operation==="PURGE")Z.push(G)})().then(),Q.stop();let X=Date.now()-$,Y=Z.map((G)=>{let K=this.subjectForKey(G.key);if(G.created.getTime()>=X)return this.jsm.streams.purge(this.stream,{filter:K,keep:1});else return this.jsm.streams.purge(this.stream,{filter:K,keep:0})}),J=await Promise.all(Y);return J.unshift({success:!0,purged:0}),J.reduce((G,K)=>{return G.purged+=K.purged,G})}async _deleteOrPurge($,Z,Q){if(!this.hasWildcards($))return this._doDeleteOrPurge($,Z,Q);let X=await this.keys($),Y=[];for await(let J of X)if(Y.push(this._doDeleteOrPurge(J,Z)),Y.length===100)await Promise.all(Y),Y.length=0;if(Y.length>0)await Promise.all(Y)}async _doDeleteOrPurge($,Z,Q){let X=this.encodeKey($);this.validateKey(X);let Y=(0,N9.headers)();if(Y.set(kq$.kvOperationHdr,Z),Z==="PURGE"){let J=Q;if(Y.set(I5.JsHeaders.RollupHdr,I5.JsHeaders.RollupValueSubject),typeof J?.ttl==="string"&&J.ttl!=="")Y.set(I5.PubHeaders.MessageTTL,`${J.ttl}`)}if(Q?.previousSeq)Y.set(I5.PubHeaders.ExpectedLastSubjectSequenceHdr,`${Q.previousSeq}`);await this.js.publish(this.subjectForKey(X,!0),N9.Empty,{headers:Y})}_buildCC($,Z,Q={}){let Y=(!Array.isArray($)?[$]:$).map((K)=>{let W=this.encodeKey(K);return this.validateSearchKey(K),this.fullKeyName(W)}),J=I5.DeliverPolicy.LastPerSubject;if(Z===U9.KvWatchInclude.AllHistory)J=I5.DeliverPolicy.All;if(Z===U9.KvWatchInclude.UpdatesOnly)J=I5.DeliverPolicy.New;let G=void 0;if(Y.length===1)G=Y[0],Y=void 0;return Object.assign({deliver_policy:J,ack_policy:I5.AckPolicy.None,filter_subjects:Y,filter_subject:G,flow_control:!0,idle_heartbeat:(0,N9.nanos)(5000)},Q)}remove($){return this.purge($)}async history($={}){let Z=$.key??">",Q={};Q.headers_only=$.headers_only||!1;let X=new N9.QueuedIteratorImpl,Y=()=>{X.stop()},J=this._buildCC(Z,U9.KvWatchInclude.AllHistory,Q),G=await this.js.consumers.getPushConsumer(this.stream,J);if(X._data=G,(await G.info(!0)).num_pending===0)return X.push(Y),X;let W=await G.consume({callback:(H)=>{let F=this.jmToWatchEntry(H,!1);if(X.push(F),X.received++,H.info.pending===0)X.push(Y)}});return W.closed().then(()=>{X.push(Y)}),(async()=>{for await(let H of W.status())switch(H.type){case"heartbeat":X.push(()=>{X.stop()});break}})().then(),X.iterClosed.then(()=>{W.stop()}),X}canSetWatcherName(){let $=this.js.nc,{ok:Z}=$.features.get(N9.Feature.JS_NEW_CONSUMER_CREATE_API);return Z}async watch($={}){let Z=$.key??">",Q=new N9.QueuedIteratorImpl,X={};X.headers_only=$.headers_only||!1;let Y=U9.KvWatchInclude.LastValue;if($.include===U9.KvWatchInclude.AllHistory)Y=U9.KvWatchInclude.AllHistory;else if($.include===U9.KvWatchInclude.UpdatesOnly)Y=U9.KvWatchInclude.UpdatesOnly;let J=$.ignoreDeletes===!0,G=this._buildCC(Z,Y,X);if(G.name=`KV_WATCHER_${N9.nuid.next()}`,$.resumeFromRevision&&$.resumeFromRevision>0)G.deliver_policy=I5.DeliverPolicy.StartSequence,G.opt_start_seq=$.resumeFromRevision;let K=await this.js.consumers.getPushConsumer(this.stream,G),H=(await K.info(!0)).num_pending,F=Y===U9.KvWatchInclude.UpdatesOnly||H===0;Q._data=K;let U=0,N=await K.consume({callback:(B)=>{if(!F)U++,F=U>=H;let O=this.jmToWatchEntry(B,F);if(J&&O.operation==="DEL")return;Q.push(O),Q.received++}});return Q.iterClosed.then(()=>{N.stop()}),N.closed().then(()=>{Q.push(()=>{Q.stop()})}),Q}async keys($=">"){let Z=new N9.QueuedIteratorImpl,Q=this._buildCC($,U9.KvWatchInclude.LastValue,{headers_only:!0}),X=await this.js.consumers.getPushConsumer(this.stream,Q);if((await X.info()).num_pending===0)return Z.stop(),Z;Z._data=X;let J=await X.consume({callback:(G)=>{let K=G.headers?.get(kq$.kvOperationHdr);if(K!=="DEL"&&K!=="PURGE"){let W=this.decodeKey(G.subject.substring(this.prefixLen));Z.push(W)}if(G.info.pending===0)J.stop()}});return(async()=>{for await(let G of J.status())switch(G.type){case"heartbeat":Z.push(()=>{Z.stop()});break}})().then(),J.closed().then(()=>{Z.push(()=>{Z.stop()})}),Z.iterClosed.then(()=>{J.stop()}),Z}purgeBucket($){return this.jsm.streams.purge(this.bucketName(),$)}destroy(){return this.jsm.streams.delete(this.bucketName())}async status(){let Z=this.js.nc.info?.cluster??"",Q=this.bucketName(),X=await this.jsm.streams.info(Q);return new _F0(X,Z)}}kq$.Bucket=$m;class _F0{si;cluster;constructor($,Z=""){this.si=$,this.cluster=Z}get bucket(){return this.si.config.name.startsWith(U9.kvPrefix)?this.si.config.name.substring(U9.kvPrefix.length):this.si.config.name}get values(){return this.si.state.messages}get history(){return this.si.config.max_msgs_per_subject}get ttl(){return(0,N9.millis)(this.si.config.max_age)}get markerTTL(){if(typeof this.si.config.subject_delete_marker_ttl==="number")return(0,N9.millis)(this.si.config.subject_delete_marker_ttl);return 0}get bucket_location(){return this.cluster}get backingStore(){return this.si.config.storage}get storage(){return this.si.config.storage}get replicas(){return this.si.config.num_replicas}get description(){return this.si.config.description??""}get maxBucketSize(){return this.si.config.max_bytes}get maxValueSize(){return this.si.config.max_msg_size}get max_bytes(){return this.si.config.max_bytes}get placement(){return this.si.config.placement||{cluster:"",tags:[]}}get placementCluster(){return this.si.config.placement?.cluster??""}get republish(){return this.si.config.republish??{src:"",dest:""}}get streamInfo(){return this.si}get size(){return this.si.state.bytes}get metadata(){return this.si.config.metadata??{}}get compression(){if(this.si.config.compression)return this.si.config.compression!==I5.StoreCompression.None;return!1}}kq$.KvStatusImpl=_F0;class Iq${bucket;sm;prefixLen;codec;constructor($,Z,Q,X){this.bucket=$,this.prefixLen=Z,this.sm=Q,this.codec=X}get rawKey(){return this.sm.subject.substring(this.prefixLen)}get key(){return this.codec.key.decode(this.rawKey)}get value(){return this.codec.value.decode(this.sm.data)}get delta(){return 0}get created(){return this.sm.time}get revision(){return this.sm.seq}get operation(){if(this.sm.header?.has("Nats-Marker-Reason")){if(this.sm.header?.get("Nats-Marker-Reason")==="MaxAge")return"PURGE"}return this.sm.header?.get(kq$.kvOperationHdr)||"PUT"}get length(){let $=this.sm.header.get(I5.JsHeaders.MessageSizeHdr)||"";if($!=="")return parseInt($,10);return this.sm.data.length}json($){return JSON.parse(N9.TD.decode(this.value),$)}string(){return N9.TD.decode(this.value)}}class Vq${bucket;sm;prefixLen;update;codec;constructor($,Z,Q,X,Y){this.bucket=$,this.prefixLen=Z,this.sm=Q,this.update=X,this.codec=Y}get rawKey(){return this.sm.subject.substring(this.prefixLen)}get key(){return this.codec.key.decode(this.rawKey)}get value(){return this.codec.value.decode(this.sm.data)}get created(){return new Date((0,N9.millis)(this.sm.info.timestampNanos))}get revision(){return this.sm.seq}get operation(){if(this.sm.headers?.has("Nats-Marker-Reason")){if(this.sm.headers?.get("Nats-Marker-Reason")==="MaxAge")return"PURGE"}return this.sm.headers?.get(kq$.kvOperationHdr)||"PUT"}get delta(){return this.sm.info.pending}get length(){let $=this.sm.headers?.get(I5.JsHeaders.MessageSizeHdr)||"";if($!=="")return parseInt($,10);return this.sm.data.length}get isUpdate(){return this.update}json($){return JSON.parse(N9.TD.decode(this.value),$)}string(){return N9.TD.decode(this.value)}}});var jQ1=v((bW)=>{Object.defineProperty(bW,"__esModule",{value:!0});bW.validateKey=bW.validateBucket=bW.NoopKvCodecs=bW.Kvm=bW.defaultBucketOpts=bW.Bucket=bW.Base64KeyCodec=bW.KvWatchInclude=bW.kvPrefix=void 0;var _q$=LQ1();Object.defineProperty(bW,"kvPrefix",{enumerable:!0,get:function(){return _q$.kvPrefix}});Object.defineProperty(bW,"KvWatchInclude",{enumerable:!0,get:function(){return _q$.KvWatchInclude}});var yA=Cq$();Object.defineProperty(bW,"Base64KeyCodec",{enumerable:!0,get:function(){return yA.Base64KeyCodec}});Object.defineProperty(bW,"Bucket",{enumerable:!0,get:function(){return yA.Bucket}});Object.defineProperty(bW,"defaultBucketOpts",{enumerable:!0,get:function(){return yA.defaultBucketOpts}});Object.defineProperty(bW,"Kvm",{enumerable:!0,get:function(){return yA.Kvm}});Object.defineProperty(bW,"NoopKvCodecs",{enumerable:!0,get:function(){return yA.NoopKvCodecs}});Object.defineProperty(bW,"validateBucket",{enumerable:!0,get:function(){return yA.validateBucket}});Object.defineProperty(bW,"validateKey",{enumerable:!0,get:function(){return yA.validateKey}})});var W00=v((jw)=>{Object.defineProperty(jw,"__esModule",{value:!0});jw.NoopKvCodecs=jw.Kvm=jw.defaultBucketOpts=jw.Bucket=jw.Base64KeyCodec=jw.KvWatchInclude=void 0;var gm4=jQ1();Object.defineProperty(jw,"KvWatchInclude",{enumerable:!0,get:function(){return gm4.KvWatchInclude}});var K00=jQ1();Object.defineProperty(jw,"Base64KeyCodec",{enumerable:!0,get:function(){return K00.Base64KeyCodec}});Object.defineProperty(jw,"Bucket",{enumerable:!0,get:function(){return K00.Bucket}});Object.defineProperty(jw,"defaultBucketOpts",{enumerable:!0,get:function(){return K00.defaultBucketOpts}});Object.defineProperty(jw,"Kvm",{enumerable:!0,get:function(){return K00.Kvm}});Object.defineProperty(jw,"NoopKvCodecs",{enumerable:!0,get:function(){return K00.NoopKvCodecs}})});function Ew(){let $=new TextEncoder,Z=new TextDecoder;return{encode:(Q)=>$.encode(JSON.stringify(Q)),decode:(Q)=>JSON.parse(Z.decode(Q))}}class EQ1{options;kv=null;codec=Ew();constructor($){this.options=$}async init(){let $=this.options.getJetStream();if(!$)return;this.kv=await new xq$.Kvm($).create(um4,{storage:vq$.StorageType.Memory})}async get($,Z){if(!this.kv)return null;try{let Q=await this.kv.get(`${$}.${Z}`);if(!Q?.value?.length)return null;if(Q.operation==="DEL"||Q.operation==="PURGE")return null;return this.codec.decode(Q.value)}catch{return null}}async set($,Z,Q){if(!this.kv)return;try{await this.kv.put(`${$}.${Z}`,this.codec.encode(Q))}catch{}}async invalidate($){if(!this.kv)return;await Promise.all(["tools","resources","prompts"].map(async(Q)=>{try{await this.kv.delete(`${Q}.${$}`)}catch{}}))}teardown(){this.kv=null}}function lm4($,Z,Q){if(Q<=0)return!0;if($===void 0)return!0;return Z-$>=Q}function fq$($){let Z=["tools","resources","prompts"];for(let Q of Z){let X=`${Q}:${$}`;xF0.delete(X),F00.delete(X)}}function vF0($){return $ instanceof z1&&$.code===V1.MethodNotFound}function cm4($){return $ instanceof z1&&$.code===-32000&&/connection closed/i.test($.message)}async function Pw($,Z,Q,X,Y,J=0){if(!X)try{return await Q()}catch(H){if(vF0(H))return[];return H00.add(1,{type:$,outcome:"error",stage:"no_cache"}),null}let G=`${$}:${Z}`,K=await X.get($,Z);if(K===null)try{let H=await Q();return X.set($,Z,H).catch(()=>{}),xF0.set(G,Date.now()),H00.add(1,{type:$,outcome:"miss",stage:"miss"}),H}catch(H){if(vF0(H))return X.set($,Z,[]).catch(()=>{}),[];return H00.add(1,{type:$,outcome:"error",stage:"miss"}),null}if(H00.add(1,{type:$,outcome:"hit",stage:"hit"}),lm4(xF0.get(G),Date.now(),J)&&!F00.has(G)){F00.add(G),xF0.set(G,Date.now());let H=Q().then((F)=>X.set($,Z,F)).catch((F)=>{if(vF0(F)||cm4(F)){if(vF0(F))X.set($,Z,[]).catch(()=>{});return}H00.add(1,{type:$,outcome:"error",stage:"revalidation"})}).finally(()=>F00.delete(G));Y?.(H)}return K}function zQ1($){bq$=$}function b9(){return bq$}var vq$,xq$,H00,um4="DECOCMS_MCP_LISTS",F00,xF0,zw=30000,bq$=null;var eY=D(()=>{k9();B6();vq$=k(bN(),1),xq$=k(W00(),1),H00=J$.createCounter("mcp_list_cache.fetches",{description:"MCP list cache fetch outcomes (hit, miss, error)",unit:"{fetches}"});F00=new Set;J$.createObservableGauge("mcp_list_cache.pending_revalidations",{description:"In-flight background MCP list revalidations on this pod",unit:"{revalidations}"}).addCallback(($)=>$.observe(F00.size));xF0=new Map});function fF0($){return(Z)=>{if(Z instanceof z1&&Z.code===V1.MethodNotFound)return $;throw Z}}var yq$=D(()=>{k9()});function bF0($,Z,Q){let X=Aw($,Z,Q,b9()??void 0),Y=dP(X,{name:"studio-mcp-server",version:"1.0.0"},{capabilities:mm4,toolCallTimeoutMs:vl});Y.server.setRequestHandler(tD,async()=>{return await X.listResources().catch(fF0({resources:[]}))}),Y.server.setRequestHandler(oD,async()=>{return await X.listResourceTemplates().catch(fF0({resourceTemplates:[]}))}),Y.server.setRequestHandler(rD,async()=>{return await X.listPrompts().catch(fF0({prompts:[]}))});let J=Y.close.bind(Y);return Y.close=async()=>{await J(),await X.close().catch(()=>{})},Y}var mm4;var gq$=D(()=>{sQ();k9();U00();eY();yq$();mm4={tools:{},resources:{},prompts:{}}});var gA=D(()=>{J00();jq$();gq$()});async function yF0($,Z,Q){await(await KQ(Z,$,!1)).callTool({name:"ON_MCP_CONFIGURATION",arguments:{state:Q.state,scopes:Q.scopes,firstRun:Q.firstRun,...Q.vault?{vault:Q.vault}:{}}})}var PQ1=D(()=>{gA()});import{z as AQ1}from"zod";function pm4($){let{owner:Z,name:Q}=F9({path:$.path});return{owner:Z,name:Q,url:$.webUrl??`https://${$.host}/${$.path}`,repositoryId:$.repositoryId}}function nm4($,Z){if(!Z)return $;return $.filter((Q)=>Q.connection_id!==Z)}function tm4($,Z){let{repository:Q,github_repo:X,...Y}=$,J=Z?qF0(Z):null;return{...Y,...Z?{repository:RF0(Z)}:{},...J?{github_repo:J}:{}}}async function om4($,Z,Q){let X=I8.REPORTS(Z),Y=await $.storage.connections.findById(X,Z);if(!Y)throw Error("Reports is not set up for this organization yet");let J=tm4(Y.configuration_state??{},Q);await $.storage.connections.update(X,{configuration_state:J});try{await yF0($,{...Y,configuration_state:J},{state:J,scopes:Y.configuration_scopes??[],firstRun:!1})}catch(G){console.error("[reports] ON_MCP_CONFIGURATION after repository change failed",G)}}async function rm4($,Z,Q,X){let Y=Cl(Z),J=await $.storage.virtualMcps.findById(Y,Z);if(!J)return;let G=J.metadata??{},K=G.githubRepo,{githubRepo:W,...H}=G;await $.storage.virtualMcps.update(Y,Q,{metadata:{...H,...X?{githubRepo:pm4(X)}:{}},connections:nm4(J.connections??[],K?.connectionId??null)})}var dm4,im4,TQ1;var hq$=D(()=>{V8();W6();MF0();q0();PQ1();dm4=AQ1.object({repositoryId:AQ1.string().min(1).nullable().describe("Studio repository id to diagnose, or null to unlink the current one.")}),im4=AQ1.object({repository:rR$.nullable()});TQ1=h({name:"REPORTS_SET_REPOSITORY",description:"Point the organization's Reports diagnostic at one of its linked repositories, or unlink the current one. Works for GitHub, GitLab and Bitbucket.",annotations:{title:"Set Reports Repository",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:dm4,outputSchema:im4,handler:async($,Z)=>{t(Z);let Q=n(Z);await Z.access.check();let X=d0(Z);if(!X)throw Error("User ID required to set the diagnostic's repository");let Y=null;if($.repositoryId){let J=await Z.storage.repositories.get($.repositoryId,Q.id);if(!J)throw Error(`Repository ${$.repositoryId} is not linked to this organization`);Y={repositoryId:J.id,provider:J.provider,host:J.host,path:J.path,defaultBranch:J.defaultBranch,webUrl:J.webUrl}}return await om4(Z,Q.id,Y),await rm4(Z,Q.id,X,Y),{repository:Y}}})});function Tw($,Z){let Q=`/${encodeURIComponent($)}/settings`;return Z?`${Q}/${Z}`:Q}function gF0($,Z){let Q=`/${encodeURIComponent($)}/agents`,X=Z.panel?`${Q}/${Z.panel}`:Q,Y=new URLSearchParams({virtualmcpid:Z.projectId,...Z.search??{}});return`${X}?${Y.toString()}`}var Rw=D(()=>{O30()});import{z as xF}from"zod";async function $d4($,Z,Q,X){let Y=await $.storage.connections.findById(Z,Q);if(Y)return Y;throw X}async function Zd4($,Z,Q,X){let Y=await $.storage.virtualMcps.findById(Z,Q);if(Y)return Y;throw X}var RQ1,am4=3600000,sm4,em4,qQ1;var uq$=D(()=>{V8();Z00();q0();sH();Rw();bA();RQ1=LW0,sm4=xF.object({siteUrl:xF.string().min(1).describe("Website URL to configure.")}),em4=xF.object({connection:gQ,virtualMcp:hQ,reportApp:xF.object({connectionId:xF.string(),virtualMcpId:xF.string(),toolName:xF.literal(RQ1)}),created:xF.object({connection:xF.boolean(),virtualMcp:xF.boolean()})});qQ1=h({name:"REPORTS_SETUP",description:"Create or return the Reports connection and virtual MCP for the current organization.",annotations:{title:"Set Up Reports",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:sm4,outputSchema:em4,handler:async($,Z)=>{t(Z);let Q=n(Z);await Z.access.check("COLLECTION_CONNECTIONS_CREATE");let X=d0(Z);if(!X)throw Error("User ID required to set up Reports");let Y=ww($.siteUrl);if(!Y.ok)throw Error(Y.error);let J=I8.REPORTS(Q.id),G=Cl(Q.id),K={email:Z.auth.user?.email,reportUrl:`${Z.baseUrl}${gF0(Q.slug??Q.id,{projectId:G,panel:"app",search:{connection:J,tool:RQ1}})}`},W=await Z.storage.connections.findById(J,Q.id),H={connection:!1,virtualMcp:!1},F=await Zq$({siteUrl:Y.value,orgId:Q.id,orgName:Q.name,...K}),U=eR$();if(W)console.log("[reports] syncing connection to claimed site",{orgId:Q.id,siteUrl:Y.value,connectionId:J}),W=await Z.storage.connections.update(W.id,{connection_url:U,connection_token:F.authorizationToken,metadata:{...W.metadata??{},siteUrl:Y.value}});else{console.log("[reports] creating connection",{orgId:Q.id,siteUrl:Y.value,connectionId:J});try{let L=hD$(Q.id,F.authorizationToken,U);W=await Z.storage.connections.create({...L,metadata:{...L.metadata??{},siteUrl:Y.value},organization_id:Q.id,created_by:X}),H.connection=!0}catch(L){W=await $d4(Z,J,Q.id,L)}}let N=await Z.storage.virtualMcps.findById(G,Q.id);if(!N){console.log("[reports] creating virtual MCP",{orgId:Q.id,siteUrl:Y.value,connectionId:W.id,virtualMcpId:G});try{N=await Z.storage.virtualMcps.create(Q.id,X,uD$(Q.id,W.id),{id:G}),H.virtualMcp=!0}catch(L){N=await Zd4(Z,G,Q.id,L)}}if(!N.pinned)N=await Z.storage.virtualMcps.update(N.id,X,{pinned:!0});let B=await Z.db.selectFrom("organization").select(["createdAt"]).where("id","=",Q.id).executeTakeFirst();if((B?Date.now()-new Date(B.createdAt).getTime():Number.POSITIVE_INFINITY)<am4){let w=(await Z.storage.organizationSettings.get(Q.id))?.flags,j={};if(w?.reports_only==null)j.reports_only=!0;if(Object.keys(j).length>0)await Z.storage.organizationSettings.upsert(Q.id,{flags:j})}return{connection:W,virtualMcp:N,reportApp:{connectionId:W.id,virtualMcpId:N.id,toolName:RQ1},created:H}}})});var lq$=D(()=>{Jq$();Gq$();Kq$();hq$();uq$()});function N00($,Z,Q){if(Z.some((X)=>X!=="*"&&X.startsWith("SELF::"))&&$.SELF===void 0)$.SELF={value:`${Q}_self`}}function B00($,Z){let Q=new Map;for(let X of Z){if(X==="*")continue;let[Y,J]=uH0(X);if(!Xd4.has(J))continue;let G=ve(Y,$);if(typeof G!=="object"||G===null||!("value"in G))continue;let K=G.value;if(typeof K!=="string")continue;Q.set(`${K}:${J}`,{targetConnectionId:K,scope:J})}return[...Q.values()]}async function O00($,Z,Q,X){for(let G of Z){if(G==="*")continue;let[K]=uH0(G),W=ve(K,$);if(W===void 0||W===null)throw Error(`Scope references key "${K}" but it's not present in state`)}let Y=RP$($,Z),J=`${Q}_self`;for(let G of Y){if(G===J)continue;let K=await X.storage.connections.findById(G);if(!K||K.organization_id!==Q)throw Error(`Referenced connection not found: ${G}`);try{await X.access.check(G)}catch(W){throw Error(`Access denied to referenced connection: ${G}. ${W.message}`)}}}var Xd4;var MQ1=D(()=>{uZ1();MW0();Xd4=new Set([RW0,qW0])});import{z as cq$}from"zod";var Yd4,Jd4,IQ1;var mq$=D(()=>{b4();q0();Z$();eY();gA();MQ1();EF0();sH();Yd4=cq$.object({data:K30.describe("Data for the new connection (id is auto-generated if not provided)")}),Jd4=cq$.object({item:gQ.describe("The created connection entity")}),IQ1=h({name:"COLLECTION_CONNECTIONS_CREATE",description:"Create a new MCP connection. Auto-fetches and caches the server's tool list.",annotations:{title:"Create Connection",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!1},inputSchema:Yd4,outputSchema:Jd4,handler:async($,Z)=>{t(Z);let Q=n(Z);await Z.access.check();let X=d0(Z);if(!X)throw Error("User ID required to create connection");let Y={...$.data,organization_id:Q.id,created_by:X};if(Y.id){if((await Z.storage.connections.findById(Y.id))?.organization_id===Q.id)throw Error("Connection already exists in organization");if(await Z.storage.connections.findBySanitizedId(Y.id))throw Error("Connection id conflicts with an existing connection's isolated database schema")}if(Y.connection_type==="VIRTUAL"){let U=Bu(Y.connection_url);if(!U)throw Error("VIRTUAL connection requires connection_url in format: virtual://$virtual_mcp_id");let N=await Z.storage.virtualMcps.findById(U);if(!N)throw Error(`Virtual MCP not found: ${U}`);if(N.organization_id!==Q.id)throw Error("Virtual MCP does not belong to the current organization");Y.connection_url=Ou(U)}if(Y.connection_type==="STDIO"&&!z0().localMode)throw Error("STDIO connections are only available in local mode (--local-mode).");let J=await oc({id:`pending-${Date.now()}`,title:Y.title,connection_type:Y.connection_type,connection_url:Y.connection_url,connection_token:Y.connection_token,connection_headers:Y.connection_headers}).catch(()=>null),G=J?.tools?.length?J.tools:null,K=J?.scopes?.length?J.scopes:Y.configuration_scopes??null,W=Y.configuration_state??null;if(W&&K?.length)N00(W,K,Q.id),await O00(W,K,Q.id,Z);let H=await Z.storage.connections.createNew({...Y,tools:null,configuration_state:W,configuration_scopes:K}),F=W&&K?.length?B00(W,K):[];if(F.length>0){let U;try{await Z.storage.connectionCredentialVault.replaceGrantsForSubject({organizationId:Q.id,subjectConnectionId:H.id,createdBy:X,grants:F});let{plaintextToken:N,record:B}=await Z.storage.connectionCredentialVault.createOrRotateWorkloadToken({organizationId:Q.id,subjectConnectionId:H.id});U=B.id,await(await KQ(H,Z,!1)).callTool({name:"ON_MCP_CONFIGURATION",arguments:{state:W,scopes:K,firstRun:!0,vault:{baseUrl:Z.baseUrl,org:Q.slug??Q.id,subjectConnectionId:H.id,token:N}}})}catch(N){if(U)await Z.storage.connectionCredentialVault.revokeWorkloadToken({organizationId:Q.id,subjectConnectionId:H.id,tokenId:U});throw await Z.storage.connections.delete(H.id),N}}if(G)b9()?.set("tools",H.id,G).catch(()=>{});return k1.capture({distinctId:X,event:"connection_created",groups:{organization:Q.id},properties:{connection_id:H.id,connection_type:H.connection_type,app_name:H.app_name??null,organization_id:Q.id,tools_count:G?.length??0}}),{item:H}}})});import{z as oG}from"zod/v4";import{z as dq$}from"zod/v4";import{z as hF0}from"zod/v4";import{z as fF}from"zod/v4";import{z as Hd4}from"zod/v4";import{z as hA}from"zod/v4";import{z as bF}from"zod/v4";import{z as R7}from"zod/v4";import{z as iq$}from"zod/v4";import{z as cF0}from"zod/v4";import{z as _d4}from"zod/v4";import{z as pq$}from"zod/v4";import{z as uF0}from"zod/v4";import{z as ld4}from"zod/v4";function D00($,Z){if($===Z)return!0;if($==null||Z==null)return $===Z;if(typeof $!==typeof Z)return!1;if(Array.isArray($)&&Array.isArray(Z)){if($.length!==Z.length)return!1;return $.every((Q,X)=>D00(Q,Z[X]))}if(typeof $==="object"&&typeof Z==="object"){let Q=Object.keys($),X=Object.keys(Z);if(Q.length!==X.length)return!1;return Q.every((Y)=>X.includes(Y)&&D00($[Y],Z[Y]))}return!1}function kd4(){return($)=>{if(!Array.isArray($))return!0;let Z=[];return $.every((Q)=>{if(Z.some((Y)=>D00(Q,Y)))return!1;return Z.push(Q),!0})}}function lF0($,Z){return $.safeParse(Z).success}function WQ($){if(typeof $==="boolean")return $?oG.any():oG.never();let Z={};for(let Y of id4)Y.apply(Z,$);let Q=[];if(Z.string!==!1)Q.push(Z.string||oG.string());if(Z.number!==!1)Q.push(Z.number||oG.number());if(Z.boolean!==!1)Q.push(Z.boolean||oG.boolean());if(Z.null!==!1)Q.push(Z.null||oG.null());if(Z.array!==!1)Q.push(Z.array||oG.array(oG.any()));if(Z.tuple!==!1&&Z.tuple!==void 0)Q.push(Z.tuple);if(Z.object!==!1)if(Z.object)Q.push(Z.object);else{let Y=oG.custom((J)=>{return typeof J==="object"&&J!==null&&!Array.isArray(J)},"Must be an object, not an array");Q.push(Y)}if(Z.file!==!1&&Z.file!==void 0)Q.push(Z.file);let X;if(Q.length===0)X=oG.never();else if(Q.length===1)X=Q[0];else if(!Object.keys($).some((J)=>J!=="$schema"&&J!=="title"&&J!=="description"))X=oG.any();else X=oG.union(Q);for(let Y of pd4)X=Y.apply(X,$);return X}var Gd4=class{apply($,Z){if(!Z.type)return;let Q=Array.isArray(Z.type)?Z.type:[Z.type],X=new Set(Q);if(!X.has("string"))$.string=!1;if(!X.has("number")&&!X.has("integer"))$.number=!1;if(!X.has("boolean"))$.boolean=!1;if(!X.has("null"))$.null=!1;if(!X.has("array"))$.array=!1;if(!X.has("object"))$.object=!1;if(X.has("integer")&&$.number!==!1){let Y=$.number||dq$.number();if(Y instanceof dq$.ZodNumber)$.number=Y.int()}}},Kd4=class{apply($,Z){if(Z.const===void 0)return;let Q=Z.const;if($.string=!1,$.number=!1,$.boolean=!1,$.null=!1,$.array=!1,$.object=!1,typeof Q==="string")$.string=hF0.literal(Q);else if(typeof Q==="number")$.number=hF0.literal(Q);else if(typeof Q==="boolean")$.boolean=hF0.literal(Q);else if(Q===null)$.null=hF0.null();else if(Array.isArray(Q))$.array=void 0;else if(typeof Q==="object")$.object=void 0}},Wd4=class{apply($,Z){if(!Z.enum)return;if(Z.enum.length===0){if(!Z.type)$.string=!1,$.number=!1,$.boolean=!1,$.null=!1,$.array=!1,$.object=!1;return}let Q={string:Z.enum.filter((X)=>typeof X==="string"),number:Z.enum.filter((X)=>typeof X==="number"),boolean:Z.enum.filter((X)=>typeof X==="boolean"),null:Z.enum.filter((X)=>X===null),array:Z.enum.filter((X)=>Array.isArray(X)),object:Z.enum.filter((X)=>typeof X==="object"&&X!==null&&!Array.isArray(X))};$.string=this.createTypeSchema(Q.string,"string"),$.number=this.createTypeSchema(Q.number,"number"),$.boolean=this.createTypeSchema(Q.boolean,"boolean"),$.null=Q.null.length>0?fF.null():!1,$.array=Q.array.length>0?void 0:!1,$.object=Q.object.length>0?void 0:!1}createTypeSchema($,Z){if($.length===0)return!1;if($.length===1)return fF.literal($[0]);if(Z==="string")return fF.enum($);if(Z==="number"){let[Q,X,...Y]=$;return fF.union([fF.literal(Q),fF.literal(X),...Y.map((J)=>fF.literal(J))])}if(Z==="boolean")return fF.union([fF.literal(!0),fF.literal(!1)]);return!1}},Fd4=class{apply($,Z){let Q=Z;if(Q.type==="string"&&Q.format==="binary"&&Q.contentEncoding==="binary"){let X=Hd4.file();if(Q.minLength!==void 0)X=X.min(Q.minLength);if(Q.maxLength!==void 0)X=X.max(Q.maxLength);if(Q.contentMediaType!==void 0)X=X.mime(Q.contentMediaType);$.file=X,$.string=!1}}},Ud4=class{apply($,Z){let Q=Z;if(Z.type===void 0&&(Q.minLength!==void 0||Q.maxLength!==void 0||Q.pattern!==void 0)){if($.string===void 0)$.string=hA.string()}}},Nd4=class{apply($,Z){let Q=Z;if(Q.minLength===void 0)return;if($.string!==!1){let X=$.string||hA.string();if(X instanceof hA.ZodString)$.string=X.refine((Y)=>{return Array.from(Y).length>=Q.minLength},{message:`String must be at least ${Q.minLength} characters long`})}}},Bd4=class{apply($,Z){let Q=Z;if(Q.maxLength===void 0)return;if($.string!==!1){let X=$.string||hA.string();if(X instanceof hA.ZodString)$.string=X.refine((Y)=>{return Array.from(Y).length<=Q.maxLength},{message:`String must be at most ${Q.maxLength} characters long`})}}},Od4=class{apply($,Z){let Q=Z;if(!Q.pattern)return;if($.string!==!1){let X=$.string||hA.string();if(X instanceof hA.ZodString){let Y=new RegExp(Q.pattern);$.string=X.regex(Y)}}}},Dd4=class{apply($,Z){let Q=Z;if(Q.minimum===void 0)return;if($.number!==!1){let X=$.number||bF.number();if(X instanceof bF.ZodNumber)$.number=X.min(Q.minimum)}}},Ld4=class{apply($,Z){let Q=Z;if(Q.maximum===void 0)return;if($.number!==!1){let X=$.number||bF.number();if(X instanceof bF.ZodNumber)$.number=X.max(Q.maximum)}}},wd4=class{apply($,Z){let Q=Z;if(Q.exclusiveMinimum===void 0)return;if($.number!==!1){let X=$.number||bF.number();if(X instanceof bF.ZodNumber)if(typeof Q.exclusiveMinimum==="number")$.number=X.gt(Q.exclusiveMinimum);else $.number=!1}}},jd4=class{apply($,Z){let Q=Z;if(Q.exclusiveMaximum===void 0)return;if($.number!==!1){let X=$.number||bF.number();if(X instanceof bF.ZodNumber)if(typeof Q.exclusiveMaximum==="number")$.number=X.lt(Q.exclusiveMaximum);else $.number=!1}}},Ed4=class{apply($,Z){let Q=Z;if(Q.multipleOf===void 0)return;if($.number!==!1){let X=$.number||bF.number();if(X instanceof bF.ZodNumber)$.number=X.refine((Y)=>{if(Q.multipleOf===0)return!1;let J=Y/Q.multipleOf,G=Math.round(J),K=Math.min(Math.abs(Y)*Number.EPSILON*10,Math.abs(Q.multipleOf)*Number.EPSILON*10);return Math.abs(J-G)<=K/Math.abs(Q.multipleOf)},{message:`Must be a multiple of ${Q.multipleOf}`})}}},zd4=class{apply($,Z){let Q=Z;if(Z.type===void 0&&(Q.minItems!==void 0||Q.maxItems!==void 0||Q.items!==void 0||Q.prefixItems!==void 0)){if($.array===void 0)$.array=R7.array(R7.any())}}},Pd4=class{apply($,Z){let Q=Z;if(Q.minItems===void 0)return;if($.array!==!1)$.array=($.array||R7.array(R7.any())).min(Q.minItems)}},Ad4=class{apply($,Z){let Q=Z;if(Q.maxItems===void 0)return;if($.array!==!1)$.array=($.array||R7.array(R7.any())).max(Q.maxItems)}},Td4=class{apply($,Z){let Q=Z;if($.array===!1)return;if(Array.isArray(Q.items))$.array=$.array||R7.array(R7.any());else if(Q.items&&typeof Q.items!=="boolean"&&!Q.prefixItems){let X=WQ(Q.items),Y=R7.array(X);if($.array&&$.array instanceof R7.ZodArray){let J=$.array._def;if(J.checks)J.checks.forEach((G)=>{if(G._zod&&G._zod.def){let K=G._zod.def;if(K.check==="min_length"&&K.minimum!==void 0)Y=Y.min(K.minimum);else if(K.check==="max_length"&&K.maximum!==void 0)Y=Y.max(K.maximum)}})}$.array=Y}else if(typeof Q.items==="boolean"&&Q.items===!1)if(!Q.prefixItems)$.array=R7.array(R7.any()).max(0);else $.array=$.array||R7.array(R7.any());else if(typeof Q.items==="boolean"&&Q.items===!0)$.array=$.array||R7.array(R7.any());else if(Q.prefixItems)$.array=$.array||R7.array(R7.any())}},Rd4=class{apply($,Z){if(Z.type!=="array")return;let Q=Z;if(!Array.isArray(Q.items))return;if($.array===!1)return;let X=Q.items.map((J)=>WQ(J)),Y;if(X.length===0)Y=iq$.tuple([]);else Y=iq$.tuple(X);if(Q.minItems!==void 0&&Q.minItems>X.length)Y=!1;if(Q.maxItems!==void 0&&Q.maxItems<X.length)Y=!1;$.tuple=Y,$.array=!1}},qd4=class{apply($,Z){let Q=Z;if($.object===!1)return;if(Q.properties||Q.required||Q.additionalProperties!==void 0)$.object=$.object||cF0.object({}).passthrough()}},Md4=class{apply($,Z){let Q=Z;if(Z.type===void 0&&(Q.maxProperties!==void 0||Q.minProperties!==void 0)){if($.object===void 0)$.object=cF0.object({}).passthrough()}}},Id4=class{apply($,Z){let Q=Z;if(Q.maxProperties===void 0)return;if($.object!==!1){let X=$.object||cF0.object({}).passthrough();$.object=X.refine((Y)=>Object.keys(Y).length<=Q.maxProperties,{message:`Object must have at most ${Q.maxProperties} properties`})}}},Vd4=class{apply($,Z){let Q=Z;if(Q.minProperties===void 0)return;if($.object!==!1){let X=$.object||cF0.object({}).passthrough();$.object=X.refine((Y)=>Object.keys(Y).length>=Q.minProperties,{message:`Object must have at least ${Q.minProperties} properties`})}}},Sd4=class{apply($,Z){if(!Z.not)return $;let Q=WQ(Z.not);return $.refine((X)=>!lF0(Q,X),{message:"Value must not match the 'not' schema"})}},Cd4=class{apply($,Z){if(Z.uniqueItems!==!0)return $;return $.refine(kd4(),{message:"Array items must be unique"})}},vd4=class{apply($,Z){if(!Z.allOf||Z.allOf.length===0)return $;return Z.allOf.map((X)=>WQ(X)).reduce((X,Y)=>_d4.intersection(X,Y),$)}},xd4=class{apply($,Z){if(!Z.anyOf||Z.anyOf.length===0)return $;let Q=Z.anyOf.length===1?WQ(Z.anyOf[0]):pq$.union([WQ(Z.anyOf[0]),WQ(Z.anyOf[1]),...Z.anyOf.slice(2).map((X)=>WQ(X))]);return pq$.intersection($,Q)}},fd4=class{apply($,Z){if(!Z.oneOf||Z.oneOf.length===0)return $;let Q=Z.oneOf.map((X)=>WQ(X));return $.refine((X)=>{let Y=0;for(let J of Q)if(J.safeParse(X).success){if(Y++,Y>1)return!1}return Y===1},{message:"Value must match exactly one of the oneOf schemas"})}},bd4=class{apply($,Z){let Q=Z;if(Q.prefixItems&&Array.isArray(Q.prefixItems)){let Y=Q.prefixItems.map((J)=>WQ(J));return $.refine((J)=>{if(!Array.isArray(J))return!0;for(let G=0;G<Math.min(J.length,Y.length);G++)if(!lF0(Y[G],J[G]))return!1;if(J.length>Y.length){if(typeof Q.items==="boolean"&&Q.items===!1)return!1;else if(Q.items&&typeof Q.items==="object"&&!Array.isArray(Q.items)){let G=WQ(Q.items);for(let K=Y.length;K<J.length;K++)if(!lF0(G,J[K]))return!1}}return!0},{message:"Array does not match prefixItems schema"})}return $}},yd4=class{apply($,Z){let Q=Z;if(!Q.properties&&!Q.required&&Q.additionalProperties!==!1)return $;if($ instanceof uF0.ZodObject||$ instanceof uF0.ZodRecord){let X={};if(Q.properties){for(let[Y,J]of Object.entries(Q.properties))if(J!==void 0)X[Y]=WQ(J)}if(Q.required&&Array.isArray(Q.required)){let Y=new Set(Q.required);for(let J of Object.keys(X))if(!Y.has(J))X[J]=X[J].optional()}else for(let Y of Object.keys(X))X[Y]=X[Y].optional();if(Q.additionalProperties===!1)return uF0.object(X);else return uF0.object(X).passthrough()}return $.refine((X)=>{if(typeof X!=="object"||X===null||Array.isArray(X))return!0;if(Q.properties){for(let[Y,J]of Object.entries(Q.properties))if(J!==void 0){if(Object.getOwnPropertyDescriptor(X,Y)!==void 0){if(!WQ(J).safeParse(X[Y]).success)return!1}}}if(Q.required&&Array.isArray(Q.required)){for(let Y of Q.required)if(Object.getOwnPropertyDescriptor(X,Y)===void 0)return!1}if(Q.additionalProperties===!1&&Q.properties){let Y=new Set(Object.keys(Q.properties));for(let J in X)if(!Y.has(J))return!1}return!0},{message:"Object constraints validation failed"})}},gd4=class{apply($,Z){if(!Z.enum||Z.enum.length===0)return $;let Q=Z.enum.filter((X)=>Array.isArray(X)||typeof X==="object"&&X!==null);if(Q.length===0)return $;return $.refine((X)=>{if(typeof X!=="object"||X===null)return!0;return Q.some((Y)=>D00(X,Y))},{message:"Value must match one of the enum values"})}},hd4=class{apply($,Z){if(Z.const===void 0)return $;let Q=Z.const;if(typeof Q!=="object"||Q===null)return $;return $.refine((X)=>D00(X,Q),{message:"Value must equal the const value"})}},ud4=class{apply($,Z){if(Z.description)$=$.describe(Z.description);return $}},cd4=class{apply($,Z){var Q;let X=Z;if(!((Q=X.required)==null?void 0:Q.includes("__proto__"))||Z.type!==void 0)return $;return ld4.any().refine((Y)=>this.validateRequired(Y,X.required),{message:"Missing required properties"})}validateRequired($,Z){if(typeof $!=="object"||$===null||Array.isArray($))return!0;return Z.every((Q)=>Object.prototype.hasOwnProperty.call($,Q))}},md4=class{apply($,Z){var Q;let X=Z;if(X.contains===void 0)return $;let Y=WQ(X.contains),J=(Q=X.minContains)!=null?Q:1,G=X.maxContains;return $.refine((K)=>{if(!Array.isArray(K))return!0;let W=0;for(let H of K)if(lF0(Y,H))W++;if(W<J)return!1;if(G!==void 0&&W>G)return!1;return!0},{message:"Array must contain required items matching the schema"})}},dd4=class{apply($,Z){let{default:Q}=Z;if(Q===void 0)return $;if(!$.safeParse(Q).success)return $;return $.default(Q)}},id4,pd4;var nq$=D(()=>{id4=[new Kd4,new Wd4,new Gd4,new Fd4,new Ud4,new zd4,new Md4,new Nd4,new Bd4,new Od4,new Dd4,new Ld4,new wd4,new jd4,new Ed4,new Rd4,new Pd4,new Ad4,new Td4,new Id4,new Vd4,new qd4],pd4=[new cd4,new gd4,new hd4,new vd4,new xd4,new fd4,new bd4,new yd4,new md4,new Sd4,new Cd4,new dd4,new ud4]});class VQ1{constructor($){this._url=$}start(){if(this._socket)throw Error("WebSocketClientTransport already started! If using Client class, note that connect() calls start() automatically.");return new Promise(($,Z)=>{this._socket=new WebSocket(this._url,nd4),this._socket.onerror=(Q)=>{let X="error"in Q?Q.error:Error(`WebSocket error: ${JSON.stringify(Q)}`);Z(X),this.onerror?.(X)},this._socket.onopen=()=>{$()},this._socket.onclose=()=>{this.onclose?.()},this._socket.onmessage=(Q)=>{let X;try{X=sJ.parse(JSON.parse(Q.data))}catch(Y){this.onerror?.(Y);return}this.onmessage?.(X)}})}async close(){this._socket?.close()}send($){return new Promise((Z,Q)=>{if(!this._socket){Q(Error("Not connected"));return}this._socket?.send(JSON.stringify($)),Z()})}}var nd4="mcp";var tq$=D(()=>{k9()});function td4($){let Z=$;if(!Z||typeof Z!=="object"||!("method"in Z))return null;switch(Z.method){case"initialize":{let Q=Z?.params?.protocolVersion;if(!Q)return null;return{type:"emit",message:{result:{protocolVersion:Q,capabilities:{tools:{}},serverInfo:{name:"deco-chat-server",version:"1.0.0"}},jsonrpc:Z.jsonrpc??"2.0",id:Z.id}}}case"notifications/roots/list_changed":case"notifications/initialized":case"notifications/cancelled":case"notifications/progress":return{type:"suppress"};default:return null}}var mF0;var kQ1=D(()=>{Tl();mF0=class mF0 extends AF{constructor($,Z){super($,Z)}send($,Z){let Q=td4($);if(Q?.type==="emit")return this.onmessage?.(Q.message),Promise.resolve();if(Q?.type==="suppress")return Promise.resolve();return super.send($,Z)}}});var oq$,rq$=async($,Z,Q)=>{let X=od4($.connection,Z,Q);if(!X)throw Error("Unknown MCP connection type");let Y=new oq$({name:$?.name??"MCP Client",version:"1.0.0"});return await Y.connect(X),{client:Y}},od4=($,Z,Q)=>{if($.type==="Websocket")return new VQ1(new URL($.url));if($.type!=="SSE"&&$.type!=="HTTP")return null;let Y={...$.token?{authorization:`Bearer ${$.token}`}:{},...Q??{},..."headers"in $?$.headers||{}:{}};if($.type==="SSE"){let J={requestInit:{headers:Y,signal:Z}};if($.token)J.eventSourceInit={fetch:(G,K)=>{return fetch(G,{...K,headers:{...Y,Accept:"text/event-stream"},signal:Z})}};return new JB(new URL($.url),J)}return new mF0(new URL($.url),{requestInit:{headers:Y,signal:Z,credentials:"include"}})};var aq$=D(()=>{zF();Hs();tq$();k9();sQ();kQ1();oq$=class oq$ extends LZ{constructor($,Z){super($,{jsonSchemaValidator:u5,...Z})}async listTools($,Z){return await this.request({method:"tools/list",params:$},lo,Z)}}});function ad4($,Z){if(uA.set($,Z),uA.size>rd4){let Q=uA.keys().next().value;if(Q!==void 0)uA.delete(Q)}}function $M$($){let Z=(Q)=>{if("connection"in $)return rq$({connection:$.connection},void 0,Q);return $.client};return new Proxy({},{get(Q,X){if(X==="toJSON")return null;if(typeof X!=="string")throw Error("Name must be a string");if(X==="listTools")return K;async function Y(W,H=X){let F=$?.debugId?.(),U=F?{"x-trace-debug-id":F}:void 0,{client:N}=await Z(U),{structuredContent:B,isError:O,content:L}=await N.callTool({name:String(H),arguments:W});if(O){let j=L?.[0]?.text,E=typeof j==="string"?sq$(j):null,z=E?.code&&typeof $?.getErrorByStatusCode==="function"?$.getErrorByStatusCode(E.code,E.message,E.traceId):null;if(z)throw z;throw Error(`Tool ${String(H)} returned an error: ${JSON.stringify(B??L)}`)}if(B!==void 0)return B;let w=L?.[0]?.text;return typeof w==="string"?sq$(w):void 0}async function J(){let{client:W}=await Z(),{tools:H}=await W.listTools();return H}async function G(){if(!("connection"in $))return J();let W=$.connection,H=JSON.stringify(W);try{if(!uA.has(H))ad4(H,J());return await uA.get(H)}catch(F){console.error("Failed to list tools",F),uA.delete(H);return}}async function K(){return(await G()??[]).map((H)=>eq$(H,Y))}return Y.asTool=async()=>{let H=(await G()??[]).find((F)=>F.name===X);if(!H)throw Error(`Tool ${X} not found`);return eq$(H,Y)},Y}})}var sq$=($)=>{try{return JSON.parse($)}catch{return $}},rd4=500,uA,eq$=($,Z)=>{return{...$,id:$.name,inputSchema:$.inputSchema?WQ($.inputSchema):void 0,outputSchema:$.outputSchema?WQ($.outputSchema):void 0,execute:(Q)=>{return Z(Q.context,$.name)}}};var ZM$=D(()=>{nq$();aq$();uA=new Map});function qw($){return $M$($)}var Zm;var SQ1=D(()=>{ZM$();Zm=new Proxy({},{get($,Z){if(Z==="toJSON")return null;if(Z==="forConnection")return(Q)=>qw({connection:Q});if(Z==="forClient")return(Q)=>qw({client:Q});return globalThis[Z]}})});function dF0($){return{isImplementedBy:(Z)=>{for(let Q of $){let X=typeof Q.name==="string"?new RegExp(`^${Q.name}$`):Q.name,Y=Z.find((J)=>X.test(J.name));if(!Y&&Q.opt)continue;if(!Y)return!1}return!0}}}var yF=($)=>{return{...dF0($),forClient:(Z)=>{return qw({client:Z})},forConnection:(Z)=>{return qw({connection:Z})}}};var lA=D(()=>{SQ1()});import{z as B9}from"zod";var QM$,iF0,XM$,pF0,YM$,sd4;var JM$=D(()=>{lA();QM$=B9.object({specversion:B9.literal("1.0").describe("CloudEvents specification version"),id:B9.string().describe("Unique identifier for this event (UUID recommended)"),source:B9.string().describe("Connection ID of the event publisher"),type:B9.string().describe("Event type (e.g., 'order.created', 'user.signup')"),time:B9.string().datetime().optional().describe("Timestamp of when the event occurred (ISO 8601)"),subject:B9.string().optional().describe("Subject/resource identifier (e.g., order ID, user ID)"),datacontenttype:B9.string().optional().default("application/json").describe("Content type of the data attribute"),dataschema:B9.string().url().optional().describe("URI to the schema for the data attribute"),data:B9.unknown().optional().describe("Event payload (any JSON value)")}),iF0=B9.object({events:B9.array(QM$).min(1).describe("Batch of CloudEvents to process")}),XM$=B9.object({success:B9.boolean().optional().describe("Whether this event was processed successfully"),error:B9.string().optional().describe("Error message for this event"),retryAfter:B9.number().int().positive().optional().describe("Re-deliver this event after this many ms")}),pF0=B9.object({success:B9.boolean().optional().describe("Batch success - applies to events not in results"),error:B9.string().optional().describe("Batch error message - applies to events not in results"),processedCount:B9.number().int().min(0).optional().describe("Number of events successfully processed"),retryAfter:B9.number().int().positive().optional().describe("Batch retryAfter - applies to events not in results"),results:B9.record(B9.string(),XM$).optional().describe("Per-event results keyed by event ID")}),YM$=[{name:"ON_EVENTS",inputSchema:iF0,outputSchema:pF0}],sd4=yF(YM$)});import{z as O9}from"zod";var GM$,KM$,WM$,HM$,FM$,UM$,nF0,CQ1;var _Q1=D(()=>{lA();GM$=O9.object({type:O9.literal("string"),enum:O9.array(O9.string()).optional(),description:O9.string().optional()}),KM$=O9.object({type:O9.string(),description:O9.string(),paramsSchema:O9.record(O9.string(),GM$)}),WM$=O9.object({}),HM$=O9.object({triggers:O9.array(KM$)}),FM$=O9.object({type:O9.string(),params:O9.record(O9.string(),O9.string()),enabled:O9.boolean(),callbackUrl:O9.url().optional(),callbackToken:O9.string().min(1).optional()}),UM$=O9.object({success:O9.boolean()}),nF0=[{name:"TRIGGER_LIST",inputSchema:WM$,outputSchema:HM$},{name:"TRIGGER_CONFIGURE",inputSchema:FM$,outputSchema:UM$}],CQ1=yF(nF0)});import{z as b$}from"zod";var ed4,$i4,Zi4,Qi4,Xi4,Yi4,Ji4,Gi4,Ki4,Wi4,Hi4,Fi4,cA;var L00=D(()=>{ed4=b$.object({prefix:b$.string().optional().describe("Filter objects by prefix (e.g., 'folder/' for folder contents)"),maxKeys:b$.number().optional().default(1000).describe("Maximum number of keys to return (default: 1000)"),continuationToken:b$.string().optional().describe("Token for pagination from previous response"),delimiter:b$.string().optional().describe("Delimiter for grouping keys (typically '/'). When set, commonPrefixes returns folder paths.")}),$i4=b$.object({objects:b$.array(b$.object({key:b$.string().describe("Object key/path"),size:b$.number().describe("Object size in bytes"),lastModified:b$.string().describe("Last modified timestamp"),etag:b$.string().describe("Entity tag for the object")})),nextContinuationToken:b$.string().optional().describe("Token for fetching next page of results"),isTruncated:b$.boolean().describe("Whether there are more results available"),commonPrefixes:b$.array(b$.string()).optional().describe("Folder paths when delimiter is used (e.g., ['photos/2024/', 'photos/2025/'])")}),Zi4=b$.object({key:b$.string().describe("Object key/path to get metadata for")}),Qi4=b$.object({contentType:b$.string().optional().describe("MIME type of the object"),contentLength:b$.number().describe("Size of the object in bytes"),lastModified:b$.string().describe("Last modified timestamp"),etag:b$.string().describe("Entity tag for the object"),metadata:b$.record(b$.string(),b$.string()).optional().describe("Custom metadata key-value pairs")}),Xi4=b$.object({key:b$.string().describe("Object key/path to generate URL for"),expiresIn:b$.number().optional().describe("URL expiration time in seconds (default: from state config or 3600)")}),Yi4=b$.object({url:b$.string().describe("Presigned URL for downloading the object"),expiresIn:b$.number().describe("Expiration time in seconds that was used")}),Ji4=b$.object({key:b$.string().describe("Object key/path for the upload"),expiresIn:b$.number().optional().describe("URL expiration time in seconds (default: from state config or 3600)"),contentType:b$.string().optional().describe("MIME type for the object being uploaded")}),Gi4=b$.object({url:b$.string().describe("Presigned URL for uploading the object"),expiresIn:b$.number().describe("Expiration time in seconds that was used")}),Ki4=b$.object({key:b$.string().describe("Object key/path to delete")}),Wi4=b$.object({success:b$.boolean().describe("Whether the deletion was successful"),key:b$.string().describe("The key that was deleted")}),Hi4=b$.object({keys:b$.array(b$.string()).max(1000).describe("Array of object keys/paths to delete (max 1000)")}),Fi4=b$.object({deleted:b$.array(b$.string()).describe("Array of successfully deleted keys"),errors:b$.array(b$.object({key:b$.string(),message:b$.string()})).describe("Array of errors for failed deletions")}),cA=[{name:"LIST_OBJECTS",inputSchema:ed4,outputSchema:$i4},{name:"GET_OBJECT_METADATA",inputSchema:Zi4,outputSchema:Qi4},{name:"GET_PRESIGNED_URL",inputSchema:Xi4,outputSchema:Yi4},{name:"PUT_PRESIGNED_URL",inputSchema:Ji4,outputSchema:Gi4},{name:"DELETE_OBJECT",inputSchema:Ki4,outputSchema:Wi4},{name:"DELETE_OBJECTS",inputSchema:Hi4,outputSchema:Fi4}]});import{z as h6}from"zod";var NM$,BM$,OM$,w00,tF0,oF0,rF0,aF0,Ui4;var vQ1=D(()=>{lA();NM$=h6.object({primary:h6.string().optional().describe("Primary brand color (hex)"),secondary:h6.string().optional().describe("Secondary brand color (hex)"),accent:h6.string().optional().describe("Accent / highlight color (hex)"),background:h6.string().optional().describe("Background color (hex)"),foreground:h6.string().optional().describe("Foreground / text color (hex)")}),BM$=h6.object({heading:h6.string().optional().describe("Font family for headings"),body:h6.string().optional().describe("Font family for body text"),code:h6.string().optional().describe("Font family for code / monospace")}),OM$=h6.object({logo:h6.string().optional().describe("Logo URL"),favicon:h6.string().optional().describe("Favicon URL"),ogImage:h6.string().optional().describe("Open Graph image URL")}),w00=h6.object({id:h6.string(),name:h6.string().describe("Brand / company name"),domain:h6.string().optional().describe("Company domain (e.g. example.com)"),colors:NM$.optional().describe("Semantic color palette"),fonts:BM$.optional().describe("Font families by role"),assets:OM$.optional().describe("Visual identity assets"),overview:h6.string().optional().describe("Company overview / description"),tagline:h6.string().optional().describe("Brand tagline"),tone:h6.string().optional().describe("Tone of voice description"),metadata:h6.record(h6.string(),h6.unknown()).optional().describe("Extra design tokens and metadata")}),tF0=h6.object({id:h6.string().optional().describe("Brand ID. Omit to get the default brand.")}),oF0=h6.object({}),rF0=h6.object({items:h6.array(w00)}),aF0=[{name:"BRAND_GET",inputSchema:tF0,outputSchema:w00},{name:"BRAND_LIST",inputSchema:oF0,outputSchema:rF0,opt:!0}],Ui4=yF(aF0)});var xQ1=D(()=>{lA();JM$();_Q1();L00();vQ1()});import{z as C8}from"zod";function eF0($){let Q=$.replace(/[.*+?^${}()|[\]\\]/g,"\\$&").replace(/%/g,".*").replace(/_/g,".");return new RegExp(`^${Q}$`,"i")}function OB($){return C8.object({items:C8.array($).describe("Array of collection items"),totalCount:C8.number().int().min(0).optional().describe("Total number of matching items (if available)"),hasMore:C8.boolean().optional().describe("Whether there are more items available")})}function E00($){return C8.object({item:$.nullable().describe("The retrieved item, or null if not found")})}function Oi4($){return C8.object({data:$.partial().describe("Data for the new entity (id may be auto-generated)")})}function Di4($){return C8.object({item:$.describe("The created entity with generated id")})}function Li4($){return C8.object({id:C8.string().describe("ID of the entity to update"),data:$.partial().describe("Partial entity data to update")})}function wi4($){return C8.object({item:$.describe("The updated entity")})}function P00($){return C8.object({item:$.describe("The deleted entity")})}function $U0($,Z,Q){let X=$.toUpperCase(),Y=Q?.readOnly??!1,J=[{name:`COLLECTION_${X}_LIST`,inputSchema:yW,outputSchema:OB(Z)},{name:`COLLECTION_${X}_GET`,inputSchema:j00,outputSchema:E00(Z)}];if(!Y)J.push({name:`COLLECTION_${X}_CREATE`,inputSchema:Oi4(Z),outputSchema:Di4(Z),opt:!0},{name:`COLLECTION_${X}_UPDATE`,inputSchema:Li4(Z),outputSchema:wi4(Z),opt:!0},{name:`COLLECTION_${X}_DELETE`,inputSchema:z00,outputSchema:P00(Z),opt:!0});return J}var sF0,Ni4,DM$,Bi4,yW,j00,z00;var j3=D(()=>{sF0=C8.object({id:C8.string().describe("Unique identifier for the entity"),title:C8.string().describe("Human-readable title for the entity"),description:C8.string().nullish().describe("Description of the entity"),created_at:C8.string().datetime(),updated_at:C8.string().datetime(),created_by:C8.string().optional(),updated_by:C8.string().optional()}),Ni4=C8.object({field:C8.array(C8.string()),operator:C8.enum(["eq","gt","gte","lt","lte","in","like","contains"]),value:C8.unknown()}),DM$=C8.lazy(()=>C8.union([Ni4,C8.object({operator:C8.enum(["and","or","not"]),conditions:C8.array(DM$)})]));Bi4=C8.object({field:C8.array(C8.string()),direction:C8.enum(["asc","desc"]),nulls:C8.enum(["first","last"]).optional()}),yW=C8.object({where:DM$.optional().describe("Filter expression"),orderBy:C8.array(Bi4).optional().describe("Sort expressions"),limit:C8.number().int().min(1).max(1000).optional().describe("Maximum number of items to return"),offset:C8.number().int().min(0).optional().describe("Number of items to skip")});j00=C8.object({id:C8.string().describe("ID of the entity to retrieve")});z00=C8.object({id:C8.string().describe("ID of the entity to delete")})});import{z as Qm}from"zod";var ji4,Ei4,LM$;var wM$=D(()=>{j3();ji4=sF0.extend({avatar:Qm.string().describe("URL or data URI to the assistant's avatar image"),system_prompt:Qm.string().describe("System prompt that defines the assistant's behavior"),virtual_mcp_id:Qm.string().describe("Virtual MCP ID to use for this assistant"),model:Qm.object({id:Qm.string().describe("Model ID"),connectionId:Qm.string().describe("Connection ID that provides the model")}).describe("Selected model reference for this assistant")}),Ei4=$U0("assistant",ji4),LM$=[...Ei4]});import{z as N0}from"zod";var A00,DB,EM$,zi4,Pi4,zM$,Ai4,Ti4,Ri4,qi4,Mi4,Ii4,PM$,Vi4,ki4,Si4,Ci4,_i4,vi4,xi4,fi4,bi4,yi4,uW9,gi4,lW9,jM$,hi4,ui4,ZU0,cW9;var AM$=D(()=>{lA();j3();A00=N0.lazy(()=>N0.union([N0.null(),N0.string(),N0.number(),N0.boolean(),N0.record(N0.string(),A00),N0.array(A00)])),DB=N0.record(N0.string(),N0.record(N0.string(),A00)).optional().describe("Additional provider-specific options. Outer record keyed by provider name, inner by option key"),EM$=N0.object({type:N0.literal("text"),text:N0.string().describe("The text content"),providerOptions:DB}),zi4=N0.object({type:N0.literal("text"),text:N0.string().describe("The text content"),providerMetadata:N0.any().optional().describe("Additional provider-specific metadata")}),Pi4=N0.string().describe("File data as URL string"),zM$=N0.object({type:N0.literal("file"),filename:N0.string().optional().describe("Optional filename of the file"),data:Pi4,mediaType:N0.string().describe("IANA media type of the file (e.g., image/png, audio/mp3)"),providerOptions:DB}),Ai4=N0.object({type:N0.literal("file"),mediaType:N0.string().describe("IANA media type of the file (e.g., image/png, audio/mp3)"),data:N0.string().describe("Generated file data as base64 encoded string")}),Ti4=N0.object({type:N0.literal("reasoning"),text:N0.string().describe("The reasoning text"),providerOptions:DB}),Ri4=N0.object({type:N0.literal("reasoning"),text:N0.string().describe("The reasoning text"),providerMetadata:N0.any().optional().describe("Additional provider-specific metadata")}),qi4=N0.object({type:N0.literal("tool-call"),toolCallId:N0.string().describe("ID of the tool call, used to match with tool result"),toolName:N0.string().describe("Name of the tool being called"),input:N0.string().describe("Arguments of the tool call (JSON-serializable object matching tool input schema)"),providerExecuted:N0.boolean().optional().describe("Whether the tool call will be executed by the provider"),providerOptions:DB}),Mi4=N0.object({type:N0.literal("tool-call"),toolCallId:N0.string().describe("ID of the tool call"),toolName:N0.string().describe("Name of the tool being called"),input:N0.string().describe("Stringified JSON object with the tool call arguments"),providerExecuted:N0.boolean().optional().describe("Whether the tool call will be executed by the provider"),providerMetadata:N0.any().optional().describe("Additional provider-specific metadata")}),Ii4=N0.union([N0.object({type:N0.literal("text"),value:N0.string()}),N0.object({type:N0.literal("json"),value:A00}),N0.object({type:N0.literal("error-text"),value:N0.string()}),N0.object({type:N0.literal("error-json"),value:A00}),N0.object({type:N0.literal("content"),value:N0.array(N0.union([N0.object({type:N0.literal("text"),text:N0.string().describe("Text content")}),N0.object({type:N0.literal("media"),data:N0.string().describe("Base-64 encoded media data"),mediaType:N0.string().describe("IANA media type")})]))}),N0.object({type:N0.literal("execution-denied"),reason:N0.string().optional()}),N0.string().describe("Raw or JSON-serialized output (e.g. from AI SDK mapToolResultOutput)")]),PM$=N0.object({type:N0.literal("tool-result"),toolCallId:N0.string().describe("ID of the tool call that this result is associated with"),toolName:N0.string().describe("Name of the tool that generated this result"),output:Ii4.describe("Result of the tool call"),result:N0.unknown().describe("Unknown result of the tool call"),providerOptions:DB}),Vi4=N0.object({type:N0.literal("tool-result"),toolCallId:N0.string().describe("ID of the tool call that this result is associated with"),toolName:N0.string().describe("Name of the tool that generated this result"),result:N0.any().describe("Result of the tool call (JSON-serializable)"),isError:N0.boolean().optional().describe("Whether the result is an error or error message"),providerExecuted:N0.boolean().optional().describe("Whether the tool result was generated by the provider"),providerMetadata:N0.any().optional().describe("Additional provider-specific metadata")}),ki4=N0.union([N0.object({type:N0.literal("source"),sourceType:N0.literal("url"),id:N0.string().describe("The ID of the source"),url:N0.string().describe("The URL of the source"),title:N0.string().optional().describe("The title of the source"),providerMetadata:N0.any().optional().describe("Additional provider-specific metadata")}),N0.object({type:N0.literal("source"),sourceType:N0.literal("document"),id:N0.string().describe("The ID of the source"),mediaType:N0.string().describe("IANA media type of the document (e.g., application/pdf)"),title:N0.string().describe("The title of the document"),filename:N0.string().optional().describe("Optional filename of the document"),providerMetadata:N0.any().optional().describe("Additional provider-specific metadata")})]),Si4=N0.object({role:N0.literal("system"),content:N0.string().describe("System message content"),providerOptions:DB}),Ci4=N0.object({role:N0.literal("user"),content:N0.array(N0.union([EM$,zM$])).describe("User message content parts (text or file)"),providerOptions:DB}),_i4=N0.object({role:N0.literal("assistant"),content:N0.array(N0.union([EM$,zM$,Ti4,qi4,PM$])).describe("Assistant message content parts (text, file, reasoning, tool-call, or tool-result)"),providerOptions:DB}),vi4=N0.object({role:N0.literal("tool"),content:N0.array(PM$).describe("Tool message content (tool results)"),providerOptions:DB}),xi4=N0.union([Si4,Ci4,_i4,vi4]),fi4=N0.array(xi4).describe("A list of messages forming the prompt"),bi4=N0.object({prompt:fi4.describe("A language model prompt is a standardized prompt type (array of messages with roles: system, user, assistant, tool)"),maxOutputTokens:N0.number().optional().describe("Maximum number of tokens to generate"),temperature:N0.number().optional().describe("Temperature setting. The range depends on the provider and model"),topP:N0.number().optional().describe("Nucleus sampling parameter"),topK:N0.number().optional().describe("Only sample from the top K options for each subsequent token. Used to remove long tail low probability responses"),presencePenalty:N0.number().optional().describe("Presence penalty setting. It affects the likelihood of the model to repeat information that is already in the prompt"),frequencyPenalty:N0.number().optional().describe("Frequency penalty setting. It affects the likelihood of the model to repeatedly use the same words or phrases"),seed:N0.number().optional().describe("The seed (integer) to use for random sampling. If set and supported by the model, calls will generate deterministic results"),stopSequences:N0.array(N0.string()).optional().describe("Stop sequences. If set, the model will stop generating text when one of the stop sequences is generated"),responseFormat:N0.union([N0.object({type:N0.literal("text")}),N0.object({type:N0.literal("json"),schema:N0.any().optional().describe("JSON schema that the generated output should conform to"),name:N0.string().optional().describe("Name of output that should be generated"),description:N0.string().optional().describe("Description of the output that should be generated")})]).optional().describe("Response format. The output can either be text or JSON. Default is text"),tools:N0.array(N0.any()).optional().describe("The tools that are available for the model"),toolChoice:N0.any().optional().describe("Specifies how the tool should be selected. Defaults to 'auto'"),includeRawChunks:N0.boolean().optional().describe("Include raw chunks in the stream. Only applicable for streaming calls"),abortSignal:N0.any().optional().describe("Abort signal for cancelling the operation"),providerOptions:N0.any().optional().describe("Additional provider-specific options")}),yi4=N0.object({content:N0.array(N0.union([zi4,Ai4,Ri4,Mi4,Vi4,ki4])).describe("Ordered content that the model has generated (text, tool-calls, reasoning, files, sources)"),finishReason:N0.enum(["stop","length","content-filter","tool-calls","error","other","unknown"]).describe("Reason why generation stopped"),usage:N0.looseObject({inputTokens:N0.number().optional(),outputTokens:N0.number().optional(),totalTokens:N0.number().optional(),reasoningTokens:N0.number().optional()}).describe("Usage information for the language model call"),providerMetadata:N0.any().optional().describe("Additional provider-specific metadata"),request:N0.object({body:N0.any().optional().describe("Request HTTP body sent to the provider API")}).optional().describe("Optional request information for telemetry and debugging"),response:N0.object({id:N0.string().optional().describe("ID for the generated response"),timestamp:N0.iso.datetime().optional().describe("Timestamp for the start of the generated response"),modelId:N0.string().optional().describe("The ID of the response model that was used"),headers:N0.record(N0.string(),N0.string()).optional().describe("Response headers"),body:N0.any().optional().describe("Response HTTP body")}).optional().describe("Optional response information for telemetry and debugging"),warnings:N0.array(N0.any()).describe("Warnings for the call, e.g. unsupported settings")}),uW9=N0.object({stream:N0.any().describe("ReadableStream of LanguageModelV2StreamPart"),request:N0.object({body:N0.any().optional().describe("Request HTTP body sent to the provider API")}).optional().describe("Optional request information for telemetry and debugging"),response:N0.object({headers:N0.record(N0.string(),N0.string()).optional().describe("Response headers")}).optional().describe("Optional response data")}),gi4=N0.object({supportedUrls:N0.record(N0.string(),N0.array(N0.string())).describe("Supported URL patterns by media type for the provider")}),lW9=N0.object({modelId:N0.string().describe("The ID of the model"),logo:N0.string().nullable(),description:N0.string().nullable(),capabilities:N0.array(N0.string()),limits:N0.object({contextWindow:N0.number(),maxOutputTokens:N0.number()}).nullable(),costs:N0.object({input:N0.number(),output:N0.number()}).nullable(),provider:N0.enum(["openai","anthropic","google","x-ai","deepseek","openai-compatible","openrouter"]).nullable()}),jM$=N0.object({modelId:N0.string().describe("The ID of the model"),callOptions:bi4}),hi4=sF0.extend({logo:N0.string().nullable(),description:N0.string().nullable(),capabilities:N0.array(N0.string()),limits:N0.object({contextWindow:N0.number(),maxOutputTokens:N0.number()}).nullable(),costs:N0.object({input:N0.number(),output:N0.number()}).nullable(),provider:N0.enum(["openai","anthropic","google","xai","deepseek","openai-compatible","openrouter"]).nullable()}),ui4=$U0("llm",hi4,{readOnly:!0}),ZU0=[{name:"LLM_METADATA",inputSchema:N0.object({modelId:N0.string().describe("The ID of the model")}),outputSchema:gi4},{name:"LLM_DO_STREAM",inputSchema:jM$},{name:"LLM_DO_GENERATE",inputSchema:jM$,outputSchema:yi4},...ui4],cW9=yF(ZU0)});import{z as mA}from"zod";var li4,TM$;var RM$=D(()=>{li4=mA.object({scopes:mA.array(mA.string()).describe("List of scopes available"),stateSchema:mA.record(mA.string(),mA.unknown()).describe("JSON Schema (draft-07) defining the state structure")}),TM$=[{name:"MCP_CONFIGURATION",inputSchema:mA.object({}),outputSchema:li4}]});import{z as D9}from"zod";var ci4,mi4,qM$;var MM$=D(()=>{ci4=D9.object({}).strict(),mi4=D9.object({billing:D9.object({mode:D9.enum(["prepaid","postpaid"]),limitPeriod:D9.enum(["daily","weekly","monthly"]).nullable()}),limit:D9.object({total:D9.number().nullable(),remaining:D9.number().nullable(),reset:D9.string().nullable()}),usage:D9.object({total:D9.number(),daily:D9.number(),weekly:D9.number(),monthly:D9.number()}),alert:D9.object({enabled:D9.boolean(),threshold_usd:D9.number(),email:D9.string().nullable()}),connectionId:D9.string()}),qM$=[{name:"GATEWAY_USAGE",inputSchema:ci4,outputSchema:mi4},{name:"GATEWAY_SET_LIMIT",inputSchema:D9.object({}),outputSchema:D9.object({}),opt:!0},{name:"GATEWAY_SET_ALERT",inputSchema:D9.object({}),outputSchema:D9.object({}),opt:!0}]});import{z as IM$}from"zod";function $J(){return p7()===null}function Xm($,Z){return $===I8.DEV_ASSETS(Z)}function Ym($,Z){let Q=SD$(Z,$),X=new Date().toISOString();return{id:Q.id??I8.DEV_ASSETS($),title:Q.title,description:Q.description??null,icon:Q.icon??null,app_name:Q.app_name??null,app_id:Q.app_id??null,organization_id:$,created_by:"system",created_at:X,updated_at:X,connection_type:Q.connection_type,connection_url:Q.connection_url??null,connection_token:null,connection_headers:null,oauth_config:null,configuration_state:null,configuration_scopes:null,metadata:Q.metadata??null,tools:di4,bindings:["OBJECT_STORAGE"],status:"active"}}var di4;var dA=D(()=>{qN();L00();V8();di4=cA.map(($)=>({name:$.name,description:`${$.name} operation for local file storage`,inputSchema:IM$.toJSONSchema($.inputSchema),outputSchema:IM$.toJSONSchema($.outputSchema)}))});function VM$($,Z){return $||Z===0}function kM$($,Z,Q,X,Y){let J=Z?Y+1:Y,G=$.slice(0,Q),K=X+Q<J;return{items:G,totalCount:J,hasMore:K}}function SM$($,Z,Q){if(!Q)return{sqlOffset:$,sqlLimit:Z};if($===0)return{sqlOffset:0,sqlLimit:Math.max(Z-1,0)};return{sqlOffset:$-1,sqlLimit:Z}}function ii4($,Z){if(Z.length===0)return;let[Q,...X]=Z,Y=Q==="slug"?bL($):$[Q];for(let J of X){if(Y===null||typeof Y!=="object")return;Y=Y[J]}return Y}function pi4($,Z,Q){if($===void 0)return!0;switch(Z){case"eq":return Q===null?$===null:$===Q;case"gt":return $>Q;case"gte":return $>=Q;case"lt":return $<Q;case"lte":return $<=Q;case"in":return Array.isArray(Q)&&Q.includes($);case"like":return typeof $==="string"&&eF0(String(Q)).test($);case"contains":return String($).toLowerCase().includes(String(Q).toLowerCase());default:return!0}}function T00($,Z){if(!Z)return!0;if("conditions"in Z){let{operator:X,conditions:Y}=Z;if(Y.length===0)return!0;switch(X){case"and":return Y.every((J)=>T00($,J));case"or":return Y.some((J)=>T00($,J));case"not":return!Y.every((J)=>T00($,J));default:return!0}}let Q=ii4($,Z.field);return pi4(Q,Z.operator,Z.value)}var CM$=D(()=>{zW0();j3()});import{z as Mw}from"zod";var ni4=8,ti4,oi4,ri4,ai4,iA;var fQ1=D(()=>{xQ1();wM$();j3();AM$();RM$();L00();MM$();V8();q0();A5();eY();gA();dA();sH();zW0();CM$();ti4=[{name:/^(COLLECTION_REGISTRY_APP_LIST|REGISTRY_ITEM_LIST)$/,inputSchema:Mw.object({})}],oi4={LLM:ZU0,LLMS:ZU0,ASSISTANTS:LM$,MCP:TM$,OBJECT_STORAGE:cA,AI_GATEWAY_BILLING:qM$,TRIGGER:nF0,REGISTRY:ti4,BRAND:aF0},ri4=yW.extend({binding:Mw.union([Mw.array(Mw.object({}).passthrough()),Mw.object({}).passthrough(),Mw.string()]).optional(),include_virtual:Mw.boolean().optional().describe("Whether to include VIRTUAL connections in the results. Defaults to false."),slug:Mw.string().optional().describe("Filter by connection slug. Matches against app_name, or a slug derived from connection_url or title.")}),ai4=OB(gQ),iA=h({name:"COLLECTION_CONNECTIONS_LIST",description:"List all connections in the organization with filtering, sorting, and pagination",annotations:{title:"List Connections",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:ri4,outputSchema:ai4,handler:async($,Z)=>{await Z.access.check();let Q=n(Z),X=$.binding?typeof $.binding==="string"?(()=>{let j=oi4[$.binding.toUpperCase()];if(!j)throw Error(`Unknown binding: ${$.binding}`);return j})():$.binding:void 0,Y=X?dF0(X):void 0,J=!!Y,G=$.limit??100,K=$.offset??0,W=P5(),H=I8.DEV_ASSETS(Q.id),F=Ym(Q.id,W),U=(!$.slug||bL(F)===$.slug)&&T00(F,$.where),N=$J()&&!J&&U,{sqlOffset:B,sqlLimit:O}=SM$(K,G,N),{items:L,totalCount:w}=await Z.storage.connections.list(Q.id,{includeVirtual:$.include_virtual??!1,slug:$.slug,where:$.where,orderBy:$.orderBy,limit:J?void 0:O,offset:J?void 0:B});if(Y){let j=b9(),E=I8.SELF(Q.id);await rc(L,ni4,async(z)=>{if(z.tools!==null)return;let P=z.id===E?async()=>{let{listManagementTools:q}=await Promise.resolve().then(() => (Iw(),QU0));return q(Z)}:()=>DQ1(z,Z,PW0),A=await Pw("tools",z.id,P,j,(q)=>Z.pendingRevalidations.push(q),zw);if(A!==null)z.tools=A})}if($J()&&VM$(J,K)&&U&&!L.some((j)=>j.id===H))L.unshift(F);if(J){let j=(await Promise.all(L.map(async(A)=>{if(!A.tools||A.tools.length===0)return null;return Y.isImplementedBy(A.tools.map((V)=>({name:V.name,inputSchema:V.inputSchema,outputSchema:V.outputSchema})))?A:null}))).filter((A)=>A!==null),E=j.length,z=j.slice(K,K+G),P=K+G<E;return{items:z,totalCount:E,hasMore:P}}return kM$(L,N,G,K,w)}})});var si4,pA;var bQ1=D(()=>{j3();V8();q0();A5();eY();gA();dA();sH();si4=E00(gQ),pA=h({name:"COLLECTION_CONNECTIONS_GET",description:"Get a connection's configuration, tools list, and status by ID.",annotations:{title:"Get Connection",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},_meta:{ui:{visibility:["app"]}},inputSchema:j00,outputSchema:si4,handler:async($,Z)=>{let Q=n(Z);if(await Z.access.check(),$J()&&Xm($.id,Q.id))return{item:Ym(Q.id,P5())};let X=await Z.storage.connections.findById($.id);if(!X||X.organization_id!==Q.id)return{item:null};if(X.tools===null){let Y=I8.SELF(Q.id),J=X.id===Y?async()=>{let{listManagementTools:K}=await Promise.resolve().then(() => (Iw(),QU0));return K(Z)}:async()=>{let K=await KQ(X,Z,!0);try{return(await K.listTools()).tools}finally{await K.close().catch(()=>{})}},G=await Pw("tools",X.id,J,b9(),(K)=>Z.pendingRevalidations.push(K),zw);if(G!==null)X.tools=G}return{item:X}}})});class l5{db;vault;constructor($,Z){this.db=$;this.vault=Z}async get($){let Z=await this.db.selectFrom("downstream_tokens").selectAll().where("connectionId","=",$).executeTakeFirst();if(!Z)return null;return ei4(this.vault,Z)}async upsert($){let Z=new Date().toISOString(),Q=await this.vault.encrypt($.accessToken),X=$.refreshToken?await this.vault.encrypt($.refreshToken):null,Y=$.clientSecret?await this.vault.encrypt($.clientSecret):null,J=$.expiresAt?.toISOString()??null,G=await this.db.insertInto("downstream_tokens").values({id:b8("dtok"),connectionId:$.connectionId,accessToken:Q,refreshToken:X,scope:$.scope,expiresAt:J,clientId:$.clientId,clientSecret:Y,tokenEndpoint:$.tokenEndpoint,createdAt:Z,updatedAt:Z}).onConflict((K)=>K.column("connectionId").doUpdateSet({accessToken:Q,refreshToken:X,scope:$.scope,expiresAt:J,clientId:$.clientId,clientSecret:Y,tokenEndpoint:$.tokenEndpoint,updatedAt:Z})).returning(["id","createdAt"]).executeTakeFirstOrThrow();return{id:G.id,connectionId:$.connectionId,accessToken:$.accessToken,refreshToken:$.refreshToken,scope:$.scope,expiresAt:$.expiresAt,createdAt:G.createdAt,updatedAt:Z,clientId:$.clientId,clientSecret:$.clientSecret,tokenEndpoint:$.tokenEndpoint}}async delete($){await this.db.deleteFrom("downstream_tokens").where("connectionId","=",$).execute()}isExpired($,Z=0){if(!$.expiresAt)return!1;let X=($.expiresAt instanceof Date?$.expiresAt:new Date($.expiresAt)).getTime();if(Number.isNaN(X))return!0;return X-Z<Date.now()}}async function ei4($,Z){try{let Q=await $.decrypt(Z.accessToken),X=Z.refreshToken?await $.decrypt(Z.refreshToken):null,Y=Z.clientSecret?await $.decrypt(Z.clientSecret):null;return{id:Z.id,connectionId:Z.connectionId,accessToken:Q,refreshToken:X,scope:Z.scope,expiresAt:Z.expiresAt,createdAt:Z.createdAt,updatedAt:Z.updatedAt,clientId:Z.clientId,clientSecret:Y,tokenEndpoint:Z.tokenEndpoint}}catch(Q){return console.warn("[DownstreamToken] failed to decrypt token row",{connectionId:Z.connectionId,message:Q instanceof Error?Q.message:String(Q)}),null}}var gW=D(()=>{eQ()});function Jm(...$){if(Xp4)console.log("[mcp-read-cache]",...$)}function Yp4($){return $.kind==="org"?"org":`u:${$.userId}`}function yQ1($){if($===null||typeof $!=="object")return JSON.stringify($)??"null";if(Array.isArray($))return`[${$.map(yQ1).join(",")}]`;return`{${Object.keys($).sort().map((Q)=>`${JSON.stringify(Q)}:${yQ1($[Q])}`).join(",")}}`}class JU0{config;maxEntries;now;maxTotalBytes;store=new Map;revalidating=new Set;totalBytes=0;constructor($=$p4,Z=Zp4,Q=()=>Date.now(),X=Qp4){this.config=$;this.maxEntries=Z;this.now=Q;this.maxTotalBytes=X}stats(){return{entries:this.store.size,bytes:this.totalBytes}}deleteKey($){let Z=this.store.get($);if(Z)this.store.delete($),this.totalBytes-=Z.bytes}key($,Z,Q,X){return`${Z}:${Yp4(Q)}:${$}:${yQ1(X)}`}storeSet($,Z,Q,X){let Y;try{Y=JSON.stringify(Z).length}catch{Jm("SKIP non-serializable",$);return}if(Y>X){Jm("SKIP oversize",$,`${Y}b > cap ${X}b`);return}this.deleteKey($);while(this.store.size>0&&(this.store.size>=this.maxEntries||this.totalBytes+Y>this.maxTotalBytes)){let J=this.store.keys().next().value;if(J===void 0)break;this.deleteKey(J)}this.store.set($,{value:Z,storedAt:Q,bytes:Y}),this.totalBytes+=Y}async fetch($){let{type:Z,connectionId:Q,scope:X,params:Y,fetchLive:J,shouldCache:G,onRevalidation:K}=$,W=this.config[Z],H=this.key(Z,Q,X,Y),F=this.now(),U=this.store.get(H),N=U?F-U.storedAt:1/0;if(!U||N>W.maxStaleMs){XU0.add(1,{type:Z,outcome:"miss"}),Jm(U?"EXPIRED":"MISS",H);let B=await J();if(G?.(B)??!0)this.storeSet(H,B,this.now(),W.maxValueBytes);else Jm("NOT-CACHED (shouldCache=false)",H);return B}if(this.store.delete(H),this.store.set(H,U),N>W.revalidateAfterMs&&!this.revalidating.has(H)){XU0.add(1,{type:Z,outcome:"stale"}),Jm("STALE \u2192 serve + revalidate",H,`age=${N}ms`),this.revalidating.add(H);let B=J().then((O)=>{if(G?.(O)??!0)this.storeSet(H,O,this.now(),W.maxValueBytes)}).catch(()=>{XU0.add(1,{type:Z,outcome:"error"})}).finally(()=>this.revalidating.delete(H));K?.(B)}else XU0.add(1,{type:Z,outcome:"hit"}),Jm("HIT",H,`age=${N}ms`);return U.value}invalidate($){let Z=`${$}:`;for(let Q of[...this.store.keys()])if(Q.startsWith(Z))this.deleteKey(Q)}}function hQ1(){return z0().mcpCacheEnabled}function GU0(){return hQ1()?gQ1:null}var XU0,YU0=1024,_M$,$p4,Zp4=2000,Qp4,Xp4,gQ1;var R00=D(()=>{B6();Z$();XU0=J$.createCounter("mcp_read_cache.fetches",{description:"MCP read cache outcomes (hit, stale, miss, error)",unit:"{fetches}"}),_M$=YU0*YU0,$p4={"tools/call":{revalidateAfterMs:30000,maxStaleMs:300000,maxValueBytes:512*YU0},"resources/read":{revalidateAfterMs:60000,maxStaleMs:300000,maxValueBytes:4*_M$},"prompts/get":{revalidateAfterMs:60000,maxStaleMs:300000,maxValueBytes:512*YU0}},Qp4=256*_M$,Xp4=typeof process<"u"&&!!process.env?.MCP_CACHE_DEBUG;gQ1=new JU0;J$.createObservableGauge("mcp_read_cache.entries",{description:"Current entry count in the per-pod MCP read cache",unit:"{entries}"}).addCallback(($)=>$.observe(gQ1.stats().entries));J$.createObservableGauge("mcp_read_cache.bytes",{description:"Approximate total bytes held in the per-pod MCP read cache",unit:"By"}).addCallback(($)=>$.observe(gQ1.stats().bytes))});function bM$(){if(vM$)return;vM$=!0;try{xM$=J$.createCounter("virtual_mcp.aggregate_cache.lookups",{description:"Virtual MCP aggregate tool-list cache lookups by outcome (hit, miss, expired)",unit:"{lookups}"}),fM$=J$.createCounter("virtual_mcp.aggregate_cache.evictions",{description:"Virtual MCP aggregate tool-list cache entries dropped, by reason (capacity, invalidated, failed)",unit:"{entries}"}),J$.createObservableGauge("virtual_mcp.aggregate_cache.entries",{description:"Live entries in this pod's Virtual MCP aggregate tool-list cache",unit:"{entries}"}).addCallback(($)=>$.observe(rG.size))}catch($){console.error("[aggregate-cache] failed to register metrics:",$)}}function uQ1($){bM$(),xM$?.add(1,{outcome:$})}function lQ1($,Z=1){if(Z<=0)return;bM$(),fM$?.add(Z,{reason:$})}function yM$($){return[$.virtualMcpId??"",$.userId??"",$.superUser?"su":"",[...$.connectionIds].sort().join(",")].join("|")}function gM$($){let Z=rG.get($);if(!Z)return uQ1("miss"),null;if(Date.now()-Z.at>=Jp4)return rG.delete($),uQ1("expired"),null;return uQ1("hit"),Z.value}function hM$($,Z,Q){let X=Q.catch((J)=>{if(rG.get($)?.value===X)rG.delete($),lQ1("failed");throw J});rG.delete($),rG.set($,{at:Date.now(),deps:Z,value:X});let Y=0;while(rG.size>Gp4){let J=rG.keys().next();if(J.done)break;rG.delete(J.value),Y++}return lQ1("capacity",Y),X}function uM$($){let Z=0;for(let[Q,X]of rG)if(X.deps.includes($))rG.delete(Q),Z++;lQ1("invalidated",Z)}var Jp4=30000,Gp4=500,rG,xM$=null,fM$=null,vM$=!1;var cQ1=D(()=>{B6();rG=new Map});function mM$($){GU0()?.invalidate($),fq$($),uM$($)}function Gm($){mM$($);let Z=mQ1?.();if(!Z)return;try{Z.publish(lM$,Kp4.encode(JSON.stringify({connectionId:$,originId:cM$})))}catch(Q){console.warn("[McpCacheInvalidation] publish failed (non-critical):",Q)}}function dM$($){if(mQ1=$,q00)return;let Z=$();if(!Z)return;q00=Z.subscribe(lM$),(async()=>{for await(let Q of q00)try{let X=JSON.parse(Wp4.decode(Q.data));if(X.originId===cM$)continue;mM$(X.connectionId)}catch{}})().catch(console.error)}function iM$(){q00?.unsubscribe(),q00=null,mQ1=void 0}var lM$="studio.mcp-cache.invalidate",cM$,Kp4,Wp4,mQ1,q00=null;var M00=D(()=>{R00();eY();cQ1();cM$=crypto.randomUUID(),Kp4=new TextEncoder,Wp4=new TextDecoder});import{z as dQ1}from"zod";function Fp4($){let Z={...$};for(let Q of Hp4)delete Z[Q];return Z}function Up4($,Z){return $.connection_url!==void 0?$.connection_url:Z}function Op4($,Z){return $.length===Z.length&&$.every((Q,X)=>Q===Z[X])}var Hp4,Np4,Bp4,iQ1;var pM$=D(()=>{PQ1();gW();q0();Z$();eY();M00();MQ1();EF0();sH();Hp4=["id","organization_id","created_by","created_at"];Np4=dQ1.object({id:dQ1.string().describe("ID of the connection to update"),data:W30.describe("Partial connection data to update")}),Bp4=dQ1.object({item:gQ.describe("The updated connection entity")});iQ1=h({name:"COLLECTION_CONNECTIONS_UPDATE",description:"Update a connection's configuration. Re-fetches tools from the server on URL change.",annotations:{title:"Update Connection",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:Np4,outputSchema:Bp4,handler:async($,Z)=>{t(Z);let Q=n(Z);await Z.access.check();let X=d0(Z);if(!X)throw Error("User ID required to update connection");let{id:Y}=$,J=Fp4($.data),G=J.configuration_state!==void 0||J.configuration_scopes!==void 0,K=await Z.storage.connections.findById(Y);if(!K||K.organization_id!==Q.id)throw Error("Connection not found in organization");let W=J.connection_type??K.connection_type,H=Up4(J,K.connection_url);if(W==="VIRTUAL"){let x=Bu(H);if(!x)throw Error("VIRTUAL connection requires connection_url in format: virtual://$virtual_mcp_id");let b=await Z.storage.virtualMcps.findById(x);if(!b)throw Error(`Virtual MCP not found: ${x}`);if(b.organization_id!==Q.id)throw Error("Virtual MCP does not belong to the current organization");H=Ou(x)}let F=J.configuration_state??K.configuration_state??{},U=J.configuration_scopes??K.configuration_scopes??[];if(G){if(J.configuration_state!==void 0)F=J.configuration_state??{};else if(F===null||F===void 0)F={};if(J.configuration_scopes!==void 0)U=J.configuration_scopes??[];if(U.length>0){let x=F;N00(x,U,Q.id),await O00(x,U,Q.id,Z)}}if(W==="STDIO"&&!z0().localMode)throw Error("STDIO connections are only available in local mode (--local-mode).");let N=J.connection_token??K.connection_token;if(!N)try{let b=await new l5(Z.db,Z.vault).get(Y);if(b?.accessToken)N=b.accessToken}catch{}let B=await oc({id:K.id,title:J.title??K.title,connection_type:W,connection_url:H,connection_token:N,connection_headers:J.connection_headers??K.connection_headers}).catch(()=>null),O=B?.tools?.length?B.tools:null,L=!1;if(J.configuration_scopes===void 0&&B?.scopes?.length)L=!Op4(U,B.scopes),U=B.scopes;if(N00(F,U,Q.id),L&&U.length>0)await O00(F,U,Q.id,Z);let w=G||L,j=w?B00(F,U):[],E=w?B00(K.configuration_state??{},K.configuration_scopes??[]):[],z=K.configuration_state,P=z==null||Object.keys(z).length===0,A,q,V=async()=>{try{await Z.storage.connectionCredentialVault.replaceGrantsForSubject({organizationId:Q.id,subjectConnectionId:Y,createdBy:X,grants:E})}catch(x){console.error("Failed to restore credential grants after credential vault mutation failed",x)}},M={...J,connection_url:H,tools:null,configuration_state:F,configuration_scopes:U,updated_by:X},C={...K,...M};if(w)try{if(await Z.storage.connectionCredentialVault.replaceGrantsForSubject({organizationId:Q.id,subjectConnectionId:Y,createdBy:X,grants:j}),j.length>0){if(!await Z.storage.connectionCredentialVault.findActiveWorkloadToken({organizationId:Q.id,subjectConnectionId:Y})){let{plaintextToken:b,record:i}=await Z.storage.connectionCredentialVault.createOrRotateWorkloadToken({organizationId:Q.id,subjectConnectionId:Y});q=i.id,A={baseUrl:Z.baseUrl,org:Q.slug??Q.id,subjectConnectionId:Y,token:b}}}}catch(x){if(q)await Z.storage.connectionCredentialVault.revokeWorkloadToken({organizationId:Q.id,subjectConnectionId:Y,tokenId:q});throw await V(),x}if(w&&F&&U)try{await yF0(Z,C,{state:F,scopes:U,firstRun:P,...A?{vault:A}:{}})}catch(x){if(console.error("Failed to invoke ON_MCP_CONFIGURATION callback",x),q)await Z.storage.connectionCredentialVault.revokeWorkloadToken({organizationId:Q.id,subjectConnectionId:Y,tokenId:q});if(j.length>0)throw await V(),x}let c;try{c=await Z.storage.connections.update(Y,M)}catch(x){if(w){if(q)await Z.storage.connectionCredentialVault.revokeWorkloadToken({organizationId:Q.id,subjectConnectionId:Y,tokenId:q});await V()}throw x}if(O)b9()?.set("tools",Y,O).catch(()=>{});return Gm(Y),{item:c}}})});import{z as Dp4}from"zod";var Lp4,pQ1;var nM$=D(()=>{j3();b4();q0();eY();M00();aG();dA();sH();Lp4=z00.extend({force:Dp4.boolean().optional().describe("If true, removes this connection from all agents that reference it before deleting")}),pQ1=h({name:"COLLECTION_CONNECTIONS_DELETE",description:"Permanently delete a connection. Set force=true to auto-remove from referencing Virtual MCPs.",annotations:{title:"Delete Connection",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:Lp4,outputSchema:P00(gQ),handler:async($,Z)=>{t(Z);let Q=n(Z);if(await Z.access.check(),$J()&&Xm($.id,Q.id))throw Error("This connection is a fixed system connection and cannot be deleted");let X=await Z.storage.connections.findById($.id);if(!X)throw Error(`Connection not found: ${$.id}`);if(X.organization_id!==Q.id)throw Error("Connection not found in organization");if(X.metadata?.isFixed===!0)throw Error("This connection is a fixed system connection and cannot be deleted");let J=await Z.storage.virtualMcps.listByConnectionId(Q.id,$.id);if(J.length>0)if($.force)await Z.storage.virtualMcps.removeConnectionReferences($.id);else throw Error(JSON.stringify({code:"CONNECTION_IN_USE",agentNames:J.map((H)=>H.title)}));let G=await Z.storage.automations.listActiveByEventTriggerConnectionId($.id);if(G.length>0)if($.force)await Promise.all(G.map((H)=>Z.storage.automations.deactivateAutomation(H.id)));else throw Error(JSON.stringify({code:"CONNECTION_IN_USE_BY_AUTOMATION",automationNames:G.map((H)=>H.name)}));await Z.storage.connections.delete($.id),tM$($.id),await Z.storage.triggerCallbackTokens.deleteByConnection($.id,Q.id);let K=await Z.storage.organizationSettings.get(Q.id);if(K?.registry_config){let{registries:H,blockedMcps:F}=K.registry_config;if($.id in H){let{[$.id]:U,...N}=H;await Z.storage.organizationSettings.upsert(Q.id,{registry_config:{registries:N,blockedMcps:F}})}}b9()?.invalidate($.id).catch(()=>{}),Gm($.id);let W=d0(Z);if(W)k1.capture({distinctId:W,event:"connection_deleted",groups:{organization:Q.id},properties:{connection_id:X.id,connection_type:X.connection_type,app_name:X.app_name??null,organization_id:Q.id,forced:$.force??!1}});return{item:X}}})});import{z as Km}from"zod";var nQ1;var oM$=D(()=>{q0();nQ1=h({name:"CONNECTION_TEST",description:"Test connection health and latency",annotations:{title:"Test Connection",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},inputSchema:Km.object({id:Km.string()}),outputSchema:Km.object({id:Km.string(),healthy:Km.boolean(),latencyMs:Km.number()}),handler:async($,Z)=>{let Q=n(Z);await Z.access.check();let X=await Z.storage.connections.findById($.id);if(!X||X.organization_id!==Q.id)throw Error("Connection not found");let Y=await Z.storage.connections.testConnection($.id);return{id:$.id,...Y}}})});var rM$=D(()=>{mq$();fQ1();bQ1();pM$();nM$();oM$()});import{sql as t4}from"kysely";import{z as gF}from"zod";function aM$($){if($===null||$===void 0)return"NULL";if(typeof $==="number")return String($);if(typeof $==="boolean")return $?"TRUE":"FALSE";if(typeof $==="string")return`'${$.replace(/'/g,"''")}'`;if($ instanceof Date)return`'${$.toISOString()}'`;return`'${JSON.stringify($).replace(/'/g,"''")}'`}function Ep4($,Z){let Q="",X=0,Y=!1,J=!1,G=!1,K=null;for(let W=0;W<$.length;W++){let H=$[W];if(!Y&&!J&&K===null){if($.startsWith("--",W)){let F=$.indexOf(`
3017
3017
  `,W),U=F===-1?$.slice(W):$.slice(W,F);Q+=U,W+=U.length-1;continue}if($.startsWith("/*",W)){let F=1,U=W+2;while(F>0&&U<$.length)if($.startsWith("/*",U))F++,U+=2;else if($.startsWith("*/",U))F--,U+=2;else U++;let N=$.slice(W,U);Q+=N,W+=N.length-1;continue}}if(K!==null){let F=`$${K}$`;if($.startsWith(F,W))Q+=F,W+=F.length-1,K=null;else Q+=H;continue}if(Y&&G&&H==="\\"&&W+1<$.length){Q+=H+$[W+1],W+=1;continue}if(!J&&H==="'"){if(!Y){let F=$[W-1],U=$[W-2]??"";G=(F==="e"||F==="E")&&!/[A-Za-z0-9_]/.test(U)}Y=!Y,Q+=H;continue}if(!Y&&H==='"'){J=!J,Q+=H;continue}if(!Y&&!J&&H==="$"){let F=/^\$(\d+)/.exec($.slice(W)),U=F?Number(F[1])-1:-1;if(F&&U>=0&&U<Z.length){Q+=aM$(Z[U]),W+=F[0].length-1;continue}let N=/^\$([A-Za-z_][A-Za-z0-9_]*)?\$/.exec($.slice(W));if(N){K=N[1]??"",Q+=N[0],W+=N[0].length-1;continue}}else if(!Y&&!J&&H==="?"&&X<Z.length){Q+=aM$(Z[X]),X++;continue}Q+=H}return Q}function sM$($){return $.replace(/-/g,"_")}function Pp4($){return`app_${sM$($)}`}function Ap4($){return`app_role_${sM$($)}`}function Tp4($){if($ instanceof Error){let Z=$.message.toLowerCase(),Q=$.code;return Q==="3F000"||Q==="42704"||Q==="22023"||Z.includes("schema")&&Z.includes("does not exist")||Z.includes("role")&&Z.includes("does not exist")}return!1}async function Rp4($,Z,Q){if(await t4`CREATE SCHEMA IF NOT EXISTS ${t4.id(Z)}`.execute($),!(await t4`
3018
3018
  SELECT EXISTS (SELECT 1 FROM pg_roles WHERE rolname = ${Q}) as exists
3019
3019
  `.execute($)).rows[0]?.exists)await t4`CREATE ROLE ${t4.id(Q)} NOLOGIN`.execute($);await t4`GRANT ${t4.id(Q)} TO CURRENT_USER`.execute($),await t4`GRANT USAGE, CREATE ON SCHEMA ${t4.id(Z)} TO ${t4.id(Q)}`.execute($),await t4`GRANT ALL ON ALL TABLES IN SCHEMA ${t4.id(Z)} TO ${t4.id(Q)}`.execute($),await t4`GRANT ALL ON ALL SEQUENCES IN SCHEMA ${t4.id(Z)} TO ${t4.id(Q)}`.execute($),await t4`ALTER DEFAULT PRIVILEGES IN SCHEMA ${t4.id(Z)} GRANT ALL ON TABLES TO ${t4.id(Q)}`.execute($),await t4`ALTER DEFAULT PRIVILEGES IN SCHEMA ${t4.id(Z)} GRANT ALL ON SEQUENCES TO ${t4.id(Q)}`.execute($),await t4`REVOKE ALL ON SCHEMA public FROM ${t4.id(Q)}`.execute($)}async function qp4($,Z,Q,X){try{return await $.transaction().execute(async(Y)=>{return await t4`SET LOCAL ROLE ${t4.id(Q)}`.execute(Y),await t4`SET LOCAL search_path TO ${t4.id(Z)}`.execute(Y),await t4.raw(X).execute(Y)})}catch(Y){if(Tp4(Y))return await Rp4($,Z,Q),await $.transaction().execute(async(J)=>{return await t4`SET LOCAL ROLE ${t4.id(Q)}`.execute(J),await t4`SET LOCAL search_path TO ${t4.id(Z)}`.execute(J),await t4.raw(X).execute(J)});throw Y}}var jp4,zp4,eM$;var $I$=D(()=>{q0();jp4=gF.object({results:gF.array(gF.unknown()).optional(),success:gF.boolean().optional()});zp4=gF.object({sql:gF.string().describe("The SQL query to run"),params:gF.array(gF.unknown()).describe("The parameters to pass to the SQL query").optional()});eM$=h({name:"DATABASES_RUN_SQL",description:"Run a SQL query in a connection-scoped isolated schema. Supports SELECT, DDL, and DML.",annotations:{title:"Run SQL Query",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!1},inputSchema:zp4,outputSchema:gF.object({result:gF.array(jp4)}),handler:async($,Z)=>{t(Z),await Z.access.check();let Q=Ep4($.sql,$.params||[]);if(!Z.connectionId)throw Error("Connection context required for database access");console.warn("DATABASES_RUN_SQL invoked",{"tool.deprecation_probe":"DATABASES_RUN_SQL","connection.id":Z.connectionId,"organization.id":Z.organization?.id??null,"user.id":Z.auth.user?.id??null});let X=Pp4(Z.connectionId),Y=Ap4(Z.connectionId);return{result:[{results:(await qp4(Z.db,X,Y,Q)).rows,success:!0}]}}})});function KU0($){let Z=$.access.getRole();if(!p9(Z))throw new w7("Only organization owners and admins can change org-wide pin status")}var tQ1=D(()=>{uQ();XW()});async function WU0($,Z,Q){let X=[...new Set(Q)],Y=await Promise.all(X.map((G)=>$.storage.connections.findById(G,Z))),J=X.filter((G,K)=>!Y[K]);if(J.length>0)throw Error(`Connection not found: ${J.join(", ")}`)}function LB($){return $.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"")}function HU0($){let Z=2166136261;for(let Q=0;Q<$.length;Q++)Z=Math.imul(Z^$.charCodeAt(Q),16777619);return`a${(Z>>>0).toString(36).padStart(6,"0").slice(-6)}`}function FU0($){if($&&typeof $==="object"&&"gatewayClientId"in $&&typeof $.gatewayClientId==="string")return $.gatewayClientId;return}function UU0($,Z){if(!Z)return $;let Q=`${HU0(Z)}_`;return $.startsWith(Q)?$.slice(Q.length):$}function Ip4($){return $.split(/[-_]/).map((Z)=>Z?Z.charAt(0).toUpperCase()+Z.slice(1):Z).join(" ")}function Vp4($,Z,Q){let X,Y=new Promise((J,G)=>{X=setTimeout(()=>G(Error(Q)),Z)});return Promise.race([$,Y]).finally(()=>clearTimeout(X))}var nA;var ZI$=D(()=>{zF();nA=class nA extends LZ{static MAX_PAGES_PER_CLIENT=1000;static DEFAULT_LIST_TIMEOUT_MS=30000;clients;slugToKey=new Map;resolvedClients=new Map;toolsCache=null;resourcesCache=null;resourceTemplatesCache=null;promptsCache=null;resourceRouteMap=new Map;listTimeoutMs;constructor($,Z){super(Z?.clientInfo??{name:"gateway-client",version:"1.0.0"},{capabilities:Z?.capabilities});this.clients=$,this.listTimeoutMs=Z?.listTimeoutMs??nA.DEFAULT_LIST_TIMEOUT_MS;for(let Q of Object.keys($)){let X=HU0(Q);if(this.slugToKey.has(X))throw Error(`GatewayClient: duplicate namespace code "${X}" from keys "${this.slugToKey.get(X)}" and "${Q}"`);this.slugToKey.set(X,Q)}}namespace($,Z){return`${HU0($)}_${Z}`}async resolveNamespacedTarget($,Z,Q){let X=$.indexOf("_");if(X!==-1){let Y=$.slice(0,X),J=this.slugToKey.get(Y);if(J)return[J,$.slice(X+1)]}for(let Y of await Q()){let J=FU0(Y._meta);if(!J)continue;if(UU0(Y.name,J)===$)return[J,$]}if(X===-1)throw Error(`GatewayClient: could not resolve ${Z} "${$}" \u2014 no namespace prefix and not found in any client`);throw Error(`GatewayClient: unknown namespace "${$.slice(0,X)}" in "${$}" and not found by original name in any client`)}resolveToolTarget($){return this.resolveNamespacedTarget($,"tool",async()=>(await this.listTools()).tools)}resolvePromptTarget($){return this.resolveNamespacedTarget($,"prompt",async()=>(await this.listPrompts()).prompts)}resolveClient($){let Z=this.resolvedClients.get($);if(Z)return Z;let Q=this.clients[$];if(!Q)return Promise.reject(Error(`GatewayClient: unknown client key "${$}"`));let X=Q.client,Y;try{Y=typeof X==="function"?Promise.resolve(X()):Promise.resolve(X)}catch(G){return Promise.reject(G)}let J=Y.catch((G)=>{throw this.resolvedClients.delete($),G});return this.resolvedClients.set($,J),J}getResolvedClient($){return this.resolveClient($)}async listFromClient($,Z,Q){try{return await Vp4((async()=>{let X=await this.resolveClient($);return await Z(X)})(),this.listTimeoutMs,`timed out after ${this.listTimeoutMs}ms`)}catch(X){return console.warn(`GatewayClient: skipping ${Q} from client "${$}" \u2014 ${X?.message??X}`),[]}}listFromAllClients($,Z){return Promise.all(Object.entries(this.clients).map(async([Q,X])=>[Q,X,await this.listFromClient(Q,(Y)=>$(Y,Q),Z)]))}async paginate($,Z,Q){let X=[],Y,J=0;do{let G=await Q(Y);X.push(...G.items),Y=G.nextCursor,J++}while(Y&&J<nA.MAX_PAGES_PER_CLIENT);if(Y)console.warn(`GatewayClient: client "${$}" exceeded ${nA.MAX_PAGES_PER_CLIENT} pages listing ${Z} \u2014 truncating`);return X}fetchAllTools($,Z){return this.paginate(Z,"tools",async(Q)=>{let X=await $.listTools(Q?{cursor:Q}:void 0);return{items:X.tools,nextCursor:X.nextCursor}})}fetchAllResources($,Z){return this.paginate(Z,"resources",async(Q)=>{let X=await $.listResources(Q?{cursor:Q}:void 0);return{items:X.resources,nextCursor:X.nextCursor}})}fetchAllResourceTemplates($,Z){return this.paginate(Z,"resource templates",async(Q)=>{let X=await $.listResourceTemplates(Q?{cursor:Q}:void 0);return{items:X.resourceTemplates,nextCursor:X.nextCursor}})}fetchAllPrompts($,Z){return this.paginate(Z,"prompts",async(Q)=>{let X=await $.listPrompts(Q?{cursor:Q}:void 0);return{items:X.prompts,nextCursor:X.nextCursor}})}listTools($,Z){if(!this.toolsCache)this.toolsCache=this.aggregateTools();return this.toolsCache}async aggregateTools(){let $=[],Z=await this.listFromAllClients((Q,X)=>this.fetchAllTools(Q,X),"tools");for(let[Q,X,Y]of Z){let J=X.tools,G=J?new Set(J):null;for(let K of Y){if(G&&!G.has(K.name))continue;$.push({...K,name:this.namespace(Q,K.name),_meta:{...K._meta??{},gatewayClientId:Q}})}}return{tools:$}}listResources($,Z){if(!this.resourcesCache)this.resourcesCache=this.aggregateResources();return this.resourcesCache}async aggregateResources(){let $=new Set,Z=[],Q=new Map,X=await this.listFromAllClients((Y,J)=>this.fetchAllResources(Y,J),"resources");for(let[Y,J,G]of X){let K=J.resources,W=K?new Set(K):null;for(let H of G){if(W&&!W.has(H.uri)&&!(H.name&&W.has(H.name)))continue;if($.has(H.uri)){console.warn(`GatewayClient: duplicate resource "${H.uri}" from client "${Y}" \u2014 skipping`);continue}$.add(H.uri),Q.set(H.uri,Y),Z.push({...H,_meta:{...H._meta??{},gatewayClientId:Y}})}}return this.resourceRouteMap=Q,{resources:Z}}listResourceTemplates($,Z){if(!this.resourceTemplatesCache)this.resourceTemplatesCache=this.aggregateResourceTemplates();return this.resourceTemplatesCache}async aggregateResourceTemplates(){let $=new Set,Z=[],Q=await this.listFromAllClients((X,Y)=>this.fetchAllResourceTemplates(X,Y),"resource templates");for(let[X,Y,J]of Q)for(let G of J){if($.has(G.uriTemplate)){console.warn(`GatewayClient: duplicate resource template "${G.uriTemplate}" from client "${X}" \u2014 skipping`);continue}$.add(G.uriTemplate),Z.push({...G,_meta:{...G._meta??{},gatewayClientId:X}})}return{resourceTemplates:Z}}listPrompts($,Z){if(!this.promptsCache)this.promptsCache=this.aggregatePrompts();return this.promptsCache}async aggregatePrompts(){let $=[],Z=await this.listFromAllClients((Q,X)=>this.fetchAllPrompts(Q,X),"prompts");for(let[Q,X,Y]of Z){let J=X.prompts,G=J?new Set(J):null;for(let K of Y){if(G&&!G.has(K.name))continue;$.push({...K,name:this.namespace(Q,K.name),title:K.title??Ip4(K.name),_meta:{...K._meta??{},gatewayClientId:Q}})}}return{prompts:$}}async callTool($,Z,Q){let[X,Y]=await this.resolveToolTarget($.name);return(await this.resolveClient(X)).callTool({...$,name:Y},Z,Q)}async readResource($,Z){let Q=await this.resolveResourceRoute($.uri);return(await this.resolveClient(Q)).readResource($)}async getPrompt($,Z){let[Q,X]=await this.resolvePromptTarget($.name);return(await this.resolveClient(Q)).getPrompt({...$,name:X})}async resolveResourceRoute($){let Z=this.resourceRouteMap.get($);if(Z)return Z;if(this.resourcesCache=null,await this.listResources(),Z=this.resourceRouteMap.get($),Z)return Z;throw Error(`GatewayClient: resource "${$}" not found in any upstream client`)}getServerCapabilities(){return{tools:{},resources:{},prompts:{}}}getInstructions(){return}refresh(){this.toolsCache=null,this.resourcesCache=null,this.resourceTemplatesCache=null,this.promptsCache=null}async close(){let $=[...this.resolvedClients.values()].map((Z)=>Z.then((Q)=>Q.close()).catch(()=>{}));await Promise.allSettled($),await super.close()}}});var NU0=D(()=>{ZI$()});function rQ1($){return LB($)}function Sp4($,Z){let Q=LB(Z)||"prompt";return`${String($).padStart(kp4,"0")}-${Q}`}async function aQ1($,Z,Q){try{await $.delete(BU0,rQ1(Z),{actor:Q})}catch(X){console.error("[agent-prompts] failed to delete prompts",{agentId:Z,err:X})}}async function OU0($,Z,Q,X){let Y=rQ1(Z);await aQ1($,Z,Q),await Promise.all(X.slice(0,oQ1).map(async(J,G)=>{let K=Sp4(G,J.title),W={name:K,title:J.title,description:J.description,text:J.text};try{await $.write(BU0,`${Y}/${K}.json`,JSON.stringify(W),{actor:Q,contentType:"application/json"})}catch(H){console.error("[agent-prompts] failed to seed prompt",{agentId:Z,name:K,err:H})}}))}async function QI$($,Z){let Q=rQ1(Z),X;try{X=await $.listDir(BU0,Q)}catch{return[]}let Y=X.filter((G)=>G.kind==="file"&&G.path.endsWith(".json")).slice(0,oQ1),J=[];for(let G of Y)try{let K=await $.read(BU0,G.path),W=JSON.parse(new TextDecoder().decode(K));if(W&&typeof W.name==="string"&&typeof W.title==="string"&&typeof W.text==="string")J.push(W)}catch{}return J}var BU0="agent-prompts",oQ1=20,kp4;var I00=D(()=>{NU0();kp4=String(oQ1-1).length});function Wm($){if(!$)return $;let Z={...$};return delete Z.sandboxMap,Z}import{z as JI$}from"zod";function Cp4(){let $=XI$[Math.floor(Math.random()*XI$.length)];return`icon://${YI$[Math.floor(Math.random()*YI$.length)]}?color=${$}`}var XI$,YI$,_p4,vp4,tA;var sQ1=D(()=>{q0();Rw();tQ1();I00();XI$=["red","orange","amber","yellow","lime","green","emerald","cyan","sky","blue","indigo","violet","purple","fuchsia","pink","rose"],YI$=["Star01","Zap","Heart","Globe01","Compass03","Lightbulb02","Rocket01","Flag01","BookOpen01","Shield01","Key01","Diamond01","Cube01","Target04","Award01","Briefcase01","Coffee","Feather","Hexagon01","Layers3_01","Map01","Palette","Package","Terminal"];_p4=JI$.object({data:F30.describe("Data for the new virtual MCP")}),vp4=JI$.object({item:hQ.describe("The created virtual MCP entity")}),tA=h({name:"COLLECTION_VIRTUAL_MCP_CREATE",description:"Create a Virtual MCP (agent) that aggregates tools from multiple connections into one endpoint. Pass `prompts` to seed the agent with kickstart prompts (conversation starters shown as icebreakers). Author them from the agent's role/instructions and the descriptions of the tools it will have, so the starters are coherent and immediately useful.",annotations:{title:"Create Virtual MCP",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!1},inputSchema:_p4,outputSchema:vp4,handler:async($,Z)=>{t(Z);let Q=n(Z);await Z.access.check();let X=d0(Z);if(!X)throw Error("User ID required to create virtual MCP");if($.data.pinned===!0)KU0(Z);let{prompts:Y,metadata:J,...G}=$.data,K=Wm(J);if(G.connections.length>0)await WU0(Z,Q.id,G.connections.map((F)=>F.connection_id));let W={...G,metadata:K,icon:G.icon??Cp4()},H=await Z.storage.virtualMcps.create(Q.id,X,W);if(Y?.length&&Z.orgFs&&H.id)await OU0(Z.orgFs,H.id,X,Y);return{item:H}}})});function eQ1($){if(!$)return null;let Z=$.projects;return Array.isArray(Z)?Z:null}function hF($,Z){if($===null)return!0;if($.includes("*"))return!0;return $.includes(Z)}async function uF($){if($.auth.apiKey)return null;let Z=$.organization?.id;if(!Z)return null;let Q=$.access.getRole()??$.organization?.role??$.auth.user?.role;if(!Q||p9(Q))return null;if($.auth.permissions&&$.auth.permissionsOrganizationId===Z)return eQ1($.auth.permissions);let X=await oA($.db,Z,Q);return eQ1(X)}var Hm=D(()=>{uQ();lF()});function Vw($){return typeof $==="string"||typeof $==="number"}function $X1($,Z){let Q=Z.split("."),X=$;for(let Y of Q){if(X==null||typeof X!=="object")return;X=X[Y]}return X}function xp4($,Z){return $.connections.some((Q)=>Q.connection_id===Z)}function DU0($,Z){if("conditions"in Z){let{operator:K,conditions:W}=Z;switch(K){case"and":return W.every((H)=>DU0($,H));case"or":return W.some((H)=>DU0($,H));case"not":return!W.every((H)=>DU0($,H));default:return!0}}let{field:Q,operator:X,value:Y}=Z,J=Q.join(".");if(J==="connection_id"){if(X!=="eq"||typeof Y!=="string")return!1;return xp4($,Y)}let G=$X1($,J);switch(X){case"eq":return G===Y;case"gt":return Vw(G)&&Vw(Y)&&G>Y;case"gte":return Vw(G)&&Vw(Y)&&G>=Y;case"lt":return Vw(G)&&Vw(Y)&&G<Y;case"lte":return Vw(G)&&Vw(Y)&&G<=Y;case"in":return Array.isArray(Y)&&Y.includes(G);case"like":if(typeof G!=="string"||typeof Y!=="string")return!1;if(Y.length>100)return!1;return eF0(Y).test(G);case"contains":if(typeof G!=="string"||typeof Y!=="string")return!1;return G.toLowerCase().includes(Y.toLowerCase());default:return!0}}function fp4($,Z){return[...$].sort((Q,X)=>{for(let Y of Z){let J=Y.field.join("."),G=$X1(Q,J),K=$X1(X,J),W=0;if(G==null&&K==null)continue;if(G==null)W=Y.nulls==="first"?-1:1;else if(K==null)W=Y.nulls==="first"?1:-1;else if(typeof G==="string"&&typeof K==="string")W=G.localeCompare(K);else if(typeof G==="number"&&typeof K==="number")W=G-K;else W=String(G).localeCompare(String(K));if(W!==0)return Y.direction==="desc"?-W:W}return 0})}var bp4,yp4,rA;var ZX1=D(()=>{j3();q0();Hm();Rw();bp4=yW,yp4=OB(hQ),rA=h({name:"COLLECTION_VIRTUAL_MCP_LIST",description:"List all MCP virtual MCPs in the organization",annotations:{title:"List Virtual MCPs",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:bp4,outputSchema:yp4,handler:async($,Z)=>{await Z.access.check();let Q=n(Z),X=$.where&&!("conditions"in $.where)&&$.where.field.join(".")==="connection_id"&&$.where.operator==="eq"&&typeof $.where.value==="string"?$.where.value:void 0,Y=$.where&&!("conditions"in $.where)&&$.where.field.join(".")==="pinned"&&$.where.operator==="eq"&&typeof $.where.value==="boolean"?$.where.value:void 0,G=X?await Z.storage.virtualMcps.listByConnectionId(Q.id,X):await Z.storage.virtualMcps.list(Q.id,Y!==void 0?{pinnedOnly:Y}:void 0);if($.where)G=G.filter((B)=>DU0(B,$.where));let K=await uF(Z);if(K!==null)G=G.filter((B)=>hF(K,B.id));if($.orderBy&&$.orderBy.length>0)G=fp4(G,$.orderBy);let W=G.length,H=$.offset??0,F=$.limit??100,U=G.slice(H,H+F),N=H+F<W;return{items:U,totalCount:W,hasMore:N}}})});import{z as QX1}from"zod";var gp4,hp4,aA;var XX1=D(()=>{q0();Hm();Rw();gp4=QX1.object({id:QX1.string().describe("ID of the virtual MCP to retrieve")}),hp4=QX1.object({item:hQ.nullable().describe("The retrieved virtual MCP, or null if not found")}),aA=h({name:"COLLECTION_VIRTUAL_MCP_GET",description:"Get a Virtual MCP's configuration, connections, and virtual tools by ID.",annotations:{title:"Get Virtual MCP",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:gp4,outputSchema:hp4,handler:async($,Z)=>{t(Z);let Q=n(Z);await Z.access.check();let X=await Z.storage.virtualMcps.findById($.id);if(X&&X.organization_id!==Q.id)return{item:null};if(!X)return{item:null};let Y=await uF(Z);if(!hF(Y,X.id))return{item:null};return{item:X}}})});function HQ($){return YX1.test($)}function GI$($){let Z=(Q)=>typeof Q==="string"?Q.trim().toLowerCase():"";return Z($?.metadata?.siteSlug)||Z($?.title)||null}var YX1;var cF=D(()=>{YX1=/^[a-z0-9][a-z0-9-]{0,59}$/});function KI$($){let{nextTitle:Z,currentTitle:Q,currentSiteSlug:X}=$;if(X?.trim())return null;if(Z===void 0||Z===Q)return null;let Y=Q?.trim().toLowerCase()??"";return HQ(Y)?Y:null}var WI$=D(()=>{cF()});import{z as JX1}from"zod";var up4,lp4,sA;var GX1=D(()=>{q0();Hm();I00();Rw();tQ1();WI$();up4=JX1.object({id:JX1.string().describe("ID of the virtual MCP to update"),data:U30.describe("Partial virtual MCP data to update")}),lp4=JX1.object({item:hQ.describe("The updated virtual MCP entity")}),sA=h({name:"COLLECTION_VIRTUAL_MCP_UPDATE",description:"Update a Virtual MCP's name, slug, connection list, or kickstart prompts. Pass `prompts` to replace the agent's conversation starters (full set; empty array clears them).",annotations:{title:"Update Virtual MCP",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:up4,outputSchema:lp4,handler:async($,Z)=>{t(Z);let Q=n(Z);await Z.access.check();let X=d0(Z);if(!X)throw Error("User ID required to update virtual MCP");let Y=await Z.storage.virtualMcps.findById($.id);if(!Y)throw Error(`Virtual MCP not found: ${$.id}`);if(Y.organization_id!==Q.id)throw Error(`Virtual MCP not found: ${$.id}`);let J=await uF(Z);if(!hF(J,Y.id))throw Error(`Virtual MCP not found: ${$.id}`);let{prompts:G,metadata:K,...W}=$.data,H=Wm(K);if(H&&Y.metadata)H={...Y.metadata,...H};else if(H===null&&Y.metadata?.sandboxMap)H={sandboxMap:Y.metadata.sandboxMap};let F={...W,...K!==void 0?{metadata:H}:{}},U=KI$({nextTitle:F.title,currentTitle:Y.title,currentSiteSlug:Y.metadata?.siteSlug});if(U)F.metadata={...Y.metadata,...F.metadata,siteSlug:U};if(F.pinned!==void 0&&F.pinned!==Y.pinned)KU0(Z);if(F.connections?.length)await WU0(Z,Q.id,F.connections.map((B)=>B.connection_id));let N=await Z.storage.virtualMcps.update($.id,X,F);if(G!==void 0&&Z.orgFs)await OU0(Z.orgFs,$.id,X,G);return{item:N}}})});function WX1($){if(!$)return!1;let Z=V00.join("|");return new RegExp(`permission\\s+"?(?:${Z})"?\\s+is not allowed`,"i").test($)||/permissions exceed what the github app/i.test($)}function HI$($){let Z={...$};for(let Q of V00)Z[Q]="read";return Z}async function FI$($,Z){let Q={...Z};for(;;){let X=await $(Q);if(!X.isError)return{result:X,grantedPermissions:Q};let Y=X.content?.find((W)=>W.type==="text")?.text,J=V00.find((W)=>(W in Q));if(!J||!WX1(Y))return{result:X,grantedPermissions:Q};let{[J]:G,...K}=Q;Q=K}}function cp4($){if(!$||typeof $!=="object"||Array.isArray($))return LU0;let Z=$;if(Object.values(Z).some((Q)=>typeof Q!=="string"))return LU0;return Z}function mp4($){if(typeof $!=="number"||!Number.isFinite($)||!Number.isInteger($)||$<=0)return;return $}function L9($){let Z=$.metadata?.repoScope;if(!Z||typeof Z.installationId!=="number"||!Number.isFinite(Z.installationId)||!Number.isInteger(Z.installationId)||Z.installationId<=0||typeof Z.owner!=="string"||typeof Z.repo!=="string"||Z.owner.length===0||Z.repo.length===0)return null;let Q=mp4(Z.repositoryId);return{sourceConnectionId:typeof Z.sourceConnectionId==="string"?Z.sourceConnectionId:void 0,installationId:Z.installationId,repositoryId:Q,owner:Z.owner,repo:Z.repo,permissions:cp4(Z.permissions),grantProvider:Z.grantProvider==="github-mcp"?"github-mcp":void 0}}function kw($){return $.metadata?.orgShared===!0}function UI$($){let Z=new Set,Q=[];for(let X of $??[]){if(X.status!=="active")continue;let Y=L9(X);if(Y===null)continue;let J=KX1(Y.owner,Y.repo);if(Z.has(J))continue;Z.add(J),Q.push(`${Y.owner}/${Y.repo}`)}return Q}function wU0($,Z,Q){let X=KX1(Z,Q),Y=($??[]).filter((J)=>{if(J.status&&J.status!=="active")return!1;let G=L9(J);return G!==null&&KX1(G.owner,G.repo)===X});return Y.find(kw)??Y[0]??null}var LU0,V00,KX1=($,Z)=>`${$}/${Z}`.toLowerCase();var ZJ=D(()=>{LU0={contents:"write",metadata:"read",pull_requests:"write",issues:"write",checks:"read",deployments:"read"},V00=["deployments","checks"]});function NI$($){return $X($)!==null||wW0($)!==null}var BI$=D(()=>{V8()});import{z as HX1}from"zod";var dp4,ip4,eA;var FX1=D(()=>{ZJ();gW();q0();Hm();I00();Rw();BI$();dp4=HX1.object({id:HX1.string().describe("ID of the virtual MCP to delete")}),ip4=HX1.object({item:hQ.describe("The deleted virtual MCP entity")}),eA=h({name:"COLLECTION_VIRTUAL_MCP_DELETE",description:"Permanently delete a Virtual MCP and its virtual tools.",annotations:{title:"Delete Virtual MCP",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:dp4,outputSchema:ip4,handler:async($,Z)=>{t(Z);let Q=n(Z);if(await Z.access.check(),NI$($.id))throw Error(`Virtual MCP not found: ${$.id}`);let X=await Z.storage.virtualMcps.findById($.id);if(!X)throw Error(`Virtual MCP not found: ${$.id}`);if(X.organization_id!==Q.id)throw Error(`Virtual MCP not found: ${$.id}`);let Y=await uF(Z);if(!hF(Y,X.id))throw Error(`Virtual MCP not found: ${$.id}`);if(await Z.storage.virtualMcps.delete($.id),Z.orgFs)await aQ1(Z.orgFs,$.id,d0(Z)??"system");let J=X.metadata?.githubRepo?.connectionId;if(J)try{let G=await Z.storage.connections.findById(J,Q.id),K=G&&(kw(G)||(await Z.storage.virtualMcps.listByConnectionId(Q.id,J)).length>0||await Z.storage.connections.isReferencedByThread(J));if(G&&L9(G)&&!K){let H=await new l5(Z.db,Z.vault).get(J);if(H?.accessToken)try{await fetch("https://api.github.com/installation/token",{method:"DELETE",headers:{Authorization:`Bearer ${H.accessToken}`,Accept:"application/vnd.github+json","X-GitHub-Api-Version":"2022-11-28"},signal:AbortSignal.timeout(5000)})}catch{}await Z.storage.connections.delete(J)}}catch(G){console.error("[VIRTUAL_MCP_DELETE] failed to tear down repo-scoped connection",{childConnectionId:J,error:G.message})}return{item:X}}})});import{z as QJ}from"zod";var pp4,$T;var UX1=D(()=>{q0();pp4=QJ.object({id:QJ.string(),virtualMcpId:QJ.string(),pluginId:QJ.string(),connectionId:QJ.string().nullable(),settings:QJ.record(QJ.string(),QJ.unknown()).nullable(),createdAt:QJ.string(),updatedAt:QJ.string()}),$T=h({name:"VIRTUAL_MCP_PLUGIN_CONFIG_GET",description:"Get a plugin's current configuration for a specific virtual MCP.",annotations:{title:"Get Virtual MCP Plugin Config",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:QJ.object({virtualMcpId:QJ.string().describe("Virtual MCP ID"),pluginId:QJ.string().describe("Plugin ID")}),outputSchema:QJ.object({config:pp4.nullable()}),handler:async($,Z)=>{t(Z);let Q=n(Z);await Z.access.check();let{virtualMcpId:X,pluginId:Y}=$,J=await Z.storage.connections.findById(X);if(!J||J.organization_id!==Q.id)return{config:null};if(J.connection_type!=="VIRTUAL")return{config:null};let G=await Z.storage.virtualMcpPluginConfigs.get(X,Y);if(!G)return{config:null};return{config:{id:G.id,virtualMcpId:G.virtualMcpId,pluginId:G.pluginId,connectionId:G.connectionId,settings:G.settings,createdAt:G.createdAt instanceof Date?G.createdAt.toISOString():G.createdAt,updatedAt:G.updatedAt instanceof Date?G.updatedAt.toISOString():G.updatedAt}}}})});import{z as q7}from"zod";var np4,ZT;var NX1=D(()=>{q0();dA();A5();np4=q7.object({id:q7.string(),virtualMcpId:q7.string(),pluginId:q7.string(),connectionId:q7.string().nullable(),settings:q7.record(q7.string(),q7.unknown()).nullable(),createdAt:q7.string(),updatedAt:q7.string()}),ZT=h({name:"VIRTUAL_MCP_PLUGIN_CONFIG_UPDATE",description:"Set or update a plugin's configuration for a specific virtual MCP.",annotations:{title:"Update Virtual MCP Plugin Config",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:q7.object({virtualMcpId:q7.string().describe("Virtual MCP ID"),pluginId:q7.string().describe("Plugin ID"),connectionId:q7.string().nullable().optional().describe("MCP connection to bind"),settings:q7.record(q7.string(),q7.unknown()).nullable().optional().describe("Plugin-specific settings")}),outputSchema:q7.object({config:np4}),handler:async($,Z)=>{t(Z);let Q=n(Z);await Z.access.check();let{virtualMcpId:X,pluginId:Y,connectionId:J,settings:G}=$,K=d0(Z),W=await Z.storage.connections.findById(X);if(!W)throw Error(`Connection not found: ${X}`);if(W.organization_id!==Q.id)throw Error(`Connection not found: ${X}`);if(W.connection_type!=="VIRTUAL")throw Error(`Connection not found: ${X}`);let H=J?await Z.storage.connections.findById(J):null;if(J&&H&&H.organization_id!==Q.id)throw Error(`Connection not found: ${J}`);if(J&&W.organization_id&&!H&&$J()&&Xm(J,W.organization_id)){if(!K)throw Error("User ID required to create dev-assets connection");let U=Ym(W.organization_id,P5());await Z.storage.connections.create({...U,organization_id:W.organization_id,created_by:K})}else if(J&&!H)throw Error(`Connection not found: ${J}`);let F=await Z.storage.virtualMcpPluginConfigs.upsert(X,Y,{connectionId:J,settings:G});return{config:{id:F.id,virtualMcpId:F.virtualMcpId,pluginId:F.pluginId,connectionId:F.connectionId,settings:F.settings,createdAt:F.createdAt instanceof Date?F.createdAt.toISOString():F.createdAt,updatedAt:F.updatedAt instanceof Date?F.updatedAt.toISOString():F.updatedAt}}}})});function OI$($,Z){let Q=$!==null&&typeof $==="object"&&!Array.isArray($)?$:null;if(Z===void 0)return Q;return{...Q??{},...Z}}import{z as sX}from"zod";var tp4,QT;var BX1=D(()=>{q0();Hm();Rw();tp4=sX.object({connectionId:sX.string(),toolName:sX.string(),label:sX.string(),icon:sX.string().nullable().optional()}),QT=h({name:"VIRTUAL_MCP_PINNED_VIEWS_UPDATE",description:"Update the pinned sidebar views for a virtual MCP. Replaces all current pins.",annotations:{title:"Update Pinned Views",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:sX.object({virtualMcpId:sX.string().describe("Virtual MCP ID"),pinnedViews:sX.array(tp4).describe("Pinned views to set for the virtual MCP sidebar"),layout:sX.object({defaultMainView:sX.object({type:sX.string(),id:sX.string().optional(),toolName:sX.string().optional()}).nullable().optional(),chatDefaultOpen:sX.boolean().nullable().optional()}).optional()}),outputSchema:sX.object({item:hQ.nullable()}),handler:async($,Z)=>{t(Z);let Q=n(Z);await Z.access.check();let{virtualMcpId:X,pinnedViews:Y,layout:J}=$,G=d0(Z),K=await Z.storage.virtualMcps.findById(X);if(!K)throw Error(`Virtual MCP not found: ${X}`);if(K.organization_id!==Q.id)throw Error(`Virtual MCP not found: ${X}`);let W=await uF(Z);if(!hF(W,K.id))throw Error(`Virtual MCP not found: ${X}`);let H=K.metadata?.ui??{},F={...H,pinnedViews:Y.length>0?Y:null,layout:OI$(H.layout,J)};return{item:await Z.storage.virtualMcps.update(X,G??"system",{metadata:{...K.metadata,ui:F}})}}})});import{z as wB}from"zod";var op4,rp4,OX1;var DI$=D(()=>{q0();op4=wB.object({ids:wB.array(wB.string()).max(1000).describe("Virtual MCP ids to look up")}),rp4=wB.object({items:wB.array(wB.object({id:wB.string(),last_used_at:wB.string().optional(),last_used_by:wB.string().optional()}))}),OX1=h({name:"VIRTUAL_MCP_LAST_USED_LIST",description:"Get last-used info (timestamp + user) for one or more virtual MCPs, derived from the most recent thread per agent.",annotations:{title:"List Virtual MCP Last Used",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:op4,outputSchema:rp4,handler:async($,Z)=>{t(Z),n(Z),await Z.access.check();let Q=await Z.storage.threads.findLastUsedByVirtualMcpIds($.ids);return{items:$.ids.map((X)=>({id:X,last_used_at:Q.get(X)?.last_used_at,last_used_by:Q.get(X)?.last_used_by}))}}})});var LI$=D(()=>{sQ1();ZX1();XX1();GX1();FX1();UX1();NX1();BX1();DI$()});import{z as JX}from"zod";var DX1;var wI$=D(()=>{B6();q0();DX1=h({name:"MONITORING_HEATMAP",description:"Get tool-call volume broken down by agent and tool name, for spotting heavily-used tools per agent.",annotations:{title:"Get Tool-Call Heatmap",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:JX.object({startDate:JX.string().datetime().optional().describe("Filter by start date (ISO 8601 datetime string)"),endDate:JX.string().datetime().optional().describe("Filter by end date (ISO 8601 datetime string)"),virtualMcpIds:JX.array(JX.string()).max(100).optional().describe("Filter by specific agent (Virtual MCP) IDs"),excludeConnectionIds:JX.array(JX.string()).max(100).optional().describe("Exclude tool calls from these connection IDs"),limit:JX.number().int().min(1).max(1000).optional().describe("Max number of (agent, tool) cells to return")}),outputSchema:JX.object({cells:JX.array(JX.object({virtualMcpId:JX.string().nullable(),toolName:JX.string(),calls:JX.number(),errors:JX.number(),outputSize:JX.number().describe("Sum of tool-output character length \u2014 a proxy for context weight, not LLM token count")}))}),handler:async($,Z)=>{let Q=n(Z);return await Z.access.check(),await RY(),Z.storage.monitoring.queryToolCallHeatmap({organizationId:Q.id,startDate:$.startDate?new Date($.startDate):void 0,endDate:$.endDate?new Date($.endDate):void 0,filters:{virtualMcpIds:$.virtualMcpIds,excludeConnectionIds:$.excludeConnectionIds},limit:$.limit})}})});import{z as c5}from"zod";var LX1;var jI$=D(()=>{B6();q0();LX1=h({name:"MONITORING_LOG_GET",description:"Get a single monitoring log by ID with full input and output data.",annotations:{title:"Get Monitoring Log",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:c5.object({id:c5.string().describe("Log ID to fetch")}),outputSchema:c5.object({log:c5.object({id:c5.string().optional(),organizationId:c5.string(),connectionId:c5.string(),toolName:c5.string(),input:c5.record(c5.string(),c5.unknown()),output:c5.record(c5.string(),c5.unknown()),isError:c5.boolean(),errorMessage:c5.string().nullish(),durationMs:c5.number(),timestamp:c5.string(),userId:c5.string().nullish(),requestId:c5.string(),userAgent:c5.string().nullish(),virtualMcpId:c5.string().nullish(),properties:c5.record(c5.string(),c5.string()).nullish()}).nullable().describe("The monitoring log, or null if not found")}),handler:async($,Z)=>{await Z.access.check(),await RY();let Q=n(Z),X=await Z.storage.monitoring.getById(Q.id,$.id);if(!X)return{log:null};return{log:{...X,timestamp:X.timestamp instanceof Date?X.timestamp.toISOString():X.timestamp}}}})});import{z as q8}from"zod";var sp4,wX1;var EI$=D(()=>{B6();q0();sp4=q8.object({id:q8.string().optional().describe("Unique log identifier"),organizationId:q8.string().describe("Organization ID"),connectionId:q8.string().describe("Connection ID"),toolName:q8.string().describe("Name of the tool that was called"),isError:q8.boolean().describe("Whether the call resulted in an error"),errorMessage:q8.string().nullish().describe("Error message if applicable"),durationMs:q8.number().describe("Call duration in milliseconds"),timestamp:q8.string().describe("ISO 8601 timestamp of the call"),userId:q8.string().nullish().describe("User who triggered the call"),requestId:q8.string().describe("Unique request identifier"),userAgent:q8.string().nullish().describe("Client identifier (x-studio-client header)"),virtualMcpId:q8.string().nullish().describe("Virtual MCP (Agent) ID if routed through an agent"),properties:q8.record(q8.string(),q8.string()).nullish().describe("Custom key-value metadata attached to the log")}),wX1=h({name:"MONITORING_LOGS_LIST",description:"List monitoring logs for tool calls with filtering and pagination.",annotations:{title:"List Monitoring Logs",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:q8.object({connectionId:q8.string().optional().describe("Filter by connection ID"),excludeConnectionIds:q8.array(q8.string()).optional().describe("Exclude logs from these connection IDs (e.g. system connections)"),virtualMcpId:q8.string().optional().describe("Filter by Virtual MCP (Agent) ID"),toolName:q8.string().optional().describe("Filter by tool name"),isError:q8.boolean().optional().describe("Filter by error status"),startDate:q8.string().datetime().optional().describe("Filter by start date (ISO 8601 datetime string)"),endDate:q8.string().datetime().optional().describe("Filter by end date (ISO 8601 datetime string)"),limit:q8.number().default(20).describe("Maximum number of results"),offset:q8.number().default(0).describe("Offset for pagination"),properties:q8.record(q8.string(),q8.string()).optional().describe("Filter by exact property key=value matches"),propertyKeys:q8.array(q8.string()).optional().describe("Filter by logs that have these property keys"),propertyPatterns:q8.record(q8.string(),q8.string()).optional().describe("Filter by property value patterns (SQL LIKE, use % as wildcard)"),propertyInValues:q8.record(q8.string(),q8.string()).optional().describe("Filter by exact match within comma-separated values (e.g., user_tags in 'Engineering')")}),outputSchema:q8.object({logs:q8.array(sp4).describe("Array of monitoring logs"),total:q8.number().describe("Total number of logs matching filters"),offset:q8.number().describe("Current offset for pagination"),limit:q8.number().describe("Current limit for pagination")}),handler:async($,Z)=>{await Z.access.check(),await RY();let Q=n(Z),Y=$.properties||$.propertyKeys||$.propertyPatterns||$.propertyInValues?{properties:$.properties,propertyKeys:$.propertyKeys,propertyPatterns:$.propertyPatterns,propertyInValues:$.propertyInValues}:void 0,J={organizationId:Q.id,connectionId:$.connectionId,excludeConnectionIds:$.excludeConnectionIds,virtualMcpId:$.virtualMcpId,toolName:$.toolName,isError:$.isError,startDate:$.startDate?new Date($.startDate):void 0,endDate:$.endDate?new Date($.endDate):void 0,limit:$.limit,offset:$.offset,propertyFilters:Y},G=await Z.storage.monitoring.query(J);return{logs:G.logs.map(({input:K,output:W,...H})=>({...H,timestamp:H.timestamp instanceof Date?H.timestamp.toISOString():H.timestamp})),total:G.total,offset:$.offset,limit:$.limit}}})});import{z as D$}from"zod";var jX1;var zI$=D(()=>{B6();q0();jX1=h({name:"MONITORING_STATS",description:"Get aggregated statistics (counts, latency, error rates) for tool call monitoring.",annotations:{title:"Get Monitoring Stats",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:D$.object({startDate:D$.string().datetime().optional().describe("Filter by start date (ISO 8601 datetime string)"),endDate:D$.string().datetime().optional().describe("Filter by end date (ISO 8601 datetime string)"),interval:D$.string().regex(/^\d+[mhd]$/).optional().describe("Bucket interval for timeseries data (e.g. 1m, 5m, 2h, 1d). When provided, returns timeseries array."),connectionIds:D$.array(D$.string()).max(100).optional().describe("Filter by specific connection IDs (max 100)"),excludeConnectionIds:D$.array(D$.string()).max(100).optional().describe("Exclude specific connection IDs (max 100)"),toolNames:D$.array(D$.string()).max(100).optional().describe("Filter by specific tool names (max 100)"),status:D$.enum(["success","error"]).optional().describe("Filter metrics by execution status"),topN:D$.number().int().min(1).max(20).optional().describe("When provided with interval, also return top tools and their timeseries"),userIds:D$.array(D$.string()).max(100).optional().describe("Filter LLM usage by user IDs (only applied when llmUsage is true)"),llmUsage:D$.boolean().optional().describe("Aggregate LLM-call usage (tokens + USD cost) from raw log rows for the given connection. Returns token/cost totals and timeseries. Requires interval.")}),outputSchema:D$.object({totalCalls:D$.number().describe("Total number of tool calls"),errorRate:D$.number().optional().describe("Error rate as a decimal (0 to 1)"),avgDurationMs:D$.number().describe("Average call duration in milliseconds"),errorRatePercent:D$.string().optional().describe("Error rate as a percentage string"),totalErrors:D$.number().optional().describe("Total number of errors"),p50DurationMs:D$.number().optional().describe("50th percentile duration in milliseconds"),p95DurationMs:D$.number().optional().describe("95th percentile duration in milliseconds"),connectionBreakdown:D$.array(D$.object({connectionId:D$.string(),calls:D$.number(),errors:D$.number(),errorRate:D$.number(),avgDurationMs:D$.number()})).optional().describe("Per-connection metric breakdown"),totalInputTokens:D$.number().optional().describe("Total input tokens (LLM usage mode)"),totalOutputTokens:D$.number().optional().describe("Total output tokens (LLM usage mode)"),totalTokens:D$.number().optional().describe("Total tokens (LLM usage mode)"),totalCostUsd:D$.number().optional().describe("Total USD cost (LLM usage mode; only non-zero for providers that report cost)"),topTools:D$.array(D$.object({toolName:D$.string(),connectionId:D$.string().nullable(),calls:D$.number(),inputTokens:D$.number().optional(),outputTokens:D$.number().optional(),costUsd:D$.number().optional()})).optional().describe("Top tools ranked by calls"),topToolsTimeseries:D$.array(D$.object({timestamp:D$.string(),toolName:D$.string(),calls:D$.number(),errors:D$.number(),avg:D$.number(),p95:D$.number()})).optional().describe("Per-tool metric timeseries for the top tools"),timeseries:D$.array(D$.object({timestamp:D$.string(),calls:D$.number(),errors:D$.number(),errorRate:D$.number(),avg:D$.number(),p50:D$.number(),p95:D$.number(),inputTokens:D$.number().optional(),outputTokens:D$.number().optional(),totalTokens:D$.number().optional(),costUsd:D$.number().optional()})).optional().describe("Timeseries data points bucketed by interval")}),handler:async($,Z)=>{let Q=n(Z);if(await Z.access.check(),await RY(),$.interval&&$.llmUsage)return Z.storage.monitoring.queryLlmUsageStats({organizationId:Q.id,interval:$.interval,connectionId:$.connectionIds?.[0]??"decopilot",startDate:$.startDate?new Date($.startDate):void 0,endDate:$.endDate?new Date($.endDate):void 0,userIds:$.userIds,topN:$.topN});if($.interval){let Y=await Z.storage.monitoring.queryMetricTimeseries({organizationId:Q.id,interval:$.interval,startDate:$.startDate?new Date($.startDate):void 0,endDate:$.endDate?new Date($.endDate):void 0,filters:{connectionIds:$.connectionIds,excludeConnectionIds:$.excludeConnectionIds,toolNames:$.toolNames,status:$.status}});if(!$.topN)return Y;let J=await Z.storage.monitoring.queryMetricTopToolsTimeseries({organizationId:Q.id,interval:$.interval,startDate:$.startDate?new Date($.startDate):void 0,endDate:$.endDate?new Date($.endDate):void 0,topN:$.topN,filters:{connectionIds:$.connectionIds,excludeConnectionIds:$.excludeConnectionIds,toolNames:$.toolNames,status:$.status}});return{...Y,topTools:J.topTools,topToolsTimeseries:J.timeseries}}let X=await Z.storage.monitoring.getStats({organizationId:Q.id,startDate:$.startDate?new Date($.startDate):void 0,endDate:$.endDate?new Date($.endDate):void 0});return{...X,errorRatePercent:(X.errorRate*100).toFixed(2)}}})});import{z as eX}from"zod";var EX1;var PI$=D(()=>{B6();q0();EX1=h({name:"MONITORING_THREAD_USAGE",description:"Aggregate LLM token usage and USD cost per thread for the given thread IDs.",annotations:{title:"Get Thread Usage",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:eX.object({threadIds:eX.array(eX.string()).min(1).max(500).describe("Thread IDs to aggregate usage for (max 500)"),connectionId:eX.string().optional().describe("LLM connection ID (defaults to 'decopilot')"),startDate:eX.string().datetime().optional().describe("Filter by start date (ISO 8601 datetime string)"),endDate:eX.string().datetime().optional().describe("Filter by end date (ISO 8601 datetime string)")}),outputSchema:eX.object({items:eX.array(eX.object({threadId:eX.string(),calls:eX.number(),inputTokens:eX.number(),outputTokens:eX.number(),totalTokens:eX.number(),costUsd:eX.number()}))}),handler:async($,Z)=>{let Q=n(Z);return await Z.access.check(),await RY(),{items:await Z.storage.monitoring.queryThreadUsage({organizationId:Q.id,connectionId:$.connectionId??"decopilot",threadIds:$.threadIds,startDate:$.startDate?new Date($.startDate):void 0,endDate:$.endDate?new Date($.endDate):void 0})}}})});var AI$=D(()=>{wI$();jI$();EI$();zI$();PI$()});function jU0($){return typeof $==="string"&&$n4.has($.trim().toLowerCase())}var $n4;var zX1=D(()=>{$n4=new Set([".well-known","_admin","_users","api","auth","choose-editor","cli","commerce-onboarding","dbos-queue-depth","health","hosted-run-pending","login","mcp","metrics","oauth","oauth-proxy","onboarding","org","report","reports-onboarding","reset-password"])});import{z as E3}from"zod";var PX1;var TI$=D(()=>{q0();zX1();PX1=h({name:"ORGANIZATION_CREATE",description:"Create a new organization. The caller becomes the owner automatically.",annotations:{title:"Create Organization",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!1},inputSchema:E3.object({slug:E3.string().min(1).max(50).regex(/^[a-z0-9-]+$/,"Slug must be lowercase alphanumeric with hyphens").refine(($)=>!jU0($),"Slug is reserved by Studio"),name:E3.string().min(1).max(255),description:E3.string().optional()}),outputSchema:E3.object({id:E3.string(),name:E3.string(),slug:E3.string(),logo:E3.string().nullable().optional(),metadata:E3.any().optional(),createdAt:E3.string().datetime().describe("ISO 8601 timestamp"),members:E3.array(E3.any()).optional()}),handler:async($,Z)=>{t(Z),await Z.access.check();let Q=d0(Z);if(!Q)throw Error("User ID required to create organization");let X=await Z.boundAuth.organization.create({name:$.name,slug:$.slug,metadata:$.description?{description:$.description}:void 0,userId:Q});if(!X)throw Error("Failed to create organization");return{...X,createdAt:X.createdAt instanceof Date?X.createdAt.toISOString():X.createdAt}}})});import{z as mF}from"zod";var AX1;var RI$=D(()=>{q0();AX1=h({name:"ORGANIZATION_LIST",description:"List organizations the current user belongs to.",annotations:{title:"List Organizations",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},_meta:{ui:{visibility:"app"}},inputSchema:mF.object({}),outputSchema:mF.object({organizations:mF.array(mF.object({id:mF.string(),name:mF.string(),slug:mF.string(),logo:mF.string().nullable().optional(),metadata:mF.any().optional(),createdAt:mF.string().datetime().describe("ISO 8601 timestamp")}))}),handler:async($,Z)=>{if(t(Z),await Z.access.check(),!d0(Z))throw Error("User ID required to list organizations");return{organizations:(await Z.boundAuth.organization.list()).map((X)=>({...X,createdAt:X.createdAt instanceof Date?X.createdAt.toISOString():X.createdAt}))}}})});import{z as sG}from"zod";var TX1;var qI$=D(()=>{q0();TX1=h({name:"ORGANIZATION_GET",description:"Get an organization's details, members, and settings by slug or ID.",annotations:{title:"Get Organization",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:sG.object({}),outputSchema:sG.object({id:sG.string(),name:sG.string(),slug:sG.string(),logo:sG.string().nullable().optional(),metadata:sG.any().optional(),createdAt:sG.string().datetime().describe("ISO 8601 timestamp"),members:sG.array(sG.any()).optional(),invitations:sG.array(sG.any()).optional()}),handler:async($,Z)=>{t(Z),await Z.access.check();let Q=Z.organization?.id;if(!Q)throw Error("Organization ID required (no active organization in context)");let X=await Z.boundAuth.organization.get(Q);if(!X)throw Error("No active organization found");let Y=new Date,J=X.invitations?.filter((G)=>new Date(G.expiresAt)>Y);return{...X,invitations:J,createdAt:X.createdAt instanceof Date?X.createdAt.toISOString():X.createdAt}}})});import{z as hW}from"zod";var RX1;var MI$=D(()=>{q0();RX1=h({name:"ORGANIZATION_UPDATE",description:"Update an organization's name or description.",annotations:{title:"Update Organization",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:hW.object({id:hW.string(),name:hW.string().min(1).max(255).optional(),description:hW.string().optional()}),outputSchema:hW.object({id:hW.string(),name:hW.string(),slug:hW.string(),logo:hW.string().nullable().optional(),metadata:hW.any().optional(),createdAt:hW.string().datetime().describe("ISO 8601 timestamp")}),handler:async($,Z)=>{if(t(Z),await Z.access.check(),$.id!==Z.organization?.id)throw Error("Organization ID does not match authenticated organization");let Q={};if($.name)Q.name=$.name;if($.description!==void 0){let Y=await Z.boundAuth.organization.get($.id);Q.metadata={...Y?.metadata,description:$.description}}let X=await Z.boundAuth.organization.update({organizationId:$.id,data:Q});if(!X)throw Error("Failed to update organization");return{...X,createdAt:X.createdAt instanceof Date?X.createdAt.toISOString():X.createdAt}}})});import{z as k00}from"zod";var qX1;var II$=D(()=>{q0();qX1=h({name:"ORGANIZATION_DELETE",description:"Archive an organization (soft delete).",annotations:{title:"Delete Organization",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:k00.object({id:k00.string()}),outputSchema:k00.object({success:k00.boolean(),id:k00.string()}),handler:async($,Z)=>{if(t(Z),await Z.access.check(),$.id!==Z.organization?.id)throw Error("Organization ID does not match authenticated organization");let X=(await Z.boundAuth.organization.get($.id))?.metadata??{};if(X.archived===!0)return{success:!0,id:$.id};return await Z.boundAuth.organization.update({organizationId:$.id,data:{metadata:{...X,archived:!0,archivedAt:new Date().toISOString()}}}),{success:!0,id:$.id}}})});import{z as c1}from"zod";function FQ($,Z){let Q=$?.[Z];return Zn4.has(Z)?Q!==!1:Q===!0}function kI$($){let Z=$?.auto_resolve_conflicts;return typeof Z==="boolean"?Z:$?.auto_merge===!0}var EB=500,S00,C00,jB,VI$,Sw,_00,v00,x00,XT,Zn4,EU0=262144,Qn4=50,z3=500,Xn4=5000,Cw;var $Z=D(()=>{S00=c1.object({title:c1.string().max(EB),url:c1.string().max(EB),icon:c1.string().max(EB)}),C00=c1.object({registries:c1.record(c1.string().max(EB),c1.object({enabled:c1.boolean()})).describe("Per-registry enabled/disabled state. Key is connection ID. Absent registries are treated as enabled."),blockedMcps:c1.array(c1.string().max(EB)).describe("List of MCP app_name or app_id values to hide from the store.")}),jB=c1.object({keyId:c1.string().max(EB),modelId:c1.string().max(EB),title:c1.string().max(EB).optional()}).nullable(),VI$=c1.enum(["fast","smart","thinking","image","web_search","deep_research"]),Sw=c1.enum(["fast","smart","thinking"]),_00=c1.object({tiers:c1.object({fast:jB,smart:jB,thinking:jB,image:jB,web_search:jB,deep_research:jB})}),v00=c1.object({tiers:c1.object({fast:jB.optional(),smart:jB.optional(),thinking:jB.optional()})}),x00=c1.object({ids:c1.array(c1.string().max(EB)).describe("Ordered list of custom virtual MCP agent ids to show on the home view.")}),XT=c1.object({home_task_intake_enabled:c1.boolean().optional().describe("Show Task mode on the Home composer and allow reports to start tasks."),demo_mode:c1.boolean().optional().describe("Curated demo org: the commerce connect modal proceeds without a configured required data source."),reports_only:c1.boolean().optional().describe("Curated commerce (reports) look: hides agent navigation, the home Customize button, and the Settings/Automations tabs. Defaulted on for orgs created by commerce onboarding."),reviewer_enabled:c1.boolean().optional().describe("Run the Reviewer on a task's pull request once it's In Review \u2014 it reviews the code with the repo's stack-appropriate skills, fixes what it finds on the PR's own branch, then exercises the change on the deploy preview and approves or hands the card to a human."),qa_agent_enabled:c1.boolean().optional().describe("Deprecated: see reviewer_enabled."),code_reviewer_enabled:c1.boolean().optional().describe("Deprecated: see reviewer_enabled."),auto_merge:c1.boolean().optional().describe("When the Reviewer approves a task's pull request, merge it automatically instead of leaving the merge to a human."),auto_resolve_conflicts:c1.boolean().optional().describe("When an approved pull request can't be merged because it conflicts with its base branch, hand it back to the Super Agent to resolve the conflict (check out the branch, merge the base, push). Unset, it follows `auto_merge`; set it explicitly to run one without the other."),cheap_reviewer_model:c1.boolean().optional().describe("Run the Reviewer on a cheaper model than the Super Agent that wrote the code. On by default \u2014 turning it off trades cost for some review depth."),coding_agent_org_mcps:c1.boolean().optional().describe("Give a coding-agent run (the claude-code harness in a sandbox) every MCP connection in the org as its own MCP server, on top of the narrow task-run surface it always gets. Off by default: each connection is one more server the agent connects to at session start, and all of their tools land in its context."),coding_agents_claude_code:c1.boolean().optional().describe("Run chats on a Code Agent (an agent imported from a GitHub repo) with the claude-code harness inside its sandbox, instead of hosted Decopilot. Off by default: it changes the runtime of every such chat, and claude-code flushes whole turns rather than streaming tokens."),auto_assign_report_tasks_to_super_agent:c1.boolean().optional().describe("When a report import creates a task board item without an assignee, delegate it to the Super Agent automatically instead of leaving it unassigned."),hosting_enabled:c1.boolean().optional().describe("Per-site Hosting tab (deployments, domains, deploy outcomes). Off by default. deco.cx staff and local dev always see it; this flag is the per-client lever to open it to one external org. `HOSTING_CONTROL_PLANE_GA` opens it (and its peers) to every org at once."),deco_analytics_enabled:c1.boolean().optional().describe("Per-site Deco Analytics tab (traffic, realtime, usage & limits). Off by default. deco.cx staff and local dev always see it; this flag is the per-client lever to open it to one external org. `HOSTING_CONTROL_PLANE_GA` opens it (and its peers) to every org at once."),e2e_enabled:c1.boolean().optional().describe("Per-site E2E tab (end-to-end test runs). Off by default. deco.cx staff and local dev always see it; this flag is the per-client lever to open it to one external org. `HOSTING_CONTROL_PLANE_GA` opens it (and its peers) to every org at once."),monitor_enabled:c1.boolean().optional().describe("Per-site Monitor tab (CDN Performance + Audience from the stats-lake warehouse). Off by default. deco.cx staff and local dev always see it; this flag is the per-client lever to open it to one external org. Its own deployment-wide switch `MONITOR_GA` opens it to every org at once (independent of the control-plane trio)."),delivery_lanes_enabled:c1.boolean().optional().describe("Board lanes for shipping: Approved, Merged and Post-deploy Validation sit between In Review and Done, and a merged pull request lands on Merged instead of Done. For teams whose release process continues after the merge. Off by default \u2014 with it off the board and the state machine behave exactly as if the lanes did not exist."),cms_auto_fresh_branch:c1.boolean().optional().describe("When a user opens the CMS on a branch whose last commit is older than the staleness window (2 days), move the session to a freshly minted branch cut from the default branch. The stale branch is left intact on GitHub. Off by default.")}),Zn4=new Set(["reviewer_enabled","cheap_reviewer_model"]);Cw=c1.object({id:c1.string().describe("Brand context ID"),name:c1.string().max(z3).describe("Company name"),domain:c1.string().max(z3).describe("Company domain (e.g. example.com)"),overview:c1.string().max(Xn4).describe("Company overview / description"),logo:c1.string().max(z3).nullable().optional().describe("Logo URL"),favicon:c1.string().max(z3).nullable().optional().describe("Favicon URL"),ogImage:c1.string().max(z3).nullable().optional().describe("OG image URL"),fonts:c1.object({heading:c1.string().max(z3).optional().describe("Font family for headings"),body:c1.string().max(z3).optional().describe("Font family for body text"),code:c1.string().max(z3).optional().describe("Font family for code / monospace")}).nullable().optional().describe("Font families by semantic role"),colors:c1.object({primary:c1.string().max(z3).optional().describe("Primary brand color (hex)"),secondary:c1.string().max(z3).optional().describe("Secondary brand color (hex)"),accent:c1.string().max(z3).optional().describe("Accent / highlight color (hex)"),background:c1.string().max(z3).optional().describe("Background color (hex)"),foreground:c1.string().max(z3).optional().describe("Foreground / text color (hex)")}).nullable().optional().describe("Semantic color palette"),images:c1.array(c1.record(c1.string(),c1.unknown())).max(Qn4).nullable().optional().refine(($)=>$===null||$===void 0||JSON.stringify($).length<=EU0,{message:`images must serialize to at most ${EU0} bytes`}).describe("Brand images"),metadata:c1.record(c1.string(),c1.unknown()).nullable().optional().refine(($)=>$===null||$===void 0||JSON.stringify($).length<=EU0,{message:`metadata must serialize to at most ${EU0} bytes`}).describe("Extra design tokens (typography, components, spacing, layout, tone, etc.)"),archivedAt:c1.string().nullable().optional().describe("Archive timestamp (null to unarchive)"),isDefault:c1.boolean().optional().describe("Whether this is the default brand for the organization")})});import{z as _w}from"zod";var MX1;var SI$=D(()=>{q0();$Z();MX1=h({name:"ORGANIZATION_SETTINGS_GET",description:"Get organization-level settings including sidebar configuration, store registry settings, simple model mode, and default home agents.",annotations:{title:"Get Organization Settings",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:_w.object({}),outputSchema:_w.object({organizationId:_w.string(),sidebar_items:_w.array(S00).nullable().optional(),enabled_plugins:_w.array(_w.string()).nullable().optional(),registry_config:C00.nullable().optional(),simple_mode:_00.nullable().optional(),default_home_agents:x00.nullable().optional(),flags:XT.nullable().optional(),createdAt:_w.string().datetime().optional().describe("ISO 8601 timestamp"),updatedAt:_w.string().datetime().optional().describe("ISO 8601 timestamp")}),handler:async($,Z)=>{t(Z),await Z.access.check();let Q=Z.organization?.id;if(!Q)throw Error("Organization ID required (no active organization in context)");let X=await Z.storage.organizationSettings.get(Q);if(!X)return{organizationId:Q};return{...X,createdAt:X.createdAt instanceof Date?X.createdAt.toISOString():X.createdAt,updatedAt:X.updatedAt instanceof Date?X.updatedAt.toISOString():X.updatedAt}}})});import{z as IX1}from"zod";var VX1;var CI$=D(()=>{q0();VX1=h({name:"ORGANIZATION_HAS_SITE",description:"Whether this organization owns at least one legacy deco.cx site. Boolean only \u2014 does not expose site slugs.",annotations:{title:"Has Owned Site",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:IX1.object({}),outputSchema:IX1.object({hasSite:IX1.boolean()}),handler:async($,Z)=>{t(Z),await Z.access.check();let Q=n(Z);return{hasSite:(await Z.storage.orgSites.listByOrg(Q.id)).length>0}}})});import{z as Q9}from"zod";var Yn4=50,Jn4=500,Gn4=100,Kn4=200,Wn4=500,_I$=200,f00=500,kX1;var vI$=D(()=>{q0();$Z();kX1=h({name:"ORGANIZATION_SETTINGS_UPDATE",description:"Update organization-level settings such as sidebar configuration, store registry settings, simple model mode, and default home agents.",annotations:{title:"Update Organization Settings",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:Q9.object({organizationId:Q9.string(),sidebar_items:Q9.array(S00).max(Yn4).optional(),enabled_plugins:Q9.array(Q9.string().max(f00)).max(Kn4).optional(),coding_agent_mcp_excluded:Q9.array(Q9.string().max(f00)).max(Wn4).optional().describe("Connection ids a coding-agent run must not mount, even with `coding_agent_org_mcps` on. Replaces the stored list; pass [] to clear it."),registry_config:C00.extend({registries:Q9.record(Q9.string().max(f00),Q9.object({enabled:Q9.boolean()})).refine(($)=>Object.keys($).length<=_I$,{message:`registries must have at most ${_I$} entries`}),blockedMcps:Q9.array(Q9.string().max(f00)).max(Jn4)}).optional(),simple_mode:_00.optional(),default_home_agents:x00.extend({ids:Q9.array(Q9.string().max(f00)).max(Gn4)}).optional(),flags:XT.strict().optional().describe("Org boolean toggles. Shallow-merged into the stored flags: keys you pass win (explicit false persists), omitted keys keep their value.")}),outputSchema:Q9.object({organizationId:Q9.string(),sidebar_items:Q9.array(S00).nullable().optional(),enabled_plugins:Q9.array(Q9.string()).nullable().optional(),coding_agent_mcp_excluded:Q9.array(Q9.string()).nullable().optional(),registry_config:C00.nullable().optional(),simple_mode:_00.nullable().optional(),default_home_agents:x00.nullable().optional(),flags:XT.nullable().optional(),createdAt:Q9.string().datetime().describe("ISO 8601 timestamp"),updatedAt:Q9.string().datetime().describe("ISO 8601 timestamp")}),handler:async($,Z)=>{if(t(Z),await Z.access.check(),n(Z).id!==$.organizationId)throw Error("Cannot update settings for a different organization");let X=await Z.storage.organizationSettings.upsert($.organizationId,{sidebar_items:$.sidebar_items,enabled_plugins:$.enabled_plugins,coding_agent_mcp_excluded:$.coding_agent_mcp_excluded,registry_config:$.registry_config,simple_mode:$.simple_mode,default_home_agents:$.default_home_agents,flags:$.flags});return{...X,createdAt:X.createdAt instanceof Date?X.createdAt.toISOString():X.createdAt,updatedAt:X.updatedAt instanceof Date?X.updatedAt.toISOString():X.updatedAt}}})});import{z as uW}from"zod";var xI$,SX1,CX1;var fI$=D(()=>{q0();$Z();xI$=Cw.extend({organizationId:uW.string(),archivedAt:uW.string().nullable().optional().describe("ISO 8601 timestamp"),createdAt:uW.string().describe("ISO 8601 timestamp"),updatedAt:uW.string().describe("ISO 8601 timestamp")}),SX1=h({name:"BRAND_CONTEXT_LIST",description:"List all brand contexts (company profiles) for the current organization.",annotations:{title:"List Brand Contexts",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:uW.object({includeArchived:uW.boolean().optional().describe("Include archived brands in the list")}),outputSchema:uW.object({items:uW.array(xI$)}),handler:async($,Z)=>{t(Z),await Z.access.check();let Q=Z.organization?.id;if(!Q)throw Error("Organization ID required (no active organization in context)");return{items:(await Z.storage.brandContext.list(Q,{includeArchived:$.includeArchived})).map((Y)=>({...Y,archivedAt:Y.archivedAt instanceof Date?Y.archivedAt.toISOString():Y.archivedAt,createdAt:Y.createdAt instanceof Date?Y.createdAt.toISOString():Y.createdAt,updatedAt:Y.updatedAt instanceof Date?Y.updatedAt.toISOString():Y.updatedAt}))}}}),CX1=h({name:"BRAND_CONTEXT_GET",description:"Get a specific brand context by ID.",annotations:{title:"Get Brand Context",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:uW.object({id:uW.string().describe("Brand context ID")}),outputSchema:xI$.extend({organizationId:uW.string()}),handler:async($,Z)=>{t(Z),await Z.access.check();let Q=Z.organization?.id;if(!Q)throw Error("Organization ID required (no active organization in context)");let X=await Z.storage.brandContext.get($.id,Q);if(!X)throw Error("Brand context not found");return{...X,archivedAt:X.archivedAt instanceof Date?X.archivedAt.toISOString():X.archivedAt,createdAt:X.createdAt instanceof Date?X.createdAt.toISOString():X.createdAt,updatedAt:X.updatedAt instanceof Date?X.updatedAt.toISOString():X.updatedAt}}})});import{z as YT}from"zod";var bI$,_X1,vX1,xX1;var yI$=D(()=>{q0();$Z();bI$=Cw.extend({organizationId:YT.string(),createdAt:YT.string().describe("ISO 8601 timestamp"),updatedAt:YT.string().describe("ISO 8601 timestamp")}),_X1=h({name:"BRAND_CONTEXT_CREATE",description:"Create a new brand context (company profile) for the current organization.",annotations:{title:"Create Brand Context",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!1},inputSchema:Cw.omit({id:!0}),outputSchema:bI$,handler:async($,Z)=>{t(Z),await Z.access.check();let Q=Z.organization?.id;if(!Q)throw Error("Organization ID required (no active organization in context)");let X=await Z.storage.brandContext.create(Q,{name:$.name,domain:$.domain,overview:$.overview,logo:$.logo??null,favicon:$.favicon??null,ogImage:$.ogImage??null,fonts:$.fonts??null,colors:$.colors??null,images:$.images??null,metadata:$.metadata??null});return{...X,archivedAt:X.archivedAt instanceof Date?X.archivedAt.toISOString():X.archivedAt,createdAt:X.createdAt instanceof Date?X.createdAt.toISOString():X.createdAt,updatedAt:X.updatedAt instanceof Date?X.updatedAt.toISOString():X.updatedAt}}}),vX1=h({name:"BRAND_CONTEXT_UPDATE",description:"Update an existing brand context by ID.",annotations:{title:"Update Brand Context",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:Cw.partial().required({id:!0}),outputSchema:bI$,handler:async($,Z)=>{t(Z),await Z.access.check();let Q=Z.organization?.id;if(!Q)throw Error("Organization ID required (no active organization in context)");if(!await Z.storage.brandContext.get($.id,Q))throw Error("Brand context not found");let{id:Y,...J}=$;if(J.isDefault===!0)await Z.storage.brandContext.setDefault(Y,Q);let G=await Z.storage.brandContext.update(Y,Q,{name:J.name,domain:J.domain,overview:J.overview,logo:J.logo!==void 0?J.logo??null:void 0,favicon:J.favicon!==void 0?J.favicon??null:void 0,ogImage:J.ogImage!==void 0?J.ogImage??null:void 0,fonts:J.fonts!==void 0?J.fonts??null:void 0,colors:J.colors!==void 0?J.colors??null:void 0,images:J.images!==void 0?J.images??null:void 0,metadata:J.metadata!==void 0?J.metadata??null:void 0,archivedAt:J.archivedAt!==void 0?J.archivedAt??null:void 0,isDefault:J.isDefault===!1?!1:void 0});return{...G,archivedAt:G.archivedAt instanceof Date?G.archivedAt.toISOString():G.archivedAt,createdAt:G.createdAt instanceof Date?G.createdAt.toISOString():G.createdAt,updatedAt:G.updatedAt instanceof Date?G.updatedAt.toISOString():G.updatedAt}}}),xX1=h({name:"BRAND_CONTEXT_DELETE",description:"Archive a brand context by ID (soft delete).",annotations:{title:"Archive Brand Context",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:YT.object({id:YT.string().describe("Brand context ID")}),outputSchema:YT.object({success:YT.boolean()}),handler:async($,Z)=>{t(Z),await Z.access.check();let Q=Z.organization?.id;if(!Q)throw Error("Organization ID required (no active organization in context)");if(!await Z.storage.brandContext.get($.id,Q))throw Error("Brand context not found");return await Z.storage.brandContext.update($.id,Q,{archivedAt:new Date().toISOString(),isDefault:!1}),{success:!0}}})});async function zU0($,Z,Q){let X=$.trim();if(!X.startsWith("http"))X=`https://${X}`;let Y=await fetch("https://api.firecrawl.dev/v1/scrape",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${Z}`},body:JSON.stringify({url:X,formats:["branding"]})});if(!Y.ok){let N=await Y.text().catch(()=>"");throw Error(`Firecrawl API error: ${Y.status} ${N.slice(0,200)}`)}let J=await Y.json();if(!J.success||!J.data?.branding)return null;let G=J.data.branding,K=J.data.metadata??{},W=Un4(G,K);return{name:K.title?.split(/[|\u2013\u2014]|\s+-\s+/).map((N)=>N.trim()).filter(Boolean)?.slice().sort((N,B)=>N.length-B.length)[0]??K.ogSiteName??Q??$,domain:$,overview:K.description??"",logo:W.logo,favicon:W.favicon,ogImage:W.ogImage,fonts:W.fonts,colors:W.colors,images:null,metadata:Object.keys(W.metadata).length>0?W.metadata:null}}function Un4($,Z){let Q=$.images??{},X=$.colors??{},Y={};for(let[F,U]of Object.entries(X))if(typeof U==="string"&&U&&Hn4.has(F))Y[F]=U;let J={},K=($.typography??{}).fontFamilies??{};for(let[F,U]of Object.entries(K))if(typeof U==="string"&&U){let N=Fn4[F.toLowerCase()];if(N&&!J[N])J[N]=U}let W=$.fonts;if(Array.isArray(W))for(let F of W){let U=F.family;if(typeof U==="string"&&U&&!J.body)J.body=U}let H={};for(let F of["typography","components","spacing","layout","animations","icons","tone","personality","colorScheme"])if($[F]!==void 0)H[F]=$[F];return{logo:Q.logo??null,favicon:Q.favicon??null,ogImage:Q.ogImage??Z.ogImage??null,fonts:Object.keys(J).length>0?J:null,colors:Object.keys(Y).length>0?Y:null,metadata:H}}var Hn4,Fn4;var fX1=D(()=>{Hn4=new Set(["primary","secondary","accent","background","foreground"]),Fn4={heading:"heading",headings:"heading",head:"heading",title:"heading",body:"body",primary:"body",text:"body",code:"code",monospace:"code",mono:"code"}});import{z as PU0}from"zod";var Nn4,bX1;var gI$=D(()=>{q0();fX1();$Z();Nn4=Cw.pick({id:!0,name:!0,domain:!0,overview:!0,logo:!0,favicon:!0,ogImage:!0,fonts:!0,colors:!0}).extend({success:PU0.boolean()}),bX1=h({name:"BRAND_CONTEXT_EXTRACT",description:"Extract brand context (colors, fonts, logos) from a website URL using Firecrawl.",annotations:{title:"Extract Brand Context",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},inputSchema:PU0.object({domain:PU0.string().describe("Website domain to extract brand from"),brandId:PU0.string().optional().describe("Existing brand context ID to update (creates new if omitted)")}),outputSchema:Nn4,modelSummary:($)=>$.success?`Brand saved (id=${$.id}, name=${$.name}, domain=${$.domain}). The UI rendered the logo, colors, fonts, and overview.`:"Brand extraction failed.",handler:async($,Z)=>{t(Z),await Z.access.check();let Q=Z.organization?.id;if(!Q)throw Error("Organization ID required (no active organization in context)");let X=Z.firecrawlApiKey;if(!X)throw Error("FIRECRAWL_API_KEY is not configured. Set the environment variable to enable brand extraction.");let Y=await zU0($.domain,X,$.domain);if(!Y)throw Error("Firecrawl did not return branding data for this URL");let J={name:Y.name,domain:Y.domain,overview:Y.overview,logo:Y.logo,favicon:Y.favicon,ogImage:Y.ogImage,fonts:Y.fonts,colors:Y.colors,images:Y.images,metadata:Y.metadata},G=$.brandId?await(async()=>{if(!await Z.storage.brandContext.get($.brandId,Q))throw Error("Brand context not found");return Z.storage.brandContext.update($.brandId,Q,J)})():await Z.storage.brandContext.create(Q,J);return{id:G.id,name:G.name,domain:G.domain,overview:G.overview,logo:G.logo,favicon:G.favicon,ogImage:G.ogImage,fonts:G.fonts,colors:G.colors,success:!0}}})});function hI$($){let Z=$.metadata??{};return{id:$.id,name:$.name,domain:$.domain||void 0,colors:$.colors??void 0,fonts:$.fonts??void 0,assets:$.logo||$.favicon||$.ogImage?{logo:$.logo??void 0,favicon:$.favicon??void 0,ogImage:$.ogImage??void 0}:void 0,overview:$.overview||void 0,tagline:typeof Z.tagline==="string"?Z.tagline:void 0,tone:typeof Z.tone==="string"?Z.tone:void 0,metadata:(()=>{let Q=Object.fromEntries(Object.entries(Z).filter(([X])=>X!=="tagline"&&X!=="tone"));return Object.keys(Q).length>0?Q:void 0})()}}var yX1,gX1;var uI$=D(()=>{vQ1();q0();yX1=h({name:"BRAND_GET",description:"Get a brand context by ID. Omit the ID to get the default brand for the organization.",annotations:{title:"Get Brand",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:tF0,outputSchema:w00,handler:async($,Z)=>{t(Z),await Z.access.check();let Q=Z.organization?.id;if(!Q)throw Error("Organization ID required (no active organization in context)");let X=$.id?await Z.storage.brandContext.get($.id,Q):await Z.storage.brandContext.getDefault(Q);if(!X)throw Error($.id?"Brand not found":"No default brand configured");return hI$(X)}}),gX1=h({name:"BRAND_LIST",description:"List all active brands for the current organization.",annotations:{title:"List Brands",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:oF0,outputSchema:rF0,handler:async($,Z)=>{t(Z),await Z.access.check();let Q=Z.organization?.id;if(!Q)throw Error("Organization ID required (no active organization in context)");return{items:(await Z.storage.brandContext.list(Q)).map(hI$)}}})});import{resolveTxt as Bn4}from"dns/promises";function hX1($){return`${On4}.${$.toLowerCase()}`}function lI$(){return`deco-verify-${crypto.randomUUID().replace(/-/g,"")}`}async function cI$($,Z,Q=Bn4){if(!Z)return!1;try{return(await Q(hX1($))).some((Y)=>Y.join("").trim()===Z)}catch{return!1}}var On4="_deco-verify";var mI$=()=>{};import{z as X9}from"zod";function vw($){let Z=$.verificationStatus==="pending"&&Boolean($.verificationToken);return{id:$.id,domain:$.domain,joinMode:$.joinMode,verificationStatus:$.verificationStatus,verificationMethod:$.verificationMethod,verifiedAt:$.verifiedAt?new Date($.verifiedAt).toISOString():null,recordName:Z?hX1($.domain):null,recordValue:Z?$.verificationToken:null}}function Ln4($){let Z=$.toLowerCase().trim();if(!Dn4.test(Z))throw Error(`Invalid domain format: "${Z}". Must be a valid domain like "acme.com"`);if(lW.has(Z))throw Error(`Cannot claim generic email domain "${Z}". Only corporate domains are allowed.`);return Z}var Dn4,uX1,AU0,lX1,cX1,mX1,dX1,iX1;var dI$=D(()=>{P3();mI$();q0();Dn4=/^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)+$/,uX1=X9.enum(["off","auto","request"]),AU0=X9.object({id:X9.string(),domain:X9.string(),joinMode:uX1,verificationStatus:X9.enum(["pending","verified"]),verificationMethod:X9.enum(["email","dns"]).nullable(),verifiedAt:X9.string().nullable(),recordName:X9.string().nullable(),recordValue:X9.string().nullable()});lX1=h({name:"ORGANIZATION_DOMAIN_LIST",description:"List the email domains claimed by an organization.",annotations:{title:"List Organization Domains",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:X9.object({}),outputSchema:X9.object({domains:X9.array(AU0)}),handler:async($,Z)=>{t(Z),await Z.access.check();let Q=n(Z);return{domains:(await Z.storage.organizationDomains.listByOrganizationId(Q.id)).map(vw)}}}),cX1=h({name:"ORGANIZATION_DOMAIN_ADD",description:"Claim an email domain for an organization. If the caller's verified email matches the domain it is trusted immediately; otherwise it requires DNS verification.",annotations:{title:"Add Organization Domain",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:X9.object({domain:X9.string().min(1).max(255).describe("Domain to claim, e.g. acme.com"),joinMode:uX1.optional().describe("Initial join mode (only applied when the domain is trusted immediately via email match).")}),outputSchema:AU0,handler:async($,Z)=>{t(Z),await Z.access.check();let Q=n(Z),X=Ln4($.domain),J=Z.auth.user?.email?.split("@")[1]?.toLowerCase(),G=Boolean(Z.auth.user?.emailVerified)&&J===X,K=await Z.storage.organizationDomains.getByOrgAndDomain(Q.id,X);if(K){if(K.verificationStatus!=="verified"&&G){let H=await Z.storage.organizationDomains.markVerified(K.id,"email");return vw(H)}return vw(K)}let W=G?await Z.storage.organizationDomains.add(Q.id,X,{joinMode:$.joinMode??"off",verificationStatus:"verified",verificationMethod:"email"}):await Z.storage.organizationDomains.add(Q.id,X,{joinMode:"off",verificationStatus:"pending",verificationToken:lI$()});return vw(W)}}),mX1=h({name:"ORGANIZATION_DOMAIN_UPDATE",description:"Set the join mode for a claimed domain. Discoverable modes (auto/request) require the domain to be verified.",annotations:{title:"Update Organization Domain",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:X9.object({id:X9.string(),joinMode:uX1}),outputSchema:AU0,handler:async($,Z)=>{t(Z),await Z.access.check();let Q=n(Z),X=await Z.storage.organizationDomains.getById($.id);if(!X||X.organizationId!==Q.id)throw Error("Domain not found");if($.joinMode!=="off"&&X.verificationStatus!=="verified")throw Error("Verify the domain before enabling auto-join or requests.");let Y=await Z.storage.organizationDomains.updateJoinMode($.id,$.joinMode);return vw(Y)}}),dX1=h({name:"ORGANIZATION_DOMAIN_VERIFY",description:"Check the DNS TXT record for a pending domain and mark it verified if present.",annotations:{title:"Verify Organization Domain",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},inputSchema:X9.object({id:X9.string()}),outputSchema:X9.object({verified:X9.boolean(),domain:AU0}),handler:async($,Z)=>{t(Z),await Z.access.check();let Q=n(Z),X=await Z.storage.organizationDomains.getById($.id);if(!X||X.organizationId!==Q.id)throw Error("Domain not found");if(X.verificationStatus==="verified")return{verified:!0,domain:vw(X)};if(!X.verificationToken)throw Error("Domain has no pending DNS verification.");if(!await cI$(X.domain,X.verificationToken))return{verified:!1,domain:vw(X)};let J=await Z.storage.organizationDomains.markVerified($.id,"dns");return{verified:!0,domain:vw(J)}}}),iX1=h({name:"ORGANIZATION_DOMAIN_REMOVE",description:"Remove a claimed domain from an organization.",annotations:{title:"Remove Organization Domain",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:X9.object({id:X9.string()}),outputSchema:X9.object({success:X9.boolean()}),handler:async($,Z)=>{t(Z),await Z.access.check();let Q=n(Z),X=await Z.storage.organizationDomains.getById($.id);if(!X||X.organizationId!==Q.id)throw Error("Domain not found");return await Z.storage.organizationDomains.removeById($.id),{success:!0}}})});function xw($){return($ instanceof Error?$.message.toLowerCase():"").includes("already a member")}import{z as ZZ}from"zod";var wn4,pX1,nX1,tX1;var iI$=D(()=>{q0();b4();wn4=ZZ.object({id:ZZ.string(),userId:ZZ.string(),status:ZZ.enum(["pending","approved","denied"]),createdAt:ZZ.string(),user:ZZ.object({id:ZZ.string(),name:ZZ.string(),email:ZZ.string(),image:ZZ.string().nullable()}).nullable()}),pX1=h({name:"ORGANIZATION_JOIN_REQUEST_LIST",description:"List pending requests to join the organization.",annotations:{title:"List Join Requests",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:ZZ.object({}),outputSchema:ZZ.object({requests:ZZ.array(wn4)}),handler:async($,Z)=>{t(Z),await Z.access.check();let Q=n(Z);return{requests:(await Z.storage.organizationJoinRequests.listPendingWithUser(Q.id)).map((Y)=>({id:Y.id,userId:Y.userId,status:Y.status,createdAt:new Date(Y.createdAt).toISOString(),user:Y.user}))}}}),nX1=h({name:"ORGANIZATION_JOIN_REQUEST_APPROVE",description:"Approve a pending join request, adding the user as a member.",annotations:{title:"Approve Join Request",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:ZZ.object({requestId:ZZ.string()}),outputSchema:ZZ.object({success:ZZ.boolean()}),handler:async($,Z)=>{t(Z),await Z.access.check();let Q=n(Z),X=await Z.storage.organizationJoinRequests.getById($.requestId);if(!X||X.organizationId!==Q.id)throw Error("Join request not found");if(X.status!=="pending")throw Error("Join request has already been decided");let Y=d0(Z);if(!await Z.storage.organizationJoinRequests.decide(X.id,"approved",Y??X.userId))return{success:!0};try{await Z.boundAuth.organization.addMember({organizationId:Q.id,userId:X.userId,role:["user"]})}catch(G){if(!xw(G))throw G}if(Y)k1.capture({distinctId:Y,event:"organization_join_request_approved",groups:{organization:Q.id},properties:{organization_id:Q.id,user_id:X.userId}});return{success:!0}}}),tX1=h({name:"ORGANIZATION_JOIN_REQUEST_DENY",description:"Deny a pending join request.",annotations:{title:"Deny Join Request",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:ZZ.object({requestId:ZZ.string()}),outputSchema:ZZ.object({success:ZZ.boolean()}),handler:async($,Z)=>{t(Z),await Z.access.check();let Q=n(Z),X=await Z.storage.organizationJoinRequests.getById($.requestId);if(!X||X.organizationId!==Q.id)throw Error("Join request not found");if(X.status!=="pending")throw Error("Join request has already been decided");let Y=d0(Z);if(await Z.storage.organizationJoinRequests.decide(X.id,"denied",Y??X.userId)&&Y)k1.capture({distinctId:Y,event:"organization_join_request_denied",groups:{organization:Q.id},properties:{organization_id:Q.id,user_id:X.userId}});return{success:!0}}})});import{z as XJ}from"zod";var oX1;var pI$=D(()=>{b4();q0();uQ();oX1=h({name:"ORGANIZATION_MEMBER_ADD",description:"Invite a member to the organization by email with an assigned role.",annotations:{title:"Add Organization Member",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:XJ.object({organizationId:XJ.string().optional(),userId:XJ.string(),role:XJ.array(XJ.string())}),outputSchema:XJ.object({id:XJ.string(),organizationId:XJ.string(),userId:XJ.string(),role:XJ.union([XJ.string(),XJ.array(XJ.string())]),createdAt:XJ.string().datetime().describe("ISO 8601 timestamp")}),handler:async($,Z)=>{t(Z),await Z.access.check();let Q=$.organizationId||Z.organization?.id;if(!Q)throw Error("Organization ID required (no active organization in context)");if(Q!==Z.organization?.id)throw Error("Organization ID does not match authenticated organization");let X=await Z.db.selectFrom("member").select(["role"]).where("userId","=",d0(Z)??"").where("organizationId","=",Q).executeTakeFirst();if(!j30(X?.role,$.role))throw Error(`Insufficient privileges to assign role "${$.role.join(",")}"`);let Y=await Z.boundAuth.organization.addMember({organizationId:Q,userId:$.userId,role:$.role});if(!Y)throw Error("Failed to add member");let J=d0(Z);if(J)k1.capture({distinctId:J,event:"organization_member_added",groups:{organization:Q},properties:{organization_id:Q,added_user_id:$.userId,role:$.role}});return{...Y,role:Y.role,createdAt:Y.createdAt instanceof Date?Y.createdAt.toISOString():Y.createdAt}}})});import{z as Fm}from"zod";var rX1;var nI$=D(()=>{b4();q0();rX1=h({name:"ORGANIZATION_MEMBER_REMOVE",description:"Remove a member from the organization. Revokes all their access immediately.",annotations:{title:"Remove Organization Member",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:Fm.object({organizationId:Fm.string().optional(),memberIdOrEmail:Fm.string()}),outputSchema:Fm.object({success:Fm.boolean(),memberIdOrEmail:Fm.string()}),handler:async($,Z)=>{t(Z),await Z.access.check();let Q=$.organizationId||Z.organization?.id;if(!Q)throw Error("Organization ID required (no active organization in context)");if(Q!==Z.organization?.id)throw Error("Organization ID does not match authenticated organization");let X=await Z.boundAuth.organization.removeMember({organizationId:Q,memberIdOrEmail:$.memberIdOrEmail});Z.invalidateMemberRole?.(X.member.userId,Q);let Y=d0(Z);if(Y)k1.capture({distinctId:Y,event:"organization_member_removed",groups:{organization:Q},properties:{organization_id:Q,member_id_or_email:$.memberIdOrEmail}});return{success:!0,memberIdOrEmail:$.memberIdOrEmail}}})});import{z as GX}from"zod";var aX1;var tI$=D(()=>{q0();aX1=h({name:"ORGANIZATION_MEMBER_LIST",description:"List all members in the organization with their roles.",annotations:{title:"List Organization Members",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:GX.object({limit:GX.number().int().min(1).max(1000).optional(),offset:GX.number().int().min(0).optional()}),outputSchema:GX.object({members:GX.array(GX.object({id:GX.string(),organizationId:GX.string(),userId:GX.string(),role:GX.string(),createdAt:GX.string().datetime().describe("ISO 8601 timestamp"),user:GX.object({id:GX.string(),name:GX.string(),email:GX.string(),image:GX.string().optional()}).optional()}))}),handler:async($,Z)=>{t(Z),await Z.access.check();let Q=Z.organization?.id;if(!Q)throw Error("Organization ID required (no active organization in context)");return{members:((await Z.boundAuth.organization.listMembers({organizationId:Q,limit:$.limit,offset:$.offset}))?.members??[]).map((J)=>({...J,createdAt:J.createdAt instanceof Date?J.createdAt.toISOString():J.createdAt}))}}})});import{z as M7}from"zod";var sX1;var oI$=D(()=>{b4();q0();uQ();sX1=h({name:"ORGANIZATION_MEMBER_UPDATE_ROLE",description:"Change a member's role (e.g., admin, member) within the organization.",annotations:{title:"Update Member Role",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:M7.object({organizationId:M7.string().optional(),memberId:M7.string(),role:M7.array(M7.string())}),outputSchema:M7.object({id:M7.string(),organizationId:M7.string(),userId:M7.string(),role:M7.union([M7.string(),M7.array(M7.string())]),createdAt:M7.string().datetime().describe("ISO 8601 timestamp"),user:M7.object({email:M7.string(),name:M7.string(),image:M7.string().optional()})}),handler:async($,Z)=>{t(Z),await Z.access.check();let Q=$.organizationId||Z.organization?.id;if(!Q)throw Error("Organization ID required (no active organization in context)");if(Q!==Z.organization?.id)throw Error("Organization ID does not match authenticated organization");let X=await Z.db.selectFrom("member").select(["role"]).where("userId","=",d0(Z)??"").where("organizationId","=",Q).executeTakeFirst();if(!j30(X?.role,$.role))throw Error(`Insufficient privileges to assign role "${$.role.join(",")}"`);let Y=await Z.boundAuth.organization.updateMemberRole({organizationId:Q,memberId:$.memberId,role:$.role});if(!Y)throw Error("Failed to update member role");Z.invalidateMemberRole?.(Y.userId,Q);let J=d0(Z);if(J)k1.capture({distinctId:J,event:"organization_member_role_updated",groups:{organization:Q},properties:{organization_id:Q,member_id:$.memberId,target_user_id:Y.userId,new_role:Array.isArray($.role)?$.role.join(","):$.role}});return{...Y,createdAt:Y.createdAt instanceof Date?Y.createdAt.toISOString():Y.createdAt}}})});async function rI$(){if(b00&&Date.now()-b00.fetchedAt<600000)return b00.rate;try{let Z=await(await fetch("https://economia.awesomeapi.com.br/json/last/USD-BRL",{signal:AbortSignal.timeout(5000)})).json(),Q=parseFloat(Z.USDBRL?.bid??"");if(Number.isNaN(Q)||Q<=0)throw Error("Invalid rate");return b00={rate:Q,fetchedAt:Date.now()},Q}catch{return b00?.rate??5.5}}function aI$($,Z,Q){if(Z==="brl")return Math.round($/Q);return $}var b00=null;function eX1($,Z="",Q=new URLSearchParams){for(let[X,Y]of Object.entries($)){if(Y===void 0||Y===null)continue;let J=Z?`${Z}[${X}]`:X;if(Array.isArray(Y))Y.forEach((G,K)=>{if(typeof G==="object"&&G!==null)eX1(G,`${J}[${K}]`,Q);else Q.append(`${J}[${K}]`,String(G))});else if(typeof Y==="object")eX1(Y,J,Q);else Q.append(J,String(Y))}return Q}async function zB($,Z){let Q=z0().stripeSecretKey;if(!Q)throw new QZ(503,"billing is not configured");let X=Z?.params?eX1(Z.params).toString():void 0,Y=await fetch(`${jn4}${$}`,{method:Z?.method??(X?"POST":"GET"),headers:{Authorization:`Bearer ${Q}`,...X&&{"Content-Type":"application/x-www-form-urlencoded"},...Z?.idempotencyKey&&{"Idempotency-Key":Z.idempotencyKey}},body:X,signal:AbortSignal.timeout(En4)}),J=await Y.json().catch(()=>({}));if(!Y.ok){let G=J.error?.message??`HTTP ${Y.status}`;throw new QZ(Y.status,G)}return J}function sI$($){return{billing_address_collection:"required",custom_fields:[{key:zn4,label:{type:"custom",custom:"CPF / CNPJ"},type:"text",optional:!1,text:{minimum_length:Pn4,maximum_length:An4}}],...$&&{customer_update:{address:"auto",name:"auto"}}}}function eI$($){return Boolean((z0().stripePlanPriceIds??{})[$])}function $Y1($){let Z=z0().stripePlanPriceIds??{};return Object.entries(Z).find(([,Q])=>Q===$)?.[0]}function Tn4($){return["checkout",$.organizationId,$.planId??"flat",$.lastStripeEventAt?.getTime()??0].join(":")}async function $V$($){let Z=z0(),Q=$.planId?$Y1($.planId):Z.stripeOrgPriceId;if(!Q)throw new QZ(503,$.planId?`plan '${$.planId}' has no Stripe price configured`:"billing is not configured");let X=await zB("/checkout/sessions",{idempotencyKey:Tn4({organizationId:$.organizationId,...$.planId?{planId:$.planId}:{},...$.lastStripeEventAt!==void 0&&{lastStripeEventAt:$.lastStripeEventAt}}),params:{mode:"subscription",...sI$(null),line_items:[{price:Q,quantity:1}],success_url:$.successUrl,cancel_url:$.cancelUrl,metadata:{orgId:$.organizationId,...$.planId?{planId:$.planId}:{}},subscription_data:{billing_cycle_anchor_config:{day_of_month:1,hour:0,minute:0,second:0},metadata:{orgId:$.organizationId,...$.planId?{planId:$.planId}:{}}}}});if(!X.url)throw new QZ(500,"checkout session lacks url");return{url:X.url}}function Rn4($,Z){return Math.round($*(1+Z/100))}function Mn4($){let Z=Math.floor(($.nowMs??Date.now())/qn4);return["topup",$.organizationId,$.currency,$.amountCents,Z].join(":")}async function ZV$($){let Z=Rn4($.amountCents,$.feePercent),Q=aI$($.amountCents,$.currency,await rI$()),X=z0().stripeTopupProductId,Y={kind:"topup",orgId:$.organizationId,creditCents:Q},J=$.currency==="brl"?`Studio AI credits (R$ ${($.amountCents/100).toFixed(2)})`:`Studio AI credits ($${($.amountCents/100).toFixed(2)})`,G=await zB("/checkout/sessions",{idempotencyKey:Mn4({organizationId:$.organizationId,amountCents:$.amountCents,currency:$.currency}),params:{mode:"payment",...$.customerId&&{customer:$.customerId},...sI$($.customerId),line_items:[{quantity:1,price_data:{currency:$.currency,unit_amount:Z,...X?{product:X}:{product_data:{name:J}}}}],success_url:$.successUrl,cancel_url:$.cancelUrl,metadata:Y,payment_intent_data:{metadata:Y}}});if(!G.url)throw new QZ(500,"checkout session lacks url");return{url:G.url}}async function TU0($){let Z=await zB("/billing_portal/sessions",{params:{customer:$.customerId,return_url:$.returnUrl}});if(!Z.url)throw new QZ(500,"portal session lacks url");return{url:Z.url}}async function QV$($){let Z=await zB("/billing_portal/sessions",{params:{customer:$.customerId,return_url:$.returnUrl,...z0().stripePortalConfigurationId&&{configuration:z0().stripePortalConfigurationId},flow_data:{type:"subscription_update_confirm",subscription_update_confirm:{subscription:$.subscriptionId,items:[{id:$.subscriptionItemId,price:$.priceId}]},after_completion:{type:"redirect",redirect:{return_url:$.returnUrl}}}}});if(!Z.url)throw new QZ(500,"portal session lacks url");return{url:Z.url}}async function XV$($){return zB(`/prices/${encodeURIComponent($)}`)}async function fw($){return zB(`/subscriptions/${encodeURIComponent($)}`)}async function YV$($){await zB(`/subscriptions/${encodeURIComponent($)}`,{method:"DELETE"})}async function JV$($){let Z=await zB(`/invoices?subscription=${encodeURIComponent($)}&status=paid&limit=100`),Q=In4($,Z.data??[]);for(let X of Q)await zB("/refunds",{params:{payment_intent:X.paymentIntent,reason:"duplicate"},idempotencyKey:X.idempotencyKey});return{refundedCents:Q.reduce((X,Y)=>X+Y.amountCents,0)}}function In4($,Z){let Q=[];for(let X of Z){let Y=X.amount_paid??0;if(Y<=0)continue;let J=typeof X.payment_intent==="string"?X.payment_intent:X.payment_intent?.id;if(!J)continue;Q.push({paymentIntent:J,amountCents:Y,idempotencyKey:`orphan-refund:${$}:${X.id??J}`})}return Q}var jn4="https://api.stripe.com/v1",QZ,En4=15000,zn4="taxid",Pn4=11,An4=18,qn4=120000;var PB=D(()=>{Z$();QZ=class QZ extends Error{status;constructor($,Z){super(`Stripe API ${$}: ${Z}`);this.status=$;this.name="StripeApiError"}}});import{z as RU0}from"zod";async function Vn4($){if(!$.planId)throw Error("This organization already has an active subscription.");let Z=$Y1($.planId);if(!Z)throw new QZ(503,`plan '${$.planId}' has no Stripe price configured`);let Q=await fw($.subscriptionId),X=(Q.items?.data??[]).filter((G)=>G.price?.id?eI$(G.price.id):!1),Y=X[0];if(X.length>1)throw Error("This organization's subscription has more than one plan line \u2014 change it in Stripe, not here.");if(!Y?.id)throw new QZ(500,"subscription has no plan line to move to another price");if(Y.price?.id===Z)throw Error("This organization is already on that plan.");let{url:J}=await QV$({customerId:Q.customer,subscriptionId:$.subscriptionId,subscriptionItemId:Y.id,priceId:Z,returnUrl:$.returnUrl});return J}var ZY1;var GV$=D(()=>{PB();A5();q0();b4();ZY1=h({name:"ORGANIZATION_BILLING_CHECKOUT_START",description:"Start the organization's subscription: creates a Stripe Checkout session and returns its URL.",annotations:{title:"Start Billing Checkout",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!0},inputSchema:RU0.object({planId:RU0.string().optional()}),outputSchema:RU0.object({url:RU0.string()}),handler:async($,Z)=>{t(Z),await Z.access.check();let Q=Z.organization?.id,X=Z.organization?.slug;if(!Q||!X)throw Error("Organization context required");let Y=await Z.storage.organizationBilling.getBilling(Q),J=`${W5()}${Tw(X,"members")}`;if(Y?.status==="active"&&Y.stripeSubscriptionId){let K=await Vn4({subscriptionId:Y.stripeSubscriptionId,planId:$.planId,returnUrl:`${J}?checkout=updated`});return rY({event:"subscription_plan_change_started",organizationId:Q,...$.planId?{properties:{plan_id:$.planId}}:{},...Z.auth?.user?.id?{userId:Z.auth.user.id}:{}}),{url:K}}if(Y?.status==="active")throw Error("This organization already has an active subscription.");if(Y?.stripeSubscriptionId)throw Error("This organization still has a subscription on file \u2014 settle or cancel it before starting a new checkout.");let{url:G}=await $V$({organizationId:Q,successUrl:`${J}?checkout=success`,cancelUrl:`${J}?checkout=canceled`,...$.planId?{planId:$.planId}:{},lastStripeEventAt:Y?.lastStripeEventAt??null});return rY({event:"subscription_checkout_started",organizationId:Q,...$.planId?{properties:{plan_id:$.planId}}:{},...Z.auth?.user?.id?{userId:Z.auth.user.id}:{}}),{url:G}}})});import{z as bw}from"zod";async function _n4(){if(y00&&Date.now()-y00.at<y00.ttlMs)return y00.prices;let $=new Set,Z=Object.entries(z0().stripePlanPriceIds??{}).filter(([,J])=>{if($.has(J))return!1;return $.add(J),!0}),X=(await Promise.all(Z.map(async([J,G])=>{try{let K=await XV$(J);if(K.unit_amount===null)return null;return{planId:G,amountCents:K.unit_amount,currency:K.currency,interval:K.recurring?.interval??null}}catch(K){return console.warn(`plan price ${J} (${G}) unreadable:`,K instanceof QZ?K.message:K),null}}))).filter((J)=>J!==null),Y=X.length===Z.length;return y00={at:Date.now(),prices:X,ttlMs:Y?Sn4:Cn4},X}var kn4,Sn4=600000,Cn4=30000,y00=null,QY1;var KV$=D(()=>{PB();q0();Z$();kn4=bw.object({planId:bw.string(),amountCents:bw.number(),currency:bw.string(),interval:bw.string().nullable()});QY1=h({name:"ORGANIZATION_BILLING_PLAN_PRICES",description:"The monthly price of each purchasable plan, read from Stripe. Empty when no plan prices are configured.",annotations:{title:"Plan Prices",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},inputSchema:bw.object({}),outputSchema:bw.object({prices:bw.array(kn4)}),handler:async($,Z)=>{return t(Z),await Z.access.check(),{prices:await _n4()}}})});import{z as XY1}from"zod";var YY1;var WV$=D(()=>{PB();A5();q0();YY1=h({name:"ORGANIZATION_BILLING_PORTAL",description:"Open the organization's Stripe billing portal (manage card, invoices, cancellation). Returns the portal URL.",annotations:{title:"Open Billing Portal",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!0},inputSchema:XY1.object({}),outputSchema:XY1.object({url:XY1.string()}),handler:async($,Z)=>{t(Z),await Z.access.check();let Q=n(Z);if(!Q.slug)throw Error("Organization context required");let X=await Z.storage.organizationBilling.getBilling(Q.id);if(!X?.stripeCustomerId)throw Error("This organization has no billing account yet \u2014 subscribe first.");try{return await TU0({customerId:X.stripeCustomerId,returnUrl:`${W5()}${Tw(Q.slug,"members")}`})}catch(Y){if(Y instanceof QZ)throw Error(Y.message);throw Y}}})});function qU0($){return JY1[$%JY1.length]??vn4}function YJ($){return $.createdBy==="system"}function fn4($){if($?.reviewer_enabled===void 0&&$?.qa_agent_enabled===!1&&$?.code_reviewer_enabled===!1)return!1;return FQ($,"reviewer_enabled")}function AB($){return fn4($)?dF:[]}function bn4($){return FQ($,"delivery_lanes_enabled")}function pF($){return bn4($)?"merged":"done"}function gw($,Z){if(!$)return!1;return[iF[Z],...xn4].some((Q)=>$.startsWith(`${Q}:`))}function TB($,Z){if(Z)return new Date(Z).getTime();let Q=0;for(let X of $){if(X.action!=="status_changed")continue;if(X.data?.to!=="in_review")continue;Q=Math.max(Q,new Date(X.occurredAt).getTime())}return Q}function hw($,Z){let Q=TB($,Z.cycleStartedAt),X=new Map;for(let Y of $){if(Y.action!=="review_approved"&&Y.action!=="review_changes_requested")continue;if(new Date(Y.occurredAt).getTime()<Q)continue;let J=Y.data??{};if(J.reviewer!=="reviewer")continue;if(Y.action==="review_approved"){if(Z?.verifiedOnly&&J.verified!==!0)continue;X.set("reviewer","approved")}else X.set("reviewer","changes_requested")}return X}function yw($,Z,Q){if(Z.length===0)return!1;let X=hw($,Q);return Z.every((Y)=>X.get(Y)==="approved")}function UV$($,Z,Q){return yw($,Z,Q)&&!yw($,Z,{...Q,verifiedOnly:!0})}function NV$($){let Z=null;for(let Q of $){if(Q.action!=="review_approved"&&Q.action!=="review_changes_requested")continue;let X=new Date(Q.occurredAt).getTime();if(Z&&X<Z.at)continue;let Y=Q.data?.notes;Z={at:X,notes:Q.action==="review_changes_requested"&&typeof Y==="string"?Y:null}}return Z?.notes??null}function wV$($,Z=Date.now()){if($.state!==null&&$.state!=="open")return!1;if($.state===null)return!0;if($.checksStatus==="pending")return!0;if($.previewUrl!==null)return!1;let Q=$.updatedAt?Date.parse($.updatedAt):Number.NaN;return Number.isFinite(Q)&&Z-Q<yn4}var e$="super-agent",JY1,vn4,g00='Your checkout is SHALLOW (`git clone --depth 1`), so it has no merge base and `git diff main...HEAD` (three dots) fails with "fatal: main...HEAD: no merge base". To see a branch diff, either use the two-dot form against the fetched remote ref (`git fetch origin <base> && git diff origin/<base> HEAD`), or deepen first with `git fetch --deepen=100`. Same for `git log main..HEAD` and anything else that needs shared history.',HV$,GY1="chore",dF,iF,xn4,h00="NO VISUAL SURFACE",cW,I$,FV$,MU0,BV$="task-board.item.updated",OV$="task-board.item.deleted",DV$="task-board.item.prs.updated",LV$=4000,yn4=600000;var q4=D(()=>{$Z();JY1=["#9ca3af","#ef4444","#f97316","#f59e0b","#22c55e","#3b82f6","#a855f7","#ec4899"],vn4=JY1[0];HV$="Read the diff with `gh pr diff <number>`. It comes from the API, so it needs no fetch, no merge base, and is unaffected by the shallow checkout. "+"Read it ONCE \u2014 `gh pr diff <number> --name-only` first if you need to size "+"it, then pull the hunks you need per FILE. Do NOT re-run the diff sliced by directory: each slice re-reads bytes you already have into every remaining turn's context, and it is the largest avoidable cost in a review.",dF=["reviewer"],iF={reviewer:"Reviewer"},xn4=["QA Agent","Code Reviewer"];cW=["triage","todo","in_progress","in_review","approved","merged","post_deploy_validation","done","archived"],I$={intake:"triage",queue:"todo",progress:"in_progress",review:"in_review",archive:"archived"},FV$=cW.map(($,Z)=>({key:$,title:$,position:Z})),MU0=["approved","merged","post_deploy_validation"]});function KY1($){return $==="trial"?"trial":"subscription"}function u00($,Z,Q,X={}){rY({event:Z,organizationId:Q.organizationId,...$.auth?.user?.id?{userId:$.auth.user.id}:{},properties:{task_id:Q.id,...X}})}function WY1($){return $?.status==="active"||$?.status==="past_due"}function IU0($,Z){if(WY1($))return{periodKey:$?.currentPeriodEnd?`sub:${$.currentPeriodEnd.toISOString()}`:"sub:pending",limit:$?.monthlyTaskExecutions??Z.monthlyTaskExecutions,exhaustedReason:"monthly_exhausted"};return{periodKey:"trial",limit:$?.freeTaskExecutions??Z.freeTaskExecutions,exhaustedReason:"trial_exhausted"}}function l00(){let $=z0();return{enforced:$.taskQuotaEnforced,freeTaskExecutions:$.freeTaskExecutions,monthlyTaskExecutions:$.monthlyTaskExecutions,maxRunsPerTask:$.maxRunsPerTask}}function uw(){return{...l00(),maxRunsPerTask:Number.POSITIVE_INFINITY}}async function Um($,Z,Q=l00()){if(!Q.enforced||!YJ(Z))return;let X=await $.storage.organizationBilling.taskClaim(Z.id);if(X&&X.runCount>=Q.maxRunsPerTask)throw u00($,"task_quota_blocked",Z,{phase:"precheck",reason:"runs_exhausted"}),new $Y("runs_exhausted");if(X&&X.state!=="released")return;let Y=await $.storage.organizationBilling.getBilling(Z.organizationId),J=IU0(Y,Q);if(await $.storage.organizationBilling.countTaskClaims(Z.organizationId,J.periodKey)>=J.limit)throw u00($,"task_quota_blocked",Z,{phase:"precheck",reason:J.exhaustedReason,billing_mode:KY1(J.periodKey),limit:J.limit}),new $Y(J.exhaustedReason)}async function jV$($,Z,Q=l00()){if(!Q.enforced||!YJ(Z))return"skipped";let X=await $.storage.organizationBilling.getBilling(Z.organizationId),Y=IU0(X,Q),J=await $.storage.organizationBilling.claimTaskUnderLimit(Z.organizationId,Z.id,Y.periodKey,Y.limit,Q.maxRunsPerTask);if(J==="exhausted")throw u00($,"task_quota_blocked",Z,{phase:"claim",reason:Y.exhaustedReason,billing_mode:KY1(Y.periodKey),limit:Y.limit}),new $Y(Y.exhaustedReason);if(J==="runs_exhausted")throw u00($,"task_quota_blocked",Z,{phase:"claim",reason:"runs_exhausted"}),new $Y("runs_exhausted");if(J==="claimed")u00($,"task_quota_claimed",Z,{billing_mode:KY1(Y.periodKey),period_key:Y.periodKey,limit:Y.limit});return J}async function EV$($,Z,Q,X){if(X==="skipped")return;await $.rollbackTaskClaim(Z,Q,{releaseSlot:X==="claimed"}).catch((Y)=>console.error("[task-quota] rollback failed (stays charged)",Y))}async function zV$($,Z){let Q=await $.storage.organizationBilling.taskClaim(Z);return!!Q&&Q.state!=="released"}async function PV$($,Z,Q){if(await $.releaseTaskClaim(Z,Q).catch((Y)=>{return console.error("[task-quota] refund failed (stays charged)",Y),!1}))rY({event:"task_quota_refunded",organizationId:Z,properties:{task_id:Q}})}var gn4="[SUBSCRIPTION_REQUIRED]",hn4,$Y;var eG=D(()=>{q4();b4();Z$();hn4={trial_exhausted:"this organization used its free task executions \u2014 subscribe to keep running tasks",monthly_exhausted:"this organization used its monthly task executions \u2014 more become available next billing cycle",runs_exhausted:"this task reached its execution limit \u2014 create a new task to keep going"};$Y=class $Y extends Error{reason;constructor($){super(`${gn4} ${hn4[$]}`);this.reason=$;this.name="TaskQuotaError"}}});import{z as RB}from"zod";var HY1;var AV$=D(()=>{q0();eG();HY1=h({name:"ORGANIZATION_TASK_QUOTA_GET",description:"Get the organization's auto-task quota: how many runs are used in the current period, the limit, and the subscription's billing status.",annotations:{title:"Get Task Quota",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:RB.object({}),outputSchema:RB.object({enforced:RB.boolean(),billingStatus:RB.string(),subscribed:RB.boolean(),hasBillingAccount:RB.boolean(),used:RB.number(),limit:RB.number(),currentPeriodEnd:RB.string().datetime().nullable()}),handler:async($,Z)=>{t(Z),await Z.access.check();let Q=n(Z),X=l00(),Y=await Z.storage.organizationBilling.getBilling(Q.id),J=IU0(Y,X),G=await Z.storage.organizationBilling.countTaskClaims(Q.id,J.periodKey);return{enforced:X.enforced,billingStatus:Y?.status??"none",subscribed:WY1(Y),hasBillingAccount:!!Y?.stripeCustomerId,used:G,limit:J.limit,currentPeriodEnd:Y?.currentPeriodEnd?.toISOString()??null}}})});var TV$=D(()=>{TI$();RI$();qI$();MI$();II$();SI$();CI$();vI$();fI$();yI$();gI$();uI$();dI$();iI$();pI$();nI$();tI$();oI$();GV$();KV$();WV$();AV$()});function $K($){let Z=$?.status;return typeof Z==="number"?Z:null}function RV$($){let Z=$;if(Z?.isRateLimited!==!0)return;return typeof Z.retryAfterMs==="number"?Z.retryAfterMs:null}async function JJ($,Z){let Q=await $.getBranch(Z);if(Q)return Q.sha;throw new b0({provider:$.repo.provider,status:404,message:`Branch ${Z} does not exist in ${$.repo.path}`})}var q6;var c00=D(()=>{n6();q6=class q6 extends Error{constructor($,Z){super($,Z);this.name="RepoWriteConflict"}}});function Nm($){if($.length===0)return null;let Z=!1;for(let Q of $){if(Q.state!=="completed"){Z=!0;continue}if(Q.conclusion&&ln4.has(Q.conclusion))return"failing"}return Z?"pending":"passing"}var ln4,JT;var m00=D(()=>{ln4=new Set(["failure","cancelled","timed_out","action_required"]);JT=class JT extends Error{existing;constructor($,Z){super($);this.name="ChangeRequestExists",this.existing=Z}}});function Bm($){return cn4.test($.trim())}function XZ($,Z,Q){if($===void 0||!Number.isFinite($)||$<=0)return Math.min(Z,Q);return Math.min(Math.floor($),Q)}async function Om($,Z){let Q=$.headers.get("content-length"),X=Q===null?Number.NaN:Number(Q),Y=Number.isFinite(X)&&X>=0?X:null,J=$.body;if(!J)return{content:"",size:Y??0,truncated:!1};let G=J.getReader(),K=[],W=0,H=!1;try{for(;;){let{done:U,value:N}=await G.read();if(U)break;if(!N)continue;let B=Z-W;if(N.byteLength>=B){K.push(N.subarray(0,B)),W+=B,H=N.byteLength>B;break}K.push(N),W+=N.byteLength}}finally{await G.cancel().catch(()=>{})}return{content:new TextDecoder().decode(mn4(K,W)),size:Y??W,truncated:H||Y!==null&&Y>W}}function mn4($,Z){let Q=new Uint8Array(Z),X=0;for(let Y of $)Q.set(Y,X),X+=Y.byteLength;return Q}function FY1($){let Z=Number($);return Number.isInteger(Z)&&Z>1?Z:1}var lw=400,qB=2000,cw=60000,MB=200000,mw=50,dw=50,mW=100,cn4;var d00=D(()=>{cn4=/\[bot\]$|[-_.]bot$|^bot[-_.]|^(dependabot|renovate)$/i});var nF;var UY1=D(()=>{nF={name:"Deco Bot",email:"114028756+decobot@users.noreply.github.com"}});import{sql as dn4}from"kysely";function qV$($){return $ instanceof Date?$.toISOString():String($)}function i00($){let Z=$.installation_id===null||$.installation_id===void 0?null:Number($.installation_id);return{id:$.id,organizationId:$.organization_id,type:$.type,host:$.host,authKind:$.auth_kind,externalAccountId:$.external_account_id,login:$.login,avatarUrl:$.avatar_url,installationId:Number.isFinite(Z)?Z:null,status:$.status,installationAuthorizedBy:$.installation_authorized_by??null,installationRepositoryIds:$.installation_repository_ids??null,credentialConnectionId:$.credential_connection_id,connectedBy:$.connected_by_name?{name:$.connected_by_name}:null,createdAt:qV$($.created_at),updatedAt:qV$($.updated_at)}}class iw{db;constructor($){this.db=$}async upsert($){let Z=new Date,Q=await this.db.insertInto("git_provider_accounts").values({organization_id:$.organizationId,type:$.type,host:$.host.toLowerCase(),auth_kind:$.authKind,external_account_id:$.externalAccountId,login:$.login,avatar_url:$.avatarUrl??null,installation_id:$.installationId??null,installation_authorized_by:$.installationAuthorizedBy??null,installation_repository_ids:$.installationRepositoryIds?JSON.stringify($.installationRepositoryIds):null,credential_connection_id:null,status:"active",created_by:$.createdBy??null}).onConflict((X)=>X.columns(["organization_id","host","external_account_id"]).doUpdateSet({type:$.type,auth_kind:$.authKind,login:$.login,avatar_url:$.avatarUrl??null,installation_id:$.installationId??null,installation_authorized_by:$.installationAuthorizedBy??null,installation_repository_ids:$.installationRepositoryIds?JSON.stringify($.installationRepositoryIds):null,credential_connection_id:null,status:"active",updated_at:dn4`GREATEST(${Z}, git_provider_accounts.updated_at + interval '1 millisecond')`})).returningAll().executeTakeFirstOrThrow();return i00(Q)}async get($,Z){let Q=await this.db.selectFrom("git_provider_accounts").selectAll().where("id","=",$).where("organization_id","=",Z).executeTakeFirst();return Q?i00(Q):null}async getUnscoped($){let Z=await this.db.selectFrom("git_provider_accounts").selectAll().where("id","=",$).executeTakeFirst();return Z?i00(Z):null}async listByOrg($){return(await this.db.selectFrom("git_provider_accounts").leftJoin("user as connector","connector.id","git_provider_accounts.created_by").selectAll("git_provider_accounts").select("connector.name as connected_by_name").where("git_provider_accounts.organization_id","=",$).orderBy("git_provider_accounts.created_at","asc").execute()).map(i00)}async findByExternalId($){let Z=await this.db.selectFrom("git_provider_accounts").selectAll().where("organization_id","=",$.organizationId).where("host","=",$.host.toLowerCase()).where("external_account_id","=",$.externalAccountId).executeTakeFirst();return Z?i00(Z):null}async setStatus($,Z,Q){await this.db.updateTable("git_provider_accounts").set({status:Q,updated_at:new Date}).where("id","=",$).where("organization_id","=",Z).execute()}async delete($,Z){return(await this.db.deleteFrom("git_provider_accounts").where("id","=",$).where("organization_id","=",Z).executeTakeFirst()).numDeletedRows>0n}}var VU0=()=>{};class p00{db;vault;constructor($,Z){this.db=$;this.vault=Z}async get($){let Z=await this.db.selectFrom("git_provider_account_credentials").selectAll().where("account_id","=",$).executeTakeFirst();if(!Z)return null;return in4(this.vault,Z)}async upsert($){let Z=new Date,Q=await this.vault.encrypt($.accessToken),X=$.refreshToken?await this.vault.encrypt($.refreshToken):null,Y=$.clientSecret?await this.vault.encrypt($.clientSecret):null;await this.db.insertInto("git_provider_account_credentials").values({account_id:$.connectionId,access_token:Q,refresh_token:X,scope:$.scope,expires_at:$.expiresAt,client_id:$.clientId,client_secret:Y,token_endpoint:$.tokenEndpoint}).onConflict((J)=>J.column("account_id").doUpdateSet({access_token:Q,refresh_token:X,scope:$.scope,expires_at:$.expiresAt,client_id:$.clientId,client_secret:Y,token_endpoint:$.tokenEndpoint,updated_at:Z})).execute()}async delete($){await this.db.deleteFrom("git_provider_account_credentials").where("account_id","=",$).execute()}isExpired($,Z=0){if(!$.expiresAt)return!1;let X=($.expiresAt instanceof Date?$.expiresAt:new Date($.expiresAt)).getTime();if(Number.isNaN(X))return!0;return X-Z<Date.now()}}async function in4($,Z){try{let Q=await $.decrypt(Z.access_token),X=Z.refresh_token?await $.decrypt(Z.refresh_token):null,Y=Z.client_secret?await $.decrypt(Z.client_secret):null;return{id:Z.account_id,connectionId:Z.account_id,accessToken:Q,refreshToken:X,scope:Z.scope,expiresAt:Z.expires_at,createdAt:Z.created_at,updatedAt:Z.updated_at,clientId:Z.client_id,clientSecret:Y,tokenEndpoint:Z.token_endpoint}}catch(Q){return console.warn("[GitProviderAccountCredential] failed to decrypt credential row",{accountId:Z.account_id,message:Q instanceof Error?Q.message:String(Q)}),null}}import{sql as pn4}from"kysely";function MV$($){return $ instanceof Date?$.toISOString():String($)}function Dm($){return{id:$.id,organizationId:$.organization_id,accountId:$.account_id,provider:$.provider,host:$.host,path:$.path,externalId:$.external_id,defaultBranch:$.default_branch,webUrl:$.web_url,visibility:$.visibility,legacyConnectionId:$.legacy_connection_id,createdAt:MV$($.created_at),updatedAt:MV$($.updated_at)}}function IB($){return{provider:$.provider,host:$.host,path:$.path}}class n00{db;constructor($){this.db=$}async upsert($){let Z=$.ref.host.toLowerCase(),Q=await this.findByRef($.organizationId,$.ref);if(Q){let Y=await this.db.updateTable("repositories").set({path:$.ref.path,provider:$.ref.provider,web_url:sY({...$.ref,host:Z}),...$.accountId!==void 0?{account_id:$.accountId}:{},...$.externalId!==void 0?{external_id:$.externalId}:{},...$.defaultBranch!==void 0?{default_branch:$.defaultBranch}:{},...$.visibility!==void 0?{visibility:$.visibility}:{},...$.legacyConnectionId!==void 0?{legacy_connection_id:$.legacyConnectionId}:{},updated_at:new Date}).where("id","=",Q.id).where("organization_id","=",$.organizationId).returningAll().executeTakeFirstOrThrow();return Dm(Y)}let X=await this.db.insertInto("repositories").values({organization_id:$.organizationId,account_id:$.accountId??null,provider:$.ref.provider,host:Z,path:$.ref.path,external_id:$.externalId??null,default_branch:$.defaultBranch??null,web_url:sY({...$.ref,host:Z}),visibility:$.visibility??null,legacy_connection_id:$.legacyConnectionId??null,created_by:$.createdBy??null}).returningAll().executeTakeFirstOrThrow();return Dm(X)}async get($,Z){let Q=await this.db.selectFrom("repositories").selectAll().where("id","=",$).where("organization_id","=",Z).executeTakeFirst();return Q?Dm(Q):null}async getUnscoped($){let Z=await this.db.selectFrom("repositories").selectAll().where("id","=",$).executeTakeFirst();return Z?Dm(Z):null}async findByRef($,Z){let Q=await this.db.selectFrom("repositories").selectAll().where("organization_id","=",$).where("host","=",Z.host.toLowerCase()).where(pn4`lower(path)`,"=",Z.path.toLowerCase()).executeTakeFirst();return Q?Dm(Q):null}async listByOrg($,Z){let Q=this.db.selectFrom("repositories").selectAll().where("organization_id","=",$);if(Z?.accountId)Q=Q.where("account_id","=",Z.accountId);return(await Q.orderBy("path","asc").execute()).map(Dm)}async delete($,Z){try{return(await this.db.deleteFrom("repositories").where("id","=",$).where("organization_id","=",Z).executeTakeFirst()).numDeletedRows>0n}catch(Q){if(Q instanceof Error&&"constraint"in Q&&Q.constraint==="org_repo_sync_source_present")throw Error("Remove this repository's sync configurations before unlinking it");throw Q}}}var Lm=D(()=>{W6()});function VV$($){return Bun.hash($).toString(36)}function nn4($){for(let[Z,Q]of pw)if(Q.expiresAt<=$)pw.delete(Z);while(pw.size>=512){let Z=pw.keys().next();if(Z.done)break;pw.delete(Z.value)}}function BY1($,Z,Q,X=Date.now()){nn4(X),pw.set(VV$($),{owner:Z,expiresAt:Q})}function wm($,Z=Date.now()){let Q=VV$($),X=pw.get(Q);if(!X)return"unknown";if(X.expiresAt<=Z)return pw.delete(Q),"unknown";return X.owner}var IV$="app",NY1="user",pw;var jm=D(()=>{pw=new Map});function nw($=process.env){let Z=$.GITHUB_APP_ID?.trim(),Q=$.GITHUB_APP_PRIVATE_KEY?.trim(),X=$.GITHUB_APP_CLIENT_ID?.trim(),Y=$.GITHUB_APP_CLIENT_SECRET?.trim(),J=$.GITHUB_APP_SLUG?.trim();if(!Z||!Q||!X||!Y||!J)return null;return{appId:Z,privateKeyPem:Q.replace(/\\n/g,`