decocms 4.0.2 → 4.0.4

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 (218) hide show
  1. package/dist/client/assets/{AlertCircle-C_UkUeQ-.js → AlertCircle-PFqtG5ZH.js} +1 -1
  2. package/dist/client/assets/{ArrowUpRight-DBHe1ra5.js → ArrowUpRight-JRa8K1Zq.js} +1 -1
  3. package/dist/client/assets/{CheckCircle-CNDGK7YQ.js → CheckCircle-CyWE8F0T.js} +1 -1
  4. package/dist/client/assets/{ChevronDown-BdFTfe0i.js → ChevronDown-BCtRA66U.js} +1 -1
  5. package/dist/client/assets/{ChevronLeft-3clvmOCt.js → ChevronLeft-C_HoWf1U.js} +1 -1
  6. package/dist/client/assets/{ChevronRight-BBQw79G1.js → ChevronRight-BMk-MkAt.js} +1 -1
  7. package/dist/client/assets/{ChevronUp-D68iRdk0.js → ChevronUp-BJRNdlVx.js} +1 -1
  8. package/dist/client/assets/{DotsVertical-uj47Q2TX.js → DotsVertical-BHmShHDW.js} +1 -1
  9. package/dist/client/assets/{Eye-DH9WceLm.js → Eye-RJTNPGM7.js} +1 -1
  10. package/dist/client/assets/{FilterLines-gcTdPSco.js → FilterLines-F-37lELf.js} +1 -1
  11. package/dist/client/assets/{Globe01-C01_gG59.js → Globe01-DAu1mUKg.js} +1 -1
  12. package/dist/client/assets/{Globe04-CYHPolgk.js → Globe04-Cu3JQB8i.js} +1 -1
  13. package/dist/client/assets/{HardDrive-T5Y16xm9.js → HardDrive-BLxj36P8.js} +1 -1
  14. package/dist/client/assets/{Key01-DlonotjQ.js → Key01-BdE18FaI.js} +1 -1
  15. package/dist/client/assets/{LayoutLeft-DQ7__fm3.js → LayoutLeft-Bl8aVvJU.js} +1 -1
  16. package/dist/client/assets/{LinkExternal01-DQ_ySG_o.js → LinkExternal01-D3-UGP2m.js} +1 -1
  17. package/dist/client/assets/{Monitor01-CXd-0Fqe.js → Monitor01-BftniqM0.js} +1 -1
  18. package/dist/client/assets/{Palette-CkMrKa4E.js → Palette-D5qZOf7y.js} +1 -1
  19. package/dist/client/assets/{Play-BzdwOAwU.js → Play-BcYYdgTy.js} +1 -1
  20. package/dist/client/assets/{Plus-Bsa1EXc2.js → Plus-TQvQZzaH.js} +1 -1
  21. package/dist/client/assets/{SearchLg-CQxoAmek.js → SearchLg-D2lr8wC3.js} +1 -1
  22. package/dist/client/assets/{SearchMd-Be8mujeo.js → SearchMd-BIBVu0wR.js} +1 -1
  23. package/dist/client/assets/{Settings02-DYBfnunT.js → Settings02-BiNyB-vC.js} +1 -1
  24. package/dist/client/assets/{Shield01-NrJMTx2Z.js → Shield01-WDYxAXHi.js} +1 -1
  25. package/dist/client/assets/{Star01-CHAOU7T_.js → Star01-IYnaiSiL.js} +1 -1
  26. package/dist/client/assets/{Stars01-B1SI6N3J.js → Stars01-rCaJ9HNA.js} +1 -1
  27. package/dist/client/assets/{Stars02-CGbuR3P_.js → Stars02-Bm_knLi8.js} +1 -1
  28. package/dist/client/assets/{Sun-DbB9xJ-P.js → Sun-Bzg2qXN0.js} +1 -1
  29. package/dist/client/assets/{SwitchHorizontal01-4TSljMLH.js → SwitchHorizontal01-DfGq2YYY.js} +1 -1
  30. package/dist/client/assets/{Tool01-BoRwFgKZ.js → Tool01-DIWL78-8.js} +1 -1
  31. package/dist/client/assets/{Trash01-gTzlozZV.js → Trash01-U_Sy2kwB.js} +1 -1
  32. package/dist/client/assets/{Upload01-CNuPv19_.js → Upload01-CymXVj3x.js} +1 -1
  33. package/dist/client/assets/{User01-DGyuaj5N.js → User01-b9jhuv9P.js} +1 -1
  34. package/dist/client/assets/{Users01-DN_0hdIt.js → Users01-m0i8puc1.js} +1 -1
  35. package/dist/client/assets/{Users03-C-u0MrGq.js → Users03-BTULrIgV.js} +1 -1
  36. package/dist/client/assets/{X-TJ8woDN6.js → X-CkT4FzU2.js} +1 -1
  37. package/dist/client/assets/{XCircle-DUooiAU5.js → XCircle-Di8yNE57.js} +1 -1
  38. package/dist/client/assets/{XClose-CIeyKrgI.js → XClose-BGz5FBd2.js} +1 -1
  39. package/dist/client/assets/{Zap-VyRzT5-b.js → Zap-CUY-AD-2.js} +1 -1
  40. package/dist/client/assets/{ZapSquare-BINPWa8T.js → ZapSquare-l9YtCjoP.js} +1 -1
  41. package/dist/client/assets/{ZoomOut-Cs3ovY5-.js → ZoomOut-B95bj65o.js} +1 -1
  42. package/dist/client/assets/{access-gate-DtfWFKzz.js → access-gate-B5UeDDfJ.js} +1 -1
  43. package/dist/client/assets/{add-section-modal-1LcIyqvW.js → add-section-modal-CpDYgCVv.js} +1 -1
  44. package/dist/client/assets/{agent-icon-BpP5IftO.js → agent-icon-V1r5dIwq.js} +1 -1
  45. package/dist/client/assets/{agents-list-C3f207nI.js → agents-list-Co1RFMSc.js} +1 -1
  46. package/dist/client/assets/{ai-providers-Dtdu0PO6.js → ai-providers-CUjhRFSM.js} +1 -1
  47. package/dist/client/assets/{alert-DceB1BA1.js → alert-9c2yALlG.js} +1 -1
  48. package/dist/client/assets/{alert-dialog-SCSmMBwF.js → alert-dialog-Bo3W54fN.js} +1 -1
  49. package/dist/client/assets/{app-editor-BJ7sHcwm.js → app-editor-DYIScMAN.js} +1 -1
  50. package/dist/client/assets/{auth-CnmyIz9U.js → auth-CcOhYQ7M.js} +1 -1
  51. package/dist/client/assets/{auth-catchall-CLTrmXqG.js → auth-catchall-lJ6lgT71.js} +1 -1
  52. package/dist/client/assets/{auth-entry-C6xMUg_h.js → auth-entry-D27sXbQ4.js} +1 -1
  53. package/dist/client/assets/{auth-split-layout-C4EeqNIG.js → auth-split-layout-BZZiTMHw.js} +1 -1
  54. package/dist/client/assets/{authenticate-and-persist-oauth-K2DkxZmb.js → authenticate-and-persist-oauth-B1kzcJlX.js} +1 -1
  55. package/dist/client/assets/{automation-list-row-C1vkNLDX.js → automation-list-row-CRJxITyI.js} +1 -1
  56. package/dist/client/assets/{automation-runs-BSbV0Yzc.js → automation-runs-KfW9C8Sd.js} +1 -1
  57. package/dist/client/assets/{automations-D7co-nPy.js → automations-DGIlJzpq.js} +1 -1
  58. package/dist/client/assets/{avatar-DrK-EmSI.js → avatar-BIQz8lMw.js} +1 -1
  59. package/dist/client/assets/{badge-BKCnXIMk.js → badge-BZcpXNTj.js} +1 -1
  60. package/dist/client/assets/{block-document-ChCc0aIP.js → block-document-sU51qz6z.js} +1 -1
  61. package/dist/client/assets/{brand-context-BVW1E9S9.js → brand-context-D_ADJD-j.js} +1 -1
  62. package/dist/client/assets/{buckets-CKwBPmkj.js → buckets-Ds5C35KQ.js} +1 -1
  63. package/dist/client/assets/{bulk-category-panel-ClRwncFr.js → bulk-category-panel-CQLZrjG6.js} +1 -1
  64. package/dist/client/assets/{capability-load-error-B09IoS9e.js → capability-load-error-C8NOBRcv.js} +1 -1
  65. package/dist/client/assets/{card-D43rx8xv.js → card-BbFsvKOS.js} +1 -1
  66. package/dist/client/assets/{category-editor-CFbvHpLj.js → category-editor-DwpJA5qR.js} +1 -1
  67. package/dist/client/assets/{chat-context-CGP6Q2AV.js → chat-context-DbHaEJRs.js} +1 -1
  68. package/dist/client/assets/{checkbox-CCbcx_7m.js → checkbox-D3ssEM2_.js} +1 -1
  69. package/dist/client/assets/{cli-auth-success-B5z1n_OW.js → cli-auth-success-CO4qO8P9.js} +1 -1
  70. package/dist/client/assets/{collection-detail-BniGA40J.js → collection-detail-CcWhnp7v.js} +1 -1
  71. package/dist/client/assets/{collection-display-button-WZKQC3TC.js → collection-display-button-DcBzRyX3.js} +1 -1
  72. package/dist/client/assets/{collection-search-BhT5JCRc.js → collection-search-BGbKPBT5.js} +1 -1
  73. package/dist/client/assets/{collection-tabs-D2gyfKHR.js → collection-tabs-BNgvJxRr.js} +1 -1
  74. package/dist/client/assets/{command-sqOaO1ms.js → command-D3D4wWpb.js} +1 -1
  75. package/dist/client/assets/{commerce-onboarding-D5s9mJlK.js → commerce-onboarding-rWg79fgH.js} +1 -1
  76. package/dist/client/assets/{connect-desktop-dialog-3DJd3ee0.js → connect-desktop-dialog-CAuLO1Hw.js} +1 -1
  77. package/dist/client/assets/{connection-card-Tb1PLQQj.js → connection-card-BLBEA3D0.js} +1 -1
  78. package/dist/client/assets/{connection-detail-D3gXncEr.js → connection-detail-DP52Uuf7.js} +1 -1
  79. package/dist/client/assets/{connection-form-helpers-DXGUrv6m.js → connection-form-helpers-BKKvRH6i.js} +1 -1
  80. package/dist/client/assets/{connections-BKCr5wY9.js → connections-C-FviEZC.js} +1 -1
  81. package/dist/client/assets/{context-menu-DRzjD1Za.js → context-menu-ZV5YSNjW.js} +1 -1
  82. package/dist/client/assets/{decopilot-Dg_IfYpG.js → decopilot-C2CKUIsG.js} +1 -1
  83. package/dist/client/assets/{decopilot-sse-pool-OP6YX9W0.js → decopilot-sse-pool-BeaOHKC9.js} +1 -1
  84. package/dist/client/assets/{dialog-BO4SgDw0.js → dialog-C3eyXKr2.js} +1 -1
  85. package/dist/client/assets/{domain-settings-CiklE3s_.js → domain-settings-Bl1jHEi_.js} +1 -1
  86. package/dist/client/assets/{drawer-YOOP4wcn.js → drawer-CaJ9RSEr.js} +1 -1
  87. package/dist/client/assets/{dropdown-menu-DQIf3yiR.js → dropdown-menu-BQRK_84j.js} +1 -1
  88. package/dist/client/assets/{empty-state-guJxtNC0.js → empty-state-Codn-KBw.js} +1 -1
  89. package/dist/client/assets/{extract-connection-data-EGKeDbbv.js → extract-connection-data-CTe9qPGu.js} +1 -1
  90. package/dist/client/assets/{file-explorer-lxPZ57dx.js → file-explorer-DcyqgJ89.js} +1 -1
  91. package/dist/client/assets/{file-type-icon-xISCMSIB.js → file-type-icon-ClzHNv7M.js} +1 -1
  92. package/dist/client/assets/{files-C3Y9_yzk.js → files-Cp6dtrG5.js} +1 -1
  93. package/dist/client/assets/{form-BKC-BQss.js → form-qQQZZ0bg.js} +1 -1
  94. package/dist/client/assets/{general-C0jJRRHY.js → general-f1C5low1.js} +1 -1
  95. package/dist/client/assets/{github-repo-picker-PLkdlz6m.js → github-repo-picker-LeGIFwfq.js} +1 -1
  96. package/dist/client/assets/{hooks-D4VEryQI.js → hooks-DXSvM6i_.js} +1 -1
  97. package/dist/client/assets/{import-from-deco-dialog-p3IanS4X.js → import-from-deco-dialog-BiRWzAEy.js} +1 -1
  98. package/dist/client/assets/{index-C-d64amw.js → index-B01ktAms.js} +1 -1
  99. package/dist/client/assets/{index-4pipeMPF.js → index-Bs5c1BHn.js} +1 -1
  100. package/dist/client/assets/{index-B4jhTFUt.js → index-Bv8Bucgp.js} +1 -1
  101. package/dist/client/assets/{index-7kgFwS5d.js → index-CMehFgzp.js} +1 -1
  102. package/dist/client/assets/{index-CxvfxA7p.js → index-CTIfwPir.js} +1 -1
  103. package/dist/client/assets/{index-5rhY7_8S.js → index-Ch-D8PUe.js} +1 -1
  104. package/dist/client/assets/{index-C2W1Vbir.js → index-Cql-FIPD.js} +1 -1
  105. package/dist/client/assets/{index-CV-6ZwKX.js → index-D0BG6huy.js} +1 -1
  106. package/dist/client/assets/{index-tVBidCwF.js → index-DGz6e9XH.js} +1 -1
  107. package/dist/client/assets/{index-CFPXU3MO.js → index-DU8ma9YC.js} +1 -1
  108. package/dist/client/assets/{index-DiIuORIl.js → index-DfLXouLn.js} +5 -5
  109. package/dist/client/assets/{index-_i31qDDF.js → index-DwA0s3Ar.js} +1 -1
  110. package/dist/client/assets/{index-DeS-Kv_G.js → index-fU8qkHBD.js} +3 -3
  111. package/dist/client/assets/{index-redirect-CT4lc2Ow.js → index-redirect-ButFq0Ei.js} +1 -1
  112. package/dist/client/assets/{index-Bi7VdeTW.js → index-s4x6yXkA.js} +1 -1
  113. package/dist/client/assets/{input-i9gWuqqu.js → input-B4Od9I-H.js} +1 -1
  114. package/dist/client/assets/{integration-icon-DZmPnb8j.js → integration-icon-BMIPoS1Z.js} +1 -1
  115. package/dist/client/assets/{label-BGR_WIM3.js → label-DndLbTFQ.js} +1 -1
  116. package/dist/client/assets/{login-yqvguoPT.js → login-5uE6trPc.js} +1 -1
  117. package/dist/client/assets/{mcp-oauth-DDlKwlLK.js → mcp-oauth-D5kveiDt.js} +1 -1
  118. package/dist/client/assets/{members-DpIMz6V6.js → members-CgGbg5R2.js} +1 -1
  119. package/dist/client/assets/{monaco-editor-BzzcNIog.js → monaco-editor-_m1K9Qor.js} +1 -1
  120. package/dist/client/assets/{monitoring-stats-row-DslF8xzr.js → monitoring-stats-row-CnuJeWW2.js} +1 -1
  121. package/dist/client/assets/{oauth-callback-Dh9eFKdv.js → oauth-callback-E_YhOBvk.js} +1 -1
  122. package/dist/client/assets/{oauth-callback-ai-provider-CKbQclOB.js → oauth-callback-ai-provider-C_ajyUGg.js} +1 -1
  123. package/dist/client/assets/{onboarding-B9Jvf2Z8.js → onboarding-DqgRR_Dv.js} +1 -1
  124. package/dist/client/assets/{org-install-Bk5N0f0C.js → org-install-f-RGHP6-.js} +1 -1
  125. package/dist/client/assets/{org-layout-B37_QFrC.js → org-layout-BK6d5F8h.js} +1 -1
  126. package/dist/client/assets/{organization-choice-BZmJ16DC.js → organization-choice-Ohu0cceP.js} +1 -1
  127. package/dist/client/assets/{page-seo-form-DOI02Qoj.js → page-seo-form-DN0N5Syc.js} +1 -1
  128. package/dist/client/assets/page-seo-sheet-vvHwtwAv.js +1 -0
  129. package/dist/client/assets/{popover-d7XJG3WR.js → popover-BAKVfDcM.js} +1 -1
  130. package/dist/client/assets/{post-editor-CcItsV21.js → post-editor-BEZnMiIz.js} +1 -1
  131. package/dist/client/assets/{preview-dialog-Wklj8Zf_.js → preview-dialog-DByPX0B3.js} +1 -1
  132. package/dist/client/assets/{primitives-DFRDQR4w.js → primitives-0GptfD8a.js} +1 -1
  133. package/dist/client/assets/{profile-DvP8y7Ac.js → profile-WHx6IjAW.js} +1 -1
  134. package/dist/client/assets/project-app-view-DotUJ_Hy.js +1 -0
  135. package/dist/client/assets/record-editor-CCnRURCm.js +1 -0
  136. package/dist/client/assets/registry-DnqjOj4t.js +2 -0
  137. package/dist/client/assets/{registry-layout-DjxCQnJ2.js → registry-layout-d-l3wL-L.js} +1 -1
  138. package/dist/client/assets/{require-capability-wa47M2Kd.js → require-capability-CCAJW64h.js} +1 -1
  139. package/dist/client/assets/{required-auth-layout-xv6bCUjz.js → required-auth-layout-C6cFom9R.js} +1 -1
  140. package/dist/client/assets/{reset-password-HQRH70VG.js → reset-password-BaF2nJwP.js} +1 -1
  141. package/dist/client/assets/{roles-DrIBEodq.js → roles-8z7C9jCY.js} +1 -1
  142. package/dist/client/assets/{scroll-area-DQeVYSIL.js → scroll-area-CNdGQ1jT.js} +1 -1
  143. package/dist/client/assets/{search-input-S32izUxz.js → search-input-CCZFMk6Z.js} +1 -1
  144. package/dist/client/assets/{secrets-D0srunRz.js → secrets-5CL1V78P.js} +1 -1
  145. package/dist/client/assets/{sections-editor-BzV_mToa.js → sections-editor-AfoRnv8p.js} +1 -1
  146. package/dist/client/assets/{select-CdDMRkS6.js → select-BjJvwa6X.js} +1 -1
  147. package/dist/client/assets/{select-model-GAK-22Sq.js → select-model-rnntPo-M.js} +1 -1
  148. package/dist/client/assets/{seo-editor-DX-tRZcB.js → seo-editor-hilJhS12.js} +1 -1
  149. package/dist/client/assets/{settings-layout-DchDrGdu.js → settings-layout-CzN62-cM.js} +1 -1
  150. package/dist/client/assets/{settings-section-CXbXXYEz.js → settings-section-CqtrtZMl.js} +1 -1
  151. package/dist/client/assets/{sheet-WY6dvR5A.js → sheet-DR8moRi5.js} +1 -1
  152. package/dist/client/assets/{shell-controls-B97glucr.js → shell-controls-Cljq-5zJ.js} +1 -1
  153. package/dist/client/assets/{shell-layout-GP5ZchQ_.js → shell-layout-FEZBzcOq.js} +1 -1
  154. package/dist/client/assets/{shell-route-loading--yN4nFOA.js → shell-route-loading-DRjs12ym.js} +1 -1
  155. package/dist/client/assets/{sidebar-CARDkLJL.js → sidebar-D5o9jDwG.js} +1 -1
  156. package/dist/client/assets/{skeleton-BlImUe2Y.js → skeleton-rLWTvH4F.js} +1 -1
  157. package/dist/client/assets/{sortable.esm-CCAxemgy.js → sortable.esm-BfgKZ0pF.js} +1 -1
  158. package/dist/client/assets/{sso-C5uiDmak.js → sso-BOSJVSrx.js} +1 -1
  159. package/dist/client/assets/{store-CbyK0cgQ.js → store-CKLXbExl.js} +1 -1
  160. package/dist/client/assets/store-registry-DOqsBL_g.js +2 -0
  161. package/dist/client/assets/{studio-tools-DaV20u7u.js → studio-tools-TtWi4GcA.js} +1 -1
  162. package/dist/client/assets/{switch-B8PP6XnU.js → switch-BOsyPDmg.js} +1 -1
  163. package/dist/client/assets/{table-DjTiPsRY.js → table-BVT6YJU9.js} +1 -1
  164. package/dist/client/assets/{tabs-Ck0hVr9p.js → tabs-C3CKwsJX.js} +1 -1
  165. package/dist/client/assets/{task-status-lzSQdRCu.js → task-status-blhXxYxP.js} +1 -1
  166. package/dist/client/assets/{textarea-s4rxHSEe.js → textarea-CIBm6IXz.js} +1 -1
  167. package/dist/client/assets/{toggle-group-BSucc60b.js → toggle-group-CceYppKq.js} +1 -1
  168. package/dist/client/assets/{toolbar-BfkIW6Re.js → toolbar-Do9XcH34.js} +1 -1
  169. package/dist/client/assets/{tools-list-BKRe_KIY.js → tools-list-m5A5eLnZ.js} +1 -1
  170. package/dist/client/assets/{tooltip-D_SOLmX4.js → tooltip-BGqS6PeK.js} +1 -1
  171. package/dist/client/assets/{types-CPq51JKG.js → types-Z7yVORi-.js} +1 -1
  172. package/dist/client/assets/{use-ai-providers-DmxopoAX.js → use-ai-providers--YmjlfBQ.js} +1 -1
  173. package/dist/client/assets/{use-automations-t4CrF6iM.js → use-automations-2dWNyHsz.js} +1 -1
  174. package/dist/client/assets/{use-capability-BV_QVPHV.js → use-capability-DVLJAsjf.js} +1 -1
  175. package/dist/client/assets/{use-clock-tick-CcaLTwZ6.js → use-clock-tick-DpHZFAog.js} +1 -1
  176. package/dist/client/assets/{use-collections-Bo3pt4zR.js → use-collections-KsDUHUAN.js} +1 -1
  177. package/dist/client/assets/{use-connection-B9Db1VXa.js → use-connection-Cv8gTfne.js} +1 -1
  178. package/dist/client/assets/{use-copy-DvpBn5Wb.js → use-copy-D2gkWguH.js} +1 -1
  179. package/dist/client/assets/{use-create-virtual-mcp-f48S5ZXA.js → use-create-virtual-mcp-B8Yyp1fR.js} +1 -1
  180. package/dist/client/assets/{use-debounced-autosave-CrQum8oA.js → use-debounced-autosave-DVt2zHOJ.js} +1 -1
  181. package/dist/client/assets/{use-debounced-value-dr62yUvI.js → use-debounced-value-DjWsP9Hj.js} +1 -1
  182. package/dist/client/assets/{use-decopilot-events-BDqp9P22.js → use-decopilot-events-BCSjNngL.js} +1 -1
  183. package/dist/client/assets/{use-delete-connection-Cakz_Qqj.js → use-delete-connection-J96v3kjz.js} +1 -1
  184. package/dist/client/assets/{use-file-configs-NfAfb_J0.js → use-file-configs-BYW5JaMQ.js} +1 -1
  185. package/dist/client/assets/{use-infinite-scroll-BTSrpDXn.js → use-infinite-scroll-r7m6Z_Be.js} +1 -1
  186. package/dist/client/assets/{use-join-requests-1zckxFVN.js → use-join-requests-IkdbtSFd.js} +1 -1
  187. package/dist/client/assets/{use-mcp-client-CFSKdoIv.js → use-mcp-client-B0hy5V7D.js} +1 -1
  188. package/dist/client/assets/{use-mcp-prompts-DA3mIbXB.js → use-mcp-prompts-Bln5EAZM.js} +1 -1
  189. package/dist/client/assets/{use-mcp-tools-C0k6ySbK.js → use-mcp-tools-BCsOGlSX.js} +1 -1
  190. package/dist/client/assets/{use-members-Dpbr_Kwl.js → use-members-B7MZAKoo.js} +1 -1
  191. package/dist/client/assets/{use-mobile-BCgaFFFc.js → use-mobile-DFd-Pz6l.js} +1 -1
  192. package/dist/client/assets/{use-navigate-to-agent-N_FzyJYM.js → use-navigate-to-agent-BJeOgnu1.js} +1 -1
  193. package/dist/client/assets/{use-org-auth-client-B5locNE4.js → use-org-auth-client-BmaNh1kZ.js} +1 -1
  194. package/dist/client/assets/{use-org-fs-DbCDmI1O.js → use-org-fs-Dps-w-7N.js} +1 -1
  195. package/dist/client/assets/{use-org-sso-Cx7UMcir.js → use-org-sso-DJccZWzK.js} +1 -1
  196. package/dist/client/assets/{use-organization-roles-CZzb5Fzt.js → use-organization-roles-Dkgf6KZE.js} +1 -1
  197. package/dist/client/assets/{use-organization-settings-DhCzI_L1.js → use-organization-settings-BUxJmxMx.js} +1 -1
  198. package/dist/client/assets/{use-registry-connections-DVNhmqr2.js → use-registry-connections-CAkcLsK-.js} +1 -1
  199. package/dist/client/assets/{use-secrets-DJQeFg49.js → use-secrets-Cb2oZE_A.js} +1 -1
  200. package/dist/client/assets/{use-status-sounds-Cr9VTbBV.js → use-status-sounds-DHO_hnrz.js} +1 -1
  201. package/dist/client/assets/{use-view-mode-DirWp2lY.js → use-view-mode-BWRU3sX2.js} +1 -1
  202. package/dist/client/assets/{use-virtual-mcp-CsOmhyY5.js → use-virtual-mcp-CEVUoztY.js} +1 -1
  203. package/dist/client/assets/useInfiniteQuery-BfE963e3.js +1 -0
  204. package/dist/client/assets/useSuspenseInfiniteQuery-DFr6gOVI.js +1 -0
  205. package/dist/client/assets/{useSuspenseQueries-D7rPaa-j.js → useSuspenseQueries-BAAJUN-c.js} +1 -1
  206. package/dist/client/assets/{variant-calendar-fw-Qh7n6.js → variant-calendar-D5dc-Gv9.js} +1 -1
  207. package/dist/client/assets/{view-mode-toggle-DMS7iuR9.js → view-mode-toggle-DWiS3R3D.js} +1 -1
  208. package/dist/client/index.html +1 -1
  209. package/dist/server/cli.js +2 -2
  210. package/dist/server/server.js +1 -1
  211. package/package.json +1 -1
  212. package/dist/client/assets/page-seo-sheet-dAkCpL6g.js +0 -1
  213. package/dist/client/assets/project-app-view-C7ndHEb4.js +0 -1
  214. package/dist/client/assets/record-editor-CT1gkybD.js +0 -1
  215. package/dist/client/assets/registry-CLTOm1nd.js +0 -2
  216. package/dist/client/assets/store-registry-Bgaeiwud.js +0 -2
  217. package/dist/client/assets/useInfiniteQuery-TxCvkQbt.js +0 -1
  218. package/dist/client/assets/useSuspenseInfiniteQuery-CL4aqcs2.js +0 -1
@@ -81264,7 +81264,7 @@ ${$}`;_(Z);return}if(E(null,B),t.strategy==="count"){if(w--,w===0)_()}if(t.strat
81264
81264
  SELECT * FROM link_sandboxes WHERE handle = $handle
81265
81265
  `);function _(v){if(t===void 0)return!0;let h=gM(v),D=h&&gM(t)?tru(t):t,g=h?tru(v):fru(v),O=DHt(D,g);return O===""||!O.startsWith("..")&&!vHt(O)}return{upsert(v){f.run({$handle:v.handle,$status:v.status,$sandboxPath:v.sandboxPath,$port:v.port??null,$previewUrl:v.previewUrl??null,$repoCloneUrl:v.repoCloneUrl??null,$branch:v.branch??null,$projectName:v.projectName??null,$error:v.error??null,$now:Date.now()})},list(){return l.all().map(b1i)},reconcile(){let v=Date.now();for(let h of l.all().map(b1i)){if(!_(h.sandboxPath)){c.run({$handle:h.handle,$now:v});continue}if(!gM(h.sandboxPath)){E.run({$handle:h.handle,$now:v});continue}if(h.status==="spawning"||h.status==="ready"||h.status==="failed"||h.status==="missing")$.run({$handle:h.handle,$now:v})}return l.all().map(b1i)},prune(v){let h=[],D=[],g=this.reconcile();for(let O of g){if(!_(O.sandboxPath)){D.push({handle:O.handle,sandboxPath:O.sandboxPath,reason:"outside_root",deletedFiles:!1});continue}if(v.missing&&O.status==="missing"){w.run({$handle:O.handle}),h.push({handle:O.handle,sandboxPath:O.sandboxPath,reason:"missing",deletedFiles:!1});continue}if(!v.merged||!gM(O.sandboxPath))continue;if(O.branch===null||O.branch.trim()===""){D.push({handle:O.handle,sandboxPath:O.sandboxPath,reason:"no_branch",deletedFiles:!1});continue}if(!f7(O.sandboxPath,["rev-parse","--is-inside-work-tree"]).ok){D.push({handle:O.handle,sandboxPath:O.sandboxPath,reason:"git_unavailable",deletedFiles:!1});continue}let Z=f7(O.sandboxPath,["status","--porcelain"]);if(!Z.ok){D.push({handle:O.handle,sandboxPath:O.sandboxPath,reason:"git_unavailable",deletedFiles:!1});continue}if(Z.stdout.trim()!==""){D.push({handle:O.handle,sandboxPath:O.sandboxPath,reason:"dirty_worktree",deletedFiles:!1});continue}let B=cru(O.sandboxPath,O.branch);if(B===null){D.push({handle:O.handle,sandboxPath:O.sandboxPath,reason:"git_unavailable",deletedFiles:!1});continue}if(!B){D.push({handle:O.handle,sandboxPath:O.sandboxPath,reason:"branch_not_merged",deletedFiles:!1});continue}dHt(O.sandboxPath,{recursive:!0,force:!0}),w.run({$handle:O.handle}),h.push({handle:O.handle,sandboxPath:O.sandboxPath,reason:"merged",deletedFiles:!0})}return{removed:h,skipped:D}},delete(v){w.run({$handle:v})},inspect(v){let h=d.get({$handle:v});if(h===null)return null;let D=b1i(h),g=0,O=null;if(gM(D.sandboxPath)&&f7(D.sandboxPath,["rev-parse","--is-inside-work-tree"]).ok){let Z=f7(D.sandboxPath,["status","--porcelain"]);if(Z.ok){let B=Z.stdout.trim();g=B===""?0:B.split(`
81266
81266
  `).length}if(D.branch!==null&&D.branch.trim()!=="")O=cru(D.sandboxPath,D.branch)}return{handle:D.handle,branch:D.branch,sandboxPath:D.sandboxPath,dirtyCount:g,merged:O}},close(){u.close()}}}var GHi=()=>{};function $ru(i,u){let t=u?[["umount","-f",i]]:[["fusermount","-u",i],["umount",i]];for(let f of t)if(Bun.spawnSync(f,{stdout:"ignore",stderr:"ignore",timeout:5000}).exitCode===0)break}import{existsSync as ZHt,readdirSync as BHt}from"fs";import{rm as yHt}from"fs/promises";import{join as wru}from"path";async function dru(i,u={}){let t=u.detach??FHt,f=u.exists??ZHt,l=u.readdir??(($)=>BHt($)),c=u.rm??(($)=>yHt($,{recursive:!0,force:!0})),E=wru(i,"org");if(f(E))for(let $ of l(E))t(wru(E,$));await c(i)}var FHt=(i)=>$ru(i,process.platform==="darwin");var _ru=()=>{};import{join as THt}from"path";function vru(i){let u=i.purge??dru;return{stopSandbox(t){return i.provider.deleteSandbox(t)},inspectSandbox(t){return i.registry.inspect(t)},async removeSandbox(t){try{return await u6(async()=>{if(await i.provider.deleteSandbox(t),i.provider.hasHandle(t))throw Error("Can't delete \u2014 run in progress");let l=i.registry.inspect(t)?.sandboxPath??THt(i.dataDir,"sandboxes",t);await u(l)},{maxAttempts:2,minTimeout:250,jitter:0}),i.registry.delete(t),{ok:!0}}catch(f){let l=f instanceof K6?f.cause:f;return{ok:!1,error:l instanceof Error?l.message:String(l)}}}}}var hru=N(()=>{il();_ru()});import{randomBytes as UHt}from"crypto";import{mkdir as PHt}from"fs/promises";import{createServer as xHt}from"net";import{join as IHt}from"path";function Dru(i,u){return Error(`sandbox failed to start: ${i}`,{cause:u})}function AHt(i){if(!(i instanceof Error))return!1;return i.name==="TimeoutError"||/timed out|timeout|operation was aborted|aborted/i.test(i.message)}function gru(i){if(i instanceof Error){let u=i.cause;if(u instanceof Error&&u.message)return u.message;return i.message}return String(i)}function nHt(i){if(!i)return null;let u=i.trim().replace(/\/+$/,"");if(!u)return null;let t=u.split(/[/:]/).filter(Boolean).at(-1);if(!t)return null;return t.replace(/\.git$/i,"")||null}function GHt(i){return{repoCloneUrl:i.repo?.cloneUrl??null,branch:i.repo?.branch??null,projectName:nHt(i.repo?.cloneUrl)}}function Nru(i){let u=i.maxSandboxes??20,t=new Map,f=i.pickPort??kHt,l=i.fetchImpl??fetch,c=i.resolvePreviewUrl??((g,O)=>`http://127.0.0.1:${O}`),E=(g)=>IHt(i.dataDir,"sandboxes",g),$=(g)=>{try{i.registry?.upsert(g)}catch(O){console.warn(`[user-desktop] failed to persist sandbox lifecycle handle=${g.handle} status=${g.status}:`,O)}},w=(g)=>{try{i.onEvent?.(g)}catch{}},d=async(g)=>{let O=new AbortController,Z=setTimeout(()=>O.abort(),1500);try{let B=await l(`${g}/health`,{signal:O.signal});if(!B.ok)console.warn(`[user-desktop] probe ${g}/health \u2192 ${B.status} (treating as dead)`);return B.ok}catch(B){return console.warn(`[user-desktop] probe ${g}/health failed: ${B instanceof Error?B.message:String(B)} (treating as dead)`),!1}finally{clearTimeout(Z)}},_=(g)=>{console.warn(`[user-desktop] evicting dead daemon handle=${g.handle} port=${g.port}`);try{g.process.kill("SIGTERM")}catch{}if(t.get(g.handle)===g)t.delete(g.handle),$({handle:g.handle,status:"stopped",sandboxPath:E(g.handle),port:null,previewUrl:null,...g.registryMetadata,error:null}),w({handle:g.handle,phase:"evicted"})},v=new Map;function h(){if(t.size<u)return;let g=[...t.values()].filter((Z)=>Z.activeDispatchCount===0).sort((Z,B)=>Z.lastUsedAt-B.lastUsedAt);if(g.length===0){console.warn(`[user-desktop] at cap ${t.size}/${u} but every sandbox is pinned (active dispatch) \u2014 exceeding cap temporarily`);return}let O=g[0];console.log(`[user-desktop] evicting LRU victim handle=${O.handle} port=${O.port} (cap ${u} reached, size=${t.size})`);try{O.process.kill("SIGTERM")}catch{}t.delete(O.handle),$({handle:O.handle,status:"stopped",sandboxPath:E(O.handle),port:null,previewUrl:null,...O.registryMetadata,error:null}),w({handle:O.handle,phase:"evicted"})}let D=async(g)=>{let O=GHt(g),Z=E(g.handle);$({handle:g.handle,status:"spawning",sandboxPath:Z,port:null,previewUrl:null,...O,error:null}),w({handle:g.handle,phase:"spawning"}),h();let B,y=null,F;try{await PHt(Z,{recursive:!0}),console.log(`[user-desktop] ensure handle=${g.handle} repo=${g.repo?.cloneUrl??"(none)"} branch=${g.repo?.branch??"(none)"} runtime=${g.workload?.runtime??"(autodetect)"} pm=${g.workload?.packageManager??"(autodetect)"}`),F=UHt(24).toString("hex");let[j,A]=await Promise.all([f(),f()]);B=j,console.log(`[user-desktop] spawn handle=${g.handle} port=${B} devPort=${A} workdir=${Z}`),y=await Promise.resolve(i.spawnDaemon({workdir:Z,handle:g.handle,port:B,daemonToken:F,offloadAllowedHosts:g.offloadAllowedHosts??[],offloadAllowSameHostDev:g.offloadAllowSameHostDev??!1,orgFsConfigJson:g.orgFsConfigJson}));try{await i.waitForHealth(B)}catch(G){throw Dru("the sandbox didn't come online in time",G)}console.log(`[user-desktop] healthy handle=${g.handle} port=${B} \u2014 posting config`);try{await i.postConfig(B,A,{repo:g.repo,workload:g.workload,operator:g.operator},F)}catch(G){throw Dru(AHt(G)?"configuration timed out":"the sandbox rejected its configuration",G)}}catch(j){if(console.error(`[user-desktop] sandbox bring-up failed handle=${g.handle} port=${B??"(none)"}${y?" (killing daemon)":""}:`,j),y)try{y.kill("SIGKILL")}catch{}throw w({handle:g.handle,phase:"failed",error:gru(j)}),$({handle:g.handle,status:"failed",sandboxPath:Z,port:null,previewUrl:null,...O,error:gru(j)}),j}if(!y||B===void 0)throw Error("sandbox bring-up invariant violated");let T=`http://127.0.0.1:${B}`,U=c(g.handle,B);console.log(`[user-desktop] ready handle=${g.handle} port=${B} sandboxApiUrl=${T} previewUrl=${U}`);let I={handle:g.handle,port:B,process:y,sandboxApiUrl:T,previewUrl:U,lastUsedAt:Date.now(),activeDispatchCount:0,daemonToken:F,registryMetadata:O};if(t.set(g.handle,I),$({handle:g.handle,status:"ready",sandboxPath:Z,port:B,previewUrl:U,...O,error:null}),w({handle:g.handle,phase:"ready",port:B,previewUrl:U}),y.exited)y.exited.then(()=>{if(t.get(g.handle)===I)console.warn(`[user-desktop] daemon process exited unexpectedly handle=${g.handle} port=${B} \u2014 removing from cache`),t.delete(g.handle),$({handle:g.handle,status:"stopped",sandboxPath:Z,port:null,previewUrl:null,...O,error:null}),w({handle:g.handle,phase:"evicted"});else console.log(`[user-desktop] daemon process exited handle=${g.handle} port=${B} (already replaced/removed)`)});return{sandboxApiUrl:T,previewUrl:U,port:B}};return{async ensureSandbox(g){let O=t.get(g.handle);if(O){if(await d(O.sandboxApiUrl))return console.log(`[user-desktop] cache hit handle=${g.handle} port=${O.port} (alive)`),O.lastUsedAt=Date.now(),{sandboxApiUrl:O.sandboxApiUrl,previewUrl:O.previewUrl,port:O.port};console.warn(`[user-desktop] cache stale handle=${g.handle} port=${O.port} \u2014 respawning`),_(O)}let Z=v.get(g.handle);if(Z)return console.log(`[user-desktop] joining in-flight ensure handle=${g.handle}`),Z;let B=D(g).finally(()=>{v.delete(g.handle)});return v.set(g.handle,B),B},proxyPort(g){let O=t.get(g);if(O)O.lastUsedAt=Date.now();return O?.port??null},getDaemonToken(g){return t.get(g)?.daemonToken??null},hasHandle(g){return t.has(g)||v.has(g)},recordHit(g){let O=t.get(g);if(O)O.lastUsedAt=Date.now()},acquireDispatch(g){let O=t.get(g);if(!O)return()=>{};O.activeDispatchCount+=1;let Z=!1;return()=>{if(Z)return;Z=!0;let B=t.get(g);if(B)B.activeDispatchCount=Math.max(0,B.activeDispatchCount-1)}},listSandboxes(){return[...t.values()]},async deleteSandbox(g){let O=t.get(g);if(!O){console.log(`[user-desktop] delete handle=${g} (not found, no-op)`);return}if(O.activeDispatchCount>0){console.warn(`[user-desktop] delete handle=${g} port=${O.port} REFUSED \u2014 ${O.activeDispatchCount} active dispatch(es) in flight`);return}console.log(`[user-desktop] delete handle=${g} port=${O.port}`);try{O.process.kill("SIGTERM")}catch{}t.delete(g),$({handle:g,status:"stopped",sandboxPath:E(g),port:null,previewUrl:null,repoCloneUrl:null,branch:null,projectName:null,error:null}),w({handle:g,phase:"deleted"})},async shutdown(){console.log(`[user-desktop] shutdown \u2014 killing ${t.size} sandbox(es)`);for(let g of t.values())try{g.process.kill("SIGTERM")}catch{}t.clear()}}}function kHt(){return new Promise((i,u)=>{let t=xHt();t.unref(),t.on("error",u),t.listen(0,"127.0.0.1",()=>{let f=t.address();if(f&&typeof f==="object"){let l=f.port;t.close(()=>i(l))}else t.close(()=>u(Error("could not allocate port")))})})}var Oru=()=>{};import{randomUUID as jHt}from"crypto";import{hostname as XHt}from"os";async function Zru(i){let u=XHt()||void 0;i.monitor?.onMachine?.(u??"this machine");let t=sHu(i.dataDir,{outFd:i.logFd,perSandboxLog:i.perSandboxLogs,hotReload:i.hotReload}),f=C1i({path:R1i(i.dataDir),managedSandboxRoot:`${i.dataDir}/sandboxes`}),l=!1,c=()=>{if(l)return;l=!0;try{f.close()}catch{}};try{let E=0,$=Nru({dataDir:i.dataDir,registry:f,resolvePreviewUrl:(G,M)=>E>0?`http://${G}.localhost:${E}`:`http://127.0.0.1:${M}`,spawnDaemon:async(G)=>{let M={DAEMON_BOOT_ID:jHt(),APP_ROOT:G.workdir,PROXY_PORT:String(G.port),DAEMON_TOKEN:G.daemonToken,OFFLOAD_ALLOWED_HOSTS:G.offloadAllowedHosts.join(","),...G.offloadAllowSameHostDev?{OFFLOAD_ALLOW_SAME_HOST_DEV:"1"}:{}};if(G.orgFsConfigJson){let Y=await tbu(i.dataDir);if(Y)M.ORGFS_CONFIG=G.orgFsConfigJson,M.ORGFS_RCLONE_PATH=Y}let J=await t({workdir:G.workdir,env:M,daemonPort:G.port});return{port:G.port,kill:(Y)=>J.kill(Y),exited:J.exited.then(()=>{return})}},postConfig:async(G,M,J,Y)=>{let r={port:M};if(J.workload)r.runtime=J.workload.runtime,r.packageManager={name:J.workload.packageManager,...J.workload.packageManagerPath?{path:J.workload.packageManagerPath}:{}};let Q={application:r},di=i_(J.operator??null);if(di)Q.operator=di;if(J.repo)Q.git={repository:{cloneUrl:J.repo.cloneUrl,branch:J.repo.branch},...J.repo.userName&&J.repo.userEmail?{identity:{userName:J.repo.userName,userEmail:J.repo.userEmail}}:{}};await V2(`http://127.0.0.1:${G}`,Y,Q)},waitForHealth:async(G)=>{await R4i(`http://127.0.0.1:${G}`)},maxSandboxes:20,onEvent:i.monitor?.onEvent}),w=await MVu({port:i.port,lookupSandboxPort:(G)=>$.proxyPort(G)});E=w.port,console.log(`Local ingress listening on http://127.0.0.1:${w.port} (use http://<handle>.localhost:${w.port}/)`),i.monitor?.onIngress?.(w.port);let d=lbu({provider:$}),_=async()=>{let G=await q2({dataDir:i.dataDir,target:i.clusterBaseUrl});if(!G)throw Object.assign(Error(`Session for ${i.clusterBaseUrl} is no longer valid \u2014 run \`deco auth login --target ${i.clusterBaseUrl}\` and restart \`deco link\`.`),{fatal:!0});return G.accessToken},v=await iru(i.dataDir),h=process.env.npm_package_version??"0.0.0",D=await nHi(),g=sVu(D,{onChange:(G)=>{console.log(`[link-daemon] capabilities detected: +${G.join(",")} (now: ${D.join(",")})`)}}),O=NQi({path:`${i.dataDir}/link/outbox.sqlite`});O.clear();let Z=()=>{},B=new AbortController,y={clusterBaseUrl:i.clusterBaseUrl,getAccessToken:_,provider:$,outbox:O,controlHandler:d,capabilities:D,machineId:v,cliVersion:h,previewPort:w.port,onConnected:()=>{i.monitor?.onCluster?.("linked"),console.log(`Linked to ${i.clusterBaseUrl}`)},onShutdown:()=>Z(),runLifetimeSignal:B.signal};console.log(`[link-daemon] transport=tunnel cluster=${i.clusterBaseUrl}`);let F=await KVu(y);console.log("[link-daemon] active transport=tunnel");let T,U=new Promise((G)=>{T=G}),I=!1,j=async()=>{if(I)return;I=!0,B.abort(),console.log(`
81267
- Shutting down\u2026`),g();try{await F.close()}catch{}try{await w.stop()}catch{}try{await $.shutdown()}catch{}try{O.close()}catch{}c(),T(0)};process.on("SIGINT",()=>void j()),process.on("SIGTERM",()=>void j()),Z=()=>{console.log("Disconnect requested from the Studio web UI \u2014 shutting down. Run `bunx decocms@latest link` to reconnect."),j()},F.closed.then(()=>{if(i.monitor?.onCluster?.("closed"),!I)console.error("Cluster connection closed permanently; exiting."),j()});let A=vru({provider:$,registry:f,dataDir:i.dataDir});return{stopped:U,stop:j,stopSandbox:A.stopSandbox,removeSandbox:A.removeSandbox,inspectSandbox:A.inspectSandbox}}catch(E){throw c(),E}}var Bru=N(()=>{wQi();LC();pHu();fbu();cbu();OQi();JVu();qVu();pVu();uru();WC();GHi();hru();Oru()});function kHi(i){return i.map((u)=>typeof u==="string"?u:String(u)).join(" ")}var M1i;var jHi=N(()=>{M1i={name:"decocms",version:"4.0.2",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/mesh"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:'bun run migrate && concurrently "bun run dev:client" "bun run dev:server"',"dev:servers":'concurrently "bun run dev:client" "bun run dev:server"',"dev:client":"vite dev","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts","build:client":"bun --bun vite build","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","db:migrate":"bun run ./dist/server/migrate.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts",test:"bun test","test:ct":"playwright test -c playwright-ct.config.ts","test:ct:ui":"playwright test -c playwright-ct.config.ts --ui","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts","smoke:link":"bun run scripts/smoke-link.ts",prepublishOnly:"bun run build:client && bun run build:server"},optionalDependencies:{"@anthropic-ai/claude-agent-sdk":"^0.3.181","@duckdb/node-api":"^1.5.0-r.1","@openai/codex":"0.141.0","@openai/codex-darwin-arm64":"npm:@openai/codex@0.141.0-darwin-arm64","@openai/codex-darwin-x64":"npm:@openai/codex@0.141.0-darwin-x64","@openai/codex-linux-arm64":"npm:@openai/codex@0.141.0-linux-arm64","@openai/codex-linux-x64":"npm:@openai/codex@0.141.0-linux-x64","@openai/codex-win32-arm64":"npm:@openai/codex@0.141.0-win32-arm64","@openai/codex-win32-x64":"npm:@openai/codex@0.141.0-win32-x64"},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","@dnd-kit/core":"^6.3.1","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@inkjs/ui":"^2.0.0","@modelcontextprotocol/ext-apps":"^1.7.1","@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","@tanstack/react-virtual":"3.13.24","@xterm/addon-fit":"^0.11.0","@xterm/xterm":"^6.0.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","node-pty":"^1.0.0","posthog-js":"^1.371.1","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6","use-stick-to-bottom":"^1.1.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@ai-sdk/react":"^3.0.210","@better-auth/sso":"1.4.1","@daveyplate/better-auth-ui":"^3.2.7","@deco/ui":"workspace:*","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/harness":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/mesh-sdk":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/std":"workspace:*","@decocms/tunnel":"workspace:*","@floating-ui/react":"^0.27.16","@happy-dom/global-registrator":"^20.9.0","@hookform/resolvers":"^5.2.2","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@monaco-editor/react":"^4.7.0","@nats-io/jwt":"0.0.10-5","@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","@playwright/experimental-ct-react":"1.59.1","@playwright/test":"^1.58.2","@radix-ui/react-avatar":"^1.1.10","@radix-ui/react-checkbox":"^1.3.3","@radix-ui/react-dialog":"^1.1.15","@radix-ui/react-dropdown-menu":"^2.1.16","@radix-ui/react-label":"^2.1.7","@radix-ui/react-select":"^2.2.6","@radix-ui/react-separator":"^1.1.7","@radix-ui/react-slot":"^1.2.3","@radix-ui/react-tabs":"^1.1.13","@rjsf/shadcn":"^6.6.2","@rjsf/utils":"^6.6.2","@rjsf/validator-ajv8":"^6.6.2","@tailwindcss/vite":"^4.1.17","@tanstack/react-query":"5.100.10","@tanstack/react-router":"1.169.2","@testing-library/jest-dom":"^6.9.1","@testing-library/react":"^16.3.2","@tiptap/core":"3.20.2","@tiptap/extension-placeholder":"3.20.2","@tiptap/pm":"3.20.2","@tiptap/react":"3.20.2","@tiptap/starter-kit":"3.20.2","@tiptap/suggestion":"3.20.2","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@untitledui/icons":"^0.0.19","@vercel/nft":"^1.1.1","@vitejs/plugin-react":"^5.1.0",ai:"^6.0.208","babel-plugin-react-compiler":"^1.0.0","better-auth":"1.4.22","class-variance-authority":"^0.7.1",clsx:"^2.1.1",concurrently:"^9.2.1",croner:"^9.1.0","date-fns":"^4.1.0",degit:"^2.8.4",hono:"^4.10.7","input-otp":"^1.4.2",jose:"^6.0.11","lucide-react":"^0.468.0",marked:"^15.0.6",nanoid:"^5.1.6",pg:"^8.16.3",prettier:"^3.4.2","react-hook-form":"^7.66.0","react-markdown":"^10.1.0","react-resizable-panels":"^2.1.7","react-syntax-highlighter":"^15.6.1",recharts:"^3.6.0","rehype-raw":"^7.0.0","remark-gfm":"^4.0.0","sass-embedded":"^1.97.2",sonner:"^2.0.7","tailwind-merge":"^3.3.1",tailwindcss:"^4.1.17",typescript:"^5.9.3",vite:"^7.2.1","vite-tsconfig-paths":"^5.1.4",zod:"^4.0.0"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","mesh","tools"],license:"MIT",publishConfig:{access:"public"}}});var NM={};Li(NM,{printBanner:()=>SHt,bannerLines:()=>yru,BANNER_LINES:()=>q1i,BANNER_GRADIENT:()=>V1i});function JHt(i){let u=Number.parseInt(i.slice(1),16);return[u>>16&255,u>>8&255,u&255]}function yru(i){let u=q1i.map((t,f)=>{let[l,c,E]=JHt(V1i[f]);return`\x1B[38;2;${l};${c};${E}m${t}\x1B[39m`});if(i!==void 0)u.push(`\x1B[2m v${i}\x1B[22m`);return u}function SHt(i){console.log("");for(let u of yru(i))console.log(u);console.log("")}var q1i,V1i;var xY=N(()=>{q1i=[" \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588 ","\u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588 \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588 "," \u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2588 \u2591 \u2588\u2588\u2588 \u2591\u2591\u2591 \u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2591\u2591\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591 \u2588\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588 "," \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2591 ","\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591 "],V1i=["#00ff64","#00ee5e","#00dc56","#00c84e","#00b444","#00a03c","#008832","#006e28"]});import{Box as YHt,Text as Fru}from"ink";import{jsx as WHt,jsxs as Tru}from"react/jsx-runtime";function r1i({version:i}){return Tru(YHt,{flexDirection:"column",marginTop:1,children:[q1i.map((u,t)=>WHt(Fru,{color:V1i[t],children:u},t)),Tru(Fru,{dimColor:!0,children:[" v",i]})]})}var XHi=N(()=>{xY()});function Uru(i){let u=i.branch??i.handle,t=[];if(i.dirtyCount>0)t.push(`${i.dirtyCount} uncommitted file${i.dirtyCount===1?"":"s"}`);if(i.merged===!1)t.push("branch not merged");return t.length>0?`\u26A0 ${t.join(", ")} \u2014 delete ${u}? (y/n)`:`Delete ${u}? (y/n)`}function IY(i){return[...i.values()].map((u)=>u.handle).sort((u,t)=>u.localeCompare(t))}function Pru(i,u,t){if(i.length===0)return null;let f=u===null?-1:i.indexOf(u);if(f===-1)return t>0?i[0]:i[i.length-1];let l=Math.max(0,Math.min(i.length-1,f+t));return i[l]}function xru(i,u,t){if(t!==u)return t;let f=i.indexOf(u);if(f===-1)return t;return i[f+1]??i[f-1]??null}var YHi={};Li(YHi,{subscribeLinkState:()=>KHi,setSelectedHandle:()=>JHi,setRemoving:()=>a1i,setPersistedSandboxes:()=>VHt,setPendingConfirm:()=>ZM,setMachine:()=>RHt,setLogPath:()=>MHt,setLinkActions:()=>qHt,setIngress:()=>bHt,setDaemonError:()=>CHt,setClusterUrl:()=>HHt,setCluster:()=>zHt,setActionError:()=>e1i,resetLinkStateForTests:()=>mHt,removeSandboxRow:()=>SHi,pushSandboxEvent:()=>rHt,getLinkState:()=>OM,applySandboxEvent:()=>Iru});function QHt(i){return i==="spawning"||i==="ready"||i==="failed"}function Iru(i,u){let t=new Map(i),f=t.get(u.handle);if(u.phase==="evicted"||u.phase==="deleted"){if(f)t.set(u.handle,{...f,port:null,previewUrl:null,status:"stopped",error:null});return t}return t.set(u.handle,{handle:u.handle,port:u.port??f?.port??null,previewUrl:u.previewUrl??f?.previewUrl??null,status:u.phase,error:u.phase==="failed"?u.error??"failed":null,projectName:f?.projectName??null,branch:f?.branch??null,sandboxPath:f?.sandboxPath??null}),t}function Aru(){return{cluster:"connecting",clusterUrl:null,ingressUrl:null,ingressPort:null,machine:null,cap:LHt,sandboxes:new Map,daemonError:null,logPath:null,selectedHandle:null,pendingConfirm:null,removingHandles:new Set,actionError:null,actions:null}}function X$(){for(let i of m1i)i()}function OM(){return tf}function KHi(i){return m1i.add(i),()=>m1i.delete(i)}function zHt(i){tf={...tf,cluster:i},X$()}function HHt(i){tf={...tf,clusterUrl:i},X$()}function bHt(i,u){tf={...tf,ingressPort:i,ingressUrl:u},X$()}function RHt(i){tf={...tf,machine:i},X$()}function CHt(i){tf={...tf,daemonError:i},X$()}function MHt(i){tf={...tf,logPath:i},X$()}function JHi(i){tf={...tf,selectedHandle:i},X$()}function ZM(i){tf={...tf,pendingConfirm:i},X$()}function e1i(i){tf={...tf,actionError:i},X$()}function a1i(i,u){if(tf.removingHandles.has(i)===u)return;let t=new Set(tf.removingHandles);if(u)t.add(i);else t.delete(i);tf={...tf,removingHandles:t},X$()}function qHt(i){tf={...tf,actions:i},X$()}function SHi(i){let u=IY(tf.sandboxes),t=xru(u,i,tf.selectedHandle),f=new Map(tf.sandboxes);f.delete(i);let l=new Set(tf.removingHandles);l.delete(i),tf={...tf,sandboxes:f,selectedHandle:t,pendingConfirm:null,removingHandles:l},X$()}function VHt(i){let u=new Map;for(let t of i)u.set(t.handle,{handle:t.handle,port:t.port,previewUrl:t.previewUrl,status:t.status,error:t.error,projectName:t.projectName,branch:t.branch,sandboxPath:t.sandboxPath});for(let[t,f]of tf.sandboxes)if(QHt(f.status))u.set(t,f);tf={...tf,sandboxes:u},X$()}function rHt(i){tf={...tf,sandboxes:Iru(tf.sandboxes,i)},X$()}function mHt(){tf=Aru(),m1i.clear()}var LHt=20,tf,m1i;var BM=N(()=>{tf=Aru(),m1i=new Set});import{spawn as eHt}from"child_process";function aHt(i){if(i==="darwin")return"open";if(i==="win32")return"start";return"xdg-open"}function nru(i,u=process.platform){let t=aHt(u);try{eHt(t,[i],{stdio:"ignore",detached:!0}).unref()}catch{}}var Gru=()=>{};function kru(i,u={}){let t=u.openUrl??nru,f=OM(),l=IY(f.sandboxes),c=f.selectedHandle!==null&&l.includes(f.selectedHandle)?f.selectedHandle:l[0]??null,E=f.actions;switch(i.type){case"move":JHi(Pru(l,f.selectedHandle,i.delta));return;case"open":{if(c===null)return;let $=f.sandboxes.get(c);if($?.status==="ready"&&$.previewUrl)t($.previewUrl);return}case"stop":if(c!==null&&E)E.stopSandbox(c);return;case"delete":{if(c===null||!E)return;let $=E.inspectSandbox(c),w=f.sandboxes.get(c);e1i(null),ZM({handle:c,branch:$?.branch??w?.branch??null,dirtyCount:$?.dirtyCount??0,merged:$?.merged??null});return}case"confirmYes":{let $=f.pendingConfirm;if(ZM(null),$===null||!E)return;a1i($.handle,!0),E.removeSandbox($.handle).then((w)=>{if(w.ok)SHi($.handle);else a1i($.handle,!1),e1i(w.error)});return}case"confirmNo":ZM(null);return;case"quit":if(E)E.quit();return}}var jru=N(()=>{BM();Gru()});function Xru(i,u,t){if(t)return i==="y"||i==="Y"?{type:"confirmYes"}:{type:"confirmNo"};if(u.upArrow||i==="k")return{type:"move",delta:-1};if(u.downArrow||i==="j")return{type:"move",delta:1};if(i==="s")return{type:"stop"};if(i==="d")return{type:"delete"};if(i==="o")return{type:"open"};if(i==="q"||u.ctrl===!0&&i==="c")return{type:"quit"};return null}var Kru={};Li(Kru,{LinkApp:()=>ibt});import{Box as H1,Text as El,useInput as oHt}from"ink";import{useSyncExternalStore as sHt}from"react";import{jsx as xf,jsxs as v_}from"react/jsx-runtime";function pHt(i,u){if(u)return{color:"yellow",text:"\u25CC Removing\u2026"};if(i.status==="ready")return{color:"green",text:"\u25CF Live"};if(i.status==="spawning")return{color:"yellow",text:"\u25CC Starting\u2026"};if(i.status==="stopped")return{color:"gray",text:"\u25A0 Stopped"};if(i.status==="missing")return{color:"yellow",text:"\u25A1 Missing"};if(i.status==="merged")return{color:"cyan",text:"\u2713 Merged"};if(i.status==="invalid")return{color:"red",text:"\u2717 Invalid"};if(i.status==="failed")return{color:"red",text:`\u2717 Failed: ${i.error??"failed"}`};return{color:"red",text:`\u2717 Error: ${i.error??""}`}}function ibt(){let i=sHt(KHi,OM),u=[...i.sandboxes.values()].sort((l,c)=>l.handle.localeCompare(c.handle)),t=IY(i.sandboxes),f=i.selectedHandle!==null&&t.includes(i.selectedHandle)?i.selectedHandle:t[0]??null;return oHt((l,c)=>{let E=Xru(l,c,i.pendingConfirm!==null);if(E!==null)kru(E)}),v_(H1,{flexDirection:"column",children:[xf(r1i,{version:M1i.version}),xf(H1,{marginBottom:1,children:xf(El,{dimColor:!0,children:"\u2500".repeat(80)})}),xf(H1,{children:i.cluster==="linked"?v_(El,{color:"green",children:["\u2713 Connected to ",i.clusterUrl??"deco"]}):i.cluster==="connecting"?v_(El,{color:"yellow",children:["\u25CC Connecting to ",i.clusterUrl??"deco","\u2026"]}):v_(El,{color:"red",children:["\u2717 Disconnected from ",i.clusterUrl??"deco"]})}),xf(H1,{children:i.ingressUrl?v_(El,{color:"green",children:["\u2713 Serving at ",i.ingressUrl]}):xf(El,{dimColor:!0,children:"\u25CC Starting local server\u2026"})}),xf(H1,{marginBottom:1,children:xf(El,{dimColor:!0,children:`${"Computer".padEnd(16)}${i.machine??"this computer"} \xB7 ${u.length} of ${i.cap} previews`})}),u.length===0?xf(El,{dimColor:!0,children:"No previews running yet."}):v_(H1,{flexDirection:"column",children:[v_(H1,{children:[xf(H1,{width:2,flexShrink:0}),xf(H1,{width:AY.project,flexShrink:0,marginRight:1,children:xf(El,{dimColor:!0,wrap:"truncate-end",children:"PROJECT"})}),xf(H1,{width:AY.branch,flexShrink:0,marginRight:1,children:xf(El,{dimColor:!0,wrap:"truncate-end",children:"BRANCH"})}),xf(H1,{width:AY.status,flexShrink:0,marginRight:1,children:xf(El,{dimColor:!0,wrap:"truncate-end",children:"STATUS"})}),xf(H1,{flexGrow:1,children:xf(El,{dimColor:!0,wrap:"truncate-end",children:"PREVIEW URL"})})]}),u.map((l)=>{let c=pHt(l,i.removingHandles.has(l.handle)),E=l.handle===f;return v_(H1,{children:[xf(H1,{width:2,flexShrink:0,children:xf(El,{color:"cyan",children:E?"\u203A":" "})}),xf(H1,{width:AY.project,flexShrink:0,marginRight:1,children:xf(El,{bold:E,wrap:"truncate-end",children:l.projectName??l.handle})}),xf(H1,{width:AY.branch,flexShrink:0,marginRight:1,children:xf(El,{bold:E,wrap:"truncate-end",children:l.branch??"\u2014"})}),xf(H1,{width:AY.status,flexShrink:0,marginRight:1,children:xf(El,{color:c.color,bold:E,wrap:"truncate-end",children:c.text})}),xf(H1,{flexGrow:1,children:xf(El,{dimColor:!0,wrap:"truncate-end",children:l.previewUrl??"\u2014"})})]},l.handle)})]}),i.daemonError?xf(H1,{marginTop:1,children:v_(El,{color:"red",children:["\u26A0 ",i.daemonError]})}):null,i.logPath?xf(H1,{marginTop:1,children:v_(El,{dimColor:!0,children:["Logs: ",i.logPath]})}):null,i.pendingConfirm?xf(H1,{marginTop:1,children:xf(El,{color:"yellow",children:Uru(i.pendingConfirm)})}):null,i.actionError?xf(H1,{marginTop:1,children:v_(El,{color:"red",children:["\u2717 ",i.actionError]})}):null,xf(H1,{marginTop:1,children:xf(El,{dimColor:!0,children:"\u2191\u2193 move \xB7 s stop \xB7 d delete \xB7 o open \xB7 q quit"})})]})}var AY;var Jru=N(()=>{jHi();XHi();jru();BM();AY={project:18,branch:22,status:14}});var Sru={};Li(Sru,{runLinkCommand:()=>wbt});import{closeSync as ubt,mkdirSync as tbt,openSync as fbt,writeSync as lbt}from"fs";import{homedir as cbt}from"os";import{join as WHi}from"path";function Ebt(i,u){let t={log:console.log,warn:console.warn,error:console.error},f=(l)=>{if(u===void 0)return;try{lbt(u,`${kHi(l)}
81267
+ Shutting down\u2026`),g();try{await F.close()}catch{}try{await w.stop()}catch{}try{await $.shutdown()}catch{}try{O.close()}catch{}c(),T(0)};process.on("SIGINT",()=>void j()),process.on("SIGTERM",()=>void j()),Z=()=>{console.log("Disconnect requested from the Studio web UI \u2014 shutting down. Run `bunx decocms@latest link` to reconnect."),j()},F.closed.then(()=>{if(i.monitor?.onCluster?.("closed"),!I)console.error("Cluster connection closed permanently; exiting."),j()});let A=vru({provider:$,registry:f,dataDir:i.dataDir});return{stopped:U,stop:j,stopSandbox:A.stopSandbox,removeSandbox:A.removeSandbox,inspectSandbox:A.inspectSandbox}}catch(E){throw c(),E}}var Bru=N(()=>{wQi();LC();pHu();fbu();cbu();OQi();JVu();qVu();pVu();uru();WC();GHi();hru();Oru()});function kHi(i){return i.map((u)=>typeof u==="string"?u:String(u)).join(" ")}var M1i;var jHi=N(()=>{M1i={name:"decocms",version:"4.0.4",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/mesh"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:'bun run migrate && concurrently "bun run dev:client" "bun run dev:server"',"dev:servers":'concurrently "bun run dev:client" "bun run dev:server"',"dev:client":"vite dev","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts","build:client":"bun --bun vite build","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","db:migrate":"bun run ./dist/server/migrate.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts",test:"bun test","test:ct":"playwright test -c playwright-ct.config.ts","test:ct:ui":"playwright test -c playwright-ct.config.ts --ui","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts","smoke:link":"bun run scripts/smoke-link.ts",prepublishOnly:"bun run build:client && bun run build:server"},optionalDependencies:{"@anthropic-ai/claude-agent-sdk":"^0.3.181","@duckdb/node-api":"^1.5.0-r.1","@openai/codex":"0.141.0","@openai/codex-darwin-arm64":"npm:@openai/codex@0.141.0-darwin-arm64","@openai/codex-darwin-x64":"npm:@openai/codex@0.141.0-darwin-x64","@openai/codex-linux-arm64":"npm:@openai/codex@0.141.0-linux-arm64","@openai/codex-linux-x64":"npm:@openai/codex@0.141.0-linux-x64","@openai/codex-win32-arm64":"npm:@openai/codex@0.141.0-win32-arm64","@openai/codex-win32-x64":"npm:@openai/codex@0.141.0-win32-x64"},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","@dnd-kit/core":"^6.3.1","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@inkjs/ui":"^2.0.0","@modelcontextprotocol/ext-apps":"^1.7.1","@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","@tanstack/react-virtual":"3.13.24","@xterm/addon-fit":"^0.11.0","@xterm/xterm":"^6.0.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","node-pty":"^1.0.0","posthog-js":"^1.371.1","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6","use-stick-to-bottom":"^1.1.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@ai-sdk/react":"^3.0.210","@better-auth/sso":"1.4.1","@daveyplate/better-auth-ui":"^3.2.7","@deco/ui":"workspace:*","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/harness":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/mesh-sdk":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/std":"workspace:*","@decocms/tunnel":"workspace:*","@floating-ui/react":"^0.27.16","@happy-dom/global-registrator":"^20.9.0","@hookform/resolvers":"^5.2.2","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@monaco-editor/react":"^4.7.0","@nats-io/jwt":"0.0.10-5","@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","@playwright/experimental-ct-react":"1.59.1","@playwright/test":"^1.58.2","@radix-ui/react-avatar":"^1.1.10","@radix-ui/react-checkbox":"^1.3.3","@radix-ui/react-dialog":"^1.1.15","@radix-ui/react-dropdown-menu":"^2.1.16","@radix-ui/react-label":"^2.1.7","@radix-ui/react-select":"^2.2.6","@radix-ui/react-separator":"^1.1.7","@radix-ui/react-slot":"^1.2.3","@radix-ui/react-tabs":"^1.1.13","@rjsf/shadcn":"^6.6.2","@rjsf/utils":"^6.6.2","@rjsf/validator-ajv8":"^6.6.2","@tailwindcss/vite":"^4.1.17","@tanstack/react-query":"5.100.10","@tanstack/react-router":"1.169.2","@testing-library/jest-dom":"^6.9.1","@testing-library/react":"^16.3.2","@tiptap/core":"3.20.2","@tiptap/extension-placeholder":"3.20.2","@tiptap/pm":"3.20.2","@tiptap/react":"3.20.2","@tiptap/starter-kit":"3.20.2","@tiptap/suggestion":"3.20.2","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@untitledui/icons":"^0.0.19","@vercel/nft":"^1.1.1","@vitejs/plugin-react":"^5.1.0",ai:"^6.0.208","babel-plugin-react-compiler":"^1.0.0","better-auth":"1.4.22","class-variance-authority":"^0.7.1",clsx:"^2.1.1",concurrently:"^9.2.1",croner:"^9.1.0","date-fns":"^4.1.0",degit:"^2.8.4",hono:"^4.10.7","input-otp":"^1.4.2",jose:"^6.0.11","lucide-react":"^0.468.0",marked:"^15.0.6",nanoid:"^5.1.6",pg:"^8.16.3",prettier:"^3.4.2","react-hook-form":"^7.66.0","react-markdown":"^10.1.0","react-resizable-panels":"^2.1.7","react-syntax-highlighter":"^15.6.1",recharts:"^3.6.0","rehype-raw":"^7.0.0","remark-gfm":"^4.0.0","sass-embedded":"^1.97.2",sonner:"^2.0.7","tailwind-merge":"^3.3.1",tailwindcss:"^4.1.17",typescript:"^5.9.3",vite:"^7.2.1","vite-tsconfig-paths":"^5.1.4",zod:"^4.0.0"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","mesh","tools"],license:"MIT",publishConfig:{access:"public"}}});var NM={};Li(NM,{printBanner:()=>SHt,bannerLines:()=>yru,BANNER_LINES:()=>q1i,BANNER_GRADIENT:()=>V1i});function JHt(i){let u=Number.parseInt(i.slice(1),16);return[u>>16&255,u>>8&255,u&255]}function yru(i){let u=q1i.map((t,f)=>{let[l,c,E]=JHt(V1i[f]);return`\x1B[38;2;${l};${c};${E}m${t}\x1B[39m`});if(i!==void 0)u.push(`\x1B[2m v${i}\x1B[22m`);return u}function SHt(i){console.log("");for(let u of yru(i))console.log(u);console.log("")}var q1i,V1i;var xY=N(()=>{q1i=[" \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588 ","\u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588 \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2588\u2588\u2588 "," \u2591\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2588 \u2591 \u2588\u2588\u2588 \u2591\u2591\u2591 \u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588\u2591\u2591\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591\u2588\u2588\u2588"," \u2591\u2588\u2588\u2588 \u2588\u2588\u2588 \u2591\u2588\u2588\u2588 \u2591 \u2588\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588\u2591\u2591\u2588\u2588\u2588 \u2588\u2588\u2588 "," \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2591\u2591\u2591\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2591 ","\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591\u2591 \u2591\u2591\u2591\u2591\u2591\u2591\u2591 "],V1i=["#00ff64","#00ee5e","#00dc56","#00c84e","#00b444","#00a03c","#008832","#006e28"]});import{Box as YHt,Text as Fru}from"ink";import{jsx as WHt,jsxs as Tru}from"react/jsx-runtime";function r1i({version:i}){return Tru(YHt,{flexDirection:"column",marginTop:1,children:[q1i.map((u,t)=>WHt(Fru,{color:V1i[t],children:u},t)),Tru(Fru,{dimColor:!0,children:[" v",i]})]})}var XHi=N(()=>{xY()});function Uru(i){let u=i.branch??i.handle,t=[];if(i.dirtyCount>0)t.push(`${i.dirtyCount} uncommitted file${i.dirtyCount===1?"":"s"}`);if(i.merged===!1)t.push("branch not merged");return t.length>0?`\u26A0 ${t.join(", ")} \u2014 delete ${u}? (y/n)`:`Delete ${u}? (y/n)`}function IY(i){return[...i.values()].map((u)=>u.handle).sort((u,t)=>u.localeCompare(t))}function Pru(i,u,t){if(i.length===0)return null;let f=u===null?-1:i.indexOf(u);if(f===-1)return t>0?i[0]:i[i.length-1];let l=Math.max(0,Math.min(i.length-1,f+t));return i[l]}function xru(i,u,t){if(t!==u)return t;let f=i.indexOf(u);if(f===-1)return t;return i[f+1]??i[f-1]??null}var YHi={};Li(YHi,{subscribeLinkState:()=>KHi,setSelectedHandle:()=>JHi,setRemoving:()=>a1i,setPersistedSandboxes:()=>VHt,setPendingConfirm:()=>ZM,setMachine:()=>RHt,setLogPath:()=>MHt,setLinkActions:()=>qHt,setIngress:()=>bHt,setDaemonError:()=>CHt,setClusterUrl:()=>HHt,setCluster:()=>zHt,setActionError:()=>e1i,resetLinkStateForTests:()=>mHt,removeSandboxRow:()=>SHi,pushSandboxEvent:()=>rHt,getLinkState:()=>OM,applySandboxEvent:()=>Iru});function QHt(i){return i==="spawning"||i==="ready"||i==="failed"}function Iru(i,u){let t=new Map(i),f=t.get(u.handle);if(u.phase==="evicted"||u.phase==="deleted"){if(f)t.set(u.handle,{...f,port:null,previewUrl:null,status:"stopped",error:null});return t}return t.set(u.handle,{handle:u.handle,port:u.port??f?.port??null,previewUrl:u.previewUrl??f?.previewUrl??null,status:u.phase,error:u.phase==="failed"?u.error??"failed":null,projectName:f?.projectName??null,branch:f?.branch??null,sandboxPath:f?.sandboxPath??null}),t}function Aru(){return{cluster:"connecting",clusterUrl:null,ingressUrl:null,ingressPort:null,machine:null,cap:LHt,sandboxes:new Map,daemonError:null,logPath:null,selectedHandle:null,pendingConfirm:null,removingHandles:new Set,actionError:null,actions:null}}function X$(){for(let i of m1i)i()}function OM(){return tf}function KHi(i){return m1i.add(i),()=>m1i.delete(i)}function zHt(i){tf={...tf,cluster:i},X$()}function HHt(i){tf={...tf,clusterUrl:i},X$()}function bHt(i,u){tf={...tf,ingressPort:i,ingressUrl:u},X$()}function RHt(i){tf={...tf,machine:i},X$()}function CHt(i){tf={...tf,daemonError:i},X$()}function MHt(i){tf={...tf,logPath:i},X$()}function JHi(i){tf={...tf,selectedHandle:i},X$()}function ZM(i){tf={...tf,pendingConfirm:i},X$()}function e1i(i){tf={...tf,actionError:i},X$()}function a1i(i,u){if(tf.removingHandles.has(i)===u)return;let t=new Set(tf.removingHandles);if(u)t.add(i);else t.delete(i);tf={...tf,removingHandles:t},X$()}function qHt(i){tf={...tf,actions:i},X$()}function SHi(i){let u=IY(tf.sandboxes),t=xru(u,i,tf.selectedHandle),f=new Map(tf.sandboxes);f.delete(i);let l=new Set(tf.removingHandles);l.delete(i),tf={...tf,sandboxes:f,selectedHandle:t,pendingConfirm:null,removingHandles:l},X$()}function VHt(i){let u=new Map;for(let t of i)u.set(t.handle,{handle:t.handle,port:t.port,previewUrl:t.previewUrl,status:t.status,error:t.error,projectName:t.projectName,branch:t.branch,sandboxPath:t.sandboxPath});for(let[t,f]of tf.sandboxes)if(QHt(f.status))u.set(t,f);tf={...tf,sandboxes:u},X$()}function rHt(i){tf={...tf,sandboxes:Iru(tf.sandboxes,i)},X$()}function mHt(){tf=Aru(),m1i.clear()}var LHt=20,tf,m1i;var BM=N(()=>{tf=Aru(),m1i=new Set});import{spawn as eHt}from"child_process";function aHt(i){if(i==="darwin")return"open";if(i==="win32")return"start";return"xdg-open"}function nru(i,u=process.platform){let t=aHt(u);try{eHt(t,[i],{stdio:"ignore",detached:!0}).unref()}catch{}}var Gru=()=>{};function kru(i,u={}){let t=u.openUrl??nru,f=OM(),l=IY(f.sandboxes),c=f.selectedHandle!==null&&l.includes(f.selectedHandle)?f.selectedHandle:l[0]??null,E=f.actions;switch(i.type){case"move":JHi(Pru(l,f.selectedHandle,i.delta));return;case"open":{if(c===null)return;let $=f.sandboxes.get(c);if($?.status==="ready"&&$.previewUrl)t($.previewUrl);return}case"stop":if(c!==null&&E)E.stopSandbox(c);return;case"delete":{if(c===null||!E)return;let $=E.inspectSandbox(c),w=f.sandboxes.get(c);e1i(null),ZM({handle:c,branch:$?.branch??w?.branch??null,dirtyCount:$?.dirtyCount??0,merged:$?.merged??null});return}case"confirmYes":{let $=f.pendingConfirm;if(ZM(null),$===null||!E)return;a1i($.handle,!0),E.removeSandbox($.handle).then((w)=>{if(w.ok)SHi($.handle);else a1i($.handle,!1),e1i(w.error)});return}case"confirmNo":ZM(null);return;case"quit":if(E)E.quit();return}}var jru=N(()=>{BM();Gru()});function Xru(i,u,t){if(t)return i==="y"||i==="Y"?{type:"confirmYes"}:{type:"confirmNo"};if(u.upArrow||i==="k")return{type:"move",delta:-1};if(u.downArrow||i==="j")return{type:"move",delta:1};if(i==="s")return{type:"stop"};if(i==="d")return{type:"delete"};if(i==="o")return{type:"open"};if(i==="q"||u.ctrl===!0&&i==="c")return{type:"quit"};return null}var Kru={};Li(Kru,{LinkApp:()=>ibt});import{Box as H1,Text as El,useInput as oHt}from"ink";import{useSyncExternalStore as sHt}from"react";import{jsx as xf,jsxs as v_}from"react/jsx-runtime";function pHt(i,u){if(u)return{color:"yellow",text:"\u25CC Removing\u2026"};if(i.status==="ready")return{color:"green",text:"\u25CF Live"};if(i.status==="spawning")return{color:"yellow",text:"\u25CC Starting\u2026"};if(i.status==="stopped")return{color:"gray",text:"\u25A0 Stopped"};if(i.status==="missing")return{color:"yellow",text:"\u25A1 Missing"};if(i.status==="merged")return{color:"cyan",text:"\u2713 Merged"};if(i.status==="invalid")return{color:"red",text:"\u2717 Invalid"};if(i.status==="failed")return{color:"red",text:`\u2717 Failed: ${i.error??"failed"}`};return{color:"red",text:`\u2717 Error: ${i.error??""}`}}function ibt(){let i=sHt(KHi,OM),u=[...i.sandboxes.values()].sort((l,c)=>l.handle.localeCompare(c.handle)),t=IY(i.sandboxes),f=i.selectedHandle!==null&&t.includes(i.selectedHandle)?i.selectedHandle:t[0]??null;return oHt((l,c)=>{let E=Xru(l,c,i.pendingConfirm!==null);if(E!==null)kru(E)}),v_(H1,{flexDirection:"column",children:[xf(r1i,{version:M1i.version}),xf(H1,{marginBottom:1,children:xf(El,{dimColor:!0,children:"\u2500".repeat(80)})}),xf(H1,{children:i.cluster==="linked"?v_(El,{color:"green",children:["\u2713 Connected to ",i.clusterUrl??"deco"]}):i.cluster==="connecting"?v_(El,{color:"yellow",children:["\u25CC Connecting to ",i.clusterUrl??"deco","\u2026"]}):v_(El,{color:"red",children:["\u2717 Disconnected from ",i.clusterUrl??"deco"]})}),xf(H1,{children:i.ingressUrl?v_(El,{color:"green",children:["\u2713 Serving at ",i.ingressUrl]}):xf(El,{dimColor:!0,children:"\u25CC Starting local server\u2026"})}),xf(H1,{marginBottom:1,children:xf(El,{dimColor:!0,children:`${"Computer".padEnd(16)}${i.machine??"this computer"} \xB7 ${u.length} of ${i.cap} previews`})}),u.length===0?xf(El,{dimColor:!0,children:"No previews running yet."}):v_(H1,{flexDirection:"column",children:[v_(H1,{children:[xf(H1,{width:2,flexShrink:0}),xf(H1,{width:AY.project,flexShrink:0,marginRight:1,children:xf(El,{dimColor:!0,wrap:"truncate-end",children:"PROJECT"})}),xf(H1,{width:AY.branch,flexShrink:0,marginRight:1,children:xf(El,{dimColor:!0,wrap:"truncate-end",children:"BRANCH"})}),xf(H1,{width:AY.status,flexShrink:0,marginRight:1,children:xf(El,{dimColor:!0,wrap:"truncate-end",children:"STATUS"})}),xf(H1,{flexGrow:1,children:xf(El,{dimColor:!0,wrap:"truncate-end",children:"PREVIEW URL"})})]}),u.map((l)=>{let c=pHt(l,i.removingHandles.has(l.handle)),E=l.handle===f;return v_(H1,{children:[xf(H1,{width:2,flexShrink:0,children:xf(El,{color:"cyan",children:E?"\u203A":" "})}),xf(H1,{width:AY.project,flexShrink:0,marginRight:1,children:xf(El,{bold:E,wrap:"truncate-end",children:l.projectName??l.handle})}),xf(H1,{width:AY.branch,flexShrink:0,marginRight:1,children:xf(El,{bold:E,wrap:"truncate-end",children:l.branch??"\u2014"})}),xf(H1,{width:AY.status,flexShrink:0,marginRight:1,children:xf(El,{color:c.color,bold:E,wrap:"truncate-end",children:c.text})}),xf(H1,{flexGrow:1,children:xf(El,{dimColor:!0,wrap:"truncate-end",children:l.previewUrl??"\u2014"})})]},l.handle)})]}),i.daemonError?xf(H1,{marginTop:1,children:v_(El,{color:"red",children:["\u26A0 ",i.daemonError]})}):null,i.logPath?xf(H1,{marginTop:1,children:v_(El,{dimColor:!0,children:["Logs: ",i.logPath]})}):null,i.pendingConfirm?xf(H1,{marginTop:1,children:xf(El,{color:"yellow",children:Uru(i.pendingConfirm)})}):null,i.actionError?xf(H1,{marginTop:1,children:v_(El,{color:"red",children:["\u2717 ",i.actionError]})}):null,xf(H1,{marginTop:1,children:xf(El,{dimColor:!0,children:"\u2191\u2193 move \xB7 s stop \xB7 d delete \xB7 o open \xB7 q quit"})})]})}var AY;var Jru=N(()=>{jHi();XHi();jru();BM();AY={project:18,branch:22,status:14}});var Sru={};Li(Sru,{runLinkCommand:()=>wbt});import{closeSync as ubt,mkdirSync as tbt,openSync as fbt,writeSync as lbt}from"fs";import{homedir as cbt}from"os";import{join as WHi}from"path";function Ebt(i,u){let t={log:console.log,warn:console.warn,error:console.error},f=(l)=>{if(u===void 0)return;try{lbt(u,`${kHi(l)}
81268
81268
  `)}catch{}};return console.log=(...l)=>f(l),console.warn=(...l)=>f(l),console.error=(...l)=>{f(l),i(kHi(l))},()=>{console.log=t.log,console.warn=t.warn,console.error=t.error}}async function $bt(i,u){let t;try{t=await fetch(`${i}/api/links/me`,{headers:{authorization:`Bearer ${u}`},signal:AbortSignal.timeout(1e4)})}catch{return}if(t.status===401||t.status===403)throw Error(`Authentication rejected by ${i} \u2014 the session token was not accepted. `+`Run \`deco auth login --target ${i}\` and try again.`)}async function wbt(i={}){let u=i.port??5174,t=i.dataDir??process.env.DATA_DIR??process.env.DECOCMS_HOME??WHi(cbt(),"deco"),f=i.clusterBaseUrl??process.env.MESH_CLUSTER_URL??"https://studio.decocms.com",l,c,E,$=()=>{if(E===void 0)return;try{E.close()}catch{}finally{E=void 0}};try{let w=WHi(t,"sandboxes");E=C1i({path:R1i(t),managedSandboxRoot:w});let d=await Q4i({dataDir:t,intent:"Link",target:f});if(process.env.DECOCMS_LINK_MANAGED!=="1")await $bt(f,d.accessToken);let _=E.reconcile();if(i.prune){let g=E.prune({missing:!0,merged:!0});if(!i.tui)console.log(`Pruned local sandboxes: removed ${g.removed.length}, skipped ${g.skipped.length}.`);_=E.reconcile()}let v;if(i.tui){let{render:g}=await import("ink"),{createElement:O}=await import("react"),{LinkApp:Z}=await Promise.resolve().then(() => (Jru(),Kru)),{pushSandboxEvent:B,setCluster:y,setClusterUrl:F,setDaemonError:T,setIngress:U,setLogPath:I,setMachine:j,setPersistedSandboxes:A}=await Promise.resolve().then(() => (BM(),YHi));tbt(t,{recursive:!0});let G=WHi(t,"link.log");c=fbt(G,"w"),I(G),A(_),F(f),y("connecting"),v={onEvent:(M)=>B(M),onIngress:(M)=>U(M,`http://127.0.0.1:${M}`),onCluster:(M)=>y(M),onMachine:(M)=>j(M)},l=Ebt(T,c),g(O(Z),{patchConsole:!1})}else if(i.banner!==!1){let{printBanner:g}=await Promise.resolve().then(() => (xY(),NM));g(i.version??"0.0.0")}$();let h=process.env.DECOCMS_LINK_MANAGED!=="1",D=await Zru({port:u,clusterBaseUrl:f,dataDir:t,session:d,monitor:v,logFd:c,perSandboxLogs:h,hotReload:i.hotReload});if(i.tui){let{setLinkActions:g}=await Promise.resolve().then(() => (BM(),YHi));g({stopSandbox:D.stopSandbox,removeSandbox:D.removeSandbox,inspectSandbox:D.inspectSandbox,quit:D.stop})}return await D.stopped}catch(w){return l?.(),console.error(w instanceof Error?w.message:String(w)),1}finally{if(l?.(),c!==void 0)try{ubt(c)}catch{}$()}}var Yru=N(()=>{$Qi();Bru();GHi()});var RHi={};Li(RHi,{resolveDevLinkClusterUrl:()=>hbt,populateDevLinkToxiProxy:()=>bru,isDevLinkToxiProxyEnabled:()=>vbt,ensureDevLinkToxiProxy:()=>Zbt,buildDevLinkToxiProxyConfig:()=>zru,DEV_LINK_TOXIPROXY_SERVICE_NAME:()=>Lru,DEV_LINK_TOXIPROXY_PROXY_NAME:()=>Qru});function vbt(i=process.env){return i.DECO_DEV_LINK_TOXIPROXY==="1"}function LHi(i,u){if(!Number.isInteger(i)||i<1||i>65535)throw Error(`${u} must be an integer port in 1..65535`);return i}function zru(i){let u=new URL(i.serverUrl);if(u.protocol!=="http:")throw Error("DECO_DEV_LINK_TOXIPROXY only supports http local Studio URLs");let t=LHi(i.apiPort,"apiPort"),f=LHi(i.listenPort,"listenPort");if(u.port.length===0)throw Error("serverUrl must include an explicit valid port");let l=LHi(Number.parseInt(u.port,10),"upstreamPort"),c=`http://127.0.0.1:${l}`,E=`http://127.0.0.1:${f}`;return{serviceName:Lru,proxyName:Qru,apiUrl:`http://127.0.0.1:${t}`,listen:`0.0.0.0:${f}`,upstream:`host.docker.internal:${l}`,publicTargetUrl:c,clusterUrl:E,logLine:`[dev-link-toxiproxy] ready: ${E} -> ${c}`}}function hbt(i){return i.toxiproxy?.clusterUrl??i.serverUrl}async function QHi(i,u,t){if(i.ok)return;let f=await i.text();throw Error(`ToxiProxy ${u} failed for ${t}: status=${i.status} statusText=${i.statusText} body=${f}`)}function bHi(i){if(i instanceof Error)return i.name==="Error"?i.message:`${i.name}: ${i.message}`;return String(i)}function Hru(i){if(!(i instanceof Error))return!1;if(i.name==="TimeoutError")return!0;return Hru(i.cause)}async function zHi(i,u,t,f){try{return await i(t,f)}catch(l){throw Error(`ToxiProxy ${u} failed for ${t}: ${bHi(l)}`,{cause:l})}}async function bru(i,u=fetch){let t=`${i.apiUrl}/reset`,f=await zHi(u,"reset",t,{method:"POST"});await QHi(f,"reset",t);let l=`${i.apiUrl}/populate`,c=await zHi(u,"populate",l,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify([{name:i.proxyName,listen:i.listen,upstream:i.upstream,enabled:!0}])});await QHi(c,"populate",l)}async function Dbt(i,u){let t=`${i.apiUrl}/version`;try{await u6(async()=>{let f=await zHi(u,"readiness check",t,{method:"GET",signal:AbortSignal.timeout(_bt)});await QHi(f,"readiness check",t)},{maxAttempts:dbt,minTimeout:Wru,maxTimeout:Wru,multiplier:1,jitter:0,isRetriable:(f)=>!Hru(f)})}catch(f){let l=f instanceof K6?f.cause:f;throw Error(`ToxiProxy API did not become ready at ${t}: ${bHi(l)}`,{cause:l})}}async function gbt(i){if(i===null)return"";return await new Response(i).text()}async function HHi(i,u={}){let t=["docker",...i].join(" "),f=(()=>{try{return Bun.spawn(["docker",...i],{stdout:"ignore",stderr:"pipe"})}catch($){throw Error(`Docker command failed to start (${t}): ${bHi($)}`,{cause:$})}})(),[l,c]=await Promise.all([f.exited,gbt(f.stderr)]);if(l===0||u.ignoreFailure===!0)return;let E=c.trim().length>0?`: ${c.trim()}`:"";throw Error(`Docker command failed (${t}) with exit ${l}${E}`)}async function Nbt(i,u){let t=`deco-dev-link-toxiproxy-${i}`;await HHi(["rm","-f",t],{ignoreFailure:!0}),await HHi(["run","--rm","-d","--name",t,"-p",`127.0.0.1:${i}:8474`,"-p",`127.0.0.1:${u}:${u}`,"ghcr.io/shopify/toxiproxy:2.12.0","-host=0.0.0.0"])}async function Obt(i,u){let t=`deco-dev-link-toxiproxy-${i}`;await HHi(["rm","-f",t],{ignoreFailure:!0})}async function Zbt(i){let u=zru(i),t=i.startDaemon??Nbt,f=i.stopDaemon??(i.startDaemon===void 0?Obt:void 0);await t(i.apiPort,i.listenPort);let l=i.fetchImpl??fetch;try{await Dbt(u,l),await bru(u,l)}catch(c){if(f!==void 0)try{await f(i.apiPort,i.listenPort)}catch{}throw c}return{config:u,stop:async()=>{if(f!==void 0)await f(i.apiPort,i.listenPort)}}}var Lru="ToxiProxy",Qru="dev_link_studio",dbt=20,Wru=100,_bt=100;var CHi=N(()=>{il()});var Rru={};Li(Rru,{migrateBetterAuth:()=>MHi});import{getMigrations as Bbt}from"better-auth/db";import{sso as ybt}from"@better-auth/sso";import{organization as Fbt}from"@decocms/better-auth/plugins";import{admin as Tbt,apiKey as Ubt,jwt as Pbt,magicLink as xbt,mcp as Ibt,openAPI as Abt}from"better-auth/plugins";import{emailOTP as nbt}from"better-auth/plugins/email-otp";async function MHi(i){let t={database:jC(i||b2()),plugins:[Fbt({dynamicAccessControl:{enabled:!0,enableCustomResources:!0}}),Tbt(),Ubt(),Pbt(),Abt(),Ibt({loginPage:"/login"}),ybt(),xbt({sendMagicLink:async()=>{}}),nbt({sendVerificationOTP:async()=>{}})]},{toBeAdded:f,toBeCreated:l,runMigrations:c}=await Bbt(t);if(!f.length&&!l.length)return"up to date";return await c(),`${l.length+f.length} table(s) migrated`}var qHi=N(()=>{QE()});var VHi={};Li(VHi,{up:()=>Gbt,down:()=>kbt});import{sql as a5}from"kysely";async function Gbt(i){await i.schema.createTable("connections").addColumn("id","text",(u)=>u.primaryKey()).addColumn("organizationId","text",(u)=>u.notNull().references("organization.id").onDelete("cascade")).addColumn("createdById","text",(u)=>u.notNull().references("user.id").onDelete("cascade")).addColumn("name","text",(u)=>u.notNull()).addColumn("description","text").addColumn("icon","text").addColumn("appName","text").addColumn("appId","text").addColumn("connectionType","text",(u)=>u.notNull()).addColumn("connectionUrl","text",(u)=>u.notNull()).addColumn("connectionToken","text").addColumn("connectionHeaders","text").addColumn("oauthConfig","text").addColumn("metadata","text").addColumn("tools","text").addColumn("bindings","text").addColumn("status","text",(u)=>u.notNull().defaultTo("active")).addColumn("createdAt","text",(u)=>u.notNull().defaultTo(a5`CURRENT_TIMESTAMP`)).addColumn("updatedAt","text",(u)=>u.notNull().defaultTo(a5`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("api_keys").addColumn("id","text",(u)=>u.primaryKey()).addColumn("userId","text",(u)=>u.notNull().references("user.id").onDelete("cascade")).addColumn("name","text",(u)=>u.notNull()).addColumn("hashedKey","text",(u)=>u.notNull().unique()).addColumn("permissions","text",(u)=>u.notNull()).addColumn("expiresAt","text").addColumn("remaining","integer").addColumn("metadata","text").addColumn("createdAt","text",(u)=>u.notNull().defaultTo(a5`CURRENT_TIMESTAMP`)).addColumn("updatedAt","text",(u)=>u.notNull().defaultTo(a5`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("audit_logs").addColumn("id","text",(u)=>u.primaryKey()).addColumn("organizationId","text").addColumn("userId","text",(u)=>u.references("user.id").onDelete("set null")).addColumn("connectionId","text",(u)=>u.references("connections.id").onDelete("set null")).addColumn("toolName","text",(u)=>u.notNull()).addColumn("allowed","integer",(u)=>u.notNull()).addColumn("duration","integer").addColumn("timestamp","text",(u)=>u.notNull().defaultTo(a5`CURRENT_TIMESTAMP`)).addColumn("requestMetadata","text").execute(),await i.schema.createTable("oauth_clients").addColumn("id","text",(u)=>u.primaryKey()).addColumn("clientId","text",(u)=>u.notNull().unique()).addColumn("clientSecret","text").addColumn("clientName","text",(u)=>u.notNull()).addColumn("redirectUris","text",(u)=>u.notNull()).addColumn("grantTypes","text",(u)=>u.notNull()).addColumn("scope","text").addColumn("clientUri","text").addColumn("logoUri","text").addColumn("createdAt","text",(u)=>u.notNull().defaultTo(a5`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("oauth_authorization_codes").addColumn("code","text",(u)=>u.primaryKey()).addColumn("clientId","text",(u)=>u.notNull().references("oauth_clients.clientId").onDelete("cascade")).addColumn("userId","text",(u)=>u.notNull().references("user.id").onDelete("cascade")).addColumn("redirectUri","text",(u)=>u.notNull()).addColumn("scope","text").addColumn("codeChallenge","text").addColumn("codeChallengeMethod","text").addColumn("expiresAt","text",(u)=>u.notNull()).addColumn("createdAt","text",(u)=>u.notNull().defaultTo(a5`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("oauth_refresh_tokens").addColumn("token","text",(u)=>u.primaryKey()).addColumn("clientId","text",(u)=>u.notNull().references("oauth_clients.clientId").onDelete("cascade")).addColumn("userId","text",(u)=>u.notNull().references("user.id").onDelete("cascade")).addColumn("scope","text").addColumn("expiresAt","text").addColumn("createdAt","text",(u)=>u.notNull().defaultTo(a5`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("downstream_tokens").addColumn("id","text",(u)=>u.primaryKey()).addColumn("connectionId","text",(u)=>u.notNull().references("connections.id").onDelete("cascade")).addColumn("userId","text",(u)=>u.references("user.id").onDelete("cascade")).addColumn("accessToken","text",(u)=>u.notNull()).addColumn("refreshToken","text").addColumn("scope","text").addColumn("expiresAt","text").addColumn("createdAt","text",(u)=>u.notNull().defaultTo(a5`CURRENT_TIMESTAMP`)).addColumn("updatedAt","text",(u)=>u.notNull().defaultTo(a5`CURRENT_TIMESTAMP`)).execute(),await i.schema.createIndex("idx_connections_organizationId").on("connections").column("organizationId").execute(),await i.schema.createIndex("idx_audit_logs_organizationId").on("audit_logs").column("organizationId").execute(),await i.schema.createIndex("idx_audit_logs_userId").on("audit_logs").column("userId").execute(),await i.schema.createIndex("idx_audit_logs_timestamp").on("audit_logs").column("timestamp").execute()}async function kbt(i){await i.schema.dropTable("downstream_tokens").execute(),await i.schema.dropTable("oauth_refresh_tokens").execute(),await i.schema.dropTable("oauth_authorization_codes").execute(),await i.schema.dropTable("oauth_clients").execute(),await i.schema.dropTable("audit_logs").execute(),await i.schema.dropTable("api_keys").execute(),await i.schema.dropTable("connections").execute()}var Cru=()=>{};var rHi={};Li(rHi,{up:()=>jbt,down:()=>Xbt});import{sql as Mru}from"kysely";async function jbt(i){await i.schema.createTable("organization_settings").addColumn("organizationId","text",(u)=>u.primaryKey().references("organization.id").onDelete("cascade")).addColumn("modelsBindingConnectionId","text",(u)=>u.references("connections.id").onDelete("set null")).addColumn("createdAt","text",(u)=>u.notNull().defaultTo(Mru`CURRENT_TIMESTAMP`)).addColumn("updatedAt","text",(u)=>u.notNull().defaultTo(Mru`CURRENT_TIMESTAMP`)).execute()}async function Xbt(i){await i.schema.dropTable("organization_settings").execute()}var qru=()=>{};var mHi={};Li(mHi,{up:()=>Kbt,down:()=>Jbt});async function Kbt(i){await i.schema.alterTable("connections").renameColumn("name","title").execute(),await i.schema.alterTable("connections").renameColumn("createdById","created_by").execute(),await i.schema.alterTable("connections").renameColumn("createdAt","created_at").execute(),await i.schema.alterTable("connections").renameColumn("updatedAt","updated_at").execute(),await i.schema.alterTable("connections").renameColumn("organizationId","organization_id").execute(),await i.schema.alterTable("connections").renameColumn("connectionType","connection_type").execute(),await i.schema.alterTable("connections").renameColumn("connectionUrl","connection_url").execute(),await i.schema.alterTable("connections").renameColumn("connectionToken","connection_token").execute(),await i.schema.alterTable("connections").renameColumn("connectionHeaders","connection_headers").execute(),await i.schema.alterTable("connections").renameColumn("oauthConfig","oauth_config").execute(),await i.schema.alterTable("connections").renameColumn("appName","app_name").execute(),await i.schema.alterTable("connections").renameColumn("appId","app_id").execute()}async function Jbt(i){await i.schema.alterTable("connections").renameColumn("title","name").execute(),await i.schema.alterTable("connections").renameColumn("created_by","createdById").execute(),await i.schema.alterTable("connections").renameColumn("created_at","createdAt").execute(),await i.schema.alterTable("connections").renameColumn("updated_at","updatedAt").execute(),await i.schema.alterTable("connections").renameColumn("organization_id","organizationId").execute(),await i.schema.alterTable("connections").renameColumn("connection_type","connectionType").execute(),await i.schema.alterTable("connections").renameColumn("connection_url","connectionUrl").execute(),await i.schema.alterTable("connections").renameColumn("connection_token","connectionToken").execute(),await i.schema.alterTable("connections").renameColumn("connection_headers","connectionHeaders").execute(),await i.schema.alterTable("connections").renameColumn("oauth_config","oauthConfig").execute(),await i.schema.alterTable("connections").renameColumn("app_name","appName").execute(),await i.schema.alterTable("connections").renameColumn("app_id","appId").execute()}var eHi={};Li(eHi,{up:()=>Sbt,down:()=>Ybt});async function Sbt(i){await i.schema.createTable("organization_settings_new").addColumn("organizationId","text",(u)=>u.primaryKey().references("organization.id").onDelete("cascade")).addColumn("createdAt","text",(u)=>u.notNull()).addColumn("updatedAt","text",(u)=>u.notNull()).execute(),await i.insertInto("organization_settings_new").columns(["organizationId","createdAt","updatedAt"]).expression((u)=>u.selectFrom("organization_settings").select(["organizationId","createdAt","updatedAt"])).execute(),await i.schema.dropTable("organization_settings").execute(),await i.schema.alterTable("organization_settings_new").renameTo("organization_settings").execute()}async function Ybt(i){await i.schema.createTable("organization_settings_new").addColumn("organizationId","text",(u)=>u.primaryKey().references("organization.id").onDelete("cascade")).addColumn("modelsBindingConnectionId","text",(u)=>u.references("connections.id").onDelete("set null")).addColumn("createdAt","text",(u)=>u.notNull()).addColumn("updatedAt","text",(u)=>u.notNull()).execute(),await i.insertInto("organization_settings_new").columns(["organizationId","modelsBindingConnectionId","createdAt","updatedAt"]).expression((u)=>u.selectFrom("organization_settings").select(["organizationId",u.val(null).as("modelsBindingConnectionId"),"createdAt","updatedAt"])).execute(),await i.schema.dropTable("organization_settings").execute(),await i.schema.alterTable("organization_settings_new").renameTo("organization_settings").execute()}var aHi={};Li(aHi,{up:()=>Wbt,down:()=>Lbt});async function Wbt(i){await i.schema.alterTable("connections").addColumn("configuration_state","text").execute(),await i.schema.alterTable("connections").addColumn("configuration_scopes","text").execute()}async function Lbt(i){await i.schema.alterTable("connections").dropColumn("configuration_state").execute(),await i.schema.alterTable("connections").dropColumn("configuration_scopes").execute()}var oHi={};Li(oHi,{up:()=>zbt,down:()=>Hbt});import{sql as Qbt}from"kysely";async function zbt(i){await i.schema.alterTable("organization_settings").addColumn("sidebar_items",Qbt`text`).execute()}async function Hbt(i){await i.schema.alterTable("organization_settings").dropColumn("sidebar_items").execute()}var Vru=()=>{};var sHi={};Li(sHi,{up:()=>bbt,down:()=>Rbt});async function bbt(i){await i.schema.createTable("monitoring_logs").addColumn("id","text",(u)=>u.primaryKey()).addColumn("organization_id","text",(u)=>u.notNull().references("organization.id").onDelete("cascade")).addColumn("connection_id","text",(u)=>u.notNull().references("connections.id").onDelete("cascade")).addColumn("connection_title","text",(u)=>u.notNull()).addColumn("tool_name","text",(u)=>u.notNull()).addColumn("input","text",(u)=>u.notNull()).addColumn("output","text",(u)=>u.notNull()).addColumn("is_error","integer",(u)=>u.notNull()).addColumn("error_message","text").addColumn("duration_ms","integer",(u)=>u.notNull()).addColumn("timestamp","text",(u)=>u.notNull()).addColumn("user_id","text").addColumn("request_id","text",(u)=>u.notNull()).execute(),await i.schema.createIndex("monitoring_logs_org_timestamp").on("monitoring_logs").columns(["organization_id","timestamp"]).execute(),await i.schema.createIndex("monitoring_logs_connection_timestamp").on("monitoring_logs").columns(["connection_id","timestamp"]).execute(),await i.schema.createIndex("monitoring_logs_is_error").on("monitoring_logs").columns(["organization_id","is_error","timestamp"]).execute()}async function Rbt(i){await i.schema.dropIndex("monitoring_logs_is_error").execute(),await i.schema.dropIndex("monitoring_logs_connection_timestamp").execute(),await i.schema.dropIndex("monitoring_logs_org_timestamp").execute(),await i.schema.dropTable("monitoring_logs").execute()}var pHi={};Li(pHi,{up:()=>Cbt,down:()=>Mbt});import{sql as yM}from"kysely";async function Cbt(i){await i.schema.createTable("events").addColumn("id","text",(u)=>u.primaryKey()).addColumn("organization_id","text",(u)=>u.notNull().references("organization.id").onDelete("cascade")).addColumn("type","text",(u)=>u.notNull()).addColumn("source","text",(u)=>u.notNull()).addColumn("specversion","text",(u)=>u.notNull().defaultTo("1.0")).addColumn("subject","text").addColumn("time","text",(u)=>u.notNull()).addColumn("datacontenttype","text",(u)=>u.notNull().defaultTo("application/json")).addColumn("dataschema","text").addColumn("data","text").addColumn("cron","varchar(255)").addColumn("status","text",(u)=>u.notNull().defaultTo("pending")).addColumn("attempts","integer",(u)=>u.notNull().defaultTo(0)).addColumn("last_error","text").addColumn("next_retry_at","text").addColumn("created_at","text",(u)=>u.notNull().defaultTo(yM`CURRENT_TIMESTAMP`)).addColumn("updated_at","text",(u)=>u.notNull().defaultTo(yM`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("event_subscriptions").addColumn("id","text",(u)=>u.primaryKey()).addColumn("organization_id","text",(u)=>u.notNull().references("organization.id").onDelete("cascade")).addColumn("connection_id","text",(u)=>u.notNull().references("connections.id").onDelete("cascade")).addColumn("publisher","text").addColumn("event_type","text",(u)=>u.notNull()).addColumn("filter","text").addColumn("enabled","integer",(u)=>u.notNull().defaultTo(1)).addColumn("created_at","text",(u)=>u.notNull().defaultTo(yM`CURRENT_TIMESTAMP`)).addColumn("updated_at","text",(u)=>u.notNull().defaultTo(yM`CURRENT_TIMESTAMP`)).execute(),await i.schema.createTable("event_deliveries").addColumn("id","text",(u)=>u.primaryKey()).addColumn("event_id","text",(u)=>u.notNull()).addColumn("subscription_id","text",(u)=>u.notNull().references("event_subscriptions.id").onDelete("cascade")).addColumn("status","text",(u)=>u.notNull().defaultTo("pending")).addColumn("attempts","integer",(u)=>u.notNull().defaultTo(0)).addColumn("last_error","text").addColumn("delivered_at","text").addColumn("next_retry_at","text").addColumn("created_at","text",(u)=>u.notNull().defaultTo(yM`CURRENT_TIMESTAMP`)).execute(),await i.schema.createIndex("idx_events_org_status").on("events").columns(["organization_id","status"]).execute(),await i.schema.createIndex("idx_events_source").on("events").columns(["source"]).execute(),await i.schema.createIndex("idx_events_type").on("events").columns(["type"]).execute(),await i.schema.createIndex("idx_events_retry").on("events").columns(["status","next_retry_at"]).execute(),await i.schema.createIndex("idx_subscriptions_connection").on("event_subscriptions").columns(["connection_id"]).execute(),await i.schema.createIndex("idx_subscriptions_type").on("event_subscriptions").columns(["event_type"]).execute(),await i.schema.createIndex("idx_subscriptions_org_enabled").on("event_subscriptions").columns(["organization_id","enabled"]).execute(),await i.schema.createIndex("idx_subscriptions_unique").on("event_subscriptions").columns(["connection_id","event_type","publisher","filter"]).unique().execute(),await i.schema.createIndex("idx_deliveries_event").on("event_deliveries").columns(["event_id"]).execute(),await i.schema.createIndex("idx_deliveries_subscription_status").on("event_deliveries").columns(["subscription_id","status"]).execute(),await i.schema.createIndex("idx_deliveries_retry").on("event_deliveries").columns(["status","next_retry_at"]).execute()}async function Mbt(i){await i.schema.dropIndex("idx_deliveries_retry").execute(),await i.schema.dropIndex("idx_deliveries_subscription_status").execute(),await i.schema.dropIndex("idx_deliveries_event").execute(),await i.schema.dropIndex("idx_subscriptions_unique").execute(),await i.schema.dropIndex("idx_subscriptions_org_enabled").execute(),await i.schema.dropIndex("idx_subscriptions_type").execute(),await i.schema.dropIndex("idx_subscriptions_connection").execute(),await i.schema.dropIndex("idx_events_retry").execute(),await i.schema.dropIndex("idx_events_type").execute(),await i.schema.dropIndex("idx_events_source").execute(),await i.schema.dropIndex("idx_events_org_status").execute(),await i.schema.dropTable("event_deliveries").execute(),await i.schema.dropTable("event_subscriptions").execute(),await i.schema.dropTable("events").execute()}var rru=()=>{};var ibi={};Li(ibi,{up:()=>Vbt,down:()=>rbt});import{sql as qbt}from"kysely";async function Vbt(i){await i.schema.dropTable("audit_logs").ifExists().execute()}async function rbt(i){await i.schema.createTable("audit_logs").ifNotExists().addColumn("id","text",(u)=>u.primaryKey()).addColumn("organizationId","text").addColumn("userId","text",(u)=>u.references("user.id").onDelete("set null")).addColumn("connectionId","text",(u)=>u.references("connections.id").onDelete("set null")).addColumn("toolName","text",(u)=>u.notNull()).addColumn("allowed","integer",(u)=>u.notNull()).addColumn("duration","integer").addColumn("timestamp","text",(u)=>u.notNull().defaultTo(qbt`CURRENT_TIMESTAMP`)).addColumn("requestMetadata","text").execute(),await i.schema.createIndex("idx_audit_logs_organizationId").on("audit_logs").column("organizationId").execute(),await i.schema.createIndex("idx_audit_logs_userId").on("audit_logs").column("userId").execute(),await i.schema.createIndex("idx_audit_logs_timestamp").on("audit_logs").column("timestamp").execute()}var mru=()=>{};var ubi={};Li(ubi,{up:()=>mbt,down:()=>ebt});import{sql as o1i}from"kysely";async function mbt(i){await i.schema.createTable("gateways").addColumn("id","text",(u)=>u.primaryKey()).addColumn("organization_id","text",(u)=>u.notNull().references("organization.id").onDelete("cascade")).addColumn("title","text",(u)=>u.notNull()).addColumn("description","text").addColumn("tool_selection_strategy","text").addColumn("status","text",(u)=>u.notNull().defaultTo("active")).addColumn("is_default","integer",(u)=>u.notNull().defaultTo(0)).addColumn("created_at","text",(u)=>u.notNull().defaultTo(o1i`CURRENT_TIMESTAMP`)).addColumn("updated_at","text",(u)=>u.notNull().defaultTo(o1i`CURRENT_TIMESTAMP`)).addColumn("created_by","text",(u)=>u.notNull().references("user.id").onDelete("cascade")).addColumn("updated_by","text").execute(),await i.schema.createTable("gateway_connections").addColumn("id","text",(u)=>u.primaryKey()).addColumn("gateway_id","text",(u)=>u.notNull().references("gateways.id").onDelete("cascade")).addColumn("connection_id","text",(u)=>u.notNull().references("connections.id").onDelete("cascade")).addColumn("selected_tools","text").addColumn("created_at","text",(u)=>u.notNull().defaultTo(o1i`CURRENT_TIMESTAMP`)).execute(),await i.schema.createIndex("idx_gateways_org").on("gateways").columns(["organization_id"]).execute(),await i.schema.createIndex("idx_gateways_org_status").on("gateways").columns(["organization_id","status"]).execute(),await o1i`CREATE UNIQUE INDEX idx_gateways_default_per_org ON gateways (organization_id) WHERE is_default = 1`.execute(i),await i.schema.createIndex("idx_gateway_connections_gateway").on("gateway_connections").columns(["gateway_id"]).execute(),await i.schema.createIndex("idx_gateway_connections_connection").on("gateway_connections").columns(["connection_id"]).execute(),await i.schema.createIndex("idx_gateway_connections_unique").on("gateway_connections").columns(["gateway_id","connection_id"]).unique().execute()}async function ebt(i){await i.schema.dropIndex("idx_gateway_connections_unique").execute(),await i.schema.dropIndex("idx_gateway_connections_connection").execute(),await i.schema.dropIndex("idx_gateway_connections_gateway").execute(),await i.schema.dropIndex("idx_gateways_default_per_org").execute(),await i.schema.dropIndex("idx_gateways_org_status").execute(),await i.schema.dropIndex("idx_gateways_org").execute(),await i.schema.dropTable("gateway_connections").execute(),await i.schema.dropTable("gateways").execute()}var eru=()=>{};var tbi={};Li(tbi,{up:()=>abt,down:()=>obt});async function abt(i){await i.schema.alterTable("gateways").addColumn("icon","text").execute()}async function obt(i){await i.schema.alterTable("gateways").dropColumn("icon").execute()}var fbi={};Li(fbi,{up:()=>sbt,down:()=>pbt});import{sql as s1i}from"kysely";async function sbt(i){await i.schema.alterTable("gateways").addColumn("tool_selection_mode","text",(u)=>u.notNull().defaultTo("inclusion")).execute(),await s1i`
81269
81269
  UPDATE gateways
81270
81270
  SET tool_selection_mode = CASE
@@ -83244,7 +83244,7 @@ conversation.
83244
83244
  </skills-usage>`;var D90=()=>{};function uTf(i){let u={};for(let t of i.split(`
83245
83245
  `)){let f=t.match(/^([A-Za-z][\w-]*):\s*(.*)$/);if(f?.[1]&&f[2]!==void 0)u[f[1].toLowerCase()]=f[2].trim()}return u}function g90(i){for(let u of i.split(/\n\s*\n/)){let t=u.trim();if(!t||t.startsWith("#"))continue;return t.replace(/\n/g," ")}return null}function N90(i){let u=i.match(/^---\n([\s\S]*?)\n---\n?/);if(!u||u[1]===void 0)return{name:null,description:g90(i),body:i};let t=uTf(u[1]),f=i.slice(u[0].length);return{name:t.name||null,description:t.description||g90(f),body:f}}function lTf(i){let u=i.lastIndexOf("/");return u===-1?i:i.slice(u+1)}async function $uu(i,u,t,f){try{let l=(await i.listDir(u,t)).filter(($)=>$.kind==="dir");if(l.length===0)return[];let c=await i.filesExist(u,l.map(($)=>`${$.path}/SKILL.md`)),E=[];for(let $ of l){if(f.remaining<=0)break;if(!c.has(`${$.path}/SKILL.md`))continue;f.remaining-=1;try{let w=await i.read(u,`${$.path}/SKILL.md`),d=N90(new TextDecoder().decode(w));E.push({dirPath:$.path,name:d.name??lTf($.path),description:d.description})}catch{}}return E}catch(l){return console.warn(`[skill-catalog] scan failed (${u}:${t||"/"})`,l),[]}}async function cTf(i,u){if(U3i&&U3i.expires>Date.now())return U3i.entries;let t=WM(i),f=[];for(let{set:l}of r3()){let c=d7(l),E=await $uu(t,c,"",u);for(let $ of E)f.push({id:`${l}/${$.dirPath}`,name:$.name,description:$.description,source:`public:${l}`,sandboxPath:OB(c,$.dirPath),volume:c,path:$.dirPath})}if(f.length>0)U3i={entries:f,expires:Date.now()+fTf};return f}function ETf(i,u){let t=zE(),f=t?Yw(t,u):new fv(u,i.baseUrl);return new cv(f,i.storage.orgFsEntries,u)}async function $Tf(i,u,t){let f=ETf(i,u),[l,c]=await Promise.all([$uu(f,T3i,"",t),$uu(f,T3i,"skills",t)]);return[...l,...c].map((E)=>({id:`home/${E.dirPath}`,name:E.name,description:E.description,source:"home",sandboxPath:OB(T3i,E.dirPath),volume:T3i,path:E.dirPath}))}async function P3i(i,u){let t={remaining:tTf},[f,l]=await Promise.all([cTf(i,t),$Tf(i,u,t)]);return[...f,...l].sort((c,E)=>c.source.localeCompare(E.source)||c.id.localeCompare(E.id))}var tTf=200,fTf=300000,T3i="home",U3i=null;var wuu=N(()=>{KM();M2();YY();QQ();WY()});async function O90(i,u){let t=i.organization?.id;if(!t)return null;try{let f=await P3i(i,t);if(f.length===0)return null;let l=new Set((u.metadata?.knowledge??[]).filter((E)=>E.kind==="skill").map((E)=>OB(E.volume,E.path))),c=f.filter((E)=>l.has(E.sandboxPath)).map((E)=>E.id);return h90(f.map((E)=>({id:E.id,description:E.description,source:E.source})),c)}catch(f){return console.warn("[skill-catalog] failed to render skills block",f),null}}var Z90=N(()=>{D90();wuu();QQ()});import{SpanStatusCode as B90}from"@opentelemetry/api";function wTf(i,u){if(i.connection_type!=="VIRTUAL")return!1;if(!u||hv(u))return!1;return i.id===u}async function y90(i,u,t=!1){let f=i.id,l=await u.storage.virtualMcps.findById(f);if(!l)throw Error(`Virtual MCP not found: ${f}`);return f8(l,u,"passthrough",t)}async function f8(i,u,t,f=!1,l){let c=i.connections.map((_)=>_.connection_id),$=(await u.tracer.startActiveSpan("studio.virtual_mcp.load_connections",{attributes:{"virtual_mcp.id":i.id??"decopilot","virtual_mcp.connection_count":c.length}},async(_)=>{try{let v=await Promise.all(c.map((h)=>u.storage.connections.findById(h)));return _.setStatus({code:B90.OK}),v}catch(v){throw _.setStatus({code:B90.ERROR,message:v.message}),_.recordException(v),v}finally{_.end()}})).filter((_)=>_!==null&&_.status==="active"&&!wTf(_,i.id));if(l?.additionalConnections?.length)$.unshift(...l.additionalConnections);let w=l?.includeSkillsCatalog?await O90(u,i)??void 0:void 0,d={connections:$,virtualMcp:i,superUser:f,mcpListCache:Il()??void 0,listTimeoutMs:l?.listTimeoutMs,skillsBlock:w};return new Euu(d,u)}var zQ=N(()=>{wf();mw();_90();Z90()});var R70={};Li(R70,{clientFromConnection:()=>Pc});async function Pc(i,u,t=!1){if(i.connection_type==="VIRTUAL")return y90(i,u,t);return f90(i,u,t)}var ar=N(()=>{l90();zQ()});async function duu(i,u,t){let f=new AbortController,l,c=new Promise(($,w)=>{l=setTimeout(()=>{f.abort(),w(new F90(i.id,t))},t)}),E=(async()=>{let $=await Pc(i,u,!0);try{return(await $.listTools(void 0,{timeout:t,signal:f.signal})).tools}finally{await $.close().catch(()=>{})}})();E.catch(()=>{});try{return await Promise.race([E,c])}finally{if(l)clearTimeout(l)}}var F90;var T90=N(()=>{ar();F90=class F90 extends Error{constructor(i,u){super(`listTools timed out after ${u}ms for connection ${i}`);this.name="ListToolsTimeoutError"}}});function x3i(i){return(u)=>{if(u instanceof Xu&&u.code===zu.MethodNotFound)return i;throw u}}var U90=N(()=>{$l()});function I3i(i,u,t){let f=F9(i,u,t,Il()??void 0),l=XD(f,{name:"mcp-mesh-enhanced",version:"1.0.0"},{capabilities:dTf,toolCallTimeoutMs:XW});l.server.setRequestHandler(g7,async()=>{return await f.listResources().catch(x3i({resources:[]}))}),l.server.setRequestHandler(N7,async()=>{return await f.listResourceTemplates().catch(x3i({resourceTemplates:[]}))}),l.server.setRequestHandler(O7,async()=>{return await f.listPrompts().catch(x3i({prompts:[]}))});let c=l.close.bind(l);return l.close=async()=>{await c(),await f.close().catch(()=>{})},l}var dTf;var P90=N(()=>{wf();$l();er();mw();U90();dTf={tools:{},resources:{},prompts:{}}});var ZB=N(()=>{ar();T90();P90()});function Ke(i,u,t){if(u.some((f)=>f!=="*"&&f.startsWith("SELF::"))&&i.SELF===void 0)i.SELF={value:`${t}_self`}}function Je(i,u){let t=new Map;for(let f of u){if(f==="*")continue;let[l,c]=xEi(f);if(!_Tf.has(c))continue;let E=kV(l,i);if(typeof E!=="object"||E===null||!("value"in E))continue;let $=E.value;if(typeof $!=="string")continue;t.set(`${$}:${c}`,{targetConnectionId:$,scope:c})}return[...t.values()]}async function Se(i,u,t,f){for(let c of u){if(c==="*")continue;let[E]=xEi(c),$=kV(E,i);if($===void 0||$===null)throw Error(`Scope references key "${E}" but it's not present in state`)}let l=qE0(i,u);for(let c of l){if(c.endsWith("_self"))continue;let E=await f.storage.connections.findById(c);if(!E||E.organization_id!==t)throw Error(`Referenced connection not found: ${c}`);try{await f.access.check(c)}catch($){throw Error(`Access denied to referenced connection: ${c}. ${$.message}`)}}}var _Tf;var _uu=N(()=>{xei();nEi();_Tf=new Set([IEi,AEi])});import{z as x90}from"zod";var vTf,hTf,vuu;var I90=N(()=>{e4();wu();xt();mw();ZB();_uu();yV();Bv();vTf=x90.object({data:Aq.describe("Data for the new connection (id is auto-generated if not provided)")}),hTf=x90.object({item:Bc.describe("The created connection entity")}),vuu=li({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:vTf,outputSchema:hTf,handler:async(i,u)=>{Xi(u);let t=Bi(u);await u.access.check();let f=Vu(u);if(!f)throw Error("User ID required to create connection");let l={...i.data,organization_id:t.id,created_by:f};if(l.id){if((await u.storage.connections.findById(l.id))?.organization_id===t.id)throw Error("Connection already exists in organization")}if(l.connection_type==="VIRTUAL"){let v=mO(l.connection_url);if(!v)throw Error("VIRTUAL connection requires connection_url in format: virtual://$virtual_mcp_id");let h=await u.storage.virtualMcps.findById(v);if(!h)throw Error(`Virtual MCP not found: ${v}`);if(h.organization_id!==t.id)throw Error("Virtual MCP does not belong to the current organization");l.connection_url=eO(v)}if(l.connection_type==="STDIO"&&!Fu().localMode)throw Error("STDIO connections are only available in local mode (--local-mode).");let c=await H7({id:`pending-${Date.now()}`,title:l.title,connection_type:l.connection_type,connection_url:l.connection_url,connection_token:l.connection_token,connection_headers:l.connection_headers}).catch(()=>null),E=c?.tools?.length?c.tools:null,$=c?.scopes?.length?c.scopes:l.configuration_scopes??null,w=l.configuration_state??null;if(w&&$?.length)Ke(w,$,t.id),await Se(w,$,t.id,u);let d=await u.storage.connections.createNew({...l,tools:null,configuration_state:w,configuration_scopes:$}),_=w&&$?.length?Je(w,$):[];if(_.length>0){let v;try{await u.storage.connectionCredentialVault.replaceGrantsForSubject({organizationId:t.id,subjectConnectionId:d.id,createdBy:f,grants:_});let{plaintextToken:h,record:D}=await u.storage.connectionCredentialVault.createOrRotateWorkloadToken({organizationId:t.id,subjectConnectionId:d.id});v=D.id,await(await Pc(d,u,!1)).callTool({name:"ON_MCP_CONFIGURATION",arguments:{state:w,scopes:$,firstRun:!0,vault:{baseUrl:u.baseUrl,org:t.slug??t.id,subjectConnectionId:d.id,token:h}}})}catch(h){if(v)await u.storage.connectionCredentialVault.revokeWorkloadToken({organizationId:t.id,subjectConnectionId:d.id,tokenId:v});throw await u.storage.connections.delete(d.id),h}}if(E)Il()?.set("tools",d.id,E).catch(()=>{});return su.capture({distinctId:f,event:"connection_created",groups:{organization:t.id},properties:{connection_id:d.id,connection_type:d.connection_type,app_name:d.app_name??null,organization_id:t.id,tools_count:E?.length??0}}),{item:d}}})});import{z as Bd}from"zod/v4";import{z as A90}from"zod/v4";import{z as A3i}from"zod/v4";import{z as Cv}from"zod/v4";import{z as OTf}from"zod/v4";import{z as BB}from"zod/v4";import{z as Mv}from"zod/v4";import{z as r6}from"zod/v4";import{z as n90}from"zod/v4";import{z as k3i}from"zod/v4";import{z as zTf}from"zod/v4";import{z as G90}from"zod/v4";import{z as n3i}from"zod/v4";import{z as mTf}from"zod/v4";function Ye(i,u){if(i===u)return!0;if(i==null||u==null)return i===u;if(typeof i!==typeof u)return!1;if(Array.isArray(i)&&Array.isArray(u)){if(i.length!==u.length)return!1;return i.every((t,f)=>Ye(t,u[f]))}if(typeof i==="object"&&typeof u==="object"){let t=Object.keys(i),f=Object.keys(u);if(t.length!==f.length)return!1;return t.every((l)=>f.includes(l)&&Ye(i[l],u[l]))}return!1}function WTf(){return(i)=>{if(!Array.isArray(i))return!0;let u=[];return i.every((t)=>{if(u.some((l)=>Ye(t,l)))return!1;return u.push(t),!0})}}function G3i(i,u){return i.safeParse(u).success}function kc(i){if(typeof i==="boolean")return i?Bd.any():Bd.never();let u={};for(let l of sTf)l.apply(u,i);let t=[];if(u.string!==!1)t.push(u.string||Bd.string());if(u.number!==!1)t.push(u.number||Bd.number());if(u.boolean!==!1)t.push(u.boolean||Bd.boolean());if(u.null!==!1)t.push(u.null||Bd.null());if(u.array!==!1)t.push(u.array||Bd.array(Bd.any()));if(u.tuple!==!1&&u.tuple!==void 0)t.push(u.tuple);if(u.object!==!1)if(u.object)t.push(u.object);else{let l=Bd.custom((c)=>{return typeof c==="object"&&c!==null&&!Array.isArray(c)},"Must be an object, not an array");t.push(l)}if(u.file!==!1&&u.file!==void 0)t.push(u.file);let f;if(t.length===0)f=Bd.never();else if(t.length===1)f=t[0];else if(!Object.keys(i).some((c)=>c!=="$schema"&&c!=="title"&&c!=="description"))f=Bd.any();else f=Bd.union(t);for(let l of pTf)f=l.apply(f,i);return f}var DTf=class{apply(i,u){if(!u.type)return;let t=Array.isArray(u.type)?u.type:[u.type],f=new Set(t);if(!f.has("string"))i.string=!1;if(!f.has("number")&&!f.has("integer"))i.number=!1;if(!f.has("boolean"))i.boolean=!1;if(!f.has("null"))i.null=!1;if(!f.has("array"))i.array=!1;if(!f.has("object"))i.object=!1;if(f.has("integer")&&i.number!==!1){let l=i.number||A90.number();if(l instanceof A90.ZodNumber)i.number=l.int()}}},gTf=class{apply(i,u){if(u.const===void 0)return;let t=u.const;if(i.string=!1,i.number=!1,i.boolean=!1,i.null=!1,i.array=!1,i.object=!1,typeof t==="string")i.string=A3i.literal(t);else if(typeof t==="number")i.number=A3i.literal(t);else if(typeof t==="boolean")i.boolean=A3i.literal(t);else if(t===null)i.null=A3i.null();else if(Array.isArray(t))i.array=void 0;else if(typeof t==="object")i.object=void 0}},NTf=class{apply(i,u){if(!u.enum)return;if(u.enum.length===0){if(!u.type)i.string=!1,i.number=!1,i.boolean=!1,i.null=!1,i.array=!1,i.object=!1;return}let t={string:u.enum.filter((f)=>typeof f==="string"),number:u.enum.filter((f)=>typeof f==="number"),boolean:u.enum.filter((f)=>typeof f==="boolean"),null:u.enum.filter((f)=>f===null),array:u.enum.filter((f)=>Array.isArray(f)),object:u.enum.filter((f)=>typeof f==="object"&&f!==null&&!Array.isArray(f))};i.string=this.createTypeSchema(t.string,"string"),i.number=this.createTypeSchema(t.number,"number"),i.boolean=this.createTypeSchema(t.boolean,"boolean"),i.null=t.null.length>0?Cv.null():!1,i.array=t.array.length>0?void 0:!1,i.object=t.object.length>0?void 0:!1}createTypeSchema(i,u){if(i.length===0)return!1;if(i.length===1)return Cv.literal(i[0]);if(u==="string")return Cv.enum(i);if(u==="number"){let[t,f,...l]=i;return Cv.union([Cv.literal(t),Cv.literal(f),...l.map((c)=>Cv.literal(c))])}if(u==="boolean")return Cv.union([Cv.literal(!0),Cv.literal(!1)]);return!1}},ZTf=class{apply(i,u){let t=u;if(t.type==="string"&&t.format==="binary"&&t.contentEncoding==="binary"){let f=OTf.file();if(t.minLength!==void 0)f=f.min(t.minLength);if(t.maxLength!==void 0)f=f.max(t.maxLength);if(t.contentMediaType!==void 0)f=f.mime(t.contentMediaType);i.file=f,i.string=!1}}},BTf=class{apply(i,u){let t=u;if(u.type===void 0&&(t.minLength!==void 0||t.maxLength!==void 0||t.pattern!==void 0)){if(i.string===void 0)i.string=BB.string()}}},yTf=class{apply(i,u){let t=u;if(t.minLength===void 0)return;if(i.string!==!1){let f=i.string||BB.string();if(f instanceof BB.ZodString)i.string=f.refine((l)=>{return Array.from(l).length>=t.minLength},{message:`String must be at least ${t.minLength} characters long`})}}},FTf=class{apply(i,u){let t=u;if(t.maxLength===void 0)return;if(i.string!==!1){let f=i.string||BB.string();if(f instanceof BB.ZodString)i.string=f.refine((l)=>{return Array.from(l).length<=t.maxLength},{message:`String must be at most ${t.maxLength} characters long`})}}},TTf=class{apply(i,u){let t=u;if(!t.pattern)return;if(i.string!==!1){let f=i.string||BB.string();if(f instanceof BB.ZodString){let l=new RegExp(t.pattern);i.string=f.regex(l)}}}},UTf=class{apply(i,u){let t=u;if(t.minimum===void 0)return;if(i.number!==!1){let f=i.number||Mv.number();if(f instanceof Mv.ZodNumber)i.number=f.min(t.minimum)}}},PTf=class{apply(i,u){let t=u;if(t.maximum===void 0)return;if(i.number!==!1){let f=i.number||Mv.number();if(f instanceof Mv.ZodNumber)i.number=f.max(t.maximum)}}},xTf=class{apply(i,u){let t=u;if(t.exclusiveMinimum===void 0)return;if(i.number!==!1){let f=i.number||Mv.number();if(f instanceof Mv.ZodNumber)if(typeof t.exclusiveMinimum==="number")i.number=f.gt(t.exclusiveMinimum);else i.number=!1}}},ITf=class{apply(i,u){let t=u;if(t.exclusiveMaximum===void 0)return;if(i.number!==!1){let f=i.number||Mv.number();if(f instanceof Mv.ZodNumber)if(typeof t.exclusiveMaximum==="number")i.number=f.lt(t.exclusiveMaximum);else i.number=!1}}},ATf=class{apply(i,u){let t=u;if(t.multipleOf===void 0)return;if(i.number!==!1){let f=i.number||Mv.number();if(f instanceof Mv.ZodNumber)i.number=f.refine((l)=>{if(t.multipleOf===0)return!1;let c=l/t.multipleOf,E=Math.round(c),$=Math.min(Math.abs(l)*Number.EPSILON*10,Math.abs(t.multipleOf)*Number.EPSILON*10);return Math.abs(c-E)<=$/Math.abs(t.multipleOf)},{message:`Must be a multiple of ${t.multipleOf}`})}}},nTf=class{apply(i,u){let t=u;if(u.type===void 0&&(t.minItems!==void 0||t.maxItems!==void 0||t.items!==void 0||t.prefixItems!==void 0)){if(i.array===void 0)i.array=r6.array(r6.any())}}},GTf=class{apply(i,u){let t=u;if(t.minItems===void 0)return;if(i.array!==!1)i.array=(i.array||r6.array(r6.any())).min(t.minItems)}},kTf=class{apply(i,u){let t=u;if(t.maxItems===void 0)return;if(i.array!==!1)i.array=(i.array||r6.array(r6.any())).max(t.maxItems)}},jTf=class{apply(i,u){let t=u;if(i.array===!1)return;if(Array.isArray(t.items))i.array=i.array||r6.array(r6.any());else if(t.items&&typeof t.items!=="boolean"&&!t.prefixItems){let f=kc(t.items),l=r6.array(f);if(i.array&&i.array instanceof r6.ZodArray){let c=i.array._def;if(c.checks)c.checks.forEach((E)=>{if(E._zod&&E._zod.def){let $=E._zod.def;if($.check==="min_length"&&$.minimum!==void 0)l=l.min($.minimum);else if($.check==="max_length"&&$.maximum!==void 0)l=l.max($.maximum)}})}i.array=l}else if(typeof t.items==="boolean"&&t.items===!1)if(!t.prefixItems)i.array=r6.array(r6.any()).max(0);else i.array=i.array||r6.array(r6.any());else if(typeof t.items==="boolean"&&t.items===!0)i.array=i.array||r6.array(r6.any());else if(t.prefixItems)i.array=i.array||r6.array(r6.any())}},XTf=class{apply(i,u){if(u.type!=="array")return;let t=u;if(!Array.isArray(t.items))return;if(i.array===!1)return;let f=t.items.map((c)=>kc(c)),l;if(f.length===0)l=n90.tuple([]);else l=n90.tuple(f);if(t.minItems!==void 0&&t.minItems>f.length)l=!1;if(t.maxItems!==void 0&&t.maxItems<f.length)l=!1;i.tuple=l,i.array=!1}},KTf=class{apply(i,u){let t=u;if(i.object===!1)return;if(t.properties||t.required||t.additionalProperties!==void 0)i.object=i.object||k3i.object({}).passthrough()}},JTf=class{apply(i,u){let t=u;if(u.type===void 0&&(t.maxProperties!==void 0||t.minProperties!==void 0)){if(i.object===void 0)i.object=k3i.object({}).passthrough()}}},STf=class{apply(i,u){let t=u;if(t.maxProperties===void 0)return;if(i.object!==!1){let f=i.object||k3i.object({}).passthrough();i.object=f.refine((l)=>Object.keys(l).length<=t.maxProperties,{message:`Object must have at most ${t.maxProperties} properties`})}}},YTf=class{apply(i,u){let t=u;if(t.minProperties===void 0)return;if(i.object!==!1){let f=i.object||k3i.object({}).passthrough();i.object=f.refine((l)=>Object.keys(l).length>=t.minProperties,{message:`Object must have at least ${t.minProperties} properties`})}}},LTf=class{apply(i,u){if(!u.not)return i;let t=kc(u.not);return i.refine((f)=>!G3i(t,f),{message:"Value must not match the 'not' schema"})}},QTf=class{apply(i,u){if(u.uniqueItems!==!0)return i;return i.refine(WTf(),{message:"Array items must be unique"})}},HTf=class{apply(i,u){if(!u.allOf||u.allOf.length===0)return i;return u.allOf.map((f)=>kc(f)).reduce((f,l)=>zTf.intersection(f,l),i)}},bTf=class{apply(i,u){if(!u.anyOf||u.anyOf.length===0)return i;let t=u.anyOf.length===1?kc(u.anyOf[0]):G90.union([kc(u.anyOf[0]),kc(u.anyOf[1]),...u.anyOf.slice(2).map((f)=>kc(f))]);return G90.intersection(i,t)}},RTf=class{apply(i,u){if(!u.oneOf||u.oneOf.length===0)return i;let t=u.oneOf.map((f)=>kc(f));return i.refine((f)=>{let l=0;for(let c of t)if(c.safeParse(f).success){if(l++,l>1)return!1}return l===1},{message:"Value must match exactly one of the oneOf schemas"})}},CTf=class{apply(i,u){let t=u;if(t.prefixItems&&Array.isArray(t.prefixItems)){let l=t.prefixItems.map((c)=>kc(c));return i.refine((c)=>{if(!Array.isArray(c))return!0;for(let E=0;E<Math.min(c.length,l.length);E++)if(!G3i(l[E],c[E]))return!1;if(c.length>l.length){if(typeof t.items==="boolean"&&t.items===!1)return!1;else if(t.items&&typeof t.items==="object"&&!Array.isArray(t.items)){let E=kc(t.items);for(let $=l.length;$<c.length;$++)if(!G3i(E,c[$]))return!1}}return!0},{message:"Array does not match prefixItems schema"})}return i}},MTf=class{apply(i,u){let t=u;if(!t.properties&&!t.required&&t.additionalProperties!==!1)return i;if(i instanceof n3i.ZodObject||i instanceof n3i.ZodRecord){let f={};if(t.properties){for(let[l,c]of Object.entries(t.properties))if(c!==void 0)f[l]=kc(c)}if(t.required&&Array.isArray(t.required)){let l=new Set(t.required);for(let c of Object.keys(f))if(!l.has(c))f[c]=f[c].optional()}else for(let l of Object.keys(f))f[l]=f[l].optional();if(t.additionalProperties===!1)return n3i.object(f);else return n3i.object(f).passthrough()}return i.refine((f)=>{if(typeof f!=="object"||f===null||Array.isArray(f))return!0;if(t.properties){for(let[l,c]of Object.entries(t.properties))if(c!==void 0){if(Object.getOwnPropertyDescriptor(f,l)!==void 0){if(!kc(c).safeParse(f[l]).success)return!1}}}if(t.required&&Array.isArray(t.required)){for(let l of t.required)if(Object.getOwnPropertyDescriptor(f,l)===void 0)return!1}if(t.additionalProperties===!1&&t.properties){let l=new Set(Object.keys(t.properties));for(let c in f)if(!l.has(c))return!1}return!0},{message:"Object constraints validation failed"})}},qTf=class{apply(i,u){if(!u.enum||u.enum.length===0)return i;let t=u.enum.filter((f)=>Array.isArray(f)||typeof f==="object"&&f!==null);if(t.length===0)return i;return i.refine((f)=>{if(typeof f!=="object"||f===null)return!0;return t.some((l)=>Ye(f,l))},{message:"Value must match one of the enum values"})}},VTf=class{apply(i,u){if(u.const===void 0)return i;let t=u.const;if(typeof t!=="object"||t===null)return i;return i.refine((f)=>Ye(f,t),{message:"Value must equal the const value"})}},rTf=class{apply(i,u){if(u.description)i=i.describe(u.description);return i}},eTf=class{apply(i,u){var t;let f=u;if(!((t=f.required)==null?void 0:t.includes("__proto__"))||u.type!==void 0)return i;return mTf.any().refine((l)=>this.validateRequired(l,f.required),{message:"Missing required properties"})}validateRequired(i,u){if(typeof i!=="object"||i===null||Array.isArray(i))return!0;return u.every((t)=>Object.prototype.hasOwnProperty.call(i,t))}},aTf=class{apply(i,u){var t;let f=u;if(f.contains===void 0)return i;let l=kc(f.contains),c=(t=f.minContains)!=null?t:1,E=f.maxContains;return i.refine(($)=>{if(!Array.isArray($))return!0;let w=0;for(let d of $)if(G3i(l,d))w++;if(w<c)return!1;if(E!==void 0&&w>E)return!1;return!0},{message:"Array must contain required items matching the schema"})}},oTf=class{apply(i,u){let{default:t}=u;if(t===void 0)return i;if(!i.safeParse(t).success)return i;return i.default(t)}},sTf,pTf;var k90=N(()=>{sTf=[new gTf,new NTf,new DTf,new ZTf,new BTf,new nTf,new JTf,new yTf,new FTf,new TTf,new UTf,new PTf,new xTf,new ITf,new ATf,new XTf,new GTf,new kTf,new jTf,new STf,new YTf,new KTf],pTf=[new eTf,new qTf,new VTf,new HTf,new bTf,new RTf,new CTf,new MTf,new aTf,new LTf,new QTf,new oTf,new rTf]});class huu{constructor(i){this._url=i}start(){if(this._socket)throw Error("WebSocketClientTransport already started! If using Client class, note that connect() calls start() automatically.");return new Promise((i,u)=>{this._socket=new WebSocket(this._url,iUf),this._socket.onerror=(t)=>{let f="error"in t?t.error:Error(`WebSocket error: ${JSON.stringify(t)}`);u(f),this.onerror?.(f)},this._socket.onopen=()=>{i()},this._socket.onclose=()=>{this.onclose?.()},this._socket.onmessage=(t)=>{let f;try{f=Cw.parse(JSON.parse(t.data))}catch(l){this.onerror?.(l);return}this.onmessage?.(f)}})}async close(){this._socket?.close()}send(i){return new Promise((u,t)=>{if(!this._socket){t(Error("Not connected"));return}this._socket?.send(JSON.stringify(i)),u()})}}var iUf="mcp";var j90=N(()=>{$l()});function uUf(i){let u=i;if(!u||typeof u!=="object"||!("method"in u))return null;switch(u.method){case"initialize":{let t=u?.params?.protocolVersion;if(!t)return null;return{type:"emit",message:{result:{protocolVersion:t,capabilities:{tools:{}},serverInfo:{name:"deco-chat-server",version:"1.0.0"}},jsonrpc:u.jsonrpc??"2.0",id:u.id}}}case"notifications/roots/list_changed":case"notifications/initialized":case"notifications/cancelled":case"notifications/progress":return{type:"suppress"};default:return null}}var j3i;var Duu=N(()=>{rO();j3i=class j3i extends k_{constructor(i,u){super(i,u)}send(i,u){let t=uUf(i);if(t?.type==="emit")return this.onmessage?.(t.message),Promise.resolve();if(t?.type==="suppress")return Promise.resolve();return super.send(i,u)}}});var X90,K90=async(i,u,t)=>{let f=tUf(i.connection,u,t);if(!f)throw Error("Unknown MCP connection type");let l=new X90({name:i?.name??"MCP Client",version:"1.0.0"});return await l.connect(f),{client:l}},tUf=(i,u,t)=>{if(i.type==="Websocket")return new huu(new URL(i.url));if(i.type!=="SSE"&&i.type!=="HTTP")return null;let l={...i.token?{authorization:`Bearer ${i.token}`}:{},...t??{},..."headers"in i?i.headers||{}:{}};if(i.type==="SSE"){let c={requestInit:{headers:l,signal:u}};if(i.token)c.eventSourceInit={fetch:(E,$)=>{return fetch(E,{...$,headers:{...l,Accept:"text/event-stream"},signal:u})}};return new zD(new URL(i.url),c)}return new j3i(new URL(i.url),{requestInit:{headers:l,signal:u,credentials:"include"}})};var J90=N(()=>{G_();ZV();j90();$l();mE();Duu();X90=class X90 extends Pl{constructor(i,u){super(i,{jsonSchemaValidator:k1,...u})}async listTools(i,u){return await this.request({method:"tools/list",params:i},rM,u)}}});function W90(i){let u=(t)=>{if("connection"in i)return K90({connection:i.connection},void 0,t);return i.client};return new Proxy({},{get(t,f){if(f==="toJSON")return null;if(typeof f!=="string")throw Error("Name must be a string");if(f==="listTools")return $;async function l(w,d=f){let _=i?.debugId?.(),v=_?{"x-trace-debug-id":_}:void 0,{client:h}=await u(v),{structuredContent:D,isError:g,content:O}=await h.callTool({name:String(d),arguments:w});if(g){let B=O?.[0]?.text,y=typeof B==="string"?S90(B):null,F=y?.code&&typeof i?.getErrorByStatusCode==="function"?i.getErrorByStatusCode(y.code,y.message,y.traceId):null;if(F)throw F;throw Error(`Tool ${String(d)} returned an error: ${JSON.stringify(D??O)}`)}if(D!==void 0)return D;let Z=O?.[0]?.text;return typeof Z==="string"?S90(Z):void 0}async function c(){let{client:w}=await u(),{tools:d}=await w.listTools();return d}async function E(){if(!("connection"in i))return c();let w=i.connection,d=JSON.stringify(w);try{if(!X3i.has(d))X3i.set(d,c());return await X3i.get(d)}catch(_){console.error("Failed to list tools",_),X3i.delete(d);return}}async function $(){return(await E()??[]).map((d)=>Y90(d,l))}return l.asTool=async()=>{let d=(await E()??[]).find((_)=>_.name===f);if(!d)throw Error(`Tool ${f} not found`);return Y90(d,l)},l}})}var S90=(i)=>{try{return JSON.parse(i)}catch{return i}},X3i,Y90=(i,u)=>{return{...i,id:i.name,inputSchema:i.inputSchema?kc(i.inputSchema):void 0,outputSchema:i.outputSchema?kc(i.outputSchema):void 0,execute:(t)=>{return u(t.context,i.name)}}};var L90=N(()=>{k90();J90();X3i=new Map});function yB(i){return W90(i)}var HQ;var guu=N(()=>{L90();HQ=new Proxy({},{get(i,u){if(u==="toJSON")return null;if(u==="forConnection")return(t)=>yB({connection:t});return global[u]}})});function K3i(i){return{isImplementedBy:(u)=>{for(let t of i){let f=typeof t.name==="string"?new RegExp(`^${t.name}$`):t.name,l=u.find((c)=>f.test(c.name));if(!l&&t.opt)continue;if(!l)return!1}return!0}}}var qv=(i)=>{return{...K3i(i),forClient:(u)=>{return yB({client:u})},forConnection:(u)=>{return yB({connection:u})}}};var FB=N(()=>{guu()});import{z as Tt}from"zod";function l8(i){return Tt.object({items:Tt.array(i).describe("Array of collection items"),totalCount:Tt.number().int().min(0).optional().describe("Total number of matching items (if available)"),hasMore:Tt.boolean().optional().describe("Whether there are more items available")})}function Le(i){return Tt.object({item:i.nullable().describe("The retrieved item, or null if not found")})}function cUf(i){return Tt.object({data:i.partial().describe("Data for the new entity (id may be auto-generated)")})}function EUf(i){return Tt.object({item:i.describe("The created entity with generated id")})}function $Uf(i){return Tt.object({id:Tt.string().describe("ID of the entity to update"),data:i.partial().describe("Partial entity data to update")})}function wUf(i){return Tt.object({item:i.describe("The updated entity")})}function ze(i){return Tt.object({item:i.describe("The deleted entity")})}function RQ(i,u,t){let f=i.toUpperCase(),l=t?.readOnly??!1,c=[{name:`COLLECTION_${f}_LIST`,inputSchema:t5,outputSchema:l8(u)},{name:`COLLECTION_${f}_GET`,inputSchema:We,outputSchema:Le(u)}];if(!l)c.push({name:`COLLECTION_${f}_CREATE`,inputSchema:cUf(u),outputSchema:EUf(u),opt:!0},{name:`COLLECTION_${f}_UPDATE`,inputSchema:$Uf(u),outputSchema:wUf(u),opt:!0},{name:`COLLECTION_${f}_DELETE`,inputSchema:Qe,outputSchema:ze(u),opt:!0});return c}var bQ,fUf,Q90,lUf,t5,We,Qe;var $3=N(()=>{bQ=Tt.object({id:Tt.string().describe("Unique identifier for the entity"),title:Tt.string().describe("Human-readable title for the entity"),description:Tt.string().nullish().describe("Description of the entity"),created_at:Tt.string().datetime(),updated_at:Tt.string().datetime(),created_by:Tt.string().optional(),updated_by:Tt.string().optional()}),fUf=Tt.object({field:Tt.array(Tt.string()),operator:Tt.enum(["eq","gt","gte","lt","lte","in","like","contains"]),value:Tt.unknown()}),Q90=Tt.lazy(()=>Tt.union([fUf,Tt.object({operator:Tt.enum(["and","or","not"]),conditions:Tt.array(Q90)})])),lUf=Tt.object({field:Tt.array(Tt.string()),direction:Tt.enum(["asc","desc"]),nulls:Tt.enum(["first","last"]).optional()}),t5=Tt.object({where:Q90.optional().describe("Filter expression"),orderBy:Tt.array(lUf).optional().describe("Sort expressions"),limit:Tt.number().int().min(1).max(1000).optional().describe("Maximum number of items to return"),offset:Tt.number().int().min(0).optional().describe("Number of items to skip")});We=Tt.object({id:Tt.string().describe("ID of the entity to retrieve")});Qe=Tt.object({id:Tt.string().describe("ID of the entity to delete")})});import{z as J0}from"zod";var dUf,z90,jb1;var H90=N(()=>{$3();dUf=J0.object({id:J0.string(),name:J0.string(),description:J0.string().optional(),inputSchema:J0.record(J0.string(),J0.unknown()),outputSchema:J0.record(J0.string(),J0.unknown()).optional()}),z90=bQ.extend({_meta:J0.object({"io.decocms":J0.object({id:J0.string(),verified:J0.boolean(),scopeName:J0.string(),appName:J0.string(),friendlyName:J0.string().nullable().optional(),metadata:J0.record(J0.string(),J0.unknown()).nullable().optional(),publishedAt:J0.string().datetime().optional(),updatedAt:J0.string().datetime().optional(),tools:J0.array(dUf).nullable().optional().describe("Available tools exposed by this app")}).optional()}).optional(),server:J0.object({$schema:J0.string().optional(),_meta:J0.record(J0.string(),J0.unknown()).optional(),name:J0.string().describe("The server name (scope/app)"),title:J0.string().optional().describe("User-friendly title"),description:J0.string().optional().describe("Server description"),icons:J0.array(J0.object({src:J0.string(),mimeType:J0.string().optional(),sizes:J0.array(J0.string()).optional(),theme:J0.enum(["light","dark"]).optional()})).optional(),remotes:J0.array(J0.object({type:J0.enum(["http","stdio","sse"]),url:J0.string().optional(),headers:J0.array(J0.unknown()).optional()})).optional(),packages:J0.array(J0.unknown()).optional(),repository:J0.object({url:J0.string(),source:J0.string().optional(),subfolder:J0.string().optional()}).optional(),version:J0.string().optional(),websiteUrl:J0.string().optional()})}),jb1=RQ("registry_app",z90,{readOnly:!0})});import{z as V1}from"zod";var b90,J3i,R90,S3i,C90,_Uf;var M90=N(()=>{FB();b90=V1.object({specversion:V1.literal("1.0").describe("CloudEvents specification version"),id:V1.string().describe("Unique identifier for this event (UUID recommended)"),source:V1.string().describe("Connection ID of the event publisher"),type:V1.string().describe("Event type (e.g., 'order.created', 'user.signup')"),time:V1.string().datetime().optional().describe("Timestamp of when the event occurred (ISO 8601)"),subject:V1.string().optional().describe("Subject/resource identifier (e.g., order ID, user ID)"),datacontenttype:V1.string().optional().default("application/json").describe("Content type of the data attribute"),dataschema:V1.string().url().optional().describe("URI to the schema for the data attribute"),data:V1.unknown().optional().describe("Event payload (any JSON value)")}),J3i=V1.object({events:V1.array(b90).min(1).describe("Batch of CloudEvents to process")}),R90=V1.object({success:V1.boolean().optional().describe("Whether this event was processed successfully"),error:V1.string().optional().describe("Error message for this event"),retryAfter:V1.number().int().positive().optional().describe("Re-deliver this event after this many ms")}),S3i=V1.object({success:V1.boolean().optional().describe("Batch success - applies to events not in results"),error:V1.string().optional().describe("Batch error message - applies to events not in results"),processedCount:V1.number().int().min(0).optional().describe("Number of events successfully processed"),retryAfter:V1.number().int().positive().optional().describe("Batch retryAfter - applies to events not in results"),results:V1.record(V1.string(),R90).optional().describe("Per-event results keyed by event ID")}),C90=[{name:"ON_EVENTS",inputSchema:J3i,outputSchema:S3i}],_Uf=qv(C90)});import{z as r1}from"zod";var q90,V90,r90,m90,e90,a90,Y3i,Nuu;var Ouu=N(()=>{FB();q90=r1.object({type:r1.literal("string"),enum:r1.array(r1.string()).optional(),description:r1.string().optional()}),V90=r1.object({type:r1.string(),description:r1.string(),paramsSchema:r1.record(r1.string(),q90)}),r90=r1.object({}),m90=r1.object({triggers:r1.array(V90)}),e90=r1.object({type:r1.string(),params:r1.record(r1.string(),r1.string()),enabled:r1.boolean(),callbackUrl:r1.url().optional(),callbackToken:r1.string().min(1).optional()}),a90=r1.object({success:r1.boolean()}),Y3i=[{name:"TRIGGER_LIST",inputSchema:r90,outputSchema:m90},{name:"TRIGGER_CONFIGURE",inputSchema:e90,outputSchema:a90}],Nuu=qv(Y3i)});import{z as G4}from"zod";var o90,s90,p90,He,W3i,L3i,Q3i,z3i,vUf;var Zuu=N(()=>{FB();o90=G4.object({primary:G4.string().optional().describe("Primary brand color (hex)"),secondary:G4.string().optional().describe("Secondary brand color (hex)"),accent:G4.string().optional().describe("Accent / highlight color (hex)"),background:G4.string().optional().describe("Background color (hex)"),foreground:G4.string().optional().describe("Foreground / text color (hex)")}),s90=G4.object({heading:G4.string().optional().describe("Font family for headings"),body:G4.string().optional().describe("Font family for body text"),code:G4.string().optional().describe("Font family for code / monospace")}),p90=G4.object({logo:G4.string().optional().describe("Logo URL"),favicon:G4.string().optional().describe("Favicon URL"),ogImage:G4.string().optional().describe("Open Graph image URL")}),He=G4.object({id:G4.string(),name:G4.string().describe("Brand / company name"),domain:G4.string().optional().describe("Company domain (e.g. example.com)"),colors:o90.optional().describe("Semantic color palette"),fonts:s90.optional().describe("Font families by role"),assets:p90.optional().describe("Visual identity assets"),overview:G4.string().optional().describe("Company overview / description"),tagline:G4.string().optional().describe("Brand tagline"),tone:G4.string().optional().describe("Tone of voice description"),metadata:G4.record(G4.string(),G4.unknown()).optional().describe("Extra design tokens and metadata")}),W3i=G4.object({id:G4.string().optional().describe("Brand ID. Omit to get the default brand.")}),L3i=G4.object({}),Q3i=G4.object({items:G4.array(He)}),z3i=[{name:"BRAND_GET",inputSchema:W3i,outputSchema:He},{name:"BRAND_LIST",inputSchema:L3i,outputSchema:Q3i,opt:!0}],vUf=qv(z3i)});var Buu=N(()=>{FB();H90();M90();Ouu();zM();Zuu()});import{z as CQ}from"zod";var hUf,DUf,ig0;var ug0=N(()=>{$3();hUf=bQ.extend({avatar:CQ.string().describe("URL or data URI to the assistant's avatar image"),system_prompt:CQ.string().describe("System prompt that defines the assistant's behavior"),virtual_mcp_id:CQ.string().describe("Virtual MCP ID to use for this assistant"),model:CQ.object({id:CQ.string().describe("Model ID"),connectionId:CQ.string().describe("Connection ID that provides the model")}).describe("Selected model reference for this assistant")}),DUf=RQ("assistant",hUf),ig0=[...DUf]});import{z as xi}from"zod";var be,c8,fg0,gUf,NUf,lg0,OUf,ZUf,BUf,yUf,FUf,TUf,cg0,UUf,PUf,xUf,IUf,AUf,nUf,GUf,kUf,jUf,XUf,tR1,KUf,fR1,tg0,JUf,SUf,H3i,lR1;var Eg0=N(()=>{FB();$3();be=xi.lazy(()=>xi.union([xi.null(),xi.string(),xi.number(),xi.boolean(),xi.record(xi.string(),be),xi.array(be)])),c8=xi.record(xi.string(),xi.record(xi.string(),be)).optional().describe("Additional provider-specific options. Outer record keyed by provider name, inner by option key"),fg0=xi.object({type:xi.literal("text"),text:xi.string().describe("The text content"),providerOptions:c8}),gUf=xi.object({type:xi.literal("text"),text:xi.string().describe("The text content"),providerMetadata:xi.any().optional().describe("Additional provider-specific metadata")}),NUf=xi.string().describe("File data as URL string"),lg0=xi.object({type:xi.literal("file"),filename:xi.string().optional().describe("Optional filename of the file"),data:NUf,mediaType:xi.string().describe("IANA media type of the file (e.g., image/png, audio/mp3)"),providerOptions:c8}),OUf=xi.object({type:xi.literal("file"),mediaType:xi.string().describe("IANA media type of the file (e.g., image/png, audio/mp3)"),data:xi.string().describe("Generated file data as base64 encoded string")}),ZUf=xi.object({type:xi.literal("reasoning"),text:xi.string().describe("The reasoning text"),providerOptions:c8}),BUf=xi.object({type:xi.literal("reasoning"),text:xi.string().describe("The reasoning text"),providerMetadata:xi.any().optional().describe("Additional provider-specific metadata")}),yUf=xi.object({type:xi.literal("tool-call"),toolCallId:xi.string().describe("ID of the tool call, used to match with tool result"),toolName:xi.string().describe("Name of the tool being called"),input:xi.string().describe("Arguments of the tool call (JSON-serializable object matching tool input schema)"),providerExecuted:xi.boolean().optional().describe("Whether the tool call will be executed by the provider"),providerOptions:c8}),FUf=xi.object({type:xi.literal("tool-call"),toolCallId:xi.string().describe("ID of the tool call"),toolName:xi.string().describe("Name of the tool being called"),input:xi.string().describe("Stringified JSON object with the tool call arguments"),providerExecuted:xi.boolean().optional().describe("Whether the tool call will be executed by the provider"),providerMetadata:xi.any().optional().describe("Additional provider-specific metadata")}),TUf=xi.union([xi.object({type:xi.literal("text"),value:xi.string()}),xi.object({type:xi.literal("json"),value:be}),xi.object({type:xi.literal("error-text"),value:xi.string()}),xi.object({type:xi.literal("error-json"),value:be}),xi.object({type:xi.literal("content"),value:xi.array(xi.union([xi.object({type:xi.literal("text"),text:xi.string().describe("Text content")}),xi.object({type:xi.literal("media"),data:xi.string().describe("Base-64 encoded media data"),mediaType:xi.string().describe("IANA media type")})]))}),xi.object({type:xi.literal("execution-denied"),reason:xi.string().optional()}),xi.string().describe("Raw or JSON-serialized output (e.g. from AI SDK mapToolResultOutput)")]),cg0=xi.object({type:xi.literal("tool-result"),toolCallId:xi.string().describe("ID of the tool call that this result is associated with"),toolName:xi.string().describe("Name of the tool that generated this result"),output:TUf.describe("Result of the tool call"),result:xi.unknown().describe("Unknown result of the tool call"),providerOptions:c8}),UUf=xi.object({type:xi.literal("tool-result"),toolCallId:xi.string().describe("ID of the tool call that this result is associated with"),toolName:xi.string().describe("Name of the tool that generated this result"),result:xi.any().describe("Result of the tool call (JSON-serializable)"),isError:xi.boolean().optional().describe("Whether the result is an error or error message"),providerExecuted:xi.boolean().optional().describe("Whether the tool result was generated by the provider"),providerMetadata:xi.any().optional().describe("Additional provider-specific metadata")}),PUf=xi.union([xi.object({type:xi.literal("source"),sourceType:xi.literal("url"),id:xi.string().describe("The ID of the source"),url:xi.string().describe("The URL of the source"),title:xi.string().optional().describe("The title of the source"),providerMetadata:xi.any().optional().describe("Additional provider-specific metadata")}),xi.object({type:xi.literal("source"),sourceType:xi.literal("document"),id:xi.string().describe("The ID of the source"),mediaType:xi.string().describe("IANA media type of the document (e.g., application/pdf)"),title:xi.string().describe("The title of the document"),filename:xi.string().optional().describe("Optional filename of the document"),providerMetadata:xi.any().optional().describe("Additional provider-specific metadata")})]),xUf=xi.object({role:xi.literal("system"),content:xi.string().describe("System message content"),providerOptions:c8}),IUf=xi.object({role:xi.literal("user"),content:xi.array(xi.union([fg0,lg0])).describe("User message content parts (text or file)"),providerOptions:c8}),AUf=xi.object({role:xi.literal("assistant"),content:xi.array(xi.union([fg0,lg0,ZUf,yUf,cg0])).describe("Assistant message content parts (text, file, reasoning, tool-call, or tool-result)"),providerOptions:c8}),nUf=xi.object({role:xi.literal("tool"),content:xi.array(cg0).describe("Tool message content (tool results)"),providerOptions:c8}),GUf=xi.union([xUf,IUf,AUf,nUf]),kUf=xi.array(GUf).describe("A list of messages forming the prompt"),jUf=xi.object({prompt:kUf.describe("A language model prompt is a standardized prompt type (array of messages with roles: system, user, assistant, tool)"),maxOutputTokens:xi.number().optional().describe("Maximum number of tokens to generate"),temperature:xi.number().optional().describe("Temperature setting. The range depends on the provider and model"),topP:xi.number().optional().describe("Nucleus sampling parameter"),topK:xi.number().optional().describe("Only sample from the top K options for each subsequent token. Used to remove long tail low probability responses"),presencePenalty:xi.number().optional().describe("Presence penalty setting. It affects the likelihood of the model to repeat information that is already in the prompt"),frequencyPenalty:xi.number().optional().describe("Frequency penalty setting. It affects the likelihood of the model to repeatedly use the same words or phrases"),seed:xi.number().optional().describe("The seed (integer) to use for random sampling. If set and supported by the model, calls will generate deterministic results"),stopSequences:xi.array(xi.string()).optional().describe("Stop sequences. If set, the model will stop generating text when one of the stop sequences is generated"),responseFormat:xi.union([xi.object({type:xi.literal("text")}),xi.object({type:xi.literal("json"),schema:xi.any().optional().describe("JSON schema that the generated output should conform to"),name:xi.string().optional().describe("Name of output that should be generated"),description:xi.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:xi.array(xi.any()).optional().describe("The tools that are available for the model"),toolChoice:xi.any().optional().describe("Specifies how the tool should be selected. Defaults to 'auto'"),includeRawChunks:xi.boolean().optional().describe("Include raw chunks in the stream. Only applicable for streaming calls"),abortSignal:xi.any().optional().describe("Abort signal for cancelling the operation"),providerOptions:xi.any().optional().describe("Additional provider-specific options")}),XUf=xi.object({content:xi.array(xi.union([gUf,OUf,BUf,FUf,UUf,PUf])).describe("Ordered content that the model has generated (text, tool-calls, reasoning, files, sources)"),finishReason:xi.enum(["stop","length","content-filter","tool-calls","error","other","unknown"]).describe("Reason why generation stopped"),usage:xi.looseObject({inputTokens:xi.number().optional(),outputTokens:xi.number().optional(),totalTokens:xi.number().optional(),reasoningTokens:xi.number().optional()}).describe("Usage information for the language model call"),providerMetadata:xi.any().optional().describe("Additional provider-specific metadata"),request:xi.object({body:xi.any().optional().describe("Request HTTP body sent to the provider API")}).optional().describe("Optional request information for telemetry and debugging"),response:xi.object({id:xi.string().optional().describe("ID for the generated response"),timestamp:xi.iso.datetime().optional().describe("Timestamp for the start of the generated response"),modelId:xi.string().optional().describe("The ID of the response model that was used"),headers:xi.record(xi.string(),xi.string()).optional().describe("Response headers"),body:xi.any().optional().describe("Response HTTP body")}).optional().describe("Optional response information for telemetry and debugging"),warnings:xi.array(xi.any()).describe("Warnings for the call, e.g. unsupported settings")}),tR1=xi.object({stream:xi.any().describe("ReadableStream of LanguageModelV2StreamPart"),request:xi.object({body:xi.any().optional().describe("Request HTTP body sent to the provider API")}).optional().describe("Optional request information for telemetry and debugging"),response:xi.object({headers:xi.record(xi.string(),xi.string()).optional().describe("Response headers")}).optional().describe("Optional response data")}),KUf=xi.object({supportedUrls:xi.record(xi.string(),xi.array(xi.string())).describe("Supported URL patterns by media type for the provider")}),fR1=xi.object({modelId:xi.string().describe("The ID of the model"),logo:xi.string().nullable(),description:xi.string().nullable(),capabilities:xi.array(xi.string()),limits:xi.object({contextWindow:xi.number(),maxOutputTokens:xi.number()}).nullable(),costs:xi.object({input:xi.number(),output:xi.number()}).nullable(),provider:xi.enum(["openai","anthropic","google","x-ai","deepseek","openai-compatible","openrouter"]).nullable()}),tg0=xi.object({modelId:xi.string().describe("The ID of the model"),callOptions:jUf}),JUf=bQ.extend({logo:xi.string().nullable(),description:xi.string().nullable(),capabilities:xi.array(xi.string()),limits:xi.object({contextWindow:xi.number(),maxOutputTokens:xi.number()}).nullable(),costs:xi.object({input:xi.number(),output:xi.number()}).nullable(),provider:xi.enum(["openai","anthropic","google","xai","deepseek","openai-compatible","openrouter"]).nullable()}),SUf=RQ("llm",JUf,{readOnly:!0}),H3i=[{name:"LLM_METADATA",inputSchema:xi.object({modelId:xi.string().describe("The ID of the model")}),outputSchema:KUf},{name:"LLM_DO_STREAM",inputSchema:tg0},{name:"LLM_DO_GENERATE",inputSchema:tg0,outputSchema:XUf},...SUf],lR1=qv(H3i)});import{z as TB}from"zod";var YUf,$g0;var wg0=N(()=>{YUf=TB.object({scopes:TB.array(TB.string()).describe("List of scopes available"),stateSchema:TB.record(TB.string(),TB.unknown()).describe("JSON Schema (draft-07) defining the state structure")}),$g0=[{name:"MCP_CONFIGURATION",inputSchema:TB.object({}),outputSchema:YUf}]});import{z as m1}from"zod";var WUf,LUf,dg0;var _g0=N(()=>{WUf=m1.object({}).strict(),LUf=m1.object({billing:m1.object({mode:m1.enum(["prepaid","postpaid"]),limitPeriod:m1.enum(["daily","weekly","monthly"]).nullable()}),limit:m1.object({total:m1.number().nullable(),remaining:m1.number().nullable(),reset:m1.string().nullable()}),usage:m1.object({total:m1.number(),daily:m1.number(),weekly:m1.number(),monthly:m1.number()}),alert:m1.object({enabled:m1.boolean(),threshold_usd:m1.number(),email:m1.string().nullable()}),connectionId:m1.string()}),dg0=[{name:"GATEWAY_USAGE",inputSchema:WUf,outputSchema:LUf},{name:"GATEWAY_SET_LIMIT",inputSchema:m1.object({}),outputSchema:m1.object({}),opt:!0},{name:"GATEWAY_SET_ALERT",inputSchema:m1.object({}),outputSchema:m1.object({}),opt:!0}]});function QUf(i,u){if(u.length===0)return;let[t,...f]=u,l=t==="slug"?Q7(i):i[t];for(let c of f){if(l===null||typeof l!=="object")return;l=l[c]}return l}function zUf(i){let t=i.replace(/[.*+?^${}()|[\]\\]/g,"\\$&").replace(/%/g,".*").replace(/_/g,".");return new RegExp(`^${t}$`,"i")}function HUf(i,u,t){if(i===void 0)return!0;switch(u){case"eq":return t===null?i===null:i===t;case"gt":return i>t;case"gte":return i>=t;case"lt":return i<t;case"lte":return i<=t;case"in":return Array.isArray(t)&&t.includes(i);case"like":return typeof i==="string"&&zUf(String(t)).test(i);case"contains":return String(i).toLowerCase().includes(String(t).toLowerCase());default:return!0}}function Re(i,u){if(!u)return!0;if("conditions"in u){let{operator:f,conditions:l}=u;if(l.length===0)return!0;switch(f){case"and":return l.every((c)=>Re(i,c));case"or":return l.some((c)=>Re(i,c));case"not":return!l.every((c)=>Re(i,c));default:return!0}}let t=QUf(i,u.field);return HUf(t,u.operator,u.value)}var vg0=N(()=>{EEi()});async function hg0(i,u,t){if(i.length===0)return;let f=0;async function l(){while(f<i.length){let c=f++;await t(i[c])}}await Promise.all(Array.from({length:Math.min(u,i.length)},()=>l()))}import{z as q9}from"zod";var bUf=8,RUf,CUf,MUf,qUf,yuu;var Dg0=N(()=>{Buu();ug0();$3();Eg0();wg0();zM();_g0();wf();wu();HE();mw();ZB();BW();Bv();EEi();vg0();RUf=[{name:/^(COLLECTION_REGISTRY_APP_LIST|REGISTRY_ITEM_LIST)$/,inputSchema:q9.object({})}],CUf={LLM:H3i,LLMS:H3i,ASSISTANTS:ig0,MCP:$g0,OBJECT_STORAGE:YO,AI_GATEWAY_BILLING:dg0,TRIGGER:Y3i,REGISTRY:RUf,BRAND:z3i},MUf=t5.extend({binding:q9.union([q9.array(q9.object({}).passthrough()),q9.object({}).passthrough(),q9.string()]).optional(),include_virtual:q9.boolean().optional().describe("Whether to include VIRTUAL connections in the results. Defaults to false."),slug:q9.string().optional().describe("Filter by connection slug. Matches against app_name, or a slug derived from connection_url or title.")}),qUf=l8(Bc),yuu=li({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:MUf,outputSchema:qUf,handler:async(i,u)=>{await u.access.check();let t=Bi(u),f=i.binding?typeof i.binding==="string"?(()=>{let v=CUf[i.binding.toUpperCase()];if(!v)throw Error(`Unknown binding: ${i.binding}`);return v})():i.binding:void 0,l=f?K3i(f):void 0,c=!!l,E=i.limit??100,$=i.offset??0,{items:w,totalCount:d}=await u.storage.connections.list(t.id,{includeVirtual:i.include_virtual??!1,slug:i.slug,where:i.where,orderBy:i.orderBy,limit:c?void 0:E,offset:c?void 0:$});if(l){let v=Il(),h=U4.SELF(t.id);await hg0(w,bUf,async(D)=>{if(D.tools!==null)return;let g=D.id===h?async()=>{let{listManagementTools:Z}=await Promise.resolve().then(() => (UB(),b3i));return Z(u)}:()=>duu(D,u,A60),O=await V7("tools",D.id,g,v,(Z)=>u.pendingRevalidations.push(Z),q7);if(O!==null)D.tools=O})}if(X_()){let v=zl(),h=U4.DEV_ASSETS(t.id);if(!w.some((D)=>D.id===h)){let D=ZW(t.id,v),g=!i.slug||Q7(D)===i.slug,O=Re(D,i.where);if(g&&O)w.unshift(D)}}if(c){let v=(await Promise.all(w.map(async(O)=>{if(!O.tools||O.tools.length===0)return null;return l.isImplementedBy(O.tools.map((B)=>({name:B.name,inputSchema:B.inputSchema,outputSchema:B.outputSchema})))?O:null}))).filter((O)=>O!==null),h=v.length,D=v.slice($,$+E),g=$+E<h;return{items:D,totalCount:h,hasMore:g}}let _=$+E<d;return{items:w,totalCount:d,hasMore:_}}})});var VUf,Fuu;var gg0=N(()=>{$3();wf();wu();HE();mw();ZB();BW();Bv();VUf=Le(Bc),Fuu=li({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:We,outputSchema:VUf,handler:async(i,u)=>{let t=Bi(u);if(await u.access.check(),X_()&&$ci(i.id,t.id))return{item:ZW(t.id,zl())};let f=await u.storage.connections.findById(i.id);if(!f||f.organization_id!==t.id)return{item:null};if(f.tools===null){let l=U4.SELF(t.id),c=f.id===l?async()=>{let{listManagementTools:$}=await Promise.resolve().then(() => (UB(),b3i));return $(u)}:async()=>{let $=await Pc(f,u,!0);try{return(await $.listTools()).tools}finally{await $.close().catch(()=>{})}},E=await V7("tools",f.id,c,Il(),($)=>u.pendingRevalidations.push($),q7);if(E!==null)f.tools=E}return{item:f}}})});import{z as Tuu}from"zod";function eUf(i,u){return i.length===u.length&&i.every((t,f)=>t===u[f])}var rUf,mUf,Uuu;var Ng0=N(()=>{ZB();u5();wu();xt();mw();mr();_uu();yV();Bv();rUf=Tuu.object({id:Tuu.string().describe("ID of the connection to update"),data:nq.describe("Partial connection data to update")}),mUf=Tuu.object({item:Bc.describe("The updated connection entity")});Uuu=li({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:rUf,outputSchema:mUf,handler:async(i,u)=>{Xi(u);let t=Bi(u);await u.access.check();let f=Vu(u);if(!f)throw Error("User ID required to update connection");let{id:l,data:c}=i,E=c.configuration_state!==void 0||c.configuration_scopes!==void 0,$=await u.storage.connections.findById(l);if(!$||$.organization_id!==t.id)throw Error("Connection not found in organization");let w=c.connection_type??$.connection_type,d=c.connection_url??$.connection_url;if(w==="VIRTUAL"){let J=mO(d);if(!J)throw Error("VIRTUAL connection requires connection_url in format: virtual://$virtual_mcp_id");let Y=await u.storage.virtualMcps.findById(J);if(!Y)throw Error(`Virtual MCP not found: ${J}`);if(Y.organization_id!==t.id)throw Error("Virtual MCP does not belong to the current organization");d=eO(J)}let _=c.configuration_state??$.configuration_state??{},v=c.configuration_scopes??$.configuration_scopes??[];if(E){if(c.configuration_state!==void 0)_=c.configuration_state??{};else if(_===null||_===void 0)_={};if(c.configuration_scopes!==void 0)v=c.configuration_scopes??[];if(v.length>0){let J=_;Ke(J,v,t.id),await Se(J,v,t.id,u)}}if(w==="STDIO"&&!Fu().localMode)throw Error("STDIO connections are only available in local mode (--local-mode).");let h=c.connection_token??$.connection_token;if(!h)try{let Y=await new q1(u.db,u.vault).get(l);if(Y?.accessToken)h=Y.accessToken}catch{}let D=await H7({id:$.id,title:c.title??$.title,connection_type:w,connection_url:d,connection_token:h,connection_headers:c.connection_headers??$.connection_headers}).catch(()=>null),g=D?.tools?.length?D.tools:null,O=!1;if(c.configuration_scopes===void 0&&D?.scopes?.length)O=!eUf(v,D.scopes),v=D.scopes;if(Ke(_,v,t.id),O&&v.length>0)await Se(_,v,t.id,u);let Z=E||O,B=Z?Je(_,v):[],y=Z?Je($.configuration_state??{},$.configuration_scopes??[]):[],F=$.configuration_state,T=F==null||Object.keys(F).length===0,U,I,j=async()=>{try{await u.storage.connectionCredentialVault.replaceGrantsForSubject({organizationId:t.id,subjectConnectionId:l,createdBy:f,grants:y})}catch(J){console.error("Failed to restore credential grants after credential vault mutation failed",J)}},A={...c,connection_url:d,tools:null,configuration_state:_,configuration_scopes:v,updated_by:f},G={...$,...A};if(Z)try{if(await u.storage.connectionCredentialVault.replaceGrantsForSubject({organizationId:t.id,subjectConnectionId:l,createdBy:f,grants:B}),B.length>0){if(!await u.storage.connectionCredentialVault.findActiveWorkloadToken({organizationId:t.id,subjectConnectionId:l})){let{plaintextToken:Y,record:r}=await u.storage.connectionCredentialVault.createOrRotateWorkloadToken({organizationId:t.id,subjectConnectionId:l});I=r.id,U={baseUrl:u.baseUrl,org:t.slug??t.id,subjectConnectionId:l,token:Y}}}}catch(J){if(I)await u.storage.connectionCredentialVault.revokeWorkloadToken({organizationId:t.id,subjectConnectionId:l,tokenId:I});throw await j(),J}if(Z&&_&&v)try{await(await Pc(G,u,!1)).callTool({name:"ON_MCP_CONFIGURATION",arguments:{state:_,scopes:v,firstRun:T,...U?{vault:U}:{}}})}catch(J){if(console.error("Failed to invoke ON_MCP_CONFIGURATION callback",J),I)throw await u.storage.connectionCredentialVault.revokeWorkloadToken({organizationId:t.id,subjectConnectionId:l,tokenId:I}),await j(),J}let M;try{M=await u.storage.connections.update(l,A)}catch(J){if(Z){if(I)await u.storage.connectionCredentialVault.revokeWorkloadToken({organizationId:t.id,subjectConnectionId:l,tokenId:I});await j()}throw J}if(g)Il()?.set("tools",l,g).catch(()=>{});return rL(l),{item:M}}})});import{z as aUf}from"zod";var oUf,Puu;var Og0=N(()=>{$3();e4();wu();mw();mr();Bv();oUf=Qe.extend({force:aUf.boolean().optional().describe("If true, removes this connection from all agents that reference it before deleting")}),Puu=li({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:oUf,outputSchema:ze(Bc),handler:async(i,u)=>{Xi(u);let t=Bi(u);await u.access.check();let f=await u.storage.connections.findById(i.id);if(!f)throw Error(`Connection not found: ${i.id}`);if(f.organization_id!==t.id)throw Error("Connection not found in organization");if(f.metadata?.isFixed===!0)throw Error("This connection is a fixed system connection and cannot be deleted");let c=await u.storage.virtualMcps.listByConnectionId(t.id,i.id);if(c.length>0)if(i.force)await u.storage.virtualMcps.removeConnectionReferences(i.id);else throw Error(JSON.stringify({code:"CONNECTION_IN_USE",agentNames:c.map((w)=>w.title)}));await u.storage.connections.delete(i.id);let E=await u.storage.organizationSettings.get(t.id);if(E?.registry_config){let{registries:w,blockedMcps:d}=E.registry_config;if(i.id in w){let{[i.id]:_,...v}=w;await u.storage.organizationSettings.upsert(t.id,{registry_config:{registries:v,blockedMcps:d}})}}Il()?.invalidate(i.id).catch(()=>{}),rL(i.id);let $=Vu(u);if($)su.capture({distinctId:$,event:"connection_deleted",groups:{organization:t.id},properties:{connection_id:f.id,connection_type:f.connection_type,app_name:f.app_name??null,organization_id:t.id,forced:i.force??!1}});return{item:f}}})});import{z as MQ}from"zod";var xuu;var Zg0=N(()=>{wu();xuu=li({name:"CONNECTION_TEST",description:"Test connection health and latency",annotations:{title:"Test Connection",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},inputSchema:MQ.object({id:MQ.string()}),outputSchema:MQ.object({id:MQ.string(),healthy:MQ.boolean(),latencyMs:MQ.number()}),handler:async(i,u)=>{let t=Bi(u);await u.access.check();let f=await u.storage.connections.findById(i.id);if(!f||f.organization_id!==t.id)throw Error("Connection not found");let l=await u.storage.connections.testConnection(i.id);return{id:i.id,...l}}})});var Bg0=N(()=>{I90();Dg0();gg0();Ng0();Og0();Zg0()});import{sql as bf}from"kysely";import{z as Vv}from"zod";function yg0(i){if(i===null||i===void 0)return"NULL";if(typeof i==="number")return String(i);if(typeof i==="boolean")return i?"TRUE":"FALSE";if(typeof i==="string")return`'${i.replace(/'/g,"''")}'`;if(i instanceof Date)return`'${i.toISOString()}'`;return`'${JSON.stringify(i).replace(/'/g,"''")}'`}function iPf(i,u){let t=i;for(let l=u.length;l>=1;l--){let c=`$${l}`;if(t.includes(c))t=t.replaceAll(c,yg0(u[l-1]))}let f=[];for(let l=0;l<t.length;l++)if(t[l]==="?")f.push(l);for(let l=Math.min(f.length,u.length)-1;l>=0;l--){let c=f[l],E=yg0(u[l]);t=t.slice(0,c)+E+t.slice(c+1)}return t}function Fg0(i){return i.replace(/-/g,"_")}function tPf(i){return`app_${Fg0(i)}`}function fPf(i){return`app_role_${Fg0(i)}`}function lPf(i){if(i instanceof Error){let u=i.message.toLowerCase(),t=i.code;return t==="3F000"||t==="42704"||t==="22023"||u.includes("schema")&&u.includes("does not exist")||u.includes("role")&&u.includes("does not exist")}return!1}async function cPf(i,u,t){if(await bf`CREATE SCHEMA IF NOT EXISTS ${bf.id(u)}`.execute(i),!(await bf`
83246
83246
  SELECT EXISTS (SELECT 1 FROM pg_roles WHERE rolname = ${t}) as exists
83247
- `.execute(i)).rows[0]?.exists)await bf`CREATE ROLE ${bf.id(t)} NOLOGIN`.execute(i);await bf`GRANT ${bf.id(t)} TO CURRENT_USER`.execute(i),await bf`GRANT USAGE, CREATE ON SCHEMA ${bf.id(u)} TO ${bf.id(t)}`.execute(i),await bf`GRANT ALL ON ALL TABLES IN SCHEMA ${bf.id(u)} TO ${bf.id(t)}`.execute(i),await bf`GRANT ALL ON ALL SEQUENCES IN SCHEMA ${bf.id(u)} TO ${bf.id(t)}`.execute(i),await bf`ALTER DEFAULT PRIVILEGES IN SCHEMA ${bf.id(u)} GRANT ALL ON TABLES TO ${bf.id(t)}`.execute(i),await bf`ALTER DEFAULT PRIVILEGES IN SCHEMA ${bf.id(u)} GRANT ALL ON SEQUENCES TO ${bf.id(t)}`.execute(i),await bf`REVOKE ALL ON SCHEMA public FROM ${bf.id(t)}`.execute(i)}async function EPf(i,u,t,f){try{return await i.transaction().execute(async(l)=>{return await bf`SET LOCAL ROLE ${bf.id(t)}`.execute(l),await bf`SET LOCAL search_path TO ${bf.id(u)}`.execute(l),await bf.raw(f).execute(l)})}catch(l){if(lPf(l))return await cPf(i,u,t),await i.transaction().execute(async(c)=>{return await bf`SET LOCAL ROLE ${bf.id(t)}`.execute(c),await bf`SET LOCAL search_path TO ${bf.id(u)}`.execute(c),await bf.raw(f).execute(c)});throw l}}var pUf,uPf,Tg0;var Ug0=N(()=>{wu();pUf=Vv.object({results:Vv.array(Vv.unknown()).optional(),success:Vv.boolean().optional()});uPf=Vv.object({sql:Vv.string().describe("The SQL query to run"),params:Vv.array(Vv.any()).describe("The parameters to pass to the SQL query").optional()});Tg0=li({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:uPf,outputSchema:Vv.object({result:Vv.array(pUf)}),handler:async(i,u)=>{Xi(u),await u.access.check();let t=iPf(i.sql,i.params||[]);if(!u.connectionId)throw Error("Connection context required for database access");console.warn("DATABASES_RUN_SQL invoked",{"tool.deprecation_probe":"DATABASES_RUN_SQL","connection.id":u.connectionId,"organization.id":u.organization?.id??null,"user.id":u.auth.user?.id??null});let f=tPf(u.connectionId),l=fPf(u.connectionId);return{result:[{results:(await EPf(u.db,f,l,t)).rows,success:!0}]}}})});function R3i(i){let u=i.access.getRole();if(!u||!$d.includes(u))throw new MD("Only organization owners and admins can change org-wide pin status")}var Iuu=N(()=>{nv();zZ()});import{z as Ig0}from"zod";function wPf(){let i=Pg0[Math.floor(Math.random()*Pg0.length)];return`icon://${xg0[Math.floor(Math.random()*xg0.length)]}?color=${i}`}var Pg0,xg0,dPf,_Pf,Auu;var Ag0=N(()=>{wu();C7();Iuu();Pg0=["red","orange","amber","yellow","lime","green","emerald","cyan","sky","blue","indigo","violet","purple","fuchsia","pink","rose"],xg0=["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"];dPf=Ig0.object({data:Xq.describe("Data for the new virtual MCP")}),_Pf=Ig0.object({item:yc.describe("The created virtual MCP entity")}),Auu=li({name:"COLLECTION_VIRTUAL_MCP_CREATE",description:"Create a Virtual MCP that aggregates tools from multiple connections into one endpoint.",annotations:{title:"Create Virtual MCP",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!1},inputSchema:dPf,outputSchema:_Pf,handler:async(i,u)=>{Xi(u);let t=Bi(u);await u.access.check();let f=Vu(u);if(!f)throw Error("User ID required to create virtual MCP");if(i.data.pinned===!0)R3i(u);let l={...i.data,icon:i.data.icon??wPf()};return{item:await u.storage.virtualMcps.create(t.id,f,l)}}})});function vPf(i){let u=[],t=0;while(t<i.length){let f=i[t];if(f==="%")u.push(".*");else if(f==="_")u.push(".");else if(/[.*+?^${}()|[\]\\]/.test(f))u.push("\\"+f);else u.push(f);t++}return u.join("")}function V9(i){return typeof i==="string"||typeof i==="number"}function nuu(i,u){let t=u.split("."),f=i;for(let l of t){if(f==null||typeof f!=="object")return;f=f[l]}return f}function hPf(i,u){return i.connections.some((t)=>t.connection_id===u)}function C3i(i,u){if("conditions"in u){let{operator:$,conditions:w}=u;switch($){case"and":return w.every((d)=>C3i(i,d));case"or":return w.some((d)=>C3i(i,d));case"not":return!w.every((d)=>C3i(i,d));default:return!0}}let{field:t,operator:f,value:l}=u,c=t.join(".");if(c==="connection_id"){if(f!=="eq"||typeof l!=="string")return!1;return hPf(i,l)}let E=nuu(i,c);switch(f){case"eq":return E===l;case"gt":return V9(E)&&V9(l)&&E>l;case"gte":return V9(E)&&V9(l)&&E>=l;case"lt":return V9(E)&&V9(l)&&E<l;case"lte":return V9(E)&&V9(l)&&E<=l;case"in":return Array.isArray(l)&&l.includes(E);case"like":if(typeof E!=="string"||typeof l!=="string")return!1;if(l.length>100)return!1;let $=vPf(l);return new RegExp(`^${$}$`,"i").test(E);case"contains":if(typeof E!=="string"||typeof l!=="string")return!1;return E.toLowerCase().includes(l.toLowerCase());default:return!0}}function DPf(i,u){return[...i].sort((t,f)=>{for(let l of u){let c=l.field.join("."),E=nuu(t,c),$=nuu(f,c),w=0;if(E==null&&$==null)continue;if(E==null)w=l.nulls==="first"?-1:1;else if($==null)w=l.nulls==="first"?1:-1;else if(typeof E==="string"&&typeof $==="string")w=E.localeCompare($);else if(typeof E==="number"&&typeof $==="number")w=E-$;else w=String(E).localeCompare(String($));if(w!==0)return l.direction==="desc"?-w:w}return 0})}var gPf,NPf,Guu;var ng0=N(()=>{$3();wu();C7();gPf=t5,NPf=l8(yc),Guu=li({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:gPf,outputSchema:NPf,handler:async(i,u)=>{await u.access.check();let t=Bi(u),f=i.where&&!("conditions"in i.where)&&i.where.field.join(".")==="connection_id"&&i.where.operator==="eq"&&typeof i.where.value==="string"?i.where.value:void 0,l=i.where&&!("conditions"in i.where)&&i.where.field.join(".")==="pinned"&&i.where.operator==="eq"&&typeof i.where.value==="boolean"?i.where.value:void 0,E=f?await u.storage.virtualMcps.listByConnectionId(t.id,f):await u.storage.virtualMcps.list(t.id,l!==void 0?{pinnedOnly:l}:void 0);if(i.where)E=E.filter((h)=>C3i(h,i.where));if(i.orderBy&&i.orderBy.length>0)E=DPf(E,i.orderBy);let $=E.length,w=i.offset??0,d=i.limit??100,_=E.slice(w,w+d),v=w+d<$;return{items:_,totalCount:$,hasMore:v}}})});import{z as kuu}from"zod";var OPf,ZPf,juu;var Gg0=N(()=>{wu();C7();OPf=kuu.object({id:kuu.string().describe("ID of the virtual MCP to retrieve")}),ZPf=kuu.object({item:yc.nullable().describe("The retrieved virtual MCP, or null if not found")}),juu=li({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:OPf,outputSchema:ZPf,handler:async(i,u)=>{Xi(u);let t=Bi(u);await u.access.check();let f=await u.storage.virtualMcps.findById(i.id);if(f&&f.organization_id!==t.id)return{item:null};if(!f)return{item:null};return{item:f}}})});import{z as Xuu}from"zod";var BPf,yPf,Kuu;var kg0=N(()=>{wu();C7();Iuu();BPf=Xuu.object({id:Xuu.string().describe("ID of the virtual MCP to update"),data:Kq.describe("Partial virtual MCP data to update")}),yPf=Xuu.object({item:yc.describe("The updated virtual MCP entity")}),Kuu=li({name:"COLLECTION_VIRTUAL_MCP_UPDATE",description:"Update a Virtual MCP's name, slug, or connection list.",annotations:{title:"Update Virtual MCP",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:BPf,outputSchema:yPf,handler:async(i,u)=>{Xi(u);let t=Bi(u);await u.access.check();let f=Vu(u);if(!f)throw Error("User ID required to update virtual MCP");let l=await u.storage.virtualMcps.findById(i.id);if(!l)throw Error(`Virtual MCP not found: ${i.id}`);if(l.organization_id!==t.id)throw Error(`Virtual MCP not found: ${i.id}`);let c={...i.data};if(c.metadata&&l.metadata)c.metadata={...l.metadata,...c.metadata};if(c.pinned!==void 0&&c.pinned!==l.pinned)R3i(u);return{item:await u.storage.virtualMcps.update(i.id,f,c)}}})});import{z as Juu}from"zod";var FPf,TPf,Suu;var jg0=N(()=>{SQ();u5();wu();C7();FPf=Juu.object({id:Juu.string().describe("ID of the virtual MCP to delete")}),TPf=Juu.object({item:yc.describe("The deleted virtual MCP entity")}),Suu=li({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:FPf,outputSchema:TPf,handler:async(i,u)=>{Xi(u);let t=Bi(u);await u.access.check();let f=await u.storage.virtualMcps.findById(i.id);if(!f)throw Error(`Virtual MCP not found: ${i.id}`);if(f.organization_id!==t.id)throw Error(`Virtual MCP not found: ${i.id}`);await u.storage.virtualMcps.delete(i.id);let l=f.metadata?.githubRepo?.connectionId;if(l)try{let c=await u.storage.connections.findById(l,t.id);if(c&&Rv(c)){let $=await new q1(u.db,u.vault).get(l);if($?.accessToken)try{await fetch("https://api.github.com/installation/token",{method:"DELETE",headers:{Authorization:`Bearer ${$.accessToken}`,Accept:"application/vnd.github+json","X-GitHub-Api-Version":"2022-11-28"},signal:AbortSignal.timeout(5000)})}catch{}await u.storage.connections.delete(l)}}catch(c){console.error("[VIRTUAL_MCP_DELETE] failed to tear down repo-scoped connection",{childConnectionId:l,error:c.message})}return{item:f}}})});import{z as uw}from"zod";var UPf,Yuu;var Xg0=N(()=>{wu();UPf=uw.object({id:uw.string(),virtualMcpId:uw.string(),pluginId:uw.string(),connectionId:uw.string().nullable(),settings:uw.record(uw.string(),uw.unknown()).nullable(),createdAt:uw.string(),updatedAt:uw.string()}),Yuu=li({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:uw.object({virtualMcpId:uw.string().describe("Virtual MCP ID"),pluginId:uw.string().describe("Plugin ID")}),outputSchema:uw.object({config:UPf.nullable()}),handler:async(i,u)=>{Xi(u),await u.access.check();let{virtualMcpId:t,pluginId:f}=i,l=await u.storage.virtualMcpPluginConfigs.get(t,f);if(!l)return{config:null};return{config:{id:l.id,virtualMcpId:l.virtualMcpId,pluginId:l.pluginId,connectionId:l.connectionId,settings:l.settings,createdAt:l.createdAt instanceof Date?l.createdAt.toISOString():l.createdAt,updatedAt:l.updatedAt instanceof Date?l.updatedAt.toISOString():l.updatedAt}}}})});import{z as m6}from"zod";var PPf,Wuu;var Kg0=N(()=>{wu();BW();HE();PPf=m6.object({id:m6.string(),virtualMcpId:m6.string(),pluginId:m6.string(),connectionId:m6.string().nullable(),settings:m6.record(m6.string(),m6.unknown()).nullable(),createdAt:m6.string(),updatedAt:m6.string()}),Wuu=li({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:m6.object({virtualMcpId:m6.string().describe("Virtual MCP ID"),pluginId:m6.string().describe("Plugin ID"),connectionId:m6.string().nullable().optional().describe("MCP connection to bind"),settings:m6.record(m6.string(),m6.unknown()).nullable().optional().describe("Plugin-specific settings")}),outputSchema:m6.object({config:PPf}),handler:async(i,u)=>{Xi(u),await u.access.check();let{virtualMcpId:t,pluginId:f,connectionId:l,settings:c}=i,E=Vu(u),$=await u.storage.connections.findById(t);if(!$)throw Error(`Connection not found: ${t}`);let w=l?await u.storage.connections.findById(l):null;if(l&&$.organization_id&&!w&&X_()){if($ci(l,$.organization_id)){if(!E)throw Error("User ID required to create dev-assets connection");let _=ZW($.organization_id,zl());await u.storage.connections.create({..._,organization_id:$.organization_id,created_by:E})}}let d=await u.storage.virtualMcpPluginConfigs.upsert(t,f,{connectionId:l,settings:c});return{config:{id:d.id,virtualMcpId:d.virtualMcpId,pluginId:d.pluginId,connectionId:d.connectionId,settings:d.settings,createdAt:d.createdAt instanceof Date?d.createdAt.toISOString():d.createdAt,updatedAt:d.updatedAt instanceof Date?d.updatedAt.toISOString():d.updatedAt}}}})});import{z as l$}from"zod";var xPf,Luu;var Jg0=N(()=>{wu();C7();xPf=l$.object({connectionId:l$.string(),toolName:l$.string(),label:l$.string(),icon:l$.string().nullable().optional()}),Luu=li({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:l$.object({virtualMcpId:l$.string().describe("Virtual MCP ID"),pinnedViews:l$.array(xPf).describe("Pinned views to set for the virtual MCP sidebar"),layout:l$.object({defaultMainView:l$.object({type:l$.string(),id:l$.string().optional(),toolName:l$.string().optional()}).nullable().optional(),chatDefaultOpen:l$.boolean().nullable().optional()}).optional()}),outputSchema:l$.object({item:yc.nullable()}),handler:async(i,u)=>{Xi(u);let t=Bi(u);await u.access.check();let{virtualMcpId:f,pinnedViews:l,layout:c}=i,E=Vu(u),$=await u.storage.virtualMcps.findById(f);if(!$)throw Error(`Virtual MCP not found: ${f}`);if($.organization_id!==t.id)throw Error(`Virtual MCP not found: ${f}`);let w=$.metadata?.ui??{},d={...w,pinnedViews:l.length>0?l:null,layout:c??w.layout??null};return{item:await u.storage.virtualMcps.update(f,E??"system",{metadata:{...$.metadata,ui:d}})}}})});import{z as E8}from"zod";var IPf,APf,Quu;var Sg0=N(()=>{wu();IPf=E8.object({ids:E8.array(E8.string()).describe("Virtual MCP ids to look up")}),APf=E8.object({items:E8.array(E8.object({id:E8.string(),last_used_at:E8.string().optional(),last_used_by:E8.string().optional()}))}),Quu=li({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:IPf,outputSchema:APf,handler:async(i,u)=>{Xi(u),Bi(u),await u.access.check();let t=await u.storage.threads.findLastUsedByVirtualMcpIds(i.ids);return{items:i.ids.map((f)=>({id:f,last_used_at:t.get(f)?.last_used_at,last_used_by:t.get(f)?.last_used_by}))}}})});var Yg0=N(()=>{Ag0();ng0();Gg0();kg0();jg0();Xg0();Kg0();Jg0();Sg0()});import{z as T1}from"zod";var zuu;var Wg0=N(()=>{z1();wu();zuu=li({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:T1.object({id:T1.string().describe("Log ID to fetch")}),outputSchema:T1.object({log:T1.object({id:T1.string().optional(),organizationId:T1.string(),connectionId:T1.string(),toolName:T1.string(),input:T1.record(T1.string(),T1.unknown()),output:T1.record(T1.string(),T1.unknown()),isError:T1.boolean(),errorMessage:T1.string().nullish(),durationMs:T1.number(),timestamp:T1.string(),userId:T1.string().nullish(),requestId:T1.string(),userAgent:T1.string().nullish(),virtualMcpId:T1.string().nullish(),properties:T1.record(T1.string(),T1.string()).nullish()}).nullable().describe("The monitoring log, or null if not found")}),handler:async(i,u)=>{await u.access.check(),await C3();let t=Bi(u),f=await u.storage.monitoring.getById(t.id,i.id);if(!f)return{log:null};return{log:{...f,timestamp:f.timestamp instanceof Date?f.timestamp.toISOString():f.timestamp}}}})});import{z as Zt}from"zod";var GPf,Huu;var Lg0=N(()=>{z1();wu();GPf=Zt.object({id:Zt.string().optional().describe("Unique log identifier"),organizationId:Zt.string().describe("Organization ID"),connectionId:Zt.string().describe("Connection ID"),toolName:Zt.string().describe("Name of the tool that was called"),isError:Zt.boolean().describe("Whether the call resulted in an error"),errorMessage:Zt.string().nullish().describe("Error message if applicable"),durationMs:Zt.number().describe("Call duration in milliseconds"),timestamp:Zt.string().describe("ISO 8601 timestamp of the call"),userId:Zt.string().nullish().describe("User who triggered the call"),requestId:Zt.string().describe("Unique request identifier"),userAgent:Zt.string().nullish().describe("Client identifier (x-mesh-client header)"),virtualMcpId:Zt.string().nullish().describe("Virtual MCP (Agent) ID if routed through an agent"),properties:Zt.record(Zt.string(),Zt.string()).nullish().describe("Custom key-value metadata attached to the log")}),Huu=li({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:Zt.object({connectionId:Zt.string().optional().describe("Filter by connection ID"),excludeConnectionIds:Zt.array(Zt.string()).optional().describe("Exclude logs from these connection IDs (e.g. system connections)"),virtualMcpId:Zt.string().optional().describe("Filter by Virtual MCP (Agent) ID"),toolName:Zt.string().optional().describe("Filter by tool name"),isError:Zt.boolean().optional().describe("Filter by error status"),startDate:Zt.string().datetime().optional().describe("Filter by start date (ISO 8601 datetime string)"),endDate:Zt.string().datetime().optional().describe("Filter by end date (ISO 8601 datetime string)"),limit:Zt.number().default(20).describe("Maximum number of results"),offset:Zt.number().default(0).describe("Offset for pagination"),properties:Zt.record(Zt.string(),Zt.string()).optional().describe("Filter by exact property key=value matches"),propertyKeys:Zt.array(Zt.string()).optional().describe("Filter by logs that have these property keys"),propertyPatterns:Zt.record(Zt.string(),Zt.string()).optional().describe("Filter by property value patterns (SQL LIKE, use % as wildcard)"),propertyInValues:Zt.record(Zt.string(),Zt.string()).optional().describe("Filter by exact match within comma-separated values (e.g., user_tags in 'Engineering')")}),outputSchema:Zt.object({logs:Zt.array(GPf).describe("Array of monitoring logs"),total:Zt.number().describe("Total number of logs matching filters"),offset:Zt.number().describe("Current offset for pagination"),limit:Zt.number().describe("Current limit for pagination")}),handler:async(i,u)=>{await C3();let t=Bi(u),l=i.properties||i.propertyKeys||i.propertyPatterns||i.propertyInValues?{properties:i.properties,propertyKeys:i.propertyKeys,propertyPatterns:i.propertyPatterns,propertyInValues:i.propertyInValues}:void 0,c={organizationId:t.id,connectionId:i.connectionId,excludeConnectionIds:i.excludeConnectionIds,virtualMcpId:i.virtualMcpId,toolName:i.toolName,isError:i.isError,startDate:i.startDate?new Date(i.startDate):void 0,endDate:i.endDate?new Date(i.endDate):void 0,limit:i.limit,offset:i.offset,propertyFilters:l},E=await u.storage.monitoring.query(c);return{logs:E.logs.map(({input:$,output:w,...d})=>({...d,timestamp:d.timestamp instanceof Date?d.timestamp.toISOString():d.timestamp})),total:E.total,offset:i.offset,limit:i.limit}}})});import{z as v0}from"zod";var buu;var Qg0=N(()=>{z1();wu();buu=li({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:v0.object({startDate:v0.string().datetime().optional().describe("Filter by start date (ISO 8601 datetime string)"),endDate:v0.string().datetime().optional().describe("Filter by end date (ISO 8601 datetime string)"),interval:v0.string().regex(/^\d+[mhd]$/).optional().describe("Bucket interval for timeseries data (e.g. 1m, 5m, 2h, 1d). When provided, returns timeseries array."),connectionIds:v0.array(v0.string()).max(100).optional().describe("Filter by specific connection IDs (max 100)"),excludeConnectionIds:v0.array(v0.string()).max(100).optional().describe("Exclude specific connection IDs (max 100)"),toolNames:v0.array(v0.string()).max(100).optional().describe("Filter by specific tool names (max 100)"),status:v0.enum(["success","error"]).optional().describe("Filter metrics by execution status"),topN:v0.number().int().min(1).max(20).optional().describe("When provided with interval, also return top tools and their timeseries"),userIds:v0.array(v0.string()).max(100).optional().describe("Filter LLM usage by user IDs (only applied when llmUsage is true)"),llmUsage:v0.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:v0.object({totalCalls:v0.number().describe("Total number of tool calls"),errorRate:v0.number().optional().describe("Error rate as a decimal (0 to 1)"),avgDurationMs:v0.number().describe("Average call duration in milliseconds"),errorRatePercent:v0.string().optional().describe("Error rate as a percentage string"),totalErrors:v0.number().optional().describe("Total number of errors"),p50DurationMs:v0.number().optional().describe("50th percentile duration in milliseconds"),p95DurationMs:v0.number().optional().describe("95th percentile duration in milliseconds"),connectionBreakdown:v0.array(v0.object({connectionId:v0.string(),calls:v0.number(),errors:v0.number(),errorRate:v0.number(),avgDurationMs:v0.number()})).optional().describe("Per-connection metric breakdown"),totalInputTokens:v0.number().optional().describe("Total input tokens (LLM usage mode)"),totalOutputTokens:v0.number().optional().describe("Total output tokens (LLM usage mode)"),totalTokens:v0.number().optional().describe("Total tokens (LLM usage mode)"),totalCostUsd:v0.number().optional().describe("Total USD cost (LLM usage mode; only non-zero for providers that report cost)"),topTools:v0.array(v0.object({toolName:v0.string(),connectionId:v0.string().nullable(),calls:v0.number(),inputTokens:v0.number().optional(),outputTokens:v0.number().optional(),costUsd:v0.number().optional()})).optional().describe("Top tools ranked by calls"),topToolsTimeseries:v0.array(v0.object({timestamp:v0.string(),toolName:v0.string(),calls:v0.number(),errors:v0.number(),avg:v0.number(),p95:v0.number()})).optional().describe("Per-tool metric timeseries for the top tools"),timeseries:v0.array(v0.object({timestamp:v0.string(),calls:v0.number(),errors:v0.number(),errorRate:v0.number(),avg:v0.number(),p50:v0.number(),p95:v0.number(),inputTokens:v0.number().optional(),outputTokens:v0.number().optional(),totalTokens:v0.number().optional(),costUsd:v0.number().optional()})).optional().describe("Timeseries data points bucketed by interval")}),handler:async(i,u)=>{let t=Bi(u);if(await u.access.check(),await C3(),i.interval&&i.llmUsage)return u.storage.monitoring.queryLlmUsageStats({organizationId:t.id,interval:i.interval,connectionId:i.connectionIds?.[0]??"decopilot",startDate:i.startDate?new Date(i.startDate):void 0,endDate:i.endDate?new Date(i.endDate):void 0,userIds:i.userIds,topN:i.topN});if(i.interval){let l=await u.storage.monitoring.queryMetricTimeseries({organizationId:t.id,interval:i.interval,startDate:i.startDate?new Date(i.startDate):void 0,endDate:i.endDate?new Date(i.endDate):void 0,filters:{connectionIds:i.connectionIds,excludeConnectionIds:i.excludeConnectionIds,toolNames:i.toolNames,status:i.status}});if(!i.topN)return l;let c=await u.storage.monitoring.queryMetricTopToolsTimeseries({organizationId:t.id,interval:i.interval,startDate:i.startDate?new Date(i.startDate):void 0,endDate:i.endDate?new Date(i.endDate):void 0,topN:i.topN,filters:{connectionIds:i.connectionIds,excludeConnectionIds:i.excludeConnectionIds,toolNames:i.toolNames,status:i.status}});return{...l,topTools:c.topTools,topToolsTimeseries:c.timeseries}}let f=await u.storage.monitoring.getStats({organizationId:t.id,startDate:i.startDate?new Date(i.startDate):void 0,endDate:i.endDate?new Date(i.endDate):void 0});return{...f,errorRatePercent:(f.errorRate*100).toFixed(2)}}})});import{z as c$}from"zod";var Ruu;var zg0=N(()=>{z1();wu();Ruu=li({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:c$.object({threadIds:c$.array(c$.string()).min(1).max(500).describe("Thread IDs to aggregate usage for (max 500)"),connectionId:c$.string().optional().describe("LLM connection ID (defaults to 'decopilot')"),startDate:c$.string().datetime().optional().describe("Filter by start date (ISO 8601 datetime string)"),endDate:c$.string().datetime().optional().describe("Filter by end date (ISO 8601 datetime string)")}),outputSchema:c$.object({items:c$.array(c$.object({threadId:c$.string(),calls:c$.number(),inputTokens:c$.number(),outputTokens:c$.number(),totalTokens:c$.number(),costUsd:c$.number()}))}),handler:async(i,u)=>{let t=Bi(u);return await u.access.check(),await C3(),{items:await u.storage.monitoring.queryThreadUsage({organizationId:t.id,connectionId:i.connectionId??"decopilot",threadIds:i.threadIds,startDate:i.startDate?new Date(i.startDate):void 0,endDate:i.endDate?new Date(i.endDate):void 0})}}})});var Hg0=N(()=>{Wg0();Lg0();Qg0();zg0()});import{z as w3}from"zod";var Cuu;var bg0=N(()=>{wu();Cuu=li({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:w3.object({slug:w3.string().min(1).max(50).regex(/^[a-z0-9-]+$/,"Slug must be lowercase alphanumeric with hyphens"),name:w3.string().min(1).max(255),description:w3.string().optional()}),outputSchema:w3.object({id:w3.string(),name:w3.string(),slug:w3.string(),logo:w3.string().nullable().optional(),metadata:w3.any().optional(),createdAt:w3.string().datetime().describe("ISO 8601 timestamp"),members:w3.array(w3.any()).optional()}),handler:async(i,u)=>{Xi(u),await u.access.check();let t=Vu(u);if(!t)throw Error("User ID required to create organization");let f=await u.boundAuth.organization.create({name:i.name,slug:i.slug,metadata:i.description?{description:i.description}:void 0,userId:t});if(!f)throw Error("Failed to create organization");return{...f,createdAt:f.createdAt instanceof Date?f.createdAt.toISOString():f.createdAt}}})});import{z as f5}from"zod";var Muu;var Rg0=N(()=>{wu();Muu=li({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:f5.object({userId:f5.string().optional()}),outputSchema:f5.object({organizations:f5.array(f5.object({id:f5.string(),name:f5.string(),slug:f5.string(),logo:f5.string().nullable().optional(),metadata:f5.any().optional(),createdAt:f5.string().datetime().describe("ISO 8601 timestamp")}))}),handler:async(i,u)=>{Xi(u),await u.access.check();let t=Vu(u),f=i.userId||t;if(!f)throw Error("User ID required to list organizations");return{organizations:(await u.boundAuth.organization.list(f)).map((c)=>({...c,createdAt:c.createdAt instanceof Date?c.createdAt.toISOString():c.createdAt}))}}})});import{z as yd}from"zod";var quu;var Cg0=N(()=>{wu();quu=li({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:yd.object({}),outputSchema:yd.object({id:yd.string(),name:yd.string(),slug:yd.string(),logo:yd.string().nullable().optional(),metadata:yd.any().optional(),createdAt:yd.string().datetime().describe("ISO 8601 timestamp"),members:yd.array(yd.any()).optional(),invitations:yd.array(yd.any()).optional()}),handler:async(i,u)=>{Xi(u),await u.access.check();let t=u.organization?.id;if(!t)throw Error("Organization ID required (no active organization in context)");let f=await u.boundAuth.organization.get(t);if(!f)throw Error("No active organization found");let l=new Date,c=f.invitations?.filter((E)=>new Date(E.expiresAt)>l);return{...f,invitations:c,createdAt:f.createdAt instanceof Date?f.createdAt.toISOString():f.createdAt}}})});import{z as l5}from"zod";var Vuu;var Mg0=N(()=>{wu();Vuu=li({name:"ORGANIZATION_UPDATE",description:"Update an organization's name or description.",annotations:{title:"Update Organization",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:l5.object({id:l5.string(),name:l5.string().min(1).max(255).optional(),description:l5.string().optional()}),outputSchema:l5.object({id:l5.string(),name:l5.string(),slug:l5.string(),logo:l5.string().nullable().optional(),metadata:l5.any().optional(),createdAt:l5.string().datetime().describe("ISO 8601 timestamp")}),handler:async(i,u)=>{Xi(u),await u.access.check();let t={};if(i.name)t.name=i.name;if(i.description)t.metadata={description:i.description};let f=await u.boundAuth.organization.update({organizationId:i.id,data:t});if(!f)throw Error("Failed to update organization");return{...f,createdAt:f.createdAt instanceof Date?f.createdAt.toISOString():f.createdAt}}})});import{z as Ce}from"zod";var ruu;var qg0=N(()=>{wu();ruu=li({name:"ORGANIZATION_DELETE",description:"Archive an organization (soft delete).",annotations:{title:"Delete Organization",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:Ce.object({id:Ce.string()}),outputSchema:Ce.object({success:Ce.boolean(),id:Ce.string()}),handler:async(i,u)=>{return Xi(u),await u.access.check(),await u.boundAuth.organization.update({organizationId:i.id,data:{metadata:{archived:!0,archivedAt:new Date().toISOString()}}}),{success:!0,id:i.id}}})});import{z as H0}from"zod";var Me,qe,qQ,Vg0,M3i,Ve,re,r9;var $8=N(()=>{Me=H0.object({title:H0.string(),url:H0.string(),icon:H0.string()}),qe=H0.object({registries:H0.record(H0.string(),H0.object({enabled:H0.boolean()})).describe("Per-registry enabled/disabled state. Key is connection ID. Absent registries are treated as enabled."),blockedMcps:H0.array(H0.string()).describe("List of MCP app_name or app_id values to hide from the store.")}),qQ=H0.object({keyId:H0.string(),modelId:H0.string(),title:H0.string().optional()}).nullable(),Vg0=H0.enum(["fast","smart","thinking","image","web_search","deep_research"]),M3i=H0.enum(["fast","smart","thinking"]),Ve=H0.object({tiers:H0.object({fast:qQ,smart:qQ,thinking:qQ,image:qQ,web_search:qQ,deep_research:qQ})}),re=H0.object({ids:H0.array(H0.string()).describe("Ordered list of custom virtual MCP agent ids to show on the home view.")}),r9=H0.object({id:H0.string().describe("Brand context ID"),name:H0.string().describe("Company name"),domain:H0.string().describe("Company domain (e.g. example.com)"),overview:H0.string().describe("Company overview / description"),logo:H0.string().nullable().optional().describe("Logo URL"),favicon:H0.string().nullable().optional().describe("Favicon URL"),ogImage:H0.string().nullable().optional().describe("OG image URL"),fonts:H0.object({heading:H0.string().optional().describe("Font family for headings"),body:H0.string().optional().describe("Font family for body text"),code:H0.string().optional().describe("Font family for code / monospace")}).nullable().optional().describe("Font families by semantic role"),colors:H0.object({primary:H0.string().optional().describe("Primary brand color (hex)"),secondary:H0.string().optional().describe("Secondary brand color (hex)"),accent:H0.string().optional().describe("Accent / highlight color (hex)"),background:H0.string().optional().describe("Background color (hex)"),foreground:H0.string().optional().describe("Foreground / text color (hex)")}).nullable().optional().describe("Semantic color palette"),images:H0.array(H0.record(H0.string(),H0.unknown())).nullable().optional().describe("Brand images"),metadata:H0.record(H0.string(),H0.unknown()).nullable().optional().describe("Extra design tokens (typography, components, spacing, layout, tone, etc.)"),archivedAt:H0.string().nullable().optional().describe("Archive timestamp (null to unarchive)"),isDefault:H0.boolean().optional().describe("Whether this is the default brand for the organization")})});import{z as m9}from"zod";var muu;var rg0=N(()=>{wu();$8();muu=li({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:m9.object({}),outputSchema:m9.object({organizationId:m9.string(),sidebar_items:m9.array(Me).nullable().optional(),enabled_plugins:m9.array(m9.string()).nullable().optional(),registry_config:qe.nullable().optional(),simple_mode:Ve.nullable().optional(),default_home_agents:re.nullable().optional(),createdAt:m9.string().datetime().optional().describe("ISO 8601 timestamp"),updatedAt:m9.string().datetime().optional().describe("ISO 8601 timestamp")}),handler:async(i,u)=>{Xi(u),await u.access.check();let t=u.organization?.id;if(!t)throw Error("Organization ID required (no active organization in context)");let f=await u.storage.organizationSettings.get(t);if(!f)return{organizationId:t};return{...f,createdAt:f.createdAt instanceof Date?f.createdAt.toISOString():f.createdAt,updatedAt:f.updatedAt instanceof Date?f.updatedAt.toISOString():f.updatedAt}}})});import{z as Fd}from"zod";var euu;var mg0=N(()=>{wu();$8();euu=li({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:Fd.object({organizationId:Fd.string(),sidebar_items:Fd.array(Me).optional(),enabled_plugins:Fd.array(Fd.string()).optional(),registry_config:qe.optional(),simple_mode:Ve.optional(),default_home_agents:re.optional()}),outputSchema:Fd.object({organizationId:Fd.string(),sidebar_items:Fd.array(Me).nullable().optional(),enabled_plugins:Fd.array(Fd.string()).nullable().optional(),registry_config:qe.nullable().optional(),simple_mode:Ve.nullable().optional(),default_home_agents:re.nullable().optional(),createdAt:Fd.string().datetime().describe("ISO 8601 timestamp"),updatedAt:Fd.string().datetime().describe("ISO 8601 timestamp")}),handler:async(i,u)=>{if(Xi(u),await u.access.check(),u.organization&&u.organization.id!==i.organizationId)throw Error("Cannot update settings for a different organization");let t=await u.storage.organizationSettings.upsert(i.organizationId,{sidebar_items:i.sidebar_items,enabled_plugins:i.enabled_plugins,registry_config:i.registry_config,simple_mode:i.simple_mode,default_home_agents:i.default_home_agents});return{...t,createdAt:t.createdAt instanceof Date?t.createdAt.toISOString():t.createdAt,updatedAt:t.updatedAt instanceof Date?t.updatedAt.toISOString():t.updatedAt}}})});import{z as c5}from"zod";var eg0,auu,ouu;var ag0=N(()=>{wu();$8();eg0=r9.extend({organizationId:c5.string(),archivedAt:c5.string().nullable().optional().describe("ISO 8601 timestamp"),createdAt:c5.string().describe("ISO 8601 timestamp"),updatedAt:c5.string().describe("ISO 8601 timestamp")}),auu=li({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:c5.object({includeArchived:c5.boolean().optional().describe("Include archived brands in the list")}),outputSchema:c5.object({items:c5.array(eg0)}),handler:async(i,u)=>{Xi(u),await u.access.check();let t=u.organization?.id;if(!t)throw Error("Organization ID required (no active organization in context)");return{items:(await u.storage.brandContext.list(t,{includeArchived:i.includeArchived})).map((l)=>({...l,archivedAt:l.archivedAt instanceof Date?l.archivedAt.toISOString():l.archivedAt,createdAt:l.createdAt instanceof Date?l.createdAt.toISOString():l.createdAt,updatedAt:l.updatedAt instanceof Date?l.updatedAt.toISOString():l.updatedAt}))}}}),ouu=li({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:c5.object({id:c5.string().describe("Brand context ID")}),outputSchema:eg0.extend({organizationId:c5.string()}),handler:async(i,u)=>{Xi(u),await u.access.check();let t=u.organization?.id;if(!t)throw Error("Organization ID required (no active organization in context)");let f=await u.storage.brandContext.get(i.id,t);if(!f)throw Error("Brand context not found");return{...f,archivedAt:f.archivedAt instanceof Date?f.archivedAt.toISOString():f.archivedAt,createdAt:f.createdAt instanceof Date?f.createdAt.toISOString():f.createdAt,updatedAt:f.updatedAt instanceof Date?f.updatedAt.toISOString():f.updatedAt}}})});import{z as PB}from"zod";var og0,suu,puu,i0u;var sg0=N(()=>{wu();$8();og0=r9.extend({organizationId:PB.string(),createdAt:PB.string().describe("ISO 8601 timestamp"),updatedAt:PB.string().describe("ISO 8601 timestamp")}),suu=li({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:r9.omit({id:!0}),outputSchema:og0,handler:async(i,u)=>{Xi(u),await u.access.check();let t=u.organization?.id;if(!t)throw Error("Organization ID required (no active organization in context)");let f=await u.storage.brandContext.create(t,{name:i.name,domain:i.domain,overview:i.overview,logo:i.logo??null,favicon:i.favicon??null,ogImage:i.ogImage??null,fonts:i.fonts??null,colors:i.colors??null,images:i.images??null,metadata:i.metadata??null});return{...f,archivedAt:f.archivedAt instanceof Date?f.archivedAt.toISOString():f.archivedAt,createdAt:f.createdAt instanceof Date?f.createdAt.toISOString():f.createdAt,updatedAt:f.updatedAt instanceof Date?f.updatedAt.toISOString():f.updatedAt}}}),puu=li({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:r9.partial().required({id:!0}),outputSchema:og0,handler:async(i,u)=>{Xi(u),await u.access.check();let t=u.organization?.id;if(!t)throw Error("Organization ID required (no active organization in context)");if(!await u.storage.brandContext.get(i.id,t))throw Error("Brand context not found");let{id:l,...c}=i;if(c.isDefault===!0)await u.storage.brandContext.setDefault(l,t);let E=await u.storage.brandContext.update(l,t,{name:c.name,domain:c.domain,overview:c.overview,logo:c.logo!==void 0?c.logo??null:void 0,favicon:c.favicon!==void 0?c.favicon??null:void 0,ogImage:c.ogImage!==void 0?c.ogImage??null:void 0,fonts:c.fonts!==void 0?c.fonts??null:void 0,colors:c.colors!==void 0?c.colors??null:void 0,images:c.images!==void 0?c.images??null:void 0,metadata:c.metadata!==void 0?c.metadata??null:void 0,archivedAt:c.archivedAt!==void 0?c.archivedAt??null:void 0,isDefault:c.isDefault===!1?!1:void 0});return{...E,archivedAt:E.archivedAt instanceof Date?E.archivedAt.toISOString():E.archivedAt,createdAt:E.createdAt instanceof Date?E.createdAt.toISOString():E.createdAt,updatedAt:E.updatedAt instanceof Date?E.updatedAt.toISOString():E.updatedAt}}}),i0u=li({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:PB.object({id:PB.string().describe("Brand context ID")}),outputSchema:PB.object({success:PB.boolean()}),handler:async(i,u)=>{Xi(u),await u.access.check();let t=u.organization?.id;if(!t)throw Error("Organization ID required (no active organization in context)");if(!await u.storage.brandContext.get(i.id,t))throw Error("Brand context not found");return await u.storage.brandContext.update(i.id,t,{archivedAt:new Date().toISOString(),isDefault:!1}),{success:!0}}})});async function q3i(i,u,t){let f=i.trim();if(!f.startsWith("http"))f=`https://${f}`;let l=await fetch("https://api.firecrawl.dev/v1/scrape",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${u}`},body:JSON.stringify({url:f,formats:["branding"]})});if(!l.ok){let h=await l.text().catch(()=>"");throw Error(`Firecrawl API error: ${l.status} ${h.slice(0,200)}`)}let c=await l.json();if(!c.success||!c.data?.branding)return null;let E=c.data.branding,$=c.data.metadata??{},w=KPf(E,$);return{name:$.title?.split(/[|\u2013\u2014]|\s+-\s+/).map((h)=>h.trim()).filter(Boolean)?.slice().sort((h,D)=>h.length-D.length)[0]??$.ogSiteName??t??i,domain:i,overview:$.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 KPf(i,u){let t=i.images??{},f=i.colors??{},l={};for(let[_,v]of Object.entries(f))if(typeof v==="string"&&v&&jPf.has(_))l[_]=v;let c={},$=(i.typography??{}).fontFamilies??{};for(let[_,v]of Object.entries($))if(typeof v==="string"&&v){let h=XPf[_.toLowerCase()];if(h&&!c[h])c[h]=v}let w=i.fonts;if(Array.isArray(w))for(let _ of w){let v=_.family;if(typeof v==="string"&&v&&!c.body)c.body=v}let d={};for(let _ of["typography","components","spacing","layout","animations","icons","tone","personality","colorScheme"])if(i[_]!==void 0)d[_]=i[_];return{logo:t.logo??null,favicon:t.favicon??null,ogImage:t.ogImage??u.ogImage??null,fonts:Object.keys(c).length>0?c:null,colors:Object.keys(l).length>0?l:null,metadata:d}}var jPf,XPf;var u0u=N(()=>{jPf=new Set(["primary","secondary","accent","background","foreground"]),XPf={heading:"heading",headings:"heading",head:"heading",title:"heading",body:"body",primary:"body",text:"body",code:"code",monospace:"code",mono:"code"}});import{z as V3i}from"zod";var JPf,t0u;var pg0=N(()=>{wu();u0u();$8();JPf=r9.pick({id:!0,name:!0,domain:!0,overview:!0,logo:!0,favicon:!0,ogImage:!0,fonts:!0,colors:!0}).extend({success:V3i.boolean()}),t0u=li({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:V3i.object({domain:V3i.string().describe("Website domain to extract brand from"),brandId:V3i.string().optional().describe("Existing brand context ID to update (creates new if omitted)")}),outputSchema:JPf,modelSummary:(i)=>i.success?`Brand saved (id=${i.id}, name=${i.name}, domain=${i.domain}). The UI rendered the logo, colors, fonts, and overview.`:"Brand extraction failed.",handler:async(i,u)=>{Xi(u),await u.access.check();let t=u.organization?.id;if(!t)throw Error("Organization ID required (no active organization in context)");let f=u.firecrawlApiKey;if(!f)throw Error("FIRECRAWL_API_KEY is not configured. Set the environment variable to enable brand extraction.");let l=await q3i(i.domain,f,i.domain);if(!l)throw Error("Firecrawl did not return branding data for this URL");let c={name:l.name,domain:l.domain,overview:l.overview,logo:l.logo,favicon:l.favicon,ogImage:l.ogImage,fonts:l.fonts,colors:l.colors,images:l.images,metadata:l.metadata},E=i.brandId?await(async()=>{if(!await u.storage.brandContext.get(i.brandId,t))throw Error("Brand context not found");return u.storage.brandContext.update(i.brandId,t,c)})():await u.storage.brandContext.create(t,c);return{id:E.id,name:E.name,domain:E.domain,overview:E.overview,logo:E.logo,favicon:E.favicon,ogImage:E.ogImage,fonts:E.fonts,colors:E.colors,success:!0}}})});function iN0(i){let u=i.metadata??{};return{id:i.id,name:i.name,domain:i.domain||void 0,colors:i.colors??void 0,fonts:i.fonts??void 0,assets:i.logo||i.favicon||i.ogImage?{logo:i.logo??void 0,favicon:i.favicon??void 0,ogImage:i.ogImage??void 0}:void 0,overview:i.overview||void 0,tagline:typeof u.tagline==="string"?u.tagline:void 0,tone:typeof u.tone==="string"?u.tone:void 0,metadata:(()=>{let t=Object.fromEntries(Object.entries(u).filter(([f])=>f!=="tagline"&&f!=="tone"));return Object.keys(t).length>0?t:void 0})()}}var f0u,l0u;var uN0=N(()=>{Zuu();wu();f0u=li({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:W3i,outputSchema:He,handler:async(i,u)=>{Xi(u),await u.access.check();let t=u.organization?.id;if(!t)throw Error("Organization ID required (no active organization in context)");let f=i.id?await u.storage.brandContext.get(i.id,t):await u.storage.brandContext.getDefault(t);if(!f)throw Error(i.id?"Brand not found":"No default brand configured");return iN0(f)}}),l0u=li({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:L3i,outputSchema:Q3i,handler:async(i,u)=>{Xi(u),await u.access.check();let t=u.organization?.id;if(!t)throw Error("Organization ID required (no active organization in context)");return{items:(await u.storage.brandContext.list(t)).map(iN0)}}})});import{resolveTxt as SPf}from"dns/promises";function c0u(i){return`${YPf}.${i.toLowerCase()}`}function tN0(){return`deco-verify-${crypto.randomUUID().replace(/-/g,"")}`}async function fN0(i,u,t=SPf){if(!u)return!1;try{return(await t(c0u(i))).some((l)=>l.join("").trim()===u)}catch{return!1}}var YPf="_deco-verify";var lN0=()=>{};import{z as J1}from"zod";function e9(i){let u=i.verificationStatus==="pending"&&Boolean(i.verificationToken);return{id:i.id,domain:i.domain,joinMode:i.joinMode,verificationStatus:i.verificationStatus,verificationMethod:i.verificationMethod,verifiedAt:i.verifiedAt?new Date(i.verifiedAt).toISOString():null,recordName:u?c0u(i.domain):null,recordValue:u?i.verificationToken:null}}function LPf(i){let u=i.toLowerCase().trim();if(!WPf.test(u))throw Error(`Invalid domain format: "${u}". Must be a valid domain like "acme.com"`);if(E5.has(u))throw Error(`Cannot claim generic email domain "${u}". Only corporate domains are allowed.`);return u}var WPf,E0u,r3i,$0u,w0u,d0u,_0u,v0u;var cN0=N(()=>{w8();lN0();wu();WPf=/^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)+$/,E0u=J1.enum(["off","auto","request"]),r3i=J1.object({id:J1.string(),domain:J1.string(),joinMode:E0u,verificationStatus:J1.enum(["pending","verified"]),verificationMethod:J1.enum(["email","dns"]).nullable(),verifiedAt:J1.string().nullable(),recordName:J1.string().nullable(),recordValue:J1.string().nullable()});$0u=li({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:J1.object({}),outputSchema:J1.object({domains:J1.array(r3i)}),handler:async(i,u)=>{Xi(u),await u.access.check();let t=Bi(u);return{domains:(await u.storage.organizationDomains.listByOrganizationId(t.id)).map(e9)}}}),w0u=li({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:J1.object({domain:J1.string().min(1).max(255).describe("Domain to claim, e.g. acme.com"),joinMode:E0u.optional().describe("Initial join mode (only applied when the domain is trusted immediately via email match).")}),outputSchema:r3i,handler:async(i,u)=>{Xi(u),await u.access.check();let t=Bi(u),f=LPf(i.domain),c=u.auth.user?.email?.split("@")[1]?.toLowerCase(),E=Boolean(u.auth.user?.emailVerified)&&c===f,$=await u.storage.organizationDomains.getByOrgAndDomain(t.id,f);if($){if($.verificationStatus!=="verified"&&E){let d=await u.storage.organizationDomains.markVerified($.id,"email");return e9(d)}return e9($)}let w=E?await u.storage.organizationDomains.add(t.id,f,{joinMode:i.joinMode??"off",verificationStatus:"verified",verificationMethod:"email"}):await u.storage.organizationDomains.add(t.id,f,{joinMode:"off",verificationStatus:"pending",verificationToken:tN0()});return e9(w)}}),d0u=li({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:J1.object({id:J1.string(),joinMode:E0u}),outputSchema:r3i,handler:async(i,u)=>{Xi(u),await u.access.check();let t=Bi(u),f=await u.storage.organizationDomains.getById(i.id);if(!f||f.organizationId!==t.id)throw Error("Domain not found");if(i.joinMode!=="off"&&f.verificationStatus!=="verified")throw Error("Verify the domain before enabling auto-join or requests.");let l=await u.storage.organizationDomains.updateJoinMode(i.id,i.joinMode);return e9(l)}}),_0u=li({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:J1.object({id:J1.string()}),outputSchema:J1.object({verified:J1.boolean(),domain:r3i}),handler:async(i,u)=>{Xi(u),await u.access.check();let t=Bi(u),f=await u.storage.organizationDomains.getById(i.id);if(!f||f.organizationId!==t.id)throw Error("Domain not found");if(f.verificationStatus==="verified")return{verified:!0,domain:e9(f)};if(!f.verificationToken)throw Error("Domain has no pending DNS verification.");if(!await fN0(f.domain,f.verificationToken))return{verified:!1,domain:e9(f)};let c=await u.storage.organizationDomains.markVerified(i.id,"dns");return{verified:!0,domain:e9(c)}}}),v0u=li({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:J1.object({id:J1.string()}),outputSchema:J1.object({success:J1.boolean()}),handler:async(i,u)=>{Xi(u),await u.access.check();let t=Bi(u),f=await u.storage.organizationDomains.getById(i.id);if(!f||f.organizationId!==t.id)throw Error("Domain not found");return await u.storage.organizationDomains.removeById(i.id),{success:!0}}})});import{z as Xl}from"zod";var QPf,h0u,D0u,g0u;var EN0=N(()=>{wu();e4();QPf=Xl.object({id:Xl.string(),userId:Xl.string(),status:Xl.enum(["pending","approved","denied"]),createdAt:Xl.string(),user:Xl.object({id:Xl.string(),name:Xl.string(),email:Xl.string(),image:Xl.string().nullable()}).nullable()}),h0u=li({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:Xl.object({}),outputSchema:Xl.object({requests:Xl.array(QPf)}),handler:async(i,u)=>{Xi(u),await u.access.check();let t=Bi(u);return{requests:(await u.storage.organizationJoinRequests.listPendingWithUser(t.id)).map((l)=>({id:l.id,userId:l.userId,status:l.status,createdAt:new Date(l.createdAt).toISOString(),user:l.user}))}}}),D0u=li({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:Xl.object({requestId:Xl.string()}),outputSchema:Xl.object({success:Xl.boolean()}),handler:async(i,u)=>{Xi(u),await u.access.check();let t=Bi(u),f=await u.storage.organizationJoinRequests.getById(i.requestId);if(!f||f.organizationId!==t.id)throw Error("Join request not found");if(f.status!=="pending")throw Error("Join request has already been decided");let l=Vu(u);if(!await u.storage.organizationJoinRequests.decide(f.id,"approved",l??f.userId))return{success:!0};try{await u.boundAuth.organization.addMember({organizationId:t.id,userId:f.userId,role:["user"]})}catch(E){if(!(E instanceof Error?E.message.toLowerCase():"").includes("already a member"))throw E}if(l)su.capture({distinctId:l,event:"organization_join_request_approved",groups:{organization:t.id},properties:{organization_id:t.id,user_id:f.userId}});return{success:!0}}}),g0u=li({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:Xl.object({requestId:Xl.string()}),outputSchema:Xl.object({success:Xl.boolean()}),handler:async(i,u)=>{Xi(u),await u.access.check();let t=Bi(u),f=await u.storage.organizationJoinRequests.getById(i.requestId);if(!f||f.organizationId!==t.id)throw Error("Join request not found");if(f.status!=="pending")throw Error("Join request has already been decided");let l=Vu(u);if(await u.storage.organizationJoinRequests.decide(f.id,"denied",l??f.userId)&&l)su.capture({distinctId:l,event:"organization_join_request_denied",groups:{organization:t.id},properties:{organization_id:t.id,user_id:f.userId}});return{success:!0}}})});import{z as tw}from"zod";var N0u;var $N0=N(()=>{e4();wu();nv();N0u=li({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:tw.object({organizationId:tw.string().optional(),userId:tw.string(),role:tw.array(tw.string())}),outputSchema:tw.object({id:tw.string(),organizationId:tw.string(),userId:tw.string(),role:tw.union([tw.string(),tw.array(tw.string())]),createdAt:tw.string().datetime().describe("ISO 8601 timestamp")}),handler:async(i,u)=>{Xi(u),await u.access.check();let t=i.organizationId||u.organization?.id;if(!t)throw Error("Organization ID required (no active organization in context)");if(t!==u.organization?.id)throw Error("Organization ID does not match authenticated organization");let f=Array.isArray(i.role)?i.role[0]:i.role;if(f&&!M$i(u.auth.user?.role,f))throw Error(`Insufficient privileges to assign role "${f}"`);let l=await u.boundAuth.organization.addMember({organizationId:t,userId:i.userId,role:i.role});if(!l)throw Error("Failed to add member");let c=Vu(u);if(c)su.capture({distinctId:c,event:"organization_member_added",groups:{organization:t},properties:{organization_id:t,added_user_id:i.userId,role:i.role}});return{...l,role:l.role,createdAt:l.createdAt instanceof Date?l.createdAt.toISOString():l.createdAt}}})});import{z as VQ}from"zod";var O0u;var wN0=N(()=>{e4();wu();O0u=li({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:VQ.object({organizationId:VQ.string().optional(),memberIdOrEmail:VQ.string()}),outputSchema:VQ.object({success:VQ.boolean(),memberIdOrEmail:VQ.string()}),handler:async(i,u)=>{Xi(u),await u.access.check();let t=i.organizationId||u.organization?.id;if(!t)throw Error("Organization ID required (no active organization in context)");await u.boundAuth.organization.removeMember({organizationId:t,memberIdOrEmail:i.memberIdOrEmail});let f=Vu(u);if(f)su.capture({distinctId:f,event:"organization_member_removed",groups:{organization:t},properties:{organization_id:t,member_id_or_email:i.memberIdOrEmail}});return{success:!0,memberIdOrEmail:i.memberIdOrEmail}}})});import{z as BE}from"zod";var Z0u;var dN0=N(()=>{wu();Z0u=li({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:BE.object({limit:BE.number().optional(),offset:BE.number().optional()}),outputSchema:BE.object({members:BE.array(BE.object({id:BE.string(),organizationId:BE.string(),userId:BE.string(),role:BE.string(),createdAt:BE.string().datetime().describe("ISO 8601 timestamp"),user:BE.object({id:BE.string(),name:BE.string(),email:BE.string(),image:BE.string().optional()}).optional()}))}),handler:async(i,u)=>{Xi(u),await u.access.check();let t=u.organization?.id;if(!t)throw Error("Organization ID required (no active organization in context)");let f=await u.boundAuth.organization.listMembers({organizationId:t,limit:i.limit,offset:i.offset});return{members:(Array.isArray(f)?f:[]).map((c)=>({...c,createdAt:c.createdAt instanceof Date?c.createdAt.toISOString():c.createdAt}))}}})});import{z as e6}from"zod";var B0u;var _N0=N(()=>{e4();wu();nv();B0u=li({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:e6.object({organizationId:e6.string().optional(),memberId:e6.string(),role:e6.array(e6.string())}),outputSchema:e6.object({id:e6.string(),organizationId:e6.string(),userId:e6.string(),role:e6.union([e6.literal("admin"),e6.literal("member"),e6.literal("owner")]),createdAt:e6.string().datetime().describe("ISO 8601 timestamp"),user:e6.object({email:e6.string(),name:e6.string(),image:e6.string().optional()})}),handler:async(i,u)=>{Xi(u),await u.access.check();let t=i.organizationId||u.organization?.id;if(!t)throw Error("Organization ID required (no active organization in context)");let f=Array.isArray(i.role)?i.role[0]:i.role;if(f&&!M$i(u.auth.user?.role,f))throw Error(`Insufficient privileges to assign role "${f}"`);let l=await u.boundAuth.organization.updateMemberRole({organizationId:t,memberId:i.memberId,role:i.role});if(!l)throw Error("Failed to update member role");u.invalidateMemberRole?.(l.userId,t);let c=Vu(u);if(c)su.capture({distinctId:c,event:"organization_member_role_updated",groups:{organization:t},properties:{organization_id:t,member_id:i.memberId,target_user_id:l.userId,new_role:Array.isArray(i.role)?i.role.join(","):i.role}});return{...l,createdAt:l.createdAt instanceof Date?l.createdAt.toISOString():l.createdAt}}})});var vN0=N(()=>{bg0();Rg0();Cg0();Mg0();qg0();rg0();mg0();ag0();sg0();pg0();uN0();cN0();EN0();$N0();wN0();dN0();_N0()});import{z as a9}from"zod";var y0u;var hN0=N(()=>{wu();y0u=li({name:"TAGS_LIST",description:"List all tags available in the organization.",annotations:{title:"List Tags",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:a9.object({}),outputSchema:a9.object({tags:a9.array(a9.object({id:a9.string(),organizationId:a9.string(),name:a9.string(),createdAt:a9.string().describe("ISO 8601 timestamp")}))}),handler:async(i,u)=>{Xi(u),await u.access.check();let t=Bi(u);return{tags:(await u.storage.tags.listOrgTags(t.id)).map((l)=>({...l,createdAt:l.createdAt instanceof Date?l.createdAt.toISOString():String(l.createdAt)}))}}})});import{z as o9}from"zod";var F0u;var DN0=N(()=>{wu();F0u=li({name:"TAGS_CREATE",description:"Create a new tag that can be assigned to organization members.",annotations:{title:"Create Tag",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!1},inputSchema:o9.object({name:o9.string().min(1).max(50).describe("Tag name")}),outputSchema:o9.object({tag:o9.object({id:o9.string(),organizationId:o9.string(),name:o9.string(),createdAt:o9.string().describe("ISO 8601 timestamp")})}),handler:async(i,u)=>{Xi(u),await u.access.check();let t=Bi(u),f=await u.storage.tags.createTag(t.id,i.name);return{tag:{...f,createdAt:f.createdAt instanceof Date?f.createdAt.toISOString():String(f.createdAt)}}}})});import{z as m3i}from"zod";var T0u;var gN0=N(()=>{wu();T0u=li({name:"TAGS_DELETE",description:"Delete a tag and automatically remove it from all assigned members.",annotations:{title:"Delete Tag",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:m3i.object({tagId:m3i.string().describe("Tag ID to delete")}),outputSchema:m3i.object({success:m3i.boolean()}),handler:async(i,u)=>{Xi(u),await u.access.check();let t=Bi(u),f=await u.storage.tags.getTag(i.tagId);if(!f)throw Error("Tag not found");if(f.organizationId!==t.id)throw Error("Tag does not belong to this organization");return await u.storage.tags.deleteTag(i.tagId),{success:!0}}})});import{z as d8}from"zod";var U0u;var NN0=N(()=>{wu();U0u=li({name:"MEMBER_TAGS_GET",description:"Get all tags currently assigned to a specific member.",annotations:{title:"Get Member Tags",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:d8.object({memberId:d8.string().describe("Member ID")}),outputSchema:d8.object({tags:d8.array(d8.object({id:d8.string(),organizationId:d8.string(),name:d8.string(),createdAt:d8.string().describe("ISO 8601 timestamp")}))}),handler:async(i,u)=>{Xi(u),await u.access.check();let t=Bi(u);if(!await u.storage.tags.verifyMemberOrg(i.memberId,t.id))throw Error(`Member not found in this organization: ${i.memberId}`);return{tags:(await u.storage.tags.getMemberTags(i.memberId)).map((c)=>({...c,createdAt:c.createdAt instanceof Date?c.createdAt.toISOString():String(c.createdAt)}))}}})});import{z as Td}from"zod";var P0u;var ON0=N(()=>{wu();P0u=li({name:"MEMBER_TAGS_SET",description:"Replace all tags on a member with the given set. Pass empty array to clear.",annotations:{title:"Set Member Tags",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:Td.object({memberId:Td.string().describe("Member ID"),tagIds:Td.array(Td.string()).describe("Array of tag IDs to assign")}),outputSchema:Td.object({success:Td.boolean(),tags:Td.array(Td.object({id:Td.string(),organizationId:Td.string(),name:Td.string(),createdAt:Td.string().describe("ISO 8601 timestamp")}))}),handler:async(i,u)=>{Xi(u),await u.access.check();let t=Bi(u);if(!await u.storage.tags.verifyMemberOrg(i.memberId,t.id))throw Error(`Member not found in this organization: ${i.memberId}`);for(let c of i.tagIds){let E=await u.storage.tags.getTag(c);if(!E)throw Error(`Tag not found: ${c}`);if(E.organizationId!==t.id)throw Error(`Tag does not belong to this organization: ${c}`)}return await u.storage.tags.setMemberTags(i.memberId,i.tagIds),{success:!0,tags:(await u.storage.tags.getMemberTags(i.memberId)).map((c)=>({...c,createdAt:c.createdAt instanceof Date?c.createdAt.toISOString():String(c.createdAt)}))}}})});var ZN0=N(()=>{hN0();DN0();gN0();NN0();ON0()});function rv(i,u=Date.now()){let t=i.status;if(t==="in_progress"){let f=new Date(i.updated_at).getTime();if(!Number.isFinite(f)||u-f>1800000)t="expired"}return{id:i.id,organization_id:i.organization_id,title:i.title,description:i.description,created_at:i.created_at,updated_at:i.updated_at,created_by:i.created_by,updated_by:i.updated_by,hidden:i.hidden??!1,status:t,virtual_mcp_id:i.virtual_mcp_id||void 0,trigger_id:i.trigger_id,branch:i.branch,sandbox_provider_kind:i.sandbox_provider_kind,harness_id:i.harness_id,metadata:i.metadata&&Object.keys(i.metadata).length>0?i.metadata:void 0,run_config:i.run_config}}var BN0=N(()=>{wf()});import{z as S0}from"zod";var yN0,bPf,FN0,mv,TN0,UN0;var xB=N(()=>{BN0();yN0=S0.object({id:S0.string().describe("Unique message ID"),thread_id:S0.string().describe("ID of the parent thread"),metadata:S0.unknown().optional().describe("Optional message metadata"),parts:S0.array(S0.record(S0.string(),S0.unknown())).describe("Message content parts (AI SDK UIMessagePart format)"),role:S0.enum(["user","assistant","system"]).describe("Message role"),created_at:S0.string().datetime().describe("Timestamp of creation"),updated_at:S0.string().datetime().describe("Timestamp of last update")}),bPf=S0.object({toolName:S0.string().describe("Fully qualified tool name"),appId:S0.string().describe("App ID that owns the tool"),args:S0.record(S0.string(),S0.unknown()).describe("Arguments used when expanding the tool"),expandedAt:S0.string().datetime().describe("When the tool was expanded")}),FN0=S0.object({expanded_tools:S0.array(bPf).optional()}).catchall(S0.unknown()),mv=S0.object({id:S0.string().describe("Unique thread ID"),organization_id:S0.string().describe("Organization this thread belongs to"),title:S0.string().describe("Thread title"),description:S0.string().nullable().describe("Thread description"),created_at:S0.string().datetime().describe("Timestamp of creation"),updated_at:S0.string().datetime().describe("Timestamp of last update"),hidden:S0.boolean().optional().describe("Whether the thread is hidden"),status:S0.enum([..._W,"expired"]).describe("Thread execution status. 'expired' is virtual -- computed at read time for stale in_progress threads"),created_by:S0.string().describe("User ID who created the thread"),updated_by:S0.string().optional().describe("User ID who last updated the thread"),virtual_mcp_id:S0.string().optional().describe("Virtual MCP (agent) this thread was initiated with"),trigger_id:S0.string().nullable().optional().describe("Automation trigger that created this thread; null/absent for human-initiated threads."),branch:S0.string().nullable().optional().describe("Git branch this thread is pinned to (GitHub-linked vms only)"),sandbox_provider_kind:S0.string().nullable().optional().describe("Pinned on first message; identifies which sandbox provider to dispatch to (e.g. 'agent-sandbox', 'user-desktop')."),harness_id:S0.string().nullable().optional().describe("Pinned on first message; selects which harness runs the thread (e.g. 'claude-code', 'codex', 'decopilot')."),metadata:FN0.optional().describe("Free-form per-thread UI state (e.g. expanded_tools)"),run_config:S0.record(S0.string(),S0.unknown()).nullable().optional().describe("Persisted run configuration (contains agent and model info)")}),TN0=S0.object({id:S0.string().optional().describe("Optional custom ID for the thread"),title:S0.string().optional().describe("Thread title"),description:S0.string().nullish().describe("Thread description"),virtual_mcp_id:S0.string().describe("Virtual MCP (agent) this thread is bound to"),branch:S0.string().min(1).optional().describe("Preferred branch. Used only when the vMCP has a githubRepo; ignored otherwise. When omitted, the server picks the most-recently-touched branch from the user's sandboxMap, falling back to a freshly generated name.")}),UN0=S0.object({title:S0.string().optional().describe("New thread title"),description:S0.string().nullish().describe("New thread description"),hidden:S0.boolean().optional().describe("Whether the thread is hidden"),status:S0.enum(["requires_action","failed","in_progress","completed"]).optional().describe("New thread status (user-set override). 'expired' is a computed virtual status and cannot be set directly."),metadata:FN0.optional().describe("Full replacement of the thread's metadata object"),branch:S0.string().nullish().describe("New git branch for this thread")})});function RPf(i){return(i??"").normalize("NFKD").replace(/[\u0300-\u036F]/g,"").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"user"}function e3i(i){let u=RPf(i),t=Date.now().toString(36).split("").reverse().join("");return`${u}-${t}`}import{z as PN0}from"zod";function qPf(i,u){let t=i?.[u];if(!t)return;return Object.entries(t).sort(([,l],[,c])=>{let E=Math.max(0,...Object.values(l).map((w)=>w.createdAt??0));return Math.max(0,...Object.values(c).map((w)=>w.createdAt??0))-E})[0]?.[0]}var CPf,MPf,x0u;var xN0=N(()=>{e4();wu();xB();H$();CPf=PN0.object({data:TN0.describe("Data for the new thread (id is auto-generated if not provided)")}),MPf=PN0.object({item:mv.describe("The created thread entity")});x0u=li({name:"COLLECTION_THREADS_CREATE",description:"Create a new thread for organizing messages and conversations.",annotations:{title:"Create Thread",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:CPf,outputSchema:MPf,handler:async(i,u)=>{Xi(u);let t=Bi(u);await u.access.check();let f=Vu(u);if(!f)throw Error("User ID required to create thread");let{data:l}=i,c=l.id??mf("thrd"),E=await u.storage.virtualMcps.findById(l.virtual_mcp_id,t.id);if(!E)throw Error(`Virtual MCP not found: ${l.virtual_mcp_id}`);let $=E.metadata,w=$?.githubRepo,d=null;if(w)d=l.branch??qPf($?.sandboxMap,f)??e3i(u.auth.user?.name??u.auth.user?.email?.split("@")[0]);let _=await u.storage.threads.create({id:c,organization_id:t.id,title:l.title,description:l.description,virtual_mcp_id:l.virtual_mcp_id,branch:d,created_by:f});return su.capture({distinctId:f,event:"chat_started",groups:{organization:t.id},properties:{organization_id:t.id,thread_id:c,has_title:!!i.data.title,created_via:"tool"}}),{item:rv(_)}}})});import{z as d3}from"zod";var VPf,rPf,I0u;var IN0=N(()=>{$3();wu();xB();VPf=t5.extend({where:d3.object({created_by:d3.string().optional(),trigger_ids:d3.array(d3.string()).optional(),virtual_mcp_id:d3.string().optional(),hidden:d3.boolean().optional(),has_trigger:d3.boolean().optional()}).optional(),startDate:d3.string().datetime().optional().describe("Filter threads updated at or after this ISO timestamp"),endDate:d3.string().datetime().optional().describe("Filter threads updated at or before this ISO timestamp"),search:d3.string().optional().describe("Full-text search on thread title (case-insensitive)"),status:d3.string().optional().describe("Filter by thread status (e.g. completed, failed, in_progress)"),userId:d3.string().optional().describe("Filter by the user who created the thread"),agentId:d3.string().optional().describe("Filter by agent (connection or virtual MCP) ID")}),rPf=l8(mv),I0u=li({name:"COLLECTION_THREADS_LIST",description:"List threads with filtering, sorting, and pagination.",annotations:{title:"List Threads",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:VPf,outputSchema:rPf,handler:async(i,u)=>{await u.access.check();let t=u.auth.user?.id;if(!t)throw Error("User ID required to list threads");Bi(u);let f=i.offset??0,l=i.limit??100,c=i.where?.trigger_ids,E=i.where?.virtual_mcp_id,$=i.userId??(i.where?.created_by==="me"?t:i.where?.created_by),{threads:w,total:d}=c?.length?await u.storage.threads.listByTriggerIds(c,{limit:l,offset:f}):await u.storage.threads.list($,{limit:l,offset:f,virtualMcpId:E,startDate:i.startDate,endDate:i.endDate,search:i.search,status:i.status,agentId:i.agentId,includeArchived:i.where?.hidden,hasTrigger:i.where?.has_trigger}),_=f+l<d,v=Date.now();return{items:w.map((h)=>rv(h,v)),totalCount:d,hasMore:_}}})});var mPf,A0u;var AN0=N(()=>{$3();wu();xB();mPf=Le(mv),A0u=li({name:"COLLECTION_THREADS_GET",description:"Get a thread's details and metadata by ID.",annotations:{title:"Get Thread",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:We,outputSchema:mPf,handler:async(i,u)=>{Xi(u),Bi(u),await u.access.check();let t=await u.storage.threads.get(i.id);if(!t)return{item:null};return{item:rv(t)}}})});import{z as n0u}from"zod";var ePf,aPf,G0u;var nN0=N(()=>{e4();wu();xB();ePf=n0u.object({id:n0u.string().describe("ID of the thread to update"),data:UN0.describe("Partial thread data to update")}),aPf=n0u.object({item:mv.describe("The updated thread entity")}),G0u=li({name:"COLLECTION_THREADS_UPDATE",description:"Update a thread's title, description, or visibility.",annotations:{title:"Update Thread",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:ePf,outputSchema:aPf,handler:async(i,u)=>{Xi(u);let t=Bi(u);await u.access.check();let f=Vu(u);if(!f)throw Error("User ID required to update thread");let{id:l,data:c}=i,E=await u.storage.threads.get(l);if(!E)throw Error("Thread not found in organization");if(c.branch===null&&E.virtual_mcp_id){if((await u.storage.virtualMcps.findById(E.virtual_mcp_id,Bi(u).id))?.metadata?.githubRepo)throw Error("Cannot set branch=null on a github-linked thread (vMCP has githubRepo)")}let $={title:c.title,description:c.description,hidden:c.hidden,updated_by:f};if(c.status)$.status=c.status;if(c.metadata!==void 0)$.metadata=c.metadata;if(c.branch!==void 0)$.branch=c.branch;let w=await u.storage.threads.update(l,$);if(c.hidden!==void 0&&c.hidden!==E.hidden)su.capture({distinctId:f,event:c.hidden?"chat_archived":"chat_unarchived",groups:{organization:t.id},properties:{organization_id:t.id,thread_id:l}});return{item:rv(w)}}})});var k0u;var GN0=N(()=>{$3();e4();wu();xB();k0u=li({name:"COLLECTION_THREADS_DELETE",description:"Permanently delete a thread and all its messages.",annotations:{title:"Delete Thread",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:Qe,outputSchema:ze(mv),handler:async(i,u)=>{Xi(u);let t=Bi(u);await u.access.check();let f=await u.storage.threads.get(i.id);if(!f)throw Error(`Thread not found: ${i.id}`);await u.storage.threads.delete(i.id);let l=Vu(u);if(l)su.capture({distinctId:l,event:"chat_deleted",groups:{organization:t.id},properties:{organization_id:t.id,thread_id:i.id}});return{item:rv(f)}}})});import{z as oPf}from"zod";function kN0(i){if(!i)return null;if("field"in i&&i.field[0]==="thread_id"&&i.operator==="eq")return String(i.value);if("conditions"in i)for(let u of i.conditions){let t=kN0(u);if(t)return t}return null}var sPf,pPf,j0u;var jN0=N(()=>{$3();wu();xB();sPf=t5.extend({thread_id:oPf.string().optional().describe("ID of the thread to list messages for (required)")}),pPf=l8(yN0),j0u=li({name:"COLLECTION_THREAD_MESSAGES_LIST",description:"List messages in a thread with pagination. Requires thread_id. Returns messages in chronological order.",annotations:{title:"List Thread Messages",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:sPf,outputSchema:pPf,handler:async(i,u)=>{Bi(u),await u.access.check();let t=i.thread_id??kN0(i.where);if(!t)throw Error("thread_id is required (provide as top-level param or in where clause)");let f=i.offset??0,l=i.limit??100,c=i.orderBy?.[0]?.direction??"asc",E=await u.storage.threads.get(t);if(!E)return{items:[],totalCount:0,hasMore:!1};if(E.message_storage_version===2){let{messages:_,total:v}=await u.storage.threads.messageParts().loadWindow(t,{limit:l,offset:f});return{items:_.map((h)=>({id:h.id,thread_id:t,role:h.role,parts:h.parts,metadata:h.metadata??null,created_at:h.created_at,updated_at:h.created_at})),totalCount:v,hasMore:f+l<v}}let{messages:$,total:w}=await u.storage.threads.listMessages(t,{limit:l,offset:f,sort:c}),d=f+l<w;return{items:$,totalCount:w,hasMore:d}}})});function XN0(i){return i!==null}function a3i(i,u){if(i===null)return!0;return i===u}function o3i(i){return i.sandboxProviderKind==="agent-sandbox"&&i.harnessId==="decopilot"}function KN0(i){return i.harnessId==="decopilot"&&(i.sandboxProviderKind==null||i.sandboxProviderKind==="agent-sandbox")}function uxf(i){return{type:"data-run-status",id:"run-status",data:{stage:i}}}function X0u(i){if(!i||typeof i!=="object")return!1;return i.type==="data-run-status"}async function _8(i,u,t){if(!i)return;try{await i.publishRawChunk(u,uxf(t))}catch{}}var ixf,me,ym1;var ee=N(()=>{ixf=["waiting-runner","starting-run","gathering-context","preparing-tools","starting-assistant","analyzing-scope"],me=["gathering-context","preparing-tools","starting-assistant","analyzing-scope"],ym1=new Set(ixf)});function s3i(){return crypto.randomUUID()}var J0u=K((Um1,YN0)=>{var{defineProperty:K0u,getOwnPropertyDescriptor:txf,getOwnPropertyNames:fxf}=Object,lxf=Object.prototype.hasOwnProperty,cxf=(i,u)=>{for(var t in u)K0u(i,t,{get:u[t],enumerable:!0})},Exf=(i,u,t,f)=>{if(u&&typeof u==="object"||typeof u==="function"){for(let l of fxf(u))if(!lxf.call(i,l)&&l!==t)K0u(i,l,{get:()=>u[l],enumerable:!(f=txf(u,l))||f.enumerable})}return i},$xf=(i)=>Exf(K0u({},"__esModule",{value:!0}),i),JN0={};cxf(JN0,{SYMBOL_FOR_REQ_CONTEXT:()=>SN0,getContext:()=>wxf});YN0.exports=$xf(JN0);var SN0=Symbol.for("@vercel/request-context");function wxf(){return globalThis[SN0]?.get?.()??{}}});var ae=K((Pm1,QN0)=>{var{defineProperty:S0u,getOwnPropertyDescriptor:dxf,getOwnPropertyNames:_xf}=Object,vxf=Object.prototype.hasOwnProperty,hxf=(i,u)=>{for(var t in u)S0u(i,t,{get:u[t],enumerable:!0})},Dxf=(i,u,t,f)=>{if(u&&typeof u==="object"||typeof u==="function"){for(let l of _xf(u))if(!vxf.call(i,l)&&l!==t)S0u(i,l,{get:()=>u[l],enumerable:!(f=dxf(u,l))||f.enumerable})}return i},gxf=(i)=>Dxf(S0u({},"__esModule",{value:!0}),i),WN0={};hxf(WN0,{VercelOidcTokenError:()=>LN0});QN0.exports=gxf(WN0);class LN0 extends Error{constructor(i,u){super(i);this.name="VercelOidcTokenError",this.cause=u}toString(){if(this.cause)return`${this.name}: ${this.message}: ${this.cause}`;return`${this.name}: ${this.message}`}}});var RN0=K((xm1,bN0)=>{var{create:Nxf,defineProperty:p3i,getOwnPropertyDescriptor:Oxf,getOwnPropertyNames:Zxf,getPrototypeOf:Bxf}=Object,yxf=Object.prototype.hasOwnProperty,Fxf=(i,u)=>{for(var t in u)p3i(i,t,{get:u[t],enumerable:!0})},zN0=(i,u,t,f)=>{if(u&&typeof u==="object"||typeof u==="function"){for(let l of Zxf(u))if(!yxf.call(i,l)&&l!==t)p3i(i,l,{get:()=>u[l],enumerable:!(f=Oxf(u,l))||f.enumerable})}return i},W0u=(i,u,t)=>(t=i!=null?Nxf(Bxf(i)):{},zN0(u||!i||!i.__esModule?p3i(t,"default",{value:i,enumerable:!0}):t,i)),Txf=(i)=>zN0(p3i({},"__esModule",{value:!0}),i),HN0={};Fxf(HN0,{findRootDir:()=>xxf,getUserDataDir:()=>Ixf});bN0.exports=Txf(HN0);var oe=W0u(Zi("path")),Uxf=W0u(Zi("fs")),Y0u=W0u(Zi("os")),Pxf=ae();function xxf(){try{let i=process.cwd();while(i!==oe.default.dirname(i)){let u=oe.default.join(i,".vercel");if(Uxf.default.existsSync(u))return i;i=oe.default.dirname(i)}}catch(i){throw new Pxf.VercelOidcTokenError("Token refresh only supported in node server environments")}return null}function Ixf(){if(process.env.XDG_DATA_HOME)return process.env.XDG_DATA_HOME;switch(Y0u.default.platform()){case"darwin":return oe.default.join(Y0u.default.homedir(),"Library/Application Support");case"linux":return oe.default.join(Y0u.default.homedir(),".local/share");case"win32":if(process.env.LOCALAPPDATA)return process.env.LOCALAPPDATA;return null;default:return null}}});var eN0=K((Im1,mN0)=>{var{create:Axf,defineProperty:idi,getOwnPropertyDescriptor:nxf,getOwnPropertyNames:Gxf,getPrototypeOf:kxf}=Object,jxf=Object.prototype.hasOwnProperty,Xxf=(i,u)=>{for(var t in u)idi(i,t,{get:u[t],enumerable:!0})},CN0=(i,u,t,f)=>{if(u&&typeof u==="object"||typeof u==="function"){for(let l of Gxf(u))if(!jxf.call(i,l)&&l!==t)idi(i,l,{get:()=>u[l],enumerable:!(f=nxf(u,l))||f.enumerable})}return i},MN0=(i,u,t)=>(t=i!=null?Axf(kxf(i)):{},CN0(u||!i||!i.__esModule?idi(t,"default",{value:i,enumerable:!0}):t,i)),Kxf=(i)=>CN0(idi({},"__esModule",{value:!0}),i),qN0={};Xxf(qN0,{isValidAccessToken:()=>Wxf,readAuthConfig:()=>Sxf,writeAuthConfig:()=>Yxf});mN0.exports=Kxf(qN0);var se=MN0(Zi("fs")),VN0=MN0(Zi("path")),Jxf=pe();function rN0(){let i=(0,Jxf.getVercelDataDir)();if(!i)throw Error(`Unable to find Vercel CLI data directory. Your platform: ${process.platform}. Supported: darwin, linux, win32.`);return VN0.join(i,"auth.json")}function Sxf(){try{let i=rN0();if(!se.existsSync(i))return null;let u=se.readFileSync(i,"utf8");if(!u)return null;return JSON.parse(u)}catch(i){return null}}function Yxf(i){let u=rN0(),t=VN0.dirname(u);if(!se.existsSync(t))se.mkdirSync(t,{mode:504,recursive:!0});se.writeFileSync(u,JSON.stringify(i,null,2),{mode:384})}function Wxf(i,u=0){if(!i.token)return!1;if(typeof i.expiresAt!=="number")return!0;let t=Math.floor(Date.now()/1000),f=u/1000;return i.expiresAt>=t+f}});var pN0=K((Am1,sN0)=>{var{defineProperty:z0u,getOwnPropertyDescriptor:Lxf,getOwnPropertyNames:Qxf}=Object,zxf=Object.prototype.hasOwnProperty,Hxf=(i,u)=>{for(var t in u)z0u(i,t,{get:u[t],enumerable:!0})},bxf=(i,u,t,f)=>{if(u&&typeof u==="object"||typeof u==="function"){for(let l of Qxf(u))if(!zxf.call(i,l)&&l!==t)z0u(i,l,{get:()=>u[l],enumerable:!(f=Lxf(u,l))||f.enumerable})}return i},Rxf=(i)=>bxf(z0u({},"__esModule",{value:!0}),i),aN0={};Hxf(aN0,{processTokenResponse:()=>rxf,refreshTokenRequest:()=>Vxf});sN0.exports=Rxf(aN0);var L0u=Zi("os"),Cxf="https://vercel.com",Mxf="cl_HYyOPBNtFMfHhaUn9L4QPfTZz6TP47bp",oN0=`@vercel/oidc node-${process.version} ${(0,L0u.platform)()} (${(0,L0u.arch)()}) ${(0,L0u.hostname)()}`,Q0u=null;async function qxf(){if(Q0u)return Q0u;let i=`${Cxf}/.well-known/openid-configuration`,u=await fetch(i,{headers:{"user-agent":oN0}});if(!u.ok)throw Error("Failed to discover OAuth endpoints");let t=await u.json();if(!t||typeof t.token_endpoint!=="string")throw Error("Invalid OAuth discovery response");let f=t.token_endpoint;return Q0u=f,f}async function Vxf(i){let u=await qxf();return await fetch(u,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded","user-agent":oN0},body:new URLSearchParams({client_id:Mxf,grant_type:"refresh_token",...i})})}async function rxf(i){let u=await i.json();if(!i.ok){let t=typeof u==="object"&&u&&"error"in u?String(u.error):"Token refresh failed";return[Error(t)]}if(typeof u!=="object"||u===null)return[Error("Invalid token response")];if(typeof u.access_token!=="string")return[Error("Missing access_token in response")];if(u.token_type!=="Bearer")return[Error("Invalid token_type in response")];if(typeof u.expires_in!=="number")return[Error("Missing expires_in in response")];return[null,u]}});var b0u=K((nm1,fO0)=>{var{defineProperty:H0u,getOwnPropertyDescriptor:mxf,getOwnPropertyNames:exf}=Object,axf=Object.prototype.hasOwnProperty,oxf=(i,u)=>{for(var t in u)H0u(i,t,{get:u[t],enumerable:!0})},sxf=(i,u,t,f)=>{if(u&&typeof u==="object"||typeof u==="function"){for(let l of exf(u))if(!axf.call(i,l)&&l!==t)H0u(i,l,{get:()=>u[l],enumerable:!(f=mxf(u,l))||f.enumerable})}return i},pxf=(i)=>sxf(H0u({},"__esModule",{value:!0}),i),iO0={};oxf(iO0,{AccessTokenMissingError:()=>uO0,RefreshAccessTokenFailedError:()=>tO0});fO0.exports=pxf(iO0);class uO0 extends Error{constructor(){super("No authentication found. Please log in with the Vercel CLI (vercel login).");this.name="AccessTokenMissingError"}}class tO0 extends Error{constructor(i){super("Failed to refresh authentication token.",{cause:i});this.name="RefreshAccessTokenFailedError"}}});var pe=K((Gm1,wO0)=>{var{create:iIf,defineProperty:udi,getOwnPropertyDescriptor:uIf,getOwnPropertyNames:tIf,getPrototypeOf:fIf}=Object,lIf=Object.prototype.hasOwnProperty,cIf=(i,u)=>{for(var t in u)udi(i,t,{get:u[t],enumerable:!0})},cO0=(i,u,t,f)=>{if(u&&typeof u==="object"||typeof u==="function"){for(let l of tIf(u))if(!lIf.call(i,l)&&l!==t)udi(i,l,{get:()=>u[l],enumerable:!(f=uIf(u,l))||f.enumerable})}return i},EO0=(i,u,t)=>(t=i!=null?iIf(fIf(i)):{},cO0(u||!i||!i.__esModule?udi(t,"default",{value:i,enumerable:!0}):t,i)),EIf=(i)=>cO0(udi({},"__esModule",{value:!0}),i),$O0={};cIf($O0,{assertVercelOidcTokenResponse:()=>R0u,findProjectInfo:()=>_If,getTokenPayload:()=>DIf,getVercelDataDir:()=>$If,getVercelOidcToken:()=>dIf,getVercelToken:()=>wIf,isExpired:()=>gIf,loadToken:()=>hIf,saveToken:()=>vIf});wO0.exports=EIf($O0);var ia=EO0(Zi("path")),IB=EO0(Zi("fs")),eQ=ae(),tdi=RN0(),rQ=eN0(),lO0=pN0(),mQ=b0u();function $If(){let u=(0,tdi.getUserDataDir)();if(!u)return null;return ia.join(u,"com.vercel.cli")}async function wIf(i){let u=(0,rQ.readAuthConfig)();if(!u?.token)throw new mQ.AccessTokenMissingError;if((0,rQ.isValidAccessToken)(u,i?.expirationBufferMs))return u.token;if(!u.refreshToken)throw(0,rQ.writeAuthConfig)({}),new mQ.RefreshAccessTokenFailedError("No refresh token available");try{let t=await(0,lO0.refreshTokenRequest)({refresh_token:u.refreshToken}),[f,l]=await(0,lO0.processTokenResponse)(t);if(f||!l)throw(0,rQ.writeAuthConfig)({}),new mQ.RefreshAccessTokenFailedError(f);let c={token:l.access_token,expiresAt:Math.floor(Date.now()/1000)+l.expires_in};if(l.refresh_token)c.refreshToken=l.refresh_token;return(0,rQ.writeAuthConfig)(c),c.token}catch(t){if((0,rQ.writeAuthConfig)({}),t instanceof mQ.AccessTokenMissingError||t instanceof mQ.RefreshAccessTokenFailedError)throw t;throw new mQ.RefreshAccessTokenFailedError(t)}}async function dIf(i,u,t){let f=`https://api.vercel.com/v1/projects/${u}/token?source=vercel-oidc-refresh${t?`&teamId=${t}`:""}`,l=await fetch(f,{method:"POST",headers:{Authorization:`Bearer ${i}`}});if(!l.ok)throw new eQ.VercelOidcTokenError(`Failed to refresh OIDC token: ${l.statusText}`);let c=await l.json();return R0u(c),c}function R0u(i){if(!i||typeof i!=="object")throw TypeError("Vercel OIDC token is malformed. Expected an object. Please run `vc env pull` and try again");if(!("token"in i)||typeof i.token!=="string")throw TypeError("Vercel OIDC token is malformed. Expected a string-valued token property. Please run `vc env pull` and try again")}function _If(){let i=(0,tdi.findRootDir)();if(!i)throw new eQ.VercelOidcTokenError("Unable to find project root directory. Have you linked your project with `vc link?`");let u=ia.join(i,".vercel","project.json");if(!IB.existsSync(u))throw new eQ.VercelOidcTokenError("project.json not found, have you linked your project with `vc link?`");let t=JSON.parse(IB.readFileSync(u,"utf8"));if(typeof t.projectId!=="string"&&typeof t.orgId!=="string")throw TypeError("Expected a string-valued projectId property. Try running `vc link` to re-link your project.");return{projectId:t.projectId,teamId:t.orgId}}function vIf(i,u){let t=(0,tdi.getUserDataDir)();if(!t)throw new eQ.VercelOidcTokenError("Unable to find user data directory. Please reach out to Vercel support.");let f=ia.join(t,"com.vercel.token",`${u}.json`),l=JSON.stringify(i);IB.mkdirSync(ia.dirname(f),{mode:504,recursive:!0}),IB.writeFileSync(f,l),IB.chmodSync(f,432);return}function hIf(i){let u=(0,tdi.getUserDataDir)();if(!u)throw new eQ.VercelOidcTokenError("Unable to find user data directory. Please reach out to Vercel support.");let t=ia.join(u,"com.vercel.token",`${i}.json`);if(!IB.existsSync(t))return null;let f=JSON.parse(IB.readFileSync(t,"utf8"));return R0u(f),f}function DIf(i){let u=i.split(".");if(u.length!==3)throw new eQ.VercelOidcTokenError("Invalid token. Please run `vc env pull` and try again");let t=u[1].replace(/-/g,"+").replace(/_/g,"/"),f=t.padEnd(t.length+(4-t.length%4)%4,"=");return JSON.parse(Buffer.from(f,"base64").toString("utf8"))}function gIf(i,u=0){return i.exp*1000<Date.now()+u}});var hO0=K((km1,vO0)=>{var{defineProperty:C0u,getOwnPropertyDescriptor:NIf,getOwnPropertyNames:OIf}=Object,ZIf=Object.prototype.hasOwnProperty,BIf=(i,u)=>{for(var t in u)C0u(i,t,{get:u[t],enumerable:!0})},yIf=(i,u,t,f)=>{if(u&&typeof u==="object"||typeof u==="function"){for(let l of OIf(u))if(!ZIf.call(i,l)&&l!==t)C0u(i,l,{get:()=>u[l],enumerable:!(f=NIf(u,l))||f.enumerable})}return i},FIf=(i)=>yIf(C0u({},"__esModule",{value:!0}),i),_O0={};BIf(_O0,{refreshToken:()=>TIf});vO0.exports=FIf(_O0);var dO0=ae(),s9=pe();async function TIf(i){let u=i?.project,t=i?.team;if(!u&&!t){let l=(0,s9.findProjectInfo)();u=l.projectId,t=l.teamId}else if(!u||!t){let l=(0,s9.findProjectInfo)();u=u??l.projectId,t=t??l.teamId}if(!u)throw new dO0.VercelOidcTokenError("Failed to refresh OIDC token: No project specified. Try re-linking your project with `vc link`");let f=(0,s9.loadToken)(u);if(!f||(0,s9.isExpired)((0,s9.getTokenPayload)(f.token),i?.expirationBufferMs)){let l=await(0,s9.getVercelToken)({expirationBufferMs:i?.expirationBufferMs});if(f=await(0,s9.getVercelOidcToken)(l,u,t),!f)throw new dO0.VercelOidcTokenError("Failed to refresh OIDC token");(0,s9.saveToken)(f,u)}process.env.VERCEL_OIDC_TOKEN=f.token;return}});var NO0=K((jm1,gO0)=>{var{defineProperty:q0u,getOwnPropertyDescriptor:UIf,getOwnPropertyNames:PIf}=Object,xIf=Object.prototype.hasOwnProperty,IIf=(i,u)=>{for(var t in u)q0u(i,t,{get:u[t],enumerable:!0})},AIf=(i,u,t,f)=>{if(u&&typeof u==="object"||typeof u==="function"){for(let l of PIf(u))if(!xIf.call(i,l)&&l!==t)q0u(i,l,{get:()=>u[l],enumerable:!(f=UIf(u,l))||f.enumerable})}return i},nIf=(i)=>AIf(q0u({},"__esModule",{value:!0}),i),DO0={};IIf(DO0,{getVercelOidcToken:()=>jIf,getVercelOidcTokenSync:()=>M0u});gO0.exports=nIf(DO0);var GIf=J0u(),kIf=ae();async function jIf(i){let u="",t;try{u=M0u()}catch(f){t=f}try{let[{getTokenPayload:f,isExpired:l},{refreshToken:c}]=await Promise.all([await Promise.resolve().then(() => k(pe())),await Promise.resolve().then(() => k(hO0()))]);if(!u||l(f(u),i?.expirationBufferMs))await c(i),u=M0u()}catch(f){let l=t instanceof Error?t.message:"";if(f instanceof Error)l=`${l}
83247
+ `.execute(i)).rows[0]?.exists)await bf`CREATE ROLE ${bf.id(t)} NOLOGIN`.execute(i);await bf`GRANT ${bf.id(t)} TO CURRENT_USER`.execute(i),await bf`GRANT USAGE, CREATE ON SCHEMA ${bf.id(u)} TO ${bf.id(t)}`.execute(i),await bf`GRANT ALL ON ALL TABLES IN SCHEMA ${bf.id(u)} TO ${bf.id(t)}`.execute(i),await bf`GRANT ALL ON ALL SEQUENCES IN SCHEMA ${bf.id(u)} TO ${bf.id(t)}`.execute(i),await bf`ALTER DEFAULT PRIVILEGES IN SCHEMA ${bf.id(u)} GRANT ALL ON TABLES TO ${bf.id(t)}`.execute(i),await bf`ALTER DEFAULT PRIVILEGES IN SCHEMA ${bf.id(u)} GRANT ALL ON SEQUENCES TO ${bf.id(t)}`.execute(i),await bf`REVOKE ALL ON SCHEMA public FROM ${bf.id(t)}`.execute(i)}async function EPf(i,u,t,f){try{return await i.transaction().execute(async(l)=>{return await bf`SET LOCAL ROLE ${bf.id(t)}`.execute(l),await bf`SET LOCAL search_path TO ${bf.id(u)}`.execute(l),await bf.raw(f).execute(l)})}catch(l){if(lPf(l))return await cPf(i,u,t),await i.transaction().execute(async(c)=>{return await bf`SET LOCAL ROLE ${bf.id(t)}`.execute(c),await bf`SET LOCAL search_path TO ${bf.id(u)}`.execute(c),await bf.raw(f).execute(c)});throw l}}var pUf,uPf,Tg0;var Ug0=N(()=>{wu();pUf=Vv.object({results:Vv.array(Vv.unknown()).optional(),success:Vv.boolean().optional()});uPf=Vv.object({sql:Vv.string().describe("The SQL query to run"),params:Vv.array(Vv.any()).describe("The parameters to pass to the SQL query").optional()});Tg0=li({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:uPf,outputSchema:Vv.object({result:Vv.array(pUf)}),handler:async(i,u)=>{Xi(u),await u.access.check();let t=iPf(i.sql,i.params||[]);if(!u.connectionId)throw Error("Connection context required for database access");console.warn("DATABASES_RUN_SQL invoked",{"tool.deprecation_probe":"DATABASES_RUN_SQL","connection.id":u.connectionId,"organization.id":u.organization?.id??null,"user.id":u.auth.user?.id??null});let f=tPf(u.connectionId),l=fPf(u.connectionId);return{result:[{results:(await EPf(u.db,f,l,t)).rows,success:!0}]}}})});function R3i(i){let u=i.access.getRole();if(!u||!$d.includes(u))throw new MD("Only organization owners and admins can change org-wide pin status")}var Iuu=N(()=>{nv();zZ()});import{z as Ig0}from"zod";function wPf(){let i=Pg0[Math.floor(Math.random()*Pg0.length)];return`icon://${xg0[Math.floor(Math.random()*xg0.length)]}?color=${i}`}var Pg0,xg0,dPf,_Pf,Auu;var Ag0=N(()=>{wu();C7();Iuu();Pg0=["red","orange","amber","yellow","lime","green","emerald","cyan","sky","blue","indigo","violet","purple","fuchsia","pink","rose"],xg0=["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"];dPf=Ig0.object({data:Xq.describe("Data for the new virtual MCP")}),_Pf=Ig0.object({item:yc.describe("The created virtual MCP entity")}),Auu=li({name:"COLLECTION_VIRTUAL_MCP_CREATE",description:"Create a Virtual MCP that aggregates tools from multiple connections into one endpoint.",annotations:{title:"Create Virtual MCP",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!1},inputSchema:dPf,outputSchema:_Pf,handler:async(i,u)=>{Xi(u);let t=Bi(u);await u.access.check();let f=Vu(u);if(!f)throw Error("User ID required to create virtual MCP");if(i.data.pinned===!0)R3i(u);let l={...i.data,icon:i.data.icon??wPf()};return{item:await u.storage.virtualMcps.create(t.id,f,l)}}})});function vPf(i){let u=[],t=0;while(t<i.length){let f=i[t];if(f==="%")u.push(".*");else if(f==="_")u.push(".");else if(/[.*+?^${}()|[\]\\]/.test(f))u.push("\\"+f);else u.push(f);t++}return u.join("")}function V9(i){return typeof i==="string"||typeof i==="number"}function nuu(i,u){let t=u.split("."),f=i;for(let l of t){if(f==null||typeof f!=="object")return;f=f[l]}return f}function hPf(i,u){return i.connections.some((t)=>t.connection_id===u)}function C3i(i,u){if("conditions"in u){let{operator:$,conditions:w}=u;switch($){case"and":return w.every((d)=>C3i(i,d));case"or":return w.some((d)=>C3i(i,d));case"not":return!w.every((d)=>C3i(i,d));default:return!0}}let{field:t,operator:f,value:l}=u,c=t.join(".");if(c==="connection_id"){if(f!=="eq"||typeof l!=="string")return!1;return hPf(i,l)}let E=nuu(i,c);switch(f){case"eq":return E===l;case"gt":return V9(E)&&V9(l)&&E>l;case"gte":return V9(E)&&V9(l)&&E>=l;case"lt":return V9(E)&&V9(l)&&E<l;case"lte":return V9(E)&&V9(l)&&E<=l;case"in":return Array.isArray(l)&&l.includes(E);case"like":if(typeof E!=="string"||typeof l!=="string")return!1;if(l.length>100)return!1;let $=vPf(l);return new RegExp(`^${$}$`,"i").test(E);case"contains":if(typeof E!=="string"||typeof l!=="string")return!1;return E.toLowerCase().includes(l.toLowerCase());default:return!0}}function DPf(i,u){return[...i].sort((t,f)=>{for(let l of u){let c=l.field.join("."),E=nuu(t,c),$=nuu(f,c),w=0;if(E==null&&$==null)continue;if(E==null)w=l.nulls==="first"?-1:1;else if($==null)w=l.nulls==="first"?1:-1;else if(typeof E==="string"&&typeof $==="string")w=E.localeCompare($);else if(typeof E==="number"&&typeof $==="number")w=E-$;else w=String(E).localeCompare(String($));if(w!==0)return l.direction==="desc"?-w:w}return 0})}var gPf,NPf,Guu;var ng0=N(()=>{$3();wu();C7();gPf=t5,NPf=l8(yc),Guu=li({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:gPf,outputSchema:NPf,handler:async(i,u)=>{await u.access.check();let t=Bi(u),f=i.where&&!("conditions"in i.where)&&i.where.field.join(".")==="connection_id"&&i.where.operator==="eq"&&typeof i.where.value==="string"?i.where.value:void 0,l=i.where&&!("conditions"in i.where)&&i.where.field.join(".")==="pinned"&&i.where.operator==="eq"&&typeof i.where.value==="boolean"?i.where.value:void 0,E=f?await u.storage.virtualMcps.listByConnectionId(t.id,f):await u.storage.virtualMcps.list(t.id,l!==void 0?{pinnedOnly:l}:void 0);if(i.where)E=E.filter((h)=>C3i(h,i.where));if(i.orderBy&&i.orderBy.length>0)E=DPf(E,i.orderBy);let $=E.length,w=i.offset??0,d=i.limit??100,_=E.slice(w,w+d),v=w+d<$;return{items:_,totalCount:$,hasMore:v}}})});import{z as kuu}from"zod";var OPf,ZPf,juu;var Gg0=N(()=>{wu();C7();OPf=kuu.object({id:kuu.string().describe("ID of the virtual MCP to retrieve")}),ZPf=kuu.object({item:yc.nullable().describe("The retrieved virtual MCP, or null if not found")}),juu=li({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:OPf,outputSchema:ZPf,handler:async(i,u)=>{Xi(u);let t=Bi(u);await u.access.check();let f=await u.storage.virtualMcps.findById(i.id);if(f&&f.organization_id!==t.id)return{item:null};if(!f)return{item:null};return{item:f}}})});import{z as Xuu}from"zod";var BPf,yPf,Kuu;var kg0=N(()=>{wu();C7();Iuu();BPf=Xuu.object({id:Xuu.string().describe("ID of the virtual MCP to update"),data:Kq.describe("Partial virtual MCP data to update")}),yPf=Xuu.object({item:yc.describe("The updated virtual MCP entity")}),Kuu=li({name:"COLLECTION_VIRTUAL_MCP_UPDATE",description:"Update a Virtual MCP's name, slug, or connection list.",annotations:{title:"Update Virtual MCP",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:BPf,outputSchema:yPf,handler:async(i,u)=>{Xi(u);let t=Bi(u);await u.access.check();let f=Vu(u);if(!f)throw Error("User ID required to update virtual MCP");let l=await u.storage.virtualMcps.findById(i.id);if(!l)throw Error(`Virtual MCP not found: ${i.id}`);if(l.organization_id!==t.id)throw Error(`Virtual MCP not found: ${i.id}`);let c={...i.data};if(c.metadata&&l.metadata)c.metadata={...l.metadata,...c.metadata};if(c.pinned!==void 0&&c.pinned!==l.pinned)R3i(u);return{item:await u.storage.virtualMcps.update(i.id,f,c)}}})});import{z as Juu}from"zod";var FPf,TPf,Suu;var jg0=N(()=>{SQ();u5();wu();C7();FPf=Juu.object({id:Juu.string().describe("ID of the virtual MCP to delete")}),TPf=Juu.object({item:yc.describe("The deleted virtual MCP entity")}),Suu=li({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:FPf,outputSchema:TPf,handler:async(i,u)=>{Xi(u);let t=Bi(u);await u.access.check();let f=await u.storage.virtualMcps.findById(i.id);if(!f)throw Error(`Virtual MCP not found: ${i.id}`);if(f.organization_id!==t.id)throw Error(`Virtual MCP not found: ${i.id}`);await u.storage.virtualMcps.delete(i.id);let l=f.metadata?.githubRepo?.connectionId;if(l)try{let c=await u.storage.connections.findById(l,t.id);if(c&&Rv(c)){let $=await new q1(u.db,u.vault).get(l);if($?.accessToken)try{await fetch("https://api.github.com/installation/token",{method:"DELETE",headers:{Authorization:`Bearer ${$.accessToken}`,Accept:"application/vnd.github+json","X-GitHub-Api-Version":"2022-11-28"},signal:AbortSignal.timeout(5000)})}catch{}await u.storage.connections.delete(l)}}catch(c){console.error("[VIRTUAL_MCP_DELETE] failed to tear down repo-scoped connection",{childConnectionId:l,error:c.message})}return{item:f}}})});import{z as uw}from"zod";var UPf,Yuu;var Xg0=N(()=>{wu();UPf=uw.object({id:uw.string(),virtualMcpId:uw.string(),pluginId:uw.string(),connectionId:uw.string().nullable(),settings:uw.record(uw.string(),uw.unknown()).nullable(),createdAt:uw.string(),updatedAt:uw.string()}),Yuu=li({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:uw.object({virtualMcpId:uw.string().describe("Virtual MCP ID"),pluginId:uw.string().describe("Plugin ID")}),outputSchema:uw.object({config:UPf.nullable()}),handler:async(i,u)=>{Xi(u),await u.access.check();let{virtualMcpId:t,pluginId:f}=i,l=await u.storage.virtualMcpPluginConfigs.get(t,f);if(!l)return{config:null};return{config:{id:l.id,virtualMcpId:l.virtualMcpId,pluginId:l.pluginId,connectionId:l.connectionId,settings:l.settings,createdAt:l.createdAt instanceof Date?l.createdAt.toISOString():l.createdAt,updatedAt:l.updatedAt instanceof Date?l.updatedAt.toISOString():l.updatedAt}}}})});import{z as m6}from"zod";var PPf,Wuu;var Kg0=N(()=>{wu();BW();HE();PPf=m6.object({id:m6.string(),virtualMcpId:m6.string(),pluginId:m6.string(),connectionId:m6.string().nullable(),settings:m6.record(m6.string(),m6.unknown()).nullable(),createdAt:m6.string(),updatedAt:m6.string()}),Wuu=li({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:m6.object({virtualMcpId:m6.string().describe("Virtual MCP ID"),pluginId:m6.string().describe("Plugin ID"),connectionId:m6.string().nullable().optional().describe("MCP connection to bind"),settings:m6.record(m6.string(),m6.unknown()).nullable().optional().describe("Plugin-specific settings")}),outputSchema:m6.object({config:PPf}),handler:async(i,u)=>{Xi(u),await u.access.check();let{virtualMcpId:t,pluginId:f,connectionId:l,settings:c}=i,E=Vu(u),$=await u.storage.connections.findById(t);if(!$)throw Error(`Connection not found: ${t}`);let w=l?await u.storage.connections.findById(l):null;if(l&&$.organization_id&&!w&&X_()){if($ci(l,$.organization_id)){if(!E)throw Error("User ID required to create dev-assets connection");let _=ZW($.organization_id,zl());await u.storage.connections.create({..._,organization_id:$.organization_id,created_by:E})}}let d=await u.storage.virtualMcpPluginConfigs.upsert(t,f,{connectionId:l,settings:c});return{config:{id:d.id,virtualMcpId:d.virtualMcpId,pluginId:d.pluginId,connectionId:d.connectionId,settings:d.settings,createdAt:d.createdAt instanceof Date?d.createdAt.toISOString():d.createdAt,updatedAt:d.updatedAt instanceof Date?d.updatedAt.toISOString():d.updatedAt}}}})});import{z as l$}from"zod";var xPf,Luu;var Jg0=N(()=>{wu();C7();xPf=l$.object({connectionId:l$.string(),toolName:l$.string(),label:l$.string(),icon:l$.string().nullable().optional()}),Luu=li({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:l$.object({virtualMcpId:l$.string().describe("Virtual MCP ID"),pinnedViews:l$.array(xPf).describe("Pinned views to set for the virtual MCP sidebar"),layout:l$.object({defaultMainView:l$.object({type:l$.string(),id:l$.string().optional(),toolName:l$.string().optional()}).nullable().optional(),chatDefaultOpen:l$.boolean().nullable().optional()}).optional()}),outputSchema:l$.object({item:yc.nullable()}),handler:async(i,u)=>{Xi(u);let t=Bi(u);await u.access.check();let{virtualMcpId:f,pinnedViews:l,layout:c}=i,E=Vu(u),$=await u.storage.virtualMcps.findById(f);if(!$)throw Error(`Virtual MCP not found: ${f}`);if($.organization_id!==t.id)throw Error(`Virtual MCP not found: ${f}`);let w=$.metadata?.ui??{},d={...w,pinnedViews:l.length>0?l:null,layout:c??w.layout??null};return{item:await u.storage.virtualMcps.update(f,E??"system",{metadata:{...$.metadata,ui:d}})}}})});import{z as E8}from"zod";var IPf,APf,Quu;var Sg0=N(()=>{wu();IPf=E8.object({ids:E8.array(E8.string()).describe("Virtual MCP ids to look up")}),APf=E8.object({items:E8.array(E8.object({id:E8.string(),last_used_at:E8.string().optional(),last_used_by:E8.string().optional()}))}),Quu=li({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:IPf,outputSchema:APf,handler:async(i,u)=>{Xi(u),Bi(u),await u.access.check();let t=await u.storage.threads.findLastUsedByVirtualMcpIds(i.ids);return{items:i.ids.map((f)=>({id:f,last_used_at:t.get(f)?.last_used_at,last_used_by:t.get(f)?.last_used_by}))}}})});var Yg0=N(()=>{Ag0();ng0();Gg0();kg0();jg0();Xg0();Kg0();Jg0();Sg0()});import{z as T1}from"zod";var zuu;var Wg0=N(()=>{z1();wu();zuu=li({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:T1.object({id:T1.string().describe("Log ID to fetch")}),outputSchema:T1.object({log:T1.object({id:T1.string().optional(),organizationId:T1.string(),connectionId:T1.string(),toolName:T1.string(),input:T1.record(T1.string(),T1.unknown()),output:T1.record(T1.string(),T1.unknown()),isError:T1.boolean(),errorMessage:T1.string().nullish(),durationMs:T1.number(),timestamp:T1.string(),userId:T1.string().nullish(),requestId:T1.string(),userAgent:T1.string().nullish(),virtualMcpId:T1.string().nullish(),properties:T1.record(T1.string(),T1.string()).nullish()}).nullable().describe("The monitoring log, or null if not found")}),handler:async(i,u)=>{await u.access.check(),await C3();let t=Bi(u),f=await u.storage.monitoring.getById(t.id,i.id);if(!f)return{log:null};return{log:{...f,timestamp:f.timestamp instanceof Date?f.timestamp.toISOString():f.timestamp}}}})});import{z as Zt}from"zod";var GPf,Huu;var Lg0=N(()=>{z1();wu();GPf=Zt.object({id:Zt.string().optional().describe("Unique log identifier"),organizationId:Zt.string().describe("Organization ID"),connectionId:Zt.string().describe("Connection ID"),toolName:Zt.string().describe("Name of the tool that was called"),isError:Zt.boolean().describe("Whether the call resulted in an error"),errorMessage:Zt.string().nullish().describe("Error message if applicable"),durationMs:Zt.number().describe("Call duration in milliseconds"),timestamp:Zt.string().describe("ISO 8601 timestamp of the call"),userId:Zt.string().nullish().describe("User who triggered the call"),requestId:Zt.string().describe("Unique request identifier"),userAgent:Zt.string().nullish().describe("Client identifier (x-mesh-client header)"),virtualMcpId:Zt.string().nullish().describe("Virtual MCP (Agent) ID if routed through an agent"),properties:Zt.record(Zt.string(),Zt.string()).nullish().describe("Custom key-value metadata attached to the log")}),Huu=li({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:Zt.object({connectionId:Zt.string().optional().describe("Filter by connection ID"),excludeConnectionIds:Zt.array(Zt.string()).optional().describe("Exclude logs from these connection IDs (e.g. system connections)"),virtualMcpId:Zt.string().optional().describe("Filter by Virtual MCP (Agent) ID"),toolName:Zt.string().optional().describe("Filter by tool name"),isError:Zt.boolean().optional().describe("Filter by error status"),startDate:Zt.string().datetime().optional().describe("Filter by start date (ISO 8601 datetime string)"),endDate:Zt.string().datetime().optional().describe("Filter by end date (ISO 8601 datetime string)"),limit:Zt.number().default(20).describe("Maximum number of results"),offset:Zt.number().default(0).describe("Offset for pagination"),properties:Zt.record(Zt.string(),Zt.string()).optional().describe("Filter by exact property key=value matches"),propertyKeys:Zt.array(Zt.string()).optional().describe("Filter by logs that have these property keys"),propertyPatterns:Zt.record(Zt.string(),Zt.string()).optional().describe("Filter by property value patterns (SQL LIKE, use % as wildcard)"),propertyInValues:Zt.record(Zt.string(),Zt.string()).optional().describe("Filter by exact match within comma-separated values (e.g., user_tags in 'Engineering')")}),outputSchema:Zt.object({logs:Zt.array(GPf).describe("Array of monitoring logs"),total:Zt.number().describe("Total number of logs matching filters"),offset:Zt.number().describe("Current offset for pagination"),limit:Zt.number().describe("Current limit for pagination")}),handler:async(i,u)=>{await C3();let t=Bi(u),l=i.properties||i.propertyKeys||i.propertyPatterns||i.propertyInValues?{properties:i.properties,propertyKeys:i.propertyKeys,propertyPatterns:i.propertyPatterns,propertyInValues:i.propertyInValues}:void 0,c={organizationId:t.id,connectionId:i.connectionId,excludeConnectionIds:i.excludeConnectionIds,virtualMcpId:i.virtualMcpId,toolName:i.toolName,isError:i.isError,startDate:i.startDate?new Date(i.startDate):void 0,endDate:i.endDate?new Date(i.endDate):void 0,limit:i.limit,offset:i.offset,propertyFilters:l},E=await u.storage.monitoring.query(c);return{logs:E.logs.map(({input:$,output:w,...d})=>({...d,timestamp:d.timestamp instanceof Date?d.timestamp.toISOString():d.timestamp})),total:E.total,offset:i.offset,limit:i.limit}}})});import{z as v0}from"zod";var buu;var Qg0=N(()=>{z1();wu();buu=li({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:v0.object({startDate:v0.string().datetime().optional().describe("Filter by start date (ISO 8601 datetime string)"),endDate:v0.string().datetime().optional().describe("Filter by end date (ISO 8601 datetime string)"),interval:v0.string().regex(/^\d+[mhd]$/).optional().describe("Bucket interval for timeseries data (e.g. 1m, 5m, 2h, 1d). When provided, returns timeseries array."),connectionIds:v0.array(v0.string()).max(100).optional().describe("Filter by specific connection IDs (max 100)"),excludeConnectionIds:v0.array(v0.string()).max(100).optional().describe("Exclude specific connection IDs (max 100)"),toolNames:v0.array(v0.string()).max(100).optional().describe("Filter by specific tool names (max 100)"),status:v0.enum(["success","error"]).optional().describe("Filter metrics by execution status"),topN:v0.number().int().min(1).max(20).optional().describe("When provided with interval, also return top tools and their timeseries"),userIds:v0.array(v0.string()).max(100).optional().describe("Filter LLM usage by user IDs (only applied when llmUsage is true)"),llmUsage:v0.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:v0.object({totalCalls:v0.number().describe("Total number of tool calls"),errorRate:v0.number().optional().describe("Error rate as a decimal (0 to 1)"),avgDurationMs:v0.number().describe("Average call duration in milliseconds"),errorRatePercent:v0.string().optional().describe("Error rate as a percentage string"),totalErrors:v0.number().optional().describe("Total number of errors"),p50DurationMs:v0.number().optional().describe("50th percentile duration in milliseconds"),p95DurationMs:v0.number().optional().describe("95th percentile duration in milliseconds"),connectionBreakdown:v0.array(v0.object({connectionId:v0.string(),calls:v0.number(),errors:v0.number(),errorRate:v0.number(),avgDurationMs:v0.number()})).optional().describe("Per-connection metric breakdown"),totalInputTokens:v0.number().optional().describe("Total input tokens (LLM usage mode)"),totalOutputTokens:v0.number().optional().describe("Total output tokens (LLM usage mode)"),totalTokens:v0.number().optional().describe("Total tokens (LLM usage mode)"),totalCostUsd:v0.number().optional().describe("Total USD cost (LLM usage mode; only non-zero for providers that report cost)"),topTools:v0.array(v0.object({toolName:v0.string(),connectionId:v0.string().nullable(),calls:v0.number(),inputTokens:v0.number().optional(),outputTokens:v0.number().optional(),costUsd:v0.number().optional()})).optional().describe("Top tools ranked by calls"),topToolsTimeseries:v0.array(v0.object({timestamp:v0.string(),toolName:v0.string(),calls:v0.number(),errors:v0.number(),avg:v0.number(),p95:v0.number()})).optional().describe("Per-tool metric timeseries for the top tools"),timeseries:v0.array(v0.object({timestamp:v0.string(),calls:v0.number(),errors:v0.number(),errorRate:v0.number(),avg:v0.number(),p50:v0.number(),p95:v0.number(),inputTokens:v0.number().optional(),outputTokens:v0.number().optional(),totalTokens:v0.number().optional(),costUsd:v0.number().optional()})).optional().describe("Timeseries data points bucketed by interval")}),handler:async(i,u)=>{let t=Bi(u);if(await u.access.check(),await C3(),i.interval&&i.llmUsage)return u.storage.monitoring.queryLlmUsageStats({organizationId:t.id,interval:i.interval,connectionId:i.connectionIds?.[0]??"decopilot",startDate:i.startDate?new Date(i.startDate):void 0,endDate:i.endDate?new Date(i.endDate):void 0,userIds:i.userIds,topN:i.topN});if(i.interval){let l=await u.storage.monitoring.queryMetricTimeseries({organizationId:t.id,interval:i.interval,startDate:i.startDate?new Date(i.startDate):void 0,endDate:i.endDate?new Date(i.endDate):void 0,filters:{connectionIds:i.connectionIds,excludeConnectionIds:i.excludeConnectionIds,toolNames:i.toolNames,status:i.status}});if(!i.topN)return l;let c=await u.storage.monitoring.queryMetricTopToolsTimeseries({organizationId:t.id,interval:i.interval,startDate:i.startDate?new Date(i.startDate):void 0,endDate:i.endDate?new Date(i.endDate):void 0,topN:i.topN,filters:{connectionIds:i.connectionIds,excludeConnectionIds:i.excludeConnectionIds,toolNames:i.toolNames,status:i.status}});return{...l,topTools:c.topTools,topToolsTimeseries:c.timeseries}}let f=await u.storage.monitoring.getStats({organizationId:t.id,startDate:i.startDate?new Date(i.startDate):void 0,endDate:i.endDate?new Date(i.endDate):void 0});return{...f,errorRatePercent:(f.errorRate*100).toFixed(2)}}})});import{z as c$}from"zod";var Ruu;var zg0=N(()=>{z1();wu();Ruu=li({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:c$.object({threadIds:c$.array(c$.string()).min(1).max(500).describe("Thread IDs to aggregate usage for (max 500)"),connectionId:c$.string().optional().describe("LLM connection ID (defaults to 'decopilot')"),startDate:c$.string().datetime().optional().describe("Filter by start date (ISO 8601 datetime string)"),endDate:c$.string().datetime().optional().describe("Filter by end date (ISO 8601 datetime string)")}),outputSchema:c$.object({items:c$.array(c$.object({threadId:c$.string(),calls:c$.number(),inputTokens:c$.number(),outputTokens:c$.number(),totalTokens:c$.number(),costUsd:c$.number()}))}),handler:async(i,u)=>{let t=Bi(u);return await u.access.check(),await C3(),{items:await u.storage.monitoring.queryThreadUsage({organizationId:t.id,connectionId:i.connectionId??"decopilot",threadIds:i.threadIds,startDate:i.startDate?new Date(i.startDate):void 0,endDate:i.endDate?new Date(i.endDate):void 0})}}})});var Hg0=N(()=>{Wg0();Lg0();Qg0();zg0()});import{z as w3}from"zod";var Cuu;var bg0=N(()=>{wu();Cuu=li({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:w3.object({slug:w3.string().min(1).max(50).regex(/^[a-z0-9-]+$/,"Slug must be lowercase alphanumeric with hyphens"),name:w3.string().min(1).max(255),description:w3.string().optional()}),outputSchema:w3.object({id:w3.string(),name:w3.string(),slug:w3.string(),logo:w3.string().nullable().optional(),metadata:w3.any().optional(),createdAt:w3.string().datetime().describe("ISO 8601 timestamp"),members:w3.array(w3.any()).optional()}),handler:async(i,u)=>{Xi(u),await u.access.check();let t=Vu(u);if(!t)throw Error("User ID required to create organization");let f=await u.boundAuth.organization.create({name:i.name,slug:i.slug,metadata:i.description?{description:i.description}:void 0,userId:t});if(!f)throw Error("Failed to create organization");return{...f,createdAt:f.createdAt instanceof Date?f.createdAt.toISOString():f.createdAt}}})});import{z as f5}from"zod";var Muu;var Rg0=N(()=>{wu();Muu=li({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:f5.object({userId:f5.string().optional()}),outputSchema:f5.object({organizations:f5.array(f5.object({id:f5.string(),name:f5.string(),slug:f5.string(),logo:f5.string().nullable().optional(),metadata:f5.any().optional(),createdAt:f5.string().datetime().describe("ISO 8601 timestamp")}))}),handler:async(i,u)=>{Xi(u),await u.access.check();let t=Vu(u),f=i.userId||t;if(!f)throw Error("User ID required to list organizations");return{organizations:(await u.boundAuth.organization.list(f)).map((c)=>({...c,createdAt:c.createdAt instanceof Date?c.createdAt.toISOString():c.createdAt}))}}})});import{z as yd}from"zod";var quu;var Cg0=N(()=>{wu();quu=li({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:yd.object({}),outputSchema:yd.object({id:yd.string(),name:yd.string(),slug:yd.string(),logo:yd.string().nullable().optional(),metadata:yd.any().optional(),createdAt:yd.string().datetime().describe("ISO 8601 timestamp"),members:yd.array(yd.any()).optional(),invitations:yd.array(yd.any()).optional()}),handler:async(i,u)=>{Xi(u),await u.access.check();let t=u.organization?.id;if(!t)throw Error("Organization ID required (no active organization in context)");let f=await u.boundAuth.organization.get(t);if(!f)throw Error("No active organization found");let l=new Date,c=f.invitations?.filter((E)=>new Date(E.expiresAt)>l);return{...f,invitations:c,createdAt:f.createdAt instanceof Date?f.createdAt.toISOString():f.createdAt}}})});import{z as l5}from"zod";var Vuu;var Mg0=N(()=>{wu();Vuu=li({name:"ORGANIZATION_UPDATE",description:"Update an organization's name or description.",annotations:{title:"Update Organization",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:l5.object({id:l5.string(),name:l5.string().min(1).max(255).optional(),description:l5.string().optional()}),outputSchema:l5.object({id:l5.string(),name:l5.string(),slug:l5.string(),logo:l5.string().nullable().optional(),metadata:l5.any().optional(),createdAt:l5.string().datetime().describe("ISO 8601 timestamp")}),handler:async(i,u)=>{Xi(u),await u.access.check();let t={};if(i.name)t.name=i.name;if(i.description)t.metadata={description:i.description};let f=await u.boundAuth.organization.update({organizationId:i.id,data:t});if(!f)throw Error("Failed to update organization");return{...f,createdAt:f.createdAt instanceof Date?f.createdAt.toISOString():f.createdAt}}})});import{z as Ce}from"zod";var ruu;var qg0=N(()=>{wu();ruu=li({name:"ORGANIZATION_DELETE",description:"Archive an organization (soft delete).",annotations:{title:"Delete Organization",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:Ce.object({id:Ce.string()}),outputSchema:Ce.object({success:Ce.boolean(),id:Ce.string()}),handler:async(i,u)=>{return Xi(u),await u.access.check(),await u.boundAuth.organization.update({organizationId:i.id,data:{metadata:{archived:!0,archivedAt:new Date().toISOString()}}}),{success:!0,id:i.id}}})});import{z as H0}from"zod";var Me,qe,qQ,Vg0,M3i,Ve,re,r9;var $8=N(()=>{Me=H0.object({title:H0.string(),url:H0.string(),icon:H0.string()}),qe=H0.object({registries:H0.record(H0.string(),H0.object({enabled:H0.boolean()})).describe("Per-registry enabled/disabled state. Key is connection ID. Absent registries are treated as enabled."),blockedMcps:H0.array(H0.string()).describe("List of MCP app_name or app_id values to hide from the store.")}),qQ=H0.object({keyId:H0.string(),modelId:H0.string(),title:H0.string().optional()}).nullable(),Vg0=H0.enum(["fast","smart","thinking","image","web_search","deep_research"]),M3i=H0.enum(["fast","smart","thinking"]),Ve=H0.object({tiers:H0.object({fast:qQ,smart:qQ,thinking:qQ,image:qQ,web_search:qQ,deep_research:qQ})}),re=H0.object({ids:H0.array(H0.string()).describe("Ordered list of custom virtual MCP agent ids to show on the home view.")}),r9=H0.object({id:H0.string().describe("Brand context ID"),name:H0.string().describe("Company name"),domain:H0.string().describe("Company domain (e.g. example.com)"),overview:H0.string().describe("Company overview / description"),logo:H0.string().nullable().optional().describe("Logo URL"),favicon:H0.string().nullable().optional().describe("Favicon URL"),ogImage:H0.string().nullable().optional().describe("OG image URL"),fonts:H0.object({heading:H0.string().optional().describe("Font family for headings"),body:H0.string().optional().describe("Font family for body text"),code:H0.string().optional().describe("Font family for code / monospace")}).nullable().optional().describe("Font families by semantic role"),colors:H0.object({primary:H0.string().optional().describe("Primary brand color (hex)"),secondary:H0.string().optional().describe("Secondary brand color (hex)"),accent:H0.string().optional().describe("Accent / highlight color (hex)"),background:H0.string().optional().describe("Background color (hex)"),foreground:H0.string().optional().describe("Foreground / text color (hex)")}).nullable().optional().describe("Semantic color palette"),images:H0.array(H0.record(H0.string(),H0.unknown())).nullable().optional().describe("Brand images"),metadata:H0.record(H0.string(),H0.unknown()).nullable().optional().describe("Extra design tokens (typography, components, spacing, layout, tone, etc.)"),archivedAt:H0.string().nullable().optional().describe("Archive timestamp (null to unarchive)"),isDefault:H0.boolean().optional().describe("Whether this is the default brand for the organization")})});import{z as m9}from"zod";var muu;var rg0=N(()=>{wu();$8();muu=li({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:m9.object({}),outputSchema:m9.object({organizationId:m9.string(),sidebar_items:m9.array(Me).nullable().optional(),enabled_plugins:m9.array(m9.string()).nullable().optional(),registry_config:qe.nullable().optional(),simple_mode:Ve.nullable().optional(),default_home_agents:re.nullable().optional(),createdAt:m9.string().datetime().optional().describe("ISO 8601 timestamp"),updatedAt:m9.string().datetime().optional().describe("ISO 8601 timestamp")}),handler:async(i,u)=>{Xi(u),await u.access.check();let t=u.organization?.id;if(!t)throw Error("Organization ID required (no active organization in context)");let f=await u.storage.organizationSettings.get(t);if(!f)return{organizationId:t};return{...f,createdAt:f.createdAt instanceof Date?f.createdAt.toISOString():f.createdAt,updatedAt:f.updatedAt instanceof Date?f.updatedAt.toISOString():f.updatedAt}}})});import{z as Fd}from"zod";var euu;var mg0=N(()=>{wu();$8();euu=li({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:Fd.object({organizationId:Fd.string(),sidebar_items:Fd.array(Me).optional(),enabled_plugins:Fd.array(Fd.string()).optional(),registry_config:qe.optional(),simple_mode:Ve.optional(),default_home_agents:re.optional()}),outputSchema:Fd.object({organizationId:Fd.string(),sidebar_items:Fd.array(Me).nullable().optional(),enabled_plugins:Fd.array(Fd.string()).nullable().optional(),registry_config:qe.nullable().optional(),simple_mode:Ve.nullable().optional(),default_home_agents:re.nullable().optional(),createdAt:Fd.string().datetime().describe("ISO 8601 timestamp"),updatedAt:Fd.string().datetime().describe("ISO 8601 timestamp")}),handler:async(i,u)=>{if(Xi(u),await u.access.check(),u.organization&&u.organization.id!==i.organizationId)throw Error("Cannot update settings for a different organization");let t=await u.storage.organizationSettings.upsert(i.organizationId,{sidebar_items:i.sidebar_items,enabled_plugins:i.enabled_plugins,registry_config:i.registry_config,simple_mode:i.simple_mode,default_home_agents:i.default_home_agents});return{...t,createdAt:t.createdAt instanceof Date?t.createdAt.toISOString():t.createdAt,updatedAt:t.updatedAt instanceof Date?t.updatedAt.toISOString():t.updatedAt}}})});import{z as c5}from"zod";var eg0,auu,ouu;var ag0=N(()=>{wu();$8();eg0=r9.extend({organizationId:c5.string(),archivedAt:c5.string().nullable().optional().describe("ISO 8601 timestamp"),createdAt:c5.string().describe("ISO 8601 timestamp"),updatedAt:c5.string().describe("ISO 8601 timestamp")}),auu=li({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:c5.object({includeArchived:c5.boolean().optional().describe("Include archived brands in the list")}),outputSchema:c5.object({items:c5.array(eg0)}),handler:async(i,u)=>{Xi(u),await u.access.check();let t=u.organization?.id;if(!t)throw Error("Organization ID required (no active organization in context)");return{items:(await u.storage.brandContext.list(t,{includeArchived:i.includeArchived})).map((l)=>({...l,archivedAt:l.archivedAt instanceof Date?l.archivedAt.toISOString():l.archivedAt,createdAt:l.createdAt instanceof Date?l.createdAt.toISOString():l.createdAt,updatedAt:l.updatedAt instanceof Date?l.updatedAt.toISOString():l.updatedAt}))}}}),ouu=li({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:c5.object({id:c5.string().describe("Brand context ID")}),outputSchema:eg0.extend({organizationId:c5.string()}),handler:async(i,u)=>{Xi(u),await u.access.check();let t=u.organization?.id;if(!t)throw Error("Organization ID required (no active organization in context)");let f=await u.storage.brandContext.get(i.id,t);if(!f)throw Error("Brand context not found");return{...f,archivedAt:f.archivedAt instanceof Date?f.archivedAt.toISOString():f.archivedAt,createdAt:f.createdAt instanceof Date?f.createdAt.toISOString():f.createdAt,updatedAt:f.updatedAt instanceof Date?f.updatedAt.toISOString():f.updatedAt}}})});import{z as PB}from"zod";var og0,suu,puu,i0u;var sg0=N(()=>{wu();$8();og0=r9.extend({organizationId:PB.string(),createdAt:PB.string().describe("ISO 8601 timestamp"),updatedAt:PB.string().describe("ISO 8601 timestamp")}),suu=li({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:r9.omit({id:!0}),outputSchema:og0,handler:async(i,u)=>{Xi(u),await u.access.check();let t=u.organization?.id;if(!t)throw Error("Organization ID required (no active organization in context)");let f=await u.storage.brandContext.create(t,{name:i.name,domain:i.domain,overview:i.overview,logo:i.logo??null,favicon:i.favicon??null,ogImage:i.ogImage??null,fonts:i.fonts??null,colors:i.colors??null,images:i.images??null,metadata:i.metadata??null});return{...f,archivedAt:f.archivedAt instanceof Date?f.archivedAt.toISOString():f.archivedAt,createdAt:f.createdAt instanceof Date?f.createdAt.toISOString():f.createdAt,updatedAt:f.updatedAt instanceof Date?f.updatedAt.toISOString():f.updatedAt}}}),puu=li({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:r9.partial().required({id:!0}),outputSchema:og0,handler:async(i,u)=>{Xi(u),await u.access.check();let t=u.organization?.id;if(!t)throw Error("Organization ID required (no active organization in context)");if(!await u.storage.brandContext.get(i.id,t))throw Error("Brand context not found");let{id:l,...c}=i;if(c.isDefault===!0)await u.storage.brandContext.setDefault(l,t);let E=await u.storage.brandContext.update(l,t,{name:c.name,domain:c.domain,overview:c.overview,logo:c.logo!==void 0?c.logo??null:void 0,favicon:c.favicon!==void 0?c.favicon??null:void 0,ogImage:c.ogImage!==void 0?c.ogImage??null:void 0,fonts:c.fonts!==void 0?c.fonts??null:void 0,colors:c.colors!==void 0?c.colors??null:void 0,images:c.images!==void 0?c.images??null:void 0,metadata:c.metadata!==void 0?c.metadata??null:void 0,archivedAt:c.archivedAt!==void 0?c.archivedAt??null:void 0,isDefault:c.isDefault===!1?!1:void 0});return{...E,archivedAt:E.archivedAt instanceof Date?E.archivedAt.toISOString():E.archivedAt,createdAt:E.createdAt instanceof Date?E.createdAt.toISOString():E.createdAt,updatedAt:E.updatedAt instanceof Date?E.updatedAt.toISOString():E.updatedAt}}}),i0u=li({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:PB.object({id:PB.string().describe("Brand context ID")}),outputSchema:PB.object({success:PB.boolean()}),handler:async(i,u)=>{Xi(u),await u.access.check();let t=u.organization?.id;if(!t)throw Error("Organization ID required (no active organization in context)");if(!await u.storage.brandContext.get(i.id,t))throw Error("Brand context not found");return await u.storage.brandContext.update(i.id,t,{archivedAt:new Date().toISOString(),isDefault:!1}),{success:!0}}})});async function q3i(i,u,t){let f=i.trim();if(!f.startsWith("http"))f=`https://${f}`;let l=await fetch("https://api.firecrawl.dev/v1/scrape",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${u}`},body:JSON.stringify({url:f,formats:["branding"]})});if(!l.ok){let h=await l.text().catch(()=>"");throw Error(`Firecrawl API error: ${l.status} ${h.slice(0,200)}`)}let c=await l.json();if(!c.success||!c.data?.branding)return null;let E=c.data.branding,$=c.data.metadata??{},w=KPf(E,$);return{name:$.title?.split(/[|\u2013\u2014]|\s+-\s+/).map((h)=>h.trim()).filter(Boolean)?.slice().sort((h,D)=>h.length-D.length)[0]??$.ogSiteName??t??i,domain:i,overview:$.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 KPf(i,u){let t=i.images??{},f=i.colors??{},l={};for(let[_,v]of Object.entries(f))if(typeof v==="string"&&v&&jPf.has(_))l[_]=v;let c={},$=(i.typography??{}).fontFamilies??{};for(let[_,v]of Object.entries($))if(typeof v==="string"&&v){let h=XPf[_.toLowerCase()];if(h&&!c[h])c[h]=v}let w=i.fonts;if(Array.isArray(w))for(let _ of w){let v=_.family;if(typeof v==="string"&&v&&!c.body)c.body=v}let d={};for(let _ of["typography","components","spacing","layout","animations","icons","tone","personality","colorScheme"])if(i[_]!==void 0)d[_]=i[_];return{logo:t.logo??null,favicon:t.favicon??null,ogImage:t.ogImage??u.ogImage??null,fonts:Object.keys(c).length>0?c:null,colors:Object.keys(l).length>0?l:null,metadata:d}}var jPf,XPf;var u0u=N(()=>{jPf=new Set(["primary","secondary","accent","background","foreground"]),XPf={heading:"heading",headings:"heading",head:"heading",title:"heading",body:"body",primary:"body",text:"body",code:"code",monospace:"code",mono:"code"}});import{z as V3i}from"zod";var JPf,t0u;var pg0=N(()=>{wu();u0u();$8();JPf=r9.pick({id:!0,name:!0,domain:!0,overview:!0,logo:!0,favicon:!0,ogImage:!0,fonts:!0,colors:!0}).extend({success:V3i.boolean()}),t0u=li({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:V3i.object({domain:V3i.string().describe("Website domain to extract brand from"),brandId:V3i.string().optional().describe("Existing brand context ID to update (creates new if omitted)")}),outputSchema:JPf,modelSummary:(i)=>i.success?`Brand saved (id=${i.id}, name=${i.name}, domain=${i.domain}). The UI rendered the logo, colors, fonts, and overview.`:"Brand extraction failed.",handler:async(i,u)=>{Xi(u),await u.access.check();let t=u.organization?.id;if(!t)throw Error("Organization ID required (no active organization in context)");let f=u.firecrawlApiKey;if(!f)throw Error("FIRECRAWL_API_KEY is not configured. Set the environment variable to enable brand extraction.");let l=await q3i(i.domain,f,i.domain);if(!l)throw Error("Firecrawl did not return branding data for this URL");let c={name:l.name,domain:l.domain,overview:l.overview,logo:l.logo,favicon:l.favicon,ogImage:l.ogImage,fonts:l.fonts,colors:l.colors,images:l.images,metadata:l.metadata},E=i.brandId?await(async()=>{if(!await u.storage.brandContext.get(i.brandId,t))throw Error("Brand context not found");return u.storage.brandContext.update(i.brandId,t,c)})():await u.storage.brandContext.create(t,c);return{id:E.id,name:E.name,domain:E.domain,overview:E.overview,logo:E.logo,favicon:E.favicon,ogImage:E.ogImage,fonts:E.fonts,colors:E.colors,success:!0}}})});function iN0(i){let u=i.metadata??{};return{id:i.id,name:i.name,domain:i.domain||void 0,colors:i.colors??void 0,fonts:i.fonts??void 0,assets:i.logo||i.favicon||i.ogImage?{logo:i.logo??void 0,favicon:i.favicon??void 0,ogImage:i.ogImage??void 0}:void 0,overview:i.overview||void 0,tagline:typeof u.tagline==="string"?u.tagline:void 0,tone:typeof u.tone==="string"?u.tone:void 0,metadata:(()=>{let t=Object.fromEntries(Object.entries(u).filter(([f])=>f!=="tagline"&&f!=="tone"));return Object.keys(t).length>0?t:void 0})()}}var f0u,l0u;var uN0=N(()=>{Zuu();wu();f0u=li({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:W3i,outputSchema:He,handler:async(i,u)=>{Xi(u),await u.access.check();let t=u.organization?.id;if(!t)throw Error("Organization ID required (no active organization in context)");let f=i.id?await u.storage.brandContext.get(i.id,t):await u.storage.brandContext.getDefault(t);if(!f)throw Error(i.id?"Brand not found":"No default brand configured");return iN0(f)}}),l0u=li({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:L3i,outputSchema:Q3i,handler:async(i,u)=>{Xi(u),await u.access.check();let t=u.organization?.id;if(!t)throw Error("Organization ID required (no active organization in context)");return{items:(await u.storage.brandContext.list(t)).map(iN0)}}})});import{resolveTxt as SPf}from"dns/promises";function c0u(i){return`${YPf}.${i.toLowerCase()}`}function tN0(){return`deco-verify-${crypto.randomUUID().replace(/-/g,"")}`}async function fN0(i,u,t=SPf){if(!u)return!1;try{return(await t(c0u(i))).some((l)=>l.join("").trim()===u)}catch{return!1}}var YPf="_deco-verify";var lN0=()=>{};import{z as J1}from"zod";function e9(i){let u=i.verificationStatus==="pending"&&Boolean(i.verificationToken);return{id:i.id,domain:i.domain,joinMode:i.joinMode,verificationStatus:i.verificationStatus,verificationMethod:i.verificationMethod,verifiedAt:i.verifiedAt?new Date(i.verifiedAt).toISOString():null,recordName:u?c0u(i.domain):null,recordValue:u?i.verificationToken:null}}function LPf(i){let u=i.toLowerCase().trim();if(!WPf.test(u))throw Error(`Invalid domain format: "${u}". Must be a valid domain like "acme.com"`);if(E5.has(u))throw Error(`Cannot claim generic email domain "${u}". Only corporate domains are allowed.`);return u}var WPf,E0u,r3i,$0u,w0u,d0u,_0u,v0u;var cN0=N(()=>{w8();lN0();wu();WPf=/^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)+$/,E0u=J1.enum(["off","auto","request"]),r3i=J1.object({id:J1.string(),domain:J1.string(),joinMode:E0u,verificationStatus:J1.enum(["pending","verified"]),verificationMethod:J1.enum(["email","dns"]).nullable(),verifiedAt:J1.string().nullable(),recordName:J1.string().nullable(),recordValue:J1.string().nullable()});$0u=li({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:J1.object({}),outputSchema:J1.object({domains:J1.array(r3i)}),handler:async(i,u)=>{Xi(u),await u.access.check();let t=Bi(u);return{domains:(await u.storage.organizationDomains.listByOrganizationId(t.id)).map(e9)}}}),w0u=li({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:J1.object({domain:J1.string().min(1).max(255).describe("Domain to claim, e.g. acme.com"),joinMode:E0u.optional().describe("Initial join mode (only applied when the domain is trusted immediately via email match).")}),outputSchema:r3i,handler:async(i,u)=>{Xi(u),await u.access.check();let t=Bi(u),f=LPf(i.domain),c=u.auth.user?.email?.split("@")[1]?.toLowerCase(),E=Boolean(u.auth.user?.emailVerified)&&c===f,$=await u.storage.organizationDomains.getByOrgAndDomain(t.id,f);if($){if($.verificationStatus!=="verified"&&E){let d=await u.storage.organizationDomains.markVerified($.id,"email");return e9(d)}return e9($)}let w=E?await u.storage.organizationDomains.add(t.id,f,{joinMode:i.joinMode??"off",verificationStatus:"verified",verificationMethod:"email"}):await u.storage.organizationDomains.add(t.id,f,{joinMode:"off",verificationStatus:"pending",verificationToken:tN0()});return e9(w)}}),d0u=li({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:J1.object({id:J1.string(),joinMode:E0u}),outputSchema:r3i,handler:async(i,u)=>{Xi(u),await u.access.check();let t=Bi(u),f=await u.storage.organizationDomains.getById(i.id);if(!f||f.organizationId!==t.id)throw Error("Domain not found");if(i.joinMode!=="off"&&f.verificationStatus!=="verified")throw Error("Verify the domain before enabling auto-join or requests.");let l=await u.storage.organizationDomains.updateJoinMode(i.id,i.joinMode);return e9(l)}}),_0u=li({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:J1.object({id:J1.string()}),outputSchema:J1.object({verified:J1.boolean(),domain:r3i}),handler:async(i,u)=>{Xi(u),await u.access.check();let t=Bi(u),f=await u.storage.organizationDomains.getById(i.id);if(!f||f.organizationId!==t.id)throw Error("Domain not found");if(f.verificationStatus==="verified")return{verified:!0,domain:e9(f)};if(!f.verificationToken)throw Error("Domain has no pending DNS verification.");if(!await fN0(f.domain,f.verificationToken))return{verified:!1,domain:e9(f)};let c=await u.storage.organizationDomains.markVerified(i.id,"dns");return{verified:!0,domain:e9(c)}}}),v0u=li({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:J1.object({id:J1.string()}),outputSchema:J1.object({success:J1.boolean()}),handler:async(i,u)=>{Xi(u),await u.access.check();let t=Bi(u),f=await u.storage.organizationDomains.getById(i.id);if(!f||f.organizationId!==t.id)throw Error("Domain not found");return await u.storage.organizationDomains.removeById(i.id),{success:!0}}})});import{z as Xl}from"zod";var QPf,h0u,D0u,g0u;var EN0=N(()=>{wu();e4();QPf=Xl.object({id:Xl.string(),userId:Xl.string(),status:Xl.enum(["pending","approved","denied"]),createdAt:Xl.string(),user:Xl.object({id:Xl.string(),name:Xl.string(),email:Xl.string(),image:Xl.string().nullable()}).nullable()}),h0u=li({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:Xl.object({}),outputSchema:Xl.object({requests:Xl.array(QPf)}),handler:async(i,u)=>{Xi(u),await u.access.check();let t=Bi(u);return{requests:(await u.storage.organizationJoinRequests.listPendingWithUser(t.id)).map((l)=>({id:l.id,userId:l.userId,status:l.status,createdAt:new Date(l.createdAt).toISOString(),user:l.user}))}}}),D0u=li({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:Xl.object({requestId:Xl.string()}),outputSchema:Xl.object({success:Xl.boolean()}),handler:async(i,u)=>{Xi(u),await u.access.check();let t=Bi(u),f=await u.storage.organizationJoinRequests.getById(i.requestId);if(!f||f.organizationId!==t.id)throw Error("Join request not found");if(f.status!=="pending")throw Error("Join request has already been decided");let l=Vu(u);if(!await u.storage.organizationJoinRequests.decide(f.id,"approved",l??f.userId))return{success:!0};try{await u.boundAuth.organization.addMember({organizationId:t.id,userId:f.userId,role:["user"]})}catch(E){if(!(E instanceof Error?E.message.toLowerCase():"").includes("already a member"))throw E}if(l)su.capture({distinctId:l,event:"organization_join_request_approved",groups:{organization:t.id},properties:{organization_id:t.id,user_id:f.userId}});return{success:!0}}}),g0u=li({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:Xl.object({requestId:Xl.string()}),outputSchema:Xl.object({success:Xl.boolean()}),handler:async(i,u)=>{Xi(u),await u.access.check();let t=Bi(u),f=await u.storage.organizationJoinRequests.getById(i.requestId);if(!f||f.organizationId!==t.id)throw Error("Join request not found");if(f.status!=="pending")throw Error("Join request has already been decided");let l=Vu(u);if(await u.storage.organizationJoinRequests.decide(f.id,"denied",l??f.userId)&&l)su.capture({distinctId:l,event:"organization_join_request_denied",groups:{organization:t.id},properties:{organization_id:t.id,user_id:f.userId}});return{success:!0}}})});import{z as tw}from"zod";var N0u;var $N0=N(()=>{e4();wu();nv();N0u=li({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:tw.object({organizationId:tw.string().optional(),userId:tw.string(),role:tw.array(tw.string())}),outputSchema:tw.object({id:tw.string(),organizationId:tw.string(),userId:tw.string(),role:tw.union([tw.string(),tw.array(tw.string())]),createdAt:tw.string().datetime().describe("ISO 8601 timestamp")}),handler:async(i,u)=>{Xi(u),await u.access.check();let t=i.organizationId||u.organization?.id;if(!t)throw Error("Organization ID required (no active organization in context)");if(t!==u.organization?.id)throw Error("Organization ID does not match authenticated organization");let f=Array.isArray(i.role)?i.role[0]:i.role;if(f&&!M$i(u.auth.user?.role,f))throw Error(`Insufficient privileges to assign role "${f}"`);let l=await u.boundAuth.organization.addMember({organizationId:t,userId:i.userId,role:i.role});if(!l)throw Error("Failed to add member");let c=Vu(u);if(c)su.capture({distinctId:c,event:"organization_member_added",groups:{organization:t},properties:{organization_id:t,added_user_id:i.userId,role:i.role}});return{...l,role:l.role,createdAt:l.createdAt instanceof Date?l.createdAt.toISOString():l.createdAt}}})});import{z as VQ}from"zod";var O0u;var wN0=N(()=>{e4();wu();O0u=li({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:VQ.object({organizationId:VQ.string().optional(),memberIdOrEmail:VQ.string()}),outputSchema:VQ.object({success:VQ.boolean(),memberIdOrEmail:VQ.string()}),handler:async(i,u)=>{Xi(u),await u.access.check();let t=i.organizationId||u.organization?.id;if(!t)throw Error("Organization ID required (no active organization in context)");await u.boundAuth.organization.removeMember({organizationId:t,memberIdOrEmail:i.memberIdOrEmail});let f=Vu(u);if(f)su.capture({distinctId:f,event:"organization_member_removed",groups:{organization:t},properties:{organization_id:t,member_id_or_email:i.memberIdOrEmail}});return{success:!0,memberIdOrEmail:i.memberIdOrEmail}}})});import{z as BE}from"zod";var Z0u;var dN0=N(()=>{wu();Z0u=li({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:BE.object({limit:BE.number().optional(),offset:BE.number().optional()}),outputSchema:BE.object({members:BE.array(BE.object({id:BE.string(),organizationId:BE.string(),userId:BE.string(),role:BE.string(),createdAt:BE.string().datetime().describe("ISO 8601 timestamp"),user:BE.object({id:BE.string(),name:BE.string(),email:BE.string(),image:BE.string().optional()}).optional()}))}),handler:async(i,u)=>{Xi(u),await u.access.check();let t=u.organization?.id;if(!t)throw Error("Organization ID required (no active organization in context)");let f=await u.boundAuth.organization.listMembers({organizationId:t,limit:i.limit,offset:i.offset});return{members:(Array.isArray(f)?f:[]).map((c)=>({...c,createdAt:c.createdAt instanceof Date?c.createdAt.toISOString():c.createdAt}))}}})});import{z as e6}from"zod";var B0u;var _N0=N(()=>{e4();wu();nv();B0u=li({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:e6.object({organizationId:e6.string().optional(),memberId:e6.string(),role:e6.array(e6.string())}),outputSchema:e6.object({id:e6.string(),organizationId:e6.string(),userId:e6.string(),role:e6.union([e6.literal("admin"),e6.literal("member"),e6.literal("owner")]),createdAt:e6.string().datetime().describe("ISO 8601 timestamp"),user:e6.object({email:e6.string(),name:e6.string(),image:e6.string().optional()})}),handler:async(i,u)=>{Xi(u),await u.access.check();let t=i.organizationId||u.organization?.id;if(!t)throw Error("Organization ID required (no active organization in context)");let f=Array.isArray(i.role)?i.role[0]:i.role;if(f&&!M$i(u.auth.user?.role,f))throw Error(`Insufficient privileges to assign role "${f}"`);let l=await u.boundAuth.organization.updateMemberRole({organizationId:t,memberId:i.memberId,role:i.role});if(!l)throw Error("Failed to update member role");u.invalidateMemberRole?.(l.userId,t);let c=Vu(u);if(c)su.capture({distinctId:c,event:"organization_member_role_updated",groups:{organization:t},properties:{organization_id:t,member_id:i.memberId,target_user_id:l.userId,new_role:Array.isArray(i.role)?i.role.join(","):i.role}});return{...l,createdAt:l.createdAt instanceof Date?l.createdAt.toISOString():l.createdAt}}})});var vN0=N(()=>{bg0();Rg0();Cg0();Mg0();qg0();rg0();mg0();ag0();sg0();pg0();uN0();cN0();EN0();$N0();wN0();dN0();_N0()});import{z as a9}from"zod";var y0u;var hN0=N(()=>{wu();y0u=li({name:"TAGS_LIST",description:"List all tags available in the organization.",annotations:{title:"List Tags",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:a9.object({}),outputSchema:a9.object({tags:a9.array(a9.object({id:a9.string(),organizationId:a9.string(),name:a9.string(),createdAt:a9.string().describe("ISO 8601 timestamp")}))}),handler:async(i,u)=>{Xi(u),await u.access.check();let t=Bi(u);return{tags:(await u.storage.tags.listOrgTags(t.id)).map((l)=>({...l,createdAt:l.createdAt instanceof Date?l.createdAt.toISOString():String(l.createdAt)}))}}})});import{z as o9}from"zod";var F0u;var DN0=N(()=>{wu();F0u=li({name:"TAGS_CREATE",description:"Create a new tag that can be assigned to organization members.",annotations:{title:"Create Tag",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!1,openWorldHint:!1},inputSchema:o9.object({name:o9.string().min(1).max(50).describe("Tag name")}),outputSchema:o9.object({tag:o9.object({id:o9.string(),organizationId:o9.string(),name:o9.string(),createdAt:o9.string().describe("ISO 8601 timestamp")})}),handler:async(i,u)=>{Xi(u),await u.access.check();let t=Bi(u),f=await u.storage.tags.createTag(t.id,i.name);return{tag:{...f,createdAt:f.createdAt instanceof Date?f.createdAt.toISOString():String(f.createdAt)}}}})});import{z as m3i}from"zod";var T0u;var gN0=N(()=>{wu();T0u=li({name:"TAGS_DELETE",description:"Delete a tag and automatically remove it from all assigned members.",annotations:{title:"Delete Tag",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:m3i.object({tagId:m3i.string().describe("Tag ID to delete")}),outputSchema:m3i.object({success:m3i.boolean()}),handler:async(i,u)=>{Xi(u),await u.access.check();let t=Bi(u),f=await u.storage.tags.getTag(i.tagId);if(!f)throw Error("Tag not found");if(f.organizationId!==t.id)throw Error("Tag does not belong to this organization");return await u.storage.tags.deleteTag(i.tagId),{success:!0}}})});import{z as d8}from"zod";var U0u;var NN0=N(()=>{wu();U0u=li({name:"MEMBER_TAGS_GET",description:"Get all tags currently assigned to a specific member.",annotations:{title:"Get Member Tags",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:d8.object({memberId:d8.string().describe("Member ID")}),outputSchema:d8.object({tags:d8.array(d8.object({id:d8.string(),organizationId:d8.string(),name:d8.string(),createdAt:d8.string().describe("ISO 8601 timestamp")}))}),handler:async(i,u)=>{Xi(u),await u.access.check();let t=Bi(u);if(!await u.storage.tags.verifyMemberOrg(i.memberId,t.id))throw Error(`Member not found in this organization: ${i.memberId}`);return{tags:(await u.storage.tags.getMemberTags(i.memberId)).map((c)=>({...c,createdAt:c.createdAt instanceof Date?c.createdAt.toISOString():String(c.createdAt)}))}}})});import{z as Td}from"zod";var P0u;var ON0=N(()=>{wu();P0u=li({name:"MEMBER_TAGS_SET",description:"Replace all tags on a member with the given set. Pass empty array to clear.",annotations:{title:"Set Member Tags",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:Td.object({memberId:Td.string().describe("Member ID"),tagIds:Td.array(Td.string()).describe("Array of tag IDs to assign")}),outputSchema:Td.object({success:Td.boolean(),tags:Td.array(Td.object({id:Td.string(),organizationId:Td.string(),name:Td.string(),createdAt:Td.string().describe("ISO 8601 timestamp")}))}),handler:async(i,u)=>{Xi(u),await u.access.check();let t=Bi(u);if(!await u.storage.tags.verifyMemberOrg(i.memberId,t.id))throw Error(`Member not found in this organization: ${i.memberId}`);for(let c of i.tagIds){let E=await u.storage.tags.getTag(c);if(!E)throw Error(`Tag not found: ${c}`);if(E.organizationId!==t.id)throw Error(`Tag does not belong to this organization: ${c}`)}return await u.storage.tags.setMemberTags(i.memberId,i.tagIds),{success:!0,tags:(await u.storage.tags.getMemberTags(i.memberId)).map((c)=>({...c,createdAt:c.createdAt instanceof Date?c.createdAt.toISOString():String(c.createdAt)}))}}})});var ZN0=N(()=>{hN0();DN0();gN0();NN0();ON0()});function rv(i,u=Date.now()){let t=i.status;if(t==="in_progress"){let f=new Date(i.updated_at).getTime();if(!Number.isFinite(f)||u-f>1800000)t="expired"}return{id:i.id,organization_id:i.organization_id,title:i.title,description:i.description,created_at:i.created_at,updated_at:i.updated_at,created_by:i.created_by,updated_by:i.updated_by,hidden:i.hidden??!1,status:t,virtual_mcp_id:i.virtual_mcp_id||void 0,trigger_id:i.trigger_id,branch:i.branch,sandbox_provider_kind:i.sandbox_provider_kind,harness_id:i.harness_id,metadata:i.metadata&&Object.keys(i.metadata).length>0?i.metadata:void 0,run_config:i.run_config}}var BN0=N(()=>{wf()});import{z as S0}from"zod";var yN0,bPf,FN0,mv,TN0,UN0;var xB=N(()=>{BN0();yN0=S0.object({id:S0.string().describe("Unique message ID"),thread_id:S0.string().describe("ID of the parent thread"),metadata:S0.unknown().optional().describe("Optional message metadata"),parts:S0.array(S0.record(S0.string(),S0.unknown())).describe("Message content parts (AI SDK UIMessagePart format)"),role:S0.enum(["user","assistant","system"]).describe("Message role"),created_at:S0.string().datetime().describe("Timestamp of creation"),updated_at:S0.string().datetime().describe("Timestamp of last update")}),bPf=S0.object({toolName:S0.string().describe("Fully qualified tool name"),appId:S0.string().describe("App ID that owns the tool"),args:S0.record(S0.string(),S0.unknown()).describe("Arguments used when expanding the tool"),expandedAt:S0.string().datetime().describe("When the tool was expanded")}),FN0=S0.object({expanded_tools:S0.array(bPf).optional()}).catchall(S0.unknown()),mv=S0.object({id:S0.string().describe("Unique thread ID"),organization_id:S0.string().describe("Organization this thread belongs to"),title:S0.string().describe("Thread title"),description:S0.string().nullable().describe("Thread description"),created_at:S0.string().datetime().describe("Timestamp of creation"),updated_at:S0.string().datetime().describe("Timestamp of last update"),hidden:S0.boolean().optional().describe("Whether the thread is hidden"),status:S0.enum([..._W,"expired"]).describe("Thread execution status. 'expired' is virtual -- computed at read time for stale in_progress threads"),created_by:S0.string().describe("User ID who created the thread"),updated_by:S0.string().optional().describe("User ID who last updated the thread"),virtual_mcp_id:S0.string().optional().describe("Virtual MCP (agent) this thread was initiated with"),trigger_id:S0.string().nullable().optional().describe("Automation trigger that created this thread; null/absent for human-initiated threads."),branch:S0.string().nullable().optional().describe("Git branch this thread is pinned to (GitHub-linked vms only)"),sandbox_provider_kind:S0.string().nullable().optional().describe("Pinned on first message; identifies which sandbox provider to dispatch to (e.g. 'agent-sandbox', 'user-desktop')."),harness_id:S0.string().nullable().optional().describe("Pinned on first message; selects which harness runs the thread (e.g. 'claude-code', 'codex', 'decopilot')."),metadata:FN0.optional().describe("Free-form per-thread UI state (e.g. expanded_tools)"),run_config:S0.record(S0.string(),S0.unknown()).nullable().optional().describe("Persisted run configuration (contains agent and model info)")}),TN0=S0.object({id:S0.string().optional().describe("Optional custom ID for the thread"),title:S0.string().optional().describe("Thread title"),description:S0.string().nullish().describe("Thread description"),virtual_mcp_id:S0.string().describe("Virtual MCP (agent) this thread is bound to"),branch:S0.string().min(1).optional().describe("Preferred branch. Used only when the vMCP has a githubRepo; ignored otherwise. When omitted, the server picks the most-recently-touched branch from the user's sandboxMap, falling back to a freshly generated name.")}),UN0=S0.object({title:S0.string().optional().describe("New thread title"),description:S0.string().nullish().describe("New thread description"),hidden:S0.boolean().optional().describe("Whether the thread is hidden"),status:S0.enum(["requires_action","failed","in_progress","completed"]).optional().describe("New thread status (user-set override). 'expired' is a computed virtual status and cannot be set directly."),metadata:FN0.optional().describe("Full replacement of the thread's metadata object"),branch:S0.string().nullish().describe("New git branch for this thread")})});function RPf(i){return(i??"").normalize("NFKD").replace(/[\u0300-\u036F]/g,"").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"user"}function e3i(i){let u=RPf(i),t=Date.now().toString(36).split("").reverse().join("");return`${u}-${t}`}import{z as PN0}from"zod";function qPf(i,u){let t=i?.[u];if(!t)return;return Object.entries(t).sort(([,l],[,c])=>{let E=Math.max(0,...Object.values(l).map((w)=>w.createdAt??0));return Math.max(0,...Object.values(c).map((w)=>w.createdAt??0))-E})[0]?.[0]}var CPf,MPf,x0u;var xN0=N(()=>{e4();wu();xB();H$();CPf=PN0.object({data:TN0.describe("Data for the new thread (id is auto-generated if not provided)")}),MPf=PN0.object({item:mv.describe("The created thread entity")});x0u=li({name:"COLLECTION_THREADS_CREATE",description:"Create a new thread for organizing messages and conversations.",annotations:{title:"Create Thread",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:CPf,outputSchema:MPf,handler:async(i,u)=>{Xi(u);let t=Bi(u);await u.access.check();let f=Vu(u);if(!f)throw Error("User ID required to create thread");let{data:l}=i,c=l.id??mf("thrd"),E=await u.storage.virtualMcps.findById(l.virtual_mcp_id,t.id);if(!E)throw Error(`Virtual MCP not found: ${l.virtual_mcp_id}`);let $=E.metadata,w=$?.githubRepo,d=null;if(w)d=l.branch??qPf($?.sandboxMap,f)??e3i(u.auth.user?.name??u.auth.user?.email?.split("@")[0]);let _=await u.storage.threads.create({id:c,organization_id:t.id,title:l.title,description:l.description,virtual_mcp_id:l.virtual_mcp_id,branch:d,created_by:f});return su.capture({distinctId:f,event:"chat_started",groups:{organization:t.id},properties:{organization_id:t.id,thread_id:c,has_title:!!i.data.title,created_via:"tool"}}),{item:rv(_)}}})});import{z as d3}from"zod";var VPf,rPf,I0u;var IN0=N(()=>{$3();wu();xB();VPf=t5.extend({where:d3.object({created_by:d3.string().optional(),trigger_ids:d3.array(d3.string()).optional(),virtual_mcp_id:d3.string().optional(),hidden:d3.boolean().optional(),has_trigger:d3.boolean().optional()}).optional(),startDate:d3.string().datetime().optional().describe("Filter threads updated at or after this ISO timestamp"),endDate:d3.string().datetime().optional().describe("Filter threads updated at or before this ISO timestamp"),search:d3.string().optional().describe("Full-text search on thread title (case-insensitive)"),status:d3.string().optional().describe("Filter by thread status (e.g. completed, failed, in_progress)"),userId:d3.string().optional().describe("Filter by the user who created the thread"),agentId:d3.string().optional().describe("Filter by agent (connection or virtual MCP) ID")}),rPf=l8(mv),I0u=li({name:"COLLECTION_THREADS_LIST",description:"List threads with filtering, sorting, and pagination.",annotations:{title:"List Threads",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:VPf,outputSchema:rPf,handler:async(i,u)=>{await u.access.check();let t=u.auth.user?.id;if(!t)throw Error("User ID required to list threads");Bi(u);let f=i.offset??0,l=i.limit??100,c=i.where?.trigger_ids,E=i.where?.virtual_mcp_id,$=i.userId??(i.where?.created_by==="me"?t:i.where?.created_by),{threads:w,total:d}=c?.length?await u.storage.threads.listByTriggerIds(c,{limit:l,offset:f}):await u.storage.threads.list($,{limit:l,offset:f,virtualMcpId:E,startDate:i.startDate,endDate:i.endDate,search:i.search,status:i.status,agentId:i.agentId,includeArchived:i.where?.hidden,hasTrigger:i.where?.has_trigger}),_=f+l<d,v=Date.now();return{items:w.map((h)=>rv(h,v)),totalCount:d,hasMore:_}}})});var mPf,A0u;var AN0=N(()=>{$3();wu();xB();mPf=Le(mv),A0u=li({name:"COLLECTION_THREADS_GET",description:"Get a thread's details and metadata by ID.",annotations:{title:"Get Thread",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:We,outputSchema:mPf,handler:async(i,u)=>{Xi(u),Bi(u),await u.access.check();let t=await u.storage.threads.get(i.id);if(!t)return{item:null};return{item:rv(t)}}})});import{z as n0u}from"zod";var ePf,aPf,G0u;var nN0=N(()=>{e4();wu();xB();ePf=n0u.object({id:n0u.string().describe("ID of the thread to update"),data:UN0.describe("Partial thread data to update")}),aPf=n0u.object({item:mv.describe("The updated thread entity")}),G0u=li({name:"COLLECTION_THREADS_UPDATE",description:"Update a thread's title, description, or visibility.",annotations:{title:"Update Thread",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:ePf,outputSchema:aPf,handler:async(i,u)=>{Xi(u);let t=Bi(u);await u.access.check();let f=Vu(u);if(!f)throw Error("User ID required to update thread");let{id:l,data:c}=i,E=await u.storage.threads.get(l);if(!E)throw Error("Thread not found in organization");if(c.branch===null&&E.virtual_mcp_id){if((await u.storage.virtualMcps.findById(E.virtual_mcp_id,Bi(u).id))?.metadata?.githubRepo)throw Error("Cannot set branch=null on a github-linked thread (vMCP has githubRepo)")}let $={title:c.title,description:c.description,hidden:c.hidden,updated_by:f};if(c.status)$.status=c.status;if(c.metadata!==void 0)$.metadata=c.metadata;if(c.branch!==void 0)$.branch=c.branch;let w=await u.storage.threads.update(l,$);if(c.hidden!==void 0&&c.hidden!==E.hidden)su.capture({distinctId:f,event:c.hidden?"chat_archived":"chat_unarchived",groups:{organization:t.id},properties:{organization_id:t.id,thread_id:l}});return{item:rv(w)}}})});var k0u;var GN0=N(()=>{$3();e4();wu();xB();k0u=li({name:"COLLECTION_THREADS_DELETE",description:"Permanently delete a thread and all its messages.",annotations:{title:"Delete Thread",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!1},inputSchema:Qe,outputSchema:ze(mv),handler:async(i,u)=>{Xi(u);let t=Bi(u);await u.access.check();let f=await u.storage.threads.get(i.id);if(!f)throw Error(`Thread not found: ${i.id}`);await u.storage.threads.delete(i.id);let l=Vu(u);if(l)su.capture({distinctId:l,event:"chat_deleted",groups:{organization:t.id},properties:{organization_id:t.id,thread_id:i.id}});return{item:rv(f)}}})});import{z as oPf}from"zod";function kN0(i){if(!i)return null;if("field"in i&&i.field[0]==="thread_id"&&i.operator==="eq")return String(i.value);if("conditions"in i&&(i.operator==="and"||i.operator==="or"))for(let u of i.conditions){let t=kN0(u);if(t)return t}return null}var sPf,pPf,j0u;var jN0=N(()=>{$3();wu();xB();sPf=t5.extend({thread_id:oPf.string().optional().describe("ID of the thread to list messages for (required)")}),pPf=l8(yN0),j0u=li({name:"COLLECTION_THREAD_MESSAGES_LIST",description:"List messages in a thread with pagination. Requires thread_id. Returns messages in chronological order.",annotations:{title:"List Thread Messages",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:sPf,outputSchema:pPf,handler:async(i,u)=>{Bi(u),await u.access.check();let t=i.thread_id??kN0(i.where);if(!t)throw Error("thread_id is required (provide as top-level param or in where clause)");let f=i.offset??0,l=i.limit??100,c=i.orderBy?.[0]?.direction??"asc",E=await u.storage.threads.get(t);if(!E)return{items:[],totalCount:0,hasMore:!1};if(E.message_storage_version===2){let{messages:_,total:v}=await u.storage.threads.messageParts().loadWindow(t,{limit:l,offset:f});return{items:_.map((h)=>({id:h.id,thread_id:t,role:h.role,parts:h.parts,metadata:h.metadata??null,created_at:h.created_at,updated_at:h.created_at})),totalCount:v,hasMore:f+l<v}}let{messages:$,total:w}=await u.storage.threads.listMessages(t,{limit:l,offset:f,sort:c}),d=f+l<w;return{items:$,totalCount:w,hasMore:d}}})});function XN0(i){return i!==null}function a3i(i,u){if(i===null)return!0;return i===u}function o3i(i){return i.sandboxProviderKind==="agent-sandbox"&&i.harnessId==="decopilot"}function KN0(i){return i.harnessId==="decopilot"&&(i.sandboxProviderKind==null||i.sandboxProviderKind==="agent-sandbox")}function uxf(i){return{type:"data-run-status",id:"run-status",data:{stage:i}}}function X0u(i){if(!i||typeof i!=="object")return!1;return i.type==="data-run-status"}async function _8(i,u,t){if(!i)return;try{await i.publishRawChunk(u,uxf(t))}catch{}}var ixf,me,ym1;var ee=N(()=>{ixf=["waiting-runner","starting-run","gathering-context","preparing-tools","starting-assistant","analyzing-scope"],me=["gathering-context","preparing-tools","starting-assistant","analyzing-scope"],ym1=new Set(ixf)});function s3i(){return crypto.randomUUID()}var J0u=K((Um1,YN0)=>{var{defineProperty:K0u,getOwnPropertyDescriptor:txf,getOwnPropertyNames:fxf}=Object,lxf=Object.prototype.hasOwnProperty,cxf=(i,u)=>{for(var t in u)K0u(i,t,{get:u[t],enumerable:!0})},Exf=(i,u,t,f)=>{if(u&&typeof u==="object"||typeof u==="function"){for(let l of fxf(u))if(!lxf.call(i,l)&&l!==t)K0u(i,l,{get:()=>u[l],enumerable:!(f=txf(u,l))||f.enumerable})}return i},$xf=(i)=>Exf(K0u({},"__esModule",{value:!0}),i),JN0={};cxf(JN0,{SYMBOL_FOR_REQ_CONTEXT:()=>SN0,getContext:()=>wxf});YN0.exports=$xf(JN0);var SN0=Symbol.for("@vercel/request-context");function wxf(){return globalThis[SN0]?.get?.()??{}}});var ae=K((Pm1,QN0)=>{var{defineProperty:S0u,getOwnPropertyDescriptor:dxf,getOwnPropertyNames:_xf}=Object,vxf=Object.prototype.hasOwnProperty,hxf=(i,u)=>{for(var t in u)S0u(i,t,{get:u[t],enumerable:!0})},Dxf=(i,u,t,f)=>{if(u&&typeof u==="object"||typeof u==="function"){for(let l of _xf(u))if(!vxf.call(i,l)&&l!==t)S0u(i,l,{get:()=>u[l],enumerable:!(f=dxf(u,l))||f.enumerable})}return i},gxf=(i)=>Dxf(S0u({},"__esModule",{value:!0}),i),WN0={};hxf(WN0,{VercelOidcTokenError:()=>LN0});QN0.exports=gxf(WN0);class LN0 extends Error{constructor(i,u){super(i);this.name="VercelOidcTokenError",this.cause=u}toString(){if(this.cause)return`${this.name}: ${this.message}: ${this.cause}`;return`${this.name}: ${this.message}`}}});var RN0=K((xm1,bN0)=>{var{create:Nxf,defineProperty:p3i,getOwnPropertyDescriptor:Oxf,getOwnPropertyNames:Zxf,getPrototypeOf:Bxf}=Object,yxf=Object.prototype.hasOwnProperty,Fxf=(i,u)=>{for(var t in u)p3i(i,t,{get:u[t],enumerable:!0})},zN0=(i,u,t,f)=>{if(u&&typeof u==="object"||typeof u==="function"){for(let l of Zxf(u))if(!yxf.call(i,l)&&l!==t)p3i(i,l,{get:()=>u[l],enumerable:!(f=Oxf(u,l))||f.enumerable})}return i},W0u=(i,u,t)=>(t=i!=null?Nxf(Bxf(i)):{},zN0(u||!i||!i.__esModule?p3i(t,"default",{value:i,enumerable:!0}):t,i)),Txf=(i)=>zN0(p3i({},"__esModule",{value:!0}),i),HN0={};Fxf(HN0,{findRootDir:()=>xxf,getUserDataDir:()=>Ixf});bN0.exports=Txf(HN0);var oe=W0u(Zi("path")),Uxf=W0u(Zi("fs")),Y0u=W0u(Zi("os")),Pxf=ae();function xxf(){try{let i=process.cwd();while(i!==oe.default.dirname(i)){let u=oe.default.join(i,".vercel");if(Uxf.default.existsSync(u))return i;i=oe.default.dirname(i)}}catch(i){throw new Pxf.VercelOidcTokenError("Token refresh only supported in node server environments")}return null}function Ixf(){if(process.env.XDG_DATA_HOME)return process.env.XDG_DATA_HOME;switch(Y0u.default.platform()){case"darwin":return oe.default.join(Y0u.default.homedir(),"Library/Application Support");case"linux":return oe.default.join(Y0u.default.homedir(),".local/share");case"win32":if(process.env.LOCALAPPDATA)return process.env.LOCALAPPDATA;return null;default:return null}}});var eN0=K((Im1,mN0)=>{var{create:Axf,defineProperty:idi,getOwnPropertyDescriptor:nxf,getOwnPropertyNames:Gxf,getPrototypeOf:kxf}=Object,jxf=Object.prototype.hasOwnProperty,Xxf=(i,u)=>{for(var t in u)idi(i,t,{get:u[t],enumerable:!0})},CN0=(i,u,t,f)=>{if(u&&typeof u==="object"||typeof u==="function"){for(let l of Gxf(u))if(!jxf.call(i,l)&&l!==t)idi(i,l,{get:()=>u[l],enumerable:!(f=nxf(u,l))||f.enumerable})}return i},MN0=(i,u,t)=>(t=i!=null?Axf(kxf(i)):{},CN0(u||!i||!i.__esModule?idi(t,"default",{value:i,enumerable:!0}):t,i)),Kxf=(i)=>CN0(idi({},"__esModule",{value:!0}),i),qN0={};Xxf(qN0,{isValidAccessToken:()=>Wxf,readAuthConfig:()=>Sxf,writeAuthConfig:()=>Yxf});mN0.exports=Kxf(qN0);var se=MN0(Zi("fs")),VN0=MN0(Zi("path")),Jxf=pe();function rN0(){let i=(0,Jxf.getVercelDataDir)();if(!i)throw Error(`Unable to find Vercel CLI data directory. Your platform: ${process.platform}. Supported: darwin, linux, win32.`);return VN0.join(i,"auth.json")}function Sxf(){try{let i=rN0();if(!se.existsSync(i))return null;let u=se.readFileSync(i,"utf8");if(!u)return null;return JSON.parse(u)}catch(i){return null}}function Yxf(i){let u=rN0(),t=VN0.dirname(u);if(!se.existsSync(t))se.mkdirSync(t,{mode:504,recursive:!0});se.writeFileSync(u,JSON.stringify(i,null,2),{mode:384})}function Wxf(i,u=0){if(!i.token)return!1;if(typeof i.expiresAt!=="number")return!0;let t=Math.floor(Date.now()/1000),f=u/1000;return i.expiresAt>=t+f}});var pN0=K((Am1,sN0)=>{var{defineProperty:z0u,getOwnPropertyDescriptor:Lxf,getOwnPropertyNames:Qxf}=Object,zxf=Object.prototype.hasOwnProperty,Hxf=(i,u)=>{for(var t in u)z0u(i,t,{get:u[t],enumerable:!0})},bxf=(i,u,t,f)=>{if(u&&typeof u==="object"||typeof u==="function"){for(let l of Qxf(u))if(!zxf.call(i,l)&&l!==t)z0u(i,l,{get:()=>u[l],enumerable:!(f=Lxf(u,l))||f.enumerable})}return i},Rxf=(i)=>bxf(z0u({},"__esModule",{value:!0}),i),aN0={};Hxf(aN0,{processTokenResponse:()=>rxf,refreshTokenRequest:()=>Vxf});sN0.exports=Rxf(aN0);var L0u=Zi("os"),Cxf="https://vercel.com",Mxf="cl_HYyOPBNtFMfHhaUn9L4QPfTZz6TP47bp",oN0=`@vercel/oidc node-${process.version} ${(0,L0u.platform)()} (${(0,L0u.arch)()}) ${(0,L0u.hostname)()}`,Q0u=null;async function qxf(){if(Q0u)return Q0u;let i=`${Cxf}/.well-known/openid-configuration`,u=await fetch(i,{headers:{"user-agent":oN0}});if(!u.ok)throw Error("Failed to discover OAuth endpoints");let t=await u.json();if(!t||typeof t.token_endpoint!=="string")throw Error("Invalid OAuth discovery response");let f=t.token_endpoint;return Q0u=f,f}async function Vxf(i){let u=await qxf();return await fetch(u,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded","user-agent":oN0},body:new URLSearchParams({client_id:Mxf,grant_type:"refresh_token",...i})})}async function rxf(i){let u=await i.json();if(!i.ok){let t=typeof u==="object"&&u&&"error"in u?String(u.error):"Token refresh failed";return[Error(t)]}if(typeof u!=="object"||u===null)return[Error("Invalid token response")];if(typeof u.access_token!=="string")return[Error("Missing access_token in response")];if(u.token_type!=="Bearer")return[Error("Invalid token_type in response")];if(typeof u.expires_in!=="number")return[Error("Missing expires_in in response")];return[null,u]}});var b0u=K((nm1,fO0)=>{var{defineProperty:H0u,getOwnPropertyDescriptor:mxf,getOwnPropertyNames:exf}=Object,axf=Object.prototype.hasOwnProperty,oxf=(i,u)=>{for(var t in u)H0u(i,t,{get:u[t],enumerable:!0})},sxf=(i,u,t,f)=>{if(u&&typeof u==="object"||typeof u==="function"){for(let l of exf(u))if(!axf.call(i,l)&&l!==t)H0u(i,l,{get:()=>u[l],enumerable:!(f=mxf(u,l))||f.enumerable})}return i},pxf=(i)=>sxf(H0u({},"__esModule",{value:!0}),i),iO0={};oxf(iO0,{AccessTokenMissingError:()=>uO0,RefreshAccessTokenFailedError:()=>tO0});fO0.exports=pxf(iO0);class uO0 extends Error{constructor(){super("No authentication found. Please log in with the Vercel CLI (vercel login).");this.name="AccessTokenMissingError"}}class tO0 extends Error{constructor(i){super("Failed to refresh authentication token.",{cause:i});this.name="RefreshAccessTokenFailedError"}}});var pe=K((Gm1,wO0)=>{var{create:iIf,defineProperty:udi,getOwnPropertyDescriptor:uIf,getOwnPropertyNames:tIf,getPrototypeOf:fIf}=Object,lIf=Object.prototype.hasOwnProperty,cIf=(i,u)=>{for(var t in u)udi(i,t,{get:u[t],enumerable:!0})},cO0=(i,u,t,f)=>{if(u&&typeof u==="object"||typeof u==="function"){for(let l of tIf(u))if(!lIf.call(i,l)&&l!==t)udi(i,l,{get:()=>u[l],enumerable:!(f=uIf(u,l))||f.enumerable})}return i},EO0=(i,u,t)=>(t=i!=null?iIf(fIf(i)):{},cO0(u||!i||!i.__esModule?udi(t,"default",{value:i,enumerable:!0}):t,i)),EIf=(i)=>cO0(udi({},"__esModule",{value:!0}),i),$O0={};cIf($O0,{assertVercelOidcTokenResponse:()=>R0u,findProjectInfo:()=>_If,getTokenPayload:()=>DIf,getVercelDataDir:()=>$If,getVercelOidcToken:()=>dIf,getVercelToken:()=>wIf,isExpired:()=>gIf,loadToken:()=>hIf,saveToken:()=>vIf});wO0.exports=EIf($O0);var ia=EO0(Zi("path")),IB=EO0(Zi("fs")),eQ=ae(),tdi=RN0(),rQ=eN0(),lO0=pN0(),mQ=b0u();function $If(){let u=(0,tdi.getUserDataDir)();if(!u)return null;return ia.join(u,"com.vercel.cli")}async function wIf(i){let u=(0,rQ.readAuthConfig)();if(!u?.token)throw new mQ.AccessTokenMissingError;if((0,rQ.isValidAccessToken)(u,i?.expirationBufferMs))return u.token;if(!u.refreshToken)throw(0,rQ.writeAuthConfig)({}),new mQ.RefreshAccessTokenFailedError("No refresh token available");try{let t=await(0,lO0.refreshTokenRequest)({refresh_token:u.refreshToken}),[f,l]=await(0,lO0.processTokenResponse)(t);if(f||!l)throw(0,rQ.writeAuthConfig)({}),new mQ.RefreshAccessTokenFailedError(f);let c={token:l.access_token,expiresAt:Math.floor(Date.now()/1000)+l.expires_in};if(l.refresh_token)c.refreshToken=l.refresh_token;return(0,rQ.writeAuthConfig)(c),c.token}catch(t){if((0,rQ.writeAuthConfig)({}),t instanceof mQ.AccessTokenMissingError||t instanceof mQ.RefreshAccessTokenFailedError)throw t;throw new mQ.RefreshAccessTokenFailedError(t)}}async function dIf(i,u,t){let f=`https://api.vercel.com/v1/projects/${u}/token?source=vercel-oidc-refresh${t?`&teamId=${t}`:""}`,l=await fetch(f,{method:"POST",headers:{Authorization:`Bearer ${i}`}});if(!l.ok)throw new eQ.VercelOidcTokenError(`Failed to refresh OIDC token: ${l.statusText}`);let c=await l.json();return R0u(c),c}function R0u(i){if(!i||typeof i!=="object")throw TypeError("Vercel OIDC token is malformed. Expected an object. Please run `vc env pull` and try again");if(!("token"in i)||typeof i.token!=="string")throw TypeError("Vercel OIDC token is malformed. Expected a string-valued token property. Please run `vc env pull` and try again")}function _If(){let i=(0,tdi.findRootDir)();if(!i)throw new eQ.VercelOidcTokenError("Unable to find project root directory. Have you linked your project with `vc link?`");let u=ia.join(i,".vercel","project.json");if(!IB.existsSync(u))throw new eQ.VercelOidcTokenError("project.json not found, have you linked your project with `vc link?`");let t=JSON.parse(IB.readFileSync(u,"utf8"));if(typeof t.projectId!=="string"&&typeof t.orgId!=="string")throw TypeError("Expected a string-valued projectId property. Try running `vc link` to re-link your project.");return{projectId:t.projectId,teamId:t.orgId}}function vIf(i,u){let t=(0,tdi.getUserDataDir)();if(!t)throw new eQ.VercelOidcTokenError("Unable to find user data directory. Please reach out to Vercel support.");let f=ia.join(t,"com.vercel.token",`${u}.json`),l=JSON.stringify(i);IB.mkdirSync(ia.dirname(f),{mode:504,recursive:!0}),IB.writeFileSync(f,l),IB.chmodSync(f,432);return}function hIf(i){let u=(0,tdi.getUserDataDir)();if(!u)throw new eQ.VercelOidcTokenError("Unable to find user data directory. Please reach out to Vercel support.");let t=ia.join(u,"com.vercel.token",`${i}.json`);if(!IB.existsSync(t))return null;let f=JSON.parse(IB.readFileSync(t,"utf8"));return R0u(f),f}function DIf(i){let u=i.split(".");if(u.length!==3)throw new eQ.VercelOidcTokenError("Invalid token. Please run `vc env pull` and try again");let t=u[1].replace(/-/g,"+").replace(/_/g,"/"),f=t.padEnd(t.length+(4-t.length%4)%4,"=");return JSON.parse(Buffer.from(f,"base64").toString("utf8"))}function gIf(i,u=0){return i.exp*1000<Date.now()+u}});var hO0=K((km1,vO0)=>{var{defineProperty:C0u,getOwnPropertyDescriptor:NIf,getOwnPropertyNames:OIf}=Object,ZIf=Object.prototype.hasOwnProperty,BIf=(i,u)=>{for(var t in u)C0u(i,t,{get:u[t],enumerable:!0})},yIf=(i,u,t,f)=>{if(u&&typeof u==="object"||typeof u==="function"){for(let l of OIf(u))if(!ZIf.call(i,l)&&l!==t)C0u(i,l,{get:()=>u[l],enumerable:!(f=NIf(u,l))||f.enumerable})}return i},FIf=(i)=>yIf(C0u({},"__esModule",{value:!0}),i),_O0={};BIf(_O0,{refreshToken:()=>TIf});vO0.exports=FIf(_O0);var dO0=ae(),s9=pe();async function TIf(i){let u=i?.project,t=i?.team;if(!u&&!t){let l=(0,s9.findProjectInfo)();u=l.projectId,t=l.teamId}else if(!u||!t){let l=(0,s9.findProjectInfo)();u=u??l.projectId,t=t??l.teamId}if(!u)throw new dO0.VercelOidcTokenError("Failed to refresh OIDC token: No project specified. Try re-linking your project with `vc link`");let f=(0,s9.loadToken)(u);if(!f||(0,s9.isExpired)((0,s9.getTokenPayload)(f.token),i?.expirationBufferMs)){let l=await(0,s9.getVercelToken)({expirationBufferMs:i?.expirationBufferMs});if(f=await(0,s9.getVercelOidcToken)(l,u,t),!f)throw new dO0.VercelOidcTokenError("Failed to refresh OIDC token");(0,s9.saveToken)(f,u)}process.env.VERCEL_OIDC_TOKEN=f.token;return}});var NO0=K((jm1,gO0)=>{var{defineProperty:q0u,getOwnPropertyDescriptor:UIf,getOwnPropertyNames:PIf}=Object,xIf=Object.prototype.hasOwnProperty,IIf=(i,u)=>{for(var t in u)q0u(i,t,{get:u[t],enumerable:!0})},AIf=(i,u,t,f)=>{if(u&&typeof u==="object"||typeof u==="function"){for(let l of PIf(u))if(!xIf.call(i,l)&&l!==t)q0u(i,l,{get:()=>u[l],enumerable:!(f=UIf(u,l))||f.enumerable})}return i},nIf=(i)=>AIf(q0u({},"__esModule",{value:!0}),i),DO0={};IIf(DO0,{getVercelOidcToken:()=>jIf,getVercelOidcTokenSync:()=>M0u});gO0.exports=nIf(DO0);var GIf=J0u(),kIf=ae();async function jIf(i){let u="",t;try{u=M0u()}catch(f){t=f}try{let[{getTokenPayload:f,isExpired:l},{refreshToken:c}]=await Promise.all([await Promise.resolve().then(() => k(pe())),await Promise.resolve().then(() => k(hO0()))]);if(!u||l(f(u),i?.expirationBufferMs))await c(i),u=M0u()}catch(f){let l=t instanceof Error?t.message:"";if(f instanceof Error)l=`${l}
83248
83248
  ${f.message}`;if(l)throw new kIf.VercelOidcTokenError(l);throw f}return u}function M0u(){let i=(0,GIf.getContext)().headers?.["x-vercel-oidc-token"]??process.env.VERCEL_OIDC_TOKEN;if(!i)throw Error("The 'x-vercel-oidc-token' header is missing from the request. Do you have the OIDC option enabled in the Vercel project settings?");return i}});var r0u=K((Xm1,yO0)=>{var{defineProperty:V0u,getOwnPropertyDescriptor:XIf,getOwnPropertyNames:KIf}=Object,JIf=Object.prototype.hasOwnProperty,SIf=(i,u)=>{for(var t in u)V0u(i,t,{get:u[t],enumerable:!0})},YIf=(i,u,t,f)=>{if(u&&typeof u==="object"||typeof u==="function"){for(let l of KIf(u))if(!JIf.call(i,l)&&l!==t)V0u(i,l,{get:()=>u[l],enumerable:!(f=XIf(u,l))||f.enumerable})}return i},WIf=(i)=>YIf(V0u({},"__esModule",{value:!0}),i),BO0={};SIf(BO0,{AccessTokenMissingError:()=>ZO0.AccessTokenMissingError,RefreshAccessTokenFailedError:()=>ZO0.RefreshAccessTokenFailedError,getContext:()=>LIf.getContext,getVercelOidcToken:()=>OO0.getVercelOidcToken,getVercelOidcTokenSync:()=>OO0.getVercelOidcTokenSync,getVercelToken:()=>QIf.getVercelToken});yO0.exports=WIf(BO0);var OO0=NO0(),LIf=J0u(),ZO0=b0u(),QIf=pe()});import{z as v8}from"zod/v4";import{z as XO0}from"zod/v4";import{z as e0u}from"zod/v4";import{z as Jl}from"zod/v4";import{z as F6}from"zod/v4";import{z as Kl}from"zod/v4";import{z as fdi}from"zod/v4";import{z as U1}from"zod/v4";import{z as s4}from"zod/v4";import{z as at}from"zod/v4";import{z as S1}from"zod/v4";import{z as $4}from"zod";import{z as f4}from"zod";async function mO0({response:i,statusCode:u,defaultMessage:t="Gateway request failed",cause:f,authMethod:l}){var c;let E=await dl({value:i,schema:uAf});if(!E.success){let v=typeof i==="object"&&i!==null&&"generationId"in i?i.generationId:void 0;return new iAf({message:`Invalid error response format: ${t}`,statusCode:u,response:i,validationError:E.error,cause:f,generationId:v})}let $=E.value,w=$.error.type,d=$.error.message,_=(c=$.generationId)!=null?c:void 0;switch(w){case"authentication_error":return ldi.createContextualError({apiKeyProvided:l==="api-key",oidcTokenProvided:l==="oidc",statusCode:u,cause:f,generationId:_});case"invalid_request_error":return new RIf({message:d,statusCode:u,cause:f,generationId:_});case"rate_limit_exceeded":return new MIf({message:d,statusCode:u,cause:f,generationId:_});case"model_not_found":{let v=await dl({value:$.error.param,schema:VIf});return new rIf({message:d,statusCode:u,modelId:v.success?v.value.modelId:void 0,cause:f,generationId:_})}case"internal_server_error":return new QO0({message:d,statusCode:u,cause:f,generationId:_});case"failed_dependency":return new aIf({message:d,statusCode:u,cause:f,generationId:_});case"forbidden":return new sIf({message:d,statusCode:u,cause:f,generationId:_});default:return new QO0({message:d,statusCode:u,cause:f,generationId:_})}}function tAf(i){if(i.data!==void 0)return i.data;if(i.responseBody!=null)try{return JSON.parse(i.responseBody)}catch(u){return i.responseBody}return{}}function pO0(i){if(!(i instanceof Error))return!1;let u=i.code;if(typeof u==="string")return["UND_ERR_HEADERS_TIMEOUT","UND_ERR_BODY_TIMEOUT","UND_ERR_CONNECT_TIMEOUT"].includes(u);return!1}async function fw(i,u){var t;if(Sl.isInstance(i))return i;if(pO0(i))return sO0.createTimeoutError({originalMessage:i instanceof Error?i.message:"Unknown error",cause:i});if(dt.isInstance(i)){if(i.cause&&pO0(i.cause))return sO0.createTimeoutError({originalMessage:i.message,cause:i});return await mO0({response:tAf(i),statusCode:(t=i.statusCode)!=null?t:500,defaultMessage:"Gateway request failed",cause:i,authMethod:u})}return await mO0({response:{},statusCode:500,defaultMessage:i instanceof Error?`Gateway request failed: ${i.message}`:"Unknown Gateway error",cause:i,authMethod:u})}async function ev(i){let u=await dl({value:i[vZ0],schema:lAf});return u.success?u.value:void 0}function uZ0(i){if(i.type==="file"&&i.data instanceof Uint8Array)return{...i,data:r$(i.data)};return i}function UAf(i){if(i.type==="file"&&i.data instanceof Uint8Array)return{...i,data:r$(i.data)};return i}async function zAf(){var i;return(i=hZ0.getContext().headers)==null?void 0:i["x-vercel-id"]}function a0u(i={}){var u,t;let f=null,l=null,c=(u=i.metadataCacheRefreshMillis)!=null?u:300000,E=0,$=(t=A9(i.baseURL))!=null?t:"https://ai-gateway.vercel.sh/v3/ai",w=async()=>{try{let y=await RAf(i);return t4({Authorization:`Bearer ${y.token}`,"ai-gateway-protocol-version":bAf,[vZ0]:y.authMethod,...i.headers},`ai-sdk/gateway/${HAf}`)}catch(y){throw ldi.createContextualError({apiKeyProvided:!1,oidcTokenProvided:!1,statusCode:401,cause:y})}},d=()=>{let y=jv({settingValue:void 0,environmentVariableName:"VERCEL_DEPLOYMENT_ID"}),F=jv({settingValue:void 0,environmentVariableName:"VERCEL_ENV"}),T=jv({settingValue:void 0,environmentVariableName:"VERCEL_REGION"}),U=jv({settingValue:void 0,environmentVariableName:"VERCEL_PROJECT_ID"});return async()=>{let I=await zAf();return{...y&&{"ai-o11y-deployment-id":y},...F&&{"ai-o11y-environment":F},...T&&{"ai-o11y-region":T},...I&&{"ai-o11y-request-id":I},...U&&{"ai-o11y-project-id":U}}}},_=(y)=>{return new hAf(y,{provider:"gateway",baseURL:$,headers:w,fetch:i.fetch,o11yHeaders:d()})},v=async()=>{var y,F,T;let U=(T=(F=(y=i._internal)==null?void 0:y.currentDate)==null?void 0:F.call(y).getTime())!=null?T:Date.now();if(!f||U-E>c)E=U,f=new iZ0({baseURL:$,headers:w,fetch:i.fetch}).getAvailableModels().then((I)=>{return l=I,I}).catch(async(I)=>{throw await fw(I,await ev(await w()))});return l?Promise.resolve(l):f},h=async()=>{return new iZ0({baseURL:$,headers:w,fetch:i.fetch}).getCredits().catch(async(y)=>{throw await fw(y,await ev(await w()))})},D=async(y)=>{return new wAf({baseURL:$,headers:w,fetch:i.fetch}).getSpendReport(y).catch(async(F)=>{throw await fw(F,await ev(await w()))})},g=async(y)=>{return new _Af({baseURL:$,headers:w,fetch:i.fetch}).getGenerationInfo(y).catch(async(F)=>{throw await fw(F,await ev(await w()))})},O=function(y){if(new.target)throw Error("The Gateway Provider model function cannot be called with the new keyword.");return _(y)};O.specificationVersion="v3",O.getAvailableModels=v,O.getCredits=h,O.getSpendReport=D,O.getGenerationInfo=g,O.imageModel=(y)=>{return new OAf(y,{provider:"gateway",baseURL:$,headers:w,fetch:i.fetch,o11yHeaders:d()})},O.languageModel=_;let Z=(y)=>{return new DAf(y,{provider:"gateway",baseURL:$,headers:w,fetch:i.fetch,o11yHeaders:d()})};O.embeddingModel=Z,O.textEmbeddingModel=Z,O.videoModel=(y)=>{return new TAf(y,{provider:"gateway",baseURL:$,headers:w,fetch:i.fetch,o11yHeaders:d()})};let B=(y)=>{return new nAf(y,{provider:"gateway",baseURL:$,headers:w,fetch:i.fetch,o11yHeaders:d()})};return O.rerankingModel=B,O.reranking=B,O.chat=O.languageModel,O.embedding=O.embeddingModel,O.image=O.imageModel,O.video=O.videoModel,O.tools=QAf,O}async function RAf(i){let u=jv({settingValue:i.apiKey,environmentVariableName:"AI_GATEWAY_API_KEY"});if(u)return{token:u,authMethod:"api-key"};return{token:await DZ0.getVercelOidcToken(),authMethod:"oidc"}}var hZ0,DZ0,zIf="vercel.ai.gateway.error",m0u,FO0,TO0,Sl,tZ0="GatewayAuthenticationError",HIf,UO0,PO0,xO0,ldi,fZ0="GatewayInvalidRequestError",bIf,IO0,AO0,nO0,RIf,lZ0="GatewayRateLimitError",CIf,GO0,kO0,jO0,MIf,cZ0="GatewayModelNotFoundError",qIf,KO0,VIf,JO0,SO0,rIf,EZ0="GatewayInternalServerError",mIf,YO0,WO0,LO0,QO0,$Z0="GatewayFailedDependencyError",eIf,zO0,HO0,bO0,aIf,wZ0="GatewayForbiddenError",oIf,RO0,CO0,MO0,sIf,dZ0="GatewayResponseError",pIf,qO0,VO0,rO0,iAf,uAf,_Z0="GatewayTimeoutError",fAf,eO0,aO0,oO0,sO0,vZ0="ai-gateway-auth-method",lAf,cAf,iZ0=class{constructor(i){this.config=i}async getAvailableModels(){try{let{value:i}=await pw({url:`${this.config.baseURL}/config`,headers:await L0(this.config.headers()),successfulResponseHandler:lt(EAf),failedResponseHandler:K1({errorSchema:Jl.any(),errorToMessage:(u)=>u}),fetch:this.config.fetch});return i}catch(i){throw await fw(i)}}async getCredits(){try{let i=new URL(this.config.baseURL),{value:u}=await pw({url:`${i.origin}/v1/credits`,headers:await L0(this.config.headers()),successfulResponseHandler:lt($Af),failedResponseHandler:K1({errorSchema:Jl.any(),errorToMessage:(t)=>t}),fetch:this.config.fetch});return u}catch(i){throw await fw(i)}}},EAf,$Af,wAf=class{constructor(i){this.config=i}async getSpendReport(i){try{let u=new URL(this.config.baseURL),t=new URLSearchParams;if(t.set("start_date",i.startDate),t.set("end_date",i.endDate),i.groupBy)t.set("group_by",i.groupBy);if(i.datePart)t.set("date_part",i.datePart);if(i.userId)t.set("user_id",i.userId);if(i.model)t.set("model",i.model);if(i.provider)t.set("provider",i.provider);if(i.credentialType)t.set("credential_type",i.credentialType);if(i.tags&&i.tags.length>0)t.set("tags",i.tags.join(","));let{value:f}=await pw({url:`${u.origin}/v1/report?${t.toString()}`,headers:await L0(this.config.headers()),successfulResponseHandler:lt(dAf),failedResponseHandler:K1({errorSchema:F6.any(),errorToMessage:(l)=>l}),fetch:this.config.fetch});return f}catch(u){throw await fw(u)}}},dAf,_Af=class{constructor(i){this.config=i}async getGenerationInfo(i){try{let u=new URL(this.config.baseURL),{value:t}=await pw({url:`${u.origin}/v1/generation?id=${encodeURIComponent(i.id)}`,headers:await L0(this.config.headers()),successfulResponseHandler:lt(vAf),failedResponseHandler:K1({errorSchema:Kl.any(),errorToMessage:(f)=>f}),fetch:this.config.fetch});return t}catch(u){throw await fw(u)}}},vAf,hAf=class{constructor(i,u){this.modelId=i,this.config=u,this.specificationVersion="v3",this.supportedUrls={"*/*":[/.*/]}}get provider(){return this.config.provider}async getArgs(i){let{abortSignal:u,...t}=i;return{args:this.maybeEncodeFileParts(t),warnings:[]}}async doGenerate(i){let{args:u,warnings:t}=await this.getArgs(i),{abortSignal:f}=i,l=await L0(this.config.headers());try{let{responseHeaders:c,value:E,rawValue:$}=await Ot({url:this.getUrl(),headers:a0(l,i.headers,this.getModelConfigHeaders(this.modelId,!1),await L0(this.config.o11yHeaders)),body:u,successfulResponseHandler:lt(fdi.any()),failedResponseHandler:K1({errorSchema:fdi.any(),errorToMessage:(w)=>w}),...f&&{abortSignal:f},fetch:this.config.fetch});return{...E,request:{body:u},response:{headers:c,body:$},warnings:t}}catch(c){throw await fw(c,await ev(l))}}async doStream(i){let{args:u,warnings:t}=await this.getArgs(i),{abortSignal:f}=i,l=await L0(this.config.headers());try{let{value:c,responseHeaders:E}=await Ot({url:this.getUrl(),headers:a0(l,i.headers,this.getModelConfigHeaders(this.modelId,!0),await L0(this.config.o11yHeaders)),body:u,successfulResponseHandler:dE(fdi.any()),failedResponseHandler:K1({errorSchema:fdi.any(),errorToMessage:($)=>$}),...f&&{abortSignal:f},fetch:this.config.fetch});return{stream:c.pipeThrough(new TransformStream({start($){if(t.length>0)$.enqueue({type:"stream-start",warnings:t})},transform($,w){if($.success){let d=$.value;if(d.type==="raw"&&!i.includeRawChunks)return;if(d.type==="response-metadata"&&d.timestamp&&typeof d.timestamp==="string")d.timestamp=new Date(d.timestamp);w.enqueue(d)}else w.error($.error)}})),request:{body:u},response:{headers:E}}}catch(c){throw await fw(c,await ev(l))}}isFilePart(i){return i&&typeof i==="object"&&"type"in i&&i.type==="file"}maybeEncodeFileParts(i){for(let u of i.prompt)for(let t of u.content)if(this.isFilePart(t)){let f=t;if(f.data instanceof Uint8Array){let l=Uint8Array.from(f.data),c=Buffer.from(l).toString("base64");f.data=new URL(`data:${f.mediaType||"application/octet-stream"};base64,${c}`)}}return i}getUrl(){return`${this.config.baseURL}/language-model`}getModelConfigHeaders(i,u){return{"ai-language-model-specification-version":"3","ai-language-model-id":i,"ai-language-model-streaming":String(u)}}},DAf=class{constructor(i,u){this.modelId=i,this.config=u,this.specificationVersion="v3",this.maxEmbeddingsPerCall=2048,this.supportsParallelCalls=!0}get provider(){return this.config.provider}async doEmbed({values:i,headers:u,abortSignal:t,providerOptions:f}){var l,c;let E=await L0(this.config.headers());try{let{responseHeaders:$,value:w,rawValue:d}=await Ot({url:this.getUrl(),headers:a0(E,u!=null?u:{},this.getModelConfigHeaders(),await L0(this.config.o11yHeaders)),body:{values:i,...f?{providerOptions:f}:{}},successfulResponseHandler:lt(NAf),failedResponseHandler:K1({errorSchema:U1.any(),errorToMessage:(_)=>_}),...t&&{abortSignal:t},fetch:this.config.fetch});return{embeddings:w.embeddings,usage:(l=w.usage)!=null?l:void 0,providerMetadata:w.providerMetadata,response:{headers:$,body:d},warnings:(c=w.warnings)!=null?c:[]}}catch($){throw await fw($,await ev(E))}}getUrl(){return`${this.config.baseURL}/embedding-model`}getModelConfigHeaders(){return{"ai-embedding-model-specification-version":"3","ai-model-id":this.modelId}}},gAf,NAf,OAf=class{constructor(i,u){this.modelId=i,this.config=u,this.specificationVersion="v3",this.maxImagesPerCall=Number.MAX_SAFE_INTEGER}get provider(){return this.config.provider}async doGenerate({prompt:i,n:u,size:t,aspectRatio:f,seed:l,files:c,mask:E,providerOptions:$,headers:w,abortSignal:d}){var _,v,h,D;let g=await L0(this.config.headers());try{let{responseHeaders:O,value:Z,rawValue:B}=await Ot({url:this.getUrl(),headers:a0(g,w!=null?w:{},this.getModelConfigHeaders(),await L0(this.config.o11yHeaders)),body:{prompt:i,n:u,...t&&{size:t},...f&&{aspectRatio:f},...l&&{seed:l},...$&&{providerOptions:$},...c&&{files:c.map((y)=>uZ0(y))},...E&&{mask:uZ0(E)}},successfulResponseHandler:lt(FAf),failedResponseHandler:K1({errorSchema:s4.any(),errorToMessage:(y)=>y}),...d&&{abortSignal:d},fetch:this.config.fetch});return{images:Z.images,warnings:(_=Z.warnings)!=null?_:[],providerMetadata:Z.providerMetadata,response:{timestamp:new Date,modelId:this.modelId,headers:O},...Z.usage!=null&&{usage:{inputTokens:(v=Z.usage.inputTokens)!=null?v:void 0,outputTokens:(h=Z.usage.outputTokens)!=null?h:void 0,totalTokens:(D=Z.usage.totalTokens)!=null?D:void 0}}}}catch(O){throw await fw(O,await ev(g))}}getUrl(){return`${this.config.baseURL}/image-model`}getModelConfigHeaders(){return{"ai-image-model-specification-version":"3","ai-model-id":this.modelId}}},ZAf,BAf,yAf,FAf,TAf=class{constructor(i,u){this.modelId=i,this.config=u,this.specificationVersion="v3",this.maxVideosPerCall=Number.MAX_SAFE_INTEGER}get provider(){return this.config.provider}async doGenerate({prompt:i,n:u,aspectRatio:t,resolution:f,duration:l,fps:c,seed:E,image:$,providerOptions:w,headers:d,abortSignal:_}){var v;let h=await L0(this.config.headers());try{let{responseHeaders:D,value:g}=await Ot({url:this.getUrl(),headers:a0(h,d!=null?d:{},this.getModelConfigHeaders(),await L0(this.config.o11yHeaders),{accept:"text/event-stream"}),body:{prompt:i,n:u,...t&&{aspectRatio:t},...f&&{resolution:f},...l&&{duration:l},...c&&{fps:c},...E&&{seed:E},...w&&{providerOptions:w},...$&&{image:UAf($)}},successfulResponseHandler:async({response:O,url:Z,requestBodyValues:B})=>{if(O.body==null)throw new dt({message:"SSE response body is empty",url:Z,requestBodyValues:B,statusCode:O.status});let F=mD({stream:O.body,schema:AAf}).getReader(),{done:T,value:U}=await F.read();if(F.releaseLock(),T||!U)throw new dt({message:"SSE stream ended without a data event",url:Z,requestBodyValues:B,statusCode:O.status});if(!U.success)throw new dt({message:"Failed to parse video SSE event",cause:U.error,url:Z,requestBodyValues:B,statusCode:O.status});let I=U.value;if(I.type==="error")throw new dt({message:I.message,statusCode:I.statusCode,url:Z,requestBodyValues:B,responseHeaders:Object.fromEntries([...O.headers]),responseBody:JSON.stringify(I),data:{error:{message:I.message,type:I.errorType,param:I.param}}});return{value:{videos:I.videos,warnings:I.warnings,providerMetadata:I.providerMetadata},responseHeaders:Object.fromEntries([...O.headers])}},failedResponseHandler:K1({errorSchema:at.any(),errorToMessage:(O)=>O}),..._&&{abortSignal:_},fetch:this.config.fetch});return{videos:g.videos,warnings:(v=g.warnings)!=null?v:[],providerMetadata:g.providerMetadata,response:{timestamp:new Date,modelId:this.modelId,headers:D}}}catch(D){throw await fw(D,await ev(h))}}getUrl(){return`${this.config.baseURL}/video-model`}getModelConfigHeaders(){return{"ai-video-model-specification-version":"3","ai-model-id":this.modelId}}},PAf,xAf,IAf,AAf,nAf=class{constructor(i,u){this.modelId=i,this.config=u,this.specificationVersion="v3"}get provider(){return this.config.provider}async doRerank({documents:i,query:u,topN:t,headers:f,abortSignal:l,providerOptions:c}){var E;let $=await L0(this.config.headers());try{let{responseHeaders:w,value:d,rawValue:_}=await Ot({url:this.getUrl(),headers:a0($,f!=null?f:{},this.getModelConfigHeaders(),await L0(this.config.o11yHeaders)),body:{documents:i,query:u,...t!=null?{topN:t}:{},...c?{providerOptions:c}:{}},successfulResponseHandler:lt(kAf),failedResponseHandler:K1({errorSchema:S1.any(),errorToMessage:(v)=>v}),...l&&{abortSignal:l},fetch:this.config.fetch});return{ranking:d.ranking,providerMetadata:d.providerMetadata,response:{headers:w,body:_},warnings:(E=d.warnings)!=null?E:[]}}catch(w){throw await fw(w,await ev($))}}getUrl(){return`${this.config.baseURL}/reranking-model`}getModelConfigHeaders(){return{"ai-reranking-model-specification-version":"3","ai-model-id":this.modelId}}},GAf,kAf,jAf,XAf,KAf,JAf=(i={})=>KAf(i),SAf,YAf,WAf,LAf=(i={})=>WAf(i),QAf,HAf="3.0.133",bAf="0.0.1",cdi;var ua=N(()=>{tu();ru();tu();tu();tu();tu();tu();tu();tu();tu();tu();ru();tu();tu();tu();tu();hZ0=k(r0u(),1),DZ0=k(r0u(),1),m0u=Symbol.for(zIf),Sl=class i extends(TO0=Error,FO0=m0u,TO0){constructor({message:u,statusCode:t=500,cause:f,generationId:l,isRetryable:c=t!=null&&(t===408||t===409||t===429||t>=500)}){super(l?`${u} [${l}]`:u);this[FO0]=!0,this.statusCode=t,this.cause=f,this.generationId=l,this.isRetryable=c}static isInstance(u){return i.hasMarker(u)}static hasMarker(u){return typeof u==="object"&&u!==null&&m0u in u&&u[m0u]===!0}},HIf=`vercel.ai.gateway.error.${tZ0}`,UO0=Symbol.for(HIf),ldi=class i extends(xO0=Sl,PO0=UO0,xO0){constructor({message:u="Authentication failed",statusCode:t=401,cause:f,generationId:l}={}){super({message:u,statusCode:t,cause:f,generationId:l});this[PO0]=!0,this.name=tZ0,this.type="authentication_error"}static isInstance(u){return Sl.hasMarker(u)&&UO0 in u}static createContextualError({apiKeyProvided:u,oidcTokenProvided:t,message:f="Authentication failed",statusCode:l=401,cause:c,generationId:E}){let $;if(u)$=`AI Gateway authentication failed: Invalid API key.
83249
83249
 
83250
83250
  Create a new API key: https://vercel.com/d?to=%2F%5Bteam%5D%2F%7E%2Fai%2Fapi-keys