decocms 4.242.7 → 4.242.8

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 (236) hide show
  1. package/dist/client/assets/{AlertCircle-15gFaLIc.js → AlertCircle-BoTQlFfh.js} +1 -1
  2. package/dist/client/assets/{AreaChart-DT5AVswk.js → AreaChart-T2OyonCK.js} +1 -1
  3. package/dist/client/assets/{ArrowLeft-DbXhopuJ.js → ArrowLeft-CLe5Qvl7.js} +1 -1
  4. package/dist/client/assets/{ArrowUp-QzKZF-kB.js → ArrowUp-DHH91psC.js} +1 -1
  5. package/dist/client/assets/{ArrowUpRight-CL4Y0tRP.js → ArrowUpRight-BPplqZgs.js} +1 -1
  6. package/dist/client/assets/{Check-B5z_XXZ6.js → Check-CDFz4AjT.js} +1 -1
  7. package/dist/client/assets/{CheckCircle-vfAuoWt4.js → CheckCircle-nI2pZ3Kf.js} +1 -1
  8. package/dist/client/assets/{ChevronDown-C-HAbHMb.js → ChevronDown-nAecbmVW.js} +1 -1
  9. package/dist/client/assets/{ChevronRight-CXdw3R_m.js → ChevronRight-qkZFnoAz.js} +1 -1
  10. package/dist/client/assets/{ChevronSelectorVertical-GJ2AwVKm.js → ChevronSelectorVertical-BfGyxCCr.js} +1 -1
  11. package/dist/client/assets/{ChevronUp-C01ncoUH.js → ChevronUp-CrdQT8QJ.js} +1 -1
  12. package/dist/client/assets/{Copy01-DlwQs5r0.js → Copy01-Ca9EpaeI.js} +1 -1
  13. package/dist/client/assets/{CreditCard01-B723foKl.js → CreditCard01-B9aN1Ui2.js} +1 -1
  14. package/dist/client/assets/{DotsVertical-DOxvQtOm.js → DotsVertical-BAknAFtO.js} +1 -1
  15. package/dist/client/assets/{Download01-Bn5Q0wAS.js → Download01-Bm3fUxw2.js} +1 -1
  16. package/dist/client/assets/{Eye-DBP5goK0.js → Eye-CZ1lkQZi.js} +1 -1
  17. package/dist/client/assets/{FilterLines-4TN65-__.js → FilterLines-15AxvKle.js} +1 -1
  18. package/dist/client/assets/{Globe01-YDAPmFPV.js → Globe01-D7eaLSZi.js} +1 -1
  19. package/dist/client/assets/{Globe04-D-xAShb2.js → Globe04-FqhO4Hgt.js} +1 -1
  20. package/dist/client/assets/{HardDrive-C2oWPo9G.js → HardDrive-DD_Yzh-d.js} +1 -1
  21. package/dist/client/assets/{Key01-CUfOHXBo.js → Key01-CZx41HY4.js} +1 -1
  22. package/dist/client/assets/{LayoutLeft-DUpyajE-.js → LayoutLeft-BpXv7oEx.js} +1 -1
  23. package/dist/client/assets/{LinkExternal01-BADCzNEq.js → LinkExternal01-C8ScgZrs.js} +1 -1
  24. package/dist/client/assets/{LockUnlocked01-r6vdLXWe.js → LockUnlocked01-DKKD_Ok5.js} +1 -1
  25. package/dist/client/assets/{LogOut01-B9FzTybU.js → LogOut01-THLMLsl3.js} +1 -1
  26. package/dist/client/assets/{Monitor01-rL6zbURu.js → Monitor01-BBWSaMsJ.js} +1 -1
  27. package/dist/client/assets/{Palette-D2Ywd2QR.js → Palette-BdNH3l-N.js} +1 -1
  28. package/dist/client/assets/{Play-BWck8aW7.js → Play-BkCtwszA.js} +1 -1
  29. package/dist/client/assets/{Plus-C2xKEO7r.js → Plus-BU2lhptn.js} +1 -1
  30. package/dist/client/assets/{SearchLg-Sx93FyD2.js → SearchLg-DY-7dxSc.js} +1 -1
  31. package/dist/client/assets/{SearchMd-Cdy9Z0au.js → SearchMd-DDzdMVOp.js} +1 -1
  32. package/dist/client/assets/{Settings02-C-ER4E83.js → Settings02-Gbxpyx4Q.js} +1 -1
  33. package/dist/client/assets/{Share07-BWm772kb.js → Share07-B2wLINGb.js} +1 -1
  34. package/dist/client/assets/{Shield01-BGBijift.js → Shield01-vXLr1mr5.js} +1 -1
  35. package/dist/client/assets/{Stars01-YHJC2xf-.js → Stars01-DDcyuzvc.js} +1 -1
  36. package/dist/client/assets/{Stars02-OXx7pSpi.js → Stars02-atggWcu2.js} +1 -1
  37. package/dist/client/assets/{Sun-CcruyiFR.js → Sun-BS55qMsk.js} +1 -1
  38. package/dist/client/assets/{SwitchHorizontal01-4IQi0z5i.js → SwitchHorizontal01-BmFQo3OE.js} +1 -1
  39. package/dist/client/assets/{Tool01-D_Jb4gj8.js → Tool01-Cj5KnqgJ.js} +1 -1
  40. package/dist/client/assets/{Tool02-SA8jP9Hu.js → Tool02-Cy5KJ2T2.js} +1 -1
  41. package/dist/client/assets/{Trash01-Cy0oXJLu.js → Trash01-hDvKHPoK.js} +1 -1
  42. package/dist/client/assets/{TrendUp01-QckDJwGk.js → TrendUp01-DJpajRd_.js} +1 -1
  43. package/dist/client/assets/{Upload01-m1kJ0UY7.js → Upload01-jgZfErqT.js} +1 -1
  44. package/dist/client/assets/{User01-9gJ33HqF.js → User01-BgbUKPiK.js} +1 -1
  45. package/dist/client/assets/{Users01-BcZGRvPB.js → Users01-CkJKhpVc.js} +1 -1
  46. package/dist/client/assets/{Users03-BSy4QBM7.js → Users03-Dv3_fZad.js} +1 -1
  47. package/dist/client/assets/{X-UbX4MdwG.js → X-C6E8GzfL.js} +1 -1
  48. package/dist/client/assets/{XCircle-87JECNlp.js → XCircle-DH2jOoBq.js} +1 -1
  49. package/dist/client/assets/{XClose-DacfUGUC.js → XClose-D2UGSKyk.js} +1 -1
  50. package/dist/client/assets/{YAxis-CiKKslvc.js → YAxis-B480boDG.js} +1 -1
  51. package/dist/client/assets/{Zap-CuLAW4F2.js → Zap-mwiynZmR.js} +1 -1
  52. package/dist/client/assets/{ZapSquare-T1V95eyf.js → ZapSquare-DlhxOYuh.js} +1 -1
  53. package/dist/client/assets/{access-gate-B3xK3HdE.js → access-gate-pt14iFbc.js} +1 -1
  54. package/dist/client/assets/{agent-icon-K5r6Ao5H.js → agent-icon-CdAzwt7J.js} +1 -1
  55. package/dist/client/assets/{agents-list-DIFcbf8v.js → agents-list-9BtWGPLX.js} +1 -1
  56. package/dist/client/assets/{ai-providers-B1HHPGpd.js → ai-providers-C5xCfu1Y.js} +1 -1
  57. package/dist/client/assets/{alert-_lb71f4l.js → alert-BVIJuHm7.js} +1 -1
  58. package/dist/client/assets/{alert-dialog-CMOdBQ7s.js → alert-dialog-C-cZlNMV.js} +1 -1
  59. package/dist/client/assets/{api-keys-Ky7bhbde.js → api-keys-iGr2jYCA.js} +1 -1
  60. package/dist/client/assets/{app-editor-D9uFt6Sk.js → app-editor-CniWqGdb.js} +1 -1
  61. package/dist/client/assets/{auth-Di48PY3e.js → auth-Br4KUJ_D.js} +1 -1
  62. package/dist/client/assets/{auth-catchall-4nXTRvtt.js → auth-catchall-CCtGRN8I.js} +1 -1
  63. package/dist/client/assets/{auth-entry-CIFdH5AI.js → auth-entry-B8_ipjg9.js} +1 -1
  64. package/dist/client/assets/{auth-split-layout-BO6BQZLd.js → auth-split-layout-b_jjaEti.js} +1 -1
  65. package/dist/client/assets/{authenticate-and-persist-oauth-BFHN-2-8.js → authenticate-and-persist-oauth-DhuGhqU0.js} +1 -1
  66. package/dist/client/assets/{automation-list-row-BbNNSya8.js → automation-list-row-ChQj_d8M.js} +1 -1
  67. package/dist/client/assets/{automation-runs-BaiE-RK7.js → automation-runs-C8ijWgiW.js} +1 -1
  68. package/dist/client/assets/{automations-BLxmY1Zm.js → automations-Cn8bxCYo.js} +1 -1
  69. package/dist/client/assets/{avatar-uZ8DuyXu.js → avatar-BcYKO37a.js} +1 -1
  70. package/dist/client/assets/{badge-Dwz2yyBf.js → badge-WQNJCKcw.js} +1 -1
  71. package/dist/client/assets/{billing-a-estjMe.js → billing-DoiNzskc.js} +1 -1
  72. package/dist/client/assets/{block-document-Bx_Jv0G7.js → block-document-CX5b_YrK.js} +1 -1
  73. package/dist/client/assets/{buckets-DQqdRPzg.js → buckets-YNdLWugq.js} +1 -1
  74. package/dist/client/assets/{bulk-category-panel-DqQ_B5BY.js → bulk-category-panel-BdRz9at_.js} +1 -1
  75. package/dist/client/assets/{capability-load-error-DNMTTcXq.js → capability-load-error-LbhhkHcE.js} +1 -1
  76. package/dist/client/assets/{card-C5oWNz7H.js → card-BJU3ICwF.js} +1 -1
  77. package/dist/client/assets/{cards-DTaIe5Te.js → cards-CtYDK4ef.js} +1 -1
  78. package/dist/client/assets/{category-editor-BOFCouH_.js → category-editor-BkAMV04h.js} +1 -1
  79. package/dist/client/assets/{chart-CSMkRSRK.js → chart-BeyRG261.js} +1 -1
  80. package/dist/client/assets/{chat-context-BcMskLsC.js → chat-context-DRswam-n.js} +1 -1
  81. package/dist/client/assets/{checkbox-h1hj2gPk.js → checkbox-Bs8phTrR.js} +1 -1
  82. package/dist/client/assets/{choose-editor-1t0AMjkO.js → choose-editor-VlsT214a.js} +1 -1
  83. package/dist/client/assets/{cli-auth-success-BJYzIb_6.js → cli-auth-success-DBhYeOy-.js} +1 -1
  84. package/dist/client/assets/{collection-detail-BY-DluhZ.js → collection-detail-Dcx57D-C.js} +1 -1
  85. package/dist/client/assets/{collection-display-button-Ch9nDgvM.js → collection-display-button-DJjS0aZn.js} +1 -1
  86. package/dist/client/assets/{collection-search-DP1qJdvT.js → collection-search-3PtmZ2TT.js} +1 -1
  87. package/dist/client/assets/{collection-table-wrapper-Dmvj74oN.js → collection-table-wrapper-RtnOd8bF.js} +1 -1
  88. package/dist/client/assets/{collection-tabs-CSD5pLj6.js → collection-tabs-FkQlO5iz.js} +1 -1
  89. package/dist/client/assets/{command-DMwVDqRx.js → command-C5iwTZOo.js} +1 -1
  90. package/dist/client/assets/{commerce-onboarding-JUHBJ7Vu.js → commerce-onboarding-6yH6xV87.js} +1 -1
  91. package/dist/client/assets/{connect-Cg5rZzuT.js → connect-CpkSS2rm.js} +1 -1
  92. package/dist/client/assets/{connection-Dz2fbSpt.js → connection-CdQeuUbf.js} +1 -1
  93. package/dist/client/assets/{connection-card-BtQWwIa6.js → connection-card-CHvixVXW.js} +1 -1
  94. package/dist/client/assets/{connection-detail-BpfG3o6N.js → connection-detail-A5faCN3P.js} +1 -1
  95. package/dist/client/assets/{connection-form-helpers-DCXfsQ1e.js → connection-form-helpers-Df4Ue4Ix.js} +1 -1
  96. package/dist/client/assets/{connections-Bp-WfHjD.js → connections-ConL6zk4.js} +1 -1
  97. package/dist/client/assets/{decopilot-sse-pool-BCuN51t9.js → decopilot-sse-pool-Bt-N4qla.js} +1 -1
  98. package/dist/client/assets/{dialog-DsyeJr0O.js → dialog-D5yd4-0t.js} +1 -1
  99. package/dist/client/assets/{domain-settings-Dl3gZggE.js → domain-settings-BwdgISpN.js} +1 -1
  100. package/dist/client/assets/{drawer-HwUfq74d.js → drawer-HIHWp3gG.js} +1 -1
  101. package/dist/client/assets/{dropdown-menu-CdgaWjPI.js → dropdown-menu-DYoLFcve.js} +1 -1
  102. package/dist/client/assets/{empty-state-DcYeQSVF.js → empty-state-BHJXrO2t.js} +1 -1
  103. package/dist/client/assets/{extract-connection-data-BdDn1xWN.js → extract-connection-data-jzPmfmjm.js} +1 -1
  104. package/dist/client/assets/{file-explorer-Dtija5j6.js → file-explorer-C1lAmDdt.js} +1 -1
  105. package/dist/client/assets/{file-type-icon-ke_a9PWC.js → file-type-icon-Q8n4QLXy.js} +1 -1
  106. package/dist/client/assets/{form-CTivROZ8.js → form-789bkDdv.js} +1 -1
  107. package/dist/client/assets/{general-CC8sDKsa.js → general-5uxBADza.js} +1 -1
  108. package/dist/client/assets/{github-repo-picker-BIM8mByN.js → github-repo-picker-C9rLdFTg.js} +1 -1
  109. package/dist/client/assets/{hooks-0FqWzfqu.js → hooks-n8Ss1WVk.js} +1 -1
  110. package/dist/client/assets/{index-DvW8A4PJ.js → index-BAN-evsd.js} +1 -1
  111. package/dist/client/assets/{index-DDaAKoW0.js → index-BBYMMwr3.js} +3 -3
  112. package/dist/client/assets/{index-CxDIxs76.js → index-BRMmCy_p.js} +1 -1
  113. package/dist/client/assets/{index-DIKjEsr7.js → index-C71Kq6yz.js} +5 -5
  114. package/dist/client/assets/{index-B_-DAQ2_.js → index-D8jNAo2W.js} +1 -1
  115. package/dist/client/assets/{index-Cmk9Jpqa.js → index-DBqB5deL.js} +1 -1
  116. package/dist/client/assets/{index-CF7XM4zP.js → index-DOX5DH3-.js} +1 -1
  117. package/dist/client/assets/{index-DZYlcgZn.js → index-DOm-v_tR.js} +1 -1
  118. package/dist/client/assets/{index-B33dw6qe.js → index-GwvevJ5e.js} +1 -1
  119. package/dist/client/assets/{index-BYLKWEbt.js → index-h0oQmXLZ.js} +1 -1
  120. package/dist/client/assets/{index-redirect-BRbJlpWL.js → index-redirect-D9Z66Mz5.js} +1 -1
  121. package/dist/client/assets/{infra-billing-C5AGMhcy.js → infra-billing-Bwz2gt_p.js} +1 -1
  122. package/dist/client/assets/{input-D1rxzLYS.js → input-CqVjACZq.js} +1 -1
  123. package/dist/client/assets/{integration-icon-D70ppfdw.js → integration-icon-D96vAHD-.js} +1 -1
  124. package/dist/client/assets/{invite-member-dialog-C-BKRNv7.js → invite-member-dialog-Ctdea6OY.js} +1 -1
  125. package/dist/client/assets/{label-w7mJUKNI.js → label-B8C6pCoD.js} +1 -1
  126. package/dist/client/assets/{layout-Ckic2x6O.js → layout-CU-GGyLd.js} +1 -1
  127. package/dist/client/assets/{login-B_PbwXXW.js → login-mb2jdVFW.js} +1 -1
  128. package/dist/client/assets/{mcp-oauth-B0F9aZYH.js → mcp-oauth-Dl3OcyHS.js} +1 -1
  129. package/dist/client/assets/{members-6fkgT32O.js → members-CVcFRwzJ.js} +1 -1
  130. package/dist/client/assets/{monaco-editor-CwnQZDyj.js → monaco-editor-6oF1_5Rv.js} +1 -1
  131. package/dist/client/assets/{monitoring-stats-row-CLPL3n3v.js → monitoring-stats-row-oHGWv6_N.js} +1 -1
  132. package/dist/client/assets/{multi-select-VbqEVFq_.js → multi-select-Q7j5A2MT.js} +1 -1
  133. package/dist/client/assets/{oauth-callback-B5HOL-k7.js → oauth-callback-PoL_-HnY.js} +1 -1
  134. package/dist/client/assets/{oauth-callback-ai-provider-BlHq2oUM.js → oauth-callback-ai-provider-DGeAIKGB.js} +1 -1
  135. package/dist/client/assets/{onboarding-BALCEvYA.js → onboarding-CD6h0MoQ.js} +1 -1
  136. package/dist/client/assets/{org-layout-Bv5NTacc.js → org-layout-CzPlRRs3.js} +1 -1
  137. package/dist/client/assets/{organization-choice-CAE8iREm.js → organization-choice-B1bFqmcL.js} +1 -1
  138. package/dist/client/assets/{orgs-D2FkpJl2.js → orgs-CbweUhRf.js} +1 -1
  139. package/dist/client/assets/{page-seo-form-kJHSrSsC.js → page-seo-form-CNV9kfDu.js} +1 -1
  140. package/dist/client/assets/{popover-VybZOBk3.js → popover-D5GiNAyY.js} +1 -1
  141. package/dist/client/assets/{post-editor-FenFpV1e.js → post-editor-CQpbHb80.js} +1 -1
  142. package/dist/client/assets/{primitives-Cee9hntD.js → primitives-I-hRROi8.js} +1 -1
  143. package/dist/client/assets/{profile-BVA9yxER.js → profile-Ds5Ix8in.js} +1 -1
  144. package/dist/client/assets/{project-app-view-rITLcLCu.js → project-app-view-VKBwhaaV.js} +1 -1
  145. package/dist/client/assets/record-editor-K34bBJD4.js +1 -0
  146. package/dist/client/assets/{redirect-editor-D17aRqMO.js → redirect-editor-C8PXnLEF.js} +1 -1
  147. package/dist/client/assets/registry-aIa5F6SF.js +2 -0
  148. package/dist/client/assets/{registry-layout-DS-147fF.js → registry-layout-PTzlEEOK.js} +1 -1
  149. package/dist/client/assets/{reports-B7WV0nBh.js → reports-CMpxAqPJ.js} +1 -1
  150. package/dist/client/assets/{require-capability--NHhV5un.js → require-capability-CRHirOp0.js} +1 -1
  151. package/dist/client/assets/{required-auth-layout-CXRviUfq.js → required-auth-layout-IJ5KMaV7.js} +1 -1
  152. package/dist/client/assets/{reset-password-BPnDDoJ7.js → reset-password-ulCP3mtK.js} +1 -1
  153. package/dist/client/assets/{roles-DO_ACHRD.js → roles-CXbDye5u.js} +1 -1
  154. package/dist/client/assets/{search-input-ogrEBTNL.js → search-input-wz_3YmOf.js} +1 -1
  155. package/dist/client/assets/{secrets-CQrot6vD.js → secrets-Bmb_mWwh.js} +1 -1
  156. package/dist/client/assets/{sections-editor-COUGyjVb.js → sections-editor-BhBP7Ob2.js} +1 -1
  157. package/dist/client/assets/{select-CYQVoO2Q.js → select-DxLnud9a.js} +1 -1
  158. package/dist/client/assets/{select-model-D_7TJZXe.js → select-model-BdG4GQ81.js} +1 -1
  159. package/dist/client/assets/{self-tool-result-HVruADnM.js → self-tool-result-BA7oGPeT.js} +1 -1
  160. package/dist/client/assets/{seo-editor-C8h4G3Oo.js → seo-editor-DDg9ydQ3.js} +1 -1
  161. package/dist/client/assets/{settings-layout-Dbtkd7rE.js → settings-layout-Dg51K4Kh.js} +1 -1
  162. package/dist/client/assets/{settings-section-CtGoDTIg.js → settings-section-sNSyfM9A.js} +1 -1
  163. package/dist/client/assets/{settings-subnav-BROff6tf.js → settings-subnav-Ded1qddZ.js} +1 -1
  164. package/dist/client/assets/{shell-controls-HCWTsFVr.js → shell-controls-CUcNY7Fr.js} +1 -1
  165. package/dist/client/assets/{shell-layout-CwnWkc9y.js → shell-layout-B_utdrsX.js} +1 -1
  166. package/dist/client/assets/{sidebar-DPZJiOf7.js → sidebar-hMS-Do1_.js} +1 -1
  167. package/dist/client/assets/{skeleton-DsgTYEqa.js → skeleton-_qZfcijY.js} +1 -1
  168. package/dist/client/assets/{spinner-DcjgZ2N9.js → spinner-DL7S_Tg-.js} +1 -1
  169. package/dist/client/assets/{sso-DKYZ6w00.js → sso-CBuqzByo.js} +1 -1
  170. package/dist/client/assets/{store-Be7GNPOf.js → store-DUDLKkAB.js} +1 -1
  171. package/dist/client/assets/store-registry-0DDzIaYB.js +2 -0
  172. package/dist/client/assets/{studio-tools-8ppZIkX1.js → studio-tools-Cy9wsd4y.js} +1 -1
  173. package/dist/client/assets/{switch-CVwLPYCh.js → switch-sXtR6oTo.js} +1 -1
  174. package/dist/client/assets/{synced-repos-DubQHDfh.js → synced-repos-D8XHKICV.js} +1 -1
  175. package/dist/client/assets/{tab-id-DwvmIHSg.js → tab-id-zrZ__KZh.js} +1 -1
  176. package/dist/client/assets/{table-Ckc966ww.js → table-DD3qCk9X.js} +1 -1
  177. package/dist/client/assets/{tabs-DjRpS5PY.js → tabs-DZ5h0Fcm.js} +1 -1
  178. package/dist/client/assets/{tasks-CsujD6Mf.js → tasks-CD8H7e_s.js} +1 -1
  179. package/dist/client/assets/{textarea-iyBfFkiQ.js → textarea-CSgZI08j.js} +1 -1
  180. package/dist/client/assets/{toggle-group-CuhWPDV6.js → toggle-group-CvoJjpIe.js} +1 -1
  181. package/dist/client/assets/{toolbar-ChdWChZf.js → toolbar-DdebAnOR.js} +1 -1
  182. package/dist/client/assets/{tooltip-DziFRodn.js → tooltip-CWQrULJe.js} +1 -1
  183. package/dist/client/assets/{track-B5r0NS5f.js → track-C5-1AYRb.js} +1 -1
  184. package/dist/client/assets/{types-Bo2HFNYe.js → types-BQWJxfW4.js} +1 -1
  185. package/dist/client/assets/{use-ai-providers-C4io1va3.js → use-ai-providers-DxDfGFw1.js} +1 -1
  186. package/dist/client/assets/{use-api-keys-Bff5v7jm.js → use-api-keys-BJ1hlP35.js} +1 -1
  187. package/dist/client/assets/{use-automations-D9KZzyYq.js → use-automations-g5In83DG.js} +1 -1
  188. package/dist/client/assets/{use-autosave-DMBtYfCy.js → use-autosave-CgGiRTZK.js} +1 -1
  189. package/dist/client/assets/{use-capability-BoueQ97o.js → use-capability-B0eEIIUn.js} +1 -1
  190. package/dist/client/assets/{use-clock-tick-CHXaSoVN.js → use-clock-tick-tQ6drAyu.js} +1 -1
  191. package/dist/client/assets/{use-commerce-diagnostic-BPGjjsqM.js → use-commerce-diagnostic-D6HtRduN.js} +1 -1
  192. package/dist/client/assets/{use-connection-sbfA5-KR.js → use-connection-C-HVDfiy.js} +1 -1
  193. package/dist/client/assets/{use-copy-BSzy_Hv9.js → use-copy-D8PMebN0.js} +1 -1
  194. package/dist/client/assets/{use-create-virtual-mcp-C-jKNM3p.js → use-create-virtual-mcp-ttdO-ylP.js} +1 -1
  195. package/dist/client/assets/{use-debounced-autosave-0rtZL8Lb.js → use-debounced-autosave-z_CWuHw8.js} +1 -1
  196. package/dist/client/assets/{use-debounced-value-CeNCA03j.js → use-debounced-value-CbVjJFET.js} +1 -1
  197. package/dist/client/assets/{use-decopilot-events-0wBXeV1R.js → use-decopilot-events-Bbpy6flz.js} +1 -1
  198. package/dist/client/assets/{use-delete-connection-Dpour4SS.js → use-delete-connection-nWKSlMgi.js} +1 -1
  199. package/dist/client/assets/{use-deployment-admin-DTFkWpSa.js → use-deployment-admin-CRNylnbv.js} +1 -1
  200. package/dist/client/assets/{use-file-configs-BafcRP2m.js → use-file-configs-XiD5eAWL.js} +1 -1
  201. package/dist/client/assets/{use-infinite-scroll-BQRZaNYS.js → use-infinite-scroll-D6t-LMo5.js} +1 -1
  202. package/dist/client/assets/{use-join-requests-CUbaAPj6.js → use-join-requests-C09IfXhk.js} +1 -1
  203. package/dist/client/assets/{use-mcp-client-CsOshLdU.js → use-mcp-client-C-fMgszX.js} +1 -1
  204. package/dist/client/assets/{use-mcp-tools-X9XGZP_C.js → use-mcp-tools-CbbSPUy6.js} +1 -1
  205. package/dist/client/assets/{use-members-DtzRks-j.js → use-members-QekAqTvh.js} +1 -1
  206. package/dist/client/assets/{use-mobile-CrUyfv8i.js → use-mobile-B10O0pZ7.js} +1 -1
  207. package/dist/client/assets/{use-navigate-to-agent-RiFuu5fM.js → use-navigate-to-agent-yk7cNjBx.js} +1 -1
  208. package/dist/client/assets/{use-open-billing-url-DKlUH8QA.js → use-open-billing-url-BE6h4LOJ.js} +1 -1
  209. package/dist/client/assets/{use-org-auth-client-Dk8JmNz2.js → use-org-auth-client-BQH-9lL0.js} +1 -1
  210. package/dist/client/assets/{use-org-repo-syncs-DzKmQDEp.js → use-org-repo-syncs-w8LFOrjq.js} +1 -1
  211. package/dist/client/assets/{use-org-sso-DSlfbKHY.js → use-org-sso-oXX1uPBw.js} +1 -1
  212. package/dist/client/assets/{use-organization-roles-Dq_g3wd1.js → use-organization-roles-DMHC71DF.js} +1 -1
  213. package/dist/client/assets/{use-organization-settings-CXAnbzRx.js → use-organization-settings-D2zIP7wS.js} +1 -1
  214. package/dist/client/assets/{use-registry-connections-BumrKi6F.js → use-registry-connections-BzsP92GY.js} +1 -1
  215. package/dist/client/assets/{use-secrets-luP7DhaI.js → use-secrets-JrIeyUm9.js} +1 -1
  216. package/dist/client/assets/{use-section-preview-base-DpSSr6zp.js → use-section-preview-base-C_MekoyS.js} +1 -1
  217. package/dist/client/assets/{use-settings-tabs-yTunFM1V.js → use-settings-tabs-C6hz5k04.js} +1 -1
  218. package/dist/client/assets/{use-status-sounds-C77w-IOH.js → use-status-sounds-CIAplBkm.js} +1 -1
  219. package/dist/client/assets/{use-tags-92_dylXV.js → use-tags-BRSc5FVx.js} +1 -1
  220. package/dist/client/assets/{use-view-mode-DZrsNFB2.js → use-view-mode-BdPSyg0i.js} +1 -1
  221. package/dist/client/assets/{use-virtual-mcp-CZUfWD1q.js → use-virtual-mcp-BJMxUE1F.js} +1 -1
  222. package/dist/client/assets/useInfiniteQuery-CaQ1BLm9.js +1 -0
  223. package/dist/client/assets/{useRouterState-CQ_7wVCe.js → useRouterState-CKyWwcy8.js} +1 -1
  224. package/dist/client/assets/useSuspenseInfiniteQuery-BBFpWAvP.js +1 -0
  225. package/dist/client/assets/{users-DPsWWYMD.js → users-Bh9cgiYJ.js} +1 -1
  226. package/dist/client/assets/{variant-calendar-DeG26eXC.js → variant-calendar-BhSX6y6r.js} +1 -1
  227. package/dist/client/assets/{view-mode-toggle-4lNyumUb.js → view-mode-toggle-Col-XvVC.js} +1 -1
  228. package/dist/client/index.html +1 -1
  229. package/dist/server/cli.js +2 -2
  230. package/dist/server/server.js +2 -2
  231. package/package.json +1 -1
  232. package/dist/client/assets/record-editor-By43Sjzt.js +0 -1
  233. package/dist/client/assets/registry-Bz_JWgMC.js +0 -2
  234. package/dist/client/assets/store-registry-Cx788J0U.js +0 -2
  235. package/dist/client/assets/useInfiniteQuery-pYH7DqKD.js +0 -1
  236. package/dist/client/assets/useSuspenseInfiniteQuery-DSs2XG_0.js +0 -1
@@ -1475,7 +1475,7 @@ ${mW$(Z.content)}
1475
1475
  `)X--;return $.slice(Z,X)}function eU4($){let Z=[],X=0;while(X<$.length){let Q=$O4($,X),Y=iW$($,X,"{noformat}"),G=iW$($,X,"{quote}"),J=[];if(Q)J.push({type:"code",...Q});if(Y)J.push({type:"code",lang:"",...Y});if(G)J.push({type:"quote",...G});let W=J.sort((K,H)=>K.start-H.start)[0];if(!W){Z.push({type:"text",content:$.slice(X)});break}if(W.start>X)Z.push({type:"text",content:$.slice(X,W.start)});Z.push(W),X=W.end}return Z}function $O4($,Z){for(let X=$.indexOf("{code",Z);X!==-1;){let Q=$.indexOf("}",X);if(Q===-1)return null;let Y=$.slice(X+5,Q);if(Y===""||Y.startsWith(":")){let G=$.indexOf("{code}",Q+1);if(G===-1)return null;let J=Y.startsWith(":")?Y.slice(1).split("|")[0]??"":"";return{start:X,end:G+6,content:$.slice(Q+1,G),lang:J}}X=$.indexOf("{code",X+1)}return null}function iW$($,Z,X){let Q=$.indexOf(X,Z);if(Q===-1)return null;let Y=$.indexOf(X,Q+X.length);if(Y===-1)return null;return{start:Q,end:Y+X.length,content:$.slice(Q+X.length,Y)}}function pW$($){return $.split(`
1476
1476
  `).map(XO4).join(`
1477
1477
  `)}function in0($,Z){let X=0;while($[X]===Z)X++;return X}function ZO4($){let Z=$.trim();return Z.length>=4&&in0(Z,"-")===Z.length}function XO4($){let Z=$[1]??"";if($[0]==="h"&&Z>="1"&&Z<="6"&&$[2]===".")return`${"#".repeat(Number(Z))} ${JC($.slice(3).trimStart())}`;if(ZO4($))return"---";let X=in0($,"*");if(X>0&&$[X]===" ")return`${X===1?"*":`${" ".repeat(X-1)}-`} ${JC($.slice(X+1))}`;let Q=in0($,"#");if(Q>0&&$[Q]===" ")return`${" ".repeat(Q-1)}1. ${JC($.slice(Q+1))}`;let Y=$.trimEnd();if(Y.startsWith("||")&&Y.endsWith("||")&&Y.length>4){let G=Y.slice(2,-2).split("||");return`${`| ${G.map((W)=>JC(W.trim())).join(" | ")} |`}
1478
- |${G.map(()=>" --- ").join("|")}|`}if(Y.startsWith("|")&&Y.endsWith("|")&&Y.length>2)return`| ${Y.slice(1,-1).split("|").map((J)=>JC(J.trim())).join(" | ")} |`;return JC($)}function mn0($){return($.startsWith("http://")||$.startsWith("https://"))&&!$.includes(" ")}function JC($){let Z="",X=0;while(X<$.length){let Q=$[X]??"";if(Q==="{"){if($.startsWith("{{",X)){let Y=$.indexOf("}}",X+2);if(Y!==-1){Z+=`\`${$.slice(X+2,Y)}\``,X=Y+2;continue}}if($.startsWith("{color",X)){let Y=$.indexOf("}",X);if(Y!==-1){X=Y+1;continue}}}else if(Q==="["){let Y=$.indexOf("]",X);if(Y!==-1){let G=$.slice(X+1,Y),J=G.indexOf("|");if(J!==-1&&mn0(G.slice(J+1))){Z+=`[${G.slice(0,J)}](${G.slice(J+1)})`,X=Y+1;continue}if(mn0(G)){Z+=G,X=Y+1;continue}}}else if(Q==="!"){let Y=$.indexOf("!",X+1);if(Y!==-1){let G=$.slice(X+1,Y),J=G.indexOf("|"),W=J===-1?G:G.slice(0,J);if(mn0(W)){Z+=`![](${W})`,X=Y+1;continue}}}else if(Q==="*"||Q==="_"){let Y=GO4($,X,Q,Z.slice(-1)||" ");if(Y){Z+=Y.text,X=Y.next;continue}}Z+=Q,X++}return Z}function GO4($,Z,X,Q){if(!QO4.includes(Q))return null;let Y=$[Z+1];if(!Y||Y===" "||Y===X)return null;for(let G=Z+2;G<$.length;G++){if($[G]!==X||$[G-1]===" ")continue;let J=$[G+1];if(J!==void 0&&!YO4.includes(J))continue;let W=JC($.slice(Z+1,G));return{text:X==="*"?`**${W}**`:`*${W}*`,next:G+1}}return null}var QO4=" ([{>",YO4=` )]}.,:;!?{["'`;function KO4($){let Z=$ instanceof Error?$.message:String($);if(Z.includes("AbortError")||Z.includes("fetch")||Z.includes("timeout")||Z.includes("network")||Z.includes("ECONNREFUSED")||Z.includes("ECONNRESET"))return!0;let X=Z.match(/failed \((\d+)\)/);if(X&&X[1]){let Q=parseInt(X[1],10);return Q>=500||Q===429}return!0}function nn0($){let Z=$.trim().replace(/\/+$/,""),X=/^https?:\/\//i.test(Z)?Z:`https://${Z}`,Q;try{Q=new URL(X).hostname.toLowerCase()}catch{throw Error(`Invalid Jira site URL: ${$}`)}if(!HO4.test(Q))throw Error(`Invalid Jira site URL: ${$} \u2014 expected <your-site>.atlassian.net`);return`https://${Q}`}function pn0($){if(!/^\d+$/.test($))throw Error(`Invalid Jira board id: ${$}`);return $}class h3{baseUrl;authHeader;constructor($,Z,X){this.baseUrl=nn0($),this.authHeader=`Basic ${Buffer.from(`${Z}:${X}`).toString("base64")}`}async request($,Z,{idempotent:X=!0}={}){let Q=async()=>{let Y=await fetch(`${this.baseUrl}${$}`,{...Z,headers:{Authorization:this.authHeader,Accept:"application/json",...Z?.body?{"Content-Type":"application/json"}:{}},signal:AbortSignal.timeout(JO4)}),G=await Y.text().catch(()=>"");if(!Y.ok)throw Error(`Jira ${$} failed (${Y.status}): ${G.slice(0,300)}`);return G===""?void 0:JSON.parse(G)};if(!X)return Q();return N9(Q,{maxAttempts:3,minTimeout:100,maxTimeout:5000,multiplier:2,jitter:1,isRetriable:KO4})}async myself(){return this.request("/rest/api/3/myself")}async listBoards(){let $=[],Z=0;while($.length<200){let X=await this.request(`/rest/agile/1.0/board?startAt=${Z}&maxResults=50`);if($.push(...X.values.map((Q)=>({id:Q.id,name:Q.name,type:Q.type,projectKey:Q.location?.projectKey,projectName:Q.location?.projectName}))),X.isLast||X.values.length===0)break;Z+=X.values.length}return $}async getBoardColumns($){let Z=await this.request(`/rest/agile/1.0/board/${pn0($)}/configuration`),X=new Map,Q=[];for(let Y of Z.columnConfig?.columns??[]){let G=[];for(let J of Y.statuses??[]){if(!X.has(J.id)){let W=await this.request(`/rest/api/3/status/${encodeURIComponent(J.id)}`);X.set(J.id,W.name)}G.push(X.get(J.id)??J.id)}Q.push({name:Y.name,statuses:G})}return Q}async listBoardIssues($){let Z=new URLSearchParams({startAt:String($.startAt),maxResults:"100",jql:$.jql,fields:WO4}),X=await this.request(`/rest/agile/1.0/board/${pn0($.boardId)}/issue?${Z}`);return{issues:X.issues??[],total:X.total}}async listBacklogIssueIds($){let Z=new Set,X=0;while(Z.size<5000){let Q=await this.request(`/rest/agile/1.0/board/${pn0($)}/backlog?startAt=${X}&maxResults=100&fields=id`);for(let Y of Q.issues??[])Z.add(Y.id);if(X+=Q.issues?.length??0,X>=Q.total||(Q.issues?.length??0)===0)break}return Z}async listTransitions($){return(await this.request(`/rest/api/3/issue/${encodeURIComponent($)}/transitions`)).transitions??[]}async getStatusName($){return(await this.request(`/rest/api/3/issue/${encodeURIComponent($)}?fields=status`)).fields?.status?.name??null}async transitionIssue($,Z){await this.request(`/rest/api/3/issue/${encodeURIComponent($)}/transitions`,{method:"POST",body:JSON.stringify({transition:{id:Z}})},{idempotent:!1})}async listComments($){let Z=[],X=0;while(Z.length<1000){let Q=await this.request(`/rest/api/3/issue/${encodeURIComponent($)}/comment?startAt=${X}&maxResults=100&orderBy=created`);if(Z.push(...Q.comments),Z.length>=Q.total||Q.comments.length===0)break;X+=Q.comments.length}return Z}async addComment($,Z){return this.request(`/rest/api/3/issue/${encodeURIComponent($)}/comment`,{method:"POST",body:JSON.stringify({body:FO4(Z)})},{idempotent:!1})}}function FO4($){let Z=$.split(`
1478
+ |${G.map(()=>" --- ").join("|")}|`}if(Y.startsWith("|")&&Y.endsWith("|")&&Y.length>2)return`| ${Y.slice(1,-1).split("|").map((J)=>JC(J.trim())).join(" | ")} |`;return JC($)}function mn0($){return($.startsWith("http://")||$.startsWith("https://"))&&!$.includes(" ")}function JC($){let Z="",X=0;while(X<$.length){let Q=$[X]??"";if(Q==="{"){if($.startsWith("{{",X)){let Y=$.indexOf("}}",X+2);if(Y!==-1){Z+=`\`${$.slice(X+2,Y)}\``,X=Y+2;continue}}if($.startsWith("{color",X)){let Y=$.indexOf("}",X);if(Y!==-1){X=Y+1;continue}}}else if(Q==="["){let Y=$.indexOf("]",X);if(Y!==-1){let G=$.slice(X+1,Y),J=G.indexOf("|");if(J!==-1&&mn0(G.slice(J+1))){Z+=`[${G.slice(0,J)}](${G.slice(J+1)})`,X=Y+1;continue}if(mn0(G)){Z+=G,X=Y+1;continue}}}else if(Q==="!"){let Y=$.indexOf("!",X+1);if(Y!==-1){let G=$.slice(X+1,Y),J=G.indexOf("|"),W=J===-1?G:G.slice(0,J);if(mn0(W)){Z+=`![](${W})`,X=Y+1;continue}}}else if(Q==="*"||Q==="_"){let Y=GO4($,X,Q,Z.slice(-1)||" ");if(Y){Z+=Y.text,X=Y.next;continue}}Z+=Q,X++}return Z}function GO4($,Z,X,Q){if(!QO4.includes(Q))return null;let Y=$[Z+1];if(!Y||Y===" "||Y===X)return null;for(let G=Z+2;G<$.length;G++){if($[G]!==X||$[G-1]===" ")continue;let J=$[G+1];if(J!==void 0&&!YO4.includes(J))continue;let W=JC($.slice(Z+1,G));return{text:X==="*"?`**${W}**`:`*${W}*`,next:G+1}}return null}var QO4=" ([{>",YO4=` )]}.,:;!?{["'`;function KO4($){let Z=$ instanceof Error?$.message:String($),X=Z.match(/failed \((\d+)\)/);if(X&&X[1]){let Q=parseInt(X[1],10);return Q>=500||Q===429}if(Z.includes("AbortError")||Z.includes("fetch")||Z.includes("timeout")||Z.includes("network")||Z.includes("ECONNREFUSED")||Z.includes("ECONNRESET"))return!0;return!0}function nn0($){let Z=$.trim().replace(/\/+$/,""),X=/^https?:\/\//i.test(Z)?Z:`https://${Z}`,Q;try{Q=new URL(X).hostname.toLowerCase()}catch{throw Error(`Invalid Jira site URL: ${$}`)}if(!HO4.test(Q))throw Error(`Invalid Jira site URL: ${$} \u2014 expected <your-site>.atlassian.net`);return`https://${Q}`}function pn0($){if(!/^\d+$/.test($))throw Error(`Invalid Jira board id: ${$}`);return $}class h3{baseUrl;authHeader;constructor($,Z,X){this.baseUrl=nn0($),this.authHeader=`Basic ${Buffer.from(`${Z}:${X}`).toString("base64")}`}async request($,Z,{idempotent:X=!0}={}){let Q=async()=>{let Y=await fetch(`${this.baseUrl}${$}`,{...Z,headers:{Authorization:this.authHeader,Accept:"application/json",...Z?.body?{"Content-Type":"application/json"}:{}},signal:AbortSignal.timeout(JO4)}),G=await Y.text().catch(()=>"");if(!Y.ok)throw Error(`Jira ${$} failed (${Y.status}): ${G.slice(0,300)}`);return G===""?void 0:JSON.parse(G)};if(!X)return Q();return N9(Q,{maxAttempts:3,minTimeout:100,maxTimeout:5000,multiplier:2,jitter:1,isRetriable:KO4})}async myself(){return this.request("/rest/api/3/myself")}async listBoards(){let $=[],Z=0;while($.length<200){let X=await this.request(`/rest/agile/1.0/board?startAt=${Z}&maxResults=50`);if($.push(...X.values.map((Q)=>({id:Q.id,name:Q.name,type:Q.type,projectKey:Q.location?.projectKey,projectName:Q.location?.projectName}))),X.isLast||X.values.length===0)break;Z+=X.values.length}return $}async getBoardColumns($){let Z=await this.request(`/rest/agile/1.0/board/${pn0($)}/configuration`),X=new Map,Q=[];for(let Y of Z.columnConfig?.columns??[]){let G=[];for(let J of Y.statuses??[]){if(!X.has(J.id)){let W=await this.request(`/rest/api/3/status/${encodeURIComponent(J.id)}`);X.set(J.id,W.name)}G.push(X.get(J.id)??J.id)}Q.push({name:Y.name,statuses:G})}return Q}async listBoardIssues($){let Z=new URLSearchParams({startAt:String($.startAt),maxResults:"100",jql:$.jql,fields:WO4}),X=await this.request(`/rest/agile/1.0/board/${pn0($.boardId)}/issue?${Z}`);return{issues:X.issues??[],total:X.total}}async listBacklogIssueIds($){let Z=new Set,X=0;while(Z.size<5000){let Q=await this.request(`/rest/agile/1.0/board/${pn0($)}/backlog?startAt=${X}&maxResults=100&fields=id`);for(let Y of Q.issues??[])Z.add(Y.id);if(X+=Q.issues?.length??0,X>=Q.total||(Q.issues?.length??0)===0)break}return Z}async listTransitions($){return(await this.request(`/rest/api/3/issue/${encodeURIComponent($)}/transitions`)).transitions??[]}async getStatusName($){return(await this.request(`/rest/api/3/issue/${encodeURIComponent($)}?fields=status`)).fields?.status?.name??null}async transitionIssue($,Z){await this.request(`/rest/api/3/issue/${encodeURIComponent($)}/transitions`,{method:"POST",body:JSON.stringify({transition:{id:Z}})},{idempotent:!1})}async listComments($){let Z=[],X=0;while(Z.length<1000){let Q=await this.request(`/rest/api/3/issue/${encodeURIComponent($)}/comment?startAt=${X}&maxResults=100&orderBy=created`);if(Z.push(...Q.comments),Z.length>=Q.total||Q.comments.length===0)break;X+=Q.comments.length}return Z}async addComment($,Z){return this.request(`/rest/api/3/issue/${encodeURIComponent($)}/comment`,{method:"POST",body:JSON.stringify({body:FO4(Z)})},{idempotent:!1})}}function FO4($){let Z=$.split(`
1479
1479
  `).filter((X)=>X.trim()!=="");return{type:"doc",version:1,content:Z.length>0?Z.map((X)=>({type:"paragraph",content:[{type:"text",text:X}]})):[{type:"paragraph",content:[]}]}}function hB0($){if(typeof $==="string")return nW$($);if(!$||typeof $!=="object")return"";let Z=$;if(Z.type==="text")return Z.text??"";if(Z.type==="hardBreak")return`
1480
1480
  `;let X=(Array.isArray(Z.content)?Z.content:[]).map(hB0);if(Z.type==="doc")return X.filter((Q)=>Q.trim()!=="").join(`
1481
1481
 
@@ -2803,7 +2803,7 @@ Respond with the structured verdict and a short reason.`,Dy$;var Ey$=w(()=>{_4()
2803
2803
  ${G.join(`
2804
2804
  `)}`:Y}function sY6($){let Z=new Set;for(let X of $)for(let Q of X.split(`
2805
2805
  `)){let Y=Q.trim();if(/^Co-authored-by:\s/i.test(Y))Z.add(Y)}return[...Z]}var iY6=200,pY6=12,nY6=300,F91=3;var N91=w(()=>{q_();fP0()});function $G6($){if(!$||$.includes(".."))return!1;return eY6.test($)}function Qg$($){let Z=typeof $.__resolveType==="string"?$.__resolveType:null;if(!Z||!$G6(Z))return null;let{__resolveType:X,...Q}=$;return{resolveType:Z,payload:Q}}function Yg$($,Z){return`${$.replace(/\/+$/,"")}/deco/invoke/${Z}`}var eY6;var Gg$=w(()=>{eY6=/^[\w./@-]+$/});function U91($){let Z;try{Z=new URL($)}catch{return null}if(!Z.hostname.endsWith(".localhost"))return null;let X=Z.host;return Z.hostname="127.0.0.1",{url:Z.toString(),hostHeader:X}}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 Jg$($,Z,X,Q){if(!Q.connectionId)throw new k_("Push requires a connected GitHub account. Connect mcp-github for this project and restart the sandbox.");let Y=$.organization?.id;if(!Y)throw new k_($9);await nO({ctx:$,connectionId:Q.connectionId,organizationId:Y,forceRefresh:!0,onLegacyMintError:(F)=>{let N=F instanceof Error?F.message:$9;throw new k_(N)}});let{cloneUrl:G,gitUserName:J,gitUserEmail:W}=await tO(Q.connectionId,Q.owner,Q.name,$.db,$.vault).catch((F)=>{let{code:N,message:U}=t8$(F instanceof Error?F.message:String(F));throw N?new k_(U):F}),K=ch($),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 UB(H,ZG6).catch(()=>H.statusText);throw Error(`Failed to refresh sandbox git credentials (${H.status}): ${F}`)}}var ZG6=10485760,k_;var O91=w(()=>{uG();TP0();xp();bd0();hx();k_=class k_ extends Error{constructor($){super($);this.name="GitPushAuthError"}}});function QG6($){let Z=$.startsWith("thread:")?$.slice(7):$;if(!Z||Z.length>255||Z.includes("..")||Z.startsWith("/")||Z.endsWith("/")||Z.endsWith(".lock")||!XG6.test(Z))throw Error(`Invalid branch name: ${$}`)}function V_($){return AbortSignal.any([$.req.raw.signal,AbortSignal.timeout(GG6)])}function JG6($,Z,X){let Q=B5($)[Z]?.[X];return!!Q&&Object.keys(PY(Q)).length>0}function S_($){let{runner:Z}=$.get("vmClaim");if(!Z)return $.json({error:"No sandbox runner configured"},503);return Z}async function ph($){let{virtualMcpMetadata:Z,connectionIds:X}=$.get("vmClaim"),Q=$.var.studioContext,Y=Za(Z,X);if(!Y)throw new Q6(404,"AUTH","repo","Project has no GitHub repository");let G=t(Q);return RP0(Q,G.id,Y)}function B91($,Z){if(Z instanceof Q6){let Q=Z.status===404?404:Z.status===409||Z.status===422?409:502;return $.json({error:Z.message},Q,m5)}let X=Z instanceof Error?Z.message:String(Z);return $.json({error:X},502,m5)}async function Hg$($){try{let Z=await ph($),X=await bP0(Z,$.get("vmClaim").branch);return $.json(X,200,m5)}catch(Z){return B91($,Z)}}function Xa($,Z){let Q=(gP0.get($)??Promise.resolve()).catch(()=>{}).then(Z),Y=Q.catch(()=>{});return gP0.set($,Y),Y.finally(()=>{if(gP0.get($)===Y)gP0.delete($)}),Q}async function dZ($,Z,X){if($.get("vmClaim").fastPreview)return $.json({error:"sandbox not found: Fast Preview projects are sandbox-less"},404,m5);let Q=S_($);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 O=await Q.proxyDaemonRequest(Y,Z,N);if(X?.map404to410&&O.status===404){try{await O.body?.cancel()}catch{}if(await Q.adoptLiveClaim?.({userId:G,projectRef:J},Y))O=await Q.proxyDaemonRequest(Y,Z,N);if(O.status===404){try{await O.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",...m5}})}}let B=await O.text(),D=X?.redactRepoDirUnlessDesktop&&Q.kind!=="user-desktop"?KG6(B):B,L=O.headers.get("content-type")??"application/json";return new Response(D,{status:O.status,headers:{"content-type":L,...m5}})};try{if(F){let O=U();return O.catch(()=>{}),await Promise.race([O,new Promise((D,L)=>{if(F.aborted)return L(F.reason);F.addEventListener("abort",()=>L(F.reason),{once:!0})})])}return await U()}catch(O){let B=O instanceof Error?O.message:String(O);return $.json({error:`Daemon unreachable: ${B}`},502)}}function KG6($){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 hP0($,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 HG6($){return Fg$.includes($)}var XG6,Wg$=524288,YG6=65536,GG6=1e4,Kg$=2000,WG6,gP0,m5,Fg$,Ng$=()=>{let $=new F1;$.use("/:virtualMcpId/:branch/*",WG6),$.post("/:virtualMcpId/:branch/write",(X)=>dZ(X,"/_sandbox/write",{forwardJsonBody:!0,signal:V_(X)})),$.post("/:virtualMcpId/:branch/unlink",(X)=>dZ(X,"/_sandbox/unlink",{forwardJsonBody:!0,signal:V_(X)})),$.post("/:virtualMcpId/:branch/mkdir",(X)=>dZ(X,"/_sandbox/mkdir",{forwardJsonBody:!0,signal:V_(X)})),$.post("/:virtualMcpId/:branch/rename",(X)=>dZ(X,"/_sandbox/rename",{forwardJsonBody:!0,signal:V_(X)})),$.post("/:virtualMcpId/:branch/read",(X)=>dZ(X,"/_sandbox/read",{forwardJsonBody:!0,signal:V_(X)})),$.post("/:virtualMcpId/:branch/glob",(X)=>dZ(X,"/_sandbox/glob",{forwardJsonBody:!0,signal:V_(X)})),$.post("/:virtualMcpId/:branch/grep",(X)=>dZ(X,"/_sandbox/grep",{forwardJsonBody:!0,signal:V_(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 dZ(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 dZ(X,`/_sandbox/exec/${encodeURIComponent(Q)}/kill`)}),$.get("/:virtualMcpId/:branch/config",(X)=>dZ(X,"/_sandbox/config",{method:"GET",map404to410:!0,redactRepoDirUnlessDesktop:!0})),$.put("/:virtualMcpId/:branch/config",(X)=>dZ(X,"/_sandbox/config",{method:"PUT",forwardJsonBody:!0,map404to410:!0})),$.post("/:virtualMcpId/:branch/setup/:step",async(X)=>{let Q=X.req.param("step");if(!Q||!HG6(Q))return X.json({error:`step must be one of: ${Fg$.join(", ")}`},400);if(Q==="start"){let Y=X.get("vmClaim");if(Y.runner){let G=t(X.var.studioContext),J=Qy(Y.virtualMcpMetadata);try{await SO0({ctx:X.var.studioContext,runner:Y.runner,handle:Y.claimName,orgId:G.id,userId:Y.callerUserId,entries:J})}catch(W){let K=W instanceof Error?W.message:String(W);return X.json({error:`Failed to push env to daemon: ${K}`},502)}}}return dZ(X,`/_sandbox/setup/${Q}`,{signal:X.req.raw.signal,map404to410:!0})}),$.get("/:virtualMcpId/:branch/events",(X)=>{let Q=X.get("vmClaim");if(!Q.runner)return TN(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 Fy$(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").fastPreview)return Hg$(X);return Z(X)});let Z=(X)=>dZ(X,"/_sandbox/git/status",{method:"GET",map404to410:!0,signal:AbortSignal.any([X.req.raw.signal,AbortSignal.timeout(Kg$)])});return $.post("/:virtualMcpId/:branch/git/status",(X)=>{if(X.get("vmClaim").fastPreview)return Hg$(X);return dZ(X,"/_sandbox/git/status",{map404to410:!0,signal:AbortSignal.any([X.req.raw.signal,AbortSignal.timeout(Kg$)])})}),$.post("/:virtualMcpId/:branch/git/diff",async(X)=>{let Q=X.get("vmClaim");if(Q.fastPreview)try{let Y=await X.req.json().catch(()=>({})),G=await ph(X),J=await xP0(G,Q.branch,Y.base);return X.json(J,200,m5)}catch(Y){return B91(X,Y)}return dZ(X,"/_sandbox/git/diff",{forwardJsonBody:!0,map404to410:!0})}),$.post("/:virtualMcpId/:branch/git/publish",async(X)=>{if(X.get("vmClaim").fastPreview)return X.json({ok:!0},200,m5);let Q=S_(X);if(Q instanceof Response)return Q;let{claimName:Y,virtualMcpMetadata:G,connectionIds:J}=X.get("vmClaim"),W=X.var.studioContext;return Xa(Y,async()=>{try{await n51(W,Q,Y);let K=Za(G,J);if(K)await Jg$(W,Q,Y,K)}catch(K){if(K instanceof k_)return X.json({error:K.message},403,m5);let H=K instanceof Error?K.message:String(K);return X.json({error:H},502,m5)}return dZ(X,"/_sandbox/git/publish",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/discard",async(X)=>{let Q=X.get("vmClaim");if(Q.fastPreview)return Xa(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,m5);try{let J=await ph(X);return await Xg$(J,Q.branch,G),X.json({ok:!0},200,m5)}catch(J){let W=J instanceof Q6&&J.status===409?409:502,K=J instanceof Error?J.message:String(J);return X.json({error:K},W,m5)}});return Xa(Q.claimName,()=>dZ(X,"/_sandbox/git/discard",{forwardJsonBody:!0,map404to410:!0}))}),$.post("/:virtualMcpId/:branch/git/rebase",async(X)=>{let Q=X.get("vmClaim");if(Q.fastPreview)return Xa(Q.claimName,async()=>{try{let W=await X.req.json().catch(()=>({})),K=await ph(X),H=W.base??await K.getDefaultBranch();return await yP0(K,Q.branch,H),X.json({ok:!0},200,m5)}catch(W){return B91(X,W)}});let Y=S_(X);if(Y instanceof Response)return Y;let{claimName:G}=X.get("vmClaim"),J=X.var.studioContext;return Xa(G,async()=>{try{await n51(J,Y,G)}catch(W){let K=W instanceof Error?W.message:String(W);return X.json({error:K},502,m5)}return dZ(X,"/_sandbox/git/rebase",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/suggest-commit",M9({maxSize:Wg$,onError:(X)=>X.json({error:"Payload too large"},413,m5)}),async(X)=>{let Q=X.get("vmClaim"),Y=null;if(!Q.fastPreview){let H=S_(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,[O,B]=r51(F)&&U?[F,N]:Y?await Promise.all([hP0(Y,G,"/_sandbox/git/status","GET",{userId:J,projectRef:W}),hP0(Y,G,"/_sandbox/git/diff","GET",{userId:J,projectRef:W})]):await(async()=>{let L=await ph(X);return Promise.all([bP0(L,Q.branch),xP0(L,Q.branch)])})(),D=await wy$(K,O,B);return X.json(D,200,m5)}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,m5);return X.json({error:F},502,m5)}}),$.post("/:virtualMcpId/:branch/git/judge-review",M9({maxSize:Wg$,onError:(X)=>X.json({error:"Payload too large"},413,m5)}),async(X)=>{let Q=X.get("vmClaim"),Y=null;if(!Q.fastPreview){let H=S_(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,[O,B]=r51(F)&&U?[F,N]:Y?await Promise.all([hP0(Y,G,"/_sandbox/git/status","GET",{userId:J,projectRef:W}),hP0(Y,G,"/_sandbox/git/diff","GET",{userId:J,projectRef:W})]):await(async()=>{let L=await ph(X);return Promise.all([bP0(L,Q.branch),xP0(L,Q.branch)])})(),D=await Ly$(K,O,B,typeof H.language==="string"?H.language:void 0);return X.json(D,200,m5)}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,m5);return X.json({error:F},502,m5)}}),$.get("/:virtualMcpId/:branch/preview-fetch",async(X)=>{let Q=S_(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(/\/+$/,""),K=U91(`${W}${G}`),H;try{H=await fetch(K?.url??`${W}${G}`,{...K?{headers:{host:K.hostHeader}}:{}})}catch{return X.json({error:"Preview unreachable"},502)}let F;try{F=await H.text()}catch{return X.json({error:"Preview unreachable"},502)}return new Response(F,{status:H.status,headers:{"content-type":H.headers.get("content-type")??"application/json"}})}),$.post("/:virtualMcpId/:branch/preview-invoke",M9({maxSize:YG6,onError:(X)=>X.json({error:"Payload too large"},413)}),async(X)=>{let Q=S_(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=Qg$(J);if(!W)return X.json({error:"Invalid or missing __resolveType"},400);let K=Yg$(G,W.resolveType),H=U91(K),F;try{F=await fetch(H?.url??K,{method:"POST",headers:{"content-type":"application/json",...H?{host:H.hostHeader}:{}},body:JSON.stringify(W.payload),signal:AbortSignal.timeout(30000)})}catch{return X.json({error:"Preview unreachable"},502)}let N;try{N=await F.text()}catch{return X.json({error:"Preview unreachable"},502)}return new Response(N,{status:F.status,headers:{"content-type":F.headers.get("content-type")??"application/json"}})}),$};var Ug$=w(()=>{w8();BN();uh();p51();TF();Ky$();S3();dX();U8();SB0();KB();Hy$();Ny$();Qp0();fp();e51();Ey$();X91();q_();N91();Gg$();O91();XG6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;WG6=AP0(async($,Z)=>{let X=$.var.studioContext;try{r(X)}catch{return $.json({error:"Unauthorized"},401)}let Q=G1(X);if(!Q)return $.json({error:"Unauthorized"},401);let Y;try{Y=t(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{QG6(J)}catch(O){let B=O instanceof Error?O.message:String(O);return $.json({error:B},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=ai({orgId:Y.id,virtualMcpId:G,branch:J}),H=await vF(X,J,Q),F=Wy$({userId:H,projectRef:K}),N=W.metadata??null;if(FW$(N).fastPreviewCapability&&!JG6(N,H,J))return $.set("vmClaim",{claimName:F,callerUserId:Q,runner:null,virtualMcpId:G,branch:J,userId:H,projectRef:K,virtualMcpMetadata:N,connectionIds:W.connections?.map((O)=>O.connection_id)??[],fastPreview:!0}),Z();let U;try{U=(await oX(X,{userId:H,branch:J,virtualMcpMetadata:N})).provider}catch{U=null}if(!U)return $.json({error:"No sandbox runner found"},404);return $.set("vmClaim",{claimName:F,callerUserId:Q,runner:U,virtualMcpId:G,branch:J,userId:H,projectRef:K,virtualMcpMetadata:N,connectionIds:W.connections?.map((O)=>O.connection_id)??[]}),Z()});gP0=new Map;m5={"Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache"};Fg$=["clone","install","start"]});function Og$($,Z,X){let Q=w91.get($);if(!Q)Q={pending:null,running:!1},w91.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)NG6($,Q);return G}async function NG6($,Z){Z.running=!0;try{while(Z.pending){let X=Z.pending;Z.pending=null;try{let Q=await UG6(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)w91.delete($)}}async function UG6($){let{client:Z,branch:X,packagePath:Q}=$.deps;for(let Y=0;;Y++){let G=await $a(Z,X),J=await Z.getCommitTreeSha(G),W=await Z.getTreeRecursive(J),K=K91(W,Q),H=[],F=new Map(K.map((B)=>[B.path,{stem:B.stem,sha:B.sha}]));for(let[B,D]of $.set){let L=H91(K,B),E=`${JSON.stringify(D,null,2)}
2806
- `,j=await Z.createBlob(E);await $g$(Z.owner,Z.repo,j,E);let z=L[0]??`${vP0(Q)}/${Q91(B)}.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 L.slice(1))H.push({path:P,mode:"100644",type:"blob",sha:null}),F.delete(P)}for(let B of $.del)for(let D of H91(K,B))H.push({path:D,mode:"100644",type:"blob",sha:null}),F.delete(D);if(H.length===0)return G;let N=Q?`${Q}/.deco/blocks.gen.json`:".deco/blocks.gen.json";if(W.some((B)=>B.type==="blob"&&B.path===N)){let B=await Promise.all([...F.values()].map(async(j)=>({stem:j.stem,content:j.content??await Z.getBlobText(j.sha)}))),{decofile:D,skipped:L}=rr(B);if(L.length>0)console.warn("decofile gen: dropped blocks that were not valid JSON",{repo:`${Z.owner}/${Z.repo}`,branch:X,packagePath:Q,blocks:L.map((j)=>j.key)});let E=await Z.createBlob(D);H.push({path:N,mode:"100644",type:"blob",sha:E})}let U=await Z.createTree(J,H),O=await Z.createCommit({message:OG6($),treeSha:U,parentShas:[G]});try{return await Z.updateRef(X,O),O}catch(B){if(!(B instanceof Q6&&B.status===422)||Y>=FG6-1)throw B;await q$(pZ(2000,200,Y,2,0.5))}}}function OG6($){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 qd0(Q,$.deps.coAuthor)}var FG6=3,w91;var Bg$=w(()=>{AO0();qP0();u4();q_();fP0();w91=new Map});import{createHmac as wg$,randomBytes as BG6,timingSafeEqual as wG6}from"crypto";function Dg$(){if(uP0)return uP0;let $;try{let Z=b0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return uP0=$?Buffer.from($):BG6(32),uP0}function D91($){let Z=$.nowMs??Date.now(),X={o:$.organizationId,m:$.virtualMcpId,b:$.branch,e:Math.floor((Z+DG6)/1000)},Q=Buffer.from(JSON.stringify(X)).toString("base64url"),Y=wg$("sha256",Dg$()).update(Q).digest("base64url");return`${Q}.${Y}`}function Lg$($,Z){let X=$.indexOf(".");if(X<0)return!1;let Q=$.slice(0,X),Y=Buffer.from($.slice(X+1)),G=Buffer.from(wg$("sha256",Dg$()).update(Q).digest("base64url"));if(Y.length!==G.length||!wG6(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 DG6=21600000,uP0=null;var Eg$=w(()=>{T$()});import{z as nh}from"zod";function EG6($){return $.length>0&&$.length<=255&&!$.includes("..")&&!$.endsWith("/")&&!$.endsWith(".lock")&&LG6.test($)}function zg$($){return $.req.header("x-forwarded-host")??new URL($.req.url).host}async function cP0($){let Z=$.get("decofileScope");return RP0($.var.studioContext,Z.organizationId,Z.githubRepo)}function lP0($,Z){if(Z instanceof Q6){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 Pg$(){let $=new F1;return $.use("/:virtualMcpId/:branch",jg$),$.use("/:virtualMcpId/:branch/*",jg$),$.get("/:virtualMcpId/:branch",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await cP0(Z),Y=await Zg$(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=D91({organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,branch:X.branch});return Z.body(`{"version":${JSON.stringify(Y.sha)},"token":${JSON.stringify(J)},"apiHost":${JSON.stringify(zg$(Z))},"decofile":${Y.decofile}}`,200,{...G,"content-type":"application/json"})}catch(Q){return lP0(Z,Q)}}),$.patch("/:virtualMcpId/:branch",async(Z)=>{let X=Z.get("decofileScope"),Q=Z.var.studioContext,Y=jG6.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{IP0(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);try{let J=await cP0(Z),W=await Og$(`${X.organizationId}/${X.virtualMcpId}/${X.branch}`,{client:J,branch:X.branch,packagePath:X.packagePath,coAuthor:ch(Q)},G),K=D91({organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,branch:X.branch});return Z.json({version:W,token:K,apiHost:zg$(Z)})}catch(J){return lP0(Z,J)}}),$.post("/:virtualMcpId/:branch/publish",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await cP0(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 Q6&&W.status===409))throw W;await yP0(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 Q6&&J.status===409)return Z.json({error:"merge-conflict"},409);if(J instanceof Q6&&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 lP0(Z,Q)}}),$.get("/:virtualMcpId/:branch/status",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await cP0(Z),Y=await Q.getDefaultBranch();if(Y===X.branch)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0});try{let{aheadBy:G,behindBy:J}=await Q.compare(Y,X.branch);return Z.json({baseBranch:Y,aheadBy:G,behindBy:J})}catch(G){if(G instanceof Q6&&G.status===404)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0});throw G}}catch(Q){return lP0(Z,Q)}}),$}var LG6,jG6,jg$;var Ag$=w(()=>{qP0();w8();p51();TP0();O91();X91();Bg$();Eg$();N91();q_();fP0();LG6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;jG6=nh.object({set:nh.record(nh.string(),nh.unknown()).optional(),delete:nh.array(nh.string()).optional()}).refine(($)=>Object.keys($.set??{}).length>0||($.delete?.length??0)>0,{message:"Patch must set or delete at least one block"}),jg$=AP0(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(!EG6(G))return $.json({error:`Invalid branch name: ${G}`},400);let J=X.auth?.user?.id??null;if(!J){let O=$.req.query("token");if(!($.req.method==="GET"&&!$.req.path.match(/\/(publish|status)$/)))return $.json({error:"Unauthorized"},401);if(!O||!Lg$(O,{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(!VB0(K)||K?.fastPreview!==!0)return $.json({error:"Fast Preview is not enabled for this project"},404);let F=W.connections?.map((O)=>O.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 Tg$=($)=>{let Z=new F1;if(Z.use("*",D_),Z.route("/",hz0()),Z.route("/",iv$()),Z.route("/",tx$()),Z.route("/",ix$()),Z.route("/",jP0()),Z.route("/tools",Zy$()),Z.route("/",sx$()),Z.route("/",Mx$({kvStorage:$.kvStorage})),Z.route("/",Ix$()),Z.route("/fs",gx$({getConnection:$.getNatsConnection})),Z.route("/sandbox",Ng$()),Z.route("/decofile",Pg$()),Z.route("/",lx$()),Z.route("/deco-sites",cz0()),Z.route("/sso",vz0()),Z.route("/",zP0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",yv$()),$.mountDevAssets)Z.route("/dev-assets",lz0({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("/",jC$()),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",ux$()),Z.route("/mcp",nw0()),Z.route("/mcp/self",EP0()),Z.route("/mcp",rw0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var Rg$=w(()=>{w8();B61();gv$();E61();dz0();Ar();U61();qx$();kx$();hx$();_n();Y61();aw0();h51();cx$();dx$();px$();ox$();ex$();c51();Xy$();l51();tw0();Ug$();Ag$()});function zG6($){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 PG6=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},Ig$=()=>{let $=new F1;return $.use("*",PG6),$.get("/",async(Z)=>{let X=b0(),Q=X.decoSupabaseUrl,Y=X.decoSupabaseServiceKey;if(!Q||!Y)return Z.json({apps:[]});try{let G=await lZ(Q,Y,"apps?select=name,title,description,logo,category,vendors(alias,url)");return Z.json({apps:zG6(G)})}catch(G){return console.error("[deco-apps] GET error:",G),Z.json({error:"Failed to fetch apps"},502)}}),$};var qg$=w(()=>{w8();T$();cj0()});import{z as M1}from"zod";function QH($,Z="invalid_request_error",X=null,Q=null){return{error:{message:$,type:Z,param:X,code:Q}}}function CG6($){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 _G6($,Z,X){try{return JSON.parse($)}catch{throw new Vg$(`Invalid JSON in tool call arguments for function '${X}' (tool_call_id: ${Z}): ${$}`)}}function vG6($){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:_G6(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 fG6($){let Z=$.map((X)=>{let Q=X.function.parameters?xY(X.function.parameters):xY({type:"object",properties:{}});return[X.function.name,b$({description:X.function.description,inputSchema:Q})]});return Object.fromEntries(Z)}function bG6($){if(!$)return;return{openai:{response_format:$}}}function xG6(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function Mg$($,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 kg$($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var AG6=256,TG6,RG6,IG6,qG6,MG6,kG6,VG6,SG6,Vg$,Sg$,Cg$;var _g$=w(()=>{_4();w8();uh();XN();TG6=M1.object({type:M1.literal("function"),function:M1.object({name:M1.string(),description:M1.string().optional(),parameters:M1.record(M1.string(),M1.unknown()).optional()})}),RG6=M1.object({id:M1.string(),type:M1.literal("function"),function:M1.object({name:M1.string(),arguments:M1.string()})}),IG6=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(RG6).optional()}),M1.object({role:M1.literal("tool"),content:M1.string(),tool_call_id:M1.string()})]),qG6=M1.object({type:M1.literal("text")}),MG6=M1.object({type:M1.literal("json_object")}),kG6=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()})}),VG6=M1.union([qG6,MG6,kG6]),SG6=M1.object({model:M1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:M1.array(IG6),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(TG6).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:VG6.optional(),user:M1.string().optional()});Vg$=class Vg$ extends Error{constructor($){super($);this.name="MessageConversionError"}};Sg$=new F1;Sg$.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),X=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(QH("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(QH("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(QH("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Q=await $.req.json(),Y=SG6.safeParse(Q);if(!Y.success){let L=Y.error.issues[0]??{message:"Invalid request",path:[]};return $.json(QH(`Invalid request: ${L.message}`,"invalid_request_error",L.path.length>0?L.path.join("."):null),400)}let G=Y.data,J=CG6(G.model);if(!J)return $.json(QH("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)=>VD(j.providerId));if(!E)return $.json(QH("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(QH(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(K),N=vG6(G.messages),U=G.tools?fG6(G.tools):void 0,O=bG6(G.response_format),B=xG6(),D=Math.floor(Date.now()/1000);if(G.stream)return TN($,async(L)=>{let E=Mg$(F,N,U,G,O,$.req.raw.signal);try{let j=iO(E),z=!1,A=0,P="",M=async()=>{if(P.length===0)return;let q=P;P="",await L.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{content:q},finish_reason:null}]})})};for await(let q of j.fullStream){if(!z&&(q.type==="text-delta"||q.type==="tool-call"))await L.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),z=!0;if(q.type==="text-delta"){if(P+=q.text,P.length>=AG6)await M()}else if(q.type==="tool-call"){await M();let k=A++;await L.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{tool_calls:[{index:k,id:q.toolCallId,type:"function",function:{name:q.toolName,arguments:JSON.stringify(q.input)}}]},finish_reason:null}]})})}else if(q.type==="finish")await M(),await L.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{},finish_reason:kg$(q.finishReason)}],usage:q.totalUsage?{prompt_tokens:q.totalUsage.inputTokens??0,completion_tokens:q.totalUsage.outputTokens??0,total_tokens:q.totalUsage.totalTokens??0}:void 0})})}await M(),await L.writeSSE({data:"[DONE]"})}catch(j){let z=j;console.error("[openai-compat:stream] Error:",z.message),await L.writeSSE({data:JSON.stringify({error:{message:z.message,type:"server_error"}})})}});else{let L=Mg$(F,N,U,G,O,$.req.raw.signal),E=await dO(L),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:B,object:"chat.completion",created:D,model:G.model,choices:[{index:0,message:j,finish_reason:kg$(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(QH("Request aborted","invalid_request_error"),400);if(Y.name==="MessageConversionError")return $.json(QH(Y.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",Y.message,Y.stack),$.json(QH(Y.message,"server_error"),500)}});Cg$=Sg$});function vg$(){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=G1(X);if(!Q)return Z.json({error:"Authentication required"},401);let G=(Z.req.query("site")??"").trim().toLowerCase();if(!oK(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||J7(H))continue;let F=await X.storage.virtualMcps.list(H.id);for(let N of F){if(N.title.toLowerCase()!==G)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 fg$=w(()=>{w8();W_()});var xg$;var bg$=w(()=>{xg$={name:"decocms",version:"4.242.7",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","@nats-io/jwt":"0.0.10-5","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@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 hG6(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??gG6}}var yg$,gG6="https://ph.studio.decocms.com",gg$;var hg$=w(()=>{w8();Jh0();QC();v9();T$();e41();bg$();yg$=new F1;yg$.get("/",($)=>{let Z={version:xg$.version,theme:Ud1(),...jL().logo&&{logo:jL().logo},...TK()&&{internalUrl:lV1()},...b0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!b0().firecrawlApiKey,auth:Xv$(),posthog:hG6(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:!TK()&&b0().sandboxProviderKind==="agent-sandbox"}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});gg$=yg$});function th($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function L91($){return(th($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((X)=>X.charAt(0).toUpperCase()+X.slice(1)).join(" ")}function cg$($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(th($))}&sz=${Z}`}function ug$($,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 lg$($){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()?ug$(`${Y.trim().replace(/\s+/g," ")} \u2014 ${J}`,200):ug$(`How does ${X} really perform? ${J}`,200);return{title:G,description:W}}import{z as l0}from"zod";var C_,uG6,cG6,lG6,dG6,dg$;var mg$=w(()=>{C_=l0.enum(["good","bad","neutral"]),uG6=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:C_.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 $})),cG6=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(uG6)),lG6={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()},dG6=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:C_.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:C_.optional()}),l0.object({template:l0.literal("stats"),stats:l0.array(l0.object({value:l0.coerce.string(),label:l0.coerce.string(),tone:C_.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:C_.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(cG6).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:C_.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:C_.optional()})).min(1)})]),dg$=l0.object({...lG6,template:dG6})});function dP0($){let Z=[],X=[...$.sections].sort((Y,G)=>Y.position-G.position).map((Y)=>{let G=dg$.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 E91=w(()=>{mg$()});import{join as ig$}from"path";async function iG6($){try{let Z=await fetch(`${oW({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(mG6)});if(!Z.ok)return null;let X=await Z.json(),{deck:Q}=dP0(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()||L91($),score:Q.meta.scores?.cover??J?.score?.value,verdict:Y?.annotation?.trim()||Y?.headline?.trim()||void 0}}catch{return null}}function YG($){return $.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;")}function pG6($,Z){let X=th($),Q=Z?.brand?.trim()||L91(X),Y=cg$(X,128),J=`${(b0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(X)}`,{title:W,description:K}=lg$({brand:Q,domain:X,score:Z?.score,verdict:Z?.verdict}),H=`${J}/og.png`,F=`${Q} commerce report by decocms`;return[`<title>${YG(W)}</title>`,`<meta name="description" content="${YG(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="${YG(W)}" />`,`<meta property="og:description" content="${YG(K)}" />`,`<meta property="og:url" content="${YG(J)}" />`,`<meta property="og:image" content="${YG(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${YG(F)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${YG(W)}" />`,`<meta name="twitter:description" content="${YG(K)}" />`,`<meta name="twitter:image" content="${YG(H)}" />`,`<meta name="twitter:image:alt" content="${YG(F)}" />`,`<link rel="canonical" href="${YG(J)}" />`,`<link rel="icon" href="${YG(Y)}" sizes="any" />`].join(`
2806
+ `,j=await Z.createBlob(E);await $g$(Z.owner,Z.repo,j,E);let z=L[0]??`${vP0(Q)}/${Q91(B)}.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 L.slice(1))H.push({path:P,mode:"100644",type:"blob",sha:null}),F.delete(P)}for(let B of $.del)for(let D of H91(K,B))H.push({path:D,mode:"100644",type:"blob",sha:null}),F.delete(D);if(H.length===0)return G;let N=Q?`${Q}/.deco/blocks.gen.json`:".deco/blocks.gen.json";if(W.some((B)=>B.type==="blob"&&B.path===N)){let B=await Promise.all([...F.values()].map(async(j)=>({stem:j.stem,content:j.content??await Z.getBlobText(j.sha)}))),{decofile:D,skipped:L}=rr(B);if(L.length>0)console.warn("decofile gen: dropped blocks that were not valid JSON",{repo:`${Z.owner}/${Z.repo}`,branch:X,packagePath:Q,blocks:L.map((j)=>j.key)});let E=await Z.createBlob(D);H.push({path:N,mode:"100644",type:"blob",sha:E})}let U=await Z.createTree(J,H),O=await Z.createCommit({message:OG6($),treeSha:U,parentShas:[G]});try{return await Z.updateRef(X,O),O}catch(B){if(!(B instanceof Q6&&B.status===422)||Y>=FG6-1)throw B;await q$(pZ(2000,200,Y,2,0.5))}}}function OG6($){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 qd0(Q,$.deps.coAuthor)}var FG6=3,w91;var Bg$=w(()=>{AO0();qP0();u4();q_();fP0();w91=new Map});import{createHmac as wg$,randomBytes as BG6,timingSafeEqual as wG6}from"crypto";function Dg$(){if(uP0)return uP0;let $;try{let Z=b0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return uP0=$?Buffer.from($):BG6(32),uP0}function D91($){let Z=$.nowMs??Date.now(),X={o:$.organizationId,m:$.virtualMcpId,b:$.branch,e:Math.floor((Z+DG6)/1000)},Q=Buffer.from(JSON.stringify(X)).toString("base64url"),Y=wg$("sha256",Dg$()).update(Q).digest("base64url");return`${Q}.${Y}`}function Lg$($,Z){let X=$.indexOf(".");if(X<0)return!1;let Q=$.slice(0,X),Y=Buffer.from($.slice(X+1)),G=Buffer.from(wg$("sha256",Dg$()).update(Q).digest("base64url"));if(Y.length!==G.length||!wG6(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 DG6=21600000,uP0=null;var Eg$=w(()=>{T$()});import{z as nh}from"zod";function EG6($){return $.length>0&&$.length<=255&&!$.includes("..")&&!$.endsWith("/")&&!$.endsWith(".lock")&&LG6.test($)}function zg$($){return $.req.header("x-forwarded-host")??new URL($.req.url).host}async function cP0($){let Z=$.get("decofileScope");return RP0($.var.studioContext,Z.organizationId,Z.githubRepo)}function lP0($,Z){if(Z instanceof Q6){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 Pg$(){let $=new F1;return $.use("/:virtualMcpId/:branch",jg$),$.use("/:virtualMcpId/:branch/*",jg$),$.get("/:virtualMcpId/:branch",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await cP0(Z),Y=await Zg$(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=D91({organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,branch:X.branch});return Z.body(`{"version":${JSON.stringify(Y.sha)},"token":${JSON.stringify(J)},"apiHost":${JSON.stringify(zg$(Z))},"decofile":${Y.decofile}}`,200,{...G,"content-type":"application/json"})}catch(Q){return lP0(Z,Q)}}),$.patch("/:virtualMcpId/:branch",async(Z)=>{let X=Z.get("decofileScope"),Q=Z.var.studioContext,Y=jG6.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{IP0(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);try{let J=await cP0(Z),W=await Og$(`${X.organizationId}/${X.virtualMcpId}/${X.branch}`,{client:J,branch:X.branch,packagePath:X.packagePath,coAuthor:ch(Q)},G),K=D91({organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,branch:X.branch});return Z.json({version:W,token:K,apiHost:zg$(Z)})}catch(J){return lP0(Z,J)}}),$.post("/:virtualMcpId/:branch/publish",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await cP0(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 Q6&&W.status===409))throw W;await yP0(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 Q6&&J.status===409)return Z.json({error:"merge-conflict"},409);if(J instanceof Q6&&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 lP0(Z,Q)}}),$.get("/:virtualMcpId/:branch/status",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await cP0(Z),Y=await Q.getDefaultBranch();if(Y===X.branch)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0});try{let{aheadBy:G,behindBy:J}=await Q.compare(Y,X.branch);return Z.json({baseBranch:Y,aheadBy:G,behindBy:J})}catch(G){if(G instanceof Q6&&G.status===404)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0});throw G}}catch(Q){return lP0(Z,Q)}}),$}var LG6,jG6,jg$;var Ag$=w(()=>{qP0();w8();p51();TP0();O91();X91();Bg$();Eg$();N91();q_();fP0();LG6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;jG6=nh.object({set:nh.record(nh.string(),nh.unknown()).optional(),delete:nh.array(nh.string()).optional()}).refine(($)=>Object.keys($.set??{}).length>0||($.delete?.length??0)>0,{message:"Patch must set or delete at least one block"}),jg$=AP0(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(!EG6(G))return $.json({error:`Invalid branch name: ${G}`},400);let J=X.auth?.user?.id??null;if(!J){let O=$.req.query("token");if(!($.req.method==="GET"&&!$.req.path.match(/\/(publish|status)$/)))return $.json({error:"Unauthorized"},401);if(!O||!Lg$(O,{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(!VB0(K)||K?.fastPreview!==!0)return $.json({error:"Fast Preview is not enabled for this project"},404);let F=W.connections?.map((O)=>O.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 Tg$=($)=>{let Z=new F1;if(Z.use("*",D_),Z.route("/",hz0()),Z.route("/",iv$()),Z.route("/",tx$()),Z.route("/",ix$()),Z.route("/",jP0()),Z.route("/tools",Zy$()),Z.route("/",sx$()),Z.route("/",Mx$({kvStorage:$.kvStorage})),Z.route("/",Ix$()),Z.route("/fs",gx$({getConnection:$.getNatsConnection})),Z.route("/sandbox",Ng$()),Z.route("/decofile",Pg$()),Z.route("/",lx$()),Z.route("/deco-sites",cz0()),Z.route("/sso",vz0()),Z.route("/",zP0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",yv$()),$.mountDevAssets)Z.route("/dev-assets",lz0({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("/",jC$()),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",ux$()),Z.route("/mcp",nw0()),Z.route("/mcp/self",EP0()),Z.route("/mcp",rw0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var Rg$=w(()=>{w8();B61();gv$();E61();dz0();Ar();U61();qx$();kx$();hx$();_n();Y61();aw0();h51();cx$();dx$();px$();ox$();ex$();c51();Xy$();l51();tw0();Ug$();Ag$()});function zG6($){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 PG6=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},Ig$=()=>{let $=new F1;return $.use("*",PG6),$.get("/",async(Z)=>{let X=b0(),Q=X.decoSupabaseUrl,Y=X.decoSupabaseServiceKey;if(!Q||!Y)return Z.json({apps:[]});try{let G=await lZ(Q,Y,"apps?select=name,title,description,logo,category,vendors(alias,url)");return Z.json({apps:zG6(G)})}catch(G){return console.error("[deco-apps] GET error:",G),Z.json({error:"Failed to fetch apps"},502)}}),$};var qg$=w(()=>{w8();T$();cj0()});import{z as M1}from"zod";function QH($,Z="invalid_request_error",X=null,Q=null){return{error:{message:$,type:Z,param:X,code:Q}}}function CG6($){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 _G6($,Z,X){try{return JSON.parse($)}catch{throw new Vg$(`Invalid JSON in tool call arguments for function '${X}' (tool_call_id: ${Z}): ${$}`)}}function vG6($){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:_G6(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 fG6($){let Z=$.map((X)=>{let Q=X.function.parameters?xY(X.function.parameters):xY({type:"object",properties:{}});return[X.function.name,b$({description:X.function.description,inputSchema:Q})]});return Object.fromEntries(Z)}function bG6($){if(!$)return;return{openai:{response_format:$}}}function xG6(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function Mg$($,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 kg$($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var AG6=256,TG6,RG6,IG6,qG6,MG6,kG6,VG6,SG6,Vg$,Sg$,Cg$;var _g$=w(()=>{_4();w8();uh();XN();TG6=M1.object({type:M1.literal("function"),function:M1.object({name:M1.string(),description:M1.string().optional(),parameters:M1.record(M1.string(),M1.unknown()).optional()})}),RG6=M1.object({id:M1.string(),type:M1.literal("function"),function:M1.object({name:M1.string(),arguments:M1.string()})}),IG6=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(RG6).optional()}),M1.object({role:M1.literal("tool"),content:M1.string(),tool_call_id:M1.string()})]),qG6=M1.object({type:M1.literal("text")}),MG6=M1.object({type:M1.literal("json_object")}),kG6=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()})}),VG6=M1.union([qG6,MG6,kG6]),SG6=M1.object({model:M1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:M1.array(IG6),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(TG6).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:VG6.optional(),user:M1.string().optional()});Vg$=class Vg$ extends Error{constructor($){super($);this.name="MessageConversionError"}};Sg$=new F1;Sg$.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),X=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(QH("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(QH("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(QH("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Q=await $.req.json(),Y=SG6.safeParse(Q);if(!Y.success){let L=Y.error.issues[0]??{message:"Invalid request",path:[]};return $.json(QH(`Invalid request: ${L.message}`,"invalid_request_error",L.path.length>0?L.path.join("."):null),400)}let G=Y.data,J=CG6(G.model);if(!J)return $.json(QH("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)=>VD(j.providerId));if(!E)return $.json(QH("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(QH(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(K),N=vG6(G.messages),U=G.tools?fG6(G.tools):void 0,O=bG6(G.response_format),B=xG6(),D=Math.floor(Date.now()/1000);if(G.stream)return TN($,async(L)=>{let E=Mg$(F,N,U,G,O,$.req.raw.signal);try{let j=iO(E),z=!1,A=0,P="",M=async()=>{if(P.length===0)return;let q=P;P="",await L.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{content:q},finish_reason:null}]})})};for await(let q of j.fullStream){if(!z&&(q.type==="text-delta"||q.type==="tool-call"))await L.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),z=!0;if(q.type==="text-delta"){if(P+=q.text,P.length>=AG6)await M()}else if(q.type==="tool-call"){await M();let k=A++;await L.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{tool_calls:[{index:k,id:q.toolCallId,type:"function",function:{name:q.toolName,arguments:JSON.stringify(q.input)}}]},finish_reason:null}]})})}else if(q.type==="finish")await M(),await L.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{},finish_reason:kg$(q.finishReason)}],usage:q.totalUsage?{prompt_tokens:q.totalUsage.inputTokens??0,completion_tokens:q.totalUsage.outputTokens??0,total_tokens:q.totalUsage.totalTokens??0}:void 0})})}await M(),await L.writeSSE({data:"[DONE]"})}catch(j){let z=j;console.error("[openai-compat:stream] Error:",z.message),await L.writeSSE({data:JSON.stringify({error:{message:z.message,type:"server_error"}})})}});else{let L=Mg$(F,N,U,G,O,$.req.raw.signal),E=await dO(L),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:B,object:"chat.completion",created:D,model:G.model,choices:[{index:0,message:j,finish_reason:kg$(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(QH("Request aborted","invalid_request_error"),400);if(Y.name==="MessageConversionError")return $.json(QH(Y.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",Y.message,Y.stack),$.json(QH(Y.message,"server_error"),500)}});Cg$=Sg$});function vg$(){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=G1(X);if(!Q)return Z.json({error:"Authentication required"},401);let G=(Z.req.query("site")??"").trim().toLowerCase();if(!oK(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||J7(H))continue;let F=await X.storage.virtualMcps.list(H.id);for(let N of F){if(N.title.toLowerCase()!==G)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 fg$=w(()=>{w8();W_()});var xg$;var bg$=w(()=>{xg$={name:"decocms",version:"4.242.8",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","@nats-io/jwt":"0.0.10-5","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@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 hG6(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??gG6}}var yg$,gG6="https://ph.studio.decocms.com",gg$;var hg$=w(()=>{w8();Jh0();QC();v9();T$();e41();bg$();yg$=new F1;yg$.get("/",($)=>{let Z={version:xg$.version,theme:Ud1(),...jL().logo&&{logo:jL().logo},...TK()&&{internalUrl:lV1()},...b0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!b0().firecrawlApiKey,auth:Xv$(),posthog:hG6(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:!TK()&&b0().sandboxProviderKind==="agent-sandbox"}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});gg$=yg$});function th($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function L91($){return(th($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((X)=>X.charAt(0).toUpperCase()+X.slice(1)).join(" ")}function cg$($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(th($))}&sz=${Z}`}function ug$($,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 lg$($){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()?ug$(`${Y.trim().replace(/\s+/g," ")} \u2014 ${J}`,200):ug$(`How does ${X} really perform? ${J}`,200);return{title:G,description:W}}import{z as l0}from"zod";var C_,uG6,cG6,lG6,dG6,dg$;var mg$=w(()=>{C_=l0.enum(["good","bad","neutral"]),uG6=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:C_.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 $})),cG6=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(uG6)),lG6={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()},dG6=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:C_.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:C_.optional()}),l0.object({template:l0.literal("stats"),stats:l0.array(l0.object({value:l0.coerce.string(),label:l0.coerce.string(),tone:C_.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:C_.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(cG6).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:C_.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:C_.optional()})).min(1)})]),dg$=l0.object({...lG6,template:dG6})});function dP0($){let Z=[],X=[...$.sections].sort((Y,G)=>Y.position-G.position).map((Y)=>{let G=dg$.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 E91=w(()=>{mg$()});import{join as ig$}from"path";async function iG6($){try{let Z=await fetch(`${oW({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(mG6)});if(!Z.ok)return null;let X=await Z.json(),{deck:Q}=dP0(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()||L91($),score:Q.meta.scores?.cover??J?.score?.value,verdict:Y?.annotation?.trim()||Y?.headline?.trim()||void 0}}catch{return null}}function YG($){return $.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;")}function pG6($,Z){let X=th($),Q=Z?.brand?.trim()||L91(X),Y=cg$(X,128),J=`${(b0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(X)}`,{title:W,description:K}=lg$({brand:Q,domain:X,score:Z?.score,verdict:Z?.verdict}),H=`${J}/og.png`,F=`${Q} commerce report by decocms`;return[`<title>${YG(W)}</title>`,`<meta name="description" content="${YG(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="${YG(W)}" />`,`<meta property="og:description" content="${YG(K)}" />`,`<meta property="og:url" content="${YG(J)}" />`,`<meta property="og:image" content="${YG(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${YG(F)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${YG(W)}" />`,`<meta name="twitter:description" content="${YG(K)}" />`,`<meta name="twitter:image" content="${YG(H)}" />`,`<meta name="twitter:image:alt" content="${YG(F)}" />`,`<link rel="canonical" href="${YG(J)}" />`,`<link rel="icon" href="${YG(Y)}" sizes="any" />`].join(`
2807
2807
  `)}function nG6($,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}
2808
2808
  </head>`)}function pg$($){let Z=new F1;return Z.get("/:domain/og.png",async(X)=>{let Q=th(X.req.param("domain")),Y=async()=>{let G=$?Bun.file(ig$($,"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(`${oW({})}/api/v2/public/diagnostics/${encodeURIComponent(Q)}/og.png`,{signal:AbortSignal.timeout(tG6)}),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=$?ig$($,"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 iG6(th(Q)),K=pG6(Q,W);return X.html(nG6(J,K),200,{"Cache-Control":"public, max-age=0, s-maxage=300"})}catch{return X.html(J)}}),Z}var mG6=2500,tG6=1e4;var ng$=w(()=>{w8();E91();vL();T$()});function Qa($,Z){return fetch(`${oW({})}${$}`,Z)}async function oG6($,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 Qa(`/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}=dP0(J);return{status:W.slides.length?"ready":"empty",deck:W,scanned_at:J.scanned_at,drops:K}}var rG6,IN,tg$=async($,Z)=>{if(!$.get("reportUser"))return $.json({error:"Authentication required"},401);await Z();return},og$;var rg$=w(()=>{w8();_Y();vL();E91();rG6=new Set(["complete","errored","terminated","unknown"]),IN=new F1;IN.use("*",async($,Z)=>{let X=await H8.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});IN.use("/link-token/*",tg$);IN.use("/suggest",tg$);IN.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 oG6(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)}});IN.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 Qa("/api/v2/diagnostics/run",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${_L({})}`},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)}});IN.get("/status",async($)=>{let Z=$.req.query("id");if(!Z)return $.json({error:"id is required"},400);try{let X=await Qa(`/api/v2/diagnostics/status?id=${encodeURIComponent(Z)}`,{headers:{Authorization:`Bearer ${_L({})}`}});if(!X.ok)return $.json({error:`status HTTP ${X.status}`},502);let Y=(await X.json()).status??"unknown",G={done:rG6.has(Y),status:Y};return $.json(G)}catch{return $.json({error:"status failed"},502)}});IN.get("/link-token/:id",async($)=>{let Z=$.req.param("id");try{let X=await Qa(`/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)}});IN.get("/suggest",async($)=>{let Z=($.req.query("q")??"").trim().slice(0,64);if(Z.length<2)return $.json({suggestions:[]});try{let X=await Qa(`/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:[]})}});og$=IN});import{createHmac as aG6,timingSafeEqual as sG6}from"crypto";function sg$($,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)>eG6)return!1;let W=aG6("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&&sG6(K,F)})}function eg$($){let Z;try{Z=JSON.parse($)}catch{return null}let X=PJ(Z),Q=PJ(PJ(X?.data)?.object);if(!X||typeof X.type!=="string"||!Q)return null;return{id:YH(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 $h$($){switch($){case"active":case"trialing":return"active";case"past_due":return"past_due";default:return"canceled"}}function YH($){return typeof $==="string"?$:void 0}function PJ($){return typeof $==="object"&&$!==null?$:void 0}function mP0($){return typeof $==="number"?new Date($*1000):null}function P91($){return YH($)??YH(PJ($)?.id)}function $J6($){return P91($.subscription)??YH(PJ(PJ($.parent)?.subscription_details)?.subscription)}function ZJ6($){let Z=mP0($.current_period_end);if(Z)return Z;let X=PJ($.items)?.data;if(!Array.isArray(X))return null;let Q=0;for(let Y of X){let G=PJ(Y)?.current_period_end;if(typeof G==="number"&&G>Q)Q=G}return Q>0?new Date(Q*1000):null}function j91($,Z){let X=mP0($.created);return!!X&&!!Z.lastStripeEventAt&&X<Z.lastStripeEventAt}function z91($,Z){let X=mP0($.created);if(!X)return;return Z.lastStripeEventAt&&Z.lastStripeEventAt>X?void 0:X}async function XJ6($,Z){let X=Z.data.object;switch(Z.type){case"checkout.session.completed":case"checkout.session.async_payment_succeeded":{let Q=YH(PJ(X.metadata)?.orgId);if(!Q)return{handled:!1,reason:"no orgId"};if(YH(PJ(X.metadata)?.kind)==="topup"){if(X.mode!=="payment")return{handled:!1,reason:"topup with wrong mode"};if(YH(X.payment_status)!=="paid")return{handled:!1,reason:"payment not confirmed"};let J=YH(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(PJ(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:PJ(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(YH(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=P91(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(j91(Z,Y))return{handled:!1,reason:"stale event"};return await $.updateStripeState(Q,{stripeCustomerId:P91(X.customer),stripeSubscriptionId:G,status:"active",lastStripeEventAt:z91(Z,Y)}),{handled:!0,organizationId:Q}}case"customer.subscription.updated":case"customer.subscription.deleted":{let Q=YH(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&&j91(Z,Y))return{handled:!1,reason:"stale event"};let J=G?"canceled":$h$(X.status);return await $.updateStripeState(Y.organizationId,{status:J,currentPeriodEnd:ZJ6(X),...G&&{stripeSubscriptionId:null},lastStripeEventAt:z91(Z,Y)}),{handled:!0,organizationId:Y.organizationId}}case"invoice.paid":{let Q=$J6(X);if(!Q)return{handled:!1,reason:"no sub id"};let Y=await $.getBillingByStripeSubscriptionId(Q);if(!Y)return{handled:!1,reason:"unknown subscription"};if(j91(Z,Y))return{handled:!1,reason:"stale event"};return await $.updateStripeState(Y.organizationId,{status:"active",currentPeriodEnd:mP0(X.period_end),lastStripeEventAt:z91(Z,Y)}),{handled:!0,organizationId:Y.organizationId}}default:return{handled:!1,reason:`unhandled event ${Z.type}`}}}function QJ6($,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:$h$(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 ag$($,Z){let X=QJ6($,Z);if(!X)return;qY({event:X.name,organizationId:X.organizationId,...$.id?{uuid:zi1(`stripe:${$.id}:${X.name}`)}:{},...$.created?{timestamp:new Date($.created*1000)}:{},properties:X.properties})}async function Zh$($){let Z=new iW(p8().db),X=await XJ6(Z,$);if(!(X.handled&&X.topUp))ag$($,X);if(X.handled&&X.topUp)await sB$({organizationId:X.organizationId,amountCents:X.topUp.creditCents,referenceId:X.topUp.referenceId}),ag$($,X);if(!X.handled&&X.orphanSubscriptionId)try{await va1(X.orphanSubscriptionId),console.error("stripe webhook: canceled orphan subscription",{subscriptionId:X.orphanSubscriptionId,eventId:$.id})}catch(Q){if(!(Q instanceof vY&&(Q.status===400||Q.status===404)))throw Q}return X}var eG6=300;var Xh$=w(()=>{_G();M4();G60();lL();xs0()});var YJ6=1048576,A91;var Qh$=w(()=>{w8();BN();T$();Xh$();A91=new F1;A91.post("/webhook",M9({maxSize:YJ6,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(!sg$(X,$.req.header("stripe-signature"),Z))return $.json({error:"invalid signature"},400);let Y=eg$(X);if(!Y)return $.json({error:"invalid payload"},400);let G=await Zh$(Y);return console.log("stripe webhook",{eventId:Y.id,type:Y.type,livemode:Y.livemode,...G}),$.json({received:!0})})});import{timingSafeEqual as GJ6}from"crypto";function WJ6($,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 GJ6(Buffer.from(Y),Buffer.from(Q))}var JJ6=5242880,T91;var Yh$=w(()=>{w8();BN();Cp();T91=new F1;T91.post("/webhook",M9({maxSize:JJ6,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(!WJ6(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 ai0())?.markTenantPoolsDirty(G,Y)??[];return $.json({ok:!0,pools:W})})});function Gh$($,Z){if(Z.startsWith("text/html")||Z.startsWith("image/svg"))$.set("Content-Security-Policy","sandbox allow-scripts allow-modals allow-same-origin")}var Jh$,KJ6,HJ6,Wh$;var Kh$=w(()=>{w8();K3();jy();Lx();Jh$=new F1,KJ6=["range","if-none-match","if-modified-since"],HJ6=["content-type","content-length","content-range","accept-ranges","etag","last-modified"];Jh$.get("/:org/files/*",async($)=>{let Z=$.get("studioContext"),X=Z.organization?.id;if(!Z.auth?.user?.id){if(Ah($))return $.redirect(`/login?next=${encodeURIComponent($.req.path)}`,302);throw new $$(401,{message:"Authentication required"})}if(!X)throw new $$(401,{message:"Organization context required"});let Q=$.req.path.replace(/^.*\/files\//,"");if(!Q)throw new $$(400,{message:"Missing file key"});let Y=await Wn(Q,Z);if(!Y)throw new $$(503,{message:"Object storage not configured"});if(Y.startsWith("data:")&&O3()){let K=Y.match(/^data:([^;]+);base64,(.+)$/s);if(!K)throw new $$(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 Gh$(U,H),new Response(N,{status:200,headers:U})}let G=new Headers;for(let K of KJ6){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 $$(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 $$(502,{message:"Upstream storage error"});let W=new Headers;for(let K of HJ6){let H=J.headers.get(K);if(H)W.set(K,H)}return W.set("Cache-Control","private, max-age=86400"),Gh$(W,W.get("content-type")??""),new Response(J.body,{status:J.status,headers:W})});Wh$=Jh$});var Ya=_((__)=>{var FJ6=__&&__.__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]}),NJ6=__&&__.__exportStar||function($,Z){for(var X in $)if(X!=="default"&&!Object.prototype.hasOwnProperty.call(Z,X))FJ6(Z,$,X)};Object.defineProperty(__,"__esModule",{value:!0});NJ6(HY(),__)});var Nh$=_((Hh$)=>{Object.defineProperty(Hh$,"__esModule",{value:!0});Hh$.version=void 0;Hh$.version="3.4.0"});var Bh$=_((GH)=>{var UJ6=GH&&GH.__importDefault||function($){return $&&$.__esModule?$:{default:$}};Object.defineProperty(GH,"__esModule",{value:!0});GH.NodeTransport=GH.VERSION=void 0;GH.nodeResolveHost=EJ6;var t6=Ya(),OJ6=z0("net"),R91=z0("tls"),BJ6=z0("path"),Uh$=z0("fs"),wJ6=UJ6(z0("dns")),DJ6=Nh$();GH.VERSION=DJ6.version;var LJ6="nats.js";class Oh${socket;version;lang;yields=[];signal=(0,t6.deferred)();closedNotification=(0,t6.deferred)();options;connected=!1;tlsName="";done=!1;closeError;constructor(){this.lang=LJ6,this.version=GH.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,t6.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 t6.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 t6.errors.ConnectionError("error connecting - node provided an undefined error");let{code:J}=G,W=J==="ECONNREFUSED"?new t6.errors.ConnectionError("connection refused",{cause:G}):G;throw this.socket?.destroy(),W}}dial($){let Z=(0,t6.deferred)(),X,Q=(0,OJ6.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,t6.deferred)(),Z;return this.socket.on("data",(X)=>{this.yields.push(X);let Q=t6.DataBuffer.concat(...this.yields),Y=(0,t6.extractProtocolMessage)(Q);if(Y!=="")try{let G=t6.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,t6.deferred)();try{if($=(0,BJ6.resolve)($),!(0,Uh$.existsSync)($))Z.reject(Error(`${$} doesn't exist`));(0,Uh$.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,t6.extend)(X,this.options.tls,Y)}catch(Y){return Promise.reject(new t6.errors.ConnectionError(Y.message,{cause:Y}))}let Q=(0,t6.deferred)();try{let Y=(0,R91.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 t6.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,t6.extend)(Z,this.options.tls,Q)}catch(Q){return Promise.reject(new t6.errors.ConnectionError(Q.message,{cause:Q}))}let X=(0,t6.deferred)();try{let Q=(0,R91.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 t6.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,t6.render)($[Z])}`);yield $[Z]}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,t6.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 R91.TLSSocket}_send($){if(this.isClosed||this.socket===void 0)return Promise.resolve();if(this.options.debug)console.info(`< ${(0,t6.render)($)}`);let Z=(0,t6.deferred)();try{this.socket.write($,(X)=>{if(X){if(this.options.debug)console.error(`!!! ${(0,t6.render)($)}: ${X}`);return Z.reject(X)}return Z.resolve()})}catch(X){if(this.options.debug)console.error(`!!! ${(0,t6.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}}GH.NodeTransport=Oh$;function EJ6($){let Z=(0,t6.deferred)();return wJ6.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 jh$=_((Eh$)=>{Object.defineProperty(Eh$,"__esModule",{value:!0});Eh$.connect=jJ6;var wh$=Bh$(),Dh$=Ya(),Lh$=Ya();function jJ6($={}){if((0,Lh$.hasWsProtocol)($))return Promise.reject(Lh$.errors.InvalidArgumentError.format("servers","node client doesn't support websockets, use the 'wsconnect' function instead"));return(0,Dh$.setTransportFactory)({factory:()=>{return new wh$.NodeTransport},dnsResolveFn:wh$.nodeResolveHost}),Dh$.NatsConnectionImpl.connect($)}});var zh$=_((qN)=>{var PJ6=qN&&qN.__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]}),AJ6=qN&&qN.__exportStar||function($,Z){for(var X in $)if(X!=="default"&&!Object.prototype.hasOwnProperty.call(Z,X))PJ6(Z,$,X)};Object.defineProperty(qN,"__esModule",{value:!0});qN.connect=void 0;var TJ6=jh$();Object.defineProperty(qN,"connect",{enumerable:!0,get:function(){return TJ6.connect}});AJ6(Ya(),qN)});function Rh$($){let Z=$?.connectFn??MJ6,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 O of U.status())if(O.type==="disconnect")console.log("[NatsProvider] Disconnected"),J=!0;else if(O.type==="reconnect")console.log("[NatsProvider] Reconnected, re-firing ready callbacks"),J=!1,Q=null,H()})().catch(()=>{})}async function N(U,O){let B=0;while(!G)try{X=await Z({servers:U,timeout:qJ6,reconnect:!0,maxReconnectAttempts:-1,...O?{authenticator:O}:{}}),console.log(`[NatsProvider] Connected to ${X.getServer()} after ${B} attempt(s)`),Q=null,J=!1,F(X),H();return}catch{B++;let D=pZ(IJ6,RJ6,B-1,2,0.5);await q$(D)}}return{init(U,O){if(Y)return;Y=!0,G=!1;let B=O?.creds?Ph$.credsAuthenticator(new TextEncoder().encode(O.creds)):void 0;N(U,B).catch(()=>{})},isConnected(){return K()},getConnection(){return K()?X:null},getJetStream(){if(!K())return null;if(!Q)Q=Th$.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 MJ6($){return Ah$.connect($)}var Ph$,Ah$,Th$,RJ6=100,IJ6=3000,qJ6=3000;var Ih$=w(()=>{u4();Ph$=V(ju(),1),Ah$=V(zh$(),1),Th$=V(bw(),1)});function I91($,Z){return`${$}.${Z}`}class q91{cache;constructor($){this.cache=Hh({ttlMs:$?.ttlMs??kJ6,maxSize:$?.maxSize??VJ6})}async get($,Z){return this.cache.get(I91($,Z))??null}async set($,Z,X){this.cache.set(I91($,Z),X)}async invalidate($,Z){this.cache.delete(I91($,Z))}teardown(){this.cache.clear()}}var kJ6=600000,VJ6=5000;var qh$=()=>{};function iP0($,Z){return`${$}:${Z}`}function M91($){let Z=Hh({ttlMs:$?.ttlMs??SJ6,maxSize:$?.maxSize??CJ6}),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(Mh$,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(iP0(K,H))},set(K,H,F){Z.set(iP0(K,H),F)},invalidate(K,H){Z.delete(iP0(K,H)),W(K,H)},start(){if(J)return;let K=X?.();if(!K)return;J=K.subscribe(Mh$),(async()=>{for await(let H of J)try{let F=JSON.parse(G.decode(H.data));if(F.originId===Q)continue;Z.delete(iP0(F.organizationId,F.keyId))}catch{}})().catch(console.error)},teardown(){J?.unsubscribe(),J=null,Z.clear()}}}var Mh$="studio.ai-provider-keys.invalidate",SJ6=30000,CJ6=5000;var kh$=()=>{};class k91{options;subscriptions=[];onCancel=null;encoder=new TextEncoder;originId=crypto.randomUUID();seenMessageIds=new Set;constructor($){this.options=$}async start($){if($)this.onCancel=$;if(this.subscriptions.length>0)return;if(!this.onCancel)return;let Z=this.options.getConnection();if(!Z)return;let X=new TextDecoder;this.subscriptions=Vh$.map((Q)=>Z.subscribe(Q));for(let Q of this.subscriptions)(async()=>{for await(let Y of Q)try{let G=JSON.parse(X.decode(Y.data));if(G.originId===this.originId)continue;if(G.messageId&&this.hasSeen(G.messageId))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,messageId:crypto.randomUUID()}));for(let Q of Vh$)Z.publish(Q,X)}catch(Z){console.warn("[NatsCancelBroadcast] Publish failed (non-critical):",Z)}}publishControlFrame($,Z){}async stop(){for(let $ of this.subscriptions)$.unsubscribe();this.subscriptions=[],this.seenMessageIds.clear(),this.onCancel=null}hasSeen($){if(this.seenMessageIds.has($))return!0;if(this.seenMessageIds.add($),this.seenMessageIds.size>1000){let Z=this.seenMessageIds.values().next().value;if(Z)this.seenMessageIds.delete(Z)}return!1}}var Vh$;var Sh$=w(()=>{Vh$=["studio.decopilot.cancel","mesh.decopilot.cancel"]});var Ch$=($)=>{let Z;return()=>Z??=$()},V91,S91;var _h$=w(()=>{f6();V91=Ch$(()=>S$.createHistogram("decopilot.stream.encode_ms",{description:"Per-chunk JSON.stringify+encode time for decopilot stream",unit:"ms"})),S91=Ch$(()=>S$.createCounter("decopilot.stream.published_chunks",{description:"Logical decopilot stream chunks published to JetStream",unit:"{chunks}"}))});function gJ6(){return{name:mF,subjects:[`${Uw0}.>`],storage:GW.StorageType.File,max_age:fJ6,max_bytes:xJ6,max_msgs_per_subject:yJ6,discard:GW.DiscardPolicy.Old,retention:GW.RetentionPolicy.Limits,duplicate_window:bJ6,num_replicas:1}}class bh${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 vh$($){let Z=fh$.headers();for(let[X,Q]of Object.entries($))Z.set(X,Q);return Z}function lJ6($,Z){let X=0;return{publish(Q,Y,G,J){Q.publish(Y,G,J?{headers:J}:void 0).catch((W)=>{if(X++,vJ6().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 dJ6($){if(!($ instanceof Error))return!1;if($.name==="TimeoutError")return!0;return/timeout|no responders|503/i.test($.message)}class C91{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=gJ6(),X=await N9(async()=>{let Q=this.options.getJetStreamManager?await this.options.getJetStreamManager():await GW.jetstreamManager($);try{await Q.streams.info(mF),await Q.streams.update(mF,Z)}catch(Y){if(Y instanceof Error&&Y.message.includes("stream not found"))await Q.streams.add(Z);else if(Y instanceof Error&&/can ?not change.*storage|storage type/i.test(Y.message))await Q.streams.delete(mF),await Q.streams.add(Z);else throw Y}return Q},{maxAttempts:5,minTimeout:250,maxTimeout:4000,jitter:0.5,isRetriable:dJ6});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=lJ6(Z,Q),J=!1,W=()=>{if(J)return;J=!0;let H=SH$(Z);Y.publish(H.subject,H.data).catch(()=>{})};X.addEventListener("abort",W,{once:!0});let K=(H)=>{let F=performance.now(),N=vt0(H,{runId:Z}),U=performance.now()-F;if(V91().record(U),S91().add(1,{"org.id":Q??"unknown"}),cJ6?.record(U,N.reduce((O,B)=>O+B.data.length,0)),N.length===0){console.warn(`[Decopilot] dropping oversized stream chunk for thread ${Z}`);return}for(let O of N)G.publish(Y,O.subject,O.data,O.headers?vh$(O.headers):void 0)};return(async()=>{let H=$.getReader(),F=0,N=0,U;try{while(!0){let{done:O,value:B}=await H.read();if(O)break;if(K(B),N++,++F>=64)F=0,await new Promise((D)=>setImmediate(D))}}catch(O){U=O,console.warn(`[Decopilot] stream pump error for thread ${Z}:`,O?.message??O)}finally{if(H.releaseLock(),W(),uJ6)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 publishRawChunk($,Z,X){let Q=this.js;if(!Q)return!1;let Y=performance.now(),G=vt0(Z,{runId:$,dedup:X});if(V91().record(performance.now()-Y),S91().add(1),G.length===0)return console.warn(`[Decopilot] dropping oversized raw chunk for thread ${$} (> MAX_CHUNKED_BYTES)`),!0;for(let J of G)await Q.publish(J.subject,J.data,{...J.headers?{headers:vh$(J.headers)}:{},...J.msgId?{msgID:J.msgId}:{}});return!0}async publishDone($,Z,X){let Q=this.js;if(!Q)return!1;let Y=VH$({runId:$,fenceToken:Z,finalSeq:X});return await Q.publish(Y.subject,Y.data,{msgID:Y.msgId}),!0}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"?GW.DeliverPolicy.New:GW.DeliverPolicy.All,G=X?.closeOnDone??!1,J=MB($),W;try{W=await(await Q.consumers.get(mF,{filter_subjects:J,deliver_policy:Y})).consume()}catch(D){return console.warn("[Decopilot] JetStream tail unavailable (non-critical):",D?.message??D),null}let F=Lw0({messages:async function*(){try{for await(let D of W)yield{subject:D.subject,data:D.data,headers:D.headers}}finally{W.stop()}}(),onCancel:()=>W.stop()}).pipeThrough(Ow0()).pipeThrough(Bw0()).getReader(),N=!1,U=()=>{if(N)return;N=!0;try{F.releaseLock()}catch{}},O=!1,B=()=>{if(O)return;O=!0,W.stop(),F.cancel().catch(()=>{}),U()};return Z?.addEventListener("abort",B,{once:!0}),new ReadableStream({async pull(D){for(;;){let{done:L,value:E}=await F.read();if(L){B(),D.close();return}let j=E;if(j.kind==="done"){if(G){B(),D.close();return}continue}D.enqueue(j.chunk);return}},cancel(){B()}})}purge($){if(!this.jsm)return;this.jsm.streams.purge(mF,{filter:MB($)}).catch(()=>{})}teardown(){this.js=null,this.jsm=null}}var GW,fh$,_J6=($)=>{let Z;return()=>Z??=$()},vJ6,fJ6=86400000000000,bJ6=120000000000,xJ6=4294967296,yJ6=500000,hJ6,uJ6,cJ6;var xh$=w(()=>{u4();ft0();Ew0();ww0();f6();_h$();GW=V(bw(),1),fh$=V(ju(),1),vJ6=_J6(()=>S$.createCounter("decopilot.stream.publish_errors",{description:"Number of JetStream publish failures for decopilot stream chunks",unit:"{errors}"}));hJ6=process.env.STREAM_ENCODE_TRACE==="1",uJ6=process.env.DECOPILOT_STREAM_TRACE==="1";cJ6=hJ6?new bh$:null});function pP0($,Z,X,Q){if(!Q)return!1;return $.emit(Z,kW(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 yh$=w(()=>{U8()});class _91{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}}function rJ6($){return $ instanceof n7}function aJ6($,Z){return Z-$>=tJ6}class v91{taskBoard;contextFactory;billing;options;timer=null;running=!1;cursor=null;constructor($,Z,X,Q={}){this.taskBoard=$;this.contextFactory=Z;this.billing=X;this.options=Q}start(){if(this.timer)return;let $=this.options.intervalMs??mJ6;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??pJ6,X=this.options.itemIntervalMs??iJ6,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()-In0),Do0);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()-oJ6));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 Xt0(this.taskBoard,Y,Q),await Qt0(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!==n8)continue;let W=await this.contextFactory(Y,J.assignedBy??J.createdBy);if(!W)continue;await iF(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),rJ6(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()+nJ6)).catch((W)=>console.error(`[task-board-review-sweeper] re-arming ${Q} failed`,W))}return Z}async returnToTodo($,Z,X){try{let Q=await this.taskBoard.getById($,Z);if(!Q||Q.status!=="in_progress")return;let Y=await this.taskBoard.returnToTodoAfterFailure($,Z,Q.updatedBy);if(!Y)return;await this.taskBoard.recordActivity({taskBoardItemId:$,action:"status_changed",actorId:null,data:{from:"in_progress",to:"todo",reason:X}}).catch(()=>{}),A8(Z,Y)}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(!aJ6(LF(X),Date.now()))return;await qK($,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;if(Q.status!=="in_review")return!1;let Y=Q.assigneeId===n8,G=await this.taskBoard.listPrs($,Z),J=await this.contextFactory(Z,Q.assignedBy??Q.createdBy);if(!J)return!1;if(G.length===0){if(Y)await this.handOffReviewWithoutPr(J,Q);return!1}if(await lF$(J,Q))return!0;if(!Y)return!1;let W=await Promise.all(G.map(async(K)=>({...K,...await vy(Z,K)})));if(W.every((K)=>K.state===null))console.warn(`[task-board-review-sweeper] ${$}: no live PR state from GitHub (${W.length} PR(s)) \u2014 proceeding on unknown`);if(!Uo0(W))return!1;return await Rw0(J,Q,{previewMatchesHead:Oo0(W)}),!0}dispose(){if(this.timer)clearInterval(this.timer),this.timer=null}}var mJ6=60000,iJ6=300000,pJ6=50,nJ6=60000,tJ6=900000,oJ6=120000;var gh$=w(()=>{E9();Yo0();cF();Mn();G9();E3();Lo0();kK();Pn()});import{readdir as sJ6,rm as nP0}from"fs/promises";import{join as tP0}from"path";async function oP0($){let Z=new Date;Z.setUTCDate(Z.getUTCDate()-eJ6),Z.setUTCHours(0,0,0,0);let X=0;try{let Q=await v_($);for(let Y of Q)if(/^\d{4}$/.test(Y))X+=await hh$($,Y,Z);else if(!Y.startsWith(".")){let G=tP0($,Y),J=await v_(G);for(let K of J){if(!/^\d{4}$/.test(K))continue;X+=await hh$(G,K,Z)}if((await v_(G)).length===0)await nP0(G,{recursive:!0,force:!0})}}catch(Q){console.warn("monitoring retention cleanup failed:",Q)}return X}async function hh$($,Z,X){let Q=0,Y=tP0($,Z),G=await v_(Y);for(let W of G){if(!/^\d{2}$/.test(W))continue;let K=tP0(Y,W),H=await v_(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 O=tP0(K,N);await nP0(O,{recursive:!0,force:!0}),Q++}}if((await v_(K)).length===0)await nP0(K,{recursive:!0,force:!0})}if((await v_(Y)).length===0)await nP0(Y,{recursive:!0,force:!0});return Q}async function v_($){try{return(await sJ6($)).filter((X)=>!X.startsWith("."))}catch{return[]}}var eJ6=30;var f91=()=>{};import{DBOS as b91,SchedulerMode as $36}from"@dbos-inc/dbos-sdk";async function X36(){let $=[qJ(),f_(),HH()],Z=0;for(let X of $)try{Z+=await oP0(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 Q36($,Z){await b91.runStep(()=>X36(),{name:"monitoringRetention"})}function ch$(){if(uh$)return;uh$=!0;let $=b91.registerWorkflow(Q36,{name:"monitoringRetentionWorkflow"});b91.registerScheduled($,{name:"monitoringRetentionWorkflow",crontab:Z36,mode:$36.ExactlyOncePerIntervalWhenActive})}var Z36="23 4 * * *",uh$=!1;var lh$=w(()=>{GY();f91()});function dh$($){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 sG.create();Y.auth.user={id:X,role:Q.role},Y.organization={id:Q.orgId,slug:Q.orgSlug,name:Q.orgName};let G=await b41($.db,Z,Q.role);return Y.boundAuth=f41({auth:Y.authInstance,headers:new Headers,role:Q.role,permissions:G,userId:X}),Y.access=new wL(X,void 0,Y.boundAuth,Q.role,"self"),AB(Y,{id:Q.orgId,slug:Q.orgSlug}),Y}}var mh$=w(()=>{DL();YC()});function Y36(){return{services:[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}],migrationsStatus:"pending",serverUrl:null,logs:[]}}function J36(){for(let $ of G36)$()}function ih$($){let Z=[...x91.logs,$];x91={...x91,logs:Z.length>500?Z.slice(-500):Z},J36()}function y91(){return W36}var x91,G36,W36=!1;var g91=w(()=>{x91=Y36(),G36=new Set});import{EventEmitter as K36}from"events";var h91;var ph$=w(()=>{g91();h91=new K36;h91.on("request",($)=>{ih$($)})});function nh$(){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 O=oh(U.params.name),B=U.params.arguments||{},D=Object.keys(B).map((E)=>oh(E)),L=D.length>0?D.slice(0,3).join(",")+(D.length>3?"\u2026":""):"";G=`${Y5.tool}${O}${Y5.dim}(${L})${Y5.reset}`}else if(U.method)G=`${Y5.dim}${oh(U.method)}${Y5.reset}`}}catch{}}let W=oh(Y);if(Y.startsWith("/mcp/conn_")){let F=Y.split("/")[2]??"";W=`/mcp/${Y5.mcp}${oh(F.slice(0,12))}\u2026${Y5.reset}`}else if(Y==="/mcp")W=`${Y5.mcp}/mcp${Y5.reset}`;else if(Y==="/mcp/registry")W=`${Y5.mcp}/mcp/registry${Y5.reset}`;let K=F36(Q),H=J?"\u25C0":"\u2190";if(!y91())console.log(`${Y5.dim}${H}${Y5.reset} ${K}${Q}${Y5.reset} ${W}${G?` ${G}`:""}`);try{await Z()}finally{let F=Date.now()-X,N=$.res.status,U=H36(N),O=F<1000?`${F}ms`:`${(F/1000).toFixed(1)}s`,B=J?"\u25B6":"\u2192";if(!y91())console.log(`${Y5.dim}${B}${Y5.reset} ${K}${Q}${Y5.reset} ${W}${G?` ${G}`:""} ${U}${N}${Y5.reset} ${Y5.duration}${O}${Y5.reset}`);h91.emit("request",{method:Q,path:oh(Y),status:N,duration:F,timestamp:new Date})}}}var Y5,H36=($)=>{if($>=500)return Y5.serverError;if($>=400)return Y5.clientError;if($>=300)return Y5.redirect;return Y5.ok},F36=($)=>{return Y5[$]||Y5.reset},oh=($)=>{return $.replace(/\r/g,"").replace(/\n/g,"").replace(/\x1b\[[0-9;]*m/g,"").replace(/[\x00-\x1f\x7f-\x9f]/g,"")};var th$=w(()=>{g91();ph$();Y5={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 sh$}from"crypto";import{mkdir as N36,readdir as U36,rm as oh$,stat as eh$}from"fs/promises";import{join as c91,relative as O36}from"path";import{z as z$}from"zod";function Zu$($){let Z=$.replace(/[^a-zA-Z0-9_-]/g,"_");return c91(B36,Z)}function Xu$($){return $.replace(/^\/+/,"").replace(/\.\./g,"")}function u91($,Z){let X=Zu$($),Q=Xu$(Z);return c91(X,Q)}function w36($,Z,X,Q){let Y=b0().encryptionKey||"dev-secret",G=`${$}:${Z}:${X}:${Q}`;return sh$("sha256",Y).update(G).digest("hex")}function ah$($,Z,X,Q,Y){let G=Math.floor(Date.now()/1000)+Q,J=w36(Z,X,G,Y),W=new URL(`/api/dev-assets/${Z}/${Xu$(X)}`,$);return W.searchParams.set("expires",G.toString()),W.searchParams.set("signature",J),W.searchParams.set("method",Y),W.toString()}function Qu$($,Z,X){let Q=`${$}:${Z.getTime()}:${X}`;return`"${sh$("md5","etag").update(Q).digest("hex")}"`}async function Yu$($,Z,X,Q,Y){try{let G=await U36($,{withFileTypes:!0});for(let J of G){let W=c91($,J.name),H=O36(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 Yu$(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 eh$(W);Y.objects.push({key:H,size:F.size,lastModified:F.mtime.toISOString(),etag:Qu$(W,F.mtime,F.size)})}catch{}}}}catch{}}function Gu$($,Z){let Q=t($).id;return[{name:"LIST_OBJECTS",description:"List objects in the local assets directory with pagination support",inputSchema:z$.object({prefix:z$.string().optional(),maxKeys:z$.number().optional().default(1000),continuationToken:z$.string().optional(),delimiter:z$.string().optional()}),outputSchema:z$.object({objects:z$.array(z$.object({key:z$.string(),size:z$.number(),lastModified:z$.string(),etag:z$.string()})),nextContinuationToken:z$.string().optional(),isTruncated:z$.boolean(),commonPrefixes:z$.array(z$.string()).optional()}),handler:async(Y)=>{let G=Y,J=G.prefix||"",W=G.maxKeys??1000,K=G.delimiter,H=G.continuationToken,F=Zu$(Q);await N36(F,{recursive:!0});let N={objects:[],commonPrefixes:new Set};await Yu$(F,F,J,K,N),N.objects.sort((L,E)=>L.key.localeCompare(E.key));let U=0;if(H){if(U=N.objects.findIndex((L)=>L.key>H),U===-1)U=N.objects.length}let O=N.objects.slice(U,U+W),B=U+W<N.objects.length,D=B?O[O.length-1]?.key:void 0;return{objects:O,isTruncated:B,nextContinuationToken:D,commonPrefixes:Array.from(N.commonPrefixes).sort()}}},{name:"GET_OBJECT_METADATA",description:"Get metadata for a file in the local assets directory",inputSchema:z$.object({key:z$.string()}),outputSchema:z$.object({contentType:z$.string().optional(),contentLength:z$.number(),lastModified:z$.string(),etag:z$.string(),metadata:z$.record(z$.string(),z$.string()).optional()}),handler:async(Y)=>{let G=Y,J=u91(Q,G.key),W=await eh$(J);return{contentType:z61(G.key),contentLength:W.size,lastModified:W.mtime.toISOString(),etag:Qu$(J,W.mtime,W.size)}}},{name:"GET_PRESIGNED_URL",description:"Generate a presigned URL for downloading a file from local storage",inputSchema:z$.object({key:z$.string(),expiresIn:z$.number().optional()}),outputSchema:z$.object({url:z$.string(),expiresIn:z$.number()}),handler:async(Y)=>{let G=Y,J=G.expiresIn??rh$;return{url:ah$(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:z$.object({key:z$.string(),expiresIn:z$.number().optional(),contentType:z$.string().optional()}),outputSchema:z$.object({url:z$.string(),expiresIn:z$.number()}),handler:async(Y)=>{let G=Y,J=G.expiresIn??rh$;return{url:ah$(Z,Q,G.key,J,"PUT"),expiresIn:J}}},{name:"DELETE_OBJECT",description:"Delete a single file from local storage",inputSchema:z$.object({key:z$.string()}),outputSchema:z$.object({success:z$.boolean(),key:z$.string()}),handler:async(Y)=>{let G=Y,J=u91(Q,G.key);try{return await oh$(J),{success:!0,key:G.key}}catch{return{success:!1,key:G.key}}}},{name:"DELETE_OBJECTS",description:"Delete multiple files from local storage",inputSchema:z$.object({keys:z$.array(z$.string()).max(1000)}),outputSchema:z$.object({deleted:z$.array(z$.string()),errors:z$.array(z$.object({key:z$.string(),message:z$.string()}))}),handler:async(Y)=>{let G=Y,J=[],W=[];return await Promise.all(G.keys.map(async(K)=>{let H=u91(Q,K);try{await oh$(H),J.push(K)}catch(F){W.push({key:K,message:F instanceof Error?F.message:"Unknown error"})}})),{deleted:J,errors:W}}}]}async function l91($,Z,X){let Q=Gu$(Z,X),Y=new bW({name:"dev-assets-mcp",version:"1.0.0"},{capabilities:{tools:{}},jsonSchemaValidator:H5});for(let J of Q){let W="shape"in J.inputSchema?J.inputSchema.shape:z$.object({}).shape,K=J.outputSchema&&"shape"in J.outputSchema?J.outputSchema.shape:z$.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 sX({enableJsonResponse:$.headers.get("Accept")?.includes("application/json")??!1});return await Y.connect(G),GJ(Y,G,$,"mcp:dev-assets")}async function Ju$($,Z,X,Q){let G=Gu$(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 B36="./data/assets",rh$=3600,$u$,Wu$;var Ku$=w(()=>{T$();hy();w8();ll();wC();_X();dz0();$u$=new F1;$u$.all("/",async($)=>{let Z=$.get("studioContext"),X=new URL($.req.url),Q=`${X.protocol}//${X.host}`;return l91($.req.raw,Z,Q)});Wu$=$u$});var Hu$={};Y4(Hu$,{mountDevRoutes:()=>D36});function D36($,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 l91(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 Ju$(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",Wu$);let X=new F1;X.use("*",QW({mountPath:"/api/dev-assets"})),X.route("/",lz0({orgFromPath:!1})),$.route("/api/dev-assets",X)}var Fu$=w(()=>{w8();O61();dz0();Ku$()});import{sql as L36}from"kysely";import{randomUUID as Nu$}from"crypto";import{z as E36}from"zod";async function z36($){let Z=new Date().toISOString(),X=Nu$(),Q=l4.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:Nu$(),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 L36`SELECT
2809
2809
  pg_notify('studio_events', ${X}),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "decocms",
3
- "version": "4.242.7",
3
+ "version": "4.242.8",
4
4
  "description": "Deco CMS — Self-hostable MCP Gateway for managing AI connections and tools",
5
5
  "author": "Deco team",
6
6
  "repository": {
@@ -1 +0,0 @@
1
- import{c as B,b as L,j as r}from"./index-DDaAKoW0.js";import{I as A}from"./input-D1rxzLYS.js";import{L as P}from"./label-w7mJUKNI.js";import{S as R,a as V,b as z,c as J,d as O}from"./select-CYQVoO2Q.js";import{T as D}from"./textarea-iyBfFkiQ.js";import{F as M,T as _,J as $,V as q,_ as G}from"./index-DIKjEsr7.js";import{s as F}from"./primitives-Cee9hntD.js";import{u as H}from"./use-autosave-DMBtYfCy.js";import"./tooltip-DziFRodn.js";import"./Check-B5z_XXZ6.js";import"./ChevronDown-C-HAbHMb.js";import"./ChevronUp-C01ncoUH.js";import"./ArrowUp-QzKZF-kB.js";import"./chat-context-BcMskLsC.js";import"./tab-id-DwvmIHSg.js";import"./dialog-DsyeJr0O.js";import"./X-UbX4MdwG.js";import"./Copy01-DlwQs5r0.js";import"./Download01-Bn5Q0wAS.js";import"./hooks-0FqWzfqu.js";import"./use-mcp-client-CsOshLdU.js";import"./auth-Di48PY3e.js";import"./decopilot-sse-pool-BCuN51t9.js";import"./backoff-CrEUbyZT.js";import"./delay-CnY5UFtP.js";import"./use-is-desktop-app-BNujXJc_.js";import"./use-virtual-mcp-CZUfWD1q.js";import"./use-ai-providers-C4io1va3.js";import"./studio-tools-8ppZIkX1.js";import"./use-decopilot-events-0wBXeV1R.js";import"./use-organization-settings-CXAnbzRx.js";import"./automation-runs-BaiE-RK7.js";import"./agent-icon-K5r6Ao5H.js";import"./AlertCircle-15gFaLIc.js";import"./Tool01-D_Jb4gj8.js";import"./ArrowLeft-DbXhopuJ.js";import"./Tool02-SA8jP9Hu.js";import"./XCircle-87JECNlp.js";import"./ArrowUpRight-CL4Y0tRP.js";import"./TrendUp01-QckDJwGk.js";import"./ZapSquare-T1V95eyf.js";import"./Users03-BSy4QBM7.js";import"./CheckCircle-vfAuoWt4.js";import"./ChevronRight-CXdw3R_m.js";import"./ChevronSelectorVertical-GJ2AwVKm.js";import"./DotsVertical-DOxvQtOm.js";import"./Stars02-OXx7pSpi.js";import"./CreditCard01-B723foKl.js";import"./Settings02-C-ER4E83.js";import"./Eye-DBP5goK0.js";import"./FilterLines-4TN65-__.js";import"./Share07-BWm772kb.js";import"./Globe01-YDAPmFPV.js";import"./Globe04-D-xAShb2.js";import"./SwitchHorizontal01-4IQi0z5i.js";import"./HardDrive-C2oWPo9G.js";import"./Key01-CUfOHXBo.js";import"./LayoutLeft-DUpyajE-.js";import"./LinkExternal01-BADCzNEq.js";import"./LockUnlocked01-r6vdLXWe.js";import"./LogOut01-B9FzTybU.js";import"./Monitor01-rL6zbURu.js";import"./Sun-CcruyiFR.js";import"./Palette-D2Ywd2QR.js";import"./Play-BWck8aW7.js";import"./Plus-C2xKEO7r.js";import"./SearchLg-Sx93FyD2.js";import"./SearchMd-Cdy9Z0au.js";import"./Shield01-BGBijift.js";import"./Stars01-YHJC2xf-.js";import"./Trash01-Cy0oXJLu.js";import"./Upload01-m1kJ0UY7.js";import"./User01-9gJ33HqF.js";import"./Users01-BcZGRvPB.js";import"./XClose-DacfUGUC.js";import"./Zap-CuLAW4F2.js";import"./useInfiniteQuery-pYH7DqKD.js";import"./use-infinite-scroll-BQRZaNYS.js";import"./use-connection-sbfA5-KR.js";import"./card-C5oWNz7H.js";import"./sidebar-DPZJiOf7.js";import"./use-mobile-CrUyfv8i.js";import"./table-Ckc966ww.js";import"./empty-state-DcYeQSVF.js";import"./use-members-DtzRks-j.js";import"./use-org-auth-client-Dk8JmNz2.js";import"./use-clock-tick-CHXaSoVN.js";import"./use-automations-D9KZzyYq.js";import"./useSuspenseInfiniteQuery-DSs2XG_0.js";import"./avatar-uZ8DuyXu.js";import"./format-time-BnbuEtat.js";import"./differenceInSeconds-NQ4PDo0z.js";import"./use-copy-BSzy_Hv9.js";import"./monaco-editor-CwnQZDyj.js";import"./spinner-DcjgZ2N9.js";import"./types-Bo2HFNYe.js";import"./shell-layout-CwnWkc9y.js";import"./required-auth-layout-CXRviUfq.js";import"./use-org-sso-DSlfbKHY.js";import"./integration-icon-D70ppfdw.js";import"./use-navigate-to-agent-RiFuu5fM.js";import"./reusable-new-chat-CouMjkYR.js";import"./chart-CSMkRSRK.js";import"./index-CxDIxs76.js";import"./form-CTivROZ8.js";import"./file-type-icon-ke_a9PWC.js";import"./drawer-HwUfq74d.js";import"./collection-search-DP1qJdvT.js";import"./deco-site-production-url-BjY4ZYd-.js";import"./tabs-DjRpS5PY.js";import"./toggle-group-CuhWPDV6.js";import"./use-commerce-diagnostic-BPGjjsqM.js";import"./popover-VybZOBk3.js";import"./self-tool-result-HVruADnM.js";import"./alert-dialog-CMOdBQ7s.js";import"./extract-connection-data-BdDn1xWN.js";import"./metadata-dUsYcpuu.js";import"./provision-repo-scoped-github-connection-C2HwF4Ce.js";import"./use-debounced-value-CeNCA03j.js";import"./authenticate-and-persist-oauth-BFHN-2-8.js";import"./mcp-oauth-B0F9aZYH.js";import"./track-B5r0NS5f.js";import"./toolbar-ChdWChZf.js";import"./skeleton-DsgTYEqa.js";import"./github-repo-picker-BIM8mByN.js";import"./use-mcp-tools-X9XGZP_C.js";import"./agent-capabilities-C4tLW0Za.js";import"./connection-card-BtQWwIa6.js";import"./use-registry-connections-BumrKi6F.js";import"./retry-CErkP7V6.js";import"./connection-slug-eyAPH6o3.js";import"./connection-form-helpers-DCXfsQ1e.js";import"./collection-tabs-CSD5pLj6.js";import"./badge-Dwz2yyBf.js";import"./command-DMwVDqRx.js";import"./index-CF7XM4zP.js";import"./use-open-billing-url-DKlUH8QA.js";import"./select-model-D_7TJZXe.js";import"./checkbox-h1hj2gPk.js";import"./ai-providers-logos-DD3qZ33J.js";import"./settings-section-CtGoDTIg.js";import"./cards-DTaIe5Te.js";import"./dropdown-menu-CdgaWjPI.js";import"./question-004-sINsf4GQ.js";import"./use-status-sounds-C77w-IOH.js";import"./use-capability-BoueQ97o.js";import"./use-file-configs-BafcRP2m.js";import"./pt-BR-CLy76QW2.js";import"./switch-CVwLPYCh.js";import"./use-debounced-autosave-0rtZL8Lb.js";import"./index-BYLKWEbt.js";import"./search-input-ogrEBTNL.js";import"./index-B_-DAQ2_.js";import"./use-secrets-luP7DhaI.js";import"./AreaChart-DT5AVswk.js";import"./use-tags-92_dylXV.js";import"./get-initials-D-f_fDFw.js";import"./automation-list-row-BbNNSya8.js";import"./use-org-repo-syncs-DzKmQDEp.js";const Q={authors:[{key:"name",labelKey:"sandbox.recordEditor.fieldName",widget:"text"},{key:"type",labelKey:"sandbox.recordEditor.fieldType",widget:"select",options:[{value:"Person",labelKey:"sandbox.recordEditor.optionPerson"},{value:"Organization",labelKey:"sandbox.recordEditor.optionOrganization"}]},{key:"email",labelKey:"sandbox.recordEditor.fieldEmail",widget:"text",placeholderKey:"sandbox.recordEditor.placeholderEmail"},{key:"jobTitle",labelKey:"sandbox.recordEditor.fieldJobTitle",widget:"text"},{key:"company",labelKey:"sandbox.recordEditor.fieldCompany",widget:"text"},{key:"avatar",labelKey:"sandbox.recordEditor.fieldAvatar",widget:"image"}]},U={authors:"sandbox.recordEditor.titleAuthor"};function Qr(I){const t=B.c(39),{orgSlug:E,virtualMcpId:K,branch:w,kind:a,blockKey:b,block:f}=I,i=L();let h;t[0]!==w||t[1]!==E||t[2]!==K?(h={orgSlug:E,virtualMcpId:K,branch:w},t[0]=w,t[1]=E,t[2]=K,t[3]=h):h=t[3];const p=M(h);let g;t[4]!==f||t[5]!==a?(g=_(f,a),t[4]=f,t[5]=a,t[6]=g):g=t[6];const C=g;let k;t[7]!==b||t[8]!==a||t[9]!==p?(k=l=>{p.mutate({blockKey:b,data:q(b,a,l)})},t[7]=b,t[8]=a,t[9]=p,t[10]=k):k=t[10];const[e,S]=H(C,k);let v;t[11]!==e||t[12]!==S?(v=(l,o)=>S({...e,[l]:o}),t[11]=e,t[12]=S,t[13]=v):v=t[13];const s=v,T=U[a];let n;t[14]!==i||t[15]!==T?(n=i(T),t[14]=i,t[15]=T,t[16]=n):n=t[16];let c;t[17]!==n?(c=r.jsx("span",{className:"text-sm font-medium",children:n}),t[17]=n,t[18]=c):c=t[18];let d;t[19]!==p.isError||t[20]!==p.isPending?(d=r.jsx($,{isPending:p.isPending,isError:p.isError}),t[19]=p.isError,t[20]=p.isPending,t[21]=d):d=t[21];let y;t[22]!==c||t[23]!==d?(y=r.jsxs("div",{className:"flex h-12 shrink-0 items-center justify-between border-b px-6",children:[c,d]}),t[22]=c,t[23]=d,t[24]=y):y=t[24];const N=Q[a];let x;if(t[25]!==e||t[26]!==s||t[27]!==i||t[28]!==N){let l;t[30]!==e||t[31]!==s||t[32]!==i?(l=o=>r.jsx("div",{className:"space-y-2",children:o.widget==="image"?r.jsx(G,{schema:{type:"string",format:"image-uri",title:i(o.labelKey)},value:e[o.key],onChange:m=>s(o.key,m),path:o.key,label:i(o.labelKey)}):o.widget==="select"?r.jsxs(r.Fragment,{children:[r.jsx(P,{htmlFor:o.key,children:i(o.labelKey)}),r.jsxs(R,{value:F(e[o.key])||o.options?.[0]?.value,onValueChange:m=>s(o.key,m),children:[r.jsx(V,{id:o.key,className:"h-10 w-full",children:r.jsx(z,{placeholder:i(o.labelKey)})}),r.jsx(J,{children:(o.options??[]).map(m=>r.jsx(O,{value:m.value,children:i(m.labelKey)},m.value))})]})]}):r.jsxs(r.Fragment,{children:[r.jsx(P,{htmlFor:o.key,children:i(o.labelKey)}),o.widget==="textarea"?r.jsx(D,{id:o.key,value:F(e[o.key]),onChange:m=>s(o.key,m.target.value),rows:3}):r.jsx(A,{id:o.key,value:F(e[o.key]),placeholder:o.placeholderKey?i(o.placeholderKey):void 0,onChange:m=>s(o.key,m.target.value),className:"h-10"})]})},o.key),t[30]=e,t[31]=s,t[32]=i,t[33]=l):l=t[33],x=N.map(l),t[25]=e,t[26]=s,t[27]=i,t[28]=N,t[29]=x}else x=t[29];let u;t[34]!==x?(u=r.jsx("div",{className:"min-w-0 flex-1 overflow-y-auto px-6 py-6",children:r.jsx("div",{className:"mx-auto max-w-xl space-y-6",children:x})}),t[34]=x,t[35]=u):u=t[35];let j;return t[36]!==u||t[37]!==y?(j=r.jsxs("div",{className:"flex h-full flex-col",children:[y,u]}),t[36]=u,t[37]=y,t[38]=j):j=t[38],j}export{Qr as RecordEditor};
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/registry-layout-DS-147fF.js","assets/index-DDaAKoW0.js","assets/index-C9I1mQ4O.css","assets/Tool02-SA8jP9Hu.js","assets/CheckCircle-vfAuoWt4.js","assets/Settings02-C-ER4E83.js","assets/use-mcp-client-CsOshLdU.js","assets/auth-Di48PY3e.js","assets/useInfiniteQuery-pYH7DqKD.js","assets/use-infinite-scroll-BQRZaNYS.js","assets/studio-tools-8ppZIkX1.js","assets/badge-Dwz2yyBf.js","assets/input-D1rxzLYS.js","assets/dropdown-menu-CdgaWjPI.js","assets/Check-B5z_XXZ6.js","assets/ChevronRight-CXdw3R_m.js","assets/DotsVertical-DOxvQtOm.js","assets/table-Ckc966ww.js","assets/toggle-group-CuhWPDV6.js","assets/use-view-mode-DZrsNFB2.js","assets/use-mobile-CrUyfv8i.js","assets/FilterLines-4TN65-__.js","assets/Globe01-YDAPmFPV.js","assets/SearchMd-Cdy9Z0au.js","assets/dialog-DsyeJr0O.js","assets/X-UbX4MdwG.js","assets/AlertCircle-15gFaLIc.js","assets/Download01-Bn5Q0wAS.js","assets/Upload01-m1kJ0UY7.js","assets/metadata-dUsYcpuu.js","assets/alert-dialog-CMOdBQ7s.js","assets/card-C5oWNz7H.js","assets/Trash01-Cy0oXJLu.js","assets/label-w7mJUKNI.js","assets/select-CYQVoO2Q.js","assets/tooltip-DziFRodn.js","assets/ChevronDown-C-HAbHMb.js","assets/ChevronUp-C01ncoUH.js","assets/switch-CVwLPYCh.js","assets/textarea-iyBfFkiQ.js","assets/ArrowLeft-DbXhopuJ.js","assets/XCircle-87JECNlp.js","assets/checkbox-h1hj2gPk.js","assets/Eye-DBP5goK0.js","assets/LinkExternal01-BADCzNEq.js","assets/use-copy-BSzy_Hv9.js","assets/Copy01-DlwQs5r0.js","assets/Key01-CUfOHXBo.js","assets/Plus-C2xKEO7r.js","assets/mcp-oauth-B0F9aZYH.js","assets/Play-BWck8aW7.js"])))=>i.map(i=>d[i]);
2
- import{c as i,j as e,r as s,k as a,aF as o}from"./index-DDaAKoW0.js";import{R as m}from"./require-capability--NHhV5un.js";import"./use-capability-BoueQ97o.js";import"./access-gate-B3xK3HdE.js";import"./capability-load-error-DNMTTcXq.js";const n=s.lazy(()=>o(()=>import("./registry-layout-DS-147fF.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50])));function f(){const r=i.c(1);let t;return r[0]===Symbol.for("react.memo_cache_sentinel")?(t=e.jsx(m,{capability:"registry:manage",area:"the registry",children:e.jsx(s.Suspense,{fallback:e.jsx("div",{className:"flex-1 flex items-center justify-center",children:e.jsx(a,{size:20,className:"animate-spin text-muted-foreground"})}),children:e.jsx(n,{})})}),r[0]=t):t=r[0],t}export{f as default};
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/registry-layout-DS-147fF.js","assets/index-DDaAKoW0.js","assets/index-C9I1mQ4O.css","assets/Tool02-SA8jP9Hu.js","assets/CheckCircle-vfAuoWt4.js","assets/Settings02-C-ER4E83.js","assets/use-mcp-client-CsOshLdU.js","assets/auth-Di48PY3e.js","assets/useInfiniteQuery-pYH7DqKD.js","assets/use-infinite-scroll-BQRZaNYS.js","assets/studio-tools-8ppZIkX1.js","assets/badge-Dwz2yyBf.js","assets/input-D1rxzLYS.js","assets/dropdown-menu-CdgaWjPI.js","assets/Check-B5z_XXZ6.js","assets/ChevronRight-CXdw3R_m.js","assets/DotsVertical-DOxvQtOm.js","assets/table-Ckc966ww.js","assets/toggle-group-CuhWPDV6.js","assets/use-view-mode-DZrsNFB2.js","assets/use-mobile-CrUyfv8i.js","assets/FilterLines-4TN65-__.js","assets/Globe01-YDAPmFPV.js","assets/SearchMd-Cdy9Z0au.js","assets/dialog-DsyeJr0O.js","assets/X-UbX4MdwG.js","assets/AlertCircle-15gFaLIc.js","assets/Download01-Bn5Q0wAS.js","assets/Upload01-m1kJ0UY7.js","assets/metadata-dUsYcpuu.js","assets/alert-dialog-CMOdBQ7s.js","assets/card-C5oWNz7H.js","assets/Trash01-Cy0oXJLu.js","assets/label-w7mJUKNI.js","assets/select-CYQVoO2Q.js","assets/tooltip-DziFRodn.js","assets/ChevronDown-C-HAbHMb.js","assets/ChevronUp-C01ncoUH.js","assets/switch-CVwLPYCh.js","assets/textarea-iyBfFkiQ.js","assets/ArrowLeft-DbXhopuJ.js","assets/XCircle-87JECNlp.js","assets/checkbox-h1hj2gPk.js","assets/Eye-DBP5goK0.js","assets/LinkExternal01-BADCzNEq.js","assets/use-copy-BSzy_Hv9.js","assets/Copy01-DlwQs5r0.js","assets/Key01-CUfOHXBo.js","assets/Plus-C2xKEO7r.js","assets/mcp-oauth-B0F9aZYH.js","assets/Play-BWck8aW7.js"])))=>i.map(i=>d[i]);
2
- import{c as m,d as n,f as c,j as t,k as f,r as l,aF as p}from"./index-DDaAKoW0.js";import{R as u}from"./require-capability--NHhV5un.js";import"./use-capability-BoueQ97o.js";import"./access-gate-B3xK3HdE.js";import"./capability-load-error-DNMTTcXq.js";const g=l.lazy(()=>p(()=>import("./registry-layout-DS-147fF.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50])));function j(){const e=m.c(5),i=n();let s;e[0]===Symbol.for("react.memo_cache_sentinel")?(s={from:"/shell/$org"},e[0]=s):s=e[0];const{org:o}=c(s);let r;e[1]===Symbol.for("react.memo_cache_sentinel")?(r=t.jsx("div",{className:"h-full flex items-center justify-center",children:t.jsx(f,{size:20,className:"animate-spin text-muted-foreground"})}),e[1]=r):r=e[1];let a;return e[2]!==i||e[3]!==o?(a=t.jsx(u,{capability:"registry:manage",area:"the registry",children:t.jsx(l.Suspense,{fallback:r,children:t.jsx(g,{onBack:()=>i({to:"/$org/settings/store",params:{org:o}})})})}),e[2]=i,e[3]=o,e[4]=a):a=e[4],a}export{j as default};
@@ -1 +0,0 @@
1
- import{I as u}from"./use-infinite-scroll-BQRZaNYS.js";import{e6 as i}from"./index-DDaAKoW0.js";function t(e,r){return i(e,u,r)}export{t as u};
@@ -1 +0,0 @@
1
- import{I as s}from"./use-infinite-scroll-BQRZaNYS.js";import{e6 as u,b3 as n}from"./index-DDaAKoW0.js";function a(e,r){return u({...e,enabled:!0,suspense:!0,throwOnError:n},s,r)}export{a as u};