decocms 4.310.2 → 4.310.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (239) hide show
  1. package/dist/client/assets/{AlertCircle-kWgHn4IQ.js → AlertCircle-DJonhVdG.js} +1 -1
  2. package/dist/client/assets/{AreaChart-BkXXaVIa.js → AreaChart-DsFq7END.js} +1 -1
  3. package/dist/client/assets/{ArrowLeft-DxGw_uLy.js → ArrowLeft-Bkz7SIKi.js} +1 -1
  4. package/dist/client/assets/{ArrowUp-DNnOVKJs.js → ArrowUp-BKaFS8mD.js} +1 -1
  5. package/dist/client/assets/{Check-BVx9YOXu.js → Check-mD-DtqN0.js} +1 -1
  6. package/dist/client/assets/{CheckCircle-D1DcaIZK.js → CheckCircle-DTmy61fU.js} +1 -1
  7. package/dist/client/assets/{ChevronDown-BMWBxIB5.js → ChevronDown-D94RcoKZ.js} +1 -1
  8. package/dist/client/assets/{ChevronRight-ljieVBiC.js → ChevronRight-8NqQFgiZ.js} +1 -1
  9. package/dist/client/assets/{ChevronSelectorVertical-_1NOk9hw.js → ChevronSelectorVertical-CQT9TKC8.js} +1 -1
  10. package/dist/client/assets/{ChevronUp-D-egQncL.js → ChevronUp-DBUTHzIQ.js} +1 -1
  11. package/dist/client/assets/{Copy01-CSTDc8TL.js → Copy01-BEjgitsb.js} +1 -1
  12. package/dist/client/assets/{CreditCard01-BHqSj2so.js → CreditCard01-CusOOy0h.js} +1 -1
  13. package/dist/client/assets/{DotsVertical-Q5i8IgND.js → DotsVertical-DSuVzBIM.js} +1 -1
  14. package/dist/client/assets/{Download01-DCp73E7B.js → Download01-D_GdLnvJ.js} +1 -1
  15. package/dist/client/assets/{Eye-LXMOI_9n.js → Eye-C27bayV3.js} +1 -1
  16. package/dist/client/assets/{FilterLines-CPHI360h.js → FilterLines-Dg1EUluK.js} +1 -1
  17. package/dist/client/assets/{GitBranch01-CSeAbSTQ.js → GitBranch01-Be1KJS_N.js} +1 -1
  18. package/dist/client/assets/{Globe01-DZi3TBVV.js → Globe01-elRBc4qm.js} +1 -1
  19. package/dist/client/assets/{Globe04-BFVotwwz.js → Globe04-hf2s5ZRq.js} +1 -1
  20. package/dist/client/assets/{HardDrive-INGofqIi.js → HardDrive-V-YshFPu.js} +1 -1
  21. package/dist/client/assets/{Image01-D-ufY8ah.js → Image01-1g5B7KFt.js} +1 -1
  22. package/dist/client/assets/{Key01-Cdldja4X.js → Key01-Blwt5-Vc.js} +1 -1
  23. package/dist/client/assets/{LinkExternal01-9cNzPw_a.js → LinkExternal01-GYYCkFOK.js} +1 -1
  24. package/dist/client/assets/{LockUnlocked01-B3EUzpAL.js → LockUnlocked01-liaICEVO.js} +1 -1
  25. package/dist/client/assets/{LogOut01-g-gIa76Z.js → LogOut01-DrDG6ZD1.js} +1 -1
  26. package/dist/client/assets/{Monitor01-Cnwk4FDP.js → Monitor01-bg-hm9zg.js} +1 -1
  27. package/dist/client/assets/{Package-CDYNL6L_.js → Package-DGJJy_vX.js} +1 -1
  28. package/dist/client/assets/{Palette-CofLXHPZ.js → Palette-D6ptnsAV.js} +1 -1
  29. package/dist/client/assets/{Play-7V8txJdo.js → Play-Bjj-PlEA.js} +1 -1
  30. package/dist/client/assets/{Plus-I16T1HEg.js → Plus-BYa4csM-.js} +1 -1
  31. package/dist/client/assets/{SearchLg-nuJY54Qs.js → SearchLg-t2Psufi0.js} +1 -1
  32. package/dist/client/assets/{SearchMd-D9_7PaAP.js → SearchMd-Dn_XhLLa.js} +1 -1
  33. package/dist/client/assets/{Settings02-2lgb_-a7.js → Settings02-DXOK36dI.js} +1 -1
  34. package/dist/client/assets/{Share07-C8hp-Dh8.js → Share07-D286I9hj.js} +1 -1
  35. package/dist/client/assets/{Shield01-DgpD1W7N.js → Shield01-CwFsR19F.js} +1 -1
  36. package/dist/client/assets/{Stars01-BZB-WsWZ.js → Stars01-DsKmZqgX.js} +1 -1
  37. package/dist/client/assets/{Stars02-DbaSZJ1_.js → Stars02-DHmErj5u.js} +1 -1
  38. package/dist/client/assets/{Sun-BKwNWKmk.js → Sun-BPJfSfF8.js} +1 -1
  39. package/dist/client/assets/{SwitchHorizontal01-shSg9y4N.js → SwitchHorizontal01-BKtlhVyx.js} +1 -1
  40. package/dist/client/assets/{Tool01-DVnHUWuE.js → Tool01-Qv8lG32L.js} +1 -1
  41. package/dist/client/assets/{Tool02-CDgT8518.js → Tool02-AD8agPSM.js} +1 -1
  42. package/dist/client/assets/{Trash01-CI3OmtEj.js → Trash01-Buijt4Q5.js} +1 -1
  43. package/dist/client/assets/{TrendUp01-CSq9BwXN.js → TrendUp01-fqZEA7e3.js} +1 -1
  44. package/dist/client/assets/{Upload01-CyxtNOIA.js → Upload01-F98BnZk1.js} +1 -1
  45. package/dist/client/assets/{User01-ByJfabC6.js → User01-Cr4UiHek.js} +1 -1
  46. package/dist/client/assets/{UserSquare-DBrgxgAk.js → UserSquare-C_C3DpjB.js} +1 -1
  47. package/dist/client/assets/{Users01-Dlr-XsBB.js → Users01-9Nx4ozac.js} +1 -1
  48. package/dist/client/assets/{Users03-Ngtmjy-3.js → Users03-OlV7vDNK.js} +1 -1
  49. package/dist/client/assets/{XCircle-BmUbfHst.js → XCircle-DfbmzAj0.js} +1 -1
  50. package/dist/client/assets/{XClose-C-cGT_KM.js → XClose-4GnIpYr0.js} +1 -1
  51. package/dist/client/assets/{YAxis-BPxXTC27.js → YAxis-DBTDSLNG.js} +1 -1
  52. package/dist/client/assets/{Zap-C00XIwCF.js → Zap-Jm8nf3_v.js} +1 -1
  53. package/dist/client/assets/{ZapSquare-DbeH_ePh.js → ZapSquare-d-eyxTxv.js} +1 -1
  54. package/dist/client/assets/{ZoomOut-C_RaMXtx.js → ZoomOut-6ZMgK8t1.js} +1 -1
  55. package/dist/client/assets/{access-gate-CDLkVhIQ.js → access-gate-CDkOddfq.js} +1 -1
  56. package/dist/client/assets/{agent-icon-VV70ZcKT.js → agent-icon-D0Shlc8p.js} +1 -1
  57. package/dist/client/assets/{agents-list-CtDAz9Nb.js → agents-list-BWpgYDzT.js} +1 -1
  58. package/dist/client/assets/{ai-providers-B-ukR7Cu.js → ai-providers-DqVkgRHM.js} +1 -1
  59. package/dist/client/assets/{alert-Dmvust15.js → alert-DAKMpmdR.js} +1 -1
  60. package/dist/client/assets/{alert-dialog-Bhh07wJM.js → alert-dialog-D5JasTjf.js} +1 -1
  61. package/dist/client/assets/{api-keys-WASXRsR8.js → api-keys-Cguu_izO.js} +1 -1
  62. package/dist/client/assets/{app-editor-BBd4Y02t.js → app-editor-BwL3hEdw.js} +1 -1
  63. package/dist/client/assets/{auth-CxoASLMn.js → auth-7kirydcJ.js} +1 -1
  64. package/dist/client/assets/{auth-catchall-DAHN9lLS.js → auth-catchall-CqVBq_p2.js} +1 -1
  65. package/dist/client/assets/{auth-entry-CGVggUjU.js → auth-entry-DRy8OnAs.js} +1 -1
  66. package/dist/client/assets/{auth-split-layout-BdgEM_wV.js → auth-split-layout-DmV3heGI.js} +1 -1
  67. package/dist/client/assets/{authenticate-and-persist-oauth-B06Kh85-.js → authenticate-and-persist-oauth-D0DOcHsY.js} +1 -1
  68. package/dist/client/assets/{automation-list-row-CSuM0E7Y.js → automation-list-row-CiuIlrLd.js} +1 -1
  69. package/dist/client/assets/{automation-runs-dQhOz_ue.js → automation-runs-DX9xIym0.js} +1 -1
  70. package/dist/client/assets/{automations-CDoda176.js → automations-Ck9Z9dfO.js} +1 -1
  71. package/dist/client/assets/{avatar-C435NjmX.js → avatar-C-dE66VS.js} +1 -1
  72. package/dist/client/assets/{badge-DtA5FQKJ.js → badge-Dz8AC9f0.js} +1 -1
  73. package/dist/client/assets/block-document-DofO1qE_.js +3 -0
  74. package/dist/client/assets/{breadcrumb-Baj-Maj5.js → breadcrumb-BxiGwbLI.js} +1 -1
  75. package/dist/client/assets/{buckets-CeM8Oabh.js → buckets-DG12-1Aw.js} +1 -1
  76. package/dist/client/assets/{bulk-category-panel-DPDGnuTv.js → bulk-category-panel-DcpO4T0M.js} +1 -1
  77. package/dist/client/assets/{capability-load-error-Decd13lK.js → capability-load-error-BYXTrWLw.js} +1 -1
  78. package/dist/client/assets/{cards-CMxS_3lP.js → cards-DuXjGDsM.js} +1 -1
  79. package/dist/client/assets/{category-editor-Cgspsn1K.js → category-editor-CYrIWlky.js} +1 -1
  80. package/dist/client/assets/{chart-ymkfk5sr.js → chart-XifLPyHW.js} +1 -1
  81. package/dist/client/assets/{chat-context-Big5kqHK.js → chat-context-Dd55GvDB.js} +1 -1
  82. package/dist/client/assets/{checkbox-CobOcHnt.js → checkbox-CXJFK_EG.js} +1 -1
  83. package/dist/client/assets/{choose-editor-B5-DUCqV.js → choose-editor-DyuqWx0i.js} +1 -1
  84. package/dist/client/assets/{cli-auth-success-DvMnQm4d.js → cli-auth-success-DiEY0pvk.js} +1 -1
  85. package/dist/client/assets/{collection-detail-Co-ddwFU.js → collection-detail-BHdxFAPX.js} +1 -1
  86. package/dist/client/assets/{collection-display-button-D99QTtyp.js → collection-display-button-B8tCi0cT.js} +1 -1
  87. package/dist/client/assets/{collection-search-uks1Pwdo.js → collection-search-CYedYlUy.js} +1 -1
  88. package/dist/client/assets/{collection-table-wrapper-IpT3mgq8.js → collection-table-wrapper-BWyyWHB5.js} +1 -1
  89. package/dist/client/assets/{collection-tabs-DMHghSWH.js → collection-tabs-CrWMxf16.js} +1 -1
  90. package/dist/client/assets/{command-Fmvdykj-.js → command-p6GHNLLc.js} +1 -1
  91. package/dist/client/assets/{commerce-onboarding-CvU2DoHM.js → commerce-onboarding-DFR4DAG5.js} +1 -1
  92. package/dist/client/assets/{config-CoV9V7ZC.js → config-BtEev4hf.js} +1 -1
  93. package/dist/client/assets/{connect-DYiwPuak.js → connect-CisP0qF3.js} +1 -1
  94. package/dist/client/assets/{connection-BWR07bXP.js → connection-BD5F6Lsg.js} +1 -1
  95. package/dist/client/assets/{connection-card-CkMgVwAR.js → connection-card-DE5SgU8M.js} +1 -1
  96. package/dist/client/assets/{connection-detail-FacO-kC2.js → connection-detail-ClsKcw0S.js} +1 -1
  97. package/dist/client/assets/{connection-form-helpers-CzED2ayf.js → connection-form-helpers-DmaDh6zu.js} +1 -1
  98. package/dist/client/assets/{connections-MW8rd7j_.js → connections-jGs_2TMG.js} +1 -1
  99. package/dist/client/assets/{decopilot-sse-pool-B2vCi26y.js → decopilot-sse-pool-PMRGLxBy.js} +1 -1
  100. package/dist/client/assets/{dialog-R3BwUxR3.js → dialog-Dcp5r6a5.js} +1 -1
  101. package/dist/client/assets/{domain-settings-1AIJtf6J.js → domain-settings-DblrJv4v.js} +1 -1
  102. package/dist/client/assets/{drawer-C_T4c5JR.js → drawer-BIcmO5ah.js} +1 -1
  103. package/dist/client/assets/{dropdown-menu-PA3aj7BF.js → dropdown-menu-DcW0USxm.js} +1 -1
  104. package/dist/client/assets/{editor-BEaD6QNx.js → editor-DF_h-0xz.js} +1 -1
  105. package/dist/client/assets/{empty-state-CK4LZF_p.js → empty-state-8T6eyvzW.js} +1 -1
  106. package/dist/client/assets/{extract-connection-data-LNGda8hd.js → extract-connection-data-CGb8SXl8.js} +1 -1
  107. package/dist/client/assets/{file-explorer-YimM4Krq.js → file-explorer-CSJZ-B3n.js} +1 -1
  108. package/dist/client/assets/{file-type-icon-DVn7z9dh.js → file-type-icon-DwHg2ZVU.js} +1 -1
  109. package/dist/client/assets/{folder-icon-CN9InFVw.js → folder-icon-ZUk6JPbW.js} +1 -1
  110. package/dist/client/assets/{form-DBT1JYX9.js → form-c7eLpaVo.js} +1 -1
  111. package/dist/client/assets/{general-BC-Z2DY6.js → general-DXjg6LAy.js} +1 -1
  112. package/dist/client/assets/{github-repo-picker-Cj1YZBDg.js → github-repo-picker-CqouSGjl.js} +1 -1
  113. package/dist/client/assets/{hooks--f5dj5PU.js → hooks-Cvz7lzo5.js} +1 -1
  114. package/dist/client/assets/{index-Cf-53TKv.js → index-B3KhnLXb.js} +11 -11
  115. package/dist/client/assets/{index-CInJxG4t.js → index-B6hjsur2.js} +1 -1
  116. package/dist/client/assets/{index-DRIKsaem.js → index-CTWb3V2Q.js} +1 -1
  117. package/dist/client/assets/{index-BZxu7Cjt.js → index-Cy3Ylpjy.js} +1 -1
  118. package/dist/client/assets/{index-DqC1_vgC.js → index-D8MgmRLV.js} +17 -7
  119. package/dist/client/assets/{index-CtHbA8Vd.js → index-DSSMedN0.js} +1 -1
  120. package/dist/client/assets/{index-ChPjeHOC.js → index-H7A4Bgz_.js} +1 -1
  121. package/dist/client/assets/{index-P5mUKlAE.js → index-MFsQkbEJ.js} +1 -1
  122. package/dist/client/assets/{index-BpUC5BIb.js → index-YWSGCz3Q.js} +1 -1
  123. package/dist/client/assets/{index-redirect-DldOSXRN.js → index-redirect-BM1elUdi.js} +1 -1
  124. package/dist/client/assets/{infra-billing-Dr5FOThv.js → infra-billing-zfgxdO24.js} +1 -1
  125. package/dist/client/assets/{input-CvDneLXz.js → input-CPUWNZNB.js} +1 -1
  126. package/dist/client/assets/{integration-icon-qCtwO95y.js → integration-icon-D_78GL0n.js} +1 -1
  127. package/dist/client/assets/{invite-member-dialog-C5pmqfXh.js → invite-member-dialog-B-heiE1c.js} +1 -1
  128. package/dist/client/assets/{label-Bm3ner5Z.js → label-Dfi3ZI1T.js} +1 -1
  129. package/dist/client/assets/{layout-AfbdHWKb.js → layout-CMv-kyPa.js} +1 -1
  130. package/dist/client/assets/{login-DnMaxr_U.js → login-BGm9iyjA.js} +1 -1
  131. package/dist/client/assets/{markdown-57SDZ74w.js → markdown-CFKAKhHu.js} +1 -1
  132. package/dist/client/assets/{mcp-oauth-CasRqfOU.js → mcp-oauth-CCWOPzmF.js} +1 -1
  133. package/dist/client/assets/{members-Dkg1CSwy.js → members-DqWEBjUt.js} +1 -1
  134. package/dist/client/assets/{monaco-editor-BueFDsa5.js → monaco-editor-DddEav5q.js} +1 -1
  135. package/dist/client/assets/{monitoring-stats-row-ZIH8yqyw.js → monitoring-stats-row-DYpJnLSO.js} +1 -1
  136. package/dist/client/assets/{multi-select-B2WJSOXZ.js → multi-select-BCpJwe85.js} +1 -1
  137. package/dist/client/assets/{oauth-callback-BIPtNldH.js → oauth-callback-BJkiwq1t.js} +1 -1
  138. package/dist/client/assets/{oauth-callback-ai-provider-CL0skMzz.js → oauth-callback-ai-provider-DUo4HInz.js} +1 -1
  139. package/dist/client/assets/{onboarding-DQYxJNNK.js → onboarding-ByNW1GsC.js} +1 -1
  140. package/dist/client/assets/{org-layout-BUH4vYsm.js → org-layout-BP2LDslw.js} +1 -1
  141. package/dist/client/assets/{organization-choice-CMRt_n9T.js → organization-choice-BgB75HJA.js} +1 -1
  142. package/dist/client/assets/{orgs-DqaUiqAr.js → orgs-DAACqQSx.js} +1 -1
  143. package/dist/client/assets/{page-seo-form-DFqE2Nbw.js → page-seo-form-CKKHCrxX.js} +1 -1
  144. package/dist/client/assets/{popover-DyXC2iil.js → popover-ilduTOiR.js} +1 -1
  145. package/dist/client/assets/{post-calendar-BNBOG7Zb.js → post-calendar-P2UUWtJN.js} +1 -1
  146. package/dist/client/assets/{post-editor-DjUZZ4IL.js → post-editor-DRoswC6V.js} +1 -1
  147. package/dist/client/assets/{primitives-CwsGcR8l.js → primitives-Du2SxD14.js} +1 -1
  148. package/dist/client/assets/{profile-C2mEjJhP.js → profile-ke12dxPI.js} +1 -1
  149. package/dist/client/assets/{project-app-view-Du_4uW8F.js → project-app-view-BNM7_hxq.js} +1 -1
  150. package/dist/client/assets/{prompts-DO1fq4Uh.js → prompts-ChJwSF-O.js} +1 -1
  151. package/dist/client/assets/record-editor-DcJq9MA3.js +1 -0
  152. package/dist/client/assets/{redirect-editor-Lf1yvbJ7.js → redirect-editor-Brn9nQcs.js} +1 -1
  153. package/dist/client/assets/registry-CJSzjjHe.js +2 -0
  154. package/dist/client/assets/{registry-layout-C8yfb1Sp.js → registry-layout-CnZdY_wq.js} +1 -1
  155. package/dist/client/assets/{reports-C2y3RqIB.js → reports-CbbVImBa.js} +1 -1
  156. package/dist/client/assets/{require-capability-taw_-g-t.js → require-capability-BUPRsboD.js} +1 -1
  157. package/dist/client/assets/{required-auth-layout-qJt2qf8P.js → required-auth-layout-CqnKuglD.js} +1 -1
  158. package/dist/client/assets/{reset-password-Dqbn-F37.js → reset-password-BrWp4rIy.js} +1 -1
  159. package/dist/client/assets/{review-settings-BztrxG-Y.js → review-settings-BXOzCnI9.js} +1 -1
  160. package/dist/client/assets/{roles-C7AKdcwT.js → roles-BBAKkNej.js} +1 -1
  161. package/dist/client/assets/{scroll-area-AxpE-p0Y.js → scroll-area-BY21VxuT.js} +1 -1
  162. package/dist/client/assets/{search-input-CNeZhQg3.js → search-input-Bc9FOq_o.js} +1 -1
  163. package/dist/client/assets/{secrets-DKHAKuou.js → secrets-CghbmjYl.js} +1 -1
  164. package/dist/client/assets/{sections-editor-C3WMk38v.js → sections-editor-Dmap1b3L.js} +1 -1
  165. package/dist/client/assets/{select-DAM7FkOT.js → select-BD8GOKZB.js} +1 -1
  166. package/dist/client/assets/{select-model-oiU9nX6m.js → select-model-XJ81hG3M.js} +1 -1
  167. package/dist/client/assets/{self-tool-result-Cwl2dAXp.js → self-tool-result-BZGzKhws.js} +1 -1
  168. package/dist/client/assets/{seo-editor-CPDHXsH_.js → seo-editor-CvvMo8h3.js} +1 -1
  169. package/dist/client/assets/{settings-layout-C42ECLZZ.js → settings-layout-DgwWQZR2.js} +1 -1
  170. package/dist/client/assets/{shell-controls-B3gGeT0Q.js → shell-controls-Bo44krkE.js} +1 -1
  171. package/dist/client/assets/{shell-layout-6QNCHwFH.js → shell-layout-Bb86kxxo.js} +1 -1
  172. package/dist/client/assets/{skill-preview-WcOlbBeI.js → skill-preview-Bnm8Pv5k.js} +1 -1
  173. package/dist/client/assets/{skills-DTC_XzZN.js → skills-CAd0BaYd.js} +1 -1
  174. package/dist/client/assets/{spinner-CrBK2tr-.js → spinner-qkjd7zoW.js} +1 -1
  175. package/dist/client/assets/{sso-CvwB3ux0.js → sso-CnrQnRGh.js} +1 -1
  176. package/dist/client/assets/{store-DdNWDfh2.js → store-D0KtL_XF.js} +1 -1
  177. package/dist/client/assets/store-registry-TsX4qq7r.js +2 -0
  178. package/dist/client/assets/{super-agent-icon-DSyM4FgM.js → super-agent-icon-CUf_bLr2.js} +1 -1
  179. package/dist/client/assets/{switch-CM1tH1Pt.js → switch-BnlVGW5o.js} +1 -1
  180. package/dist/client/assets/{synced-repos-Dq3H7GCf.js → synced-repos-BRVDPkz8.js} +1 -1
  181. package/dist/client/assets/{table-BV2tS86_.js → table-Cok1Z08o.js} +1 -1
  182. package/dist/client/assets/{tabs-B3xtZByj.js → tabs-D7ArrgBd.js} +1 -1
  183. package/dist/client/assets/{task-board-WbpjCihq.js → task-board-DoDm5QwI.js} +1 -1
  184. package/dist/client/assets/{tasks-DEYzUMbq.js → tasks-Q5IeLvtD.js} +1 -1
  185. package/dist/client/assets/{textarea-DCDbSqDw.js → textarea-_DAyS2_8.js} +1 -1
  186. package/dist/client/assets/{thread-route-C3Fiawna.js → thread-route-czbOAt0B.js} +1 -1
  187. package/dist/client/assets/{toggle-group-BV7vL4Z0.js → toggle-group-CRMxDk8H.js} +1 -1
  188. package/dist/client/assets/{toolbar-BbsbxU65.js → toolbar-UCyDx7GI.js} +1 -1
  189. package/dist/client/assets/{track-6lV2GjfG.js → track-Bt5dU3fl.js} +1 -1
  190. package/dist/client/assets/{types-Bg1ns-wW.js → types-B5ca_7Db.js} +1 -1
  191. package/dist/client/assets/{use-ai-providers-D0TcA9v-.js → use-ai-providers-B_DrwB6g.js} +1 -1
  192. package/dist/client/assets/{use-api-keys-BsT5kEBx.js → use-api-keys-BK_SwvEc.js} +1 -1
  193. package/dist/client/assets/{use-automations-BF7k6Fd2.js → use-automations-DcIRuWCn.js} +1 -1
  194. package/dist/client/assets/{use-autosave-CQqSOI5m.js → use-autosave-BhLZ_r-a.js} +1 -1
  195. package/dist/client/assets/{use-connection-DxhRbLn8.js → use-connection-tgul-1SP.js} +1 -1
  196. package/dist/client/assets/{use-copy-CYQ6w0ov.js → use-copy-DbpY8Hvg.js} +1 -1
  197. package/dist/client/assets/{use-create-virtual-mcp-sP16F0zQ.js → use-create-virtual-mcp-DDaVUXjD.js} +1 -1
  198. package/dist/client/assets/{use-debounced-autosave-BwCwpYB6.js → use-debounced-autosave-CbbUb73W.js} +1 -1
  199. package/dist/client/assets/{use-debounced-value-ov0_eYfv.js → use-debounced-value-Bj7CfiU-.js} +1 -1
  200. package/dist/client/assets/{use-decopilot-events-DK1A_lB0.js → use-decopilot-events-OxmE95iX.js} +1 -1
  201. package/dist/client/assets/{use-delete-connection-KcXWA-7z.js → use-delete-connection-EH3OF4Er.js} +1 -1
  202. package/dist/client/assets/{use-deployment-admin-DEm-61Dh.js → use-deployment-admin-Ce0eMrSX.js} +1 -1
  203. package/dist/client/assets/{use-destination-route-Df615K8G.js → use-destination-route-Cqw1qTcz.js} +1 -1
  204. package/dist/client/assets/{use-file-configs-C1Uh63rk.js → use-file-configs-DddeF7Nf.js} +1 -1
  205. package/dist/client/assets/{use-infinite-scroll-Yj3gQQ0y.js → use-infinite-scroll-DKU13Q_W.js} +1 -1
  206. package/dist/client/assets/{use-join-requests-CJpZud-l.js → use-join-requests-c4Wjl3Bj.js} +1 -1
  207. package/dist/client/assets/{use-mcp-auth-status-rdi52kD2.js → use-mcp-auth-status-BgAMMQWl.js} +1 -1
  208. package/dist/client/assets/{use-mcp-client-nzhsCi2V.js → use-mcp-client-D1ZG0muG.js} +1 -1
  209. package/dist/client/assets/{use-mcp-tools-BW8zFt4X.js → use-mcp-tools-Cw1XmZQx.js} +1 -1
  210. package/dist/client/assets/{use-members-B3GBDR_w.js → use-members-CAQpM100.js} +1 -1
  211. package/dist/client/assets/{use-navigate-to-agent-_hZQJBWT.js → use-navigate-to-agent-BwtdekK9.js} +1 -1
  212. package/dist/client/assets/{use-org-auth-client-EyGo94fd.js → use-org-auth-client-BMWXrebB.js} +1 -1
  213. package/dist/client/assets/{use-org-repo-syncs-CJ97pvHS.js → use-org-repo-syncs-DYEy0E1q.js} +1 -1
  214. package/dist/client/assets/{use-org-sso-BAGRPZBl.js → use-org-sso-X7kU2pLv.js} +1 -1
  215. package/dist/client/assets/{use-organization-roles-jrZ4x63O.js → use-organization-roles-Ca4GXux7.js} +1 -1
  216. package/dist/client/assets/{use-organization-settings-C4z6XGtQ.js → use-organization-settings-BISER6gA.js} +1 -1
  217. package/dist/client/assets/{use-panel-navigate-BjsbU49F.js → use-panel-navigate-_t5EvP3u.js} +1 -1
  218. package/dist/client/assets/{use-registry-connections-B50jp8_K.js → use-registry-connections-BkdUlHzw.js} +1 -1
  219. package/dist/client/assets/{use-secrets-DBC-C4ZP.js → use-secrets-e_5-9Gb_.js} +1 -1
  220. package/dist/client/assets/{use-section-preview-base-DkNEQek1.js → use-section-preview-base-q8nCXEC5.js} +1 -1
  221. package/dist/client/assets/{use-status-sounds-DoOXJIod.js → use-status-sounds-DKof4ZQ5.js} +1 -1
  222. package/dist/client/assets/{use-tags-70_8A3H0.js → use-tags-DelAIkmL.js} +1 -1
  223. package/dist/client/assets/{use-view-mode-B5rB6RQZ.js → use-view-mode-DZVwoo2-.js} +1 -1
  224. package/dist/client/assets/{use-virtual-mcp-D7M4G0ad.js → use-virtual-mcp-CxyJmy4d.js} +1 -1
  225. package/dist/client/assets/useInfiniteQuery-BLMIHI59.js +1 -0
  226. package/dist/client/assets/useSuspenseInfiniteQuery-DMDTb7Vn.js +1 -0
  227. package/dist/client/assets/{users-CBhodEZj.js → users-CWEOjjGQ.js} +1 -1
  228. package/dist/client/assets/{variant-calendar-C_lzqqQZ.js → variant-calendar-CE3kVA0E.js} +1 -1
  229. package/dist/client/assets/{view-mode-toggle-CdIDS7V-.js → view-mode-toggle-D8DKJyaI.js} +1 -1
  230. package/dist/client/index.html +1 -1
  231. package/dist/server/cli.js +1 -1
  232. package/dist/server/server.js +1 -1
  233. package/package.json +1 -1
  234. package/dist/client/assets/block-document-BgBrSFqa.js +0 -3
  235. package/dist/client/assets/record-editor-ChyzFxgi.js +0 -1
  236. package/dist/client/assets/registry-DNsUp4Fl.js +0 -2
  237. package/dist/client/assets/store-registry-_lnJ7aHp.js +0 -2
  238. package/dist/client/assets/useInfiniteQuery-t7OBeEHK.js +0 -1
  239. package/dist/client/assets/useSuspenseInfiniteQuery-B4HrZRkg.js +0 -1
@@ -2883,7 +2883,7 @@ Respond with the structured verdict and a short reason.`,Il$;var Ml$=D(()=>{l4()
2883
2883
  ${G.join(`
2884
2884
  `)}`:Y}function UU6($){let Z=new Set;for(let X of $)for(let Q of X.split(`
2885
2885
  `)){let Y=Q.trim();if(/^Co-authored-by:\s/i.test(Y))Z.add(Y)}return[...Z]}var Kd$=200,XU6=12,YU6,JU6=300,u71=3;var c71=D(()=>{aD();TT0();YU6={aheadBy:0,behindBy:0,files:[]}});function OU6($){if(!$||$.includes(".."))return!1;return BU6.test($)}function Fd$($){let Z=typeof $.__resolveType==="string"?$.__resolveType:null;if(!Z||!OU6(Z))return null;let{__resolveType:X,...Q}=$;return{resolveType:Z,payload:Q}}function Nd$($,Z){return`${$.replace(/\/+$/,"")}/deco/invoke/${Z}`}var BU6;var Ud$=D(()=>{BU6=/^[\w./@-]+$/});function za($,Z){let X=$?.githubRepo;if(!X?.owner||!X?.name)return null;if(!X.connectionId)return X;if(!Z.includes(X.connectionId))return null;return X}async function Bd$($,Z,X,Q){if(!Q.connectionId)throw new Av("Push requires a connected GitHub account. Connect mcp-github for this project and restart the sandbox.");let Y=$.organization?.id;if(!Y)throw new Av(K9);await xO({ctx:$,connectionId:Q.connectionId,organizationId:Y,forceRefresh:!0,onLegacyMintError:(F)=>{let N=F instanceof Error?F.message:K9;throw new Av(N)}});let{cloneUrl:G,gitUserName:J,gitUserEmail:W}=await SK(Q.connectionId,Q.owner,Q.name,$.db,$.vault).catch((F)=>{let{code:N,message:U}=s5$(F instanceof Error?F.message:String(F));throw N?new Av(U):F}),K=nu($),H=await Z.proxyDaemonRequest(X,"/_sandbox/config",{method:"PUT",headers:new Headers({"content-type":"application/json"}),body:JSON.stringify({git:{repository:{cloneUrl:G},identity:{userName:J,userEmail:W}},...K?{operator:K}:{}})});if(!H.ok){let F=await bO(H,DU6).catch(()=>H.statusText);throw Error(`Failed to refresh sandbox git credentials (${H.status}): ${F}`)}}var DU6=10485760,Av;var l71=D(()=>{WJ();UT0();Fn();Ci0();fy();Av=class Av extends Error{constructor($){super($);this.name="GitPushAuthError"}}});function wU6($){let Z=$.startsWith("thread:")?$.slice(7):$;if(!Z||Z.length>255||Z.includes("..")||Z.startsWith("/")||Z.endsWith("/")||Z.endsWith(".lock")||!LU6.test(Z))throw Error(`Invalid branch name: ${$}`)}function Tv($){return AbortSignal.any([$.req.raw.signal,AbortSignal.timeout(jU6)])}async function PU6($,Z){let X=$.var.studioContext,Q=GJ(Z.branch),Y=$.req.query("thread")??Q,G=Y&&Y===Q?Z.branchThread:Y?await X.storage.threads.get(Y).catch(()=>null):null,J=G?.virtual_mcp_id===Z.virtualMcpId?G:null,W=RC(J?.metadata?.runtime);if(W)return W;let K=ZD0(Z.virtualMcpMetadata),H=K==="cms"?await A71(X,{claimName:Z.claimName}):"alive",F=K==="cms"&&H!=="alive"?"cms":"sandbox",N=!!J&&(H==="gone"||H==="alive"&&K==="cms");if(N&&J)hn(X,J.id,F);if(K==="cms")console.log("sandbox proxy: no runtime stamp",{route:$.req.path,method:$.req.method,reason:J?"unstamped":"threadless",liveness:H,resolved:F,stamped:N});return F}async function AU6($){let Z=$.get("vmClaim");if(Z.runner)return Z.runner;try{return await YQ($.var.studioContext)}catch{return null}}function Rv($){let{runner:Z}=$.get("vmClaim");if(!Z)return $.json({error:"No sandbox runner configured"},503);return Z}async function au($){let{virtualMcpMetadata:Z,connectionIds:X}=$.get("vmClaim"),Q=$.var.studioContext,Y=za(Z,X);if(!Y)throw new h4(404,"AUTH","repo","Project has no GitHub repository");let G=o(Q);return BT0(Q,G.id,Y)}function d71($,Z){if(Z instanceof EA0)return $.json({error:Z.message},429,{...A5,...Z.retryAfterMs===null?{}:{"Retry-After":String(Math.ceil(Z.retryAfterMs/1000))}});if(Z instanceof h4){let Q=Z.status===404?404:Z.status===409||Z.status===422?409:502;return $.json({error:Z.message},Q,A5)}let X=Z instanceof Error?Z.message:String(Z);return $.json({error:X},502,A5)}async function Ld$($,Z,X){let Q;try{Q=await fetch(Z,X)}catch{return $.json({error:"Preview unreachable"},502)}let Y;try{Y=await Q.text()}catch{return $.json({error:"Preview unreachable"},502)}return new Response(Y,{status:Q.status,headers:{"content-type":Q.headers.get("content-type")??"application/json"}})}async function wd$($){try{let Z=await au($),X=await RT0(Z,$.get("vmClaim").branch);return $.json(X,200,A5)}catch(Z){return d71($,Z)}}function Pa($,Z){let Q=(MT0.get($)??Promise.resolve()).catch(()=>{}).then(Z),Y=Q.catch(()=>{});return MT0.set($,Y),Y.finally(()=>{if(MT0.get($)===Y)MT0.delete($)}),Q}async function eZ($,Z,X){if(!X?.runner&&$.get("vmClaim").runtime==="cms")return $.json({error:"sandbox not found: this session is sandbox-less"},404,A5);let Q=X?.runner??Rv($);if(Q instanceof Response)return Q;let{claimName:Y,userId:G,projectRef:J}=$.get("vmClaim"),W=X?.method??"POST",K=null,H=new Headers;if(X?.jsonBody!==void 0)K=X.jsonBody,H.set("content-type","application/json");else if(X?.forwardJsonBody)K=await $.req.text(),H.set("content-type","application/json");let F=X?.signal,N={method:W,headers:H,body:K,...F?{signal:F}:{}},U=async()=>{let B=await Q.proxyDaemonRequest(Y,Z,N);if(X?.map404to410&&B.status===404){try{await B.body?.cancel()}catch{}if(await Q.adoptLiveClaim({userId:G,projectRef:J},Y))B=await Q.proxyDaemonRequest(Y,Z,N);if(B.status===404){try{await B.body?.cancel()}catch{}return new Response(JSON.stringify({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."}),{status:410,headers:{"content-type":"application/json",...A5}})}}let O=await B.text(),L=X?.redactRepoDir?TU6(O):O,w=B.headers.get("content-type")??"application/json";return new Response(L,{status:B.status,headers:{"content-type":w,...A5}})};try{if(F){let B=U();return B.catch(()=>{}),await Promise.race([B,new Promise((L,w)=>{if(F.aborted)return w(F.reason);F.addEventListener("abort",()=>w(F.reason),{once:!0})})])}return await U()}catch(B){let O=B instanceof Error?B.message:String(B);return $.json({error:`Daemon unreachable: ${O}`},502)}}function TU6($){try{let Z=JSON.parse($);if(Z&&typeof Z==="object"&&!Array.isArray(Z)&&"repoDir"in Z)return JSON.stringify({...Z,repoDir:null})}catch{}return $}async function kT0($,Z,X,Q="GET",Y){let G=await $.proxyDaemonRequest(Z,X,{method:Q,headers:new Headers,body:null});if(G.status===404&&Y){try{await G.body?.cancel()}catch{}if(await $.adoptLiveClaim(Y,Z))G=await $.proxyDaemonRequest(Z,X,{method:Q,headers:new Headers,body:null})}if(G.status===404){try{await G.body?.cancel()}catch{}throw Error("SANDBOX_GONE")}let J=await G.text();if(!G.ok){let W=`Daemon error (${G.status})`;try{W=JSON.parse(J).error??W}catch{}throw Error(W)}return JSON.parse(J)}function RU6($){return Ed$.includes($)}var LU6,Od$=524288,EU6=65536,jU6=1e4,Dd$=2000,zU6,MT0,A5,Ed$,jd$=()=>{let $=new F1;$.use("/:virtualMcpId/:branch/*",zU6),$.post("/:virtualMcpId/:branch/write",(X)=>eZ(X,"/_sandbox/write",{forwardJsonBody:!0,signal:Tv(X)})),$.post("/:virtualMcpId/:branch/unlink",(X)=>eZ(X,"/_sandbox/unlink",{forwardJsonBody:!0,signal:Tv(X)})),$.post("/:virtualMcpId/:branch/mkdir",(X)=>eZ(X,"/_sandbox/mkdir",{forwardJsonBody:!0,signal:Tv(X)})),$.post("/:virtualMcpId/:branch/rename",(X)=>eZ(X,"/_sandbox/rename",{forwardJsonBody:!0,signal:Tv(X)})),$.post("/:virtualMcpId/:branch/read",(X)=>eZ(X,"/_sandbox/read",{forwardJsonBody:!0,signal:Tv(X)})),$.post("/:virtualMcpId/:branch/glob",(X)=>eZ(X,"/_sandbox/glob",{forwardJsonBody:!0,signal:Tv(X)})),$.post("/:virtualMcpId/:branch/grep",(X)=>eZ(X,"/_sandbox/grep",{forwardJsonBody:!0,signal:Tv(X)})),$.post("/:virtualMcpId/:branch/exec/:script",async(X)=>{let Q=X.req.param("script");if(!Q)return X.json({error:"missing script name"},400);return eZ(X,`/_sandbox/exec/${encodeURIComponent(Q)}`)}),$.post("/:virtualMcpId/:branch/exec/:script/kill",async(X)=>{let Q=X.req.param("script");if(!Q)return X.json({error:"missing script name"},400);return eZ(X,`/_sandbox/exec/${encodeURIComponent(Q)}/kill`)}),$.get("/:virtualMcpId/:branch/config",(X)=>eZ(X,"/_sandbox/config",{method:"GET",map404to410:!0,redactRepoDir:!0})),$.put("/:virtualMcpId/:branch/config",(X)=>eZ(X,"/_sandbox/config",{method:"PUT",forwardJsonBody:!0,map404to410:!0})),$.post("/:virtualMcpId/:branch/setup/:step",async(X)=>{let Q=X.req.param("step");if(!Q||!RU6(Q))return X.json({error:`step must be one of: ${Ed$.join(", ")}`},400);let Y=X.get("vmClaim"),G=await A71(X.var.studioContext,{claimName:Y.claimName})==="gone"?null:await AU6(X);if(!G)return X.json({error:"sandbox not found: nothing is running at this ref"},404,A5);if(Q==="start"){let J=o(X.var.studioContext),W=_y(Y.virtualMcpMetadata);try{await w70({ctx:X.var.studioContext,runner:G,handle:Y.claimName,orgId:J.id,userId:Y.callerUserId,entries:W})}catch(K){let H=K instanceof Error?K.message:String(K);return X.json({error:`Failed to push env to daemon: ${H}`},502)}}return eZ(X,`/_sandbox/setup/${Q}`,{signal:X.req.raw.signal,map404to410:!0,runner:G})}),$.get("/:virtualMcpId/:branch/events",(X)=>{let Q=X.get("vmClaim");if(!Q.runner)return rN(X,async(Y)=>{await Y.writeSSE({event:"phase",data:JSON.stringify({kind:"failed",reason:"unknown",message:"No sandbox runner configured on this studio instance."})})});return jl$(X,{ctx:X.var.studioContext,claimName:Q.claimName,runner:Q.runner,virtualMcpId:Q.virtualMcpId,branch:Q.branch,userId:Q.userId,projectRef:Q.projectRef,virtualMcpMetadata:Q.virtualMcpMetadata})}),$.get("/:virtualMcpId/:branch/git/status",(X)=>{if(X.get("vmClaim").runtime==="cms")return wd$(X);return Z(X)});let Z=(X)=>eZ(X,"/_sandbox/git/status",{method:"GET",map404to410:!0,signal:AbortSignal.any([X.req.raw.signal,AbortSignal.timeout(Dd$)])});return $.post("/:virtualMcpId/:branch/git/status",(X)=>{if(X.get("vmClaim").runtime==="cms")return wd$(X);return eZ(X,"/_sandbox/git/status",{map404to410:!0,signal:AbortSignal.any([X.req.raw.signal,AbortSignal.timeout(Dd$)])})}),$.post("/:virtualMcpId/:branch/git/diff",async(X)=>{let Q=X.get("vmClaim");if(Q.runtime==="cms")try{let Y=await X.req.json().catch(()=>({})),G=await au(X),J=await IT0(G,Q.branch,Y.base);return X.json(J,200,A5)}catch(Y){return d71(X,Y)}return eZ(X,"/_sandbox/git/diff",{forwardJsonBody:!0,map404to410:!0})}),$.post("/:virtualMcpId/:branch/git/publish",async(X)=>{if(X.get("vmClaim").runtime==="cms")return X.json({ok:!0},200,A5);let Q=Rv(X);if(Q instanceof Response)return Q;let{claimName:Y,virtualMcpMetadata:G,connectionIds:J}=X.get("vmClaim"),W=X.var.studioContext;return Pa(Y,async()=>{try{await T71(W,Q,Y);let K=za(G,J);if(K)await Bd$(W,Q,Y,K)}catch(K){if(K instanceof Av)return X.json({error:K.message},403,A5);let H=K instanceof Error?K.message:String(K);return X.json({error:H},502,A5)}return eZ(X,"/_sandbox/git/publish",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/discard",async(X)=>{let Q=X.get("vmClaim");if(Q.runtime==="cms")return Pa(Q.claimName,async()=>{let Y=await X.req.json().catch(()=>({})),G=Array.isArray(Y.filepaths)?Y.filepaths.filter((J)=>typeof J==="string"):[];if(G.length===0)return X.json({error:"filepaths is required"},400,A5);try{let J=await au(X);return await Hd$(J,Q.branch,G),X.json({ok:!0},200,A5)}catch(J){let W=J instanceof h4&&J.status===409?409:502,K=J instanceof Error?J.message:String(J);return X.json({error:K},W,A5)}});return Pa(Q.claimName,()=>eZ(X,"/_sandbox/git/discard",{forwardJsonBody:!0,map404to410:!0}))}),$.post("/:virtualMcpId/:branch/git/rebase",async(X)=>{let Q=X.get("vmClaim");if(Q.runtime==="cms")return Pa(Q.claimName,async()=>{try{let W=await X.req.json().catch(()=>({})),K=await au(X),H=W.base??await K.getDefaultBranch();return await qT0(K,Q.branch,H),X.json({ok:!0},200,A5)}catch(W){return d71(X,W)}});let Y=Rv(X);if(Y instanceof Response)return Y;let{claimName:G}=X.get("vmClaim"),J=X.var.studioContext;return Pa(G,async()=>{try{await T71(J,Y,G)}catch(W){let K=W instanceof Error?W.message:String(W);return X.json({error:K},502,A5)}return eZ(X,"/_sandbox/git/rebase",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/suggest-commit",o5({maxSize:Od$,onError:(X)=>X.json({error:"Payload too large"},413,A5)}),async(X)=>{let Q=X.get("vmClaim"),Y=null;if(Q.runtime!=="cms"){let H=Rv(X);if(H instanceof Response)return H;Y=H}let{claimName:G,userId:J,projectRef:W}=Q,K=X.var.studioContext;try{let H=await X.req.json().catch(()=>({})),F=H.status,N=H.diff,U=N!=null&&typeof N.diffs==="object"&&N.diffs!==null,[B,O]=q71(F)&&U?[F,N]:Y?await Promise.all([kT0(Y,G,"/_sandbox/git/status","GET",{userId:J,projectRef:W}),kT0(Y,G,"/_sandbox/git/diff","GET",{userId:J,projectRef:W})]):await(async()=>{let w=await au(X);return Promise.all([RT0(w,Q.branch),IT0(w,Q.branch)])})(),L=await Rl$(K,B,O);return X.json(L,200,A5)}catch(H){let F=H instanceof Error?H.message:String(H);if(F==="SANDBOX_GONE")return X.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,A5);return X.json({error:F},502,A5)}}),$.post("/:virtualMcpId/:branch/git/judge-review",o5({maxSize:Od$,onError:(X)=>X.json({error:"Payload too large"},413,A5)}),async(X)=>{let Q=X.get("vmClaim"),Y=null;if(Q.runtime!=="cms"){let H=Rv(X);if(H instanceof Response)return H;Y=H}let{claimName:G,userId:J,projectRef:W}=Q,K=X.var.studioContext;try{let H=await X.req.json().catch(()=>({})),F=H.status,N=H.diff,U=N!=null&&typeof N.diffs==="object"&&N.diffs!==null,[B,O]=q71(F)&&U?[F,N]:Y?await Promise.all([kT0(Y,G,"/_sandbox/git/status","GET",{userId:J,projectRef:W}),kT0(Y,G,"/_sandbox/git/diff","GET",{userId:J,projectRef:W})]):await(async()=>{let w=await au(X);return Promise.all([RT0(w,Q.branch),IT0(w,Q.branch)])})(),L=await ql$(K,B,O,typeof H.language==="string"?H.language:void 0);return X.json(L,200,A5)}catch(H){let F=H instanceof Error?H.message:String(H);if(F==="SANDBOX_GONE")return X.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,A5);return X.json({error:F},502,A5)}}),$.get("/:virtualMcpId/:branch/preview-fetch",async(X)=>{let Q=Rv(X);if(Q instanceof Response)return Q;let{claimName:Y}=X.get("vmClaim"),G=X.req.query("path");if(!G||!G.startsWith("/")||G.startsWith("//")||G.includes("..")||G.includes("\\"))return X.json({error:"Path not allowed"},403);let J;try{J=await Q.getPreviewUrl(Y)}catch{return X.json({error:"Preview not available"},502)}if(!J)return X.json({error:"Preview not available"},502);let W=J.replace(/\/+$/,"");return Ld$(X,`${W}${G}`)}),$.post("/:virtualMcpId/:branch/preview-invoke",o5({maxSize:EU6,onError:(X)=>X.json({error:"Payload too large"},413)}),async(X)=>{let Q=Rv(X);if(Q instanceof Response)return Q;let{claimName:Y}=X.get("vmClaim"),G;try{G=await Q.getPreviewUrl(Y)}catch{return X.json({error:"Preview not available"},502)}if(!G)return X.json({error:"Preview not available"},502);let J;try{J=await X.req.json()}catch{return X.json({error:"Invalid JSON body"},400)}if(!J||typeof J!=="object"||Array.isArray(J))return X.json({error:"Invalid JSON body"},400);let W=Fd$(J);if(!W)return X.json({error:"Invalid or missing __resolveType"},400);let K=Nd$(G,W.resolveType);return Ld$(X,K,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(W.payload),signal:AbortSignal.timeout(30000)})}),$};var zd$=D(()=>{U8();AH();pu();P71();Gn();Ll$();d3();sy();wl$();t3();El$();zl$();ki0();Kn();V71();Ml$();C71();aD();c71();Ud$();l71();LU6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;zU6=NT0(async($,Z)=>{let X=$.var.studioContext;try{t(X)}catch{return $.json({error:"Unauthorized"},401)}let Q=o0(X);if(!Q)return $.json({error:"Unauthorized"},401);let Y;try{Y=o(X)}catch{return $.json({error:"Organization scope required"},403)}let G=$.req.param("virtualMcpId"),J=$.req.param("branch");if(!G||!J)return $.json({error:"virtualMcpId and branch are required"},400);try{wU6(J)}catch(L){let w=L instanceof Error?L.message:String(L);return $.json({error:w},400)}let W=await X.storage.virtualMcps.findById(G);if(!W||W.organization_id!==Y.id)return $.json({error:"Virtual MCP not found"},404);let K=Qn({orgId:Y.id,virtualMcpId:G,branch:J}),H=await Ai0(X,J),F=Ti0(H,Q),N=Dl$({userId:F,projectRef:K}),U=W.metadata??null,B=await PU6($,{claimName:N,branch:J,virtualMcpId:G,sandboxUserId:F,virtualMcpMetadata:U,branchThread:H});if(B==="cms")return $.set("vmClaim",{claimName:N,callerUserId:Q,runner:null,virtualMcpId:G,branch:J,userId:F,projectRef:K,virtualMcpMetadata:U,connectionIds:W.connections?.map((L)=>L.connection_id)??[],runtime:B}),Z();let O;try{O=await YQ(X)}catch{O=null}if(!O)return $.json({error:"No sandbox runner found"},404);return $.set("vmClaim",{claimName:N,callerUserId:Q,runner:O,virtualMcpId:G,branch:J,userId:F,projectRef:K,virtualMcpMetadata:U,connectionIds:W.connections?.map((L)=>L.connection_id)??[],runtime:B}),Z()});MT0=new Map;A5={"Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache"};Ed$=["clone","install","start"]});function Pd$($,Z,X){let Q=m71.get($);if(!Q)Q={pending:null,running:!1},m71.set($,Q);if(!Q.pending)Q.pending={set:new Map,del:new Set,deps:Z,resolvers:[],rejecters:[]};let Y=Q.pending;Y.deps=Z;for(let[J,W]of Object.entries(X.set??{}))Y.set.set(J,W),Y.del.delete(J);for(let J of X.delete??[])Y.del.add(J),Y.set.delete(J);let G=new Promise((J,W)=>{Y.resolvers.push(J),Y.rejecters.push(W)});if(!Q.running)qU6($,Q);return G}async function qU6($,Z){Z.running=!0;try{while(Z.pending){let X=Z.pending;Z.pending=null;try{let Q=await MU6(X);for(let Y of X.resolvers)Y(Q)}catch(Q){for(let Y of X.rejecters)Y(Q)}}}finally{if(Z.running=!1,!Z.pending)m71.delete($)}}async function MU6($){let{client:Z,branch:X,packagePath:Q}=$.deps;for(let Y=0;;Y++){let G=await su(Z,X),J=await Z.getCommitTreeSha(G),W=await Z.getDecofileTree(J,Q),K=g71(W,Q),H=[],F=new Map(K.map((O)=>[O.path,{stem:O.stem,sha:O.sha}]));for(let[O,L]of $.set){let w=h71(K,O),E=`${JSON.stringify(L,null,2)}
2886
- `,j=await Z.createBlob(E);await Gd$(Z.owner,Z.repo,j,E);let z=w[0]??`${AT0(Q)}/${v71(O)}.json`;H.push({path:z,mode:"100644",type:"blob",sha:j});let A=z.slice(z.lastIndexOf("/")+1,-5);F.set(z,{stem:A,sha:j,content:E});for(let P of w.slice(1))H.push({path:P,mode:"100644",type:"blob",sha:null}),F.delete(P)}for(let O of $.del)for(let L of h71(K,O))H.push({path:L,mode:"100644",type:"blob",sha:null}),F.delete(L);if(H.length===0)return G;let N=Q?`${Q}/.deco/blocks.gen.json`:".deco/blocks.gen.json";if(W.some((O)=>O.type==="blob"&&O.path===N)){let O=await Promise.all([...F.values()].map(async(j)=>({stem:j.stem,content:j.content??await Z.getBlobText(j.sha)}))),{decofile:L,skipped:w}=La(O);if(w.length>0)console.warn("decofile gen: dropped blocks that were not valid JSON",{repo:`${Z.owner}/${Z.repo}`,branch:X,packagePath:Q,blocks:w.map((j)=>j.key)});let E=await Z.createBlob(L);H.push({path:N,mode:"100644",type:"blob",sha:E})}let U=await Z.createTree(J,H),B=await Z.createCommit({message:kU6($),treeSha:U,parentShas:[G]});try{return await Z.updateRef(X,B),B}catch(O){if(!(O instanceof h4&&O.status===422)||Y>=IU6-1)throw O;await w$(X7(2000,200,Y,2,0.5))}}}function kU6($){let Z=(Y)=>{let G=Y.slice(0,3).join(", ");return Y.length>3?`${G} (+${Y.length-3} more)`:G},X=[];if($.set.size>0)X.push(`update ${Z([...$.set.keys()])}`);if($.del.size>0)X.push(`delete ${Z([...$.del])}`);let Q=`chore(decofile): ${X.join("; ")}`;return Li0(Q,$.deps.coAuthor)}var IU6=3,m71;var Ad$=D(()=>{oO0();DT0();W4();aD();TT0();m71=new Map});import{createHmac as Td$,randomBytes as VU6,timingSafeEqual as SU6}from"crypto";function Rd$(){if(VT0)return VT0;let $;try{let Z=b0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return VT0=$?Buffer.from($):VU6(32),VT0}function i71($){let Z=$.nowMs??Date.now(),X={o:$.organizationId,m:$.virtualMcpId,b:$.branch,e:Math.floor((Z+CU6)/1000)},Q=Buffer.from(JSON.stringify(X)).toString("base64url"),Y=Td$("sha256",Rd$()).update(Q).digest("base64url");return`${Q}.${Y}`}function Id$($,Z){let X=$.indexOf(".");if(X<0)return!1;let Q=$.slice(0,X),Y=Buffer.from($.slice(X+1)),G=Buffer.from(Td$("sha256",Rd$()).update(Q).digest("base64url"));if(Y.length!==G.length||!SU6(Y,G))return!1;let J;try{J=JSON.parse(Buffer.from(Q,"base64url").toString())}catch{return!1}let W=Math.floor((Z.nowMs??Date.now())/1000);return J.o===Z.organizationId&&J.m===Z.virtualMcpId&&J.b===Z.branch&&typeof J.e==="number"&&J.e>=W}var CU6=21600000,VT0=null;var qd$=D(()=>{R$()});import{z as eu}from"zod";function vU6($){return $.length>0&&$.length<=255&&!$.includes("..")&&!$.endsWith("/")&&!$.endsWith(".lock")&&_U6.test($)}function Cd$($){return $.req.header("x-forwarded-host")??new URL($.req.url).host}async function Aa($){let Z=$.get("decofileScope");return BT0($.var.studioContext,Z.organizationId,Z.githubRepo)}function Ta($,Z){if(Z instanceof h4){let Q=Z.status===404?404:Z.status===409?409:Z.status===422?409:502;return $.json({error:Z.message},Q)}let X=Z instanceof Error?Z.message:String(Z);return $.json({error:X},500)}function _d$(){let $=new F1;return $.use("/:virtualMcpId/:branch",Sd$),$.use("/:virtualMcpId/:branch/*",Sd$),$.get("/:virtualMcpId/:branch",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await Aa(Z),Y=await Jd$(Q,X.branch,X.packagePath,{createBranchIfMissing:!!X.userId}),G={ETag:`"${Y.sha}"`,"Cache-Control":"no-store","Access-Control-Allow-Origin":"*"};if(Z.req.header("if-none-match")===`"${Y.sha}"`)return Z.body(null,304,G);if(!X.userId)return Z.body(Y.decofile,200,{...G,"content-type":"application/json"});let J=i71({organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,branch:X.branch});return Z.body(`{"version":${JSON.stringify(Y.sha)},"token":${JSON.stringify(J)},"apiHost":${JSON.stringify(Cd$(Z))},"decofile":${Y.decofile}}`,200,{...G,"content-type":"application/json"})}catch(Q){return Ta(Z,Q)}}),$.get("/:virtualMcpId/:branch/meta",async(Z)=>{let X=Z.get("decofileScope"),Q=X.packagePath?`${X.packagePath}/.deco/meta.gen.json`:".deco/meta.gen.json";try{let Y=await Aa(Z),G=await Y.getFileTextAtRef(X.branch,Q);if(G===null){let J=await Y.getDefaultBranch();if(J!==X.branch)G=await Y.getFileTextAtRef(J,Q)}if(G===null)return Z.json({error:"meta.gen.json not committed"},404);return Z.body(G,200,{"content-type":"application/json","Cache-Control":"no-store","Access-Control-Allow-Origin":"*"})}catch(Y){return Ta(Z,Y)}}),$.patch("/:virtualMcpId/:branch",bU6,async(Z)=>{let X=Z.get("decofileScope"),Q=Z.var.studioContext,Y=xU6.safeParse(await Z.req.json().catch(()=>null));if(!Y.success)return Z.json({error:"Invalid body",details:Y.error.issues},400);let G=Y.data;for(let J of[...Object.keys(G.set??{}),...G.delete??[]])try{OT0(J)}catch(W){let K=W instanceof Error?W.message:String(W);return Z.json({error:K},400)}for(let[J,W]of Object.entries(G.set??{})){if(typeof W!=="object"||W===null||Array.isArray(W))return Z.json({error:`Block "${J}" must be a JSON object`},400);if(_71(J))return Z.json({error:`Block key "${J}" collides with a framework resolver module and cannot be written`},400)}try{let J=await Aa(Z),W=await Pd$(`${X.organizationId}/${X.virtualMcpId}/${X.branch}`,{client:J,branch:X.branch,packagePath:X.packagePath,coAuthor:nu(Q)},G),K=i71({organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,branch:X.branch});return Z.json({version:W,token:K,apiHost:Cd$(Z)})}catch(J){return Ta(Z,J)}}),$.post("/:virtualMcpId/:branch/publish",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await Aa(Z),Y=await Q.getDefaultBranch();if(Y===X.branch)return Z.json({error:"Branch is already the default branch"},400);let G=`chore(decofile): publish ${X.branch}`;try{let J;try{J=await Q.mergeBranch(Y,X.branch,G)}catch(W){if(!(W instanceof h4&&W.status===409))throw W;await qT0(Q,X.branch,Y),J=await Q.mergeBranch(Y,X.branch,G)}return J?Z.json({result:"merged",sha:J}):Z.json({result:"up-to-date"})}catch(J){if(J instanceof h4&&J.status===409)return Z.json({error:"merge-conflict"},409);if(J instanceof h4&&J.status===405){let K=await Q.findOpenPullRequest(Y,X.branch)??await Q.createPullRequest({base:Y,head:X.branch,title:`Publish ${X.branch}`});return Z.json({result:"pull-request",number:K.number,url:K.html_url})}throw J}}catch(Q){return Ta(Z,Q)}}),$.get("/:virtualMcpId/:branch/status",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await Aa(Z),Y=await Q.getDefaultBranch();if(Y===X.branch)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0,lastCommitAt:null});try{let[{aheadBy:G,behindBy:J},W]=await Promise.all([Q.compare(Y,X.branch),Q.getBranchHead(X.branch)]);return Z.json({baseBranch:Y,aheadBy:G,behindBy:J,lastCommitAt:W.committedAt})}catch(G){if(G instanceof h4&&G.status===404)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0,lastCommitAt:null});throw G}}catch(Q){return Ta(Z,Q)}}),$}var _U6,Md$=500,kd$=1048576,Vd$=1024,fU6=8388608,bU6,xU6,Sd$;var vd$=D(()=>{an0();DT0();U8();AH();P71();UT0();l71();C71();Ad$();qd$();c71();aD();TT0();_U6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;bU6=o5({maxSize:fU6,onError:($)=>$.json({error:"Payload too large"},413)}),xU6=eu.object({set:eu.record(eu.string(),eu.unknown()).optional(),delete:eu.array(eu.string()).optional()}).refine(($)=>Object.keys($.set??{}).length>0||($.delete?.length??0)>0,{message:"Patch must set or delete at least one block"}).refine(($)=>Object.keys($.set??{}).length+($.delete?.length??0)<=Md$,{message:`Patch cannot touch more than ${Md$} blocks`}).refine(($)=>Object.values($.set??{}).every((Z)=>JSON.stringify(Z).length<=kd$),{message:`Each block must be at most ${kd$} bytes`}).refine(($)=>[...Object.keys($.set??{}),...$.delete??[]].every((Z)=>Z.length<=Vd$),{message:`Each block key must be at most ${Vd$} characters`}),Sd$=NT0(async($,Z)=>{let X=$.var.studioContext,Q=X.organization;if(!Q)return $.json({error:"Organization scope required"},500);let Y=$.req.param("virtualMcpId"),G=$.req.param("branch");if(!Y||!G)return $.json({error:"virtualMcpId and branch are required"},400);if(!vU6(G))return $.json({error:`Invalid branch name: ${G}`},400);let J=X.auth?.user?.id??null;if(!J){let B=$.req.query("token");if(!($.req.method==="GET"&&!$.req.path.match(/\/(publish|status)$/)))return $.json({error:"Unauthorized"},401);if(!B||!Id$(B,{organizationId:Q.id,virtualMcpId:Y,branch:G}))return $.json({error:"Unauthorized"},401)}let W=await X.storage.virtualMcps.findById(Y);if(!W||W.organization_id!==Q.id)return $.json({error:"Virtual MCP not found"},404);let K=W.metadata??null;if(!$D0(K))return $.json({error:"Project has no preview server configured"},404);let F=W.connections?.map((B)=>B.connection_id)??[],N=za(K,F);if(!N)return $.json({error:"Project has no GitHub repository"},404);let U=K?.runtime;return $.set("decofileScope",{organizationId:Q.id,virtualMcpId:Y,branch:G,packagePath:U?.path?.replace(/^\/+|\/+$/g,"")||null,githubRepo:N,userId:J}),Z()})});var fd$=($)=>{let Z=new F1;if(Z.use("*",Uv),Z.route("/",kA0()),Z.route("/",rg$()),Z.route("/",Xl$()),Z.route("/",ec$()),Z.route("/",KT0()),Z.route("/tools",Hl$()),Z.route("/",Jl$()),Z.route("/",_c$({kvStorage:$.kvStorage})),Z.route("/",Sc$()),Z.route("/fs",pc$({getConnection:$.getNatsConnection})),Z.route("/sandbox",jd$()),Z.route("/decofile",_d$()),Z.route("/",rc$()),Z.route("/deco-sites",SA0()),Z.route("/sso",AA0()),Z.route("/",HT0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",lg$()),$.mountDevAssets)Z.route("/dev-assets",CA0({orgFromPath:!0}));return Z.use("/mcp/:connectionId?",$.mcpAuth),Z.use("/mcp/:connectionId/ui-resource",$.mcpAuth),Z.use("/mcp/gateway/:virtualMcpId?",$.mcpAuth),Z.use("/mcp/virtual-mcp/:virtualMcpId?",$.mcpAuth),Z.use("/mcp/self",$.mcpAuth),Z.use("/mcp/task-run/:threadId",$.mcpAuth),Z.route("/",Hx$()),Z.get("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",$.betterAuthProtectedResourceHandler),Z.get("/mcp/.well-known/oauth-protected-resource",$.betterAuthProtectedResourceHandler),Z.route("/mcp/task-run",tc$()),Z.route("/mcp",_w0()),Z.route("/mcp/self",WT0()),Z.route("/mcp",bw0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var bd$=D(()=>{U8();d91();dg$();n91();_A0();ls();c91();Cc$();vc$();nc$();ot();b91();xw0();O71();oc$();sc$();$l$();Ql$();Wl$();L71();Fl$();w71();vw0();zd$();vd$()});function yU6($){return $.filter((Z)=>Z.vendors?.alias).map((Z)=>({name:Z.name,title:Z.title,description:Z.description,logo:Z.logo,category:Z.category,vendor:{alias:Z.vendors.alias,url:Z.vendors.url}}))}var gU6=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},xd$=()=>{let $=new F1;return $.use("*",gU6),$.get("/",async(Z)=>{let X=b0(),Q=X.decoSupabaseUrl,Y=X.decoSupabaseServiceKey;if(!Q||!Y)return Z.json({apps:[]});try{let G=await aZ(Q,Y,"apps?select=name,title,description,logo,category,vendors(alias,url)");return Z.json({apps:yU6(G)})}catch(G){return console.error("[deco-apps] GET error:",G),Z.json({error:"Failed to fetch apps"},502)}}),$};var yd$=D(()=>{U8();R$();qP0()});import{z as M1}from"zod";function MH($,Z="invalid_request_error",X=null,Q=null){return{error:{message:$,type:Z,param:X,code:Q}}}function tU6($){if(!$)return null;let Z=$.indexOf(":");if(Z===-1)return{credentialId:null,modelId:$};let X=$.substring(0,Z),Q=$.substring(Z+1);if(!X||!Q)return null;return{credentialId:X,modelId:Q}}function oU6($,Z,X){try{return JSON.parse($)}catch{throw new ud$(`Invalid JSON in tool call arguments for function '${X}' (tool_call_id: ${Z}): ${$}`)}}function rU6($){let Z={};for(let X of $)if(X.role==="assistant"&&X.tool_calls)for(let Q of X.tool_calls)Z[Q.id]=Q.function.name;return $.map((X)=>{switch(X.role){case"system":return{role:"system",content:X.content};case"user":if(typeof X.content==="string")return{role:"user",content:X.content};return{role:"user",content:X.content.map((Y)=>{if(Y.type==="text")return{type:"text",text:Y.text};return{type:"image",image:Y.image_url.url}})};case"assistant":if(X.tool_calls&&X.tool_calls.length>0)return{role:"assistant",content:X.tool_calls.map((Y)=>({type:"tool-call",toolCallId:Y.id,toolName:Y.function.name,input:oU6(Y.function.arguments,Y.id,Y.function.name)}))};return{role:"assistant",content:X.content??""};case"tool":let Q=Z[X.tool_call_id]??"unknown";return{role:"tool",content:[{type:"tool-result",toolCallId:X.tool_call_id,toolName:Q,output:{type:"text",value:X.content}}]}}})}function sU6($){let Z=$.map((X)=>{let Q=X.function.parameters?oY(X.function.parameters):oY({type:"object",properties:{}});return[X.function.name,h$({description:X.function.description,inputSchema:Q})]});return Object.fromEntries(Z)}function aU6($){if(!$)return;return{openai:{response_format:$}}}function eU6(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function gd$($,Z,X,Q,Y,G){let J={model:$,messages:Z,tools:X,temperature:Q.temperature,maxTokens:Q.max_tokens,topP:Q.top_p,frequencyPenalty:Q.frequency_penalty,presencePenalty:Q.presence_penalty,stopSequences:Q.stop?Array.isArray(Q.stop)?Q.stop:[Q.stop]:void 0,abortSignal:G};return Y?{...J,providerOptions:Y}:J}function hd$($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var hU6=256,uU6,cU6,lU6,dU6,mU6,iU6,pU6,nU6,ud$,cd$,ld$;var dd$=D(()=>{l4();U8();pu();VN();uU6=M1.object({type:M1.literal("function"),function:M1.object({name:M1.string(),description:M1.string().optional(),parameters:M1.record(M1.string(),M1.unknown()).optional()})}),cU6=M1.object({id:M1.string(),type:M1.literal("function"),function:M1.object({name:M1.string(),arguments:M1.string()})}),lU6=M1.discriminatedUnion("role",[M1.object({role:M1.literal("system"),content:M1.string(),name:M1.string().optional()}),M1.object({role:M1.literal("user"),content:M1.union([M1.string(),M1.array(M1.union([M1.object({type:M1.literal("text"),text:M1.string()}),M1.object({type:M1.literal("image_url"),image_url:M1.object({url:M1.string(),detail:M1.string().optional()})})]))]),name:M1.string().optional()}),M1.object({role:M1.literal("assistant"),content:M1.string().nullable().optional(),name:M1.string().optional(),tool_calls:M1.array(cU6).optional()}),M1.object({role:M1.literal("tool"),content:M1.string(),tool_call_id:M1.string()})]),dU6=M1.object({type:M1.literal("text")}),mU6=M1.object({type:M1.literal("json_object")}),iU6=M1.object({type:M1.literal("json_schema"),json_schema:M1.object({name:M1.string(),description:M1.string().optional(),schema:M1.record(M1.string(),M1.unknown()),strict:M1.boolean().optional()})}),pU6=M1.union([dU6,mU6,iU6]),nU6=M1.object({model:M1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:M1.array(lU6),stream:M1.boolean().optional().default(!1),temperature:M1.number().min(0).max(2).optional(),max_tokens:M1.number().positive().optional(),top_p:M1.number().min(0).max(1).optional(),frequency_penalty:M1.number().min(-2).max(2).optional(),presence_penalty:M1.number().min(-2).max(2).optional(),stop:M1.union([M1.string(),M1.array(M1.string())]).optional(),tools:M1.array(uU6).optional(),tool_choice:M1.union([M1.literal("auto"),M1.literal("none"),M1.literal("required"),M1.object({type:M1.literal("function"),function:M1.object({name:M1.string()})})]).optional(),response_format:pU6.optional(),user:M1.string().optional()});ud$=class ud$ extends Error{constructor($){super($);this.name="MessageConversionError"}};cd$=new F1;cd$.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),X=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(MH("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(MH("Organization context is required. Ensure your API key has organization metadata.","invalid_request_error","organization"),400);if((Z.organization.slug??Z.organization.id)!==X)return $.json(MH("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Q=await $.req.json(),Y=nU6.safeParse(Q);if(!Y.success){let w=Y.error.issues[0]??{message:"Invalid request",path:[]};return $.json(MH(`Invalid request: ${w.message}`,"invalid_request_error",w.path.length>0?w.path.join("."):null),400)}let G=Y.data,J=tU6(G.model);if(!J)return $.json(MH("Invalid model format. Expected 'model_id' or 'credential_id:model_id' (e.g., 'claude-sonnet-4-6' or 'key_abc123:claude-sonnet-4-6')","invalid_request_error","model"),400);let{credentialId:W}=J,{modelId:K}=J;if(!W){let E=(await Z.storage.aiProviderKeys.list({organizationId:Z.organization.id})).find((j)=>Dw(j.providerId));if(!E)return $.json(MH("No AI provider credentials configured for this organization. Add a credential in settings or specify one explicitly via 'credential_id:model_id'.","invalid_request_error","model"),400);W=E.id}let H;try{H=await Z.aiProviders.activate(W,Z.organization.id)}catch{return $.json(MH(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(K),N=rU6(G.messages),U=G.tools?sU6(G.tools):void 0,B=aU6(G.response_format),O=eU6(),L=Math.floor(Date.now()/1000);if(G.stream)return rN($,async(w)=>{let E=gd$(F,N,U,G,B,$.req.raw.signal);try{let j=SO(E),z=!1,A=0,P="",I=async()=>{if(P.length===0)return;let k=P;P="",await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,model:G.model,choices:[{index:0,delta:{content:k},finish_reason:null}]})})};for await(let k of j.fullStream){if(!z&&(k.type==="text-delta"||k.type==="tool-call"))await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,model:G.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),z=!0;if(k.type==="text-delta"){if(P+=k.text,P.length>=hU6)await I()}else if(k.type==="tool-call"){await I();let M=A++;await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,model:G.model,choices:[{index:0,delta:{tool_calls:[{index:M,id:k.toolCallId,type:"function",function:{name:k.toolName,arguments:JSON.stringify(k.input)}}]},finish_reason:null}]})})}else if(k.type==="finish")await I(),await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,model:G.model,choices:[{index:0,delta:{},finish_reason:hd$(k.finishReason)}],usage:k.totalUsage?{prompt_tokens:k.totalUsage.inputTokens??0,completion_tokens:k.totalUsage.outputTokens??0,total_tokens:k.totalUsage.totalTokens??0}:void 0})})}await I(),await w.writeSSE({data:"[DONE]"})}catch(j){let z=j;console.error("[openai-compat:stream] Error:",z.message),await w.writeSSE({data:JSON.stringify({error:{message:z.message,type:"server_error"}})})}});else{let w=gd$(F,N,U,G,B,$.req.raw.signal),E=await kO(w),j={role:"assistant",content:E.text||null};if(E.toolCalls&&E.toolCalls.length>0)j.tool_calls=E.toolCalls.map((z)=>({id:z.toolCallId,type:"function",function:{name:z.toolName,arguments:JSON.stringify("input"in z?z.input:{})}})),j.content=null;return $.json({id:O,object:"chat.completion",created:L,model:G.model,choices:[{index:0,message:j,finish_reason:hd$(E.finishReason)}],usage:{prompt_tokens:E.usage?.inputTokens??0,completion_tokens:E.usage?.outputTokens??0,total_tokens:E.usage?.totalTokens??0}})}}catch(Q){let Y=Q;if(Y.name==="AbortError")return $.json(MH("Request aborted","invalid_request_error"),400);if(Y.name==="MessageConversionError")return $.json(MH(Y.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",Y.message,Y.stack),$.json(MH(Y.message,"server_error"),500)}});ld$=cd$});function $B6($){if(typeof $!=="object"||$===null)return!1;let X=$.githubRepo?.url;return typeof X==="string"&&X.length>0}function md$(){let $=new F1;return $.use("*",async(Z,X)=>{await X(),Z.header("Cache-Control","private, no-store"),Z.header("Vary","Cookie")}),$.get("/",async(Z)=>{let X=Z.get("studioContext"),Q=o0(X);if(!Q)return Z.json({error:"Authentication required"},401);let G=(Z.req.query("site")??"").trim().toLowerCase();if(!$J(G))return Z.json({error:"Invalid site slug"},400);let J=await X.db.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["organization.id as id","organization.slug as slug","organization.name as name","organization.metadata as metadata"]).where("member.userId","=",Q).execute(),W=[];for(let H of J){if(!H.slug||yZ(H))continue;let F=await X.storage.virtualMcps.list(H.id);for(let N of F){if(ke1(N)!==G)continue;if(!$B6(N.metadata))continue;W.push({orgSlug:H.slug,orgName:H.name??H.slug,project:{id:N.id,title:N.title,icon:N.icon??null}})}}let K={matches:W};return Z.json(K)}),$}var id$=D(()=>{U8();FO()});var nd$;var pd$=D(()=>{nd$={name:"decocms",version:"4.310.2",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});function QB6(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??XB6}}var td$,XB6="https://ph.studio.decocms.com",od$;var rd$=D(()=>{U8();t50();nC();Q9();R$();q91();pd$();td$=new F1;td$.get("/",($)=>{let Z={version:nd$.version,theme:mi1(),...MF().logo&&{logo:MF().logo},...LN()&&{internalUrl:z_1()},...b0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!b0().firecrawlApiKey,auth:ay$(),posthog:QB6(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:Ca()}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});od$=td$});function $c($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function p71($){return($c($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((X)=>X.charAt(0).toUpperCase()+X.slice(1)).join(" ")}function ad$($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent($c($))}&sz=${Z}`}function sd$($,Z){let X=$.trim();if(X.length<=Z)return X;let Q=X.slice(0,Z-1),Y=Q.lastIndexOf(" ");return`${(Y>Z*0.6?Q.slice(0,Y):Q).trimEnd()}\u2026`}function ed$($){let{brand:Z,domain:X,score:Q,verdict:Y}=$,G=typeof Q==="number"?`${Z} commerce report \u2014 ${Math.round(Q)}/100 \xB7 decocms`:`${Z} commerce report \xB7 decocms`,J=`See the full ${Z} scorecard \u2014 SEO, performance, conversion & AEO signals scored by decocms.`,W=Y?.trim()?sd$(`${Y.trim().replace(/\s+/g," ")} \u2014 ${J}`,200):sd$(`How does ${X} really perform? ${J}`,200);return{title:G,description:W}}import{z as l0}from"zod";var Iv,YB6,GB6,JB6,WB6,$m$;var Zm$=D(()=>{Iv=l0.enum(["good","bad","neutral"]),YB6=l0.preprocess(($)=>{if(Array.isArray($))return{kind:"text",value:$.find((X)=>X!==null&&typeof X!=="object")??""};return $!==null&&typeof $==="object"?$:{kind:"text",value:$}},l0.object({kind:l0.enum(["text","number","sparkline","badge","score"]).catch("text"),value:l0.coerce.string().optional(),tone:Iv.optional(),muted:l0.boolean().optional(),delta:l0.coerce.string().optional(),deltaDir:l0.enum(["up","down","neutral"]).optional(),points:l0.array(l0.coerce.number()).optional(),label:l0.coerce.string().optional()}).transform(($)=>{if($.kind==="badge"&&$.label==null)$.label=$.value??"";if($.kind==="score"){let Z=Number($.value);if(Number.isNaN(Z))return{...$,kind:"text"}}return $})),GB6=l0.preprocess(($)=>{let Z=$;if(Z&&typeof Z==="object"&&!Array.isArray(Z)&&Array.isArray(Z.cells))Z=Z.cells;if(Array.isArray(Z)&&Z.length===1&&Array.isArray(Z[0]))Z=Z[0];if(Array.isArray(Z))return Z;if(Z&&typeof Z==="object")return Object.values(Z);return Z},l0.array(YB6)),JB6={key:l0.coerce.string(),title:l0.coerce.string(),eyebrow:l0.coerce.string().optional(),headline:l0.coerce.string(),annotation:l0.coerce.string().optional(),methodology:l0.coerce.string().optional(),sources:l0.array(l0.object({name:l0.coerce.string(),logoUrl:l0.coerce.string()})).optional()},WB6=l0.discriminatedUnion("template",[l0.object({template:l0.literal("cover"),score:l0.object({value:l0.coerce.number(),max:l0.coerce.number().optional(),grade:l0.coerce.string().optional(),label:l0.coerce.string().optional()}).optional(),brandImage:l0.coerce.string().optional(),screenshot:l0.coerce.string().optional(),mobileScreenshot:l0.coerce.string().optional()}),l0.object({template:l0.literal("cta"),ctaUrl:l0.coerce.string().optional(),ctaLabel:l0.coerce.string().optional(),bullets:l0.array(l0.coerce.string()).optional()}),l0.object({template:l0.literal("series"),points:l0.array(l0.coerce.number()).min(2),xLabels:l0.array(l0.coerce.string()).min(1),unit:l0.coerce.string().optional(),callout:l0.object({index:l0.coerce.number(),value:l0.coerce.string(),tone:Iv.optional()})}),l0.object({template:l0.literal("threshold"),value:l0.coerce.string().default(""),metricLabel:l0.coerce.string().optional(),ratio:l0.coerce.number(),thresholdRatio:l0.coerce.number().optional(),thresholdLabel:l0.coerce.string().default(""),tone:Iv.optional()}),l0.object({template:l0.literal("stats"),stats:l0.array(l0.object({value:l0.coerce.string(),label:l0.coerce.string(),tone:Iv.optional()})).min(1)}),l0.object({template:l0.literal("bars"),items:l0.array(l0.object({value:l0.coerce.string(),label:l0.coerce.string(),ratio:l0.coerce.number(),tone:Iv.optional()})).min(1)}),l0.object({template:l0.literal("gauges"),gauges:l0.array(l0.object({label:l0.coerce.string(),value:l0.coerce.string(),status:l0.enum(["good","warn","bad"]).catch("warn"),caption:l0.coerce.string().optional(),ratio:l0.coerce.number().optional()})).min(1)}),l0.object({template:l0.literal("checklist"),checks:l0.array(l0.object({label:l0.coerce.string(),status:l0.enum(["pass","fail","warn"]).catch("fail"),value:l0.coerce.string().optional()})).min(1)}),l0.object({template:l0.literal("table"),columns:l0.array(l0.object({label:l0.coerce.string(),align:l0.enum(["left","right"]).optional()})).min(1),rows:l0.array(GB6).min(1),highlightRow:l0.coerce.number().optional()}),l0.object({template:l0.literal("products"),products:l0.array(l0.object({name:l0.coerce.string(),price:l0.coerce.string().optional(),image:l0.coerce.string().optional(),url:l0.coerce.string().optional()})).min(1)}),l0.object({template:l0.literal("list"),entries:l0.array(l0.object({label:l0.coerce.string(),severity:l0.enum(["error","warning","notice"]).catch("notice")})).min(1),moreCount:l0.coerce.number().optional()}),l0.object({template:l0.literal("keywords"),volumeLabel:l0.coerce.string().optional(),keywords:l0.array(l0.object({term:l0.coerce.string(),volume:l0.coerce.string(),position:l0.coerce.number().catch(0)})).min(1)}),l0.object({template:l0.literal("competitor"),metricLabel:l0.coerce.string().optional(),competitors:l0.array(l0.object({name:l0.coerce.string(),value:l0.coerce.string(),tone:Iv.optional(),isYou:l0.boolean().optional()})).min(1)}),l0.object({template:l0.literal("scorecard"),rivalLabel:l0.coerce.string().optional(),dimensions:l0.array(l0.object({label:l0.coerce.string(),you:l0.coerce.string(),rival:l0.coerce.string().optional(),rivalName:l0.coerce.string().optional(),tone:Iv.optional()})).min(1)})]),$m$=l0.object({...JB6,template:WB6})});function ST0($){let Z=[],X=[...$.sections].sort((Y,G)=>Y.position-G.position).map((Y)=>{let G=$m$.safeParse(Y.props);if(G.success)return G.data;let J=G.error.issues[0];return Z.push({section_type:Y.section_type,position:Y.position,reason:J?`${J.path.join(".")||"(root)"}: ${J.message}`:"contract violation"}),null}).filter((Y)=>Y!==null),Q=X.filter((Y)=>Y.template.template!=="cover"&&Y.template.template!=="cta").map((Y)=>({key:Y.key,title:Y.title}));return{deck:{meta:{...$.meta,scores:$.summary?.scores,scannedAt:$.scanned_at,toc:Q},slides:X},drops:Z}}var n71=D(()=>{Zm$()});import{join as Xm$}from"path";async function HB6($){try{let Z=await fetch(`${NK({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(KB6)});if(!Z.ok)return null;let X=await Z.json(),{deck:Q}=ST0(X);if(!Q.slides.length)return null;let Y=Q.slides.find((W)=>W.template.template==="cover"),G=Y?.template,J=G&&G.template==="cover"?G:void 0;return{brand:Q.meta.brand?.trim()||p71($),score:Q.meta.scores?.cover??J?.score?.value,verdict:Y?.annotation?.trim()||Y?.headline?.trim()||void 0}}catch{return null}}function jG($){return $.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;")}function FB6($,Z){let X=$c($),Q=Z?.brand?.trim()||p71(X),Y=ad$(X,128),J=`${(b0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(X)}`,{title:W,description:K}=ed$({brand:Q,domain:X,score:Z?.score,verdict:Z?.verdict}),H=`${J}/og.png`,F=`${Q} commerce report by decocms`;return[`<title>${jG(W)}</title>`,`<meta name="description" content="${jG(K)}" />`,'<meta name="robots" content="noindex, follow" />','<meta property="og:type" content="website" />','<meta property="og:site_name" content="decocms" />',`<meta property="og:title" content="${jG(W)}" />`,`<meta property="og:description" content="${jG(K)}" />`,`<meta property="og:url" content="${jG(J)}" />`,`<meta property="og:image" content="${jG(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${jG(F)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${jG(W)}" />`,`<meta name="twitter:description" content="${jG(K)}" />`,`<meta name="twitter:image" content="${jG(H)}" />`,`<meta name="twitter:image:alt" content="${jG(F)}" />`,`<link rel="canonical" href="${jG(J)}" />`,`<link rel="icon" href="${jG(Y)}" sizes="any" />`].join(`
2886
+ `,j=await Z.createBlob(E);await Gd$(Z.owner,Z.repo,j,E);let z=w[0]??`${AT0(Q)}/${v71(O)}.json`;H.push({path:z,mode:"100644",type:"blob",sha:j});let A=z.slice(z.lastIndexOf("/")+1,-5);F.set(z,{stem:A,sha:j,content:E});for(let P of w.slice(1))H.push({path:P,mode:"100644",type:"blob",sha:null}),F.delete(P)}for(let O of $.del)for(let L of h71(K,O))H.push({path:L,mode:"100644",type:"blob",sha:null}),F.delete(L);if(H.length===0)return G;let N=Q?`${Q}/.deco/blocks.gen.json`:".deco/blocks.gen.json";if(W.some((O)=>O.type==="blob"&&O.path===N)){let O=await Promise.all([...F.values()].map(async(j)=>({stem:j.stem,content:j.content??await Z.getBlobText(j.sha)}))),{decofile:L,skipped:w}=La(O);if(w.length>0)console.warn("decofile gen: dropped blocks that were not valid JSON",{repo:`${Z.owner}/${Z.repo}`,branch:X,packagePath:Q,blocks:w.map((j)=>j.key)});let E=await Z.createBlob(L);H.push({path:N,mode:"100644",type:"blob",sha:E})}let U=await Z.createTree(J,H),B=await Z.createCommit({message:kU6($),treeSha:U,parentShas:[G]});try{return await Z.updateRef(X,B),B}catch(O){if(!(O instanceof h4&&O.status===422)||Y>=IU6-1)throw O;await w$(X7(2000,200,Y,2,0.5))}}}function kU6($){let Z=(Y)=>{let G=Y.slice(0,3).join(", ");return Y.length>3?`${G} (+${Y.length-3} more)`:G},X=[];if($.set.size>0)X.push(`update ${Z([...$.set.keys()])}`);if($.del.size>0)X.push(`delete ${Z([...$.del])}`);let Q=`chore(decofile): ${X.join("; ")}`;return Li0(Q,$.deps.coAuthor)}var IU6=3,m71;var Ad$=D(()=>{oO0();DT0();W4();aD();TT0();m71=new Map});import{createHmac as Td$,randomBytes as VU6,timingSafeEqual as SU6}from"crypto";function Rd$(){if(VT0)return VT0;let $;try{let Z=b0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return VT0=$?Buffer.from($):VU6(32),VT0}function i71($){let Z=$.nowMs??Date.now(),X={o:$.organizationId,m:$.virtualMcpId,b:$.branch,e:Math.floor((Z+CU6)/1000)},Q=Buffer.from(JSON.stringify(X)).toString("base64url"),Y=Td$("sha256",Rd$()).update(Q).digest("base64url");return`${Q}.${Y}`}function Id$($,Z){let X=$.indexOf(".");if(X<0)return!1;let Q=$.slice(0,X),Y=Buffer.from($.slice(X+1)),G=Buffer.from(Td$("sha256",Rd$()).update(Q).digest("base64url"));if(Y.length!==G.length||!SU6(Y,G))return!1;let J;try{J=JSON.parse(Buffer.from(Q,"base64url").toString())}catch{return!1}let W=Math.floor((Z.nowMs??Date.now())/1000);return J.o===Z.organizationId&&J.m===Z.virtualMcpId&&J.b===Z.branch&&typeof J.e==="number"&&J.e>=W}var CU6=21600000,VT0=null;var qd$=D(()=>{R$()});import{z as eu}from"zod";function vU6($){return $.length>0&&$.length<=255&&!$.includes("..")&&!$.endsWith("/")&&!$.endsWith(".lock")&&_U6.test($)}function Cd$($){return $.req.header("x-forwarded-host")??new URL($.req.url).host}async function Aa($){let Z=$.get("decofileScope");return BT0($.var.studioContext,Z.organizationId,Z.githubRepo)}function Ta($,Z){if(Z instanceof h4){let Q=Z.status===404?404:Z.status===409?409:Z.status===422?409:502;return $.json({error:Z.message},Q)}let X=Z instanceof Error?Z.message:String(Z);return $.json({error:X},500)}function _d$(){let $=new F1;return $.use("/:virtualMcpId/:branch",Sd$),$.use("/:virtualMcpId/:branch/*",Sd$),$.get("/:virtualMcpId/:branch",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await Aa(Z),Y=await Jd$(Q,X.branch,X.packagePath,{createBranchIfMissing:!!X.userId}),G={ETag:`"${Y.sha}"`,"Cache-Control":"no-store","Access-Control-Allow-Origin":"*"};if(Z.req.header("if-none-match")===`"${Y.sha}"`)return Z.body(null,304,G);if(!X.userId)return Z.body(Y.decofile,200,{...G,"content-type":"application/json"});let J=i71({organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,branch:X.branch});return Z.body(`{"version":${JSON.stringify(Y.sha)},"token":${JSON.stringify(J)},"apiHost":${JSON.stringify(Cd$(Z))},"decofile":${Y.decofile}}`,200,{...G,"content-type":"application/json"})}catch(Q){return Ta(Z,Q)}}),$.get("/:virtualMcpId/:branch/meta",async(Z)=>{let X=Z.get("decofileScope"),Q=X.packagePath?`${X.packagePath}/.deco/meta.gen.json`:".deco/meta.gen.json";try{let Y=await Aa(Z),G=await Y.getFileTextAtRef(X.branch,Q);if(G===null){let J=await Y.getDefaultBranch();if(J!==X.branch)G=await Y.getFileTextAtRef(J,Q)}if(G===null)return Z.json({error:"meta.gen.json not committed"},404);return Z.body(G,200,{"content-type":"application/json","Cache-Control":"no-store","Access-Control-Allow-Origin":"*"})}catch(Y){return Ta(Z,Y)}}),$.patch("/:virtualMcpId/:branch",bU6,async(Z)=>{let X=Z.get("decofileScope"),Q=Z.var.studioContext,Y=xU6.safeParse(await Z.req.json().catch(()=>null));if(!Y.success)return Z.json({error:"Invalid body",details:Y.error.issues},400);let G=Y.data;for(let J of[...Object.keys(G.set??{}),...G.delete??[]])try{OT0(J)}catch(W){let K=W instanceof Error?W.message:String(W);return Z.json({error:K},400)}for(let[J,W]of Object.entries(G.set??{})){if(typeof W!=="object"||W===null||Array.isArray(W))return Z.json({error:`Block "${J}" must be a JSON object`},400);if(_71(J))return Z.json({error:`Block key "${J}" collides with a framework resolver module and cannot be written`},400)}try{let J=await Aa(Z),W=await Pd$(`${X.organizationId}/${X.virtualMcpId}/${X.branch}`,{client:J,branch:X.branch,packagePath:X.packagePath,coAuthor:nu(Q)},G),K=i71({organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,branch:X.branch});return Z.json({version:W,token:K,apiHost:Cd$(Z)})}catch(J){return Ta(Z,J)}}),$.post("/:virtualMcpId/:branch/publish",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await Aa(Z),Y=await Q.getDefaultBranch();if(Y===X.branch)return Z.json({error:"Branch is already the default branch"},400);let G=`chore(decofile): publish ${X.branch}`;try{let J;try{J=await Q.mergeBranch(Y,X.branch,G)}catch(W){if(!(W instanceof h4&&W.status===409))throw W;await qT0(Q,X.branch,Y),J=await Q.mergeBranch(Y,X.branch,G)}return J?Z.json({result:"merged",sha:J}):Z.json({result:"up-to-date"})}catch(J){if(J instanceof h4&&J.status===409)return Z.json({error:"merge-conflict"},409);if(J instanceof h4&&J.status===405){let K=await Q.findOpenPullRequest(Y,X.branch)??await Q.createPullRequest({base:Y,head:X.branch,title:`Publish ${X.branch}`});return Z.json({result:"pull-request",number:K.number,url:K.html_url})}throw J}}catch(Q){return Ta(Z,Q)}}),$.get("/:virtualMcpId/:branch/status",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await Aa(Z),Y=await Q.getDefaultBranch();if(Y===X.branch)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0,lastCommitAt:null});try{let[{aheadBy:G,behindBy:J},W]=await Promise.all([Q.compare(Y,X.branch),Q.getBranchHead(X.branch)]);return Z.json({baseBranch:Y,aheadBy:G,behindBy:J,lastCommitAt:W.committedAt})}catch(G){if(G instanceof h4&&G.status===404)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0,lastCommitAt:null});throw G}}catch(Q){return Ta(Z,Q)}}),$}var _U6,Md$=500,kd$=1048576,Vd$=1024,fU6=8388608,bU6,xU6,Sd$;var vd$=D(()=>{an0();DT0();U8();AH();P71();UT0();l71();C71();Ad$();qd$();c71();aD();TT0();_U6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;bU6=o5({maxSize:fU6,onError:($)=>$.json({error:"Payload too large"},413)}),xU6=eu.object({set:eu.record(eu.string(),eu.unknown()).optional(),delete:eu.array(eu.string()).optional()}).refine(($)=>Object.keys($.set??{}).length>0||($.delete?.length??0)>0,{message:"Patch must set or delete at least one block"}).refine(($)=>Object.keys($.set??{}).length+($.delete?.length??0)<=Md$,{message:`Patch cannot touch more than ${Md$} blocks`}).refine(($)=>Object.values($.set??{}).every((Z)=>JSON.stringify(Z).length<=kd$),{message:`Each block must be at most ${kd$} bytes`}).refine(($)=>[...Object.keys($.set??{}),...$.delete??[]].every((Z)=>Z.length<=Vd$),{message:`Each block key must be at most ${Vd$} characters`}),Sd$=NT0(async($,Z)=>{let X=$.var.studioContext,Q=X.organization;if(!Q)return $.json({error:"Organization scope required"},500);let Y=$.req.param("virtualMcpId"),G=$.req.param("branch");if(!Y||!G)return $.json({error:"virtualMcpId and branch are required"},400);if(!vU6(G))return $.json({error:`Invalid branch name: ${G}`},400);let J=X.auth?.user?.id??null;if(!J){let B=$.req.query("token");if(!($.req.method==="GET"&&!$.req.path.match(/\/(publish|status)$/)))return $.json({error:"Unauthorized"},401);if(!B||!Id$(B,{organizationId:Q.id,virtualMcpId:Y,branch:G}))return $.json({error:"Unauthorized"},401)}let W=await X.storage.virtualMcps.findById(Y);if(!W||W.organization_id!==Q.id)return $.json({error:"Virtual MCP not found"},404);let K=W.metadata??null;if(!$D0(K))return $.json({error:"Project has no preview server configured"},404);let F=W.connections?.map((B)=>B.connection_id)??[],N=za(K,F);if(!N)return $.json({error:"Project has no GitHub repository"},404);let U=K?.runtime;return $.set("decofileScope",{organizationId:Q.id,virtualMcpId:Y,branch:G,packagePath:U?.path?.replace(/^\/+|\/+$/g,"")||null,githubRepo:N,userId:J}),Z()})});var fd$=($)=>{let Z=new F1;if(Z.use("*",Uv),Z.route("/",kA0()),Z.route("/",rg$()),Z.route("/",Xl$()),Z.route("/",ec$()),Z.route("/",KT0()),Z.route("/tools",Hl$()),Z.route("/",Jl$()),Z.route("/",_c$({kvStorage:$.kvStorage})),Z.route("/",Sc$()),Z.route("/fs",pc$({getConnection:$.getNatsConnection})),Z.route("/sandbox",jd$()),Z.route("/decofile",_d$()),Z.route("/",rc$()),Z.route("/deco-sites",SA0()),Z.route("/sso",AA0()),Z.route("/",HT0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",lg$()),$.mountDevAssets)Z.route("/dev-assets",CA0({orgFromPath:!0}));return Z.use("/mcp/:connectionId?",$.mcpAuth),Z.use("/mcp/:connectionId/ui-resource",$.mcpAuth),Z.use("/mcp/gateway/:virtualMcpId?",$.mcpAuth),Z.use("/mcp/virtual-mcp/:virtualMcpId?",$.mcpAuth),Z.use("/mcp/self",$.mcpAuth),Z.use("/mcp/task-run/:threadId",$.mcpAuth),Z.route("/",Hx$()),Z.get("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",$.betterAuthProtectedResourceHandler),Z.get("/mcp/.well-known/oauth-protected-resource",$.betterAuthProtectedResourceHandler),Z.route("/mcp/task-run",tc$()),Z.route("/mcp",_w0()),Z.route("/mcp/self",WT0()),Z.route("/mcp",bw0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var bd$=D(()=>{U8();d91();dg$();n91();_A0();ls();c91();Cc$();vc$();nc$();ot();b91();xw0();O71();oc$();sc$();$l$();Ql$();Wl$();L71();Fl$();w71();vw0();zd$();vd$()});function yU6($){return $.filter((Z)=>Z.vendors?.alias).map((Z)=>({name:Z.name,title:Z.title,description:Z.description,logo:Z.logo,category:Z.category,vendor:{alias:Z.vendors.alias,url:Z.vendors.url}}))}var gU6=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},xd$=()=>{let $=new F1;return $.use("*",gU6),$.get("/",async(Z)=>{let X=b0(),Q=X.decoSupabaseUrl,Y=X.decoSupabaseServiceKey;if(!Q||!Y)return Z.json({apps:[]});try{let G=await aZ(Q,Y,"apps?select=name,title,description,logo,category,vendors(alias,url)");return Z.json({apps:yU6(G)})}catch(G){return console.error("[deco-apps] GET error:",G),Z.json({error:"Failed to fetch apps"},502)}}),$};var yd$=D(()=>{U8();R$();qP0()});import{z as M1}from"zod";function MH($,Z="invalid_request_error",X=null,Q=null){return{error:{message:$,type:Z,param:X,code:Q}}}function tU6($){if(!$)return null;let Z=$.indexOf(":");if(Z===-1)return{credentialId:null,modelId:$};let X=$.substring(0,Z),Q=$.substring(Z+1);if(!X||!Q)return null;return{credentialId:X,modelId:Q}}function oU6($,Z,X){try{return JSON.parse($)}catch{throw new ud$(`Invalid JSON in tool call arguments for function '${X}' (tool_call_id: ${Z}): ${$}`)}}function rU6($){let Z={};for(let X of $)if(X.role==="assistant"&&X.tool_calls)for(let Q of X.tool_calls)Z[Q.id]=Q.function.name;return $.map((X)=>{switch(X.role){case"system":return{role:"system",content:X.content};case"user":if(typeof X.content==="string")return{role:"user",content:X.content};return{role:"user",content:X.content.map((Y)=>{if(Y.type==="text")return{type:"text",text:Y.text};return{type:"image",image:Y.image_url.url}})};case"assistant":if(X.tool_calls&&X.tool_calls.length>0)return{role:"assistant",content:X.tool_calls.map((Y)=>({type:"tool-call",toolCallId:Y.id,toolName:Y.function.name,input:oU6(Y.function.arguments,Y.id,Y.function.name)}))};return{role:"assistant",content:X.content??""};case"tool":let Q=Z[X.tool_call_id]??"unknown";return{role:"tool",content:[{type:"tool-result",toolCallId:X.tool_call_id,toolName:Q,output:{type:"text",value:X.content}}]}}})}function sU6($){let Z=$.map((X)=>{let Q=X.function.parameters?oY(X.function.parameters):oY({type:"object",properties:{}});return[X.function.name,h$({description:X.function.description,inputSchema:Q})]});return Object.fromEntries(Z)}function aU6($){if(!$)return;return{openai:{response_format:$}}}function eU6(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function gd$($,Z,X,Q,Y,G){let J={model:$,messages:Z,tools:X,temperature:Q.temperature,maxTokens:Q.max_tokens,topP:Q.top_p,frequencyPenalty:Q.frequency_penalty,presencePenalty:Q.presence_penalty,stopSequences:Q.stop?Array.isArray(Q.stop)?Q.stop:[Q.stop]:void 0,abortSignal:G};return Y?{...J,providerOptions:Y}:J}function hd$($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var hU6=256,uU6,cU6,lU6,dU6,mU6,iU6,pU6,nU6,ud$,cd$,ld$;var dd$=D(()=>{l4();U8();pu();VN();uU6=M1.object({type:M1.literal("function"),function:M1.object({name:M1.string(),description:M1.string().optional(),parameters:M1.record(M1.string(),M1.unknown()).optional()})}),cU6=M1.object({id:M1.string(),type:M1.literal("function"),function:M1.object({name:M1.string(),arguments:M1.string()})}),lU6=M1.discriminatedUnion("role",[M1.object({role:M1.literal("system"),content:M1.string(),name:M1.string().optional()}),M1.object({role:M1.literal("user"),content:M1.union([M1.string(),M1.array(M1.union([M1.object({type:M1.literal("text"),text:M1.string()}),M1.object({type:M1.literal("image_url"),image_url:M1.object({url:M1.string(),detail:M1.string().optional()})})]))]),name:M1.string().optional()}),M1.object({role:M1.literal("assistant"),content:M1.string().nullable().optional(),name:M1.string().optional(),tool_calls:M1.array(cU6).optional()}),M1.object({role:M1.literal("tool"),content:M1.string(),tool_call_id:M1.string()})]),dU6=M1.object({type:M1.literal("text")}),mU6=M1.object({type:M1.literal("json_object")}),iU6=M1.object({type:M1.literal("json_schema"),json_schema:M1.object({name:M1.string(),description:M1.string().optional(),schema:M1.record(M1.string(),M1.unknown()),strict:M1.boolean().optional()})}),pU6=M1.union([dU6,mU6,iU6]),nU6=M1.object({model:M1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:M1.array(lU6),stream:M1.boolean().optional().default(!1),temperature:M1.number().min(0).max(2).optional(),max_tokens:M1.number().positive().optional(),top_p:M1.number().min(0).max(1).optional(),frequency_penalty:M1.number().min(-2).max(2).optional(),presence_penalty:M1.number().min(-2).max(2).optional(),stop:M1.union([M1.string(),M1.array(M1.string())]).optional(),tools:M1.array(uU6).optional(),tool_choice:M1.union([M1.literal("auto"),M1.literal("none"),M1.literal("required"),M1.object({type:M1.literal("function"),function:M1.object({name:M1.string()})})]).optional(),response_format:pU6.optional(),user:M1.string().optional()});ud$=class ud$ extends Error{constructor($){super($);this.name="MessageConversionError"}};cd$=new F1;cd$.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),X=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(MH("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(MH("Organization context is required. Ensure your API key has organization metadata.","invalid_request_error","organization"),400);if((Z.organization.slug??Z.organization.id)!==X)return $.json(MH("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Q=await $.req.json(),Y=nU6.safeParse(Q);if(!Y.success){let w=Y.error.issues[0]??{message:"Invalid request",path:[]};return $.json(MH(`Invalid request: ${w.message}`,"invalid_request_error",w.path.length>0?w.path.join("."):null),400)}let G=Y.data,J=tU6(G.model);if(!J)return $.json(MH("Invalid model format. Expected 'model_id' or 'credential_id:model_id' (e.g., 'claude-sonnet-4-6' or 'key_abc123:claude-sonnet-4-6')","invalid_request_error","model"),400);let{credentialId:W}=J,{modelId:K}=J;if(!W){let E=(await Z.storage.aiProviderKeys.list({organizationId:Z.organization.id})).find((j)=>Dw(j.providerId));if(!E)return $.json(MH("No AI provider credentials configured for this organization. Add a credential in settings or specify one explicitly via 'credential_id:model_id'.","invalid_request_error","model"),400);W=E.id}let H;try{H=await Z.aiProviders.activate(W,Z.organization.id)}catch{return $.json(MH(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(K),N=rU6(G.messages),U=G.tools?sU6(G.tools):void 0,B=aU6(G.response_format),O=eU6(),L=Math.floor(Date.now()/1000);if(G.stream)return rN($,async(w)=>{let E=gd$(F,N,U,G,B,$.req.raw.signal);try{let j=SO(E),z=!1,A=0,P="",I=async()=>{if(P.length===0)return;let k=P;P="",await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,model:G.model,choices:[{index:0,delta:{content:k},finish_reason:null}]})})};for await(let k of j.fullStream){if(!z&&(k.type==="text-delta"||k.type==="tool-call"))await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,model:G.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),z=!0;if(k.type==="text-delta"){if(P+=k.text,P.length>=hU6)await I()}else if(k.type==="tool-call"){await I();let M=A++;await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,model:G.model,choices:[{index:0,delta:{tool_calls:[{index:M,id:k.toolCallId,type:"function",function:{name:k.toolName,arguments:JSON.stringify(k.input)}}]},finish_reason:null}]})})}else if(k.type==="finish")await I(),await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,model:G.model,choices:[{index:0,delta:{},finish_reason:hd$(k.finishReason)}],usage:k.totalUsage?{prompt_tokens:k.totalUsage.inputTokens??0,completion_tokens:k.totalUsage.outputTokens??0,total_tokens:k.totalUsage.totalTokens??0}:void 0})})}await I(),await w.writeSSE({data:"[DONE]"})}catch(j){let z=j;console.error("[openai-compat:stream] Error:",z.message),await w.writeSSE({data:JSON.stringify({error:{message:z.message,type:"server_error"}})})}});else{let w=gd$(F,N,U,G,B,$.req.raw.signal),E=await kO(w),j={role:"assistant",content:E.text||null};if(E.toolCalls&&E.toolCalls.length>0)j.tool_calls=E.toolCalls.map((z)=>({id:z.toolCallId,type:"function",function:{name:z.toolName,arguments:JSON.stringify("input"in z?z.input:{})}})),j.content=null;return $.json({id:O,object:"chat.completion",created:L,model:G.model,choices:[{index:0,message:j,finish_reason:hd$(E.finishReason)}],usage:{prompt_tokens:E.usage?.inputTokens??0,completion_tokens:E.usage?.outputTokens??0,total_tokens:E.usage?.totalTokens??0}})}}catch(Q){let Y=Q;if(Y.name==="AbortError")return $.json(MH("Request aborted","invalid_request_error"),400);if(Y.name==="MessageConversionError")return $.json(MH(Y.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",Y.message,Y.stack),$.json(MH(Y.message,"server_error"),500)}});ld$=cd$});function $B6($){if(typeof $!=="object"||$===null)return!1;let X=$.githubRepo?.url;return typeof X==="string"&&X.length>0}function md$(){let $=new F1;return $.use("*",async(Z,X)=>{await X(),Z.header("Cache-Control","private, no-store"),Z.header("Vary","Cookie")}),$.get("/",async(Z)=>{let X=Z.get("studioContext"),Q=o0(X);if(!Q)return Z.json({error:"Authentication required"},401);let G=(Z.req.query("site")??"").trim().toLowerCase();if(!$J(G))return Z.json({error:"Invalid site slug"},400);let J=await X.db.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["organization.id as id","organization.slug as slug","organization.name as name","organization.metadata as metadata"]).where("member.userId","=",Q).execute(),W=[];for(let H of J){if(!H.slug||yZ(H))continue;let F=await X.storage.virtualMcps.list(H.id);for(let N of F){if(ke1(N)!==G)continue;if(!$B6(N.metadata))continue;W.push({orgSlug:H.slug,orgName:H.name??H.slug,project:{id:N.id,title:N.title,icon:N.icon??null}})}}let K={matches:W};return Z.json(K)}),$}var id$=D(()=>{U8();FO()});var nd$;var pd$=D(()=>{nd$={name:"decocms",version:"4.310.4",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});function QB6(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??XB6}}var td$,XB6="https://ph.studio.decocms.com",od$;var rd$=D(()=>{U8();t50();nC();Q9();R$();q91();pd$();td$=new F1;td$.get("/",($)=>{let Z={version:nd$.version,theme:mi1(),...MF().logo&&{logo:MF().logo},...LN()&&{internalUrl:z_1()},...b0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!b0().firecrawlApiKey,auth:ay$(),posthog:QB6(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:Ca()}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});od$=td$});function $c($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function p71($){return($c($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((X)=>X.charAt(0).toUpperCase()+X.slice(1)).join(" ")}function ad$($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent($c($))}&sz=${Z}`}function sd$($,Z){let X=$.trim();if(X.length<=Z)return X;let Q=X.slice(0,Z-1),Y=Q.lastIndexOf(" ");return`${(Y>Z*0.6?Q.slice(0,Y):Q).trimEnd()}\u2026`}function ed$($){let{brand:Z,domain:X,score:Q,verdict:Y}=$,G=typeof Q==="number"?`${Z} commerce report \u2014 ${Math.round(Q)}/100 \xB7 decocms`:`${Z} commerce report \xB7 decocms`,J=`See the full ${Z} scorecard \u2014 SEO, performance, conversion & AEO signals scored by decocms.`,W=Y?.trim()?sd$(`${Y.trim().replace(/\s+/g," ")} \u2014 ${J}`,200):sd$(`How does ${X} really perform? ${J}`,200);return{title:G,description:W}}import{z as l0}from"zod";var Iv,YB6,GB6,JB6,WB6,$m$;var Zm$=D(()=>{Iv=l0.enum(["good","bad","neutral"]),YB6=l0.preprocess(($)=>{if(Array.isArray($))return{kind:"text",value:$.find((X)=>X!==null&&typeof X!=="object")??""};return $!==null&&typeof $==="object"?$:{kind:"text",value:$}},l0.object({kind:l0.enum(["text","number","sparkline","badge","score"]).catch("text"),value:l0.coerce.string().optional(),tone:Iv.optional(),muted:l0.boolean().optional(),delta:l0.coerce.string().optional(),deltaDir:l0.enum(["up","down","neutral"]).optional(),points:l0.array(l0.coerce.number()).optional(),label:l0.coerce.string().optional()}).transform(($)=>{if($.kind==="badge"&&$.label==null)$.label=$.value??"";if($.kind==="score"){let Z=Number($.value);if(Number.isNaN(Z))return{...$,kind:"text"}}return $})),GB6=l0.preprocess(($)=>{let Z=$;if(Z&&typeof Z==="object"&&!Array.isArray(Z)&&Array.isArray(Z.cells))Z=Z.cells;if(Array.isArray(Z)&&Z.length===1&&Array.isArray(Z[0]))Z=Z[0];if(Array.isArray(Z))return Z;if(Z&&typeof Z==="object")return Object.values(Z);return Z},l0.array(YB6)),JB6={key:l0.coerce.string(),title:l0.coerce.string(),eyebrow:l0.coerce.string().optional(),headline:l0.coerce.string(),annotation:l0.coerce.string().optional(),methodology:l0.coerce.string().optional(),sources:l0.array(l0.object({name:l0.coerce.string(),logoUrl:l0.coerce.string()})).optional()},WB6=l0.discriminatedUnion("template",[l0.object({template:l0.literal("cover"),score:l0.object({value:l0.coerce.number(),max:l0.coerce.number().optional(),grade:l0.coerce.string().optional(),label:l0.coerce.string().optional()}).optional(),brandImage:l0.coerce.string().optional(),screenshot:l0.coerce.string().optional(),mobileScreenshot:l0.coerce.string().optional()}),l0.object({template:l0.literal("cta"),ctaUrl:l0.coerce.string().optional(),ctaLabel:l0.coerce.string().optional(),bullets:l0.array(l0.coerce.string()).optional()}),l0.object({template:l0.literal("series"),points:l0.array(l0.coerce.number()).min(2),xLabels:l0.array(l0.coerce.string()).min(1),unit:l0.coerce.string().optional(),callout:l0.object({index:l0.coerce.number(),value:l0.coerce.string(),tone:Iv.optional()})}),l0.object({template:l0.literal("threshold"),value:l0.coerce.string().default(""),metricLabel:l0.coerce.string().optional(),ratio:l0.coerce.number(),thresholdRatio:l0.coerce.number().optional(),thresholdLabel:l0.coerce.string().default(""),tone:Iv.optional()}),l0.object({template:l0.literal("stats"),stats:l0.array(l0.object({value:l0.coerce.string(),label:l0.coerce.string(),tone:Iv.optional()})).min(1)}),l0.object({template:l0.literal("bars"),items:l0.array(l0.object({value:l0.coerce.string(),label:l0.coerce.string(),ratio:l0.coerce.number(),tone:Iv.optional()})).min(1)}),l0.object({template:l0.literal("gauges"),gauges:l0.array(l0.object({label:l0.coerce.string(),value:l0.coerce.string(),status:l0.enum(["good","warn","bad"]).catch("warn"),caption:l0.coerce.string().optional(),ratio:l0.coerce.number().optional()})).min(1)}),l0.object({template:l0.literal("checklist"),checks:l0.array(l0.object({label:l0.coerce.string(),status:l0.enum(["pass","fail","warn"]).catch("fail"),value:l0.coerce.string().optional()})).min(1)}),l0.object({template:l0.literal("table"),columns:l0.array(l0.object({label:l0.coerce.string(),align:l0.enum(["left","right"]).optional()})).min(1),rows:l0.array(GB6).min(1),highlightRow:l0.coerce.number().optional()}),l0.object({template:l0.literal("products"),products:l0.array(l0.object({name:l0.coerce.string(),price:l0.coerce.string().optional(),image:l0.coerce.string().optional(),url:l0.coerce.string().optional()})).min(1)}),l0.object({template:l0.literal("list"),entries:l0.array(l0.object({label:l0.coerce.string(),severity:l0.enum(["error","warning","notice"]).catch("notice")})).min(1),moreCount:l0.coerce.number().optional()}),l0.object({template:l0.literal("keywords"),volumeLabel:l0.coerce.string().optional(),keywords:l0.array(l0.object({term:l0.coerce.string(),volume:l0.coerce.string(),position:l0.coerce.number().catch(0)})).min(1)}),l0.object({template:l0.literal("competitor"),metricLabel:l0.coerce.string().optional(),competitors:l0.array(l0.object({name:l0.coerce.string(),value:l0.coerce.string(),tone:Iv.optional(),isYou:l0.boolean().optional()})).min(1)}),l0.object({template:l0.literal("scorecard"),rivalLabel:l0.coerce.string().optional(),dimensions:l0.array(l0.object({label:l0.coerce.string(),you:l0.coerce.string(),rival:l0.coerce.string().optional(),rivalName:l0.coerce.string().optional(),tone:Iv.optional()})).min(1)})]),$m$=l0.object({...JB6,template:WB6})});function ST0($){let Z=[],X=[...$.sections].sort((Y,G)=>Y.position-G.position).map((Y)=>{let G=$m$.safeParse(Y.props);if(G.success)return G.data;let J=G.error.issues[0];return Z.push({section_type:Y.section_type,position:Y.position,reason:J?`${J.path.join(".")||"(root)"}: ${J.message}`:"contract violation"}),null}).filter((Y)=>Y!==null),Q=X.filter((Y)=>Y.template.template!=="cover"&&Y.template.template!=="cta").map((Y)=>({key:Y.key,title:Y.title}));return{deck:{meta:{...$.meta,scores:$.summary?.scores,scannedAt:$.scanned_at,toc:Q},slides:X},drops:Z}}var n71=D(()=>{Zm$()});import{join as Xm$}from"path";async function HB6($){try{let Z=await fetch(`${NK({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(KB6)});if(!Z.ok)return null;let X=await Z.json(),{deck:Q}=ST0(X);if(!Q.slides.length)return null;let Y=Q.slides.find((W)=>W.template.template==="cover"),G=Y?.template,J=G&&G.template==="cover"?G:void 0;return{brand:Q.meta.brand?.trim()||p71($),score:Q.meta.scores?.cover??J?.score?.value,verdict:Y?.annotation?.trim()||Y?.headline?.trim()||void 0}}catch{return null}}function jG($){return $.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;")}function FB6($,Z){let X=$c($),Q=Z?.brand?.trim()||p71(X),Y=ad$(X,128),J=`${(b0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(X)}`,{title:W,description:K}=ed$({brand:Q,domain:X,score:Z?.score,verdict:Z?.verdict}),H=`${J}/og.png`,F=`${Q} commerce report by decocms`;return[`<title>${jG(W)}</title>`,`<meta name="description" content="${jG(K)}" />`,'<meta name="robots" content="noindex, follow" />','<meta property="og:type" content="website" />','<meta property="og:site_name" content="decocms" />',`<meta property="og:title" content="${jG(W)}" />`,`<meta property="og:description" content="${jG(K)}" />`,`<meta property="og:url" content="${jG(J)}" />`,`<meta property="og:image" content="${jG(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${jG(F)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${jG(W)}" />`,`<meta name="twitter:description" content="${jG(K)}" />`,`<meta name="twitter:image" content="${jG(H)}" />`,`<meta name="twitter:image:alt" content="${jG(F)}" />`,`<link rel="canonical" href="${jG(J)}" />`,`<link rel="icon" href="${jG(Y)}" sizes="any" />`].join(`
2887
2887
  `)}function NB6($,Z){return $.replace(/<title>[\s\S]*?<\/title>\s*/i,"").replace(/<meta\s+name="(?:description|twitter:[^"]*)"[^>]*>\s*/gi,"").replace(/<meta\s+property="og:[^"]*"[^>]*>\s*/gi,"").replace(/<link\s+rel="icon"[^>]*>\s*/gi,"").replace("</head>",` ${Z}
2888
2888
  </head>`)}function Qm$($){let Z=new F1;return Z.get("/:domain/og.png",async(X)=>{let Q=$c(X.req.param("domain")),Y=async()=>{let G=$?Bun.file(Xm$($,"report-og-fallback.png")):null;if(!G||!await G.exists())return X.notFound();return X.body(new Uint8Array(await G.arrayBuffer()),200,{"Content-Type":"image/png","Cache-Control":"public, max-age=0, s-maxage=3600"})};try{let G=await fetch(`${NK({})}/api/v2/public/diagnostics/${encodeURIComponent(Q)}/og.png`,{signal:AbortSignal.timeout(UB6)}),J=G.headers.get("content-type")??"";if(!G.ok||!J.startsWith("image/")||!G.body)return Y();return X.body(G.body,200,{"Content-Type":J,"Cache-Control":"public, max-age=0, s-maxage=604800"})}catch{return Y()}}),Z.get("/:domain",async(X)=>{let Q=X.req.param("domain"),Y=$?Xm$($,"index.html"):null,G=Y?Bun.file(Y):null;if(!G||!await G.exists())return X.notFound();let J=await G.text();try{let W=await HB6($c(Q)),K=FB6(Q,W);return X.html(NB6(J,K),200,{"Cache-Control":"public, max-age=0, s-maxage=300"})}catch{return X.html(J)}}),Z}var KB6=2500,UB6=1e4;var Ym$=D(()=>{U8();n71();EE();R$()});function Ra($,Z){return fetch(`${NK({})}${$}`,Z)}async function BB6($,Z,X){let Q=new URLSearchParams;if(Z)Q.set("pw",Z);if(X)Q.set("lang",X);let Y=Q.toString()?`?${Q.toString()}`:"",G=await Ra(`/api/v2/public/diagnostics/${encodeURIComponent($)}${Y}`,{headers:{Accept:"application/json"}});if(G.status===404)return{status:"not_found",deck:null,scanned_at:null,drops:[]};if(!G.ok)throw Error(`report read HTTP ${G.status}`);let J=await G.json(),{deck:W,drops:K}=ST0(J);return{status:W.slides.length?"ready":"empty",deck:W,scanned_at:J.scanned_at,drops:K}}var OB6,aN,Gm$=async($,Z)=>{if(!$.get("reportUser"))return $.json({error:"Authentication required"},401);await Z();return},Jm$;var Wm$=D(()=>{U8();iY();EE();n71();OB6=new Set(["complete","errored","terminated","unknown"]),aN=new F1;aN.use("*",async($,Z)=>{let X=await a$.api.getSession({headers:$.req.raw.headers});$.set("reportUser",X?.user?.id?{email:X.user.email}:void 0),await Z(),$.header("Cache-Control","private, no-store"),$.header("Vary","Cookie");return});aN.use("/link-token/*",Gm$);aN.use("/suggest",Gm$);aN.get("/site/:domain",async($)=>{let Z=$.req.param("domain").trim();if(!Z)return $.json({error:"domain is required"},400);let X=$.get("reportUser"),Q=$.req.query("key")?.trim()||void 0,Y=$.req.query("lang")?.trim()||void 0;try{let G=await BB6(Z,Q,Y);if($.header("Cache-Control","private, no-store"),X||!G.deck)return $.json(G);return $.json({...G,deck:{...G.deck,slides:G.deck.slides.slice(0,1)},truncated:G.status==="ready"})}catch{return $.json({error:"report read failed"},502)}});aN.post("/run",async($)=>{let Z=$.get("reportUser"),X;try{X=await $.req.json()}catch{return $.json({error:"invalid JSON"},400)}let Q=typeof X.domain==="string"?X.domain.trim():"";if(!Q)return $.json({error:"domain is required"},400);let Y=Z?.email,G=typeof X.distinctId==="string"&&X.distinctId.trim()&&X.distinctId.length<=200?X.distinctId.trim():void 0;try{let J=await Ra("/api/v2/diagnostics/run",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${wE({})}`},body:JSON.stringify({url:Q,...Y?{email:Y}:{},distinct_id:G})});if(!J.ok)return $.json({error:`run HTTP ${J.status}`},502);let W=await J.json(),K=W.blocked?{state:"blocked"}:W.status==="fresh"?{state:"fresh"}:W.mode==="sync"?{state:"sync"}:{state:"running",id:W.id??null};return $.json(K)}catch{return $.json({error:"run failed"},502)}});aN.get("/status",async($)=>{let Z=$.req.query("id");if(!Z)return $.json({error:"id is required"},400);try{let X=await Ra(`/api/v2/diagnostics/status?id=${encodeURIComponent(Z)}`,{headers:{Authorization:`Bearer ${wE({})}`}});if(!X.ok)return $.json({error:`status HTTP ${X.status}`},502);let Y=(await X.json()).status??"unknown",G={done:OB6.has(Y),status:Y};return $.json(G)}catch{return $.json({error:"status failed"},502)}});aN.get("/link-token/:id",async($)=>{let Z=$.req.param("id");try{let X=await Ra(`/api/v2/public/link-tokens/${encodeURIComponent(Z)}`,{headers:{Accept:"application/json"}});if(X.status===404)return $.json(null);if(!X.ok)return $.json({error:`link token HTTP ${X.status}`},502);return $.json(await X.json())}catch{return $.json({error:"link token resolve failed"},502)}});aN.get("/suggest",async($)=>{let Z=($.req.query("q")??"").trim().slice(0,64);if(Z.length<2)return $.json({suggestions:[]});try{let X=await Ra(`/api/v2/public/suggest?q=${encodeURIComponent(Z)}`,{headers:{Accept:"application/json"}});if(!X.ok)return $.json({suggestions:[]});let Q=await X.json();return $.json({suggestions:Array.isArray(Q.suggestions)?Q.suggestions:[]})}catch{return $.json({suggestions:[]})}});Jm$=aN});import{createHmac as DB6,timingSafeEqual as LB6}from"crypto";function Hm$($,Z,X,Q=Date.now()){if(!Z||!X)return!1;let Y,G=[];for(let H of Z.split(",")){let F=H.indexOf("=");if(F<=0)continue;let N=H.slice(0,F).trim(),U=H.slice(F+1).trim();if(N==="t")Y=U;else if(N==="v1")G.push(U)}if(!Y||G.length===0)return!1;let J=Number(Y);if(!Number.isFinite(J)||Math.abs(Q/1000-J)>wB6)return!1;let W=DB6("sha256",X).update(`${Y}.${$}`).digest("hex"),K=Buffer.from(W,"hex");return G.some((H)=>{let F=Buffer.from(H,"hex");return K.length===F.length&&LB6(K,F)})}function Fm$($){let Z;try{Z=JSON.parse($)}catch{return null}let X=cJ(Z),Q=cJ(cJ(X?.data)?.object);if(!X||typeof X.type!=="string"||!Q)return null;return{id:kH(X.id),type:X.type,created:typeof X.created==="number"?X.created:void 0,livemode:typeof X.livemode==="boolean"?X.livemode:void 0,data:{object:Q}}}function Nm$($){switch($){case"active":case"trialing":return"active";case"past_due":return"past_due";default:return"canceled"}}function kH($){return typeof $==="string"?$:void 0}function cJ($){return typeof $==="object"&&$!==null?$:void 0}function CT0($){return typeof $==="number"?new Date($*1000):null}function r71($){return kH($)??kH(cJ($)?.id)}function EB6($){return r71($.subscription)??kH(cJ(cJ($.parent)?.subscription_details)?.subscription)}function jB6($){let Z=CT0($.current_period_end);if(Z)return Z;let X=cJ($.items)?.data;if(!Array.isArray(X))return null;let Q=0;for(let Y of X){let G=cJ(Y)?.current_period_end;if(typeof G==="number"&&G>Q)Q=G}return Q>0?new Date(Q*1000):null}function t71($,Z){let X=CT0($.created);return!!X&&!!Z.lastStripeEventAt&&X<Z.lastStripeEventAt}function o71($,Z){let X=CT0($.created);if(!X)return;return Z.lastStripeEventAt&&Z.lastStripeEventAt>X?void 0:X}async function zB6($,Z){let X=Z.data.object;switch(Z.type){case"checkout.session.completed":case"checkout.session.async_payment_succeeded":{let Q=kH(cJ(X.metadata)?.orgId);if(!Q)return{handled:!1,reason:"no orgId"};if(kH(cJ(X.metadata)?.kind)==="topup"){if(X.mode!=="payment")return{handled:!1,reason:"topup with wrong mode"};if(kH(X.payment_status)!=="paid")return{handled:!1,reason:"payment not confirmed"};let J=kH(X.id);if(!J)return console.error("stripe webhook: topup session without id",{eventId:Z.id,organizationId:Q}),{handled:!1,reason:"topup session without id"};let W=Number(cJ(X.metadata)?.creditCents);if(!Number.isInteger(W)||W<=0)return console.error("stripe webhook: paid topup with bad metadata \u2014 credit NOT applied",{eventId:Z.id,organizationId:Q,creditCents:cJ(X.metadata)?.creditCents}),{handled:!1,reason:"bad topup metadata"};return{handled:!0,organizationId:Q,topUp:{creditCents:W,referenceId:`stripe-topup:${J}`}}}if(X.mode!=="subscription")return{handled:!1,reason:"not a subscription checkout"};if(kH(X.payment_status)!=="paid")return{handled:!1,reason:"payment not confirmed"};let Y=await $.getBilling(Q);if(!Y)return{handled:!1,reason:"unknown org"};let G=r71(X.subscription);if(Y.stripeSubscriptionId&&G&&Y.stripeSubscriptionId!==G)return console.error("stripe webhook: refused checkout rebind",{organizationId:Q,eventId:Z.id}),{handled:!1,reason:"org already bound to another subscription",orphanSubscriptionId:G};if(t71(Z,Y))return{handled:!1,reason:"stale event"};return await $.updateStripeState(Q,{stripeCustomerId:r71(X.customer),stripeSubscriptionId:G,status:"active",lastStripeEventAt:o71(Z,Y)}),{handled:!0,organizationId:Q}}case"customer.subscription.updated":case"customer.subscription.deleted":{let Q=kH(X.id);if(!Q)return{handled:!1,reason:"no sub id"};let Y=await $.getBillingByStripeSubscriptionId(Q);if(!Y)return{handled:!1,reason:"unknown subscription"};let G=Z.type==="customer.subscription.deleted";if(!G&&t71(Z,Y))return{handled:!1,reason:"stale event"};let J=G?"canceled":Nm$(X.status);return await $.updateStripeState(Y.organizationId,{status:J,currentPeriodEnd:jB6(X),...G&&{stripeSubscriptionId:null},lastStripeEventAt:o71(Z,Y)}),{handled:!0,organizationId:Y.organizationId}}case"invoice.paid":{let Q=EB6(X);if(!Q)return{handled:!1,reason:"no sub id"};let Y=await $.getBillingByStripeSubscriptionId(Q);if(!Y)return{handled:!1,reason:"unknown subscription"};if(t71(Z,Y))return{handled:!1,reason:"stale event"};return await $.updateStripeState(Y.organizationId,{status:"active",currentPeriodEnd:CT0(X.period_end),lastStripeEventAt:o71(Z,Y)}),{handled:!0,organizationId:Y.organizationId}}default:return{handled:!1,reason:`unhandled event ${Z.type}`}}}function PB6($,Z){if(!Z.handled||$.livemode===!1)return null;let X=$.data.object;if(Z.topUp)return{name:"credits_topup_succeeded",organizationId:Z.organizationId,properties:{credit_cents:Z.topUp.creditCents}};switch($.type){case"checkout.session.completed":case"checkout.session.async_payment_succeeded":return{name:"subscription_started",organizationId:Z.organizationId,properties:{}};case"customer.subscription.deleted":return{name:"subscription_canceled",organizationId:Z.organizationId,properties:{}};case"customer.subscription.updated":return{name:"subscription_updated",organizationId:Z.organizationId,properties:{status:Nm$(X.status),...typeof X.cancel_at_period_end==="boolean"?{cancel_at_period_end:X.cancel_at_period_end}:{}}};case"invoice.paid":if(X.billing_reason==="subscription_create")return null;return{name:"subscription_renewed",organizationId:Z.organizationId,properties:{}};default:return null}}function Km$($,Z){let X=PB6($,Z);if(!X)return;cY({event:X.name,organizationId:X.organizationId,...$.id?{uuid:an1(`stripe:${$.id}:${X.name}`)}:{},...$.created?{timestamp:new Date($.created*1000)}:{},properties:X.properties})}async function Um$($){let Z=new WK(r8().db),X=await zB6(Z,$);if(!(X.handled&&X.topUp))Km$($,X);if(X.handled&&X.topUp)await Sj$({organizationId:X.organizationId,amountCents:X.topUp.creditCents,referenceId:X.topUp.referenceId}),Km$($,X);if(!X.handled&&X.orphanSubscriptionId)try{await q0$(X.orphanSubscriptionId),console.error("stripe webhook: canceled orphan subscription",{subscriptionId:X.orphanSubscriptionId,eventId:$.id})}catch(Q){if(!(Q instanceof pY&&(Q.status===400||Q.status===404)))throw Q}return X}var wB6=300;var Bm$=D(()=>{nG();S4();M50();kE();W11()});var AB6=1048576,s71;var Om$=D(()=>{U8();AH();R$();Bm$();s71=new F1;s71.post("/webhook",o5({maxSize:AB6,onError:($)=>$.json({error:"payload too large"},413)}),async($)=>{let Z=b0().stripeWebhookSecret;if(!Z)return $.json({error:"stripe billing not configured"},503);let X=await $.req.text();if(!Hm$(X,$.req.header("stripe-signature"),Z))return $.json({error:"invalid signature"},400);let Y=Fm$(X);if(!Y)return $.json({error:"invalid payload"},400);let G=await Um$(Y);return console.log("stripe webhook",{eventId:Y.id,type:Y.type,livemode:Y.livemode,...G}),$.json({received:!0})})});import{timingSafeEqual as TB6}from"crypto";function IB6($,Z,X){if(!Z?.startsWith("sha256="))return!1;let Q=new Bun.CryptoHasher("sha256",X).update($).digest("hex"),Y=Z.slice(7);if(Y.length!==Q.length)return!1;return TB6(Buffer.from(Y),Buffer.from(Q))}var RB6=5242880,a71;var Dm$=D(()=>{U8();AH();t3();a71=new F1;a71.post("/webhook",o5({maxSize:RB6,onError:($)=>$.json({error:"payload too large"},413)}),async($)=>{let Z=process.env.GITHUB_WEBHOOK_SECRET;if(!Z)return $.json({error:"github webhook not configured"},503);let X=await $.req.text();if(!IB6(X,$.req.header("x-hub-signature-256"),Z))return $.json({error:"invalid signature"},400);if($.req.header("x-github-event")!=="push")return $.json({ok:!0,ignored:"event"});let Q;try{Q=JSON.parse(X)}catch{return $.json({error:"invalid payload"},400)}let Y=Q.ref,G=Q.repository?.full_name;if(!Y||!G)return $.json({ok:!0,ignored:"shape"});let W=(await rn0())?.markTenantPoolsDirty(G,Y)??[];return $.json({ok:!0,pools:W})})});function Lm$($,Z){if(Z.startsWith("text/html")||Z.startsWith("image/svg"))$.set("Content-Security-Policy","sandbox allow-scripts allow-modals allow-same-origin")}var wm$,qB6,MB6,Em$;var jm$=D(()=>{U8();q3();zg();Ny();wm$=new F1,qB6=["range","if-none-match","if-modified-since"],MB6=["content-type","content-length","content-range","accept-ranges","etag","last-modified"];wm$.get("/:org/files/*",async($)=>{let Z=$.get("studioContext"),X=Z.organization?.id;if(!Z.auth?.user?.id){if(Mu($))return $.redirect(`/login?next=${encodeURIComponent($.req.path)}`,302);throw new Z$(401,{message:"Authentication required"})}if(!X)throw new Z$(401,{message:"Organization context required"});let Q=$.req.path.replace(/^.*\/files\//,"");if(!Q)throw new Z$(400,{message:"Missing file key"});let Y=await zt(Q,Z);if(!Y)throw new Z$(503,{message:"Object storage not configured"});if(Y.startsWith("data:")&&sG()){let K=Y.match(/^data:([^;]+);base64,(.+)$/s);if(!K)throw new Z$(500,{message:"Invalid data URL from storage"});let[,H,F]=K,N=Buffer.from(F,"base64"),U=new Headers({"Content-Type":H,"Cache-Control":"private, max-age=86400"});return Lm$(U,H),new Response(N,{status:200,headers:U})}let G=new Headers;for(let K of qB6){let H=$.req.header(K);if(H)G.set(K,H)}let J=await fetch(Y,{headers:G});if(J.status===403||J.status===404)throw new Z$(404,{message:"File not found"});if(!J.ok&&J.status!==304&&J.status!==416)throw console.error(`[files] upstream storage error ${J.status} for key:`,Q),new Z$(502,{message:"Upstream storage error"});let W=new Headers;for(let K of MB6){let H=J.headers.get(K);if(H)W.set(K,H)}return W.set("Cache-Control","private, max-age=86400"),Lm$(W,W.get("content-type")??""),new Response(J.body,{status:J.status,headers:W})});Em$=wm$});var Ia=_((qv)=>{var kB6=qv&&qv.__createBinding||(Object.create?function($,Z,X,Q){if(Q===void 0)Q=X;var Y=Object.getOwnPropertyDescriptor(Z,X);if(!Y||("get"in Y?!Z.__esModule:Y.writable||Y.configurable))Y={enumerable:!0,get:function(){return Z[X]}};Object.defineProperty($,Q,Y)}:function($,Z,X,Q){if(Q===void 0)Q=X;$[Q]=Z[X]}),VB6=qv&&qv.__exportStar||function($,Z){for(var X in $)if(X!=="default"&&!Object.prototype.hasOwnProperty.call(Z,X))kB6(Z,$,X)};Object.defineProperty(qv,"__esModule",{value:!0});VB6(qY(),qv)});var Am$=_((zm$)=>{Object.defineProperty(zm$,"__esModule",{value:!0});zm$.version=void 0;zm$.version="3.4.0"});var Im$=_((VH)=>{var SB6=VH&&VH.__importDefault||function($){return $&&$.__esModule?$:{default:$}};Object.defineProperty(VH,"__esModule",{value:!0});VH.NodeTransport=VH.VERSION=void 0;VH.nodeResolveHost=xB6;var a6=Ia(),CB6=P0("net"),e71=P0("tls"),_B6=P0("path"),Tm$=P0("fs"),vB6=SB6(P0("dns")),fB6=Am$();VH.VERSION=fB6.version;var bB6="nats.js";class Rm${socket;version;lang;yields=[];signal=(0,a6.deferred)();closedNotification=(0,a6.deferred)();options;connected=!1;tlsName="";done=!1;closeError;constructor(){this.lang=bB6,this.version=VH.VERSION}async connect($,Z){this.tlsName=$.tlsName,this.options=Z;let{tls:X}=this.options,{handshakeFirst:Q}=X||{};try{if(Q===!0)this.socket=await this.tlsFirst($);else this.socket=await this.dial($);if(this.done)this.socket?.destroy();let Y=await this.peekInfo();(0,a6.checkOptions)(Y,Z);let{tls_required:G,tls_available:J}=Y,W=J===!0&&Z.tls!==null;if(!Q&&(G||W))this.socket=await this.startTLS();if(this.done)this.socket?.destroy();if(G&&this.socket.encrypted!==!0)throw a6.errors.InvalidArgumentError.format("tls","is not available on this server");return this.connected=!0,this.setupHandlers(),this.signal.resolve(),Promise.resolve()}catch(Y){let G=Y;if(!G)G=new a6.errors.ConnectionError("error connecting - node provided an undefined error");let{code:J}=G,W=J==="ECONNREFUSED"?new a6.errors.ConnectionError("connection refused",{cause:G}):G;throw this.socket?.destroy(),W}}dial($){let Z=(0,a6.deferred)(),X,Q=(0,CB6.createConnection)($.port,$.hostname,()=>{Z.resolve(Q),Q.removeAllListeners()});return Q.on("error",(Y)=>{X=Y}),Q.on("close",()=>{Q.removeAllListeners(),Z.reject(X)}),Q.setNoDelay(!0),Z}get isClosed(){return this.done}close($){return this._closed($,!1)}peekInfo(){let $=(0,a6.deferred)(),Z;return this.socket.on("data",(X)=>{this.yields.push(X);let Q=a6.DataBuffer.concat(...this.yields),Y=(0,a6.extractProtocolMessage)(Q);if(Y!=="")try{let G=a6.INFO.exec(Y);if(!G)throw Error("unexpected response from server");let J=JSON.parse(G[1]);$.resolve(J)}catch(G){$.reject(G)}finally{this.socket.removeAllListeners()}}),this.socket.on("error",(X)=>{Z=X}),this.socket.on("close",()=>{this.socket.removeAllListeners(),$.reject(Z)}),$}loadFile($){if(!$)return Promise.resolve();let Z=(0,a6.deferred)();try{if($=(0,_B6.resolve)($),!(0,Tm$.existsSync)($))Z.reject(Error(`${$} doesn't exist`));(0,Tm$.readFile)($,(X,Q)=>{if(X)return Z.reject(X);Z.resolve(Q)})}catch(X){Z.reject(X)}return Z}async loadClientCerts(){let $={},{certFile:Z,cert:X,caFile:Q,ca:Y,keyFile:G,key:J}=this.options.tls;try{if(Z){let W=await this.loadFile(Z);if(W)$.cert=W}else if(X)$.cert=X;if(G){let W=await this.loadFile(G);if(W)$.key=W}else if(J)$.key=J;if(Q){let W=await this.loadFile(Q);if(W)$.ca=[W]}else if(Y)$.ca=Y;return Promise.resolve($)}catch(W){return Promise.reject(W)}}async tlsFirst($){let Z,X={servername:this.tlsName,rejectUnauthorized:!0};if(this.socket)X.socket=this.socket;if(typeof this.options.tls==="object")try{let Y=await this.loadClientCerts()||{};X=(0,a6.extend)(X,this.options.tls,Y)}catch(Y){return Promise.reject(new a6.errors.ConnectionError(Y.message,{cause:Y}))}let Q=(0,a6.deferred)();try{let Y=(0,e71.connect)($.port,$.hostname,X,()=>{Y.removeAllListeners(),Q.resolve(Y)});Y.on("error",(G)=>{Z=G}),Y.on("secureConnect",()=>{if(X.rejectUnauthorized===!1)return;if(!Y.authorized)throw Y.authorizationError}),Y.on("close",()=>{Q.reject(Z),Y.removeAllListeners()}),Y.setNoDelay(!0)}catch(Y){Q.reject(new a6.errors.ConnectionError(Y.message,{cause:Y}))}return Q}async startTLS(){let $,Z={socket:this.socket,servername:this.tlsName,rejectUnauthorized:!0};if(typeof this.options.tls==="object")try{let Q=await this.loadClientCerts()||{};Z=(0,a6.extend)(Z,this.options.tls,Q)}catch(Q){return Promise.reject(new a6.errors.ConnectionError(Q.message,{cause:Q}))}let X=(0,a6.deferred)();try{let Q=(0,e71.connect)(Z,()=>{Q.removeAllListeners(),X.resolve(Q)});Q.on("error",(Y)=>{$=Y}),Q.on("secureConnect",()=>{if(Z.rejectUnauthorized===!1)return;if(!Q.authorized)throw Q.authorizationError}),Q.on("close",()=>{X.reject($),Q.removeAllListeners()})}catch(Q){X.reject(new a6.errors.ConnectionError(Q.message,{cause:Q}))}return X}setupHandlers(){let $;this.socket.on("data",(Z)=>{return this.yields.push(Z),this.signal.resolve()}),this.socket.on("error",(Z)=>{$=Z}),this.socket.on("end",()=>{if(this.socket?.destroyed)return;this.socket?.write(new Uint8Array(0),()=>{this.socket?.end()})}),this.socket.on("close",()=>{this._closed($,!1)})}[Symbol.asyncIterator](){return this.iterate()}async*iterate(){while(!0){if(this.yields.length===0)await this.signal;let $=this.yields;this.yields=[];for(let Z=0;Z<$.length;Z++){if(this.options.debug)console.info(`> ${(0,a6.render)($[Z])}`);yield $[Z]}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,a6.deferred)()}}discard(){if(this.done=!0,this.socket)try{this.socket.removeAllListeners(),this.socket.destroy()}catch{}}disconnect(){this._closed(void 0,!0).then().catch()}isEncrypted(){return this.socket instanceof e71.TLSSocket}_send($){if(this.isClosed||this.socket===void 0)return Promise.resolve();if(this.options.debug)console.info(`< ${(0,a6.render)($)}`);let Z=(0,a6.deferred)();try{this.socket.write($,(X)=>{if(X){if(this.options.debug)console.error(`!!! ${(0,a6.render)($)}: ${X}`);return Z.reject(X)}return Z.resolve()})}catch(X){if(this.options.debug)console.error(`!!! ${(0,a6.render)($)}: ${X}`);Z.reject(X)}return Z}send($){this._send($).catch((X)=>{})}async _closed($,Z=!0){if(!this.connected)return;if(this.done){this.socket?.destroy();return}if(this.closeError=$,!$&&this.socket&&Z)try{await this._send(new TextEncoder().encode(""))}catch(X){if(this.options.debug)console.log("transport close terminated with an error",X)}try{if(this.socket)this.socket.removeAllListeners(),this.socket?.destroy(),this.socket=void 0}catch(X){console.log(X)}this.done=!0,this.closedNotification.resolve(this.closeError)}closed(){return this.closedNotification}}VH.NodeTransport=Rm$;function xB6($){let Z=(0,a6.deferred)();return vB6.default.lookup($,{all:!0},(X,Q)=>{if(X){Z.reject(X);return}let Y=[];for(let G of Q)Y.push(G.address);if(Y.length===0)Y.push($);Z.resolve(Y)}),Z}});var Sm$=_((Vm$)=>{Object.defineProperty(Vm$,"__esModule",{value:!0});Vm$.connect=yB6;var qm$=Im$(),Mm$=Ia(),km$=Ia();function yB6($={}){if((0,km$.hasWsProtocol)($))return Promise.reject(km$.errors.InvalidArgumentError.format("servers","node client doesn't support websockets, use the 'wsconnect' function instead"));return(0,Mm$.setTransportFactory)({factory:()=>{return new qm$.NodeTransport},dnsResolveFn:qm$.nodeResolveHost}),Mm$.NatsConnectionImpl.connect($)}});var Cm$=_((eN)=>{var hB6=eN&&eN.__createBinding||(Object.create?function($,Z,X,Q){if(Q===void 0)Q=X;var Y=Object.getOwnPropertyDescriptor(Z,X);if(!Y||("get"in Y?!Z.__esModule:Y.writable||Y.configurable))Y={enumerable:!0,get:function(){return Z[X]}};Object.defineProperty($,Q,Y)}:function($,Z,X,Q){if(Q===void 0)Q=X;$[Q]=Z[X]}),uB6=eN&&eN.__exportStar||function($,Z){for(var X in $)if(X!=="default"&&!Object.prototype.hasOwnProperty.call(Z,X))hB6(Z,$,X)};Object.defineProperty(eN,"__esModule",{value:!0});eN.connect=void 0;var cB6=Sm$();Object.defineProperty(eN,"connect",{enumerable:!0,get:function(){return cB6.connect}});uB6(Ia(),eN)});function bm$($){let Z=$?.connectFn??iB6,X=null,Q=null,Y=!1,G=!1,J=!1,W=[];function K(){return X!==null&&!X.isClosed()&&!X.isDraining()&&!J}function H(){console.log(`[NatsProvider] fireReady: ${W.length} callbacks`);for(let U of W)try{U()}catch{}}function F(U){(async()=>{for await(let B of U.status())if(B.type==="disconnect")console.log("[NatsProvider] Disconnected"),J=!0;else if(B.type==="reconnect")console.log("[NatsProvider] Reconnected, re-firing ready callbacks"),J=!1,Q=null,H()})().catch(()=>{})}async function N(U,B){let O=0;while(!G)try{X=await Z({servers:U,timeout:mB6,reconnect:!0,maxReconnectAttempts:-1,...B?{authenticator:B}:{}}),console.log(`[NatsProvider] Connected to ${X.getServer()} after ${O} attempt(s)`),Q=null,J=!1,F(X),H();return}catch{O++;let L=X7(dB6,lB6,O-1,2,0.5);await w$(L)}}return{init(U,B){if(Y)return;Y=!0,G=!1;let O=B?.creds?_m$.credsAuthenticator(new TextEncoder().encode(B.creds)):void 0;N(U,O).catch(()=>{})},isConnected(){return K()},getConnection(){return K()?X:null},getJetStream(){if(!K())return null;if(!Q)Q=fm$.jetstream(X);return Q},onReady(U){if(W.push(U),K())try{U()}catch{}},async drain(){if(G=!0,Y=!1,Q=null,J=!1,X){let U=X;X=null,await U.drain().catch(()=>{})}}}}function iB6($){return vm$.connect($)}var _m$,vm$,fm$,lB6=100,dB6=3000,mB6=3000;var xm$=D(()=>{W4();_m$=V(Ic(),1),vm$=V(Cm$(),1),fm$=V(AL(),1)});function $X1($,Z){return`${$}.${Z}`}class ZX1{cache;constructor($){this.cache=Ku({ttlMs:$?.ttlMs??pB6,maxSize:$?.maxSize??nB6})}async get($,Z){return this.cache.get($X1($,Z))??null}async set($,Z,X){this.cache.set($X1($,Z),X)}async invalidate($,Z){this.cache.delete($X1($,Z))}teardown(){this.cache.clear()}}var pB6=600000,nB6=5000;var ym$=()=>{};function _T0($,Z){return`${$}:${Z}`}function XX1($){let Z=Ku({ttlMs:$?.ttlMs??tB6,maxSize:$?.maxSize??oB6}),X=$?.getConnection,Q=crypto.randomUUID(),Y=new TextEncoder,G=new TextDecoder,J=null;function W(K,H){let F=X?.();if(!F)return;try{F.publish(gm$,Y.encode(JSON.stringify({organizationId:K,keyId:H,originId:Q})))}catch(N){console.warn("[ProviderKeyCache] Publish failed (non-critical):",N)}}return{get(K,H){return Z.get(_T0(K,H))},set(K,H,F){Z.set(_T0(K,H),F)},invalidate(K,H){Z.delete(_T0(K,H)),W(K,H)},start(){if(J)return;let K=X?.();if(!K)return;J=K.subscribe(gm$),(async()=>{for await(let H of J)try{let F=JSON.parse(G.decode(H.data));if(F.originId===Q)continue;Z.delete(_T0(F.organizationId,F.keyId))}catch{}})().catch(console.error)},teardown(){J?.unsubscribe(),J=null,Z.clear()}}}var gm$="studio.ai-provider-keys.invalidate",tB6=30000,oB6=5000;var hm$=()=>{};class QX1{options;subscription=null;onCancel=null;encoder=new TextEncoder;originId=crypto.randomUUID();constructor($){this.options=$}async start($){if($)this.onCancel=$;if(this.subscription)return;if(!this.onCancel)return;let Z=this.options.getConnection();if(!Z)return;let X=new TextDecoder,Q=Z.subscribe("studio.decopilot.cancel");this.subscription=Q,(async()=>{for await(let Y of Q)try{let G=JSON.parse(X.decode(Y.data));if(G.originId===this.originId)continue;this.onCancel?.(G.taskId)}catch{}})().catch(console.error)}broadcast($){if(/[.*>\s]/.test($)){console.warn("[NatsCancelBroadcast] Invalid threadId, skipping broadcast");return}this.onCancel?.($);try{let Z=this.options.getConnection();if(!Z)return;let X=this.encoder.encode(JSON.stringify({taskId:$,originId:this.originId}));Z.publish("studio.decopilot.cancel",X)}catch(Z){console.warn("[NatsCancelBroadcast] Publish failed (non-critical):",Z)}}async stop(){this.subscription?.unsubscribe(),this.subscription=null,this.onCancel=null}}var um$=($)=>{let Z;return()=>Z??=$()},YX1,GX1;var cm$=D(()=>{B6();YX1=um$(()=>W$.createHistogram("decopilot.stream.encode_ms",{description:"Per-chunk JSON.stringify+encode time for decopilot stream",unit:"ms"})),GX1=um$(()=>W$.createCounter("decopilot.stream.published_chunks",{description:"Logical decopilot stream chunks published to JetStream",unit:"{chunks}"}))});function XO6($=mm$){return{name:oK,subjects:[`${ws0}.>`],storage:PW.StorageType.File,max_age:aB6,max_bytes:$O6,max_msgs_per_subject:ZO6,discard:PW.DiscardPolicy.Old,retention:PW.RetentionPolicy.Limits,duplicate_window:eB6,num_replicas:$}}class im${chunks=0;encodeMs=0;maxMs=0;bytes=0;windowStart=performance.now();constructor(){setInterval(()=>this.flush(),1e4).unref?.()}record($,Z){if(this.chunks++,this.encodeMs+=$,$>this.maxMs)this.maxMs=$;this.bytes+=Z}flush(){let $=performance.now(),Z=$-this.windowStart;if(this.chunks>0&&Z>0)console.warn(JSON.stringify({msg:"stream-encode-trace",windowMs:Math.round(Z),chunks:this.chunks,encodeMs:Math.round(this.encodeMs),pctOfLoop:+(this.encodeMs/Z*100).toFixed(1),maxChunkMs:+this.maxMs.toFixed(2),mbEncoded:+(this.bytes/1048576).toFixed(2)}));this.chunks=0,this.encodeMs=0,this.maxMs=0,this.bytes=0,this.windowStart=$}}function lm$($){let Z=dm$.headers();for(let[X,Q]of Object.entries($))Z.set(X,Q);return Z}function JO6($,Z){let X=0;return{publish(Q,Y,G,J){Q.publish(Y,G,J?{headers:J}:void 0).catch((W)=>{if(X++,sB6().add(1,{"org.id":Z??"unknown"}),X===1||X%100===0)console.warn(`[Decopilot] JetStream publish failed for thread ${$} (${X} total):`,W)})},get errorCount(){return X}}}function WO6($,Z){return $.info?.cluster?Z:1}function KO6($){if(!($ instanceof Error))return!1;if(/non-clustered/i.test($.message))return!0;return/replicas?\b/i.test($.message)&&/not supported|can ?not|exceed|insufficient|greater than/i.test($.message)}class JX1{options;js=null;jsm=null;constructor($){this.options=$}async init(){let $=this.options.getConnection();if(!$){console.log("[Decopilot] StreamBuffer.init skipped: NATS not connected yet");return}let Z=async(Q,Y)=>{let G=XO6(Y);try{await Q.streams.info(oK),await Q.streams.update(oK,G)}catch(J){if(J instanceof Error&&J.message.includes("stream not found"))await Q.streams.add(G),await Q.streams.update(oK,G);else if(J instanceof Error&&/can ?not change.*storage|storage type/i.test(J.message))await Q.streams.delete(oK),await Q.streams.add(G);else throw J}},X=await g6(async()=>{let Q=this.options.getJetStreamManager?await this.options.getJetStreamManager():await PW.jetstreamManager($),Y=WO6($,mm$);try{await Z(Q,Y)}catch(G){if(Y<=1||!KO6(G))throw G;console.warn(`[Decopilot] StreamBuffer: NATS rejected num_replicas=${Y} (${G.message}); falling back to an unreplicated stream`),await Z(Q,1)}return Q},{maxAttempts:5,minTimeout:250,maxTimeout:4000,jitter:0.5,isRetriable:Cg});this.js=this.options.getJetStream(),this.jsm=X,console.log(`[Decopilot] StreamBuffer.init ${this.js?"ready":"degraded (js=null)"}`)}pump($,Z,X,Q){let Y=this.js;if(!Y)return console.warn(`[Decopilot] pump: JetStream client unavailable for thread ${Z}; chunks NOT published to NATS`),Promise.resolve();let G=JO6(Z,Q),J=!1,W=()=>{if(J)return;J=!0;let H=LO$(Z);Y.publish(H.subject,H.data).catch(()=>{})};X.addEventListener("abort",W,{once:!0});let K=(H)=>{let F=performance.now(),N=js0(H,{runId:Z}),U=performance.now()-F;YX1().record(U),GX1().add(1,{"org.id":Q??"unknown"}),GO6?.record(U,N.reduce((B,O)=>B+O.data.length,0));for(let B of N)G.publish(Y,B.subject,B.data,B.headers?lm$(B.headers):void 0)};return(async()=>{let H=$.getReader(),F=0,N=0,U;try{while(!0){let{done:B,value:O}=await H.read();if(B)break;if(K(O),N++,++F>=64)F=0,await new Promise((L)=>setImmediate(L))}}catch(B){U=B,console.warn(`[Decopilot] stream pump error for thread ${Z}:`,B?.message??B)}finally{if(H.releaseLock(),W(),YO6)console.warn(JSON.stringify({msg:"decopilot-stream-diag",event:"pump-done",taskId:Z,publishedChunks:N,publishErrors:G.errorCount}))}if(U!==void 0)throw U})()}async publishSerialized($,Z){try{return await g6(()=>$.publish(Z.subject,Z.data,{...Z.headers?{headers:lm$(Z.headers)}:{},...Z.msgId?{msgID:Z.msgId}:{}}),{maxAttempts:6,minTimeout:250,maxTimeout:5000,jitter:0.5,isRetriable:Cg}),!0}catch(X){return console.error(`[Decopilot] publish failed after retries subject=${Z.subject}`,X),!1}}async publishRawChunk($,Z,X){let Q=this.js;if(!Q)return!1;let Y=performance.now(),G=js0(Z,{runId:$,dedup:X});YX1().record(performance.now()-Y),GX1().add(1);for(let J of G)if(!await this.publishSerialized(Q,J))return!1;return!0}async publishDone($,Z,X){let Q=this.js;if(!Q)return!1;let Y=DO$({runId:$,fenceToken:Z,finalSeq:X});return await this.publishSerialized(Q,Y)}async createTailStream($,Z,X){let Q=this.js;if(!Q)return console.warn(`[Decopilot] createTailStream: JetStream client unavailable for thread ${$}; no live tail`),null;let Y=X?.deliverPolicy==="new"?PW.DeliverPolicy.New:PW.DeliverPolicy.All,G=X?.closeOnDone??!1,J=OD($),W;try{W=await g6(async()=>{return(await Q.consumers.get(oK,{filter_subjects:J,deliver_policy:Y})).consume()},{maxAttempts:6,minTimeout:250,maxTimeout:5000,jitter:0.5,isRetriable:Cg})}catch(L){return console.warn("[Decopilot] JetStream tail unavailable (non-critical):",L?.message??L),null}let F=Uw0({messages:async function*(){try{for await(let L of W)yield{subject:L.subject,data:L.data,headers:L.headers}}finally{W.stop()}}(),onCancel:()=>W.stop()}).pipeThrough(Kw0()).pipeThrough(Hw0()).getReader(),N=!1,U=()=>{if(N)return;N=!0;try{F.releaseLock()}catch{}},B=!1,O=()=>{if(B)return;B=!0,W.stop(),F.cancel().catch(()=>{}),U()};return Z?.addEventListener("abort",O,{once:!0}),new ReadableStream({async pull(L){for(;;){let{done:w,value:E}=await F.read();if(w){O(),L.close();return}let j=E;if(j.kind==="done"){if(G){O(),L.close();return}continue}L.enqueue(j.chunk);return}},cancel(){O()}})}purge($){if(!this.jsm)return;this.jsm.streams.purge(oK,{filter:OD($)}).catch(()=>{})}teardown(){this.js=null,this.jsm=null}}var PW,dm$,rB6=($)=>{let Z;return()=>Z??=$()},sB6,aB6=86400000000000,eB6=120000000000,$O6=4294967296,mm$,ZO6=500000,QO6,YO6,GO6;var pm$=D(()=>{W4();zs0();Bw0();Fw0();B6();cm$();PW=V(AL(),1),dm$=V(Ic(),1),sB6=rB6(()=>W$.createCounter("decopilot.stream.publish_errors",{description:"Number of JetStream publish failures for decopilot stream chunks",unit:"{errors}"})),mm$=Math.max(1,Number(process.env.DECOPILOT_STREAM_REPLICAS??3)||3);QO6=process.env.STREAM_ENCODE_TRACE==="1",YO6=process.env.DECOPILOT_STREAM_TRACE==="1";GO6=QO6?new im$:null});function vT0($,Z,X,Q){if(!Q)return!1;return $.emit(Z,mW(X,Q.status,{title:Q.title??void 0,virtualMcpId:Q.virtual_mcp_id??void 0,createdBy:Q.created_by??void 0,triggerId:Q.trigger_id??null,branch:Q.branch??null,harnessId:Q.harness_id??void 0,createdAt:Q.created_at,updatedAt:Q.updated_at})),!0}var nm$=D(()=>{_8()});class WX1{storage;options;timer=null;constructor($,Z={}){this.storage=$;this.options=Z}start(){if(this.timer)return;let $=this.options.intervalMs??300000;this.timer=setInterval(()=>{this.runOnce()},$)}async runOnce(){let $=this.options.staleAfterMs??3600000;try{let Z=await this.storage.sweepAbandoned($);if(Z>0)console.log(`[async-research-sweeper] marked ${Z} stale jobs as abandoned`);return Z}catch(Z){return console.error("[async-research-sweeper] sweep failed",Z),0}}dispose(){if(this.timer)clearInterval(this.timer),this.timer=null}}async function tm$($,Z,X){let Q=Z.organizationId;if(!eQ(Z,(await _5($,Q)).review))return!1;if(!dC(X))return!1;if(await $.storage.taskBoard.hasHumanRejectedDone(Z.id,Q))return!1;let Y=await $.storage.organizationSettings.get(Q),G=PK(Y?.flags),J=await E5($,Q),W=await $.storage.taskBoard.update(Z.id,Q,NJ(J,G),Z.updatedBy);return await A6($,{taskBoardItemId:Z.id,action:"status_changed",actorId:null,data:{from:Z.status,to:G,reason:"pr_merged"}}),b$(Q,W),console.log(`[task-board-review-sweeper] ${Z.id}: linked PR already merged \u2014 moved to ${G}`),!0}var om$=D(()=>{j6();NX();wg();i5();cK();j5()});function DO6($){return $ instanceof sX}function LO6($,Z){return Z-$>=BO6}class KX1{taskBoard;contextFactory;billing;db;options;timer=null;running=!1;cursor=null;constructor($,Z,X,Q,Y={}){this.taskBoard=$;this.contextFactory=Z;this.billing=X;this.db=Q;this.options=Y}start(){if(this.timer)return;let $=this.options.intervalMs??HO6;this.timer=setInterval(()=>{this.runOnce()},$),this.timer.unref()}async runOnce(){if(this.running)return 0;this.running=!0;let $=0;try{let Z=this.options.batchSize??NO6,X=this.options.itemIntervalMs??FO6,Q=new Date(Date.now()-X),Y=await this.taskBoard.listItemsPendingReview(Z,this.cursor,Q),G=Y.at(-1);this.cursor=Y.length===Z&&G?{updatedAt:G.updatedAt,id:G.id}:null;for(let{id:J,organizationId:W}of Y)try{if(await this.reconcileItem(J,W,Q))$++}catch(K){console.error(`[task-board-review-sweeper] ${J} failed`,K)}await this.reapNeverStartedThreads(Z),$+=await this.dispatchDueRetries(Z),await this.reactToUnhandledFailures(Z)}catch(Z){console.error("[task-board-review-sweeper] sweep failed",Z)}finally{this.running=!1}return $}async reapNeverStartedThreads($){try{let Z=await this.taskBoard.failNeverStartedLinkedThreads($,new Date(Date.now()-gt0),yo0);for(let X of Z)console.warn(`[task-board-review-sweeper] failed never-started thread ${X.threadId} on ${X.itemId}`)}catch(Z){console.error("[task-board-review-sweeper] reaping failed",Z)}}async reactToUnhandledFailures($){let Z=await this.taskBoard.listItemsStuckAfterFailure($,new Date(Date.now()-OO6));for(let{id:X,organizationId:Q,threadId:Y}of Z)try{console.warn(`[task-board-review-sweeper] reacting to an unhandled failure on ${X}`),await fo0(this.taskBoard,Y,Q,await QN(this.db,Q)),await bo0(this.taskBoard,this.billing,Y,Q)}catch(G){console.error(`[task-board-review-sweeper] unhandled-failure reaction for ${X} failed`,G)}}async dispatchDueRetries($){let Z=0,X=await this.taskBoard.listItemsDueForRetry($,new Date);for(let{id:Q,organizationId:Y,attempts:G}of X)try{if(!await this.taskBoard.claimDueRetry(Q,Y,new Date))continue;let J=await this.taskBoard.getById(Q,Y);if(!J||J.status!=="in_progress"||J.assigneeId!==X8)continue;let W=await this.contextFactory(Y,J.assignedBy??J.createdBy);if(!W)continue;await ON(W,J,{runClass:"retry"}),Z++,console.warn(`[task-board-review-sweeper] re-dispatched ${Q} after a failure (attempt ${G})`)}catch(J){if(console.error(`[task-board-review-sweeper] retry dispatch for ${Q} failed`,J),DO6(J)){await this.returnToTodo(Q,Y,J instanceof Error?J.message:String(J));continue}await this.taskBoard.scheduleRunRetry(Q,Y,G,new Date(Date.now()+UO6),(await QN(this.db,Y)).progress).catch((W)=>console.error(`[task-board-review-sweeper] re-arming ${Q} failed`,W))}return Z}async returnToTodo($,Z,X){try{let Q=await QN(this.db,Z),Y=await this.taskBoard.getById($,Z);if(!Y||Y.status!=="in_progress")return;let G=await this.taskBoard.returnToTodoAfterFailure($,Z,Y.updatedBy,Q);if(!G)return;await this.taskBoard.recordActivity({taskBoardItemId:$,action:"status_changed",actorId:null,data:{from:"in_progress",to:"todo",reason:X}}).catch(()=>{}),b$(Z,G)}catch(Q){console.error(`[task-board-review-sweeper] returning ${$} to todo failed`,Q)}}async handOffReviewWithoutPr($,Z){let X=await this.taskBoard.listActivity(Z.id,Z.organizationId);if(!LO6(gF(X,Z.reviewCycleStartedAt),Date.now()))return;await dK($,Z,"no pull request is linked to this task \u2014 there is nothing for a "+"reviewer to review")}async reconcileItem($,Z,X){if(!await this.taskBoard.claimSweep($,Z,X))return!1;let Q=await this.taskBoard.getById($,Z);if(!Q)return!1;let Y=await QN(this.db,Z);if(!eQ(Q,Y.review))return!1;let G=Q.assigneeId===X8,J=await this.taskBoard.listPrs($,Z),W=await this.contextFactory(Z,Q.assignedBy??Q.createdBy);if(!W)return!1;if(J.length===0){if(G)await this.handOffReviewWithoutPr(W,Q);return!1}let K=await Promise.all(J.map(async(H)=>({...H,...await jg(Z,H)})));if(K.every((H)=>H.state===null))console.warn(`[task-board-review-sweeper] ${$}: no live PR state from GitHub (${K.length} PR(s)) \u2014 proceeding on unknown`);if(await tm$(W,Q,K))return!0;if(await WD$(W,Q))return!0;if(await this.resolveConflictFromSweep(W,Q,K))return!0;if(!G)return!1;if(!Xr0(K))return!1;return await TL0(W,Q,{previewMatchesHead:Qr0(K)}),!0}async resolveConflictFromSweep($,Z,X){let Q=X.find((Y)=>Y.state!=="closed"&&Y.conflict===!0);if(!Q)return!1;return await WD($,Z.organizationId,Z,{pr:{number:Q.number,url:Q.url},conflict:!0}).catch((Y)=>{return console.error("[task-board-review-sweeper] conflict resolve failed",Y),!1})}dispose(){if(this.timer)clearInterval(this.timer),this.timer=null}}var HO6=60000,FO6=300000,NO6=50,UO6=60000,BO6=900000,OO6=120000;var rm$=D(()=>{i5();j6();to0();BN();ct();cK();om$();j5();XJ();go0();YG();Lt();Eg()});import{readdir as wO6,rm as fT0}from"fs/promises";import{join as bT0}from"path";async function xT0($){let Z=new Date;Z.setUTCDate(Z.getUTCDate()-EO6),Z.setUTCHours(0,0,0,0);let X=0;try{let Q=await Mv($);for(let Y of Q)if(/^\d{4}$/.test(Y))X+=await sm$($,Y,Z);else if(!Y.startsWith(".")){let G=bT0($,Y),J=await Mv(G);for(let K of J){if(!/^\d{4}$/.test(K))continue;X+=await sm$(G,K,Z)}if((await Mv(G)).length===0)await fT0(G,{recursive:!0,force:!0})}}catch(Q){console.warn("monitoring retention cleanup failed:",Q)}return X}async function sm$($,Z,X){let Q=0,Y=bT0($,Z),G=await Mv(Y);for(let W of G){if(!/^\d{2}$/.test(W))continue;let K=bT0(Y,W),H=await Mv(K);for(let N of H){if(!/^\d{2}$/.test(N))continue;let U=new Date(`${Z}-${W}-${N}T00:00:00Z`);if(isNaN(U.getTime()))continue;if(U<X){let B=bT0(K,N);await fT0(B,{recursive:!0,force:!0}),Q++}}if((await Mv(K)).length===0)await fT0(K,{recursive:!0,force:!0})}if((await Mv(Y)).length===0)await fT0(Y,{recursive:!0,force:!0});return Q}async function Mv($){try{return(await wO6($)).filter((X)=>!X.startsWith("."))}catch{return[]}}var EO6=30;var HX1=()=>{};import{DBOS as FX1,SchedulerMode as jO6}from"@dbos-inc/dbos-sdk";async function PO6(){let $=[dJ(),kv(),vH()],Z=0;for(let X of $)try{Z+=await xT0(X)}catch(Q){console.error("[monitoring-retention] cleanup failed:",Q)}return console.log(`[monitoring-retention] deleted ${Z} day-dir(s) across ${$.length} signal dir(s)`),{deleted:Z,dirs:$.length}}async function AO6($,Z){await FX1.runStep(()=>PO6(),{name:"monitoringRetention"})}function em$(){if(am$)return;am$=!0;let $=FX1.registerWorkflow(AO6,{name:"monitoringRetentionWorkflow"});FX1.registerScheduled($,{name:"monitoringRetentionWorkflow",crontab:zO6,mode:jO6.ExactlyOncePerIntervalWhenActive})}var zO6="23 4 * * *",am$=!1;var $i$=D(()=>{AY();HX1()});function Zi$($){return async(Z,X)=>{let Q=await $.db.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["member.role","organization.id as orgId","organization.slug as orgSlug","organization.name as orgName"]).where("member.userId","=",X).where("member.organizationId","=",Z).executeTakeFirst();if(!Q)return console.warn(`[automationContextFactory] User ${X} not found in org ${Z} \u2014 returning null`),null;let Y=await DJ.create();Y.auth.user={id:X,role:Q.role},Y.organization={id:Q.orgId,slug:Q.orgSlug,name:Q.orgName};let G=await Rt($.db,Z,Q.role);return Y.boundAuth=H91({auth:Y.authInstance,headers:new Headers,role:Q.role,permissions:G,userId:X}),Y.access=new XE(X,void 0,Y.boundAuth,Q.role,"self"),QD(Y,{id:Q.orgId,slug:Q.orgSlug}),Y}}var Xi$=D(()=>{cB();YD()});function TO6(){return[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}]}function RO6(){return{services:TO6(),migrationsStatus:"pending",serverUrl:null,logs:[]}}function qO6(){for(let $ of IO6)$()}function Qi$($){let Z=[...NX1.logs,$];NX1={...NX1,logs:Z.length>500?Z.slice(-500):Z},qO6()}function UX1(){return MO6}var NX1,IO6,MO6=!1;var BX1=D(()=>{NX1=RO6(),IO6=new Set});import{EventEmitter as kO6}from"events";var OX1;var Yi$=D(()=>{BX1();OX1=new kO6;OX1.on("request",($)=>{Qi$($)})});function Gi$(){return async($,Z)=>{let X=Date.now(),Q=$.req.method,Y=$.req.path;if(Y==="/api/auth/get-session"||Y.includes("favicon")){await Z();return}let G="",J=!1;if(Y.startsWith("/mcp")&&Q==="POST"){J=!0;try{if($.req.header("Content-Type")?.includes("application/json")){let U=await $.req.raw.clone().json();if(U.method==="tools/call"&&U.params?.name){let B=Zc(U.params.name),O=U.params.arguments||{},L=Object.keys(O).map((E)=>Zc(E)),w=L.length>0?L.slice(0,3).join(",")+(L.length>3?"\u2026":""):"";G=`${J5.tool}${B}${J5.dim}(${w})${J5.reset}`}else if(U.method)G=`${J5.dim}${Zc(U.method)}${J5.reset}`}}catch{}}let W=Zc(Y);if(Y.startsWith("/mcp/conn_")){let F=Y.split("/")[2]??"";W=`/mcp/${J5.mcp}${Zc(F.slice(0,12))}\u2026${J5.reset}`}else if(Y==="/mcp")W=`${J5.mcp}/mcp${J5.reset}`;else if(Y==="/mcp/registry")W=`${J5.mcp}/mcp/registry${J5.reset}`;let K=SO6(Q),H=J?"\u25C0":"\u2190";if(!UX1())console.log(`${J5.dim}${H}${J5.reset} ${K}${Q}${J5.reset} ${W}${G?` ${G}`:""}`);try{await Z()}finally{let F=Date.now()-X,N=$.res.status,U=VO6(N),B=F<1000?`${F}ms`:`${(F/1000).toFixed(1)}s`,O=J?"\u25B6":"\u2192";if(!UX1())console.log(`${J5.dim}${O}${J5.reset} ${K}${Q}${J5.reset} ${W}${G?` ${G}`:""} ${U}${N}${J5.reset} ${J5.duration}${B}${J5.reset}`);OX1.emit("request",{method:Q,path:Zc(Y),status:N,duration:F,timestamp:new Date})}}}var J5,VO6=($)=>{if($>=500)return J5.serverError;if($>=400)return J5.clientError;if($>=300)return J5.redirect;return J5.ok},SO6=($)=>{return J5[$]||J5.reset},Zc=($)=>{return $.replace(/\r/g,"").replace(/\n/g,"").replace(/\x1b\[[0-9;]*m/g,"").replace(/[\x00-\x1f\x7f-\x9f]/g,"")};var Ji$=D(()=>{BX1();Yi$();J5={reset:"\x1B[0m",dim:"\x1B[2m",bold:"\x1B[1m",GET:"\x1B[36m",POST:"\x1B[33m",PUT:"\x1B[35m",DELETE:"\x1B[31m",ok:"\x1B[32m",redirect:"\x1B[36m",clientError:"\x1B[33m",serverError:"\x1B[31m",mcp:"\x1B[35m",tool:"\x1B[96m",duration:"\x1B[90m"}});import{createHmac as Fi$}from"crypto";import{mkdir as CO6,readdir as _O6,rm as Wi$,stat as Ni$}from"fs/promises";import{join as LX1,relative as vO6}from"path";import{z as P$}from"zod";function Bi$($){let Z=$.replace(/[^a-zA-Z0-9_-]/g,"_");return LX1(fO6,Z)}function Oi$($){return $.replace(/^\/+/,"").replace(/\.\./g,"")}function DX1($,Z){let X=Bi$($),Q=Oi$(Z);return LX1(X,Q)}function bO6($,Z,X,Q){let Y=b0().encryptionKey||"dev-secret",G=`${$}:${Z}:${X}:${Q}`;return Fi$("sha256",Y).update(G).digest("hex")}function Hi$($,Z,X,Q,Y){let G=Math.floor(Date.now()/1000)+Q,J=bO6(Z,X,G,Y),W=new URL(`/api/dev-assets/${Z}/${Oi$(X)}`,$);return W.searchParams.set("expires",G.toString()),W.searchParams.set("signature",J),W.searchParams.set("method",Y),W.toString()}function Di$($,Z,X){let Q=`${$}:${Z.getTime()}:${X}`;return`"${Fi$("md5","etag").update(Q).digest("hex")}"`}async function Li$($,Z,X,Q,Y){try{let G=await _O6($,{withFileTypes:!0});for(let J of G){let W=LX1($,J.name),H=vO6(Z,W).replace(/\\/g,"/");if(X&&!H.startsWith(X))continue;if(J.isDirectory())if(Q){let F=H+"/";if(!X||F.startsWith(X)){if(!(X?H.slice(X.length):H).includes("/"))Y.commonPrefixes.add(F)}}else await Li$(W,Z,X,Q,Y);else if(J.isFile()){if(Q&&X){let F=H.slice(X.length);if(F.includes(Q)){let N=F.indexOf(Q),U=X+F.slice(0,N+1);Y.commonPrefixes.add(U);continue}}try{let F=await Ni$(W);Y.objects.push({key:H,size:F.size,lastModified:F.mtime.toISOString(),etag:Di$(W,F.mtime,F.size)})}catch{}}}}catch{}}function wi$($,Z){let Q=o($).id;return[{name:"LIST_OBJECTS",description:"List objects in the local assets directory with pagination support",inputSchema:P$.object({prefix:P$.string().optional(),maxKeys:P$.number().optional().default(1000),continuationToken:P$.string().optional(),delimiter:P$.string().optional()}),outputSchema:P$.object({objects:P$.array(P$.object({key:P$.string(),size:P$.number(),lastModified:P$.string(),etag:P$.string()})),nextContinuationToken:P$.string().optional(),isTruncated:P$.boolean(),commonPrefixes:P$.array(P$.string()).optional()}),handler:async(Y)=>{let G=Y,J=G.prefix||"",W=G.maxKeys??1000,K=G.delimiter,H=G.continuationToken,F=Bi$(Q);await CO6(F,{recursive:!0});let N={objects:[],commonPrefixes:new Set};await Li$(F,F,J,K,N),N.objects.sort((w,E)=>w.key.localeCompare(E.key));let U=0;if(H){if(U=N.objects.findIndex((w)=>w.key>H),U===-1)U=N.objects.length}let B=N.objects.slice(U,U+W),O=U+W<N.objects.length,L=O?B[B.length-1]?.key:void 0;return{objects:B,isTruncated:O,nextContinuationToken:L,commonPrefixes:Array.from(N.commonPrefixes).sort()}}},{name:"GET_OBJECT_METADATA",description:"Get metadata for a file in the local assets directory",inputSchema:P$.object({key:P$.string()}),outputSchema:P$.object({contentType:P$.string().optional(),contentLength:P$.number(),lastModified:P$.string(),etag:P$.string(),metadata:P$.record(P$.string(),P$.string()).optional()}),handler:async(Y)=>{let G=Y,J=DX1(Q,G.key),W=await Ni$(J);return{contentType:o91(G.key),contentLength:W.size,lastModified:W.mtime.toISOString(),etag:Di$(J,W.mtime,W.size)}}},{name:"GET_PRESIGNED_URL",description:"Generate a presigned URL for downloading a file from local storage",inputSchema:P$.object({key:P$.string(),expiresIn:P$.number().optional()}),outputSchema:P$.object({url:P$.string(),expiresIn:P$.number()}),handler:async(Y)=>{let G=Y,J=G.expiresIn??Ki$;return{url:Hi$(Z,Q,G.key,J,"GET"),expiresIn:J}}},{name:"PUT_PRESIGNED_URL",description:"Generate a presigned URL for uploading a file to local storage",inputSchema:P$.object({key:P$.string(),expiresIn:P$.number().optional(),contentType:P$.string().optional()}),outputSchema:P$.object({url:P$.string(),expiresIn:P$.number()}),handler:async(Y)=>{let G=Y,J=G.expiresIn??Ki$;return{url:Hi$(Z,Q,G.key,J,"PUT"),expiresIn:J}}},{name:"DELETE_OBJECT",description:"Delete a single file from local storage",inputSchema:P$.object({key:P$.string()}),outputSchema:P$.object({success:P$.boolean(),key:P$.string()}),handler:async(Y)=>{let G=Y,J=DX1(Q,G.key);try{return await Wi$(J),{success:!0,key:G.key}}catch{return{success:!1,key:G.key}}}},{name:"DELETE_OBJECTS",description:"Delete multiple files from local storage",inputSchema:P$.object({keys:P$.array(P$.string()).max(1000)}),outputSchema:P$.object({deleted:P$.array(P$.string()),errors:P$.array(P$.object({key:P$.string(),message:P$.string()}))}),handler:async(Y)=>{let G=Y,J=[],W=[];return await Promise.all(G.keys.map(async(K)=>{let H=DX1(Q,K);try{await Wi$(H),J.push(K)}catch(F){W.push({key:K,message:F instanceof Error?F.message:"Unknown error"})}})),{deleted:J,errors:W}}}]}async function wX1($,Z,X){let Q=wi$(Z,X),Y=new sW({name:"dev-assets-mcp",version:"1.0.0"},{capabilities:{tools:{}},jsonSchemaValidator:N5});for(let J of Q){let W="shape"in J.inputSchema?J.inputSchema.shape:P$.object({}).shape,K=J.outputSchema&&"shape"in J.outputSchema?J.outputSchema.shape:P$.object({}).shape;Y.registerTool(J.name,{description:J.description??"",inputSchema:W,outputSchema:K,annotations:J.annotations,_meta:J._meta},async(H)=>{try{let F=await J.handler(H);return{content:[{type:"text",text:JSON.stringify(F)}],structuredContent:F}}catch(F){return{content:[{type:"text",text:`Error: ${F.message}`}],isError:!0}}})}let G=new JQ({enableJsonResponse:$.headers.get("Accept")?.includes("application/json")??!1});return await Y.connect(G),IJ(Y,G,$,"mcp:dev-assets")}async function Ei$($,Z,X,Q){let G=wi$(X,Q).find((J)=>J.name===$);if(!G)return{content:[{type:"text",text:`Tool not found: ${$}`}],isError:!0};try{let J=await G.handler(Z);return{content:[{type:"text",text:JSON.stringify(J)}]}}catch(J){return{content:[{type:"text",text:J instanceof Error?J.message:String(J)}],isError:!0}}}var fO6="./data/assets",Ki$=3600,Ui$,ji$;var zi$=D(()=>{R$();gg();U8();td();N_();lX();_A0();Ui$=new F1;Ui$.all("/",async($)=>{let Z=$.get("studioContext"),X=new URL($.req.url),Q=`${X.protocol}//${X.host}`;return wX1($.req.raw,Z,Q)});ji$=Ui$});var Pi$={};J4(Pi$,{mountDevRoutes:()=>xO6});function xO6($,Z){$.all("/mcp/:connectionId{.*_dev-assets$}",Z,async(Q)=>{let Y=Q.get("studioContext"),G=new URL(Q.req.url),J=`${G.protocol}//${G.host}`;return wX1(Q.req.raw,Y,J)}),$.all("/mcp/:connectionId{.*_dev-assets$}/call-tool/:toolName",Z,async(Q)=>{let Y=Q.get("studioContext"),G=new URL(Q.req.url),J=`${G.protocol}//${G.host}`,W=Q.req.param("toolName");if(!W)return Q.json({error:"Missing tool name"},400);let K=await Q.req.json(),H=await Ei$(W,K,Y,J);if(H.isError)return Q.json(H.content,500);return Q.json(H.content)}),$.use("/mcp/dev-assets",Z),$.route("/mcp/dev-assets",ji$);let X=new F1;X.use("*",jW({mountPath:"/api/dev-assets"})),X.route("/",CA0({orgFromPath:!1})),$.route("/api/dev-assets",X)}var Ai$=D(()=>{U8();l91();_A0();zi$()});import{sql as yO6}from"kysely";import{randomUUID as Ti$}from"crypto";import{z as gO6}from"zod";async function uO6($){let Z=new Date().toISOString(),X=Ti$(),Q=C8.SELF($.organizationId),Y="registry.publish_request.created",G={requestId:$.request.id,requestedId:$.request.requested_id,title:$.request.title,status:$.request.status,createdAt:$.request.created_at,requester:{name:$.request.requester_name,email:$.request.requester_email}};await $.db.insertInto("events").values({id:X,organization_id:$.organizationId,type:"registry.publish_request.created",source:Q,specversion:"1.0",subject:$.request.id,time:Z,datacontenttype:"application/json",dataschema:null,data:JSON.stringify(G),cron:null,status:"pending",attempts:0,last_error:null,next_retry_at:null,created_at:Z,updated_at:Z}).execute();let J=await $.db.selectFrom("event_subscriptions").select(["id"]).where("organization_id","=",$.organizationId).where("enabled","=",1).where("event_type","=","registry.publish_request.created").where((W)=>W.or([W("publisher","is",null),W("publisher","=",Q)])).execute();if(J.length>0)await $.db.insertInto("event_deliveries").values(J.map((W)=>({id:Ti$(),event_id:X,subscription_id:W.id,status:"pending",attempts:0,last_error:null,delivered_at:null,next_retry_at:null,created_at:Z}))).execute();try{await yO6`SELECT
2889
2889
  pg_notify('studio_events', ${X}),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "decocms",
3
- "version": "4.310.2",
3
+ "version": "4.310.4",
4
4
  "description": "Deco CMS — Self-hostable MCP Gateway for managing AI connections and tools",
5
5
  "author": "Deco team",
6
6
  "repository": {
@@ -1,3 +0,0 @@
1
- import{K as De,L as ct,T as me,R as dt,J as ut,M as ft,N as Re,O as ue,P as Oe,Q as ze,U as Fe,V as Ue,W as qe,X as mt,Y as He,Z as Ve,_ as Me,$ as Ge,a0 as pt,a1 as xt,a2 as gt,S as ht,a3 as bt,a4 as yt}from"./index-DqC1_vgC.js";import{c as E,b as F,r as K,n as Q,j as s,K as ve,o as je,B as vt}from"./index-Cf-53TKv.js";import{ag as jt,y as kt,W as Nt,X as Ct,a8 as Bt,S as ke,r as St,u as Ke}from"./agent-icon-VV70ZcKT.js";import{s as Je}from"./Plus-I16T1HEg.js";import{c as Be,b as wt,C as Pt,a as Tt,d as It,e as Lt}from"./command-Fmvdykj-.js";import{a as $t,b as At,P as _t}from"./popover-DyXC2iil.js";import{a as Et}from"./Copy01-CSTDc8TL.js";import{s as he}from"./Trash01-CI3OmtEj.js";import{u as Dt,p as Rt,Y as Ot,q as zt}from"./automation-runs-dQhOz_ue.js";import{F as Ne,T as ie,I as X,s as A,p as ne,R as te,A as le}from"./primitives-CwsGcR8l.js";import{i as Ye}from"./Check-BVx9YOXu.js";import{a as Ft}from"./Image01-D-ufY8ah.js";import{a as Ut}from"./Package-CDYNL6L_.js";import{s as qt}from"./XClose-C-cGT_KM.js";import{L as de}from"./label-Bm3ner5Z.js";import{S as We}from"./spinner-CrBK2tr-.js";import{a as Ht,b as Vt,d as Mt,e as Gt}from"./dialog-R3BwUxR3.js";import{I as be}from"./input-CvDneLXz.js";const fe=p=>typeof p=="string"?p:"",Kt=/\/blog\.tsx?$/;function Qe(p,e){for(const[t,a]of Object.entries(p)){if(t.includes("/")||!a||typeof a!="object"||Array.isArray(a))continue;const l=a;if(typeof l.__resolveType!="string"||!Kt.test(l.__resolveType))continue;const r=fe(l[e]);if(r)return r}return null}function Jt(p){return Qe(p,"pageSlug")}function Yt(p){return Qe(p,"categorySlug")}function Wt(p){const e=p.categories;if(!Array.isArray(e)||e.length===0)return"";const t=e[0];return fe(t?.slug)}function Qt(p,e){let t=p;if(/:category\??/.test(t)){if(!e.category)return null;t=t.replace(/:category\??/g,encodeURIComponent(e.category))}if(/:slug\??/.test(t)){if(!e.slug)return null;t=t.replace(/:slug\??/g,encodeURIComponent(e.slug))}return t}const Xt=/:(?:categorySlug|category|slug)\??/,Zt=/:(?:categorySlug|category|slug)\??/g;function el(p,e){return Xt.test(p)?e?p.replace(Zt,encodeURIComponent(e)):null:p}function ws({decofile:p,category:e,previewBaseUrl:t,draftPointer:a}){if(!t)return null;const l=Yt(p);if(!l)return null;const r=el(l,fe(e.slug));if(!r)return null;try{return De(new URL(r,t).href,a)}catch{return null}}function Ps({decofile:p,post:e,previewBaseUrl:t,draftPointer:a}){if(!t)return null;const l=Jt(p);if(!l)return null;const r=Qt(l,{category:Wt(e),slug:fe(e.slug)});if(!r)return null;try{return De(new URL(r,t).href,a)}catch{return null}}const Se={app:"sandbox.blockPicker.blocksLabel",site:"sandbox.blockPicker.customBlocksLabel"};function tl(p){const e=E.c(6),{iconName:t,iconUrl:a,alt:l}=p;let r;e[0]!==t?(r=kt(t)??jt,e[0]=t,e[1]=r):r=e[1];const o=r;let i;return e[2]!==o||e[3]!==l||e[4]!==a?(i=s.jsx("div",{className:"flex size-8 shrink-0 items-center justify-center overflow-hidden rounded-md border bg-muted",children:a?s.jsx("img",{src:a,alt:l,className:"size-5 object-contain"}):s.jsx(o,{size:16,className:"text-muted-foreground"})}),e[2]=o,e[3]=l,e[4]=a,e[5]=i):i=e[5],i}function we(p){const e=E.c(19),{type:t,onInsert:a}=p,l=`${t.title} ${t.resolveType} ${t.description??""}`;let r;e[0]!==a||e[1]!==t.resolveType?(r=()=>a(t.resolveType),e[0]=a,e[1]=t.resolveType,e[2]=r):r=e[2];let o;e[3]!==t.iconName||e[4]!==t.iconUrl||e[5]!==t.title?(o=s.jsx(tl,{iconName:t.iconName,iconUrl:t.iconUrl,alt:t.title}),e[3]=t.iconName,e[4]=t.iconUrl,e[5]=t.title,e[6]=o):o=e[6];let i;e[7]!==t.title?(i=s.jsx("span",{className:"text-sm font-medium",children:t.title}),e[7]=t.title,e[8]=i):i=e[8];let m;e[9]!==t.description?(m=t.description&&s.jsx("span",{className:"truncate text-xs text-muted-foreground",children:t.description}),e[9]=t.description,e[10]=m):m=e[10];let d;e[11]!==i||e[12]!==m?(d=s.jsxs("div",{className:"flex min-w-0 flex-1 flex-col",children:[i,m]}),e[11]=i,e[12]=m,e[13]=d):d=e[13];let f;return e[14]!==l||e[15]!==r||e[16]!==o||e[17]!==d?(f=s.jsxs(wt,{value:l,onSelect:r,className:"flex items-center gap-2.5",children:[o,d]}),e[14]=l,e[15]=r,e[16]=o,e[17]=d,e[18]=f):f=e[18],f}function Pe(p){const e=E.c(45),{blockTypes:t,onInsert:a,alwaysShow:l}=p,r=l===void 0?!1:l,o=F(),[i,m]=K.useState(!1);let d,f;if(e[0]!==t){d=[],f=[];for(const L of t)(L.source==="site"?f:d).push(L);e[0]=t,e[1]=d,e[2]=f}else d=e[1],f=e[2];let g;e[3]!==a?(g=L=>{a(L),m(!1)},e[3]=a,e[4]=g):g=e[4];const b=g,h=d.length>0&&f.length>0,n=r?"h-10":"";let c;e[5]!==n?(c=Q("group/insert relative flex h-6 items-center justify-center",n),e[5]=n,e[6]=c):c=e[6];let u;e[7]===Symbol.for("react.memo_cache_sentinel")?(u=s.jsx("div",{className:"absolute inset-x-0 top-1/2 h-px -translate-y-1/2 bg-border"}),e[7]=u):u=e[7];let x;e[8]!==o?(x=o("sandbox.blockPicker.insertBlockButton"),e[8]=o,e[9]=x):x=e[9];let y;e[10]===Symbol.for("react.memo_cache_sentinel")?(y=s.jsx(Je,{size:14}),e[10]=y):y=e[10];let j;e[11]!==x?(j=s.jsx($t,{asChild:!0,children:s.jsx("button",{type:"button","aria-label":x,className:"relative z-10 flex h-6 w-6 items-center justify-center rounded-full border bg-background text-muted-foreground transition-all hover:border-primary hover:text-primary cursor-pointer",children:y})}),e[11]=x,e[12]=j):j=e[12];let v;e[13]!==o?(v=o("sandbox.blockPicker.searchPlaceholder"),e[13]=o,e[14]=v):v=e[14];let C;e[15]!==v?(C=s.jsx(Pt,{placeholder:v}),e[15]=v,e[16]=C):C=e[16];let k;e[17]!==o?(k=o("sandbox.blockPicker.noBlocksFound"),e[17]=o,e[18]=k):k=e[18];let N;e[19]!==k?(N=s.jsx(Tt,{children:k}),e[19]=k,e[20]=N):N=e[20];let B;e[21]!==b||e[22]!==h||e[23]!==f||e[24]!==o?(B=f.length>0&&s.jsx(Be,{heading:h?o(Se.site):void 0,children:f.map(L=>s.jsx(we,{type:L,onInsert:b},L.resolveType))}),e[21]=b,e[22]=h,e[23]=f,e[24]=o,e[25]=B):B=e[25];let S;e[26]!==d||e[27]!==b||e[28]!==h||e[29]!==o?(S=d.length>0&&s.jsx(Be,{heading:h?o(Se.app):void 0,children:d.map(L=>s.jsx(we,{type:L,onInsert:b},L.resolveType))}),e[26]=d,e[27]=b,e[28]=h,e[29]=o,e[30]=S):S=e[30];let w;e[31]!==N||e[32]!==B||e[33]!==S?(w=s.jsxs(It,{className:"max-h-80",children:[N,B,S]}),e[31]=N,e[32]=B,e[33]=S,e[34]=w):w=e[34];let T;e[35]!==C||e[36]!==w?(T=s.jsx(At,{className:"w-80 p-0",align:"center",children:s.jsxs(Lt,{children:[C,w]})}),e[35]=C,e[36]=w,e[37]=T):T=e[37];let I;e[38]!==i||e[39]!==T||e[40]!==j?(I=s.jsxs(_t,{open:i,onOpenChange:m,children:[j,T]}),e[38]=i,e[39]=T,e[40]=j,e[41]=I):I=e[41];let P;return e[42]!==I||e[43]!==c?(P=s.jsxs("div",{className:c,children:[u,I]}),e[42]=I,e[43]=c,e[44]=P):P=e[44],P}function ll({html:p,placeholder:e,onChange:t}){const a=K.useRef(t);a.current=t;const[l,r]=K.useState(!1),o=Dt({extensions:[Rt.configure({link:{HTMLAttributes:{}},heading:!1,blockquote:!1,codeBlock:!1,horizontalRule:!1,bulletList:!1,orderedList:!1,listItem:!1,dropcursor:!1,gapcursor:!1}),ct.configure({placeholder:e??"Write something…"})],content:p||"",editorProps:{attributes:{class:Q("prose prose-sm dark:prose-invert max-w-none focus:outline-none","leading-relaxed [&_p]:my-0")}},onUpdate:({editor:m})=>{const d=m.getHTML();a.current(d==="<p></p>"?"":d)}}),i=Ot({editor:o,selector:({editor:m})=>({isFocused:m?.isFocused??!1,bold:m?.isActive("bold")??!1,italic:m?.isActive("italic")??!1,underline:m?.isActive("underline")??!1,link:m?.isActive("link")??!1})});return o?s.jsxs("div",{className:"relative",children:[(i.isFocused||l)&&s.jsxs("div",{className:"absolute -top-9 left-0 z-10 flex items-center gap-0.5 rounded-md border bg-popover p-0.5 shadow-md",children:[s.jsx(me,{active:i.bold,label:"Bold",onClick:()=>o.chain().focus().toggleBold().run(),children:s.jsx(Nt,{size:14})}),s.jsx(me,{active:i.italic,label:"Italic",onClick:()=>o.chain().focus().toggleItalic().run(),children:s.jsx(Ct,{size:14})}),s.jsx(me,{active:i.underline,label:"Underline",onClick:()=>o.chain().focus().toggleUnderline().run(),children:s.jsx(Bt,{size:14})}),s.jsx(dt,{editor:o,active:i.link,open:l,onOpenChange:r})]}),s.jsx(zt,{editor:o,className:"text-[15px] text-foreground"})]}):null}const sl=["1","2","3"],ol={1:"sandbox.plainBlocks.headingLevel1",2:"sandbox.plainBlocks.headingLevel2",3:"sandbox.plainBlocks.headingLevel3"},Te={1:"text-3xl font-bold",2:"text-2xl font-bold",3:"text-xl font-semibold",4:"text-lg font-semibold",5:"text-base font-semibold",6:"text-sm font-semibold"};function rl(p){const e=E.c(23),{text:t,level:a,onChange:l}=p,[r,o]=K.useState(!1),i=F(),m=a||"2";let d;e[0]!==r||e[1]!==m||e[2]!==l||e[3]!==i||e[4]!==t?(d=r&&s.jsx(Ne,{children:sl.map(y=>s.jsxs(ie,{active:m===y,label:i(ol[y]),onClick:()=>l({text:t,level:y}),children:["H",y]},y))}),e[0]=r,e[1]=m,e[2]=l,e[3]=i,e[4]=t,e[5]=d):d=e[5];let f;e[6]!==m||e[7]!==l?(f=y=>l({text:y,level:m}),e[6]=m,e[7]=l,e[8]=f):f=e[8];let g,b;e[9]===Symbol.for("react.memo_cache_sentinel")?(g=()=>o(!0),b=()=>o(!1),e[9]=g,e[10]=b):(g=e[9],b=e[10]);let h;e[11]!==i?(h=i("sandbox.plainBlocks.headingPlaceholder"),e[11]=i,e[12]=h):h=e[12];const n=Te[m]??Te[2];let c;e[13]!==n?(c=Q("text-foreground",n),e[13]=n,e[14]=c):c=e[14];let u;e[15]!==f||e[16]!==h||e[17]!==c||e[18]!==t?(u=s.jsx(X,{value:t,onChange:f,onFocus:g,onBlur:b,placeholder:h,className:c}),e[15]=f,e[16]=h,e[17]=c,e[18]=t,e[19]=u):u=e[19];let x;return e[20]!==d||e[21]!==u?(x=s.jsxs("div",{className:"relative",children:[d,u]}),e[20]=d,e[21]=u,e[22]=x):x=e[22],x}function nl(p){const e=E.c(6),{quote:t,onChange:a}=p,l=F();let r;e[0]!==l?(r=l("sandbox.plainBlocks.quotePlaceholder"),e[0]=l,e[1]=r):r=e[1];let o;return e[2]!==a||e[3]!==t||e[4]!==r?(o=s.jsx("div",{className:"border-l-2 border-foreground/30 pl-4",children:s.jsx(X,{value:t,onChange:a,placeholder:r,className:"text-lg italic text-foreground/90"})}),e[2]=a,e[3]=t,e[4]=r,e[5]=o):o=e[5],o}function al(p){const e=E.c(21),{code:t,language:a,onChange:l}=p,r=F();let o;e[0]!==t||e[1]!==l?(o=h=>l({code:t,language:h.target.value}),e[0]=t,e[1]=l,e[2]=o):o=e[2];let i;e[3]!==r?(i=r("sandbox.plainBlocks.languagePlaceholder"),e[3]=r,e[4]=i):i=e[4];let m;e[5]!==a||e[6]!==o||e[7]!==i?(m=s.jsx("input",{value:a,onChange:o,placeholder:i,className:"w-full border-b bg-transparent px-3 py-1.5 font-mono text-xs text-muted-foreground outline-none placeholder:text-muted-foreground/50"}),e[5]=a,e[6]=o,e[7]=i,e[8]=m):m=e[8];let d;e[9]!==a||e[10]!==l?(d=h=>l({code:h,language:a}),e[9]=a,e[10]=l,e[11]=d):d=e[11];let f;e[12]!==r?(f=r("sandbox.plainBlocks.codePlaceholder"),e[12]=r,e[13]=f):f=e[13];let g;e[14]!==t||e[15]!==d||e[16]!==f?(g=s.jsx(X,{value:t,onChange:d,placeholder:f,spellCheck:!1,className:"px-3 py-2.5 font-mono text-sm text-foreground"}),e[14]=t,e[15]=d,e[16]=f,e[17]=g):g=e[17];let b;return e[18]!==m||e[19]!==g?(b=s.jsxs("div",{className:"overflow-hidden rounded-md border bg-muted/50",children:[m,g]}),e[18]=m,e[19]=g,e[20]=b):b=e[20],b}function il(p){const e=E.c(18),{items:t,style:a,onChange:l}=p,r=a==="ordered",o=t.length?t.split(`
2
- `):[""],[i,m]=K.useState(!1),d=F(),f=K.useRef([]);let g;e[0]!==l||e[1]!==a?(g=k=>l({items:k.join(`
3
- `),style:a}),e[0]=l,e[1]=a,e[2]=g):g=e[2];const b=g,h=(k,N)=>requestAnimationFrame(()=>{const B=f.current[k];if(!B)return;B.focus();const S=N==="end"?B.value.length:0;B.setSelectionRange(S,S)}),n="relative";let c,u;e[3]===Symbol.for("react.memo_cache_sentinel")?(c=()=>m(!0),u=k=>{k.currentTarget.contains(k.relatedTarget)||m(!1)},e[3]=c,e[4]=u):(c=e[3],u=e[4]);let x;e[5]!==i||e[6]!==t||e[7]!==l||e[8]!==r||e[9]!==d?(x=i&&s.jsxs(Ne,{children:[s.jsx(ie,{active:!r,label:d("sandbox.plainBlocks.bulletedLabel"),onClick:()=>l({items:t,style:"unordered"}),children:"•"}),s.jsx(ie,{active:r,label:d("sandbox.plainBlocks.numberedLabel"),onClick:()=>l({items:t,style:"ordered"}),children:"1."})]}),e[5]=i,e[6]=t,e[7]=l,e[8]=r,e[9]=d,e[10]=x):x=e[10];const y="space-y-1",j=o.map((k,N)=>s.jsxs("li",{className:"flex items-start gap-2.5",children:[s.jsx("span",{className:"min-w-5 shrink-0 select-none pt-px text-right text-[15px] leading-relaxed text-muted-foreground tabular-nums",children:r?`${N+1}.`:"•"}),s.jsx(X,{inputRef:B=>{f.current[N]=B},value:k,onChange:B=>{const S=[...o];S[N]=B,b(S)},onKeyDown:B=>{const S=B.currentTarget;if(B.key==="Enter"){B.preventDefault();const w=[...o];w.splice(N+1,0,""),b(w),h(N+1,"start")}else B.key==="Backspace"&&k===""&&o.length>1?(B.preventDefault(),b(o.filter((w,T)=>T!==N)),h(Math.max(0,N-1),"end")):B.key==="ArrowUp"&&S.selectionStart===0&&N>0?(B.preventDefault(),h(N-1,"end")):B.key==="ArrowDown"&&S.selectionEnd===k.length&&N<o.length-1&&(B.preventDefault(),h(N+1,"end"))},placeholder:d("sandbox.plainBlocks.listItemPlaceholder"),className:"text-[15px] leading-relaxed text-foreground"})]},N));let v;e[11]!==j?(v=s.jsx("ul",{className:y,children:j}),e[11]=j,e[12]=v):v=e[12];let C;return e[13]!==c||e[14]!==u||e[15]!==x||e[16]!==v?(C=s.jsxs("div",{className:n,onFocus:c,onBlur:u,children:[x,v]}),e[13]=c,e[14]=u,e[15]=x,e[16]=v,e[17]=C):C=e[17],C}function cl(p){const e=E.c(51),{block:t,onChange:a}=p,l=F();let r;e[0]!==t.size?(r=A(t.size)||"normal",e[0]=t.size,e[1]=r):r=e[1];const o=r;let i;e[2]!==l?(i=l("sandbox.mediaBlocks.image"),e[2]=l,e[3]=i):i=e[3];let m;e[4]!==i?(m={type:"string",format:"image-uri",title:i},e[4]=i,e[5]=m):m=e[5];const d=t.url;let f;e[6]!==t||e[7]!==a?(f=S=>a({...t,url:S}),e[6]=t,e[7]=a,e[8]=f):f=e[8];let g;e[9]!==l?(g=l("sandbox.mediaBlocks.image"),e[9]=l,e[10]=g):g=e[10];let b;e[11]!==t.url||e[12]!==m||e[13]!==f||e[14]!==g?(b=s.jsx(ut,{schema:m,value:d,onChange:f,path:"block-image-url",label:g}),e[11]=t.url,e[12]=m,e[13]=f,e[14]=g,e[15]=b):b=e[15];let h;e[16]!==t.caption?(h=A(t.caption),e[16]=t.caption,e[17]=h):h=e[17];let n;e[18]!==t||e[19]!==a?(n=S=>a({...t,caption:S}),e[18]=t,e[19]=a,e[20]=n):n=e[20];let c;e[21]!==l?(c=l("sandbox.mediaBlocks.addCaption"),e[21]=l,e[22]=c):c=e[22];let u;e[23]!==c||e[24]!==h||e[25]!==n?(u=s.jsx(X,{value:h,onChange:n,placeholder:c,className:"text-center text-sm italic text-muted-foreground"}),e[23]=c,e[24]=h,e[25]=n,e[26]=u):u=e[26];let x;e[27]===Symbol.for("react.memo_cache_sentinel")?(x=["normal","full"],e[27]=x):x=e[27];let y;e[28]!==t||e[29]!==a||e[30]!==o||e[31]!==l?(y=s.jsx("div",{className:"flex items-center gap-1",children:x.map(S=>s.jsx("button",{type:"button",onClick:()=>a({...t,size:S}),className:Q("rounded px-2 py-0.5 transition-colors cursor-pointer",o===S?"bg-accent text-accent-foreground":"hover:bg-muted"),children:l(S==="full"?"sandbox.mediaBlocks.fullWidth":"sandbox.mediaBlocks.normal")},S))}),e[28]=t,e[29]=a,e[30]=o,e[31]=l,e[32]=y):y=e[32];let j;e[33]!==t.alt?(j=A(t.alt),e[33]=t.alt,e[34]=j):j=e[34];let v;e[35]!==t||e[36]!==a?(v=S=>a({...t,alt:S.target.value}),e[35]=t,e[36]=a,e[37]=v):v=e[37];let C;e[38]!==l?(C=l("sandbox.mediaBlocks.altText"),e[38]=l,e[39]=C):C=e[39];let k;e[40]!==j||e[41]!==v||e[42]!==C?(k=s.jsx("input",{value:j,onChange:v,placeholder:C,className:"flex-1 border-0 bg-transparent p-0 text-xs outline-none placeholder:text-muted-foreground/50 focus:ring-0"}),e[40]=j,e[41]=v,e[42]=C,e[43]=k):k=e[43];let N;e[44]!==y||e[45]!==k?(N=s.jsxs("div",{className:"flex items-center gap-3 text-xs text-muted-foreground",children:[y,k]}),e[44]=y,e[45]=k,e[46]=N):N=e[46];let B;return e[47]!==u||e[48]!==N||e[49]!==b?(B=s.jsxs("div",{className:"space-y-2",children:[b,u,N]}),e[47]=u,e[48]=N,e[49]=b,e[50]=B):B=e[50],B}function dl(p){const e=p.match(/(?:youtube\.com\/watch\?v=|youtu\.be\/)([\w-]{11})/);if(e)return`https://www.youtube.com/embed/${e[1]}`;const t=p.match(/vimeo\.com\/(\d+)/);return t?`https://player.vimeo.com/video/${t[1]}`:null}function ul(p){const e=E.c(28),{url:t,caption:a,onChange:l}=p,r=F();let o;e[0]!==t?(o=dl(t),e[0]=t,e[1]=o):o=e[1];const i=o;let m;e[2]!==a||e[3]!==i||e[4]!==r?(m=i?s.jsx("div",{className:"relative aspect-video overflow-hidden rounded-md border bg-muted",children:s.jsx("iframe",{src:i,title:a||r("sandbox.mediaBlocks.video"),className:"absolute inset-0 h-full w-full border-0",allowFullScreen:!0})}):s.jsx("div",{className:"flex aspect-video items-center justify-center rounded-md border border-dashed bg-muted/40 text-xs text-muted-foreground",children:r("sandbox.mediaBlocks.pasteVideoUrl")}),e[2]=a,e[3]=i,e[4]=r,e[5]=m):m=e[5];let d;e[6]!==a||e[7]!==l?(d=u=>l({url:u.target.value,caption:a}),e[6]=a,e[7]=l,e[8]=d):d=e[8];let f;e[9]!==r?(f=r("sandbox.mediaBlocks.videoUrlPlaceholder"),e[9]=r,e[10]=f):f=e[10];let g;e[11]!==d||e[12]!==f||e[13]!==t?(g=s.jsx("input",{value:t,onChange:d,placeholder:f,className:"h-9 w-full rounded-md border bg-transparent px-3 text-sm outline-none placeholder:text-muted-foreground/50 focus:ring-0"}),e[11]=d,e[12]=f,e[13]=t,e[14]=g):g=e[14];let b;e[15]!==l||e[16]!==t?(b=u=>l({url:t,caption:u}),e[15]=l,e[16]=t,e[17]=b):b=e[17];let h;e[18]!==r?(h=r("sandbox.mediaBlocks.addCaption"),e[18]=r,e[19]=h):h=e[19];let n;e[20]!==a||e[21]!==b||e[22]!==h?(n=s.jsx(X,{value:a,onChange:b,placeholder:h,className:"text-center text-sm italic text-muted-foreground"}),e[20]=a,e[21]=b,e[22]=h,e[23]=n):n=e[23];let c;return e[24]!==m||e[25]!==g||e[26]!==n?(c=s.jsxs("div",{className:"space-y-2",children:[m,g,n]}),e[24]=m,e[25]=g,e[26]=n,e[27]=c):c=e[27],c}function fl(){const p=E.c(5),e=F();let t;p[0]!==e?(t=e("sandbox.mediaBlocks.divider"),p[0]=e,p[1]=t):t=p[1];let a;p[2]===Symbol.for("react.memo_cache_sentinel")?(a=s.jsx("span",{className:"h-px flex-1 bg-border"}),p[2]=a):a=p[2];let l;return p[3]!==t?(l=s.jsx("div",{className:"flex items-center py-3","aria-label":t,children:a}),p[3]=t,p[4]=l):l=p[4],l}function ml(p){const e=E.c(22),{text:t,href:a,onChange:l}=p,r=F();let o;e[0]!==a||e[1]!==l?(o=n=>l({text:n.target.value,href:a}),e[0]=a,e[1]=l,e[2]=o):o=e[2];let i;e[3]!==r?(i=r("sandbox.mediaBlocks.buttonLabel"),e[3]=r,e[4]=i):i=e[4];const m=Math.max(t.length||11,8);let d;e[5]!==o||e[6]!==i||e[7]!==m||e[8]!==t?(d=s.jsx("div",{className:"inline-flex items-center rounded-full bg-primary px-6 py-2 text-sm font-semibold text-primary-foreground",children:s.jsx("input",{value:t,onChange:o,placeholder:i,size:m,className:"border-0 bg-transparent p-0 text-center text-sm font-semibold text-primary-foreground outline-none placeholder:text-primary-foreground/60 focus:ring-0"})}),e[5]=o,e[6]=i,e[7]=m,e[8]=t,e[9]=d):d=e[9];let f;e[10]!==l||e[11]!==t?(f=n=>l({text:t,href:n.target.value}),e[10]=l,e[11]=t,e[12]=f):f=e[12];let g;e[13]!==r?(g=r("sandbox.mediaBlocks.destinationUrlPlaceholder"),e[13]=r,e[14]=g):g=e[14];let b;e[15]!==a||e[16]!==f||e[17]!==g?(b=s.jsx("input",{value:a,onChange:f,placeholder:g,className:"w-full max-w-sm border-0 bg-transparent p-0 text-center text-xs text-muted-foreground outline-none placeholder:text-muted-foreground/50 focus:ring-0"}),e[15]=a,e[16]=f,e[17]=g,e[18]=b):b=e[18];let h;return e[19]!==d||e[20]!==b?(h=s.jsxs("div",{className:"flex flex-col items-center gap-2 py-2",children:[d,b]}),e[19]=d,e[20]=b,e[21]=h):h=e[21],h}const pe=[{value:"info",icon:"ℹ",color:"oklch(0.62 0.19 250)"},{value:"tip",icon:"✓",color:"oklch(0.65 0.17 150)"},{value:"warning",icon:"⚠",color:"oklch(0.75 0.15 75)"},{value:"product",icon:"★",color:"oklch(0.62 0.21 300)"}];function pl(p){const e=E.c(51),{title:t,body:a,variant:l,onChange:r}=p,o=F(),[i,m]=K.useState(!1);let d;e[0]!==l?(d=pe.find(P=>P.value===l)??pe[0],e[0]=l,e[1]=d):d=e[1];const f=d;let g,b;e[2]===Symbol.for("react.memo_cache_sentinel")?(g=()=>m(!0),b=P=>{P.currentTarget.contains(P.relatedTarget)||m(!1)},e[2]=g,e[3]=b):(g=e[2],b=e[3]);let h;e[4]!==a||e[5]!==i||e[6]!==r||e[7]!==t||e[8]!==f.value?(h=i&&s.jsx(Ne,{children:pe.map(P=>s.jsx(ie,{active:f.value===P.value,label:P.value,onClick:()=>r({title:t,body:a,variant:P.value}),children:s.jsx("span",{style:{color:P.color},children:P.icon})},P.value))}),e[4]=a,e[5]=i,e[6]=r,e[7]=t,e[8]=f.value,e[9]=h):h=e[9];const n=`3px solid ${f.color}`,c=`color-mix(in oklch, ${f.color} 8%, transparent)`;let u;e[10]!==n||e[11]!==c?(u={borderLeft:n,backgroundColor:c},e[10]=n,e[11]=c,e[12]=u):u=e[12];let x;e[13]!==f.color?(x={color:f.color},e[13]=f.color,e[14]=x):x=e[14];let y;e[15]!==f.icon?(y=s.jsx("span",{"aria-hidden":!0,className:"text-sm font-bold leading-none",children:f.icon}),e[15]=f.icon,e[16]=y):y=e[16];let j;e[17]!==a||e[18]!==r||e[19]!==l?(j=P=>r({title:P.target.value,body:a,variant:l}),e[17]=a,e[18]=r,e[19]=l,e[20]=j):j=e[20];let v;e[21]!==o?(v=o("sandbox.mediaBlocks.calloutTitle"),e[21]=o,e[22]=v):v=e[22];let C;e[23]!==f.color?(C={color:f.color},e[23]=f.color,e[24]=C):C=e[24];let k;e[25]!==j||e[26]!==v||e[27]!==C||e[28]!==t?(k=s.jsx("input",{value:t,onChange:j,placeholder:v,className:"flex-1 border-0 bg-transparent p-0 text-xs font-semibold uppercase tracking-wide outline-none focus:ring-0",style:C}),e[25]=j,e[26]=v,e[27]=C,e[28]=t,e[29]=k):k=e[29];let N;e[30]!==k||e[31]!==x||e[32]!==y?(N=s.jsxs("div",{className:"mb-1.5 flex items-center gap-2",style:x,children:[y,k]}),e[30]=k,e[31]=x,e[32]=y,e[33]=N):N=e[33];let B;e[34]!==r||e[35]!==t||e[36]!==l?(B=P=>r({title:t,body:P,variant:l}),e[34]=r,e[35]=t,e[36]=l,e[37]=B):B=e[37];let S;e[38]!==o?(S=o("sandbox.mediaBlocks.calloutText"),e[38]=o,e[39]=S):S=e[39];let w;e[40]!==a||e[41]!==B||e[42]!==S?(w=s.jsx(X,{value:a,onChange:B,placeholder:S,className:"text-[15px] leading-relaxed text-foreground"}),e[40]=a,e[41]=B,e[42]=S,e[43]=w):w=e[43];let T;e[44]!==N||e[45]!==w||e[46]!==u?(T=s.jsxs("div",{className:"rounded-md py-4 pl-5 pr-4",style:u,children:[N,w]}),e[44]=N,e[45]=w,e[46]=u,e[47]=T):T=e[47];let I;return e[48]!==T||e[49]!==h?(I=s.jsxs("div",{className:"relative",onFocus:g,onBlur:b,children:[h,T]}),e[48]=T,e[49]=h,e[50]=I):I=e[50],I}function xl(p){const e=E.c(34),{value:t,label:a,description:l,onChange:r}=p,o=F();let i;e[0]!==l||e[1]!==a||e[2]!==r?(i=x=>r({value:x.target.value,label:a,description:l}),e[0]=l,e[1]=a,e[2]=r,e[3]=i):i=e[3];let m;e[4]!==o?(m=o("sandbox.mediaBlocks.statValuePlaceholder"),e[4]=o,e[5]=m):m=e[5];let d;e[6]!==i||e[7]!==m||e[8]!==t?(d=s.jsx("input",{value:t,onChange:i,placeholder:m,className:"w-full border-0 bg-transparent p-0 text-center text-4xl font-bold tabular-nums text-foreground outline-none placeholder:text-muted-foreground/40 focus:ring-0"}),e[6]=i,e[7]=m,e[8]=t,e[9]=d):d=e[9];let f;e[10]!==l||e[11]!==r||e[12]!==t?(f=x=>r({value:t,label:x.target.value,description:l}),e[10]=l,e[11]=r,e[12]=t,e[13]=f):f=e[13];let g;e[14]!==o?(g=o("sandbox.mediaBlocks.label"),e[14]=o,e[15]=g):g=e[15];let b;e[16]!==a||e[17]!==f||e[18]!==g?(b=s.jsx("input",{value:a,onChange:f,placeholder:g,className:"w-full border-0 bg-transparent p-0 text-center text-xs font-semibold uppercase tracking-wide text-muted-foreground outline-none placeholder:text-muted-foreground/40 focus:ring-0"}),e[16]=a,e[17]=f,e[18]=g,e[19]=b):b=e[19];let h;e[20]!==a||e[21]!==r||e[22]!==t?(h=x=>r({value:t,label:a,description:x}),e[20]=a,e[21]=r,e[22]=t,e[23]=h):h=e[23];let n;e[24]!==o?(n=o("sandbox.mediaBlocks.optionalDescription"),e[24]=o,e[25]=n):n=e[25];let c;e[26]!==l||e[27]!==h||e[28]!==n?(c=s.jsx(X,{value:l,onChange:h,placeholder:n,className:"max-w-md text-center text-sm text-muted-foreground"}),e[26]=l,e[27]=h,e[28]=n,e[29]=c):c=e[29];let u;return e[30]!==d||e[31]!==b||e[32]!==c?(u=s.jsxs("div",{className:"flex flex-col items-center gap-1.5 border-y border-border/60 py-8 text-center",children:[d,b,c]}),e[30]=d,e[31]=b,e[32]=c,e[33]=u):u=e[33],u}function gl(p){const e=E.c(21),{cards:t,onChange:a}=p,l=F();let r,o,i,m,d;if(e[0]!==t||e[1]!==a||e[2]!==l){o=ne(t);let h;e[8]!==a?(h=c=>a(JSON.stringify(c)),e[8]=a,e[9]=h):h=e[9],r=h;const n=(c,u)=>r(o.map((x,y)=>y===c?{...x,...u}:x));d="space-y-2",i="grid grid-cols-1 gap-3 sm:grid-cols-3",m=o.slice(0,3).map((c,u)=>s.jsxs("div",{className:"group/item relative flex flex-col gap-2 rounded-lg border bg-card p-4",children:[s.jsx("div",{className:"absolute right-1 top-1",children:s.jsx(te,{label:l("sandbox.listBlocks.removeCard"),onClick:()=>r(o.filter((x,y)=>y!==u))})}),s.jsx("input",{value:A(c.icon),onChange:x=>n(u,{icon:x.target.value}),placeholder:"🎴",className:"flex h-9 w-9 items-center justify-center rounded-md border bg-background text-center text-lg outline-none focus:ring-0"}),s.jsx("input",{value:A(c.title),onChange:x=>n(u,{title:x.target.value}),placeholder:l("sandbox.listBlocks.cardTitle"),className:"border-0 bg-transparent p-0 text-[15px] font-semibold outline-none placeholder:text-muted-foreground/50 focus:ring-0"}),s.jsx(X,{value:A(c.body),onChange:x=>n(u,{body:x}),placeholder:l("sandbox.listBlocks.cardBody"),className:"text-sm text-muted-foreground"})]},u)),e[0]=t,e[1]=a,e[2]=l,e[3]=r,e[4]=o,e[5]=i,e[6]=m,e[7]=d}else r=e[3],o=e[4],i=e[5],m=e[6],d=e[7];let f;e[10]!==i||e[11]!==m?(f=s.jsx("div",{className:i,children:m}),e[10]=i,e[11]=m,e[12]=f):f=e[12];let g;e[13]!==r||e[14]!==o||e[15]!==l?(g=o.length<3&&s.jsx(le,{label:l("sandbox.listBlocks.addCard"),onClick:()=>r([...o,{title:"",body:""}])}),e[13]=r,e[14]=o,e[15]=l,e[16]=g):g=e[16];let b;return e[17]!==d||e[18]!==f||e[19]!==g?(b=s.jsxs("div",{className:d,children:[f,g]}),e[17]=d,e[18]=f,e[19]=g,e[20]=b):b=e[20],b}function hl(p){const e=E.c(36),{title:t,items:a,onChange:l}=p,r=F();let o,i,m,d,f;if(e[0]!==a||e[1]!==l||e[2]!==r||e[3]!==t){i=ne(a);let u;e[9]!==l||e[10]!==t?(u=j=>l({title:t,items:JSON.stringify(j)}),e[9]=l,e[10]=t,e[11]=u):u=e[11],o=u,d="space-y-2";let x;e[12]!==a||e[13]!==l?(x=j=>l({title:j.target.value,items:a}),e[12]=a,e[13]=l,e[14]=x):x=e[14];let y;e[15]!==r?(y=r("sandbox.listBlocks.checklistTitle"),e[15]=r,e[16]=y):y=e[16],e[17]!==x||e[18]!==y||e[19]!==t?(f=s.jsx("input",{value:t,onChange:x,placeholder:y,className:"w-full border-0 bg-transparent p-0 text-lg font-semibold outline-none placeholder:text-muted-foreground/50 focus:ring-0"}),e[17]=x,e[18]=y,e[19]=t,e[20]=f):f=e[20],m=i.map((j,v)=>s.jsxs("li",{className:"group/item flex items-start gap-3 border-b border-border/50 py-2.5",children:[s.jsx("span",{className:"mt-0.5 flex h-5 w-5 shrink-0 items-center justify-center text-primary",children:s.jsx(Ye,{size:15})}),s.jsx(X,{value:j,onChange:C=>o(i.map((k,N)=>N===v?C:k)),placeholder:r("sandbox.listBlocks.checklistItem"),className:"text-[15px] text-foreground"}),s.jsx(te,{label:r("sandbox.listBlocks.removeItem"),onClick:()=>o(i.filter((C,k)=>k!==v))})]},v)),e[0]=a,e[1]=l,e[2]=r,e[3]=t,e[4]=o,e[5]=i,e[6]=m,e[7]=d,e[8]=f}else o=e[4],i=e[5],m=e[6],d=e[7],f=e[8];let g;e[21]!==m?(g=s.jsx("ul",{children:m}),e[21]=m,e[22]=g):g=e[22];let b;e[23]!==r?(b=r("sandbox.listBlocks.addItem"),e[23]=r,e[24]=b):b=e[24];let h;e[25]!==o||e[26]!==i?(h=()=>o([...i,""]),e[25]=o,e[26]=i,e[27]=h):h=e[27];let n;e[28]!==b||e[29]!==h?(n=s.jsx(le,{label:b,onClick:h}),e[28]=b,e[29]=h,e[30]=n):n=e[30];let c;return e[31]!==d||e[32]!==f||e[33]!==g||e[34]!==n?(c=s.jsxs("div",{className:d,children:[f,g,n]}),e[31]=d,e[32]=f,e[33]=g,e[34]=n,e[35]=c):c=e[35],c}function bl(p){const e=E.c(21),{stats:t,onChange:a}=p,l=F();let r,o,i,m,d;if(e[0]!==a||e[1]!==t||e[2]!==l){o=ne(t);let h;e[8]!==a?(h=c=>a(JSON.stringify(c)),e[8]=a,e[9]=h):h=e[9],r=h;const n=(c,u)=>r(o.map((x,y)=>y===c?{...x,...u}:x));d="space-y-2",i="grid grid-cols-1 gap-3 sm:grid-cols-3",m=o.slice(0,3).map((c,u)=>s.jsxs("div",{className:"group/item relative rounded-lg border p-5 text-center",children:[s.jsx("div",{className:"absolute right-1 top-1",children:s.jsx(te,{label:l("sandbox.listBlocks.removeStat"),onClick:()=>r(o.filter((x,y)=>y!==u))})}),s.jsx("input",{value:A(c.value),onChange:x=>n(u,{value:x.target.value}),placeholder:l("sandbox.listBlocks.statValuePlaceholder"),className:"w-full border-0 bg-transparent p-0 text-center text-3xl font-bold tabular-nums text-foreground outline-none placeholder:text-muted-foreground/40 focus:ring-0"}),s.jsx("input",{value:A(c.label),onChange:x=>n(u,{label:x.target.value}),placeholder:l("sandbox.listBlocks.label"),className:"mt-1 w-full border-0 bg-transparent p-0 text-center text-sm text-muted-foreground outline-none placeholder:text-muted-foreground/40 focus:ring-0"})]},u)),e[0]=a,e[1]=t,e[2]=l,e[3]=r,e[4]=o,e[5]=i,e[6]=m,e[7]=d}else r=e[3],o=e[4],i=e[5],m=e[6],d=e[7];let f;e[10]!==i||e[11]!==m?(f=s.jsx("div",{className:i,children:m}),e[10]=i,e[11]=m,e[12]=f):f=e[12];let g;e[13]!==r||e[14]!==o||e[15]!==l?(g=o.length<3&&s.jsx(le,{label:l("sandbox.listBlocks.addStat"),onClick:()=>r([...o,{value:"",label:""}])}),e[13]=r,e[14]=o,e[15]=l,e[16]=g):g=e[16];let b;return e[17]!==d||e[18]!==f||e[19]!==g?(b=s.jsxs("div",{className:d,children:[f,g]}),e[17]=d,e[18]=f,e[19]=g,e[20]=b):b=e[20],b}function yl(p){const e=E.c(38),{title:t,steps:a,onChange:l}=p,r=F();let o,i,m,d,f,g;if(e[0]!==l||e[1]!==a||e[2]!==r||e[3]!==t){i=ne(a);let x;e[10]!==l||e[11]!==t?(x=C=>l({title:t,steps:JSON.stringify(C)}),e[10]=l,e[11]=t,e[12]=x):x=e[12],o=x;const y=(C,k)=>o(i.map((N,B)=>B===C?{...N,...k}:N));f="space-y-2";let j;e[13]!==l||e[14]!==a?(j=C=>l({title:C.target.value,steps:a}),e[13]=l,e[14]=a,e[15]=j):j=e[15];let v;e[16]!==r?(v=r("sandbox.listBlocks.stepsTitle"),e[16]=r,e[17]=v):v=e[17],e[18]!==j||e[19]!==v||e[20]!==t?(g=s.jsx("input",{value:t,onChange:j,placeholder:v,className:"w-full border-0 bg-transparent p-0 text-lg font-semibold uppercase tracking-wide outline-none placeholder:text-muted-foreground/50 focus:ring-0"}),e[18]=j,e[19]=v,e[20]=t,e[21]=g):g=e[21],m="space-y-3",d=i.map((C,k)=>s.jsxs("li",{className:"group/item flex gap-4",children:[s.jsx("span",{className:"flex h-8 w-8 shrink-0 items-center justify-center rounded-full border text-sm font-semibold text-muted-foreground",children:k+1}),s.jsxs("div",{className:"min-w-0 flex-1 space-y-1 pt-0.5",children:[s.jsx("input",{value:A(C.title),onChange:N=>y(k,{title:N.target.value}),placeholder:r("sandbox.listBlocks.stepTitle"),className:"w-full border-0 bg-transparent p-0 text-[15px] font-semibold outline-none placeholder:text-muted-foreground/50 focus:ring-0"}),s.jsx(X,{value:A(C.description),onChange:N=>y(k,{description:N}),placeholder:r("sandbox.listBlocks.stepDescription"),className:"text-sm text-muted-foreground"})]}),s.jsx(te,{label:r("sandbox.listBlocks.removeStep"),onClick:()=>o(i.filter((N,B)=>B!==k))})]},k)),e[0]=l,e[1]=a,e[2]=r,e[3]=t,e[4]=o,e[5]=i,e[6]=m,e[7]=d,e[8]=f,e[9]=g}else o=e[4],i=e[5],m=e[6],d=e[7],f=e[8],g=e[9];let b;e[22]!==m||e[23]!==d?(b=s.jsx("ol",{className:m,children:d}),e[22]=m,e[23]=d,e[24]=b):b=e[24];let h;e[25]!==r?(h=r("sandbox.listBlocks.addStep"),e[25]=r,e[26]=h):h=e[26];let n;e[27]!==o||e[28]!==i?(n=()=>o([...i,{title:"",description:""}]),e[27]=o,e[28]=i,e[29]=n):n=e[29];let c;e[30]!==h||e[31]!==n?(c=s.jsx(le,{label:h,onClick:n}),e[30]=h,e[31]=n,e[32]=c):c=e[32];let u;return e[33]!==f||e[34]!==g||e[35]!==b||e[36]!==c?(u=s.jsxs("div",{className:f,children:[g,b,c]}),e[33]=f,e[34]=g,e[35]=b,e[36]=c,e[37]=u):u=e[37],u}function Ie(p,e){try{const t=JSON.parse(p||"{}");return{title:typeof t?.title=="string"?t.title:e,items:Array.isArray(t?.items)?t.items:[]}}catch{return{title:e,items:[]}}}function vl(p){const e=E.c(13),{left:t,right:a,onChange:l}=p,r=F();let o;if(e[0]!==t||e[1]!==l||e[2]!==a||e[3]!==r){const i={left:Ie(t,r("sandbox.listBlocks.optionA")),right:Ie(a,r("sandbox.listBlocks.optionB"))};let m;e[5]!==t||e[6]!==l||e[7]!==a?(m=(h,n)=>l({left:h==="left"?JSON.stringify(n):t,right:h==="right"?JSON.stringify(n):a}),e[5]=t,e[6]=l,e[7]=a,e[8]=m):m=e[8];const d=m;let f;e[9]!==d||e[10]!==r?(f=(h,n,c)=>{const u=n.items??[];return s.jsxs("div",{className:"space-y-2 rounded-lg border p-4",children:[s.jsx("input",{value:A(n.title),onChange:x=>d(h,{...n,title:x.target.value}),placeholder:r("sandbox.listBlocks.columnTitle"),className:"w-full border-0 bg-transparent p-0 text-xs font-semibold uppercase tracking-wide outline-none placeholder:text-muted-foreground/50 focus:ring-0"}),s.jsx("ul",{className:"space-y-1.5",children:u.map((x,y)=>s.jsxs("li",{className:"group/item flex items-start gap-2",children:[s.jsx("span",{"aria-hidden":!0,className:"mt-0.5 shrink-0 text-sm font-bold",style:{color:c},children:"✓"}),s.jsx(X,{value:x,onChange:j=>d(h,{...n,items:u.map((v,C)=>C===y?j:v)}),placeholder:r("sandbox.listBlocks.item"),className:"text-sm text-foreground"}),s.jsx(te,{label:r("sandbox.listBlocks.removeItem"),onClick:()=>d(h,{...n,items:u.filter((j,v)=>v!==y)})})]},y))}),s.jsx(le,{label:r("sandbox.listBlocks.addItem"),onClick:()=>d(h,{...n,items:[...u,""]})})]})},e[9]=d,e[10]=r,e[11]=f):f=e[11];const g=f;let b;e[12]===Symbol.for("react.memo_cache_sentinel")?(b=Q("grid grid-cols-1 gap-3 sm:grid-cols-2"),e[12]=b):b=e[12],o=s.jsxs("div",{className:b,children:[g("left",i.left,"oklch(0.65 0.17 150)"),g("right",i.right,"oklch(0.75 0.15 75)")]}),e[0]=t,e[1]=l,e[2]=a,e[3]=r,e[4]=o}else o=e[4];return o}const jl="vtex/loaders/intelligentSearch/productList.ts";function ee(p){return p&&typeof p=="object"&&!Array.isArray(p)?p:null}function xe(p){return typeof p=="string"||typeof p=="number"?String(p):""}function ge(p){const e=ee(p);return!!e&&typeof e.__resolveType=="string"&&"productId"in e}function Xe(p){if(Array.isArray(p))return p.map(a=>xe(ee(a)?.productId));const e=ee(p),t=ee(e?.props);return t&&Array.isArray(t.ids)?t.ids.map(xe):e&&"productId"in e?[xe(e.productId)]:[]}function kl(p){const e=ee(p)??{};return typeof e.__resolveType=="string"?e.__resolveType:jl}function Ze(p,e){if(Array.isArray(p)){const r=p.find(ge);if(r)return e.map((o,i)=>{const m=ee(p[i]);return{...ge(m)?m:{__resolveType:r.__resolveType},productId:o}})}const t=ee(p);if(ge(t)&&!ee(t.props)?.ids)return{...t,productId:e[0]??""};const a=ee(t?.props)??{},l=kl(p);return{...t??{},__resolveType:l,props:{...a,ids:e,simulationBehavior:a.simulationBehavior??"default"}}}const et="vtex/loaders/intelligentSearch/productList.ts",Nl="vtex/loaders/categories/tree.ts",Cl=24;function ae(p){return p&&typeof p=="object"&&!Array.isArray(p)?p:null}function Bl(p){return p.split("/").filter(Boolean).map((t,a)=>`category-${a+1}/${t}`).join("/")}function Sl(p,e){const t=e.trim();if(!t)return[];const a=et,l=Cl;if(p==="cluster")return[{resolveType:a,props:{collection:t,count:l}}];if(p==="category"){const m=Bl(t);return m?[{resolveType:a,props:{facets:m,count:l}}]:[]}const r=[];/^\d+$/.test(t)&&r.push({resolveType:a,props:{ids:[t]}});const i=t.includes("-")&&!/\s/.test(t)?t.replace(/-+/g," "):t;return r.push({resolveType:a,props:{query:i,count:l}}),r}function wl(){return{resolveType:Nl,props:{}}}function Pl(p){return{resolveType:et,props:{ids:p}}}function Le(p){return typeof p=="string"||typeof p=="number"?String(p):""}function tt(p){const e=ae(p),t=Array.isArray(p)?p:Array.isArray(e?.products)?e.products:[],a=[],l=new Set;for(const r of t){const o=ae(r);if(!o)continue;const i=Le(o.productID)||Le(o.sku);if(!i||l.has(i))continue;l.add(i);const m=ae(o.isVariantOf),d=typeof m?.name=="string"&&m.name||typeof o.name=="string"&&o.name||i,f=Array.isArray(o.image)?ae(o.image[0]):null,g=typeof f?.url=="string"?f.url:void 0;a.push({id:i,label:d,image:g})}return a}function Tl(p){if(typeof p!="string"||!p)return null;let e;try{e=new URL(p,"https://placeholder.invalid").pathname}catch{return null}return e.replace(/^\/+|\/+$/g,"")||null}function Il(p){const e=[],t=new Set,a=(l,r)=>{const o=ae(l);if(!o)return;const i=typeof o.name=="string"&&o.name?o.name:"",m=i?[...r,i]:r,d=Tl(o.url);if(d&&!t.has(d)&&(t.add(d),e.push({path:d,label:m.join(" › ")||d})),Array.isArray(o.children))for(const f of o.children)a(f,m)};if(Array.isArray(p))for(const l of p)a(l,[]);return e}function Ll(p,e,t=50){const a=e.trim().toLowerCase();return(a?p.filter(r=>r.label.toLowerCase().includes(a)||r.path.toLowerCase().includes(a)):p).slice(0,t)}const $l=1e4;async function Ce(p,{resolveType:e,props:t}){const a=await fetch(ft(p),{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({__resolveType:e,...t}),signal:AbortSignal.timeout($l)});if(!a.ok)throw new Error(`Failed to fetch (${a.status})`);return a.json()}function lt(p,e){const t=E.c(20);let a;t[0]!==e?(a=new Set(e.filter(Boolean)),t[0]=e,t[1]=a):a=t[1];let l;t[2]!==a?(l=[...a],t[2]=a,t[3]=l):l=t[3];const r=l;let o;t[4]!==r||t[5]!==p?(o=ve.sandboxInvoke(p?`${p.orgSlug}/${p.virtualMcpId}/${p.branch}`:"none",`blog-products-by-ids:${r.join(",")}`),t[4]=r,t[5]=p,t[6]=o):o=t[6];let i;t[7]!==r||t[8]!==p?(i=()=>Ce(p,Pl(r)).then(tt),t[7]=r,t[8]=p,t[9]=i):i=t[9];const m=!!p&&r.length>0;let d;t[10]!==o||t[11]!==i||t[12]!==m?(d={queryKey:o,queryFn:i,enabled:m,staleTime:6e4,retry:1},t[10]=o,t[11]=i,t[12]=m,t[13]=d):d=t[13];const f=je(d);let g;if(t[14]!==f.data){g=new Map;for(const h of f.data??[])g.set(h.id,h);t[14]=f.data,t[15]=g}else g=t[15];let b;return t[16]!==g||t[17]!==f.isError||t[18]!==f.isLoading?(b={byId:g,isLoading:f.isLoading,isError:f.isError},t[16]=g,t[17]=f.isError,t[18]=f.isLoading,t[19]=b):b=t[19],b}const Al=[{id:"search",labelKey:"sandbox.productPickerDialog.modeSearch"},{id:"category",labelKey:"sandbox.productPickerDialog.modeCategory"},{id:"cluster",labelKey:"sandbox.productPickerDialog.modeClusterId"}];async function _l(p,e){if(e.length===0)return[];const t=await Promise.allSettled(e.map(o=>Ce(p,o))),a=t.filter(o=>o.status==="fulfilled").map(o=>o.value);if(a.length===0){const o=t.find(i=>i.status==="rejected");throw o?o.reason:new Error("Failed to fetch products")}const l=[],r=new Set;for(const o of a)for(const i of tt(o))r.has(i.id)||(r.add(i.id),l.push(i));return l}function $e(p){const e=E.c(6),[t,a]=K.useState(""),[l,r]=K.useState(""),o=K.useRef(null);let i;e[0]!==p?(i=f=>{a(f),o.current&&clearTimeout(o.current),o.current=setTimeout(()=>r(f),p)},e[0]=p,e[1]=i):i=e[1];const m=i;let d;return e[2]!==l||e[3]!==m||e[4]!==t?(d={value:t,debounced:l,onChange:m},e[2]=l,e[3]=m,e[4]=t,e[5]=d):d=e[5],d}function El(p){const e=E.c(23),{option:t,selected:a,onToggle:l}=p,r=a?"border-primary/40 bg-primary/5":"border-transparent hover:bg-muted/60";let o;e[0]!==r?(o=Q("flex w-full items-center gap-3 rounded-md border px-2 py-2 text-left transition-colors",r),e[0]=r,e[1]=o):o=e[1];let i;e[2]!==t.image?(i=s.jsx("span",{className:"flex h-10 w-10 shrink-0 items-center justify-center overflow-hidden rounded-md border border-border bg-muted",children:t.image?s.jsx("img",{src:t.image,alt:"",referrerPolicy:"no-referrer",className:"h-full w-full object-cover"}):s.jsx(ke,{size:14,className:"text-muted-foreground"})}),e[2]=t.image,e[3]=i):i=e[3];let m;e[4]!==t.label?(m=s.jsx("span",{className:"line-clamp-2 text-sm",children:t.label}),e[4]=t.label,e[5]=m):m=e[5];let d;e[6]!==t.id?(d=s.jsxs("span",{className:"block truncate text-xs text-muted-foreground",children:["ID ",t.id]}),e[6]=t.id,e[7]=d):d=e[7];let f;e[8]!==m||e[9]!==d?(f=s.jsxs("span",{className:"min-w-0 flex-1",children:[m,d]}),e[8]=m,e[9]=d,e[10]=f):f=e[10];const g=a?"border-primary bg-primary text-primary-foreground":"border-border text-transparent";let b;e[11]!==g?(b=Q("flex h-5 w-5 shrink-0 items-center justify-center rounded-full border",g),e[11]=g,e[12]=b):b=e[12];let h;e[13]===Symbol.for("react.memo_cache_sentinel")?(h=s.jsx(Ye,{size:12}),e[13]=h):h=e[13];let n;e[14]!==b?(n=s.jsx("span",{className:b,children:h}),e[14]=b,e[15]=n):n=e[15];let c;return e[16]!==l||e[17]!==a||e[18]!==n||e[19]!==o||e[20]!==i||e[21]!==f?(c=s.jsxs("button",{type:"button",onClick:l,"aria-pressed":a,className:o,children:[i,f,n]}),e[16]=l,e[17]=a,e[18]=n,e[19]=o,e[20]=i,e[21]=f,e[22]=c):c=e[22],c}function st(p){const e=E.c(9),{query:t,emptyLabel:a,loadingLabel:l}=p,r=F();if(t.isLoading){let i;e[0]===Symbol.for("react.memo_cache_sentinel")?(i=s.jsx(We,{size:"xs"}),e[0]=i):i=e[0];let m;return e[1]!==l?(m=s.jsxs("div",{className:"flex items-center gap-2 px-2 py-6 text-sm text-muted-foreground",children:[i,l]}),e[1]=l,e[2]=m):m=e[2],m}if(t.isError){let i;e[3]!==r?(i=r("sandbox.productPickerDialog.couldNotLoad"),e[3]=r,e[4]=i):i=e[4];let m;return e[5]!==i?(m=s.jsx("p",{className:"px-2 py-6 text-sm text-muted-foreground",children:i}),e[5]=i,e[6]=m):m=e[6],m}let o;return e[7]!==a?(o=s.jsx("p",{className:"px-2 py-6 text-center text-sm text-muted-foreground",children:a}),e[7]=a,e[8]=o):o=e[8],o}function ot(p){return`${p.orgSlug}/${p.virtualMcpId}/${p.branch}`}function Dl(p){const e=E.c(45),{sandboxRef:t,open:a,selected:l,onSelect:r}=p,o=F(),[i,m]=K.useState("");let d;e[0]!==t?(d=ve.sandboxInvoke(ot(t),"blog-category-tree"),e[0]=t,e[1]=d):d=e[1];let f;e[2]!==t?(f=()=>Ce(t,wl()).then(Il),e[2]=t,e[3]=f):f=e[3];const g=a&&!l;let b;e[4]!==d||e[5]!==f||e[6]!==g?(b={queryKey:d,queryFn:f,enabled:g,staleTime:6e4,retry:1},e[4]=d,e[5]=f,e[6]=g,e[7]=b):b=e[7];const h=je(b);if(l){let v;e[8]!==r?(v=()=>r(null),e[8]=r,e[9]=v):v=e[9];let C;e[10]===Symbol.for("react.memo_cache_sentinel")?(C=s.jsx(St,{size:14}),e[10]=C):C=e[10];let k;e[11]!==o?(k=o("sandbox.productPickerDialog.categoryLabel"),e[11]=o,e[12]=k):k=e[12];let N;e[13]!==l.label?(N=s.jsx("span",{className:"text-foreground",children:l.label}),e[13]=l.label,e[14]=N):N=e[14];let B;e[15]!==o?(B=o("sandbox.productPickerDialog.change"),e[15]=o,e[16]=B):B=e[16];let S;e[17]!==k||e[18]!==N||e[19]!==B?(S=s.jsxs("span",{className:"truncate",children:[k,N," —",B]}),e[17]=k,e[18]=N,e[19]=B,e[20]=S):S=e[20];let w;return e[21]!==S||e[22]!==v?(w=s.jsxs("button",{type:"button",onClick:v,className:"flex items-center gap-1.5 rounded-md px-2 py-1.5 text-sm text-muted-foreground hover:bg-muted/60 hover:text-foreground",children:[C,S]}),e[21]=S,e[22]=v,e[23]=w):w=e[23],w}let n,c,u,x;if(e[24]!==i||e[25]!==r||e[26]!==h||e[27]!==o){const v=Ll(h.data??[],i);u="space-y-2";let C;e[32]===Symbol.for("react.memo_cache_sentinel")?(C=N=>m(N.target.value),e[32]=C):C=e[32];let k;e[33]!==o?(k=o("sandbox.productPickerDialog.filterCategoriesPlaceholder"),e[33]=o,e[34]=k):k=e[34],e[35]!==i||e[36]!==k?(x=s.jsx(be,{value:i,onChange:C,placeholder:k,className:"h-9"}),e[35]=i,e[36]=k,e[37]=x):x=e[37],n="h-48 overflow-y-auto rounded-md border",c=v.length===0?s.jsx(st,{query:h,loadingLabel:o("sandbox.productPickerDialog.loadingCategories"),emptyLabel:o("sandbox.productPickerDialog.noCategories")}):s.jsx("div",{className:"p-1",children:v.map(N=>s.jsx("button",{type:"button",onClick:()=>r(N),className:"block w-full truncate rounded px-2 py-1.5 text-left text-sm hover:bg-muted/60",children:N.label},N.path))}),e[24]=i,e[25]=r,e[26]=h,e[27]=o,e[28]=n,e[29]=c,e[30]=u,e[31]=x}else n=e[28],c=e[29],u=e[30],x=e[31];let y;e[38]!==n||e[39]!==c?(y=s.jsx("div",{className:n,children:c}),e[38]=n,e[39]=c,e[40]=y):y=e[40];let j;return e[41]!==u||e[42]!==x||e[43]!==y?(j=s.jsxs("div",{className:u,children:[x,y]}),e[41]=u,e[42]=x,e[43]=y,e[44]=j):j=e[44],j}function rt(p){const e=E.c(89),{open:t,onOpenChange:a,sandboxRef:l,selectedIds:r,onChange:o,multiple:i}=p,m=i===void 0?!0:i,d=F(),[f,g]=K.useState("search"),b=$e(300),h=$e(300),[n,c]=K.useState(null),u=f==="search"?b.debounced:f==="cluster"?h.debounced:n?.path??"";let x;e[0]!==f||e[1]!==u?(x=Sl(f,u),e[0]=f,e[1]=u,e[2]=x):x=e[2];const y=x;let j;e[3]!==f||e[4]!==l||e[5]!==u?(j=ve.sandboxInvoke(ot(l),`blog-product:${f}:${u}`),e[3]=f,e[4]=l,e[5]=u,e[6]=j):j=e[6];let v;e[7]!==y||e[8]!==l?(v=()=>_l(l,y),e[7]=y,e[8]=l,e[9]=v):v=e[9];const C=t&&y.length>0;let k;e[10]!==j||e[11]!==v||e[12]!==C?(k={queryKey:j,queryFn:v,enabled:C,staleTime:6e4,retry:1},e[10]=j,e[11]=v,e[12]=C,e[13]=k):k=e[13];const N=je(k);let B;e[14]!==r?(B=new Set(r.filter(Boolean)),e[14]=r,e[15]=B):B=e[15];const S=B;let w;e[16]!==m||e[17]!==o||e[18]!==S||e[19]!==r?(w=G=>{if(!m){o(S.has(G)?[]:[G]);return}S.has(G)?o(r.filter(it=>it!==G)):o([...r.filter(Boolean),G])},e[16]=m,e[17]=o,e[18]=S,e[19]=r,e[20]=w):w=e[20];const T=w;let I;e[21]!==N.data?(I=N.data??[],e[21]=N.data,e[22]=I):I=e[22];const P=I,L=y.length===0;let O;e[23]!==m||e[24]!==d?(O=d(m?"sandbox.productPickerDialog.addProducts":"sandbox.productPickerDialog.chooseProduct"),e[23]=m,e[24]=d,e[25]=O):O=e[25];let U;e[26]!==O?(U=s.jsx(Ht,{className:"border-b border-border px-4 py-3",children:s.jsx(Vt,{className:"text-sm font-medium",children:O})}),e[26]=O,e[27]=U):U=e[27];let H;e[28]!==f||e[29]!==d?(H=Al.map(G=>s.jsx("button",{type:"button",onClick:()=>g(G.id),className:Q("rounded-md px-2.5 py-1 text-sm transition-colors",f===G.id?"bg-muted font-medium text-foreground":"text-muted-foreground hover:text-foreground"),children:d(G.labelKey)},G.id)),e[28]=f,e[29]=d,e[30]=H):H=e[30];let V;e[31]!==H?(V=s.jsx("div",{className:"flex shrink-0 items-center gap-1 border-b border-border px-4 py-2",children:H}),e[31]=H,e[32]=V):V=e[32];let _;e[33]!==f||e[34]!==b||e[35]!==d?(_=f==="search"&&s.jsx(be,{autoFocus:!0,value:b.value,onChange:G=>b.onChange(G.target.value),placeholder:d("sandbox.productPickerDialog.searchProductsPlaceholder"),className:"h-9"}),e[33]=f,e[34]=b,e[35]=d,e[36]=_):_=e[36];let $;e[37]!==h||e[38]!==f||e[39]!==d?($=f==="cluster"&&s.jsx(be,{autoFocus:!0,value:h.value,onChange:G=>h.onChange(G.target.value),placeholder:d("sandbox.productPickerDialog.clusterIdPlaceholder"),className:"h-9"}),e[37]=h,e[38]=f,e[39]=d,e[40]=$):$=e[40];let D;e[41]!==n||e[42]!==f||e[43]!==t||e[44]!==l?(D=f==="category"&&s.jsx(Dl,{sandboxRef:l,open:t,selected:n,onSelect:c}),e[41]=n,e[42]=f,e[43]=t,e[44]=l,e[45]=D):D=e[45];let R;e[46]!==_||e[47]!==$||e[48]!==D?(R=s.jsxs("div",{className:"shrink-0 space-y-2 px-4 py-3",children:[_,$,D]}),e[46]=_,e[47]=$,e[48]=D,e[49]=R):R=e[49];let J;e[50]!==P||e[51]!==N||e[52]!==S||e[53]!==L||e[54]!==d||e[55]!==T?(J=P.length>0?P.map(G=>s.jsx(El,{option:G,selected:S.has(G.id),onToggle:()=>T(G.id)},G.id)):!L&&s.jsx(st,{query:N,loadingLabel:d("sandbox.productPickerDialog.loadingProducts"),emptyLabel:d("sandbox.productPickerDialog.noProductsFound")}),e[50]=P,e[51]=N,e[52]=S,e[53]=L,e[54]=d,e[55]=T,e[56]=J):J=e[56];let z;e[57]!==f||e[58]!==L||e[59]!==d?(z=L&&s.jsx("p",{className:"px-2 py-6 text-center text-sm text-muted-foreground",children:d(f==="category"?"sandbox.productPickerDialog.pickCategoryPrompt":f==="cluster"?"sandbox.productPickerDialog.enterClusterPrompt":"sandbox.productPickerDialog.typeToSearchPrompt")}),e[57]=f,e[58]=L,e[59]=d,e[60]=z):z=e[60];let M;e[61]!==J||e[62]!==z?(M=s.jsxs("div",{className:"min-h-0 flex-1 space-y-1 overflow-y-auto border-t border-border px-3 py-2",children:[J,z]}),e[61]=J,e[62]=z,e[63]=M):M=e[63];let q;e[64]!==S.size||e[65]!==d?(q=S.size===0?d("sandbox.productPickerDialog.noneSelected"):d("sandbox.productPickerDialog.selectedCount",{count:String(S.size)}),e[64]=S.size,e[65]=d,e[66]=q):q=e[66];let Y;e[67]!==q?(Y=s.jsx("span",{className:"text-xs text-muted-foreground",children:q}),e[67]=q,e[68]=Y):Y=e[68];let Z;e[69]!==a?(Z=()=>a(!1),e[69]=a,e[70]=Z):Z=e[70];let W;e[71]!==d?(W=d("sandbox.productPickerDialog.done"),e[71]=d,e[72]=W):W=e[72];let se;e[73]!==Z||e[74]!==W?(se=s.jsx(vt,{size:"sm",onClick:Z,children:W}),e[73]=Z,e[74]=W,e[75]=se):se=e[75];let oe;e[76]!==Y||e[77]!==se?(oe=s.jsxs("div",{className:"flex shrink-0 items-center justify-between border-t border-border px-4 py-3",children:[Y,se]}),e[76]=Y,e[77]=se,e[78]=oe):oe=e[78];let re;e[79]!==U||e[80]!==V||e[81]!==R||e[82]!==M||e[83]!==oe?(re=s.jsxs(Mt,{className:"flex h-[85svh] flex-col gap-0 overflow-hidden p-0 sm:h-[560px] sm:max-w-[560px]",children:[U,V,R,M,oe]}),e[79]=U,e[80]=V,e[81]=R,e[82]=M,e[83]=oe,e[84]=re):re=e[84];let ce;return e[85]!==a||e[86]!==t||e[87]!==re?(ce=s.jsx(Gt,{open:t,onOpenChange:a,children:re}),e[85]=a,e[86]=t,e[87]=re,e[88]=ce):ce=e[88],ce}const Rl=["normal","h1","h2","h3"],Ol=/^<(h[1-3])>([\s\S]*)<\/\1>$/i;function zl(p){const e=p.match(Ol);return e?{level:e[1].toLowerCase(),text:e[2]}:{level:"normal",text:p}}function Ae(p,e){return e?p==="normal"?e:`<${p}>${e}</${p}>`:""}const _e={normal:"sandbox.productBlocks.headingNormal",h1:"sandbox.productBlocks.headingH1",h2:"sandbox.productBlocks.headingH2",h3:"sandbox.productBlocks.headingH3"},Fl={normal:"text-lg font-semibold",h1:"text-3xl font-bold",h2:"text-2xl font-bold",h3:"text-xl font-semibold"};function Ul(p){const e=E.c(27),{value:t,onChange:a}=p,l=F();let r,o,i,m,d;e[0]!==a||e[1]!==l||e[2]!==t?({level:r,text:d}=zl(t),m="space-y-1.5",o="flex items-center gap-0.5",i=Rl.map(x=>s.jsx(ie,{active:r===x,label:l(_e[x]),onClick:()=>a(Ae(x,d)),children:l(_e[x])},x)),e[0]=a,e[1]=l,e[2]=t,e[3]=r,e[4]=o,e[5]=i,e[6]=m,e[7]=d):(r=e[3],o=e[4],i=e[5],m=e[6],d=e[7]);let f;e[8]!==o||e[9]!==i?(f=s.jsx("div",{className:o,children:i}),e[8]=o,e[9]=i,e[10]=f):f=e[10];let g;e[11]!==r||e[12]!==a?(g=x=>a(Ae(r,x.target.value)),e[11]=r,e[12]=a,e[13]=g):g=e[13];let b;e[14]!==l?(b=l("sandbox.productBlocks.shelfTitlePlaceholder"),e[14]=l,e[15]=b):b=e[15];const h=Fl[r];let n;e[16]!==h?(n=Q("w-full border-0 bg-transparent p-0 outline-none placeholder:text-muted-foreground/50 focus:ring-0",h),e[16]=h,e[17]=n):n=e[17];let c;e[18]!==g||e[19]!==b||e[20]!==n||e[21]!==d?(c=s.jsx("input",{value:d,onChange:g,placeholder:b,className:n}),e[18]=g,e[19]=b,e[20]=n,e[21]=d,e[22]=c):c=e[22];let u;return e[23]!==m||e[24]!==f||e[25]!==c?(u=s.jsxs("div",{className:m,children:[f,c]}),e[23]=m,e[24]=f,e[25]=c,e[26]=u):u=e[26],u}function nt(p){const e=E.c(4),{label:t,onClick:a}=p;let l;e[0]===Symbol.for("react.memo_cache_sentinel")?(l=s.jsx(ke,{size:13}),e[0]=l):l=e[0];let r;return e[1]!==t||e[2]!==a?(r=s.jsxs("button",{type:"button",onClick:a,className:"flex items-center gap-1.5 rounded-md border px-2.5 py-1.5 text-xs text-muted-foreground transition-colors hover:border-foreground/30 hover:text-foreground cursor-pointer",children:[l,t]}),e[1]=t,e[2]=a,e[3]=r):r=e[3],r}function at(p){const e=E.c(9),{option:t,loading:a,className:l,iconSize:r}=p,o=r===void 0?18:r;let i;e[0]!==l?(i=Q("flex items-center justify-center overflow-hidden bg-muted text-muted-foreground",l),e[0]=l,e[1]=i):i=e[1];let m;e[2]!==o||e[3]!==a||e[4]!==t?(m=t?.image?s.jsx("img",{src:t.image,alt:"",referrerPolicy:"no-referrer",className:"h-full w-full object-contain p-1.5"}):a?s.jsx(We,{size:"xs"}):s.jsx(Ft,{size:o}),e[2]=o,e[3]=a,e[4]=t,e[5]=m):m=e[5];let d;return e[6]!==i||e[7]!==m?(d=s.jsx("span",{className:i,children:m}),e[6]=i,e[7]=m,e[8]=d):d=e[8],d}function ql(p){const e=E.c(50),{id:t,option:a,loading:l,onRemove:r}=p,o=F();let i;e[0]!==t?(i={id:t},e[0]=t,e[1]=i):i=e[1];const{attributes:m,listeners:d,setNodeRef:f,transform:g,transition:b,isDragging:h}=Me(i);let n;e[2]!==g?(n=Ge.Transform.toString(g),e[2]=g,e[3]=n):n=e[3];let c;e[4]!==n||e[5]!==b?(c={transform:n,transition:b},e[4]=n,e[5]=b,e[6]=c):c=e[6];const u=h&&"z-10 opacity-60";let x;e[7]!==u?(x=Q("group/card relative flex flex-col overflow-hidden rounded-md border bg-background",u),e[7]=u,e[8]=x):x=e[8];let y;e[9]!==l||e[10]!==a?(y=s.jsx(at,{option:a,loading:l,className:"h-full w-full"}),e[9]=l,e[10]=a,e[11]=y):y=e[11];let j;e[12]!==o?(j=o("sandbox.productBlocks.dragToReorderLabel"),e[12]=o,e[13]=j):j=e[13];let v;e[14]===Symbol.for("react.memo_cache_sentinel")?(v=s.jsx(Ke,{size:13}),e[14]=v):v=e[14];let C;e[15]!==m||e[16]!==d||e[17]!==j?(C=s.jsx("button",{type:"button","aria-label":j,...m,...d,className:"absolute left-1 top-1 flex h-6 w-6 cursor-grab items-center justify-center rounded bg-background/80 text-muted-foreground opacity-0 backdrop-blur-sm transition-opacity hover:text-foreground active:cursor-grabbing group-hover/card:opacity-100",children:v}),e[15]=m,e[16]=d,e[17]=j,e[18]=C):C=e[18];let k;e[19]!==o?(k=o("sandbox.productBlocks.removeProductLabel"),e[19]=o,e[20]=k):k=e[20];let N;e[21]===Symbol.for("react.memo_cache_sentinel")?(N=s.jsx(qt,{size:13}),e[21]=N):N=e[21];let B;e[22]!==r||e[23]!==k?(B=s.jsx("button",{type:"button","aria-label":k,onClick:r,className:"absolute right-1 top-1 flex h-6 w-6 items-center justify-center rounded bg-background/80 text-muted-foreground opacity-0 backdrop-blur-sm transition-opacity hover:text-destructive group-hover/card:opacity-100 cursor-pointer",children:N}),e[22]=r,e[23]=k,e[24]=B):B=e[24];let S;e[25]!==B||e[26]!==y||e[27]!==C?(S=s.jsxs("div",{className:"relative aspect-square",children:[y,C,B]}),e[25]=B,e[26]=y,e[27]=C,e[28]=S):S=e[28];let w;e[29]!==t||e[30]!==l||e[31]!==a?.label||e[32]!==o?(w=a?.label??(l?o("sandbox.productBlocks.loadingEllipsis"):o("sandbox.productBlocks.productWithId",{id:t})),e[29]=t,e[30]=l,e[31]=a?.label,e[32]=o,e[33]=w):w=e[33];let T;e[34]!==w?(T=s.jsx("p",{className:"line-clamp-2 text-xs leading-tight text-foreground",children:w}),e[34]=w,e[35]=T):T=e[35];let I;e[36]!==t||e[37]!==o?(I=o("sandbox.productBlocks.idLabel",{id:t}),e[36]=t,e[37]=o,e[38]=I):I=e[38];let P;e[39]!==I?(P=s.jsx("p",{className:"text-[11px] text-muted-foreground",children:I}),e[39]=I,e[40]=P):P=e[40];let L;e[41]!==T||e[42]!==P?(L=s.jsxs("div",{className:"flex flex-col gap-0.5 p-2",children:[T,P]}),e[41]=T,e[42]=P,e[43]=L):L=e[43];let O;return e[44]!==f||e[45]!==S||e[46]!==L||e[47]!==c||e[48]!==x?(O=s.jsxs("div",{ref:f,style:c,className:x,children:[S,L]}),e[44]=f,e[45]=S,e[46]=L,e[47]=c,e[48]=x,e[49]=O):O=e[49],O}function Hl(p){const e=E.c(21),{ids:t,lookup:a,onReorder:l,onRemove:r}=p;let o;e[0]===Symbol.for("react.memo_cache_sentinel")?(o={activationConstraint:{distance:6}},e[0]=o):o=e[0];let i;e[1]===Symbol.for("react.memo_cache_sentinel")?(i={coordinateGetter:Fe},e[1]=i):i=e[1];const m=Re(ue(ze,o),ue(Oe,i));let d;e[2]!==t||e[3]!==l?(d=c=>{const{active:u,over:x}=c;if(!x||u.id===x.id)return;const y=t.indexOf(String(u.id)),j=t.indexOf(String(x.id));y===-1||j===-1||l(Ue(t,y,j))},e[2]=t,e[3]=l,e[4]=d):d=e[4];const f=d;let g;if(e[5]!==t||e[6]!==a||e[7]!==r){let c;e[9]!==a||e[10]!==r?(c=u=>s.jsx(ql,{id:u,option:a.byId.get(u),loading:a.isLoading&&!a.byId.get(u),onRemove:()=>r(u)},u),e[9]=a,e[10]=r,e[11]=c):c=e[11],g=t.map(c),e[5]=t,e[6]=a,e[7]=r,e[8]=g}else g=e[8];let b;e[12]!==g?(b=s.jsx("div",{className:"grid grid-cols-2 gap-3 sm:grid-cols-3",children:g}),e[12]=g,e[13]=b):b=e[13];let h;e[14]!==t||e[15]!==b?(h=s.jsx(qe,{items:t,strategy:mt,children:b}),e[14]=t,e[15]=b,e[16]=h):h=e[16];let n;return e[17]!==f||e[18]!==m||e[19]!==h?(n=s.jsx(He,{sensors:m,collisionDetection:Ve,onDragEnd:f,children:h}),e[17]=f,e[18]=m,e[19]=h,e[20]=n):n=e[20],n}function Vl(p){const e=E.c(13),{onBrowse:t}=p,a=F();let l;e[0]===Symbol.for("react.memo_cache_sentinel")?(l=s.jsx("span",{className:"flex h-9 w-9 items-center justify-center rounded-full bg-muted text-muted-foreground",children:s.jsx(Ut,{size:16})}),e[0]=l):l=e[0];let r;e[1]!==a?(r=a("sandbox.productBlocks.addProductsButton"),e[1]=a,e[2]=r):r=e[2];let o;e[3]!==r?(o=s.jsx("span",{className:"text-sm font-medium text-foreground",children:r}),e[3]=r,e[4]=o):o=e[4];let i;e[5]!==a?(i=a("sandbox.productBlocks.addProductsDescription"),e[5]=a,e[6]=i):i=e[6];let m;e[7]!==i?(m=s.jsx("span",{className:"text-xs text-muted-foreground",children:i}),e[7]=i,e[8]=m):m=e[8];let d;return e[9]!==t||e[10]!==o||e[11]!==m?(d=s.jsxs("button",{type:"button",onClick:t,className:"flex w-full flex-col items-center justify-center gap-1.5 rounded-lg border border-dashed py-8 text-center transition-colors hover:border-foreground/30 hover:bg-muted/40 cursor-pointer",children:[l,o,m]}),e[9]=t,e[10]=o,e[11]=m,e[12]=d):d=e[12],d}function Ml(p){const e=E.c(30),{ids:t,onChange:a}=p,l=F();let r;e[0]!==t||e[1]!==a?(r=(u,x)=>a(t.map((y,j)=>j===u?x:y)),e[0]=t,e[1]=a,e[2]=r):r=e[2];const o=r;let i;e[3]!==l?(i=l("sandbox.productBlocks.vtexProductIds"),e[3]=l,e[4]=i):i=e[4];let m;e[5]!==i?(m=s.jsx(de,{className:"text-xs text-muted-foreground",children:i}),e[5]=i,e[6]=m):m=e[6];let d;e[7]!==t.length||e[8]!==l?(d=t.length===0&&s.jsx("p",{className:"text-xs text-muted-foreground",children:l("sandbox.productBlocks.startDevServerDescription")}),e[7]=t.length,e[8]=l,e[9]=d):d=e[9];let f;e[10]!==t||e[11]!==a||e[12]!==o||e[13]!==l?(f=t.map((u,x)=>s.jsxs("li",{className:"group/item flex items-center gap-3",children:[s.jsx("input",{value:u,onChange:y=>o(x,y.target.value),placeholder:l("sandbox.productBlocks.skuIdPlaceholder"),className:"h-9 w-full rounded-md border bg-transparent px-3 text-sm outline-none placeholder:text-muted-foreground/50 focus:ring-0"}),s.jsx(te,{label:l("sandbox.productBlocks.removeProductIdButton"),onClick:()=>a(t.filter((y,j)=>j!==x))})]},x)),e[10]=t,e[11]=a,e[12]=o,e[13]=l,e[14]=f):f=e[14];let g;e[15]!==f?(g=s.jsx("ul",{className:"space-y-2",children:f}),e[15]=f,e[16]=g):g=e[16];let b;e[17]!==l?(b=l("sandbox.productBlocks.addProductIdButton"),e[17]=l,e[18]=b):b=e[18];let h;e[19]!==t||e[20]!==a?(h=()=>a([...t,""]),e[19]=t,e[20]=a,e[21]=h):h=e[21];let n;e[22]!==b||e[23]!==h?(n=s.jsx(le,{label:b,onClick:h}),e[22]=b,e[23]=h,e[24]=n):n=e[24];let c;return e[25]!==m||e[26]!==d||e[27]!==g||e[28]!==n?(c=s.jsxs("div",{className:"space-y-2",children:[m,d,g,n]}),e[25]=m,e[26]=d,e[27]=g,e[28]=n,e[29]=c):c=e[29],c}function Gl(p){const e=E.c(32),{block:t,onChange:a,sandboxRef:l}=p,r=F();let o,i;e[0]!==t.products?(o=Xe(t.products),i=new Set(o.filter(Boolean)),e[0]=t.products,e[1]=o,e[2]=i):(o=e[1],i=e[2]);let m;e[3]!==i?(m=[...i],e[3]=i,e[4]=m):m=e[4];const d=m,[f,g]=K.useState(!1),b=lt(l,d);let h;e[5]!==t||e[6]!==a?(h=C=>a({...t,products:Ze(t.products,C)}),e[5]=t,e[6]=a,e[7]=h):h=e[7];const n=h;let c;e[8]!==t.title?(c=A(t.title),e[8]=t.title,e[9]=c):c=e[9];let u;e[10]!==t||e[11]!==a?(u=C=>a({...t,title:C}),e[10]=t,e[11]=a,e[12]=u):u=e[12];let x;e[13]!==c||e[14]!==u?(x=s.jsx(Ul,{value:c,onChange:u}),e[13]=c,e[14]=u,e[15]=x):x=e[15];let y;e[16]!==d||e[17]!==b||e[18]!==o||e[19]!==l||e[20]!==n||e[21]!==r?(y=l?s.jsxs("div",{className:"space-y-3",children:[d.length>0&&s.jsxs("div",{className:"flex items-center justify-between",children:[s.jsxs("span",{className:"text-xs font-medium text-muted-foreground",children:[d.length," ",r(d.length===1?"sandbox.productBlocks.productSingular":"sandbox.productBlocks.productPlural")]}),s.jsx(nt,{label:r("sandbox.productBlocks.browseProductsButton"),onClick:()=>g(!0)})]}),d.length===0?s.jsx(Vl,{onBrowse:()=>g(!0)}):s.jsx(Hl,{ids:d,lookup:b,onReorder:n,onRemove:C=>n(d.filter(k=>k!==C))})]}):s.jsx(Ml,{ids:o,onChange:n}),e[16]=d,e[17]=b,e[18]=o,e[19]=l,e[20]=n,e[21]=r,e[22]=y):y=e[22];let j;e[23]!==d||e[24]!==f||e[25]!==l||e[26]!==n?(j=l&&s.jsx(rt,{open:f,onOpenChange:g,sandboxRef:l,selectedIds:d,onChange:n}),e[23]=d,e[24]=f,e[25]=l,e[26]=n,e[27]=j):j=e[27];let v;return e[28]!==x||e[29]!==y||e[30]!==j?(v=s.jsxs("div",{className:"space-y-4 rounded-lg border bg-card p-4",children:[x,y,j]}),e[28]=x,e[29]=y,e[30]=j,e[31]=v):v=e[31],v}function Kl(p){const e=E.c(27),{id:t,option:a,loading:l,onRemove:r}=p,o=F();let i;e[0]!==l||e[1]!==a?(i=s.jsx(at,{option:a,loading:l,className:"h-11 w-11 shrink-0 rounded",iconSize:16}),e[0]=l,e[1]=a,e[2]=i):i=e[2];let m;e[3]!==t||e[4]!==l||e[5]!==a?.label||e[6]!==o?(m=a?.label??(l?o("sandbox.productBlocks.loadingEllipsis"):o("sandbox.productBlocks.productWithId",{id:t})),e[3]=t,e[4]=l,e[5]=a?.label,e[6]=o,e[7]=m):m=e[7];let d;e[8]!==m?(d=s.jsx("p",{className:"truncate text-sm text-foreground",children:m}),e[8]=m,e[9]=d):d=e[9];let f;e[10]!==t||e[11]!==o?(f=o("sandbox.productBlocks.idLabel",{id:t}),e[10]=t,e[11]=o,e[12]=f):f=e[12];let g;e[13]!==f?(g=s.jsx("p",{className:"text-xs text-muted-foreground",children:f}),e[13]=f,e[14]=g):g=e[14];let b;e[15]!==d||e[16]!==g?(b=s.jsxs("div",{className:"min-w-0 flex-1",children:[d,g]}),e[15]=d,e[16]=g,e[17]=b):b=e[17];let h;e[18]!==o?(h=o("sandbox.productBlocks.removeProductButton"),e[18]=o,e[19]=h):h=e[19];let n;e[20]!==r||e[21]!==h?(n=s.jsx(te,{label:h,onClick:r}),e[20]=r,e[21]=h,e[22]=n):n=e[22];let c;return e[23]!==i||e[24]!==b||e[25]!==n?(c=s.jsxs("div",{className:"group/item flex items-center gap-3 rounded-md border bg-background p-2",children:[i,b,n]}),e[23]=i,e[24]=b,e[25]=n,e[26]=c):c=e[26],c}function Jl(p){const e=E.c(78),{block:t,onChange:a,sandboxRef:l}=p,r=F();let o;e[0]!==t.product?(o=Xe(t.product).filter(Boolean)[0]??"",e[0]=t.product,e[1]=o):o=e[1];const i=o,[m,d]=K.useState(!1);let f;e[2]!==i?(f=i?[i]:[],e[2]=i,e[3]=f):f=e[3];const g=lt(l,f);let b;e[4]!==t||e[5]!==a?(b=R=>a({...t,product:Ze(t.product,R)}),e[4]=t,e[5]=a,e[6]=b):b=e[6];const h=b;let n;e[7]!==r?(n=r("sandbox.productBlocks.productCardLabel"),e[7]=r,e[8]=n):n=e[8];let c;e[9]!==n?(c=s.jsx("div",{className:"text-xs font-semibold uppercase tracking-wide text-muted-foreground",children:n}),e[9]=n,e[10]=c):c=e[10];let u;e[11]!==r?(u=r("sandbox.productBlocks.ctaLabelField"),e[11]=r,e[12]=u):u=e[12];let x;e[13]!==u?(x=s.jsx(de,{htmlFor:"product-card-cta",className:"text-xs text-muted-foreground",children:u}),e[13]=u,e[14]=x):x=e[14];let y;e[15]!==t.textCta?(y=A(t.textCta),e[15]=t.textCta,e[16]=y):y=e[16];let j;e[17]!==t||e[18]!==a?(j=R=>a({...t,textCta:R.target.value}),e[17]=t,e[18]=a,e[19]=j):j=e[19];let v;e[20]!==r?(v=r("sandbox.productBlocks.ctaLabelPlaceholder"),e[20]=r,e[21]=v):v=e[21];let C;e[22]!==v||e[23]!==y||e[24]!==j?(C=s.jsx("input",{id:"product-card-cta",value:y,onChange:j,placeholder:v,className:"h-9 w-full rounded-md border bg-transparent px-3 text-sm outline-none placeholder:text-muted-foreground/50 focus:ring-0"}),e[22]=v,e[23]=y,e[24]=j,e[25]=C):C=e[25];let k;e[26]!==C||e[27]!==x?(k=s.jsxs("div",{className:"space-y-2",children:[x,C]}),e[26]=C,e[27]=x,e[28]=k):k=e[28];let N;e[29]!==r?(N=r("sandbox.productBlocks.productSlugField"),e[29]=r,e[30]=N):N=e[30];let B;e[31]!==N?(B=s.jsx(de,{htmlFor:"product-card-slug",className:"text-xs text-muted-foreground",children:N}),e[31]=N,e[32]=B):B=e[32];let S;e[33]!==t.productSlug?(S=A(t.productSlug),e[33]=t.productSlug,e[34]=S):S=e[34];let w;e[35]!==t||e[36]!==a?(w=R=>a({...t,productSlug:R.target.value}),e[35]=t,e[36]=a,e[37]=w):w=e[37];let T;e[38]!==r?(T=r("sandbox.productBlocks.productSlugPlaceholder"),e[38]=r,e[39]=T):T=e[39];let I;e[40]!==S||e[41]!==w||e[42]!==T?(I=s.jsx("input",{id:"product-card-slug",value:S,onChange:w,placeholder:T,className:"h-9 w-full rounded-md border bg-transparent px-3 text-sm outline-none placeholder:text-muted-foreground/50 focus:ring-0"}),e[40]=S,e[41]=w,e[42]=T,e[43]=I):I=e[43];let P;e[44]!==B||e[45]!==I?(P=s.jsxs("div",{className:"space-y-2",children:[B,I]}),e[44]=B,e[45]=I,e[46]=P):P=e[46];let L;e[47]!==r?(L=r("sandbox.productBlocks.productField"),e[47]=r,e[48]=L):L=e[48];let O;e[49]!==L?(O=s.jsx(de,{className:"text-xs text-muted-foreground",children:L}),e[49]=L,e[50]=O):O=e[50];let U;e[51]!==i||e[52]!==l||e[53]!==r?(U=l&&i&&s.jsx(nt,{label:r("sandbox.productBlocks.changeButton"),onClick:()=>d(!0)}),e[51]=i,e[52]=l,e[53]=r,e[54]=U):U=e[54];let H;e[55]!==O||e[56]!==U?(H=s.jsxs("div",{className:"flex items-center justify-between gap-2",children:[O,U]}),e[55]=O,e[56]=U,e[57]=H):H=e[57];let V;e[58]!==g||e[59]!==i||e[60]!==l||e[61]!==h||e[62]!==r?(V=l?i?s.jsx(Kl,{id:i,option:g.byId.get(i),loading:g.isLoading,onRemove:()=>h([])}):s.jsxs("button",{type:"button",onClick:()=>d(!0),className:"flex w-full items-center justify-center gap-1.5 rounded-md border border-dashed py-3 text-sm text-muted-foreground transition-colors hover:border-foreground/30 hover:text-foreground cursor-pointer",children:[s.jsx(ke,{size:14}),r("sandbox.productBlocks.chooseProductButton")]}):s.jsx("input",{value:i,onChange:R=>h(R.target.value?[R.target.value]:[]),placeholder:r("sandbox.productBlocks.vtexProductIdPlaceholder"),className:"h-9 w-full rounded-md border bg-transparent px-3 text-sm outline-none placeholder:text-muted-foreground/50 focus:ring-0"}),e[58]=g,e[59]=i,e[60]=l,e[61]=h,e[62]=r,e[63]=V):V=e[63];let _;e[64]!==H||e[65]!==V?(_=s.jsxs("div",{className:"space-y-2",children:[H,V]}),e[64]=H,e[65]=V,e[66]=_):_=e[66];let $;e[67]!==m||e[68]!==i||e[69]!==l||e[70]!==h?($=l&&s.jsx(rt,{open:m,onOpenChange:d,sandboxRef:l,selectedIds:i?[i]:[],onChange:h,multiple:!1}),e[67]=m,e[68]=i,e[69]=l,e[70]=h,e[71]=$):$=e[71];let D;return e[72]!==k||e[73]!==P||e[74]!==_||e[75]!==$||e[76]!==c?(D=s.jsxs("div",{className:"space-y-4 rounded-lg border bg-card p-4",children:[c,k,P,_,$]}),e[72]=k,e[73]=P,e[74]=_,e[75]=$,e[76]=c,e[77]=D):D=e[77],D}const Yl=2,Wl=2;function Ql(p){return ne(p).map(A)}function Xl(p){return ne(p).map(e=>Array.isArray(e)?e.map(A):[])}function Ee(p){return Array.from({length:p},()=>"")}function Zl(p){const e=E.c(42),{headers:t,rows:a,onChange:l}=p;let r,o,i,m,d,f,g,b,h;if(e[0]!==t||e[1]!==l||e[2]!==a){const N=Ql(t),B=Xl(a),S=N.length===0&&B.length===0;i=S?Yl:Math.max(N.length,...B.map(ls),1);const w=Array.from({length:i},(_,$)=>N[$]??"");m=S?Array.from({length:Wl},()=>Ee(i)):B.map(_=>Array.from({length:i},($,D)=>_[D]??""));let T;e[12]!==l?(T=(_,$)=>l({headers:JSON.stringify(_.some(ts)?_:[]),rows:JSON.stringify($)}),e[12]=l,e[13]=T):T=e[13];const I=T,P=(_,$)=>I(w.map((D,R)=>R===_?$:D),m),L=(_,$,D)=>I(w,m.map((R,J)=>J===_?R.map((z,M)=>M===$?D:z):R));o=()=>I(w,[...m,Ee(i)]);const O=_=>I(w,m.filter(($,D)=>D!==_));r=()=>I([...w,""],m.map(es));const U=_=>I(w.filter(($,D)=>D!==_),m.map($=>$.filter((D,R)=>R!==_)));h="space-y-2",b="overflow-x-auto rounded-lg border",f="w-full border-collapse";let H;e[14]===Symbol.for("react.memo_cache_sentinel")?(H=s.jsx("th",{className:"w-8 border-b"}),e[14]=H):H=e[14];const V=s.jsxs("tr",{className:"bg-muted/40",children:[w.map((_,$)=>s.jsxs("th",{className:"group/col relative border-b border-r p-0 last:border-r-0",children:[s.jsx("input",{value:_,onChange:D=>P($,D.target.value),placeholder:`Header ${$+1}`,className:"w-full border-0 bg-transparent py-2 pl-7 pr-3 text-xs font-semibold uppercase tracking-wide outline-none placeholder:text-muted-foreground/40 focus:bg-background focus:ring-0"}),i>1&&s.jsx("button",{type:"button","aria-label":`Remove column ${$+1}`,onClick:()=>U($),className:"absolute left-0.5 top-1/2 flex h-5 w-5 -translate-y-1/2 items-center justify-center rounded text-muted-foreground/50 opacity-0 transition-opacity hover:text-destructive group-hover/col:opacity-100 cursor-pointer",children:s.jsx(he,{size:12})})]},$)),H]});e[15]!==V?(g=s.jsx("thead",{children:V}),e[15]=V,e[16]=g):g=e[16],d=m.map((_,$)=>s.jsxs("tr",{className:"group/item border-b last:border-b-0",children:[_.map((D,R)=>s.jsx("td",{className:"border-r p-0 last:border-r-0",children:s.jsx("input",{value:D,onChange:J=>L($,R,J.target.value),placeholder:"—",className:"w-full border-0 bg-transparent px-3 py-2 text-sm outline-none placeholder:text-muted-foreground/30 focus:bg-muted/30 focus:ring-0"})},R)),s.jsx("td",{className:"w-8 text-center align-middle",children:m.length>1&&s.jsx("button",{type:"button","aria-label":`Remove row ${$+1}`,onClick:()=>O($),className:"flex h-6 w-6 items-center justify-center rounded text-muted-foreground/60 opacity-0 transition-opacity hover:text-destructive group-hover/item:opacity-100 cursor-pointer",children:s.jsx(he,{size:13})})})]},$)),e[0]=t,e[1]=l,e[2]=a,e[3]=r,e[4]=o,e[5]=i,e[6]=m,e[7]=d,e[8]=f,e[9]=g,e[10]=b,e[11]=h}else r=e[3],o=e[4],i=e[5],m=e[6],d=e[7],f=e[8],g=e[9],b=e[10],h=e[11];let n;e[17]!==i||e[18]!==m.length?(n=m.length===0&&s.jsx("tr",{children:s.jsx("td",{colSpan:i+1,className:"px-3 py-4 text-center text-xs text-muted-foreground",children:"No rows yet — add one below."})}),e[17]=i,e[18]=m.length,e[19]=n):n=e[19];let c;e[20]!==d||e[21]!==n?(c=s.jsxs("tbody",{children:[d,n]}),e[20]=d,e[21]=n,e[22]=c):c=e[22];let u;e[23]!==f||e[24]!==g||e[25]!==c?(u=s.jsxs("table",{className:f,children:[g,c]}),e[23]=f,e[24]=g,e[25]=c,e[26]=u):u=e[26];let x;e[27]!==b||e[28]!==u?(x=s.jsx("div",{className:b,children:u}),e[27]=b,e[28]=u,e[29]=x):x=e[29];let y;e[30]!==o?(y=s.jsx(le,{label:"Add row",onClick:o}),e[30]=o,e[31]=y):y=e[31];let j;e[32]===Symbol.for("react.memo_cache_sentinel")?(j=s.jsx(Je,{size:13}),e[32]=j):j=e[32];let v;e[33]!==r?(v=s.jsxs("button",{type:"button",onClick:r,className:"flex items-center gap-1.5 rounded-md border border-dashed px-2.5 py-1.5 text-xs text-muted-foreground transition-colors hover:border-foreground/30 hover:text-foreground cursor-pointer",children:[j,"Add column"]}),e[33]=r,e[34]=v):v=e[34];let C;e[35]!==y||e[36]!==v?(C=s.jsxs("div",{className:"flex gap-2",children:[y,v]}),e[35]=y,e[36]=v,e[37]=C):C=e[37];let k;return e[38]!==C||e[39]!==h||e[40]!==x?(k=s.jsxs("div",{className:h,children:[x,C]}),e[38]=C,e[39]=h,e[40]=x,e[41]=k):k=e[41],k}function es(p){return[...p,""]}function ts(p){return p.trim()!==""}function ls(p){return p.length}function ss(p){const e=E.c(188),{block:t,meta:a,onChange:l,sandboxRef:r}=p,o=F(),i=t.__resolveType??"",m=pt(i);if(xt(i))switch(m){case"Paragraph":{let n;e[0]!==t.html?(n=A(t.html),e[0]=t.html,e[1]=n):n=e[1];let c;e[2]!==o?(c=o("sandbox.blockRegistry.writeSomethingPlaceholder"),e[2]=o,e[3]=c):c=e[3];let u;e[4]!==t||e[5]!==l?(u=y=>l({...t,html:y}),e[4]=t,e[5]=l,e[6]=u):u=e[6];let x;return e[7]!==n||e[8]!==c||e[9]!==u?(x=s.jsx(ll,{html:n,placeholder:c,onChange:u}),e[7]=n,e[8]=c,e[9]=u,e[10]=x):x=e[10],x}case"Heading":{let n;e[11]!==t.text?(n=A(t.text),e[11]=t.text,e[12]=n):n=e[12];let c;e[13]!==t.level?(c=A(t.level),e[13]=t.level,e[14]=c):c=e[14];let u;e[15]!==t||e[16]!==l?(u=y=>l({...t,...y}),e[15]=t,e[16]=l,e[17]=u):u=e[17];let x;return e[18]!==n||e[19]!==c||e[20]!==u?(x=s.jsx(rl,{text:n,level:c,onChange:u}),e[18]=n,e[19]=c,e[20]=u,e[21]=x):x=e[21],x}case"Quote":{let n;e[22]!==t.quote?(n=A(t.quote),e[22]=t.quote,e[23]=n):n=e[23];let c;e[24]!==t||e[25]!==l?(c=x=>l({...t,quote:x}),e[24]=t,e[25]=l,e[26]=c):c=e[26];let u;return e[27]!==n||e[28]!==c?(u=s.jsx(nl,{quote:n,onChange:c}),e[27]=n,e[28]=c,e[29]=u):u=e[29],u}case"Code":{let n;e[30]!==t.code?(n=A(t.code),e[30]=t.code,e[31]=n):n=e[31];let c;e[32]!==t.language?(c=A(t.language),e[32]=t.language,e[33]=c):c=e[33];let u;e[34]!==t||e[35]!==l?(u=y=>l({...t,...y}),e[34]=t,e[35]=l,e[36]=u):u=e[36];let x;return e[37]!==n||e[38]!==c||e[39]!==u?(x=s.jsx(al,{code:n,language:c,onChange:u}),e[37]=n,e[38]=c,e[39]=u,e[40]=x):x=e[40],x}case"List":{let n;e[41]!==t.items?(n=A(t.items),e[41]=t.items,e[42]=n):n=e[42];let c;e[43]!==t.style?(c=A(t.style),e[43]=t.style,e[44]=c):c=e[44];let u;e[45]!==t||e[46]!==l?(u=y=>l({...t,...y}),e[45]=t,e[46]=l,e[47]=u):u=e[47];let x;return e[48]!==n||e[49]!==c||e[50]!==u?(x=s.jsx(il,{items:n,style:c,onChange:u}),e[48]=n,e[49]=c,e[50]=u,e[51]=x):x=e[51],x}case"BlockImage":{let n;return e[52]!==t||e[53]!==l?(n=s.jsx(cl,{block:t,onChange:l}),e[52]=t,e[53]=l,e[54]=n):n=e[54],n}case"Video":{let n;e[55]!==t.url?(n=A(t.url),e[55]=t.url,e[56]=n):n=e[56];let c;e[57]!==t.caption?(c=A(t.caption),e[57]=t.caption,e[58]=c):c=e[58];let u;e[59]!==t||e[60]!==l?(u=y=>l({...t,...y}),e[59]=t,e[60]=l,e[61]=u):u=e[61];let x;return e[62]!==n||e[63]!==c||e[64]!==u?(x=s.jsx(ul,{url:n,caption:c,onChange:u}),e[62]=n,e[63]=c,e[64]=u,e[65]=x):x=e[65],x}case"Divider":{let n;return e[66]===Symbol.for("react.memo_cache_sentinel")?(n=s.jsx(fl,{}),e[66]=n):n=e[66],n}case"Cta":{let n;e[67]!==t.text?(n=A(t.text),e[67]=t.text,e[68]=n):n=e[68];let c;e[69]!==t.href?(c=A(t.href),e[69]=t.href,e[70]=c):c=e[70];let u;e[71]!==t||e[72]!==l?(u=y=>l({...t,...y}),e[71]=t,e[72]=l,e[73]=u):u=e[73];let x;return e[74]!==n||e[75]!==c||e[76]!==u?(x=s.jsx(ml,{text:n,href:c,onChange:u}),e[74]=n,e[75]=c,e[76]=u,e[77]=x):x=e[77],x}case"Callout":{let n;e[78]!==t.title?(n=A(t.title),e[78]=t.title,e[79]=n):n=e[79];let c;e[80]!==t.body?(c=A(t.body),e[80]=t.body,e[81]=c):c=e[81];let u;e[82]!==t.variant?(u=A(t.variant),e[82]=t.variant,e[83]=u):u=e[83];let x;e[84]!==t||e[85]!==l?(x=j=>l({...t,...j}),e[84]=t,e[85]=l,e[86]=x):x=e[86];let y;return e[87]!==n||e[88]!==c||e[89]!==u||e[90]!==x?(y=s.jsx(pl,{title:n,body:c,variant:u,onChange:x}),e[87]=n,e[88]=c,e[89]=u,e[90]=x,e[91]=y):y=e[91],y}case"Stat":{let n;e[92]!==t.value?(n=A(t.value),e[92]=t.value,e[93]=n):n=e[93];let c;e[94]!==t.label?(c=A(t.label),e[94]=t.label,e[95]=c):c=e[95];let u;e[96]!==t.description?(u=A(t.description),e[96]=t.description,e[97]=u):u=e[97];let x;e[98]!==t||e[99]!==l?(x=j=>l({...t,...j}),e[98]=t,e[99]=l,e[100]=x):x=e[100];let y;return e[101]!==n||e[102]!==c||e[103]!==u||e[104]!==x?(y=s.jsx(xl,{value:n,label:c,description:u,onChange:x}),e[101]=n,e[102]=c,e[103]=u,e[104]=x,e[105]=y):y=e[105],y}case"StatGroup":{let n;e[106]!==t.stats?(n=A(t.stats),e[106]=t.stats,e[107]=n):n=e[107];let c;e[108]!==t||e[109]!==l?(c=x=>l({...t,stats:x}),e[108]=t,e[109]=l,e[110]=c):c=e[110];let u;return e[111]!==n||e[112]!==c?(u=s.jsx(bl,{stats:n,onChange:c}),e[111]=n,e[112]=c,e[113]=u):u=e[113],u}case"CardGroup":{let n;e[114]!==t.cards?(n=typeof t.cards=="string"?t.cards:JSON.stringify(t.cards??[]),e[114]=t.cards,e[115]=n):n=e[115];let c;e[116]!==t||e[117]!==l?(c=x=>l({...t,cards:x}),e[116]=t,e[117]=l,e[118]=c):c=e[118];let u;return e[119]!==n||e[120]!==c?(u=s.jsx(gl,{cards:n,onChange:c}),e[119]=n,e[120]=c,e[121]=u):u=e[121],u}case"Checklist":{let n;e[122]!==t.title?(n=A(t.title),e[122]=t.title,e[123]=n):n=e[123];let c;e[124]!==t.items?(c=A(t.items),e[124]=t.items,e[125]=c):c=e[125];let u;e[126]!==t||e[127]!==l?(u=y=>l({...t,...y}),e[126]=t,e[127]=l,e[128]=u):u=e[128];let x;return e[129]!==n||e[130]!==c||e[131]!==u?(x=s.jsx(hl,{title:n,items:c,onChange:u}),e[129]=n,e[130]=c,e[131]=u,e[132]=x):x=e[132],x}case"Steps":{let n;e[133]!==t.title?(n=A(t.title),e[133]=t.title,e[134]=n):n=e[134];let c;e[135]!==t.steps?(c=A(t.steps),e[135]=t.steps,e[136]=c):c=e[136];let u;e[137]!==t||e[138]!==l?(u=y=>l({...t,...y}),e[137]=t,e[138]=l,e[139]=u):u=e[139];let x;return e[140]!==n||e[141]!==c||e[142]!==u?(x=s.jsx(yl,{title:n,steps:c,onChange:u}),e[140]=n,e[141]=c,e[142]=u,e[143]=x):x=e[143],x}case"Comparison":{let n;e[144]!==t.left?(n=A(t.left),e[144]=t.left,e[145]=n):n=e[145];let c;e[146]!==t.right?(c=A(t.right),e[146]=t.right,e[147]=c):c=e[147];let u;e[148]!==t||e[149]!==l?(u=y=>l({...t,...y}),e[148]=t,e[149]=l,e[150]=u):u=e[150];let x;return e[151]!==n||e[152]!==c||e[153]!==u?(x=s.jsx(vl,{left:n,right:c,onChange:u}),e[151]=n,e[152]=c,e[153]=u,e[154]=x):x=e[154],x}case"Table":{let n;e[155]!==t.headers?(n=typeof t.headers=="string"?t.headers:JSON.stringify(t.headers??[]),e[155]=t.headers,e[156]=n):n=e[156];let c;e[157]!==t.rows?(c=typeof t.rows=="string"?t.rows:JSON.stringify(t.rows??[]),e[157]=t.rows,e[158]=c):c=e[158];let u;e[159]!==t||e[160]!==l?(u=y=>l({...t,...y}),e[159]=t,e[160]=l,e[161]=u):u=e[161];let x;return e[162]!==n||e[163]!==c||e[164]!==u?(x=s.jsx(Zl,{headers:n,rows:c,onChange:u}),e[162]=n,e[163]=c,e[164]=u,e[165]=x):x=e[165],x}case"ProductCard":{let n;return e[166]!==t||e[167]!==l||e[168]!==r?(n=s.jsx(Jl,{block:t,onChange:l,sandboxRef:r}),e[166]=t,e[167]=l,e[168]=r,e[169]=n):n=e[169],n}case"ProductShelf":{let n;return e[170]!==t||e[171]!==l||e[172]!==r?(n=s.jsx(Gl,{block:t,onChange:l,sandboxRef:r}),e[170]=t,e[171]=l,e[172]=r,e[173]=n):n=e[173],n}}let f;e[174]!==a||e[175]!==i?(f=i?gt(i,a):null,e[174]=a,e[175]=i,e[176]=f):f=e[176];const g=f;if(!g){const n=i??"";let c;e[177]!==o||e[178]!==n?(c=o("sandbox.blockRegistry.unknownBlockType",{type:n}),e[177]=o,e[178]=n,e[179]=c):c=e[179];let u;return e[180]!==c?(u=s.jsx("p",{className:"text-xs text-muted-foreground",children:c}),e[180]=c,e[181]=u):u=e[181],u}let b;e[182]!==l?(b=n=>l(n),e[182]=l,e[183]=b):b=e[183];let h;return e[184]!==t||e[185]!==g||e[186]!==b?(h=s.jsx(ht,{schema:g,value:t,onChange:b,basePath:""}),e[184]=t,e[185]=g,e[186]=b,e[187]=h):h=e[187],h}function os(p){const e=E.c(43),{id:t,block:a,meta:l,onChange:r,onDelete:o,onDuplicate:i,sandboxRef:m}=p,d=F();let f;e[0]!==t?(f={id:t},e[0]=t,e[1]=f):f=e[1];const{attributes:g,listeners:b,setNodeRef:h,transform:n,transition:c,isDragging:u}=Me(f);let x;e[2]!==n?(x=Ge.Transform.toString(n),e[2]=n,e[3]=x):x=e[3];let y;e[4]!==x||e[5]!==c?(y={transform:x,transition:c},e[4]=x,e[5]=c,e[6]=y):y=e[6];const j=u&&"opacity-50";let v;e[7]!==j?(v=Q("group/row relative rounded-md py-1.5 pl-12 pr-2 transition-colors hover:bg-muted/40",j),e[7]=j,e[8]=v):v=e[8];let C;e[9]!==d?(C=d("sandbox.blockRow.dragToReorder"),e[9]=d,e[10]=C):C=e[10];let k;e[11]===Symbol.for("react.memo_cache_sentinel")?(k=s.jsx(Ke,{size:14}),e[11]=k):k=e[11];let N;e[12]!==g||e[13]!==b||e[14]!==C?(N=s.jsx("button",{type:"button","aria-label":C,className:"absolute left-1 top-1.5 flex h-6 w-6 cursor-grab items-center justify-center rounded text-muted-foreground opacity-0 transition-opacity hover:bg-muted hover:text-foreground active:cursor-grabbing group-hover/row:opacity-100",...g,...b,children:k}),e[12]=g,e[13]=b,e[14]=C,e[15]=N):N=e[15];let B;e[16]!==d?(B=d("sandbox.blockRow.duplicateBlock"),e[16]=d,e[17]=B):B=e[17];let S;e[18]===Symbol.for("react.memo_cache_sentinel")?(S=s.jsx(Et,{size:14}),e[18]=S):S=e[18];let w;e[19]!==i||e[20]!==B?(w=s.jsx("button",{type:"button","aria-label":B,onClick:i,className:"flex h-6 w-6 items-center justify-center rounded text-muted-foreground hover:bg-muted hover:text-foreground cursor-pointer",children:S}),e[19]=i,e[20]=B,e[21]=w):w=e[21];let T;e[22]!==d?(T=d("sandbox.blockRow.deleteBlock"),e[22]=d,e[23]=T):T=e[23];let I;e[24]===Symbol.for("react.memo_cache_sentinel")?(I=s.jsx(he,{size:14}),e[24]=I):I=e[24];let P;e[25]!==o||e[26]!==T?(P=s.jsx("button",{type:"button","aria-label":T,onClick:o,className:"flex h-6 w-6 items-center justify-center rounded text-muted-foreground hover:bg-muted hover:text-destructive cursor-pointer",children:I}),e[25]=o,e[26]=T,e[27]=P):P=e[27];let L;e[28]!==w||e[29]!==P?(L=s.jsxs("div",{className:"absolute right-1 top-1 z-10 flex flex-row gap-0.5 rounded-md bg-background/80 opacity-0 backdrop-blur-sm transition-opacity group-hover/row:opacity-100",children:[w,P]}),e[28]=w,e[29]=P,e[30]=L):L=e[30];let O;e[31]!==a||e[32]!==l||e[33]!==r||e[34]!==m?(O=s.jsx(ss,{block:a,meta:l,onChange:r,sandboxRef:m}),e[31]=a,e[32]=l,e[33]=r,e[34]=m,e[35]=O):O=e[35];let U;return e[36]!==h||e[37]!==L||e[38]!==O||e[39]!==y||e[40]!==v||e[41]!==N?(U=s.jsxs("div",{ref:h,style:y,className:v,children:[N,L,O]}),e[36]=h,e[37]=L,e[38]=O,e[39]=y,e[40]=v,e[41]=N,e[42]=U):U=e[42],U}function Ts(p){return Array.isArray(p)?p:[]}function Is(p){const e=E.c(64),{value:t,onChange:a,meta:l,sandboxRef:r,emptyMessage:o}=p,i=o===void 0?"No content yet. Use ⊕ to add your first block.":o;let m;e[0]!==l?(m=bt(l),e[0]=l,e[1]=m):m=e[1];const d=m;let f;e[2]!==t?(f=()=>t.map(is),e[2]=t,e[3]=f):f=e[3];const[g,b]=K.useState(f);let h;e[4]!==g?(h=g.map(as),e[4]=g,e[5]=h):h=e[5];const n=h;let c;e[6]!==g?(c=g.map(ns),e[6]=g,e[7]=c):c=e[7];const u=c;let x;e[8]!==a?(x=z=>{b(z),a(z.map(rs))},e[8]=a,e[9]=x):x=e[9];const y=x;let j;e[10]!==g||e[11]!==y?(j=(z,M)=>{const q=[...g];q.splice(z,0,{id:ye(),block:{__resolveType:M}}),y(q)},e[10]=g,e[11]=y,e[12]=j):j=e[12];const v=j;let C;e[13]!==g||e[14]!==y?(C=(z,M)=>{y(g.map((q,Y)=>Y===z?{...q,block:M}:q))},e[13]=g,e[14]=y,e[15]=C):C=e[15];const k=C;let N;e[16]!==g||e[17]!==y?(N=z=>{y(g.filter((M,q)=>q!==z))},e[16]=g,e[17]=y,e[18]=N):N=e[18];const B=N;let S;e[19]!==g||e[20]!==y?(S=z=>{const M=g[z];if(!M)return;const q=[...g];q.splice(z+1,0,{id:ye(),block:structuredClone(M.block)}),y(q)},e[19]=g,e[20]=y,e[21]=S):S=e[21];const w=S;let T;e[22]===Symbol.for("react.memo_cache_sentinel")?(T={activationConstraint:{distance:6}},e[22]=T):T=e[22];let I;e[23]===Symbol.for("react.memo_cache_sentinel")?(I={coordinateGetter:Fe},e[23]=I):I=e[23];const P=Re(ue(ze,T),ue(Oe,I));let L;e[24]!==g||e[25]!==y?(L=z=>{const{active:M,over:q}=z;if(!q||M.id===q.id)return;const Y=g.findIndex(W=>W.id===String(M.id)),Z=g.findIndex(W=>W.id===String(q.id));Y===-1||Z===-1||y(Ue(g,Y,Z))},e[24]=g,e[25]=y,e[26]=L):L=e[26];const O=L;let U;e[27]!==u.length||e[28]!==i?(U=u.length===0&&s.jsx("p",{className:"py-6 text-center text-sm text-muted-foreground",children:i}),e[27]=u.length,e[28]=i,e[29]=U):U=e[29];let H;e[30]!==v?(H=z=>v(0,z),e[30]=v,e[31]=H):H=e[31];const V=u.length===0;let _;e[32]!==d||e[33]!==H||e[34]!==V?(_=s.jsx(Pe,{blockTypes:d,onInsert:H,alwaysShow:V}),e[32]=d,e[33]=H,e[34]=V,e[35]=_):_=e[35];let $;if(e[36]!==g||e[37]!==d||e[38]!==w||e[39]!==v||e[40]!==l||e[41]!==B||e[42]!==r||e[43]!==k){let z;e[45]!==d||e[46]!==w||e[47]!==v||e[48]!==l||e[49]!==B||e[50]!==r||e[51]!==k?(z=(M,q)=>{const{id:Y,block:Z}=M;return s.jsxs("div",{children:[s.jsx(os,{id:Y,block:Z,meta:l,onChange:W=>k(q,W),onDelete:()=>B(q),onDuplicate:()=>w(q),sandboxRef:r}),s.jsx(Pe,{blockTypes:d,onInsert:W=>v(q+1,W)})]},Y)},e[45]=d,e[46]=w,e[47]=v,e[48]=l,e[49]=B,e[50]=r,e[51]=k,e[52]=z):z=e[52],$=g.map(z),e[36]=g,e[37]=d,e[38]=w,e[39]=v,e[40]=l,e[41]=B,e[42]=r,e[43]=k,e[44]=$}else $=e[44];let D;e[53]!==n||e[54]!==_||e[55]!==$?(D=s.jsxs(qe,{items:n,strategy:yt,children:[_,$]}),e[53]=n,e[54]=_,e[55]=$,e[56]=D):D=e[56];let R;e[57]!==O||e[58]!==P||e[59]!==D?(R=s.jsx(He,{sensors:P,collisionDetection:Ve,onDragEnd:O,children:D}),e[57]=O,e[58]=P,e[59]=D,e[60]=R):R=e[60];let J;return e[61]!==U||e[62]!==R?(J=s.jsxs("div",{className:"mt-2",children:[U,R]}),e[61]=U,e[62]=R,e[63]=J):J=e[63],J}function rs(p){return p.block}function ns(p){return p.block}function as(p){return p.id}function is(p){return{id:ye(),block:p}}function ye(){return crypto.randomUUID()}export{Is as B,Ts as a,Ps as b,ws as c};