decocms 3.93.0 → 3.94.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 (215) hide show
  1. package/dist/client/assets/{AlertCircle-CPsUqb9w.js → AlertCircle-CVgQ7AOT.js} +1 -1
  2. package/dist/client/assets/{ArrowUpRight-DtS0Ql0c.js → ArrowUpRight-C9ykLtuj.js} +1 -1
  3. package/dist/client/assets/{CheckCircle-BolkWLNV.js → CheckCircle-H3pWKPYO.js} +1 -1
  4. package/dist/client/assets/{ChevronDown-Br0JyxxI.js → ChevronDown-DO3o3y5M.js} +1 -1
  5. package/dist/client/assets/{ChevronLeft-DYKFs25Z.js → ChevronLeft-B7B0rGOG.js} +1 -1
  6. package/dist/client/assets/{ChevronRight-Bb3fYro8.js → ChevronRight-D_tkXjWo.js} +1 -1
  7. package/dist/client/assets/{ChevronUp-9AmI2r-8.js → ChevronUp-u7VhfB08.js} +1 -1
  8. package/dist/client/assets/{DotsVertical-BWvAFXp6.js → DotsVertical-Cauolc8c.js} +1 -1
  9. package/dist/client/assets/{Eye-BeU9HzvI.js → Eye-C8Vfx0-4.js} +1 -1
  10. package/dist/client/assets/{FilterLines-BjafZAm6.js → FilterLines-DmVqY61b.js} +1 -1
  11. package/dist/client/assets/{Globe01-BaODUE4b.js → Globe01-B2Kb3oGL.js} +1 -1
  12. package/dist/client/assets/{Globe04-CeW5Z0Kh.js → Globe04-yg-G_BoN.js} +1 -1
  13. package/dist/client/assets/{HardDrive-BKjshHXk.js → HardDrive-Ct0X1WYx.js} +1 -1
  14. package/dist/client/assets/{Key01-CkNZEW2T.js → Key01-CYbGr3H3.js} +1 -1
  15. package/dist/client/assets/{LayoutLeft-AxfIYgPW.js → LayoutLeft-hqAstg8m.js} +1 -1
  16. package/dist/client/assets/{LinkExternal01-DVLkc3K_.js → LinkExternal01-DFDKnuS_.js} +1 -1
  17. package/dist/client/assets/{Monitor01-C6fIMnPI.js → Monitor01-CjEGYbhQ.js} +1 -1
  18. package/dist/client/assets/{Palette-Du7PwJ5T.js → Palette-BrlikOjU.js} +1 -1
  19. package/dist/client/assets/{Play-YBZX5ZLG.js → Play-DsnYqyFF.js} +1 -1
  20. package/dist/client/assets/{Plus-CJK_Z_9l.js → Plus-BCyb-AcQ.js} +1 -1
  21. package/dist/client/assets/{SearchMd-Bu6i-7O-.js → SearchMd-pgxE25ht.js} +1 -1
  22. package/dist/client/assets/{Settings02-ClyP-nns.js → Settings02-BVbp_ypE.js} +1 -1
  23. package/dist/client/assets/{Shield01-BjFKeQ_N.js → Shield01-CDrsrKsk.js} +1 -1
  24. package/dist/client/assets/{Star01-D1d9bklt.js → Star01-BQYePq21.js} +1 -1
  25. package/dist/client/assets/{Stars01-C8smcBql.js → Stars01-BYz6LBgx.js} +1 -1
  26. package/dist/client/assets/{Stars02-B5rq9Mzt.js → Stars02-DToeu8SC.js} +1 -1
  27. package/dist/client/assets/{Sun-DodPsLp-.js → Sun-Ct9UUaO-.js} +1 -1
  28. package/dist/client/assets/{SwitchHorizontal01-kAH8gjqT.js → SwitchHorizontal01-CUGpid9A.js} +1 -1
  29. package/dist/client/assets/{Tool01-Rpx-Fbsn.js → Tool01-qCeqaIYR.js} +1 -1
  30. package/dist/client/assets/{Trash01-Dyf1A0dZ.js → Trash01-BQ-tGqiC.js} +1 -1
  31. package/dist/client/assets/{Upload01-XbcBo5aV.js → Upload01-D4__IfBX.js} +1 -1
  32. package/dist/client/assets/{User01-BfBqwqiZ.js → User01-CxCzzEeX.js} +1 -1
  33. package/dist/client/assets/{Users01-CPlN96Ae.js → Users01-Cw-lssyZ.js} +1 -1
  34. package/dist/client/assets/{Users03-BrHC1wzv.js → Users03-BfmtQGSl.js} +1 -1
  35. package/dist/client/assets/{X-dsSDVl3-.js → X-CiAMFEWO.js} +1 -1
  36. package/dist/client/assets/{XCircle-D9bIJ2aG.js → XCircle-CoU_Hwe9.js} +1 -1
  37. package/dist/client/assets/{XClose-gI66KzDJ.js → XClose-BEAZpPEi.js} +1 -1
  38. package/dist/client/assets/{Zap-Cg8ncZ4g.js → Zap-BZ2VPUiO.js} +1 -1
  39. package/dist/client/assets/{ZapSquare-D0HzXU-T.js → ZapSquare-DiyzHRy2.js} +1 -1
  40. package/dist/client/assets/{ZoomOut-BzN_Ms7a.js → ZoomOut-DV_1o0PM.js} +1 -1
  41. package/dist/client/assets/{access-gate-CJ0Kwc3B.js → access-gate-COlpF0HW.js} +1 -1
  42. package/dist/client/assets/{add-section-modal-BieWS4zs.js → add-section-modal-CT6eQ2rC.js} +1 -1
  43. package/dist/client/assets/{agent-icon-zFcUURp0.js → agent-icon-NQ_Mk8_8.js} +1 -1
  44. package/dist/client/assets/{agents-list-BHA72N6X.js → agents-list-Co2Ggucu.js} +1 -1
  45. package/dist/client/assets/{ai-providers-Bc8lgoXa.js → ai-providers-CFpS67kU.js} +1 -1
  46. package/dist/client/assets/{alert-ClVBr42M.js → alert-BHi_IhB_.js} +1 -1
  47. package/dist/client/assets/{alert-dialog-1_FLDsv-.js → alert-dialog-BN65AiTi.js} +1 -1
  48. package/dist/client/assets/{app-editor-B82yAEWL.js → app-editor-CVsSmOXB.js} +1 -1
  49. package/dist/client/assets/{auth-Brn3FIq2.js → auth-BFkL4ufW.js} +1 -1
  50. package/dist/client/assets/{auth-catchall-B4CdMBde.js → auth-catchall-B7BFjX4w.js} +1 -1
  51. package/dist/client/assets/{auth-entry-Bu37HmBx.js → auth-entry-COL91flc.js} +1 -1
  52. package/dist/client/assets/{auth-split-layout-DdFuJpuY.js → auth-split-layout-BKBH2tBP.js} +1 -1
  53. package/dist/client/assets/{authenticate-and-persist-oauth-DpasRxwB.js → authenticate-and-persist-oauth-DOKW32kF.js} +1 -1
  54. package/dist/client/assets/{automation-list-row-AaVS_thW.js → automation-list-row-Dq2Md0L2.js} +1 -1
  55. package/dist/client/assets/{automation-runs-CtBNdoCw.js → automation-runs-DxeqbBMl.js} +1 -1
  56. package/dist/client/assets/{automations-CaFTE7ZZ.js → automations-RKi2obC6.js} +1 -1
  57. package/dist/client/assets/{avatar-Bbv-vQmP.js → avatar-Oz8Lqgg4.js} +1 -1
  58. package/dist/client/assets/{badge-ntRHb2xe.js → badge-ho6xrCP4.js} +1 -1
  59. package/dist/client/assets/{block-document-CUi8tPcs.js → block-document-nMujhCPS.js} +1 -1
  60. package/dist/client/assets/{brand-context-2LkdpcNZ.js → brand-context-DcWPjFjP.js} +1 -1
  61. package/dist/client/assets/{buckets-DDlFW7BW.js → buckets-P0twp-Lm.js} +1 -1
  62. package/dist/client/assets/{capability-load-error-D4gZOly9.js → capability-load-error-DFTjyVYx.js} +1 -1
  63. package/dist/client/assets/{card-TqCh9vpE.js → card-PDEPm9MW.js} +1 -1
  64. package/dist/client/assets/{category-editor-DKUiS2HO.js → category-editor-DvGGcAON.js} +1 -1
  65. package/dist/client/assets/{chat-context-ZvIoYXlE.js → chat-context-JTwjeHTY.js} +1 -1
  66. package/dist/client/assets/{checkbox-CjmwO_qQ.js → checkbox-DiUfEdXJ.js} +1 -1
  67. package/dist/client/assets/{cli-auth-success-Qxw92IEP.js → cli-auth-success-v2tuS2CA.js} +1 -1
  68. package/dist/client/assets/{collection-detail-BluOmLke.js → collection-detail-BexHPDmG.js} +1 -1
  69. package/dist/client/assets/{collection-display-button-Bl1k9hmZ.js → collection-display-button-DRtWEjmQ.js} +1 -1
  70. package/dist/client/assets/{collection-search-rvdULW19.js → collection-search-DFAr6GQp.js} +1 -1
  71. package/dist/client/assets/{collection-tabs-Dbzrj6g8.js → collection-tabs-Lxahjwi-.js} +1 -1
  72. package/dist/client/assets/{command-xiPyikST.js → command-Cd-mPIB0.js} +1 -1
  73. package/dist/client/assets/commerce-onboarding-9AsTn3E2.js +1 -0
  74. package/dist/client/assets/{connect-desktop-dialog-CdehM8HT.js → connect-desktop-dialog-D-0UYkrF.js} +1 -1
  75. package/dist/client/assets/{connection-card-CCUMmOJp.js → connection-card-CQKxBh27.js} +1 -1
  76. package/dist/client/assets/{connection-detail-DU-yhlHH.js → connection-detail-DCn0Q_rd.js} +1 -1
  77. package/dist/client/assets/{connection-form-helpers-DwyZsmC2.js → connection-form-helpers-D9S11tHo.js} +1 -1
  78. package/dist/client/assets/{connections-TTpLAoSx.js → connections-BhO5lMQN.js} +1 -1
  79. package/dist/client/assets/{context-menu-C2_IMfFs.js → context-menu-DfXylCjH.js} +1 -1
  80. package/dist/client/assets/{decopilot-BfvheG4H.js → decopilot-Cdi5SbXT.js} +1 -1
  81. package/dist/client/assets/{decopilot-sse-pool-gPcdIlzZ.js → decopilot-sse-pool-DBKZPhuP.js} +1 -1
  82. package/dist/client/assets/{dialog-DNLq7rFW.js → dialog-B2DoU3ik.js} +1 -1
  83. package/dist/client/assets/{domain-settings-DL5sm-Tx.js → domain-settings-DiYR0YK6.js} +1 -1
  84. package/dist/client/assets/{drawer-DVmSmGnj.js → drawer-CnIonxgu.js} +1 -1
  85. package/dist/client/assets/{dropdown-menu-Cm5anyRF.js → dropdown-menu-C_iz5wEu.js} +1 -1
  86. package/dist/client/assets/{empty-state-BFpBC4xM.js → empty-state-Ccc7wvcy.js} +1 -1
  87. package/dist/client/assets/{extract-connection-data-B-Wrpl8q.js → extract-connection-data-D2gQKJCU.js} +1 -1
  88. package/dist/client/assets/{file-explorer-u0QHw7Ux.js → file-explorer-DkkhrQYG.js} +1 -1
  89. package/dist/client/assets/{file-type-icon-CHCPvP7h.js → file-type-icon-C05PEJrX.js} +1 -1
  90. package/dist/client/assets/{files-2TRWMcXR.js → files-BYWkFvwm.js} +1 -1
  91. package/dist/client/assets/{form-ot5ixpyH.js → form-DNh2q8t4.js} +1 -1
  92. package/dist/client/assets/{general-DVWcKhSH.js → general-BOUVk894.js} +1 -1
  93. package/dist/client/assets/{github-repo-picker-BRoi9lFR.js → github-repo-picker-Dl9Wu-Ij.js} +1 -1
  94. package/dist/client/assets/{hooks-BzM98nK3.js → hooks-CMI_9fmc.js} +1 -1
  95. package/dist/client/assets/{import-from-deco-dialog-JCrtglrI.js → import-from-deco-dialog-BOm9c3ra.js} +1 -1
  96. package/dist/client/assets/{index-CTcesiMm.js → index-73tVSzqh.js} +1 -1
  97. package/dist/client/assets/index-B1Be6Vk-.css +1 -0
  98. package/dist/client/assets/{index-C39E3PwA.js → index-BBs9Cr8d.js} +5 -5
  99. package/dist/client/assets/{index-CCFPAqFW.js → index-BgN9pI07.js} +1 -1
  100. package/dist/client/assets/{index-Z9CY6YwJ.js → index-C2eVEqgk.js} +1 -1
  101. package/dist/client/assets/{index-y4n-lKYx.js → index-CAaHR2ia.js} +1 -1
  102. package/dist/client/assets/{index-CSc53yD2.js → index-CBSe4ASl.js} +1 -1
  103. package/dist/client/assets/{index-D8YsxgRv.js → index-DLktrx94.js} +1 -1
  104. package/dist/client/assets/{index-DZm2C9d-.js → index-DNsPZaO7.js} +1 -1
  105. package/dist/client/assets/{index-B8-rjD8O.js → index-DVooRj31.js} +1 -1
  106. package/dist/client/assets/{index-EIfjWvhU.js → index-Dk42mrp5.js} +1 -1
  107. package/dist/client/assets/{index-BLwOjDz-.js → index-DptZZauK.js} +3 -3
  108. package/dist/client/assets/{index-QXhoa99l.js → index-ES9ctbJi.js} +1 -1
  109. package/dist/client/assets/{index-H4th1M1W.js → index-gBQPS-LW.js} +1 -1
  110. package/dist/client/assets/{index-redirect-CGFmrszq.js → index-redirect-C9wUdbB_.js} +1 -1
  111. package/dist/client/assets/{index-BYcSBhf-.js → index-zsQNpAC_.js} +1 -1
  112. package/dist/client/assets/{input-ClZRxnmh.js → input-Ch9q0aZa.js} +1 -1
  113. package/dist/client/assets/{integration-icon-BbB4oB5i.js → integration-icon-YoYYs9mF.js} +1 -1
  114. package/dist/client/assets/{label-BSGw8oBO.js → label-B-U7wEM-.js} +1 -1
  115. package/dist/client/assets/{login-CdTPEOBa.js → login-B6e0iAu4.js} +1 -1
  116. package/dist/client/assets/{mcp-oauth-B4Saszrk.js → mcp-oauth-DQE-04Mo.js} +1 -1
  117. package/dist/client/assets/{members-DBQhJ4XB.js → members-9KeuvWWT.js} +1 -1
  118. package/dist/client/assets/{monaco-editor-CzA3Yj-7.js → monaco-editor-DXogaJUp.js} +1 -1
  119. package/dist/client/assets/{monitoring-stats-row-D2iO8L9k.js → monitoring-stats-row-CP7I3KY2.js} +1 -1
  120. package/dist/client/assets/{oauth-callback-Bako7Xx5.js → oauth-callback-D18w_K8B.js} +1 -1
  121. package/dist/client/assets/{oauth-callback-ai-provider-kLVV98j9.js → oauth-callback-ai-provider-Cdap4ord.js} +1 -1
  122. package/dist/client/assets/{onboarding-DtVt1E-s.js → onboarding-BZkIK-Ka.js} +1 -1
  123. package/dist/client/assets/{org-install-BZEHE0yF.js → org-install-CjuXIws6.js} +1 -1
  124. package/dist/client/assets/{org-layout-BEbkmqhm.js → org-layout-Dej6DmSC.js} +1 -1
  125. package/dist/client/assets/{organization-choice-B0z1MsQp.js → organization-choice-Bfb5SfTa.js} +1 -1
  126. package/dist/client/assets/{page-seo-form-Dbv12H5K.js → page-seo-form-tpLbkMUL.js} +1 -1
  127. package/dist/client/assets/page-seo-sheet-CX2gPBcd.js +1 -0
  128. package/dist/client/assets/{popover-DrCzKeNI.js → popover-CEv2N3w9.js} +1 -1
  129. package/dist/client/assets/{post-editor-C-cvaP0F.js → post-editor-DvPV2O57.js} +1 -1
  130. package/dist/client/assets/{preview-dialog-Cent5BMR.js → preview-dialog-td-oVNia.js} +1 -1
  131. package/dist/client/assets/{primitives-Cmp-rnEw.js → primitives-VnhXlpi8.js} +1 -1
  132. package/dist/client/assets/{profile-CBVk-VK5.js → profile-WTH-rkk7.js} +1 -1
  133. package/dist/client/assets/project-app-view-D_C5eQR6.js +1 -0
  134. package/dist/client/assets/record-editor-DaKtfPzO.js +1 -0
  135. package/dist/client/assets/registry-CqA4momB.js +2 -0
  136. package/dist/client/assets/{registry-layout-fxT45x9G.js → registry-layout-Ce_TARWv.js} +1 -1
  137. package/dist/client/assets/{require-capability-FrFn5vuD.js → require-capability-BZgleI4m.js} +1 -1
  138. package/dist/client/assets/{required-auth-layout-5s5GmtQD.js → required-auth-layout-BaGKlYtx.js} +1 -1
  139. package/dist/client/assets/{reset-password-CCAC6jao.js → reset-password-0UzgtY5z.js} +1 -1
  140. package/dist/client/assets/{roles-C4EA0fe9.js → roles-C1AHKSTJ.js} +1 -1
  141. package/dist/client/assets/{save-status-CxoqkKc0.js → save-status-Dc26iXJB.js} +1 -1
  142. package/dist/client/assets/{scroll-area-AgEJrEaz.js → scroll-area-B3EoQYK2.js} +41 -41
  143. package/dist/client/assets/{search-input-Dr84Z3zy.js → search-input-CUilRo9d.js} +1 -1
  144. package/dist/client/assets/{secrets-Cv_31YKq.js → secrets-DUGdX_tt.js} +1 -1
  145. package/dist/client/assets/{sections-editor-CdYoJhgp.js → sections-editor-C2iZ1hVk.js} +1 -1
  146. package/dist/client/assets/{select-C0uicJXN.js → select-CJdBdWqY.js} +1 -1
  147. package/dist/client/assets/{select-model-k6DruMQz.js → select-model-CArerA8a.js} +1 -1
  148. package/dist/client/assets/{seo-editor-Davp-Ubf.js → seo-editor-CwsY379b.js} +1 -1
  149. package/dist/client/assets/{settings-layout-CMBq2oi7.js → settings-layout-CcwwB4g3.js} +1 -1
  150. package/dist/client/assets/{settings-section-BIy2qPd0.js → settings-section-BtP8pWPF.js} +1 -1
  151. package/dist/client/assets/{sheet-FzTZnAMo.js → sheet-DDFgoCvO.js} +1 -1
  152. package/dist/client/assets/{shell-controls-bcOU57uW.js → shell-controls-CrCNeNtn.js} +1 -1
  153. package/dist/client/assets/{shell-layout-CTx4S0SP.js → shell-layout-RHUNhd-E.js} +1 -1
  154. package/dist/client/assets/{shell-route-loading-7Bhg6e88.js → shell-route-loading-CxYzXt5f.js} +1 -1
  155. package/dist/client/assets/{sidebar-wPogh5H2.js → sidebar-aiqzS0KL.js} +1 -1
  156. package/dist/client/assets/{skeleton-DbxaKwuD.js → skeleton-vMVUiRn_.js} +1 -1
  157. package/dist/client/assets/{sortable.esm-ByCZlKMG.js → sortable.esm-B0o7kFIh.js} +1 -1
  158. package/dist/client/assets/{sso-BvHL8UBy.js → sso-Box6hROX.js} +1 -1
  159. package/dist/client/assets/{store-h2l8hrU9.js → store-B87zIBKS.js} +1 -1
  160. package/dist/client/assets/store-registry-Do9M9YHO.js +2 -0
  161. package/dist/client/assets/{studio-tools-Bub4-_ck.js → studio-tools-BY37pyys.js} +1 -1
  162. package/dist/client/assets/{switch-BIG_iZUi.js → switch-CZySgwCj.js} +1 -1
  163. package/dist/client/assets/{table-CL3GsV9E.js → table-D8KWGQn2.js} +1 -1
  164. package/dist/client/assets/{tabs-BBOxnNNJ.js → tabs-C_nkVbiW.js} +1 -1
  165. package/dist/client/assets/{task-status-C0jVgE2C.js → task-status-B3dgE7Vl.js} +1 -1
  166. package/dist/client/assets/{textarea-CiOzOVqH.js → textarea-WgNB0BrE.js} +1 -1
  167. package/dist/client/assets/{toggle-group-DGtMQR93.js → toggle-group-ZDWrpgGI.js} +1 -1
  168. package/dist/client/assets/{toolbar-BY-bt8fG.js → toolbar-CC7gZdrp.js} +1 -1
  169. package/dist/client/assets/{tooltip-N_gwtefU.js → tooltip-Cn4Fr4Nc.js} +1 -1
  170. package/dist/client/assets/{types-B4TXjhWy.js → types-BGHXNEpK.js} +1 -1
  171. package/dist/client/assets/{use-ai-providers-Bxs29-wG.js → use-ai-providers-Cc5cHyjW.js} +1 -1
  172. package/dist/client/assets/{use-automations-3L1xzB_A.js → use-automations-CcDuV2d6.js} +1 -1
  173. package/dist/client/assets/{use-capability-CxuRI8nR.js → use-capability-Bj9KYcez.js} +1 -1
  174. package/dist/client/assets/{use-clock-tick-D6kCNTAu.js → use-clock-tick-DS6HQj-T.js} +1 -1
  175. package/dist/client/assets/{use-collections-Bzpy7fbk.js → use-collections-JBGoJXV7.js} +1 -1
  176. package/dist/client/assets/{use-connection-BlwNcCfs.js → use-connection-D6MfbxRS.js} +1 -1
  177. package/dist/client/assets/{use-copy-C18cGMuZ.js → use-copy-DBmQNAjE.js} +1 -1
  178. package/dist/client/assets/{use-create-virtual-mcp-DjprLKRm.js → use-create-virtual-mcp-Djox-xO9.js} +1 -1
  179. package/dist/client/assets/{use-debounced-autosave-DwtJTCPs.js → use-debounced-autosave-D6UnZuik.js} +1 -1
  180. package/dist/client/assets/{use-delete-connection-BqUiZBIv.js → use-delete-connection-BlM46eDx.js} +1 -1
  181. package/dist/client/assets/{use-file-configs-DmpAJnrE.js → use-file-configs-Bpo5RzC0.js} +1 -1
  182. package/dist/client/assets/{use-infinite-scroll-D90uCAWk.js → use-infinite-scroll-CToI6Rk5.js} +1 -1
  183. package/dist/client/assets/{use-join-requests-XdoqGykA.js → use-join-requests-CBCoJ3mh.js} +1 -1
  184. package/dist/client/assets/{use-mcp-client-DTuk5FL3.js → use-mcp-client-CROrubmo.js} +1 -1
  185. package/dist/client/assets/{use-mcp-prompts-CCJeXeit.js → use-mcp-prompts-D0RIhc9f.js} +1 -1
  186. package/dist/client/assets/{use-mcp-tools-erMTNVPt.js → use-mcp-tools-Df4SfdHr.js} +1 -1
  187. package/dist/client/assets/{use-members-DVeZ57Fb.js → use-members-DyFFnkfi.js} +1 -1
  188. package/dist/client/assets/{use-mobile-CO6Qj17d.js → use-mobile-BRA9DBxz.js} +1 -1
  189. package/dist/client/assets/{use-navigate-to-agent-C5qzB5Os.js → use-navigate-to-agent-Cbubh-yV.js} +1 -1
  190. package/dist/client/assets/{use-org-auth-client-CFe_aocy.js → use-org-auth-client-oOo72Oq9.js} +1 -1
  191. package/dist/client/assets/{use-org-sso-CUKxi2Np.js → use-org-sso-Bp1ATxlv.js} +1 -1
  192. package/dist/client/assets/{use-organization-roles-DuVOs9is.js → use-organization-roles-FbsGo1TW.js} +1 -1
  193. package/dist/client/assets/{use-organization-settings-BKJdKRk2.js → use-organization-settings-CVnodPz6.js} +1 -1
  194. package/dist/client/assets/{use-registry-connections-BBgqLjED.js → use-registry-connections-DiD1GxkL.js} +1 -1
  195. package/dist/client/assets/{use-secrets-BjGeTk2k.js → use-secrets-zS4yVRiI.js} +1 -1
  196. package/dist/client/assets/{use-status-sounds-PgJJL_Xe.js → use-status-sounds-CkiMUfRN.js} +1 -1
  197. package/dist/client/assets/{use-view-mode-BVZfmz1B.js → use-view-mode-iWrWXNiJ.js} +1 -1
  198. package/dist/client/assets/{use-virtual-mcp-Bey-jE-7.js → use-virtual-mcp-BUyVS0ZN.js} +1 -1
  199. package/dist/client/assets/useInfiniteQuery-Dhot3ff6.js +1 -0
  200. package/dist/client/assets/useSuspenseInfiniteQuery-rXm6Ehme.js +1 -0
  201. package/dist/client/assets/{useSuspenseQueries-BW_N2GXU.js → useSuspenseQueries-AiXukE-T.js} +1 -1
  202. package/dist/client/assets/{variant-calendar-DtCm49M6.js → variant-calendar-B-rsy4S4.js} +1 -1
  203. package/dist/client/assets/{view-mode-toggle-CVV_-3gy.js → view-mode-toggle-C8lWSgq7.js} +1 -1
  204. package/dist/client/index.html +2 -2
  205. package/dist/server/cli.js +75 -14
  206. package/package.json +1 -1
  207. package/dist/client/assets/commerce-onboarding-oFh3OU00.js +0 -1
  208. package/dist/client/assets/index-U1Qbw0Xz.css +0 -1
  209. package/dist/client/assets/page-seo-sheet-CgJD2Pyd.js +0 -1
  210. package/dist/client/assets/project-app-view-CQBqVZeE.js +0 -1
  211. package/dist/client/assets/record-editor-DGhJ2SI5.js +0 -1
  212. package/dist/client/assets/registry-BSgelBeo.js +0 -2
  213. package/dist/client/assets/store-registry-GDMsvEZE.js +0 -2
  214. package/dist/client/assets/useInfiniteQuery-33NCNh33.js +0 -1
  215. package/dist/client/assets/useSuspenseInfiniteQuery-CfUDvQx6.js +0 -1
@@ -10182,7 +10182,7 @@ async function retry(fn, options) {
10182
10182
  }
10183
10183
  }
10184
10184
  // daemon/entry.ts
10185
- import { join as join14 } from "path";
10185
+ import { join as join15 } from "path";
10186
10186
 
10187
10187
  // daemon/activity.ts
10188
10188
  var lastActivityAt = Date.now();
@@ -78801,7 +78801,7 @@ function makeScriptsHandler(getScripts) {
78801
78801
 
78802
78802
  // daemon/setup/orchestrator.ts
78803
78803
  import { existsSync as existsSync8, unlinkSync as unlinkSync4 } from "fs";
78804
- import { join as join13 } from "path";
78804
+ import { join as join14 } from "path";
78805
78805
 
78806
78806
  // daemon/git/checkout-branch.ts
78807
78807
  function resolveRemoteDefaultBranch(repoDir) {
@@ -79106,6 +79106,59 @@ async function spawnClone(deps) {
79106
79106
  return 0;
79107
79107
  }
79108
79108
 
79109
+ // daemon/setup/dep-metrics.ts
79110
+ import { join as join11 } from "path";
79111
+ var MAX_DEPS = 1e4;
79112
+ function isPackageManifest(rel) {
79113
+ const d = rel.split("/").slice(0, -1);
79114
+ const n = d.length;
79115
+ if (n === 0)
79116
+ return false;
79117
+ if (n >= 2 && d[n - 2].startsWith("@")) {
79118
+ return n === 2 || d[n - 3] === "node_modules";
79119
+ }
79120
+ return n === 1 || d[n - 2] === "node_modules";
79121
+ }
79122
+ async function readInstalledDeps(nodeModulesDir) {
79123
+ const seen = new Map;
79124
+ const glob = new Bun.Glob("**/package.json");
79125
+ for await (const rel of glob.scan({
79126
+ cwd: nodeModulesDir,
79127
+ followSymlinks: false,
79128
+ dot: true
79129
+ })) {
79130
+ if (seen.size >= MAX_DEPS)
79131
+ break;
79132
+ if (!isPackageManifest(rel))
79133
+ continue;
79134
+ try {
79135
+ const raw = await Bun.file(join11(nodeModulesDir, rel)).json();
79136
+ const name24 = raw?.name;
79137
+ const version3 = raw?.version;
79138
+ if (typeof name24 !== "string" || typeof version3 !== "string")
79139
+ continue;
79140
+ seen.set(\`\${name24}@\${version3}\`, { name: name24, version: version3 });
79141
+ } catch {}
79142
+ }
79143
+ return [...seen.values()];
79144
+ }
79145
+ async function emitInstalledDeps(input) {
79146
+ try {
79147
+ const deps = await readInstalledDeps(join11(input.installRoot, "node_modules"));
79148
+ console.log(JSON.stringify({
79149
+ msg: "sandbox.install.deps",
79150
+ bootId: input.bootId,
79151
+ packageManager: input.packageManager,
79152
+ repoName: input.repoName,
79153
+ branch: input.branch,
79154
+ dependencyCount: deps.length,
79155
+ dependencies: deps
79156
+ }));
79157
+ } catch (err) {
79158
+ console.warn("[install] dep metrics emit failed", err);
79159
+ }
79160
+ }
79161
+
79109
79162
  // daemon/setup/identity.ts
79110
79163
  function configureGitIdentity(config2) {
79111
79164
  if (!config2.git?.identity?.userName || !config2.git?.identity?.userEmail)
@@ -79120,7 +79173,7 @@ function configureGitIdentity(config2) {
79120
79173
 
79121
79174
  // daemon/setup/install.ts
79122
79175
  import { existsSync as existsSync7 } from "fs";
79123
- import { join as join11 } from "path";
79176
+ import { join as join12 } from "path";
79124
79177
  function spawnInstall(deps) {
79125
79178
  const { config: config2 } = deps;
79126
79179
  const pm2 = config2.application?.packageManager?.name;
@@ -79132,7 +79185,7 @@ function spawnInstall(deps) {
79132
79185
  if (!pmConfig.install)
79133
79186
  return null;
79134
79187
  const installRoot = resolvePmRoot(config2.repoDir, config2.application?.packageManager?.path);
79135
- const hasManifest = pmConfig.manifests.some((file2) => existsSync7(join11(installRoot, file2)));
79188
+ const hasManifest = pmConfig.manifests.some((file2) => existsSync7(join12(installRoot, file2)));
79136
79189
  if (!hasManifest) {
79137
79190
  deps.onChunk("setup", \`\\r
79138
79191
  [install] no package manifest (\${pmConfig.manifests.join(" or ")}) found at \${installRoot} \\u2014 skipping install\\r
@@ -79152,7 +79205,7 @@ $ \${cmd}\\r
79152
79205
 
79153
79206
  // daemon/git/protect-branch.ts
79154
79207
  import { chmodSync, mkdirSync as mkdirSync5, writeFileSync as writeFileSync3 } from "fs";
79155
- import { join as join12 } from "path";
79208
+ import { join as join13 } from "path";
79156
79209
  var HOOK = \`#!/bin/sh
79157
79210
  while IFS=' ' read -r _local_ref _local_sha remote_ref _remote_sha; do
79158
79211
  branch="\\\${remote_ref#refs/heads/}"
@@ -79166,9 +79219,9 @@ done
79166
79219
  exit 0
79167
79220
  \`;
79168
79221
  function installProtectedBranchHook(repoDir) {
79169
- const hooksDir = join12(repoDir, ".git", "hooks");
79222
+ const hooksDir = join13(repoDir, ".git", "hooks");
79170
79223
  mkdirSync5(hooksDir, { recursive: true });
79171
- const hookPath = join12(hooksDir, "pre-push");
79224
+ const hookPath = join13(hooksDir, "pre-push");
79172
79225
  writeFileSync3(hookPath, HOOK, { encoding: "utf-8" });
79173
79226
  chmodSync(hookPath, 493);
79174
79227
  }
@@ -79378,7 +79431,8 @@ class SetupOrchestrator {
79378
79431
  this.broadcastDiscoveredScripts(config2);
79379
79432
  return true;
79380
79433
  }
79381
- if (!config2.application?.packageManager?.name) {
79434
+ const pm2 = config2.application?.packageManager?.name;
79435
+ if (!pm2) {
79382
79436
  return true;
79383
79437
  }
79384
79438
  this.deps.lifecycle.transition({ phase: "installing" });
@@ -79414,6 +79468,13 @@ class SetupOrchestrator {
79414
79468
  return false;
79415
79469
  }
79416
79470
  this.markInstallSucceeded(config2);
79471
+ emitInstalledDeps({
79472
+ installRoot: resolvePmRoot(config2.repoDir, config2.application?.packageManager?.path),
79473
+ packageManager: pm2,
79474
+ bootId: process.env.DAEMON_BOOT_ID ?? "",
79475
+ repoName: config2.git?.repository?.repoName,
79476
+ branch: config2.git?.repository?.branch
79477
+ });
79417
79478
  return true;
79418
79479
  }
79419
79480
  async stepStart() {
@@ -79502,7 +79563,7 @@ class SetupOrchestrator {
79502
79563
  const cwd = resolvePmRoot(config2.repoDir, config2.application?.packageManager?.path);
79503
79564
  const scripts = discoverScripts(cwd, pm2);
79504
79565
  if (scripts.length === 0) {
79505
- const hasManifest = pmConf?.manifests.some((f) => existsSync8(join13(cwd, f)));
79566
+ const hasManifest = pmConf?.manifests.some((f) => existsSync8(join14(cwd, f)));
79506
79567
  if (!hasManifest) {
79507
79568
  return \`\\r
79508
79569
  [orchestrator] skipping start: no package manifest (\${pmConf?.manifests.join(" or ")}) found at \${cwd} \\u2014 update the VM config if a dev server should run\\r
@@ -79987,13 +80048,13 @@ var bootConfig = {
79987
80048
  daemonToken: process.env.DAEMON_TOKEN ?? "",
79988
80049
  daemonBootId: process.env.DAEMON_BOOT_ID ?? "",
79989
80050
  appRoot: APP_ROOT,
79990
- repoDir: join14(APP_ROOT, "repo"),
80051
+ repoDir: join15(APP_ROOT, "repo"),
79991
80052
  proxyPort: parseInt(resolvedDaemonPort, 10),
79992
80053
  offloadAllowedHosts: (process.env.OFFLOAD_ALLOWED_HOSTS ?? "").split(",").map((h) => h.trim()).filter((h) => h.length > 0),
79993
80054
  offloadAllowSameHostDev: process.env.OFFLOAD_ALLOW_SAME_HOST_DEV === "1"
79994
80055
  };
79995
80056
  mkdirSync6(bootConfig.repoDir, { recursive: true });
79996
- var TMP_DIR = join14(APP_ROOT, "tmp");
80057
+ var TMP_DIR = join15(APP_ROOT, "tmp");
79997
80058
  var broadcaster = new Broadcaster(REPLAY_BYTES);
79998
80059
  var portSniffer = createPortSniffer();
79999
80060
  var broadcastChunkRaw = broadcaster.broadcastChunk.bind(broadcaster);
@@ -80506,11 +80567,11 @@ async function repointOutputLinkForRun(threadId) {
80506
80567
  return false;
80507
80568
  }
80508
80569
  await ensureRepoOrgLink(bootConfig.repoDir, orgFsLog);
80509
- const uploadsMountPath = join14(bootConfig.appRoot, "org", ".uploads");
80570
+ const uploadsMountPath = join15(bootConfig.appRoot, "org", ".uploads");
80510
80571
  if (mounts.some((m) => m.mountPath === uploadsMountPath)) {
80511
80572
  await repointUploadLink(bootConfig.appRoot, threadId, orgFsLog);
80512
80573
  }
80513
- const outputsMountPath = join14(bootConfig.appRoot, "org", ".outputs");
80574
+ const outputsMountPath = join15(bootConfig.appRoot, "org", ".outputs");
80514
80575
  if (!mounts.some((m) => m.mountPath === outputsMountPath))
80515
80576
  return false;
80516
80577
  if (!await repointOutputLink(bootConfig.appRoot, threadId, orgFsLog)) {
@@ -80749,7 +80810,7 @@ ${$}`;_(Z);return}if(E(null,B),t.strategy==="count"){if(w--,w===0)_()}if(t.strat
80749
80810
  SELECT * FROM link_sandboxes WHERE handle = $handle
80750
80811
  `);function _(v){if(t===void 0)return!0;let h=$M(v),D=h&&$M(t)?SVu(t):t,g=h?SVu(v):YVu(v),O=WQt(D,g);return O===""||!O.startsWith("..")&&!SQt(O)}return{upsert(v){f.run({$handle:v.handle,$status:v.status,$sandboxPath:v.sandboxPath,$port:v.port??null,$previewUrl:v.previewUrl??null,$repoCloneUrl:v.repoCloneUrl??null,$branch:v.branch??null,$projectName:v.projectName??null,$error:v.error??null,$now:Date.now()})},list(){return l.all().map(j1i)},reconcile(){let v=Date.now();for(let h of l.all().map(j1i)){if(!_(h.sandboxPath)){c.run({$handle:h.handle,$now:v});continue}if(!$M(h.sandboxPath)){E.run({$handle:h.handle,$now:v});continue}if(h.status==="spawning"||h.status==="ready"||h.status==="failed"||h.status==="missing")$.run({$handle:h.handle,$now:v})}return l.all().map(j1i)},prune(v){let h=[],D=[],g=this.reconcile();for(let O of g){if(!_(O.sandboxPath)){D.push({handle:O.handle,sandboxPath:O.sandboxPath,reason:"outside_root",deletedFiles:!1});continue}if(v.missing&&O.status==="missing"){w.run({$handle:O.handle}),h.push({handle:O.handle,sandboxPath:O.sandboxPath,reason:"missing",deletedFiles:!1});continue}if(!v.merged||!$M(O.sandboxPath))continue;if(O.branch===null||O.branch.trim()===""){D.push({handle:O.handle,sandboxPath:O.sandboxPath,reason:"no_branch",deletedFiles:!1});continue}if(!p2(O.sandboxPath,["rev-parse","--is-inside-work-tree"]).ok){D.push({handle:O.handle,sandboxPath:O.sandboxPath,reason:"git_unavailable",deletedFiles:!1});continue}let Z=p2(O.sandboxPath,["status","--porcelain"]);if(!Z.ok){D.push({handle:O.handle,sandboxPath:O.sandboxPath,reason:"git_unavailable",deletedFiles:!1});continue}if(Z.stdout.trim()!==""){D.push({handle:O.handle,sandboxPath:O.sandboxPath,reason:"dirty_worktree",deletedFiles:!1});continue}let B=LVu(O.sandboxPath,O.branch);if(B===null){D.push({handle:O.handle,sandboxPath:O.sandboxPath,reason:"git_unavailable",deletedFiles:!1});continue}if(!B){D.push({handle:O.handle,sandboxPath:O.sandboxPath,reason:"branch_not_merged",deletedFiles:!1});continue}KQt(O.sandboxPath,{recursive:!0,force:!0}),w.run({$handle:O.handle}),h.push({handle:O.handle,sandboxPath:O.sandboxPath,reason:"merged",deletedFiles:!0})}return{removed:h,skipped:D}},delete(v){w.run({$handle:v})},inspect(v){let h=d.get({$handle:v});if(h===null)return null;let D=j1i(h),g=0,O=null;if($M(D.sandboxPath)&&p2(D.sandboxPath,["rev-parse","--is-inside-work-tree"]).ok){let Z=p2(D.sandboxPath,["status","--porcelain"]);if(Z.ok){let B=Z.stdout.trim();g=B===""?0:B.split(`
80751
80812
  `).length}if(D.branch!==null&&D.branch.trim()!=="")O=LVu(D.sandboxPath,D.branch)}return{handle:D.handle,branch:D.branch,sandboxPath:D.sandboxPath,dirtyCount:g,merged:O}},close(){u.close()}}}var dHi=()=>{};function QVu(i,u){let t=u?[["umount","-f",i]]:[["fusermount","-u",i],["umount",i]];for(let f of t)if(Bun.spawnSync(f,{stdout:"ignore",stderr:"ignore",timeout:5000}).exitCode===0)break}import{existsSync as HQt,readdirSync as bQt}from"fs";import{rm as RQt}from"fs/promises";import{join as HVu}from"path";async function bVu(i,u={}){let t=u.detach??CQt,f=u.exists??HQt,l=u.readdir??(($)=>bQt($)),c=u.rm??(($)=>RQt($,{recursive:!0,force:!0})),E=HVu(i,"org");if(f(E))for(let $ of l(E))t(HVu(E,$));await c(i)}var CQt=(i)=>QVu(i,process.platform==="darwin");var RVu=()=>{};import{join as MQt}from"path";function CVu(i){let u=i.purge??bVu;return{stopSandbox(t){return i.provider.deleteSandbox(t)},inspectSandbox(t){return i.registry.inspect(t)},async removeSandbox(t){try{return await u6(async()=>{if(await i.provider.deleteSandbox(t),i.provider.hasHandle(t))throw Error("Can't delete \u2014 run in progress");let l=i.registry.inspect(t)?.sandboxPath??MQt(i.dataDir,"sandboxes",t);await u(l)},{maxAttempts:2,minTimeout:250,jitter:0}),i.registry.delete(t),{ok:!0}}catch(f){let l=f instanceof K6?f.cause:f;return{ok:!1,error:l instanceof Error?l.message:String(l)}}}}}var MVu=N(()=>{Bl();RVu()});import{randomBytes as qQt}from"crypto";import{mkdir as VQt}from"fs/promises";import{createServer as rQt}from"net";import{join as mQt}from"path";function qVu(i,u){return Error(`sandbox failed to start: ${i}`,{cause:u})}function eQt(i){if(!(i instanceof Error))return!1;return i.name==="TimeoutError"||/timed out|timeout|operation was aborted|aborted/i.test(i.message)}function VVu(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 aQt(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 oQt(i){return{repoCloneUrl:i.repo?.cloneUrl??null,branch:i.repo?.branch??null,projectName:aQt(i.repo?.cloneUrl)}}function rVu(i){let u=i.maxSandboxes??20,t=new Map,f=i.pickPort??sQt,l=i.fetchImpl??fetch,c=i.resolvePreviewUrl??((g,O)=>`http://127.0.0.1:${O}`),E=(g)=>mQt(i.dataDir,"sandboxes",g),$=(g)=>{try{i.registry?.upsert(g)}catch(O){console.warn(`[user-desktop] failed to persist sandbox lifecycle handle=${g.handle} status=${g.status}:`,O)}},w=(g)=>{try{i.onEvent?.(g)}catch{}},d=async(g)=>{let O=new AbortController,Z=setTimeout(()=>O.abort(),1500);try{let B=await l(`${g}/health`,{signal:O.signal});if(!B.ok)console.warn(`[user-desktop] probe ${g}/health \u2192 ${B.status} (treating as dead)`);return B.ok}catch(B){return console.warn(`[user-desktop] probe ${g}/health failed: ${B instanceof Error?B.message:String(B)} (treating as dead)`),!1}finally{clearTimeout(Z)}},_=(g)=>{console.warn(`[user-desktop] evicting dead daemon handle=${g.handle} port=${g.port}`);try{g.process.kill("SIGTERM")}catch{}if(t.get(g.handle)===g)t.delete(g.handle),$({handle:g.handle,status:"stopped",sandboxPath:E(g.handle),port:null,previewUrl:null,...g.registryMetadata,error:null}),w({handle:g.handle,phase:"evicted"})},v=new Map;function h(){if(t.size<u)return;let g=[...t.values()].filter((Z)=>Z.activeDispatchCount===0).sort((Z,B)=>Z.lastUsedAt-B.lastUsedAt);if(g.length===0){console.warn(`[user-desktop] at cap ${t.size}/${u} but every sandbox is pinned (active dispatch) \u2014 exceeding cap temporarily`);return}let O=g[0];console.log(`[user-desktop] evicting LRU victim handle=${O.handle} port=${O.port} (cap ${u} reached, size=${t.size})`);try{O.process.kill("SIGTERM")}catch{}t.delete(O.handle),$({handle:O.handle,status:"stopped",sandboxPath:E(O.handle),port:null,previewUrl:null,...O.registryMetadata,error:null}),w({handle:O.handle,phase:"evicted"})}let D=async(g)=>{let O=oQt(g),Z=E(g.handle);$({handle:g.handle,status:"spawning",sandboxPath:Z,port:null,previewUrl:null,...O,error:null}),w({handle:g.handle,phase:"spawning"}),h();let B,F=null,y;try{await VQt(Z,{recursive:!0}),console.log(`[user-desktop] ensure handle=${g.handle} repo=${g.repo?.cloneUrl??"(none)"} branch=${g.repo?.branch??"(none)"} runtime=${g.workload?.runtime??"(autodetect)"} pm=${g.workload?.packageManager??"(autodetect)"}`),y=qQt(24).toString("hex");let[j,A]=await Promise.all([f(),f()]);B=j,console.log(`[user-desktop] spawn handle=${g.handle} port=${B} devPort=${A} workdir=${Z}`),F=await Promise.resolve(i.spawnDaemon({workdir:Z,handle:g.handle,port:B,daemonToken:y,offloadAllowedHosts:g.offloadAllowedHosts??[],offloadAllowSameHostDev:g.offloadAllowSameHostDev??!1,orgFsConfigJson:g.orgFsConfigJson}));try{await i.waitForHealth(B)}catch(n){throw qVu("the sandbox didn't come online in time",n)}console.log(`[user-desktop] healthy handle=${g.handle} port=${B} \u2014 posting config`);try{await i.postConfig(B,A,{repo:g.repo,workload:g.workload,operator:g.operator},y)}catch(n){throw qVu(eQt(n)?"configuration timed out":"the sandbox rejected its configuration",n)}}catch(j){if(console.error(`[user-desktop] sandbox bring-up failed handle=${g.handle} port=${B??"(none)"}${F?" (killing daemon)":""}:`,j),F)try{F.kill("SIGKILL")}catch{}throw w({handle:g.handle,phase:"failed",error:VVu(j)}),$({handle:g.handle,status:"failed",sandboxPath:Z,port:null,previewUrl:null,...O,error:VVu(j)}),j}if(!F||B===void 0)throw Error("sandbox bring-up invariant violated");let T=`http://127.0.0.1:${B}`,U=c(g.handle,B);console.log(`[user-desktop] ready handle=${g.handle} port=${B} sandboxApiUrl=${T} previewUrl=${U}`);let I={handle:g.handle,port:B,process:F,sandboxApiUrl:T,previewUrl:U,lastUsedAt:Date.now(),activeDispatchCount:0,daemonToken:y,registryMetadata:O};if(t.set(g.handle,I),$({handle:g.handle,status:"ready",sandboxPath:Z,port:B,previewUrl:U,...O,error:null}),w({handle:g.handle,phase:"ready",port:B,previewUrl:U}),F.exited)F.exited.then(()=>{if(t.get(g.handle)===I)console.warn(`[user-desktop] daemon process exited unexpectedly handle=${g.handle} port=${B} \u2014 removing from cache`),t.delete(g.handle),$({handle:g.handle,status:"stopped",sandboxPath:Z,port:null,previewUrl:null,...O,error:null}),w({handle:g.handle,phase:"evicted"});else console.log(`[user-desktop] daemon process exited handle=${g.handle} port=${B} (already replaced/removed)`)});return{sandboxApiUrl:T,previewUrl:U,port:B}};return{async ensureSandbox(g){let O=t.get(g.handle);if(O){if(await d(O.sandboxApiUrl))return console.log(`[user-desktop] cache hit handle=${g.handle} port=${O.port} (alive)`),O.lastUsedAt=Date.now(),{sandboxApiUrl:O.sandboxApiUrl,previewUrl:O.previewUrl,port:O.port};console.warn(`[user-desktop] cache stale handle=${g.handle} port=${O.port} \u2014 respawning`),_(O)}let Z=v.get(g.handle);if(Z)return console.log(`[user-desktop] joining in-flight ensure handle=${g.handle}`),Z;let B=D(g).finally(()=>{v.delete(g.handle)});return v.set(g.handle,B),B},proxyPort(g){let O=t.get(g);if(O)O.lastUsedAt=Date.now();return O?.port??null},getDaemonToken(g){return t.get(g)?.daemonToken??null},hasHandle(g){return t.has(g)||v.has(g)},recordHit(g){let O=t.get(g);if(O)O.lastUsedAt=Date.now()},acquireDispatch(g){let O=t.get(g);if(!O)return()=>{};O.activeDispatchCount+=1;let Z=!1;return()=>{if(Z)return;Z=!0;let B=t.get(g);if(B)B.activeDispatchCount=Math.max(0,B.activeDispatchCount-1)}},listSandboxes(){return[...t.values()]},async deleteSandbox(g){let O=t.get(g);if(!O){console.log(`[user-desktop] delete handle=${g} (not found, no-op)`);return}if(O.activeDispatchCount>0){console.warn(`[user-desktop] delete handle=${g} port=${O.port} REFUSED \u2014 ${O.activeDispatchCount} active dispatch(es) in flight`);return}console.log(`[user-desktop] delete handle=${g} port=${O.port}`);try{O.process.kill("SIGTERM")}catch{}t.delete(g),$({handle:g,status:"stopped",sandboxPath:E(g),port:null,previewUrl:null,repoCloneUrl:null,branch:null,projectName:null,error:null}),w({handle:g,phase:"deleted"})},async shutdown(){console.log(`[user-desktop] shutdown \u2014 killing ${t.size} sandbox(es)`);for(let g of t.values())try{g.process.kill("SIGTERM")}catch{}t.clear()}}}function sQt(){return new Promise((i,u)=>{let t=rQt();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 mVu=()=>{};import{randomUUID as pQt}from"crypto";import{hostname as iHt}from"os";async function eVu(i){let u=iHt()||void 0;i.monitor?.onMachine?.(u??"this machine");let t=jHu(i.dataDir,{outFd:i.logFd,perSandboxLog:i.perSandboxLogs,hotReload:i.hotReload}),f=K1i({path:X1i(i.dataDir),managedSandboxRoot:`${i.dataDir}/sandboxes`}),l=!1,c=()=>{if(l)return;l=!0;try{f.close()}catch{}};try{let E=0,$=rVu({dataDir:i.dataDir,registry:f,resolvePreviewUrl:(n,q)=>E>0?`http://${n}.localhost:${E}`:`http://127.0.0.1:${q}`,spawnDaemon:async(n)=>{let q={DAEMON_BOOT_ID:pQt(),APP_ROOT:n.workdir,PROXY_PORT:String(n.port),DAEMON_TOKEN:n.daemonToken,OFFLOAD_ALLOWED_HOSTS:n.offloadAllowedHosts.join(","),...n.offloadAllowSameHostDev?{OFFLOAD_ALLOW_SAME_HOST_DEV:"1"}:{}};if(n.orgFsConfigJson){let Y=await SHu(i.dataDir);if(Y)q.ORGFS_CONFIG=n.orgFsConfigJson,q.ORGFS_RCLONE_PATH=Y}let S=await t({workdir:n.workdir,env:q,daemonPort:n.port});return{port:n.port,kill:(Y)=>S.kill(Y),exited:S.exited.then(()=>{return})}},postConfig:async(n,q,S,Y)=>{let V={port:q};if(S.workload)V.runtime=S.workload.runtime,V.packageManager={name:S.workload.packageManager,...S.workload.packageManagerPath?{path:S.workload.packageManagerPath}:{}};let L={application:V},Ei=od(S.operator??null);if(Ei)L.operator=Ei;if(S.repo)L.git={repository:{cloneUrl:S.repo.cloneUrl,branch:S.repo.branch},...S.repo.userName&&S.repo.userEmail?{identity:{userName:S.repo.userName,userEmail:S.repo.userEmail}}:{}};await cO(`http://127.0.0.1:${n}`,Y,L)},waitForHealth:async(n)=>{await K4i(`http://127.0.0.1:${n}`)},maxSandboxes:20,onEvent:i.monitor?.onEvent}),w=await UVu({port:i.port,lookupSandboxPort:(n)=>$.proxyPort(n)});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=WHu({provider:$}),_=async()=>{let n=await R2({dataDir:i.dataDir,target:i.clusterBaseUrl});if(!n)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 n.accessToken},v=await KVu(i.dataDir),h=process.env.npm_package_version??"0.0.0",D=await wHi(),g=jVu(D,{onChange:(n)=>{console.log(`[link-daemon] capabilities detected: +${n.join(",")} (now: ${D.join(",")})`)}}),O=oLi({path:`${i.dataDir}/link/outbox.sqlite`});O.clear();let Z=()=>{},B=new AbortController,F={clusterBaseUrl:i.clusterBaseUrl,getAccessToken:_,provider:$,outbox:O,controlHandler:d,capabilities:D,machineId:v,cliVersion:h,previewPort:w.port,onConnected:()=>{i.monitor?.onCluster?.("linked"),console.log(`Linked to ${i.clusterBaseUrl}`)},onShutdown:()=>Z(),runLifetimeSignal:B.signal};console.log(`[link-daemon] transport=tunnel cluster=${i.clusterBaseUrl}`);let y=await _Vu(F);console.log("[link-daemon] active transport=tunnel");let T,U=new Promise((n)=>{T=n}),I=!1,j=async()=>{if(I)return;I=!0,B.abort(),console.log(`
80752
- Shutting down\u2026`),g();try{await y.close()}catch{}try{await w.stop()}catch{}try{await $.shutdown()}catch{}try{O.close()}catch{}c(),T(0)};process.on("SIGINT",()=>void j()),process.on("SIGTERM",()=>void j()),Z=()=>{console.log("Disconnect requested from the Studio web UI \u2014 shutting down. Run `bunx decocms@latest link` to reconnect."),j()},y.closed.then(()=>{if(i.monitor?.onCluster?.("closed"),!I)console.error("Cluster connection closed permanently; exiting."),j()});let A=CVu({provider:$,registry:f,dataDir:i.dataDir});return{stopped:U,stop:j,stopSandbox:A.stopSandbox,removeSandbox:A.removeSandbox,inspectSandbox:A.inspectSandbox}}catch(E){throw c(),E}}var aVu=N(()=>{MLi();XC();XHu();YHu();LHu();sLi();vVu();PVu();XVu();JVu();jC();dHi();MVu();mVu()});function _Hi(i){return i.map((u)=>typeof u==="string"?u:String(u)).join(" ")}var J1i;var vHi=N(()=>{J1i={name:"decocms",version:"3.93.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.141.0","@openai/codex-darwin-arm64":"npm:@openai/codex@0.141.0-darwin-arm64","@openai/codex-darwin-x64":"npm:@openai/codex@0.141.0-darwin-x64","@openai/codex-linux-arm64":"npm:@openai/codex@0.141.0-linux-arm64","@openai/codex-linux-x64":"npm:@openai/codex@0.141.0-linux-x64","@openai/codex-win32-arm64":"npm:@openai/codex@0.141.0-win32-arm64","@openai/codex-win32-x64":"npm:@openai/codex@0.141.0-win32-x64"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@dnd-kit/core":"^6.3.1","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@inkjs/ui":"^2.0.0","@modelcontextprotocol/ext-apps":"^1.7.1","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","@tanstack/react-virtual":"3.13.24","@xterm/addon-fit":"^0.11.0","@xterm/xterm":"^6.0.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0","@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",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"},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 wM={};Qi(wM,{printBanner:()=>fHt,bannerLines:()=>oVu,BANNER_LINES:()=>S1i,BANNER_GRADIENT:()=>Y1i});function tHt(i){let u=Number.parseInt(i.slice(1),16);return[u>>16&255,u>>8&255,u&255]}function oVu(i){let u=S1i.map((t,f)=>{let[l,c,E]=tHt(Y1i[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 fHt(i){console.log("");for(let u of oVu(i))console.log(u);console.log("")}var S1i,Y1i;var FY=N(()=>{S1i=[" \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 "],Y1i=["#00ff64","#00ee5e","#00dc56","#00c84e","#00b444","#00a03c","#008832","#006e28"]});import{Box as lHt,Text as sVu}from"ink";import{jsx as cHt,jsxs as pVu}from"react/jsx-runtime";function W1i({version:i}){return pVu(lHt,{flexDirection:"column",marginTop:1,children:[S1i.map((u,t)=>cHt(sVu,{color:Y1i[t],children:u},t)),pVu(sVu,{dimColor:!0,children:[" v",i]})]})}var hHi=N(()=>{FY()});function iru(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 yY(i){return[...i.values()].map((u)=>u.handle).sort((u,t)=>u.localeCompare(t))}function uru(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 tru(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 OHi={};Qi(OHi,{subscribeLinkState:()=>DHi,setSelectedHandle:()=>gHi,setRemoving:()=>Q1i,setPersistedSandboxes:()=>NHt,setPendingConfirm:()=>_M,setMachine:()=>vHt,setLogPath:()=>DHt,setLinkActions:()=>gHt,setIngress:()=>_Ht,setDaemonError:()=>hHt,setClusterUrl:()=>dHt,setCluster:()=>wHt,setActionError:()=>z1i,resetLinkStateForTests:()=>ZHt,removeSandboxRow:()=>NHi,pushSandboxEvent:()=>OHt,getLinkState:()=>dM,applySandboxEvent:()=>fru});function $Ht(i){return i==="spawning"||i==="ready"||i==="failed"}function fru(i,u){let t=new Map(i),f=t.get(u.handle);if(u.phase==="evicted"||u.phase==="deleted"){if(f)t.set(u.handle,{...f,port:null,previewUrl:null,status:"stopped",error:null});return t}return t.set(u.handle,{handle:u.handle,port:u.port??f?.port??null,previewUrl:u.previewUrl??f?.previewUrl??null,status:u.phase,error:u.phase==="failed"?u.error??"failed":null,projectName:f?.projectName??null,branch:f?.branch??null,sandboxPath:f?.sandboxPath??null}),t}function lru(){return{cluster:"connecting",clusterUrl:null,ingressUrl:null,ingressPort:null,machine:null,cap:EHt,sandboxes:new Map,daemonError:null,logPath:null,selectedHandle:null,pendingConfirm:null,removingHandles:new Set,actionError:null,actions:null}}function X$(){for(let i of L1i)i()}function dM(){return tf}function DHi(i){return L1i.add(i),()=>L1i.delete(i)}function wHt(i){tf={...tf,cluster:i},X$()}function dHt(i){tf={...tf,clusterUrl:i},X$()}function _Ht(i,u){tf={...tf,ingressPort:i,ingressUrl:u},X$()}function vHt(i){tf={...tf,machine:i},X$()}function hHt(i){tf={...tf,daemonError:i},X$()}function DHt(i){tf={...tf,logPath:i},X$()}function gHi(i){tf={...tf,selectedHandle:i},X$()}function _M(i){tf={...tf,pendingConfirm:i},X$()}function z1i(i){tf={...tf,actionError:i},X$()}function Q1i(i,u){if(tf.removingHandles.has(i)===u)return;let t=new Set(tf.removingHandles);if(u)t.add(i);else t.delete(i);tf={...tf,removingHandles:t},X$()}function gHt(i){tf={...tf,actions:i},X$()}function NHi(i){let u=yY(tf.sandboxes),t=tru(u,i,tf.selectedHandle),f=new Map(tf.sandboxes);f.delete(i);let l=new Set(tf.removingHandles);l.delete(i),tf={...tf,sandboxes:f,selectedHandle:t,pendingConfirm:null,removingHandles:l},X$()}function NHt(i){let u=new Map;for(let t of i)u.set(t.handle,{handle:t.handle,port:t.port,previewUrl:t.previewUrl,status:t.status,error:t.error,projectName:t.projectName,branch:t.branch,sandboxPath:t.sandboxPath});for(let[t,f]of tf.sandboxes)if($Ht(f.status))u.set(t,f);tf={...tf,sandboxes:u},X$()}function OHt(i){tf={...tf,sandboxes:fru(tf.sandboxes,i)},X$()}function ZHt(){tf=lru(),L1i.clear()}var EHt=20,tf,L1i;var vM=N(()=>{tf=lru(),L1i=new Set});import{spawn as BHt}from"child_process";function FHt(i){if(i==="darwin")return"open";if(i==="win32")return"start";return"xdg-open"}function cru(i,u=process.platform){let t=FHt(u);try{BHt(t,[i],{stdio:"ignore",detached:!0}).unref()}catch{}}var Eru=()=>{};function $ru(i,u={}){let t=u.openUrl??cru,f=dM(),l=yY(f.sandboxes),c=f.selectedHandle!==null&&l.includes(f.selectedHandle)?f.selectedHandle:l[0]??null,E=f.actions;switch(i.type){case"move":gHi(uru(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);z1i(null),_M({handle:c,branch:$?.branch??w?.branch??null,dirtyCount:$?.dirtyCount??0,merged:$?.merged??null});return}case"confirmYes":{let $=f.pendingConfirm;if(_M(null),$===null||!E)return;Q1i($.handle,!0),E.removeSandbox($.handle).then((w)=>{if(w.ok)NHi($.handle);else Q1i($.handle,!1),z1i(w.error)});return}case"confirmNo":_M(null);return;case"quit":if(E)E.quit();return}}var wru=N(()=>{vM();Eru()});function dru(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 _ru={};Qi(_ru,{LinkApp:()=>PHt});import{Box as H1,Text as cl,useInput as yHt}from"ink";import{useSyncExternalStore as THt}from"react";import{jsx as xf,jsxs as w5}from"react/jsx-runtime";function UHt(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 PHt(){let i=THt(DHi,dM),u=[...i.sandboxes.values()].sort((l,c)=>l.handle.localeCompare(c.handle)),t=yY(i.sandboxes),f=i.selectedHandle!==null&&t.includes(i.selectedHandle)?i.selectedHandle:t[0]??null;return yHt((l,c)=>{let E=dru(l,c,i.pendingConfirm!==null);if(E!==null)$ru(E)}),w5(H1,{flexDirection:"column",children:[xf(W1i,{version:J1i.version}),xf(H1,{marginBottom:1,children:xf(cl,{dimColor:!0,children:"\u2500".repeat(80)})}),xf(H1,{children:i.cluster==="linked"?w5(cl,{color:"green",children:["\u2713 Connected to ",i.clusterUrl??"deco"]}):i.cluster==="connecting"?w5(cl,{color:"yellow",children:["\u25CC Connecting to ",i.clusterUrl??"deco","\u2026"]}):w5(cl,{color:"red",children:["\u2717 Disconnected from ",i.clusterUrl??"deco"]})}),xf(H1,{children:i.ingressUrl?w5(cl,{color:"green",children:["\u2713 Serving at ",i.ingressUrl]}):xf(cl,{dimColor:!0,children:"\u25CC Starting local server\u2026"})}),xf(H1,{marginBottom:1,children:xf(cl,{dimColor:!0,children:`${"Computer".padEnd(16)}${i.machine??"this computer"} \xB7 ${u.length} of ${i.cap} previews`})}),u.length===0?xf(cl,{dimColor:!0,children:"No previews running yet."}):w5(H1,{flexDirection:"column",children:[w5(H1,{children:[xf(H1,{width:2,flexShrink:0}),xf(H1,{width:TY.project,flexShrink:0,marginRight:1,children:xf(cl,{dimColor:!0,wrap:"truncate-end",children:"PROJECT"})}),xf(H1,{width:TY.branch,flexShrink:0,marginRight:1,children:xf(cl,{dimColor:!0,wrap:"truncate-end",children:"BRANCH"})}),xf(H1,{width:TY.status,flexShrink:0,marginRight:1,children:xf(cl,{dimColor:!0,wrap:"truncate-end",children:"STATUS"})}),xf(H1,{flexGrow:1,children:xf(cl,{dimColor:!0,wrap:"truncate-end",children:"PREVIEW URL"})})]}),u.map((l)=>{let c=UHt(l,i.removingHandles.has(l.handle)),E=l.handle===f;return w5(H1,{children:[xf(H1,{width:2,flexShrink:0,children:xf(cl,{color:"cyan",children:E?"\u203A":" "})}),xf(H1,{width:TY.project,flexShrink:0,marginRight:1,children:xf(cl,{bold:E,wrap:"truncate-end",children:l.projectName??l.handle})}),xf(H1,{width:TY.branch,flexShrink:0,marginRight:1,children:xf(cl,{bold:E,wrap:"truncate-end",children:l.branch??"\u2014"})}),xf(H1,{width:TY.status,flexShrink:0,marginRight:1,children:xf(cl,{color:c.color,bold:E,wrap:"truncate-end",children:c.text})}),xf(H1,{flexGrow:1,children:xf(cl,{dimColor:!0,wrap:"truncate-end",children:l.previewUrl??"\u2014"})})]},l.handle)})]}),i.daemonError?xf(H1,{marginTop:1,children:w5(cl,{color:"red",children:["\u26A0 ",i.daemonError]})}):null,i.logPath?xf(H1,{marginTop:1,children:w5(cl,{dimColor:!0,children:["Logs: ",i.logPath]})}):null,i.pendingConfirm?xf(H1,{marginTop:1,children:xf(cl,{color:"yellow",children:iru(i.pendingConfirm)})}):null,i.actionError?xf(H1,{marginTop:1,children:w5(cl,{color:"red",children:["\u2717 ",i.actionError]})}):null,xf(H1,{marginTop:1,children:xf(cl,{dimColor:!0,children:"\u2191\u2193 move \xB7 s stop \xB7 d delete \xB7 o open \xB7 q quit"})})]})}var TY;var vru=N(()=>{vHi();hHi();wru();vM();TY={project:18,branch:22,status:14}});var hru={};Qi(hru,{runLinkCommand:()=>XHt});import{closeSync as xHt,mkdirSync as IHt,openSync as AHt,writeSync as GHt}from"fs";import{homedir as nHt}from"os";import{join as ZHi}from"path";function kHt(i,u){let t={log:console.log,warn:console.warn,error:console.error},f=(l)=>{if(u===void 0)return;try{GHt(u,`${_Hi(l)}
80813
+ Shutting down\u2026`),g();try{await y.close()}catch{}try{await w.stop()}catch{}try{await $.shutdown()}catch{}try{O.close()}catch{}c(),T(0)};process.on("SIGINT",()=>void j()),process.on("SIGTERM",()=>void j()),Z=()=>{console.log("Disconnect requested from the Studio web UI \u2014 shutting down. Run `bunx decocms@latest link` to reconnect."),j()},y.closed.then(()=>{if(i.monitor?.onCluster?.("closed"),!I)console.error("Cluster connection closed permanently; exiting."),j()});let A=CVu({provider:$,registry:f,dataDir:i.dataDir});return{stopped:U,stop:j,stopSandbox:A.stopSandbox,removeSandbox:A.removeSandbox,inspectSandbox:A.inspectSandbox}}catch(E){throw c(),E}}var aVu=N(()=>{MLi();XC();XHu();YHu();LHu();sLi();vVu();PVu();XVu();JVu();jC();dHi();MVu();mVu()});function _Hi(i){return i.map((u)=>typeof u==="string"?u:String(u)).join(" ")}var J1i;var vHi=N(()=>{J1i={name:"decocms",version:"3.94.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.141.0","@openai/codex-darwin-arm64":"npm:@openai/codex@0.141.0-darwin-arm64","@openai/codex-darwin-x64":"npm:@openai/codex@0.141.0-darwin-x64","@openai/codex-linux-arm64":"npm:@openai/codex@0.141.0-linux-arm64","@openai/codex-linux-x64":"npm:@openai/codex@0.141.0-linux-x64","@openai/codex-win32-arm64":"npm:@openai/codex@0.141.0-win32-arm64","@openai/codex-win32-x64":"npm:@openai/codex@0.141.0-win32-x64"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@dnd-kit/core":"^6.3.1","@dnd-kit/sortable":"^10.0.0","@dnd-kit/utilities":"^3.2.2","@inkjs/ui":"^2.0.0","@modelcontextprotocol/ext-apps":"^1.7.1","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","@tanstack/react-virtual":"3.13.24","@xterm/addon-fit":"^0.11.0","@xterm/xterm":"^6.0.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0","@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",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"},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 wM={};Qi(wM,{printBanner:()=>fHt,bannerLines:()=>oVu,BANNER_LINES:()=>S1i,BANNER_GRADIENT:()=>Y1i});function tHt(i){let u=Number.parseInt(i.slice(1),16);return[u>>16&255,u>>8&255,u&255]}function oVu(i){let u=S1i.map((t,f)=>{let[l,c,E]=tHt(Y1i[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 fHt(i){console.log("");for(let u of oVu(i))console.log(u);console.log("")}var S1i,Y1i;var FY=N(()=>{S1i=[" \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 "],Y1i=["#00ff64","#00ee5e","#00dc56","#00c84e","#00b444","#00a03c","#008832","#006e28"]});import{Box as lHt,Text as sVu}from"ink";import{jsx as cHt,jsxs as pVu}from"react/jsx-runtime";function W1i({version:i}){return pVu(lHt,{flexDirection:"column",marginTop:1,children:[S1i.map((u,t)=>cHt(sVu,{color:Y1i[t],children:u},t)),pVu(sVu,{dimColor:!0,children:[" v",i]})]})}var hHi=N(()=>{FY()});function iru(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 yY(i){return[...i.values()].map((u)=>u.handle).sort((u,t)=>u.localeCompare(t))}function uru(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 tru(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 OHi={};Qi(OHi,{subscribeLinkState:()=>DHi,setSelectedHandle:()=>gHi,setRemoving:()=>Q1i,setPersistedSandboxes:()=>NHt,setPendingConfirm:()=>_M,setMachine:()=>vHt,setLogPath:()=>DHt,setLinkActions:()=>gHt,setIngress:()=>_Ht,setDaemonError:()=>hHt,setClusterUrl:()=>dHt,setCluster:()=>wHt,setActionError:()=>z1i,resetLinkStateForTests:()=>ZHt,removeSandboxRow:()=>NHi,pushSandboxEvent:()=>OHt,getLinkState:()=>dM,applySandboxEvent:()=>fru});function $Ht(i){return i==="spawning"||i==="ready"||i==="failed"}function fru(i,u){let t=new Map(i),f=t.get(u.handle);if(u.phase==="evicted"||u.phase==="deleted"){if(f)t.set(u.handle,{...f,port:null,previewUrl:null,status:"stopped",error:null});return t}return t.set(u.handle,{handle:u.handle,port:u.port??f?.port??null,previewUrl:u.previewUrl??f?.previewUrl??null,status:u.phase,error:u.phase==="failed"?u.error??"failed":null,projectName:f?.projectName??null,branch:f?.branch??null,sandboxPath:f?.sandboxPath??null}),t}function lru(){return{cluster:"connecting",clusterUrl:null,ingressUrl:null,ingressPort:null,machine:null,cap:EHt,sandboxes:new Map,daemonError:null,logPath:null,selectedHandle:null,pendingConfirm:null,removingHandles:new Set,actionError:null,actions:null}}function X$(){for(let i of L1i)i()}function dM(){return tf}function DHi(i){return L1i.add(i),()=>L1i.delete(i)}function wHt(i){tf={...tf,cluster:i},X$()}function dHt(i){tf={...tf,clusterUrl:i},X$()}function _Ht(i,u){tf={...tf,ingressPort:i,ingressUrl:u},X$()}function vHt(i){tf={...tf,machine:i},X$()}function hHt(i){tf={...tf,daemonError:i},X$()}function DHt(i){tf={...tf,logPath:i},X$()}function gHi(i){tf={...tf,selectedHandle:i},X$()}function _M(i){tf={...tf,pendingConfirm:i},X$()}function z1i(i){tf={...tf,actionError:i},X$()}function Q1i(i,u){if(tf.removingHandles.has(i)===u)return;let t=new Set(tf.removingHandles);if(u)t.add(i);else t.delete(i);tf={...tf,removingHandles:t},X$()}function gHt(i){tf={...tf,actions:i},X$()}function NHi(i){let u=yY(tf.sandboxes),t=tru(u,i,tf.selectedHandle),f=new Map(tf.sandboxes);f.delete(i);let l=new Set(tf.removingHandles);l.delete(i),tf={...tf,sandboxes:f,selectedHandle:t,pendingConfirm:null,removingHandles:l},X$()}function NHt(i){let u=new Map;for(let t of i)u.set(t.handle,{handle:t.handle,port:t.port,previewUrl:t.previewUrl,status:t.status,error:t.error,projectName:t.projectName,branch:t.branch,sandboxPath:t.sandboxPath});for(let[t,f]of tf.sandboxes)if($Ht(f.status))u.set(t,f);tf={...tf,sandboxes:u},X$()}function OHt(i){tf={...tf,sandboxes:fru(tf.sandboxes,i)},X$()}function ZHt(){tf=lru(),L1i.clear()}var EHt=20,tf,L1i;var vM=N(()=>{tf=lru(),L1i=new Set});import{spawn as BHt}from"child_process";function FHt(i){if(i==="darwin")return"open";if(i==="win32")return"start";return"xdg-open"}function cru(i,u=process.platform){let t=FHt(u);try{BHt(t,[i],{stdio:"ignore",detached:!0}).unref()}catch{}}var Eru=()=>{};function $ru(i,u={}){let t=u.openUrl??cru,f=dM(),l=yY(f.sandboxes),c=f.selectedHandle!==null&&l.includes(f.selectedHandle)?f.selectedHandle:l[0]??null,E=f.actions;switch(i.type){case"move":gHi(uru(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);z1i(null),_M({handle:c,branch:$?.branch??w?.branch??null,dirtyCount:$?.dirtyCount??0,merged:$?.merged??null});return}case"confirmYes":{let $=f.pendingConfirm;if(_M(null),$===null||!E)return;Q1i($.handle,!0),E.removeSandbox($.handle).then((w)=>{if(w.ok)NHi($.handle);else Q1i($.handle,!1),z1i(w.error)});return}case"confirmNo":_M(null);return;case"quit":if(E)E.quit();return}}var wru=N(()=>{vM();Eru()});function dru(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 _ru={};Qi(_ru,{LinkApp:()=>PHt});import{Box as H1,Text as cl,useInput as yHt}from"ink";import{useSyncExternalStore as THt}from"react";import{jsx as xf,jsxs as w5}from"react/jsx-runtime";function UHt(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 PHt(){let i=THt(DHi,dM),u=[...i.sandboxes.values()].sort((l,c)=>l.handle.localeCompare(c.handle)),t=yY(i.sandboxes),f=i.selectedHandle!==null&&t.includes(i.selectedHandle)?i.selectedHandle:t[0]??null;return yHt((l,c)=>{let E=dru(l,c,i.pendingConfirm!==null);if(E!==null)$ru(E)}),w5(H1,{flexDirection:"column",children:[xf(W1i,{version:J1i.version}),xf(H1,{marginBottom:1,children:xf(cl,{dimColor:!0,children:"\u2500".repeat(80)})}),xf(H1,{children:i.cluster==="linked"?w5(cl,{color:"green",children:["\u2713 Connected to ",i.clusterUrl??"deco"]}):i.cluster==="connecting"?w5(cl,{color:"yellow",children:["\u25CC Connecting to ",i.clusterUrl??"deco","\u2026"]}):w5(cl,{color:"red",children:["\u2717 Disconnected from ",i.clusterUrl??"deco"]})}),xf(H1,{children:i.ingressUrl?w5(cl,{color:"green",children:["\u2713 Serving at ",i.ingressUrl]}):xf(cl,{dimColor:!0,children:"\u25CC Starting local server\u2026"})}),xf(H1,{marginBottom:1,children:xf(cl,{dimColor:!0,children:`${"Computer".padEnd(16)}${i.machine??"this computer"} \xB7 ${u.length} of ${i.cap} previews`})}),u.length===0?xf(cl,{dimColor:!0,children:"No previews running yet."}):w5(H1,{flexDirection:"column",children:[w5(H1,{children:[xf(H1,{width:2,flexShrink:0}),xf(H1,{width:TY.project,flexShrink:0,marginRight:1,children:xf(cl,{dimColor:!0,wrap:"truncate-end",children:"PROJECT"})}),xf(H1,{width:TY.branch,flexShrink:0,marginRight:1,children:xf(cl,{dimColor:!0,wrap:"truncate-end",children:"BRANCH"})}),xf(H1,{width:TY.status,flexShrink:0,marginRight:1,children:xf(cl,{dimColor:!0,wrap:"truncate-end",children:"STATUS"})}),xf(H1,{flexGrow:1,children:xf(cl,{dimColor:!0,wrap:"truncate-end",children:"PREVIEW URL"})})]}),u.map((l)=>{let c=UHt(l,i.removingHandles.has(l.handle)),E=l.handle===f;return w5(H1,{children:[xf(H1,{width:2,flexShrink:0,children:xf(cl,{color:"cyan",children:E?"\u203A":" "})}),xf(H1,{width:TY.project,flexShrink:0,marginRight:1,children:xf(cl,{bold:E,wrap:"truncate-end",children:l.projectName??l.handle})}),xf(H1,{width:TY.branch,flexShrink:0,marginRight:1,children:xf(cl,{bold:E,wrap:"truncate-end",children:l.branch??"\u2014"})}),xf(H1,{width:TY.status,flexShrink:0,marginRight:1,children:xf(cl,{color:c.color,bold:E,wrap:"truncate-end",children:c.text})}),xf(H1,{flexGrow:1,children:xf(cl,{dimColor:!0,wrap:"truncate-end",children:l.previewUrl??"\u2014"})})]},l.handle)})]}),i.daemonError?xf(H1,{marginTop:1,children:w5(cl,{color:"red",children:["\u26A0 ",i.daemonError]})}):null,i.logPath?xf(H1,{marginTop:1,children:w5(cl,{dimColor:!0,children:["Logs: ",i.logPath]})}):null,i.pendingConfirm?xf(H1,{marginTop:1,children:xf(cl,{color:"yellow",children:iru(i.pendingConfirm)})}):null,i.actionError?xf(H1,{marginTop:1,children:w5(cl,{color:"red",children:["\u2717 ",i.actionError]})}):null,xf(H1,{marginTop:1,children:xf(cl,{dimColor:!0,children:"\u2191\u2193 move \xB7 s stop \xB7 d delete \xB7 o open \xB7 q quit"})})]})}var TY;var vru=N(()=>{vHi();hHi();wru();vM();TY={project:18,branch:22,status:14}});var hru={};Qi(hru,{runLinkCommand:()=>XHt});import{closeSync as xHt,mkdirSync as IHt,openSync as AHt,writeSync as GHt}from"fs";import{homedir as nHt}from"os";import{join as ZHi}from"path";function kHt(i,u){let t={log:console.log,warn:console.warn,error:console.error},f=(l)=>{if(u===void 0)return;try{GHt(u,`${_Hi(l)}
80753
80814
  `)}catch{}};return console.log=(...l)=>f(l),console.warn=(...l)=>f(l),console.error=(...l)=>{f(l),i(_Hi(l))},()=>{console.log=t.log,console.warn=t.warn,console.error=t.error}}async function jHt(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 XHt(i={}){let u=i.port??5174,t=i.dataDir??process.env.DATA_DIR??process.env.DECOCMS_HOME??ZHi(nHt(),"deco"),f=i.clusterBaseUrl??process.env.MESH_CLUSTER_URL??"https://studio.decocms.com",l,c,E,$=()=>{if(E===void 0)return;try{E.close()}catch{}finally{E=void 0}};try{let w=ZHi(t,"sandboxes");E=K1i({path:X1i(t),managedSandboxRoot:w});let d=await n4i({dataDir:t,intent:"Link",target:f});if(process.env.DECOCMS_LINK_MANAGED!=="1")await jHt(f,d.accessToken);let _=E.reconcile();if(i.prune){let g=E.prune({missing:!0,merged:!0});if(!i.tui)console.log(`Pruned local sandboxes: removed ${g.removed.length}, skipped ${g.skipped.length}.`);_=E.reconcile()}let v;if(i.tui){let{render:g}=await import("ink"),{createElement:O}=await import("react"),{LinkApp:Z}=await Promise.resolve().then(() => (vru(),_ru)),{pushSandboxEvent:B,setCluster:F,setClusterUrl:y,setDaemonError:T,setIngress:U,setLogPath:I,setMachine:j,setPersistedSandboxes:A}=await Promise.resolve().then(() => (vM(),OHi));IHt(t,{recursive:!0});let n=ZHi(t,"link.log");c=AHt(n,"w"),I(n),A(_),y(f),F("connecting"),v={onEvent:(q)=>B(q),onIngress:(q)=>U(q,`http://127.0.0.1:${q}`),onCluster:(q)=>F(q),onMachine:(q)=>j(q)},l=kHt(T,c),g(O(Z),{patchConsole:!1})}else if(i.banner!==!1){let{printBanner:g}=await Promise.resolve().then(() => (FY(),wM));g(i.version??"0.0.0")}$();let h=process.env.DECOCMS_LINK_MANAGED!=="1",D=await eVu({port:u,clusterBaseUrl:f,dataDir:t,session:d,monitor:v,logFd:c,perSandboxLogs:h,hotReload:i.hotReload});if(i.tui){let{setLinkActions:g}=await Promise.resolve().then(() => (vM(),OHi));g({stopSandbox:D.stopSandbox,removeSandbox:D.removeSandbox,inspectSandbox:D.inspectSandbox,quit:D.stop})}return await D.stopped}catch(w){return l?.(),console.error(w instanceof Error?w.message:String(w)),1}finally{if(l?.(),c!==void 0)try{xHt(c)}catch{}$()}}var Dru=N(()=>{CLi();aVu();dHi()});var PHi={};Qi(PHi,{resolveDevLinkClusterUrl:()=>YHt,populateDevLinkToxiProxy:()=>Fru,isDevLinkToxiProxyEnabled:()=>SHt,ensureDevLinkToxiProxy:()=>HHt,buildDevLinkToxiProxyConfig:()=>Zru,DEV_LINK_TOXIPROXY_SERVICE_NAME:()=>Nru,DEV_LINK_TOXIPROXY_PROXY_NAME:()=>Oru});function SHt(i=process.env){return i.DECO_DEV_LINK_TOXIPROXY==="1"}function BHi(i,u){if(!Number.isInteger(i)||i<1||i>65535)throw Error(`${u} must be an integer port in 1..65535`);return i}function Zru(i){let u=new URL(i.serverUrl);if(u.protocol!=="http:")throw Error("DECO_DEV_LINK_TOXIPROXY only supports http local Studio URLs");let t=BHi(i.apiPort,"apiPort"),f=BHi(i.listenPort,"listenPort");if(u.port.length===0)throw Error("serverUrl must include an explicit valid port");let l=BHi(Number.parseInt(u.port,10),"upstreamPort"),c=`http://127.0.0.1:${l}`,E=`http://127.0.0.1:${f}`;return{serviceName:Nru,proxyName:Oru,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 YHt(i){return i.toxiproxy?.clusterUrl??i.serverUrl}async function FHi(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 UHi(i){if(i instanceof Error)return i.name==="Error"?i.message:`${i.name}: ${i.message}`;return String(i)}function Bru(i){if(!(i instanceof Error))return!1;if(i.name==="TimeoutError")return!0;return Bru(i.cause)}async function yHi(i,u,t,f){try{return await i(t,f)}catch(l){throw Error(`ToxiProxy ${u} failed for ${t}: ${UHi(l)}`,{cause:l})}}async function Fru(i,u=fetch){let t=`${i.apiUrl}/reset`,f=await yHi(u,"reset",t,{method:"POST"});await FHi(f,"reset",t);let l=`${i.apiUrl}/populate`,c=await yHi(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 FHi(c,"populate",l)}async function WHt(i,u){let t=`${i.apiUrl}/version`;try{await u6(async()=>{let f=await yHi(u,"readiness check",t,{method:"GET",signal:AbortSignal.timeout(JHt)});await FHi(f,"readiness check",t)},{maxAttempts:KHt,minTimeout:gru,maxTimeout:gru,multiplier:1,jitter:0,isRetriable:(f)=>!Bru(f)})}catch(f){let l=f instanceof K6?f.cause:f;throw Error(`ToxiProxy API did not become ready at ${t}: ${UHi(l)}`,{cause:l})}}async function LHt(i){if(i===null)return"";return await new Response(i).text()}async function THi(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}): ${UHi($)}`,{cause:$})}})(),[l,c]=await Promise.all([f.exited,LHt(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 zHt(i,u){let t=`deco-dev-link-toxiproxy-${i}`;await THi(["rm","-f",t],{ignoreFailure:!0}),await THi(["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 QHt(i,u){let t=`deco-dev-link-toxiproxy-${i}`;await THi(["rm","-f",t],{ignoreFailure:!0})}async function HHt(i){let u=Zru(i),t=i.startDaemon??zHt,f=i.stopDaemon??(i.startDaemon===void 0?QHt:void 0);await t(i.apiPort,i.listenPort);let l=i.fetchImpl??fetch;try{await WHt(u,l),await Fru(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 Nru="ToxiProxy",Oru="dev_link_studio",KHt=20,gru=100,JHt=100;var xHi=N(()=>{Bl()});var yru={};Qi(yru,{migrateBetterAuth:()=>IHi});import{getMigrations as bHt}from"better-auth/db";import{sso as RHt}from"@better-auth/sso";import{organization as CHt}from"@decocms/better-auth/plugins";import{admin as MHt,apiKey as qHt,jwt as VHt,magicLink as rHt,mcp as mHt,openAPI as eHt}from"better-auth/plugins";import{emailOTP as aHt}from"better-auth/plugins/email-otp";async function IHi(i){let t={database:xC(i||z2()),plugins:[CHt({dynamicAccessControl:{enabled:!0,enableCustomResources:!0}}),MHt(),qHt(),VHt(),eHt(),mHt({loginPage:"/login"}),RHt(),rHt({sendMagicLink:async()=>{}}),aHt({sendVerificationOTP:async()=>{}})]},{toBeAdded:f,toBeCreated:l,runMigrations:c}=await bHt(t);if(!f.length&&!l.length)return"up to date";return await c(),`${l.length+f.length} table(s) migrated`}var AHi=N(()=>{zE()});var GHi={};Qi(GHi,{up:()=>oHt,down:()=>sHt});import{sql as V_}from"kysely";async function oHt(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 sHt(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 Tru=()=>{};var nHi={};Qi(nHi,{up:()=>pHt,down:()=>ibt});import{sql as Uru}from"kysely";async function pHt(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(Uru`CURRENT_TIMESTAMP`)).addColumn("updatedAt","text",(u)=>u.notNull().defaultTo(Uru`CURRENT_TIMESTAMP`)).execute()}async function ibt(i){await i.schema.dropTable("organization_settings").execute()}var Pru=()=>{};var kHi={};Qi(kHi,{up:()=>ubt,down:()=>tbt});async function ubt(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 tbt(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 jHi={};Qi(jHi,{up:()=>fbt,down:()=>lbt});async function fbt(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 lbt(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 XHi={};Qi(XHi,{up:()=>cbt,down:()=>Ebt});async function cbt(i){await i.schema.alterTable("connections").addColumn("configuration_state","text").execute(),await i.schema.alterTable("connections").addColumn("configuration_scopes","text").execute()}async function Ebt(i){await i.schema.alterTable("connections").dropColumn("configuration_state").execute(),await i.schema.alterTable("connections").dropColumn("configuration_scopes").execute()}var KHi={};Qi(KHi,{up:()=>wbt,down:()=>dbt});import{sql as $bt}from"kysely";async function wbt(i){await i.schema.alterTable("organization_settings").addColumn("sidebar_items",$bt`text`).execute()}async function dbt(i){await i.schema.alterTable("organization_settings").dropColumn("sidebar_items").execute()}var xru=()=>{};var JHi={};Qi(JHi,{up:()=>_bt,down:()=>vbt});async function _bt(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 vbt(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 SHi={};Qi(SHi,{up:()=>hbt,down:()=>Dbt});import{sql as hM}from"kysely";async function hbt(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(hM`CURRENT_TIMESTAMP`)).addColumn("updated_at","text",(u)=>u.notNull().defaultTo(hM`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(hM`CURRENT_TIMESTAMP`)).addColumn("updated_at","text",(u)=>u.notNull().defaultTo(hM`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(hM`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 Dbt(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 Iru=()=>{};var YHi={};Qi(YHi,{up:()=>Nbt,down:()=>Obt});import{sql as gbt}from"kysely";async function Nbt(i){await i.schema.dropTable("audit_logs").ifExists().execute()}async function Obt(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(gbt`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 Aru=()=>{};var WHi={};Qi(WHi,{up:()=>Zbt,down:()=>Bbt});import{sql as H1i}from"kysely";async function Zbt(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(H1i`CURRENT_TIMESTAMP`)).addColumn("updated_at","text",(u)=>u.notNull().defaultTo(H1i`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(H1i`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 H1i`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 Bbt(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 Gru=()=>{};var LHi={};Qi(LHi,{up:()=>Fbt,down:()=>ybt});async function Fbt(i){await i.schema.alterTable("gateways").addColumn("icon","text").execute()}async function ybt(i){await i.schema.alterTable("gateways").dropColumn("icon").execute()}var zHi={};Qi(zHi,{up:()=>Tbt,down:()=>Ubt});import{sql as b1i}from"kysely";async function Tbt(i){await i.schema.alterTable("gateways").addColumn("tool_selection_mode","text",(u)=>u.notNull().defaultTo("inclusion")).execute(),await b1i`
80754
80815
  UPDATE gateways
80755
80816
  SET tool_selection_mode = CASE
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "decocms",
3
- "version": "3.93.0",
3
+ "version": "3.94.0",
4
4
  "description": "Deco CMS — Self-hostable MCP Gateway for managing AI connections and tools",
5
5
  "author": "Deco team",
6
6
  "repository": {
@@ -1 +0,0 @@
1
- import{c as E,r as F,l as X,j as t,B as V,m as ot,d as Ie,K as Q,o as Ve,s as me,n as Be,p as He,i as rt,k as lt,q as ue,Q as at,E as ct,a as Ge,u as wt,b as dt,v as kt,w as ut,L as It}from"./index-BLwOjDz-.js";import{A as Et}from"./auth-entry-Bu37HmBx.js";import{A as W}from"./auth-split-layout-DdFuJpuY.js";import{O as nt}from"./organization-choice-B0z1MsQp.js";import{f as Tt}from"./tab-id-BptcWVWa.js";import{I as Te}from"./input-ClZRxnmh.js";import{u as Oe,W as mt,S as ft,g as Ot,C as Rt}from"./use-mcp-client-DTuk5FL3.js";import{i as pt}from"./XCircle-D9bIJ2aG.js";import{I as gt}from"./integration-icon-BbB4oB5i.js";import{D as Qe,a as Ut,b as $t,c as zt,d as Lt,e as At}from"./dialog-DNLq7rFW.js";import{T as Pt,a as Dt,b as Mt}from"./tooltip-N_gwtefU.js";import{i as We}from"./CheckCircle-BolkWLNV.js";import{i as Kt}from"./ZoomOut-BzN_Ms7a.js";import{g as Ft,c as qt,e as Vt}from"./extract-connection-data-B-Wrpl8q.js";import{F as fe,a as Ye,b as pe,c as De,d as ge,e as he}from"./form-ot5ixpyH.js";import{i as Bt}from"./ChevronUp-9AmI2r-8.js";import{s as Ht,a as Gt}from"./Eye-BeU9HzvI.js";import{i as Qt}from"./Settings02-ClyP-nns.js";import{i as Wt}from"./agent-icon-zFcUURp0.js";import{u as Yt}from"./useSuspenseQueries-BW_N2GXU.js";import{a as Zt}from"./authenticate-and-persist-oauth-DpasRxwB.js";import{i as ht}from"./ArrowUpRight-DtS0Ql0c.js";import{s as xt}from"./User01-BfBqwqiZ.js";import"./backoff-CrEUbyZT.js";import"./delay-CnY5UFtP.js";import"./avatar-Bbv-vQmP.js";import"./auth-Brn3FIq2.js";import"./X-dsSDVl3-.js";import"./label-BSGw8oBO.js";import"./AlertCircle-CPsUqb9w.js";import"./Tool01-Rpx-Fbsn.js";import"./SwitchHorizontal01-kAH8gjqT.js";import"./ZapSquare-D0HzXU-T.js";import"./Users03-BrHC1wzv.js";import"./ChevronDown-Br0JyxxI.js";import"./ChevronLeft-DYKFs25Z.js";import"./ChevronRight-Bb3fYro8.js";import"./DotsVertical-BWvAFXp6.js";import"./Stars02-B5rq9Mzt.js";import"./Globe01-BaODUE4b.js";import"./FilterLines-BjafZAm6.js";import"./Star01-D1d9bklt.js";import"./Globe04-CeW5Z0Kh.js";import"./HardDrive-BKjshHXk.js";import"./Key01-CkNZEW2T.js";import"./LayoutLeft-AxfIYgPW.js";import"./LinkExternal01-DVLkc3K_.js";import"./Monitor01-C6fIMnPI.js";import"./Sun-DodPsLp-.js";import"./Palette-Du7PwJ5T.js";import"./Play-YBZX5ZLG.js";import"./Plus-CJK_Z_9l.js";import"./SearchMd-Bu6i-7O-.js";import"./Shield01-BjFKeQ_N.js";import"./Stars01-C8smcBql.js";import"./Trash01-Dyf1A0dZ.js";import"./Upload01-XbcBo5aV.js";import"./Users01-CPlN96Ae.js";import"./XClose-gI66KzDJ.js";import"./Zap-Cg8ncZ4g.js";import"./mcp-oauth-B4Saszrk.js";const Xt=/^[a-zA-Z][a-zA-Z\d+.-]*:/,Jt=/^[a-zA-Z][a-zA-Z\d+.-]*:\/\//,en=/^[^\s/:?#]+\.[^\s/:?#]+:\d+(?:[/?#]|$)/,tn=/^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$/i;function we(s){const e=s.trim();if(!e)return{ok:!1,error:"Enter a website URL."};const n=Xt.test(e),i=Jt.test(e),o=en.test(e);if(n&&!i&&!o)return{ok:!1,error:"Use an HTTP or HTTPS website URL."};const c=i?e:`https://${e}`;let r;try{r=new URL(c)}catch{return{ok:!1,error:"Enter a valid website URL."}}if(r.protocol!=="http:"&&r.protocol!=="https:")return{ok:!1,error:"Use an HTTP or HTTPS website URL."};const a=r.hostname.split(".");return a.length<2||a.some(l=>!l||!tn.test(l))?{ok:!1,error:"Enter a valid website URL."}:(r.protocol="https:",{ok:!0,value:r.origin})}function Ke(s){const e=E.c(14),{children:n,className:i,wrapperClassName:o}=s,[c,r]=F.useState(!0);let a;e[0]===Symbol.for("react.memo_cache_sentinel")?(a=j=>{if(!j)return;const y=()=>{const m=j.scrollHeight-j.scrollTop-j.clientHeight<8;r(m)};y(),j.addEventListener("scroll",y,{passive:!0});const h=new ResizeObserver(y);h.observe(j);for(const m of Array.from(j.children))h.observe(m);return()=>{j.removeEventListener("scroll",y),h.disconnect()}},e[0]=a):a=e[0];const l=a;let u;e[1]!==o?(u=X("relative",o),e[1]=o,e[2]=u):u=e[2];let f;e[3]!==n||e[4]!==i?(f=t.jsx("div",{ref:l,className:i,children:n}),e[3]=n,e[4]=i,e[5]=f):f=e[5];const p=c?"opacity-0":"opacity-100";let d;e[6]!==p?(d=X("pointer-events-none absolute inset-x-0 -bottom-px h-[72px]","bg-gradient-to-t from-sidebar from-[6px] to-transparent","backdrop-blur-[1px] [mask-image:linear-gradient(to_top,black_6px,transparent)]","transition-opacity duration-200",p),e[6]=p,e[7]=d):d=e[7];let g;e[8]!==d?(g=t.jsx("div",{"aria-hidden":!0,className:d}),e[8]=d,e[9]=g):g=e[9];let x;return e[10]!==u||e[11]!==f||e[12]!==g?(x=t.jsxs("div",{className:u,children:[f,g]}),e[10]=u,e[11]=f,e[12]=g,e[13]=x):x=e[13],x}function nn(s){const e=s.properties;if(!e)return[];const n=[];for(const[i,o]of Object.entries(e)){const a=o?.properties?.__type?.const;typeof a=="string"&&a.length>0&&n.push({fieldKey:i,bindingType:a})}return n}function sn(s,e){const n=[];if(s.length&&n.push({field:["id"],operator:"in",value:s}),e.length&&n.push({field:["name"],operator:"in",value:e}),n.length!==0)return n.length===1?n[0]:{operator:"or",conditions:n}}function Z(s){const e=s;if(e.isError)throw new Error(e.content?.find(n=>n.text)?.text??"Tool call failed");return e.structuredContent??s}function on(s,e,n,i){return{...s??{},[e]:{__type:n,value:i}}}function Fe(s){return s==null?!1:typeof s=="string"?s.trim().length>0:typeof s=="number"||typeof s=="boolean"?!0:Array.isArray(s)?s.some(Fe):typeof s=="object"?Object.entries(s).some(([e,n])=>!e.startsWith("__")&&Fe(n)):!1}function rn(s){return s.replace(/[_-]+/g," ").replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/\b\w/g,e=>e.toUpperCase())}function ln(s){return Fe(s)?typeof s=="string"?s.trim():typeof s=="number"||typeof s=="boolean"?String(s):JSON.stringify(s):null}function an(s){return s?Object.entries(s).flatMap(([e,n])=>{if(e.startsWith("__"))return[];const i=ln(n);return i?[{key:e,label:rn(e),value:i}]:[]}):[]}function cn(s,e,n){const i=s.filter(o=>o.app_name===e||!!n&&o.app_id===n);return i.length===0?null:(i.sort((o,c)=>{const r=a=>a.status==="active"?0:1;return r(o)!==r(c)?r(o)-r(c):(c.updated_at??"").localeCompare(o.updated_at??"")}),i[0].id)}function dn(s){return s.server?.icons?.[0]?.src??Ft(s.server?.repository)??null}function un(s,e){const n=s._meta?.["mcp.mesh"];return n?.friendlyName||n?.friendly_name||s.title||s.server?.title||s.server?.name||e}function mn(s){const e=[],n=new Map(s.connections.map(i=>[i.id,i]));for(const i of s.requirements){const o=s.curated[i.bindingType],c=o?s.itemsById[o.registryAppId]:s.itemsByName[i.bindingType];if(!c)continue;const r=s.configurationState?.[i.fieldKey]?.value,a=r?n.get(r):void 0,l=r&&a?r:null,u=l?s.connectionReadiness?.[l]!==!1:!1,f=!!l&&u;e.push({fieldKey:i.fieldKey,bindingType:i.bindingType,registryItem:c,title:un(c,i.bindingType),icon:dn(c),headline:o?.headline??c._meta?.["mcp.mesh"]?.short_description??null,checks:o?.checks??null,bullets:o?.bullets??[],satisfied:f,candidateConnectionId:f?null:l||cn(s.connections,i.bindingType,o?.registryAppId),linkedConnectionId:l,configurationState:a?.configuration_state??null})}return e}function fn(s,e){if(!s)return null;const n=o=>{if(o.startsWith("sc-domain:"))return o.substring(10);try{let r=new URL(o.startsWith("http")?o:`https://${o}`).hostname||"";return r.startsWith("www.")&&(r=r.substring(4)),r}catch{return o}},i=n(s);for(const o of e)if(n(o.siteUrl)===i)return o.siteUrl;return null}function pn(s){return(s?.response?.accountSummaries??[]).map(i=>({account:i.account,options:(i.propertySummaries??[]).map(o=>({value:o.property,label:o.displayName}))}))}function st(s){const e=E.c(38);let n,i,o,c,r;e[0]!==s?({value:r,onChange:i,placeholder:o,className:n,...c}=s,e[0]=s,e[1]=n,e[2]=i,e[3]=o,e[4]=c,e[5]=r):(n=e[1],i=e[2],o=e[3],c=e[4],r=e[5]);const[a,l]=F.useState(!1),[u,f]=F.useState(!1);let p;e[6]!==r?(p=async()=>{if(r)try{await navigator.clipboard.writeText(r),f(!0),setTimeout(()=>f(!1),2e3)}catch(D){console.error("Failed to copy text: ",D)}},e[6]=r,e[7]=p):p=e[7];const d=p;let g;e[8]!==a?(g=()=>{l(!a)},e[8]=a,e[9]=g):g=e[9];const x=g,j=a?"text":"password";let y;e[10]!==n?(y=X("pr-20",n),e[10]=n,e[11]=y):y=e[11];let h;e[12]!==i||e[13]!==o||e[14]!==c||e[15]!==j||e[16]!==y||e[17]!==r?(h=t.jsx(Te,{type:j,value:r,onChange:i,placeholder:o,className:y,...c}),e[12]=i,e[13]=o,e[14]=c,e[15]=j,e[16]=y,e[17]=r,e[18]=h):h=e[18];const m=a?"Hide password":"Show password";let v;e[19]!==a?(v=a?t.jsx(Qt,{size:16}):t.jsx(Ht,{size:16}),e[19]=a,e[20]=v):v=e[20];let b;e[21]!==m||e[22]!==v||e[23]!==x?(b=t.jsx(V,{type:"button",variant:"ghost",size:"sm",className:"h-8 w-8 p-0",onClick:x,title:m,children:v}),e[21]=m,e[22]=v,e[23]=x,e[24]=b):b=e[24];const S=!r,_=u?"Copied!":"Copy token";let k;e[25]!==u?(k=u?t.jsx(Bt,{size:16}):t.jsx(Gt,{size:16}),e[25]=u,e[26]=k):k=e[26];let w;e[27]!==d||e[28]!==_||e[29]!==k||e[30]!==S?(w=t.jsx(V,{type:"button",variant:"ghost",size:"sm",className:"h-8 w-8 p-0",onClick:d,disabled:S,title:_,children:k}),e[27]=d,e[28]=_,e[29]=k,e[30]=S,e[31]=w):w=e[31];let N;e[32]!==w||e[33]!==b?(N=t.jsxs("div",{className:"absolute right-1 top-1 flex items-center gap-1 h-8",children:[b,w]}),e[32]=w,e[33]=b,e[34]=N):N=e[34];let O;return e[35]!==N||e[36]!==h?(O=t.jsxs("div",{className:"relative",children:[h,N]}),e[35]=N,e[36]=h,e[37]=O):O=e[37],O}function Ze(s){const e=E.c(19),{card:n,selfClient:i,org:o,onDone:c,onError:r}=s,a=ot();let l;e[0]!==n||e[1]!==i?(l=async y=>{const h={...n.configurationState??{},...y};await i.callTool({name:"COLLECTION_CONNECTIONS_UPDATE",arguments:{id:n.linkedConnectionId||n.candidateConnectionId,data:{configuration_state:h}}})},e[0]=n,e[1]=i,e[2]=l):l=e[2];let u;e[3]!==c||e[4]!==o||e[5]!==a?(u=async()=>{await a.invalidateQueries({queryKey:Q.commerceDiscoveryCompanionConnectionsPrefix(o.id)}),c()},e[3]=c,e[4]=o,e[5]=a,e[6]=u):u=e[6];let f;e[7]!==r?(f=y=>{r?.(y)},e[7]=r,e[8]=f):f=e[8];let p;e[9]!==l||e[10]!==u||e[11]!==f?(p={mutationFn:l,onSuccess:u,onError:f},e[9]=l,e[10]=u,e[11]=f,e[12]=p):p=e[12];const d=Ie(p);let g;e[13]!==d?(g=y=>d.mutate(y),e[13]=d,e[14]=g):g=e[14];const x=g;let j;return e[15]!==d.error||e[16]!==d.isPending||e[17]!==x?(j={save:x,isPending:d.isPending,error:d.error},e[15]=d.error,e[16]=d.isPending,e[17]=x,e[18]=j):j=e[18],j}const gn=Ve({accountName:me().min(1,"Account name is required"),appKey:me().optional(),appToken:me().optional()});function hn(s){const e=E.c(63),{card:n,selfClient:i,org:o,onDone:c,onIsPendingChange:r}=s;let a;e[0]===Symbol.for("react.memo_cache_sentinel")?(a=Be(gn),e[0]=a):a=e[0];const l=n.configurationState?.accountName||"",u=n.configurationState?.appKey||"",f=n.configurationState?.appToken||"";let p;e[1]!==l||e[2]!==u||e[3]!==f?(p={resolver:a,defaultValues:{accountName:l,appKey:u,appToken:f}},e[1]=l,e[2]=u,e[3]=f,e[4]=p):p=e[4];const d=He(p);let g;e[5]!==n.configurationState?.accountName||e[6]!==n.configurationState?.appKey||e[7]!==n.configurationState?.appToken||e[8]!==d?(g=()=>{d.reset({accountName:n.configurationState?.accountName||"",appKey:n.configurationState?.appKey||"",appToken:n.configurationState?.appToken||""})},e[5]=n.configurationState?.accountName,e[6]=n.configurationState?.appKey,e[7]=n.configurationState?.appToken,e[8]=d,e[9]=g):g=e[9];let x;e[10]!==n.configurationState||e[11]!==d?(x=[n.configurationState,d],e[10]=n.configurationState,e[11]=d,e[12]=x):x=e[12],F.useEffect(g,x);let j;e[13]!==n||e[14]!==c||e[15]!==o||e[16]!==i?(j={card:n,selfClient:i,org:o,onDone:c},e[13]=n,e[14]=c,e[15]=o,e[16]=i,e[17]=j):j=e[17];const{save:y,isPending:h,error:m}=Ze(j);let v,b;e[18]!==h||e[19]!==r?(b=()=>{r?.(h)},v=[h,r],e[18]=h,e[19]=r,e[20]=v,e[21]=b):(v=e[20],b=e[21]),F.useEffect(b,v);let S;if(e[22]!==d||e[23]!==y){let P;e[25]!==y?(P=async C=>{y(C)},e[25]=y,e[26]=P):P=e[26],S=d.handleSubmit(P),e[22]=d,e[23]=y,e[24]=S}else S=e[24];const _=S;let k;e[27]!==h?(k=P=>{const{field:C}=P;return t.jsxs(pe,{children:[t.jsx(De,{children:"Account Name"}),t.jsx(ge,{children:t.jsx(Te,{placeholder:"Your VTEX account name",...C,disabled:h})}),t.jsx(he,{})]})},e[27]=h,e[28]=k):k=e[28];let w;e[29]!==d.control||e[30]!==k?(w=t.jsx(fe,{control:d.control,name:"accountName",render:k}),e[29]=d.control,e[30]=k,e[31]=w):w=e[31];let N;e[32]!==h?(N=P=>{const{field:C}=P;return t.jsxs(pe,{children:[t.jsx(De,{children:"App Key (optional)"}),t.jsx(ge,{children:t.jsx(st,{placeholder:"VTEX app key",...C,disabled:h})}),t.jsx(he,{})]})},e[32]=h,e[33]=N):N=e[33];let O;e[34]!==d.control||e[35]!==N?(O=t.jsx(fe,{control:d.control,name:"appKey",render:N}),e[34]=d.control,e[35]=N,e[36]=O):O=e[36];let D;e[37]!==h?(D=P=>{const{field:C}=P;return t.jsxs(pe,{children:[t.jsx(De,{children:"App Token (optional)"}),t.jsx(ge,{children:t.jsx(st,{placeholder:"VTEX app token",...C,disabled:h})}),t.jsx(he,{})]})},e[37]=h,e[38]=D):D=e[38];let U;e[39]!==d.control||e[40]!==D?(U=t.jsx(fe,{control:d.control,name:"appToken",render:D}),e[39]=d.control,e[40]=D,e[41]=U):U=e[41];let I;e[42]!==d||e[43]!==w||e[44]!==O||e[45]!==U?(I=t.jsxs(Ye,{...d,children:[w,O,U]}),e[42]=d,e[43]=w,e[44]=O,e[45]=U,e[46]=I):I=e[46];let R;e[47]!==m?(R=m&&t.jsx("p",{role:"alert",className:"text-sm text-destructive",children:m instanceof Error?m.message:"Failed to save configuration"}),e[47]=m,e[48]=R):R=e[48];let $;e[49]!==h||e[50]!==c?($=t.jsx(V,{type:"button",variant:"outline",onClick:c,disabled:h,children:"Cancel"}),e[49]=h,e[50]=c,e[51]=$):$=e[51];const M=h?"Saving...":"Save";let q;e[52]!==h||e[53]!==M?(q=t.jsx(V,{type:"submit",disabled:h,children:M}),e[52]=h,e[53]=M,e[54]=q):q=e[54];let K;e[55]!==$||e[56]!==q?(K=t.jsxs(Qe,{className:"pt-4",children:[$,q]}),e[55]=$,e[56]=q,e[57]=K):K=e[57];let z;return e[58]!==_||e[59]!==I||e[60]!==R||e[61]!==K?(z=t.jsxs("form",{onSubmit:_,className:"space-y-4",children:[I,R,K]}),e[58]=_,e[59]=I,e[60]=R,e[61]=K,e[62]=z):z=e[62],z}function yt(s){const e=E.c(30),{options:n,value:i,onChange:o,disabled:c,ariaLabel:r,searchPlaceholder:a}=s,l=a===void 0?"Search…":a,[u,f]=F.useState("");let p,d,g;if(e[0]!==n||e[1]!==u||e[2]!==i){const w=u.trim().toLowerCase();p=w?n.filter(N=>N.label.toLowerCase().includes(w)):n,d=p.map(xn),g=d.includes(i)?i:d[0]??"",e[0]=n,e[1]=u,e[2]=i,e[3]=p,e[4]=d,e[5]=g}else p=e[3],d=e[4],g=e[5];const x=g;let j;e[6]!==c||e[7]!==d||e[8]!==o?(j=function(N){if(c||!["ArrowDown","ArrowRight","ArrowUp","ArrowLeft","Home","End"].includes(N.key))return;N.preventDefault();const D=N.currentTarget.dataset.value,U=d.indexOf(D),I=d.length;if(I===0)return;let R;N.key==="ArrowDown"||N.key==="ArrowRight"?R=(U+1)%I:N.key==="ArrowUp"||N.key==="ArrowLeft"?R=(U-1+I)%I:N.key==="Home"?R=0:R=I-1;const $=d[R];o($),N.currentTarget.closest('[role="radiogroup"]')?.querySelector(`[data-value="${CSS.escape($)}"]`)?.focus()},e[6]=c,e[7]=d,e[8]=o,e[9]=j):j=e[9];const y=j;let h;e[10]===Symbol.for("react.memo_cache_sentinel")?(h=t.jsx(Wt,{size:16,className:"pointer-events-none absolute left-2.5 top-1/2 -translate-y-1/2 text-muted-foreground"}),e[10]=h):h=e[10];let m;e[11]===Symbol.for("react.memo_cache_sentinel")?(m=w=>f(w.target.value),e[11]=m):m=e[11];const v=`Search ${r}`;let b;e[12]!==c||e[13]!==u||e[14]!==l||e[15]!==v?(b=t.jsxs("div",{className:"relative",children:[h,t.jsx(Te,{type:"text",value:u,onChange:m,disabled:c,placeholder:l,"aria-label":v,className:"h-8 pl-8"})]}),e[12]=c,e[13]=u,e[14]=l,e[15]=v,e[16]=b):b=e[16];let S;e[17]!==c||e[18]!==p||e[19]!==y||e[20]!==o||e[21]!==x||e[22]!==i?(S=p.length===0?t.jsx("div",{className:"px-2 py-2 text-sm text-muted-foreground",children:"No results"}):p.map(w=>{const N=w.value===i;return t.jsxs("button",{type:"button",role:"radio","aria-checked":N,disabled:c,"data-value":w.value,tabIndex:w.value===x?0:-1,onClick:()=>o(w.value),onKeyDown:y,className:X("flex w-full items-center justify-between gap-2 rounded-sm px-2 py-2 text-left text-sm","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring","disabled:pointer-events-none disabled:opacity-50",N?"bg-muted font-medium text-foreground":"text-foreground hover:bg-muted/50"),children:[t.jsx("span",{className:"truncate",children:w.label}),N?t.jsx(We,{size:16,className:"shrink-0 text-primary"}):null]},w.value)}),e[17]=c,e[18]=p,e[19]=y,e[20]=o,e[21]=x,e[22]=i,e[23]=S):S=e[23];let _;e[24]!==r||e[25]!==S?(_=t.jsx("div",{role:"radiogroup","aria-label":r,className:"max-h-[280px] overflow-y-auto",children:S}),e[24]=r,e[25]=S,e[26]=_):_=e[26];let k;return e[27]!==b||e[28]!==_?(k=t.jsxs("div",{className:"space-y-2",children:[b,_]}),e[27]=b,e[28]=_,e[29]=k):k=e[29],k}function xn(s){return s.value}function Re(s){const e=E.c(16),{label:n,iconSize:i,className:o,iconClassName:c,labelClassName:r}=s,a=i===void 0?14:i;let l;e[0]!==o?(l=X("inline-flex items-center gap-2",o),e[0]=o,e[1]=l):l=e[1];let u;e[2]!==c?(u=X("shrink-0 animate-spin",c),e[2]=c,e[3]=u):u=e[3];let f;e[4]!==a||e[5]!==u?(f=t.jsx(rt,{size:a,className:u}),e[4]=a,e[5]=u,e[6]=f):f=e[6];let p;e[7]!==r?(p=X("text-sm",r),e[7]=r,e[8]=p):p=e[8];let d;e[9]!==n||e[10]!==p?(d=t.jsx("span",{className:p,children:n}),e[9]=n,e[10]=p,e[11]=d):d=e[11];let g;return e[12]!==l||e[13]!==f||e[14]!==d?(g=t.jsxs("span",{className:l,children:[f,d]}),e[12]=l,e[13]=f,e[14]=d,e[15]=g):g=e[15],g}const yn=Ve({propertyId:me().min(1,"Property is required")});function jn(s){const e=E.c(55),{card:n,connectionId:i,companionClient:o,selfClient:c,org:r,onDone:a,onIsPendingChange:l}=s;let u;e[0]!==i||e[1]!==r.id?(u=Q.commerceDiscoveryCompanionGaProperties(r.id,i),e[0]=i,e[1]=r.id,e[2]=u):u=e[2];let f;e[3]!==o?(f=async()=>{const C=await o.callTool({name:"get-account-summaries",arguments:{}}),A=Z(C);return pn(A)},e[3]=o,e[4]=f):f=e[4];let p;e[5]!==u||e[6]!==f?(p={queryKey:u,queryFn:f},e[5]=u,e[6]=f,e[7]=p):p=e[7];const d=lt(p);let g;e[8]===Symbol.for("react.memo_cache_sentinel")?(g=Be(yn),e[8]=g):g=e[8];const x=n.configurationState?.propertyId||"";let j;e[9]!==x?(j={resolver:g,defaultValues:{propertyId:x}},e[9]=x,e[10]=j):j=e[10];const y=He(j);let h;e[11]!==n||e[12]!==a||e[13]!==r||e[14]!==c?(h={card:n,selfClient:c,org:r,onDone:a},e[11]=n,e[12]=a,e[13]=r,e[14]=c,e[15]=h):h=e[15];const{save:m,isPending:v,error:b}=Ze(h);let S,_;e[16]!==v||e[17]!==l?(S=()=>{l?.(v)},_=[v,l],e[16]=v,e[17]=l,e[18]=S,e[19]=_):(S=e[18],_=e[19]),F.useEffect(S,_);let k;if(e[20]!==y||e[21]!==m){let C;e[23]!==m?(C=async A=>{m(A)},e[23]=m,e[24]=C):C=e[24],k=y.handleSubmit(C),e[20]=y,e[21]=m,e[22]=k}else k=e[22];const w=k;if(d.isLoading){let C;return e[25]===Symbol.for("react.memo_cache_sentinel")?(C=t.jsx("div",{className:"flex min-h-[200px] items-center justify-center",children:t.jsx(Re,{label:"Loading properties…"})}),e[25]=C):C=e[25],C}if(d.isError){let C;return e[26]===Symbol.for("react.memo_cache_sentinel")?(C=t.jsx("div",{className:"space-y-4",children:t.jsx("p",{className:"text-sm text-destructive",children:"Failed to load Google Analytics properties."})}),e[26]=C):C=e[26],C}let N;e[27]!==d.data?(N=d.data||[],e[27]=d.data,e[28]=N):N=e[28];const O=N;if(O.flatMap(vn).length===0){let C;return e[29]===Symbol.for("react.memo_cache_sentinel")?(C=t.jsx("div",{className:"space-y-4",children:t.jsx("p",{className:"text-sm text-muted-foreground",children:"No Google Analytics properties found. Please connect a Google Analytics account with properties."})}),e[29]=C):C=e[29],C}let U;e[30]!==v||e[31]!==O?(U=C=>{const{field:A}=C;return t.jsxs(pe,{children:[t.jsx(ge,{children:t.jsx(yt,{options:O.flatMap(bn),value:A.value,onChange:A.onChange,disabled:v,ariaLabel:"Google Analytics Property"})}),t.jsx(he,{})]})},e[30]=v,e[31]=O,e[32]=U):U=e[32];let I;e[33]!==y.control||e[34]!==U?(I=t.jsx(fe,{control:y.control,name:"propertyId",render:U}),e[33]=y.control,e[34]=U,e[35]=I):I=e[35];let R;e[36]!==y||e[37]!==I?(R=t.jsx(Ye,{...y,children:I}),e[36]=y,e[37]=I,e[38]=R):R=e[38];let $;e[39]!==b?($=b&&t.jsx("p",{role:"alert",className:"text-sm text-destructive",children:b instanceof Error?b.message:"Failed to save configuration"}),e[39]=b,e[40]=$):$=e[40];let M;e[41]!==v||e[42]!==a?(M=t.jsx(V,{type:"button",variant:"outline",onClick:a,disabled:v,children:"Cancel"}),e[41]=v,e[42]=a,e[43]=M):M=e[43];const q=v?"Saving...":"Save";let K;e[44]!==v||e[45]!==q?(K=t.jsx(V,{type:"submit",disabled:v,children:q}),e[44]=v,e[45]=q,e[46]=K):K=e[46];let z;e[47]!==M||e[48]!==K?(z=t.jsxs(Qe,{className:"pt-4",children:[M,K]}),e[47]=M,e[48]=K,e[49]=z):z=e[49];let P;return e[50]!==w||e[51]!==R||e[52]!==$||e[53]!==z?(P=t.jsxs("form",{onSubmit:w,className:"space-y-4",children:[R,$,z]}),e[50]=w,e[51]=R,e[52]=$,e[53]=z,e[54]=P):P=e[54],P}function bn(s){return s.options}function vn(s){return s.options}const Cn=Ve({siteUrl:me().min(1,"Site is required")});function Sn(s){const e=E.c(59),{card:n,connectionId:i,companionClient:o,selfClient:c,org:r,contextSiteUrl:a,onDone:l,onIsPendingChange:u}=s;let f;e[0]!==i||e[1]!==r.id?(f=Q.commerceDiscoveryCompanionGscSites(r.id,i),e[0]=i,e[1]=r.id,e[2]=f):f=e[2];let p;e[3]!==o?(p=async()=>{const C=await o.callTool({name:"list_sites",arguments:{}});return Z(C).sites||[]},e[3]=o,e[4]=p):p=e[4];let d;e[5]!==f||e[6]!==p?(d={queryKey:f,queryFn:p},e[5]=f,e[6]=p,e[7]=d):d=e[7];const g=lt(d);let x;e[8]===Symbol.for("react.memo_cache_sentinel")?(x=Be(Cn),e[8]=x):x=e[8];const j=n.configurationState?.siteUrl||"";let y;e[9]!==j?(y={resolver:x,defaultValues:{siteUrl:j}},e[9]=j,e[10]=y):y=e[10];const h=He(y);let m;e[11]!==n||e[12]!==l||e[13]!==r||e[14]!==c?(m={card:n,selfClient:c,org:r,onDone:l},e[11]=n,e[12]=l,e[13]=r,e[14]=c,e[15]=m):m=e[15];const{save:v,isPending:b,error:S}=Ze(m);let _,k;e[16]!==b||e[17]!==u?(_=()=>{u?.(b)},k=[b,u],e[16]=b,e[17]=u,e[18]=_,e[19]=k):(_=e[18],k=e[19]),F.useEffect(_,k);let w;if(e[20]!==h||e[21]!==v){let C;e[23]!==v?(C=async A=>{v(A)},e[23]=v,e[24]=C):C=e[24],w=h.handleSubmit(C),e[20]=h,e[21]=v,e[22]=w}else w=e[22];const N=w;if(g.isLoading){let C;return e[25]===Symbol.for("react.memo_cache_sentinel")?(C=t.jsx("div",{className:"flex min-h-[200px] items-center justify-center",children:t.jsx(Re,{label:"Loading sites…"})}),e[25]=C):C=e[25],C}if(g.isError){let C;return e[26]===Symbol.for("react.memo_cache_sentinel")?(C=t.jsx("div",{className:"space-y-4",children:t.jsx("p",{className:"text-sm text-destructive",children:"Failed to load Google Search Console sites."})}),e[26]=C):C=e[26],C}let O,D;if(e[27]!==n.configurationState?.siteUrl||e[28]!==a||e[29]!==h||e[30]!==g.data){D=Symbol.for("react.early_return_sentinel");e:{if(O=g.data||[],O.length===0){let A;e[33]===Symbol.for("react.memo_cache_sentinel")?(A=t.jsx("div",{className:"space-y-4",children:t.jsx("p",{className:"text-sm text-muted-foreground",children:"No verified sites found. Please verify a site in Google Search Console."})}),e[33]=A):A=e[33],D=A;break e}const C=n.configurationState?.siteUrl;if(C&&h.getValues("siteUrl")!==C)h.setValue("siteUrl",C);else if(!C&&!h.getValues("siteUrl")){const A=fn(a,O);A&&h.setValue("siteUrl",A)}}e[27]=n.configurationState?.siteUrl,e[28]=a,e[29]=h,e[30]=g.data,e[31]=O,e[32]=D}else O=e[31],D=e[32];if(D!==Symbol.for("react.early_return_sentinel"))return D;let U;e[34]!==b||e[35]!==O?(U=C=>{const{field:A}=C;return t.jsxs(pe,{children:[t.jsx(ge,{children:t.jsx(yt,{options:O.map(Nn),value:A.value,onChange:A.onChange,disabled:b,ariaLabel:"Verified Site"})}),t.jsx(he,{})]})},e[34]=b,e[35]=O,e[36]=U):U=e[36];let I;e[37]!==h.control||e[38]!==U?(I=t.jsx(fe,{control:h.control,name:"siteUrl",render:U}),e[37]=h.control,e[38]=U,e[39]=I):I=e[39];let R;e[40]!==h||e[41]!==I?(R=t.jsx(Ye,{...h,children:I}),e[40]=h,e[41]=I,e[42]=R):R=e[42];let $;e[43]!==S?($=S&&t.jsx("p",{role:"alert",className:"text-sm text-destructive",children:S instanceof Error?S.message:"Failed to save configuration"}),e[43]=S,e[44]=$):$=e[44];let M;e[45]!==b||e[46]!==l?(M=t.jsx(V,{type:"button",variant:"outline",onClick:l,disabled:b,children:"Cancel"}),e[45]=b,e[46]=l,e[47]=M):M=e[47];const q=b?"Saving...":"Save";let K;e[48]!==b||e[49]!==q?(K=t.jsx(V,{type:"submit",disabled:b,children:q}),e[48]=b,e[49]=q,e[50]=K):K=e[50];let z;e[51]!==M||e[52]!==K?(z=t.jsxs(Qe,{className:"pt-4",children:[M,K]}),e[51]=M,e[52]=K,e[53]=z):z=e[53];let P;return e[54]!==N||e[55]!==R||e[56]!==$||e[57]!==z?(P=t.jsxs("form",{onSubmit:N,className:"space-y-4",children:[R,$,z]}),e[54]=N,e[55]=R,e[56]=$,e[57]=z,e[58]=P):P=e[58],P}function Nn(s){return{value:s.siteUrl,label:s.siteUrl}}const _n={vtex:hn,"google-analytics":jn,"google-search-console":Sn};function wn(){const s=E.c(3);let e;s[0]===Symbol.for("react.memo_cache_sentinel")?(e=t.jsxs("div",{className:"flex items-center gap-2",children:[t.jsx("div",{className:"size-9 shrink-0 animate-pulse rounded-lg bg-muted/60"}),t.jsx("div",{className:"h-4 w-32 animate-pulse rounded bg-muted/60"}),t.jsx("div",{className:"ml-auto h-8 w-20 animate-pulse rounded-lg bg-muted/60"})]}),s[0]=e):e=s[0];let n;s[1]===Symbol.for("react.memo_cache_sentinel")?(n=t.jsx("div",{className:"p-1",children:t.jsx("div",{className:"h-5 w-40 animate-pulse rounded bg-muted/60"})}),s[1]=n):n=s[1];let i;return s[2]===Symbol.for("react.memo_cache_sentinel")?(i=t.jsxs("div",{className:"flex flex-col gap-2 rounded-2xl border border-border bg-card p-4",children:[e,t.jsxs("div",{className:"flex flex-col gap-1 px-1 py-2",children:[n,t.jsx("div",{className:"p-1",children:t.jsx("div",{className:"h-5 w-56 animate-pulse rounded bg-muted/60"})})]})]}),s[2]=i):i=s[2],i}function qe(s){const e=E.c(3),{children:n}=s;let i;e[0]===Symbol.for("react.memo_cache_sentinel")?(i=t.jsx(We,{size:14,className:"shrink-0 text-blue-500"}),e[0]=i):i=e[0];let o;return e[1]!==n?(o=t.jsxs("div",{className:"flex items-center gap-2 p-1",children:[i,t.jsx("p",{className:"text-sm text-foreground",children:n})]}),e[1]=n,e[2]=o):o=e[2],o}function kn(s){const e=E.c(43),{card:n,connecting:i,disabled:o,onConnect:c,org:r,selfClient:a,siteUrl:l}=s,u=n.linkedConnectionId;let f;e[0]!==n.configurationState?(f=an(n.configurationState),e[0]=n.configurationState,e[1]=f):f=e[1];const p=f;let d;e[2]!==n.icon||e[3]!==n.title?(d=t.jsx(gt,{icon:n.icon,name:n.title,size:"sm",fit:"contain",className:"p-1.5"}),e[2]=n.icon,e[3]=n.title,e[4]=d):d=e[4];let g;e[5]!==n.title?(g=t.jsx("p",{className:"flex-1 text-sm text-foreground",children:n.title}),e[5]=n.title,e[6]=g):g=e[6];let x;e[7]!==n.satisfied||e[8]!==n.title||e[9]!==i||e[10]!==o||e[11]!==c?(x=n.satisfied?t.jsxs("div",{className:"flex h-8 items-center gap-2 px-3 text-sm text-muted-foreground",children:[t.jsx(We,{size:16})," Connected"]}):t.jsx(V,{type:"button",variant:"outline",size:"sm",disabled:o||i,onClick:c,"aria-label":`Connect ${n.title}`,children:i?t.jsx(rt,{size:16,className:"animate-spin"}):"Connect"}),e[7]=n.satisfied,e[8]=n.title,e[9]=i,e[10]=o,e[11]=c,e[12]=x):x=e[12];let j;e[13]!==d||e[14]!==g||e[15]!==x?(j=t.jsxs("div",{className:"flex items-center gap-2",children:[d,g,x]}),e[13]=d,e[14]=g,e[15]=x,e[16]=j):j=e[16];let y;e[17]!==n.checks?(y=n.checks!==null&&t.jsxs(qe,{children:["+ ",n.checks," checks"]}),e[17]=n.checks,e[18]=y):y=e[18];let h;e[19]!==n.headline?(h=n.headline&&t.jsx(qe,{children:n.headline}),e[19]=n.headline,e[20]=h):h=e[20];let m;e[21]!==n.bullets?(m=n.bullets.map(In),e[21]=n.bullets,e[22]=m):m=e[22];let v;e[23]!==n.candidateConnectionId||e[24]!==n.satisfied||e[25]!==n.title?(v=!n.satisfied&&n.candidateConnectionId&&t.jsxs("p",{className:"px-1 text-xs text-muted-foreground",children:["Using your existing ",n.title]}),e[23]=n.candidateConnectionId,e[24]=n.satisfied,e[25]=n.title,e[26]=v):v=e[26];let b;e[27]!==y||e[28]!==h||e[29]!==m||e[30]!==v?(b=t.jsxs("div",{className:"flex flex-col gap-1 px-1 py-2",children:[y,h,m,v]}),e[27]=y,e[28]=h,e[29]=m,e[30]=v,e[31]=b):b=e[31];let S;e[32]!==n||e[33]!==u||e[34]!==r||e[35]!==p||e[36]!==a||e[37]!==l?(S=n.satisfied&&u&&t.jsx(F.Suspense,{fallback:t.jsx(On,{}),children:t.jsx(Rn,{card:n,org:r,selfClient:a,connectionId:u,savedConfigEntries:p,contextSiteUrl:l})}),e[32]=n,e[33]=u,e[34]=r,e[35]=p,e[36]=a,e[37]=l,e[38]=S):S=e[38];let _;return e[39]!==b||e[40]!==S||e[41]!==j?(_=t.jsxs("div",{className:"flex flex-col gap-2 rounded-2xl border border-border bg-card p-4",children:[j,b,S]}),e[39]=b,e[40]=S,e[41]=j,e[42]=_):_=e[42],_}function In(s){return t.jsx(qe,{children:s},s)}function En(s,e){return/(token|secret|password|appKey|key)$/i.test(s)?"••••••••":e}function Tn(s){const e=E.c(2),{title:n}=s;let i;return e[0]!==n?(i=t.jsx("div",{className:"grid gap-3 border-t border-border pt-3",children:t.jsxs("p",{className:"text-xs text-muted-foreground",children:["Configuration isn't available here yet for ",n,"."]})}),e[0]=n,e[1]=i):i=e[1],i}function On(){const s=E.c(1);let e;return s[0]===Symbol.for("react.memo_cache_sentinel")?(e=t.jsx("div",{className:"grid gap-3 border-t border-border pt-3",children:t.jsxs("div",{className:"flex items-center justify-between gap-3",children:[t.jsx("div",{className:"h-5 w-24 animate-pulse rounded bg-muted/60"}),t.jsx("div",{className:"h-8 w-20 animate-pulse rounded-lg bg-muted/60"})]})}),s[0]=e):e=s[0],e}function Rn(s){const e=E.c(36),{card:n,org:i,selfClient:o,connectionId:c,savedConfigEntries:r,contextSiteUrl:a}=s;let l;e[0]!==c||e[1]!==i.id||e[2]!==i.slug?(l={connectionId:c,orgId:i.id,orgSlug:i.slug},e[0]=c,e[1]=i.id,e[2]=i.slug,e[3]=l):l=e[3];const u=Oe(l),[f,p]=F.useState(!1),[d,g]=F.useState(!1),x=_n[n.bindingType];let j;e[4]!==d?(j=O=>{!O&&d||p(O)},e[4]=d,e[5]=j):j=e[5];const y=j;let h;e[6]===Symbol.for("react.memo_cache_sentinel")?(h=t.jsx("p",{className:"text-sm font-medium text-foreground",children:"Configuration"}),e[6]=h):h=e[6];let m;e[7]!==r.length?(m=r.length===0&&t.jsx("p",{className:"text-xs text-muted-foreground",children:"No configuration values saved yet."}),e[7]=r.length,e[8]=m):m=e[8];let v;e[9]!==m?(v=t.jsxs("div",{className:"grid gap-1",children:[h,m]}),e[9]=m,e[10]=v):v=e[10];let b;e[11]!==x||e[12]!==n.title||e[13]!==r.length?(b=r.length>0?t.jsxs(Pt,{children:[t.jsx(Dt,{asChild:!0,children:t.jsx(V,{type:"button",variant:"ghost",size:"icon-sm",onClick:()=>p(!0),"aria-label":`Edit ${n.title} configuration`,disabled:!x,children:t.jsx(Kt,{size:14})})}),t.jsx(Mt,{children:"Edit configuration"})]}):t.jsx(V,{type:"button",variant:"outline",size:"sm",onClick:()=>p(!0),disabled:!x,children:"Configure"}),e[11]=x,e[12]=n.title,e[13]=r.length,e[14]=b):b=e[14];let S;e[15]!==v||e[16]!==b?(S=t.jsxs("div",{className:"flex items-center justify-between gap-3",children:[v,b]}),e[15]=v,e[16]=b,e[17]=S):S=e[17];let _;e[18]!==r?(_=r.length>0&&t.jsx("dl",{className:"grid gap-2",children:r.map(Un)}),e[18]=r,e[19]=_):_=e[19];let k;e[20]!==S||e[21]!==_?(k=t.jsxs("div",{className:"grid gap-3 border-t border-border pt-3",children:[S,_]}),e[20]=S,e[21]=_,e[22]=k):k=e[22];let w;e[23]!==x||e[24]!==n||e[25]!==u||e[26]!==c||e[27]!==a||e[28]!==f||e[29]!==y||e[30]!==i||e[31]!==o?(w=x?t.jsx(Ut,{open:f,onOpenChange:y,children:t.jsxs($t,{className:"sm:max-w-lg",children:[t.jsxs(zt,{className:"flex-row items-center gap-3 space-y-0 text-left",children:[t.jsx(gt,{icon:n.icon,name:n.title,size:"md",fit:"contain",className:"p-1.5"}),t.jsxs("div",{className:"flex min-w-0 flex-1 flex-col gap-1",children:[t.jsx(Lt,{children:n.title}),t.jsxs(At,{children:["Configure ",n.title," to enrich data"]})]})]}),t.jsx(x,{card:n,connectionId:c,companionClient:u,selfClient:o,org:i,contextSiteUrl:a,onDone:()=>p(!1),onIsPendingChange:g})]})}):t.jsx(Tn,{title:n.title}),e[23]=x,e[24]=n,e[25]=u,e[26]=c,e[27]=a,e[28]=f,e[29]=y,e[30]=i,e[31]=o,e[32]=w):w=e[32];let N;return e[33]!==w||e[34]!==k?(N=t.jsxs(t.Fragment,{children:[k,w]}),e[33]=w,e[34]=k,e[35]=N):N=e[35],N}function Un(s){return t.jsxs("div",{className:"flex items-center justify-between gap-3 text-sm",children:[t.jsx("dt",{className:"text-muted-foreground",children:s.label}),t.jsx("dd",{className:"truncate text-foreground",children:En(s.key,s.value)})]},s.key)}const Xe={vtex:{registryAppId:"deco/vtex",checks:49,headline:"Out-of-stock, thin PDPs & attribute gaps across every SKU"},"google-analytics":{registryAppId:"deco/google-analytics",checks:49,headline:"Where revenue leaks between product view and checkout"},"google-search-console":{registryAppId:"deco/google-search-console",checks:49,headline:"Search visibility & indexing gaps across your catalog"}};function $n(s){const e=E.c(30),{selfClient:n,org:i,cdConnectionId:o}=s;let c;e[0]!==o||e[1]!==i.id||e[2]!==i.slug?(c={connectionId:o,orgId:i.id,orgSlug:i.slug},e[0]=o,e[1]=i.id,e[2]=i.slug,e[3]=c):c=e[3];const r=Oe(c);let a;e[4]!==o||e[5]!==i.id?(a=Q.commerceDiscoveryCompanionSchema(i.id,o),e[4]=o,e[5]=i.id,e[6]=a):a=e[6];let l;e[7]!==r?(l=async()=>{const T=await r.callTool({name:"MCP_CONFIGURATION",arguments:{}});return Z(T)},e[7]=r,e[8]=l):l=e[8];let u;e[9]!==a||e[10]!==l?(u={queryKey:a,queryFn:l},e[9]=a,e[10]=l,e[11]=u):u=e[11];const f=ue(u),p=nn(f.data?.stateSchema??{properties:{}}),d=p.map(Vn),g=p.map(qn).filter(Fn),x=p.filter(Kn).map(Mn),j=[...g,...x].sort().join(",");let y;e[12]!==o||e[13]!==i.id?(y=Q.commerceDiscoveryConnection(i.id,o),e[12]=o,e[13]=i.id,e[14]=y):y=e[14];let h;e[15]!==o||e[16]!==n?(h=async()=>{const T=await n.callTool({name:"COLLECTION_CONNECTIONS_GET",arguments:{id:o}});return Z(T)},e[15]=o,e[16]=n,e[17]=h):h=e[17];let m;e[18]!==y||e[19]!==h?(m={queryKey:y,queryFn:h},e[18]=y,e[19]=h,e[20]=m):m=e[20];const b=ue(m).data?.item?.configuration_state??null;let S;e[21]!==b?(S=T=>b?.[T.fieldKey]?.value,e[21]=b,e[22]=S):S=e[22];const _=p.map(S).filter(Dn),k=[...d.map(Pn),...g.map(An),..._.map(Ln)].sort().join(","),N=ue({queryKey:Q.commerceDiscoveryCompanionConnections(i.id,k),queryFn:async()=>{if(p.length===0)return{items:[]};const T=[{field:["app_name"],operator:"in",value:d},{field:["app_id"],operator:"in",value:g}];_.length>0&&T.push({field:["id"],operator:"in",value:_});const B=await n.callTool({name:"COLLECTION_CONNECTIONS_LIST",arguments:{where:{operator:"or",conditions:T},limit:1e3}});return Z(B)}}).data?.items??[],O=new Set(_),D=N.filter(T=>O.has(T.id)),U=D.filter(zn);let I;e[23]!==i.id||e[24]!==i.slug?(I=T=>({queryKey:Q.commerceDiscoveryCompanionOAuthStatus(i.id,T.id),queryFn:async()=>{try{const B=await fetch(`/api/${encodeURIComponent(i.slug)}/connections/${encodeURIComponent(T.id)}/oauth-token/status`,{credentials:"include"});return B.ok?{hasToken:(await B.json()).hasToken===!0}:{hasToken:!1}}catch{return{hasToken:!1}}},retry:!1}),e[23]=i.id,e[24]=i.slug,e[25]=I):I=e[25];const R=Yt({queries:U.map(I)});let $;e[26]!==R?($=(T,B)=>[T.id,R[B]?.data?.hasToken===!0],e[26]=R,e[27]=$):$=e[27];const M=new Map(U.map($)),q={};for(const T of D)q[T.id]=!T.oauth_config||!!T.connection_token||M.get(T.id)===!0;const K=ue({queryKey:Q.commerceDiscoveryCompanionRegistry(i.id,j),queryFn:async()=>{if(p.length===0)return{items:[]};const T=sn(g,x),B=await qt(mt.REGISTRY(i.id),i.id,i.slug,"COLLECTION_REGISTRY_APP_LIST",{...T?{where:T}:{},limit:1e3});return Z(B)}}),z={},P={};for(const T of K.data?.items??[])z[T.id]=T,T.server?.name&&(P[T.server.name]=T);const C=mn({requirements:p,itemsById:z,itemsByName:P,connections:N,connectionReadiness:q,configurationState:b,curated:Xe});let A;return e[28]!==C?(A={cards:C},e[28]=C,e[29]=A):A=e[29],A}function zn(s){return s.oauth_config&&!s.connection_token}function Ln(s){return`linked:${s}`}function An(s){return`app:${s}`}function Pn(s){return`binding:${s}`}function Dn(s){return typeof s=="string"&&s.length>0}function Mn(s){return s.bindingType}function Kn(s){return!Xe[s.bindingType]}function Fn(s){return!!s}function qn(s){return Xe[s.bindingType]?.registryAppId}function Vn(s){return s.bindingType}function Bn({selfClient:s,org:e,userId:n,cdConnectionId:i}){const o=ot(),[c,r]=F.useState(null),[a,l]=F.useState(null),u=async(p,d)=>{const g=await s.callTool({name:"COLLECTION_CONNECTIONS_UPDATE",arguments:{id:p,data:d}});return Z(g)};async function f(p){r(p.fieldKey),l(null);try{let d=p.candidateConnectionId;if(!d){const m=Vt(p.registryItem,e.id,n,{remoteIndex:0}),v=m.connection_type==="STDIO",b=!!m.connection_url,S=v&&m.connection_headers&&typeof m.connection_headers=="object"&&"command"in m.connection_headers;if(!b&&!S){l(`${p.title} cannot be connected: no connection method available`);return}const _=await s.callTool({name:"COLLECTION_CONNECTIONS_CREATE",arguments:{data:m}});d=Z(_).item.id}const g=d,x=await Zt({connectionId:g,orgId:e.id,orgSlug:e.slug,persistFallback:m=>u(g,{connection_token:m}).then(()=>{})});if(!x.ok){l(`Couldn't sign in to ${p.title}: ${x.error}`);return}const j=await s.callTool({name:"COLLECTION_CONNECTIONS_GET",arguments:{id:i}}),y=Z(j).item?.configuration_state??null,h=on(y,p.fieldKey,p.bindingType,g);await u(i,{configuration_state:h}),await o.invalidateQueries({queryKey:Q.commerceDiscoveryConnection(e.id,i)}),await o.invalidateQueries({queryKey:Q.commerceDiscoveryCompanionConnectionsPrefix(e.id)})}catch(d){l(d instanceof Error?d.message:String(d))}finally{r(null)}}return{connect:f,connectingFieldKey:c,error:a}}const Je="flex min-h-0 flex-1 flex-col gap-6 md:grid md:flex-none md:gap-4";function et(){const s=E.c(1);let e;return s[0]===Symbol.for("react.memo_cache_sentinel")?(e=t.jsxs("div",{className:"grid gap-1.5",children:[t.jsx("p",{className:"text-2xl font-medium text-foreground",children:"Unlock your full diagnostic"}),t.jsx("p",{className:"text-base text-muted-foreground",children:"Connect your tools to unlock 100+ checks across your funnel."})]}),s[0]=e):e=s[0],e}function Hn(){const s=E.c(1);let e;return s[0]===Symbol.for("react.memo_cache_sentinel")?(e=t.jsx("div",{className:"grid gap-4",children:[0,1,2].map(Gn)}),s[0]=e):e=s[0],e}function Gn(s){return t.jsx(wn,{},s)}function Qn(){const s=E.c(1);let e;return s[0]===Symbol.for("react.memo_cache_sentinel")?(e=t.jsxs("div",{className:Je,children:[t.jsx(et,{}),t.jsx(Hn,{})]}),s[0]=e):e=s[0],e}function Wn(s){const e=E.c(5),{onRetry:n}=s;let i;e[0]===Symbol.for("react.memo_cache_sentinel")?(i=t.jsx(et,{}),e[0]=i):i=e[0];let o,c;e[1]===Symbol.for("react.memo_cache_sentinel")?(o=t.jsx("p",{className:"text-sm text-foreground",children:"Couldn't load companion integrations."}),c=t.jsx("p",{className:"mt-1 text-sm text-muted-foreground",children:"Something went wrong loading your integrations."}),e[1]=o,e[2]=c):(o=e[1],c=e[2]);let r;return e[3]!==n?(r=t.jsxs("div",{className:Je,children:[i,t.jsxs("div",{role:"alert",className:"rounded-2xl border border-border bg-card p-4",children:[o,c,t.jsx(V,{type:"button",variant:"outline",size:"sm",className:"mt-3",onClick:n,children:"Try again"})]})]}),e[3]=n,e[4]=r):r=e[4],r}function Yn(s){const e=E.c(2);let n;return e[0]!==s?(n=t.jsx(at,{children:i=>{const{reset:o}=i;return t.jsx(ct,{fallback:c=>{const{resetError:r}=c;return t.jsx(Wn,{onRetry:()=>{o(),r()}})},children:t.jsx(F.Suspense,{fallback:t.jsx(Qn,{}),children:t.jsx(Zn,{...s})})})}}),e[0]=s,e[1]=n):n=e[1],n}function Zn(s){const e=E.c(33),{org:n,cdConnectionId:i,siteUrl:o}=s,{data:c}=Ge.useSession(),r=c?.user?.id??"";let a;e[0]!==n.id||e[1]!==n.slug?(a={connectionId:ft,orgId:n.id,orgSlug:n.slug},e[0]=n.id,e[1]=n.slug,e[2]=a):a=e[2];const l=Oe(a);let u;e[3]!==i||e[4]!==n||e[5]!==l?(u={selfClient:l,org:n,cdConnectionId:i},e[3]=i,e[4]=n,e[5]=l,e[6]=u):u=e[6];const{cards:f}=$n(u);let p;e[7]!==i||e[8]!==n||e[9]!==l||e[10]!==r?(p={selfClient:l,org:n,userId:r,cdConnectionId:i},e[7]=i,e[8]=n,e[9]=l,e[10]=r,e[11]=p):p=e[11];const{connect:d,connectingFieldKey:g,error:x}=Bn(p);if(f.length===0)return null;const j=g!==null;let y;e[12]===Symbol.for("react.memo_cache_sentinel")?(y=t.jsx(et,{}),e[12]=y):y=e[12];let h;e[13]!==x?(h=x&&t.jsx("p",{role:"alert",className:"text-sm text-destructive",children:x}),e[13]=x,e[14]=h):h=e[14];let m;if(e[15]!==j||e[16]!==f||e[17]!==d||e[18]!==g||e[19]!==n||e[20]!==l||e[21]!==o){let b;e[23]!==j||e[24]!==d||e[25]!==g||e[26]!==n||e[27]!==l||e[28]!==o?(b=S=>t.jsx(kn,{card:S,connecting:g===S.fieldKey,disabled:j&&g!==S.fieldKey,org:n,selfClient:l,siteUrl:o,onConnect:()=>{d(S)}},S.fieldKey),e[23]=j,e[24]=d,e[25]=g,e[26]=n,e[27]=l,e[28]=o,e[29]=b):b=e[29],m=f.map(b),e[15]=j,e[16]=f,e[17]=d,e[18]=g,e[19]=n,e[20]=l,e[21]=o,e[22]=m}else m=e[22];let v;return e[30]!==h||e[31]!==m?(v=t.jsxs("div",{className:Je,children:[y,t.jsx(Ke,{wrapperClassName:"flex min-h-0 flex-1 flex-col md:block",className:"-mx-1 min-h-0 flex-1 overflow-y-auto px-1 md:max-h-[60vh] md:flex-none",children:t.jsxs("div",{className:"grid gap-4",children:[h,m]})})]}),e[30]=h,e[31]=m,e[32]=v):v=e[32],v}const tt="https://decocms-tanstack.deco-cx.workers.dev/agendar",Xn="Rather have us walk you through it?",Jn="Book a 20-minute call and we'll run the diagnostic with you, live.";function jt({siteUrl:s,email:e}){const n=new URL(tt);return s&&n.searchParams.set("siteUrl",s),e&&n.searchParams.set("email",e),n.toString()}function es(s){const e=E.c(9),{href:n,size:i,className:o}=s,c=n===void 0?tt:n,r=i===void 0?"lg":i;let a;e[0]!==o?(a=X("w-full",o),e[0]=o,e[1]=a):a=e[1];let l;e[2]===Symbol.for("react.memo_cache_sentinel")?(l=t.jsx(ht,{size:16}),e[2]=l):l=e[2];let u;e[3]!==c?(u=t.jsxs("a",{href:c,target:"_blank",rel:"noreferrer",children:["Schedule a meeting",l]}),e[3]=c,e[4]=u):u=e[4];let f;return e[5]!==r||e[6]!==a||e[7]!==u?(f=t.jsx(V,{asChild:!0,variant:"outline",size:r,className:a,children:u}),e[5]=r,e[6]=a,e[7]=u,e[8]=f):f=e[8],f}function it(s){const e=E.c(2),{children:n}=s;let i;return e[0]!==n?(i=t.jsx("div",{className:"relative z-10 flex h-12 w-12 items-center justify-center rounded-full border border-border bg-card card-shadow",children:n}),e[0]=n,e[1]=i):i=e[1],i}function ts(){const s=E.c(4);let e;s[0]===Symbol.for("react.memo_cache_sentinel")?(e=t.jsx(it,{children:t.jsx(xt,{size:20,className:"text-muted-foreground"})}),s[0]=e):e=s[0];let n;s[1]===Symbol.for("react.memo_cache_sentinel")?(n=t.jsx("div",{className:"relative mx-4 h-px flex-1 bg-border",children:t.jsx("span",{className:"absolute top-1/2 h-1.5 w-1.5 -translate-x-1/2 -translate-y-1/2 rounded-full bg-foreground animate-connection-travel","aria-hidden":!0})}),s[1]=n):n=s[1];let i;s[2]===Symbol.for("react.memo_cache_sentinel")?(i=t.jsx("span",{className:"absolute inset-0 rounded-full border border-foreground/40 animate-connection-arrive","aria-hidden":!0}),s[2]=i):i=s[2];let o;return s[3]===Symbol.for("react.memo_cache_sentinel")?(o=t.jsxs("div",{className:"flex items-center justify-between rounded-2xl border border-border/60 bg-muted/40 px-7 py-7",children:[e,n,t.jsxs("div",{className:"relative",children:[i,t.jsxs(it,{children:[t.jsx("img",{src:"/logos/deco logo.svg",alt:"deco",className:"h-6 w-6 dark:hidden"}),t.jsx("img",{src:"/logos/deco logo negative.svg",alt:"deco",className:"hidden h-6 w-6 dark:block"})]})]})]}),s[3]=o):o=s[3],o}function bt(s){const e=E.c(4),{href:n}=s;let i;e[0]===Symbol.for("react.memo_cache_sentinel")?(i=t.jsx(ts,{}),e[0]=i):i=e[0];let o;e[1]===Symbol.for("react.memo_cache_sentinel")?(o=t.jsxs("div",{className:"grid gap-2",children:[t.jsx("h2",{className:"text-xl font-medium leading-7 text-foreground",children:Xn}),t.jsx("p",{className:"text-base leading-6 text-muted-foreground",children:Jn})]}),e[1]=o):o=e[1];let c;return e[2]!==n?(c=t.jsx("div",{className:"relative flex h-full w-full items-center justify-center p-10",children:t.jsxs("div",{className:"flex w-full max-w-[380px] flex-col gap-6 rounded-3xl border border-border bg-card p-8 card-shadow",children:[i,o,t.jsx(es,{href:n,size:"xl"})]})}),e[2]=n,e[3]=c):c=e[3],c}function ns(s){const e=E.c(8),{className:n,href:i}=s,o=i===void 0?tt:i;let c;e[0]!==n?(c=X("flex items-center gap-4 rounded-2xl border border-border bg-card p-5 card-shadow transition-colors hover:bg-accent",n),e[0]=n,e[1]=c):c=e[1];let r;e[2]===Symbol.for("react.memo_cache_sentinel")?(r=t.jsx("span",{className:"flex h-11 w-11 shrink-0 items-center justify-center rounded-full bg-muted text-muted-foreground",children:t.jsx(xt,{size:20})}),e[2]=r):r=e[2];let a,l;e[3]===Symbol.for("react.memo_cache_sentinel")?(a=t.jsxs("span",{className:"flex flex-1 flex-col gap-0.5",children:[t.jsx("span",{className:"text-base font-medium leading-5 text-foreground",children:"Prefer to talk to a human?"}),t.jsx("span",{className:"text-sm leading-5 text-muted-foreground",children:"Book a call and we'll run the diagnostic with you."})]}),l=t.jsx(ht,{size:18,className:"shrink-0 text-muted-foreground"}),e[3]=a,e[4]=l):(a=e[3],l=e[4]);let u;return e[5]!==o||e[6]!==c?(u=t.jsxs("a",{href:o,target:"_blank",rel:"noreferrer",className:c,children:[r,a,l]}),e[5]=o,e[6]=c,e[7]=u):u=e[7],u}function vt(s){const e=E.c(10),{host:n}=s,i=`https://www.google.com/s2/favicons?domain=${n}&sz=128`;let o,c,r;e[0]===Symbol.for("react.memo_cache_sentinel")?(o=t.jsx("img",{src:"/logos/deco logo.svg",alt:"Deco",className:"h-7 w-7 dark:hidden"}),c=t.jsx("img",{src:"/logos/deco logo negative.svg",alt:"Deco",className:"h-7 w-7 hidden dark:block"}),r=t.jsx("div",{className:"h-6 w-px rotate-12 bg-border","aria-hidden":"true"}),e[0]=o,e[1]=c,e[2]=r):(o=e[0],c=e[1],r=e[2]);let a;e[3]!==i?(a=t.jsx("div",{className:"flex h-7 w-7 shrink-0 items-center justify-center overflow-hidden rounded-lg border border-border bg-white",children:t.jsx("img",{src:i,alt:"",className:"h-5 w-5",loading:"lazy"})}),e[3]=i,e[4]=a):a=e[4];let l;e[5]!==n?(l=t.jsx("span",{className:"text-lg font-medium text-foreground",children:n}),e[5]=n,e[6]=l):l=e[6];let u;return e[7]!==a||e[8]!==l?(u=t.jsxs("div",{className:"flex items-center gap-3",children:[o,c,r,a,l]}),e[7]=a,e[8]=l,e[9]=u):u=e[9],u}const ss={route:"Preparing commerce onboarding...",workspace:"Preparing your commerce workspace...",connect:"Connecting workspace...",setup:"Setting up Commerce Discovery...",button:"Setting up"};function Ct(s){return ss[s]}function St(s){const e=E.c(2),{variant:n}=s;let i;return e[0]!==n?(i=t.jsx(W,{children:t.jsx(Ue,{variant:n})}),e[0]=n,e[1]=i):i=e[1],i}function Ue(s){const e=E.c(4),{variant:n}=s;let i;e[0]!==n?(i=Ct(n),e[0]=n,e[1]=i):i=e[1];let o;return e[2]!==i?(o=t.jsx("div",{className:"flex justify-center py-4",role:"status","aria-live":"polite",children:t.jsx(Re,{label:i,className:"text-muted-foreground"})}),e[2]=i,e[3]=o):o=e[3],o}function is(){const s=E.c(1);let e;return s[0]===Symbol.for("react.memo_cache_sentinel")?(e=t.jsx(Re,{label:Ct("button")}),s[0]=e):e=s[0],e}function Si(){const s=E.c(1);let e;return s[0]===Symbol.for("react.memo_cache_sentinel")?(e=t.jsx(rs,{}),s[0]=e):e=s[0],e}const Nt=F.createContext(null),_t=()=>F.useContext(Nt);function os(s){if(!s)return null;const e=we(s);return e.ok?new URL(e.value).hostname:null}function rs(){const s=E.c(9);let e;s[0]===Symbol.for("react.memo_cache_sentinel")?(e={from:"/commerce-onboarding"},s[0]=e):e=s[0];const n=wt(e),{org:i,siteUrl:o}=n;let c;s[1]!==o?(c=os(o),s[1]=o,s[2]=c):c=s[2];const r=c;let a;s[3]!==i||s[4]!==o?(a=t.jsx(ls,{requestedOrgSlug:i,siteUrl:o}),s[3]=i,s[4]=o,s[5]=a):a=s[5];let l;return s[6]!==r||s[7]!==a?(l=t.jsx(Nt.Provider,{value:r,children:a}),s[6]=r,s[7]=a,s[8]=l):l=s[8],l}function ls(s){const e=E.c(8),{requestedOrgSlug:n,siteUrl:i}=s,{data:o,isPending:c}=Ge.useSession(),r=_t();if(c){let l;return e[0]===Symbol.for("react.memo_cache_sentinel")?(l=t.jsx(St,{variant:"route"}),e[0]=l):l=e[0],l}if(!o){const l=typeof window>"u"?"/commerce-onboarding":`${window.location.pathname}${window.location.search}`;let u;e[1]!==r?(u=r?t.jsx(vt,{host:r}):void 0,e[1]=r,e[2]=u):u=e[2];let f;return e[3]!==u?(f=t.jsx(W,{children:t.jsx(Et,{callbackUrl:l,allowAutoLogin:!1,title:"Unlock your full diagnostic",subtitle:null,brand:u})}),e[3]=u,e[4]=f):f=e[4],f}let a;return e[5]!==n||e[6]!==i?(a=t.jsx(as,{requestedOrgSlug:n,siteUrl:i}),e[5]=n,e[6]=i,e[7]=a):a=e[7],a}function as(s){const e=E.c(40),{requestedOrgSlug:n,siteUrl:i}=s,o=dt(),c=kt(),[r,a]=F.useState(null),[l,u]=F.useState(null),f=c.data?.map(ds)??[];let p;e[0]===Symbol.for("react.memo_cache_sentinel")?(p={mutationFn:cs,retry:!1,onSuccess:m=>{u(m)}},e[0]=p):p=e[0];const d=Ie(p);if(c.isPending){let m;return e[1]===Symbol.for("react.memo_cache_sentinel")?(m=t.jsx(St,{variant:"route"}),e[1]=m):m=e[1],m}if(c.error){let m;return e[2]!==c?(m=t.jsx(ke,{title:"We could not load your organizations",description:"Retry to continue commerce setup from this page.",actionLabel:"Retry",onRetry:()=>c.refetch()}),e[2]=c,e[3]=m):m=e[3],m}const g=n?f.find(m=>m.slug===n):null;if(g){let m;return e[4]!==g||e[5]!==i?(m=t.jsx(_e,{org:g,initialSiteUrl:i}),e[4]=g,e[5]=i,e[6]=m):m=e[6],m}if(n){let m;return e[7]!==c?(m=t.jsx(ke,{title:"Organization not found",description:"We could not find that organization for your account.",actionLabel:"Retry",onRetry:()=>c.refetch()}),e[7]=c,e[8]=m):m=e[8],m}if(r){let m;return e[9]!==r||e[10]!==i?(m=t.jsx(_e,{org:r,initialSiteUrl:i}),e[9]=r,e[10]=i,e[11]=m):m=e[11],m}if(f.length===1&&f[0]){let m;return e[12]!==f[0]||e[13]!==i?(m=t.jsx(_e,{org:f[0],initialSiteUrl:i}),e[12]=f[0],e[13]=i,e[14]=m):m=e[14],m}if(f.length>1){let m;e[15]===Symbol.for("react.memo_cache_sentinel")?(m=t.jsx(J,{title:"Choose an organization",description:"Select where commerce diagnostics should continue."}),e[15]=m):m=e[15];let v;e[16]===Symbol.for("react.memo_cache_sentinel")?(v=S=>a(S),e[16]=v):v=e[16];let b;return e[17]!==f?(b=t.jsx(W,{children:t.jsxs("div",{className:"grid gap-10",children:[m,t.jsx(Ke,{className:"-mx-1 max-h-[60vh] overflow-y-auto px-1",children:t.jsx(nt,{organizations:f,selectLabel:"Continue",onSelected:v})})]})}),e[17]=f,e[18]=b):b=e[18],b}if(!l){let m;e[19]!==d?(m=()=>{d.reset(),d.mutate()},e[19]=d,e[20]=m):m=e[20];let v;return e[21]!==d||e[22]!==m?(v=t.jsx(us,{mutation:d,onRetry:m}),e[21]=d,e[22]=m,e[23]=v):v=e[23],v}const x=l;if(x?.success&&(x.status==="created"||x.status==="joined"||x.status==="already_has_organization")&&x.organization){let m;return e[24]!==x.organization||e[25]!==i?(m=t.jsx(_e,{org:x.organization,initialSiteUrl:i}),e[24]=x.organization,e[25]=i,e[26]=m):m=e[26],m}if(x?.status==="ambiguous"&&x.organizations&&x.organizations.length>0){let m;e[27]===Symbol.for("react.memo_cache_sentinel")?(m=t.jsx(J,{title:"Choose an organization",description:"Your email can access more than one organization. Choose where commerce setup should continue."}),e[27]=m):m=e[27];const v=x.domain??void 0;let b;e[28]!==o||e[29]!==i?(b=(_,k)=>{ut(),a({..._,slug:k}),o({to:"/commerce-onboarding",search:{org:k,siteUrl:i}})},e[28]=o,e[29]=i,e[30]=b):b=e[30];let S;return e[31]!==x.organizations||e[32]!==v||e[33]!==b?(S=t.jsx(W,{children:t.jsxs("div",{className:"grid gap-10",children:[m,t.jsx(Ke,{className:"-mx-1 max-h-[60vh] overflow-y-auto px-1",children:t.jsx(nt,{organizations:x.organizations,domain:v,onJoined:b})})]})}),e[31]=x.organizations,e[32]=v,e[33]=b,e[34]=S):S=e[34],S}const j=x?.error??"We could not determine a commerce organization for this account.";let y;e[35]!==d?(y=()=>{u(null),d.reset()},e[35]=d,e[36]=y):y=e[36];let h;return e[37]!==j||e[38]!==y?(h=t.jsx(ke,{title:"Commerce onboarding needs support",description:j,actionLabel:"Try again",onRetry:y}),e[37]=j,e[38]=y,e[39]=h):h=e[39],h}async function cs(){const e=await(await fetch("/api/auth/custom/ensure-organization",{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"}})).json();return e.success&&(e.status==="created"||e.status==="joined"||e.status==="already_has_organization")&&e.organization&&ut(),e}function ds(s){return{id:s.id,name:s.name,slug:s.slug,logo:s.logo??null}}function us(s){const e=E.c(7),{mutation:n,onRetry:i}=s,o=F.useRef(!1);let c;e[0]!==n?(c=u=>{!u||o.current||(o.current=!0,n.mutate())},e[0]=n,e[1]=c):c=e[1];const r=c;if(n.error){let u;return e[2]!==i?(u=t.jsx(ke,{title:"Commerce onboarding is unavailable",description:"We could not prepare an organization for commerce setup. Retry from this page or contact support.",actionLabel:"Retry",onRetry:i}),e[2]=i,e[3]=u):u=e[3],u}let a;e[4]===Symbol.for("react.memo_cache_sentinel")?(a=t.jsx(Ue,{variant:"workspace"}),e[4]=a):a=e[4];let l;return e[5]!==r?(l=t.jsx(W,{children:t.jsx("div",{ref:r,children:a})}),e[5]=r,e[6]=l):l=e[6],l}function J(s){const e=E.c(8),{title:n,description:i}=s,o=_t();let c;e[0]!==o?(c=o?t.jsx(vt,{host:o}):t.jsxs("div",{children:[t.jsx("img",{src:"/logos/deco logo.svg",alt:"Deco",className:"h-12 w-12 dark:hidden"}),t.jsx("img",{src:"/logos/deco logo negative.svg",alt:"Deco",className:"h-12 w-12 hidden dark:block"})]}),e[0]=o,e[1]=c):c=e[1];let r;e[2]!==i||e[3]!==n?(r=(n||i)&&t.jsxs("div",{className:"space-y-2",children:[n&&t.jsx("h1",{className:"text-2xl font-medium leading-8",children:n}),i&&t.jsx("p",{className:"text-base text-muted-foreground leading-6",children:i})]}),e[2]=i,e[3]=n,e[4]=r):r=e[4];let a;return e[5]!==c||e[6]!==r?(a=t.jsxs("div",{className:"grid gap-10",children:[c,r]}),e[5]=c,e[6]=r,e[7]=a):a=e[7],a}function ke(s){const e=E.c(9),{title:n,description:i,actionLabel:o,onRetry:c}=s;let r;e[0]!==i||e[1]!==n?(r=t.jsx(J,{title:n,description:i}),e[0]=i,e[1]=n,e[2]=r):r=e[2];let a;e[3]!==o||e[4]!==c?(a=t.jsx(V,{type:"button",size:"xl",className:"w-full",onClick:c,children:o}),e[3]=o,e[4]=c,e[5]=a):a=e[5];let l;return e[6]!==r||e[7]!==a?(l=t.jsx(W,{children:t.jsxs("div",{className:"grid gap-10",children:[r,a]})}),e[6]=r,e[7]=a,e[8]=l):l=e[8],l}function ms(s){return s.content?.find(e=>e.text)?.text??"Commerce Discovery setup failed."}function Ne(s){const e=s;if(e.isError)throw new Error(ms(e));return e.structuredContent??s}function _e(s){const e=E.c(10),{org:n,initialSiteUrl:i}=s,{data:o}=Ge.useSession(),c=o?.user?.email;let r;e[0]!==i||e[1]!==c?(r=jt({siteUrl:i,email:c}),e[0]=i,e[1]=c,e[2]=r):r=e[2];const a=r;let l;e[3]!==a?(l=t.jsx(bt,{href:a}),e[3]=a,e[4]=l):l=e[4];const u=l;let f;return e[5]!==i||e[6]!==u||e[7]!==n||e[8]!==o?.user?.email?(f=t.jsx(at,{children:p=>{const{reset:d}=p;return t.jsx(ct,{fallback:g=>{const{error:x,resetError:j}=g;return t.jsx(W,{visual:u,children:t.jsx(fs,{orgName:n.name,message:x instanceof Error?x.message:"We could not check Commerce Discovery setup.",onRetry:()=>{d(),j()}})})},children:t.jsx(F.Suspense,{fallback:t.jsx(W,{visual:u,children:t.jsx(Ue,{variant:"connect"})}),children:t.jsx(ps,{org:n,initialSiteUrl:i,sessionEmail:o?.user?.email},`${n.id}:${i??""}`)})})}}),e[5]=i,e[6]=u,e[7]=n,e[8]=o?.user?.email,e[9]=f):f=e[9],f}function fs(s){const e=E.c(10),{orgName:n,message:i,onRetry:o}=s,c=`Commerce setup will continue for ${n}.`;let r;e[0]!==c?(r=t.jsx(J,{title:"Commerce diagnostics",description:c}),e[0]=c,e[1]=r):r=e[1];let a;e[2]!==i?(a=t.jsx(Ee,{message:i}),e[2]=i,e[3]=a):a=e[3];let l;e[4]!==o?(l=t.jsx(V,{type:"button",size:"xl",className:"w-full",onClick:o,children:"Retry"}),e[4]=o,e[5]=l):l=e[5];let u;return e[6]!==r||e[7]!==a||e[8]!==l?(u=t.jsxs("div",{className:"grid gap-10",children:[r,a,l]}),e[6]=r,e[7]=a,e[8]=l,e[9]=u):u=e[9],u}function ps(s){const e=E.c(104),{org:n,initialSiteUrl:i,sessionEmail:o}=s,c=dt();let r;e[0]!==n.id||e[1]!==n.slug?(r={connectionId:ft,orgId:n.id,orgSlug:n.slug},e[0]=n.id,e[1]=n.slug,e[2]=r):r=e[2];const a=Oe(r),[l,u]=F.useState(i??""),[f,p]=F.useState(null),[d,g]=F.useState(null),x=F.useRef(!1),j=mt.COMMERCE_DISCOVERY(n.id),y=Ot(n.id),h=Q.commerceDiscoveryConnection(n.id,j);let m;e[3]!==j||e[4]!==a?(m=async()=>{const L=await a.callTool({name:"COLLECTION_CONNECTIONS_GET",arguments:{id:j}});return Ne(L)},e[3]=j,e[4]=a,e[5]=m):m=e[5];let v;e[6]!==h||e[7]!==m?(v={queryKey:h,queryFn:m,retry:!1},e[6]=h,e[7]=m,e[8]=v):v=e[8];const b=ue(v),S=Q.commerceDiscoveryVirtualMcp(n.id,y);let _;e[9]!==a||e[10]!==y?(_=async()=>{const L=await a.callTool({name:"COLLECTION_VIRTUAL_MCP_GET",arguments:{id:y}});return Ne(L)},e[9]=a,e[10]=y,e[11]=_):_=e[11];let k;e[12]!==S||e[13]!==_?(k={queryKey:S,queryFn:_,retry:!1},e[12]=S,e[13]=_,e[14]=k):k=e[14];const w=ue(k);let N;e[15]!==a?(N=async L=>{const H=await a.callTool({name:"COMMERCE_DISCOVERY_SETUP",arguments:{siteUrl:L}});return Ne(H)},e[15]=a,e[16]=N):N=e[16];let O;e[17]!==b||e[18]!==w?(O=L=>{p(L),g(null),b.refetch(),w.refetch()},e[17]=b,e[18]=w,e[19]=O):O=e[19];let D;e[20]===Symbol.for("react.memo_cache_sentinel")?(D=L=>{g(L instanceof Error?L.message:"Commerce Discovery setup failed.")},e[20]=D):D=e[20];let U;e[21]!==N||e[22]!==O?(U={mutationFn:N,retry:!1,onSuccess:O,onError:D},e[21]=N,e[22]=O,e[23]=U):U=e[23];const I=Ie(U);let R;e[24]!==a?(R={mutationFn:async L=>{const H=await a.callTool({name:"COMMERCE_DISCOVERY_RUN",arguments:{siteUrl:L}});return Ne(H)},retry:!1},e[24]=a,e[25]=R):R=e[25];const $=Ie(R),M=!!b.data.item&&!!w.data.item,q=b.data.item,K=typeof q?.metadata?.siteUrl=="string"?q.metadata.siteUrl:void 0,z=i||l||K||"";let P;e[26]!==z||e[27]!==o?(P=jt({siteUrl:z,email:o}),e[26]=z,e[27]=o,e[28]=P):P=e[28];const C=P;let A;e[29]!==C?(A=t.jsx(bt,{href:C}),e[29]=C,e[30]=A):A=e[30];const T=A;let B;e[31]!==I?(B=L=>{const H=we(L);if(!H.ok){g(H.error);return}g(null),I.mutate(H.value)},e[31]=I,e[32]=B):B=e[32];const ee=B;let xe;e[33]!==i||e[34]!==ee||e[35]!==M?(xe=L=>{!L||x.current||M||!i||(x.current=!0,ee(i))},e[33]=i,e[34]=ee,e[35]=M,e[36]=xe):xe=e[36];const $e=xe;let ye;e[37]!==ee||e[38]!==l?(ye=L=>{L.preventDefault(),ee(l)},e[37]=ee,e[38]=l,e[39]=ye):ye=e[39];const Y=ye;let je;e[40]!==j||e[41]!==f?.reportApp||e[42]!==y?(je=f?.reportApp??{connectionId:j,virtualMcpId:y,toolName:Rt},e[40]=j,e[41]=f?.reportApp,e[42]=y,e[43]=je):je=e[43];const G=je;let be;e[44]!==z||e[45]!==c||e[46]!==n.slug||e[47]!==G.connectionId||e[48]!==G.toolName||e[49]!==G.virtualMcpId||e[50]!==$?(be=()=>{const L=we(z);L.ok&&$.mutate(L.value),localStorage.setItem(It.sidebarOpen(),JSON.stringify(!1)),c({to:"/$org/$taskId",params:{org:n.slug,taskId:crypto.randomUUID()},search:{virtualmcpid:G.virtualMcpId,main:Tt(G.connectionId,G.toolName),chat:0}})},e[44]=z,e[45]=c,e[46]=n.slug,e[47]=G.connectionId,e[48]=G.toolName,e[49]=G.virtualMcpId,e[50]=$,e[51]=be):be=e[51];const ze=be;if(M){let L;return e[52]!==C||e[53]!==T||e[54]!==z||e[55]!==ze||e[56]!==n||e[57]!==G?(L=t.jsx(gs,{org:n,reportApp:G,onOpenReport:ze,meetingUrl:C,meetingVisual:T,siteUrl:z}),e[52]=C,e[53]=T,e[54]=z,e[55]=ze,e[56]=n,e[57]=G,e[58]=L):L=e[58],L}if(i){let L;e[59]!==i?(L=we(i),e[59]=i,e[60]=L):L=e[60];const H=L;if(!H.ok){const Pe=`Commerce setup will continue for ${n.name}.`;let le;e[61]!==Pe?(le=t.jsx(J,{title:"Commerce diagnostics",description:Pe}),e[61]=Pe,e[62]=le):le=e[62];let ae;e[63]!==H.error?(ae=t.jsx(Ee,{message:H.error}),e[63]=H.error,e[64]=ae):ae=e[64];let ce;e[65]!==Y||e[66]!==d||e[67]!==I.isPending||e[68]!==l?(ce=t.jsx(Me,{siteUrl:l,error:d,isSubmitting:I.isPending,onSiteUrlChange:u,onSubmit:Y}),e[65]=Y,e[66]=d,e[67]=I.isPending,e[68]=l,e[69]=ce):ce=e[69];let de;e[70]!==le||e[71]!==ae||e[72]!==ce?(de=t.jsxs("div",{className:"grid gap-10",children:[le,ae,ce]}),e[70]=le,e[71]=ae,e[72]=ce,e[73]=de):de=e[73];let Se;return e[74]!==T||e[75]!==de?(Se=t.jsx(W,{visual:T,children:de}),e[74]=T,e[75]=de,e[76]=Se):Se=e[76],Se}const Ae=`Commerce Discovery is being prepared for ${H.value}.`;let ie;e[77]!==Ae?(ie=t.jsx(J,{title:"Commerce diagnostics",description:Ae}),e[77]=Ae,e[78]=ie):ie=e[78];let oe;e[79]!==Y||e[80]!==d||e[81]!==I||e[82]!==l?(oe=d?t.jsxs(t.Fragment,{children:[t.jsx(Ee,{message:d}),t.jsx(Me,{siteUrl:l,error:null,isSubmitting:I.isPending,onSiteUrlChange:u,onSubmit:Y})]}):t.jsx(Ue,{variant:"setup"}),e[79]=Y,e[80]=d,e[81]=I,e[82]=l,e[83]=oe):oe=e[83];let re;e[84]!==ie||e[85]!==oe||e[86]!==$e?(re=t.jsxs("div",{ref:$e,className:"grid gap-10",children:[ie,oe]}),e[84]=ie,e[85]=oe,e[86]=$e,e[87]=re):re=e[87];let Ce;return e[88]!==T||e[89]!==re?(Ce=t.jsx(W,{visual:T,children:re}),e[88]=T,e[89]=re,e[90]=Ce):Ce=e[90],Ce}const Le=`Commerce setup will continue for ${n.name}.`;let te;e[91]!==Le?(te=t.jsx(J,{title:"Commerce diagnostics",description:Le}),e[91]=Le,e[92]=te):te=e[92];let ne;e[93]!==Y||e[94]!==d||e[95]!==I.isPending||e[96]!==l?(ne=t.jsx(Me,{siteUrl:l,error:d,isSubmitting:I.isPending,onSiteUrlChange:u,onSubmit:Y}),e[93]=Y,e[94]=d,e[95]=I.isPending,e[96]=l,e[97]=ne):ne=e[97];let se;e[98]!==te||e[99]!==ne?(se=t.jsxs("div",{className:"grid gap-10",children:[te,ne]}),e[98]=te,e[99]=ne,e[100]=se):se=e[100];let ve;return e[101]!==T||e[102]!==se?(ve=t.jsx(W,{visual:T,children:se}),e[101]=T,e[102]=se,e[103]=ve):ve=e[103],ve}function Me(s){const e=E.c(22),{siteUrl:n,error:i,isSubmitting:o,onSiteUrlChange:c,onSubmit:r}=s;let a;e[0]===Symbol.for("react.memo_cache_sentinel")?(a=t.jsx("label",{className:"text-sm font-medium",htmlFor:"commerce-site-url",children:"Website URL"}),e[0]=a):a=e[0];let l;e[1]!==c?(l=y=>c(y.target.value),e[1]=c,e[2]=l):l=e[2];const u=!!i;let f;e[3]!==o||e[4]!==n||e[5]!==l||e[6]!==u?(f=t.jsx(Te,{id:"commerce-site-url",type:"text",inputMode:"url",value:n,onChange:l,placeholder:"https://example.com","aria-invalid":u,disabled:o}),e[3]=o,e[4]=n,e[5]=l,e[6]=u,e[7]=f):f=e[7];let p;e[8]!==i?(p=i?t.jsx(Ee,{message:i}):null,e[8]=i,e[9]=p):p=e[9];let d;e[10]!==f||e[11]!==p?(d=t.jsxs("div",{className:"grid gap-2",children:[a,f,p]}),e[10]=f,e[11]=p,e[12]=d):d=e[12];let g;e[13]!==o?(g=o?t.jsx(is,{}):t.jsxs(t.Fragment,{children:["Continue",t.jsx(pt,{size:16})]}),e[13]=o,e[14]=g):g=e[14];let x;e[15]!==o||e[16]!==g?(x=t.jsx(V,{type:"submit",size:"xl",className:"w-full",disabled:o,children:g}),e[15]=o,e[16]=g,e[17]=x):x=e[17];let j;return e[18]!==r||e[19]!==d||e[20]!==x?(j=t.jsxs("form",{className:"grid gap-4",onSubmit:r,children:[d,x]}),e[18]=r,e[19]=d,e[20]=x,e[21]=j):j=e[21],j}function gs(s){const e=E.c(20),{org:n,reportApp:i,onOpenReport:o,meetingUrl:c,meetingVisual:r,siteUrl:a}=s;let l;e[0]===Symbol.for("react.memo_cache_sentinel")?(l=t.jsx(J,{}),e[0]=l):l=e[0];let u;e[1]!==n||e[2]!==i.connectionId||e[3]!==a?(u=t.jsx(Yn,{org:n,cdConnectionId:i.connectionId,siteUrl:a}),e[1]=n,e[2]=i.connectionId,e[3]=a,e[4]=u):u=e[4];let f;e[5]!==c?(f=t.jsx(ns,{className:"md:hidden",href:c}),e[5]=c,e[6]=f):f=e[6];const p=!i.virtualMcpId;let d;e[7]===Symbol.for("react.memo_cache_sentinel")?(d=t.jsx(pt,{size:18}),e[7]=d):d=e[7];let g;e[8]!==o||e[9]!==p?(g=t.jsxs(V,{type:"button",size:"xl",className:"w-full rounded-2xl text-base font-medium",onClick:o,disabled:p,children:["See full report",d]}),e[8]=o,e[9]=p,e[10]=g):g=e[10];let x;e[11]!==f||e[12]!==g?(x=t.jsxs("div",{className:"flex shrink-0 flex-col gap-3 md:mt-8",children:[f,g]}),e[11]=f,e[12]=g,e[13]=x):x=e[13];let j;e[14]!==u||e[15]!==x?(j=t.jsxs("div",{className:"flex min-h-0 flex-1 flex-col gap-6 md:grid md:gap-4",children:[l,u,x]}),e[14]=u,e[15]=x,e[16]=j):j=e[16];let y;return e[17]!==r||e[18]!==j?(y=t.jsx(W,{align:"fill",visual:r,children:j}),e[17]=r,e[18]=j,e[19]=y):y=e[19],y}function Ee(s){const e=E.c(2),{message:n}=s;let i;return e[0]!==n?(i=t.jsx("p",{className:"text-sm leading-5 text-destructive",role:"alert",children:n}),e[0]=n,e[1]=i):i=e[1],i}export{Si as default};