decocms 4.103.0 → 4.104.0

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-F-nIELvZ.js → AlertCircle-BRqx3xep.js} +1 -1
  2. package/dist/client/assets/{AreaChart-DJEldSaM.js → AreaChart-CTIAAql6.js} +1 -1
  3. package/dist/client/assets/{ArrowRight-Bk1ZMFTO.js → ArrowRight-BvfxmFPm.js} +1 -1
  4. package/dist/client/assets/{ArrowUp-CUt4kr8s.js → ArrowUp-D9gId7O2.js} +1 -1
  5. package/dist/client/assets/{ArrowUpRight-BW81CJcv.js → ArrowUpRight-i87r5MHo.js} +1 -1
  6. package/dist/client/assets/{Check-BSU1gPpA.js → Check-CKEgzuW7.js} +1 -1
  7. package/dist/client/assets/{CheckCircle-DKLFzh24.js → CheckCircle-DUFed_ZY.js} +1 -1
  8. package/dist/client/assets/{ChevronDown-BZ3MHXqQ.js → ChevronDown-BtwsJF3q.js} +1 -1
  9. package/dist/client/assets/{ChevronRight-D3rgicSl.js → ChevronRight-NUnWKoQ_.js} +1 -1
  10. package/dist/client/assets/{ChevronUp-BkAN1rCx.js → ChevronUp-DihHtLht.js} +1 -1
  11. package/dist/client/assets/{Copy01-nbvZgNAo.js → Copy01-C5bN0aQx.js} +1 -1
  12. package/dist/client/assets/{DotsVertical-BOwIfQcg.js → DotsVertical-hq3t58jm.js} +1 -1
  13. package/dist/client/assets/{Eye-Djs0fd53.js → Eye-D6wgl9MG.js} +1 -1
  14. package/dist/client/assets/{FilterLines-BGlG-WiF.js → FilterLines-kzf7tlKR.js} +1 -1
  15. package/dist/client/assets/{Globe01-ghdMK3aY.js → Globe01-BryNz0dd.js} +1 -1
  16. package/dist/client/assets/{Globe04-E9ylFGMp.js → Globe04-DUBgGRbs.js} +1 -1
  17. package/dist/client/assets/{HardDrive-CoOYj4jC.js → HardDrive-B-Cz-BH_.js} +1 -1
  18. package/dist/client/assets/{Image01-BrLhRzbI.js → Image01-C-5icdHD.js} +1 -1
  19. package/dist/client/assets/{Key01-CJOMUFhB.js → Key01-zw1UNPHV.js} +1 -1
  20. package/dist/client/assets/{LayoutLeft-CK7-vcXv.js → LayoutLeft-ClXrwu6i.js} +1 -1
  21. package/dist/client/assets/{LinkExternal01-LfVqtO37.js → LinkExternal01-CUrTcP_i.js} +1 -1
  22. package/dist/client/assets/{Monitor01-D5ss1Gc3.js → Monitor01-BntiOroW.js} +1 -1
  23. package/dist/client/assets/{Package-CXWzyzlC.js → Package-CyI3pPtY.js} +1 -1
  24. package/dist/client/assets/{Palette-T_e3oUZE.js → Palette-Bf9UBt-Z.js} +1 -1
  25. package/dist/client/assets/{Play-DNIGFnHN.js → Play-cf98mvjp.js} +1 -1
  26. package/dist/client/assets/{Plus-DQjuXapr.js → Plus-6kDymf85.js} +1 -1
  27. package/dist/client/assets/{SearchLg-BYzGBrH1.js → SearchLg-Ca6Gs9PO.js} +1 -1
  28. package/dist/client/assets/{SearchMd-DczJHeiV.js → SearchMd-Bq5ma3BB.js} +1 -1
  29. package/dist/client/assets/{Settings02-5y64gXEx.js → Settings02-DJcNlPiV.js} +1 -1
  30. package/dist/client/assets/{Shield01-CIuJJ6t7.js → Shield01-BOWKmWSM.js} +1 -1
  31. package/dist/client/assets/{Star01-Wl07KwZt.js → Star01-4luDViOK.js} +1 -1
  32. package/dist/client/assets/{Stars01-C_4YltHN.js → Stars01-DbhvFj37.js} +1 -1
  33. package/dist/client/assets/{Stars02-Ct0lTW0s.js → Stars02-CSMCax45.js} +1 -1
  34. package/dist/client/assets/{Sun-CQrN2jz-.js → Sun-BS_t5Sm5.js} +1 -1
  35. package/dist/client/assets/{SwitchHorizontal01-DUVTefVn.js → SwitchHorizontal01-B78Wff9t.js} +1 -1
  36. package/dist/client/assets/{Tool01-BD3PslC4.js → Tool01-CSTeisaV.js} +1 -1
  37. package/dist/client/assets/{Tool02-baA4k7Bq.js → Tool02-BFPH6-tL.js} +1 -1
  38. package/dist/client/assets/{Trash01-DnJH0mla.js → Trash01-D6SSf8SM.js} +1 -1
  39. package/dist/client/assets/{TrendUp01-CDPK2sNN.js → TrendUp01-uCNtQJGh.js} +1 -1
  40. package/dist/client/assets/{Upload01-DKnpOJ58.js → Upload01-IWZGSkQD.js} +1 -1
  41. package/dist/client/assets/{User01-D0bvNe-5.js → User01-h19-qQKE.js} +1 -1
  42. package/dist/client/assets/{Users01-D7M9juVv.js → Users01-BVosV5Zq.js} +1 -1
  43. package/dist/client/assets/{Users03-kmkERvNy.js → Users03-BnKaYSKo.js} +1 -1
  44. package/dist/client/assets/{X-B3bgMihG.js → X-Cl_lyAjH.js} +1 -1
  45. package/dist/client/assets/{XCircle-PsZ_qAbt.js → XCircle-DrkKVisl.js} +1 -1
  46. package/dist/client/assets/{XClose-jhAYc5ZK.js → XClose-Bqw0j4zC.js} +1 -1
  47. package/dist/client/assets/{Zap-CDhtxNMS.js → Zap-CRHRXn7z.js} +1 -1
  48. package/dist/client/assets/{ZapSquare-CB8iirZ5.js → ZapSquare-BNsFa87S.js} +1 -1
  49. package/dist/client/assets/{ZoomOut-CTFVHNoT.js → ZoomOut-Bdun-ybj.js} +1 -1
  50. package/dist/client/assets/{access-gate-QjtSJHfg.js → access-gate-BqRQWMeI.js} +1 -1
  51. package/dist/client/assets/{add-section-modal-B2Y8r1yI.js → add-section-modal-DmyUgFgN.js} +1 -1
  52. package/dist/client/assets/{agent-icon-7XCeB3vG.js → agent-icon-gGMqm39Y.js} +1 -1
  53. package/dist/client/assets/{agents-list-Bwpe9kCO.js → agents-list-DJkGR1B7.js} +1 -1
  54. package/dist/client/assets/{ai-providers-BNsfQ58N.js → ai-providers-FXkuA6xr.js} +1 -1
  55. package/dist/client/assets/{alert-Bt2d8KUl.js → alert-EqBw_yIC.js} +1 -1
  56. package/dist/client/assets/{alert-dialog-Cm39xt9v.js → alert-dialog-BhTFO1xE.js} +1 -1
  57. package/dist/client/assets/{app-editor-DqI7dbRt.js → app-editor-CLJXkmZ1.js} +1 -1
  58. package/dist/client/assets/{auth-B_jV6gHz.js → auth-CC0hVF1j.js} +1 -1
  59. package/dist/client/assets/{auth-catchall-DuDKLQT-.js → auth-catchall-qFVbHjsU.js} +1 -1
  60. package/dist/client/assets/{auth-entry-C13vX7FJ.js → auth-entry-B0eRh6Z1.js} +1 -1
  61. package/dist/client/assets/{auth-split-layout-Ca2d-n5Q.js → auth-split-layout-Dps5LnFV.js} +1 -1
  62. package/dist/client/assets/{authenticate-and-persist-oauth-DM2B2dKL.js → authenticate-and-persist-oauth-CHxJhIDr.js} +1 -1
  63. package/dist/client/assets/{automation-list-row-DY0aEk3A.js → automation-list-row-DDcgXspJ.js} +1 -1
  64. package/dist/client/assets/{automation-runs-r6cm37j3.js → automation-runs-C-RCLuKF.js} +1 -1
  65. package/dist/client/assets/{automations-P_4tnnte.js → automations-CYBxh7wL.js} +1 -1
  66. package/dist/client/assets/{autosend-FVeUSLzf.js → autosend-B9JChviy.js} +1 -1
  67. package/dist/client/assets/{avatar-C7dPcds6.js → avatar-D2Ibs6zj.js} +1 -1
  68. package/dist/client/assets/{badge-2AvnjY-c.js → badge-WaoanX2u.js} +1 -1
  69. package/dist/client/assets/{block-document-B37CG5O0.js → block-document-DxcFxi9r.js} +1 -1
  70. package/dist/client/assets/{brand-context-CApWF3GW.js → brand-context-NxGH-6zR.js} +1 -1
  71. package/dist/client/assets/{buckets-vrL2uet-.js → buckets-cqrj_dAj.js} +1 -1
  72. package/dist/client/assets/{bulk-category-panel-B0wPs_c9.js → bulk-category-panel-Ca_By5bp.js} +1 -1
  73. package/dist/client/assets/{calendar-BrDB6OlS.js → calendar-yjvySUql.js} +1 -1
  74. package/dist/client/assets/{capability-load-error-Ds3GfoNi.js → capability-load-error-CoZ48QgK.js} +1 -1
  75. package/dist/client/assets/{card-DBdtISPE.js → card-gNDjFGep.js} +1 -1
  76. package/dist/client/assets/{category-editor-uIOjNNbm.js → category-editor-BH2HxeFP.js} +1 -1
  77. package/dist/client/assets/{chat-context-ClGwv1m6.js → chat-context-B5rz213z.js} +1 -1
  78. package/dist/client/assets/{checkbox-BYxjJHWY.js → checkbox-D4JNeDbC.js} +1 -1
  79. package/dist/client/assets/{cli-auth-success-72NJ2gv7.js → cli-auth-success-BIuDb680.js} +1 -1
  80. package/dist/client/assets/{collection-detail-CKj_Y0ab.js → collection-detail-TexT8fDE.js} +1 -1
  81. package/dist/client/assets/{collection-display-button-B6_CPKRH.js → collection-display-button-BmTCVJk9.js} +1 -1
  82. package/dist/client/assets/{collection-search-DHKmAT0Q.js → collection-search-OxgUuTDC.js} +1 -1
  83. package/dist/client/assets/{collection-table-wrapper-WJkKLyPu.js → collection-table-wrapper-6MozrKcJ.js} +1 -1
  84. package/dist/client/assets/{collection-tabs-DnavY9E9.js → collection-tabs-wFROlbKE.js} +1 -1
  85. package/dist/client/assets/{command-dJWNPnE-.js → command-CPJ3-fx9.js} +1 -1
  86. package/dist/client/assets/{commerce-onboarding-Rcr8DNXm.js → commerce-onboarding-CKbgdpWn.js} +1 -1
  87. package/dist/client/assets/{companions-core-D_GBUdA3.js → companions-core-Cpw1YNEa.js} +1 -1
  88. package/dist/client/assets/{connect-U9MkwOJm.js → connect-PjtNV5Et.js} +1 -1
  89. package/dist/client/assets/{connect-desktop-dialog-BdNFP4Rl.js → connect-desktop-dialog-D1LywKPY.js} +1 -1
  90. package/dist/client/assets/{connection-card-CFNUc4Va.js → connection-card-BTp_Mexf.js} +1 -1
  91. package/dist/client/assets/{connection-detail-zPOUWPes.js → connection-detail-h2UhV5I3.js} +1 -1
  92. package/dist/client/assets/{connection-form-helpers-C3JFgR88.js → connection-form-helpers-pJAJWYOQ.js} +1 -1
  93. package/dist/client/assets/{connections-DM1AOnB1.js → connections-I0rMCbY8.js} +1 -1
  94. package/dist/client/assets/{decopilot-sse-pool-B5uCrIJ3.js → decopilot-sse-pool-BKYCROku.js} +1 -1
  95. package/dist/client/assets/{dialog-DkeXsjIG.js → dialog-ZqiHDqPF.js} +1 -1
  96. package/dist/client/assets/{domain-settings-CEcg_xJG.js → domain-settings-BrXjZEu1.js} +1 -1
  97. package/dist/client/assets/{drawer-CPbDRmEI.js → drawer-DQaSiCfP.js} +1 -1
  98. package/dist/client/assets/{dropdown-menu-Cj77lvco.js → dropdown-menu-Def3XQ2r.js} +1 -1
  99. package/dist/client/assets/{empty-state-C_3dbHYZ.js → empty-state-Bv0o4pop.js} +1 -1
  100. package/dist/client/assets/{extract-connection-data-D1XDYy6R.js → extract-connection-data-DliliWWi.js} +1 -1
  101. package/dist/client/assets/{file-explorer-MRDUkUy_.js → file-explorer-CgJTQxdk.js} +1 -1
  102. package/dist/client/assets/{file-type-icon-CiqXwNbA.js → file-type-icon-K2dXxjrg.js} +1 -1
  103. package/dist/client/assets/{files-C4Pd-cZs.js → files-BpUaRdzk.js} +1 -1
  104. package/dist/client/assets/{form-CoQyJTm3.js → form-hSS6YV_K.js} +1 -1
  105. package/dist/client/assets/{general-BV3FETkL.js → general-mfcsqfrX.js} +1 -1
  106. package/dist/client/assets/{github-repo-picker-BTBfRBRp.js → github-repo-picker-gznstzb9.js} +1 -1
  107. package/dist/client/assets/{hooks-ZOujQIPi.js → hooks-C3cd-7It.js} +1 -1
  108. package/dist/client/assets/{index-BysNoRzG.js → index-0_RcfZs5.js} +1 -1
  109. package/dist/client/assets/{index-biph9Mg3.js → index-5q66t9__.js} +1 -1
  110. package/dist/client/assets/{index-nAGNMIsn.js → index-B9cuRTAq.js} +1 -1
  111. package/dist/client/assets/{index-Drpi_xJk.js → index-Bs1Iy52V.js} +1 -1
  112. package/dist/client/assets/{index-BRY4PqTN.js → index-CPmAFNBC.js} +1 -1
  113. package/dist/client/assets/{index-CaCZsopB.js → index-CriTplNU.js} +1 -1
  114. package/dist/client/assets/{index-D0DGDKY8.js → index-DV5sb8rn.js} +1 -1
  115. package/dist/client/assets/{index-ClWwNLBW.js → index-DawtOaQW.js} +1 -1
  116. package/dist/client/assets/{index-BT2RV7TE.js → index-DxLKWgfK.js} +28 -28
  117. package/dist/client/assets/{index-CeW312Ew.js → index-NnDGnKWr.js} +1 -1
  118. package/dist/client/assets/{index-iNViTLuR.js → index-bQ7eQRAG.js} +3 -3
  119. package/dist/client/assets/{index-CrLCcvSA.js → index-raAj8hl6.js} +1 -1
  120. package/dist/client/assets/{index-redirect-BE86PyEj.js → index-redirect-D2qMNgI3.js} +1 -1
  121. package/dist/client/assets/{index-DtF8w5YB.js → index-zLQ_KwUp.js} +4 -4
  122. package/dist/client/assets/{input-BJaQlIkQ.js → input-_d3dZcaj.js} +1 -1
  123. package/dist/client/assets/{integration-icon-DqBJmXwH.js → integration-icon-BW4ZUBDF.js} +1 -1
  124. package/dist/client/assets/{invite-member-dialog-B-jR_42f.js → invite-member-dialog-B4i_qrPG.js} +1 -1
  125. package/dist/client/assets/{label-BRfWNwY9.js → label-BSqo1nfb.js} +1 -1
  126. package/dist/client/assets/{layout-B4_8jgkb.js → layout-Du_0a-mS.js} +1 -1
  127. package/dist/client/assets/{login-B8Zi5Dzn.js → login-C1sweMWO.js} +1 -1
  128. package/dist/client/assets/{mcp-oauth-CUU17Y_Q.js → mcp-oauth-CJiL395p.js} +1 -1
  129. package/dist/client/assets/{members-CL82nEg-.js → members-zHaMXlc4.js} +1 -1
  130. package/dist/client/assets/{monaco-editor-AD0vNwrp.js → monaco-editor-B__egIpZ.js} +1 -1
  131. package/dist/client/assets/{monitoring-stats-row-CxfC60QJ.js → monitoring-stats-row-COOk7YGw.js} +1 -1
  132. package/dist/client/assets/{multi-select-HwcAwXE1.js → multi-select-C-FSYlSF.js} +1 -1
  133. package/dist/client/assets/{oauth-callback-DCJNGEHF.js → oauth-callback-BL-L6UI-.js} +1 -1
  134. package/dist/client/assets/{oauth-callback-ai-provider-hdONyHkA.js → oauth-callback-ai-provider-C_HMNOh9.js} +1 -1
  135. package/dist/client/assets/{onboarding-DqZKxu8P.js → onboarding-tsx5LMke.js} +1 -1
  136. package/dist/client/assets/{org-install-Cv3EfACC.js → org-install-D_rzgEnE.js} +1 -1
  137. package/dist/client/assets/{org-layout-D4OBQ69U.js → org-layout-CYcTViI4.js} +1 -1
  138. package/dist/client/assets/{organization-choice-BbpCr5cp.js → organization-choice-DXt7QQPT.js} +1 -1
  139. package/dist/client/assets/{orgs-CAOU3qQt.js → orgs-BIM3XY2Q.js} +1 -1
  140. package/dist/client/assets/{page-seo-form-CKm6eQ8l.js → page-seo-form-VLW_NzAm.js} +1 -1
  141. package/dist/client/assets/page-seo-sheet-D75ZAusC.js +1 -0
  142. package/dist/client/assets/{popover-DDYqMej5.js → popover-BLlzoM5T.js} +1 -1
  143. package/dist/client/assets/{post-editor-BZJTuV-1.js → post-editor-MhFXsnxa.js} +1 -1
  144. package/dist/client/assets/{primitives-BfrShC-T.js → primitives-BwYP-BE9.js} +1 -1
  145. package/dist/client/assets/{profile-5ouMfiKl.js → profile-C0nTmLiS.js} +1 -1
  146. package/dist/client/assets/project-app-view-CRipBtzb.js +1 -0
  147. package/dist/client/assets/record-editor-DwE3lAwY.js +1 -0
  148. package/dist/client/assets/{redirect-editor-B-fBtZvK.js → redirect-editor-BGHY1mAE.js} +1 -1
  149. package/dist/client/assets/registry-CllMiCFB.js +2 -0
  150. package/dist/client/assets/{registry-layout-BL4mQUxZ.js → registry-layout-0J0a2Ujw.js} +1 -1
  151. package/dist/client/assets/{reports-C1ZA4Sxj.js → reports-BDrtR7vy.js} +1 -1
  152. package/dist/client/assets/{require-capability-ePkMhKR4.js → require-capability-iEGLG_o_.js} +1 -1
  153. package/dist/client/assets/{required-auth-layout-B-q3Os-W.js → required-auth-layout-BBQqJQ3M.js} +1 -1
  154. package/dist/client/assets/{reset-password-CkZQqZAq.js → reset-password-B2OeOUDh.js} +1 -1
  155. package/dist/client/assets/{roles-CGm6QXiM.js → roles-ZGYesZ44.js} +1 -1
  156. package/dist/client/assets/{search-input-D01mHzeI.js → search-input-jKTRliwf.js} +1 -1
  157. package/dist/client/assets/{secrets-CXs4yFTE.js → secrets-B2GJpjmZ.js} +1 -1
  158. package/dist/client/assets/{sections-editor-DOVv0HtG.js → sections-editor-B9WQ_qSW.js} +1 -1
  159. package/dist/client/assets/{select-l8rRnAxU.js → select-LJtxIB-u.js} +1 -1
  160. package/dist/client/assets/{select-model-CptapDof.js → select-model-BxAY6ZVn.js} +1 -1
  161. package/dist/client/assets/{self-tool-result-CCXe7iau.js → self-tool-result-B4zU4shH.js} +1 -1
  162. package/dist/client/assets/{seo-editor-BiIDN8tQ.js → seo-editor-Cv-AlrO0.js} +1 -1
  163. package/dist/client/assets/{settings-layout-DXpX-Kgg.js → settings-layout-Bqxe7Le8.js} +1 -1
  164. package/dist/client/assets/{settings-section-DR-ExjJR.js → settings-section-DiO-ilon.js} +1 -1
  165. package/dist/client/assets/{shell-controls-B8x37lJX.js → shell-controls-BO1iBU8O.js} +1 -1
  166. package/dist/client/assets/{shell-layout-QrpfsE-4.js → shell-layout-B-ggkJxp.js} +1 -1
  167. package/dist/client/assets/{sidebar-BwAn3u-G.js → sidebar-CMBLFeKd.js} +1 -1
  168. package/dist/client/assets/{skeleton-Ds3pH_nx.js → skeleton-CK77xki0.js} +1 -1
  169. package/dist/client/assets/{sso-CaN2ItfH.js → sso-20c3PF9y.js} +1 -1
  170. package/dist/client/assets/{store-BzZQxqPv.js → store-fph_z5c6.js} +1 -1
  171. package/dist/client/assets/store-registry-ePKba1tj.js +2 -0
  172. package/dist/client/assets/{studio-tools-DP6GO_QA.js → studio-tools-BDPy4sbt.js} +1 -1
  173. package/dist/client/assets/{switch-BhmWwQQD.js → switch-DAZLVlwZ.js} +1 -1
  174. package/dist/client/assets/{table-gVGKRop2.js → table-DpElKEEr.js} +1 -1
  175. package/dist/client/assets/{tabs-tDbuBA8I.js → tabs-BTnvaiWr.js} +1 -1
  176. package/dist/client/assets/{textarea-SvI_2oXm.js → textarea-Ci575ef_.js} +1 -1
  177. package/dist/client/assets/{toggle-group-Cx12Z7I9.js → toggle-group-j1ezUTaN.js} +1 -1
  178. package/dist/client/assets/{toolbar-C-ksd6Dc.js → toolbar-_ubtVWm6.js} +1 -1
  179. package/dist/client/assets/{toolbar-icon-button-D7EQHXfM.js → toolbar-icon-button-CzwvD8BJ.js} +1 -1
  180. package/dist/client/assets/{tooltip-Dyq08ZoZ.js → tooltip-y2P8oLl6.js} +1 -1
  181. package/dist/client/assets/{use-ai-providers-B2Q_XNL4.js → use-ai-providers-B8Bw0Tf-.js} +1 -1
  182. package/dist/client/assets/{use-api-keys-Eoho6S_g.js → use-api-keys-BhyKb5WG.js} +1 -1
  183. package/dist/client/assets/{use-automations-Dvcuv-oX.js → use-automations-_qY82s9O.js} +1 -1
  184. package/dist/client/assets/{use-autosave-BYiqQ7IK.js → use-autosave-DsJinH0F.js} +1 -1
  185. package/dist/client/assets/{use-capability-OzQzwSuo.js → use-capability-BaUd0xWe.js} +1 -1
  186. package/dist/client/assets/{use-clock-tick-BXpCV5ke.js → use-clock-tick-gdHsdqwN.js} +1 -1
  187. package/dist/client/assets/{use-connection-nFv1cpU3.js → use-connection-BA0SHZq4.js} +1 -1
  188. package/dist/client/assets/{use-copy-Cv6CdoL-.js → use-copy-Cn6MReyw.js} +1 -1
  189. package/dist/client/assets/{use-create-virtual-mcp-DpcX4D_C.js → use-create-virtual-mcp-qP-tA4jh.js} +1 -1
  190. package/dist/client/assets/{use-debounced-autosave-eaxWrko0.js → use-debounced-autosave-BDgaG6ie.js} +1 -1
  191. package/dist/client/assets/{use-debounced-value-BLrMS53b.js → use-debounced-value-Z46cTfvU.js} +1 -1
  192. package/dist/client/assets/{use-deco-credits-nl4J07pt.js → use-deco-credits-eJFjSf8h.js} +1 -1
  193. package/dist/client/assets/{use-decopilot-events-CB4Qr5To.js → use-decopilot-events-DIb8-xa4.js} +1 -1
  194. package/dist/client/assets/{use-delete-connection-D8PPN_O0.js → use-delete-connection-BRgvmH64.js} +1 -1
  195. package/dist/client/assets/{use-deployment-admin-D_C2_rvt.js → use-deployment-admin-CFSaL5ar.js} +1 -1
  196. package/dist/client/assets/{use-file-configs-Bhk6jeL3.js → use-file-configs-CXDDq-eK.js} +1 -1
  197. package/dist/client/assets/{use-infinite-scroll-CNk3Y3Lx.js → use-infinite-scroll-CSB5LAvZ.js} +1 -1
  198. package/dist/client/assets/{use-join-requests-Dx7miDMc.js → use-join-requests-CVHRtviB.js} +1 -1
  199. package/dist/client/assets/{use-mcp-auth-status-NtrU9280.js → use-mcp-auth-status-CMaGVn6x.js} +1 -1
  200. package/dist/client/assets/{use-mcp-client-Of0mQsz0.js → use-mcp-client-MwuAGCP0.js} +1 -1
  201. package/dist/client/assets/{use-mcp-tools-Babv4-zM.js → use-mcp-tools-BLLnaQRh.js} +1 -1
  202. package/dist/client/assets/{use-members-Hr3gXbdY.js → use-members-DJzFLRoA.js} +1 -1
  203. package/dist/client/assets/{use-mobile-B1-kYinm.js → use-mobile-C13C4uh-.js} +1 -1
  204. package/dist/client/assets/{use-navigate-to-agent-BSo5QaWT.js → use-navigate-to-agent-CDRQ3LGW.js} +1 -1
  205. package/dist/client/assets/{use-org-auth-client-DDG4NV0M.js → use-org-auth-client-B3ECJOc5.js} +1 -1
  206. package/dist/client/assets/{use-org-sso-DV9SutYM.js → use-org-sso-DwM8K-hN.js} +1 -1
  207. package/dist/client/assets/{use-organization-roles-BPS8uosH.js → use-organization-roles-BoQYsJwI.js} +1 -1
  208. package/dist/client/assets/{use-organization-settings-CCDf6oVk.js → use-organization-settings-BxFrc-MV.js} +1 -1
  209. package/dist/client/assets/{use-registry-app-DIbShjgf.js → use-registry-app-F_eDYFGU.js} +1 -1
  210. package/dist/client/assets/{use-registry-connections-DyeO9cxD.js → use-registry-connections-DRdZgjEN.js} +1 -1
  211. package/dist/client/assets/{use-secrets-DyjvwK-E.js → use-secrets-JzPHoSYH.js} +1 -1
  212. package/dist/client/assets/{use-status-sounds-_oN1d87R.js → use-status-sounds-CRrS5x2x.js} +1 -1
  213. package/dist/client/assets/{use-view-mode-CGw-QiCY.js → use-view-mode-BLv7KScm.js} +1 -1
  214. package/dist/client/assets/{use-virtual-mcp-CR-YqO8b.js → use-virtual-mcp-DkfSN5A7.js} +1 -1
  215. package/dist/client/assets/useInfiniteQuery-Bulr5qLo.js +1 -0
  216. package/dist/client/assets/{useQueries-D6xq6JyG.js → useQueries-Daf1r_8_.js} +1 -1
  217. package/dist/client/assets/{useRouterState-CVZzkhif.js → useRouterState-id8js3QE.js} +1 -1
  218. package/dist/client/assets/useSuspenseInfiniteQuery-CbOAXJqn.js +1 -0
  219. package/dist/client/assets/{users-DN9egflf.js → users-BKPEAP3d.js} +1 -1
  220. package/dist/client/assets/{variant-calendar-CAMwNx5g.js → variant-calendar-BlplYmKq.js} +1 -1
  221. package/dist/client/assets/{view-mode-toggle-CLNasoHP.js → view-mode-toggle-BMwXmXt9.js} +1 -1
  222. package/dist/client/index.html +1 -1
  223. package/dist/server/cli.js +2 -2
  224. package/dist/server/server.js +2 -2
  225. package/package.json +1 -1
  226. package/dist/client/assets/page-seo-sheet-CgW2llAr.js +0 -1
  227. package/dist/client/assets/project-app-view-SSUFba_F.js +0 -1
  228. package/dist/client/assets/record-editor-dNmwuBxf.js +0 -1
  229. package/dist/client/assets/registry-CfbSpBAl.js +0 -2
  230. package/dist/client/assets/store-registry-BYwL1N-r.js +0 -2
  231. package/dist/client/assets/useInfiniteQuery-xNesiXWq.js +0 -1
  232. package/dist/client/assets/useSuspenseInfiniteQuery-C5U_Hj6n.js +0 -1
@@ -174,7 +174,7 @@ Reference: https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sso.ht
174
174
  Then retry.`);console.error(`[ensurePostgres] pg.initialise() failed. dataDir=${f}`,h);let v=Hw(i,"postgres");if(v&&CE(v.pid,"postgres"))return u.state="running",u.pid=v.pid,u.port=v.port,u.owner="managed",u;throw h}await $.start();try{await $.createDatabase(DRu)}catch(h){if(!(h instanceof Error?h.message:String(h)).includes("already exists"))throw h}await uM(c);let d=null;if(K$(l)){let h=pC(l,"utf8").split(`
175
175
  `)[0]?.trim();if(h)d=Number.parseInt(h,10)}if(d)_li(i,"postgres",{pid:d,port:c,startedAt:new Date().toISOString()}),u.pid=d;return u.state="running",u.owner="managed",u}async function JKt(i){let u=Hw(i,"postgres");if(u===null){console.log("PostgreSQL: not running");return}let{pid:t,port:f}=u;if(!Qc(t)){console.log("PostgreSQL: process already dead, cleaning up state"),await I1(i,"postgres");return}if(!CE(t,"postgres")){console.log(`PostgreSQL: PID ${t} no longer belongs to postgres (possible PID reuse), cleaning up state`),await I1(i,"postgres");return}console.log(`PostgreSQL: stopping (PID ${t}, port ${f})...`);let l=Y4(J$(i),"postgres","data");try{await new(await import("embedded-postgres")).default({databaseDir:l,port:f,user:bQi,password:CQi,persistent:!0}).stop()}catch{console.log("PostgreSQL: embedded-postgres stop failed, sending SIGTERM...");try{if(!CE(t,"postgres"))console.log(`PostgreSQL: PID ${t} is no longer postgres, skipping signal`);else{process.kill(t,"SIGTERM");let c=Date.now();while(Date.now()-c<5000&&Qc(t))await N0(200);if(Qc(t)&&CE(t,"postgres"))process.kill(t,"SIGKILL")}}catch{}}await I1(i,"postgres"),console.log("PostgreSQL stopped")}function XKt(){let i=hli(),u=RQi(),t={darwin:"darwin",linux:"linux",win32:"windows"},f={arm64:"arm64",x64:"amd64"},l=t[i],c=f[u];if(!l||!c)throw Error(`Unsupported platform: ${i}/${u}`);return`nats-server-${nRu}-${l}-${c}.${l==="windows"?"zip":"tar.gz"}`}function LKt(i){return Y4(J$(i),"nats","bin",`nats-server${VQi}`)}async function WKt(i){let u=LKt(i);if(K$(u))return u;let t=Y4(J$(i),"nats","bin");TD(t);let f=XKt(),l=`https://github.com/nats-io/nats-server/releases/download/${nRu}/${f}`,c=await fetch(l);if(!c.ok)throw Error(`Failed to download NATS: ${c.status} ${c.statusText}`);let E=Y4(t,f),$=await c.arrayBuffer();JL(E,Buffer.from($));let w=Y4(t,f.replace(/\.(zip|tar\.gz)$/,""));if(_h)await Bun.spawn(["powershell","-Command",`Expand-Archive -Path '${E}' -DestinationPath '${t}' -Force`]).exited;else await Bun.spawn(["tar","-xzf",E,"-C",t]).exited;if(!K$(u)){let d=Y4(w,`nats-server${VQi}`);if(K$(d))hRu(d,u)}if(FKt(w,{recursive:!0,force:!0}),await vRu(E).catch(()=>{}),!_h)await _Ru(u,493);if(!K$(u))throw Error(`NATS binary not found at ${u} after extraction`);return u}function tM(i){return Y4(J$(i),"nats","jwt")}function YKt(i){return Y4(tM(i),"keys.json")}function ERu(i){return Y4(tM(i),"nats-server.conf")}function QKt(i){return Y4(tM(i),"cluster.creds")}function zKt(i){let u=YKt(i);if(K$(u))try{let f=JSON.parse(pC(u,"utf8"));if(v2u(f))return f}catch{}let t=_2u();return TD(tM(i)),JL(u,JSON.stringify(t,null,2),{mode:384}),t}function $Ru(i,u,t){return{publicUrl:`nats://127.0.0.1:${u}`,accountJwt:i.tunnelAccountJwt,accountSigningKey:i.tunnelSigningSeed,operatorJwt:i.operatorJwt,credsPath:t}}async function HKt(i){let u={name:"NATS",state:"stopped",pid:null,port:0,owner:"none"},t=zKt(i),f=await D2u(t),l=QKt(i),c=uui()?"0.0.0.0":"127.0.0.1",E=Hw(i,"nats");if(E!==null)if(CE(E.pid,"nats-server")){if(c==="127.0.0.1")return u.state="running",u.pid=E.pid,u.port=E.port,u.owner="managed",{info:u,tunnel:$Ru(f,E.port,l)};await NRu(i)}else await I1(i,"nats");let $=await iM(),w=await iM();u.port=$;let d=await WKt(i),h=Y4(J$(i),"nats","data"),_=Y4(J$(i),"nats");TD(h),TD(tM(i)),JL(l,f.clusterCreds,{mode:384});let v=n2u({tcpPort:$,wsPort:w,storeDir:h,bindHost:c,artifacts:f});JL(ERu(i),v);let D=Bun.file(Y4(_,"nats.log")),n=Bun.spawn([d,"-c",ERu(i)],{stdout:D,stderr:D});return _li(i,"nats",{pid:n.pid,port:$,wsPort:w,startedAt:new Date().toISOString()}),await uM($),await uM(w),u.state="running",u.pid=n.pid,u.owner="managed",{info:u,tunnel:$Ru(f,$,l)}}async function NRu(i){let u=Hw(i,"nats");if(u===null){console.log("NATS: not running");return}let{pid:t}=u;if(!Qc(t)){console.log("NATS: process already dead, cleaning up state"),await I1(i,"nats");return}if(!CE(t,"nats-server")){console.log(`NATS: PID ${t} no longer belongs to nats-server (possible PID reuse), cleaning up state`),await I1(i,"nats");return}if(console.log(`NATS: stopping (PID ${t})...`),_h)Bun.spawn(["taskkill","/PID",String(t)]);else process.kill(t,"SIGTERM");let f=Date.now();while(Date.now()-f<5000&&Qc(t))await N0(200);if(Qc(t)&&CE(t,"nats-server"))if(console.log("NATS: force killing..."),_h)Bun.spawn(["taskkill","/PID",String(t),"/F"]);else process.kill(t,"SIGKILL");await I1(i,"nats"),console.log("NATS stopped")}function ORu(i,u){return i==="win32"?"minio.exe":"minio"}function yRu(i,u){let t={darwin:"darwin",linux:"linux",win32:"windows"},f={arm64:"arm64",x64:"amd64"},l=t[i],c=f[u];if(!l||!c)throw Error(`Unsupported platform for MinIO: ${i}/${u}`);let E=ORu(i,u);return`https://dl.min.io/server/minio/release/${l}-${c}/${E}`}function RKt(i){return i===void 0||i===""||i==="true"||i==="1"}function bKt(i){return Y4(J$(i),"minio","bin",`minio${VQi}`)}async function CKt(i){let u=bKt(i);if(K$(u))return u;let t=Y4(J$(i),"minio","bin");TD(t);let f=yRu(hli(),RQi()),l=await fetch(f);if(!l.ok)throw Error(`Failed to download MinIO: ${l.status} ${l.statusText}`);let c=await l.arrayBuffer(),E=`${u}.download-${process.pid}`;if(JL(E,Buffer.from(c)),!_h)await _Ru(E,493);if(hRu(E,u),!K$(u))throw Error(`MinIO binary not found at ${u} after download`);return u}async function MKt(i,u=30000){let t=`http://127.0.0.1:${i}/minio/health/ready`,f=Date.now();while(Date.now()-f<u){try{if((await fetch(t)).status===200)return}catch{}await N0(200).catch(()=>{})}throw Error(`Timed out waiting for MinIO readiness at ${t}`)}async function wRu(i){let{S3Client:u,CreateBucketCommand:t}=await Promise.resolve().then(() => (sC(),cRu)),f=new u({endpoint:i,region:"auto",credentials:{accessKeyId:MQi,secretAccessKey:qQi},forcePathStyle:!0});try{await bl(()=>f.send(new t({Bucket:gRu})),{maxAttempts:5,minTimeout:200,maxTimeout:3000,isRetriable:(l)=>l instanceof Error&&/ECONNREFUSED|ECONNRESET|EPIPE|socket|fetch failed|timed out|network/i.test(`${l.name??""} ${l.message}`)})}catch(l){let c=l&&typeof l==="object"&&"name"in l?String(l.name):"";if(c!=="BucketAlreadyOwnedByUs"&&c!=="BucketAlreadyExists"&&!(l instanceof Error&&l.message.includes("already")))throw f.destroy(),l}f.destroy()}async function qKt(i){let u={name:"MinIO",state:"stopped",pid:null,port:0,owner:"none"},t=Hw(i,"minio");if(t!==null){if(CE(t.pid,"minio"))return u.state="running",u.pid=t.pid,u.port=t.port,u.owner="managed",await wRu(`http://127.0.0.1:${t.port}`),u;await I1(i,"minio")}let f=await iM();u.port=f;let l=await CKt(i),c=Y4(J$(i),"minio","data"),E=Y4(J$(i),"minio");TD(c);let $=Bun.file(Y4(E,"minio.log")),w=Bun.spawn([l,"server",c,"--address",`:${f}`],{env:{...process.env,MINIO_ROOT_USER:MQi,MINIO_ROOT_PASSWORD:qQi},stdout:$,stderr:$});return _li(i,"minio",{pid:w.pid,port:f,startedAt:new Date().toISOString()}),await MKt(f),await wRu(`http://127.0.0.1:${f}`),u.state="running",u.pid=w.pid,u.owner="managed",u}async function VKt(i){let u=Hw(i,"minio");if(u===null){console.log("MinIO: not running");return}let{pid:t}=u;if(!Qc(t)){console.log("MinIO: process already dead, cleaning up state"),await I1(i,"minio");return}if(!CE(t,"minio")){console.log(`MinIO: PID ${t} no longer belongs to minio (possible PID reuse), cleaning up state`),await I1(i,"minio");return}if(console.log(`MinIO: stopping (PID ${t})...`),_h)Bun.spawn(["taskkill","/PID",String(t)]);else process.kill(t,"SIGTERM");let f=Date.now();while(Date.now()-f<5000&&Qc(t))await N0(200);if(Qc(t)&&CE(t,"minio"))if(console.log("MinIO: force killing..."),_h)Bun.spawn(["taskkill","/PID",String(t),"/F"]);else process.kill(t,"SIGKILL");await I1(i,"minio"),console.log("MinIO stopped")}function ZRu(i){let u=i.hotReload===!0?["--hot"]:[],t=i.hotReload===!0?["--hot"]:[];return["bun",...u,"run","--cwd=apps/mesh","src/cli.ts","link",i.clusterUrl,"--port",String(i.port),"--no-tui",...t]}async function rKt(i){let u={name:"Link",state:"stopped",pid:null,port:0,owner:"none"},t=Hw(i.home,"link");if(t!==null){if(CE(t.pid,HQi,"args"))return u.state="running",u.pid=t.pid,u.port=t.port,u.owner="managed",{info:u,proc:null};await I1(i.home,"link")}if(i.beforeSpawn)await i.beforeSpawn();let f=await iM();u.port=f;let l=Bun.spawn(ZRu({clusterUrl:i.clusterUrl,port:f,hotReload:i.hotReload}),{cwd:i.repoRoot,env:{...process.env,MESH_CLUSTER_URL:i.clusterUrl,DATA_DIR:i.linkDataDir,DECOCMS_HOME:i.linkDataDir,DECOCMS_LINK_MANAGED:"1"},stdio:i.stdio??["inherit","inherit","inherit"]});_li(i.home,"link",{pid:l.pid,port:f,startedAt:new Date().toISOString()}),i.onSpawn?.(l);try{await uM(f)}catch(c){try{l.kill()}catch{}throw await I1(i.home,"link"),c}return u.state="running",u.pid=l.pid,u.owner="managed",{info:u,proc:l}}async function TRu(i){let u=Hw(i,"link");if(u===null){console.log("Link: not running");return}let{pid:t}=u;if(!Qc(t)){console.log("Link: process already dead, cleaning up state"),await I1(i,"link");return}if(!CE(t,HQi,"args")){console.log(`Link: PID ${t} no longer belongs to the link daemon (possible PID reuse), cleaning up state`),await I1(i,"link");return}if(console.log(`Link: stopping (PID ${t})...`),_h)Bun.spawn(["taskkill","/PID",String(t)]);else process.kill(t,"SIGTERM");let f=Date.now();while(Date.now()-f<5000&&Qc(t))await N0(200);if(Qc(t)&&CE(t,HQi,"args"))if(console.log("Link: force killing..."),_h)Bun.spawn(["taskkill","/PID",String(t),"/F"]);else process.kill(t,"SIGKILL");await I1(i,"link"),console.log("Link stopped")}function dRu(i){return c6(eKt,mKt,i,2,0.5)}function oKt(i,u){if(u.aborted)return Promise.resolve();return new Promise((t)=>{let f=()=>{u.removeEventListener("abort",f),t()};u.addEventListener("abort",f,{once:!0}),i.exited.then(()=>{u.removeEventListener("abort",f),t()})})}async function sKt(i,u){while(!u.aborted&&Qc(i))await N0(2000,{signal:u}).catch(()=>{})}async function pKt(i){let u=0;while(!i.signal.aborted){let t=Date.now(),f;try{f=await rKt(i)}catch($){if(i.onDown?.(),i.onLog?.(`[link] daemon failed to start: ${$ instanceof Error?$.message:String($)} \u2014 retrying`),i.signal.aborted)return;await N0(dRu(u++),{signal:i.signal}).catch(()=>{});continue}let l=new AbortController,c=()=>l.abort();if(i.signal.addEventListener("abort",c,{once:!0}),uM(f.info.port,30000,l.signal).then(()=>{if(!l.signal.aborted)i.onReady?.(f.info.port)}).catch(()=>{}),f.proc)await oKt(f.proc,i.signal);else if(f.info.pid!==null)await sKt(f.info.pid,i.signal);if(l.abort(),i.signal.removeEventListener("abort",c),i.signal.aborted)return;i.onDown?.();let E=Date.now()-t;if(E>=aKt)u=0;i.onLog?.(`[link] daemon exited after ${Math.round(E/1000)}s \u2014 respawning`),await N0(dRu(u++),{signal:i.signal}).catch(()=>{})}}function zQi(i,u){try{let t=new URL(i);return t.port?Number.parseInt(t.port,10):u}catch{return u}}async function iJt(i){TD(J$(i.home));let u=i.externalDatabaseUrl!==null,t=i.externalNatsUrl!==null,f=Boolean(process.env.S3_ENDPOINT&&process.env.S3_BUCKET&&process.env.S3_ACCESS_KEY_ID&&process.env.S3_SECRET_ACCESS_KEY),l=i.skipMinio===!0||f,c=u?{name:"PostgreSQL",state:"external",pid:null,port:zQi(i.externalDatabaseUrl,5432),owner:"external"}:await KKt(i.home),E=null,$;if(t)$={name:"NATS",state:"external",pid:null,port:zQi(i.externalNatsUrl,4222),owner:"external"};else{let v=await HKt(i.home);if($=v.info,E=v.tunnel,uui()&&E){let D=await T2u({natsPort:$.port});E={...E,publicUrl:D.config.publicUrl},console.log(`[dev-nats-toxiproxy] daemon NATS routed through ${D.config.publicUrl} -> ${D.config.upstream} (admin ${D.config.apiUrl})`)}}let w=[c,$],d=null;if(f){w.push({name:"MinIO",state:"external",pid:null,port:zQi(process.env.S3_ENDPOINT,kKt),owner:"external"});let v=RKt(process.env.S3_FORCE_PATH_STYLE);d={endpoint:process.env.S3_ENDPOINT,bucket:process.env.S3_BUCKET,accessKeyId:process.env.S3_ACCESS_KEY_ID,secretAccessKey:process.env.S3_SECRET_ACCESS_KEY,forcePathStyle:v}}else if(!l){let v=await qKt(i.home);w.push(v),d={endpoint:`http://127.0.0.1:${v.port}`,bucket:gRu,accessKeyId:MQi,secretAccessKey:qQi,forcePathStyle:!0}}if(d){if(process.env.S3_ENDPOINT=d.endpoint,process.env.S3_BUCKET=d.bucket,process.env.S3_ACCESS_KEY_ID=d.accessKeyId,process.env.S3_SECRET_ACCESS_KEY=d.secretAccessKey,d.forcePathStyle)process.env.S3_FORCE_PATH_STYLE="true"}if(E)process.env.NATS_PUBLIC_URL=E.publicUrl,process.env.NATS_ACCOUNT_JWT=E.accountJwt,process.env.NATS_ACCOUNT_SIGNING_KEY=E.accountSigningKey,process.env.NATS_OPERATOR_JWT=E.operatorJwt,process.env.NATS_TUNNEL_PUBLIC_ENABLED="true",process.env.NATS_CREDS=E.credsPath;let h=u?i.externalDatabaseUrl:SKt(c.port),_=t?i.externalNatsUrl:`nats://localhost:${$.port}`;return{services:w,outputs:{databaseUrl:h,natsUrls:[_],s3:d,natsTunnel:E}}}async function uJt(i){if(await TRu(i),await JKt(i),await NRu(i),await VKt(i),uui())await B2u().catch(()=>{});console.log(`
176
176
  All managed services stopped.`)}async function tJt(i){let u=[],t=Hw(i,"postgres");if(t!==null&&Qc(t.pid))u.push({name:"PostgreSQL",state:"running",pid:t.pid,port:t.port,owner:"managed"});else{if(t!==null)await I1(i,"postgres");u.push({name:"PostgreSQL",state:"stopped",pid:null,port:0,owner:"none"})}let f=Hw(i,"nats");if(f!==null&&Qc(f.pid))u.push({name:"NATS",state:"running",pid:f.pid,port:f.port,owner:"managed"});else{if(f!==null)await I1(i,"nats");u.push({name:"NATS",state:"stopped",pid:null,port:0,owner:"none"})}let l=Hw(i,"minio");if(l!==null&&Qc(l.pid))u.push({name:"MinIO",state:"running",pid:l.pid,port:l.port,owner:"managed"});else{if(l!==null)await I1(i,"minio");u.push({name:"MinIO",state:"stopped",pid:null,port:0,owner:"none"})}let c=Hw(i,"link");if(c!==null&&Qc(c.pid))u.push({name:"Link",state:"running",pid:c.pid,port:c.port,owner:"managed"});else{if(c!==null)await I1(i,"link");u.push({name:"Link",state:"stopped",pid:null,port:0,owner:"none"})}return u}function fJt(i){console.log("Service State PID Port Owner"),console.log("---------- ---------- ----- ----- ----------");for(let f of i){let l=f.name.padEnd(10),c=f.state.padEnd(10),E=(f.pid?.toString()??"-").padEnd(5),$=(f.port?String(f.port):"-").padEnd(5),w=f.owner;console.log(`${l} ${c} ${E} ${$} ${w}`)}}var bQi="postgres",CQi="postgres",DRu="postgres",nRu="v2.14.2",MQi="minioadmin",qQi="minioadmin",gRu="studio-dev",kKt=9000,_h,VQi,HQi="cli.ts link",mKt=500,eKt=30000,aKt=30000;var kN=g(()=>{O4();g2u();F2u();_h=hli()==="win32",VQi=_h?".exe":""});var FRu={};Ji(FRu,{servicesCommand:()=>lJt});function BRu(i){if(!i)return null;try{let t=new URL(i).hostname;if(t==="localhost"||t==="127.0.0.1"||t==="::1")return null;return i}catch{return null}}async function lJt(i){let{subcommand:u,home:t}=i,{ensureServices:f,stopServices:l,getStatus:c,printTable:E}=await Promise.resolve().then(() => (kN(),xN));switch(u){case"up":{await f({home:t,externalDatabaseUrl:BRu(process.env.DATABASE_URL),externalNatsUrl:BRu(process.env.NATS_URL)});break}case"down":{await l(t);break}case"status":{let $=await c(t);E($);break}default:console.error(`Unknown services subcommand: ${u}
177
- Usage: deco services <up|down|status>`),process.exit(1)}}import{homedir as cJt}from"os";function $Jt(i){let u=(i??"").trim();return EJt.has(u)?u:"all"}function PRu(i,u,t){return Number(t??(i==="worker"?0:Math.floor(u*0.6)))}function XL(i){return i==="true"||i==="1"}function wJt(i){if(i===void 0||i==="")return;return XL(i)}function dJt(i,u,t){if(u===void 0||u==="")return t;let f=Number(u);if(!Number.isSafeInteger(f)||f<=0)throw Error(`${i} must be a positive integer`);return f}function hJt(i,u){if(i===void 0||i==="")return u;return i==="true"||i==="1"}function URu(i){if(!i)return null;try{let t=new URL(i).hostname;if(t==="localhost"||t==="127.0.0.1"||t==="::1")return null;return i}catch{return null}}function vJt(i){let u=i&&i.length>0?i:"user-desktop";if(u==="cluster")return"agent-sandbox";if(!_Jt.has(u))throw Error(`Unknown STUDIO_SANDBOX_PROVIDER="${i}" \u2014 expected "agent-sandbox", legacy "cluster", or "user-desktop".`);return u}function vli(i,u){let t=i.home||u.DATA_DIR||u.DECOCMS_HOME||`${cJt()}/deco`,f=i.localMode,l=i.nodeEnv||u.NODE_ENV||"development",c=u.NATS_URL||"nats://localhost:4222",E=wJt(u.NATS_TUNNEL_PUBLIC_ENABLED)??!!u.NATS_PUBLIC_URL;return{settings:{nodeEnv:l,port:Number(i.port)||Number(u.PORT)||3000,baseUrl:i.baseUrl||u.BASE_URL,dataDir:t,databasePgSsl:XL(u.DATABASE_PG_SSL),databasePoolMax:Number(u.DATABASE_POOL_MAX)||5,betterAuthSecret:u.BETTER_AUTH_SECRET||"",encryptionKey:u.ENCRYPTION_KEY||"",meshJwtSecret:u.MESH_JWT_SECRET,localMode:f,disableRateLimit:XL(u.DISABLE_RATE_LIMIT),studioProvisionSecretKey:u.STUDIO_PROVISION_SECRET_KEY,deploymentAdminEmails:(u.DEPLOYMENT_ADMIN_EMAILS??"").split(",").map((w)=>w.trim().toLowerCase()).filter(Boolean),clickhouseUrl:u.CLICKHOUSE_URL,clickhouseMaxMemoryUsage:Number(u.CLICKHOUSE_MAX_MEMORY_USAGE)||void 0,monitoringOtlpEndpoint:u.MONITORING_OTLP_ENDPOINT,otelServiceName:u.OTEL_SERVICE_NAME||"studio",natsPublicUrl:u.NATS_PUBLIC_URL,natsTunnelPublicEnabled:E,natsTunnelSessionTtlSeconds:dJt("NATS_TUNNEL_SESSION_TTL_SECONDS",u.NATS_TUNNEL_SESSION_TTL_SECONDS,900),natsOperatorJwt:u.NATS_OPERATOR_JWT,natsAccountJwt:u.NATS_ACCOUNT_JWT,natsAccountSigningKey:u.NATS_ACCOUNT_SIGNING_KEY,natsCredsPath:u.NATS_CREDS,configPath:u.CONFIG_PATH||"./config.json",aiGatewayEnabled:XL(u.DECO_AI_GATEWAY_ENABLED),aiGatewayUrl:u.DECO_AI_GATEWAY_URL||"https://ai-site.deco.site",enableDecoImport:XL(u.ENABLE_DECO_IMPORT),mcpCacheEnabled:hJt(u.MCP_CACHE_ENABLED,l!=="development"),orgFsPublicSetsJson:u.ORGFS_PUBLIC_SETS,orgFsMountsDisabled:XL(u.DISABLE_ORGFS_MOUNTS),s3Endpoint:u.S3_ENDPOINT,s3Bucket:u.S3_BUCKET,s3Region:u.S3_REGION||"auto",s3AccessKeyId:u.S3_ACCESS_KEY_ID,s3SecretAccessKey:u.S3_SECRET_ACCESS_KEY,s3ForcePathStyle:u.S3_FORCE_PATH_STYLE===void 0||u.S3_FORCE_PATH_STYLE===""||u.S3_FORCE_PATH_STYLE==="true"||u.S3_FORCE_PATH_STYLE==="1",monitoringS3Bucket:u.MONITORING_S3_BUCKET,monitoringS3Endpoint:u.MONITORING_S3_ENDPOINT,monitoringS3Region:u.MONITORING_S3_REGION,monitoringS3AccessKeyId:u.MONITORING_S3_ACCESS_KEY_ID,monitoringS3SecretAccessKey:u.MONITORING_S3_SECRET_ACCESS_KEY,monitoringS3Prefix:u.MONITORING_S3_PREFIX,duckdbExtensionDirectory:u.DUCKDB_EXTENSION_DIRECTORY||"/opt/duckdb/extensions",duckdbMemoryLimit:u.DUCKDB_MEMORY_LIMIT||void 0,duckdbThreads:u.DUCKDB_THREADS?Number(u.DUCKDB_THREADS):void 0,isCli:!0,noTui:i.noTui===!0,podName:u.POD_NAME??crypto.randomUUID(),dispatchRole:$Jt(u.MESH_DISPATCH_ROLE),sandboxProviderKind:vJt(u.STUDIO_SANDBOX_PROVIDER),decoSupabaseUrl:u.DECO_SUPABASE_URL,decoSupabaseServiceKey:u.DECO_SUPABASE_SERVICE_KEY,firecrawlApiKey:u.FIRECRAWL_API_KEY,commerceDiscoveryInternalApiUrl:u.COMMERCE_DISCOVERY_INTERNAL_API_URL,commerceDiscoveryInternalApiKey:u.COMMERCE_DISCOVERY_INTERNAL_API_KEY,s3TenantBucket:u.S3_TENANT_BUCKET||"new-deco-sites-assets",s3TenantRegion:u.S3_TENANT_REGION||"us-west-2",s3TenantEndpoint:u.S3_TENANT_ENDPOINT,s3TenantPublicUrlBase:u.S3_TENANT_PUBLIC_URL_BASE||"https://decoims.com",awsS3TenantRoleArn:u.AWS_S3_TENANT_ROLE_ARN,awsS3TenantProvisionerAccessKeyId:u.AWS_S3_TENANT_PROVISIONER_ACCESS_KEY_ID,awsS3TenantProvisionerSecretAccessKey:u.AWS_S3_TENANT_PROVISIONER_SECRET_ACCESS_KEY},externalDatabaseUrl:URu(u.DATABASE_URL),externalNatsUrl:URu(c),skipMigrations:i.skipMigrations}}var EJt,_Jt;var Dli=g(()=>{EJt=new Set(["all","worker","api"]);_Jt=new Set(["agent-sandbox","user-desktop"])});function ARu(i){fM=Object.freeze(i)}function yu(){if(!fM)DJt();return fM}function DJt(){if(fM)return;let i={...process.env},u=vli({port:i.PORT||"3000",home:i.DATA_DIR||i.DECOCMS_HOME||"",localMode:i.DECOCMS_LOCAL_MODE==="true",skipMigrations:!0,noTui:i.DECO_NO_TUI==="true",vitePort:i.VITE_PORT,baseUrl:i.BASE_URL},i);fM=Object.freeze({...u.settings,databaseUrl:i.DATABASE_URL??"postgresql://postgres:postgres@localhost:5432/postgres",natsUrls:(i.NATS_URL||"nats://localhost:4222").split(",").map((t)=>t.trim()).filter(Boolean)})}var fM=null;var vt=g(()=>{Dli()});import{context as nJt,propagation as gJt,SpanKind as NJt,SpanStatusCode as mQi}from"@opentelemetry/api";function yJt(i,u){let t=i instanceof Error?i.name:void 0;if(t==="TimeoutError")return"timeout";if(t==="AbortError")return"cancelled";if(u?.aborted)return"cancelled";return null}function ZJt(i,u){if(u.startsWith("/_sandbox/")){if(i===404)return"daemon_gone";if(i===409)return"daemon_not_ready"}if(i===404&&u.includes("/sandboxclaims/"))return"claim_gone";return null}function TJt(i,u){if(i===404&&(u==="/.decofile"||u==="/live/_meta"))return"not_a_deco_site";return null}function BJt(i){if(!(i instanceof Error))return!1;if(i.message.includes("socket connection was closed"))return!0;let u=i.code;return u==="ECONNRESET"||u==="EPIPE"}async function FJt(i,u){let t,f;if(i instanceof Request)t=new URL(i.url),f=u?.method??i.method;else if(i instanceof URL)t=i,f=u?.method??"GET";else t=new URL(i),f=u?.method??"GET";let l=`${f} ${t.host}`;return s2.startActiveSpan(l,{kind:NJt.CLIENT,attributes:{"http.request.method":f,"url.full":t.href,"url.scheme":t.protocol.replace(":",""),"url.path":t.pathname,"url.query":t.search||void 0,"server.address":t.hostname,"server.port":t.port?Number(t.port):void 0}},async(c)=>{try{let E=new Headers(u?.headers??(i instanceof Request?i.headers:{}));gJt.inject(nJt.active(),E,{set:(v,D,n)=>v.set(D,n)});let $={...u,headers:E},w=await OJt(i,$);c.setAttribute("http.response.status_code",w.status);let d=w.status===405&&f==="GET"&&(E.get("accept")??"").includes("text/event-stream"),h=w.status>=400?ZJt(w.status,t.pathname):null,_=w.status>=400?TJt(w.status,t.pathname):null;if(w.status>=400&&!d&&!h&&!_)c.setStatus({code:mQi.ERROR,message:`HTTP ${w.status}`});else{if(h)c.setAttribute("sandbox.lifecycle",h);if(_)c.setAttribute("preview.probe",_);c.setStatus({code:mQi.OK})}return w}catch(E){let $=u?.signal??(i instanceof Request?i.signal:void 0),w=yJt(E,$??void 0);if(w)c.setAttribute("abort.reason",w);else if(BJt(E)&&t.pathname.startsWith("/_sandbox/"))c.setAttribute("sandbox.lifecycle","connection_closed");else c.recordException(E),c.setStatus({code:mQi.ERROR,message:E instanceof Error?E.message:"Fetch failed"});throw E}finally{c.end()}})}function IRu(){globalThis.fetch=FJt}var OJt;var xRu=g(()=>{jl();OJt=globalThis.fetch});import{join as aQi}from"path";function vh(){return aQi(yu().dataDir,"logs")}function LL(){return aQi(yu().dataDir,"traces")}function BD(){return aQi(yu().dataDir,"metrics")}function p2(i,u){let t=i[u];return t!=null?String(t):""}function lM(i,u){let t=i[u];return t!=null&&t!==""?String(t):null}function kRu(i){let{attributes:u}=i,t=u[If.IS_ERROR],f=u[If.DURATION_MS];return{v:1,id:i.id,type:p2(u,If.TYPE)||cM,organization_id:p2(u,If.ORGANIZATION_ID),connection_id:p2(u,If.CONNECTION_ID),connection_title:p2(u,If.CONNECTION_TITLE),tool_name:p2(u,If.TOOL_NAME),input:p2(u,If.INPUT),output:p2(u,If.OUTPUT),is_error:t===!0||t===1||t==="true"?1:0,error_message:lM(u,If.ERROR_MESSAGE),duration_ms:typeof f==="number"?f:Number(f)||0,timestamp:new Date(Number(i.timestampNano/1000000n)).toISOString(),user_id:lM(u,If.USER_ID),request_id:p2(u,If.REQUEST_ID),user_agent:lM(u,If.USER_AGENT),virtual_mcp_id:lM(u,If.VIRTUAL_MCP_ID),properties:lM(u,If.PROPERTIES)}}function gli(i){return i[0]*1000+i[1]/1e6}function YL(i){return new Date(gli(i)).toISOString()}var eQi="mcp.proxy.callTool",If,cM="tool_call",WL="llm_call",nli="decopilot";var Rw=g(()=>{vt();If={TYPE:"studio.monitoring.type",ORGANIZATION_ID:"studio.monitoring.organization_id",CONNECTION_ID:"studio.monitoring.connection_id",CONNECTION_TITLE:"studio.monitoring.connection_title",TOOL_NAME:"studio.monitoring.tool_name",INPUT:"studio.monitoring.input",OUTPUT:"studio.monitoring.output",IS_ERROR:"studio.monitoring.is_error",ERROR_MESSAGE:"studio.monitoring.error_message",DURATION_MS:"studio.monitoring.duration_ms",USER_ID:"studio.monitoring.user_id",REQUEST_ID:"studio.monitoring.request_id",USER_AGENT:"studio.monitoring.user_agent",VIRTUAL_MCP_ID:"studio.monitoring.virtual_mcp_id",PROPERTIES:"studio.monitoring.properties"}});import{ExportResultCode as Nli}from"@opentelemetry/core";import{mkdir as UJt,rename as PJt,writeFile as AJt}from"fs/promises";import{join as Oli}from"path";class GN{bufferItems=[];bufferBytes=0;flushTimer=null;flushQueue=Promise.resolve();basePath;flushThreshold;maxBufferBytes;isShutdown=!1;knownDirs=new Set;partitionKey;constructor(i){this.basePath=i.basePath,this.flushThreshold=i.flushThreshold??1000,this.maxBufferBytes=i.maxBufferBytes??10485760,this.partitionKey=i.partitionKey;let u=i.flushIntervalMs??60000;if(u>0&&u<3600000){if(this.flushTimer=setInterval(()=>{this.flush().catch((t)=>{console.error("[NDJSONExporter] Timer flush failed:",t)})},u),this.flushTimer&&typeof this.flushTimer==="object"&&"unref"in this.flushTimer)this.flushTimer.unref()}}exportRows(i){if(this.isShutdown)return Promise.resolve({code:Nli.FAILED});for(let u of i){let t=JSON.stringify(u),f=this.partitionKey?this.partitionKey(u):"";this.bufferItems.push({partition:f,json:t}),this.bufferBytes+=Buffer.byteLength(t,"utf8")+1}if(this.bufferItems.length>=this.flushThreshold||this.bufferBytes>=this.maxBufferBytes)return this.flush().then(()=>({code:Nli.SUCCESS})).catch((u)=>{return console.error("[NDJSONExporter] Flush failed:",u),{code:Nli.FAILED}});return Promise.resolve({code:Nli.SUCCESS})}async shutdown(){if(this.isShutdown=!0,this.flushTimer)clearInterval(this.flushTimer),this.flushTimer=null;try{await this.flushQueue}catch{}if(this.bufferItems.length>0)await this.flush()}async forceFlush(){try{await this.flushQueue}catch{}if(this.bufferItems.length>0)await this.flush()}flush(){let u=this.flushQueue.catch(()=>{}).then(()=>this.doFlush());return this.flushQueue=u,u}async doFlush(){if(this.bufferItems.length===0)return;let i=this.bufferItems;this.bufferItems=[],this.bufferBytes=0;let u=new Map;for(let l of i){let c=u.get(l.partition);if(!c)c=[],u.set(l.partition,c);c.push(l.json)}let t=await Promise.allSettled(Array.from(u.entries()).map(([l,c])=>this.writeNDJSON(c,l).then(()=>l))),f=t.find((l)=>l.status==="rejected");if(f){let l=new Set;for(let E of t)if(E.status==="fulfilled")l.add(E.value);let c=i.filter((E)=>!l.has(E.partition));this.bufferItems=c.concat(this.bufferItems),this.bufferBytes=0;for(let E of this.bufferItems)this.bufferBytes+=Buffer.byteLength(E.json,"utf8")+1;throw f.reason}}async writeNDJSON(i,u){let t=new Date,f=[String(t.getUTCFullYear()),String(t.getUTCMonth()+1).padStart(2,"0"),String(t.getUTCDate()).padStart(2,"0"),String(t.getUTCHours()).padStart(2,"0")],l=u?Oli(this.basePath,u,...f):Oli(this.basePath,...f);if(!this.knownDirs.has(l))await UJt(l,{recursive:!0,mode:448}),this.knownDirs.add(l);let c=`${crypto.randomUUID()}.ndjson`,E=Oli(l,`.${c}.tmp`),$=Oli(l,c),w=i.join(`
177
+ Usage: deco services <up|down|status>`),process.exit(1)}}import{homedir as cJt}from"os";function $Jt(i){let u=(i??"").trim();return EJt.has(u)?u:"all"}function PRu(i,u,t){return Number(t??(i==="worker"?0:Math.floor(u*0.6)))}function XL(i){return i==="true"||i==="1"}function wJt(i){if(i===void 0||i==="")return;return XL(i)}function dJt(i,u,t){if(u===void 0||u==="")return t;let f=Number(u);if(!Number.isSafeInteger(f)||f<=0)throw Error(`${i} must be a positive integer`);return f}function hJt(i,u){if(i===void 0||i==="")return u;return i==="true"||i==="1"}function URu(i){if(!i)return null;try{let t=new URL(i).hostname;if(t==="localhost"||t==="127.0.0.1"||t==="::1")return null;return i}catch{return null}}function vJt(i){let u=i&&i.length>0?i:"user-desktop";if(u==="cluster")return"agent-sandbox";if(!_Jt.has(u))throw Error(`Unknown STUDIO_SANDBOX_PROVIDER="${i}" \u2014 expected "agent-sandbox", legacy "cluster", or "user-desktop".`);return u}function vli(i,u){let t=i.home||u.DATA_DIR||u.DECOCMS_HOME||`${cJt()}/deco`,f=i.localMode,l=i.nodeEnv||u.NODE_ENV||"development",c=u.NATS_URL||"nats://localhost:4222",E=wJt(u.NATS_TUNNEL_PUBLIC_ENABLED)??!!u.NATS_PUBLIC_URL;return{settings:{nodeEnv:l,port:Number(i.port)||Number(u.PORT)||3000,baseUrl:i.baseUrl||u.BASE_URL,dataDir:t,databasePgSsl:XL(u.DATABASE_PG_SSL),databasePoolMax:Number(u.DATABASE_POOL_MAX)||5,betterAuthSecret:u.BETTER_AUTH_SECRET||"",encryptionKey:u.ENCRYPTION_KEY||"",meshJwtSecret:u.MESH_JWT_SECRET,localMode:f,disableRateLimit:XL(u.DISABLE_RATE_LIMIT),studioProvisionSecretKey:u.STUDIO_PROVISION_SECRET_KEY,deploymentAdminEmails:(u.DEPLOYMENT_ADMIN_EMAILS??"").split(",").map((w)=>w.trim().toLowerCase()).filter(Boolean),clickhouseUrl:u.CLICKHOUSE_URL,clickhouseMaxMemoryUsage:Number(u.CLICKHOUSE_MAX_MEMORY_USAGE)||void 0,monitoringOtlpEndpoint:u.MONITORING_OTLP_ENDPOINT,otelServiceName:u.OTEL_SERVICE_NAME||"studio",natsPublicUrl:u.NATS_PUBLIC_URL,natsTunnelPublicEnabled:E,natsTunnelSessionTtlSeconds:dJt("NATS_TUNNEL_SESSION_TTL_SECONDS",u.NATS_TUNNEL_SESSION_TTL_SECONDS,900),natsOperatorJwt:u.NATS_OPERATOR_JWT,natsAccountJwt:u.NATS_ACCOUNT_JWT,natsAccountSigningKey:u.NATS_ACCOUNT_SIGNING_KEY,natsCredsPath:u.NATS_CREDS,configPath:u.CONFIG_PATH||"./config.json",aiGatewayEnabled:XL(u.DECO_AI_GATEWAY_ENABLED),aiGatewayUrl:u.DECO_AI_GATEWAY_URL||"https://ai-site.deco.site",enableDecoImport:XL(u.ENABLE_DECO_IMPORT),mcpCacheEnabled:hJt(u.MCP_CACHE_ENABLED,l!=="development"),orgFsPublicSetsJson:u.ORGFS_PUBLIC_SETS,orgFsMountsDisabled:XL(u.DISABLE_ORGFS_MOUNTS),s3Endpoint:u.S3_ENDPOINT,s3Bucket:u.S3_BUCKET,s3Region:u.S3_REGION||"auto",s3AccessKeyId:u.S3_ACCESS_KEY_ID,s3SecretAccessKey:u.S3_SECRET_ACCESS_KEY,s3ForcePathStyle:u.S3_FORCE_PATH_STYLE===void 0||u.S3_FORCE_PATH_STYLE===""||u.S3_FORCE_PATH_STYLE==="true"||u.S3_FORCE_PATH_STYLE==="1",monitoringS3Bucket:u.MONITORING_S3_BUCKET,monitoringS3Endpoint:u.MONITORING_S3_ENDPOINT,monitoringS3Region:u.MONITORING_S3_REGION,monitoringS3AccessKeyId:u.MONITORING_S3_ACCESS_KEY_ID,monitoringS3SecretAccessKey:u.MONITORING_S3_SECRET_ACCESS_KEY,monitoringS3Prefix:u.MONITORING_S3_PREFIX,duckdbExtensionDirectory:u.DUCKDB_EXTENSION_DIRECTORY||"/opt/duckdb/extensions",duckdbMemoryLimit:u.DUCKDB_MEMORY_LIMIT||void 0,duckdbThreads:u.DUCKDB_THREADS?Number(u.DUCKDB_THREADS):void 0,isCli:!0,noTui:i.noTui===!0,podName:u.POD_NAME??crypto.randomUUID(),dispatchRole:$Jt(u.MESH_DISPATCH_ROLE),sandboxProviderKind:vJt(u.STUDIO_SANDBOX_PROVIDER),decoSupabaseUrl:u.DECO_SUPABASE_URL,decoSupabaseServiceKey:u.DECO_SUPABASE_SERVICE_KEY,firecrawlApiKey:u.FIRECRAWL_API_KEY,commerceDiscoveryInternalApiUrl:u.COMMERCE_DISCOVERY_INTERNAL_API_URL,commerceDiscoveryInternalApiKey:u.COMMERCE_DISCOVERY_INTERNAL_API_KEY,s3TenantBucket:u.S3_TENANT_BUCKET||"new-deco-sites-assets",s3TenantRegion:u.S3_TENANT_REGION||"us-west-2",s3TenantEndpoint:u.S3_TENANT_ENDPOINT,s3TenantPublicUrlBase:u.S3_TENANT_PUBLIC_URL_BASE||"https://decoims.com",awsS3TenantRoleArn:u.AWS_S3_TENANT_ROLE_ARN,awsS3TenantProvisionerAccessKeyId:u.AWS_S3_TENANT_PROVISIONER_ACCESS_KEY_ID,awsS3TenantProvisionerSecretAccessKey:u.AWS_S3_TENANT_PROVISIONER_SECRET_ACCESS_KEY},externalDatabaseUrl:URu(u.DATABASE_URL),externalNatsUrl:URu(c),skipMigrations:i.skipMigrations}}var EJt,_Jt;var Dli=g(()=>{EJt=new Set(["all","worker","api"]);_Jt=new Set(["agent-sandbox","user-desktop"])});function ARu(i){fM=Object.freeze(i)}function yu(){if(!fM)DJt();return fM}function DJt(){if(fM)return;let i={...process.env},u=vli({port:i.PORT||"3000",home:i.DATA_DIR||i.DECOCMS_HOME||"",localMode:i.DECOCMS_LOCAL_MODE==="true",skipMigrations:!0,noTui:i.DECO_NO_TUI==="true",vitePort:i.VITE_PORT,baseUrl:i.BASE_URL},i);fM=Object.freeze({...u.settings,databaseUrl:i.DATABASE_URL??"postgresql://postgres:postgres@localhost:5432/postgres",natsUrls:(i.NATS_URL||"nats://localhost:4222").split(",").map((t)=>t.trim()).filter(Boolean)})}var fM=null;var vt=g(()=>{Dli()});import{context as nJt,propagation as gJt,SpanKind as NJt,SpanStatusCode as mQi}from"@opentelemetry/api";function yJt(i,u){let t=i instanceof Error?i.name:void 0;if(t==="TimeoutError")return"timeout";if(t==="AbortError")return"cancelled";if(u?.aborted)return"cancelled";return null}function ZJt(i,u){if(u.startsWith("/_sandbox/")){if(i===404)return"daemon_gone";if(i===409)return"daemon_not_ready"}if(i===404&&u.includes("/sandboxclaims/"))return"claim_gone";return null}function TJt(i,u){if(i===404&&(u==="/.decofile"||u==="/live/_meta"||u==="/sprites.svg"))return"not_a_deco_site";return null}function BJt(i){if(!(i instanceof Error))return!1;if(i.message.includes("socket connection was closed"))return!0;let u=i.code;return u==="ECONNRESET"||u==="EPIPE"}async function FJt(i,u){let t,f;if(i instanceof Request)t=new URL(i.url),f=u?.method??i.method;else if(i instanceof URL)t=i,f=u?.method??"GET";else t=new URL(i),f=u?.method??"GET";let l=`${f} ${t.host}`;return s2.startActiveSpan(l,{kind:NJt.CLIENT,attributes:{"http.request.method":f,"url.full":t.href,"url.scheme":t.protocol.replace(":",""),"url.path":t.pathname,"url.query":t.search||void 0,"server.address":t.hostname,"server.port":t.port?Number(t.port):void 0}},async(c)=>{try{let E=new Headers(u?.headers??(i instanceof Request?i.headers:{}));gJt.inject(nJt.active(),E,{set:(v,D,n)=>v.set(D,n)});let $={...u,headers:E},w=await OJt(i,$);c.setAttribute("http.response.status_code",w.status);let d=w.status===405&&f==="GET"&&(E.get("accept")??"").includes("text/event-stream"),h=w.status>=400?ZJt(w.status,t.pathname):null,_=w.status>=400?TJt(w.status,t.pathname):null;if(w.status>=400&&!d&&!h&&!_)c.setStatus({code:mQi.ERROR,message:`HTTP ${w.status}`});else{if(h)c.setAttribute("sandbox.lifecycle",h);if(_)c.setAttribute("preview.probe",_);c.setStatus({code:mQi.OK})}return w}catch(E){let $=u?.signal??(i instanceof Request?i.signal:void 0),w=yJt(E,$??void 0);if(w)c.setAttribute("abort.reason",w);else if(BJt(E)&&t.pathname.startsWith("/_sandbox/"))c.setAttribute("sandbox.lifecycle","connection_closed");else c.recordException(E),c.setStatus({code:mQi.ERROR,message:E instanceof Error?E.message:"Fetch failed"});throw E}finally{c.end()}})}function IRu(){globalThis.fetch=FJt}var OJt;var xRu=g(()=>{jl();OJt=globalThis.fetch});import{join as aQi}from"path";function vh(){return aQi(yu().dataDir,"logs")}function LL(){return aQi(yu().dataDir,"traces")}function BD(){return aQi(yu().dataDir,"metrics")}function p2(i,u){let t=i[u];return t!=null?String(t):""}function lM(i,u){let t=i[u];return t!=null&&t!==""?String(t):null}function kRu(i){let{attributes:u}=i,t=u[If.IS_ERROR],f=u[If.DURATION_MS];return{v:1,id:i.id,type:p2(u,If.TYPE)||cM,organization_id:p2(u,If.ORGANIZATION_ID),connection_id:p2(u,If.CONNECTION_ID),connection_title:p2(u,If.CONNECTION_TITLE),tool_name:p2(u,If.TOOL_NAME),input:p2(u,If.INPUT),output:p2(u,If.OUTPUT),is_error:t===!0||t===1||t==="true"?1:0,error_message:lM(u,If.ERROR_MESSAGE),duration_ms:typeof f==="number"?f:Number(f)||0,timestamp:new Date(Number(i.timestampNano/1000000n)).toISOString(),user_id:lM(u,If.USER_ID),request_id:p2(u,If.REQUEST_ID),user_agent:lM(u,If.USER_AGENT),virtual_mcp_id:lM(u,If.VIRTUAL_MCP_ID),properties:lM(u,If.PROPERTIES)}}function gli(i){return i[0]*1000+i[1]/1e6}function YL(i){return new Date(gli(i)).toISOString()}var eQi="mcp.proxy.callTool",If,cM="tool_call",WL="llm_call",nli="decopilot";var Rw=g(()=>{vt();If={TYPE:"studio.monitoring.type",ORGANIZATION_ID:"studio.monitoring.organization_id",CONNECTION_ID:"studio.monitoring.connection_id",CONNECTION_TITLE:"studio.monitoring.connection_title",TOOL_NAME:"studio.monitoring.tool_name",INPUT:"studio.monitoring.input",OUTPUT:"studio.monitoring.output",IS_ERROR:"studio.monitoring.is_error",ERROR_MESSAGE:"studio.monitoring.error_message",DURATION_MS:"studio.monitoring.duration_ms",USER_ID:"studio.monitoring.user_id",REQUEST_ID:"studio.monitoring.request_id",USER_AGENT:"studio.monitoring.user_agent",VIRTUAL_MCP_ID:"studio.monitoring.virtual_mcp_id",PROPERTIES:"studio.monitoring.properties"}});import{ExportResultCode as Nli}from"@opentelemetry/core";import{mkdir as UJt,rename as PJt,writeFile as AJt}from"fs/promises";import{join as Oli}from"path";class GN{bufferItems=[];bufferBytes=0;flushTimer=null;flushQueue=Promise.resolve();basePath;flushThreshold;maxBufferBytes;isShutdown=!1;knownDirs=new Set;partitionKey;constructor(i){this.basePath=i.basePath,this.flushThreshold=i.flushThreshold??1000,this.maxBufferBytes=i.maxBufferBytes??10485760,this.partitionKey=i.partitionKey;let u=i.flushIntervalMs??60000;if(u>0&&u<3600000){if(this.flushTimer=setInterval(()=>{this.flush().catch((t)=>{console.error("[NDJSONExporter] Timer flush failed:",t)})},u),this.flushTimer&&typeof this.flushTimer==="object"&&"unref"in this.flushTimer)this.flushTimer.unref()}}exportRows(i){if(this.isShutdown)return Promise.resolve({code:Nli.FAILED});for(let u of i){let t=JSON.stringify(u),f=this.partitionKey?this.partitionKey(u):"";this.bufferItems.push({partition:f,json:t}),this.bufferBytes+=Buffer.byteLength(t,"utf8")+1}if(this.bufferItems.length>=this.flushThreshold||this.bufferBytes>=this.maxBufferBytes)return this.flush().then(()=>({code:Nli.SUCCESS})).catch((u)=>{return console.error("[NDJSONExporter] Flush failed:",u),{code:Nli.FAILED}});return Promise.resolve({code:Nli.SUCCESS})}async shutdown(){if(this.isShutdown=!0,this.flushTimer)clearInterval(this.flushTimer),this.flushTimer=null;try{await this.flushQueue}catch{}if(this.bufferItems.length>0)await this.flush()}async forceFlush(){try{await this.flushQueue}catch{}if(this.bufferItems.length>0)await this.flush()}flush(){let u=this.flushQueue.catch(()=>{}).then(()=>this.doFlush());return this.flushQueue=u,u}async doFlush(){if(this.bufferItems.length===0)return;let i=this.bufferItems;this.bufferItems=[],this.bufferBytes=0;let u=new Map;for(let l of i){let c=u.get(l.partition);if(!c)c=[],u.set(l.partition,c);c.push(l.json)}let t=await Promise.allSettled(Array.from(u.entries()).map(([l,c])=>this.writeNDJSON(c,l).then(()=>l))),f=t.find((l)=>l.status==="rejected");if(f){let l=new Set;for(let E of t)if(E.status==="fulfilled")l.add(E.value);let c=i.filter((E)=>!l.has(E.partition));this.bufferItems=c.concat(this.bufferItems),this.bufferBytes=0;for(let E of this.bufferItems)this.bufferBytes+=Buffer.byteLength(E.json,"utf8")+1;throw f.reason}}async writeNDJSON(i,u){let t=new Date,f=[String(t.getUTCFullYear()),String(t.getUTCMonth()+1).padStart(2,"0"),String(t.getUTCDate()).padStart(2,"0"),String(t.getUTCHours()).padStart(2,"0")],l=u?Oli(this.basePath,u,...f):Oli(this.basePath,...f);if(!this.knownDirs.has(l))await UJt(l,{recursive:!0,mode:448}),this.knownDirs.add(l);let c=`${crypto.randomUUID()}.ndjson`,E=Oli(l,`.${c}.tmp`),$=Oli(l,c),w=i.join(`
178
178
  `)+`
179
179
  `;await AJt(E,w,{mode:384}),await PJt(E,$)}}var yli=()=>{};import{ExportResultCode as IJt}from"@opentelemetry/core";class oQi{inner;constructor(i){this.inner=new GN({...i,partitionKey:(u)=>u.organization_id})}export(i,u){let t=[];for(let f of i){if(!xJt.has(f.attributes[If.TYPE]))continue;let l={};for(let[w,d]of Object.entries(f.attributes))if(typeof d==="string"||typeof d==="number"||typeof d==="boolean")l[w]=d;let c=f.spanContext?.spanId??crypto.randomUUID(),E=f.hrTime,$=BigInt(E[0])*1000000000n+BigInt(E[1]);t.push(kRu({id:c,timestampNano:$,attributes:l}))}this.inner.exportRows(t).then((f)=>u(f)).catch(()=>u({code:IJt.FAILED}))}async shutdown(){await this.inner.shutdown()}async forceFlush(){await this.inner.forceFlush()}}var xJt;var GRu=g(()=>{Rw();yli();xJt=new Set([cM,WL])});import{ExportResultCode as kJt}from"@opentelemetry/core";import{AggregationTemporality as GJt,DataPointType as jRu}from"@opentelemetry/sdk-metrics";class sQi{inner;constructor(i){this.inner=new GN({...i,partitionKey:(u)=>u.organization_id})}selectAggregationTemporality(i){return GJt.DELTA}export(i,u){let t=[];for(let f of i.scopeMetrics)for(let l of f.metrics){let{descriptor:c,dataPointType:E}=l;if(E===jRu.SUM)for(let $ of l.dataPoints){let w=$.attributes;t.push({v:1,name:c.name,type:"sum",unit:c.unit,timestamp:YL($.endTime),organization_id:String(w["organization.id"]??""),connection_id:String(w["connection.id"]??""),tool_name:String(w["tool.name"]??""),status:String(w.status??""),error_type:String(w["error.type"]??""),value:$.value,hist_count:0,hist_sum:0,hist_min:0,hist_max:0,hist_boundaries:"[]",hist_bucket_counts:"[]"})}else if(E===jRu.HISTOGRAM)for(let $ of l.dataPoints){let{attributes:w,value:d}=$;t.push({v:1,name:c.name,type:"histogram",unit:c.unit,timestamp:YL($.endTime),organization_id:String(w["organization.id"]??""),connection_id:String(w["connection.id"]??""),tool_name:String(w["tool.name"]??""),status:String(w.status??""),error_type:String(w["error.type"]??""),value:d.count,hist_count:d.count,hist_sum:d.sum??0,hist_min:d.min??0,hist_max:d.max??0,hist_boundaries:JSON.stringify(d.buckets.boundaries),hist_bucket_counts:JSON.stringify(d.buckets.counts)})}}this.inner.exportRows(t).then((f)=>u(f)).catch(()=>u({code:kJt.FAILED}))}async shutdown(){await this.inner.shutdown()}async forceFlush(){await this.inner.forceFlush()}}var SRu=g(()=>{Rw();yli()});import{ExportResultCode as jJt}from"@opentelemetry/core";function SJt(i){let u=i.resource,t=u.attributes["service.name"]??"unknown";return{v:1,trace_id:i.spanContext().traceId,span_id:i.spanContext().spanId,parent_span_id:i.parentSpanContext?.spanId||null,name:i.name,kind:i.kind,status:i.status.code,status_message:i.status.message||null,start_time:YL(i.startTime),end_time:YL(i.endTime),duration_ms:gli(i.endTime)-gli(i.startTime),service_name:t,attributes:JSON.stringify(i.attributes),events:JSON.stringify(i.events),links:JSON.stringify(i.links),resource:JSON.stringify(u.attributes)}}class pQi{inner;constructor(i){this.inner=new GN(i)}export(i,u){let t=i.map(SJt);this.inner.exportRows(t).then((f)=>u(f)).catch(()=>u({code:jJt.FAILED}))}async shutdown(){await this.inner.shutdown()}async forceFlush(){await this.inner.forceFlush()}}var KRu=g(()=>{Rw();yli()});function QL(i,u=65536){if(i.length<=u&&Buffer.byteLength(i,"utf8")<=u)return i;let t=u-KJt;if(t<=0)return"... [TRUNCATED]".slice(0,u);let f=0,l=0;for(let c of i){let E=c.charCodeAt(0)<=127?1:Buffer.byteLength(c,"utf8");if(f+E>t)break;f+=E,l+=c.length}return i.slice(0,l)+"... [TRUNCATED]"}var KJt;var izi=g(()=>{KJt=Buffer.byteLength("... [TRUNCATED]","utf8")});import{NOOP_LOGGER as JJt}from"@opentelemetry/api-logs";function XRu(i){JRu=i.getLogger(XJt,LJt)}function LRu(){return JRu}var XJt="studio.monitoring",LJt="1.0.0",JRu;var uzi=g(()=>{JRu=JJt});var QRu={};Ji(QRu,{shouldSkipStudioContext:()=>tzi,isServerPath:()=>YJt,isHealthPath:()=>EM,SYSTEM_PATHS:()=>D6});function EM(i){return i===D6.HEALTH||i===D6.HEALTH_LIVE||i===D6.HEALTH_READY}function WRu(i){return i===D6.HEALTH||i===D6.HEALTH_LIVE||i===D6.HEALTH_READY||i===D6.METRICS||i.startsWith(jN.WELL_KNOWN)||i.startsWith(D6.DBOS_QUEUE_DEPTH_PREFIX)||i===D6.HOSTED_RUN_PENDING}function YRu(i){return i.startsWith(jN.API)}function YJt(i){return YRu(i)||i==="/mcp"||i.startsWith(jN.MCP)||i.startsWith(jN.OAUTH_PROXY)||i.startsWith(jN.ORG)||i.startsWith(jN.REPORT)||WRu(i)}function tzi(i){return i==="/"||i.startsWith(jN.API_AUTH)||i==="/api/trigger-callback"||WRu(i)||!YRu(i)&&WJt.test(i)}var D6,jN,WJt;var Zli=g(()=>{D6={HEALTH:"/health",HEALTH_LIVE:"/health/live",HEALTH_READY:"/health/ready",METRICS:"/metrics",DBOS_QUEUE_DEPTH_PREFIX:"/dbos-queue-depth/",HOSTED_RUN_PENDING:"/hosted-run-pending"},jN={API:"/api/",API_AUTH:"/api/auth/",MCP:"/mcp/",OAUTH_PROXY:"/oauth-proxy/",WELL_KNOWN:"/.well-known",ORG:"/org/",REPORT:"/report/"},WJt=/\.(html|css|js|ico|svg|png|jpg|jpeg|gif|webp|woff|woff2)$/});import{SpanStatusCode as fzi}from"@opentelemetry/api";var QJt,zJt=()=>QJt??=Bt.createHistogram("http.server.request.duration",{description:"Duration of inbound HTTP requests handled by the API.",unit:"s",advice:{explicitBucketBoundaries:[0.005,0.01,0.025,0.05,0.075,0.1,0.25,0.5,0.75,1,2.5,5,7.5,10]}}),lzi=async(i,u)=>{if(EM(i.req.path))return u();let t=i.req.raw,f=new URL(t.url),l=performance.now(),c=RRu(t),E=czi(t),$={"http.request.url":t.url,"http.request.method":t.method,"http.request.body.size":t.headers.get("content-length")??void 0,"url.scheme":f.protocol.replace(":",""),"server.address":f.host,"url.query":f.search||void 0,"url.path":f.pathname,"user_agent.original":t.headers.get("user-agent")??void 0,"request.internal":t.headers.has("traceparent"),...E?{"trace.debug.id":E}:{}};await s2.startActiveSpan(`${t.method} ${f.pathname}`,{attributes:$},c,async(w)=>{i.set("rootSpan",w);try{await u()}catch(d){w.recordException(d),w.setStatus({code:fzi.ERROR});let h=typeof d==="object"&&d&&"message"in d?String(d.message):JSON.stringify(d);throw console.error("error: ",h,$),d}finally{let d=i.res?.status??500,h=d>=500;w.setStatus({code:h?fzi.ERROR:fzi.OK}),w.setAttribute("http.response.status_code",d);let _=i.get("studioContext");if(_){if(_.auth.user?.id)w.setAttribute("studio.user.id",_.auth.user.id);if(_.auth.apiKey?.id)w.setAttribute("studio.api_key.id",_.auth.apiKey.id);if(_.organization?.id)w.setAttribute("studio.organization.id",_.organization.id)}if(E)HRu(i.res.headers,E);zJt().record((performance.now()-l)/1000,{"http.request.method":t.method,"http.route":i.req.routePath,"http.response.status_code":d}),w.end()}})};var zRu=g(()=>{jl();Zli()});import{createContextKey as HJt,metrics as mRu,propagation as RJt,ROOT_CONTEXT as bJt,SpanStatusCode as bRu,trace as $zi}from"@opentelemetry/api";import{logs as eRu,SeverityNumber as vM}from"@opentelemetry/api-logs";import{OTLPLogExporter as CRu}from"@opentelemetry/exporter-logs-otlp-proto";import{PrometheusExporter as CJt}from"@opentelemetry/exporter-prometheus";import{OTLPTraceExporter as MJt}from"@opentelemetry/exporter-trace-otlp-proto";import{RuntimeNodeInstrumentation as qJt}from"@opentelemetry/instrumentation-runtime-node";import{BatchLogRecordProcessor as Ezi,LoggerProvider as MRu}from"@opentelemetry/sdk-logs";import{detectResources as VJt,envDetector as rJt,hostDetector as mJt,osDetector as eJt,processDetector as aJt,resourceFromAttributes as qRu}from"@opentelemetry/resources";import{PeriodicExportingMetricReader as oJt}from"@opentelemetry/sdk-metrics";import{NodeSDK as sJt}from"@opentelemetry/sdk-node";import{BatchSpanProcessor as VRu,SamplingDecision as zL}from"@opentelemetry/sdk-trace-base";class oRu{inner;ratio;constructor(i,u){this.inner=i;this.ratio=u}onEmit(i,u){if(i.severityNumber!==void 0&&i.severityNumber>=vM.ERROR||Math.random()<this.ratio)this.inner.onEmit(i,u)}forceFlush(){return this.inner.forceFlush()}shutdown(){return this.inner.shutdown()}}class sRu{inner;maxBytes;constructor(i,u){this.inner=i;this.maxBytes=u}onEmit(i,u){let t=If.OUTPUT,f=i.attributes?.[t];if(typeof f==="string"&&f.length>this.maxBytes){let l=QL(f,this.maxBytes);this.inner.onEmit({...i,attributes:{...i.attributes,[t]:l}},u)}else this.inner.onEmit(i,u)}forceFlush(){return this.inner.forceFlush()}shutdown(){return this.inner.shutdown()}}class pRu{inner;constructor(i){this.inner=i}shouldSample(i,u,t,f,l,c){let E=i.getValue(aRu);if(!E){if(this.inner)return this.inner.shouldSample(i,u,t,f,l,c);return{decision:zL.RECORD_AND_SAMPLED}}let $=czi(E);if($)return{decision:zL.RECORD_AND_SAMPLED,attributes:{"trace.debug.id":$}};if(this.inner){let w=this.inner.shouldSample(i,u,t,f,l,c);if(w.decision===zL.RECORD_AND_SAMPLED){let d=crypto.randomUUID();w.attributes={...w.attributes??{},"trace.debug.id":d}}return w}return{decision:zL.NOT_RECORD}}toString(){return"DebugSampler"}}class ibu{ratio;constructor(i){this.ratio=i}shouldSample(){if(Math.random()<this.ratio)return{decision:zL.RECORD_AND_SAMPLED};return{decision:zL.NOT_RECORD}}toString(){return`RatioSampler(${this.ratio})`}}function ubu(){if(rRu)return;let i=yu(),u=!!process.env.OTEL_EXPORTER_OTLP_ENDPOINT,t=u?new MJt:void 0;$M=i.nodeEnv==="test"?null:new oQi({basePath:vh()}),wM=i.nodeEnv==="test"?null:new pQi({basePath:LL()}),dM=i.nodeEnv==="test"?null:new sQi({basePath:BD()}),hM=dM?new oJt({exporter:dM,exportIntervalMillis:60000}):null;let f=process.env.STUDIO_ENV??"production"??"unknown",l={};if(!process.env.OTEL_RESOURCE_ATTRIBUTES?.includes("deployment.environment"))l["deployment.environment"]=f;new sJt({serviceName:i.otelServiceName,resource:qRu(l),metricReaders:[wzi,...hM?[hM]:[]],sampler:uXt,spanProcessors:[...t?[new VRu(t,{scheduledDelayMillis:60000,maxExportBatchSize:1000})]:[],...wM?[new VRu(wM,{scheduledDelayMillis:60000,maxExportBatchSize:250})]:[]],instrumentations:[new qJt]}).start(),Bt=mRu.getMeter("studio","1.0.0"),s2=$zi.getTracer("studio","1.0.0");let E=VJt({detectors:[rJt,mJt,eJt,aJt]}).merge(qRu({"service.name":i.otelServiceName,...l})),$=[];if(u){let _=f==="prod"||f==="production"?1:0.1,v=process.env.INFRA_LOG_SAMPLE_RATIO,D=_;if(v!==void 0){let n=Number(v);if(Number.isFinite(n)&&n>=0&&n<=1)D=n;else console.warn(`[observability] Ignoring invalid INFRA_LOG_SAMPLE_RATIO="${v}" (expected 0..1); using ${_}`)}$.push(new oRu(new Ezi(new CRu),D))}_M=new MRu({resource:E,processors:$}),eRu.setGlobalLoggerProvider(_M),tbu=_M.getLogger("studio","1.0.0");let w=i.monitoringOtlpEndpoint??process.env.OTEL_EXPORTER_OTLP_ENDPOINT,d=[];if(w){let h=w.replace(/\/$/,""),_=h.endsWith("/v1/logs")?h:`${h}/v1/logs`;d.push(new sRu(new Ezi(new CRu({url:_})),8000))}if($M)d.push(new Ezi($M,{scheduledDelayMillis:60000,maxExportBatchSize:250}));Tli=new MRu({resource:E,processors:d}),XRu(Tli),IRu(),rRu=!0}async function i3(){let u=(await Promise.allSettled([_M?_M.forceFlush():Promise.resolve(),(async()=>{if(Tli)await Tli.forceFlush();if($M)await $M.forceFlush()})(),(async()=>{let t=$zi.getTracerProvider();if("forceFlush"in t)await t.forceFlush();if(wM)await wM.forceFlush()})(),(async()=>{if(hM)await hM.forceFlush();if(dM)await dM.forceFlush()})()])).find((t)=>t.status==="rejected");if(u)throw u.reason}function _zi(i,u,t){return s2.startActiveSpan(i,{attributes:t},async(f)=>{try{let l=await u(f);return f.setStatus({code:bRu.OK}),l}catch(l){let c=l instanceof Error?l:Error(String(l??"unknown"));throw f.setStatus({code:bRu.ERROR,message:c.message}),f.recordException(c),l}finally{f.end()}})}var pJt="__d",aRu,iXt=1,czi=(i)=>{let t=new URL(i.url).searchParams.get(pJt);if(t==="")return crypto.randomUUID();if(!t)t=i.headers.get("x-trace-debug-id");return t},HRu=(i,u)=>{try{i.set("x-trace-debug-id",u)}catch{}},wzi,uXt,$M=null,wM=null,dM=null,hM=null,_M=null,Tli=null,rRu=!1,s2,Bt,tbu,dzi=(i,u,t)=>{let f={},l=t,c=t[t.length-1];if(c!==null&&typeof c==="object"&&!Array.isArray(c)&&!(c instanceof Error)&&Object.getPrototypeOf(c)===Object.prototype)f=c,l=t.slice(0,-1);let E=l.map(($)=>{if($ instanceof Error)return`${$.name}: ${$.message}`;if(typeof $==="object")try{return JSON.stringify($)}catch{return"[Object]"}return String($)}).join(" ");tbu.emit({severityNumber:i,severityText:u,body:E,attributes:{"log.source":"console",...f}})},hzi,RRu=(i)=>{return RJt.extract(bJt,i.headers,{get:(t,f)=>t.get(f)??void 0,keys:(t)=>[...t.keys()]}).setValue(aRu,i)};var jl=g(()=>{xRu();GRu();SRu();KRu();Rw();izi();vt();uzi();zRu();aRu=HJt("Current request");wzi=new CJt({preventServerStart:!0}),uXt=new pRu(new ibu(iXt));s2=$zi.getTracer("studio","1.0.0"),Bt=mRu.getMeter("studio","1.0.0"),tbu=eRu.getLogger("studio","1.0.0"),hzi={error:console.error.bind(console),warn:console.warn.bind(console),debug:console.debug.bind(console)};console.error=(...i)=>{dzi(vM.ERROR,"ERROR",i),hzi.error(...i)};console.warn=(...i)=>{dzi(vM.WARN,"WARN",i),hzi.warn(...i)};console.debug=(...i)=>{dzi(vM.DEBUG,"DEBUG",i),hzi.debug(...i)}});function SN(){try{return process.memoryUsage()}catch{return null}}import{Session as tXt}from"inspector";function KN(i,u){return new Promise((t,f)=>HL.post(i,u,(l,c)=>l?f(l):t(c??{})))}async function fbu(i){try{return HL=new tXt,HL.connect(),await KN("Profiler.enable"),await KN("Profiler.setSamplingInterval",{interval:i}),await KN("Profiler.start"),bL=!0,!0}catch{return bL=!1,HL=null,!1}}function fXt(i,u){let{nodes:t,samples:f,timeDeltas:l}=i;if(!f?.length)return null;let c=new Map,E=new Map;for(let N of t){c.set(N.id,N);for(let O of N.children??[])E.set(O,N.id)}let $=Math.max(1,u)*1000,w=0,d=new Map;for(let N=f.length-1;N>=0;N--){w+=l[N]??0;let O=f[N];if(O!==void 0)d.set(O,(d.get(O)??0)+1);if(w>=$)break}let h=-1,_=0;for(let[N,O]of d)if(O>_)_=O,h=N;if(h<0)return null;let v=[],D=new Set,n=h;while(n!=null&&!D.has(n)){D.add(n);let N=c.get(n);if(!N)break;let O=N.callFrame,y=O.url?` ${O.url}:${O.lineNumber+1}`:"";v.push(`${O.functionName||"(anonymous)"}${y}`),n=E.get(n)}return v}async function lbu(i){if(!bL||!HL||RL)return null;RL=!0;try{let{profile:u}=await KN("Profiler.stop"),t=u?fXt(u,i):null;return await KN("Profiler.start"),t}catch{return bL=!1,null}finally{RL=!1}}async function cbu(){if(!bL||!HL||RL)return;RL=!0;try{await KN("Profiler.stop"),await KN("Profiler.start")}catch{bL=!1}finally{RL=!1}}var HL=null,bL=!1,RL=!1;var Ebu=()=>{};function wbu(){if(vzi)return;let i=performance.now()+Dzi;vzi=setInterval(()=>{let u=performance.now();$bu=Math.max(0,u-i),i=u+Dzi},Dzi),vzi.unref?.()}function dbu(){return wbu(),$bu}function hbu(){if(wbu(),process.env.EVENT_LOOP_MONITOR!=="1")return()=>{};let i=Number(process.env.EVENT_LOOP_INTERVAL_MS??250),u=Number(process.env.EVENT_LOOP_SPIKE_MS??100),t=process.env.EVENT_LOOP_PROFILE==="1",f=Number(process.env.EVENT_LOOP_PROFILE_MS??1000),l=Number(process.env.EVENT_LOOP_PROFILE_INTERVAL_US??1e4),c=30000,E=performance.now();if(t)fbu(l).then((d)=>{console.warn(JSON.stringify({msg:"event-loop-profiler",status:d?"started":"unavailable",intervalUs:l}))});let $=Bt.createHistogram("eventloop.delay",{description:"Event-loop lag measured as timer scheduling drift",unit:"ms"}),w=performance.now()+i;return Bli=setInterval(()=>{let d=performance.now(),h=Math.max(0,d-w);if(w=d+i,$.record(h),h>u){let _=SN();console.warn(JSON.stringify({msg:"event-loop-stall",ts:new Date().toISOString(),lagMs:Math.round(h),rss:_?.rss,heapUsed:_?.heapUsed,heapTotal:_?.heapTotal,external:_?.external}))}if(t){if(h>f)lbu(Math.round(h)).then((_)=>{if(_?.length)console.warn(JSON.stringify({msg:"event-loop-stall-profile",ts:new Date().toISOString(),lagMs:Math.round(h),stack:_}))}),E=d;else if(d-E>c)cbu(),E=d}},i),Bli.unref?.(),()=>{if(Bli)clearInterval(Bli)}}var Bli,vzi,$bu=0,Dzi=500;var nzi=g(()=>{jl();Ebu()});var ybu={};Ji(ybu,{withSslmode:()=>gzi,getDbDialect:()=>nM,getDb:()=>Ft,getDatabaseUrl:()=>un,createDatabase:()=>Obu,closeDatabase:()=>tn});import{Kysely as lXt,PostgresDialect as Dbu}from"kysely";import{Pool as nbu}from"pg";function wXt(i){let u=i.connect.bind(i);return i.connect=(t)=>{if(typeof t==="function")return u(t);let f=performance.now(),l=Fli(),c=i.idleCount===0&&i.totalCount>=l,E=i.idleCount;return u().then(($)=>{let w=performance.now()-f;if(_bu().record(w,{"db.pool.outcome":c?"contended":"available"}),w>EXt)if(c)console.error("Slow db pool acquire \u2014 pool saturated:",{waitMs:w,total:i.totalCount,idle:i.idleCount,waiting:i.waitingCount,max:l});else console.warn("Slow db pool acquire \u2014 event-loop lag (not pool):",{waitMs:w,idleAtStart:E,total:i.totalCount,max:l});return $},($)=>{throw _bu().record(performance.now()-f,{"db.pool.outcome":"error"}),$})},i}function Nbu(){try{return yu().databasePgSsl}catch{return!1}}function Fli(){try{return yu().databasePoolMax}catch{return 10}}function dXt(i){let u=wXt(new nbu({connectionString:i,max:Fli(),ssl:Nbu(),...gbu})),t=new Dbu({pool:u});return{type:"postgres",db:new lXt({dialect:t,log:$Xt(u)}),pool:u}}function un(){return yu().databaseUrl}function gzi(i,u){if(!u)return i;let t=new URL(i);if(!t.searchParams.has("sslmode"))t.searchParams.set("sslmode","verify-full");return t.toString()}function nM(i){let u=i||un();return new Dbu({pool:new nbu({connectionString:u,max:Fli(),ssl:Nbu(),...gbu})})}function Obu(i){let u=i||un();return dXt(u)}async function tn(i){if(await i.db.destroy(),!i.pool.ended)await i.pool.end();if(i===DM)DM=null}function Ft(){if(!DM)DM=Obu(un());return DM}var cXt=()=>Bt.createHistogram("db.query.duration",{description:"Database query execution duration in milliseconds",unit:"ms"}),_bu=()=>Bt.createHistogram("db.pool.acquire.duration",{description:"Time spent waiting to acquire a connection from the pool",unit:"ms"}),vbu=400,EXt=100,$Xt=(i)=>(u)=>{let t={"db.statement":u.query.sql,"db.status":u.level==="error"?"error":"success"};if(u.queryDurationMillis>vbu){let f=dbu(),l=f>vbu/2;console.error(l?"Slow query measurement \u2014 likely event-loop lag, not slow SQL:":"Slow query detected:",{durationMs:u.queryDurationMillis,eventLoopLagMs:Math.round(f),sql:u.query.sql,pool:{total:i.totalCount,idle:i.idleCount,waiting:i.waitingCount,max:Fli()}})}if(cXt().record(u.queryDurationMillis,t),u.level==="error")console.error("Query failed:",{durationMs:u.queryDurationMillis,error:u.error,sql:u.query.sql})},gbu,DM=null;var cE=g(()=>{vt();jl();nzi();gbu={keepAlive:!0,keepAliveInitialDelayMillis:1e4,idleTimeoutMillis:300000,connectionTimeoutMillis:30000,allowExitOnIdle:!0}});function Tbu(i){let{port:u,query:t}=i,{protocol:f,path:l,hostname:c}=i;if(f&&f.slice(-1)!==":")f+=":";if(u)c+=`:${u}`;if(l&&l.charAt(0)!=="/")l=`/${l}`;let E=t?Zbu.buildQueryString(t):"";if(E&&E[0]!=="?")E=`?${E}`;let $="";if(i.username!=null||i.password!=null){let d=i.username??"",h=i.password??"";$=`${d}:${h}@`}let w="";if(i.fragment)w=`#${i.fragment}`;return`${f}//${$}${c}${l}${E}${w}`}var Zbu;var Bbu=g(()=>{Zbu=G(vui(),1)});var Fbu="UNSIGNED-PAYLOAD",Ubu="X-Amz-Content-Sha256";class Uli{signer;constructor(i){let u={service:i.signingName||i.service||"s3",uriEscapePath:i.uriEscapePath||!1,applyChecksum:i.applyChecksum||!1,...i};this.signer=new Pbu.SignatureV4MultiRegion(u)}presign(i,{unsignableHeaders:u=new Set,hoistableHeaders:t=new Set,unhoistableHeaders:f=new Set,...l}={}){return this.prepareRequest(i,{unsignableHeaders:u,unhoistableHeaders:f,hoistableHeaders:t}),this.signer.presign(i,{expiresIn:900,unsignableHeaders:u,unhoistableHeaders:f,...l})}presignWithCredentials(i,u,{unsignableHeaders:t=new Set,hoistableHeaders:f=new Set,unhoistableHeaders:l=new Set,...c}={}){return this.prepareRequest(i,{unsignableHeaders:t,unhoistableHeaders:l,hoistableHeaders:f}),this.signer.presignWithCredentials(i,u,{expiresIn:900,unsignableHeaders:t,unhoistableHeaders:l,...c})}prepareRequest(i,{unsignableHeaders:u=new Set,unhoistableHeaders:t=new Set,hoistableHeaders:f=new Set}={}){u.add("content-type"),Object.keys(i.headers).map(($)=>$.toLowerCase()).filter(($)=>$.startsWith("x-amz-server-side-encryption")).forEach(($)=>{if(!f.has($))t.add($)}),i.headers[Ubu]=Fbu;let l=i.headers.host,c=i.port,E=`${i.hostname}${i.port!=null?":"+c:""}`;if(!l||l===i.hostname&&i.port!=null)i.headers.host=E}}var Pbu;var Nzi=g(()=>{Pbu=G(iL(),1)});var Abu,Ibu,Pli=async(i,u,t={})=>{let f,l;if(typeof i.config.endpointProvider==="function"){let v=(await Abu.getEndpointFromInstructions(u.input,u.constructor,i.config)).properties?.authSchemes?.[0];if(v?.name==="sigv4a")l=v?.signingRegionSet?.join(",");else l=v?.signingRegion;f=new Uli({...i.config,signingName:v?.signingName,region:async()=>l})}else f=new Uli(i.config);let c=(_,v)=>async(D)=>{let{request:n}=D;if(!Ibu.HttpRequest.isInstance(n))throw Error("Request to be presigned is not an valid HTTP request.");delete n.headers["amz-sdk-invocation-id"],delete n.headers["amz-sdk-request"],delete n.headers["x-amz-user-agent"];let N,O={...t,signingRegion:t.signingRegion??v.signing_region??l,signingService:t.signingService??v.signing_service};if(v.s3ExpressIdentity)N=await f.presignWithCredentials(n,v.s3ExpressIdentity,O);else N=await f.presign(n,O);return{response:{},output:{$metadata:{httpStatusCode:200},presigned:N}}},E="presignInterceptMiddleware",$=i.middlewareStack.clone();$.addRelativeTo(c,{name:E,relation:"before",toMiddleware:"awsAuthMiddleware",override:!0});let w=u.resolveMiddleware($,i.config,{}),{output:d}=await w({input:u.input}),{presigned:h}=d;return Tbu(h)};var xbu=g(()=>{Bbu();Nzi();Abu=G(nu(),1),Ibu=G(m4(),1)});var kbu=g(()=>{xbu();Nzi()});import{extname as hXt}from"path";function iv(i){let u;try{u=decodeURIComponent(i)}catch{u=i}let f=u.replace(/\0/g,"").replace(/[\x00-\x1f\x7f]/g,"").replace(/\\/g,"/").split("/"),l=[];for(let c of f)if(c==="..")l.pop();else if(c!=="."&&c!=="")l.push(c);return l.join("/")}function fn(i,u){let t=iv(u);if(!t)throw Error("Key is empty after sanitization");return`${i}/${t}`}function Gbu(i,u){if(!u)return`${i}/`;let t=iv(u);return`${i}/${t}${t.endsWith("/")?"":"/"}`}function CL(i,u,t){let f=t.split("/").map(encodeURIComponent).join("/");return`${i}/api/${encodeURIComponent(u)}/files/${f}`}function Ozi(i,u){let t=`${i}/`;if(u.startsWith(t))return u.slice(t.length);return u}function zc(i){let u=hXt(i).toLowerCase();return _Xt[u]??"application/octet-stream"}function Ali(i){let u=i.split(";")[0].trim();if(vXt.has(u))return!0;if(u.startsWith("text/"))return!0;return!1}var _Xt,vXt;var uv=g(()=>{_Xt={".json":"application/json",".html":"text/html",".htm":"text/html",".css":"text/css",".js":"application/javascript",".mjs":"application/javascript",".ts":"text/typescript",".txt":"text/plain",".md":"text/markdown",".csv":"text/csv",".xml":"application/xml",".svg":"image/svg+xml",".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".gif":"image/gif",".webp":"image/webp",".pdf":"application/pdf",".zip":"application/zip",".gz":"application/gzip",".tar":"application/x-tar",".wasm":"application/wasm",".yaml":"application/yaml",".yml":"application/yaml",".toml":"application/toml"};vXt=new Set(["application/json","text/html","text/css","application/javascript","text/typescript","text/plain","text/markdown","text/csv","application/xml","image/svg+xml","application/yaml","application/toml"])});class yzi{client;bucket;constructor(i){this.bucket=i.bucket,this.client=new lE({endpoint:i.endpoint,region:i.region,credentials:{accessKeyId:i.accessKeyId,secretAccessKey:i.secretAccessKey},forcePathStyle:i.forcePathStyle})}async getBytesOrPresign(i,u,t){let f=fn(i,u),l=await this.client.send(new hh({Bucket:this.bucket,Key:f})),c=l.ContentLength??0,E=l.ContentType??zc(u);if(c>t.presignWhenLargerThan){let h=await Pli(this.client,new ZD({Bucket:this.bucket,Key:f}),{expiresIn:t.presignExpiresIn??3600});return{error:"FILE_TOO_LARGE",size:c,maxInlineSize:t.presignWhenLargerThan,presignedUrl:h,contentType:E}}let w=await(await this.client.send(new ZD({Bucket:this.bucket,Key:f}))).Body.transformToByteArray(),d=Ali(E);return{content:d?new TextDecoder().decode(w):Buffer.from(w).toString("base64"),contentType:E,encoding:d?"utf-8":"base64",size:c,lastModified:l.LastModified,etag:l.ETag}}async getBytes(i,u){let t=fn(i,u);return(await this.client.send(new ZD({Bucket:this.bucket,Key:t}))).Body.transformToByteArray()}async put(i,u,t,f){let l=fn(i,u),c=f?.contentType??zc(u);return{etag:(await this.client.send(new p_({Bucket:this.bucket,Key:l,Body:typeof t==="string"?Buffer.from(t,"utf-8"):t,ContentType:c}))).ETag,key:u}}async list(i,u){let t=Gbu(i,u?.prefix),f=await this.client.send(new zw({Bucket:this.bucket,Prefix:t,MaxKeys:u?.maxKeys??1000,ContinuationToken:u?.continuationToken,Delimiter:u?.delimiter})),l=f.CommonPrefixes?.map((c)=>Ozi(i,c.Prefix??"")).filter(Boolean);return{objects:(f.Contents??[]).map((c)=>({key:Ozi(i,c.Key??""),size:c.Size??0,lastModified:c.LastModified,etag:c.ETag})),isTruncated:f.IsTruncated??!1,nextContinuationToken:f.NextContinuationToken,commonPrefixes:l&&l.length>0?l:void 0}}async delete(i,u){let t=fn(i,u);await this.client.send(new IL({Bucket:this.bucket,Key:t}))}async head(i,u){let t=fn(i,u),f=await this.client.send(new hh({Bucket:this.bucket,Key:t}));return{contentType:f.ContentType??zc(u),size:f.ContentLength??0,lastModified:f.LastModified,etag:f.ETag}}async presignedGetUrl(i,u,t=3600,f){let l=fn(i,u);return Pli(this.client,new ZD({Bucket:this.bucket,Key:l}),{expiresIn:t})}async presignedPutUrl(i,u,t=3600,f){let l=fn(i,u);return Pli(this.client,new p_({Bucket:this.bucket,Key:l,ContentType:f}),{expiresIn:t})}}var jbu=g(()=>{sC();kbu();uv()});function DXt(){let i=yu();return!!(i.s3Endpoint&&i.s3Bucket&&i.s3AccessKeyId&&i.s3SecretAccessKey)}function ME(){if(gM!==void 0)return gM;if(!DXt())return gM=null,null;let i=yu();return gM=new yzi({endpoint:i.s3Endpoint,bucket:i.s3Bucket,region:i.s3Region,accessKeyId:i.s3AccessKeyId,secretAccessKey:i.s3SecretAccessKey,forcePathStyle:i.s3ForcePathStyle}),gM}var gM;var ln=g(()=>{vt();jbu()});function bw(i,u){return{getBytesOrPresign:(t,f)=>i.getBytesOrPresign(u,t,f),getBytes:(t)=>i.getBytes(u,t),put:(t,f,l)=>i.put(u,t,f,l),list:(t)=>i.list(u,t),delete:(t)=>i.delete(u,t),head:(t)=>i.head(u,t),presignedGetUrl:(t,f,l)=>i.presignedGetUrl(u,t,f,l),presignedPutUrl:(t,f,l)=>i.presignedPutUrl(u,t,f,l)}}import{createHash as nXt}from"crypto";function Sbu(i){let u=i;while(u?.[Ili])u=u[Ili];return u}function OM(i){let{objectStorage:u,baseUrl:t,orgSlug:f,prefix:l="connection-icons",maxBytes:c=NXt,dryRun:E=!1}=i;return async($)=>{if(typeof $!=="string")return $;let w=$.match(gXt);if(!w)return $;if(!u||!f)return $;let[,d,h]=w,_=d.toLowerCase(),v=yXt[_];if(!v)return $;if(Math.floor(h.length*3/4)>c)return console.warn(`[asset-hoister] asset exceeds ${c} bytes, keeping inline`),$;let D=Buffer.from(h,"base64"),n=nXt("sha256").update(D).digest("hex"),N=`${l}/${n}.${v}`;if(E)return CL(t,f,N);try{return await u.put(N,D,{contentType:_}),CL(t,f,N)}catch(O){return console.error("[asset-hoister] upload failed, keeping inline asset:",O),$}}}async function xli(i,u,t=0){if(t>OXt)return i;if(typeof i==="string")return await u(i)??i;if(Array.isArray(i)){let f=await Promise.all(i.map((l)=>xli(l,u,t+1)));return f.some((l,c)=>l!==i[c])?f:i}if(i!==null&&typeof i==="object"){let f=Object.entries(i),l=await Promise.all(f.map(([,$])=>xli($,u,t+1))),c=!1,E={};return f.forEach(([$,w],d)=>{if(E[$]=l[d],l[d]!==w)c=!0}),c?E:i}return i}function kli(i,u){return xli(i,u)}async function NM(i,u){let t={...i};if(typeof t.icon==="string")t.icon=await u(t.icon);if(t.metadata!==null&&typeof t.metadata==="object")t.metadata=await xli(t.metadata,u);return t}function ZXt(i,u){return new Proxy(i,{get(t,f,l){if(f===Ili)return t;if(f==="create")return async(E)=>t.create(await NM(E,u));if(f==="createNew")return async(E)=>t.createNew(await NM(E,u));if(f==="update")return async(E,$)=>t.update(E,await NM($,u));let c=Reflect.get(t,f,l);return typeof c==="function"?c.bind(t):c}})}function TXt(i,u){return new Proxy(i,{get(t,f,l){if(f===Ili)return t;if(f==="create")return async(E,$,w,d)=>t.create(E,$,await NM(w,u),d);if(f==="update")return async(E,$,w)=>t.update(E,$,await NM(w,u));let c=Reflect.get(t,f,l);return typeof c==="function"?c.bind(t):c}})}function Zzi(i,u){let t=OM(u);if(Kbu(i.connections))i.connections=ZXt(Sbu(i.connections),t);if(Kbu(i.virtualMcps))i.virtualMcps=TXt(Sbu(i.virtualMcps),t)}function Kbu(i){return i!==null&&typeof i==="object"}var gXt,NXt=5242880,OXt=64,Ili,yXt;var Gli=g(()=>{uv();gXt=/^data:((?:image|audio|video)\/[^;,]+)(?:;[^,]+)?;base64,(.+)$/is,Ili=Symbol("assetHoistingTarget"),yXt={"image/png":"png","image/jpeg":"jpg","image/gif":"gif","image/webp":"webp","image/x-icon":"ico","image/vnd.microsoft.icon":"ico","audio/mpeg":"mp3","audio/mp4":"m4a","audio/wav":"wav","audio/x-wav":"wav","audio/ogg":"ogg","audio/webm":"weba","audio/aac":"aac","video/mp4":"mp4","video/webm":"webm","video/ogg":"ogv","video/quicktime":"mov"}});function w1(){let i=yu();if(i.baseUrl)return i.baseUrl;return`http://localhost:${i.port??3000}`}function jli(){return`http://localhost:${yu().port??3000}`}function Dh(){return process.env.MESH_PUBLIC_URL??w1()}var n6=g(()=>{vt()});var Jbu={};Ji(Jbu,{backfillThreadAssetsCommand:()=>BXt});import{sql as Tzi}from"kysely";async function BXt(i){let{dryRun:u,batch:t}=i,f=i.baseUrl??w1(),l=ME();if(!l)return console.error("[backfill-assets] Object storage (S3) is not configured \u2014 cannot hoist "+"inline media. Set S3_ENDPOINT/S3_BUCKET/S3_ACCESS_KEY_ID/S3_SECRET_ACCESS_KEY and retry."),1;if(/^https?:\/\/localhost(:|\/|$)/.test(f))console.warn(`[backfill-assets] base URL resolves to "${f}" \u2014 set BASE_URL `+"(or pass --base-url) to the public origin, or stored media URLs will be wrong.");let c=Ft(),{db:E}=c,$;if(i.org){let N=await E.selectFrom("organization").select(["id","slug"]).where((O)=>O.or([O("id","=",i.org),O("slug","=",i.org)])).executeTakeFirst();if(!N)return console.error(`[backfill-assets] org "${i.org}" not found (slug or id).`),await tn(c).catch(()=>{}),1;$=N.id,console.log(`[backfill-assets] scoped to org ${N.slug??N.id} (${N.id})`)}console.log(`[backfill-assets] starting${u?" (dry-run)":""} \u2014 target=${i.target} baseUrl=${f} batch=${t}${i.limit?` limit=${i.limit}`:""}`);let w=new Map,d=(N,O,y)=>{let Z=`${y}\x00${N}`,T=w.get(Z);if(T)return T;let B=OM({objectStorage:bw(l,N),baseUrl:f,orgSlug:O??void 0,prefix:y,dryRun:u});return w.set(Z,B),B},h=async(N,O,y,Z)=>{let T="";for(;;){let B=i.limit?i.limit-y.scanned:1/0;if(B<=0)break;let F=await N(T,Math.min(t,B));if(F.length===0)break;for(let A of F)T=A.id,y.scanned++,await O(A);console.log(`[backfill-assets] ${Z}: scanned=${y.scanned} ${u?"would-change":"changed"}=${y.changed} errors=${y.errors} cursor=${T}`)}},_={scanned:0,changed:0,errors:0},v={scanned:0,changed:0,errors:0},D={scanned:0,changed:0,errors:0};try{if(i.target==="all"||i.target==="threads")await h((N,O)=>E.selectFrom("thread_messages as tm").innerJoin("threads as t","t.id","tm.thread_id").innerJoin("organization as o","o.id","t.organization_id").select(["tm.id as id",Tzi`tm.parts`.as("parts"),Tzi`tm.metadata`.as("metadata"),"t.organization_id as orgId","o.slug as orgSlug"]).where("tm.id",">",N).$if(!!$,(y)=>y.where("t.organization_id","=",$)).orderBy("tm.id","asc").limit(O).execute(),async(N)=>{try{if(!yM(N.parts)&&!yM(N.metadata))return;let O=d(N.orgId,N.orgSlug,"thread-assets"),y=JSON.parse(N.parts),Z=await kli(y,O),T=Z!==y,B=N.metadata!==null?JSON.parse(N.metadata):null,F=await kli(B,O),A=F!==B;if(!T&&!A)return;if(_.changed++,u)return;await E.updateTable("thread_messages").set({parts:T?JSON.stringify(Z):N.parts,metadata:A?JSON.stringify(F):N.metadata}).where("id","=",N.id).execute()}catch(O){_.errors++,console.error(`[backfill-assets] thread_message ${N.id} failed, skipping:`,O)}},_,"threads");if(i.target==="all"||i.target==="connections")await h((N,O)=>E.selectFrom("connections as c").innerJoin("organization as o","o.id","c.organization_id").select(["c.id as id","c.icon as icon",Tzi`c.metadata`.as("metadata"),"c.organization_id as orgId","o.slug as orgSlug"]).where("c.id",">",N).$if(!!$,(y)=>y.where("c.organization_id","=",$)).orderBy("c.id","asc").limit(O).execute(),async(N)=>{try{if(!yM(N.icon)&&!yM(N.metadata))return;let O=d(N.orgId,N.orgSlug,"connection-icons"),y=N.icon!==null?await O(N.icon):N.icon,Z=y!==N.icon,T=N.metadata!==null?JSON.parse(N.metadata):null,B=await kli(T,O),F=B!==T;if(!Z&&!F)return;if(v.changed++,u)return;await E.updateTable("connections").set({icon:Z?y??null:N.icon,metadata:F?JSON.stringify(B):N.metadata}).where("id","=",N.id).execute()}catch(O){v.errors++,console.error(`[backfill-assets] connection ${N.id} failed, skipping:`,O)}},v,"connections");if(i.target==="all"||i.target==="organizations")await h((N,O)=>E.selectFrom("organization as o").select(["o.id as id","o.logo as logo","o.slug as orgSlug"]).where("o.id",">",N).$if(!!$,(y)=>y.where("o.id","=",$)).orderBy("o.id","asc").limit(O).execute(),async(N)=>{try{if(!yM(N.logo))return;let y=await d(N.id,N.orgSlug,"org-logos")(N.logo);if(y===N.logo)return;if(D.changed++,u)return;await E.updateTable("organization").set({logo:y??null}).where("id","=",N.id).execute()}catch(O){D.errors++,console.error(`[backfill-assets] organization ${N.id} failed, skipping:`,O)}},D,"organizations")}finally{await tn(c).catch(()=>{})}let n=u?"would-change":"changed";return console.log("[backfill-assets] done \u2014 "+`threads(scanned=${_.scanned} ${n}=${_.changed} errors=${_.errors}) connections(scanned=${v.scanned} ${n}=${v.changed} errors=${v.errors}) organizations(scanned=${D.scanned} ${n}=${D.changed} errors=${D.errors})`),_.errors+v.errors+D.errors>0?1:0}var yM=(i)=>i!==null&&(i.includes("data:image/")||i.includes("data:audio/")||i.includes("data:video/"));var Xbu=g(()=>{cE();ln();Gli();n6()});async function Lbu(i){let u,t,f=new Promise((E,$)=>{u=E,t=$});f.catch(()=>{});let l=!1,c=Bun.serve({port:i.port??0,hostname:"127.0.0.1",fetch(E){if(l)return new Response("",{status:204});let $=new URL(E.url),w=$.searchParams.get("code");if($.searchParams.get("state")!==i.expectedState)return l=!0,t(Error("OAuth state mismatch")),new Response("State mismatch \u2014 close this tab.",{status:400});if(!w)return l=!0,t(Error("OAuth callback missing code")),new Response("Missing code \u2014 close this tab.",{status:400});return l=!0,u({code:w}),new Response(null,{status:302,headers:{location:i.successRedirectUrl}})}});return{url:`http://127.0.0.1:${c.port}`,waitForCallback:()=>f,close:()=>c.stop(!0)}}import{createHash as FXt,randomBytes as UXt}from"crypto";function Ybu(){let i=Wbu(UXt(32)),u=Wbu(FXt("sha256").update(i).digest());return{verifier:i,challenge:u}}function Wbu(i){return i.toString("base64").replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}var Qbu=()=>{};import{chmod as PXt,mkdir as AXt,readdir as IXt,readFile as xXt,rename as kXt,rm as zbu,writeFile as GXt}from"fs/promises";import{dirname as jXt,join as Fzi}from"path";function Sli(i,u){if(!u)return Fzi(i,"session.json");return Fzi(i,`session.${SXt(u)}.json`)}function SXt(i){let u=i;try{u=new URL(i).host}catch{}return u.replace(/[^a-zA-Z0-9.-]/g,"_")||"default"}async function Bzi(i){try{let u=await xXt(i,"utf8"),t=JSON.parse(u);if(!KXt(t))return null;return t}catch{return null}}async function Hbu(i){try{return(await IXt(i)).filter((t)=>/^session(\..+)?\.json$/.test(t)).map((t)=>Fzi(i,t))}catch{return[]}}async function Kli(i,u){let t=await Bzi(Sli(i,u));if(t)return t;if(u)return Bzi(Sli(i));for(let f of await Hbu(i)){let l=await Bzi(f);if(l)return l}return null}async function ML(i,u){let t=Sli(i,u.target);await AXt(jXt(t),{recursive:!0});let f=`${t}.tmp`;await GXt(f,JSON.stringify(u,null,2),{mode:384}),await PXt(f,384),await kXt(f,t)}async function Rbu(i,u){if(u){await zbu(Sli(i,u),{force:!0});return}for(let t of await Hbu(i))await zbu(t,{force:!0})}function KXt(i){if(!i||typeof i!=="object")return!1;let u=i;if(typeof u.target!=="string"||typeof u.clientId!=="string"||typeof u.accessToken!=="string"||typeof u.createdAt!=="string")return!1;if(!u.user||typeof u.user!=="object")return!1;if(typeof u.user.sub!=="string")return!1;return!0}var ZM=()=>{};var bbu={};Ji(bbu,{performInteractiveLogin:()=>Jli,loginCommand:()=>YXt});import{spawn as JXt}from"child_process";import{randomUUID as XXt}from"crypto";async function Jli(i={}){let u=(i.target??LXt).replace(/\/$/,""),t=i.fetch??fetch,f=i.openBrowser??RXt,l=XXt(),c=Ybu(),E=await Lbu({expectedState:l,successRedirectUrl:`${u}/cli/auth-success`});try{let $=`${E.url}/`,w=await QXt(t,u,$),d=new URLSearchParams({client_id:w,redirect_uri:$,response_type:"code",state:l,scope:WXt,code_challenge:c.challenge,code_challenge_method:"S256"}),h=`${u}/login?${d.toString()}`;console.log(`Opening ${h} in your browser...`),await f(h);let{code:_}=await E.waitForCallback(),v=await zXt(t,u,w,_,$,c.verifier);if(!v.id_token)throw Error("Token endpoint returned no id_token");let D=HXt(v.id_token);return{target:u,clientId:w,user:{sub:D.sub,email:D.email,name:D.name},accessToken:v.access_token,refreshToken:v.refresh_token,expiresAt:v.expires_in?Math.floor(Date.now()/1000)+v.expires_in:void 0,createdAt:new Date().toISOString()}}finally{E.close()}}async function YXt(i){try{let u=await Jli({target:i.target,openBrowser:i.openBrowser,fetch:i.fetch});return await ML(i.dataDir,u),console.log(`Logged in as ${u.user.email??u.user.sub}.`),0}catch(u){return console.error(`Login failed: ${u instanceof Error?u.message:String(u)}`),1}}async function QXt(i,u,t){let f=await i(`${u}/api/auth/mcp/register`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({client_name:"decocms-cli",redirect_uris:[t],grant_types:["authorization_code","refresh_token"],response_types:["code"],token_endpoint_auth_method:"none",application_type:"native"})});if(!f.ok)throw Error(`Client registration failed: HTTP ${f.status} ${await f.text().catch(()=>"")}`);let l=await f.json();if(typeof l?.client_id!=="string")throw Error("Client registration returned no client_id");return l.client_id}async function zXt(i,u,t,f,l,c){let E=new URLSearchParams({grant_type:"authorization_code",code:f,redirect_uri:l,client_id:t,code_verifier:c}),$=await i(`${u}/api/auth/mcp/token`,{method:"POST",headers:{"content-type":"application/x-www-form-urlencoded"},body:E.toString()});if(!$.ok)throw Error(`Token exchange failed: HTTP ${$.status} ${await $.text().catch(()=>"")}`);let w=await $.json();if(typeof w?.access_token!=="string")throw Error("Token endpoint returned no access_token");return w}function HXt(i){let u=i.split(".");if(u.length!==3||!u[1])throw Error("id_token is not a valid JWT");let t=JSON.parse(Buffer.from(u[1],"base64url").toString("utf8"));if(typeof t.sub!=="string")throw Error("id_token has no sub claim");return{sub:t.sub,email:typeof t.email==="string"?t.email:void 0,name:typeof t.name==="string"?t.name:void 0}}async function RXt(i){let u,t;switch(process.platform){case"darwin":u="open",t=[i];break;case"win32":u="cmd",t=["/c","start","",i];break;default:u="xdg-open",t=[i];break}await new Promise((f)=>{let l=JXt(u,t,{stdio:"ignore",detached:!0});l.on("error",()=>{console.log(`Could not open browser automatically. Please open this URL manually:
180
180
  ${i}`),f()}),l.on("spawn",()=>{l.unref(),f()})})}var LXt="https://studio.decocms.com",WXt="openid profile email offline_access";var Uzi=g(()=>{Qbu();ZM()});async function Cbu(i,u=fetch,t=Date.now){if(!i.refreshToken)throw new u3("invalid_grant","Session has no refresh token");let f=new URLSearchParams({grant_type:"refresh_token",refresh_token:i.refreshToken,client_id:i.clientId}),l;try{l=await u(`${i.target}/api/auth/mcp/token`,{method:"POST",headers:{"content-type":"application/x-www-form-urlencoded"},body:f.toString()})}catch(E){throw new u3("transient",E instanceof Error?E.message:String(E))}if(!l.ok){let E=await l.text().catch(()=>"");if(l.status>=400&&l.status<500)throw new u3("invalid_grant",`HTTP ${l.status} ${E}`);throw new u3("transient",`HTTP ${l.status} ${E}`)}let c=await l.json();if(typeof c.access_token!=="string")throw new u3("transient","Token endpoint returned no access_token");return{...i,accessToken:c.access_token,refreshToken:c.refresh_token??i.refreshToken,expiresAt:c.expires_in?Math.floor(t()/1000)+c.expires_in:i.expiresAt}}var u3;var Xli=g(()=>{u3=class u3 extends Error{kind;constructor(i,u){super(u);this.name="RefreshFailedError",this.kind=i}}});async function cn(i){let u=await Kli(i.dataDir,i.target);if(!u)return null;let t=i.now??Date.now;if(!CXt(u,t()))return u;try{let f=await Cbu(u,i.fetch,t);return await ML(i.dataDir,f),f}catch(f){if(f instanceof u3&&f.kind==="invalid_grant")return null;throw f}}function CXt(i,u){if(i.expiresAt===void 0)return!1;let t=Math.floor(u/1000);return i.expiresAt-bXt<t}var bXt=60;var TM=g(()=>{Xli();ZM()});var Mbu={};Ji(Mbu,{whoamiCommand:()=>MXt});async function MXt(i){let u;try{u=await cn({dataDir:i.dataDir,fetch:i.fetch,now:i.now})}catch(t){if(t instanceof u3&&t.kind==="transient")return console.error(`Could not refresh session: ${t.message}. Run \`decocms auth login\` to authenticate.`),1;throw t}if(!u)return console.error("Not logged in. Run `decocms auth login` to authenticate."),1;return console.log(`Target: ${u.target}`),console.log(`User: ${u.user.email??u.user.sub}`),0}var qbu=g(()=>{TM();Xli()});var Vbu={};Ji(Vbu,{logoutCommand:()=>qXt});async function qXt(i){if(!await Kli(i.dataDir))return console.log("Already logged out."),0;return await Rbu(i.dataDir),console.log("Logged out."),0}var rbu=g(()=>{ZM()});async function Lli(i){let u=i.isInteractive??Boolean(process.stdout.isTTY),t;try{t=await cn({dataDir:i.dataDir,target:i.target,fetch:i.fetch,now:i.now})}catch(l){if(l instanceof u3&&l.kind==="transient")throw Error(`Could not refresh session: ${l.message}. Run \`decocms auth login\` to sign in again.`);throw l}if(t&&i.target&&u&&!VXt(t.target,i.target))t=null;if(t)return t;if(!u)throw Error("No session found. Run `decocms auth login` first, then re-run the command.");console.log(`Not logged in \u2014 opening browser to sign in to ${i.intent}.`);let f=await Jli({target:i.target,openBrowser:i.openBrowser,fetch:i.fetch});return await ML(i.dataDir,f),console.log(`Logged in as ${f.user.email??f.user.sub}.`),f}function VXt(i,u){try{return new URL(i).host===new URL(u).host}catch{return i===u}}var Pzi=g(()=>{Uzi();TM();Xli();ZM()});function nh(i){let u=i?.userName?.trim();if(!u||mbu.test(u))return null;let t=i?.userEmail?.trim();if(!t||mbu.test(t))return{userName:u};if(!rXt.test(t))return{userName:u};return{userName:u,userEmail:t}}var mbu,rXt;var Wli=g(()=>{mbu=/[\r\n<>]/,rXt=/^[^\s@<>]+@[^\s@<>]+\.[^\s@<>]+$/});var BM=g(()=>{O4();Wli()});async function Qli(i){try{let u=await fetch(`${i}/health`,{signal:AbortSignal.timeout(mXt)});if(!u.ok)return null;let t=await u.json();if(typeof t==="object"&&t!==null&&typeof t.bootId==="string"&&typeof t.ready==="boolean"&&t.setup&&typeof t.setup.running==="boolean"&&typeof t.setup.done==="boolean")return t;return null}catch{return null}}async function zli(i){for(let u=0;u<ebu;u++){if(await Qli(i)!==null)return;let t=(Math.random()*2-1)*eXt;await N0(abu+t)}throw Error(`sandbox daemon at ${i} did not respond on /health within ${ebu*abu/1000}s`)}async function En(i,u,t,f,l){return aXt(i,u,"POST",t,f,l)}async function aXt(i,u,t,f,l,c){let E={...f};if(l&&l.rotateToken!==void 0)E.auth=l;let $=await fetch(`${i}/_sandbox/config`,{method:t,headers:{"Content-Type":"application/json",Authorization:`Bearer ${u}`},body:JSON.stringify(E),signal:AbortSignal.timeout(c?.timeoutMs??obu)}),w=await $.text();if(!$.ok)throw new Yli($.status,w);return JSON.parse(w)}async function sbu(i,u,t){let f=await fetch(`${i}/_sandbox/orgfs-config`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${u}`},body:t,signal:AbortSignal.timeout(obu)}),l=await f.text();if(!f.ok)throw Error(`sandbox daemon /_sandbox/orgfs-config returned ${f.status}: ${l}`);return JSON.parse(l)}async function FM(i,u,t,f){let l=new Headers(f.headers);for(let $ of oXt)l.delete($);l.set("authorization",`Bearer ${u}`);let c=f.method!=="GET"&&f.method!=="HEAD",E=`${i}${t.startsWith("/")?t:`/${t}`}`;return fetch(E,{method:f.method,headers:l,body:c?f.body:void 0,redirect:"manual",signal:f.signal,duplex:c?"half":void 0})}var Yli,mXt=500,obu=30000,ebu=25,abu=200,eXt=50,oXt;var Azi=g(()=>{BM();Yli=class Yli extends Error{status;constructor(i,u){super(`sandbox daemon /_sandbox/config returned ${i}: ${u}`);this.status=i;this.name="ConfigRequestError"}};oXt=["cookie","host","connection","keep-alive","proxy-authenticate","proxy-authorization","te","trailer","transfer-encoding","accept-encoding","content-length"]});var iCu=`var __create = Object.create;
@@ -84626,7 +84626,7 @@ ${$}`;h(O);return}if(E(null,y),t.strategy==="count"){if(w--,w===0)h()}if(t.strat
84626
84626
  `);function h(_){if(t===void 0)return!0;let v=sM(_),D=v&&sM(t)?deu(t):t,n=v?deu(_):heu(_),N=sCt(D,n);return N===""||!N.startsWith("..")&&!aCt(N)}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(Q1i)},reconcile(){let _=Date.now();for(let v of l.all().map(Q1i)){if(!h(v.sandboxPath)){c.run({$handle:v.handle,$now:_});continue}if(!sM(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(Q1i)},prune(_){let v=[],D=[],n=this.reconcile();for(let N of n){if(!h(N.sandboxPath)){D.push({handle:N.handle,sandboxPath:N.sandboxPath,reason:"outside_root",deletedFiles:!1});continue}if(_.missing&&N.status==="missing"){w.run({$handle:N.handle}),v.push({handle:N.handle,sandboxPath:N.sandboxPath,reason:"missing",deletedFiles:!1});continue}if(!_.merged||!sM(N.sandboxPath))continue;if(N.branch===null||N.branch.trim()===""){D.push({handle:N.handle,sandboxPath:N.sandboxPath,reason:"no_branch",deletedFiles:!1});continue}if(!On(N.sandboxPath,["rev-parse","--is-inside-work-tree"]).ok){D.push({handle:N.handle,sandboxPath:N.sandboxPath,reason:"git_unavailable",deletedFiles:!1});continue}let O=On(N.sandboxPath,["status","--porcelain"]);if(!O.ok){D.push({handle:N.handle,sandboxPath:N.sandboxPath,reason:"git_unavailable",deletedFiles:!1});continue}if(O.stdout.trim()!==""){D.push({handle:N.handle,sandboxPath:N.sandboxPath,reason:"dirty_worktree",deletedFiles:!1});continue}let y=veu(N.sandboxPath,N.branch);if(y===null){D.push({handle:N.handle,sandboxPath:N.sandboxPath,reason:"git_unavailable",deletedFiles:!1});continue}if(!y){D.push({handle:N.handle,sandboxPath:N.sandboxPath,reason:"branch_not_merged",deletedFiles:!1});continue}mCt(N.sandboxPath,{recursive:!0,force:!0}),w.run({$handle:N.handle}),v.push({handle:N.handle,sandboxPath:N.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=Q1i(v),n=0,N=null;if(sM(D.sandboxPath)&&On(D.sandboxPath,["rev-parse","--is-inside-work-tree"]).ok){let O=On(D.sandboxPath,["status","--porcelain"]);if(O.ok){let y=O.stdout.trim();n=y===""?0:y.split(`
84627
84627
  `).length}if(D.branch!==null&&D.branch.trim()!=="")N=veu(D.sandboxPath,D.branch)}return{handle:D.handle,branch:D.branch,sandboxPath:D.sandboxPath,dirtyCount:n,merged:N}},close(){u.close()}}}var qRi=()=>{};function tMt(i,u){return u?[["umount","-f",i]]:[["fusermount","-uz",i],["umount","-l",i]]}function neu(i,u){if(process.platform==="win32")return;for(let t of tMt(i,u))if(Bun.spawnSync(t,{stdout:"ignore",stderr:"ignore",timeout:5000}).exitCode===0)break}var geu=()=>{};import{existsSync as fMt,readdirSync as lMt}from"fs";import{rm as cMt}from"fs/promises";import{join as Neu}from"path";async function Oeu(i,u={}){let t=u.detach??EMt,f=u.exists??fMt,l=u.readdir??(($)=>lMt($)),c=u.rm??(($)=>cMt($,{recursive:!0,force:!0})),E=Neu(i,"org");if(f(E))for(let $ of l(E))t(Neu(E,$));await c(i)}var EMt=(i)=>neu(i,process.platform==="darwin");var yeu=g(()=>{geu()});import{join as $Mt}from"path";function Zeu(i){let u=i.purge??Oeu;return{stopSandbox(t){return i.provider.deleteSandbox(t)},inspectSandbox(t){return i.registry.inspect(t)},async removeSandbox(t){try{return await bl(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??$Mt(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 Lc?f.cause:f;return{ok:!1,error:l instanceof Error?l.message:String(l)}}}}}var Teu=g(()=>{O4();yeu()});import{randomBytes as wMt}from"crypto";import{mkdir as dMt}from"fs/promises";import{createServer as hMt}from"net";import{join as _Mt}from"path";function Beu(i,u){return Error(`sandbox failed to start: ${i}`,{cause:u})}function Feu(i){if(!(i instanceof Error))return!1;return i.name==="TimeoutError"||/timed out|timeout|operation was aborted|aborted/i.test(i.message)}function Ueu(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 vMt(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 DMt(i){return{repoCloneUrl:i.repo?.cloneUrl??null,branch:i.repo?.branch??null,projectName:vMt(i.repo?.cloneUrl)}}function Peu(i){let u=i.maxSandboxes??20,t=new Map,f=i.pickPort??nMt,l=i.fetchImpl??fetch,c=i.resolvePreviewUrl??((n,N)=>`http://127.0.0.1:${N}`),E=(n)=>_Mt(i.dataDir,"sandboxes",n),$=(n)=>{try{i.registry?.upsert(n)}catch(N){console.warn(`[user-desktop] failed to persist sandbox lifecycle handle=${n.handle} status=${n.status}:`,N)}},w=(n)=>{try{i.onEvent?.(n)}catch{}},d=async(n)=>{let N=new AbortController,O=setTimeout(()=>N.abort(),1500);try{let y=await l(`${n}/health`,{signal:N.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(O)}},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((O)=>O.activeDispatchCount===0).sort((O,y)=>O.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 N=n[0];console.log(`[user-desktop] evicting LRU victim handle=${N.handle} port=${N.port} (cap ${u} reached, size=${t.size})`);try{N.process.kill("SIGTERM")}catch{}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"})}let D=async(n)=>{let N=DMt(n),O=E(n.handle);$({handle:n.handle,status:"spawning",sandboxPath:O,port:null,previewUrl:null,...N,error:null}),w({handle:n.handle,phase:"spawning",sandboxPath:O,projectName:N.projectName,branch:N.branch}),v();let y,Z=null,T;try{await dMt(O,{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=wMt(24).toString("hex");let[k,I]=await Promise.all([f(),f()]);y=k,console.log(`[user-desktop] spawn handle=${n.handle} port=${y} devPort=${I} workdir=${O}`),Z=await Promise.resolve(i.spawnDaemon({workdir:O,handle:n.handle,port:y,daemonToken:T,offloadAllowedHosts:n.offloadAllowedHosts??[],offloadAllowSameHostDev:n.offloadAllowSameHostDev??!1,orgFsConfigJson:n.orgFsConfigJson}));try{await i.waitForHealth(y)}catch(j){throw Beu("the sandbox didn't come online in time",j)}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(j){throw Beu(Feu(j)?"configuration timed out":"the sandbox rejected its configuration",j)}}catch(k){if((Feu(k)?console.warn:console.error)(`[user-desktop] sandbox bring-up failed handle=${n.handle} port=${y??"(none)"}${Z?" (killing daemon)":""}:`,k),Z)try{Z.kill("SIGKILL")}catch{}throw w({handle:n.handle,phase:"failed",error:Ueu(k),sandboxPath:O,projectName:N.projectName,branch:N.branch}),$({handle:n.handle,status:"failed",sandboxPath:O,port:null,previewUrl:null,...N,error:Ueu(k)}),k}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:N};if(t.set(n.handle,A),$({handle:n.handle,status:"ready",sandboxPath:O,port:y,previewUrl:F,...N,error:null}),w({handle:n.handle,phase:"ready",port:y,previewUrl:F,sandboxPath:O,projectName:N.projectName,branch:N.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:O,port:null,previewUrl:null,...N,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 N=t.get(n.handle);if(N){if(await d(N.sandboxApiUrl))return console.log(`[user-desktop] cache hit handle=${n.handle} port=${N.port} (alive)`),N.lastUsedAt=Date.now(),{sandboxApiUrl:N.sandboxApiUrl,previewUrl:N.previewUrl,port:N.port};console.warn(`[user-desktop] cache stale handle=${n.handle} port=${N.port} \u2014 respawning`),h(N)}let O=_.get(n.handle);if(O)return console.log(`[user-desktop] joining in-flight ensure handle=${n.handle}`),O;let y=D(n).finally(()=>{_.delete(n.handle)});return _.set(n.handle,y),y},proxyPort(n){let N=t.get(n);if(N)N.lastUsedAt=Date.now();return N?.port??null},getDaemonToken(n){return t.get(n)?.daemonToken??null},hasHandle(n){return t.has(n)||_.has(n)},recordHit(n){let N=t.get(n);if(N)N.lastUsedAt=Date.now()},acquireDispatch(n){let N=t.get(n);if(!N)return()=>{};N.activeDispatchCount+=1;let O=!1;return()=>{if(O)return;O=!0;let y=t.get(n);if(y)y.activeDispatchCount=Math.max(0,y.activeDispatchCount-1)}},listSandboxes(){return[...t.values()]},async deleteSandbox(n){let N=t.get(n);if(!N){console.log(`[user-desktop] delete handle=${n} (not found, no-op)`);return}if(N.activeDispatchCount>0){console.warn(`[user-desktop] delete handle=${n} port=${N.port} REFUSED \u2014 ${N.activeDispatchCount} active dispatch(es) in flight`);return}console.log(`[user-desktop] delete handle=${n} port=${N.port}`);try{N.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 nMt(){return new Promise((i,u)=>{let t=hMt();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 Aeu=()=>{};import{randomUUID as gMt}from"crypto";import{hostname as NMt}from"os";async function Ieu(i){let u=NMt()||void 0;i.monitor?.onMachine?.(u??"this machine");let t=cCu(i.dataDir,{outFd:i.logFd,perSandboxLog:i.perSandboxLogs,hotReload:i.hotReload}),f=H1i({path:z1i(i.dataDir),managedSandboxRoot:`${i.dataDir}/sandboxes`}),l=!1,c=()=>{if(l)return;l=!0;try{f.close()}catch{}};try{let E=0,$=Peu({dataDir:i.dataDir,registry:f,resolvePreviewUrl:(j,C)=>E>0?`http://${j}.localhost:${E}`:`http://127.0.0.1:${C}`,spawnDaemon:async(j)=>{let C={DAEMON_BOOT_ID:gMt(),APP_ROOT:j.workdir,PROXY_PORT:String(j.port),DAEMON_TOKEN:j.daemonToken,OFFLOAD_ALLOWED_HOSTS:j.offloadAllowedHosts.join(","),...j.offloadAllowSameHostDev?{OFFLOAD_ALLOW_SAME_HOST_DEV:"1"}:{}};if(j.orgFsConfigJson){let W=await dCu(i.dataDir);if(W)C.ORGFS_CONFIG=j.orgFsConfigJson,C.ORGFS_RCLONE_PATH=W}let K=await t({workdir:j.workdir,env:C,daemonPort:j.port});return{port:j.port,kill:(W)=>K.kill(W),exited:K.exited.then(()=>{return})}},postConfig:async(j,C,K,W)=>{let r={port:C};if(K.workload)r.runtime=K.workload.runtime,r.packageManager={name:K.workload.packageManager,...K.workload.packageManagerPath?{path:K.workload.packageManagerPath}:{}};let Y={application:r},ti=nh(K.operator??null);if(ti)Y.operator=ti;if(K.repo)Y.git={repository:{cloneUrl:K.repo.cloneUrl,branch:K.repo.branch},...K.repo.userName&&K.repo.userEmail?{identity:{userName:K.repo.userName,userEmail:K.repo.userEmail}}:{}};await En(`http://127.0.0.1:${j}`,W,Y)},waitForHealth:async(j)=>{await zli(`http://127.0.0.1:${j}`)},maxSandboxes:20,onEvent:i.monitor?.onEvent}),w=await omu({port:i.port,lookupSandboxPort:(j)=>$.proxyPort(j)});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=_Cu({provider:$}),h=async()=>{let j=await cn({dataDir:i.dataDir,target:i.clusterBaseUrl});if(!j)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 j.accessToken},_=await $eu(i.dataDir),v=process.env.npm_package_version??"0.0.0",D=await MRi(),n=ceu(D,{onChange:(j)=>{console.log(`[link-daemon] capabilities detected: +${j.join(",")} (now: ${D.join(",")})`)}}),N=Kzi({path:`${i.dataDir}/link/outbox.sqlite`});N.clear();let O=()=>{},y=new AbortController,Z={clusterBaseUrl:i.clusterBaseUrl,getAccessToken:h,provider:$,outbox:N,controlHandler:d,capabilities:D,machineId:_,cliVersion:v,previewPort:w.port,onConnected:()=>{i.monitor?.onCluster?.("linked"),console.log(`Linked to ${i.clusterBaseUrl}`)},onShutdown:()=>O(),runLifetimeSignal:y.signal};console.log(`[link-daemon] transport=tunnel cluster=${i.clusterBaseUrl}`);let T=await zmu(Z);console.log("[link-daemon] active transport=tunnel");let B,F=new Promise((j)=>{B=j}),A=!1,k=async()=>{if(A)return;A=!0,y.abort(),console.log(`
84628
84628
  Shutting down\u2026`),n();try{await T.close()}catch{}try{await w.stop()}catch{}try{await $.shutdown()}catch{}try{N.close()}catch{}c(),B(0)};process.on("SIGINT",()=>void k()),process.on("SIGTERM",()=>void k()),O=()=>{console.log("Disconnect requested from the Studio web UI \u2014 shutting down. Run `bunx decocms@latest link` to reconnect."),k()},T.closed.then(()=>{if(i.monitor?.onCluster?.("closed"),!A)console.error("Cluster connection closed permanently; exiting."),k()});let I=Zeu({provider:$,registry:f,dataDir:i.dataDir});return{stopped:F,stop:k,stopSandbox:I.stopSandbox,removeSandbox:I.removeSandbox,inspectSandbox:I.inspectSandbox}}catch(E){throw c(),E}}var xeu=g(()=>{Azi();BM();ECu();hCu();vCu();Jzi();Hmu();smu();Eeu();weu();TM();qRi();Teu();Aeu()});function VRi(i){return i.map((u)=>typeof u==="string"?u:String(u)).join(" ")}import{createServer as OMt}from"net";async function ZMt(i){for(let u of yMt)if(await rRi(i,u))return u;return null}async function keu(i,{intervalMs:u=1000}={}){for(;;){let t=await ZMt(i);if(t)return t;await N0(u)}}function rRi(i,u){return new Promise((t)=>{let f=OMt();f.once("error",(l)=>{t(l.code==="EADDRINUSE")}),f.listen(i,u,()=>{f.close(()=>t(!1))})})}var yMt;var mRi=g(()=>{O4();yMt=["localhost","127.0.0.1","0.0.0.0"]});function Geu(i){return typeof i==="object"&&i!==null&&"code"in i&&i.code==="EADDRINUSE"}function TMt(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 jeu(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`:","",` ${TMt(i,u)}`].join(`
84629
- `)}var eRi;var Seu=g(()=>{eRi=class eRi extends Error{port;code="EADDRINUSE";constructor(i){super(`Port ${i} is already in use.`);this.port=i;this.name="PortInUseError"}}});var cW;var R1i=g(()=>{cW={name:"decocms",version:"4.103.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 pM={};Ji(pM,{printBanner:()=>UMt,bannerLines:()=>Keu,BANNER_LINES:()=>b1i,BANNER_GRADIENT:()=>C1i});function FMt(i){let u=Number.parseInt(i.slice(1),16);return[u>>16&255,u>>8&255,u&255]}function Keu(i){let u=b1i.map((t,f)=>{let[l,c,E]=FMt(C1i[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 UMt(i){console.log("");for(let u of Keu(i))console.log(u);console.log("")}var b1i,C1i;var EW=g(()=>{b1i=[" \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 "],C1i=["#00ff64","#00ee5e","#00dc56","#00c84e","#00b444","#00a03c","#008832","#006e28"]});import{Box as PMt,Text as Jeu}from"ink";import{jsx as AMt,jsxs as Xeu}from"react/jsx-runtime";function M1i({version:i}){return Xeu(PMt,{flexDirection:"column",marginTop:1,children:[b1i.map((u,t)=>AMt(Jeu,{color:C1i[t],children:u},t)),Xeu(Jeu,{dimColor:!0,children:[" v",i]})]})}var aRi=g(()=>{EW()});function Leu(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 Weu(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 Yeu(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 ibi={};Ji(ibi,{subscribeLinkState:()=>oRi,setSelectedHandle:()=>sRi,setRemoving:()=>r1i,setPersistedSandboxes:()=>LMt,setPendingConfirm:()=>uq,setMachine:()=>SMt,setLogPath:()=>JMt,setLinkActions:()=>XMt,setIngress:()=>jMt,setDaemonError:()=>KMt,setClusterUrl:()=>GMt,setCluster:()=>kMt,setActionError:()=>V1i,resetLinkStateForTests:()=>YMt,removeSandboxRow:()=>pRi,pushSandboxEvent:()=>WMt,getLinkState:()=>iq,applySandboxEvent:()=>Qeu});function xMt(i){return i==="spawning"||i==="ready"||i==="failed"}function Qeu(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 zeu(){return{cluster:"connecting",clusterUrl:null,ingressUrl:null,ingressPort:null,machine:null,cap:IMt,sandboxes:new Map,daemonError:null,logPath:null,selectedHandle:null,pendingConfirm:null,removingHandles:new Set,actionError:null,actions:null}}function Q$(){for(let i of q1i)i()}function iq(){return lf}function oRi(i){return q1i.add(i),()=>q1i.delete(i)}function kMt(i){lf={...lf,cluster:i},Q$()}function GMt(i){lf={...lf,clusterUrl:i},Q$()}function jMt(i,u){lf={...lf,ingressPort:i,ingressUrl:u},Q$()}function SMt(i){lf={...lf,machine:i},Q$()}function KMt(i){lf={...lf,daemonError:i},Q$()}function JMt(i){lf={...lf,logPath:i},Q$()}function sRi(i){lf={...lf,selectedHandle:i},Q$()}function uq(i){lf={...lf,pendingConfirm:i},Q$()}function V1i(i){lf={...lf,actionError:i},Q$()}function r1i(i,u){if(lf.removingHandles.has(i)===u)return;let t=new Set(lf.removingHandles);if(u)t.add(i);else t.delete(i);lf={...lf,removingHandles:t},Q$()}function XMt(i){lf={...lf,actions:i},Q$()}function pRi(i){let u=$W(lf.sandboxes),t=Yeu(u,i,lf.selectedHandle),f=new Map(lf.sandboxes);f.delete(i);let l=new Set(lf.removingHandles);l.delete(i),lf={...lf,sandboxes:f,selectedHandle:t,pendingConfirm:null,removingHandles:l},Q$()}function LMt(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 lf.sandboxes)if(xMt(f.status))u.set(t,f);lf={...lf,sandboxes:u},Q$()}function WMt(i){lf={...lf,sandboxes:Qeu(lf.sandboxes,i)},Q$()}function YMt(){lf=zeu(),q1i.clear()}var IMt=20,lf,q1i;var tq=g(()=>{lf=zeu(),q1i=new Set});import{spawn as QMt}from"child_process";function zMt(i){if(i==="darwin")return"open";if(i==="win32")return"start";return"xdg-open"}function Heu(i,u=process.platform){let t=zMt(u);try{QMt(t,[i],{stdio:"ignore",detached:!0}).unref()}catch{}}var Reu=()=>{};function beu(i,u={}){let t=u.openUrl??Heu,f=iq(),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":sRi(Weu(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);V1i(null),uq({handle:c,branch:$?.branch??w?.branch??null,dirtyCount:$?.dirtyCount??0,merged:$?.merged??null});return}case"confirmYes":{let $=f.pendingConfirm;if(uq(null),$===null||!E)return;r1i($.handle,!0),E.removeSandbox($.handle).then((w)=>{if(w.ok)pRi($.handle);else r1i($.handle,!1),V1i(w.error)});return}case"confirmNo":uq(null);return;case"quit":if(E)E.quit();return}}var Ceu=g(()=>{tq();Reu()});function Meu(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 qeu={};Ji(qeu,{LinkApp:()=>CMt});import{Box as Ml,Text as _1,useInput as HMt}from"ink";import{useSyncExternalStore as RMt}from"react";import{jsx as kf,jsxs as Ah}from"react/jsx-runtime";function bMt(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 CMt(){let i=RMt(oRi,iq),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 HMt((l,c)=>{let E=Meu(l,c,i.pendingConfirm!==null);if(E!==null)beu(E)}),Ah(Ml,{flexDirection:"column",children:[kf(M1i,{version:cW.version}),kf(Ml,{marginBottom:1,children:kf(_1,{dimColor:!0,children:"\u2500".repeat(80)})}),kf(Ml,{children:i.cluster==="linked"?Ah(_1,{color:"green",children:["\u2713 Connected to ",i.clusterUrl??"deco"]}):i.cluster==="connecting"?Ah(_1,{color:"yellow",children:["\u25CC Connecting to ",i.clusterUrl??"deco","\u2026"]}):Ah(_1,{color:"red",children:["\u2717 Disconnected from ",i.clusterUrl??"deco"]})}),kf(Ml,{children:i.ingressUrl?Ah(_1,{color:"green",children:["\u2713 Serving at ",i.ingressUrl]}):kf(_1,{dimColor:!0,children:"\u25CC Starting local server\u2026"})}),kf(Ml,{marginBottom:1,children:kf(_1,{dimColor:!0,children:`${"Computer".padEnd(16)}${i.machine??"this computer"} \xB7 ${u.length} of ${i.cap} previews`})}),u.length===0?kf(_1,{dimColor:!0,children:"No previews running yet."}):Ah(Ml,{flexDirection:"column",children:[Ah(Ml,{children:[kf(Ml,{width:2,flexShrink:0}),kf(Ml,{width:wW.project,flexShrink:0,marginRight:1,children:kf(_1,{dimColor:!0,wrap:"truncate-end",children:"PROJECT"})}),kf(Ml,{width:wW.branch,flexShrink:0,marginRight:1,children:kf(_1,{dimColor:!0,wrap:"truncate-end",children:"BRANCH"})}),kf(Ml,{width:wW.status,flexShrink:0,marginRight:1,children:kf(_1,{dimColor:!0,wrap:"truncate-end",children:"STATUS"})}),kf(Ml,{flexGrow:1,children:kf(_1,{dimColor:!0,wrap:"truncate-end",children:"PREVIEW URL"})})]}),u.map((l)=>{let c=bMt(l,i.removingHandles.has(l.handle)),E=l.handle===f;return Ah(Ml,{children:[kf(Ml,{width:2,flexShrink:0,children:kf(_1,{color:"cyan",children:E?"\u203A":" "})}),kf(Ml,{width:wW.project,flexShrink:0,marginRight:1,children:kf(_1,{bold:E,wrap:"truncate-end",children:l.projectName??l.handle})}),kf(Ml,{width:wW.branch,flexShrink:0,marginRight:1,children:kf(_1,{bold:E,wrap:"truncate-end",children:l.branch??"\u2014"})}),kf(Ml,{width:wW.status,flexShrink:0,marginRight:1,children:kf(_1,{color:c.color,bold:E,wrap:"truncate-end",children:c.text})}),kf(Ml,{flexGrow:1,children:kf(_1,{dimColor:!0,wrap:"truncate-end",children:l.previewUrl??"\u2014"})})]},l.handle)})]}),i.daemonError?kf(Ml,{marginTop:1,children:Ah(_1,{color:"red",children:["\u26A0 ",i.daemonError]})}):null,i.logPath?kf(Ml,{marginTop:1,children:Ah(_1,{dimColor:!0,children:["Logs: ",i.logPath]})}):null,i.pendingConfirm?kf(Ml,{marginTop:1,children:kf(_1,{color:"yellow",children:Leu(i.pendingConfirm)})}):null,i.actionError?kf(Ml,{marginTop:1,children:Ah(_1,{color:"red",children:["\u2717 ",i.actionError]})}):null,kf(Ml,{marginTop:1,children:kf(_1,{dimColor:!0,children:"\u2191\u2193 move \xB7 s stop \xB7 d delete \xB7 o open \xB7 q quit"})})]})}var wW;var Veu=g(()=>{R1i();aRi();Ceu();tq();wW={project:18,branch:22,status:14}});var reu={};Ji(reu,{runLinkCommand:()=>oMt});import{closeSync as MMt,mkdirSync as qMt,openSync as VMt,writeSync as rMt}from"fs";import{homedir as mMt}from"os";import{join as ubi}from"path";function eMt(i,u){let t={log:console.log,warn:console.warn,error:console.error},f=(l)=>{if(u===void 0)return;try{rMt(u,`${VRi(l)}
84629
+ `)}var eRi;var Seu=g(()=>{eRi=class eRi extends Error{port;code="EADDRINUSE";constructor(i){super(`Port ${i} is already in use.`);this.port=i;this.name="PortInUseError"}}});var cW;var R1i=g(()=>{cW={name:"decocms",version:"4.104.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 pM={};Ji(pM,{printBanner:()=>UMt,bannerLines:()=>Keu,BANNER_LINES:()=>b1i,BANNER_GRADIENT:()=>C1i});function FMt(i){let u=Number.parseInt(i.slice(1),16);return[u>>16&255,u>>8&255,u&255]}function Keu(i){let u=b1i.map((t,f)=>{let[l,c,E]=FMt(C1i[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 UMt(i){console.log("");for(let u of Keu(i))console.log(u);console.log("")}var b1i,C1i;var EW=g(()=>{b1i=[" \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 "],C1i=["#00ff64","#00ee5e","#00dc56","#00c84e","#00b444","#00a03c","#008832","#006e28"]});import{Box as PMt,Text as Jeu}from"ink";import{jsx as AMt,jsxs as Xeu}from"react/jsx-runtime";function M1i({version:i}){return Xeu(PMt,{flexDirection:"column",marginTop:1,children:[b1i.map((u,t)=>AMt(Jeu,{color:C1i[t],children:u},t)),Xeu(Jeu,{dimColor:!0,children:[" v",i]})]})}var aRi=g(()=>{EW()});function Leu(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 Weu(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 Yeu(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 ibi={};Ji(ibi,{subscribeLinkState:()=>oRi,setSelectedHandle:()=>sRi,setRemoving:()=>r1i,setPersistedSandboxes:()=>LMt,setPendingConfirm:()=>uq,setMachine:()=>SMt,setLogPath:()=>JMt,setLinkActions:()=>XMt,setIngress:()=>jMt,setDaemonError:()=>KMt,setClusterUrl:()=>GMt,setCluster:()=>kMt,setActionError:()=>V1i,resetLinkStateForTests:()=>YMt,removeSandboxRow:()=>pRi,pushSandboxEvent:()=>WMt,getLinkState:()=>iq,applySandboxEvent:()=>Qeu});function xMt(i){return i==="spawning"||i==="ready"||i==="failed"}function Qeu(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 zeu(){return{cluster:"connecting",clusterUrl:null,ingressUrl:null,ingressPort:null,machine:null,cap:IMt,sandboxes:new Map,daemonError:null,logPath:null,selectedHandle:null,pendingConfirm:null,removingHandles:new Set,actionError:null,actions:null}}function Q$(){for(let i of q1i)i()}function iq(){return lf}function oRi(i){return q1i.add(i),()=>q1i.delete(i)}function kMt(i){lf={...lf,cluster:i},Q$()}function GMt(i){lf={...lf,clusterUrl:i},Q$()}function jMt(i,u){lf={...lf,ingressPort:i,ingressUrl:u},Q$()}function SMt(i){lf={...lf,machine:i},Q$()}function KMt(i){lf={...lf,daemonError:i},Q$()}function JMt(i){lf={...lf,logPath:i},Q$()}function sRi(i){lf={...lf,selectedHandle:i},Q$()}function uq(i){lf={...lf,pendingConfirm:i},Q$()}function V1i(i){lf={...lf,actionError:i},Q$()}function r1i(i,u){if(lf.removingHandles.has(i)===u)return;let t=new Set(lf.removingHandles);if(u)t.add(i);else t.delete(i);lf={...lf,removingHandles:t},Q$()}function XMt(i){lf={...lf,actions:i},Q$()}function pRi(i){let u=$W(lf.sandboxes),t=Yeu(u,i,lf.selectedHandle),f=new Map(lf.sandboxes);f.delete(i);let l=new Set(lf.removingHandles);l.delete(i),lf={...lf,sandboxes:f,selectedHandle:t,pendingConfirm:null,removingHandles:l},Q$()}function LMt(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 lf.sandboxes)if(xMt(f.status))u.set(t,f);lf={...lf,sandboxes:u},Q$()}function WMt(i){lf={...lf,sandboxes:Qeu(lf.sandboxes,i)},Q$()}function YMt(){lf=zeu(),q1i.clear()}var IMt=20,lf,q1i;var tq=g(()=>{lf=zeu(),q1i=new Set});import{spawn as QMt}from"child_process";function zMt(i){if(i==="darwin")return"open";if(i==="win32")return"start";return"xdg-open"}function Heu(i,u=process.platform){let t=zMt(u);try{QMt(t,[i],{stdio:"ignore",detached:!0}).unref()}catch{}}var Reu=()=>{};function beu(i,u={}){let t=u.openUrl??Heu,f=iq(),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":sRi(Weu(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);V1i(null),uq({handle:c,branch:$?.branch??w?.branch??null,dirtyCount:$?.dirtyCount??0,merged:$?.merged??null});return}case"confirmYes":{let $=f.pendingConfirm;if(uq(null),$===null||!E)return;r1i($.handle,!0),E.removeSandbox($.handle).then((w)=>{if(w.ok)pRi($.handle);else r1i($.handle,!1),V1i(w.error)});return}case"confirmNo":uq(null);return;case"quit":if(E)E.quit();return}}var Ceu=g(()=>{tq();Reu()});function Meu(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 qeu={};Ji(qeu,{LinkApp:()=>CMt});import{Box as Ml,Text as _1,useInput as HMt}from"ink";import{useSyncExternalStore as RMt}from"react";import{jsx as kf,jsxs as Ah}from"react/jsx-runtime";function bMt(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 CMt(){let i=RMt(oRi,iq),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 HMt((l,c)=>{let E=Meu(l,c,i.pendingConfirm!==null);if(E!==null)beu(E)}),Ah(Ml,{flexDirection:"column",children:[kf(M1i,{version:cW.version}),kf(Ml,{marginBottom:1,children:kf(_1,{dimColor:!0,children:"\u2500".repeat(80)})}),kf(Ml,{children:i.cluster==="linked"?Ah(_1,{color:"green",children:["\u2713 Connected to ",i.clusterUrl??"deco"]}):i.cluster==="connecting"?Ah(_1,{color:"yellow",children:["\u25CC Connecting to ",i.clusterUrl??"deco","\u2026"]}):Ah(_1,{color:"red",children:["\u2717 Disconnected from ",i.clusterUrl??"deco"]})}),kf(Ml,{children:i.ingressUrl?Ah(_1,{color:"green",children:["\u2713 Serving at ",i.ingressUrl]}):kf(_1,{dimColor:!0,children:"\u25CC Starting local server\u2026"})}),kf(Ml,{marginBottom:1,children:kf(_1,{dimColor:!0,children:`${"Computer".padEnd(16)}${i.machine??"this computer"} \xB7 ${u.length} of ${i.cap} previews`})}),u.length===0?kf(_1,{dimColor:!0,children:"No previews running yet."}):Ah(Ml,{flexDirection:"column",children:[Ah(Ml,{children:[kf(Ml,{width:2,flexShrink:0}),kf(Ml,{width:wW.project,flexShrink:0,marginRight:1,children:kf(_1,{dimColor:!0,wrap:"truncate-end",children:"PROJECT"})}),kf(Ml,{width:wW.branch,flexShrink:0,marginRight:1,children:kf(_1,{dimColor:!0,wrap:"truncate-end",children:"BRANCH"})}),kf(Ml,{width:wW.status,flexShrink:0,marginRight:1,children:kf(_1,{dimColor:!0,wrap:"truncate-end",children:"STATUS"})}),kf(Ml,{flexGrow:1,children:kf(_1,{dimColor:!0,wrap:"truncate-end",children:"PREVIEW URL"})})]}),u.map((l)=>{let c=bMt(l,i.removingHandles.has(l.handle)),E=l.handle===f;return Ah(Ml,{children:[kf(Ml,{width:2,flexShrink:0,children:kf(_1,{color:"cyan",children:E?"\u203A":" "})}),kf(Ml,{width:wW.project,flexShrink:0,marginRight:1,children:kf(_1,{bold:E,wrap:"truncate-end",children:l.projectName??l.handle})}),kf(Ml,{width:wW.branch,flexShrink:0,marginRight:1,children:kf(_1,{bold:E,wrap:"truncate-end",children:l.branch??"\u2014"})}),kf(Ml,{width:wW.status,flexShrink:0,marginRight:1,children:kf(_1,{color:c.color,bold:E,wrap:"truncate-end",children:c.text})}),kf(Ml,{flexGrow:1,children:kf(_1,{dimColor:!0,wrap:"truncate-end",children:l.previewUrl??"\u2014"})})]},l.handle)})]}),i.daemonError?kf(Ml,{marginTop:1,children:Ah(_1,{color:"red",children:["\u26A0 ",i.daemonError]})}):null,i.logPath?kf(Ml,{marginTop:1,children:Ah(_1,{dimColor:!0,children:["Logs: ",i.logPath]})}):null,i.pendingConfirm?kf(Ml,{marginTop:1,children:kf(_1,{color:"yellow",children:Leu(i.pendingConfirm)})}):null,i.actionError?kf(Ml,{marginTop:1,children:Ah(_1,{color:"red",children:["\u2717 ",i.actionError]})}):null,kf(Ml,{marginTop:1,children:kf(_1,{dimColor:!0,children:"\u2191\u2193 move \xB7 s stop \xB7 d delete \xB7 o open \xB7 q quit"})})]})}var wW;var Veu=g(()=>{R1i();aRi();Ceu();tq();wW={project:18,branch:22,status:14}});var reu={};Ji(reu,{runLinkCommand:()=>oMt});import{closeSync as MMt,mkdirSync as qMt,openSync as VMt,writeSync as rMt}from"fs";import{homedir as mMt}from"os";import{join as ubi}from"path";function eMt(i,u){let t={log:console.log,warn:console.warn,error:console.error},f=(l)=>{if(u===void 0)return;try{rMt(u,`${VRi(l)}
84630
84630
  `)}catch{}};return console.log=(...l)=>f(l),console.warn=(...l)=>f(l),console.error=(...l)=>{f(l),i(VRi(l))},()=>{console.log=t.log,console.warn=t.warn,console.error=t.error}}async function aMt(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 oMt(i={}){let u=i.port??5174,t=i.dataDir??process.env.DATA_DIR??process.env.DECOCMS_HOME??ubi(mMt(),"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 rRi(u,"127.0.0.1"))throw new eRi(u);let w=ubi(t,"sandboxes");E=H1i({path:z1i(t),managedSandboxRoot:w});let d=await Lli({dataDir:t,intent:"Link",target:f});if(process.env.DECOCMS_LINK_MANAGED!=="1")await aMt(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:N}=await import("react"),{LinkApp:O}=await Promise.resolve().then(() => (Veu(),qeu)),{pushSandboxEvent:y,setCluster:Z,setClusterUrl:T,setDaemonError:B,setIngress:F,setLogPath:A,setMachine:k,setPersistedSandboxes:I}=await Promise.resolve().then(() => (tq(),ibi));qMt(t,{recursive:!0});let j=ubi(t,"link.log");c=VMt(j,"w"),A(j),I(h),T(f),Z("connecting"),_={onEvent:(C)=>y(C),onIngress:(C)=>F(C,`http://127.0.0.1:${C}`),onCluster:(C)=>Z(C),onMachine:(C)=>k(C)},l=eMt(B,c),n(N(O),{patchConsole:!1})}else if(i.banner!==!1){let{printBanner:n}=await Promise.resolve().then(() => (EW(),pM));n(i.version??"0.0.0")}$();let v=process.env.DECOCMS_LINK_MANAGED!=="1",D=await Ieu({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(() => (tq(),ibi));n({stopSandbox:D.stopSandbox,removeSandbox:D.removeSandbox,inspectSandbox:D.inspectSandbox,quit:D.stop})}return await D.stopped}catch(w){return l?.(),console.error(Geu(w)?jeu(u):w instanceof Error?w.message:String(w)),1}finally{if(l?.(),c!==void 0)try{MMt(c)}catch{}$()}}var meu=g(()=>{Pzi();xeu();mRi();Seu();qRi()});var $bi={};Ji($bi,{resolveDevLinkClusterUrl:()=>uqt,populateDevLinkToxiProxy:()=>iau,isDevLinkToxiProxyEnabled:()=>iqt,ensureDevLinkToxiProxy:()=>Eqt,buildDevLinkToxiProxyConfig:()=>seu,DEV_LINK_TOXIPROXY_SERVICE_NAME:()=>aeu,DEV_LINK_TOXIPROXY_PROXY_NAME:()=>oeu});function iqt(i=process.env){return i.DECO_DEV_LINK_TOXIPROXY==="1"}function tbi(i,u){if(!Number.isInteger(i)||i<1||i>65535)throw Error(`${u} must be an integer port in 1..65535`);return i}function seu(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=tbi(i.apiPort,"apiPort"),f=tbi(i.listenPort,"listenPort");if(u.port.length===0)throw Error("serverUrl must include an explicit valid port");let l=tbi(Number.parseInt(u.port,10),"upstreamPort"),c=`http://127.0.0.1:${l}`,E=`http://127.0.0.1:${f}`;return{serviceName:aeu,proxyName:oeu,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 uqt(i){return i.toxiproxy?.clusterUrl??i.serverUrl}async function fbi(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 Ebi(i){if(i instanceof Error)return i.name==="Error"?i.message:`${i.name}: ${i.message}`;return String(i)}function peu(i){if(!(i instanceof Error))return!1;if(i.name==="TimeoutError")return!0;return peu(i.cause)}async function lbi(i,u,t,f){try{return await i(t,f)}catch(l){throw Error(`ToxiProxy ${u} failed for ${t}: ${Ebi(l)}`,{cause:l})}}async function iau(i,u=fetch){let t=`${i.apiUrl}/reset`,f=await lbi(u,"reset",t,{method:"POST"});await fbi(f,"reset",t);let l=`${i.apiUrl}/populate`,c=await lbi(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 fbi(c,"populate",l)}async function tqt(i,u){let t=`${i.apiUrl}/version`;try{await bl(async()=>{let f=await lbi(u,"readiness check",t,{method:"GET",signal:AbortSignal.timeout(pMt)});await fbi(f,"readiness check",t)},{maxAttempts:sMt,minTimeout:eeu,maxTimeout:eeu,multiplier:1,jitter:0,isRetriable:(f)=>!peu(f)})}catch(f){let l=f instanceof Lc?f.cause:f;throw Error(`ToxiProxy API did not become ready at ${t}: ${Ebi(l)}`,{cause:l})}}async function fqt(i){if(i===null)return"";return await new Response(i).text()}async function cbi(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}): ${Ebi($)}`,{cause:$})}})(),[l,c]=await Promise.all([f.exited,fqt(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 lqt(i,u){let t=`deco-dev-link-toxiproxy-${i}`;await cbi(["rm","-f",t],{ignoreFailure:!0}),await cbi(["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 cqt(i,u){let t=`deco-dev-link-toxiproxy-${i}`;await cbi(["rm","-f",t],{ignoreFailure:!0})}async function Eqt(i){let u=seu(i),t=i.startDaemon??lqt,f=i.stopDaemon??(i.startDaemon===void 0?cqt:void 0);await t(i.apiPort,i.listenPort);let l=i.fetchImpl??fetch;try{await tqt(u,l),await iau(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 aeu="ToxiProxy",oeu="dev_link_studio",sMt=20,eeu=100,pMt=100;var wbi=g(()=>{O4()});var uau={};Ji(uau,{migrateBetterAuth:()=>dbi});import{getMigrations as $qt}from"better-auth/db";import{sso as wqt}from"@better-auth/sso";import{organization as dqt}from"@decocms/better-auth/plugins";import{admin as hqt,apiKey as _qt,jwt as vqt,magicLink as Dqt,mcp as nqt,openAPI as gqt}from"better-auth/plugins";import{emailOTP as Nqt}from"better-auth/plugins/email-otp";async function dbi(i){let t={database:nM(i||un()),plugins:[dqt({dynamicAccessControl:{enabled:!0,enableCustomResources:!0}}),hqt(),_qt(),vqt(),gqt(),nqt({loginPage:"/login"}),wqt(),Dqt({sendMagicLink:async()=>{}}),Nqt({sendVerificationOTP:async()=>{}})]},{toBeAdded:f,toBeCreated:l,runMigrations:c}=await $qt(t);if(!f.length&&!l.length)return"up to date";return await c(),`${l.length+f.length} table(s) migrated`}var hbi=g(()=>{cE()});var _bi={};Ji(_bi,{up:()=>Oqt,down:()=>yqt});import{sql as $v}from"kysely";async function Oqt(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($v`CURRENT_TIMESTAMP`)).addColumn("updatedAt","text",(u)=>u.notNull().defaultTo($v`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($v`CURRENT_TIMESTAMP`)).addColumn("updatedAt","text",(u)=>u.notNull().defaultTo($v`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($v`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($v`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($v`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($v`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($v`CURRENT_TIMESTAMP`)).addColumn("updatedAt","text",(u)=>u.notNull().defaultTo($v`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 yqt(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 tau=()=>{};var vbi={};Ji(vbi,{up:()=>Zqt,down:()=>Tqt});import{sql as fau}from"kysely";async function Zqt(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(fau`CURRENT_TIMESTAMP`)).addColumn("updatedAt","text",(u)=>u.notNull().defaultTo(fau`CURRENT_TIMESTAMP`)).execute()}async function Tqt(i){await i.schema.dropTable("organization_settings").execute()}var lau=()=>{};var Dbi={};Ji(Dbi,{up:()=>Bqt,down:()=>Fqt});async function Bqt(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 Fqt(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 nbi={};Ji(nbi,{up:()=>Uqt,down:()=>Pqt});async function Uqt(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 Pqt(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 gbi={};Ji(gbi,{up:()=>Aqt,down:()=>Iqt});async function Aqt(i){await i.schema.alterTable("connections").addColumn("configuration_state","text").execute(),await i.schema.alterTable("connections").addColumn("configuration_scopes","text").execute()}async function Iqt(i){await i.schema.alterTable("connections").dropColumn("configuration_state").execute(),await i.schema.alterTable("connections").dropColumn("configuration_scopes").execute()}var Nbi={};Ji(Nbi,{up:()=>kqt,down:()=>Gqt});import{sql as xqt}from"kysely";async function kqt(i){await i.schema.alterTable("organization_settings").addColumn("sidebar_items",xqt`text`).execute()}async function Gqt(i){await i.schema.alterTable("organization_settings").dropColumn("sidebar_items").execute()}var cau=()=>{};var Obi={};Ji(Obi,{up:()=>jqt,down:()=>Sqt});async function jqt(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 Sqt(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 ybi={};Ji(ybi,{up:()=>Kqt,down:()=>Jqt});import{sql as fq}from"kysely";async function Kqt(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(fq`CURRENT_TIMESTAMP`)).addColumn("updated_at","text",(u)=>u.notNull().defaultTo(fq`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(fq`CURRENT_TIMESTAMP`)).addColumn("updated_at","text",(u)=>u.notNull().defaultTo(fq`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(fq`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 Jqt(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 Eau=()=>{};var Zbi={};Ji(Zbi,{up:()=>Lqt,down:()=>Wqt});import{sql as Xqt}from"kysely";async function Lqt(i){await i.schema.dropTable("audit_logs").ifExists().execute()}async function Wqt(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(Xqt`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 $au=()=>{};var Tbi={};Ji(Tbi,{up:()=>Yqt,down:()=>Qqt});import{sql as m1i}from"kysely";async function Yqt(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 Qqt(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 wau=()=>{};var Bbi={};Ji(Bbi,{up:()=>zqt,down:()=>Hqt});async function zqt(i){await i.schema.alterTable("gateways").addColumn("icon","text").execute()}async function Hqt(i){await i.schema.alterTable("gateways").dropColumn("icon").execute()}var Fbi={};Ji(Fbi,{up:()=>Rqt,down:()=>bqt});import{sql as e1i}from"kysely";async function Rqt(i){await i.schema.alterTable("gateways").addColumn("tool_selection_mode","text",(u)=>u.notNull().defaultTo("inclusion")).execute(),await e1i`
84631
84631
  UPDATE gateways
84632
84632
  SET tool_selection_mode = CASE