decocms 3.35.1 → 3.35.3

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 (237) hide show
  1. package/dist/client/assets/{AlertCircle-asB0zjf2.js → AlertCircle-DjOU_aot.js} +1 -1
  2. package/dist/client/assets/{ArrowUpRight-DRnt_VKh.js → ArrowUpRight-BXJMGk9i.js} +1 -1
  3. package/dist/client/assets/{Check-CNRVH6xs.js → Check-D7HZW6oZ.js} +1 -1
  4. package/dist/client/assets/{CheckCircle-B7v5_MG4.js → CheckCircle-XS4dmEOs.js} +1 -1
  5. package/dist/client/assets/{ChevronDown-BKkz3Gyp.js → ChevronDown-CxTVikeq.js} +1 -1
  6. package/dist/client/assets/{ChevronLeft-DkMFugke.js → ChevronLeft-BEmN2X52.js} +1 -1
  7. package/dist/client/assets/{ChevronRight-DixPnH3V.js → ChevronRight-3jD7TdJZ.js} +1 -1
  8. package/dist/client/assets/{ChevronUp-BeDEmrn1.js → ChevronUp-Dbc77Gwp.js} +1 -1
  9. package/dist/client/assets/{Container-C41D-bwR.js → Container-Hfp9SJFa.js} +1 -1
  10. package/dist/client/assets/{DotsVertical-DimB1qZR.js → DotsVertical-Cz5MZln-.js} +1 -1
  11. package/dist/client/assets/{Eye-CFpoJQMe.js → Eye-BIZqMr-y.js} +1 -1
  12. package/dist/client/assets/{FilterLines-htpqKUqo.js → FilterLines-iroXgkwP.js} +1 -1
  13. package/dist/client/assets/{Globe01-CxF-Z8O2.js → Globe01-CiCGKTg3.js} +1 -1
  14. package/dist/client/assets/{HardDrive-TXw7C9gB.js → HardDrive-B26C8dI3.js} +1 -1
  15. package/dist/client/assets/{Key01-CDAkGspz.js → Key01-DZeJDklU.js} +1 -1
  16. package/dist/client/assets/{LayoutLeft-BG08KNqc.js → LayoutLeft-CY1OP6dH.js} +1 -1
  17. package/dist/client/assets/{LinkExternal01-AylVRyuU.js → LinkExternal01-DwxMIV-o.js} +1 -1
  18. package/dist/client/assets/{Monitor01-gdKmZQTW.js → Monitor01-_FIjo4ge.js} +1 -1
  19. package/dist/client/assets/{Palette-D9_6t0uI.js → Palette-BDd6wxPD.js} +1 -1
  20. package/dist/client/assets/{Play-aa6uUei5.js → Play-C933mY5z.js} +1 -1
  21. package/dist/client/assets/{Plus-DcxLSicT.js → Plus-aXWGGcSy.js} +1 -1
  22. package/dist/client/assets/{RefreshCcw01-Dd5D2uNm.js → RefreshCcw01-DS1vtLKW.js} +1 -1
  23. package/dist/client/assets/{SearchMd-2GibIebB.js → SearchMd-Cr6CluRw.js} +1 -1
  24. package/dist/client/assets/{Settings02-D0kdZjJD.js → Settings02-DeH66RiM.js} +1 -1
  25. package/dist/client/assets/{Shield01-CpxvRW7h.js → Shield01-0kTDalL_.js} +1 -1
  26. package/dist/client/assets/{Star01-BVQUiqS1.js → Star01-pwvCfpNJ.js} +1 -1
  27. package/dist/client/assets/{Stars01-B2PA7s4d.js → Stars01-Bw7_Rdwp.js} +1 -1
  28. package/dist/client/assets/{Stars02-BFz8RQ16.js → Stars02-vcxNwhIa.js} +1 -1
  29. package/dist/client/assets/{Sun-DMcKqqHE.js → Sun-De2vWRC7.js} +1 -1
  30. package/dist/client/assets/{SwitchHorizontal01-qUOmQUUG.js → SwitchHorizontal01-Blia-yUi.js} +1 -1
  31. package/dist/client/assets/{Tool01-DNz0OMpT.js → Tool01-DC4THSlP.js} +1 -1
  32. package/dist/client/assets/{Trash01-rpak8qu1.js → Trash01-DBSukaq0.js} +1 -1
  33. package/dist/client/assets/{Upload01-d_Wyw7QT.js → Upload01-DruP7_KV.js} +1 -1
  34. package/dist/client/assets/{User01-BWllfXHj.js → User01-Bweqikx-.js} +1 -1
  35. package/dist/client/assets/{Users01-DG6YdAo1.js → Users01-N436STOJ.js} +1 -1
  36. package/dist/client/assets/{Users03-B9AqN8LK.js → Users03-DiilXFZ6.js} +1 -1
  37. package/dist/client/assets/{X-DxE022Fo.js → X-B1W1F4mo.js} +1 -1
  38. package/dist/client/assets/{XCircle-B_UH_gQt.js → XCircle-BtUzMyFW.js} +1 -1
  39. package/dist/client/assets/{XClose-DOt_DYPz.js → XClose-r0gXvFlp.js} +1 -1
  40. package/dist/client/assets/{Zap-CyMJw7DY.js → Zap-Dvtyg5Ik.js} +1 -1
  41. package/dist/client/assets/{ZapSquare-Dz4Qok6x.js → ZapSquare-BQX2HOTP.js} +1 -1
  42. package/dist/client/assets/{ZoomOut-BkCtUzuC.js → ZoomOut-DC46Ewts.js} +1 -1
  43. package/dist/client/assets/{access-gate-u6bqRJWi.js → access-gate-CVMVVI4n.js} +1 -1
  44. package/dist/client/assets/{accordion-B7oL0ZOw.js → accordion-DBJsIIHl.js} +1 -1
  45. package/dist/client/assets/{add-section-modal-DI1aX1UO.js → add-section-modal-v1Vhtks6.js} +1 -1
  46. package/dist/client/assets/{agent-capabilities-BxQUOIVO.js → agent-capabilities-n5Q1YbJ5.js} +1 -1
  47. package/dist/client/assets/{agent-icon-BrUPk7cd.js → agent-icon-CCGqC-bl.js} +1 -1
  48. package/dist/client/assets/{agent-icons-oFY-K2bC.js → agent-icons-CDVkEkIq.js} +2 -2
  49. package/dist/client/assets/{agents-list-BOxJitnX.js → agents-list-DDPJUJaX.js} +1 -1
  50. package/dist/client/assets/{ai-providers-DjvmZlJ5.js → ai-providers-48DFDYIz.js} +1 -1
  51. package/dist/client/assets/{alert-8WGQf_5q.js → alert-ZcglsRSH.js} +1 -1
  52. package/dist/client/assets/{alert-dialog-DUUnhBc6.js → alert-dialog-B2k_N3ZX.js} +1 -1
  53. package/dist/client/assets/app-editor-DmCxU5-w.js +1 -0
  54. package/dist/client/assets/{auth-DTxUlSLU.js → auth-ClbRbdVv.js} +1 -1
  55. package/dist/client/assets/{auth-catchall-_asaISim.js → auth-catchall-BQd5LNUx.js} +1 -1
  56. package/dist/client/assets/{auth-split-layout-DU0bpIBM.js → auth-split-layout-jRGUFWwU.js} +1 -1
  57. package/dist/client/assets/{automation-list-row-atv_xAlK.js → automation-list-row-CXD-x28t.js} +1 -1
  58. package/dist/client/assets/{automation-runs-8yvWAbAC.js → automation-runs-BIJek_K_.js} +1 -1
  59. package/dist/client/assets/{automations-B1IxT7Wc.js → automations-D53YpHbQ.js} +1 -1
  60. package/dist/client/assets/{avatar-BqYC23h9.js → avatar-BG2RlqaT.js} +1 -1
  61. package/dist/client/assets/{badge-CGZjMX2o.js → badge-DIN7Nq6a.js} +1 -1
  62. package/dist/client/assets/{brand-context-Dki54pAn.js → brand-context--o_ht-A-.js} +1 -1
  63. package/dist/client/assets/{buckets-BgnqByrS.js → buckets-DD6OfmjS.js} +1 -1
  64. package/dist/client/assets/{calendar-CaIJu6mx.js → calendar-RJSiIOON.js} +1 -1
  65. package/dist/client/assets/{capability-load-error-DWbE5k9a.js → capability-load-error-BfCjxOlU.js} +1 -1
  66. package/dist/client/assets/{card-BlzflWCA.js → card-ykuj7mlf.js} +1 -1
  67. package/dist/client/assets/{chat-context-BUN4BStS.js → chat-context-CEWm5eLB.js} +1 -1
  68. package/dist/client/assets/{checkbox-C1s8UE6Y.js → checkbox-BKpSRHdU.js} +1 -1
  69. package/dist/client/assets/{cli-auth-success-DOMHymP7.js → cli-auth-success-qAM068ao.js} +1 -1
  70. package/dist/client/assets/{collection-detail-Fe7fYzy1.js → collection-detail-BaAVQGsi.js} +1 -1
  71. package/dist/client/assets/{collection-display-button-CTi0VUGU.js → collection-display-button-ve31YRQs.js} +1 -1
  72. package/dist/client/assets/{collection-search-CJ5Ov7mh.js → collection-search-C5MSFdhR.js} +1 -1
  73. package/dist/client/assets/{collection-table-wrapper-BMZaf4HK.js → collection-table-wrapper-Wi0b7UJz.js} +1 -1
  74. package/dist/client/assets/{collection-tabs-zuvlZo6K.js → collection-tabs-CAVXo49Z.js} +1 -1
  75. package/dist/client/assets/{collections-Dg2-DQoz.js → collections-Cs_tB6Xp.js} +1 -1
  76. package/dist/client/assets/{command-ETJRln9I.js → command-ClPkeFT9.js} +1 -1
  77. package/dist/client/assets/connect-desktop-dialog-DrC4f6Q3.js +1 -0
  78. package/dist/client/assets/{connection-card-BryVkZk7.js → connection-card-aeOBPbSz.js} +1 -1
  79. package/dist/client/assets/{connection-detail-KbHJGNLa.js → connection-detail-p5zHxWJQ.js} +1 -1
  80. package/dist/client/assets/{connection-form-helpers-C9SsVHwd.js → connection-form-helpers-C2pw-OdH.js} +1 -1
  81. package/dist/client/assets/{connections-C-B_pHNS.js → connections-DtVPIESl.js} +1 -1
  82. package/dist/client/assets/decopilot-sse-pool-BZ8GwOYU.js +1 -0
  83. package/dist/client/assets/{dialog-dItkri_7.js → dialog-BwBYyWWk.js} +1 -1
  84. package/dist/client/assets/{domain-settings-Cwl6OKHc.js → domain-settings-p2x5w3J1.js} +1 -1
  85. package/dist/client/assets/{drawer-CiKI2xvg.js → drawer-QIeXv6B7.js} +1 -1
  86. package/dist/client/assets/{dropdown-menu-DA6--pO3.js → dropdown-menu-CL4WEQRf.js} +1 -1
  87. package/dist/client/assets/{dynamic-plugin-layout-DvjE2kdj.js → dynamic-plugin-layout-cQR6S4X8.js} +1 -1
  88. package/dist/client/assets/{empty-state-Wjey2haZ.js → empty-state-BKLgisam.js} +1 -1
  89. package/dist/client/assets/{empty-state-ubN3bG68.js → empty-state-C4JeGg4X.js} +1 -1
  90. package/dist/client/assets/{extract-connection-data-BUZFKLkD.js → extract-connection-data-Dz_jOB39.js} +1 -1
  91. package/dist/client/assets/{features-wYfaVlaa.js → features-lNOjZ0fU.js} +1 -1
  92. package/dist/client/assets/{file-explorer-uNvjlPcF.js → file-explorer-MIJepCP_.js} +1 -1
  93. package/dist/client/assets/{file-type-icon-BC52hPZD.js → file-type-icon-B6AnVMPu.js} +1 -1
  94. package/dist/client/assets/{files-DCMyG2Qq.js → files-C6_93qT5.js} +1 -1
  95. package/dist/client/assets/{form-BvrZIBZy.js → form-Z86e6etr.js} +1 -1
  96. package/dist/client/assets/{general-CVh1dm4M.js → general-CBaQO14X.js} +1 -1
  97. package/dist/client/assets/{generate-id-BYzu1jEq.js → generate-id-C7CxZwCs.js} +1 -1
  98. package/dist/client/assets/{github-repo-picker-D-39cmmm.js → github-repo-picker-BlgfXLdP.js} +1 -1
  99. package/dist/client/assets/{header-tab-button-eoCiDxtu.js → header-tab-button-BOZYRinC.js} +1 -1
  100. package/dist/client/assets/{hover-card-DuwXdrhz.js → hover-card-DCrCVVSt.js} +1 -1
  101. package/dist/client/assets/{image-field-BctFTejU.js → image-field-CnaeZ7Cq.js} +1 -1
  102. package/dist/client/assets/{index-7TDtRiUY.js → index--1Ng2vB4.js} +4 -4
  103. package/dist/client/assets/{index-Dilf6iGE.js → index-1vLRIaGM.js} +1 -1
  104. package/dist/client/assets/{index-cSwj9er3.js → index-BdZLvIUs.js} +1 -1
  105. package/dist/client/assets/{index-DFBJ_PWq.js → index-Cf5_qS_K.js} +1 -1
  106. package/dist/client/assets/{index-BMYBcbtc.js → index-CiRwseKn.js} +1 -1
  107. package/dist/client/assets/{index-BOvqwG23.js → index-CmVsJNWn.js} +1 -1
  108. package/dist/client/assets/{index-CYZk0gv3.js → index-D36v7D1U.js} +1 -1
  109. package/dist/client/assets/{index-CQVYoK7e.js → index-DvG0T2G3.js} +1 -1
  110. package/dist/client/assets/{index-CfhwhmtA.js → index-DxJD6aw-.js} +1 -1
  111. package/dist/client/assets/{index-BN_h4BrS.js → index-F-DdQVig.js} +1 -1
  112. package/dist/client/assets/{index-B6rgjRY6.js → index-Jt8pUNdF.js} +1 -1
  113. package/dist/client/assets/{index-DkJOKUiK.js → index-Nc3tqGu_.js} +1 -1
  114. package/dist/client/assets/{index-DkBXivRM.js → index-YE7XuOF9.js} +1 -1
  115. package/dist/client/assets/{index-CyhU99S0.js → index-qk7utkhC.js} +1 -1
  116. package/dist/client/assets/{index-redirect-C0KSMoT0.js → index-redirect-Bga8SUq5.js} +1 -1
  117. package/dist/client/assets/{index-Dv-yFpKM.js → index-uVHAmIsb.js} +3 -3
  118. package/dist/client/assets/{input-B16LqKMQ.js → input-BYcDxHNs.js} +1 -1
  119. package/dist/client/assets/{integration-icon-7cYHs9rV.js → integration-icon-YIddy6rU.js} +1 -1
  120. package/dist/client/assets/{label-DfTmRnMe.js → label-6YORzGJ9.js} +1 -1
  121. package/dist/client/assets/{layout-BCfLVStg.js → layout-BqzITPb8.js} +1 -1
  122. package/dist/client/assets/{login-BQe_0Uvb.js → login-OD0e1zDV.js} +1 -1
  123. package/dist/client/assets/{mcp-oauth-BoL_9gDY.js → mcp-oauth-Bqzn0Dif.js} +1 -1
  124. package/dist/client/assets/{members-DjEZG3vo.js → members-DS-tdh70.js} +1 -1
  125. package/dist/client/assets/{monaco-editor-CEYWUBYY.js → monaco-editor-BUU4dfTp.js} +1 -1
  126. package/dist/client/assets/{monitoring-stats-row-Bn6k8FMZ.js → monitoring-stats-row-W1kG1QMr.js} +1 -1
  127. package/dist/client/assets/{oauth-callback-RkcrzPY9.js → oauth-callback-TPVFfDa1.js} +1 -1
  128. package/dist/client/assets/{oauth-callback-ai-provider-5c5f08wA.js → oauth-callback-ai-provider-BSrRnpyk.js} +1 -1
  129. package/dist/client/assets/{onboarding-DgNS0nCK.js → onboarding-K3muUGna.js} +1 -1
  130. package/dist/client/assets/{org-install-BAqLW3a2.js → org-install-B_NKJRUX.js} +1 -1
  131. package/dist/client/assets/{org-layout--7cqwMMu.js → org-layout-DS11FDyh.js} +1 -1
  132. package/dist/client/assets/{org-plugin-layout-oYg4_27L.js → org-plugin-layout-Ds4SKE20.js} +1 -1
  133. package/dist/client/assets/{page-seo-form-BPPrLLbX.js → page-seo-form-CUXHyT3k.js} +1 -1
  134. package/dist/client/assets/page-seo-sheet-DWN_jrpV.js +1 -0
  135. package/dist/client/assets/{pair-rD44zBRY.js → pair-DguDTLaz.js} +1 -1
  136. package/dist/client/assets/{plugin-empty-state-BrE2fclx.js → plugin-empty-state-BsOWqXT4.js} +1 -1
  137. package/dist/client/assets/{plugin-header-K2albhDB.js → plugin-header-CVnVRSWb.js} +1 -1
  138. package/dist/client/assets/{plugin-layout-QWYZgGti.js → plugin-layout-B-eexJrb.js} +1 -1
  139. package/dist/client/assets/{popover-BneLTlXE.js → popover-OWTo-ttg.js} +1 -1
  140. package/dist/client/assets/{post-editor-DtVXF5Vi.js → post-editor-9P0wvqVY.js} +1 -1
  141. package/dist/client/assets/{primitives-CGyfTuZM.js → primitives-BKz7PoD1.js} +1 -1
  142. package/dist/client/assets/{profile-DyIp4_Sh.js → profile-DKgH58jm.js} +1 -1
  143. package/dist/client/assets/project-app-view-aiPHbBMn.js +1 -0
  144. package/dist/client/assets/record-editor-CEd3Nq-X.js +1 -0
  145. package/dist/client/assets/registry-BJIUp0yq.js +2 -0
  146. package/dist/client/assets/{registry-layout-D_1w2T32.js → registry-layout-BVyz_YyX.js} +1 -1
  147. package/dist/client/assets/{require-capability-BYMVx09Z.js → require-capability-BNXWgOaA.js} +1 -1
  148. package/dist/client/assets/{required-auth-layout-cXbsWfNV.js → required-auth-layout-CgveTWoj.js} +1 -1
  149. package/dist/client/assets/{reset-password-CUBQj13G.js → reset-password-B5XJrRXo.js} +1 -1
  150. package/dist/client/assets/{resizable-DTSOtBpc.js → resizable-ZwB_SgdO.js} +1 -1
  151. package/dist/client/assets/{roles-CNJV2xc7.js → roles-B3qZ9FQm.js} +1 -1
  152. package/dist/client/assets/save-referenced-block-BWbuYBb2.js +1 -0
  153. package/dist/client/assets/{save-status-CFFENSy0.js → save-status-BAgQweyK.js} +1 -1
  154. package/dist/client/assets/{schema-form-EY1QOp8v.js → schema-form-CD60zPdr.js} +1 -1
  155. package/dist/client/assets/{scroll-area-CGmfUT4q.js → scroll-area-CixG0pJh.js} +1 -1
  156. package/dist/client/assets/{search-input-nds5g8eq.js → search-input-BfizHALq.js} +1 -1
  157. package/dist/client/assets/{secrets-D9isT8UG.js → secrets-hkT-vkWO.js} +1 -1
  158. package/dist/client/assets/{sections-editor-Bdjt3M_c.js → sections-editor-C7wGHkLQ.js} +1 -1
  159. package/dist/client/assets/{select-CXfOBpVA.js → select-DpIv2m7o.js} +1 -1
  160. package/dist/client/assets/{select-model-BLS2zNwN.js → select-model-DHqBdvUI.js} +1 -1
  161. package/dist/client/assets/{seo-editor-COMkxwHv.js → seo-editor-X4tutsUS.js} +1 -1
  162. package/dist/client/assets/{settings-layout-B65ypXYb.js → settings-layout-BPos4Lfi.js} +1 -1
  163. package/dist/client/assets/{settings-section-ysm1dXbe.js → settings-section-nvSL8mUn.js} +1 -1
  164. package/dist/client/assets/{sheet-DwJxE17f.js → sheet-J3PJeFDK.js} +1 -1
  165. package/dist/client/assets/{shell-controls-CghaJ_r9.js → shell-controls-CV-_zqGg.js} +1 -1
  166. package/dist/client/assets/{shell-layout-BI3SgcG0.js → shell-layout-tEjGEg5-.js} +1 -1
  167. package/dist/client/assets/{shell-route-loading-BQp4nxMc.js → shell-route-loading-CZqCIakz.js} +1 -1
  168. package/dist/client/assets/{sidebar-nhuTSqFS.js → sidebar-DawbXHdj.js} +1 -1
  169. package/dist/client/assets/{skeleton-DcZkQ-WQ.js → skeleton-BCgq4Xy6.js} +1 -1
  170. package/dist/client/assets/{sortable.esm-BJmSIQN6.js → sortable.esm-DsSid7Zp.js} +1 -1
  171. package/dist/client/assets/{spinner-C76OMH7i.js → spinner-BQT6CDh-.js} +1 -1
  172. package/dist/client/assets/{sso-Biwe8B2Y.js → sso-B1HWtZMn.js} +1 -1
  173. package/dist/client/assets/{store-DPy_WrJu.js → store-BfFFxnM0.js} +1 -1
  174. package/dist/client/assets/store-registry-DspBhmXB.js +2 -0
  175. package/dist/client/assets/{studio-tools-DP4PwlLL.js → studio-tools-Bsqb-6Fx.js} +1 -1
  176. package/dist/client/assets/{switch-Dlc-euH4.js → switch-Cu-9OUl1.js} +1 -1
  177. package/dist/client/assets/{tab-id-DrxIMKZC.js → tab-id-DxwgE0jf.js} +1 -1
  178. package/dist/client/assets/{table-BY5hmAW9.js → table-XS_vYE_1.js} +1 -1
  179. package/dist/client/assets/{tabs-MktB_dq3.js → tabs-B4F5NKqf.js} +1 -1
  180. package/dist/client/assets/{task-status-Bkjp3y0Q.js → task-status-OfocbInI.js} +1 -1
  181. package/dist/client/assets/{textarea-Dc7UpW7V.js → textarea-pwpin7Xo.js} +1 -1
  182. package/dist/client/assets/{toggle-group-PAs-hpFv.js → toggle-group-BTyEkyOV.js} +1 -1
  183. package/dist/client/assets/{toolbar-CCipnjie.js → toolbar-ZyghcYDs.js} +1 -1
  184. package/dist/client/assets/{tools-list-D8vEf5kn.js → tools-list-Dm-oDLPn.js} +1 -1
  185. package/dist/client/assets/{tooltip-DyNW-AXf.js → tooltip-C_pZvUmA.js} +1 -1
  186. package/dist/client/assets/{types-DYMMjWos.js → types-CVQ_neIF.js} +1 -1
  187. package/dist/client/assets/{use-ai-providers-C1UbdVdO.js → use-ai-providers-CGgTldnc.js} +1 -1
  188. package/dist/client/assets/{use-automations-DFVkTFjl.js → use-automations-C3tUJiXy.js} +1 -1
  189. package/dist/client/assets/{use-capability-Bw0k887i.js → use-capability-BcwY0Lf1.js} +1 -1
  190. package/dist/client/assets/{use-clock-tick-DMfzqE_6.js → use-clock-tick-Bsu4JpY1.js} +1 -1
  191. package/dist/client/assets/{use-collections-DGD5HYrs.js → use-collections-CNY4Rigp.js} +1 -1
  192. package/dist/client/assets/{use-connection-XtO-eFJi.js → use-connection-Cd3-MJT5.js} +1 -1
  193. package/dist/client/assets/{use-copy-fHv0q1pV.js → use-copy-C62Opw3r.js} +1 -1
  194. package/dist/client/assets/{use-create-virtual-mcp-DTGwia7F.js → use-create-virtual-mcp-JNvxHXlx.js} +1 -1
  195. package/dist/client/assets/{use-debounced-autosave-nDLl3CCi.js → use-debounced-autosave-CmpKlipe.js} +1 -1
  196. package/dist/client/assets/{use-delete-connection-CWxG7WKN.js → use-delete-connection-DOqJ3DYp.js} +1 -1
  197. package/dist/client/assets/{use-file-configs-DhxZBYOT.js → use-file-configs-OSUx89xj.js} +1 -1
  198. package/dist/client/assets/{use-infinite-scroll-D4S3aGR5.js → use-infinite-scroll-Ce2zTY3i.js} +1 -1
  199. package/dist/client/assets/{use-list-state-Cx82QFu_.js → use-list-state-B6GtGz_i.js} +1 -1
  200. package/dist/client/assets/{use-mcp-client-C8ZwZB20.js → use-mcp-client-Bqv2ciYo.js} +1 -1
  201. package/dist/client/assets/{use-mcp-prompts-D2owAcPE.js → use-mcp-prompts-B2fIh5W5.js} +1 -1
  202. package/dist/client/assets/{use-mcp-tools-BW-64A4f.js → use-mcp-tools-DNa7v9SS.js} +1 -1
  203. package/dist/client/assets/{use-members-DPyxvdDj.js → use-members-BBAnZQ_N.js} +1 -1
  204. package/dist/client/assets/{use-navigate-to-agent-B9d6Q1VR.js → use-navigate-to-agent-CDxi6d1t.js} +1 -1
  205. package/dist/client/assets/{use-org-auth-client-BTTZUjKk.js → use-org-auth-client-BvIrqhMj.js} +1 -1
  206. package/dist/client/assets/{use-org-sso-B1KJDg2R.js → use-org-sso-DvInKERU.js} +1 -1
  207. package/dist/client/assets/{use-organization-roles-zS-vWU34.js → use-organization-roles-CrylSy9-.js} +1 -1
  208. package/dist/client/assets/{use-organization-settings-CCLHoFg6.js → use-organization-settings-CdYVljPu.js} +1 -1
  209. package/dist/client/assets/{use-registry-connections-CAyIHNjF.js → use-registry-connections-Bdnyk0np.js} +1 -1
  210. package/dist/client/assets/{use-secrets-CtwUwXaf.js → use-secrets-5xq_sQR4.js} +1 -1
  211. package/dist/client/assets/{use-status-sounds-B27SY7cH.js → use-status-sounds-CugYppDe.js} +1 -1
  212. package/dist/client/assets/{use-view-mode-BRITAZ4S.js → use-view-mode-BmgcQL7Y.js} +1 -1
  213. package/dist/client/assets/{use-virtual-mcp-DLQJqd7d.js → use-virtual-mcp-Clsr41cX.js} +1 -1
  214. package/dist/client/assets/useInfiniteQuery-CL1ZPxL1.js +1 -0
  215. package/dist/client/assets/{useRouterState-Y1aLUix_.js → useRouterState-BCoEdLHo.js} +1 -1
  216. package/dist/client/assets/useSuspenseInfiniteQuery-B0dXZKGJ.js +1 -0
  217. package/dist/client/assets/{user-CLXOG3Qm.js → user-DNJpS6qb.js} +1 -1
  218. package/dist/client/assets/{view-mode-toggle-D_5X7-ae.js → view-mode-toggle-CnJNM_yP.js} +1 -1
  219. package/dist/client/assets/{watch-sse-pool-rXavNycp.js → watch-sse-pool-DiiHGFSQ.js} +1 -1
  220. package/dist/client/assets/{workflow-Bq61DMkg.js → workflow-DTPliqqz.js} +1 -1
  221. package/dist/client/assets/workflow-detail-DmBVM3K8.js +1 -0
  222. package/dist/client/index.html +1 -1
  223. package/dist/server/cli.js +2 -2
  224. package/dist/server/server.js +1 -1
  225. package/package.json +1 -1
  226. package/dist/client/assets/app-editor-8bhdvSJz.js +0 -1
  227. package/dist/client/assets/connect-desktop-dialog-Ccy-ptqT.js +0 -1
  228. package/dist/client/assets/decopilot-sse-pool-BYcZYovC.js +0 -1
  229. package/dist/client/assets/page-seo-sheet-B3ue-ZRT.js +0 -1
  230. package/dist/client/assets/project-app-view-LYHB1B7I.js +0 -1
  231. package/dist/client/assets/record-editor-CoIz7HmY.js +0 -1
  232. package/dist/client/assets/registry-DusjF1MY.js +0 -2
  233. package/dist/client/assets/save-referenced-block-R6f1-KeE.js +0 -1
  234. package/dist/client/assets/store-registry-D7UNS3l2.js +0 -2
  235. package/dist/client/assets/useInfiniteQuery-G_6i7LOo.js +0 -1
  236. package/dist/client/assets/useSuspenseInfiniteQuery-BhcYyKm_.js +0 -1
  237. package/dist/client/assets/workflow-detail-BJvoV5gO.js +0 -1
@@ -2219,7 +2219,7 @@ Hint: Configure a valid Google account email in Monitor Configuration > Contexto
2219
2219
  `);let X=Z.pax;if(X)for(let Q in X)G+=id1(" "+Q+"="+X[Q]+`
2220
2220
  `);return d4.from(G)};b14.decodePax=function(Z){let G={};while(Z.length){let X=0;while(X<Z.length&&Z[X]!==32)X++;let Q=parseInt(d4.toString(Z.subarray(0,X)),10);if(!Q)return G;let Y=d4.toString(Z.subarray(X+1,Q-1)),J=Y.indexOf("=");if(J===-1)return G;G[Y.slice(0,J)]=Y.slice(J+1),Z=Z.subarray(Q)}return G};b14.encode=function(Z){let G=d4.alloc(512),X=Z.name,Q="";if(Z.typeflag===5&&X[X.length-1]!=="/")X+="/";if(d4.byteLength(X)!==X.length)return null;while(d4.byteLength(X)>100){let Y=X.indexOf("/");if(Y===-1)return null;Q+=Q?"/"+X.slice(0,Y):X.slice(0,Y),X=X.slice(Y+1)}if(d4.byteLength(X)>100||d4.byteLength(Q)>155)return null;if(Z.linkname&&d4.byteLength(Z.linkname)>100)return null;if(d4.write(G,X),d4.write(G,AO(Z.mode&4095,6),100),d4.write(G,AO(Z.uid,6),108),d4.write(G,AO(Z.gid,6),116),C14(Z.size,G,124),d4.write(G,AO(Z.mtime.getTime()/1000|0,11),136),G[156]=48+V14(Z.type),Z.linkname)d4.write(G,Z.linkname,157);if(d4.copy(WG$,G,257),d4.copy(A14,G,263),Z.uname)d4.write(G,Z.uname,265);if(Z.gname)d4.write(G,Z.gname,297);if(d4.write(G,AO(Z.devmajor||0,6),329),d4.write(G,AO(Z.devminor||0,6),337),Q)d4.write(G,Q,345);return d4.write(G,AO(UG$(G),6),148),G};b14.decode=function(Z,G,X){let Q=Z[156]===0?0:Z[156]-48,Y=ux(Z,0,100,G),J=PO(Z,100,8),W=PO(Z,108,8),K=PO(Z,116,8),U=PO(Z,124,12),H=PO(Z,136,12),F=k14(Q),N=Z[157]===0?null:ux(Z,157,100,G),O=ux(Z,265,32),B=ux(Z,297,32),L=PO(Z,329,8),w=PO(Z,337,8),z=UG$(Z);if(z===256)return null;if(z!==PO(Z,148,8))throw Error("Invalid tar header. Maybe the tar is corrupted or it needs to be gunzipped?");if(T14(Z)){if(Z[345])Y=ux(Z,345,155,G)+"/"+Y}else if(q14(Z));else if(!X)throw Error("Invalid tar header: unknown format.");if(Q===0&&Y&&Y[Y.length-1]==="/")Q=5;return{name:Y,mode:J,uid:W,gid:K,size:U,mtime:new Date(1000*H),type:F,linkname:N,uname:O,gname:B,devmajor:L,devminor:w,pax:null}};function T14($){return d4.equals(WG$,$.subarray(257,263))}function q14($){return d4.equals(R14,$.subarray(257,263))&&d4.equals(I14,$.subarray(263,265))}function M14($,Z,G){if(typeof $!=="number")return G;if($=~~$,$>=Z)return Z;if($>=0)return $;if($+=Z,$>=0)return $;return 0}function k14($){switch($){case 0:return"file";case 1:return"link";case 2:return"symlink";case 3:return"character-device";case 4:return"block-device";case 5:return"directory";case 6:return"fifo";case 7:return"contiguous-file";case 72:return"pax-header";case 55:return"pax-global-header";case 27:return"gnu-long-link-path";case 28:case 30:return"gnu-long-path"}return null}function V14($){switch($){case"file":return 0;case"link":return 1;case"symlink":return 2;case"character-device":return 3;case"block-device":return 4;case"directory":return 5;case"fifo":return 6;case"contiguous-file":return 7;case"pax-header":return 72}return 0}function KG$($,Z,G,X){for(;G<X;G++)if($[G]===Z)return G;return X}function UG$($){let Z=256;for(let G=0;G<148;G++)Z+=$[G];for(let G=156;G<512;G++)Z+=$[G];return Z}function AO($,Z){if($=$.toString(8),$.length>Z)return"7777777777777777777".slice(0,Z)+" ";return"0000000000000000000".slice(0,Z-$.length)+$+" "}function S14($,Z,G){Z[G]=128;for(let X=11;X>0;X--)Z[G+X]=$&255,$=Math.floor($/256)}function C14($,Z,G){if($.toString(8).length>11)S14($,Z,G);else d4.write(Z,AO($,11),G)}function _14($){let Z;if($[0]===128)Z=!0;else if($[0]===255)Z=!1;else return null;let G=[],X;for(X=$.length-1;X>0;X--){let J=$[X];if(Z)G.push(J);else G.push(255-J)}let Q=0,Y=G.length;for(X=0;X<Y;X++)Q+=G[X]*Math.pow(256,X);return Z?Q:-1*Q}function PO($,Z,G){if($=$.subarray(Z,Z+G),Z=0,$[Z]&128)return _14($);else{while(Z<$.length&&$[Z]===32)Z++;let X=M14(KG$($,32,Z,$.length),$.length,$.length);while(Z<X&&$[Z]===0)Z++;if(X===Z)return 0;return parseInt(d4.toString($.subarray(Z,X)),8)}}function ux($,Z,G,X){return d4.toString($.subarray(Z,KG$($,0,Z,Z+G)),X)}function id1($){let Z=d4.byteLength($),G=Math.floor(Math.log(Z)/Math.log(10))+1;if(Z+G>=Math.pow(10,G))G++;return Z+G+$}});var EG$=v((Ua5,LG$)=>{var{Writable:h14,Readable:u14,getStreamError:HG$}=md1(),c14=gd1(),FG$=hx(),cx=pd1(),l14=FG$.alloc(0);class NG${constructor(){this.buffered=0,this.shifted=0,this.queue=new c14,this._offset=0}push($){this.buffered+=$.byteLength,this.queue.push($)}shiftFirst($){return this._buffered===0?null:this._next($)}shift($){if($>this.buffered)return null;if($===0)return l14;let Z=this._next($);if($===Z.byteLength)return Z;let G=[Z];while(($-=Z.byteLength)>0)Z=this._next($),G.push(Z);return FG$.concat(G)}_next($){let Z=this.queue.peek(),G=Z.byteLength-this._offset;if($>=G){let X=this._offset?Z.subarray(this._offset,Z.byteLength):Z;return this.queue.shift(),this._offset=0,this.buffered-=G,this.shifted+=G,X}return this.buffered-=$,this.shifted+=$,Z.subarray(this._offset,this._offset+=$)}}class OG$ extends u14{constructor($,Z,G){super();this.header=Z,this.offset=G,this._parent=$}_read($){if(this.header.size===0)this.push(null);if(this._parent._stream===this)this._parent._update();$(null)}_predestroy(){this._parent.destroy(HG$(this))}_detach(){if(this._parent._stream===this)this._parent._stream=null,this._parent._missing=DG$(this.header.size),this._parent._update()}_destroy($){this._detach(),$(null)}}class BG$ extends h14{constructor($){super($);if(!$)$={};this._buffer=new NG$,this._offset=0,this._header=null,this._stream=null,this._missing=0,this._longHeader=!1,this._callback=nd1,this._locked=!1,this._finished=!1,this._pax=null,this._paxGlobal=null,this._gnuLongPath=null,this._gnuLongLinkPath=null,this._filenameEncoding=$.filenameEncoding||"utf-8",this._allowUnknownFormat=!!$.allowUnknownFormat,this._unlockBound=this._unlock.bind(this)}_unlock($){if(this._locked=!1,$){this.destroy($),this._continueWrite($);return}this._update()}_consumeHeader(){if(this._locked)return!1;this._offset=this._buffer.shifted;try{this._header=cx.decode(this._buffer.shift(512),this._filenameEncoding,this._allowUnknownFormat)}catch($){return this._continueWrite($),!1}if(!this._header)return!0;switch(this._header.type){case"gnu-long-path":case"gnu-long-link-path":case"pax-global-header":case"pax-header":return this._longHeader=!0,this._missing=this._header.size,!0}if(this._locked=!0,this._applyLongHeaders(),this._header.size===0||this._header.type==="directory")return this.emit("entry",this._header,this._createStream(),this._unlockBound),!0;return this._stream=this._createStream(),this._missing=this._header.size,this.emit("entry",this._header,this._stream,this._unlockBound),!0}_applyLongHeaders(){if(this._gnuLongPath)this._header.name=this._gnuLongPath,this._gnuLongPath=null;if(this._gnuLongLinkPath)this._header.linkname=this._gnuLongLinkPath,this._gnuLongLinkPath=null;if(this._pax){if(this._pax.path)this._header.name=this._pax.path;if(this._pax.linkpath)this._header.linkname=this._pax.linkpath;if(this._pax.size)this._header.size=parseInt(this._pax.size,10);this._header.pax=this._pax,this._pax=null}}_decodeLongHeader($){switch(this._header.type){case"gnu-long-path":this._gnuLongPath=cx.decodeLongPath($,this._filenameEncoding);break;case"gnu-long-link-path":this._gnuLongLinkPath=cx.decodeLongPath($,this._filenameEncoding);break;case"pax-global-header":this._paxGlobal=cx.decodePax($);break;case"pax-header":this._pax=this._paxGlobal===null?cx.decodePax($):Object.assign({},this._paxGlobal,cx.decodePax($));break}}_consumeLongHeader(){this._longHeader=!1,this._missing=DG$(this._header.size);let $=this._buffer.shift(this._header.size);try{this._decodeLongHeader($)}catch(Z){return this._continueWrite(Z),!1}return!0}_consumeStream(){let $=this._buffer.shiftFirst(this._missing);if($===null)return!1;this._missing-=$.byteLength;let Z=this._stream.push($);if(this._missing===0){if(this._stream.push(null),Z)this._stream._detach();return Z&&this._locked===!1}return Z}_createStream(){return new OG$(this,this._header,this._offset)}_update(){while(this._buffer.buffered>0&&!this.destroying){if(this._missing>0){if(this._stream!==null){if(this._consumeStream()===!1)return;continue}if(this._longHeader===!0){if(this._missing>this._buffer.buffered)break;if(this._consumeLongHeader()===!1)return!1;continue}let $=this._buffer.shiftFirst(this._missing);if($!==null)this._missing-=$.byteLength;continue}if(this._buffer.buffered<512)break;if(this._stream!==null||this._consumeHeader()===!1)return}this._continueWrite(null)}_continueWrite($){let Z=this._callback;this._callback=nd1,Z($)}_write($,Z){this._callback=Z,this._buffer.push($),this._update()}_final($){this._finished=this._missing===0&&this._buffer.buffered===0,$(this._finished?null:Error("Unexpected end of data"))}_predestroy(){this._continueWrite(null)}_destroy($){if(this._stream)this._stream.destroy(HG$(this));$(null)}[Symbol.asyncIterator](){let $=null,Z=null,G=null,X=null,Q=null,Y=this;return this.on("entry",K),this.on("error",(F)=>{$=F}),this.on("close",U),{[Symbol.asyncIterator](){return this},next(){return new Promise(W)},return(){return H(null)},throw(F){return H(F)}};function J(F){if(!Q)return;let N=Q;Q=null,N(F)}function W(F,N){if($)return N($);if(X){F({value:X,done:!1}),X=null;return}if(Z=F,G=N,J(null),Y._finished&&Z)Z({value:void 0,done:!0}),Z=G=null}function K(F,N,O){if(Q=O,N.on("error",nd1),Z)Z({value:N,done:!1}),Z=G=null;else X=N}function U(){if(J($),!Z)return;if($)G($);else Z({value:void 0,done:!0});Z=G=null}function H(F){return Y.destroy(F),J(F),new Promise((N,O)=>{if(Y.destroyed)return N({value:void 0,done:!0});Y.once("close",function(){if(F)O(F);else N({value:void 0,done:!0})})})}}}LG$.exports=function(Z){return new BG$(Z)};function nd1(){}function DG$($){return $&=511,$&&512-$}});var zG$=v((Ha5,td1)=>{var wG$={S_IFMT:61440,S_IFDIR:16384,S_IFCHR:8192,S_IFBLK:24576,S_IFIFO:4096,S_IFLNK:40960};try{td1.exports=_1("fs").constants||wG$}catch{td1.exports=wG$}});var qG$=v((Fa5,TG$)=>{var{Readable:d14,Writable:m14,getStreamError:jG$}=md1(),bV=hx(),lx=zG$(),zF1=pd1(),PG$=bV.alloc(1024);class AG$ extends m14{constructor($,Z,G){super({mapWritable:p14,eagerOpen:!0});if(this.written=0,this.header=Z,this._callback=G,this._linkname=null,this._isLinkname=Z.type==="symlink"&&!Z.linkname,this._isVoid=Z.type!=="file"&&Z.type!=="contiguous-file",this._finished=!1,this._pack=$,this._openCallback=null,this._pack._stream===null)this._pack._stream=this;else this._pack._pending.push(this)}_open($){if(this._openCallback=$,this._pack._stream===this)this._continueOpen()}_continuePack($){if(this._callback===null)return;let Z=this._callback;this._callback=null,Z($)}_continueOpen(){if(this._pack._stream===null)this._pack._stream=this;let $=this._openCallback;if(this._openCallback=null,$===null)return;if(this._pack.destroying)return $(Error("pack stream destroyed"));if(this._pack._finalized)return $(Error("pack stream is already finalized"));if(this._pack._stream=this,!this._isLinkname)this._pack._encode(this.header);if(this._isVoid)this._finish(),this._continuePack(null);$(null)}_write($,Z){if(this._isLinkname)return this._linkname=this._linkname?bV.concat([this._linkname,$]):$,Z(null);if(this._isVoid){if($.byteLength>0)return Z(Error("No body allowed for this entry"));return Z()}if(this.written+=$.byteLength,this._pack.push($))return Z();this._pack._drain=Z}_finish(){if(this._finished)return;if(this._finished=!0,this._isLinkname)this.header.linkname=this._linkname?bV.toString(this._linkname,"utf-8"):"",this._pack._encode(this.header);IG$(this._pack,this.header.size),this._pack._done(this)}_final($){if(this.written!==this.header.size)return $(Error("Size mismatch"));this._finish(),$(null)}_getError(){return jG$(this)||Error("tar entry destroyed")}_predestroy(){this._pack.destroy(this._getError())}_destroy($){this._pack._done(this),this._continuePack(this._finished?null:this._getError()),$()}}class RG$ extends d14{constructor($){super($);this._drain=od1,this._finalized=!1,this._finalizing=!1,this._pending=[],this._stream=null}entry($,Z,G){if(this._finalized||this.destroying)throw Error("already finalized or destroyed");if(typeof Z==="function")G=Z,Z=null;if(!G)G=od1;if(!$.size||$.type==="symlink")$.size=0;if(!$.type)$.type=i14($.mode);if(!$.mode)$.mode=$.type==="directory"?493:420;if(!$.uid)$.uid=0;if(!$.gid)$.gid=0;if(!$.mtime)$.mtime=new Date;if(typeof Z==="string")Z=bV.from(Z);let X=new AG$(this,$,G);if(bV.isBuffer(Z))return $.size=Z.byteLength,X.write(Z),X.end(),X;if(X._isVoid)return X;return X}finalize(){if(this._stream||this._pending.length>0){this._finalizing=!0;return}if(this._finalized)return;this._finalized=!0,this.push(PG$),this.push(null)}_done($){if($!==this._stream)return;if(this._stream=null,this._finalizing)this.finalize();if(this._pending.length)this._pending.shift()._continueOpen()}_encode($){if(!$.pax){let Z=zF1.encode($);if(Z){this.push(Z);return}}this._encodePax($)}_encodePax($){let Z=zF1.encodePax({name:$.name,linkname:$.linkname,pax:$.pax}),G={name:"PaxHeader",mode:$.mode,uid:$.uid,gid:$.gid,size:Z.byteLength,mtime:$.mtime,type:"pax-header",linkname:$.linkname&&"PaxHeader",uname:$.uname,gname:$.gname,devmajor:$.devmajor,devminor:$.devminor};this.push(zF1.encode(G)),this.push(Z),IG$(this,Z.byteLength),G.size=$.size,G.type=$.type,this.push(zF1.encode(G))}_doDrain(){let $=this._drain;this._drain=od1,$()}_predestroy(){let $=jG$(this);if(this._stream)this._stream.destroy($);while(this._pending.length){let Z=this._pending.shift();Z.destroy($),Z._continueOpen()}this._doDrain()}_read($){this._doDrain(),$()}}TG$.exports=function(Z){return new RG$(Z)};function i14($){switch($&lx.S_IFMT){case lx.S_IFBLK:return"block-device";case lx.S_IFCHR:return"character-device";case lx.S_IFDIR:return"directory";case lx.S_IFIFO:return"fifo";case lx.S_IFLNK:return"symlink"}return"file"}function od1(){}function IG$($,Z){if(Z&=511,Z)$.push(PG$.subarray(0,512-Z))}function p14($){return bV.isBuffer($)?$:bV.from($)}});var MG$=v((n14)=>{n14.extract=EG$();n14.pack=qG$()});var SG$=v((Oa5,VG$)=>{VG$.exports=kG$;function kG$($,Z){if($&&Z)return kG$($)(Z);if(typeof $!=="function")throw TypeError("need wrapper function");return Object.keys($).forEach(function(X){G[X]=$[X]}),G;function G(){var X=Array(arguments.length);for(var Q=0;Q<X.length;Q++)X[Q]=arguments[Q];var Y=$.apply(this,X),J=X[X.length-1];if(typeof Y==="function"&&Y!==J)Object.keys(J).forEach(function(W){Y[W]=J[W]});return Y}}});var ad1=v((Ba5,rd1)=>{var CG$=SG$();rd1.exports=CG$(jF1);rd1.exports.strict=CG$(_G$);jF1.proto=jF1(function(){Object.defineProperty(Function.prototype,"once",{value:function(){return jF1(this)},configurable:!0}),Object.defineProperty(Function.prototype,"onceStrict",{value:function(){return _G$(this)},configurable:!0})});function jF1($){var Z=function(){if(Z.called)return Z.value;return Z.called=!0,Z.value=$.apply(this,arguments)};return Z.called=!1,Z}function _G$($){var Z=function(){if(Z.called)throw Error(Z.onceError);return Z.called=!0,Z.value=$.apply(this,arguments)},G=$.name||"Function wrapped with `once`";return Z.onceError=G+" shouldn't be called more than once",Z.called=!1,Z}});var xG$=v((Da5,vG$)=>{var r14=ad1(),a14=function(){},s14=global.Bare?queueMicrotask:process.nextTick.bind(process),e14=function($){return $.setHeader&&typeof $.abort==="function"},$04=function($){return $.stdio&&Array.isArray($.stdio)&&$.stdio.length===3},bG$=function($,Z,G){if(typeof Z==="function")return bG$($,null,Z);if(!Z)Z={};G=r14(G||a14);var{_writableState:X,_readableState:Q}=$,Y=Z.readable||Z.readable!==!1&&$.readable,J=Z.writable||Z.writable!==!1&&$.writable,W=!1,K=function(){if(!$.writable)U()},U=function(){if(J=!1,!Y)G.call($)},H=function(){if(Y=!1,!J)G.call($)},F=function(w){G.call($,w?Error("exited with error code: "+w):null)},N=function(w){G.call($,w)},O=function(){s14(B)},B=function(){if(W)return;if(Y&&!(Q&&(Q.ended&&!Q.destroyed)))return G.call($,Error("premature close"));if(J&&!(X&&(X.ended&&!X.destroyed)))return G.call($,Error("premature close"))},L=function(){$.req.on("finish",U)};if(e14($))if($.on("complete",U),$.on("abort",O),$.req)L();else $.on("request",L);else if(J&&!X)$.on("end",K),$.on("close",K);if($04($))$.on("exit",F);if($.on("end",H),$.on("finish",U),Z.error!==!1)$.on("error",N);return $.on("close",O),function(){if(W=!0,$.removeListener("complete",U),$.removeListener("abort",O),$.removeListener("request",L),$.req)$.req.removeListener("finish",U);$.removeListener("end",K),$.removeListener("close",K),$.removeListener("finish",U),$.removeListener("exit",F),$.removeListener("end",H),$.removeListener("error",N),$.removeListener("close",O)}};vG$.exports=bG$});var gG$=v((La5,yG$)=>{var Z04=ad1(),G04=xG$(),PF1;try{PF1=_1("fs")}catch($){}var Li=function(){},X04=typeof process>"u"?!1:/^v?\.0/.test(process.version),AF1=function($){return typeof $==="function"},Q04=function($){if(!X04)return!1;if(!PF1)return!1;return($ instanceof(PF1.ReadStream||Li)||$ instanceof(PF1.WriteStream||Li))&&AF1($.close)},Y04=function($){return $.setHeader&&AF1($.abort)},J04=function($,Z,G,X){X=Z04(X);var Q=!1;$.on("close",function(){Q=!0}),G04($,{readable:Z,writable:G},function(J){if(J)return X(J);Q=!0,X()});var Y=!1;return function(J){if(Q)return;if(Y)return;if(Y=!0,Q04($))return $.close(Li);if(Y04($))return $.abort();if(AF1($.destroy))return $.destroy();X(J||Error("stream was destroyed"))}},fG$=function($){$()},W04=function($,Z){return $.pipe(Z)},K04=function(){var $=Array.prototype.slice.call(arguments),Z=AF1($[$.length-1]||Li)&&$.pop()||Li;if(Array.isArray($[0]))$=$[0];if($.length<2)throw Error("pump requires two streams per minimum");var G,X=$.map(function(Q,Y){var J=Y<$.length-1,W=Y>0;return J04(Q,J,W,function(K){if(!G)G=K;if(K)X.forEach(fG$);if(J)return;X.forEach(fG$),Z(G)})});return $.reduce(W04)};yG$.exports=K04});var nG$=v((N04)=>{var hG$=MG$(),uG$=gG$(),cG$=_1("fs"),B9=_1("path"),Ei=(global.Bare?global.Bare.platform:process.platform)==="win32";N04.pack=function(Z,G){if(!Z)Z=".";if(!G)G={};let X=G.fs||cG$,Q=G.ignore||G.filter||wi,Y=G.mapStream||iG$,J=F04(X,G.dereference?X.stat:X.lstat,Z,Q,G.entries,G.sort),W=G.strict!==!1,K=typeof G.umask==="number"?~G.umask:~lG$(),U=G.pack||hG$.pack(),H=G.finish||wi,F=G.map||wi,N=typeof G.dmode==="number"?G.dmode:0,O=typeof G.fmode==="number"?G.fmode:0;if(G.strip)F=pG$(F,G.strip);if(G.readable)N|=parseInt(555,8),O|=parseInt(444,8);if(G.writable)N|=parseInt(333,8),O|=parseInt(222,8);w();function B(z,j){X.readlink(B9.join(Z,z),function(P,R){if(P)return U.destroy(P);j.linkname=sd1(R),U.entry(j,w)})}function L(z,j,P){if(U.destroyed)return;if(z)return U.destroy(z);if(!j){if(G.finalize!==!1)U.finalize();return H(U)}if(P.isSocket())return w();let R={name:sd1(j),mode:(P.mode|(P.isDirectory()?N:O))&K,mtime:P.mtime,size:P.size,type:"file",uid:P.uid,gid:P.gid};if(P.isDirectory())return R.size=0,R.type="directory",R=F(R)||R,U.entry(R,w);if(P.isSymbolicLink())return R.size=0,R.type="symlink",R=F(R)||R,B(j,R);if(R=F(R)||R,!P.isFile()){if(W)return U.destroy(Error("unsupported type for "+j));return w()}let A=U.entry(R,w),M=Y(X.createReadStream(B9.join(Z,j),{start:0,end:R.size>0?R.size-1:R.size}),R);M.on("error",function(S){A.destroy(S)}),uG$(M,A)}function w(z){if(z)return U.destroy(z);J(L)}return U};function U04($){return $.length?$[$.length-1]:null}function H04(){return!global.Bare&&process.getuid?process.getuid():-1}function lG$(){return!global.Bare&&process.umask?process.umask():0}N04.extract=function(Z,G){if(!Z)Z=".";if(!G)G={};Z=B9.resolve(Z);let X=G.fs||cG$,Q=G.ignore||G.filter||wi,Y=G.mapStream||iG$,J=G.chown!==!1&&!Ei&&H04()===0,W=G.extract||hG$.extract(),K=[],U=new Date,H=typeof G.umask==="number"?~G.umask:~lG$(),F=G.strict!==!1,N=G.validateSymlinks!==!1,O=G.map||wi,B=typeof G.dmode==="number"?G.dmode:0,L=typeof G.fmode==="number"?G.fmode:0;if(G.strip)O=pG$(O,G.strip);if(G.readable)B|=parseInt(555,8),L|=parseInt(444,8);if(G.writable)B|=parseInt(333,8),L|=parseInt(222,8);if(W.on("entry",w),G.finish)W.on("finish",G.finish);return W;function w(A,M,S){A=O(A)||A,A.name=sd1(A.name);let k=B9.join(Z,B9.join("/",A.name));if(Q(k,A))return M.resume(),S();let C=B9.join(k,".")===B9.join(Z,".")?Z:B9.dirname(k);mG$(X,C,B9.join(Z,"."),function(n,Q1){if(n)return S(n);if(!Q1)return S(Error(C+" is not a valid path"));if(A.type==="directory")return K.push([k,A.mtime]),R(k,{fs:X,own:J,uid:A.uid,gid:A.gid,mode:A.mode},u);R(C,{fs:X,own:J,uid:A.uid,gid:A.gid,mode:493},function(G1){if(G1)return S(G1);switch(A.type){case"file":return d();case"link":return y();case"symlink":return f()}if(F)return S(Error("unsupported type for "+k+" ("+A.type+")"));M.resume(),S()})});function u(n){if(n)return S(n);j(k,A,function(Q1){if(Q1)return S(Q1);if(Ei)return S();P(k,A,S)})}function f(){if(Ei)return S();X.unlink(k,function(){let n=B9.resolve(B9.dirname(k),A.linkname);if(!Z1(n)&&N)return S(Error(k+" is not a valid symlink"));dG$(X,n,B9.join(Z,"."),function(Q1,G1){if(Q1)return S(Q1);if(!G1&&N)return S(Error(k+" is not a valid symlink"));X.symlink(A.linkname,k,u)})})}function y(){if(Ei)return S();X.unlink(k,function(){let n=B9.join(Z,B9.join("/",A.linkname));X.realpath(n,function(Q1,G1){if(Q1||!Z1(G1))return S(Error(k+" is not a valid hardlink"));X.link(G1,k,function(U1){if(U1&&U1.code==="EPERM"&&G.hardlinkAsFilesFallback)return M=X.createReadStream(G1),d();u(U1)})})})}function Z1(n){return n===Z||n.startsWith(Z+B9.sep)}function d(){let n=X.createWriteStream(k),Q1=Y(M,A);n.on("error",function(G1){Q1.destroy(G1)}),uG$(Q1,n,function(G1){if(G1)return S(G1);n.on("close",u)})}}function z(A,M){let S;while((S=U04(K))&&A.slice(0,S[0].length)!==S[0])K.pop();if(!S)return M();X.utimes(S[0],U,S[1],M)}function j(A,M,S){if(G.utimes===!1)return S();if(M.type==="directory")return X.utimes(A,U,M.mtime,S);if(M.type==="symlink")return z(A,S);X.utimes(A,U,M.mtime,function(k){if(k)return S(k);z(A,S)})}function P(A,M,S){let k=M.type==="symlink",C=k?X.lchmod:X.chmod,u=k?X.lchown:X.chown;if(!C)return S();let f=(M.mode|(M.type==="directory"?B:L))&H;if(u&&J)u.call(X,A,M.uid,M.gid,y);else y(null);function y(Z1){if(Z1)return S(Z1);if(!C)return S();C.call(X,A,f,S)}}function R(A,M,S){X.stat(A,function(k){if(!k)return S(null);if(k.code!=="ENOENT")return S(k);X.mkdir(A,{mode:M.mode,recursive:!0},function(C,u){if(C)return S(C);P(A,M,S)})})}};function dG$($,Z,G,X){if(Z===G)return X(null,!0);if(!Z.startsWith(G+B9.sep))return X(null,!1);$.lstat(Z,function(Q,Y){if(Q&&Q.code!=="ENOENT"&&Q.code!=="EPERM")return X(Q);if(Q||!Y.isSymbolicLink())return dG$($,B9.join(Z,".."),G,X);X(null,!1)})}function mG$($,Z,G,X){if(Z===G)return X(null,!0);$.lstat(Z,function(Q,Y){if(Q&&Q.code!=="ENOENT"&&Q.code!=="EPERM")return X(Q);if(Q||Y.isDirectory())return mG$($,B9.join(Z,".."),G,X);X(null,!1)})}function wi(){}function iG$($){return $}function sd1($){return Ei?$.replace(/\\/g,"/").replace(/[:?<>|]/g,"_"):$}function F04($,Z,G,X,Q,Y){if(!Q)Q=["."];let J=Q.slice(0);return function(K){if(!J.length)return K(null);let U=J.shift(),H=B9.join(G,U);Z.call($,H,function(F,N){if(F)return K(Q.indexOf(U)===-1&&F.code==="ENOENT"?null:F);if(!N.isDirectory())return K(null,U,N);$.readdir(H,function(O,B){if(O)return K(O);if(Y)B.sort();for(let L=0;L<B.length;L++)if(!X(B9.join(G,U,B[L])))J.push(B9.join(U,B[L]));K(null,U,N)})})}}function pG$($,Z){return function(G){G.name=G.name.split("/").slice(Z).join("/");let X=G.linkname;if(X&&(G.type==="link"||B9.isAbsolute(X)))G.linkname=X.split("/").slice(Z).join("/");return $(G)}}});var D04,L04;var tG$=D(()=>{fd1();D04=x(x7$(),1),L04=x(nG$(),1)});var RF1=()=>{};var oG$=D(()=>{yH1()});var rG$=D(()=>{HF1();UF1();RF1()});var aG$=()=>{};var sG$=()=>{};var ed1=D(()=>{L7$();vd1();HF1();P7$();_d1();fd1();A7$();R7$();I7$();T7$();bd1();q7$();tG$();RF1();oG$();rG$();aG$();sG$();RF1()});var _9,o9,vV,zi;var ji=D(()=>{_9={CLAIM_API_GROUP:"extensions.agents.x-k8s.io",CLAIM_API_VERSION:"v1alpha1",CLAIM_PLURAL:"sandboxclaims",SANDBOX_API_GROUP:"agents.x-k8s.io",SANDBOX_API_VERSION:"v1alpha1",SANDBOX_PLURAL:"sandboxes",POD_NAME_ANNOTATION:"agents.x-k8s.io/pod-name"};o9=class o9 extends Error{cause;constructor($,Z){super($);if(this.name="SandboxError",this.cause=Z,Z instanceof Error&&Z.stack)this.stack=`${this.stack}
2221
2221
  Caused by: ${Z.stack}`}};vV=class vV extends o9{constructor($,Z){super($,Z);this.name="SandboxTimeoutError"}};zi=class zi extends o9{constructor($,Z){super($,Z);this.name="SandboxAlreadyExistsError"}}});async function E04($){let Z=$.getCurrentCluster();if(!Z)throw new o9("No active cluster in kubeconfig");let G={};await $.applyToHTTPSOptions(G);let X={},Q=G.headers??{};for(let[Y,J]of Object.entries(Q))if(Array.isArray(J))X[Y]=J.join(", ");else if(J!==void 0)X[Y]=String(J);if(typeof G.auth==="string"&&!X.Authorization)X.Authorization=`Basic ${Buffer.from(G.auth).toString("base64")}`;return{server:Z.server.replace(/\/+$/,""),headers:X,tls:{cert:$m1(G.cert),key:$m1(G.key),ca:$m1(G.ca),rejectUnauthorized:Z.skipTLSVerify?!1:void 0}}}function $m1($){if($==null)return;if(typeof $==="string")return $;if(Buffer.isBuffer($))return $.toString("utf8");return String($)}async function xV($,Z){let G=await E04($),X={...G.headers,...Z.headers};if(Z.method==="PATCH")X["content-type"]=Z.patchType==="apply"?"application/apply-patch+yaml":Z.patchType==="strategic-merge"?"application/strategic-merge-patch+json":"application/merge-patch+json";else if(Z.body!==void 0&&!("content-type"in X))X["content-type"]="application/json";let Q={method:Z.method,headers:X,body:Z.body===void 0?void 0:JSON.stringify(Z.body),signal:Z.signal,tls:G.tls,...Z.stream?{timeout:!1}:{}};return fetch(`${G.server}${Z.path}`,Q)}async function Zm1($){try{return await $.json()}catch{return null}}async function Gm1($,Z){if($.ok)return;let G=await Zm1($),X=G?.message??`${Z} failed: ${$.status} ${$.statusText}`;throw new eG$($.status,G,X)}async function Pi($,Z,G,X,Q="none"){try{let Y=await xV($,Z);if(Y.status===404)return null;if(await Gm1(Y,G),Q==="json")return await Y.json();return null}catch(Y){throw new o9(X,Y)}}async function Ai($,Z,G){let X=`${$X$}/${encodeURIComponent(Z)}/${_9.CLAIM_PLURAL}`,Q;try{Q=await xV($,{method:"POST",path:X,body:G})}catch(U){let H=U instanceof Error?U.message:String(U);throw console.warn(`[agent-sandbox/client] createSandboxClaim ${G.metadata.name} transport error: ${H}`),new o9(`Failed to create SandboxClaim: ${G.metadata.name} (transport error: ${H})`,U)}if(Q.ok)return;let Y=await Zm1(Q),J=Y?.reason?` ${Y.reason}`:"",W=Y?.message??Q.statusText,K=`Failed to create SandboxClaim: ${G.metadata.name} (${Q.status}${J}: ${W})`;if(console.warn(`[agent-sandbox/client] createSandboxClaim ${G.metadata.name} rejected: status=${Q.status} reason=${Y?.reason??"<none>"} message=${W}`),Q.status===409)throw new zi(K);throw new o9(K)}async function IF1($,Z,G,X=60000){let Q=Date.now()+X,Y=500,J;while(!0){let W=await UH($,Z,G).catch(()=>{return});if(!W)return;if(J=W,Date.now()>=Q){let K=J.metadata?.finalizers??[],U=J.metadata?.deletionTimestamp??"<unknown>";throw new vV(`SandboxClaim ${G} still terminating after ${X}ms (deletionTimestamp=${U}, finalizers=[${K.join(", ")}])`)}await new Promise((K)=>setTimeout(K,500))}}function Xm1($,Z){return`${$X$}/${encodeURIComponent($)}/${_9.CLAIM_PLURAL}/${encodeURIComponent(Z)}`}async function ZX$($,Z,G,X){await Pi($,{method:"PATCH",path:Xm1(Z,G),patchType:"merge",body:{spec:{lifecycle:{shutdownPolicy:"Delete",shutdownTime:X}}}},"patchSandboxClaimShutdown",`Failed to patch SandboxClaim shutdownTime: ${G}`)}async function RO($,Z,G){await Pi($,{method:"DELETE",path:Xm1(Z,G)},"deleteSandboxClaim",`Failed to delete SandboxClaim: ${G}`)}async function UH($,Z,G){return await Pi($,{method:"GET",path:Xm1(Z,G)},"getSandboxClaim",`Failed to get SandboxClaim: ${G}`,"json")??void 0}async function GX$($,Z,G,X=60){let Q=Date.now()+X*1000,Y=200;while(Date.now()<Q){let W=(await UH($,Z,G).catch(()=>{return}))?.status?.sandbox?.name;if(W)return W;await new Promise((K)=>setTimeout(K,200))}throw new vV(`SandboxClaim ${G} did not record an adopted Sandbox (status.sandbox.name) within ${X}s`)}function Qm1($,Z){return`${w04}/${encodeURIComponent($)}/${YX$}/${encodeURIComponent(Z)}`}async function TF1($,Z,G){let X=new URLSearchParams({fieldManager:WX$,force:"true"}),Q=`${Qm1(Z,G.metadata.name)}?${X}`;try{let Y=await xV($,{method:"PATCH",path:Q,patchType:"apply",body:G});await Gm1(Y,"applyHttpRoute")}catch(Y){throw new o9(`Failed to apply HTTPRoute: ${G.metadata.name}`,Y)}}async function qF1($,Z,G){await Pi($,{method:"DELETE",path:Qm1(Z,G)},"deleteHttpRoute",`Failed to delete HTTPRoute: ${G}`)}async function JX$($,Z,G){return await Pi($,{method:"GET",path:Qm1(Z,G)},"getHttpRoute",`Failed to get HTTPRoute: ${G}`,"json")??void 0}async function KX$($,Z,G,X){let Q={apiVersion:"v1",kind:"Service",metadata:{name:G},spec:{ports:[{name:X.name,port:X.port,targetPort:X.targetPort,protocol:X.protocol??"TCP"}]}},Y=new URLSearchParams({fieldManager:WX$,force:"true"}),J=`/api/v1/namespaces/${encodeURIComponent(Z)}/services/${encodeURIComponent(G)}?${Y}`;try{let W=await xV($,{method:"PATCH",path:J,patchType:"apply",body:Q});await Gm1(W,"ensureServicePort")}catch(W){throw new o9(`Failed to apply Service ports: ${G}`,W)}}function MF1($,Z,G,X=180){let Q=`/apis/${_9.SANDBOX_API_GROUP}/${_9.SANDBOX_API_VERSION}/namespaces/${encodeURIComponent(Z)}/${_9.SANDBOX_PLURAL}?watch=true&fieldSelector=${encodeURIComponent(`metadata.name=${G}`)}`,{resolve:Y,reject:J,promise:W}=Promise.withResolvers(),K=new AbortController,U=!1,H=setTimeout(()=>{if(U)return;U=!0,K.abort(),J(new vV(`Sandbox did not become ready within ${X} seconds`))},X*1000),F=(N)=>{if(U)return;U=!0,clearTimeout(H),K.abort(),N()};return(async()=>{let N;try{N=await xV($,{method:"GET",path:Q,signal:K.signal,headers:{accept:"application/json"},stream:!0})}catch(O){F(()=>J(new o9("Failed to start watch for sandbox readiness",O)));return}if(!N.ok||!N.body){let O=await Zm1(N).catch(()=>null);F(()=>J(new o9(`Watch handshake failed (${N.status}): ${O?.message??N.statusText}`)));return}try{for await(let O of Ym1(N.body)){if(U)return;if(O.type==="ERROR"){let j=O.object;F(()=>J(new o9(`Watch stream error while waiting for sandbox: ${j.message??"unknown"}`)));return}if(O.type!=="ADDED"&&O.type!=="MODIFIED")continue;let B=O.object;if(!B.status?.conditions?.find((j)=>j.type==="Ready"&&j.status==="True"))continue;let w=B.metadata?.name;if(!w){F(()=>J(new o9("Sandbox metadata or name is missing")));return}let z=B.metadata?.annotations?.[_9.POD_NAME_ANNOTATION]??w;F(()=>Y({sandboxName:w,podName:z}));return}F(()=>J(new o9("Watch stream closed before sandbox became ready")))}catch(O){if(U)return;if(O instanceof Error&&(O.name==="AbortError"||K.signal.aborted))return;F(()=>J(new o9("Watch stream error while waiting for sandbox",O)))}})(),W}async function*Ym1($){let Z=$.getReader(),G=new TextDecoder,X="";try{while(!0){let{value:Y,done:J}=await Z.read();if(J)break;X+=G.decode(Y,{stream:!0});let W;while((W=X.indexOf(`
2222
- `))>=0){let K=X.slice(0,W).trim();if(X=X.slice(W+1),!K)continue;yield JSON.parse(K)}}let Q=X.trim();if(Q)yield JSON.parse(Q)}finally{Z.releaseLock()}}var eG$,$X$,XX$="gateway.networking.k8s.io",QX$="v1",YX$="httproutes",w04,Ri,WX$="mesh-sandbox-runner";var kF1=D(()=>{ji();eG$=class eG$ extends Error{status;body;constructor($,Z,G){super(G);this.status=$;this.body=Z;this.name="KubeHttpError"}};$X$=`/apis/${_9.CLAIM_API_GROUP}/${_9.CLAIM_API_VERSION}/namespaces`;w04=`/apis/${XX$}/${QX$}/namespaces`;Ri={API_GROUP:XX$,API_VERSION:QX$,PLURAL:YX$}});var VF1=D(()=>{gZ();Z51()});async function CF1($){try{let Z=await fetch(`${$}/health`,{signal:AbortSignal.timeout(z04)});if(!Z.ok)return null;let G=await Z.json();if(typeof G==="object"&&G!==null&&typeof G.bootId==="string"&&typeof G.ready==="boolean"&&G.setup&&typeof G.setup.running==="boolean"&&typeof G.setup.done==="boolean")return G;return null}catch{return null}}async function NX$($){for(let Z=0;Z<UX$;Z++){if(await CF1($)!==null)return;let G=(Math.random()*2-1)*j04;await w6(HX$+G)}throw Error(`sandbox daemon at ${$} did not respond on /health within ${UX$*HX$/1000}s`)}async function Ii($,Z,G,X,Q){return P04($,Z,"POST",G,X,Q)}async function P04($,Z,G,X,Q,Y){let J={...X};if(Q&&Q.rotateToken!==void 0)J.auth=Q;let W=await fetch(`${$}/_sandbox/config`,{method:G,headers:{"Content-Type":"application/json",Authorization:`Bearer ${Z}`},body:JSON.stringify(J),signal:AbortSignal.timeout(Y?.timeoutMs??FX$)}),K=await W.text();if(!W.ok)throw new SF1(W.status,K);return JSON.parse(K)}async function OX$($,Z,G){let X=await fetch(`${$}/_sandbox/orgfs-config`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${Z}`},body:G,signal:AbortSignal.timeout(FX$)}),Q=await X.text();if(!X.ok)throw Error(`sandbox daemon /_sandbox/orgfs-config returned ${X.status}: ${Q}`);return JSON.parse(Q)}async function Ti($,Z,G,X){let Q=new Headers(X.headers);for(let W of A04)Q.delete(W);Q.set("authorization",`Bearer ${Z}`);let Y=X.method!=="GET"&&X.method!=="HEAD",J=`${$}${G.startsWith("/")?G:`/${G}`}`;return fetch(J,{method:X.method,headers:Q,body:Y?X.body:void 0,redirect:"manual",signal:X.signal,duplex:Y?"half":void 0})}var SF1,z04=500,FX$=30000,UX$=25,HX$=200,j04=50,A04;var BX$=D(()=>{VF1();SF1=class SF1 extends Error{status;constructor($,Z){super(`sandbox daemon /_sandbox/config returned ${$}: ${Z}`);this.status=$;this.name="ConfigRequestError"}};A04=["cookie","host","connection","keep-alive","proxy-authenticate","proxy-authorization","te","trailer","transfer-encoding","accept-encoding","content-length"]});async function*EX$($){let Z=$.now??(()=>Date.now()),G=Z(),X=$.schedulingTimeoutMs??T04,Q={pod:{},sandbox:{},events:{hasPulling:!1,hasPulled:!1},startedAt:G},Y=[],J=null,W=!1,K=(j)=>{if(W)return;if(J){let P=J;J=null,P(j)}else Y.push(j)},U=()=>{if(Y.length>0)return Promise.resolve(Y.shift());if(W)return Promise.resolve(null);return new Promise((j)=>{J=j})},H=()=>{if(W)return;if(W=!0,J){let j=J;J=null,j(null)}},F=new AbortController,N=()=>{F.abort(),H()};if($.signal)if($.signal.aborted)F.abort(),H();else $.signal.addEventListener("abort",N,{once:!0});let O=Math.max(0,X-(Z()-G)),B=setTimeout(()=>K("tick"),O+100),L,w=new Promise((j)=>{L=j}),z=Promise.allSettled([q04($.kc,$.namespace,$.claimName,F.signal,Q,K,Z,L),k04($.kc,$.namespace,$.claimName,F.signal,Q,K),V04($.kc,$.namespace,$.claimName,w,F.signal,Q,K,Z)]);try{let j=null,P=-1,R=DX$(Q,X,Z);if(j=Wm1(R),!Jm1(R))P=LX$(R);if(yield R,Jm1(R))return;while(!W){if(await U()===null)break;let M=DX$(Q,X,Z);if(Jm1(M)){let C=Wm1(M);if(C!==j)j=C,yield M;return}let S=LX$(M);if(S<P)continue;let k=Wm1(M);if(k!==j)j=k,P=S,yield M}}finally{if(clearTimeout(B),F.abort(),$.signal)$.signal.removeEventListener("abort",N);H(),await z.catch(()=>{})}}function DX$($,Z,G){let{pod:X,sandbox:Q,events:Y,startedAt:J}=$;if(Q.ready)return{kind:"ready"};let W=X.containerWaitingReason;if(W==="ImagePullBackOff"||W==="ErrImagePull")return{kind:"failed",reason:"image-pull-backoff",message:"Sandbox image failed to download. The cluster may be missing pull credentials or the image tag may not exist."};if(W==="CrashLoopBackOff")return{kind:"failed",reason:"crash-loop-backoff",message:"Sandbox crashed during startup and is now in CrashLoopBackOff. Check pod logs."};if(!X.scheduled&&Y.lastFailedSchedulingAt!==void 0&&G()-J>Z)return{kind:"failed",reason:"scheduling-timeout",message:Y.failedSchedulingMessage??`Pod could not be scheduled within ${Math.round(Z/1000)}s.`};if(X.containerRunning&&!X.containerReady)return{kind:"warming-daemon",since:J};if(Y.hasPulling&&!Y.hasPulled)return{kind:"pulling-image",since:J};if(W==="ContainerCreating"||W==="PodInitializing"||X.scheduled&&!X.containerRunning)return{kind:"starting-container",since:J};if(X.scheduledFalseReason==="Unschedulable"||Y.lastFailedSchedulingAt!==void 0&&!X.scheduled)return{kind:"waiting-for-capacity",since:J,message:Y.failedSchedulingMessage??X.scheduledFalseMessage,nodeClaim:Y.nominatedNodeClaim};return{kind:"claiming",since:J}}function Jm1($){return $.kind==="ready"||$.kind==="failed"}function LX$($){switch($.kind){case"claiming":return 0;case"waiting-for-capacity":return 1;case"pulling-image":return 2;case"starting-container":return 3;case"warming-daemon":return 4;case"ready":case"failed":return 99}}function Wm1($){switch($.kind){case"claiming":case"pulling-image":case"starting-container":case"warming-daemon":return $.kind;case"waiting-for-capacity":return`waiting-for-capacity:${$.message??""}:${$.nodeClaim??""}`;case"ready":return"ready";case"failed":return`failed:${$.reason}:${$.message}`}}async function q04($,Z,G,X,Q,Y,J,W){let K=`/api/v1/namespaces/${encodeURIComponent(Z)}/pods?watch=true&labelSelector=${encodeURIComponent(`${R04}=${G}`)}`;return _F1({kc:$,path:K,signal:X,label:`pod/${G}`,onEvent:(U)=>{if(U.type!=="ADDED"&&U.type!=="MODIFIED")return;let H=U.object;if(H.metadata?.name)W(H.metadata.name);M04(H,Q,J),Y("pod")}})}function M04($,Z,G){let Q=($.status?.conditions??[]).find((J)=>J.type==="PodScheduled");if(Q?.status==="True")Z.pod.scheduled=!0,Z.pod.scheduledFalseReason=void 0,Z.pod.scheduledFalseMessage=void 0;else if(Q?.status==="False")Z.pod.scheduled=!1,Z.pod.scheduledFalseReason=Q.reason,Z.pod.scheduledFalseMessage=Q.message;let Y=($.status?.containerStatuses??[]).find((J)=>J.name===I04);if(Y)Z.pod.containerWaitingReason=Y.state?.waiting?.reason,Z.pod.containerRunning=!!Y.state?.running,Z.pod.containerReady=Y.ready===!0}async function k04($,Z,G,X,Q,Y){let J=`/apis/${_9.CLAIM_API_GROUP}/${_9.CLAIM_API_VERSION}/namespaces/${encodeURIComponent(Z)}/${_9.CLAIM_PLURAL}?watch=true&fieldSelector=${encodeURIComponent(`metadata.name=${G}`)}`;return _F1({kc:$,path:J,signal:X,label:`sandboxclaim/${G}`,onEvent:(W)=>{if(W.type!=="ADDED"&&W.type!=="MODIFIED")return;let U=W.object.status?.conditions?.find((H)=>H.type==="Ready");if(!U)return;if(U.status==="True")Q.sandbox.ready=!0,Q.sandbox.notReadyReason=void 0,Q.sandbox.notReadyMessage=void 0;else Q.sandbox.ready=!1,Q.sandbox.notReadyReason=U.reason,Q.sandbox.notReadyMessage=U.message;Y("sandbox")}})}async function V04($,Z,G,X,Q,Y,J,W){let K=await Promise.race([X,new Promise((H)=>{if(Q.aborted){H(G);return}Q.addEventListener("abort",()=>H(G),{once:!0})})]);if(Q.aborted)return;let U=`/api/v1/namespaces/${encodeURIComponent(Z)}/events?watch=true&fieldSelector=${encodeURIComponent(`involvedObject.name=${K},involvedObject.kind=Pod`)}`;return _F1({kc:$,path:U,signal:Q,label:`events/${G}`,onEvent:(H)=>{if(H.type!=="ADDED"&&H.type!=="MODIFIED")return;let F=H.object,N=F.reason;if(!N)return;switch(N){case"Pulling":Y.events.hasPulling=!0;break;case"Pulled":Y.events.hasPulling=!0,Y.events.hasPulled=!0;break;case"FailedScheduling":Y.events.lastFailedSchedulingAt=W(),Y.events.failedSchedulingMessage=F.message;break;case"Nominated":{let O=F.message?.match(/nodeclaim\/([\w-]+)/);if(O)Y.events.nominatedNodeClaim=O[1];break}default:return}J("event")}})}async function wX$($){let{kc:Z,namespace:G,labelSelector:X,signal:Q,onDelete:Y}=$,J=`/apis/${_9.CLAIM_API_GROUP}/${_9.CLAIM_API_VERSION}/namespaces/${encodeURIComponent(G)}/${_9.CLAIM_PLURAL}?watch=true&labelSelector=${encodeURIComponent(X)}`;return _F1({kc:Z,path:J,signal:Q,label:"sandboxclaim-reaper",onEvent:(W)=>{if(W.type!=="DELETED")return;let K=W.object.metadata?.name;if(K)Y(K)}})}async function _F1($){let{kc:Z,path:G,signal:X,label:Q,onEvent:Y}=$,J=0;while(!X.aborted){try{let K=await xV(Z,{method:"GET",path:G,signal:X,headers:{accept:"application/json"},stream:!0});if(!K.ok||!K.body){try{await K.body?.cancel()}catch{}if(K.status===401||K.status===403){console.warn(`[lifecycle-watcher] ${Q} stopped: watch denied (${K.status} ${K.statusText}). `+"The kubeconfig in use cannot watch SandboxClaims \u2014 if you are running locally, "+"this provider should not be active (check STUDIO_SANDBOX_PROVIDER / your sandbox preference).");return}throw Error(`watch handshake failed: ${K.status} ${K.statusText}`)}J=0;for await(let U of Ym1(K.body)){if(X.aborted)return;try{Y(U)}catch(H){console.warn(`[lifecycle-watcher] ${Q} onEvent threw: ${H instanceof Error?H.message:String(H)}`)}}}catch(K){if(X.aborted)return;let U=K instanceof Error?K.message:String(K);console.warn(`[lifecycle-watcher] ${Q} watch ended: ${U}`)}if(X.aborted)return;let W=s9(5000,250,J,2,0);J+=1,await w6(W,{signal:X}).catch(()=>{})}}var R04="studio.decocms.com/sandbox-handle",I04="sandbox",T04=300000;var zX$=D(()=>{gZ();ji();kF1()});import{createHash as S04,randomBytes as C04,randomUUID as _04}from"crypto";import*as RX$ from"net";import{PassThrough as b04}from"stream";function v04($){if($ instanceof Error)return $.message;if($&&typeof $==="object"){let Z=$;if(Z.error instanceof Error)return Z.error.message;if(typeof Z.message==="string"&&Z.message)return Z.message}return String($)}class Om1{kind=SX;records=new Map;inflight=new s61;stateStore;previewUrlPattern;kubeConfig;portForward;namespace;sandboxTemplateName;envName;tokenGenerator;idleTtlMs;metrics;previewGateway;sentinelToken;closed=!1;claimWatchAbort=new AbortController;constructor($={}){this.stateStore=$.stateStore??null,this.previewUrlPattern=$.previewUrlPattern??null,this.kubeConfig=$.kubeConfig??m04(),this.portForward=new yd1(this.kubeConfig),this.namespace=$.namespace??x04,this.sandboxTemplateName=$.sandboxTemplateName??f04,this.envName=r04($.envName),this.tokenGenerator=$.tokenGenerator??(()=>C04(g04).toString("hex")),this.idleTtlMs=$.idleTtlMs??u04,this.metrics=$.meter?d04($.meter):null,this.previewGateway=$.previewGateway&&$.previewUrlPattern?{...$.previewGateway}:null;let Z=$.sentinelToken?.trim()??"";this.sentinelToken=Z.length>0?Z:null,this.startClaimReaper()}startClaimReaper(){let $=["app.kubernetes.io/managed-by=studio","app.kubernetes.io/name=studio-sandbox",...this.envName?[`${uY.env}=${this.envName}`]:[]].join(",");wX$({kc:this.kubeConfig,namespace:this.namespace,labelSelector:$,signal:this.claimWatchAbort.signal,onDelete:(Z)=>this.invalidateRecord(Z)})}async ensure($,Z={}){let G=HO($,Z.branch??Z.repo?.branch??null);return this.inflight.run(G,()=>e61(this.stateStore,$,SX,(X)=>this.ensureLocked($,G,Z,X)))}async delete($){let Z=await this.getRecord($);if(this.records.delete($),Z)this.closeForwarder(Z.daemonForward),this.metrics?.active.add(-1,Fm1(Z.tenant));if(await this.deleteHttpRouteIfManaged($).catch((G)=>{console.warn(`[${E7}] HTTPRoute delete failed for ${$}: ${G instanceof Error?G.message:String(G)}`)}),await RO(this.kubeConfig,this.namespace,$),this.stateStore)if(Z)await this.stateStore.delete(Z.id,SX);else await this.stateStore.deleteByHandle(SX,$)}async alive($){return await UH(this.kubeConfig,this.namespace,$)!==void 0}watchClaimLifecycle($,Z){return EX$({kc:this.kubeConfig,namespace:this.namespace,claimName:$,signal:Z})}async getPreviewUrl($){let Z=await this.getRecord($);if(!Z)return null;return this.composePreviewUrl(Z)}async proxyDaemonRequest($,Z,G){let X=await this.getRecord($);if(!X&&this.previewUrlPattern&&this.stateStore){let K=await this.stateStore.getByHandle(SX,$),U=K?.state,H=U?.token;if(K&&H){let N=`http://${U?.adoptedSandboxName??$}.${this.namespace}.svc.cluster.local:${IO}`;try{let O=await Ti(N,H,Z,G);if(O.status!==404)return O;try{await O.body?.cancel()}catch{}}catch{}}}if(!X)X=await this.resurrectByHandle($);if(!X)return new Response(JSON.stringify({error:"sandbox not found"}),{status:404,headers:{"content-type":"application/json"}});let Q=X,Y=performance.now(),J=0,W=!(G.body instanceof ReadableStream);try{let K=await Ti(X.daemonUrl,X.token,Z,G);if(K.status===401&&W){this.invalidateRecord($);let U=await this.getRecord($).catch(()=>null)??await this.resurrectByHandle($).catch(()=>null);if(U)Q=U,K=await Ti(U.daemonUrl,U.token,Z,G)}return J=K.status,K}catch(K){if(!W)throw K;this.invalidateRecord($);let U=await this.resurrectByHandle($)??await this.getRecord($).catch(()=>null);if(!U)throw K;Q=U;let H=await Ti(U.daemonUrl,U.token,Z,G);return J=H.status,H}finally{this.recordProxyDuration("daemon",J,Q,performance.now()-Y)}}async adoptLiveClaim($,Z){if(this.records.has(Z))return!0;let G=await UH(this.kubeConfig,this.namespace,Z).catch(()=>{return});if(!G||G.metadata?.deletionTimestamp)return!1;return await this.inflight.run(Z,async()=>{let Q=this.records.get(Z);if(Q)return this.toSandbox(Q);let Y=await this.adopt($,Z,G);if(!Y)throw Error(`cannot adopt live claim ${Z}`);return e61(this.stateStore,$,SX,(J)=>this.finish(Y,J,!0,!0,"adopt"))}).catch(()=>null)!=null}async resolvePreviewUpstreamUrl($){if(this.previewUrlPattern)return`http://${await this.resolveServiceNameForHandle($)}.${this.namespace}.svc.cluster.local:${IO}`;let Z=await this.getRecord($);if(Z)return Z.daemonUrl;let G=await this.resurrectByHandle($);return G?G.daemonUrl:null}async resolveServiceNameForHandle($){let Z=this.records.get($);if(Z)return Z.adoptedSandboxName;if(this.stateStore){let X=(await this.stateStore.getByHandle(SX,$).catch(()=>null))?.state?.adoptedSandboxName;if(X)return X}return $}async proxyPreviewRequest($,Z){let G=performance.now(),X=this.records.get($)??null,Q=0;try{let Y=await this.resolvePreviewUpstreamUrl($);if(!Y){Q=404;let B=Um1(404,{error:"sandbox not found"});return B.headers.set(yV,"1"),B}let J=new URL(Z.url);if((J.pathname==="/_sandbox"||J.pathname.startsWith("/_sandbox/")||J.pathname==="/_decopilot_vm"||J.pathname.startsWith("/_decopilot_vm/"))&&Z.method!=="GET")return Q=404,Um1(404,{error:"not found"});let K=(B)=>`${B}${J.pathname}${J.search}`,U=new Headers(Z.headers);for(let B of c04)U.delete(B);let H=Z.method!=="GET"&&Z.method!=="HEAD",F={method:Z.method,headers:U,body:H?Z.body:void 0,redirect:"manual",signal:Z.signal,duplex:H?"half":void 0},N;try{N=await fetch(K(Y),F)}catch(B){let L=`${Y}${J.pathname}`;if(console.warn(`[${E7}] preview fetch to ${L} failed: ${B instanceof Error?B.message:String(B)}`),Z.method==="GET"||Z.method==="HEAD"){if(this.invalidateRecord($),await this.resurrectByHandle($).catch(()=>null)){let j=await this.resolvePreviewUpstreamUrl($);if(j)try{N=await fetch(K(j),F);let P=new Headers;for(let[R,A]of N.headers.entries())if(!jX$.includes(R.toLowerCase()))P.set(R,A);return Q=N.status,new Response(N.body,{status:N.status,statusText:N.statusText,headers:P})}catch(P){console.warn(`[${E7}] preview fetch retry to ${L} failed: ${P instanceof Error?P.message:String(P)}`)}}}else this.invalidateRecord($);Q=502;let w=Um1(502,{error:"sandbox daemon unreachable"});return w.headers.set(yV,"1"),w}let O=new Headers;for(let[B,L]of N.headers.entries())if(!jX$.includes(B.toLowerCase()))O.set(B,L);return Q=N.status,new Response(N.body,{status:N.status,statusText:N.statusText,headers:O})}finally{this.recordProxyDuration("preview",Q,X,performance.now()-G,$)}}async ensureLocked($,Z,G,X){if(G.image)console.warn(`[${E7}] opts.image ignored (template ${this.sandboxTemplateName} pins image): got ${G.image}`);if(X){let J=await X.get($,SX);if(J){let W=await this.rehydrate($,Z,J);if(W)return this.finish(W,X,!1,!0,"resume");await X.delete($,SX)}}let Q=await UH(this.kubeConfig,this.namespace,Z).catch(()=>{return});if(Q)if(Q.metadata?.deletionTimestamp)await IF1(this.kubeConfig,this.namespace,Z).catch((J)=>{console.warn(`[${E7}] wait for terminating claim ${Z} failed: ${J instanceof Error?J.message:String(J)}`)});else{let J=await this.adopt($,Z,Q).catch((W)=>{return console.warn(`[${E7}] adopt ${Z} failed, recreating: ${W instanceof Error?W.message:String(W)}`),null});if(J)return this.finish(J,X,!0,!0,"adopt");await RO(this.kubeConfig,this.namespace,Z).catch(()=>{}),await IF1(this.kubeConfig,this.namespace,Z).catch((W)=>{console.warn(`[${E7}] wait for deleted claim ${Z} failed: ${W instanceof Error?W.message:String(W)}`)})}let Y=await this.provision($,Z,G);return this.finish(Y,X,!0,!1,"fresh")}async finish($,Z,G,X,Q){let Y=this.records.get($.handle),J=Y!==void 0;if(Y&&Y.daemonForward!==$.daemonForward)this.closeForwarder(Y.daemonForward);if(this.records.set($.handle,$),G)await this.persist(Z,$);if(X)await ZX$(this.kubeConfig,this.namespace,$.handle,this.computeShutdownTime()).catch((W)=>console.warn(`[${E7}] TTL refresh failed for ${$.handle}: ${W instanceof Error?W.message:String(W)}`));if(this.metrics){let W=Fm1($.tenant);if(this.metrics.ensureOutcome.add(1,{...W,outcome:Q}),!J)this.metrics.active.add(1,W)}return this.toSandbox($)}buildEnvMap($,Z){let G={},X=[];for(let[Q,Y]of Object.entries($.env??{}))if(h04.has(Q))X.push(Q);else G[Q]=Y;if(X.length>0)console.warn(`[${E7}] opts.env keys overlap reserved bootstrap names and were dropped: ${X.join(",")}`);return{...G,DAEMON_TOKEN:Z.token,DAEMON_BOOT_ID:Z.daemonBootId,APP_ROOT:Z.workdir,PROXY_PORT:String(IO)}}buildClaim($,Z,G){let X=this.sentinelToken!==null,Q=X?[]:Object.entries(this.buildEnvMap(Z,G)).sort(([W],[K])=>W<K?-1:W>K?1:0).map(([W,K])=>({name:W,value:K})),Y=e04(Z),J=Object.keys(Y).length>0;return{apiVersion:`${_9.CLAIM_API_GROUP}/${_9.CLAIM_API_VERSION}`,kind:"SandboxClaim",metadata:{name:$,namespace:this.namespace,labels:{"app.kubernetes.io/name":"studio-sandbox","app.kubernetes.io/managed-by":"studio",...this.envName?{[uY.env]:this.envName}:{},...Hm1(Z.tenant)},...J?{annotations:Y}:{}},spec:{sandboxTemplateRef:{name:this.sandboxTemplateName},additionalPodMetadata:{labels:Hm1(Z.tenant,{[uY.role]:"claimed",[uY.sandboxHandle]:$,...this.envName?{[uY.env]:this.envName}:{}}),...J?{annotations:Y}:{}},env:Q,warmpool:X?"default":"none",lifecycle:{shutdownPolicy:"Delete",shutdownTime:this.computeShutdownTime()}}}}async provision($,Z,G){let X=this.tokenGenerator(),Q=_04(),Y=Km1,J=this.buildClaim(Z,G,{token:X,daemonBootId:Q,workdir:Y});try{await Ai(this.kubeConfig,this.namespace,J)}catch(N){if(N instanceof zi)await IF1(this.kubeConfig,this.namespace,Z),await Ai(this.kubeConfig,this.namespace,J);else throw N}let W;try{W=await GX$(this.kubeConfig,this.namespace,Z),await MF1(this.kubeConfig,this.namespace,W)}catch(N){throw await RO(this.kubeConfig,this.namespace,Z).catch(()=>{}),N}try{await this.ensureServicePortForAdoptedSandbox(W),await this.ensureHttpRouteForHandle(Z,W,G.tenant??null)}catch(N){throw await RO(this.kubeConfig,this.namespace,Z).catch(()=>{}),N}let K=await this.openForwarder(W,IO,Z),U=`http://127.0.0.1:${K.localPort}`,H=this.workloadConfigPayload(G),F=Q;try{if(await NX$(U),this.sentinelToken!==null){let N=await CF1(U);if(N)F=N.bootId;await Ii(U,this.sentinelToken,H??{},{rotateToken:X})}else if(H)await Ii(U,X,H);if(G.orgFsConfigJson)await OX$(U,X,G.orgFsConfigJson).catch((N)=>console.warn("[org-fs] sidecar config relay failed",N))}catch(N){throw this.closeForwarder(K),await this.deleteHttpRouteIfManaged(Z).catch(()=>{}),await RO(this.kubeConfig,this.namespace,Z).catch(()=>{}),N}return{id:$,handle:Z,adoptedSandboxName:W,token:X,workdir:Y,daemonUrl:U,daemonForward:K,workload:G.workload??null,daemonBootId:F,tenant:G.tenant??null,ensureOpts:Z$4(G)}}workloadConfigPayload($){return Xl1({runtime:$?.workload?.runtime??"node",packageManager:$?.workload?.packageManager?{name:$.workload.packageManager,...$.workload.packageManagerPath?{path:$.workload.packageManagerPath}:{}}:null,repo:$?.repo??null,port:$?.workload?.devPort??y04,tenant:$?.tenant??void 0})}async rebootstrapDaemon($,Z,G){if(this.sentinelToken===null)return!1;let X=this.workloadConfigPayload(G)??{};try{return await Ii($,this.sentinelToken,X,{rotateToken:Z}),!0}catch(Q){if(Q instanceof SF1&&Q.status===401)try{return await Ii($,Z,X,{rotateToken:Z}),!0}catch(Y){return console.warn(`[${E7}] re-bootstrap retry with claim token failed: ${Y instanceof Error?Y.message:String(Y)}`),!1}return console.warn(`[${E7}] re-bootstrap failed: ${Q instanceof Error?Q.message:String(Q)}`),!1}}async ensureServicePortForAdoptedSandbox($){if(!this.previewGateway||!this.previewUrlPattern)return;await KX$(this.kubeConfig,this.namespace,$,{name:"daemon",port:IO,targetPort:IO})}async ensureHttpRouteForHandle($,Z,G){if(!this.previewGateway||!this.previewUrlPattern)return;let X=G$4(this.previewUrlPattern,$);if(!X)throw new o9(`Unable to derive preview hostname for ${$} from pattern: ${this.previewUrlPattern}`);let Q={apiVersion:`${Ri.API_GROUP}/${Ri.API_VERSION}`,kind:"HTTPRoute",metadata:{name:$,namespace:this.namespace,labels:Hm1(G??void 0,{[uY.role]:"claimed",[uY.sandboxHandle]:$,"app.kubernetes.io/name":"studio-sandbox","app.kubernetes.io/managed-by":"studio",...this.envName?{[uY.env]:this.envName}:{}})},spec:{parentRefs:[{kind:"Gateway",group:"gateway.networking.k8s.io",name:this.previewGateway.name,namespace:this.previewGateway.namespace}],hostnames:[X],rules:[{backendRefs:[{group:"",kind:"Service",name:Z,port:IO}]}]}};await TF1(this.kubeConfig,this.namespace,Q)}async deleteHttpRouteIfManaged($){if(!this.previewGateway)return;await qF1(this.kubeConfig,this.namespace,$)}async rehydrate($,Z,G){let X=G.state;if(!X.adoptedSandboxName&&!X.podName||!X.token)return null;let Q=await UH(this.kubeConfig,this.namespace,Z).catch(()=>{return});if(!Q||!PX$(Q))return null;let Y=Q.status?.sandbox?.name??X.adoptedSandboxName??X.podName??Z,J=await this.openAndProbeDaemon(Y,Z);if(!J)return null;if(X.daemonBootId&&X.daemonBootId!==J.bootId){if(this.sentinelToken!==null){if(!await this.rebootstrapDaemon(J.daemonUrl,X.token,X.ensureOpts??null))return this.closeForwarder(J.daemonForward),null}else console.warn(`[${E7}] daemon restart detected (handle=${Z}): stored bootId=${X.daemonBootId} live bootId=${J.bootId}`);await this.stateStore?.put($,SX,{handle:Z,state:{...X,daemonBootId:J.bootId}}).catch((W)=>console.warn(`[${E7}] bootId persist failed for ${Z}: ${W instanceof Error?W.message:String(W)}`))}return{id:$,handle:Z,adoptedSandboxName:Y,token:X.token,workdir:X.workdir??Km1,daemonUrl:J.daemonUrl,daemonForward:J.daemonForward,workload:X.workload??null,daemonBootId:J.bootId,tenant:X.tenant??null,ensureOpts:X.ensureOpts??null}}async adopt($,Z,G){if(!PX$(G))return null;let X=G.status?.sandbox?.name??Z;if(this.sentinelToken!==null)return null;let Q=i04(G);if(!Q)return null;let Y=await this.openAndProbeDaemon(X,Z);if(!Y)return null;let J=$$4(G);if(this.previewGateway)await this.ensureServicePortForAdoptedSandbox(X).catch((W)=>{console.warn(`[${E7}] Service port backfill failed for ${Z}: ${W instanceof Error?W.message:String(W)}`)}),await this.ensureHttpRouteForHandle(Z,X,J).catch((W)=>{console.warn(`[${E7}] HTTPRoute backfill failed for ${Z}: ${W instanceof Error?W.message:String(W)}`)});return{id:$,handle:Z,adoptedSandboxName:X,token:Q,workdir:Km1,daemonUrl:Y.daemonUrl,daemonForward:Y.daemonForward,workload:null,daemonBootId:Y.bootId,tenant:J,ensureOpts:null}}async openAndProbeDaemon($,Z){let G=await this.openForwarder($,IO,Z).catch(()=>null);if(!G)return null;let X=`http://127.0.0.1:${G.localPort}`,Q=await CF1(X);if(!Q)return this.closeForwarder(G),null;return{daemonForward:G,daemonUrl:X,bootId:Q.bootId}}async getRecord($){let Z=this.records.get($);if(Z)return Z;if(!this.stateStore)return null;let G=await this.stateStore.getByHandle(SX,$);if(!G)return null;let X=await this.rehydrate(G.id,$,G);if(X)this.records.set($,X);return X}async resurrectByHandle($){if(!this.stateStore)return null;let Z=await this.stateStore.getByHandle(SX,$);if(!Z)return null;let G=Z.state.ensureOpts;if(!G)return null;return await this.ensure(Z.id,G),this.records.get($)??null}invalidateRecord($){let Z=this.records.get($);if(!Z)return;this.records.delete($),this.closeForwarder(Z.daemonForward)}recordProxyDuration($,Z,G,X,Q){if(!this.metrics)return;this.metrics.proxyDurationMs.record(X,{...Fm1(G?.tenant??null),source:$,sandbox_handle:G?.handle??Q??"",status_code:Z||0})}composePreviewUrl($){if(this.previewUrlPattern)return $51(this.previewUrlPattern,$.handle);return`http://127.0.0.1:${$.daemonForward.localPort}/`}toSandbox($){return{handle:$.handle,workdir:$.workdir,previewUrl:this.composePreviewUrl($)}}async persist($,Z){if(!$)return;let G={adoptedSandboxName:Z.adoptedSandboxName,token:Z.token,workdir:Z.workdir,workload:Z.workload,daemonBootId:Z.daemonBootId,tenant:Z.tenant,...Z.ensureOpts?{ensureOpts:Z.ensureOpts}:{}};await $.put(Z.id,SX,{handle:Z.handle,state:G})}computeShutdownTime(){return new Date(Date.now()+this.idleTtlMs).toISOString()}openForwarder($,Z,G=$){let X=p04(G,Z);return new Promise((Q,Y)=>{let J=(W,K)=>{let U=RX$.createServer((H)=>this.handleForwardedConnection(H,$,Z,G));U.once("error",(H)=>{if(H.code==="EADDRINUSE"&&K<l04){try{U.close()}catch{}let F=Nm1+(W-Nm1+1)%IX$;J(F,K+1);return}Y(H)}),U.listen(W,"127.0.0.1",()=>{let H=U.address();if(!H||typeof H==="string"){U.close(),Y(Error("port-forward listener failed to bind"));return}Q({server:U,localPort:H.port})})};J(X,0)})}handleForwardedConnection($,Z,G,X){let Q=new b04,Y=null,J=!1,W=()=>{if(J)return;if(J=!0,Q.destroy(),Y)try{Y.close()}catch{}if(!$.destroyed)$.destroy()};$.pipe(Q),$.on("error",W),$.on("close",W),this.portForward.portForward(this.namespace,Z,[G],$,null,Q).then((K)=>{let U=typeof K==="function"?K():K;if(!U){W();return}if(Y=U,Y.on("close",W),Y.on("error",()=>{this.invalidateRecord(X),W()}),J)try{Y.close()}catch{}}).catch((K)=>{console.warn(`[${E7}] port-forward to ${Z}:${G} failed: ${v04(K)}`),this.invalidateRecord(X),W()})}closeForwarder($){$.server.close((Z)=>{if(Z)console.warn(`[${E7}] port-forward close on :${$.localPort} errored: ${Z instanceof Error?Z.message:String(Z)}`)})}close(){if(this.closed)return;this.closed=!0,this.claimWatchAbort.abort();for(let $ of this.records.values())this.closeForwarder($.daemonForward);this.records.clear()}}function d04($){return{active:$.createUpDownCounter("studio.sandbox.active",{description:"Active sandbox count, by runner kind and owning org. Cross-checks the cAdvisor-derived count from the cluster \u2014 divergence between the two indicates orphaned claims (mesh deleted but K8s didn't reap) or unattributed pods.",unit:"{sandbox}"}),ensureOutcome:$.createCounter("studio.sandbox.ensure.outcome",{description:"Outcome of each ensure() call: fresh provision, resume from state-store after restart, or adopt of a cluster-side claim mesh didn't know about. Cold-start ratio is the primary input for warm-pool sizing.",unit:"{call}"}),proxyDurationMs:$.createHistogram("studio.sandbox.proxy.duration_ms",{description:"Wall-clock latency of mesh-mediated requests to the sandbox daemon: tool exec proxies (source=daemon) and preview iframe traffic (source=preview).",unit:"ms"})}}function m04(){let $=new gx;return $.loadFromDefault(),$}function PX$($){return Boolean($.status?.conditions?.some((Z)=>Z.type==="Ready"&&Z.status==="True"))}function i04($){let Z=$.spec?.env;if(!Z)return null;for(let G of Z)if(G.name==="DAEMON_TOKEN"&&G.value)return G.value;return null}function p04($,Z){let G=S04("sha256").update(`${$}:${Z}`).digest();return Nm1+G.readUInt32BE(0)%IX$}function Um1($,Z){return new Response(JSON.stringify(Z),{status:$,headers:{"content-type":"application/json","access-control-allow-origin":"*"}})}function AX$($){let Z=$.slice(0,t04);return n04.test(Z)?Z:""}function r04($){if($===void 0)return null;let Z=$.trim();if(Z==="")return null;if(!o04.test(Z))throw Error(`AgentSandboxProvider: envName=${JSON.stringify(Z)} is not a valid DNS-label-safe environment name (lowercase alphanumeric or '-', starts with a letter, ends alphanumeric, \u226432 chars). Mesh sets this from STUDIO_ENV; check the studio chart's configMap.`);return Z}function Hm1($,Z={}){let G={...Z};if($){let X=AX$($.orgId),Q=AX$($.userId);if(X)G[uY.orgId]=X;if(Q)G[uY.userId]=Q}return G}function fV($){let Z="";for(let G of $){let X=G.codePointAt(0)??0;Z+=X<32||X===127?" ":G}return Z.slice(0,a04)}function s04($){try{let Z=new URL($);return Z.username="",Z.password="",Z.toString()}catch{return""}}function e04($){let Z={},G=$.tenant;if(G?.orgSlug)Z[J3.orgSlug]=fV(G.orgSlug);if(G?.orgName)Z[J3.orgName]=fV(G.orgName);if(G?.userEmail)Z[J3.userEmail]=fV(G.userEmail);if(G?.userName)Z[J3.userName]=fV(G.userName);let X=$.repo;if(X){if(X.displayName)Z[J3.gitRepo]=fV(X.displayName);let Q=s04(X.cloneUrl);if(Q)Z[J3.gitRepoUrl]=fV(Q);let Y=$.branch??X.branch;if(Y)Z[J3.gitBranch]=fV(Y)}return Z}function $$4($){let Z=$.metadata?.labels;if(!Z)return null;let G=Z[uY.orgId],X=Z[uY.userId];if(!G||!X)return null;let Q=$.metadata?.annotations??{};return{orgId:G,userId:X,orgSlug:Q[J3.orgSlug],orgName:Q[J3.orgName],userEmail:Q[J3.userEmail],userName:Q[J3.userName]}}function Fm1($){return{org_id:$?.orgId??"",user_id:$?.userId??"",runner_kind:SX}}function Z$4($){let Z={};if($.repo)Z.repo=$.repo;if($.workload)Z.workload=$.workload;if($.env&&Object.keys($.env).length>0)Z.env=$.env;if($.tenant)Z.tenant=$.tenant;return Object.keys(Z).length>0?Z:null}function G$4($,Z){try{return new URL($51($,Z)).hostname||null}catch{return null}}var SX="agent-sandbox",E7="AgentSandboxProvider",yV="x-sandbox-preview-not-ready",x04="agent-sandbox-system",f04="studio-sandbox",IO=9000,y04=3000,Km1="/app",g04=32,h04,u04=900000,c04,jX$,Nm1=40000,IX$=1e4,l04=256,uY,J3,n04,t04=63,o04,a04=253;var TX$=D(()=>{ed1();BX$();G51();kF1();ji();zX$();h04=new Set(["DAEMON_TOKEN","DAEMON_BOOT_ID","APP_ROOT","PROXY_PORT"]),c04=["cookie","host","connection","keep-alive","proxy-authenticate","proxy-authorization","te","trailer","transfer-encoding","accept-encoding","content-length","upgrade"],jX$=["connection","keep-alive","transfer-encoding","content-encoding","content-length"];uY={role:"studio.decocms.com/role",sandboxHandle:"studio.decocms.com/sandbox-handle",orgId:"studio.decocms.com/org-id",userId:"studio.decocms.com/user-id",env:"studio.decocms.com/env"},J3={orgSlug:"studio.decocms.com/org-slug",orgName:"studio.decocms.com/org-name",userEmail:"studio.decocms.com/user-email",userName:"studio.decocms.com/user-name",gitRepo:"studio.decocms.com/git-repo",gitRepoUrl:"studio.decocms.com/git-repo-url",gitBranch:"studio.decocms.com/git-branch"},n04=/^([A-Za-z0-9]([-A-Za-z0-9_.]*[A-Za-z0-9])?)?$/;o04=/^[a-z]([a-z0-9-]{0,30}[a-z0-9])?$/});var qX$={};p4(qX$,{waitForSandboxReady:()=>MF1,getSandboxClaim:()=>UH,getHttpRoute:()=>JX$,deleteSandboxClaim:()=>RO,deleteHttpRoute:()=>qF1,createSandboxClaim:()=>Ai,applyHttpRoute:()=>TF1,SandboxTimeoutError:()=>vV,SandboxError:()=>o9,PREVIEW_NOT_READY_HEADER:()=>yV,KubeConfig:()=>gx,K8S_CONSTANTS:()=>_9,HTTPROUTE_CONSTANTS:()=>Ri,AgentSandboxProvider:()=>Om1});var Bm1=D(()=>{ed1();ji();kF1();TX$()});class bF1{kind=TO;userSub;dispatch;stateStore;records=new Map;constructor($){if(!$.userSub)throw Error("DesktopSandboxProvider requires userSub");if(!$.dispatch)throw Error("DesktopSandboxProvider requires dispatch");this.userSub=$.userSub,this.dispatch=$.dispatch,this.stateStore=$.stateStore??null}async ensure($,Z={}){let G=Z.branch??Z.repo?.branch,X=HO($,G),Q=this.records.get(X);if(Q){if(await this.probeHealth(X))return this.toSandbox(Q);if(this.records.delete(X),this.stateStore)await this.stateStore.deleteByHandle(TO,X).catch(()=>{})}else if(this.stateStore){let N=(await this.stateStore.getByHandle(TO,X))?.state,O=N?.sandboxApiUrl;if(O){if(await this.probeHealth(X)){let B={handle:X,sandboxApiUrl:O,previewUrl:N?.previewUrl??O};return this.records.set(X,B),this.toSandbox(B)}await this.stateStore.deleteByHandle(TO,X).catch(()=>{})}}let Y=eU({userName:Z.tenant?.userName,userEmail:Z.tenant?.userEmail}),J=JSON.stringify({handle:X,repo:Z.repo,branch:G,...Z.workload?{workload:Z.workload}:{},...Y?{operator:Y}:{},...Z.offloadAllowedHosts?{offloadAllowedHosts:Z.offloadAllowedHosts}:{},...Z.offloadAllowSameHostDev!==void 0?{offloadAllowSameHostDev:Z.offloadAllowSameHostDev}:{},...Z.orgFsConfigJson?{orgFsConfigJson:Z.orgFsConfigJson}:{}}),W=await this.dispatchJson("POST","/api/sandboxes",J),K=JSON.parse(W);if(typeof K.sandboxApiUrl!=="string")throw Error("desktop ensure: daemon did not return a sandboxApiUrl string");let U=typeof K.previewUrl==="string"?K.previewUrl:K.sandboxApiUrl,H={handle:X,sandboxApiUrl:K.sandboxApiUrl,previewUrl:U};if(this.records.set(X,H),this.stateStore)await this.stateStore.put($,TO,{handle:X,state:{handle:X,sandboxApiUrl:K.sandboxApiUrl,previewUrl:U}});return this.toSandbox(H)}async proxyDaemonRequest($,Z,G){let X=Z.startsWith("/")?Z:`/${Z}`,Q=X.startsWith("/_sandbox/")?X.slice(9):X,Y=`/_sandbox/${encodeURIComponent($)}${Q}`,J=new Headers(G.headers);for(let z of["host","cookie","connection","keep-alive","transfer-encoding","upgrade","authorization"])J.delete(z);let W={};J.forEach((z,j)=>{W[j]=z});let K;if(G.body!=null)K=await Q$4(G.body);let H=this.dispatch(this.userSub,{method:G.method,path:Y,headers:W,body:K},{signal:G.signal})[Symbol.asyncIterator](),F=X$4(),N=200,O={"content-type":"application/octet-stream"},B=[];try{while(!0){let z=await H.next();if(z.done)break;let j=z.value;if(j.headers){N=j.headers.status,O=j.headers.headers;break}if(j.data!=null){let P=F.push(j.data);if(P.length)B.push(P)}}}catch(z){let j=z instanceof Error?z.message:"dispatch error";return new Response(JSON.stringify({error:j}),{status:502,headers:{"content-type":"application/json"}})}let L=!1,w=new ReadableStream({async start(z){for(let j of B)z.enqueue(j)},async pull(z){try{while(!0){let j=await H.next();if(L)return;if(j.done){let R=F.flush();if(R.length)z.enqueue(R);z.close();return}let P=j.value;if(P.data!=null){let R=F.push(P.data);if(R.length){z.enqueue(R);return}}}}catch(j){if(!L)z.error(j)}},cancel(){L=!0,H.return?.()}});return new Response(w,{status:N,headers:O})}async alive($){return this.probeHealth($)}async probeHealth($){let Z=new AbortController,G=setTimeout(()=>Z.abort(),3000);try{return await this.dispatchJson("GET",`/api/sandboxes/${encodeURIComponent($)}`,void 0,Z.signal),!0}catch{return!1}finally{clearTimeout(G)}}async forgetHandle($){if(this.records.delete($),this.stateStore)await this.stateStore.deleteByHandle(TO,$).catch(()=>{})}async delete($){if(this.records.delete($),this.stateStore)await this.stateStore.deleteByHandle(TO,$).catch(()=>{});try{await this.dispatchJson("DELETE",`/api/sandboxes/${encodeURIComponent($)}`)}catch(Z){if(!(Z instanceof Error?Z.message:String(Z)).includes("404"))throw Z}}async getPreviewUrl($){return(await this.resolveRecord($))?.previewUrl??null}async localWorkdir($){return null}async*watchClaimLifecycle($,Z){yield{kind:"ready"}}toSandbox($){return{handle:$.handle,workdir:$.sandboxApiUrl,previewUrl:$.previewUrl}}async resolveRecord($){let Z=this.records.get($);if(Z)return Z;if(!this.stateStore)return null;let X=(await this.stateStore.getByHandle(TO,$))?.state,Q=X?.sandboxApiUrl;if(!Q)return null;let Y={handle:$,sandboxApiUrl:Q,previewUrl:X?.previewUrl??Q};return this.records.set($,Y),Y}async dispatchJson($,Z,G,X){let Q={accept:"application/json"};if(G!==void 0)Q["content-type"]="application/json";let Y=this.dispatch(this.userSub,{method:$,path:Z,headers:Q,body:G},{signal:X}),J=null,W="";for await(let U of Y)if(U.headers)J=U.headers.status;else if(U.data!=null)W+=U.data;let K=Buffer.from(W,"base64").toString("utf8");if(J!=null&&(J<200||J>=300))throw Error(`daemon returned ${J}: ${K}`);return K}}function MX$($){return new bF1($)}function X$4(){let $="";return{push(Z){if(Z.length===0)return Dm1;$+=Z;let G=$.length-$.length%4;if(G===0)return Dm1;let X=$.slice(0,G);return $=$.slice(G),new Uint8Array(Buffer.from(X,"base64"))},flush(){if($.length===0)return Dm1;let Z=$;return $="",new Uint8Array(Buffer.from(Z,"base64"))}}}async function Q$4($){if(typeof $==="string")return $;if($ instanceof ArrayBuffer)return Buffer.from($).toString("utf8");if(ArrayBuffer.isView($))return Buffer.from($.buffer,$.byteOffset,$.byteLength).toString("utf8");if($ instanceof URLSearchParams)return $.toString();return await new Response($).text()}var TO="user-desktop",Dm1;var kX$=D(()=>{G51();Z51();Dm1=new Uint8Array(0)});var VX$={};p4(VX$,{createDesktopProvider:()=>MX$,DesktopSandboxProvider:()=>bF1});var SX$=D(()=>{kX$()});var fX$={};p4(fX$,{subscribeLifecycle:()=>qi,getSandboxProviderByKind:()=>Em1,getOrInitSharedRunner:()=>N$4,buildDesktopProvider:()=>vF1,__resetSharedLifecyclesForTesting:()=>E$4});function vX$($,Z){let G=CX$[$];if(G)return Promise.resolve(G);let X=Lm1[$];if(X)return X;let Q=Z().then((Y)=>{return CX$[$]=Y,Y}).finally(()=>{delete Lm1[$]});return Lm1[$]=Q,Q}function W$4(){let $=process.env.STUDIO_SANDBOX_PREVIEW_URL_PATTERN;return $&&$.trim()!==""?$:void 0}function K$4(){let $=process.env.STUDIO_SANDBOX_TEMPLATE_NAME;return $&&$.trim()!==""?$:void 0}function U$4(){let $=process.env.STUDIO_ENV;return $&&$.trim()!==""?$:void 0}function H$4(){let $=process.env.STUDIO_SANDBOX_SENTINEL_TOKEN;return $&&$.trim()!==""?$:void 0}function F$4(){let $=process.env.STUDIO_SANDBOX_PREVIEW_GATEWAY_NAME?.trim(),Z=process.env.STUDIO_SANDBOX_PREVIEW_GATEWAY_NAMESPACE?.trim();if(!$&&!Z)return;if(!$||!Z)throw Error("STUDIO_SANDBOX_PREVIEW_GATEWAY_NAME and STUDIO_SANDBOX_PREVIEW_GATEWAY_NAMESPACE must both be set, or both unset. Half-configured per-claim HTTPRoute routing would silently fail to attach.");return{name:$,namespace:Z}}async function xX$($,Z){let G=new NO(Z),X=W$4();switch($){case"agent-sandbox":{let{AgentSandboxProvider:Q}=await Promise.resolve().then(() => (Bm1(),qX$));return new Q({stateStore:G,previewUrlPattern:X,sandboxTemplateName:K$4(),envName:U$4(),previewGateway:F$4(),sentinelToken:H$4(),meter:z6})}case"user-desktop":throw Error("user-desktop provider cannot be instantiated without a per-run link claim \u2014 call resolveSandboxProvider, which binds the link before constructing the provider.");default:throw Error(`Unknown sandbox provider kind: ${String($)}`)}}async function vF1($,Z){let{DesktopSandboxProvider:G}=await Promise.resolve().then(() => (SX$(),VX$)),{getProxyDispatch:X}=await Promise.resolve().then(() => (zm1(),wm1)),Q=new NO($.db);if(!Z)throw Error("buildDesktopProvider: userSub must be a non-empty string");let Y=X();return new G({userSub:Z,dispatch:Y,stateStore:Q})}function Em1($,Z){return vX$(Z,()=>xX$(Z,$.db))}async function N$4(){let $;try{$=bW()}catch(G){return console.warn("[lifecycle] cannot resolve sandbox runner:",G instanceof Error?G.message:String(G)),null}return await vX$($,()=>xX$($,j6().db))}function qi($,Z,G){let X=qO.get(Z);if(X){if(X.terminated){if(X.lastPhase)try{G(X.lastPhase)}catch{}return{unsubscribe:D$4}}if(X.listeners.add(G),X.lastPhase)try{G(X.lastPhase)}catch{}return _X$(Z,X,G)}let Q=new AbortController,Y={lastPhase:null,terminated:!1,listeners:new Set([G]),abort:Q};return qO.set(Z,Y),L$4($,Z,Y),_X$(Z,Y,G)}function D$4(){}function _X$($,Z,G){return{unsubscribe(){if(qO.get($)!==Z)return;if(Z.listeners.delete(G),Z.listeners.size===0)qO.delete($),Z.abort.abort()}}}async function L$4($,Z,G){let X=null;try{for await(let Q of $.watchClaimLifecycle(Z,G.abort.signal)){if(G.abort.signal.aborted)break;G.lastPhase=Q;let Y=Q.kind==="ready"||Q.kind==="failed";if(Y)G.terminated=!0;let J=Array.from(G.listeners);for(let W of J)try{W(Q)}catch{}if(Y)break}}catch(Q){X=Q}finally{if(!G.terminated&&!G.abort.signal.aborted&&G.listeners.size>0){let Q={kind:"failed",reason:"unknown",message:X instanceof Error?X.message:"Lifecycle watcher ended unexpectedly"};G.lastPhase=Q,G.terminated=!0;for(let Y of Array.from(G.listeners))try{Y(Q)}catch{}}if(qO.get(Z)===G)qO.delete(Z)}}function E$4(){for(let $ of qO.values())$.abort.abort();qO.clear()}var Y$4,J$4,bX$,CX$,Lm1,O$4,B$4,qO;var Mi=D(()=>{TQ();LJ();x9();K51();Y$4=Symbol.for("decocms.sandbox.lifecycle.runners"),J$4=Symbol.for("decocms.sandbox.lifecycle.inflight"),bX$=globalThis,CX$=bX$[Y$4]??={},Lm1=bX$[J$4]??={};O$4=Symbol.for("decocms.sandbox.lifecycle.shared-lifecycles"),B$4=globalThis,qO=B$4[O$4]??=new Map});async function xF1($,Z){if(await Z.linkClaimRegistry.get($))return"user-desktop";return Z.resolveEnvKind()}async function W3($,Z){let{userId:G,branch:X,virtualMcpMetadata:Q,explicitKind:Y}=Z;if(Y)return{provider:await ki($,G,Y),kind:Y};if($.sandboxPreference==="agent-sandbox")return{provider:await ki($,G,"agent-sandbox"),kind:"agent-sandbox"};if($.sandboxPreference==="user-desktop"&&$.linkForCurrentRun)return{provider:await vF1($,G),kind:"user-desktop"};if($.sandboxPreference==="cluster-default"){let H=bW();return{provider:await ki($,G,H),kind:H}}let[J,...W]=w$4(Q,G,X);if(J){let H=W.length===0?J:await z$4($,G,J,W);return{provider:await ki($,G,H),kind:H}}let K=await yX$($,G);return{provider:await ki($,G,K),kind:K}}function w$4($,Z,G){let X=qQ($)[Z]?.[G];if(!X)return[];let Q=uK(X);return Object.keys(Q)}async function z$4($,Z,G,X){let Q=await yX$($,Z);if(Q===G||X.includes(Q))return Q;return G}async function yX$($,Z){if(!$.linkClaimRegistry)return bW();return xF1(Z,{linkClaimRegistry:$.linkClaimRegistry,resolveEnvKind:bW})}async function ki($,Z,G){if(G!=="user-desktop")return Em1($,G);if(!$.linkClaimRegistry)throw Error("user-desktop sandbox provider requires ctx.linkClaimRegistry to be wired (set on StudioContextConfig).");if(!await $.linkClaimRegistry.get(Z))throw Error(`No link daemon registered for user "${Z}". Start one with \`deco link\` (or run \`bun run dev --local-sandbox-provider\` for dev).`);return vF1($,Z)}var dx=D(()=>{S8();TQ();GH();Mi()});async function fF1($,Z){if(!$)return{hosts:[],allowSameHostDev:!1};let G;try{G=await $.presignedGetUrl("link-dispatch/_allowlist_probe",60,{requireFetchable:!0})}catch{return{hosts:[],allowSameHostDev:!1}}let X;try{X=new URL(G)}catch{return{hosts:[],allowSameHostDev:!1}}if(X.protocol!=="https:"&&X.protocol!=="http:")return{hosts:[],allowSameHostDev:!1};let Q=X.hostname,Y=j$4.has(Q);return{hosts:[Q],allowSameHostDev:Y&&!Z.isProduction}}var j$4;var jm1=D(()=>{j$4=new Set(["127.0.0.1","localhost","::1","[::1]","0.0.0.0"])});import{z as hW}from"zod";async function gX$($,Z){A1(Z);let G=N1(Z),X=B$(Z);if(!X)throw Error("User ID required");let Q=await Z.storage.virtualMcps.findById($.virtualMcpId);if(!Q||Q.organization_id!==G.id)throw Error("Virtual MCP not found");let Y=Q.metadata??{},J=ZH(qQ(Y),X,$.branch,$.sandboxProviderKind),W=$.sandboxProviderKind,{provider:K}=await W3(Z,{userId:X,branch:$.branch,virtualMcpMetadata:Y,explicitKind:W});if(J){if(W!=="user-desktop")return J;if(await K.alive(J.sandboxHandle).catch(()=>!1))return J;await FO(Z.storage.virtualMcps,$.virtualMcpId,X,X,$.branch,W).catch((N)=>{console.warn("[ensureSandbox] failed to reap stale user-desktop entry",N)})}let U=Y.githubRepo??null,{entry:H}=await hX$({ctx:Z,userId:X,orgId:G.id,virtualMcpId:$.virtualMcpId,branch:$.branch,metadata:Y,githubRepo:U,existing:null,providerKind:W,runner:K});return H}async function hX$($){let{ctx:Z,userId:G,orgId:X,virtualMcpId:Q,branch:Y,metadata:J,githubRepo:W,existing:K,runner:U}=$,{runtime:H,packageManager:F,port:N,packageManagerPath:O}=X51(J),B;if(W){if(W.connectionId)await qx({ctx:Z,connectionId:W.connectionId,organizationId:X,forceRefresh:!0,onLegacyMintError:(Q1)=>{console.error("[provisionSandbox] repo-scoped legacy token mint failed",{connectionId:W.connectionId,error:Q1.message})}});let{cloneUrl:Z1,gitUserName:d,gitUserEmail:n}=W.connectionId?await Mx(W.connectionId,W.owner,W.name,Z.db,Z.vault):Y51(W.owner,W.name);if(!F){let Q1=W.connectionId?await z4$(W.connectionId,W.owner,W.name,Z.db,Z.vault):await j4$(W.owner,W.name);if(Q1)F=Q1.packageManager,H=em[Q1.packageManager].runtime,N=Q1.devPort??N,await A$4(Z,Q,G,Q1.packageManager,Q1.devPort)}B={cloneUrl:Z1,userName:d,userEmail:n,branch:Y,displayName:`${W.owner}/${W.name}`}}let L=H&&F?{runtime:H,packageManager:F,...N!==null?{devPort:Number(N)}:{},...O?{packageManagerPath:O}:{}}:void 0,w=$H({orgId:X,virtualMcpId:Q,branch:Y}),z=U.kind==="user-desktop"?await fF1(Z.objectStorage,{isProduction:b0().nodeEnv==="production"}):null,j=(U.kind==="user-desktop"||U.kind==="agent-sandbox")&&!b0().orgFsMountsDisabled,P;if(j){let Z1=Z.organization?.slug??(await Z.db.selectFrom("organization").select(["slug"]).where("id","=",X).executeTakeFirst())?.slug;if(Z1)P=await q41(Z,{orgSlug:Z1,orgId:X,baseUrl:T3()})}let R=await U.ensure({userId:G,projectRef:w},{branch:Y,repo:B,workload:L,tenant:{orgId:X,userId:G,...Z.organization?.slug?{orgSlug:Z.organization.slug}:{},...Z.organization?.name?{orgName:Z.organization.name}:{},...Z.auth.user?.email?{userEmail:Z.auth.user.email}:{},...Z.auth.user?.name?{userName:Z.auth.user.name}:{}},...z?{offloadAllowedHosts:z.hosts,offloadAllowSameHostDev:z.allowSameHostDev}:{},...P?{orgFsConfigJson:P}:{}}),A=J.runtime?.env??null;await Q51({ctx:Z,runner:U,handle:R.handle,orgId:X,userId:G,entries:A});let S=!!K&&K.sandboxHandle===R.handle&&K?.createdAt?K.createdAt:Date.now(),k=J.runtime?.selected??null,C=J.runtime?.port??null,u=J.runtime?.path??null,f={sandboxHandle:R.handle,previewUrl:R.previewUrl,sandboxApiUrl:R.previewUrl,sandboxProviderKind:U.kind,createdAt:S,startedWith:{packageManager:k,port:C,path:u}};await B4$(Z.storage.virtualMcps,Q,G,G,Y,$.providerKind,f);let y=!K||K.sandboxHandle!==R.handle;return{entry:f,isNewVm:y}}async function A$4($,Z,G,X,Q){let Y=await $.storage.virtualMcps.findById(Z);if(!Y)return;let J=Y.metadata??{};await $.storage.virtualMcps.update(Z,G,{metadata:{...J,runtime:{selected:X,port:Q}}})}var P$4,Pm1;var Am1=D(()=>{TQ();t1();$i();Jl1();GH();J51();A4$();Nh1();Yl1();dx();jm1();$6();dX();M41();GH();P$4=hW.enum(["agent-sandbox","user-desktop","cluster"]),Pm1=$1({name:"SANDBOX_START",description:"Start a sandbox with the connected GitHub repo and dev server.",annotations:{title:"Start VM Preview",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!0},_meta:{ui:{visibility:"app"}},inputSchema:hW.object({virtualMcpId:hW.string().describe("Virtual MCP ID"),branch:hW.string().min(1).optional().describe("Optional git branch to check out. When omitted the handler generates a Bayer-style `<greek-letter>-<constellation>` name (e.g. `alpha-centauri`) and uses it. The resolved branch is returned in the response so callers can persist it."),sandboxProviderKind:P$4.optional().describe("Explicit runtime choice. Hosted provider is `agent-sandbox`; legacy `cluster` input is accepted only for compatibility and normalized to `agent-sandbox`. When omitted, defaults to `user-desktop` if the acting user's link daemon is online, else the env kind.")}),outputSchema:hW.object({previewUrl:hW.string().nullable(),sandboxHandle:hW.string(),branch:hW.string(),isNewVm:hW.boolean(),sandboxProviderKind:hW.enum(["agent-sandbox","user-desktop"])}),handler:async($,Z)=>{A1(Z);let G=N1(Z);await Z.access.check();let X=$.branch??y41(),Q=B$(Z);if(!Q)throw Error("User ID required");let Y=await Z.storage.virtualMcps.findById($.virtualMcpId);if(!Y||Y.organization_id!==G.id)throw Error("Virtual MCP not found");let J=Y.metadata??{},W=$.sandboxProviderKind?sU($.sandboxProviderKind):void 0,{provider:K,kind:U}=await W3(Z,{userId:Q,branch:X,virtualMcpMetadata:J,explicitKind:W}),H=ZH(qQ(J),Q,X,U),F=J.githubRepo??null,{entry:N,isNewVm:O}=await hX$({ctx:Z,userId:Q,orgId:G.id,virtualMcpId:$.virtualMcpId,branch:X,metadata:J,githubRepo:F,existing:H,providerKind:U,runner:K});return{...N,branch:X,isNewVm:O,sandboxProviderKind:U}}})});import{z as mx}from"zod";var R$4,Rm1;var uX$=D(()=>{TQ();t1();$i();GH();dx();R$4=mx.enum(["agent-sandbox","user-desktop","cluster"]),Rm1=$1({name:"SANDBOX_DELETE",description:"Delete a sandbox.",annotations:{title:"Delete VM Preview",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!0},_meta:{ui:{visibility:"app"}},inputSchema:mx.object({virtualMcpId:mx.string().describe("Virtual MCP ID that owns this VM"),branch:mx.string().min(1).describe("Branch whose vm should be deleted (sandboxMap[userId][branch])"),sandboxProviderKind:R$4.describe("Kind of sandbox provider the VM was started with. Hosted provider is `agent-sandbox`; legacy `cluster` input is accepted only for compatibility and normalized to `agent-sandbox`. Used to locate the correct 3-level sandboxMap entry.")}),outputSchema:mx.object({success:mx.boolean()}),handler:async($,Z)=>{let G=sU($.sandboxProviderKind),X;try{X=await L4$({...$,sandboxProviderKind:G},Z)}catch(W){if(W instanceof Error&&W.message==="Virtual MCP not found")return{success:!0};throw W}let{entry:Q,userId:Y}=X;if(!Q)return{success:!0};let{provider:J}=await W3(Z,{userId:Y,branch:$.branch,virtualMcpMetadata:X.metadata,explicitKind:G});return await FO(Z.storage.virtualMcps,$.virtualMcpId,Y,Y,$.branch,G),await J.delete(Q.sandboxHandle).catch((W)=>console.error(`[SANDBOX_DELETE] ${G} ${Q.sandboxHandle}: ${W instanceof Error?W.message:String(W)}`)),{success:!0}}})});var cX$=D(()=>{Am1();uX$()});import{z as uW}from"zod";var T$4="https://api.github.com",Im1;var lX$=D(()=>{t1();fL();pv();jW();Im1=$1({name:"GITHUB_LIST_USER_ORGS",description:"List GitHub App installations (orgs/accounts) accessible to the authenticated user.",annotations:{title:"List GitHub User Orgs",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},_meta:{ui:{visibility:"app"}},inputSchema:uW.object({connectionId:uW.string().describe("ID of the mcp-github connection to use")}),outputSchema:uW.object({installations:uW.array(uW.object({installationId:uW.number(),login:uW.string(),avatarUrl:uW.string(),type:uW.string()})),appSlug:uW.string().optional()}),handler:async($,Z)=>{await Z.access.check();let G=Z.organization?.id;if(!G)throw Error("Organization context required");let X=await Z.storage.connections.findById($.connectionId,G);if(!X)throw Error("Connection not found");if(PW(X))throw Error("Repo-scoped connections cannot list installations \u2014 use an org-level mcp-github connection");let Q=new V9(Z.db,Z.vault),Y=await Q.get($.connectionId);if(!Y)throw Error("No GitHub token found. Ensure the mcp-github connection is authenticated.");let J=Y.accessToken;if(j41(Y)&&Q.isExpired(Y,Qm)){let N=await P41(Y,Q);if(!N)throw Error(n7);J=N,Y=await Q.get($.connectionId)??Y}let W=[],K,U=1,H=100,F=async(N)=>fetch(`${T$4}/user/installations?per_page=${H}&page=${U}`,{headers:{Authorization:`Bearer ${N}`,Accept:"application/vnd.github+json","X-GitHub-Api-Version":"2022-11-28"}});while(!0){let N=await F(J);if(N.status===401){let B=await Q.get($.connectionId);if(!B||!j41(B))throw Error(n7);let L=await P41(B,Q);if(!L)throw Error(n7);if(J=L,N=await F(J),N.status===401)throw Error(n7)}if(!N.ok)throw Error(`GitHub /user/installations failed: ${N.status}`);let O=await N.json();for(let B of O.installations){if(!K)K=B.app_slug??B.app?.slug;W.push({installationId:B.id,login:B.account.login,avatarUrl:B.account.avatar_url,type:B.account.type})}if(O.installations.length<H)break;U++}return{installations:W,...K?{appSlug:K}:{}}}})});var dX$=D(()=>{lX$()});import{z as R0}from"zod";var Tm1,mX$,iX$,M$4,Vi,k$4,Si,V$4,S$4,C$4,qe5;var yF1=D(()=>{Tm1=R0.enum(["claude-code","codex","decopilot-sandbox","body-offload"]),mX$=R0.array(R0.string()).catch([]).transform(($)=>$.filter((Z)=>Tm1.safeParse(Z).success)),iX$=R0.discriminatedUnion("type",[R0.object({type:R0.literal("ui-message-chunk"),chunk:R0.unknown()}),R0.object({type:R0.literal("error"),code:R0.string(),message:R0.string()}),R0.object({type:R0.literal("done")})]),M$4=R0.record(R0.string(),R0.unknown()),Vi=R0.object({id:R0.string(),title:R0.string().optional(),provider:R0.string().nullable().optional(),credentialId:R0.string(),limits:R0.object({contextWindow:R0.number().int().positive().optional(),maxOutputTokens:R0.number().int().positive().optional()}).optional(),capabilities:R0.object({vision:R0.boolean().optional(),text:R0.boolean().optional(),reasoning:R0.boolean().optional()}).optional()}).strict(),k$4=R0.object({thinking:Vi.extend({title:R0.string()}),fast:Vi.optional(),smart:Vi.optional(),image:Vi.optional(),deepResearch:Vi.optional()}).strict(),Si=R0.object({kind:R0.literal("secret"),providerId:R0.string(),apiKey:R0.string(),modelId:R0.string(),baseUrl:R0.string().optional(),extraHeaders:R0.record(R0.string(),R0.string()).optional()}),V$4=R0.object({thinking:Si,fast:Si.optional(),smart:Si.optional(),image:Si.optional(),deepResearch:Si.optional()}).strict(),S$4=R0.object({kind:R0.literal("http"),url:R0.string().url(),headers:R0.record(R0.string(),R0.string()),expiresAt:R0.number().int().positive()}),C$4=R0.object({kind:R0.literal("http"),baseUrl:R0.string().url(),headers:R0.record(R0.string(),R0.string()),expiresAt:R0.number().int().positive()}),qe5=R0.object({harnessId:R0.enum(["decopilot","claude-code","codex"]).optional(),threadId:R0.string(),runId:R0.string(),taskId:R0.string(),resumeSessionRef:R0.string().optional(),messages:R0.array(M$4),workspace:R0.object({cwd:R0.string().min(1)}).strict(),models:k$4,modelSources:V$4.optional(),mcpSource:S$4.optional(),objectStorageSource:C$4.optional(),mcp:R0.object({url:R0.string().url(),headers:R0.record(R0.string(),R0.string()),expiresAt:R0.number().int().positive()}).strict(),mode:R0.enum(["default","plan","web-search","gen-image"]),temperature:R0.number(),toolApprovalLevel:R0.enum(["auto","readonly"]),toolAllowlist:R0.array(R0.string()).nullable().optional(),maxAgentSteps:R0.number().int().optional(),user:R0.object({id:R0.string(),email:R0.string()}),organizationId:R0.string(),organizationSlug:R0.string().optional(),virtualMcp:R0.record(R0.string(),R0.unknown()),agent:R0.object({id:R0.string()}),branch:R0.string().nullable().optional(),triggerId:R0.string().optional(),currentThreadTitle:R0.string().optional(),traceparent:R0.string().optional(),runFenceToken:R0.string().optional()}).strip()});import{z as pX$}from"zod";var nX$;var qm1=D(()=>{yF1();nX$=pX$.object({seq:pX$.number().int().positive(),event:iX$})});function rX$($){return $>=2}var tX$=2,oX$="x-link-protocol";var aX$=()=>{};var sX$=D(()=>{aX$();qm1();yF1()});var eX$=D(()=>{sX$()});import gV from"zod";var Mm1;var $Q$=D(()=>{eX$();t1();Mm1=$1({name:"LINK_CURRENT_GET",description:"Return the calling user's currently registered desktop link, or `online: false` if no link is registered or the TTL has expired.",inputSchema:gV.object({}),outputSchema:gV.object({online:gV.boolean(),machineId:gV.string().optional(),hostname:gV.string().optional(),cliVersion:gV.string().optional(),capabilities:gV.array(Tm1).default([])}),handler:async($,Z)=>{A1(Z),await Z.access.check();let G=Z.linkClaimRegistry;if(!G)return{online:!1,capabilities:[]};let X=await G.get(Z.auth.user.id);if(!X)return{online:!1,capabilities:[]};return{online:!0,machineId:X.machineId,hostname:X.hostname,cliVersion:X.cliVersion,capabilities:X.capabilities}}})});import km1 from"zod";var Vm1;var ZQ$=D(()=>{t1();Vm1=$1({name:"LINK_DISCONNECT",description:"Disconnect the calling user's desktop link from the Studio side: tells the linked daemon to shut down (via a `shutdown` control frame) and removes the presence claim. The user re-links by running `bunx decocms link` on the desktop.",inputSchema:km1.object({}),outputSchema:km1.object({disconnected:km1.boolean()}),handler:async($,Z)=>{A1(Z),await Z.access.check();let G=Z.auth.user.id,X=Z.linkClaimRegistry;if(!(X?await X.get(G):null))return{disconnected:!1};return Z.publishLinkControlFrame?.(G,{type:"shutdown"}),await X.delete(G),{disconnected:!0}}})});var GQ$=D(()=>{$Q$();ZQ$()});import{z as r9}from"zod";function XQ$($){if(!$)return"";return typeof $==="string"?$:$.toISOString()}var v$4,x$4,f$4,y$4,g$4,Sm1;var QQ$=D(()=>{t1();v$4=["thread"],x$4=r9.object({type:r9.literal("thread"),id:r9.string(),title:r9.string(),created_at:r9.string(),updated_at:r9.string(),virtual_mcp_id:r9.string().nullable(),run_config:r9.record(r9.string(),r9.unknown()).nullable(),status:r9.string().nullable()}),f$4=r9.discriminatedUnion("type",[x$4]),y$4=r9.object({query:r9.string().min(1).describe("Free-text search query."),limit:r9.number().int().min(1).max(50).optional().describe("Maximum results per resource type (default: 20)."),types:r9.array(r9.enum(v$4)).optional().describe("Restrict the search to specific resource types. Omit to search across all available types.")}),g$4=r9.object({items:r9.array(f$4),totalCount:r9.number()});Sm1=$1({name:"GLOBAL_SEARCH",description:"Search across organization resources by free-text query. Returns a typed union of matches (currently: threads). New resource types may be added over time without changes to the call shape.",annotations:{title:"Global Search",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:y$4,outputSchema:g$4,handler:async($,Z)=>{await Z.access.check(),N1(Z);let G=$.limit??20,X=$.types?.length?new Set($.types):null,Q=!X||X.has("thread"),Y=[],J=0;if(Q){let{threads:W,total:K}=await Z.storage.threads.list(void 0,{limit:G,offset:0,search:$.query,includeArchived:!1});J+=K;for(let U of W)Y.push({type:"thread",id:U.id,title:U.title??"",created_at:XQ$(U.created_at),updated_at:XQ$(U.updated_at),virtual_mcp_id:U.virtual_mcp_id??null,run_config:U.run_config??null,status:U.status??null})}return{items:Y,totalCount:J}}})});var YQ$=D(()=>{QQ$()});var V41={};p4(V41,{managementMCP:()=>Yx,managementContextStore:()=>pL,listManagementTools:()=>c$4,getFilteredTools:()=>hF1,CORE_TOOLS:()=>WQ$,ALL_TOOLS:()=>gF1});import{z as JQ$}from"zod";async function KQ$($){if(Cm1.length===0||!$.organization)return null;let Z=await $.storage.organizationSettings.get($.organization.id),G=await $.storage.virtualMcps.listEnabledPlugins($.organization.id),X=new Set(Z?.enabled_plugins??[]);for(let Q of G)X.add(Q);return X.size>0?[...X]:null}async function hF1($){if(Cm1.length===0)return u$4;let Z=await KQ$($);return new Map($C1(gF1,Z).map((G)=>[G.name,G]))}async function c$4($){let Z=await Yx($),[G,X]=bu.createLinkedPair();await Z.connect(X);let Q=new Y9({name:"tools-hydration",version:"1.0.0"},{jsonSchemaValidator:b5});try{return await Q.connect(G),(await Q.listTools()).tools}finally{await Q.close().catch(()=>{}),await Z.close().catch(()=>{})}}var WQ$,Cm1,gF1,u$4,Yx=async($)=>{let Z=await KQ$($),G=$C1(gF1,Z),X=new cK({name:"mcp-cms-management",version:"1.0.0"},{capabilities:{tools:{},prompts:{},resources:{}},jsonSchemaValidator:b5});for(let J of G){let{config:W,handler:K}=L61(J);X.registerTool(J.name,W,K)}let Q=D61();for(let J of Q){let W=J.arguments?.length?Object.fromEntries(J.arguments.map((K)=>{let U=K.required?JQ$.string():JQ$.string().optional();return[K.name,K.description?U.describe(K.description):U]})):void 0;X.registerPrompt(J.name,{title:J.title,description:J.description,...W?{argsSchema:W}:{}},(K)=>{return{messages:[{role:"user",content:{type:"text",text:typeof J.text==="function"?J.text(K??{}):J.text}}]}})}if($.organization?.id){let J=await $.storage.brandContext.list($.organization.id),W=new Set;for(let K of J){let U=K.name.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,""),H=U?`brand-${U}`:`brand-${K.id}`;if(W.has(H))H=`${H}-${K.id.slice(0,8)}`;W.add(H);let F=[`# Brand: ${K.name}`,"",`**Domain:** ${K.domain}`,"","## Overview",K.overview];if(K.colors){let O=Object.entries(K.colors).filter(([,B])=>B);if(O.length>0){F.push("","## Colors");for(let[B,L]of O)F.push(`- **${B}:** ${L}`)}}if(K.fonts){let O=Object.entries(K.fonts).filter(([,B])=>B);if(O.length>0){F.push("","## Fonts");for(let[B,L]of O)F.push(`- ${L} (${B})`)}}if(K.logo)F.push("",`**Logo:** ${K.logo}`);if(K.favicon)F.push(`**Favicon:** ${K.favicon}`);if(K.ogImage)F.push(`**OG Image:** ${K.ogImage}`);if(K.images&&K.images.length>0){F.push("","## Images");for(let O of K.images){let B=Object.entries(O).map(([L,w])=>`${L}: ${w}`).join(", ");F.push(`- ${B}`)}}let N=F.join(`
2222
+ `))>=0){let K=X.slice(0,W).trim();if(X=X.slice(W+1),!K)continue;yield JSON.parse(K)}}let Q=X.trim();if(Q)yield JSON.parse(Q)}finally{Z.releaseLock()}}var eG$,$X$,XX$="gateway.networking.k8s.io",QX$="v1",YX$="httproutes",w04,Ri,WX$="mesh-sandbox-runner";var kF1=D(()=>{ji();eG$=class eG$ extends Error{status;body;constructor($,Z,G){super(G);this.status=$;this.body=Z;this.name="KubeHttpError"}};$X$=`/apis/${_9.CLAIM_API_GROUP}/${_9.CLAIM_API_VERSION}/namespaces`;w04=`/apis/${XX$}/${QX$}/namespaces`;Ri={API_GROUP:XX$,API_VERSION:QX$,PLURAL:YX$}});var VF1=D(()=>{gZ();Z51()});async function CF1($){try{let Z=await fetch(`${$}/health`,{signal:AbortSignal.timeout(z04)});if(!Z.ok)return null;let G=await Z.json();if(typeof G==="object"&&G!==null&&typeof G.bootId==="string"&&typeof G.ready==="boolean"&&G.setup&&typeof G.setup.running==="boolean"&&typeof G.setup.done==="boolean")return G;return null}catch{return null}}async function NX$($){for(let Z=0;Z<UX$;Z++){if(await CF1($)!==null)return;let G=(Math.random()*2-1)*j04;await w6(HX$+G)}throw Error(`sandbox daemon at ${$} did not respond on /health within ${UX$*HX$/1000}s`)}async function Ii($,Z,G,X,Q){return P04($,Z,"POST",G,X,Q)}async function P04($,Z,G,X,Q,Y){let J={...X};if(Q&&Q.rotateToken!==void 0)J.auth=Q;let W=await fetch(`${$}/_sandbox/config`,{method:G,headers:{"Content-Type":"application/json",Authorization:`Bearer ${Z}`},body:JSON.stringify(J),signal:AbortSignal.timeout(Y?.timeoutMs??FX$)}),K=await W.text();if(!W.ok)throw new SF1(W.status,K);return JSON.parse(K)}async function OX$($,Z,G){let X=await fetch(`${$}/_sandbox/orgfs-config`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${Z}`},body:G,signal:AbortSignal.timeout(FX$)}),Q=await X.text();if(!X.ok)throw Error(`sandbox daemon /_sandbox/orgfs-config returned ${X.status}: ${Q}`);return JSON.parse(Q)}async function Ti($,Z,G,X){let Q=new Headers(X.headers);for(let W of A04)Q.delete(W);Q.set("authorization",`Bearer ${Z}`);let Y=X.method!=="GET"&&X.method!=="HEAD",J=`${$}${G.startsWith("/")?G:`/${G}`}`;return fetch(J,{method:X.method,headers:Q,body:Y?X.body:void 0,redirect:"manual",signal:X.signal,duplex:Y?"half":void 0})}var SF1,z04=500,FX$=30000,UX$=25,HX$=200,j04=50,A04;var BX$=D(()=>{VF1();SF1=class SF1 extends Error{status;constructor($,Z){super(`sandbox daemon /_sandbox/config returned ${$}: ${Z}`);this.status=$;this.name="ConfigRequestError"}};A04=["cookie","host","connection","keep-alive","proxy-authenticate","proxy-authorization","te","trailer","transfer-encoding","accept-encoding","content-length"]});async function*EX$($){let Z=$.now??(()=>Date.now()),G=Z(),X=$.schedulingTimeoutMs??T04,Q={pod:{},sandbox:{},events:{hasPulling:!1,hasPulled:!1},startedAt:G},Y=[],J=null,W=!1,K=(j)=>{if(W)return;if(J){let P=J;J=null,P(j)}else Y.push(j)},U=()=>{if(Y.length>0)return Promise.resolve(Y.shift());if(W)return Promise.resolve(null);return new Promise((j)=>{J=j})},H=()=>{if(W)return;if(W=!0,J){let j=J;J=null,j(null)}},F=new AbortController,N=()=>{F.abort(),H()};if($.signal)if($.signal.aborted)F.abort(),H();else $.signal.addEventListener("abort",N,{once:!0});let O=Math.max(0,X-(Z()-G)),B=setTimeout(()=>K("tick"),O+100),L,w=new Promise((j)=>{L=j}),z=Promise.allSettled([q04($.kc,$.namespace,$.claimName,F.signal,Q,K,Z,L),k04($.kc,$.namespace,$.claimName,F.signal,Q,K),V04($.kc,$.namespace,$.claimName,w,F.signal,Q,K,Z)]);try{let j=null,P=-1,R=DX$(Q,X,Z);if(j=Wm1(R),!Jm1(R))P=LX$(R);if(yield R,Jm1(R))return;while(!W){if(await U()===null)break;let M=DX$(Q,X,Z);if(Jm1(M)){let C=Wm1(M);if(C!==j)j=C,yield M;return}let S=LX$(M);if(S<P)continue;let k=Wm1(M);if(k!==j)j=k,P=S,yield M}}finally{if(clearTimeout(B),F.abort(),$.signal)$.signal.removeEventListener("abort",N);H(),await z.catch(()=>{})}}function DX$($,Z,G){let{pod:X,sandbox:Q,events:Y,startedAt:J}=$;if(Q.ready)return{kind:"ready"};let W=X.containerWaitingReason;if(W==="ImagePullBackOff"||W==="ErrImagePull")return{kind:"failed",reason:"image-pull-backoff",message:"Sandbox image failed to download. The cluster may be missing pull credentials or the image tag may not exist."};if(W==="CrashLoopBackOff")return{kind:"failed",reason:"crash-loop-backoff",message:"Sandbox crashed during startup and is now in CrashLoopBackOff. Check pod logs."};if(!X.scheduled&&Y.lastFailedSchedulingAt!==void 0&&G()-J>Z)return{kind:"failed",reason:"scheduling-timeout",message:Y.failedSchedulingMessage??`Pod could not be scheduled within ${Math.round(Z/1000)}s.`};if(X.containerRunning&&!X.containerReady)return{kind:"warming-daemon",since:J};if(Y.hasPulling&&!Y.hasPulled)return{kind:"pulling-image",since:J};if(W==="ContainerCreating"||W==="PodInitializing"||X.scheduled&&!X.containerRunning)return{kind:"starting-container",since:J};if(X.scheduledFalseReason==="Unschedulable"||Y.lastFailedSchedulingAt!==void 0&&!X.scheduled)return{kind:"waiting-for-capacity",since:J,message:Y.failedSchedulingMessage??X.scheduledFalseMessage,nodeClaim:Y.nominatedNodeClaim};return{kind:"claiming",since:J}}function Jm1($){return $.kind==="ready"||$.kind==="failed"}function LX$($){switch($.kind){case"claiming":return 0;case"waiting-for-capacity":return 1;case"pulling-image":return 2;case"starting-container":return 3;case"warming-daemon":return 4;case"ready":case"failed":return 99}}function Wm1($){switch($.kind){case"claiming":case"pulling-image":case"starting-container":case"warming-daemon":return $.kind;case"waiting-for-capacity":return`waiting-for-capacity:${$.message??""}:${$.nodeClaim??""}`;case"ready":return"ready";case"failed":return`failed:${$.reason}:${$.message}`}}async function q04($,Z,G,X,Q,Y,J,W){let K=`/api/v1/namespaces/${encodeURIComponent(Z)}/pods?watch=true&labelSelector=${encodeURIComponent(`${R04}=${G}`)}`;return _F1({kc:$,path:K,signal:X,label:`pod/${G}`,onEvent:(U)=>{if(U.type!=="ADDED"&&U.type!=="MODIFIED")return;let H=U.object;if(H.metadata?.name)W(H.metadata.name);M04(H,Q,J),Y("pod")}})}function M04($,Z,G){let Q=($.status?.conditions??[]).find((J)=>J.type==="PodScheduled");if(Q?.status==="True")Z.pod.scheduled=!0,Z.pod.scheduledFalseReason=void 0,Z.pod.scheduledFalseMessage=void 0;else if(Q?.status==="False")Z.pod.scheduled=!1,Z.pod.scheduledFalseReason=Q.reason,Z.pod.scheduledFalseMessage=Q.message;let Y=($.status?.containerStatuses??[]).find((J)=>J.name===I04);if(Y)Z.pod.containerWaitingReason=Y.state?.waiting?.reason,Z.pod.containerRunning=!!Y.state?.running,Z.pod.containerReady=Y.ready===!0}async function k04($,Z,G,X,Q,Y){let J=`/apis/${_9.CLAIM_API_GROUP}/${_9.CLAIM_API_VERSION}/namespaces/${encodeURIComponent(Z)}/${_9.CLAIM_PLURAL}?watch=true&fieldSelector=${encodeURIComponent(`metadata.name=${G}`)}`;return _F1({kc:$,path:J,signal:X,label:`sandboxclaim/${G}`,onEvent:(W)=>{if(W.type!=="ADDED"&&W.type!=="MODIFIED")return;let U=W.object.status?.conditions?.find((H)=>H.type==="Ready");if(!U)return;if(U.status==="True")Q.sandbox.ready=!0,Q.sandbox.notReadyReason=void 0,Q.sandbox.notReadyMessage=void 0;else Q.sandbox.ready=!1,Q.sandbox.notReadyReason=U.reason,Q.sandbox.notReadyMessage=U.message;Y("sandbox")}})}async function V04($,Z,G,X,Q,Y,J,W){let K=await Promise.race([X,new Promise((H)=>{if(Q.aborted){H(G);return}Q.addEventListener("abort",()=>H(G),{once:!0})})]);if(Q.aborted)return;let U=`/api/v1/namespaces/${encodeURIComponent(Z)}/events?watch=true&fieldSelector=${encodeURIComponent(`involvedObject.name=${K},involvedObject.kind=Pod`)}`;return _F1({kc:$,path:U,signal:Q,label:`events/${G}`,onEvent:(H)=>{if(H.type!=="ADDED"&&H.type!=="MODIFIED")return;let F=H.object,N=F.reason;if(!N)return;switch(N){case"Pulling":Y.events.hasPulling=!0;break;case"Pulled":Y.events.hasPulling=!0,Y.events.hasPulled=!0;break;case"FailedScheduling":Y.events.lastFailedSchedulingAt=W(),Y.events.failedSchedulingMessage=F.message;break;case"Nominated":{let O=F.message?.match(/nodeclaim\/([\w-]+)/);if(O)Y.events.nominatedNodeClaim=O[1];break}default:return}J("event")}})}async function wX$($){let{kc:Z,namespace:G,labelSelector:X,signal:Q,onDelete:Y}=$,J=`/apis/${_9.CLAIM_API_GROUP}/${_9.CLAIM_API_VERSION}/namespaces/${encodeURIComponent(G)}/${_9.CLAIM_PLURAL}?watch=true&labelSelector=${encodeURIComponent(X)}`;return _F1({kc:Z,path:J,signal:Q,label:"sandboxclaim-reaper",onEvent:(W)=>{if(W.type!=="DELETED")return;let K=W.object.metadata?.name;if(K)Y(K)}})}async function _F1($){let{kc:Z,path:G,signal:X,label:Q,onEvent:Y}=$,J=0;while(!X.aborted){try{let K=await xV(Z,{method:"GET",path:G,signal:X,headers:{accept:"application/json"},stream:!0});if(!K.ok||!K.body){try{await K.body?.cancel()}catch{}if(K.status===401||K.status===403){console.warn(`[lifecycle-watcher] ${Q} stopped: watch denied (${K.status} ${K.statusText}). `+"The kubeconfig in use cannot watch SandboxClaims \u2014 if you are running locally, "+"this provider should not be active (check STUDIO_SANDBOX_PROVIDER / your sandbox preference).");return}throw Error(`watch handshake failed: ${K.status} ${K.statusText}`)}J=0;for await(let U of Ym1(K.body)){if(X.aborted)return;try{Y(U)}catch(H){console.warn(`[lifecycle-watcher] ${Q} onEvent threw: ${H instanceof Error?H.message:String(H)}`)}}}catch(K){if(X.aborted)return;let U=K instanceof Error?K.message:String(K);console.warn(`[lifecycle-watcher] ${Q} watch ended: ${U}`)}if(X.aborted)return;let W=s9(5000,250,J,2,0);J+=1,await w6(W,{signal:X}).catch(()=>{})}}var R04="studio.decocms.com/sandbox-handle",I04="sandbox",T04=300000;var zX$=D(()=>{gZ();ji();kF1()});import{createHash as S04,randomBytes as C04,randomUUID as _04}from"crypto";import*as RX$ from"net";import{PassThrough as b04}from"stream";function v04($){if($ instanceof Error)return $.message;if($&&typeof $==="object"){let Z=$;if(Z.error instanceof Error)return Z.error.message;if(typeof Z.message==="string"&&Z.message)return Z.message}return String($)}class Om1{kind=SX;records=new Map;inflight=new s61;stateStore;previewUrlPattern;kubeConfig;portForward;namespace;sandboxTemplateName;envName;tokenGenerator;idleTtlMs;metrics;previewGateway;sentinelToken;closed=!1;claimWatchAbort=new AbortController;constructor($={}){this.stateStore=$.stateStore??null,this.previewUrlPattern=$.previewUrlPattern??null,this.kubeConfig=$.kubeConfig??m04(),this.portForward=new yd1(this.kubeConfig),this.namespace=$.namespace??x04,this.sandboxTemplateName=$.sandboxTemplateName??f04,this.envName=r04($.envName),this.tokenGenerator=$.tokenGenerator??(()=>C04(g04).toString("hex")),this.idleTtlMs=$.idleTtlMs??u04,this.metrics=$.meter?d04($.meter):null,this.previewGateway=$.previewGateway&&$.previewUrlPattern?{...$.previewGateway}:null;let Z=$.sentinelToken?.trim()??"";this.sentinelToken=Z.length>0?Z:null,this.startClaimReaper()}startClaimReaper(){let $=["app.kubernetes.io/managed-by=studio","app.kubernetes.io/name=studio-sandbox",...this.envName?[`${uY.env}=${this.envName}`]:[]].join(",");wX$({kc:this.kubeConfig,namespace:this.namespace,labelSelector:$,signal:this.claimWatchAbort.signal,onDelete:(Z)=>this.invalidateRecord(Z)})}async ensure($,Z={}){let G=HO($,Z.branch??Z.repo?.branch??null);return this.inflight.run(G,()=>e61(this.stateStore,$,SX,(X)=>this.ensureLocked($,G,Z,X)))}async delete($){let Z=await this.getRecord($);if(this.records.delete($),Z)this.closeForwarder(Z.daemonForward),this.metrics?.active.add(-1,Fm1(Z.tenant));if(await this.deleteHttpRouteIfManaged($).catch((G)=>{console.warn(`[${E7}] HTTPRoute delete failed for ${$}: ${G instanceof Error?G.message:String(G)}`)}),await RO(this.kubeConfig,this.namespace,$),this.stateStore)if(Z)await this.stateStore.delete(Z.id,SX);else await this.stateStore.deleteByHandle(SX,$)}async alive($){return await UH(this.kubeConfig,this.namespace,$)!==void 0}watchClaimLifecycle($,Z){return EX$({kc:this.kubeConfig,namespace:this.namespace,claimName:$,signal:Z})}async getPreviewUrl($){let Z=await this.getRecord($);if(!Z)return null;return this.composePreviewUrl(Z)}async proxyDaemonRequest($,Z,G){let X=await this.getRecord($);if(!X&&this.previewUrlPattern&&this.stateStore){let K=await this.stateStore.getByHandle(SX,$),U=K?.state,H=U?.token;if(K&&H){let N=`http://${U?.adoptedSandboxName??$}.${this.namespace}.svc.cluster.local:${IO}`;try{let O=await Ti(N,H,Z,G);if(O.status!==404)return O;try{await O.body?.cancel()}catch{}}catch{}}}if(!X)X=await this.resurrectByHandle($);if(!X)return new Response(JSON.stringify({error:"sandbox not found"}),{status:404,headers:{"content-type":"application/json"}});let Q=X,Y=performance.now(),J=0,W=!(G.body instanceof ReadableStream);try{let K=await Ti(X.daemonUrl,X.token,Z,G);if(K.status===401&&W){this.invalidateRecord($);let U=await this.getRecord($).catch(()=>null)??await this.resurrectByHandle($).catch(()=>null);if(U)Q=U,K=await Ti(U.daemonUrl,U.token,Z,G)}return J=K.status,K}catch(K){if(!W)throw K;this.invalidateRecord($);let U=await this.resurrectByHandle($)??await this.getRecord($).catch(()=>null);if(!U)throw K;Q=U;let H=await Ti(U.daemonUrl,U.token,Z,G);return J=H.status,H}finally{this.recordProxyDuration("daemon",J,Q,performance.now()-Y)}}async adoptLiveClaim($,Z){if(this.records.has(Z))return!0;let G=await UH(this.kubeConfig,this.namespace,Z).catch(()=>{return});if(!G||G.metadata?.deletionTimestamp)return!1;return await this.inflight.run(Z,async()=>{let Q=this.records.get(Z);if(Q)return this.toSandbox(Q);let Y=await this.adopt($,Z,G);if(!Y)throw Error(`cannot adopt live claim ${Z}`);return e61(this.stateStore,$,SX,(J)=>this.finish(Y,J,!0,!0,"adopt"))}).catch(()=>null)!=null}async resolvePreviewUpstreamUrl($){if(this.previewUrlPattern)return`http://${await this.resolveServiceNameForHandle($)}.${this.namespace}.svc.cluster.local:${IO}`;let Z=await this.getRecord($);if(Z)return Z.daemonUrl;let G=await this.resurrectByHandle($);return G?G.daemonUrl:null}async resolveServiceNameForHandle($){let Z=this.records.get($);if(Z)return Z.adoptedSandboxName;if(this.stateStore){let X=(await this.stateStore.getByHandle(SX,$).catch(()=>null))?.state?.adoptedSandboxName;if(X)return X}return $}async proxyPreviewRequest($,Z){let G=performance.now(),X=this.records.get($)??null,Q=0;try{let Y=await this.resolvePreviewUpstreamUrl($);if(!Y){Q=404;let B=Um1(404,{error:"sandbox not found"});return B.headers.set(yV,"1"),B}let J=new URL(Z.url);if((J.pathname==="/_sandbox"||J.pathname.startsWith("/_sandbox/")||J.pathname==="/_decopilot_vm"||J.pathname.startsWith("/_decopilot_vm/"))&&Z.method!=="GET")return Q=404,Um1(404,{error:"not found"});let K=(B)=>`${B}${J.pathname}${J.search}`,U=new Headers(Z.headers);for(let B of c04)U.delete(B);let H=Z.method!=="GET"&&Z.method!=="HEAD",F={method:Z.method,headers:U,body:H?Z.body:void 0,redirect:"manual",signal:Z.signal,duplex:H?"half":void 0},N;try{N=await fetch(K(Y),F)}catch(B){let L=`${Y}${J.pathname}`;if(console.warn(`[${E7}] preview fetch to ${L} failed: ${B instanceof Error?B.message:String(B)}`),Z.method==="GET"||Z.method==="HEAD"){if(this.invalidateRecord($),await this.resurrectByHandle($).catch(()=>null)){let j=await this.resolvePreviewUpstreamUrl($);if(j)try{N=await fetch(K(j),F);let P=new Headers;for(let[R,A]of N.headers.entries())if(!jX$.includes(R.toLowerCase()))P.set(R,A);return Q=N.status,new Response(N.body,{status:N.status,statusText:N.statusText,headers:P})}catch(P){console.warn(`[${E7}] preview fetch retry to ${L} failed: ${P instanceof Error?P.message:String(P)}`)}}}else this.invalidateRecord($);Q=502;let w=Um1(502,{error:"sandbox daemon unreachable"});return w.headers.set(yV,"1"),w}let O=new Headers;for(let[B,L]of N.headers.entries())if(!jX$.includes(B.toLowerCase()))O.set(B,L);return Q=N.status,new Response(N.body,{status:N.status,statusText:N.statusText,headers:O})}finally{this.recordProxyDuration("preview",Q,X,performance.now()-G,$)}}async ensureLocked($,Z,G,X){if(G.image)console.warn(`[${E7}] opts.image ignored (template ${this.sandboxTemplateName} pins image): got ${G.image}`);if(X){let J=await X.get($,SX);if(J){let W=await this.rehydrate($,Z,J);if(W)return this.finish(W,X,!1,!0,"resume");await X.delete($,SX)}}let Q=await UH(this.kubeConfig,this.namespace,Z).catch(()=>{return});if(Q)if(Q.metadata?.deletionTimestamp)await IF1(this.kubeConfig,this.namespace,Z).catch((J)=>{console.warn(`[${E7}] wait for terminating claim ${Z} failed: ${J instanceof Error?J.message:String(J)}`)});else{let J=await this.adopt($,Z,Q).catch((W)=>{return console.warn(`[${E7}] adopt ${Z} failed, recreating: ${W instanceof Error?W.message:String(W)}`),null});if(J)return this.finish(J,X,!0,!0,"adopt");await RO(this.kubeConfig,this.namespace,Z).catch(()=>{}),await IF1(this.kubeConfig,this.namespace,Z).catch((W)=>{console.warn(`[${E7}] wait for deleted claim ${Z} failed: ${W instanceof Error?W.message:String(W)}`)})}let Y=await this.provision($,Z,G);return this.finish(Y,X,!0,!1,"fresh")}async finish($,Z,G,X,Q){let Y=this.records.get($.handle),J=Y!==void 0;if(Y&&Y.daemonForward!==$.daemonForward)this.closeForwarder(Y.daemonForward);if(this.records.set($.handle,$),G)await this.persist(Z,$);if(X)await ZX$(this.kubeConfig,this.namespace,$.handle,this.computeShutdownTime()).catch((W)=>console.warn(`[${E7}] TTL refresh failed for ${$.handle}: ${W instanceof Error?W.message:String(W)}`));if(this.metrics){let W=Fm1($.tenant);if(this.metrics.ensureOutcome.add(1,{...W,outcome:Q}),!J)this.metrics.active.add(1,W)}return this.toSandbox($)}buildEnvMap($,Z){let G={},X=[];for(let[Q,Y]of Object.entries($.env??{}))if(h04.has(Q))X.push(Q);else G[Q]=Y;if(X.length>0)console.warn(`[${E7}] opts.env keys overlap reserved bootstrap names and were dropped: ${X.join(",")}`);return{...G,DAEMON_TOKEN:Z.token,DAEMON_BOOT_ID:Z.daemonBootId,APP_ROOT:Z.workdir,PROXY_PORT:String(IO)}}buildClaim($,Z,G){let X=this.sentinelToken!==null,Q=X?[]:Object.entries(this.buildEnvMap(Z,G)).sort(([W],[K])=>W<K?-1:W>K?1:0).map(([W,K])=>({name:W,value:K})),Y=e04(Z),J=Object.keys(Y).length>0;return{apiVersion:`${_9.CLAIM_API_GROUP}/${_9.CLAIM_API_VERSION}`,kind:"SandboxClaim",metadata:{name:$,namespace:this.namespace,labels:{"app.kubernetes.io/name":"studio-sandbox","app.kubernetes.io/managed-by":"studio",...this.envName?{[uY.env]:this.envName}:{},...Hm1(Z.tenant)},...J?{annotations:Y}:{}},spec:{sandboxTemplateRef:{name:this.sandboxTemplateName},additionalPodMetadata:{labels:Hm1(Z.tenant,{[uY.role]:"claimed",[uY.sandboxHandle]:$,...this.envName?{[uY.env]:this.envName}:{}}),...J?{annotations:Y}:{}},env:Q,warmpool:X?"default":"none",lifecycle:{shutdownPolicy:"Delete",shutdownTime:this.computeShutdownTime()}}}}async provision($,Z,G){let X=this.tokenGenerator(),Q=_04(),Y=Km1,J=this.buildClaim(Z,G,{token:X,daemonBootId:Q,workdir:Y});try{await Ai(this.kubeConfig,this.namespace,J)}catch(N){if(N instanceof zi)await IF1(this.kubeConfig,this.namespace,Z),await Ai(this.kubeConfig,this.namespace,J);else throw N}let W;try{W=await GX$(this.kubeConfig,this.namespace,Z),await MF1(this.kubeConfig,this.namespace,W)}catch(N){throw await RO(this.kubeConfig,this.namespace,Z).catch(()=>{}),N}try{await this.ensureServicePortForAdoptedSandbox(W),await this.ensureHttpRouteForHandle(Z,W,G.tenant??null)}catch(N){throw await RO(this.kubeConfig,this.namespace,Z).catch(()=>{}),N}let K=await this.openForwarder(W,IO,Z),U=`http://127.0.0.1:${K.localPort}`,H=this.workloadConfigPayload(G),F=Q;try{if(await NX$(U),this.sentinelToken!==null){let N=await CF1(U);if(N)F=N.bootId;await Ii(U,this.sentinelToken,H??{},{rotateToken:X})}else if(H)await Ii(U,X,H);if(G.orgFsConfigJson)await OX$(U,X,G.orgFsConfigJson).catch((N)=>console.warn("[org-fs] sidecar config relay failed",N))}catch(N){throw this.closeForwarder(K),await this.deleteHttpRouteIfManaged(Z).catch(()=>{}),await RO(this.kubeConfig,this.namespace,Z).catch(()=>{}),N}return{id:$,handle:Z,adoptedSandboxName:W,token:X,workdir:Y,daemonUrl:U,daemonForward:K,workload:G.workload??null,daemonBootId:F,tenant:G.tenant??null,ensureOpts:Z$4(G)}}workloadConfigPayload($){return Xl1({runtime:$?.workload?.runtime??"node",packageManager:$?.workload?.packageManager?{name:$.workload.packageManager,...$.workload.packageManagerPath?{path:$.workload.packageManagerPath}:{}}:null,repo:$?.repo??null,port:$?.workload?.devPort??y04,tenant:$?.tenant??void 0})}async rebootstrapDaemon($,Z,G){if(this.sentinelToken===null)return!1;let X=this.workloadConfigPayload(G)??{};try{return await Ii($,this.sentinelToken,X,{rotateToken:Z}),!0}catch(Q){if(Q instanceof SF1&&Q.status===401)try{return await Ii($,Z,X,{rotateToken:Z}),!0}catch(Y){return console.warn(`[${E7}] re-bootstrap retry with claim token failed: ${Y instanceof Error?Y.message:String(Y)}`),!1}return console.warn(`[${E7}] re-bootstrap failed: ${Q instanceof Error?Q.message:String(Q)}`),!1}}async ensureServicePortForAdoptedSandbox($){if(!this.previewGateway||!this.previewUrlPattern)return;await KX$(this.kubeConfig,this.namespace,$,{name:"daemon",port:IO,targetPort:IO})}async ensureHttpRouteForHandle($,Z,G){if(!this.previewGateway||!this.previewUrlPattern)return;let X=G$4(this.previewUrlPattern,$);if(!X)throw new o9(`Unable to derive preview hostname for ${$} from pattern: ${this.previewUrlPattern}`);let Q={apiVersion:`${Ri.API_GROUP}/${Ri.API_VERSION}`,kind:"HTTPRoute",metadata:{name:$,namespace:this.namespace,labels:Hm1(G??void 0,{[uY.role]:"claimed",[uY.sandboxHandle]:$,"app.kubernetes.io/name":"studio-sandbox","app.kubernetes.io/managed-by":"studio",...this.envName?{[uY.env]:this.envName}:{}})},spec:{parentRefs:[{kind:"Gateway",group:"gateway.networking.k8s.io",name:this.previewGateway.name,namespace:this.previewGateway.namespace}],hostnames:[X],rules:[{backendRefs:[{group:"",kind:"Service",name:Z,port:IO}]}]}};await TF1(this.kubeConfig,this.namespace,Q)}async deleteHttpRouteIfManaged($){if(!this.previewGateway)return;await qF1(this.kubeConfig,this.namespace,$)}async rehydrate($,Z,G){let X=G.state;if(!X.adoptedSandboxName&&!X.podName||!X.token)return null;let Q=await UH(this.kubeConfig,this.namespace,Z).catch(()=>{return});if(!Q||!PX$(Q))return null;let Y=Q.status?.sandbox?.name??X.adoptedSandboxName??X.podName??Z,J=await this.openAndProbeDaemon(Y,Z);if(!J)return null;if(X.daemonBootId&&X.daemonBootId!==J.bootId){if(this.sentinelToken!==null){if(!await this.rebootstrapDaemon(J.daemonUrl,X.token,X.ensureOpts??null))return this.closeForwarder(J.daemonForward),null}else console.warn(`[${E7}] daemon restart detected (handle=${Z}): stored bootId=${X.daemonBootId} live bootId=${J.bootId}`);await this.stateStore?.put($,SX,{handle:Z,state:{...X,daemonBootId:J.bootId}}).catch((W)=>console.warn(`[${E7}] bootId persist failed for ${Z}: ${W instanceof Error?W.message:String(W)}`))}return{id:$,handle:Z,adoptedSandboxName:Y,token:X.token,workdir:X.workdir??Km1,daemonUrl:J.daemonUrl,daemonForward:J.daemonForward,workload:X.workload??null,daemonBootId:J.bootId,tenant:X.tenant??null,ensureOpts:X.ensureOpts??null}}async adopt($,Z,G){if(!PX$(G))return null;let X=G.status?.sandbox?.name??Z;if(this.sentinelToken!==null)return null;let Q=i04(G);if(!Q)return null;let Y=await this.openAndProbeDaemon(X,Z);if(!Y)return null;let J=$$4(G);if(this.previewGateway)await this.ensureServicePortForAdoptedSandbox(X).catch((W)=>{console.warn(`[${E7}] Service port backfill failed for ${Z}: ${W instanceof Error?W.message:String(W)}`)}),await this.ensureHttpRouteForHandle(Z,X,J).catch((W)=>{console.warn(`[${E7}] HTTPRoute backfill failed for ${Z}: ${W instanceof Error?W.message:String(W)}`)});return{id:$,handle:Z,adoptedSandboxName:X,token:Q,workdir:Km1,daemonUrl:Y.daemonUrl,daemonForward:Y.daemonForward,workload:null,daemonBootId:Y.bootId,tenant:J,ensureOpts:null}}async openAndProbeDaemon($,Z){let G=await this.openForwarder($,IO,Z).catch(()=>null);if(!G)return null;let X=`http://127.0.0.1:${G.localPort}`,Q=await CF1(X);if(!Q)return this.closeForwarder(G),null;return{daemonForward:G,daemonUrl:X,bootId:Q.bootId}}async getRecord($){let Z=this.records.get($);if(Z)return Z;if(!this.stateStore)return null;let G=await this.stateStore.getByHandle(SX,$);if(!G)return null;let X=await this.rehydrate(G.id,$,G);if(X)this.records.set($,X);return X}async resurrectByHandle($){if(!this.stateStore)return null;let Z=await this.stateStore.getByHandle(SX,$);if(!Z)return null;let G=Z.state.ensureOpts;if(!G)return null;return await this.ensure(Z.id,G),this.records.get($)??null}invalidateRecord($){let Z=this.records.get($);if(!Z)return;this.records.delete($),this.closeForwarder(Z.daemonForward)}recordProxyDuration($,Z,G,X,Q){if(!this.metrics)return;this.metrics.proxyDurationMs.record(X,{...Fm1(G?.tenant??null),source:$,sandbox_handle:G?.handle??Q??"",status_code:Z||0})}composePreviewUrl($){if(this.previewUrlPattern)return $51(this.previewUrlPattern,$.handle);return`http://127.0.0.1:${$.daemonForward.localPort}/`}toSandbox($){return{handle:$.handle,workdir:$.workdir,previewUrl:this.composePreviewUrl($)}}async persist($,Z){if(!$)return;let G={adoptedSandboxName:Z.adoptedSandboxName,token:Z.token,workdir:Z.workdir,workload:Z.workload,daemonBootId:Z.daemonBootId,tenant:Z.tenant,...Z.ensureOpts?{ensureOpts:Z.ensureOpts}:{}};await $.put(Z.id,SX,{handle:Z.handle,state:G})}computeShutdownTime(){return new Date(Date.now()+this.idleTtlMs).toISOString()}openForwarder($,Z,G=$){let X=p04(G,Z);return new Promise((Q,Y)=>{let J=(W,K)=>{let U=RX$.createServer((H)=>this.handleForwardedConnection(H,$,Z,G));U.once("error",(H)=>{if(H.code==="EADDRINUSE"&&K<l04){try{U.close()}catch{}let F=Nm1+(W-Nm1+1)%IX$;J(F,K+1);return}Y(H)}),U.listen(W,"127.0.0.1",()=>{let H=U.address();if(!H||typeof H==="string"){U.close(),Y(Error("port-forward listener failed to bind"));return}Q({server:U,localPort:H.port})})};J(X,0)})}handleForwardedConnection($,Z,G,X){let Q=new b04,Y=null,J=!1,W=()=>{if(J)return;if(J=!0,Q.destroy(),Y)try{Y.close()}catch{}if(!$.destroyed)$.destroy()};$.pipe(Q),$.on("error",W),$.on("close",W),this.portForward.portForward(this.namespace,Z,[G],$,null,Q).then((K)=>{let U=typeof K==="function"?K():K;if(!U){W();return}if(Y=U,Y.on("close",W),Y.on("error",()=>{this.invalidateRecord(X),W()}),J)try{Y.close()}catch{}}).catch((K)=>{console.warn(`[${E7}] port-forward to ${Z}:${G} failed: ${v04(K)}`),this.invalidateRecord(X),W()})}closeForwarder($){$.server.close((Z)=>{if(Z)console.warn(`[${E7}] port-forward close on :${$.localPort} errored: ${Z instanceof Error?Z.message:String(Z)}`)})}close(){if(this.closed)return;this.closed=!0,this.claimWatchAbort.abort();for(let $ of this.records.values())this.closeForwarder($.daemonForward);this.records.clear()}}function d04($){return{active:$.createUpDownCounter("studio.sandbox.active",{description:"Active sandbox count, by runner kind and owning org. Cross-checks the cAdvisor-derived count from the cluster \u2014 divergence between the two indicates orphaned claims (mesh deleted but K8s didn't reap) or unattributed pods.",unit:"{sandbox}"}),ensureOutcome:$.createCounter("studio.sandbox.ensure.outcome",{description:"Outcome of each ensure() call: fresh provision, resume from state-store after restart, or adopt of a cluster-side claim mesh didn't know about. Cold-start ratio is the primary input for warm-pool sizing.",unit:"{call}"}),proxyDurationMs:$.createHistogram("studio.sandbox.proxy.duration_ms",{description:"Wall-clock latency of mesh-mediated requests to the sandbox daemon: tool exec proxies (source=daemon) and preview iframe traffic (source=preview).",unit:"ms"})}}function m04(){let $=new gx;return $.loadFromDefault(),$}function PX$($){return Boolean($.status?.conditions?.some((Z)=>Z.type==="Ready"&&Z.status==="True"))}function i04($){let Z=$.spec?.env;if(!Z)return null;for(let G of Z)if(G.name==="DAEMON_TOKEN"&&G.value)return G.value;return null}function p04($,Z){let G=S04("sha256").update(`${$}:${Z}`).digest();return Nm1+G.readUInt32BE(0)%IX$}function Um1($,Z){return new Response(JSON.stringify(Z),{status:$,headers:{"content-type":"application/json","access-control-allow-origin":"*"}})}function AX$($){let Z=$.slice(0,t04);return n04.test(Z)?Z:""}function r04($){if($===void 0)return null;let Z=$.trim();if(Z==="")return null;if(!o04.test(Z))throw Error(`AgentSandboxProvider: envName=${JSON.stringify(Z)} is not a valid DNS-label-safe environment name (lowercase alphanumeric or '-', starts with a letter, ends alphanumeric, \u226432 chars). Mesh sets this from STUDIO_ENV; check the studio chart's configMap.`);return Z}function Hm1($,Z={}){let G={...Z};if($){let X=AX$($.orgId),Q=AX$($.userId);if(X)G[uY.orgId]=X;if(Q)G[uY.userId]=Q}return G}function fV($){let Z="";for(let G of $){let X=G.codePointAt(0)??0;Z+=X<32||X===127?" ":G}return Z.slice(0,a04)}function s04($){try{let Z=new URL($);return Z.username="",Z.password="",Z.toString()}catch{return""}}function e04($){let Z={},G=$.tenant;if(G?.orgSlug)Z[J3.orgSlug]=fV(G.orgSlug);if(G?.orgName)Z[J3.orgName]=fV(G.orgName);if(G?.userEmail)Z[J3.userEmail]=fV(G.userEmail);if(G?.userName)Z[J3.userName]=fV(G.userName);let X=$.repo;if(X){if(X.displayName)Z[J3.gitRepo]=fV(X.displayName);let Q=s04(X.cloneUrl);if(Q)Z[J3.gitRepoUrl]=fV(Q);let Y=$.branch??X.branch;if(Y)Z[J3.gitBranch]=fV(Y)}return Z}function $$4($){let Z=$.metadata?.labels;if(!Z)return null;let G=Z[uY.orgId],X=Z[uY.userId];if(!G||!X)return null;let Q=$.metadata?.annotations??{};return{orgId:G,userId:X,orgSlug:Q[J3.orgSlug],orgName:Q[J3.orgName],userEmail:Q[J3.userEmail],userName:Q[J3.userName]}}function Fm1($){return{org_id:$?.orgId??"",user_id:$?.userId??"",runner_kind:SX}}function Z$4($){let Z={};if($.repo)Z.repo=$.repo;if($.workload)Z.workload=$.workload;if($.env&&Object.keys($.env).length>0)Z.env=$.env;if($.tenant)Z.tenant=$.tenant;return Object.keys(Z).length>0?Z:null}function G$4($,Z){try{return new URL($51($,Z)).hostname||null}catch{return null}}var SX="agent-sandbox",E7="AgentSandboxProvider",yV="x-sandbox-preview-not-ready",x04="agent-sandbox-system",f04="studio-sandbox",IO=9000,y04=3000,Km1="/app",g04=32,h04,u04=900000,c04,jX$,Nm1=40000,IX$=1e4,l04=256,uY,J3,n04,t04=63,o04,a04=253;var TX$=D(()=>{ed1();BX$();G51();kF1();ji();zX$();h04=new Set(["DAEMON_TOKEN","DAEMON_BOOT_ID","APP_ROOT","PROXY_PORT"]),c04=["cookie","host","connection","keep-alive","proxy-authenticate","proxy-authorization","te","trailer","transfer-encoding","accept-encoding","content-length","upgrade"],jX$=["connection","keep-alive","transfer-encoding","content-encoding","content-length"];uY={role:"studio.decocms.com/role",sandboxHandle:"studio.decocms.com/sandbox-handle",orgId:"studio.decocms.com/org-id",userId:"studio.decocms.com/user-id",env:"studio.decocms.com/env"},J3={orgSlug:"studio.decocms.com/org-slug",orgName:"studio.decocms.com/org-name",userEmail:"studio.decocms.com/user-email",userName:"studio.decocms.com/user-name",gitRepo:"studio.decocms.com/git-repo",gitRepoUrl:"studio.decocms.com/git-repo-url",gitBranch:"studio.decocms.com/git-branch"},n04=/^([A-Za-z0-9]([-A-Za-z0-9_.]*[A-Za-z0-9])?)?$/;o04=/^[a-z]([a-z0-9-]{0,30}[a-z0-9])?$/});var qX$={};p4(qX$,{waitForSandboxReady:()=>MF1,getSandboxClaim:()=>UH,getHttpRoute:()=>JX$,deleteSandboxClaim:()=>RO,deleteHttpRoute:()=>qF1,createSandboxClaim:()=>Ai,applyHttpRoute:()=>TF1,SandboxTimeoutError:()=>vV,SandboxError:()=>o9,PREVIEW_NOT_READY_HEADER:()=>yV,KubeConfig:()=>gx,K8S_CONSTANTS:()=>_9,HTTPROUTE_CONSTANTS:()=>Ri,AgentSandboxProvider:()=>Om1});var Bm1=D(()=>{ed1();ji();kF1();TX$()});class bF1{kind=TO;userSub;dispatch;stateStore;records=new Map;constructor($){if(!$.userSub)throw Error("DesktopSandboxProvider requires userSub");if(!$.dispatch)throw Error("DesktopSandboxProvider requires dispatch");this.userSub=$.userSub,this.dispatch=$.dispatch,this.stateStore=$.stateStore??null}async ensure($,Z={}){let G=Z.branch??Z.repo?.branch,X=HO($,G),Q=this.records.get(X);if(Q){if(await this.probeHealth(X))return this.toSandbox(Q);if(this.records.delete(X),this.stateStore)await this.stateStore.deleteByHandle(TO,X).catch(()=>{})}else if(this.stateStore){let N=(await this.stateStore.getByHandle(TO,X))?.state,O=N?.sandboxApiUrl;if(O){if(await this.probeHealth(X)){let B={handle:X,sandboxApiUrl:O,previewUrl:N?.previewUrl??O};return this.records.set(X,B),this.toSandbox(B)}await this.stateStore.deleteByHandle(TO,X).catch(()=>{})}}let Y=eU({userName:Z.tenant?.userName,userEmail:Z.tenant?.userEmail}),J=JSON.stringify({handle:X,repo:Z.repo,branch:G,...Z.workload?{workload:Z.workload}:{},...Y?{operator:Y}:{},...Z.offloadAllowedHosts?{offloadAllowedHosts:Z.offloadAllowedHosts}:{},...Z.offloadAllowSameHostDev!==void 0?{offloadAllowSameHostDev:Z.offloadAllowSameHostDev}:{},...Z.orgFsConfigJson?{orgFsConfigJson:Z.orgFsConfigJson}:{}}),W=await this.dispatchJson("POST","/api/sandboxes",J),K=JSON.parse(W);if(typeof K.sandboxApiUrl!=="string")throw Error("desktop ensure: daemon did not return a sandboxApiUrl string");let U=typeof K.previewUrl==="string"?K.previewUrl:K.sandboxApiUrl,H={handle:X,sandboxApiUrl:K.sandboxApiUrl,previewUrl:U};if(this.records.set(X,H),this.stateStore)await this.stateStore.put($,TO,{handle:X,state:{handle:X,sandboxApiUrl:K.sandboxApiUrl,previewUrl:U}});return this.toSandbox(H)}async proxyDaemonRequest($,Z,G){let X=Z.startsWith("/")?Z:`/${Z}`,Q=X.startsWith("/_sandbox/")?X.slice(9):X,Y=`/_sandbox/${encodeURIComponent($)}${Q}`,J=new Headers(G.headers);for(let z of["host","cookie","connection","keep-alive","transfer-encoding","upgrade","authorization"])J.delete(z);let W={};J.forEach((z,j)=>{W[j]=z});let K;if(G.body!=null)K=await Q$4(G.body);let H=this.dispatch(this.userSub,{method:G.method,path:Y,headers:W,body:K},{signal:G.signal})[Symbol.asyncIterator](),F=X$4(),N=200,O={"content-type":"application/octet-stream"},B=[];try{while(!0){let z=await H.next();if(z.done)break;let j=z.value;if(j.headers){N=j.headers.status,O=j.headers.headers;break}if(j.data!=null){let P=F.push(j.data);if(P.length)B.push(P)}}}catch(z){let j=z instanceof Error?z.message:"dispatch error";return new Response(JSON.stringify({error:j}),{status:502,headers:{"content-type":"application/json"}})}let L=!1,w=new ReadableStream({async start(z){for(let j of B)z.enqueue(j)},async pull(z){try{while(!0){let j=await H.next();if(L)return;if(j.done){let R=F.flush();if(R.length)z.enqueue(R);z.close();return}let P=j.value;if(P.data!=null){let R=F.push(P.data);if(R.length){z.enqueue(R);return}}}}catch(j){if(!L)z.error(j)}},cancel(){L=!0,H.return?.()}});return new Response(w,{status:N,headers:O})}async alive($){return this.probeHealth($)}async probeHealth($){let Z=new AbortController,G=setTimeout(()=>Z.abort(),3000);try{return await this.dispatchJson("GET",`/api/sandboxes/${encodeURIComponent($)}`,void 0,Z.signal),!0}catch{return!1}finally{clearTimeout(G)}}async forgetHandle($){if(this.records.delete($),this.stateStore)await this.stateStore.deleteByHandle(TO,$).catch(()=>{})}async delete($){if(this.records.delete($),this.stateStore)await this.stateStore.deleteByHandle(TO,$).catch(()=>{});try{await this.dispatchJson("DELETE",`/api/sandboxes/${encodeURIComponent($)}`)}catch(Z){if(!(Z instanceof Error?Z.message:String(Z)).includes("404"))throw Z}}async getPreviewUrl($){return(await this.resolveRecord($))?.previewUrl??null}async localWorkdir($){return null}async*watchClaimLifecycle($,Z){yield{kind:"ready"}}toSandbox($){return{handle:$.handle,workdir:$.sandboxApiUrl,previewUrl:$.previewUrl}}async resolveRecord($){let Z=this.records.get($);if(Z)return Z;if(!this.stateStore)return null;let X=(await this.stateStore.getByHandle(TO,$))?.state,Q=X?.sandboxApiUrl;if(!Q)return null;let Y={handle:$,sandboxApiUrl:Q,previewUrl:X?.previewUrl??Q};return this.records.set($,Y),Y}async dispatchJson($,Z,G,X){let Q={accept:"application/json"};if(G!==void 0)Q["content-type"]="application/json";let Y=this.dispatch(this.userSub,{method:$,path:Z,headers:Q,body:G},{signal:X}),J=null,W="";for await(let U of Y)if(U.headers)J=U.headers.status;else if(U.data!=null)W+=U.data;let K=Buffer.from(W,"base64").toString("utf8");if(J!=null&&(J<200||J>=300))throw Error(`daemon returned ${J}: ${K}`);return K}}function MX$($){return new bF1($)}function X$4(){let $="";return{push(Z){if(Z.length===0)return Dm1;$+=Z;let G=$.length-$.length%4;if(G===0)return Dm1;let X=$.slice(0,G);return $=$.slice(G),new Uint8Array(Buffer.from(X,"base64"))},flush(){if($.length===0)return Dm1;let Z=$;return $="",new Uint8Array(Buffer.from(Z,"base64"))}}}async function Q$4($){if(typeof $==="string")return $;if($ instanceof ArrayBuffer)return Buffer.from($).toString("utf8");if(ArrayBuffer.isView($))return Buffer.from($.buffer,$.byteOffset,$.byteLength).toString("utf8");if($ instanceof URLSearchParams)return $.toString();return await new Response($).text()}var TO="user-desktop",Dm1;var kX$=D(()=>{G51();Z51();Dm1=new Uint8Array(0)});var VX$={};p4(VX$,{createDesktopProvider:()=>MX$,DesktopSandboxProvider:()=>bF1});var SX$=D(()=>{kX$()});var fX$={};p4(fX$,{subscribeLifecycle:()=>qi,getSandboxProviderByKind:()=>Em1,getOrInitSharedRunner:()=>N$4,buildDesktopProvider:()=>vF1,__resetSharedLifecyclesForTesting:()=>E$4});function vX$($,Z){let G=CX$[$];if(G)return Promise.resolve(G);let X=Lm1[$];if(X)return X;let Q=Z().then((Y)=>{return CX$[$]=Y,Y}).finally(()=>{delete Lm1[$]});return Lm1[$]=Q,Q}function W$4(){let $=process.env.STUDIO_SANDBOX_PREVIEW_URL_PATTERN;return $&&$.trim()!==""?$:void 0}function K$4(){let $=process.env.STUDIO_SANDBOX_TEMPLATE_NAME;return $&&$.trim()!==""?$:void 0}function U$4(){let $=process.env.STUDIO_ENV;return $&&$.trim()!==""?$:void 0}function H$4(){let $=process.env.STUDIO_SANDBOX_SENTINEL_TOKEN;return $&&$.trim()!==""?$:void 0}function F$4(){let $=process.env.STUDIO_SANDBOX_PREVIEW_GATEWAY_NAME?.trim(),Z=process.env.STUDIO_SANDBOX_PREVIEW_GATEWAY_NAMESPACE?.trim();if(!$&&!Z)return;if(!$||!Z)throw Error("STUDIO_SANDBOX_PREVIEW_GATEWAY_NAME and STUDIO_SANDBOX_PREVIEW_GATEWAY_NAMESPACE must both be set, or both unset. Half-configured per-claim HTTPRoute routing would silently fail to attach.");return{name:$,namespace:Z}}async function xX$($,Z){let G=new NO(Z),X=W$4();switch($){case"agent-sandbox":{let{AgentSandboxProvider:Q}=await Promise.resolve().then(() => (Bm1(),qX$));return new Q({stateStore:G,previewUrlPattern:X,sandboxTemplateName:K$4(),envName:U$4(),previewGateway:F$4(),sentinelToken:H$4(),meter:z6})}case"user-desktop":throw Error("user-desktop provider cannot be instantiated without a per-run link claim \u2014 call resolveSandboxProvider, which binds the link before constructing the provider.");default:throw Error(`Unknown sandbox provider kind: ${String($)}`)}}async function vF1($,Z){let{DesktopSandboxProvider:G}=await Promise.resolve().then(() => (SX$(),VX$)),{getProxyDispatch:X}=await Promise.resolve().then(() => (zm1(),wm1)),Q=new NO($.db);if(!Z)throw Error("buildDesktopProvider: userSub must be a non-empty string");let Y=X();return new G({userSub:Z,dispatch:Y,stateStore:Q})}function Em1($,Z){return vX$(Z,()=>xX$(Z,$.db))}async function N$4(){let $;try{$=bW()}catch(G){return console.warn("[lifecycle] cannot resolve sandbox runner:",G instanceof Error?G.message:String(G)),null}return await vX$($,()=>xX$($,j6().db))}function qi($,Z,G){let X=qO.get(Z);if(X){if(X.terminated){if(X.lastPhase)try{G(X.lastPhase)}catch{}return{unsubscribe:D$4}}if(X.listeners.add(G),X.lastPhase)try{G(X.lastPhase)}catch{}return _X$(Z,X,G)}let Q=new AbortController,Y={lastPhase:null,terminated:!1,listeners:new Set([G]),abort:Q};return qO.set(Z,Y),L$4($,Z,Y),_X$(Z,Y,G)}function D$4(){}function _X$($,Z,G){return{unsubscribe(){if(qO.get($)!==Z)return;if(Z.listeners.delete(G),Z.listeners.size===0)qO.delete($),Z.abort.abort()}}}async function L$4($,Z,G){let X=null;try{for await(let Q of $.watchClaimLifecycle(Z,G.abort.signal)){if(G.abort.signal.aborted)break;G.lastPhase=Q;let Y=Q.kind==="ready"||Q.kind==="failed";if(Y)G.terminated=!0;let J=Array.from(G.listeners);for(let W of J)try{W(Q)}catch{}if(Y)break}}catch(Q){X=Q}finally{if(!G.terminated&&!G.abort.signal.aborted&&G.listeners.size>0){let Q={kind:"failed",reason:"unknown",message:X instanceof Error?X.message:"Lifecycle watcher ended unexpectedly"};G.lastPhase=Q,G.terminated=!0;for(let Y of Array.from(G.listeners))try{Y(Q)}catch{}}if(qO.get(Z)===G)qO.delete(Z)}}function E$4(){for(let $ of qO.values())$.abort.abort();qO.clear()}var Y$4,J$4,bX$,CX$,Lm1,O$4,B$4,qO;var Mi=D(()=>{TQ();LJ();x9();K51();Y$4=Symbol.for("decocms.sandbox.lifecycle.runners"),J$4=Symbol.for("decocms.sandbox.lifecycle.inflight"),bX$=globalThis,CX$=bX$[Y$4]??={},Lm1=bX$[J$4]??={};O$4=Symbol.for("decocms.sandbox.lifecycle.shared-lifecycles"),B$4=globalThis,qO=B$4[O$4]??=new Map});async function xF1($,Z){if(await Z.linkClaimRegistry.get($))return"user-desktop";return Z.resolveEnvKind()}async function W3($,Z){let{userId:G,branch:X,virtualMcpMetadata:Q,explicitKind:Y}=Z;if(Y)return{provider:await ki($,G,Y),kind:Y};if($.sandboxPreference==="agent-sandbox")return{provider:await ki($,G,"agent-sandbox"),kind:"agent-sandbox"};if($.sandboxPreference==="user-desktop"&&$.linkForCurrentRun)return{provider:await vF1($,G),kind:"user-desktop"};if($.sandboxPreference==="cluster-default"){let H=bW();return{provider:await ki($,G,H),kind:H}}let[J,...W]=w$4(Q,G,X);if(J){let H=W.length===0?J:await z$4($,G,J,W);return{provider:await ki($,G,H),kind:H}}let K=await yX$($,G);return{provider:await ki($,G,K),kind:K}}function w$4($,Z,G){let X=qQ($)[Z]?.[G];if(!X)return[];let Q=uK(X);return Object.keys(Q)}async function z$4($,Z,G,X){let Q=await yX$($,Z);if(Q===G||X.includes(Q))return Q;return G}async function yX$($,Z){if(!$.linkClaimRegistry)return bW();return xF1(Z,{linkClaimRegistry:$.linkClaimRegistry,resolveEnvKind:bW})}async function ki($,Z,G){if(G!=="user-desktop")return Em1($,G);if(!$.linkClaimRegistry)throw Error("user-desktop sandbox provider requires ctx.linkClaimRegistry to be wired (set on StudioContextConfig).");if(!await $.linkClaimRegistry.get(Z))throw Error(`No link daemon registered for user "${Z}". Start one with \`deco link\` (or run \`bun run dev --local-sandbox-provider\` for dev).`);return vF1($,Z)}var dx=D(()=>{S8();TQ();GH();Mi()});async function fF1($,Z){if(!$)return{hosts:[],allowSameHostDev:!1};let G;try{G=await $.presignedGetUrl("link-dispatch/_allowlist_probe",60,{requireFetchable:!0})}catch{return{hosts:[],allowSameHostDev:!1}}let X;try{X=new URL(G)}catch{return{hosts:[],allowSameHostDev:!1}}if(X.protocol!=="https:"&&X.protocol!=="http:")return{hosts:[],allowSameHostDev:!1};let Q=X.hostname,Y=j$4.has(Q);return{hosts:[Q],allowSameHostDev:Y&&!Z.isProduction}}var j$4;var jm1=D(()=>{j$4=new Set(["127.0.0.1","localhost","::1","[::1]","0.0.0.0"])});import{z as hW}from"zod";async function gX$($,Z){A1(Z);let G=N1(Z),X=B$(Z);if(!X)throw Error("User ID required");let Q=await Z.storage.virtualMcps.findById($.virtualMcpId);if(!Q||Q.organization_id!==G.id)throw Error("Virtual MCP not found");let Y=Q.metadata??{},J=ZH(qQ(Y),X,$.branch,$.sandboxProviderKind),W=$.sandboxProviderKind,{provider:K}=await W3(Z,{userId:X,branch:$.branch,virtualMcpMetadata:Y,explicitKind:W});if(J){if(W!=="user-desktop")return J;if(await K.alive(J.sandboxHandle).catch(()=>!1))return J;await FO(Z.storage.virtualMcps,$.virtualMcpId,X,X,$.branch,W).catch((N)=>{console.warn("[ensureSandbox] failed to reap stale user-desktop entry",N)})}let U=Y.githubRepo??null,{entry:H}=await hX$({ctx:Z,userId:X,orgId:G.id,virtualMcpId:$.virtualMcpId,branch:$.branch,metadata:Y,githubRepo:U,existing:null,providerKind:W,runner:K});return H}async function hX$($){let{ctx:Z,userId:G,orgId:X,virtualMcpId:Q,branch:Y,metadata:J,githubRepo:W,existing:K,runner:U}=$,{runtime:H,packageManager:F,port:N,packageManagerPath:O}=X51(J),B;if(W){if(W.connectionId)await qx({ctx:Z,connectionId:W.connectionId,organizationId:X,forceRefresh:!0,onLegacyMintError:(Q1)=>{console.error("[provisionSandbox] repo-scoped legacy token mint failed",{connectionId:W.connectionId,error:Q1.message})}});let{cloneUrl:Z1,gitUserName:d,gitUserEmail:n}=W.connectionId?await Mx(W.connectionId,W.owner,W.name,Z.db,Z.vault):Y51(W.owner,W.name);if(!F){let Q1=W.connectionId?await z4$(W.connectionId,W.owner,W.name,Z.db,Z.vault):await j4$(W.owner,W.name);if(Q1)F=Q1.packageManager,H=em[Q1.packageManager].runtime,N=Q1.devPort??N,await A$4(Z,Q,G,Q1.packageManager,Q1.devPort)}B={cloneUrl:Z1,userName:d,userEmail:n,branch:Y,displayName:`${W.owner}/${W.name}`}}let L=H&&F?{runtime:H,packageManager:F,...N!==null?{devPort:Number(N)}:{},...O?{packageManagerPath:O}:{}}:void 0,w=$H({orgId:X,virtualMcpId:Q,branch:Y}),z=U.kind==="user-desktop"?await fF1(Z.objectStorage,{isProduction:b0().nodeEnv==="production"}):null,j=(U.kind==="user-desktop"||U.kind==="agent-sandbox")&&!b0().orgFsMountsDisabled,P;if(j){let Z1=Z.organization?.slug??(await Z.db.selectFrom("organization").select(["slug"]).where("id","=",X).executeTakeFirst())?.slug;if(Z1)P=await q41(Z,{orgSlug:Z1,orgId:X,baseUrl:T3()})}let R=await U.ensure({userId:G,projectRef:w},{branch:Y,repo:B,workload:L,tenant:{orgId:X,userId:G,...Z.organization?.slug?{orgSlug:Z.organization.slug}:{},...Z.organization?.name?{orgName:Z.organization.name}:{},...Z.auth.user?.email?{userEmail:Z.auth.user.email}:{},...Z.auth.user?.name?{userName:Z.auth.user.name}:{}},...z?{offloadAllowedHosts:z.hosts,offloadAllowSameHostDev:z.allowSameHostDev}:{},...P?{orgFsConfigJson:P}:{}}),A=J.runtime?.env??null;await Q51({ctx:Z,runner:U,handle:R.handle,orgId:X,userId:G,entries:A});let S=!!K&&K.sandboxHandle===R.handle&&K?.createdAt?K.createdAt:Date.now(),k=J.runtime?.selected??null,C=J.runtime?.port??null,u=J.runtime?.path??null,f={sandboxHandle:R.handle,previewUrl:R.previewUrl,sandboxApiUrl:R.previewUrl,sandboxProviderKind:U.kind,createdAt:S,startedWith:{packageManager:k,port:C,path:u}};await B4$(Z.storage.virtualMcps,Q,G,G,Y,$.providerKind,f);let y=!K||K.sandboxHandle!==R.handle;return{entry:f,isNewVm:y}}async function A$4($,Z,G,X,Q){let Y=await $.storage.virtualMcps.findById(Z);if(!Y)return;let J=Y.metadata??{};await $.storage.virtualMcps.update(Z,G,{metadata:{...J,runtime:{selected:X,port:Q}}})}var P$4,Pm1;var Am1=D(()=>{TQ();t1();$i();Jl1();GH();J51();A4$();Nh1();Yl1();dx();jm1();$6();dX();M41();GH();P$4=hW.enum(["agent-sandbox","user-desktop","cluster"]),Pm1=$1({name:"SANDBOX_START",description:"Start a sandbox with the connected GitHub repo and dev server.",annotations:{title:"Start VM Preview",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!1,openWorldHint:!0},_meta:{ui:{visibility:"app"}},inputSchema:hW.object({virtualMcpId:hW.string().describe("Virtual MCP ID"),branch:hW.string().min(1).optional().describe("Optional git branch to check out. When omitted the handler generates a Bayer-style `<greek-letter>-<constellation>` name (e.g. `alpha-centauri`) and uses it. The resolved branch is returned in the response so callers can persist it."),sandboxProviderKind:P$4.optional().describe("Explicit runtime choice. Hosted provider is `agent-sandbox`; legacy `cluster` input is accepted only for compatibility and normalized to `agent-sandbox`. When omitted, defaults to `user-desktop` if the acting user's link daemon is online, else the env kind.")}),outputSchema:hW.object({previewUrl:hW.string().nullable(),sandboxHandle:hW.string(),branch:hW.string(),isNewVm:hW.boolean(),sandboxProviderKind:hW.enum(["agent-sandbox","user-desktop"])}),handler:async($,Z)=>{A1(Z);let G=N1(Z);await Z.access.check();let X=$.branch??y41(),Q=B$(Z);if(!Q)throw Error("User ID required");let Y=await Z.storage.virtualMcps.findById($.virtualMcpId);if(!Y||Y.organization_id!==G.id)throw Error("Virtual MCP not found");let J=Y.metadata??{},W=$.sandboxProviderKind?sU($.sandboxProviderKind):void 0,{provider:K,kind:U}=await W3(Z,{userId:Q,branch:X,virtualMcpMetadata:J,explicitKind:W}),H=ZH(qQ(J),Q,X,U),F=J.githubRepo??null,{entry:N,isNewVm:O}=await hX$({ctx:Z,userId:Q,orgId:G.id,virtualMcpId:$.virtualMcpId,branch:X,metadata:J,githubRepo:F,existing:H,providerKind:U,runner:K});return{...N,branch:X,isNewVm:O,sandboxProviderKind:U}}})});import{z as mx}from"zod";var R$4,Rm1;var uX$=D(()=>{TQ();t1();$i();GH();dx();R$4=mx.enum(["agent-sandbox","user-desktop","cluster"]),Rm1=$1({name:"SANDBOX_DELETE",description:"Delete a sandbox.",annotations:{title:"Delete VM Preview",readOnlyHint:!1,destructiveHint:!0,idempotentHint:!0,openWorldHint:!0},_meta:{ui:{visibility:"app"}},inputSchema:mx.object({virtualMcpId:mx.string().describe("Virtual MCP ID that owns this VM"),branch:mx.string().min(1).describe("Branch whose vm should be deleted (sandboxMap[userId][branch])"),sandboxProviderKind:R$4.describe("Kind of sandbox provider the VM was started with. Hosted provider is `agent-sandbox`; legacy `cluster` input is accepted only for compatibility and normalized to `agent-sandbox`. Used to locate the correct 3-level sandboxMap entry.")}),outputSchema:mx.object({success:mx.boolean()}),handler:async($,Z)=>{let G=sU($.sandboxProviderKind),X;try{X=await L4$({...$,sandboxProviderKind:G},Z)}catch(W){if(W instanceof Error&&W.message==="Virtual MCP not found")return{success:!0};throw W}let{entry:Q,userId:Y}=X;if(!Q)return{success:!0};let{provider:J}=await W3(Z,{userId:Y,branch:$.branch,virtualMcpMetadata:X.metadata,explicitKind:G});return await FO(Z.storage.virtualMcps,$.virtualMcpId,Y,Y,$.branch,G),await J.delete(Q.sandboxHandle).catch((W)=>console.error(`[SANDBOX_DELETE] ${G} ${Q.sandboxHandle}: ${W instanceof Error?W.message:String(W)}`)),{success:!0}}})});var cX$=D(()=>{Am1();uX$()});import{z as uW}from"zod";var T$4="https://api.github.com",Im1;var lX$=D(()=>{t1();fL();pv();jW();Im1=$1({name:"GITHUB_LIST_USER_ORGS",description:"List GitHub App installations (orgs/accounts) accessible to the authenticated user.",annotations:{title:"List GitHub User Orgs",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},_meta:{ui:{visibility:"app"}},inputSchema:uW.object({connectionId:uW.string().describe("ID of the mcp-github connection to use")}),outputSchema:uW.object({installations:uW.array(uW.object({installationId:uW.number(),login:uW.string(),avatarUrl:uW.string(),type:uW.string()})),appSlug:uW.string().optional()}),handler:async($,Z)=>{await Z.access.check();let G=Z.organization?.id;if(!G)throw Error("Organization context required");let X=await Z.storage.connections.findById($.connectionId,G);if(!X)throw Error("Connection not found");if(PW(X))throw Error("Repo-scoped connections cannot list installations \u2014 use an org-level mcp-github connection");let Q=new V9(Z.db,Z.vault),Y=await Q.get($.connectionId);if(!Y)throw Error("No GitHub token found. Ensure the mcp-github connection is authenticated.");let J=Y.accessToken;if(j41(Y)&&Q.isExpired(Y,Qm)){let N=await P41(Y,Q);if(!N)throw Error(n7);J=N,Y=await Q.get($.connectionId)??Y}let W=[],K,U=1,H=100,F=async(N)=>fetch(`${T$4}/user/installations?per_page=${H}&page=${U}`,{headers:{Authorization:`Bearer ${N}`,Accept:"application/vnd.github+json","X-GitHub-Api-Version":"2022-11-28"}});while(!0){let N=await F(J);if(N.status===401){let B=await Q.get($.connectionId);if(!B||!j41(B))throw Error(n7);let L=await P41(B,Q);if(!L)throw Error(n7);if(J=L,N=await F(J),N.status===401)throw Error(n7)}if(!N.ok)throw Error(`GitHub /user/installations failed: ${N.status}`);let O=await N.json();for(let B of O.installations){if(!K)K=B.app_slug??B.app?.slug;W.push({installationId:B.id,login:B.account.login,avatarUrl:B.account.avatar_url,type:B.account.type})}if(O.installations.length<H)break;U++}return{installations:W,...K?{appSlug:K}:{}}}})});var dX$=D(()=>{lX$()});import{z as R0}from"zod";var Tm1,mX$,iX$,M$4,Vi,k$4,Si,V$4,S$4,C$4,qe5;var yF1=D(()=>{Tm1=R0.enum(["claude-code","codex","decopilot-sandbox","body-offload"]),mX$=R0.array(R0.string()).catch([]).transform(($)=>$.filter((Z)=>Tm1.safeParse(Z).success)),iX$=R0.discriminatedUnion("type",[R0.object({type:R0.literal("ui-message-chunk"),chunk:R0.unknown()}),R0.object({type:R0.literal("error"),code:R0.string(),message:R0.string()}),R0.object({type:R0.literal("done")})]),M$4=R0.record(R0.string(),R0.unknown()),Vi=R0.object({id:R0.string(),title:R0.string().optional(),provider:R0.string().nullable().optional(),credentialId:R0.string(),limits:R0.object({contextWindow:R0.number().int().positive().optional(),maxOutputTokens:R0.number().int().positive().optional()}).optional(),capabilities:R0.object({vision:R0.boolean().optional(),text:R0.boolean().optional(),reasoning:R0.boolean().optional()}).optional()}).strict(),k$4=R0.object({thinking:Vi.extend({title:R0.string()}),fast:Vi.optional(),smart:Vi.optional(),image:Vi.optional(),deepResearch:Vi.optional()}).strict(),Si=R0.object({kind:R0.literal("secret"),providerId:R0.string(),apiKey:R0.string(),modelId:R0.string(),baseUrl:R0.string().optional(),extraHeaders:R0.record(R0.string(),R0.string()).optional()}),V$4=R0.object({thinking:Si,fast:Si.optional(),smart:Si.optional(),image:Si.optional(),deepResearch:Si.optional()}).strict(),S$4=R0.object({kind:R0.literal("http"),url:R0.string().url(),headers:R0.record(R0.string(),R0.string()),expiresAt:R0.number().int().positive()}),C$4=R0.object({kind:R0.literal("http"),baseUrl:R0.string().url(),headers:R0.record(R0.string(),R0.string()),expiresAt:R0.number().int().positive()}),qe5=R0.object({harnessId:R0.enum(["decopilot","claude-code","codex"]).optional(),threadId:R0.string(),runId:R0.string(),taskId:R0.string(),resumeSessionRef:R0.string().optional(),messages:R0.array(M$4),workspace:R0.object({cwd:R0.string().min(1)}).strict(),models:k$4,modelSources:V$4.optional(),mcpSource:S$4.optional(),objectStorageSource:C$4.optional(),mcp:R0.object({url:R0.string().url(),headers:R0.record(R0.string(),R0.string()),expiresAt:R0.number().int().positive()}).strict(),mode:R0.enum(["default","plan","web-search","gen-image"]),temperature:R0.number(),toolApprovalLevel:R0.enum(["auto","readonly"]),toolAllowlist:R0.array(R0.string()).nullable().optional(),maxAgentSteps:R0.number().int().optional(),user:R0.object({id:R0.string(),email:R0.string()}),organizationId:R0.string(),organizationSlug:R0.string().optional(),virtualMcp:R0.record(R0.string(),R0.unknown()),agent:R0.object({id:R0.string()}),branch:R0.string().nullable().optional(),triggerId:R0.string().optional(),currentThreadTitle:R0.string().optional(),traceparent:R0.string().optional(),runFenceToken:R0.string().optional()}).strip()});import{z as pX$}from"zod";var nX$;var qm1=D(()=>{yF1();nX$=pX$.object({seq:pX$.number().int().positive(),event:iX$})});function rX$($){return $>=2}var tX$=2,oX$="x-link-protocol";var aX$=()=>{};var sX$=D(()=>{aX$();qm1();yF1()});var eX$=D(()=>{sX$()});import gV from"zod";var Mm1;var $Q$=D(()=>{eX$();t1();Mm1=$1({name:"LINK_CURRENT_GET",description:"Return the calling user's currently registered desktop link, or `online: false` if no link is registered or the TTL has expired.",inputSchema:gV.object({}),outputSchema:gV.object({online:gV.boolean(),machineId:gV.string().optional(),hostname:gV.string().optional(),cliVersion:gV.string().optional(),capabilities:gV.array(Tm1).default([])}),handler:async($,Z)=>{A1(Z),await Z.access.check();let G=Z.linkClaimRegistry;if(!G)return{online:!1,capabilities:[]};let X=await G.get(Z.auth.user.id);if(!X)return{online:!1,capabilities:[]};return{online:!0,machineId:X.machineId,hostname:X.hostname,cliVersion:X.cliVersion,capabilities:X.capabilities}}})});import km1 from"zod";var Vm1;var ZQ$=D(()=>{t1();Vm1=$1({name:"LINK_DISCONNECT",description:"Disconnect the calling user's desktop link from the Studio side: tells the linked daemon to shut down (via a `shutdown` control frame) and removes the presence claim. The user re-links by running `bunx decocms@latest link` on the desktop.",inputSchema:km1.object({}),outputSchema:km1.object({disconnected:km1.boolean()}),handler:async($,Z)=>{A1(Z),await Z.access.check();let G=Z.auth.user.id,X=Z.linkClaimRegistry;if(!(X?await X.get(G):null))return{disconnected:!1};return Z.publishLinkControlFrame?.(G,{type:"shutdown"}),await X.delete(G),{disconnected:!0}}})});var GQ$=D(()=>{$Q$();ZQ$()});import{z as r9}from"zod";function XQ$($){if(!$)return"";return typeof $==="string"?$:$.toISOString()}var v$4,x$4,f$4,y$4,g$4,Sm1;var QQ$=D(()=>{t1();v$4=["thread"],x$4=r9.object({type:r9.literal("thread"),id:r9.string(),title:r9.string(),created_at:r9.string(),updated_at:r9.string(),virtual_mcp_id:r9.string().nullable(),run_config:r9.record(r9.string(),r9.unknown()).nullable(),status:r9.string().nullable()}),f$4=r9.discriminatedUnion("type",[x$4]),y$4=r9.object({query:r9.string().min(1).describe("Free-text search query."),limit:r9.number().int().min(1).max(50).optional().describe("Maximum results per resource type (default: 20)."),types:r9.array(r9.enum(v$4)).optional().describe("Restrict the search to specific resource types. Omit to search across all available types.")}),g$4=r9.object({items:r9.array(f$4),totalCount:r9.number()});Sm1=$1({name:"GLOBAL_SEARCH",description:"Search across organization resources by free-text query. Returns a typed union of matches (currently: threads). New resource types may be added over time without changes to the call shape.",annotations:{title:"Global Search",readOnlyHint:!0,destructiveHint:!1,idempotentHint:!0,openWorldHint:!1},inputSchema:y$4,outputSchema:g$4,handler:async($,Z)=>{await Z.access.check(),N1(Z);let G=$.limit??20,X=$.types?.length?new Set($.types):null,Q=!X||X.has("thread"),Y=[],J=0;if(Q){let{threads:W,total:K}=await Z.storage.threads.list(void 0,{limit:G,offset:0,search:$.query,includeArchived:!1});J+=K;for(let U of W)Y.push({type:"thread",id:U.id,title:U.title??"",created_at:XQ$(U.created_at),updated_at:XQ$(U.updated_at),virtual_mcp_id:U.virtual_mcp_id??null,run_config:U.run_config??null,status:U.status??null})}return{items:Y,totalCount:J}}})});var YQ$=D(()=>{QQ$()});var V41={};p4(V41,{managementMCP:()=>Yx,managementContextStore:()=>pL,listManagementTools:()=>c$4,getFilteredTools:()=>hF1,CORE_TOOLS:()=>WQ$,ALL_TOOLS:()=>gF1});import{z as JQ$}from"zod";async function KQ$($){if(Cm1.length===0||!$.organization)return null;let Z=await $.storage.organizationSettings.get($.organization.id),G=await $.storage.virtualMcps.listEnabledPlugins($.organization.id),X=new Set(Z?.enabled_plugins??[]);for(let Q of G)X.add(Q);return X.size>0?[...X]:null}async function hF1($){if(Cm1.length===0)return u$4;let Z=await KQ$($);return new Map($C1(gF1,Z).map((G)=>[G.name,G]))}async function c$4($){let Z=await Yx($),[G,X]=bu.createLinkedPair();await Z.connect(X);let Q=new Y9({name:"tools-hydration",version:"1.0.0"},{jsonSchemaValidator:b5});try{return await Q.connect(G),(await Q.listTools()).tools}finally{await Q.close().catch(()=>{}),await Z.close().catch(()=>{})}}var WQ$,Cm1,gF1,u$4,Yx=async($)=>{let Z=await KQ$($),G=$C1(gF1,Z),X=new cK({name:"mcp-cms-management",version:"1.0.0"},{capabilities:{tools:{},prompts:{},resources:{}},jsonSchemaValidator:b5});for(let J of G){let{config:W,handler:K}=L61(J);X.registerTool(J.name,W,K)}let Q=D61();for(let J of Q){let W=J.arguments?.length?Object.fromEntries(J.arguments.map((K)=>{let U=K.required?JQ$.string():JQ$.string().optional();return[K.name,K.description?U.describe(K.description):U]})):void 0;X.registerPrompt(J.name,{title:J.title,description:J.description,...W?{argsSchema:W}:{}},(K)=>{return{messages:[{role:"user",content:{type:"text",text:typeof J.text==="function"?J.text(K??{}):J.text}}]}})}if($.organization?.id){let J=await $.storage.brandContext.list($.organization.id),W=new Set;for(let K of J){let U=K.name.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,""),H=U?`brand-${U}`:`brand-${K.id}`;if(W.has(H))H=`${H}-${K.id.slice(0,8)}`;W.add(H);let F=[`# Brand: ${K.name}`,"",`**Domain:** ${K.domain}`,"","## Overview",K.overview];if(K.colors){let O=Object.entries(K.colors).filter(([,B])=>B);if(O.length>0){F.push("","## Colors");for(let[B,L]of O)F.push(`- **${B}:** ${L}`)}}if(K.fonts){let O=Object.entries(K.fonts).filter(([,B])=>B);if(O.length>0){F.push("","## Fonts");for(let[B,L]of O)F.push(`- ${L} (${B})`)}}if(K.logo)F.push("",`**Logo:** ${K.logo}`);if(K.favicon)F.push(`**Favicon:** ${K.favicon}`);if(K.ogImage)F.push(`**OG Image:** ${K.ogImage}`);if(K.images&&K.images.length>0){F.push("","## Images");for(let O of K.images){let B=Object.entries(O).map(([L,w])=>`${L}: ${w}`).join(", ");F.push(`- ${B}`)}}let N=F.join(`
2223
2223
  `);X.prompt(H,`Brand context for ${K.name}`,()=>({messages:[{role:"user",content:{type:"text",text:N}}]}))}}let Y=pa0();for(let J of Y)X.resource(J.name,J.uri,{description:J.description,mimeType:J.mimeType??"text/markdown"},async(W)=>{return{contents:[{uri:typeof W==="string"?W:W.href,mimeType:J.mimeType??"text/markdown",text:J.text}]}});return X};var gL=D(()=>{V11();OJ();Uh();EG();oC0();vt0();gt0();tt0();Wo0();No0();vo0();uo0();Gr0();gr0();ur0();Ua0();Na0();Pa0();Ra0();Vu1();E61();E61();ws0();U4$();cX$();dX$();GQ$();YQ$();WQ$=[yg1,gg1,hg1,ug1,cg1,lg1,dg1,mg1,ig1,pg1,ng1,tg1,rg1,ag1,sg1,eg1,$h1,Zh1,Gh1,Xh1,Qh1,Yh1,Jh1,i_1,Jg1,Wg1,Ug1,Hg1,Fg1,jg1,Ag1,Ig1,qg1,kg1,yt0,bg1,vg1,xg1,fg1,ZC1,XC1,QC1,GC1,Ng1,Og1,Bg1,Dg1,Lg1,Eg1,wg1,$u1,Oh1,Bh1,Dh1,Eh1,wh1,zh1,Wh1,Kh1,Uh1,Hh1,Fh1,jh1,Ph1,Ah1,nh1,th1,oh1,rh1,ah1,sh1,eh1,Vg1,Sg1,Cg1,_g1,Zu1,Qu1,Yu1,Ju1,Wu1,Ku1,Uu1,Hu1,Fu1,Nu1,Ou1,Bu1,Du1,Eu1,wu1,zu1,Pu1,Au1,Ru1,ku1,Aa0,Su1,Cu1,_u1,bu1,vu1,xu1,...K4$,Pm1,Rm1,Im1,Mm1,Vm1,Sm1],Cm1=SC0(),gF1=[...WQ$,...Cm1],u$4=new Map(gF1.map(($)=>[$.name,$]))});import{z as UQ$}from"zod";function l$4($){return[{permissions:{self:["*"]},getTools:async()=>{let{ALL_TOOLS:Z}=await Promise.resolve().then(() => (gL(),V41));return Z.map((G)=>{return{name:G.name,inputSchema:UQ$.toJSONSchema(G.inputSchema,{unrepresentable:"any"}),outputSchema:G.outputSchema?UQ$.toJSONSchema(G.outputSchema,{unrepresentable:"any"}):void 0,description:G.description}})},data:Xq1(V7(),$)},{data:Gq1()},{data:Zq1($)}]}async function HQ$($,Z){try{let G=j6(),X=b0(),Q=new $D(X.encryptionKey),Y=new lh(G.db,Q),J=l$4($);await Promise.all(J.map(async(W)=>{let K=null;if(W.permissions)K=(await u6.api.createApiKey({body:{name:`${W.data.app_name??crypto.randomUUID()}-mcp`,userId:Z,permissions:W.permissions,rateLimitEnabled:!1,metadata:{organization:{id:$},purpose:"default-org-connections"}}}))?.key;let U=await _F({id:"pending",title:W.data.title,connection_type:W.data.connection_type,connection_url:W.data.connection_url,connection_token:W.data.connection_token??K,connection_headers:W.data.connection_headers}).catch(()=>null),H=await W.getTools?.()??U?.tools??null,F=U?.scopes?.length?U.scopes:null,N=W.data.id?W.data.id.startsWith(`${$}_`)?W.data.id:`${$}_${W.data.id}`:void 0;await Y.create({...W.data,id:N,tools:H,configuration_scopes:F,organization_id:$,created_by:Z,connection_token:W.data.connection_token??K})}));try{await ok1({orgId:$,createdBy:Z})}catch(W){console.error("Failed to enqueue studio pack install:",W)}if(X.aiGatewayEnabled&&X.studioProvisionSecretKey&&hh.provisionKey)try{let W=await bF(Z),K=await hh.provisionKey(W,$);await new ch(G.db,Q).upsert({providerId:"deco",label:"Auto-provisioned",apiKey:K,organizationId:$,createdBy:Z})}catch(W){console.error("Failed to auto-provision Deco AI Gateway key:",W)}}catch(G){console.error("Error creating default MCP connections:",G)}}var FQ$=D(()=>{S8();Lk1();dX();LJ();Be();zk1();Ik1();oh();$6();dU();Te();YD()});async function NQ$($,Z){let G=GJ();if(!G)return Z;let X=await j6().db.selectFrom("organization").select("slug").where("id","=",$).executeTakeFirst();if(!X?.slug)return Z;return await L41({objectStorage:MK(G,$),baseUrl:V7(),orgSlug:X.slug,prefix:"org-logos"})(Z)??Z}var OQ$=D(()=>{LJ();DC();hy1();dX()});function d$4($,Z){let G=$.email.split("@")[1]?.toLowerCase()??null;return{distinctId:$.id,properties:{$set:{email:$.email,name:$.name,email_verified:$.emailVerified},$set_once:{first_seen_at:Z.toISOString(),signup_email_domain:G}}}}function _m1($){E$.identify(d$4($,new Date))}var BQ$=D(()=>{F5()});import{decodeJwt as m$4}from"jose";import{sql as Ci}from"kysely";async function n$4($){let{user:Z,token:G}=$;if(!G?.idToken)return;let X;try{X=m$4(G.idToken)}catch{return}let{preferred_username:Q,upn:Y}=X,J=[Q,Y].filter((U)=>typeof U==="string"&&U.length>0&&U.toLowerCase()!==Z.email.toLowerCase()).map((U)=>U.toLowerCase());if(J.length===0)return;let{db:W}=j6(),K=await W.selectFrom("user").selectAll().where("email","in",J).where("id","!=",Z.id).executeTakeFirst();if(!K)return;try{await W.transaction().execute(async(U)=>{await Ci`UPDATE "account" SET "userId" = ${K.id} WHERE "userId" = ${Z.id}`.execute(U),await Ci`UPDATE "session" SET "userId" = ${K.id} WHERE "userId" = ${Z.id}`.execute(U),await Ci`
2224
2224
  UPDATE "member" SET "userId" = ${K.id}
2225
2225
  WHERE "userId" = ${Z.id}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "decocms",
3
- "version": "3.35.1",
3
+ "version": "3.35.3",
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{e as W,r as B,j as e,c as X,l as Y}from"./index-Dv-yFpKM.js";import{i as Z}from"./ChevronRight-DixPnH3V.js";import{S as tt}from"./scroll-area-CGmfUT4q.js";import{aa as et,ab as rt,f as ot}from"./index-7TDtRiUY.js";import{c as it}from"./save-referenced-block-R6f1-KeE.js";import{S as mt}from"./schema-form-EY1QOp8v.js";import{S as pt}from"./save-status-CFFENSy0.js";import"./select-CXfOBpVA.js";import"./tooltip-DyNW-AXf.js";import"./Check-CNRVH6xs.js";import"./ChevronDown-BKkz3Gyp.js";import"./ChevronUp-BeDEmrn1.js";import"./agent-capabilities-BxQUOIVO.js";import"./chat-context-BUN4BStS.js";import"./tab-id-DrxIMKZC.js";import"./use-mcp-client-C8ZwZB20.js";import"./auth-DTxUlSLU.js";import"./watch-sse-pool-rXavNycp.js";import"./decopilot-sse-pool-BYcZYovC.js";import"./studio-tools-DP4PwlLL.js";import"./use-virtual-mcp-DLQJqd7d.js";import"./use-collections-DGD5HYrs.js";import"./use-ai-providers-C1UbdVdO.js";import"./use-organization-settings-CCLHoFg6.js";import"./pair-rD44zBRY.js";import"./agent-icon-BrUPk7cd.js";import"./AlertCircle-asB0zjf2.js";import"./Tool01-DNz0OMpT.js";import"./SwitchHorizontal01-qUOmQUUG.js";import"./RefreshCcw01-Dd5D2uNm.js";import"./XCircle-B_UH_gQt.js";import"./ArrowUpRight-DRnt_VKh.js";import"./ZapSquare-Dz4Qok6x.js";import"./Users03-B9AqN8LK.js";import"./CheckCircle-B7v5_MG4.js";import"./ChevronLeft-DkMFugke.js";import"./DotsVertical-DimB1qZR.js";import"./Container-C41D-bwR.js";import"./Eye-CFpoJQMe.js";import"./ZoomOut-BkCtUzuC.js";import"./Globe01-CxF-Z8O2.js";import"./FilterLines-htpqKUqo.js";import"./Star01-BVQUiqS1.js";import"./Palette-D9_6t0uI.js";import"./HardDrive-TXw7C9gB.js";import"./Stars02-BFz8RQ16.js";import"./Key01-CDAkGspz.js";import"./LayoutLeft-BG08KNqc.js";import"./LinkExternal01-AylVRyuU.js";import"./Monitor01-gdKmZQTW.js";import"./Sun-DMcKqqHE.js";import"./Play-aa6uUei5.js";import"./Plus-DcxLSicT.js";import"./SearchMd-2GibIebB.js";import"./Settings02-D0kdZjJD.js";import"./Shield01-CpxvRW7h.js";import"./Stars01-B2PA7s4d.js";import"./Trash01-rpak8qu1.js";import"./Upload01-d_Wyw7QT.js";import"./User01-BWllfXHj.js";import"./Users01-DG6YdAo1.js";import"./XClose-DOt_DYPz.js";import"./X-DxE022Fo.js";import"./Zap-CyMJw7DY.js";import"./use-clock-tick-DMfzqE_6.js";import"./differenceInSeconds-NQ4PDo0z.js";import"./use-copy-fHv0q1pV.js";import"./file-type-icon-BC52hPZD.js";import"./dialog-dItkri_7.js";import"./content-blocks-o63cs2vh.js";import"./types-DYMMjWos.js";import"./shell-layout-BI3SgcG0.js";import"./avatar-BqYC23h9.js";import"./required-auth-layout-cXbsWfNV.js";import"./useRouterState-Y1aLUix_.js";import"./use-org-sso-B1KJDg2R.js";import"./integration-icon-7cYHs9rV.js";import"./use-navigate-to-agent-B9d6Q1VR.js";import"./use-connection-XtO-eFJi.js";import"./use-mcp-prompts-D2owAcPE.js";import"./form-BvrZIBZy.js";import"./label-DfTmRnMe.js";import"./input-B16LqKMQ.js";import"./spinner-C76OMH7i.js";import"./drawer-CiKI2xvg.js";import"./collection-search-CJ5Ov7mh.js";import"./tabs-MktB_dq3.js";import"./toggle-group-PAs-hpFv.js";import"./sortable.esm-BJmSIQN6.js";import"./connection-slug-eyAPH6o3.js";import"./connection-card-BryVkZk7.js";import"./use-registry-connections-CAyIHNjF.js";import"./useInfiniteQuery-G_6i7LOo.js";import"./use-infinite-scroll-D4S3aGR5.js";import"./extract-connection-data-BUZFKLkD.js";import"./generate-id-BYzu1jEq.js";import"./collections-Dg2-DQoz.js";import"./card-BlzflWCA.js";import"./collection-tabs-zuvlZo6K.js";import"./badge-CGZjMX2o.js";import"./textarea-Dc7UpW7V.js";import"./connection-form-helpers-C9SsVHwd.js";import"./useSuspenseInfiniteQuery-BhcYyKm_.js";import"./mcp-oauth-BoL_9gDY.js";import"./connect-desktop-dialog-Ccy-ptqT.js";import"./agent-icons-oFY-K2bC.js";import"./checkbox-C1s8UE6Y.js";import"./skeleton-DcZkQ-WQ.js";import"./ai-providers-logos-DD3qZ33J.js";import"./settings-section-ysm1dXbe.js";import"./popover-BneLTlXE.js";import"./command-ETJRln9I.js";import"./index-BMYBcbtc.js";import"./index-DkJOKUiK.js";import"./dropdown-menu-DA6--pO3.js";import"./question-004-sINsf4GQ.js";import"./shell-route-loading-BQp4nxMc.js";import"./sidebar-nhuTSqFS.js";import"./sheet-DwJxE17f.js";import"./toolbar-CCipnjie.js";import"./use-create-virtual-mcp-DTGwia7F.js";import"./github-repo-picker-D-39cmmm.js";import"./use-mcp-tools-BW-64A4f.js";import"./alert-dialog-DUUnhBc6.js";import"./index-BOvqwG23.js";import"./use-org-auth-client-BTTZUjKk.js";import"./hover-card-DuwXdrhz.js";import"./task-status-Bkjp3y0Q.js";import"./use-status-sounds-B27SY7cH.js";import"./empty-state-Wjey2haZ.js";import"./resizable-DTSOtBpc.js";import"./use-capability-Bw0k887i.js";import"./header-tab-button-eoCiDxtu.js";import"./index-Dilf6iGE.js";import"./user-CLXOG3Qm.js";import"./tools-list-D8vEf5kn.js";import"./switch-Dlc-euH4.js";import"./use-debounced-autosave-nDLl3CCi.js";import"./index-CfhwhmtA.js";import"./search-input-nds5g8eq.js";import"./use-secrets-CtwUwXaf.js";import"./formatDistanceToNow-Cb2QZZJn.js";import"./accordion-B7oL0ZOw.js";import"./view-mode-toggle-D_5X7-ae.js";import"./select-model-BLS2zNwN.js";import"./use-automations-DFVkTFjl.js";import"./monaco-editor-CEYWUBYY.js";import"./automation-runs-8yvWAbAC.js";import"./table-BY5hmAW9.js";import"./use-members-DPyxvdDj.js";import"./automation-list-row-atv_xAlK.js";import"./calendar-CaIJu6mx.js";import"./image-field-BctFTejU.js";import"./use-file-configs-DhxZBYOT.js";function eo(E){const t=W.c(51),{orgSlug:R,virtualMcpId:P,branch:$,blockKey:r,block:m,meta:p,decofile:C,title:F,excludeFields:K,schemaPending:M}=E,V=M===void 0?!1:M,a=typeof m?.__resolveType=="string"?m.__resolveType:"";let v;t[0]!==K||t[1]!==p||t[2]!==a?(v=et(a,p,K),t[0]=K,t[1]=p,t[2]=a,t[3]=v):v=t[3];const s=v;let b;t[4]!==s?(b=!!s&&Object.keys(s.properties??{}).length>0,t[4]=s,t[5]=b):b=t[5];const T=b;let g;t[6]!==m||t[7]!==r||t[8]!==p||t[9]!==F?(g=F??(m?rt(r,m,p):r),t[6]=m,t[7]=r,t[8]=p,t[9]=F,t[10]=g):g=t[10];const n=g;let j;t[11]!==$||t[12]!==R||t[13]!==P?(j={orgSlug:R,virtualMcpId:P,branch:$},t[11]=$,t[12]=R,t[13]=P,t[14]=j):j=t[14];const{save:c,isPending:A}=ot(j);let y;t[15]!==c?(y=it((l,i)=>c(l,i)),t[15]=c,t[16]=y):y=t[16];const L=y,[G,H]=B.useState(r),[J,q]=B.useState(null),[z,Q]=B.useState(0);let S;t[17]===Symbol.for("react.memo_cache_sentinel")?(S=[],t[17]=S):S=t[17];const[o,O]=B.useState(S);G!==r&&(H(r),q(null),Q(st),O([]));let N;t[18]!==m?(N=m??{},t[18]=m,t[19]=N):N=t[19];const D=J??N;let k;t[20]!==r||t[21]!==a||t[22]!==c?(k=l=>{const i=l;q(i),c(r,{...i,__resolveType:a})},t[20]=r,t[21]=a,t[22]=c,t[23]=k):k=t[23];const I=k;let _;t[24]!==o||t[25]!==n?(_=o.length>0?[n,...o]:[],t[24]=o,t[25]=n,t[26]=_):_=t[26];const h=_;let d;t[27]!==o||t[28]!==h||t[29]!==n?(d=h.length>0?e.jsx("nav",{"aria-label":"Editing breadcrumb",className:"flex min-w-0 flex-1 items-center gap-1 overflow-hidden text-sm",children:h.map((l,i)=>{const U=i===h.length-1;return e.jsxs("span",{className:"flex min-w-0 items-center gap-1 overflow-hidden",children:[i>0&&e.jsx(Z,{className:"size-3 shrink-0 text-muted-foreground/60"}),e.jsx("button",{type:"button",onClick:()=>O(i===0?[]:o.slice(0,i)),title:l,className:X("min-w-0 truncate rounded-md px-1 py-0.5 text-left transition-colors",U?"font-medium text-foreground":"text-muted-foreground hover:bg-accent hover:text-accent-foreground"),children:l})]},`${l}-${i}`)})}):e.jsx("span",{className:"text-sm font-medium",children:n}),t[27]=o,t[28]=h,t[29]=n,t[30]=d):d=t[30];let f;t[31]!==A?(f=e.jsx(pt,{isPending:A,isError:!1}),t[31]=A,t[32]=f):f=t[32];let u;t[33]!==d||t[34]!==f?(u=e.jsxs("div",{className:"flex h-12 shrink-0 items-center justify-between border-b px-6",children:[d,f]}),t[33]=d,t[34]=f,t[35]=u):u=t[35];let x;t[36]!==r||t[37]!==o||t[38]!==C||t[39]!==D||t[40]!==z||t[41]!==I||t[42]!==T||t[43]!==p||t[44]!==L||t[45]!==s||t[46]!==V?(x=e.jsx(tt,{className:"min-w-0 flex-1 [&_[data-slot=scroll-area-viewport]>div]:!block",children:e.jsx("div",{className:"px-6 py-6",children:e.jsx("div",{className:"mx-auto max-w-xl",children:T?e.jsx(mt,{schema:s,value:D,onChange:I,basePath:"",breadcrumbPath:o,onBreadcrumbChange:O,decofile:C,meta:p,onSaveReferencedBlock:L},`${r}:${z}`):V?e.jsxs("div",{className:"flex flex-col items-center gap-2 py-6 text-center text-xs text-muted-foreground",children:[e.jsx(Y,{size:16,className:"animate-spin"}),"Loading app schema…"]}):e.jsx("div",{className:"py-6 text-center text-xs text-muted-foreground",children:"No editable schema found for this app."})})})}),t[36]=r,t[37]=o,t[38]=C,t[39]=D,t[40]=z,t[41]=I,t[42]=T,t[43]=p,t[44]=L,t[45]=s,t[46]=V,t[47]=x):x=t[47];let w;return t[48]!==u||t[49]!==x?(w=e.jsxs("div",{className:"flex h-full flex-col",children:[u,x]}),t[48]=u,t[49]=x,t[50]=w):w=t[50],w}function st(E){return E+1}export{eo as AppEditor};
@@ -1 +0,0 @@
1
- import{e as T,r as E,p as w,F as P,a as B,j as s,B as I,K as z,n as A}from"./index-Dv-yFpKM.js";import{c as K,e as Y,b as _,a as O,D as R}from"./dialog-dItkri_7.js";import{S as q}from"./spinner-C76OMH7i.js";import{i as F}from"./Check-CNRVH6xs.js";import{a as Q}from"./Eye-CFpoJQMe.js";import{u as $}from"./chat-context-BUN4BStS.js";import{u as H}from"./studio-tools-DP4PwlLL.js";const L="bunx decocms link",y={"claude-code":"Claude Code",codex:"Codex"};function S(i){return i.map(e=>y[e]).filter(e=>!!e)}function v(i){return Object.keys(y).filter(e=>!i.includes(e)).map(e=>y[e]).filter(e=>!!e)}function ee(i){const e=T.c(32),{open:f,onOpenChange:h}=i,t=$(),[g,D]=E.useState(!1),{org:j}=w(),C=P(),k=H();let n;e[0]!==k?(n=async()=>{await k.call("LINK_DISCONNECT",{})},e[0]=k,e[1]=n):n=e[1];let o;e[2]!==j||e[3]!==C?(o=()=>{C.invalidateQueries({queryKey:z.currentLink(j.id)})},e[2]=j,e[3]=C,e[4]=o):o=e[4];let p;e[5]!==n||e[6]!==o?(p={mutationFn:n,onSuccess:o,onError:M},e[5]=n,e[6]=o,e[7]=p):p=e[7];const u=B(p),b=t.online?"Desktop connected":"Connect your desktop";let a;e[8]!==b?(a=s.jsx(K,{children:b}),e[8]=b,e[9]=a):a=e[9];const N=t.online?"Your desktop is online. Pick a desktop agent in the chat to use it.":"Run this command in your desktop terminal. The dialog will close once your desktop is online.";let l;e[10]!==N?(l=s.jsx(Y,{children:N}),e[10]=N,e[11]=l):l=e[11];let c;e[12]!==a||e[13]!==l?(c=s.jsxs(_,{children:[a,l]}),e[12]=a,e[13]=l,e[14]=c):c=e[14];let r;e[15]!==g||e[16]!==t.online?(r=!t.online&&s.jsxs("div",{className:"flex items-center gap-2 rounded-md bg-muted px-3 py-2 font-mono text-sm",children:[s.jsx("span",{className:"flex-1",children:L}),s.jsx(I,{type:"button",variant:"ghost",size:"icon-sm",onClick:()=>{navigator.clipboard.writeText(L),D(!0),setTimeout(()=>D(!1),1500)},children:g?s.jsx(F,{size:14}):s.jsx(Q,{size:14})})]}),e[15]=g,e[16]=t.online,e[17]=r):r=e[17];let d;e[18]!==u||e[19]!==t.capabilities||e[20]!==t.hostname||e[21]!==t.machineId||e[22]!==t.online?(d=t.online?s.jsxs("div",{className:"flex flex-col gap-1 text-sm",children:[s.jsxs("p",{className:"text-foreground",children:[t.hostname??t.machineId??"Your desktop"," is linked."]}),S(t.capabilities).length>0&&s.jsxs("p",{className:"text-muted-foreground",children:["Available: ",S(t.capabilities).join(", ")]}),v(t.capabilities).length>0&&s.jsxs("p",{className:"text-muted-foreground",children:[v(t.capabilities).join(" and ")," ",v(t.capabilities).length>1?"were":"was"," ","not detected on this desktop. Install the CLI and sign in there — it appears here automatically within a minute."]}),s.jsx("div",{className:"flex justify-end pt-2",children:s.jsx(I,{type:"button",variant:"outline",size:"sm",disabled:u.isPending,onClick:()=>u.mutate(),className:"text-destructive hover:text-destructive",children:u.isPending?"Disconnecting…":"Disconnect desktop"})})]}):s.jsxs("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[s.jsx(q,{size:"sm"}),"Waiting for desktop…"]}),e[18]=u,e[19]=t.capabilities,e[20]=t.hostname,e[21]=t.machineId,e[22]=t.online,e[23]=d):d=e[23];let m;e[24]!==d||e[25]!==c||e[26]!==r?(m=s.jsxs(O,{className:"sm:max-w-md",children:[c,r,d]}),e[24]=d,e[25]=c,e[26]=r,e[27]=m):m=e[27];let x;return e[28]!==h||e[29]!==f||e[30]!==m?(x=s.jsx(R,{open:f,onOpenChange:h,children:m}),e[28]=h,e[29]=f,e[30]=m,e[31]=x):x=e[31],x}function M(i){A.error(`Disconnect failed: ${i.message}`)}export{ee as C,S as v};
@@ -1 +0,0 @@
1
- import{d as o}from"./watch-sse-pool-rXavNycp.js";const c=o;export{c as d};
@@ -1 +0,0 @@
1
- import{e as it,r as E,j as e,l as rt}from"./index-Dv-yFpKM.js";import{S as mt,d as pt,a as st,b as at}from"./sheet-DwJxE17f.js";import{S as nt}from"./scroll-area-CGmfUT4q.js";import{r as lt,c as ct,u as dt,a as St,i as ft,f as ut,d as vt,P as ht,S as gt}from"./page-seo-form-BPPrLLbX.js";import{n as xt}from"./index-7TDtRiUY.js";import"./X-DxE022Fo.js";import"./select-CXfOBpVA.js";import"./tooltip-DyNW-AXf.js";import"./Check-CNRVH6xs.js";import"./ChevronDown-BKkz3Gyp.js";import"./ChevronUp-BeDEmrn1.js";import"./label-DfTmRnMe.js";import"./switch-Dlc-euH4.js";import"./schema-form-EY1QOp8v.js";import"./agent-icon-BrUPk7cd.js";import"./AlertCircle-asB0zjf2.js";import"./Tool01-DNz0OMpT.js";import"./SwitchHorizontal01-qUOmQUUG.js";import"./RefreshCcw01-Dd5D2uNm.js";import"./XCircle-B_UH_gQt.js";import"./ArrowUpRight-DRnt_VKh.js";import"./ZapSquare-Dz4Qok6x.js";import"./Users03-B9AqN8LK.js";import"./CheckCircle-B7v5_MG4.js";import"./ChevronLeft-DkMFugke.js";import"./ChevronRight-DixPnH3V.js";import"./DotsVertical-DimB1qZR.js";import"./Container-C41D-bwR.js";import"./Eye-CFpoJQMe.js";import"./ZoomOut-BkCtUzuC.js";import"./Globe01-CxF-Z8O2.js";import"./FilterLines-htpqKUqo.js";import"./Star01-BVQUiqS1.js";import"./Palette-D9_6t0uI.js";import"./HardDrive-TXw7C9gB.js";import"./Stars02-BFz8RQ16.js";import"./Key01-CDAkGspz.js";import"./LayoutLeft-BG08KNqc.js";import"./LinkExternal01-AylVRyuU.js";import"./Monitor01-gdKmZQTW.js";import"./Sun-DMcKqqHE.js";import"./Play-aa6uUei5.js";import"./Plus-DcxLSicT.js";import"./SearchMd-2GibIebB.js";import"./Settings02-D0kdZjJD.js";import"./Shield01-CpxvRW7h.js";import"./Stars01-B2PA7s4d.js";import"./Trash01-rpak8qu1.js";import"./Upload01-d_Wyw7QT.js";import"./User01-BWllfXHj.js";import"./Users01-DG6YdAo1.js";import"./XClose-DOt_DYPz.js";import"./Zap-CyMJw7DY.js";import"./calendar-CaIJu6mx.js";import"./input-B16LqKMQ.js";import"./popover-BneLTlXE.js";import"./textarea-Dc7UpW7V.js";import"./dropdown-menu-DA6--pO3.js";import"./image-field-BctFTejU.js";import"./dialog-dItkri_7.js";import"./skeleton-DcZkQ-WQ.js";import"./tabs-MktB_dq3.js";import"./use-file-configs-DhxZBYOT.js";import"./studio-tools-DP4PwlLL.js";import"./useInfiniteQuery-G_6i7LOo.js";import"./use-infinite-scroll-D4S3aGR5.js";import"./agent-capabilities-BxQUOIVO.js";import"./chat-context-BUN4BStS.js";import"./tab-id-DrxIMKZC.js";import"./use-mcp-client-C8ZwZB20.js";import"./auth-DTxUlSLU.js";import"./watch-sse-pool-rXavNycp.js";import"./decopilot-sse-pool-BYcZYovC.js";import"./use-virtual-mcp-DLQJqd7d.js";import"./use-collections-DGD5HYrs.js";import"./use-ai-providers-C1UbdVdO.js";import"./use-organization-settings-CCLHoFg6.js";import"./pair-rD44zBRY.js";import"./use-clock-tick-DMfzqE_6.js";import"./differenceInSeconds-NQ4PDo0z.js";import"./use-copy-fHv0q1pV.js";import"./file-type-icon-BC52hPZD.js";import"./content-blocks-o63cs2vh.js";import"./types-DYMMjWos.js";import"./shell-layout-BI3SgcG0.js";import"./avatar-BqYC23h9.js";import"./required-auth-layout-cXbsWfNV.js";import"./useRouterState-Y1aLUix_.js";import"./use-org-sso-B1KJDg2R.js";import"./integration-icon-7cYHs9rV.js";import"./use-navigate-to-agent-B9d6Q1VR.js";import"./use-connection-XtO-eFJi.js";import"./use-mcp-prompts-D2owAcPE.js";import"./form-BvrZIBZy.js";import"./spinner-C76OMH7i.js";import"./drawer-CiKI2xvg.js";import"./collection-search-CJ5Ov7mh.js";import"./toggle-group-PAs-hpFv.js";import"./sortable.esm-BJmSIQN6.js";import"./connection-slug-eyAPH6o3.js";import"./connection-card-BryVkZk7.js";import"./use-registry-connections-CAyIHNjF.js";import"./extract-connection-data-BUZFKLkD.js";import"./generate-id-BYzu1jEq.js";import"./collections-Dg2-DQoz.js";import"./card-BlzflWCA.js";import"./collection-tabs-zuvlZo6K.js";import"./badge-CGZjMX2o.js";import"./connection-form-helpers-C9SsVHwd.js";import"./useSuspenseInfiniteQuery-BhcYyKm_.js";import"./mcp-oauth-BoL_9gDY.js";import"./connect-desktop-dialog-Ccy-ptqT.js";import"./agent-icons-oFY-K2bC.js";import"./checkbox-C1s8UE6Y.js";import"./ai-providers-logos-DD3qZ33J.js";import"./settings-section-ysm1dXbe.js";import"./command-ETJRln9I.js";import"./index-BMYBcbtc.js";import"./index-DkJOKUiK.js";import"./question-004-sINsf4GQ.js";import"./shell-route-loading-BQp4nxMc.js";import"./sidebar-nhuTSqFS.js";import"./toolbar-CCipnjie.js";import"./use-create-virtual-mcp-DTGwia7F.js";import"./github-repo-picker-D-39cmmm.js";import"./use-mcp-tools-BW-64A4f.js";import"./alert-dialog-DUUnhBc6.js";import"./index-BOvqwG23.js";import"./use-org-auth-client-BTTZUjKk.js";import"./hover-card-DuwXdrhz.js";import"./task-status-Bkjp3y0Q.js";import"./use-status-sounds-B27SY7cH.js";import"./empty-state-Wjey2haZ.js";import"./resizable-DTSOtBpc.js";import"./use-capability-Bw0k887i.js";import"./header-tab-button-eoCiDxtu.js";import"./index-Dilf6iGE.js";import"./user-CLXOG3Qm.js";import"./tools-list-D8vEf5kn.js";import"./use-debounced-autosave-nDLl3CCi.js";import"./index-CfhwhmtA.js";import"./search-input-nds5g8eq.js";import"./use-secrets-CtwUwXaf.js";import"./formatDistanceToNow-Cb2QZZJn.js";import"./accordion-B7oL0ZOw.js";import"./view-mode-toggle-D_5X7-ae.js";import"./select-model-BLS2zNwN.js";import"./use-automations-DFVkTFjl.js";import"./monaco-editor-CEYWUBYY.js";import"./automation-runs-8yvWAbAC.js";import"./table-BY5hmAW9.js";import"./use-members-DPyxvdDj.js";import"./automation-list-row-atv_xAlK.js";function fi(u){const t=it.c(46),{open:N,onOpenChange:P,orgSlug:Q,virtualMcpId:U,branch:W,decofile:G,meta:s,target:m,onSaved:X}=u,o=lt(G,m,s),k=m.kind==="site"?"site":m.pageKey,[Y,Z]=E.useState(k),[tt,i]=E.useState(null),[J,g]=E.useState(void 0),[x,y]=E.useState(0);Y!==k&&(Z(k),i(null),g(void 0),y(wt));const{persistSeo:a,persistRawSeo:I,flush:K,isPending:D}=ct({orgSlug:Q,virtualMcpId:U,branch:W,target:m,resolved:o,onSaved:X}),w=m.kind==="page",ot=w?o?.rawSeoData:void 0,v=J!==void 0?J:ot,et=w?dt(v)??void 0:void 0,h=tt??et??o?.seoData??{},p=o?St(h,o):null,n=p&&(!w||ft(v))?xt(p,s):null,_=m.kind==="page"?ut(G,s)?.seoData??void 0:void 0;let j;t[0]!==s?(j=vt(s),t[0]=s,t[1]=j):j=t[1];const M=j;let R;t[2]!==a||t[3]!==o||t[4]!==i?(R=r=>{if(!o)return;const L=r;i(L),a(L)},t[2]=a,t[3]=o,t[4]=i,t[5]=R):R=t[5];const V=R;let F;t[6]!==K||t[7]!==P?(F=r=>{r||K(),P(r)},t[6]=K,t[7]=P,t[8]=F):F=t[8];const z=F,A=m.kind==="site"?"Site SEO":"Page SEO",T=w&&o,B=m.kind==="site"&&o&&n,H=m.kind==="site"?"No site-level SEO block found.":o?"SEO schema not found for this page.":"Could not load page SEO.";let C;t[9]!==i?(C=()=>i(null),t[9]=i,t[10]=C):C=t[10];const $=C;let O;t[11]!==y?(O=()=>y(yt),t[11]=y,t[12]=O):O=t[12];const q=O;let l;t[13]!==A?(l=e.jsx(mt,{className:"text-sm font-semibold",children:A}),t[13]=A,t[14]=l):l=t[14];let c;t[15]!==D?(c=D&&e.jsx(rt,{size:14,className:"animate-spin text-muted-foreground"}),t[15]=D,t[16]=c):c=t[16];let d;t[17]!==l||t[18]!==c?(d=e.jsxs(pt,{className:"px-4 py-3 border-b flex-row items-center justify-between space-y-0",children:[l,c]}),t[17]=l,t[18]=c,t[19]=d):d=t[19];let S;t[20]!==p||t[21]!==q||t[22]!==$||t[23]!==M||t[24]!==v||t[25]!==h||t[26]!==H||t[27]!==x||t[28]!==V||t[29]!==I||t[30]!==a||t[31]!==o||t[32]!==n||t[33]!==i||t[34]!==g||t[35]!==T||t[36]!==B||t[37]!==_?(S=!o||!T&&!B?e.jsx("div",{className:"flex h-full items-center justify-center text-sm text-muted-foreground",children:H}):e.jsx(nt,{className:"flex-1 min-h-0 [&_[data-slot=scroll-area-viewport]>div]:!block",children:e.jsx("div",{className:"px-6 py-4",children:e.jsx("div",{className:"mx-auto max-w-sm",children:T?e.jsx(ht,{rawSeo:v,innerSeo:h,defaultResolveType:M,seoSchema:n,activeResolveType:p,seoTypeOptions:o.seoTypeOptions,formResetKey:x,siteDefaultSeo:_,onPersistRaw:r=>{g(r),I(r)},onInnerChange:r=>{i(r),a(r)},onClearForm:$,onBumpFormKey:q}):n&&p&&e.jsx(gt,{schema:n,resolveType:p,value:h,formResetKey:x,onChange:V})})})}),t[20]=p,t[21]=q,t[22]=$,t[23]=M,t[24]=v,t[25]=h,t[26]=H,t[27]=x,t[28]=V,t[29]=I,t[30]=a,t[31]=o,t[32]=n,t[33]=i,t[34]=g,t[35]=T,t[36]=B,t[37]=_,t[38]=S):S=t[38];let f;t[39]!==d||t[40]!==S?(f=e.jsxs(st,{side:"right",className:"w-[400px] sm:max-w-[440px] p-0 gap-0",children:[d,S]}),t[39]=d,t[40]=S,t[41]=f):f=t[41];let b;return t[42]!==z||t[43]!==N||t[44]!==f?(b=e.jsx(at,{open:N,onOpenChange:z,children:f}),t[42]=z,t[43]=N,t[44]=f,t[45]=b):b=t[45],b}function yt(u){return u+1}function wt(u){return u+1}export{fi as SeoSheet};
@@ -1 +0,0 @@
1
- import{e as H,p as $,j}from"./index-Dv-yFpKM.js";import{h as v,g as O,s as b}from"./pair-rD44zBRY.js";import{u as L}from"./use-mcp-client-C8ZwZB20.js";import{a as q,c as B}from"./use-mcp-tools-BW-64A4f.js";import{c as Y}from"./content-blocks-o63cs2vh.js";import{g as k,M as G,a as E}from"./types-DYMMjWos.js";import{a as V,c as z}from"./chat-context-BUN4BStS.js";import{u as F}from"./shell-layout-BI3SgcG0.js";import"./agent-icon-BrUPk7cd.js";import"./AlertCircle-asB0zjf2.js";import"./Tool01-DNz0OMpT.js";import"./SwitchHorizontal01-qUOmQUUG.js";import"./RefreshCcw01-Dd5D2uNm.js";import"./XCircle-B_UH_gQt.js";import"./ArrowUpRight-DRnt_VKh.js";import"./ZapSquare-Dz4Qok6x.js";import"./Users03-B9AqN8LK.js";import"./CheckCircle-B7v5_MG4.js";import"./Check-CNRVH6xs.js";import"./ChevronDown-BKkz3Gyp.js";import"./ChevronLeft-DkMFugke.js";import"./ChevronRight-DixPnH3V.js";import"./ChevronUp-BeDEmrn1.js";import"./DotsVertical-DimB1qZR.js";import"./Container-C41D-bwR.js";import"./Eye-CFpoJQMe.js";import"./ZoomOut-BkCtUzuC.js";import"./Globe01-CxF-Z8O2.js";import"./FilterLines-htpqKUqo.js";import"./Star01-BVQUiqS1.js";import"./Palette-D9_6t0uI.js";import"./HardDrive-TXw7C9gB.js";import"./Stars02-BFz8RQ16.js";import"./Key01-CDAkGspz.js";import"./LayoutLeft-BG08KNqc.js";import"./LinkExternal01-AylVRyuU.js";import"./Monitor01-gdKmZQTW.js";import"./Sun-DMcKqqHE.js";import"./Play-aa6uUei5.js";import"./Plus-DcxLSicT.js";import"./SearchMd-2GibIebB.js";import"./Settings02-D0kdZjJD.js";import"./Shield01-CpxvRW7h.js";import"./Stars01-B2PA7s4d.js";import"./Trash01-rpak8qu1.js";import"./Upload01-d_Wyw7QT.js";import"./User01-BWllfXHj.js";import"./Users01-DG6YdAo1.js";import"./XClose-DOt_DYPz.js";import"./X-DxE022Fo.js";import"./Zap-CyMJw7DY.js";import"./use-clock-tick-DMfzqE_6.js";import"./differenceInSeconds-NQ4PDo0z.js";import"./scroll-area-CGmfUT4q.js";import"./select-CXfOBpVA.js";import"./tooltip-DyNW-AXf.js";import"./use-copy-fHv0q1pV.js";import"./file-type-icon-BC52hPZD.js";import"./dialog-dItkri_7.js";import"./tab-id-DrxIMKZC.js";import"./watch-sse-pool-rXavNycp.js";import"./decopilot-sse-pool-BYcZYovC.js";import"./studio-tools-DP4PwlLL.js";import"./integration-icon-7cYHs9rV.js";import"./use-virtual-mcp-DLQJqd7d.js";import"./use-collections-DGD5HYrs.js";import"./use-navigate-to-agent-B9d6Q1VR.js";import"./use-connection-XtO-eFJi.js";import"./use-mcp-prompts-D2owAcPE.js";import"./form-BvrZIBZy.js";import"./label-DfTmRnMe.js";import"./input-B16LqKMQ.js";import"./spinner-C76OMH7i.js";import"./auth-DTxUlSLU.js";import"./use-ai-providers-C1UbdVdO.js";import"./use-organization-settings-CCLHoFg6.js";import"./avatar-BqYC23h9.js";import"./required-auth-layout-cXbsWfNV.js";import"./useRouterState-Y1aLUix_.js";import"./use-org-sso-B1KJDg2R.js";const J={};function K(S){const t=H.c(37),{client:r,resourceURI:g,tool:e,connectionId:s,orgId:a,args:c}=S,{sendMessage:u}=V(),{setAppContext:d,clearAppContext:o}=z(),{setChatOpen:f,openTab:m}=F(),p=`${s}:${e.name}`;let l;t[0]!==m?(l=h=>h==="inline"?(m("0"),"inline"):"fullscreen",t[0]=m,t[1]=l):l=t[1];const i=l,n=c??J;let T;t[2]!==r||t[3]!==e.name||t[4]!==n?(T={client:r,toolName:e.name,toolArguments:n},t[2]=r,t[3]=e.name,t[4]=n,t[5]=T):T=t[5];const{data:x}=B(T);let R;if(t[6]!==e._meta||t[7]!==e.name){const h=O(e._meta);R=b(e.name,h),t[6]=e._meta,t[7]=e.name,t[8]=R}else R=t[8];const U=R;let I;t[9]!==e.inputSchema?(I=e.inputSchema??{type:"object"},t[9]=e.inputSchema,t[10]=I):I=t[10];let N;t[11]!==U||t[12]!==I||t[13]!==e?(N={...e,name:U,inputSchema:I},t[11]=U,t[12]=I,t[13]=e,t[14]=N):N=t[14];const y=N;let _;t[15]!==u||t[16]!==f?(_=h=>{const w=Y(h.content);w.content.length>0&&(f(!0),u({tiptapDoc:w}))},t[15]=u,t[16]=f,t[17]=_):_=t[17];const D=_;let C;t[18]!==y?(C={tool:y},t[18]=y,t[19]=C):C=t[19];let M;t[20]!==d||t[21]!==p?(M=h=>d(p,h),t[20]=d,t[21]=p,t[22]=M):M=t[22];let P;t[23]!==o||t[24]!==p?(P=()=>o(p),t[23]=o,t[24]=p,t[25]=P):P=t[25];let A;return t[26]!==r||t[27]!==D||t[28]!==i||t[29]!==a||t[30]!==g||t[31]!==C||t[32]!==M||t[33]!==P||t[34]!==n||t[35]!==x?(A=j.jsx(G,{resourceURI:g,orgId:a,toolInfo:C,toolInput:n,toolResult:x,displayMode:"fullscreen",minHeight:E.fullscreen.minHeight,maxHeight:E.fullscreen.maxHeight,client:r,onMessage:D,onUpdateModelContext:M,onTeardown:P,onRequestDisplayMode:i,className:"h-full"}),t[26]=r,t[27]=D,t[28]=i,t[29]=a,t[30]=g,t[31]=C,t[32]=M,t[33]=P,t[34]=n,t[35]=x,t[36]=A):A=t[36],A}function Te(S){const t=H.c(20),{connectionId:r,toolName:g,args:e}=S,{org:s}=$();let a;t[0]!==r||t[1]!==s.id||t[2]!==s.slug?(a={connectionId:r,orgId:s.id,orgSlug:s.slug},t[0]=r,t[1]=s.id,t[2]=s.slug,t[3]=a):a=t[3];const c=L(a);let u;t[4]!==c?(u={client:c},t[4]=c,t[5]=u):u=t[5];const{data:d}=q(u);let o,f,m;t[6]!==g||t[7]!==d.tools?(o=v(decodeURIComponent(g)),m=d.tools.find(i=>i.name===o)??d.tools.find(i=>{const n=O(i._meta);if(!n)return!1;if(b(i.name,n)===o)return!0;const x=b(o,n);return x!==o&&i.name===x}),f=m?._meta?k(m._meta):void 0,t[6]=g,t[7]=d.tools,t[8]=o,t[9]=f,t[10]=m):(o=t[8],f=t[9],m=t[10]);const p=f;if(!m||!p){let i;return t[11]!==o?(i=j.jsx("div",{className:"flex items-center justify-center h-full w-full",children:j.jsxs("p",{className:"text-sm text-muted-foreground",children:['Tool "',o,'" not found or has no UI']})}),t[11]=o,t[12]=i):i=t[12],i}let l;return t[13]!==e||t[14]!==c||t[15]!==r||t[16]!==s.id||t[17]!==p||t[18]!==m?(l=j.jsx(K,{client:c,resourceURI:p,tool:m,connectionId:r,orgId:s.id,args:e}),t[13]=e,t[14]=c,t[15]=r,t[16]=s.id,t[17]=p,t[18]=m,t[19]=l):l=t[19],l}export{Te as AppViewContent};
@@ -1 +0,0 @@
1
- import{e as C,j as r}from"./index-Dv-yFpKM.js";import{I as F}from"./input-B16LqKMQ.js";import{L as T}from"./label-DfTmRnMe.js";import{T as L}from"./textarea-Dc7UpW7V.js";import{I as A}from"./image-field-BctFTejU.js";import{ae as R,af as D,ah as J}from"./index-7TDtRiUY.js";import{u as K,s as S}from"./primitives-CGyfTuZM.js";import{S as M}from"./save-status-CFFENSy0.js";import"./Tool01-DNz0OMpT.js";import"./Trash01-rpak8qu1.js";import"./Upload01-d_Wyw7QT.js";import"./AlertCircle-asB0zjf2.js";import"./Check-CNRVH6xs.js";import"./Eye-CFpoJQMe.js";import"./DotsVertical-DimB1qZR.js";import"./agent-icon-BrUPk7cd.js";import"./SwitchHorizontal01-qUOmQUUG.js";import"./RefreshCcw01-Dd5D2uNm.js";import"./XCircle-B_UH_gQt.js";import"./ArrowUpRight-DRnt_VKh.js";import"./ZapSquare-Dz4Qok6x.js";import"./Users03-B9AqN8LK.js";import"./CheckCircle-B7v5_MG4.js";import"./ChevronDown-BKkz3Gyp.js";import"./ChevronLeft-DkMFugke.js";import"./ChevronRight-DixPnH3V.js";import"./ChevronUp-BeDEmrn1.js";import"./Container-C41D-bwR.js";import"./ZoomOut-BkCtUzuC.js";import"./Globe01-CxF-Z8O2.js";import"./FilterLines-htpqKUqo.js";import"./Star01-BVQUiqS1.js";import"./Palette-D9_6t0uI.js";import"./HardDrive-TXw7C9gB.js";import"./Stars02-BFz8RQ16.js";import"./Key01-CDAkGspz.js";import"./LayoutLeft-BG08KNqc.js";import"./LinkExternal01-AylVRyuU.js";import"./Monitor01-gdKmZQTW.js";import"./Sun-DMcKqqHE.js";import"./Play-aa6uUei5.js";import"./Plus-DcxLSicT.js";import"./SearchMd-2GibIebB.js";import"./Settings02-D0kdZjJD.js";import"./Shield01-CpxvRW7h.js";import"./Stars01-B2PA7s4d.js";import"./User01-BWllfXHj.js";import"./Users01-DG6YdAo1.js";import"./XClose-DOt_DYPz.js";import"./X-DxE022Fo.js";import"./Zap-CyMJw7DY.js";import"./dialog-dItkri_7.js";import"./dropdown-menu-DA6--pO3.js";import"./skeleton-DcZkQ-WQ.js";import"./tabs-MktB_dq3.js";import"./use-file-configs-DhxZBYOT.js";import"./studio-tools-DP4PwlLL.js";import"./useInfiniteQuery-G_6i7LOo.js";import"./use-infinite-scroll-D4S3aGR5.js";import"./agent-capabilities-BxQUOIVO.js";import"./chat-context-BUN4BStS.js";import"./tab-id-DrxIMKZC.js";import"./use-mcp-client-C8ZwZB20.js";import"./auth-DTxUlSLU.js";import"./watch-sse-pool-rXavNycp.js";import"./decopilot-sse-pool-BYcZYovC.js";import"./use-virtual-mcp-DLQJqd7d.js";import"./use-collections-DGD5HYrs.js";import"./use-ai-providers-C1UbdVdO.js";import"./use-organization-settings-CCLHoFg6.js";import"./pair-rD44zBRY.js";import"./use-clock-tick-DMfzqE_6.js";import"./differenceInSeconds-NQ4PDo0z.js";import"./scroll-area-CGmfUT4q.js";import"./select-CXfOBpVA.js";import"./tooltip-DyNW-AXf.js";import"./use-copy-fHv0q1pV.js";import"./file-type-icon-BC52hPZD.js";import"./content-blocks-o63cs2vh.js";import"./types-DYMMjWos.js";import"./shell-layout-BI3SgcG0.js";import"./avatar-BqYC23h9.js";import"./required-auth-layout-cXbsWfNV.js";import"./useRouterState-Y1aLUix_.js";import"./use-org-sso-B1KJDg2R.js";import"./integration-icon-7cYHs9rV.js";import"./use-navigate-to-agent-B9d6Q1VR.js";import"./use-connection-XtO-eFJi.js";import"./use-mcp-prompts-D2owAcPE.js";import"./form-BvrZIBZy.js";import"./spinner-C76OMH7i.js";import"./drawer-CiKI2xvg.js";import"./collection-search-CJ5Ov7mh.js";import"./toggle-group-PAs-hpFv.js";import"./sortable.esm-BJmSIQN6.js";import"./connection-slug-eyAPH6o3.js";import"./connection-card-BryVkZk7.js";import"./use-registry-connections-CAyIHNjF.js";import"./extract-connection-data-BUZFKLkD.js";import"./generate-id-BYzu1jEq.js";import"./collections-Dg2-DQoz.js";import"./card-BlzflWCA.js";import"./collection-tabs-zuvlZo6K.js";import"./badge-CGZjMX2o.js";import"./connection-form-helpers-C9SsVHwd.js";import"./useSuspenseInfiniteQuery-BhcYyKm_.js";import"./mcp-oauth-BoL_9gDY.js";import"./connect-desktop-dialog-Ccy-ptqT.js";import"./agent-icons-oFY-K2bC.js";import"./checkbox-C1s8UE6Y.js";import"./ai-providers-logos-DD3qZ33J.js";import"./settings-section-ysm1dXbe.js";import"./popover-BneLTlXE.js";import"./command-ETJRln9I.js";import"./index-BMYBcbtc.js";import"./index-DkJOKUiK.js";import"./question-004-sINsf4GQ.js";import"./shell-route-loading-BQp4nxMc.js";import"./sidebar-nhuTSqFS.js";import"./sheet-DwJxE17f.js";import"./toolbar-CCipnjie.js";import"./use-create-virtual-mcp-DTGwia7F.js";import"./github-repo-picker-D-39cmmm.js";import"./use-mcp-tools-BW-64A4f.js";import"./alert-dialog-DUUnhBc6.js";import"./index-BOvqwG23.js";import"./use-org-auth-client-BTTZUjKk.js";import"./hover-card-DuwXdrhz.js";import"./task-status-Bkjp3y0Q.js";import"./use-status-sounds-B27SY7cH.js";import"./empty-state-Wjey2haZ.js";import"./resizable-DTSOtBpc.js";import"./use-capability-Bw0k887i.js";import"./header-tab-button-eoCiDxtu.js";import"./index-Dilf6iGE.js";import"./user-CLXOG3Qm.js";import"./tools-list-D8vEf5kn.js";import"./switch-Dlc-euH4.js";import"./use-debounced-autosave-nDLl3CCi.js";import"./index-CfhwhmtA.js";import"./search-input-nds5g8eq.js";import"./use-secrets-CtwUwXaf.js";import"./formatDistanceToNow-Cb2QZZJn.js";import"./accordion-B7oL0ZOw.js";import"./view-mode-toggle-D_5X7-ae.js";import"./select-model-BLS2zNwN.js";import"./use-automations-DFVkTFjl.js";import"./monaco-editor-CEYWUBYY.js";import"./automation-runs-8yvWAbAC.js";import"./table-BY5hmAW9.js";import"./use-members-DPyxvdDj.js";import"./automation-list-row-atv_xAlK.js";const $={authors:[{key:"name",label:"Name",widget:"text"},{key:"email",label:"Email",widget:"text",placeholder:"author@example.com"},{key:"jobTitle",label:"Job title",widget:"text"},{key:"company",label:"Company",widget:"text"},{key:"avatar",label:"Avatar",widget:"image"}],categories:[{key:"name",label:"Name",widget:"text"},{key:"slug",label:"Slug",widget:"text",placeholder:"my-category"}]},q={authors:"Author",categories:"Category"};function Lr(P){const t=C.c(34),{orgSlug:v,virtualMcpId:j,branch:f,kind:p,blockKey:y,block:w}=P;let u;t[0]!==f||t[1]!==v||t[2]!==j?(u={orgSlug:v,virtualMcpId:j,branch:f},t[0]=f,t[1]=v,t[2]=j,t[3]=u):u=t[3];const m=R(u);let d;t[4]!==w||t[5]!==p?(d=D(w,p),t[4]=w,t[5]=p,t[6]=d):d=t[6];const B=d;let h;t[7]!==y||t[8]!==p||t[9]!==m?(h=e=>{m.mutate({blockKey:y,data:J(y,p,e)})},t[7]=y,t[8]=p,t[9]=m,t[10]=h):h=t[10];const[i,E]=K(B,h);let k;t[11]!==i||t[12]!==E?(k=(e,o)=>E({...i,[e]:o}),t[11]=i,t[12]=E,t[13]=k):k=t[13];const a=k,N=q[p];let s;t[14]!==N?(s=r.jsx("span",{className:"text-sm font-medium",children:N}),t[14]=N,t[15]=s):s=t[15];let l;t[16]!==m.isError||t[17]!==m.isPending?(l=r.jsx(M,{isPending:m.isPending,isError:m.isError}),t[16]=m.isError,t[17]=m.isPending,t[18]=l):l=t[18];let n;t[19]!==s||t[20]!==l?(n=r.jsxs("div",{className:"flex h-12 shrink-0 items-center justify-between border-b px-6",children:[s,l]}),t[19]=s,t[20]=l,t[21]=n):n=t[21];const I=$[p];let c;if(t[22]!==i||t[23]!==a||t[24]!==I){let e;t[26]!==i||t[27]!==a?(e=o=>r.jsx("div",{className:"space-y-2",children:o.widget==="image"?r.jsx(A,{schema:{type:"string",format:"image-uri",title:o.label},value:i[o.key],onChange:x=>a(o.key,x),path:o.key,label:o.label}):r.jsxs(r.Fragment,{children:[r.jsx(T,{htmlFor:o.key,children:o.label}),o.widget==="textarea"?r.jsx(L,{id:o.key,value:S(i[o.key]),onChange:x=>a(o.key,x.target.value),rows:3}):r.jsx(F,{id:o.key,value:S(i[o.key]),placeholder:o.placeholder,onChange:x=>a(o.key,x.target.value),className:"h-10"})]})},o.key),t[26]=i,t[27]=a,t[28]=e):e=t[28],c=I.map(e),t[22]=i,t[23]=a,t[24]=I,t[25]=c}else c=t[25];let g;t[29]!==c?(g=r.jsx("div",{className:"min-w-0 flex-1 overflow-y-auto px-6 py-6",children:r.jsx("div",{className:"mx-auto max-w-xl space-y-6",children:c})}),t[29]=c,t[30]=g):g=t[30];let b;return t[31]!==g||t[32]!==n?(b=r.jsxs("div",{className:"flex h-full flex-col",children:[n,g]}),t[31]=g,t[32]=n,t[33]=b):b=t[33],b}export{Lr as RecordEditor};
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/registry-layout-D_1w2T32.js","assets/index-Dv-yFpKM.js","assets/index-DfYyH4IW.css","assets/XCircle-B_UH_gQt.js","assets/CheckCircle-B7v5_MG4.js","assets/Container-C41D-bwR.js","assets/Settings02-D0kdZjJD.js","assets/use-mcp-client-C8ZwZB20.js","assets/auth-DTxUlSLU.js","assets/useInfiniteQuery-G_6i7LOo.js","assets/use-infinite-scroll-D4S3aGR5.js","assets/studio-tools-DP4PwlLL.js","assets/badge-CGZjMX2o.js","assets/input-B16LqKMQ.js","assets/dropdown-menu-DA6--pO3.js","assets/Check-CNRVH6xs.js","assets/ChevronRight-DixPnH3V.js","assets/DotsVertical-DimB1qZR.js","assets/table-BY5hmAW9.js","assets/toggle-group-PAs-hpFv.js","assets/use-view-mode-BRITAZ4S.js","assets/tooltip-DyNW-AXf.js","assets/FilterLines-htpqKUqo.js","assets/Globe01-CxF-Z8O2.js","assets/SearchMd-2GibIebB.js","assets/dialog-dItkri_7.js","assets/X-DxE022Fo.js","assets/AlertCircle-asB0zjf2.js","assets/Upload01-d_Wyw7QT.js","assets/alert-dialog-DUUnhBc6.js","assets/card-BlzflWCA.js","assets/Trash01-rpak8qu1.js","assets/label-DfTmRnMe.js","assets/select-CXfOBpVA.js","assets/ChevronDown-BKkz3Gyp.js","assets/ChevronUp-BeDEmrn1.js","assets/switch-Dlc-euH4.js","assets/textarea-Dc7UpW7V.js","assets/RefreshCcw01-Dd5D2uNm.js","assets/checkbox-C1s8UE6Y.js","assets/Eye-CFpoJQMe.js","assets/LinkExternal01-AylVRyuU.js","assets/use-copy-fHv0q1pV.js","assets/Key01-CDAkGspz.js","assets/Plus-DcxLSicT.js","assets/mcp-oauth-BoL_9gDY.js","assets/Play-aa6uUei5.js"])))=>i.map(i=>d[i]);
2
- import{e as i,j as e,r as s,l as a,_ as o}from"./index-Dv-yFpKM.js";import{R as l}from"./require-capability-BYMVx09Z.js";import"./use-capability-Bw0k887i.js";import"./access-gate-u6bqRJWi.js";import"./capability-load-error-DWbE5k9a.js";const m=s.lazy(()=>o(()=>import("./registry-layout-D_1w2T32.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46])));function f(){const r=i.c(1);let t;return r[0]===Symbol.for("react.memo_cache_sentinel")?(t=e.jsx(l,{capability:"registry:manage",area:"the registry",children:e.jsx(s.Suspense,{fallback:e.jsx("div",{className:"flex-1 flex items-center justify-center",children:e.jsx(a,{size:20,className:"animate-spin text-muted-foreground"})}),children:e.jsx(m,{})})}),r[0]=t):t=r[0],t}export{f as default};
@@ -1 +0,0 @@
1
- import{p as c}from"./header-tab-button-eoCiDxtu.js";function t(r){return(e,a)=>{c(e),r(e,a)}}export{t as c};
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/registry-layout-D_1w2T32.js","assets/index-Dv-yFpKM.js","assets/index-DfYyH4IW.css","assets/XCircle-B_UH_gQt.js","assets/CheckCircle-B7v5_MG4.js","assets/Container-C41D-bwR.js","assets/Settings02-D0kdZjJD.js","assets/use-mcp-client-C8ZwZB20.js","assets/auth-DTxUlSLU.js","assets/useInfiniteQuery-G_6i7LOo.js","assets/use-infinite-scroll-D4S3aGR5.js","assets/studio-tools-DP4PwlLL.js","assets/badge-CGZjMX2o.js","assets/input-B16LqKMQ.js","assets/dropdown-menu-DA6--pO3.js","assets/Check-CNRVH6xs.js","assets/ChevronRight-DixPnH3V.js","assets/DotsVertical-DimB1qZR.js","assets/table-BY5hmAW9.js","assets/toggle-group-PAs-hpFv.js","assets/use-view-mode-BRITAZ4S.js","assets/tooltip-DyNW-AXf.js","assets/FilterLines-htpqKUqo.js","assets/Globe01-CxF-Z8O2.js","assets/SearchMd-2GibIebB.js","assets/dialog-dItkri_7.js","assets/X-DxE022Fo.js","assets/AlertCircle-asB0zjf2.js","assets/Upload01-d_Wyw7QT.js","assets/alert-dialog-DUUnhBc6.js","assets/card-BlzflWCA.js","assets/Trash01-rpak8qu1.js","assets/label-DfTmRnMe.js","assets/select-CXfOBpVA.js","assets/ChevronDown-BKkz3Gyp.js","assets/ChevronUp-BeDEmrn1.js","assets/switch-Dlc-euH4.js","assets/textarea-Dc7UpW7V.js","assets/RefreshCcw01-Dd5D2uNm.js","assets/checkbox-C1s8UE6Y.js","assets/Eye-CFpoJQMe.js","assets/LinkExternal01-AylVRyuU.js","assets/use-copy-fHv0q1pV.js","assets/Key01-CDAkGspz.js","assets/Plus-DcxLSicT.js","assets/mcp-oauth-BoL_9gDY.js","assets/Play-aa6uUei5.js"])))=>i.map(i=>d[i]);
2
- import{e as m,f as n,g as c,j as t,l as f,r as l,_ as p}from"./index-Dv-yFpKM.js";import{R as u}from"./require-capability-BYMVx09Z.js";import"./use-capability-Bw0k887i.js";import"./access-gate-u6bqRJWi.js";import"./capability-load-error-DWbE5k9a.js";const g=l.lazy(()=>p(()=>import("./registry-layout-D_1w2T32.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46])));function j(){const e=m.c(5),i=n();let s;e[0]===Symbol.for("react.memo_cache_sentinel")?(s={from:"/shell/$org"},e[0]=s):s=e[0];const{org:o}=c(s);let r;e[1]===Symbol.for("react.memo_cache_sentinel")?(r=t.jsx("div",{className:"h-full flex items-center justify-center",children:t.jsx(f,{size:20,className:"animate-spin text-muted-foreground"})}),e[1]=r):r=e[1];let a;return e[2]!==i||e[3]!==o?(a=t.jsx(u,{capability:"registry:manage",area:"the registry",children:t.jsx(l.Suspense,{fallback:r,children:t.jsx(g,{onBack:()=>i({to:"/$org/settings/store",params:{org:o}})})})}),e[2]=i,e[3]=o,e[4]=a):a=e[4],a}export{j as default};
@@ -1 +0,0 @@
1
- import{I as u}from"./use-infinite-scroll-D4S3aGR5.js";import{cD as i}from"./index-Dv-yFpKM.js";function t(e,r){return i(e,u,r)}export{t as u};
@@ -1 +0,0 @@
1
- import{I as s}from"./use-infinite-scroll-D4S3aGR5.js";import{cD as u,aC as n}from"./index-Dv-yFpKM.js";function a(r,e){return u({...r,enabled:!0,suspense:!0,throwOnError:n},s,e)}export{a as u};
@@ -1 +0,0 @@
1
- import{e as s,g as l,j as o,l as a,E as n,r as c}from"./index-Dv-yFpKM.js";import{a as f}from"./index-cSwj9er3.js";import"./index-CQVYoK7e.js";import"./use-mcp-client-C8ZwZB20.js";import"./auth-DTxUlSLU.js";import"./collections-Dg2-DQoz.js";import"./index-CYZk0gv3.js";import"./use-virtual-mcp-DLQJqd7d.js";import"./use-collections-DGD5HYrs.js";import"./monaco-editor-CEYWUBYY.js";import"./index-Dilf6iGE.js";import"./spinner-C76OMH7i.js";import"./resizable-DTSOtBpc.js";import"./ZoomOut-BkCtUzuC.js";import"./badge-CGZjMX2o.js";import"./select-CXfOBpVA.js";import"./tooltip-DyNW-AXf.js";import"./Check-CNRVH6xs.js";import"./ChevronDown-BKkz3Gyp.js";import"./ChevronUp-BeDEmrn1.js";import"./view-mode-toggle-D_5X7-ae.js";import"./agent-icon-BrUPk7cd.js";import"./AlertCircle-asB0zjf2.js";import"./Tool01-DNz0OMpT.js";import"./SwitchHorizontal01-qUOmQUUG.js";import"./RefreshCcw01-Dd5D2uNm.js";import"./XCircle-B_UH_gQt.js";import"./ArrowUpRight-DRnt_VKh.js";import"./ZapSquare-Dz4Qok6x.js";import"./Users03-B9AqN8LK.js";import"./CheckCircle-B7v5_MG4.js";import"./ChevronLeft-DkMFugke.js";import"./ChevronRight-DixPnH3V.js";import"./DotsVertical-DimB1qZR.js";import"./Container-C41D-bwR.js";import"./Eye-CFpoJQMe.js";import"./Globe01-CxF-Z8O2.js";import"./FilterLines-htpqKUqo.js";import"./Star01-BVQUiqS1.js";import"./Palette-D9_6t0uI.js";import"./HardDrive-TXw7C9gB.js";import"./Stars02-BFz8RQ16.js";import"./Key01-CDAkGspz.js";import"./LayoutLeft-BG08KNqc.js";import"./LinkExternal01-AylVRyuU.js";import"./Monitor01-gdKmZQTW.js";import"./Sun-DMcKqqHE.js";import"./Play-aa6uUei5.js";import"./Plus-DcxLSicT.js";import"./SearchMd-2GibIebB.js";import"./Settings02-D0kdZjJD.js";import"./Shield01-CpxvRW7h.js";import"./Stars01-B2PA7s4d.js";import"./Trash01-rpak8qu1.js";import"./Upload01-d_Wyw7QT.js";import"./User01-BWllfXHj.js";import"./Users01-DG6YdAo1.js";import"./XClose-DOt_DYPz.js";import"./X-DxE022Fo.js";import"./Zap-CyMJw7DY.js";import"./layout-BCfLVStg.js";import"./index-CfhwhmtA.js";import"./sidebar-nhuTSqFS.js";import"./sheet-DwJxE17f.js";import"./use-connection-XtO-eFJi.js";import"./use-mcp-tools-BW-64A4f.js";import"./dialog-dItkri_7.js";import"./scroll-area-CGmfUT4q.js";import"./index-DkJOKUiK.js";import"./hover-card-DuwXdrhz.js";import"./dropdown-menu-DA6--pO3.js";import"./integration-icon-7cYHs9rV.js";import"./accordion-B7oL0ZOw.js";import"./index-BOvqwG23.js";import"./empty-state-ubN3bG68.js";import"./watch-sse-pool-rXavNycp.js";import"./input-B16LqKMQ.js";function Ct(){const t=s.c(4);let r;t[0]===Symbol.for("react.memo_cache_sentinel")?(r={from:"/shell/$org/settings/workflows/$itemId"},t[0]=r):r=t[0];const{itemId:e}=l(r);let i;t[1]===Symbol.for("react.memo_cache_sentinel")?(i=o.jsx("div",{className:"flex h-full items-center justify-center",children:o.jsx(a,{size:32,className:"animate-spin text-muted-foreground"})}),t[1]=i):i=t[1];const p=decodeURIComponent(e);let m;return t[2]!==p?(m=o.jsx(n,{children:o.jsx(c.Suspense,{fallback:i,children:o.jsx(f,{itemId:p})})}),t[2]=p,t[3]=m):m=t[3],m}export{Ct as default};