decocms 4.91.0 → 4.91.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (232) hide show
  1. package/dist/client/assets/{AlertCircle-C6S46k17.js → AlertCircle-BQ1VD_6t.js} +1 -1
  2. package/dist/client/assets/{AreaChart-CIuQhBmO.js → AreaChart-BiDQX2BI.js} +1 -1
  3. package/dist/client/assets/{ArrowUp-YFs4MM80.js → ArrowUp-En3_7MWg.js} +1 -1
  4. package/dist/client/assets/{ArrowUpRight-HwU_o0la.js → ArrowUpRight-NYJdbNYo.js} +1 -1
  5. package/dist/client/assets/{CheckCircle-D3MRykhV.js → CheckCircle-BpjJSby5.js} +1 -1
  6. package/dist/client/assets/{ChevronDown-BZYdfPrq.js → ChevronDown-CDtylotE.js} +1 -1
  7. package/dist/client/assets/{ChevronRight-B4h1xCBY.js → ChevronRight-P8a-QGOV.js} +1 -1
  8. package/dist/client/assets/{ChevronUp-CRfKwTQ5.js → ChevronUp-BPw1soSf.js} +1 -1
  9. package/dist/client/assets/{Copy01-DhBbcpHJ.js → Copy01-CPaH9xJH.js} +1 -1
  10. package/dist/client/assets/{DotsVertical-BBObPw20.js → DotsVertical-B6jqW59e.js} +1 -1
  11. package/dist/client/assets/{Eye-RyLyhnBi.js → Eye-DsvlBean.js} +1 -1
  12. package/dist/client/assets/{FilterLines-DOnzQY4E.js → FilterLines-91j1zQfc.js} +1 -1
  13. package/dist/client/assets/{Globe01-s_ta3gfr.js → Globe01-CXEm8Z9S.js} +1 -1
  14. package/dist/client/assets/{Globe04-BjhBoeYq.js → Globe04-DiNnXgWD.js} +1 -1
  15. package/dist/client/assets/{HardDrive-Bx5gCXgs.js → HardDrive-BzI64hyX.js} +1 -1
  16. package/dist/client/assets/{Image01-CWyUARuQ.js → Image01-BoGA75jR.js} +1 -1
  17. package/dist/client/assets/{Key01-1vRVipLc.js → Key01-Dz-Py105.js} +1 -1
  18. package/dist/client/assets/{LayoutLeft-DYKD7AJ_.js → LayoutLeft-BFUCyerF.js} +1 -1
  19. package/dist/client/assets/{LinkExternal01-B4Iy07cx.js → LinkExternal01-Bray58yW.js} +1 -1
  20. package/dist/client/assets/{Monitor01-BRzDaoFA.js → Monitor01-CdhgL-n0.js} +1 -1
  21. package/dist/client/assets/{Package-CqZLoMfM.js → Package-DOELARAw.js} +1 -1
  22. package/dist/client/assets/{Palette-n_8EtEtY.js → Palette-D9OTt4zs.js} +1 -1
  23. package/dist/client/assets/{Play-Bi75QA8c.js → Play-Cz3CzzEB.js} +1 -1
  24. package/dist/client/assets/{Plus-B1qMHVoZ.js → Plus-D9IhgCqF.js} +1 -1
  25. package/dist/client/assets/{SearchLg-wv96tCEJ.js → SearchLg-LO7tR6pZ.js} +1 -1
  26. package/dist/client/assets/{SearchMd-DYReEvtm.js → SearchMd-Dc8ZuJP4.js} +1 -1
  27. package/dist/client/assets/{Settings02-N_julXwU.js → Settings02-B5A0qG3A.js} +1 -1
  28. package/dist/client/assets/{Shield01-C8BH7ya5.js → Shield01-ssr8A3fZ.js} +1 -1
  29. package/dist/client/assets/{Star01-B3cGCB4W.js → Star01-Cx6RvKMa.js} +1 -1
  30. package/dist/client/assets/{Stars01-DFZM4EO4.js → Stars01-BgpiABvI.js} +1 -1
  31. package/dist/client/assets/{Stars02-DOOfwsfS.js → Stars02-jtRRa_Hs.js} +1 -1
  32. package/dist/client/assets/{Sun-DV_cxWSU.js → Sun-D08z54jN.js} +1 -1
  33. package/dist/client/assets/{SwitchHorizontal01-DmGJ9U6S.js → SwitchHorizontal01-C466IZjN.js} +1 -1
  34. package/dist/client/assets/{Tool01-MUZ1uSi5.js → Tool01-DTEy5Hpq.js} +1 -1
  35. package/dist/client/assets/{Tool02-B8PQdsrt.js → Tool02-BBBas_xs.js} +1 -1
  36. package/dist/client/assets/{Trash01-CQ3ERq8a.js → Trash01-DLwd5Ue9.js} +1 -1
  37. package/dist/client/assets/{TrendUp01-D2uwjN0Q.js → TrendUp01-CYFmhjst.js} +1 -1
  38. package/dist/client/assets/{Upload01-DO0phvmX.js → Upload01-DmN7Vp-Y.js} +1 -1
  39. package/dist/client/assets/{User01-CMYY9swQ.js → User01-DWci-S07.js} +1 -1
  40. package/dist/client/assets/{Users01-NIvb4uQs.js → Users01-Crl5FzV9.js} +1 -1
  41. package/dist/client/assets/{Users03-BiN1ml7O.js → Users03-BYlsq04g.js} +1 -1
  42. package/dist/client/assets/{X-DAhnD7hC.js → X-Co3pcYLo.js} +1 -1
  43. package/dist/client/assets/{XCircle-BW2OutxQ.js → XCircle-CThM4fLJ.js} +1 -1
  44. package/dist/client/assets/{XClose--D2AkIg_.js → XClose-CgGYPsE9.js} +1 -1
  45. package/dist/client/assets/{Zap-BydblP_e.js → Zap-CPBr0IlW.js} +1 -1
  46. package/dist/client/assets/{ZapSquare-CvEeLJ1r.js → ZapSquare-BrZtLChB.js} +1 -1
  47. package/dist/client/assets/{ZoomOut-BH44HZxj.js → ZoomOut-StDvPD5t.js} +1 -1
  48. package/dist/client/assets/{access-gate-DHq7ommJ.js → access-gate-BQaPImNO.js} +1 -1
  49. package/dist/client/assets/{add-section-modal-DZjsqtE2.js → add-section-modal-B193qJTQ.js} +1 -1
  50. package/dist/client/assets/{agent-icon-coX1LcEJ.js → agent-icon-DYYNRWvj.js} +1 -1
  51. package/dist/client/assets/{agents-list-DuBTzuDD.js → agents-list-CA9B9gNZ.js} +1 -1
  52. package/dist/client/assets/{ai-providers-jRZldWMB.js → ai-providers-DUA6OWFE.js} +1 -1
  53. package/dist/client/assets/{alert-B0bmwcNe.js → alert-CyEtA2s3.js} +1 -1
  54. package/dist/client/assets/{alert-dialog-gfKlgN96.js → alert-dialog-XuN6iYYS.js} +1 -1
  55. package/dist/client/assets/{app-editor-DHGTlvtS.js → app-editor-B4OCF5qq.js} +1 -1
  56. package/dist/client/assets/{auth-BzxonyHT.js → auth-BuUfw6hD.js} +1 -1
  57. package/dist/client/assets/{auth-catchall-IPGuB2On.js → auth-catchall-By0deM6v.js} +1 -1
  58. package/dist/client/assets/{auth-entry-DwcC0ReA.js → auth-entry-EvRLe5Kk.js} +1 -1
  59. package/dist/client/assets/{auth-split-layout-CjpNX-sX.js → auth-split-layout-D5P617ug.js} +1 -1
  60. package/dist/client/assets/{authenticate-and-persist-oauth-3aHxHi5E.js → authenticate-and-persist-oauth-CHUHFg_f.js} +1 -1
  61. package/dist/client/assets/{automation-list-row-DPIFbOHA.js → automation-list-row-BLkr2RXH.js} +1 -1
  62. package/dist/client/assets/{automation-runs-DZX9HEIU.js → automation-runs-Gm4T7iwn.js} +1 -1
  63. package/dist/client/assets/{automations-CnxrtvN3.js → automations-DBN1_ODE.js} +1 -1
  64. package/dist/client/assets/{autosend-Bu-poLWs.js → autosend-Cud0fjzi.js} +1 -1
  65. package/dist/client/assets/{avatar-B39xweZA.js → avatar-BANjNSaY.js} +1 -1
  66. package/dist/client/assets/{badge-CjowztCa.js → badge-RGskv_9Z.js} +1 -1
  67. package/dist/client/assets/{block-document-DYw_rkH5.js → block-document-BpoOsfkp.js} +1 -1
  68. package/dist/client/assets/{brand-context-BSvRHCFP.js → brand-context-DP6DYYtX.js} +1 -1
  69. package/dist/client/assets/{buckets-DsK4oYhC.js → buckets-rmdSOG0l.js} +1 -1
  70. package/dist/client/assets/{bulk-category-panel-G2C9o6g5.js → bulk-category-panel-DjA3yqmN.js} +1 -1
  71. package/dist/client/assets/{calendar-DPg2MSWV.js → calendar-MSVpC1nD.js} +1 -1
  72. package/dist/client/assets/{capability-load-error-CgZMYDbj.js → capability-load-error-DaPJcbc4.js} +1 -1
  73. package/dist/client/assets/{card-YlDYlxuH.js → card-KUe_gAVz.js} +1 -1
  74. package/dist/client/assets/{category-editor-ryvlgjTn.js → category-editor-B5Z-LSPu.js} +1 -1
  75. package/dist/client/assets/{chat-context-BjpojHeD.js → chat-context-BgT3NzR7.js} +1 -1
  76. package/dist/client/assets/{checkbox-vti_6l7k.js → checkbox-BF18d7s1.js} +1 -1
  77. package/dist/client/assets/{cli-auth-success-Cc5juIS4.js → cli-auth-success-BqTn8bZ9.js} +1 -1
  78. package/dist/client/assets/{collection-detail-C5O1VC6H.js → collection-detail-BJjZJQpM.js} +1 -1
  79. package/dist/client/assets/{collection-display-button-CmMwk01f.js → collection-display-button-ClvpmXdL.js} +1 -1
  80. package/dist/client/assets/{collection-search-Di2iWKP5.js → collection-search-DnGhnwDb.js} +1 -1
  81. package/dist/client/assets/{collection-table-wrapper-B69G4KCF.js → collection-table-wrapper-BSwqQohK.js} +1 -1
  82. package/dist/client/assets/{collection-tabs-CQ8UtvQN.js → collection-tabs-CGiCe3i7.js} +1 -1
  83. package/dist/client/assets/{command-BhhOdGXf.js → command-zlXLdevQ.js} +1 -1
  84. package/dist/client/assets/{commerce-onboarding-ev-r_VTw.js → commerce-onboarding-BtkESQn0.js} +1 -1
  85. package/dist/client/assets/{companions-core-BSfLmigL.js → companions-core-CIn51eK6.js} +1 -1
  86. package/dist/client/assets/{connect-desktop-dialog-QyMMuyrC.js → connect-desktop-dialog-Dtd9XpQW.js} +1 -1
  87. package/dist/client/assets/{connection-card-Czh98nWH.js → connection-card-DEmYcviU.js} +1 -1
  88. package/dist/client/assets/{connection-detail-BFTKSqAb.js → connection-detail-CesDQvRI.js} +1 -1
  89. package/dist/client/assets/{connection-form-helpers-Bzp1JCdi.js → connection-form-helpers-CQWn_Opu.js} +1 -1
  90. package/dist/client/assets/{connections-HGAXo9yc.js → connections-CFIhg0jD.js} +1 -1
  91. package/dist/client/assets/{decopilot-sse-pool-YiBBikH2.js → decopilot-sse-pool-j-aXhkLu.js} +1 -1
  92. package/dist/client/assets/{dialog-DZcVz6w3.js → dialog-B22XpC_l.js} +1 -1
  93. package/dist/client/assets/{domain-settings-wk668xNJ.js → domain-settings-RXn0CWG8.js} +1 -1
  94. package/dist/client/assets/{drawer-Cpvje7el.js → drawer-DXSFN8Vk.js} +1 -1
  95. package/dist/client/assets/{dropdown-menu-BnQXKn10.js → dropdown-menu-DbJAUbgE.js} +1 -1
  96. package/dist/client/assets/{empty-state-2DJPrS9n.js → empty-state-CwJCMvQo.js} +1 -1
  97. package/dist/client/assets/{extract-connection-data-HmaQB8CT.js → extract-connection-data-5QOO38hz.js} +1 -1
  98. package/dist/client/assets/{file-explorer-CFJlEZvw.js → file-explorer-D2uXtUUp.js} +1 -1
  99. package/dist/client/assets/{file-type-icon-BOl0a2T4.js → file-type-icon-NOYT747a.js} +1 -1
  100. package/dist/client/assets/{files-tWZHITMb.js → files-Czg4lzW9.js} +1 -1
  101. package/dist/client/assets/{form-BPw6JB2x.js → form-Cmc0LhpP.js} +1 -1
  102. package/dist/client/assets/{general-CMOOe1tU.js → general-CO0CbIKE.js} +1 -1
  103. package/dist/client/assets/{github-repo-picker-CguE1HpB.js → github-repo-picker-DmGvjwaY.js} +1 -1
  104. package/dist/client/assets/{hooks-CO6R1guX.js → hooks-OmhbHVdq.js} +1 -1
  105. package/dist/client/assets/{index-u3XjhdNa.js → index-B2ovAPvC.js} +1 -1
  106. package/dist/client/assets/{index-DI8o-_G6.js → index-BE8lWzdY.js} +6 -6
  107. package/dist/client/assets/{index-CP2J0bc-.js → index-BO8bDt_t.js} +1 -1
  108. package/dist/client/assets/{index-qsaQ7doE.js → index-BZjb14j1.js} +1 -1
  109. package/dist/client/assets/{index-BY8gi0f4.js → index-BjvlXuQT.js} +1 -1
  110. package/dist/client/assets/{index-BYvDw7_7.js → index-Bo4vj4tn.js} +1 -1
  111. package/dist/client/assets/{index-2b2EBk4D.js → index-CUvXw43a.js} +5 -5
  112. package/dist/client/assets/{index-CJRxUKb-.js → index-CbIVN48S.js} +1 -1
  113. package/dist/client/assets/{index-CZadTLHe.js → index-ClpcoO6Q.js} +3 -3
  114. package/dist/client/assets/{index-DF6axZHE.js → index-DJC1qhFK.js} +1 -1
  115. package/dist/client/assets/{index-BahpCfN_.js → index-bmiAHKON.js} +1 -1
  116. package/dist/client/assets/{index-PbXW542y.js → index-cD6cGt5z.js} +1 -1
  117. package/dist/client/assets/{index-redirect-B9_EUfCY.js → index-redirect-BkoPn3Mx.js} +1 -1
  118. package/dist/client/assets/{index-DAWysu30.js → index-xZ8gevSD.js} +2 -2
  119. package/dist/client/assets/{index-BUcEI1pT.js → index-zXuWJ6Zb.js} +1 -1
  120. package/dist/client/assets/{input-BelC1eEJ.js → input-Cp47skDA.js} +1 -1
  121. package/dist/client/assets/{integration-icon-Bj36RYl-.js → integration-icon-CBaTyxd8.js} +1 -1
  122. package/dist/client/assets/{invite-member-dialog-DTzCAul3.js → invite-member-dialog-IGI7M8XZ.js} +1 -1
  123. package/dist/client/assets/{label-Dy8IrYz5.js → label-Du7ujnBI.js} +1 -1
  124. package/dist/client/assets/{layout-DzwoeBXf.js → layout-CE8LjaCK.js} +1 -1
  125. package/dist/client/assets/{login-DT8G84UU.js → login-WYQ02_OV.js} +1 -1
  126. package/dist/client/assets/{mcp-oauth-BHjp2ybS.js → mcp-oauth-BJWUvfku.js} +1 -1
  127. package/dist/client/assets/{members-DATXZCF2.js → members-DWkneY87.js} +1 -1
  128. package/dist/client/assets/{monaco-editor-sNqRCTKG.js → monaco-editor-DQ-IIKPz.js} +1 -1
  129. package/dist/client/assets/{monitoring-stats-row-CmP-lxgo.js → monitoring-stats-row-DB0bwXi3.js} +1 -1
  130. package/dist/client/assets/{multi-select-DiEjDiVJ.js → multi-select-DLHK3OMr.js} +1 -1
  131. package/dist/client/assets/{oauth-callback-DJU1-CJL.js → oauth-callback-CxPLtpSN.js} +1 -1
  132. package/dist/client/assets/{oauth-callback-ai-provider-C3_GxIoy.js → oauth-callback-ai-provider-B7TVVXn3.js} +1 -1
  133. package/dist/client/assets/{onboarding-BPTcLjO4.js → onboarding-CNBOV9ZN.js} +1 -1
  134. package/dist/client/assets/{org-install-Bkp1uZlz.js → org-install-BERe_bzC.js} +1 -1
  135. package/dist/client/assets/{org-layout-DOVM8kV-.js → org-layout-DRpTPXZm.js} +1 -1
  136. package/dist/client/assets/{organization-choice-DAY92_-7.js → organization-choice-29knMNE7.js} +1 -1
  137. package/dist/client/assets/{orgs-V1Y6rcyT.js → orgs-CSo5tOBf.js} +1 -1
  138. package/dist/client/assets/{page-seo-form-C4O5xMRU.js → page-seo-form-CvtFT6-H.js} +1 -1
  139. package/dist/client/assets/page-seo-sheet-DUM3ur6-.js +1 -0
  140. package/dist/client/assets/{popover-CxmqwrcG.js → popover-CRh8FmYc.js} +1 -1
  141. package/dist/client/assets/{post-editor-C8amxtWI.js → post-editor-CxvvIc3i.js} +1 -1
  142. package/dist/client/assets/{primitives-Dv7qUjCY.js → primitives-BE47TyzW.js} +1 -1
  143. package/dist/client/assets/{profile-CDRtoana.js → profile-Bg8WV0aK.js} +1 -1
  144. package/dist/client/assets/project-app-view-BJcpK7cl.js +1 -0
  145. package/dist/client/assets/record-editor-DY9uctDw.js +1 -0
  146. package/dist/client/assets/redirect-editor-BFjqUWeS.js +1 -0
  147. package/dist/client/assets/registry-dWCQnCtL.js +2 -0
  148. package/dist/client/assets/registry-layout-mQ4jW5i2.js +27 -0
  149. package/dist/client/assets/{reports-BuieA-_C.js → reports-Cuahs77D.js} +1 -1
  150. package/dist/client/assets/{require-capability-CET_CGGX.js → require-capability-CQCfm9yJ.js} +1 -1
  151. package/dist/client/assets/{required-auth-layout-aqP95pdf.js → required-auth-layout-B7rvjF5Z.js} +1 -1
  152. package/dist/client/assets/{reset-password-BLnCc1Zm.js → reset-password-U5BbbIWU.js} +1 -1
  153. package/dist/client/assets/{roles-DdS4gqct.js → roles-DCWnNqbE.js} +1 -1
  154. package/dist/client/assets/{search-input-BDQFhcCA.js → search-input-KIvM5sM8.js} +1 -1
  155. package/dist/client/assets/{secrets-rFxOxiM0.js → secrets-CfERzVYg.js} +1 -1
  156. package/dist/client/assets/{sections-editor-DGvu4sXE.js → sections-editor-CQLgHPe8.js} +1 -1
  157. package/dist/client/assets/{select-Ct7WuhKg.js → select-jpxQ8auT.js} +1 -1
  158. package/dist/client/assets/{select-model-BQgaQemS.js → select-model-CLnnqOlc.js} +1 -1
  159. package/dist/client/assets/{self-tool-result-CT1yvh3O.js → self-tool-result-Dna8s9Oo.js} +1 -1
  160. package/dist/client/assets/{seo-editor-DRMFdaq7.js → seo-editor-DRB-XVaQ.js} +1 -1
  161. package/dist/client/assets/{settings-layout-CgX5FyQa.js → settings-layout-DvjzASgI.js} +1 -1
  162. package/dist/client/assets/{settings-section-Bcc_2fvD.js → settings-section-D930bDYf.js} +1 -1
  163. package/dist/client/assets/{shell-controls-BGuoR7N3.js → shell-controls-B8p6VkFp.js} +1 -1
  164. package/dist/client/assets/{shell-layout-CVbzm9pt.js → shell-layout-lUlu2Gr-.js} +1 -1
  165. package/dist/client/assets/{sidebar-BJDN7cLY.js → sidebar-CPBjqlbL.js} +1 -1
  166. package/dist/client/assets/{skeleton-Dsp8yORd.js → skeleton-6V7643HY.js} +1 -1
  167. package/dist/client/assets/{sso-D57pzz5X.js → sso-DpssIT3e.js} +1 -1
  168. package/dist/client/assets/{store-CxDLI0qE.js → store-CEzSpQqh.js} +1 -1
  169. package/dist/client/assets/store-registry-Dq6xssN4.js +2 -0
  170. package/dist/client/assets/{studio-tools-BuLOTGHv.js → studio-tools-B-vV1MI8.js} +1 -1
  171. package/dist/client/assets/{switch-MqyV8bHX.js → switch-rEuswKCN.js} +1 -1
  172. package/dist/client/assets/{table-zBY0DCBd.js → table-BMXKGMyk.js} +1 -1
  173. package/dist/client/assets/{tabs-DnYJOhY1.js → tabs-CN2NJBwY.js} +1 -1
  174. package/dist/client/assets/{textarea-BzE4Tuui.js → textarea-BupGR0lI.js} +1 -1
  175. package/dist/client/assets/{toggle-group-DN7jA9b9.js → toggle-group-BqLL-yXd.js} +1 -1
  176. package/dist/client/assets/{toolbar-BZNPFane.js → toolbar-BUsBhnoL.js} +1 -1
  177. package/dist/client/assets/{toolbar-icon-button-Ba3d9YDG.js → toolbar-icon-button-B_b_NLNp.js} +1 -1
  178. package/dist/client/assets/{tooltip-BOcMtzfk.js → tooltip-Jvhix_io.js} +1 -1
  179. package/dist/client/assets/{use-ai-providers-IV18-3hr.js → use-ai-providers-Ca54Hv6R.js} +1 -1
  180. package/dist/client/assets/{use-automations-PfYw5msq.js → use-automations-B6yUWVy9.js} +1 -1
  181. package/dist/client/assets/{use-autosave-CZjrk7-z.js → use-autosave-B6UsL6Wo.js} +1 -1
  182. package/dist/client/assets/{use-capability-w-ZdxdqP.js → use-capability-kFJWZ1io.js} +1 -1
  183. package/dist/client/assets/{use-clock-tick-DqroyHlX.js → use-clock-tick-ORXC-PT-.js} +1 -1
  184. package/dist/client/assets/{use-collections-f9Q8wfK-.js → use-collections-bUVgy-WV.js} +1 -1
  185. package/dist/client/assets/{use-connection-BNPNE_SP.js → use-connection-sC8jE3hx.js} +1 -1
  186. package/dist/client/assets/{use-copy-Ca-gHYKy.js → use-copy-BTlwdQ1G.js} +1 -1
  187. package/dist/client/assets/{use-create-virtual-mcp-BZtSsG5z.js → use-create-virtual-mcp-DUtdKHAi.js} +1 -1
  188. package/dist/client/assets/{use-debounced-autosave-C4X7yTYn.js → use-debounced-autosave-CvIn_u1j.js} +1 -1
  189. package/dist/client/assets/{use-debounced-value-1t_oQn98.js → use-debounced-value-zAmxs5tO.js} +1 -1
  190. package/dist/client/assets/{use-deco-credits-BIKmdE6O.js → use-deco-credits-DpOcxRDL.js} +1 -1
  191. package/dist/client/assets/{use-decopilot-events-B3SNFZJY.js → use-decopilot-events-DHCEkynh.js} +1 -1
  192. package/dist/client/assets/{use-delete-connection-g5ShGrEa.js → use-delete-connection-DhX25Zla.js} +1 -1
  193. package/dist/client/assets/{use-deployment-admin-DCj_a98p.js → use-deployment-admin-hr1CXWWj.js} +1 -1
  194. package/dist/client/assets/{use-file-configs-CorgVV74.js → use-file-configs-C-bcKIh3.js} +1 -1
  195. package/dist/client/assets/{use-infinite-scroll-BsVyukiI.js → use-infinite-scroll-DJXfSrrz.js} +1 -1
  196. package/dist/client/assets/{use-join-requests-TC_rlfDH.js → use-join-requests-Dn-2i_ib.js} +1 -1
  197. package/dist/client/assets/{use-mcp-auth-status-B1dXumVw.js → use-mcp-auth-status-C9ojbO9E.js} +1 -1
  198. package/dist/client/assets/{use-mcp-client-CXXQxJT5.js → use-mcp-client-Badto8qZ.js} +1 -1
  199. package/dist/client/assets/{use-mcp-tools-FM11b0Gm.js → use-mcp-tools-BWj2c5IO.js} +1 -1
  200. package/dist/client/assets/{use-members-BZGivsvG.js → use-members-AUmNujbH.js} +1 -1
  201. package/dist/client/assets/{use-mobile-B3bAcYN-.js → use-mobile-BsG2oqso.js} +1 -1
  202. package/dist/client/assets/{use-navigate-to-agent-DDsf5KPN.js → use-navigate-to-agent-BU1V5b8p.js} +1 -1
  203. package/dist/client/assets/{use-org-auth-client-CM9V_ROk.js → use-org-auth-client-qqnf1Qpz.js} +1 -1
  204. package/dist/client/assets/{use-org-sso-CV1K0X76.js → use-org-sso-B8RAy53C.js} +1 -1
  205. package/dist/client/assets/{use-organization-roles-CiCpl9hw.js → use-organization-roles-BzmxCy5q.js} +1 -1
  206. package/dist/client/assets/{use-organization-settings-DQtbF6_8.js → use-organization-settings-DfeVBJuQ.js} +1 -1
  207. package/dist/client/assets/{use-registry-app-DhHdaC8x.js → use-registry-app-CX-PN9hl.js} +1 -1
  208. package/dist/client/assets/{use-registry-connections-CzS1q2d7.js → use-registry-connections-EL-nDoOQ.js} +1 -1
  209. package/dist/client/assets/{use-secrets-CqKmYklp.js → use-secrets-YTJssPKP.js} +1 -1
  210. package/dist/client/assets/{use-status-sounds-CYrUZYL0.js → use-status-sounds-Ff1dRqh0.js} +1 -1
  211. package/dist/client/assets/{use-t-BMBs1w9-.js → use-t-BXvEcdAl.js} +1 -1
  212. package/dist/client/assets/{use-view-mode-C08kIQaD.js → use-view-mode-7j2UOhN4.js} +1 -1
  213. package/dist/client/assets/{use-virtual-mcp-CyjhxGbX.js → use-virtual-mcp-O2f-Xdwi.js} +1 -1
  214. package/dist/client/assets/useInfiniteQuery-BdfCFibj.js +1 -0
  215. package/dist/client/assets/{useRouterState-JW1cOKyQ.js → useRouterState-HMsc6NBo.js} +1 -1
  216. package/dist/client/assets/useSuspenseInfiniteQuery-B-Ypf-Ut.js +1 -0
  217. package/dist/client/assets/{users-BUTg_aAD.js → users-LCRz-TtG.js} +1 -1
  218. package/dist/client/assets/{variant-calendar-DC82GYkZ.js → variant-calendar-CagOJF-_.js} +1 -1
  219. package/dist/client/assets/{view-mode-toggle-CJAkNdL-.js → view-mode-toggle-BoRUJzKz.js} +1 -1
  220. package/dist/client/index.html +1 -1
  221. package/dist/server/cli.js +2 -2
  222. package/dist/server/server.js +2 -2
  223. package/package.json +1 -1
  224. package/dist/client/assets/page-seo-sheet-CKkGWBdS.js +0 -1
  225. package/dist/client/assets/project-app-view-CFya6n06.js +0 -1
  226. package/dist/client/assets/record-editor-m94KvWhf.js +0 -1
  227. package/dist/client/assets/redirect-editor-BhBUYCam.js +0 -1
  228. package/dist/client/assets/registry-DY3_poIW.js +0 -2
  229. package/dist/client/assets/registry-layout-U3bPZ5je.js +0 -27
  230. package/dist/client/assets/store-registry-DjCssatg.js +0 -2
  231. package/dist/client/assets/useInfiniteQuery-BSzdQAha.js +0 -1
  232. package/dist/client/assets/useSuspenseInfiniteQuery-CBfBMN4q.js +0 -1
@@ -1 +1 @@
1
- import{c as $,r as T,l as f,j as i}from"./index-CZadTLHe.js";import{b as k,T as I,a as P}from"./tooltip-BOcMtzfk.js";const M={sm:{button:"size-7",buttonWithLabel:"h-7",icon:"size-4"},md:{button:"size-9",buttonWithLabel:"h-9",icon:"size-5"},lg:{button:"size-12",buttonWithLabel:"h-12",icon:"size-6"}};function B(E){const t=$.c(27),{value:s,onValueChange:y,options:o,size:C,fullWidth:L,className:z}=E,_=C===void 0?"sm":C,b=L===void 0?!1:L;let h;t[0]===Symbol.for("react.memo_cache_sentinel")?(h=[],t[0]=h):h=t[0];const R=T.useRef(h);let x;t[1]===Symbol.for("react.memo_cache_sentinel")?(x={left:0,width:0,opacity:0},t[1]=x):x=t[1];const[d,S]=T.useState(x);let g,p;t[2]!==o||t[3]!==s?(g=()=>{const e=o.findIndex(j=>j.value===s),m=R.current[e];m&&S({left:m.offsetLeft,width:m.offsetWidth,opacity:1})},p=[s,o],t[2]=o,t[3]=s,t[4]=g,t[5]=p):(g=t[4],p=t[5]),T.useEffect(g,p);const n=M[_];let l;t[6]!==z?(l=f("relative flex gap-0 bg-muted rounded-lg",z),t[6]=z,t[7]=l):l=t[7];let a;t[8]!==n||t[9]!==b||t[10]!==y||t[11]!==o||t[12]!==s?(a=o.map((e,m)=>{const j=i.jsxs("button",{ref:V=>{R.current[m]=V},type:"button",onClick:()=>y(e.value),className:f("relative z-10 flex items-center justify-center gap-2 rounded-lg transition-colors [transition-timing-function:var(--ease-out-cubic)] duration-200",b?"flex-1 h-12 px-4":e.label?f(n.buttonWithLabel,"px-3"):n.button),children:[i.jsx("span",{className:f("transition-colors ease-out duration-200 flex items-center justify-center [&>svg]:size-[1em]",n.icon,s===e.value?"text-foreground":"text-muted-foreground"),children:e.icon}),e.label&&i.jsx("span",{className:f("text-xs transition-colors ease-out duration-200 whitespace-nowrap",s===e.value?"text-foreground":"text-muted-foreground"),children:e.label})]},e.value);return e.tooltip?i.jsxs(k,{children:[i.jsx(I,{asChild:!0,children:j}),i.jsx(P,{side:"bottom",children:e.tooltip})]},e.value):j}),t[8]=n,t[9]=b,t[10]=y,t[11]=o,t[12]=s,t[13]=a):a=t[13];const w=b?"h-12":n.button;let r;t[14]!==w?(r=f("absolute z-0 bg-background rounded-lg border-shadow transition-all [transition-timing-function:var(--ease-out-cubic)] duration-200",w),t[14]=w,t[15]=r):r=t[15];const W=`${d.left}px`,N=`${d.width}px`;let c;t[16]!==d.opacity||t[17]!==W||t[18]!==N?(c={left:W,width:N,opacity:d.opacity},t[16]=d.opacity,t[17]=W,t[18]=N,t[19]=c):c=t[19];let u;t[20]!==r||t[21]!==c?(u=i.jsx("div",{className:r,style:c}),t[20]=r,t[21]=c,t[22]=u):u=t[22];let v;return t[23]!==u||t[24]!==l||t[25]!==a?(v=i.jsxs("div",{className:l,children:[a,u]}),t[23]=u,t[24]=l,t[25]=a,t[26]=v):v=t[26],v}export{B as V};
1
+ import{c as $,r as T,l as f,j as i}from"./index-ClpcoO6Q.js";import{b as k,T as I,a as P}from"./tooltip-Jvhix_io.js";const M={sm:{button:"size-7",buttonWithLabel:"h-7",icon:"size-4"},md:{button:"size-9",buttonWithLabel:"h-9",icon:"size-5"},lg:{button:"size-12",buttonWithLabel:"h-12",icon:"size-6"}};function B(E){const t=$.c(27),{value:s,onValueChange:y,options:o,size:C,fullWidth:L,className:z}=E,_=C===void 0?"sm":C,b=L===void 0?!1:L;let h;t[0]===Symbol.for("react.memo_cache_sentinel")?(h=[],t[0]=h):h=t[0];const R=T.useRef(h);let x;t[1]===Symbol.for("react.memo_cache_sentinel")?(x={left:0,width:0,opacity:0},t[1]=x):x=t[1];const[d,S]=T.useState(x);let g,p;t[2]!==o||t[3]!==s?(g=()=>{const e=o.findIndex(j=>j.value===s),m=R.current[e];m&&S({left:m.offsetLeft,width:m.offsetWidth,opacity:1})},p=[s,o],t[2]=o,t[3]=s,t[4]=g,t[5]=p):(g=t[4],p=t[5]),T.useEffect(g,p);const n=M[_];let l;t[6]!==z?(l=f("relative flex gap-0 bg-muted rounded-lg",z),t[6]=z,t[7]=l):l=t[7];let a;t[8]!==n||t[9]!==b||t[10]!==y||t[11]!==o||t[12]!==s?(a=o.map((e,m)=>{const j=i.jsxs("button",{ref:V=>{R.current[m]=V},type:"button",onClick:()=>y(e.value),className:f("relative z-10 flex items-center justify-center gap-2 rounded-lg transition-colors [transition-timing-function:var(--ease-out-cubic)] duration-200",b?"flex-1 h-12 px-4":e.label?f(n.buttonWithLabel,"px-3"):n.button),children:[i.jsx("span",{className:f("transition-colors ease-out duration-200 flex items-center justify-center [&>svg]:size-[1em]",n.icon,s===e.value?"text-foreground":"text-muted-foreground"),children:e.icon}),e.label&&i.jsx("span",{className:f("text-xs transition-colors ease-out duration-200 whitespace-nowrap",s===e.value?"text-foreground":"text-muted-foreground"),children:e.label})]},e.value);return e.tooltip?i.jsxs(k,{children:[i.jsx(I,{asChild:!0,children:j}),i.jsx(P,{side:"bottom",children:e.tooltip})]},e.value):j}),t[8]=n,t[9]=b,t[10]=y,t[11]=o,t[12]=s,t[13]=a):a=t[13];const w=b?"h-12":n.button;let r;t[14]!==w?(r=f("absolute z-0 bg-background rounded-lg border-shadow transition-all [transition-timing-function:var(--ease-out-cubic)] duration-200",w),t[14]=w,t[15]=r):r=t[15];const W=`${d.left}px`,N=`${d.width}px`;let c;t[16]!==d.opacity||t[17]!==W||t[18]!==N?(c={left:W,width:N,opacity:d.opacity},t[16]=d.opacity,t[17]=W,t[18]=N,t[19]=c):c=t[19];let u;t[20]!==r||t[21]!==c?(u=i.jsx("div",{className:r,style:c}),t[20]=r,t[21]=c,t[22]=u):u=t[22];let v;return t[23]!==u||t[24]!==l||t[25]!==a?(v=i.jsxs("div",{className:l,children:[a,u]}),t[23]=u,t[24]=l,t[25]=a,t[26]=v):v=t[26],v}export{B as V};
@@ -56,7 +56,7 @@
56
56
  <meta name="apple-mobile-web-app-capable" content="yes" />
57
57
  <meta name="apple-mobile-web-app-status-bar-style" content="default" />
58
58
  <meta name="apple-mobile-web-app-title" content="deco Studio" />
59
- <script type="module" crossorigin src="/assets/index-CZadTLHe.js"></script>
59
+ <script type="module" crossorigin src="/assets/index-ClpcoO6Q.js"></script>
60
60
  <link rel="stylesheet" crossorigin href="/assets/index-DxTnZ0Oo.css">
61
61
  </head>
62
62
  <body>
@@ -84540,7 +84540,7 @@ ${$}`;h(N);return}if(E(null,y),t.strategy==="count"){if(w--,w===0)h()}if(t.strat
84540
84540
  `);function h(_){if(t===void 0)return!0;let v=tq(_),D=v&&tq(t)?omu(t):t,n=v?omu(_):smu(_),O=LCt(D,n);return O===""||!O.startsWith("..")&&!JCt(O)}return{upsert(_){f.run({$handle:_.handle,$status:_.status,$sandboxPath:_.sandboxPath,$port:_.port??null,$previewUrl:_.previewUrl??null,$repoCloneUrl:_.repoCloneUrl??null,$branch:_.branch??null,$projectName:_.projectName??null,$error:_.error??null,$now:Date.now()})},list(){return l.all().map(X1i)},reconcile(){let _=Date.now();for(let v of l.all().map(X1i)){if(!h(v.sandboxPath)){c.run({$handle:v.handle,$now:_});continue}if(!tq(v.sandboxPath)){E.run({$handle:v.handle,$now:_});continue}if(v.status==="spawning"||v.status==="ready"||v.status==="failed"||v.status==="missing")$.run({$handle:v.handle,$now:_})}return l.all().map(X1i)},prune(_){let v=[],D=[],n=this.reconcile();for(let O of n){if(!h(O.sandboxPath)){D.push({handle:O.handle,sandboxPath:O.sandboxPath,reason:"outside_root",deletedFiles:!1});continue}if(_.missing&&O.status==="missing"){w.run({$handle:O.handle}),v.push({handle:O.handle,sandboxPath:O.sandboxPath,reason:"missing",deletedFiles:!1});continue}if(!_.merged||!tq(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(!yn(O.sandboxPath,["rev-parse","--is-inside-work-tree"]).ok){D.push({handle:O.handle,sandboxPath:O.sandboxPath,reason:"git_unavailable",deletedFiles:!1});continue}let N=yn(O.sandboxPath,["status","--porcelain"]);if(!N.ok){D.push({handle:O.handle,sandboxPath:O.sandboxPath,reason:"git_unavailable",deletedFiles:!1});continue}if(N.stdout.trim()!==""){D.push({handle:O.handle,sandboxPath:O.sandboxPath,reason:"dirty_worktree",deletedFiles:!1});continue}let y=ieu(O.sandboxPath,O.branch);if(y===null){D.push({handle:O.handle,sandboxPath:O.sandboxPath,reason:"git_unavailable",deletedFiles:!1});continue}if(!y){D.push({handle:O.handle,sandboxPath:O.sandboxPath,reason:"branch_not_merged",deletedFiles:!1});continue}jCt(O.sandboxPath,{recursive:!0,force:!0}),w.run({$handle:O.handle}),v.push({handle:O.handle,sandboxPath:O.sandboxPath,reason:"merged",deletedFiles:!0})}return{removed:v,skipped:D}},delete(_){w.run({$handle:_})},inspect(_){let v=d.get({$handle:_});if(v===null)return null;let D=X1i(v),n=0,O=null;if(tq(D.sandboxPath)&&yn(D.sandboxPath,["rev-parse","--is-inside-work-tree"]).ok){let N=yn(D.sandboxPath,["status","--porcelain"]);if(N.ok){let y=N.stdout.trim();n=y===""?0:y.split(`
84541
84541
  `).length}if(D.branch!==null&&D.branch.trim()!=="")O=ieu(D.sandboxPath,D.branch)}return{handle:D.handle,branch:D.branch,sandboxPath:D.sandboxPath,dirtyCount:n,merged:O}},close(){u.close()}}}var YRi=()=>{};function zCt(i,u){return u?[["umount","-f",i]]:[["fusermount","-uz",i],["umount","-l",i]]}function teu(i,u){if(process.platform==="win32")return;for(let t of zCt(i,u))if(Bun.spawnSync(t,{stdout:"ignore",stderr:"ignore",timeout:5000}).exitCode===0)break}var feu=()=>{};import{existsSync as HCt,readdirSync as RCt}from"fs";import{rm as bCt}from"fs/promises";import{join as leu}from"path";async function ceu(i,u={}){let t=u.detach??CCt,f=u.exists??HCt,l=u.readdir??(($)=>RCt($)),c=u.rm??(($)=>bCt($,{recursive:!0,force:!0})),E=leu(i,"org");if(f(E))for(let $ of l(E))t(leu(E,$));await c(i)}var CCt=(i)=>teu(i,process.platform==="darwin");var Eeu=g(()=>{feu()});import{join as MCt}from"path";function $eu(i){let u=i.purge??ceu;return{stopSandbox(t){return i.provider.deleteSandbox(t)},inspectSandbox(t){return i.registry.inspect(t)},async removeSandbox(t){try{return await Cl(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??MCt(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 Wc?f.cause:f;return{ok:!1,error:l instanceof Error?l.message:String(l)}}}}}var weu=g(()=>{y4();Eeu()});import{randomBytes as qCt}from"crypto";import{mkdir as VCt}from"fs/promises";import{createServer as rCt}from"net";import{join as mCt}from"path";function deu(i,u){return Error(`sandbox failed to start: ${i}`,{cause:u})}function heu(i){if(!(i instanceof Error))return!1;return i.name==="TimeoutError"||/timed out|timeout|operation was aborted|aborted/i.test(i.message)}function _eu(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 eCt(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 aCt(i){return{repoCloneUrl:i.repo?.cloneUrl??null,branch:i.repo?.branch??null,projectName:eCt(i.repo?.cloneUrl)}}function veu(i){let u=i.maxSandboxes??20,t=new Map,f=i.pickPort??oCt,l=i.fetchImpl??fetch,c=i.resolvePreviewUrl??((n,O)=>`http://127.0.0.1:${O}`),E=(n)=>mCt(i.dataDir,"sandboxes",n),$=(n)=>{try{i.registry?.upsert(n)}catch(O){console.warn(`[user-desktop] failed to persist sandbox lifecycle handle=${n.handle} status=${n.status}:`,O)}},w=(n)=>{try{i.onEvent?.(n)}catch{}},d=async(n)=>{let O=new AbortController,N=setTimeout(()=>O.abort(),1500);try{let y=await l(`${n}/health`,{signal:O.signal});if(!y.ok)console.warn(`[user-desktop] probe ${n}/health \u2192 ${y.status} (treating as dead)`);return y.ok}catch(y){return console.warn(`[user-desktop] probe ${n}/health failed: ${y instanceof Error?y.message:String(y)} (treating as dead)`),!1}finally{clearTimeout(N)}},h=(n)=>{console.warn(`[user-desktop] evicting dead daemon handle=${n.handle} port=${n.port}`);try{n.process.kill("SIGTERM")}catch{}if(t.get(n.handle)===n)t.delete(n.handle),$({handle:n.handle,status:"stopped",sandboxPath:E(n.handle),port:null,previewUrl:null,...n.registryMetadata,error:null}),w({handle:n.handle,phase:"evicted"})},_=new Map;function v(){if(t.size<u)return;let n=[...t.values()].filter((N)=>N.activeDispatchCount===0).sort((N,y)=>N.lastUsedAt-y.lastUsedAt);if(n.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=n[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(n)=>{let O=aCt(n),N=E(n.handle);$({handle:n.handle,status:"spawning",sandboxPath:N,port:null,previewUrl:null,...O,error:null}),w({handle:n.handle,phase:"spawning",sandboxPath:N,projectName:O.projectName,branch:O.branch}),v();let y,Z=null,T;try{await VCt(N,{recursive:!0}),console.log(`[user-desktop] ensure handle=${n.handle} repo=${n.repo?.cloneUrl??"(none)"} branch=${n.repo?.branch??"(none)"} runtime=${n.workload?.runtime??"(autodetect)"} pm=${n.workload?.packageManager??"(autodetect)"}`),T=qCt(24).toString("hex");let[G,I]=await Promise.all([f(),f()]);y=G,console.log(`[user-desktop] spawn handle=${n.handle} port=${y} devPort=${I} workdir=${N}`),Z=await Promise.resolve(i.spawnDaemon({workdir:N,handle:n.handle,port:y,daemonToken:T,offloadAllowedHosts:n.offloadAllowedHosts??[],offloadAllowSameHostDev:n.offloadAllowSameHostDev??!1,orgFsConfigJson:n.orgFsConfigJson}));try{await i.waitForHealth(y)}catch(k){throw deu("the sandbox didn't come online in time",k)}console.log(`[user-desktop] healthy handle=${n.handle} port=${y} \u2014 posting config`);try{await i.postConfig(y,I,{repo:n.repo,workload:n.workload,operator:n.operator},T)}catch(k){throw deu(heu(k)?"configuration timed out":"the sandbox rejected its configuration",k)}}catch(G){if((heu(G)?console.warn:console.error)(`[user-desktop] sandbox bring-up failed handle=${n.handle} port=${y??"(none)"}${Z?" (killing daemon)":""}:`,G),Z)try{Z.kill("SIGKILL")}catch{}throw w({handle:n.handle,phase:"failed",error:_eu(G),sandboxPath:N,projectName:O.projectName,branch:O.branch}),$({handle:n.handle,status:"failed",sandboxPath:N,port:null,previewUrl:null,...O,error:_eu(G)}),G}if(!Z||y===void 0)throw Error("sandbox bring-up invariant violated");let B=`http://127.0.0.1:${y}`,F=c(n.handle,y);console.log(`[user-desktop] ready handle=${n.handle} port=${y} sandboxApiUrl=${B} previewUrl=${F}`);let A={handle:n.handle,port:y,process:Z,sandboxApiUrl:B,previewUrl:F,lastUsedAt:Date.now(),activeDispatchCount:0,daemonToken:T,registryMetadata:O};if(t.set(n.handle,A),$({handle:n.handle,status:"ready",sandboxPath:N,port:y,previewUrl:F,...O,error:null}),w({handle:n.handle,phase:"ready",port:y,previewUrl:F,sandboxPath:N,projectName:O.projectName,branch:O.branch}),Z.exited)Z.exited.then(()=>{if(t.get(n.handle)===A)console.warn(`[user-desktop] daemon process exited unexpectedly handle=${n.handle} port=${y} \u2014 removing from cache`),t.delete(n.handle),$({handle:n.handle,status:"stopped",sandboxPath:N,port:null,previewUrl:null,...O,error:null}),w({handle:n.handle,phase:"evicted"});else console.log(`[user-desktop] daemon process exited handle=${n.handle} port=${y} (already replaced/removed)`)});return{sandboxApiUrl:B,previewUrl:F,port:y}};return{async ensureSandbox(n){let O=t.get(n.handle);if(O){if(await d(O.sandboxApiUrl))return console.log(`[user-desktop] cache hit handle=${n.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=${n.handle} port=${O.port} \u2014 respawning`),h(O)}let N=_.get(n.handle);if(N)return console.log(`[user-desktop] joining in-flight ensure handle=${n.handle}`),N;let y=D(n).finally(()=>{_.delete(n.handle)});return _.set(n.handle,y),y},proxyPort(n){let O=t.get(n);if(O)O.lastUsedAt=Date.now();return O?.port??null},getDaemonToken(n){return t.get(n)?.daemonToken??null},hasHandle(n){return t.has(n)||_.has(n)},recordHit(n){let O=t.get(n);if(O)O.lastUsedAt=Date.now()},acquireDispatch(n){let O=t.get(n);if(!O)return()=>{};O.activeDispatchCount+=1;let N=!1;return()=>{if(N)return;N=!0;let y=t.get(n);if(y)y.activeDispatchCount=Math.max(0,y.activeDispatchCount-1)}},listSandboxes(){return[...t.values()]},async deleteSandbox(n){let O=t.get(n);if(!O){console.log(`[user-desktop] delete handle=${n} (not found, no-op)`);return}if(O.activeDispatchCount>0){console.warn(`[user-desktop] delete handle=${n} port=${O.port} REFUSED \u2014 ${O.activeDispatchCount} active dispatch(es) in flight`);return}console.log(`[user-desktop] delete handle=${n} port=${O.port}`);try{O.process.kill("SIGTERM")}catch{}t.delete(n),$({handle:n,status:"stopped",sandboxPath:E(n),port:null,previewUrl:null,repoCloneUrl:null,branch:null,projectName:null,error:null}),w({handle:n,phase:"deleted"})},async shutdown(){console.log(`[user-desktop] shutdown \u2014 killing ${t.size} sandbox(es)`);for(let n of t.values())try{n.process.kill("SIGTERM")}catch{}t.clear()}}}function oCt(){return new Promise((i,u)=>{let t=rCt();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 Deu=()=>{};import{randomUUID as sCt}from"crypto";import{hostname as pCt}from"os";async function neu(i){let u=pCt()||void 0;i.monitor?.onMachine?.(u??"this machine");let t=rbu(i.dataDir,{outFd:i.logFd,perSandboxLog:i.perSandboxLogs,hotReload:i.hotReload}),f=W1i({path:L1i(i.dataDir),managedSandboxRoot:`${i.dataDir}/sandboxes`}),l=!1,c=()=>{if(l)return;l=!0;try{f.close()}catch{}};try{let E=0,$=veu({dataDir:i.dataDir,registry:f,resolvePreviewUrl:(k,q)=>E>0?`http://${k}.localhost:${E}`:`http://127.0.0.1:${q}`,spawnDaemon:async(k)=>{let q={DAEMON_BOOT_ID:sCt(),APP_ROOT:k.workdir,PROXY_PORT:String(k.port),DAEMON_TOKEN:k.daemonToken,OFFLOAD_ALLOWED_HOSTS:k.offloadAllowedHosts.join(","),...k.offloadAllowSameHostDev?{OFFLOAD_ALLOW_SAME_HOST_DEV:"1"}:{}};if(k.orgFsConfigJson){let W=await obu(i.dataDir);if(W)q.ORGFS_CONFIG=k.orgFsConfigJson,q.ORGFS_RCLONE_PATH=W}let J=await t({workdir:k.workdir,env:q,daemonPort:k.port});return{port:k.port,kill:(W)=>J.kill(W),exited:J.exited.then(()=>{return})}},postConfig:async(k,q,J,W)=>{let r={port:q};if(J.workload)r.runtime=J.workload.runtime,r.packageManager={name:J.workload.packageManager,...J.workload.packageManagerPath?{path:J.workload.packageManagerPath}:{}};let Y={application:r},fi=vh(J.operator??null);if(fi)Y.operator=fi;if(J.repo)Y.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 $n(`http://127.0.0.1:${k}`,W,Y)},waitForHealth:async(k)=>{await Lli(`http://127.0.0.1:${k}`)},maxSandboxes:20,onEvent:i.monitor?.onEvent}),w=await zmu({port:i.port,lookupSandboxPort:(k)=>$.proxyPort(k)});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=pbu({provider:$}),h=async()=>{let k=await En({dataDir:i.dataDir,target:i.clusterBaseUrl});if(!k)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 k.accessToken},_=await emu(i.dataDir),v=process.env.npm_package_version??"0.0.0",D=await WRi(),n=rmu(D,{onChange:(k)=>{console.log(`[link-daemon] capabilities detected: +${k.join(",")} (now: ${D.join(",")})`)}}),O=Pzi({path:`${i.dataDir}/link/outbox.sqlite`});O.clear();let N=()=>{},y=new AbortController,Z={clusterBaseUrl:i.clusterBaseUrl,getAccessToken:h,provider:$,outbox:O,controlHandler:d,capabilities:D,machineId:_,cliVersion:v,previewPort:w.port,onConnected:()=>{i.monitor?.onCluster?.("linked"),console.log(`Linked to ${i.clusterBaseUrl}`)},onShutdown:()=>N(),runLifetimeSignal:y.signal};console.log(`[link-daemon] transport=tunnel cluster=${i.clusterBaseUrl}`);let T=await xmu(Z);console.log("[link-daemon] active transport=tunnel");let B,F=new Promise((k)=>{B=k}),A=!1,G=async()=>{if(A)return;A=!0,y.abort(),console.log(`
84542
84542
  Shutting down\u2026`),n();try{await T.close()}catch{}try{await w.stop()}catch{}try{await $.shutdown()}catch{}try{O.close()}catch{}c(),B(0)};process.on("SIGINT",()=>void G()),process.on("SIGTERM",()=>void G()),N=()=>{console.log("Disconnect requested from the Studio web UI \u2014 shutting down. Run `bunx decocms@latest link` to reconnect."),G()},T.closed.then(()=>{if(i.monitor?.onCluster?.("closed"),!A)console.error("Cluster connection closed permanently; exiting."),G()});let I=$eu({provider:$,registry:f,dataDir:i.dataDir});return{stopped:F,stop:G,stopSandbox:I.stopSandbox,removeSandbox:I.removeSandbox,inspectSandbox:I.inspectSandbox}}catch(E){throw c(),E}}var geu=g(()=>{Nzi();AM();mbu();sbu();iCu();Azi();kmu();Hmu();mmu();amu();PM();YRi();weu();Deu()});function QRi(i){return i.map((u)=>typeof u==="string"?u:String(u)).join(" ")}import{createServer as iMt}from"net";async function tMt(i){for(let u of uMt)if(await zRi(i,u))return u;return null}async function Oeu(i,{intervalMs:u=1000}={}){for(;;){let t=await tMt(i);if(t)return t;await O0(u)}}function zRi(i,u){return new Promise((t)=>{let f=iMt();f.once("error",(l)=>{t(l.code==="EADDRINUSE")}),f.listen(i,u,()=>{f.close(()=>t(!1))})})}var uMt;var HRi=g(()=>{y4();uMt=["localhost","127.0.0.1","0.0.0.0"]});function Neu(i){return typeof i==="object"&&i!==null&&"code"in i&&i.code==="EADDRINUSE"}function fMt(i,u=process.platform){if(u==="win32")return`for /f "tokens=5" %P in ('netstat -ano ^| findstr /R /C:":${i} .*LISTENING"') do taskkill /F /PID %P`;return`kill -9 $(lsof -ti tcp:${i})`}function yeu(i,u=process.platform){return[`Port ${i} is already in use.`,"Run this command to stop the process listening on it, then retry `decocms link`:","",` ${fMt(i,u)}`].join(`
84543
- `)}var RRi;var Zeu=g(()=>{RRi=class RRi extends Error{port;code="EADDRINUSE";constructor(i){super(`Port ${i} is already in use.`);this.port=i;this.name="PortInUseError"}}});var cW;var Y1i=g(()=>{cW={name:"decocms",version:"4.91.0",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.144.3","@openai/codex-darwin-arm64":"npm:@openai/codex@0.144.3-darwin-arm64","@openai/codex-darwin-x64":"npm:@openai/codex@0.144.3-darwin-x64","@openai/codex-linux-arm64":"npm:@openai/codex@0.144.3-linux-arm64","@openai/codex-linux-x64":"npm:@openai/codex@0.144.3-linux-x64","@openai/codex-win32-arm64":"npm:@openai/codex@0.144.3-win32-arm64","@openai/codex-win32-x64":"npm:@openai/codex@0.144.3-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","@tiptap/extension-text-align":"3.20.2","@xterm/addon-fit":"^0.11.0","@xterm/xterm":"^6.0.0",echarts:"^5.6.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 fq={};Ji(fq,{printBanner:()=>EMt,bannerLines:()=>Teu,BANNER_LINES:()=>Q1i,BANNER_GRADIENT:()=>z1i});function cMt(i){let u=Number.parseInt(i.slice(1),16);return[u>>16&255,u>>8&255,u&255]}function Teu(i){let u=Q1i.map((t,f)=>{let[l,c,E]=cMt(z1i[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 EMt(i){console.log("");for(let u of Teu(i))console.log(u);console.log("")}var Q1i,z1i;var EW=g(()=>{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 "],z1i=["#00ff64","#00ee5e","#00dc56","#00c84e","#00b444","#00a03c","#008832","#006e28"]});import{Box as $Mt,Text as Beu}from"ink";import{jsx as wMt,jsxs as Feu}from"react/jsx-runtime";function H1i({version:i}){return Feu($Mt,{flexDirection:"column",marginTop:1,children:[Q1i.map((u,t)=>wMt(Beu,{color:z1i[t],children:u},t)),Feu(Beu,{dimColor:!0,children:[" v",i]})]})}var bRi=g(()=>{EW()});function Ueu(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 $W(i){return[...i.values()].map((u)=>u.handle).sort((u,t)=>u.localeCompare(t))}function Peu(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 Aeu(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 VRi={};Ji(VRi,{subscribeLinkState:()=>CRi,setSelectedHandle:()=>MRi,setRemoving:()=>C1i,setPersistedSandboxes:()=>yMt,setPendingConfirm:()=>cq,setMachine:()=>nMt,setLogPath:()=>OMt,setLinkActions:()=>NMt,setIngress:()=>DMt,setDaemonError:()=>gMt,setClusterUrl:()=>vMt,setCluster:()=>_Mt,setActionError:()=>b1i,resetLinkStateForTests:()=>TMt,removeSandboxRow:()=>qRi,pushSandboxEvent:()=>ZMt,getLinkState:()=>lq,applySandboxEvent:()=>Ieu});function hMt(i){return i==="spawning"||i==="ready"||i==="failed"}function Ieu(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:u.projectName??f?.projectName??null,branch:u.branch??f?.branch??null,sandboxPath:u.sandboxPath??f?.sandboxPath??null}),t}function xeu(){return{cluster:"connecting",clusterUrl:null,ingressUrl:null,ingressPort:null,machine:null,cap:dMt,sandboxes:new Map,daemonError:null,logPath:null,selectedHandle:null,pendingConfirm:null,removingHandles:new Set,actionError:null,actions:null}}function Q$(){for(let i of R1i)i()}function lq(){return cf}function CRi(i){return R1i.add(i),()=>R1i.delete(i)}function _Mt(i){cf={...cf,cluster:i},Q$()}function vMt(i){cf={...cf,clusterUrl:i},Q$()}function DMt(i,u){cf={...cf,ingressPort:i,ingressUrl:u},Q$()}function nMt(i){cf={...cf,machine:i},Q$()}function gMt(i){cf={...cf,daemonError:i},Q$()}function OMt(i){cf={...cf,logPath:i},Q$()}function MRi(i){cf={...cf,selectedHandle:i},Q$()}function cq(i){cf={...cf,pendingConfirm:i},Q$()}function b1i(i){cf={...cf,actionError:i},Q$()}function C1i(i,u){if(cf.removingHandles.has(i)===u)return;let t=new Set(cf.removingHandles);if(u)t.add(i);else t.delete(i);cf={...cf,removingHandles:t},Q$()}function NMt(i){cf={...cf,actions:i},Q$()}function qRi(i){let u=$W(cf.sandboxes),t=Aeu(u,i,cf.selectedHandle),f=new Map(cf.sandboxes);f.delete(i);let l=new Set(cf.removingHandles);l.delete(i),cf={...cf,sandboxes:f,selectedHandle:t,pendingConfirm:null,removingHandles:l},Q$()}function yMt(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 cf.sandboxes)if(hMt(f.status))u.set(t,f);cf={...cf,sandboxes:u},Q$()}function ZMt(i){cf={...cf,sandboxes:Ieu(cf.sandboxes,i)},Q$()}function TMt(){cf=xeu(),R1i.clear()}var dMt=20,cf,R1i;var Eq=g(()=>{cf=xeu(),R1i=new Set});import{spawn as BMt}from"child_process";function FMt(i){if(i==="darwin")return"open";if(i==="win32")return"start";return"xdg-open"}function keu(i,u=process.platform){let t=FMt(u);try{BMt(t,[i],{stdio:"ignore",detached:!0}).unref()}catch{}}var Geu=()=>{};function Seu(i,u={}){let t=u.openUrl??keu,f=lq(),l=$W(f.sandboxes),c=f.selectedHandle!==null&&l.includes(f.selectedHandle)?f.selectedHandle:l[0]??null,E=f.actions;switch(i.type){case"move":MRi(Peu(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);b1i(null),cq({handle:c,branch:$?.branch??w?.branch??null,dirtyCount:$?.dirtyCount??0,merged:$?.merged??null});return}case"confirmYes":{let $=f.pendingConfirm;if(cq(null),$===null||!E)return;C1i($.handle,!0),E.removeSandbox($.handle).then((w)=>{if(w.ok)qRi($.handle);else C1i($.handle,!1),b1i(w.error)});return}case"confirmNo":cq(null);return;case"quit":if(E)E.quit();return}}var jeu=g(()=>{Eq();Geu()});function Keu(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 Jeu={};Ji(Jeu,{LinkApp:()=>IMt});import{Box as ql,Text as _1,useInput as UMt}from"ink";import{useSyncExternalStore as PMt}from"react";import{jsx as Gf,jsxs as Uh}from"react/jsx-runtime";function AMt(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 IMt(){let i=PMt(CRi,lq),u=[...i.sandboxes.values()].sort((l,c)=>l.handle.localeCompare(c.handle)),t=$W(i.sandboxes),f=i.selectedHandle!==null&&t.includes(i.selectedHandle)?i.selectedHandle:t[0]??null;return UMt((l,c)=>{let E=Keu(l,c,i.pendingConfirm!==null);if(E!==null)Seu(E)}),Uh(ql,{flexDirection:"column",children:[Gf(H1i,{version:cW.version}),Gf(ql,{marginBottom:1,children:Gf(_1,{dimColor:!0,children:"\u2500".repeat(80)})}),Gf(ql,{children:i.cluster==="linked"?Uh(_1,{color:"green",children:["\u2713 Connected to ",i.clusterUrl??"deco"]}):i.cluster==="connecting"?Uh(_1,{color:"yellow",children:["\u25CC Connecting to ",i.clusterUrl??"deco","\u2026"]}):Uh(_1,{color:"red",children:["\u2717 Disconnected from ",i.clusterUrl??"deco"]})}),Gf(ql,{children:i.ingressUrl?Uh(_1,{color:"green",children:["\u2713 Serving at ",i.ingressUrl]}):Gf(_1,{dimColor:!0,children:"\u25CC Starting local server\u2026"})}),Gf(ql,{marginBottom:1,children:Gf(_1,{dimColor:!0,children:`${"Computer".padEnd(16)}${i.machine??"this computer"} \xB7 ${u.length} of ${i.cap} previews`})}),u.length===0?Gf(_1,{dimColor:!0,children:"No previews running yet."}):Uh(ql,{flexDirection:"column",children:[Uh(ql,{children:[Gf(ql,{width:2,flexShrink:0}),Gf(ql,{width:wW.project,flexShrink:0,marginRight:1,children:Gf(_1,{dimColor:!0,wrap:"truncate-end",children:"PROJECT"})}),Gf(ql,{width:wW.branch,flexShrink:0,marginRight:1,children:Gf(_1,{dimColor:!0,wrap:"truncate-end",children:"BRANCH"})}),Gf(ql,{width:wW.status,flexShrink:0,marginRight:1,children:Gf(_1,{dimColor:!0,wrap:"truncate-end",children:"STATUS"})}),Gf(ql,{flexGrow:1,children:Gf(_1,{dimColor:!0,wrap:"truncate-end",children:"PREVIEW URL"})})]}),u.map((l)=>{let c=AMt(l,i.removingHandles.has(l.handle)),E=l.handle===f;return Uh(ql,{children:[Gf(ql,{width:2,flexShrink:0,children:Gf(_1,{color:"cyan",children:E?"\u203A":" "})}),Gf(ql,{width:wW.project,flexShrink:0,marginRight:1,children:Gf(_1,{bold:E,wrap:"truncate-end",children:l.projectName??l.handle})}),Gf(ql,{width:wW.branch,flexShrink:0,marginRight:1,children:Gf(_1,{bold:E,wrap:"truncate-end",children:l.branch??"\u2014"})}),Gf(ql,{width:wW.status,flexShrink:0,marginRight:1,children:Gf(_1,{color:c.color,bold:E,wrap:"truncate-end",children:c.text})}),Gf(ql,{flexGrow:1,children:Gf(_1,{dimColor:!0,wrap:"truncate-end",children:l.previewUrl??"\u2014"})})]},l.handle)})]}),i.daemonError?Gf(ql,{marginTop:1,children:Uh(_1,{color:"red",children:["\u26A0 ",i.daemonError]})}):null,i.logPath?Gf(ql,{marginTop:1,children:Uh(_1,{dimColor:!0,children:["Logs: ",i.logPath]})}):null,i.pendingConfirm?Gf(ql,{marginTop:1,children:Gf(_1,{color:"yellow",children:Ueu(i.pendingConfirm)})}):null,i.actionError?Gf(ql,{marginTop:1,children:Uh(_1,{color:"red",children:["\u2717 ",i.actionError]})}):null,Gf(ql,{marginTop:1,children:Gf(_1,{dimColor:!0,children:"\u2191\u2193 move \xB7 s stop \xB7 d delete \xB7 o open \xB7 q quit"})})]})}var wW;var Xeu=g(()=>{Y1i();bRi();jeu();Eq();wW={project:18,branch:22,status:14}});var Leu={};Ji(Leu,{runLinkCommand:()=>XMt});import{closeSync as xMt,mkdirSync as kMt,openSync as GMt,writeSync as SMt}from"fs";import{homedir as jMt}from"os";import{join as rRi}from"path";function KMt(i,u){let t={log:console.log,warn:console.warn,error:console.error},f=(l)=>{if(u===void 0)return;try{SMt(u,`${QRi(l)}
84543
+ `)}var RRi;var Zeu=g(()=>{RRi=class RRi extends Error{port;code="EADDRINUSE";constructor(i){super(`Port ${i} is already in use.`);this.port=i;this.name="PortInUseError"}}});var cW;var Y1i=g(()=>{cW={name:"decocms",version:"4.91.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.144.3","@openai/codex-darwin-arm64":"npm:@openai/codex@0.144.3-darwin-arm64","@openai/codex-darwin-x64":"npm:@openai/codex@0.144.3-darwin-x64","@openai/codex-linux-arm64":"npm:@openai/codex@0.144.3-linux-arm64","@openai/codex-linux-x64":"npm:@openai/codex@0.144.3-linux-x64","@openai/codex-win32-arm64":"npm:@openai/codex@0.144.3-win32-arm64","@openai/codex-win32-x64":"npm:@openai/codex@0.144.3-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","@tiptap/extension-text-align":"3.20.2","@xterm/addon-fit":"^0.11.0","@xterm/xterm":"^6.0.0",echarts:"^5.6.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 fq={};Ji(fq,{printBanner:()=>EMt,bannerLines:()=>Teu,BANNER_LINES:()=>Q1i,BANNER_GRADIENT:()=>z1i});function cMt(i){let u=Number.parseInt(i.slice(1),16);return[u>>16&255,u>>8&255,u&255]}function Teu(i){let u=Q1i.map((t,f)=>{let[l,c,E]=cMt(z1i[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 EMt(i){console.log("");for(let u of Teu(i))console.log(u);console.log("")}var Q1i,z1i;var EW=g(()=>{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 "],z1i=["#00ff64","#00ee5e","#00dc56","#00c84e","#00b444","#00a03c","#008832","#006e28"]});import{Box as $Mt,Text as Beu}from"ink";import{jsx as wMt,jsxs as Feu}from"react/jsx-runtime";function H1i({version:i}){return Feu($Mt,{flexDirection:"column",marginTop:1,children:[Q1i.map((u,t)=>wMt(Beu,{color:z1i[t],children:u},t)),Feu(Beu,{dimColor:!0,children:[" v",i]})]})}var bRi=g(()=>{EW()});function Ueu(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 $W(i){return[...i.values()].map((u)=>u.handle).sort((u,t)=>u.localeCompare(t))}function Peu(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 Aeu(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 VRi={};Ji(VRi,{subscribeLinkState:()=>CRi,setSelectedHandle:()=>MRi,setRemoving:()=>C1i,setPersistedSandboxes:()=>yMt,setPendingConfirm:()=>cq,setMachine:()=>nMt,setLogPath:()=>OMt,setLinkActions:()=>NMt,setIngress:()=>DMt,setDaemonError:()=>gMt,setClusterUrl:()=>vMt,setCluster:()=>_Mt,setActionError:()=>b1i,resetLinkStateForTests:()=>TMt,removeSandboxRow:()=>qRi,pushSandboxEvent:()=>ZMt,getLinkState:()=>lq,applySandboxEvent:()=>Ieu});function hMt(i){return i==="spawning"||i==="ready"||i==="failed"}function Ieu(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:u.projectName??f?.projectName??null,branch:u.branch??f?.branch??null,sandboxPath:u.sandboxPath??f?.sandboxPath??null}),t}function xeu(){return{cluster:"connecting",clusterUrl:null,ingressUrl:null,ingressPort:null,machine:null,cap:dMt,sandboxes:new Map,daemonError:null,logPath:null,selectedHandle:null,pendingConfirm:null,removingHandles:new Set,actionError:null,actions:null}}function Q$(){for(let i of R1i)i()}function lq(){return cf}function CRi(i){return R1i.add(i),()=>R1i.delete(i)}function _Mt(i){cf={...cf,cluster:i},Q$()}function vMt(i){cf={...cf,clusterUrl:i},Q$()}function DMt(i,u){cf={...cf,ingressPort:i,ingressUrl:u},Q$()}function nMt(i){cf={...cf,machine:i},Q$()}function gMt(i){cf={...cf,daemonError:i},Q$()}function OMt(i){cf={...cf,logPath:i},Q$()}function MRi(i){cf={...cf,selectedHandle:i},Q$()}function cq(i){cf={...cf,pendingConfirm:i},Q$()}function b1i(i){cf={...cf,actionError:i},Q$()}function C1i(i,u){if(cf.removingHandles.has(i)===u)return;let t=new Set(cf.removingHandles);if(u)t.add(i);else t.delete(i);cf={...cf,removingHandles:t},Q$()}function NMt(i){cf={...cf,actions:i},Q$()}function qRi(i){let u=$W(cf.sandboxes),t=Aeu(u,i,cf.selectedHandle),f=new Map(cf.sandboxes);f.delete(i);let l=new Set(cf.removingHandles);l.delete(i),cf={...cf,sandboxes:f,selectedHandle:t,pendingConfirm:null,removingHandles:l},Q$()}function yMt(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 cf.sandboxes)if(hMt(f.status))u.set(t,f);cf={...cf,sandboxes:u},Q$()}function ZMt(i){cf={...cf,sandboxes:Ieu(cf.sandboxes,i)},Q$()}function TMt(){cf=xeu(),R1i.clear()}var dMt=20,cf,R1i;var Eq=g(()=>{cf=xeu(),R1i=new Set});import{spawn as BMt}from"child_process";function FMt(i){if(i==="darwin")return"open";if(i==="win32")return"start";return"xdg-open"}function keu(i,u=process.platform){let t=FMt(u);try{BMt(t,[i],{stdio:"ignore",detached:!0}).unref()}catch{}}var Geu=()=>{};function Seu(i,u={}){let t=u.openUrl??keu,f=lq(),l=$W(f.sandboxes),c=f.selectedHandle!==null&&l.includes(f.selectedHandle)?f.selectedHandle:l[0]??null,E=f.actions;switch(i.type){case"move":MRi(Peu(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);b1i(null),cq({handle:c,branch:$?.branch??w?.branch??null,dirtyCount:$?.dirtyCount??0,merged:$?.merged??null});return}case"confirmYes":{let $=f.pendingConfirm;if(cq(null),$===null||!E)return;C1i($.handle,!0),E.removeSandbox($.handle).then((w)=>{if(w.ok)qRi($.handle);else C1i($.handle,!1),b1i(w.error)});return}case"confirmNo":cq(null);return;case"quit":if(E)E.quit();return}}var jeu=g(()=>{Eq();Geu()});function Keu(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 Jeu={};Ji(Jeu,{LinkApp:()=>IMt});import{Box as ql,Text as _1,useInput as UMt}from"ink";import{useSyncExternalStore as PMt}from"react";import{jsx as Gf,jsxs as Uh}from"react/jsx-runtime";function AMt(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 IMt(){let i=PMt(CRi,lq),u=[...i.sandboxes.values()].sort((l,c)=>l.handle.localeCompare(c.handle)),t=$W(i.sandboxes),f=i.selectedHandle!==null&&t.includes(i.selectedHandle)?i.selectedHandle:t[0]??null;return UMt((l,c)=>{let E=Keu(l,c,i.pendingConfirm!==null);if(E!==null)Seu(E)}),Uh(ql,{flexDirection:"column",children:[Gf(H1i,{version:cW.version}),Gf(ql,{marginBottom:1,children:Gf(_1,{dimColor:!0,children:"\u2500".repeat(80)})}),Gf(ql,{children:i.cluster==="linked"?Uh(_1,{color:"green",children:["\u2713 Connected to ",i.clusterUrl??"deco"]}):i.cluster==="connecting"?Uh(_1,{color:"yellow",children:["\u25CC Connecting to ",i.clusterUrl??"deco","\u2026"]}):Uh(_1,{color:"red",children:["\u2717 Disconnected from ",i.clusterUrl??"deco"]})}),Gf(ql,{children:i.ingressUrl?Uh(_1,{color:"green",children:["\u2713 Serving at ",i.ingressUrl]}):Gf(_1,{dimColor:!0,children:"\u25CC Starting local server\u2026"})}),Gf(ql,{marginBottom:1,children:Gf(_1,{dimColor:!0,children:`${"Computer".padEnd(16)}${i.machine??"this computer"} \xB7 ${u.length} of ${i.cap} previews`})}),u.length===0?Gf(_1,{dimColor:!0,children:"No previews running yet."}):Uh(ql,{flexDirection:"column",children:[Uh(ql,{children:[Gf(ql,{width:2,flexShrink:0}),Gf(ql,{width:wW.project,flexShrink:0,marginRight:1,children:Gf(_1,{dimColor:!0,wrap:"truncate-end",children:"PROJECT"})}),Gf(ql,{width:wW.branch,flexShrink:0,marginRight:1,children:Gf(_1,{dimColor:!0,wrap:"truncate-end",children:"BRANCH"})}),Gf(ql,{width:wW.status,flexShrink:0,marginRight:1,children:Gf(_1,{dimColor:!0,wrap:"truncate-end",children:"STATUS"})}),Gf(ql,{flexGrow:1,children:Gf(_1,{dimColor:!0,wrap:"truncate-end",children:"PREVIEW URL"})})]}),u.map((l)=>{let c=AMt(l,i.removingHandles.has(l.handle)),E=l.handle===f;return Uh(ql,{children:[Gf(ql,{width:2,flexShrink:0,children:Gf(_1,{color:"cyan",children:E?"\u203A":" "})}),Gf(ql,{width:wW.project,flexShrink:0,marginRight:1,children:Gf(_1,{bold:E,wrap:"truncate-end",children:l.projectName??l.handle})}),Gf(ql,{width:wW.branch,flexShrink:0,marginRight:1,children:Gf(_1,{bold:E,wrap:"truncate-end",children:l.branch??"\u2014"})}),Gf(ql,{width:wW.status,flexShrink:0,marginRight:1,children:Gf(_1,{color:c.color,bold:E,wrap:"truncate-end",children:c.text})}),Gf(ql,{flexGrow:1,children:Gf(_1,{dimColor:!0,wrap:"truncate-end",children:l.previewUrl??"\u2014"})})]},l.handle)})]}),i.daemonError?Gf(ql,{marginTop:1,children:Uh(_1,{color:"red",children:["\u26A0 ",i.daemonError]})}):null,i.logPath?Gf(ql,{marginTop:1,children:Uh(_1,{dimColor:!0,children:["Logs: ",i.logPath]})}):null,i.pendingConfirm?Gf(ql,{marginTop:1,children:Gf(_1,{color:"yellow",children:Ueu(i.pendingConfirm)})}):null,i.actionError?Gf(ql,{marginTop:1,children:Uh(_1,{color:"red",children:["\u2717 ",i.actionError]})}):null,Gf(ql,{marginTop:1,children:Gf(_1,{dimColor:!0,children:"\u2191\u2193 move \xB7 s stop \xB7 d delete \xB7 o open \xB7 q quit"})})]})}var wW;var Xeu=g(()=>{Y1i();bRi();jeu();Eq();wW={project:18,branch:22,status:14}});var Leu={};Ji(Leu,{runLinkCommand:()=>XMt});import{closeSync as xMt,mkdirSync as kMt,openSync as GMt,writeSync as SMt}from"fs";import{homedir as jMt}from"os";import{join as rRi}from"path";function KMt(i,u){let t={log:console.log,warn:console.warn,error:console.error},f=(l)=>{if(u===void 0)return;try{SMt(u,`${QRi(l)}
84544
84544
  `)}catch{}};return console.log=(...l)=>f(l),console.warn=(...l)=>f(l),console.error=(...l)=>{f(l),i(QRi(l))},()=>{console.log=t.log,console.warn=t.warn,console.error=t.error}}async function JMt(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 XMt(i={}){let u=i.port??5174,t=i.dataDir??process.env.DATA_DIR??process.env.DECOCMS_HOME??rRi(jMt(),"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{if(await zRi(u,"127.0.0.1"))throw new RRi(u);let w=rRi(t,"sandboxes");E=W1i({path:L1i(t),managedSandboxRoot:w});let d=await jli({dataDir:t,intent:"Link",target:f});if(process.env.DECOCMS_LINK_MANAGED!=="1")await JMt(f,d.accessToken);let h=E.reconcile();if(i.prune){let n=E.prune({missing:!0,merged:!0});if(!i.tui)console.log(`Pruned local sandboxes: removed ${n.removed.length}, skipped ${n.skipped.length}.`);h=E.reconcile()}let _;if(i.tui){let{render:n}=await import("ink"),{createElement:O}=await import("react"),{LinkApp:N}=await Promise.resolve().then(() => (Xeu(),Jeu)),{pushSandboxEvent:y,setCluster:Z,setClusterUrl:T,setDaemonError:B,setIngress:F,setLogPath:A,setMachine:G,setPersistedSandboxes:I}=await Promise.resolve().then(() => (Eq(),VRi));kMt(t,{recursive:!0});let k=rRi(t,"link.log");c=GMt(k,"w"),A(k),I(h),T(f),Z("connecting"),_={onEvent:(q)=>y(q),onIngress:(q)=>F(q,`http://127.0.0.1:${q}`),onCluster:(q)=>Z(q),onMachine:(q)=>G(q)},l=KMt(B,c),n(O(N),{patchConsole:!1})}else if(i.banner!==!1){let{printBanner:n}=await Promise.resolve().then(() => (EW(),fq));n(i.version??"0.0.0")}$();let v=process.env.DECOCMS_LINK_MANAGED!=="1",D=await neu({port:u,clusterBaseUrl:f,dataDir:t,session:d,monitor:_,logFd:c,perSandboxLogs:v,hotReload:i.hotReload});if(i.tui){let{setLinkActions:n}=await Promise.resolve().then(() => (Eq(),VRi));n({stopSandbox:D.stopSandbox,removeSandbox:D.removeSandbox,inspectSandbox:D.inspectSandbox,quit:D.stop})}return await D.stopped}catch(w){return l?.(),console.error(Neu(w)?yeu(u):w instanceof Error?w.message:String(w)),1}finally{if(l?.(),c!==void 0)try{xMt(c)}catch{}$()}}var Weu=g(()=>{Ozi();geu();HRi();Zeu();YRi()});var pRi={};Ji(pRi,{resolveDevLinkClusterUrl:()=>QMt,populateDevLinkToxiProxy:()=>beu,isDevLinkToxiProxyEnabled:()=>YMt,ensureDevLinkToxiProxy:()=>CMt,buildDevLinkToxiProxyConfig:()=>Heu,DEV_LINK_TOXIPROXY_SERVICE_NAME:()=>Qeu,DEV_LINK_TOXIPROXY_PROXY_NAME:()=>zeu});function YMt(i=process.env){return i.DECO_DEV_LINK_TOXIPROXY==="1"}function mRi(i,u){if(!Number.isInteger(i)||i<1||i>65535)throw Error(`${u} must be an integer port in 1..65535`);return i}function Heu(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=mRi(i.apiPort,"apiPort"),f=mRi(i.listenPort,"listenPort");if(u.port.length===0)throw Error("serverUrl must include an explicit valid port");let l=mRi(Number.parseInt(u.port,10),"upstreamPort"),c=`http://127.0.0.1:${l}`,E=`http://127.0.0.1:${f}`;return{serviceName:Qeu,proxyName:zeu,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 QMt(i){return i.toxiproxy?.clusterUrl??i.serverUrl}async function eRi(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 sRi(i){if(i instanceof Error)return i.name==="Error"?i.message:`${i.name}: ${i.message}`;return String(i)}function Reu(i){if(!(i instanceof Error))return!1;if(i.name==="TimeoutError")return!0;return Reu(i.cause)}async function aRi(i,u,t,f){try{return await i(t,f)}catch(l){throw Error(`ToxiProxy ${u} failed for ${t}: ${sRi(l)}`,{cause:l})}}async function beu(i,u=fetch){let t=`${i.apiUrl}/reset`,f=await aRi(u,"reset",t,{method:"POST"});await eRi(f,"reset",t);let l=`${i.apiUrl}/populate`,c=await aRi(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 eRi(c,"populate",l)}async function zMt(i,u){let t=`${i.apiUrl}/version`;try{await Cl(async()=>{let f=await aRi(u,"readiness check",t,{method:"GET",signal:AbortSignal.timeout(WMt)});await eRi(f,"readiness check",t)},{maxAttempts:LMt,minTimeout:Yeu,maxTimeout:Yeu,multiplier:1,jitter:0,isRetriable:(f)=>!Reu(f)})}catch(f){let l=f instanceof Wc?f.cause:f;throw Error(`ToxiProxy API did not become ready at ${t}: ${sRi(l)}`,{cause:l})}}async function HMt(i){if(i===null)return"";return await new Response(i).text()}async function oRi(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}): ${sRi($)}`,{cause:$})}})(),[l,c]=await Promise.all([f.exited,HMt(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 RMt(i,u){let t=`deco-dev-link-toxiproxy-${i}`;await oRi(["rm","-f",t],{ignoreFailure:!0}),await oRi(["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 bMt(i,u){let t=`deco-dev-link-toxiproxy-${i}`;await oRi(["rm","-f",t],{ignoreFailure:!0})}async function CMt(i){let u=Heu(i),t=i.startDaemon??RMt,f=i.stopDaemon??(i.startDaemon===void 0?bMt:void 0);await t(i.apiPort,i.listenPort);let l=i.fetchImpl??fetch;try{await zMt(u,l),await beu(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 Qeu="ToxiProxy",zeu="dev_link_studio",LMt=20,Yeu=100,WMt=100;var ibi=g(()=>{y4()});var Ceu={};Ji(Ceu,{migrateBetterAuth:()=>ubi});import{getMigrations as MMt}from"better-auth/db";import{sso as qMt}from"@better-auth/sso";import{organization as VMt}from"@decocms/better-auth/plugins";import{admin as rMt,apiKey as mMt,jwt as eMt,magicLink as aMt,mcp as oMt,openAPI as sMt}from"better-auth/plugins";import{emailOTP as pMt}from"better-auth/plugins/email-otp";async function ubi(i){let t={database:yM(i||tn()),plugins:[VMt({dynamicAccessControl:{enabled:!0,enableCustomResources:!0}}),rMt(),mMt(),eMt(),sMt(),oMt({loginPage:"/login"}),qMt(),aMt({sendMagicLink:async()=>{}}),pMt({sendVerificationOTP:async()=>{}})]},{toBeAdded:f,toBeCreated:l,runMigrations:c}=await MMt(t);if(!f.length&&!l.length)return"up to date";return await c(),`${l.length+f.length} table(s) migrated`}var tbi=g(()=>{cE()});var fbi={};Ji(fbi,{up:()=>iqt,down:()=>uqt});import{sql as Ev}from"kysely";async function iqt(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(Ev`CURRENT_TIMESTAMP`)).addColumn("updatedAt","text",(u)=>u.notNull().defaultTo(Ev`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(Ev`CURRENT_TIMESTAMP`)).addColumn("updatedAt","text",(u)=>u.notNull().defaultTo(Ev`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(Ev`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(Ev`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(Ev`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(Ev`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(Ev`CURRENT_TIMESTAMP`)).addColumn("updatedAt","text",(u)=>u.notNull().defaultTo(Ev`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 uqt(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 Meu=()=>{};var lbi={};Ji(lbi,{up:()=>tqt,down:()=>fqt});import{sql as qeu}from"kysely";async function tqt(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(qeu`CURRENT_TIMESTAMP`)).addColumn("updatedAt","text",(u)=>u.notNull().defaultTo(qeu`CURRENT_TIMESTAMP`)).execute()}async function fqt(i){await i.schema.dropTable("organization_settings").execute()}var Veu=()=>{};var cbi={};Ji(cbi,{up:()=>lqt,down:()=>cqt});async function lqt(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 cqt(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 Ebi={};Ji(Ebi,{up:()=>Eqt,down:()=>$qt});async function Eqt(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 $qt(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 $bi={};Ji($bi,{up:()=>wqt,down:()=>dqt});async function wqt(i){await i.schema.alterTable("connections").addColumn("configuration_state","text").execute(),await i.schema.alterTable("connections").addColumn("configuration_scopes","text").execute()}async function dqt(i){await i.schema.alterTable("connections").dropColumn("configuration_state").execute(),await i.schema.alterTable("connections").dropColumn("configuration_scopes").execute()}var wbi={};Ji(wbi,{up:()=>_qt,down:()=>vqt});import{sql as hqt}from"kysely";async function _qt(i){await i.schema.alterTable("organization_settings").addColumn("sidebar_items",hqt`text`).execute()}async function vqt(i){await i.schema.alterTable("organization_settings").dropColumn("sidebar_items").execute()}var reu=()=>{};var dbi={};Ji(dbi,{up:()=>Dqt,down:()=>nqt});async function Dqt(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 nqt(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 hbi={};Ji(hbi,{up:()=>gqt,down:()=>Oqt});import{sql as $q}from"kysely";async function gqt(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($q`CURRENT_TIMESTAMP`)).addColumn("updated_at","text",(u)=>u.notNull().defaultTo($q`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($q`CURRENT_TIMESTAMP`)).addColumn("updated_at","text",(u)=>u.notNull().defaultTo($q`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($q`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 Oqt(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 meu=()=>{};var _bi={};Ji(_bi,{up:()=>yqt,down:()=>Zqt});import{sql as Nqt}from"kysely";async function yqt(i){await i.schema.dropTable("audit_logs").ifExists().execute()}async function Zqt(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(Nqt`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 eeu=()=>{};var vbi={};Ji(vbi,{up:()=>Tqt,down:()=>Bqt});import{sql as M1i}from"kysely";async function Tqt(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(M1i`CURRENT_TIMESTAMP`)).addColumn("updated_at","text",(u)=>u.notNull().defaultTo(M1i`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(M1i`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 M1i`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 Bqt(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 aeu=()=>{};var Dbi={};Ji(Dbi,{up:()=>Fqt,down:()=>Uqt});async function Fqt(i){await i.schema.alterTable("gateways").addColumn("icon","text").execute()}async function Uqt(i){await i.schema.alterTable("gateways").dropColumn("icon").execute()}var nbi={};Ji(nbi,{up:()=>Pqt,down:()=>Aqt});import{sql as q1i}from"kysely";async function Pqt(i){await i.schema.alterTable("gateways").addColumn("tool_selection_mode","text",(u)=>u.notNull().defaultTo("inclusion")).execute(),await q1i`
84545
84545
  UPDATE gateways
84546
84546
  SET tool_selection_mode = CASE
@@ -88042,7 +88042,7 @@ Rules:
88042
88042
  - Return markdown only
88043
88043
 
88044
88044
  Context:
88045
- ${t}`,maxOutputTokens:4000}}var fm0;var lm0=g(()=>{Eu();U1();fm0=ti({name:"REGISTRY_AI_GENERATE",description:"Generate MCP metadata (description, short description, tags, categories, README) using an LLM.",inputSchema:Qr0,outputSchema:zr0,handler:async(i,u)=>{yi(u),await u.access.check();let{system:t,user:f,maxOutputTokens:l}=p94(i),c=await u.createMCPProxy(i.llmConnectionId);try{let E=await c.callTool({name:"LLM_DO_GENERATE",arguments:{modelId:i.modelId,callOptions:{temperature:0.2,maxOutputTokens:l,prompt:[{role:"system",content:t},{role:"user",content:[{type:"text",text:f}]}]}}});if(E.isError){let d=E.content?.find((h)=>h.type==="text")?.text??"Failed to generate content";throw Error(d)}let $=s94(E);if(i.type==="tags"||i.type==="categories")return{items:o94($.split(/[,\n;]/).map((d)=>d.replace(/^[-*]\s*/,""))).slice(0,i.type==="tags"?5:1)};if(i.type==="description")return{result:$.slice(0,1500)};if(i.type==="short_description")return{result:$.slice(0,160)};if(i.type==="readme")return{result:$.slice(0,50000)};return{result:$}}finally{await c.close?.().catch(()=>{})}}})});var cm0;var Em0=g(()=>{Eu();NR();U1();cm0=ti({name:"REGISTRY_ITEM_CREATE",description:"Create a private registry item",inputSchema:Sr0,outputSchema:jr0,handler:async(i,u)=>{let t=yi(u);await u.access.check();let l=await u.storage.registry.items.create({...i.data,organization_id:t.id,created_by:u.auth.user?.id??null});return Og(),{item:l}}})});var $m0;var wm0=g(()=>{Eu();NR();U1();$m0=ti({name:"REGISTRY_ITEM_DELETE",description:"Delete a private registry item",inputSchema:Wr0,outputSchema:Yr0,handler:async(i,u)=>{let t=yi(u);await u.access.check();let l=await u.storage.registry.items.delete(t.id,i.id);if(!l)throw Error(`Registry item not found: ${i.id}`);return Og(),{item:l}}})});import{z as s8}from"zod";function T3u(i,u){if(i===10)return!0;if(i===172&&u!==void 0&&u>=16&&u<=31)return!0;if(i===192&&u===168)return!0;if(i===127)return!0;if(i===169&&u===254)return!0;if(i===0)return!0;return!1}function dm0(i){let u=Number.parseInt(i.padStart(4,"0"),16);return[u>>8,u&255]}function ig4(i){let u=i.split(":").filter((t)=>t.length>0);if(i.startsWith("2002:")&&u.length>=2){let[t,f]=dm0(u[1]);if(T3u(t,f))return!0}if(i.startsWith("64:ff9b::")&&u.length>=4){let[t,f]=dm0(u[u.length-2]);if(T3u(t,f))return!0}return!1}function ug4(i){try{let t=new URL(i).hostname.toLowerCase();if(t==="localhost"||t==="0.0.0.0"||t.endsWith(".local")||t.endsWith(".internal")||t.endsWith(".localhost"))return!0;let f=t.match(/^(\d+)\.(\d+)\.(\d+)\.(\d+)$/);if(f){let[,l,c]=f.map(Number);if(T3u(l,c))return!0}if(t.startsWith("[")&&t.endsWith("]")){let l=t.slice(1,-1).toLowerCase();if(l==="::1"||l==="::")return!0;if(l.startsWith("::ffff:"))return!0;if(l.startsWith("fc")||l.startsWith("fd"))return!0;if(l.startsWith("fe80"))return!0;if(l.startsWith("100:"))return!0;if(l.startsWith("::1"))return!0;if(ig4(l))return!0;let c=l.match(/^::(\d+)\.(\d+)\.(\d+)\.(\d+)$/);if(c){let[,E]=c.map(Number);if(E===127||E===10||E===0)return!0}}return!1}catch{return!0}}function lg4(i){let u=[i];if(i.startsWith("http://"))u.push(i.replace("http://","https://"));else if(i.startsWith("https://"))u.push(i.replace("https://","http://"));return u}function cg4(i){let u=i.toLowerCase();return u.includes("unauthorized")||u.includes("authentication required")||u.includes("401")||u.includes("403")||u.includes('"code":-32000')}async function Eg4(i,u){let t=new AbortController,f=setTimeout(()=>t.abort(),u);try{let l=await fetch(i,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json, text/event-stream"},body:JSON.stringify({jsonrpc:"2.0",id:1,method:"tools/list",params:{}}),signal:t.signal});if(!l.ok)return null;let c=await l.text(),E=null;if(c.includes("event:")||c.includes("data:")){let d=c.split(`
88045
+ ${t}`,maxOutputTokens:4000}}var fm0;var lm0=g(()=>{Eu();U1();fm0=ti({name:"REGISTRY_AI_GENERATE",description:"Generate MCP metadata (description, short description, tags, categories, README) using an LLM.",inputSchema:Qr0,outputSchema:zr0,handler:async(i,u)=>{yi(u),await u.access.check();let{system:t,user:f,maxOutputTokens:l}=p94(i),c=await u.createMCPProxy(i.llmConnectionId);try{let E=await c.callTool({name:"LLM_DO_GENERATE",arguments:{modelId:i.modelId,callOptions:{temperature:0.2,maxOutputTokens:l,prompt:[{role:"system",content:t},{role:"user",content:[{type:"text",text:f}]}]}}});if(E.isError){let d=E.content?.find((h)=>h.type==="text")?.text??"Failed to generate content";throw Error(d)}let $=s94(E);if(i.type==="tags"||i.type==="categories")return{items:o94($.split(/[,\n;]/).map((d)=>d.replace(/^[-*]\s*/,""))).slice(0,i.type==="tags"?5:1)};if(i.type==="description")return{result:$.slice(0,1500)};if(i.type==="short_description")return{result:$.slice(0,160)};if(i.type==="readme")return{result:$.slice(0,50000)};return{result:$}}finally{await c.close?.().catch(()=>{})}}})});var cm0;var Em0=g(()=>{Eu();NR();U1();cm0=ti({name:"REGISTRY_ITEM_CREATE",description:"Create a private registry item",inputSchema:Sr0,outputSchema:jr0,handler:async(i,u)=>{let t=yi(u);await u.access.check();let l=await u.storage.registry.items.create({...i.data,organization_id:t.id,created_by:u.auth.user?.id??null});return Og(),{item:l}}})});var $m0;var wm0=g(()=>{Eu();NR();U1();$m0=ti({name:"REGISTRY_ITEM_DELETE",description:"Delete a private registry item",inputSchema:Wr0,outputSchema:Yr0,handler:async(i,u)=>{let t=yi(u);await u.access.check();let l=await u.storage.registry.items.delete(t.id,i.id);if(!l)throw Error(`Registry item not found: ${i.id}`);return Og(),{item:l}}})});import{z as s8}from"zod";function T3u(i,u){if(i===10)return!0;if(i===172&&u!==void 0&&u>=16&&u<=31)return!0;if(i===192&&u===168)return!0;if(i===127)return!0;if(i===169&&u===254)return!0;if(i===0)return!0;if(i===100&&u!==void 0&&u>=64&&u<=127)return!0;return!1}function dm0(i){let u=Number.parseInt(i.padStart(4,"0"),16);return[u>>8,u&255]}function ig4(i){let u=i.split(":").filter((t)=>t.length>0);if(i.startsWith("2002:")&&u.length>=2){let[t,f]=dm0(u[1]);if(T3u(t,f))return!0}if(i.startsWith("64:ff9b::")&&u.length>=4){let[t,f]=dm0(u[u.length-2]);if(T3u(t,f))return!0}return!1}function ug4(i){try{let t=new URL(i).hostname.toLowerCase();if(t==="localhost"||t==="0.0.0.0"||t.endsWith(".local")||t.endsWith(".internal")||t.endsWith(".localhost"))return!0;let f=t.match(/^(\d+)\.(\d+)\.(\d+)\.(\d+)$/);if(f){let[,l,c]=f.map(Number);if(T3u(l,c))return!0}if(t.startsWith("[")&&t.endsWith("]")){let l=t.slice(1,-1).toLowerCase();if(l==="::1"||l==="::")return!0;if(l.startsWith("::ffff:"))return!0;if(l.startsWith("fc")||l.startsWith("fd"))return!0;if(l.startsWith("fe80"))return!0;if(l.startsWith("100:"))return!0;if(l.startsWith("::1"))return!0;if(ig4(l))return!0;let c=l.match(/^::(\d+)\.(\d+)\.(\d+)\.(\d+)$/);if(c){let[,E]=c.map(Number);if(E===127||E===10||E===0)return!0}}return!1}catch{return!0}}function lg4(i){let u=[i];if(i.startsWith("http://"))u.push(i.replace("http://","https://"));else if(i.startsWith("https://"))u.push(i.replace("https://","http://"));return u}function cg4(i){let u=i.toLowerCase();return u.includes("unauthorized")||u.includes("authentication required")||u.includes("401")||u.includes("403")||u.includes('"code":-32000')}async function Eg4(i,u){let t=new AbortController,f=setTimeout(()=>t.abort(),u);try{let l=await fetch(i,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json, text/event-stream"},body:JSON.stringify({jsonrpc:"2.0",id:1,method:"tools/list",params:{}}),signal:t.signal});if(!l.ok)return null;let c=await l.text(),E=null;if(c.includes("event:")||c.includes("data:")){let d=c.split(`
88046
88046
  `).find((h)=>h.startsWith("data:"));if(d)E=JSON.parse(d.slice(5).trim())}else E=JSON.parse(c);if(!E)return null;let w=(E.result??E)?.tools;if(!Array.isArray(w))return null;return w.map((d)=>({name:d.name,description:d.description??null}))}catch{return null}finally{clearTimeout(f)}}var tg4,fg4,hm0;var _m0=g(()=>{Eu();Hh();pE();gN();Er();tg4=s8.object({url:s8.string().describe("Remote MCP server URL"),type:s8.enum(["http","sse"]).optional().default("http").describe("Transport type")}),fg4=s8.object({tools:s8.array(s8.object({name:s8.string(),description:s8.string().nullable().optional()})),error:s8.string().nullable().optional()});hm0=ti({name:"REGISTRY_DISCOVER_TOOLS",description:"Discover tools from a remote MCP server by connecting to it server-side (no CORS issues).",inputSchema:tg4,outputSchema:fg4,handler:async(i,u)=>{yi(u),await u.access.check();let{url:t,type:f}=i;if(!t)return{tools:[],error:"URL is required"};if(ug4(t))return{tools:[],error:"URLs targeting private networks are not allowed"};let l={"Content-Type":"application/json",Accept:"application/json, text/event-stream"},c=1e4,E=()=>new Promise((v,D)=>{setTimeout(()=>D(Error("Connection timeout (10s)")),c)}),$=lg4(t),w=f==="sse"?["sse","http"]:["http","sse"],d=[];for(let v of $)for(let D of w)d.push({url:v,transport:D});let h=null,_=null;for(let v of d){let D=null;try{D=new G1({name:"registry-discover",version:"1.0.0"},{jsonSchemaValidator:Xl});let n=v.transport==="sse"?new pD(new URL(v.url),{requestInit:{headers:l}}):new Rh(new URL(v.url),{requestInit:{headers:l}});await Promise.race([D.connect(n),E()]);let N=((await Promise.race([D.listTools(),E()])).tools||[]).map((y)=>({name:y.name,description:y.description??null}));return console.log(`[REGISTRY_DISCOVER_TOOLS] Success via ${v.transport} ${v.url}: ${N.length} tools`),{tools:N,error:null}}catch(n){let O=n instanceof Error?n.message:String(n);if(console.warn(`[REGISTRY_DISCOVER_TOOLS] ${v.transport} ${v.url}: ${O}`),h=O,cg4(O)&&!_)_=v.url}finally{try{await D?.close()}catch{}}}if(_){console.log(`[REGISTRY_DISCOVER_TOOLS] Auth required, trying raw tools/list on ${_}...`);for(let v of $){let D=await Eg4(v,c);if(D&&D.length>0)return console.log(`[REGISTRY_DISCOVER_TOOLS] Raw tools/list on ${v}: ${D.length} tools`),{tools:D,error:null}}return{tools:[],error:"Server requires authentication. Tools cannot be discovered without credentials, but the connection is valid."}}return console.error(`[REGISTRY_DISCOVER_TOOLS] All attempts failed for ${t}: ${h}`),{tools:[],error:h}}})});import{z as $g4}from"zod";var vm0;var Dm0=g(()=>{Eu();U1();vm0=ti({name:"REGISTRY_ITEM_FILTERS",description:"List available tag/category filters for private registry items",inputSchema:$g4.object({}),outputSchema:gR,handler:async(i,u)=>{let t=yi(u);return await u.access.check(),u.storage.registry.items.getFilters(t.id)}})});var nm0;var gm0=g(()=>{Eu();U1();nm0=ti({name:"REGISTRY_ITEM_GET",description:"Get a private registry item by ID or name",inputSchema:j5,outputSchema:SJ,handler:async(i,u)=>{let t=yi(u);await u.access.check();let f=i.id??i.name;if(!f)throw Error("Either 'id' or 'name' is required");return{item:await u.storage.registry.items.findByIdOrName(t.id,f)}}})});var Om0;var Nm0=g(()=>{Eu();U1();Om0=ti({name:"REGISTRY_ITEM_LIST",description:"List private registry items for the current organization",inputSchema:DR,outputSchema:nR,handler:async(i,u)=>{let t=yi(u);return await u.access.check(),u.storage.registry.items.list(t.id,i)}})});var ym0;var Zm0=g(()=>{Eu();U1();ym0=ti({name:"REGISTRY_ITEM_SEARCH",description:"Search registry items returning minimal data (id, title, tags, categories, is_public, is_unlisted). Use this instead of LIST when you need to find items efficiently without loading full details. Supports free-text search across id, title, description, and server name, plus filtering by tags and categories.",inputSchema:DPi,outputSchema:nPi,handler:async(i,u)=>{let t=yi(u);return await u.access.check(),u.storage.registry.items.search(t.id,i)}})});var Tm0;var Bm0=g(()=>{Eu();NR();U1();Tm0=ti({name:"REGISTRY_ITEM_UPDATE",description:"Update a private registry item",inputSchema:Xr0,outputSchema:Lr0,handler:async(i,u)=>{let t=yi(u);await u.access.check();let l=await u.storage.registry.items.update(t.id,i.id,i.data);return Og(),{item:l}}})});import{z as Fm0}from"zod";var Um0;var Pm0=g(()=>{Eu();U1();Um0=ti({name:"REGISTRY_ITEM_VERSIONS",description:"Get available versions of a registry item",inputSchema:j5,outputSchema:Fm0.object({versions:Fm0.array(Y_)}),handler:async(i,u)=>{let t=yi(u);await u.access.check();let f=i.id??i.name;if(!f)throw Error("Either 'id' or 'name' is required");let c=await u.storage.registry.items.findByIdOrName(t.id,f);return{versions:c?[c]:[]}}})});var Am0;var Im0=g(()=>{Eu();U1();Am0=ti({name:"REGISTRY_PUBLISH_REQUEST_LIST",description:"List publish requests for the private registry in the current organization",inputSchema:Rr0,outputSchema:br0,handler:async(i,u)=>{let t=yi(u);return await u.access.check(),u.storage.registry.publishRequests.list(t.id,i)}})});var xm0;var km0=g(()=>{Eu();U1();xm0=ti({name:"REGISTRY_PUBLISH_REQUEST_REVIEW",description:"Approve or reject a publish request for the private registry in the current organization",inputSchema:Cr0,outputSchema:Mr0,handler:async(i,u)=>{let t=yi(u);await u.access.check();let f=u.storage.registry;if(i.status==="approved"){let c=await f.publishRequests.findById(t.id,i.id);if(!c)throw Error(`Publish request not found: ${i.id}`);let E=c.requested_id??c.server?.name;if(E){let $=await f.items.findByIdOrName(t.id,E);if($)throw Error(`Cannot approve: a registry item with id "${$.id}" already exists. Delete or rename it first.`)}if(c.title&&c.title!==E){let $=await f.items.findByIdOrName(t.id,c.title);if($)throw Error(`Cannot approve: a registry item with title "${$.title}" already exists. Delete or rename it first.`)}}return{item:await f.publishRequests.updateStatus(t.id,i.id,i.status,i.reviewerNotes??null)}}})});import{z as wg4}from"zod";var Gm0;var Sm0=g(()=>{Eu();U1();Gm0=ti({name:"REGISTRY_PUBLISH_REQUEST_COUNT",description:"Count pending private registry publish requests for the current organization",inputSchema:wg4.object({}),outputSchema:qr0,handler:async(i,u)=>{let t=yi(u);return await u.access.check(),{pending:await u.storage.registry.publishRequests.countPending(t.id)}}})});var jm0;var Km0=g(()=>{Eu();U1();jm0=ti({name:"REGISTRY_PUBLISH_REQUEST_DELETE",description:"Delete a publish request from the private registry in the current organization",inputSchema:Vr0,outputSchema:rr0,handler:async(i,u)=>{let t=yi(u);return await u.access.check(),{item:await u.storage.registry.publishRequests.delete(t.id,i.id)}}})});var Jm0;var Xm0=g(()=>{Eu();U1();Jm0=ti({name:"REGISTRY_PUBLISH_API_KEY_GENERATE",description:"Generate a new API key for publish requests. The key value is only returned once \u2014 store it securely!",inputSchema:er0,outputSchema:ar0,handler:async(i,u)=>{let t=yi(u);await u.access.check();let f=u.storage.registry,{entity:l,key:c}=await f.publishApiKeys.generate(t.id,i.name);return{id:l.id,name:l.name,prefix:l.prefix,key:c,createdAt:l.created_at}}})});import{z as dg4}from"zod";var Lm0;var Wm0=g(()=>{Eu();U1();Lm0=ti({name:"REGISTRY_PUBLISH_API_KEY_LIST",description:"List all publish request API keys for the current organization (metadata only, no key values)",inputSchema:dg4.object({}),outputSchema:or0,handler:async(i,u)=>{let t=yi(u);return await u.access.check(),{items:(await u.storage.registry.publishApiKeys.list(t.id)).map((c)=>({id:c.id,name:c.name,prefix:c.prefix,createdAt:c.created_at}))}}})});var Ym0;var Qm0=g(()=>{Eu();U1();Ym0=ti({name:"REGISTRY_PUBLISH_API_KEY_REVOKE",description:"Revoke a publish request API key. The key can no longer be used for authentication.",inputSchema:sr0,outputSchema:pr0,handler:async(i,u)=>{let t=yi(u);if(await u.access.check(),!await u.storage.registry.publishApiKeys.revoke(t.id,i.keyId))throw Error("API key not found");return{success:!0,keyId:i.keyId}}})});var jJ="private-registry",Ng="publish-request:",zm0;var yR=g(()=>{zm0=`
88047
88047
  You are an MCP tool tester running automated integration checks.
88048
88048