decocms 4.197.2 → 4.197.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (225) hide show
  1. package/dist/client/assets/{AlertCircle-DpL6Tscn.js → AlertCircle-NmzMAVmw.js} +1 -1
  2. package/dist/client/assets/{AreaChart-CoEemB4J.js → AreaChart-BYIjl3rJ.js} +1 -1
  3. package/dist/client/assets/{ArrowLeft-BYRvhhFt.js → ArrowLeft-BqZUEXyW.js} +1 -1
  4. package/dist/client/assets/{ArrowUp-C_q46EO5.js → ArrowUp-BCLzfiqW.js} +1 -1
  5. package/dist/client/assets/{ArrowUpRight-CFDR0g1M.js → ArrowUpRight-D-fudPAG.js} +1 -1
  6. package/dist/client/assets/{Check-BChGvAW3.js → Check-BbUMdtEB.js} +1 -1
  7. package/dist/client/assets/{CheckCircle-BZAw7ZLj.js → CheckCircle-lND4am43.js} +1 -1
  8. package/dist/client/assets/{ChevronDown-DfMtmSgR.js → ChevronDown-YEIbEaB9.js} +1 -1
  9. package/dist/client/assets/{ChevronRight-PJs7Wj1v.js → ChevronRight-9kiQe2lI.js} +1 -1
  10. package/dist/client/assets/{ChevronUp-Dr2YqthP.js → ChevronUp-FpLPjlDC.js} +1 -1
  11. package/dist/client/assets/{Copy01-pcUw8cKn.js → Copy01-PdeOevpD.js} +1 -1
  12. package/dist/client/assets/{CpuChip01-CZAfbu8J.js → CpuChip01-BZKujEOv.js} +1 -1
  13. package/dist/client/assets/{CreditCard01-Be_a0Hl3.js → CreditCard01-Bk-xZKkR.js} +1 -1
  14. package/dist/client/assets/{DotsVertical-BuQlhNri.js → DotsVertical-C0mf2jrr.js} +1 -1
  15. package/dist/client/assets/{Eye-Cb8Ttsk7.js → Eye-DfD6NVFe.js} +1 -1
  16. package/dist/client/assets/{FilterLines-d91RyRXM.js → FilterLines-77Y_Gb6y.js} +1 -1
  17. package/dist/client/assets/{Globe01-B5iAXvY9.js → Globe01-fsAq-haQ.js} +1 -1
  18. package/dist/client/assets/{Globe04-CUj3yJ4H.js → Globe04-B0H6Y3Uk.js} +1 -1
  19. package/dist/client/assets/{HardDrive-C5Gg1Zd2.js → HardDrive-O4nUj4Zw.js} +1 -1
  20. package/dist/client/assets/{Key01-fVtj4fXs.js → Key01-Cq62OMyn.js} +1 -1
  21. package/dist/client/assets/{LayoutLeft-BL44UyAD.js → LayoutLeft-BZ_ZTxll.js} +1 -1
  22. package/dist/client/assets/{LinkExternal01-L9JYsRrc.js → LinkExternal01-Rkx-LjZW.js} +1 -1
  23. package/dist/client/assets/{LogOut01-BSEcdW7a.js → LogOut01-gn4PUPfe.js} +1 -1
  24. package/dist/client/assets/{Monitor01-0j7xzNTu.js → Monitor01-DF0X4J-5.js} +1 -1
  25. package/dist/client/assets/{Palette-DxEDEmZD.js → Palette-CnDXf6QD.js} +1 -1
  26. package/dist/client/assets/{Play-Ce3PIPIz.js → Play-C0pNXd5X.js} +1 -1
  27. package/dist/client/assets/{Plus-BshesZK9.js → Plus-hVnhGY-F.js} +1 -1
  28. package/dist/client/assets/{SearchLg-Bibw1E-2.js → SearchLg-DUdOPJQb.js} +1 -1
  29. package/dist/client/assets/{SearchMd-DuGOSj9Q.js → SearchMd-4jvTAx2B.js} +1 -1
  30. package/dist/client/assets/{Settings02-BO8Tyy4j.js → Settings02-B5vCwAEe.js} +1 -1
  31. package/dist/client/assets/{Share07-B90wnNYq.js → Share07-BN2A5BrW.js} +1 -1
  32. package/dist/client/assets/{Shield01-BEvfydMk.js → Shield01-DXJGXMRv.js} +1 -1
  33. package/dist/client/assets/{Star01-Cb4QEb-Y.js → Star01-zppHselX.js} +1 -1
  34. package/dist/client/assets/{Stars01-BbZWvgRz.js → Stars01-CWJsS_RV.js} +1 -1
  35. package/dist/client/assets/{Stars02-DnEwCMW-.js → Stars02-CgqBxehC.js} +1 -1
  36. package/dist/client/assets/{Sun-DqJVcwP1.js → Sun-CPlC65Hb.js} +1 -1
  37. package/dist/client/assets/{SwitchHorizontal01-BEcRH-iW.js → SwitchHorizontal01-PbA2uiCK.js} +1 -1
  38. package/dist/client/assets/{Tool01-BhAPypFm.js → Tool01-D9J2oKvi.js} +1 -1
  39. package/dist/client/assets/{Tool02-C1_VEvRQ.js → Tool02-DscIvHO8.js} +1 -1
  40. package/dist/client/assets/{Trash01-CqgwN4Ls.js → Trash01-Bsg8eBAz.js} +1 -1
  41. package/dist/client/assets/{TrendUp01-CgrsvLX5.js → TrendUp01-D2lvo_zP.js} +1 -1
  42. package/dist/client/assets/{Upload01-CuT2JdpQ.js → Upload01-jDZe8JbX.js} +1 -1
  43. package/dist/client/assets/{User01-Bv6oogoE.js → User01-B4kEYeVJ.js} +1 -1
  44. package/dist/client/assets/{Users01-mJuxxn4S.js → Users01-DeYOhjN1.js} +1 -1
  45. package/dist/client/assets/{Users03-Y9NuGIXU.js → Users03-DDLMQhsJ.js} +1 -1
  46. package/dist/client/assets/{X-Da1aH-NS.js → X-B6DUdYtn.js} +1 -1
  47. package/dist/client/assets/{XCircle-Bn-kiykC.js → XCircle-BoTs_6EA.js} +1 -1
  48. package/dist/client/assets/{XClose-DLc2n8Qt.js → XClose-CrUkr1eN.js} +1 -1
  49. package/dist/client/assets/{Zap-BZPI5EwL.js → Zap-B90JGMkV.js} +1 -1
  50. package/dist/client/assets/{ZapSquare-DjVa6YMe.js → ZapSquare-CQ4MGJc2.js} +1 -1
  51. package/dist/client/assets/{access-gate-CTmGk4ny.js → access-gate-DVICVaSr.js} +1 -1
  52. package/dist/client/assets/{agent-icon-BQVVDebW.js → agent-icon-rrdJQccN.js} +1 -1
  53. package/dist/client/assets/{agents-list-BtAmOQCg.js → agents-list-CVVvgAgq.js} +1 -1
  54. package/dist/client/assets/{ai-providers-DJEkLj9J.js → ai-providers-LSnRJVlw.js} +1 -1
  55. package/dist/client/assets/{alert-BVAzECwh.js → alert-BBviNjZY.js} +1 -1
  56. package/dist/client/assets/{alert-dialog-COu8iXMQ.js → alert-dialog-Qc4zz2Z8.js} +1 -1
  57. package/dist/client/assets/{app-editor-BGcVa7eq.js → app-editor-CeMGYFVY.js} +1 -1
  58. package/dist/client/assets/{auth-B6pkXjQ7.js → auth-C7PFvTm5.js} +1 -1
  59. package/dist/client/assets/{auth-catchall-DK_xsJXJ.js → auth-catchall-B_M0Frdg.js} +1 -1
  60. package/dist/client/assets/{auth-entry-Bhlelf2G.js → auth-entry-BzzzfVu6.js} +1 -1
  61. package/dist/client/assets/{auth-split-layout-CwgyRcqb.js → auth-split-layout-Nm9rRyUy.js} +1 -1
  62. package/dist/client/assets/{authenticate-and-persist-oauth-BpVUvoKT.js → authenticate-and-persist-oauth-CUxWEHdi.js} +1 -1
  63. package/dist/client/assets/{automation-list-row-B5UmktTU.js → automation-list-row-qrwIBo6n.js} +1 -1
  64. package/dist/client/assets/{automation-runs-9N6MOCSR.js → automation-runs-LNOdIOCC.js} +1 -1
  65. package/dist/client/assets/{automations-DhiUYcZJ.js → automations-CWBrNo-2.js} +1 -1
  66. package/dist/client/assets/{avatar-BewHuBZX.js → avatar-BIsdsBfg.js} +1 -1
  67. package/dist/client/assets/{badge-D2xVGCkQ.js → badge-BaqFEabe.js} +1 -1
  68. package/dist/client/assets/{billing-CmQ4_F49.js → billing-iR0Qpm8u.js} +1 -1
  69. package/dist/client/assets/{block-document-5eKtIwrA.js → block-document-CJilFLE_.js} +1 -1
  70. package/dist/client/assets/{brand-context-CQOR1JRF.js → brand-context-DEFxmPjL.js} +1 -1
  71. package/dist/client/assets/{buckets-CbWh9tHL.js → buckets-DVdl44fu.js} +1 -1
  72. package/dist/client/assets/{bulk-category-panel-vw_UiCK9.js → bulk-category-panel-DMBLomYn.js} +1 -1
  73. package/dist/client/assets/{capability-load-error-ChNs0ivS.js → capability-load-error-DYLpe5fS.js} +1 -1
  74. package/dist/client/assets/{card-BSXmZFDc.js → card-CM5akYHG.js} +1 -1
  75. package/dist/client/assets/{cards-C_ZfN-TN.js → cards-BWDL4nGv.js} +1 -1
  76. package/dist/client/assets/{category-editor-BvO3r5Uv.js → category-editor-CtvGxP-l.js} +1 -1
  77. package/dist/client/assets/{chat-context-IT6-9MAd.js → chat-context-C_h408Ww.js} +1 -1
  78. package/dist/client/assets/{checkbox-BgjJh_IR.js → checkbox-Cs-HHM5S.js} +1 -1
  79. package/dist/client/assets/{cli-auth-success-C7XkmqSU.js → cli-auth-success-B8HSyMMz.js} +1 -1
  80. package/dist/client/assets/{collection-detail-BEWtP7VK.js → collection-detail-DXhdRjWR.js} +1 -1
  81. package/dist/client/assets/{collection-display-button-7li8NxCF.js → collection-display-button-CUZ2_1xA.js} +1 -1
  82. package/dist/client/assets/{collection-search-Cs9k9yDL.js → collection-search-K3lEMJU7.js} +1 -1
  83. package/dist/client/assets/{collection-table-wrapper-DmrgVBtr.js → collection-table-wrapper-DNsVZLQE.js} +1 -1
  84. package/dist/client/assets/{collection-tabs-CKgPXLEH.js → collection-tabs-xM4oM7Vs.js} +1 -1
  85. package/dist/client/assets/{command-5Lnlz65r.js → command-DUnvCxMJ.js} +1 -1
  86. package/dist/client/assets/{commerce-onboarding-DB4wxRkI.js → commerce-onboarding-C_8EdxKm.js} +1 -1
  87. package/dist/client/assets/{connect-DLLr0eli.js → connect-DoJXU7Sy.js} +1 -1
  88. package/dist/client/assets/{connection-BeaSWl0G.js → connection-BSt_UeoK.js} +1 -1
  89. package/dist/client/assets/{connection-card-B4imN2NA.js → connection-card-gs2UtwYH.js} +1 -1
  90. package/dist/client/assets/{connection-detail-jZf8lrsJ.js → connection-detail-BGxlHhxK.js} +1 -1
  91. package/dist/client/assets/{connection-form-helpers-BL4WThpd.js → connection-form-helpers-D_Pjxbna.js} +1 -1
  92. package/dist/client/assets/{connections-Daze9dwe.js → connections-Br2j8vr6.js} +1 -1
  93. package/dist/client/assets/{decopilot-sse-pool-DzGiYipX.js → decopilot-sse-pool-D9Pqy2Fl.js} +1 -1
  94. package/dist/client/assets/{dialog-BJziDe4N.js → dialog-DxaaeVaW.js} +1 -1
  95. package/dist/client/assets/{domain-settings-CNlG2fTt.js → domain-settings-RwNQmaxT.js} +1 -1
  96. package/dist/client/assets/{drawer-CuRFEVgy.js → drawer-Crvh4X-Y.js} +1 -1
  97. package/dist/client/assets/{dropdown-menu-B0uYlxff.js → dropdown-menu-RvBTITp-.js} +1 -1
  98. package/dist/client/assets/{empty-state-uZ77Jd0v.js → empty-state-DEUcFsmC.js} +1 -1
  99. package/dist/client/assets/{extract-connection-data-CTTtSTKN.js → extract-connection-data-S1oM80Ui.js} +1 -1
  100. package/dist/client/assets/{file-explorer-B1hKgrle.js → file-explorer-BciDFjBB.js} +1 -1
  101. package/dist/client/assets/{file-type-icon-DRHukJhb.js → file-type-icon-9XYnFs3i.js} +1 -1
  102. package/dist/client/assets/{form-BLZEj5M6.js → form-DTJo1d1H.js} +1 -1
  103. package/dist/client/assets/{general-C9-Gh9Un.js → general-Bf93sGPR.js} +1 -1
  104. package/dist/client/assets/{github-repo-picker-DDtjb7BS.js → github-repo-picker-CXlStJdI.js} +1 -1
  105. package/dist/client/assets/{hooks-8AOqxrL3.js → hooks-DSfiEzV1.js} +1 -1
  106. package/dist/client/assets/{index-BXi8XGVO.js → index-9A9eMIPG.js} +5 -5
  107. package/dist/client/assets/{index-D-mYizx7.js → index-BEgZFoIS.js} +1 -1
  108. package/dist/client/assets/{index-COtjVgHq.js → index-BKEqC31Z.js} +1 -1
  109. package/dist/client/assets/{index-BrfCenfw.js → index-BTJaLrMk.js} +1 -1
  110. package/dist/client/assets/{index-CFP6oHuE.js → index-Bj5hhYPs.js} +1 -1
  111. package/dist/client/assets/{index-a0gG7b2j.js → index-BtcO4zl9.js} +1 -1
  112. package/dist/client/assets/{index-BbwXrbtX.js → index-DZ8xGwLm.js} +1 -1
  113. package/dist/client/assets/{index-iB09S4ZI.js → index-DjImUJDm.js} +24 -24
  114. package/dist/client/assets/{index-BBVhZ0nf.js → index-QHL1p3mq.js} +1 -1
  115. package/dist/client/assets/{index-BJ_5870q.js → index-q1EqeeiP.js} +1 -1
  116. package/dist/client/assets/{index-redirect-BF972uE7.js → index-redirect-Bks4SJMt.js} +1 -1
  117. package/dist/client/assets/{input-DuPzhhSH.js → input-CV7dIBST.js} +1 -1
  118. package/dist/client/assets/{integration-icon-oWKr_bxS.js → integration-icon-ZFpGJDaw.js} +1 -1
  119. package/dist/client/assets/{invite-member-dialog-CtMeBe4Q.js → invite-member-dialog-CVPAbQsL.js} +1 -1
  120. package/dist/client/assets/{label-BEZ9ozrm.js → label-Cnu4EpS3.js} +1 -1
  121. package/dist/client/assets/{layout-Dob62ohh.js → layout-BzcHaHp3.js} +1 -1
  122. package/dist/client/assets/{login-Cps8QMpx.js → login-CUjCa53F.js} +1 -1
  123. package/dist/client/assets/{mcp-oauth-DznHTp7Q.js → mcp-oauth-DBDKHwqh.js} +1 -1
  124. package/dist/client/assets/{members-CAYkzsAC.js → members-DGYu-lnf.js} +1 -1
  125. package/dist/client/assets/{monaco-editor-Dtn0c3c0.js → monaco-editor-BNxhoyLv.js} +1 -1
  126. package/dist/client/assets/{monitoring-stats-row-C1iTJegD.js → monitoring-stats-row-4XZUJ0h4.js} +1 -1
  127. package/dist/client/assets/{multi-select-CReOgu2V.js → multi-select-DYfViK-H.js} +1 -1
  128. package/dist/client/assets/{oauth-callback-CfZVz1X4.js → oauth-callback-DvuCS9gx.js} +1 -1
  129. package/dist/client/assets/{oauth-callback-ai-provider-B1dx_9ZA.js → oauth-callback-ai-provider-o2E_L7gO.js} +1 -1
  130. package/dist/client/assets/{onboarding-DknY2NdT.js → onboarding-CdYaPyDm.js} +1 -1
  131. package/dist/client/assets/{org-layout-KBNyDeMT.js → org-layout-B4XLNJ44.js} +1 -1
  132. package/dist/client/assets/{organization-choice-ybvzTqcR.js → organization-choice-DB4SE33o.js} +1 -1
  133. package/dist/client/assets/{orgs-COLTkKC_.js → orgs-C5kTAC3i.js} +1 -1
  134. package/dist/client/assets/{page-seo-form-1U1qn7k0.js → page-seo-form-ByzIv7Xf.js} +1 -1
  135. package/dist/client/assets/{popover-CIeMy6Tl.js → popover-BUkmTztD.js} +1 -1
  136. package/dist/client/assets/{post-editor-CkHk9dRs.js → post-editor-CeZtdlkU.js} +1 -1
  137. package/dist/client/assets/{primitives-DGQ7OHkr.js → primitives-DMyHwQnc.js} +1 -1
  138. package/dist/client/assets/{profile-BRNaLNV6.js → profile-CRQfWAuq.js} +1 -1
  139. package/dist/client/assets/{project-app-view-C5RyuF-3.js → project-app-view-CzFjbHfi.js} +1 -1
  140. package/dist/client/assets/record-editor-efUDvpNx.js +1 -0
  141. package/dist/client/assets/{redirect-editor-8_yPdNmf.js → redirect-editor-sr-hqzhn.js} +1 -1
  142. package/dist/client/assets/registry-BF43gjsG.js +2 -0
  143. package/dist/client/assets/{registry-layout-C7e1ipww.js → registry-layout-Cq_VEsC7.js} +1 -1
  144. package/dist/client/assets/{reports-DCysDfGk.js → reports-DVU4FZBp.js} +1 -1
  145. package/dist/client/assets/{require-capability-Bmfc_FY6.js → require-capability-CwYRgphU.js} +1 -1
  146. package/dist/client/assets/{required-auth-layout-Km00f7IG.js → required-auth-layout-Bj3pqIWj.js} +1 -1
  147. package/dist/client/assets/{reset-password-D4fQnma9.js → reset-password-B-2GF1bi.js} +1 -1
  148. package/dist/client/assets/{roles-BqFKhya9.js → roles-CDgCG57q.js} +1 -1
  149. package/dist/client/assets/{search-input-DCThR-Dd.js → search-input-DYD8oTKQ.js} +1 -1
  150. package/dist/client/assets/{secrets-BRNaisMH.js → secrets-DPQAtetn.js} +1 -1
  151. package/dist/client/assets/sections-editor-BUWGlbBj.js +2 -0
  152. package/dist/client/assets/{select-C2aLiaQD.js → select-CRyQr4Bi.js} +1 -1
  153. package/dist/client/assets/{select-model-DnRANcdl.js → select-model-sEJXJ6Gh.js} +1 -1
  154. package/dist/client/assets/{self-tool-result-BWr3V3Nr.js → self-tool-result-VNMlGhqz.js} +1 -1
  155. package/dist/client/assets/{seo-editor-DcJ6zdOl.js → seo-editor-Dpq-M7Hw.js} +1 -1
  156. package/dist/client/assets/{settings-layout-BaMialle.js → settings-layout-B2nIXCpF.js} +1 -1
  157. package/dist/client/assets/{settings-section-CSObNV42.js → settings-section-kT-Vq-X_.js} +1 -1
  158. package/dist/client/assets/{shell-controls-smJY73O8.js → shell-controls-j2gFECu2.js} +1 -1
  159. package/dist/client/assets/{shell-layout-uIkLH9Oh.js → shell-layout-zs-DlKJl.js} +1 -1
  160. package/dist/client/assets/{sidebar-Bo-R194o.js → sidebar-BN3tYOOR.js} +1 -1
  161. package/dist/client/assets/{skeleton-BwgcAM0S.js → skeleton-BPiULN8t.js} +1 -1
  162. package/dist/client/assets/{spinner-DEPr-FcG.js → spinner-D9ZfyuOI.js} +1 -1
  163. package/dist/client/assets/{sso-CoqOt_Zo.js → sso-Cq8NWYnm.js} +1 -1
  164. package/dist/client/assets/{store-w2v-rh3j.js → store-BzFx41PG.js} +1 -1
  165. package/dist/client/assets/store-registry-B4Tc43a_.js +2 -0
  166. package/dist/client/assets/{studio-tools-CIwEdQH6.js → studio-tools-BNxc8tj7.js} +1 -1
  167. package/dist/client/assets/{switch-BPqfZ-jC.js → switch-BQlFrW26.js} +1 -1
  168. package/dist/client/assets/{synced-repos-ZOIM6muH.js → synced-repos-D7AUfeav.js} +1 -1
  169. package/dist/client/assets/{tab-id-DepDDA9_.js → tab-id-CToDOy87.js} +1 -1
  170. package/dist/client/assets/{table-K5tRinKE.js → table-B-vhdRxV.js} +1 -1
  171. package/dist/client/assets/{tabs-BI2WYCWM.js → tabs-ZwxS9voP.js} +1 -1
  172. package/dist/client/assets/{textarea-D00WtAVC.js → textarea-0VMzjCIH.js} +1 -1
  173. package/dist/client/assets/{toggle-group-BQuU-V-J.js → toggle-group-GZ83mK8H.js} +1 -1
  174. package/dist/client/assets/{toolbar-2JK6-CKe.js → toolbar-ChM83MHl.js} +1 -1
  175. package/dist/client/assets/{tooltip-dxFFf5TO.js → tooltip-DDHv7YBT.js} +1 -1
  176. package/dist/client/assets/{use-ai-providers-pOnoTtq9.js → use-ai-providers-Cmy5m9BE.js} +1 -1
  177. package/dist/client/assets/{use-automations-BhU30_ns.js → use-automations-DSiziGjM.js} +1 -1
  178. package/dist/client/assets/{use-autosave-DVVHS6oi.js → use-autosave-CC9da1mt.js} +1 -1
  179. package/dist/client/assets/{use-capability-DtqmBc0p.js → use-capability-B70fP-uk.js} +1 -1
  180. package/dist/client/assets/{use-clock-tick-B7KDRjlj.js → use-clock-tick-BF_YS7rZ.js} +1 -1
  181. package/dist/client/assets/{use-connection-1XceIaVt.js → use-connection-Cv7J3nQV.js} +1 -1
  182. package/dist/client/assets/{use-copy-D6dj3bWn.js → use-copy-1XKrNDn3.js} +1 -1
  183. package/dist/client/assets/{use-create-virtual-mcp-CzcLHs5g.js → use-create-virtual-mcp-DYcDcbrT.js} +1 -1
  184. package/dist/client/assets/{use-debounced-autosave-DlgUqdX2.js → use-debounced-autosave-DV0Zu4T5.js} +1 -1
  185. package/dist/client/assets/{use-debounced-value-sAF9FOgW.js → use-debounced-value-CqN3VgOq.js} +1 -1
  186. package/dist/client/assets/{use-deco-credits-D-5thmbQ.js → use-deco-credits-BSkPgBRZ.js} +1 -1
  187. package/dist/client/assets/{use-decopilot-events-CL16kVza.js → use-decopilot-events-DDG-UPLr.js} +1 -1
  188. package/dist/client/assets/{use-delete-connection-BAO101Zg.js → use-delete-connection-CB2zp0UH.js} +1 -1
  189. package/dist/client/assets/{use-deployment-admin-QIdZGKie.js → use-deployment-admin-Ctzgip_0.js} +1 -1
  190. package/dist/client/assets/{use-file-configs-CCGLmbGB.js → use-file-configs-Da8of_iX.js} +1 -1
  191. package/dist/client/assets/{use-infinite-scroll-0GwuWQ18.js → use-infinite-scroll-DwOI82m8.js} +1 -1
  192. package/dist/client/assets/{use-join-requests-bV_612yf.js → use-join-requests-DmauPIK2.js} +1 -1
  193. package/dist/client/assets/{use-mcp-client-XuHEw0sL.js → use-mcp-client-Qf3XY9OZ.js} +1 -1
  194. package/dist/client/assets/{use-mcp-tools-DMU5G4E6.js → use-mcp-tools-COTN4Z-p.js} +1 -1
  195. package/dist/client/assets/{use-members-B17dnJUi.js → use-members-BRjfo-wQ.js} +1 -1
  196. package/dist/client/assets/{use-mobile-CLmBmZlL.js → use-mobile-yusI84yr.js} +1 -1
  197. package/dist/client/assets/{use-navigate-to-agent-CesLlenP.js → use-navigate-to-agent-VUgYmVoK.js} +1 -1
  198. package/dist/client/assets/{use-open-billing-url-CqXZzDqc.js → use-open-billing-url-C5gQmJFw.js} +1 -1
  199. package/dist/client/assets/{use-org-auth-client-DK9eV4Q0.js → use-org-auth-client-Dzta_o-v.js} +1 -1
  200. package/dist/client/assets/{use-org-sso-BXikBwjB.js → use-org-sso-fgbvUmJ5.js} +1 -1
  201. package/dist/client/assets/{use-organization-roles-B2laqgqT.js → use-organization-roles-BZGiirNU.js} +1 -1
  202. package/dist/client/assets/{use-organization-settings-DYNBSfY0.js → use-organization-settings-ONWmb3c4.js} +1 -1
  203. package/dist/client/assets/{use-registry-connections-dmTn3QTb.js → use-registry-connections-BcIrFS3a.js} +1 -1
  204. package/dist/client/assets/{use-secrets-hMAD_KTZ.js → use-secrets-M1IUHhPg.js} +1 -1
  205. package/dist/client/assets/{use-section-preview-base-PhK7SdcU.js → use-section-preview-base-Df-cVhqN.js} +1 -1
  206. package/dist/client/assets/{use-status-sounds-DwKPBF6E.js → use-status-sounds-DlCodNQH.js} +1 -1
  207. package/dist/client/assets/{use-tags-L_TWFhNu.js → use-tags-CrJi53YY.js} +1 -1
  208. package/dist/client/assets/{use-view-mode-DqkubEXN.js → use-view-mode-BBSZ7d_G.js} +1 -1
  209. package/dist/client/assets/{use-virtual-mcp-DF86UjN0.js → use-virtual-mcp-Cl0SjVCh.js} +1 -1
  210. package/dist/client/assets/useInfiniteQuery-ByPwT01F.js +1 -0
  211. package/dist/client/assets/{useRouterState-D2ZtXguJ.js → useRouterState-uHirJO7Y.js} +1 -1
  212. package/dist/client/assets/useSuspenseInfiniteQuery-CF3hhGhm.js +1 -0
  213. package/dist/client/assets/{users-CvU9p_s9.js → users-CZLtaBwI.js} +1 -1
  214. package/dist/client/assets/{variant-calendar-_7CExyc2.js → variant-calendar-BtdRJ2T6.js} +1 -1
  215. package/dist/client/assets/{view-mode-toggle-CpJaPhlH.js → view-mode-toggle-CrD48-Do.js} +1 -1
  216. package/dist/client/index.html +1 -1
  217. package/dist/server/cli.js +2 -2
  218. package/dist/server/server.js +2 -2
  219. package/package.json +1 -1
  220. package/dist/client/assets/record-editor-COdvBBun.js +0 -1
  221. package/dist/client/assets/registry-rkWiCYrV.js +0 -2
  222. package/dist/client/assets/sections-editor-DW1awDYx.js +0 -2
  223. package/dist/client/assets/store-registry-DqEl1DEk.js +0 -2
  224. package/dist/client/assets/useInfiniteQuery-CaMxVBWb.js +0 -1
  225. package/dist/client/assets/useSuspenseInfiniteQuery-CGDHD714.js +0 -1
@@ -1502,7 +1502,7 @@ Use this to continue with the user's request \u2014 do NOT call subtask again fo
1502
1502
  Task description:
1503
1503
  ${Z.description}
1504
1504
  `:"","How to work:",`- Call \`${K}\` with the task id below to find the pull request under review.`,J?`- The repository ${J.owner}/${J.name} is already cloned at your working directory and \`git\` and \`gh\` are authenticated \u2014 check the PR's branch out there to inspect / exercise the change.`:W?"- Your working directory is EMPTY. Call `mcp__studio__TASK_ADD_REPO` with the connectionId of the PR's repository FIRST; it clones the repository and waits for the checkout, and `git` and `gh` are authenticated once it returns.":"- Load the PR's repository to inspect / exercise the change.",`- End the run by calling \`${H}\` exactly once with the task id, reviewer "${X}", the reviewToken below, and your decision:`," - `approve` when it's good to ship. Include a short summary of what you verified."," - `request_changes` when something is wrong or missing. Include specific, actionable notes \u2014 the task goes back to the Super Agent with your notes.","- The reviewToken proves you are this reviewer \u2014 pass it through EXACTLY as given. Without it your approval won't count toward an automatic merge.",`- \`${H}\` is how the verdict is recorded. A review that ends without it is thrown away and the task stays stuck In Review, so call it even when your notes are short.`,"",`(task id: ${Z.id})`,`(reviewToken: ${Q})`].join(`
1505
- `);await Fn($,Z,{runClass:"reviewer",title:`${Mm[X]}: ${Z.title}`,prompt:F,temperature:0.3,...W?{harnessId:"claude-code",agent:{instructions:N,disallowedTools:XH4[X]}}:{},...J?{repo:J}:{}}),await VZ($,{taskBoardItemId:Z.id,action:"review_requested",actorId:null,data:{reviewer:X}});let U=await $.storage.taskBoard.getById(Z.id,Y);if(U)q6(Y,U)}var S3$,XH4,QH4,YH4=2;var Nn0=B(()=>{Z7();HK();SZ();Wn0();Hn0();S3$=new Set(["completed","failed","expired"]),XH4={qa:["Edit","NotebookEdit"],code_review:["Write","Edit","NotebookEdit"]},QH4={qa:"You are the QA Agent. Your job is to confirm the task ACTUALLY SOLVED THE "+"PROBLEM \u2014 not to review code style. Exercise the feature/behavior the task "+"describes (use the PR's preview / dev server when available), check the acceptance criteria implied by the title and description, and look for regressions in the affected flow. Judge outcomes, not the diff.",code_review:"You are the Code Reviewer. Review the code changes for correctness, security, and quality. FIRST look for a review skill/command appropriate to this repository's stack (e.g. a `/review`, `code-review`, or `security-review` skill, or the repo's CONTRIBUTING/review guidelines) and use it. Read the diff critically and flag concrete issues with file/line references."}});function HH4($){return $.filter((X)=>X.action==="merge_conflict_resolution").length>=V3$}async function kw0($,Z,X,Q){if(X.status!=="in_review")return!1;if(X.assigneeId!==o4)return!1;if(Q.conflict!==!0)return!1;let G=(await $.storage.organizationSettings.get(Z))?.flags??{};if(G.auto_merge!==!0)return!1;let J=$3.filter((N)=>G[Nw[N]]===!0),W=await $.storage.taskBoard.listActivity(X.id,Z);if(!bf(W,J,{verifiedOnly:!0}))return!1;if(HH4(W))return console.warn(`[task-board] conflict auto-resolve cap (${V3$}) reached on task ${X.id} \u2014 leaving the PR for a human`),!1;let K=Q.pr,H=await $.storage.taskBoard.claimConflictResolution(X.id,Z,X.updatedBy);if(!H)return!1;await VZ($,{taskBoardItemId:X.id,action:"merge_conflict_resolution",actorId:null,data:{prNumber:K.number}}),q6(Z,H);try{await IN($,H,{pr:{number:K.number,url:K.url},resolveConflict:!0})}catch(N){throw await $.storage.taskBoard.update(H.id,Z,{status:"in_review"},"system").then((F)=>q6(Z,F)).catch((F)=>console.error("[task-board] conflict-resolution status revert failed",F)),N}return!0}var V3$=3;var Fn0=B(()=>{Z7();HK();SZ();QO()});import{z as Sw0}from"zod";function NH4($){let Z=$ instanceof Error?$.message:String($);return/too many requests|rate limit|\b429\b/i.test(Z)}function _3$($){C3$.invalidate($)}async function Dn0($,Z,X,Q,Y,G){try{let J=await C3$.fetch({type:"tools/call",connectionId:Z,scope:{kind:"org"},params:{name:X,arguments:Q},fetchLive:()=>yZ(async()=>{let W=await $.callTool({name:X,arguments:Q},void 0,{timeout:Vw0});if(W&&typeof W==="object"&&W.isError)throw Error(W.content?.[0]?.text??`${X} returned isError`);return W},{maxAttempts:3,minTimeout:300,maxTimeout:3000,jitter:1,isRetriable:(W)=>!NH4(W)}),onRevalidation:(W)=>G.push(W)});return Cw0(J)}catch(J){let W=J instanceof ZJ?J.cause:J;return console.error(`[task-board] ${X} failed for ${Y}:`,W),null}}async function fx($,Z,X,Q){if(X){let J=await $.storage.connections.findById(X,Z);if(J&&J.status==="active")return J}let{items:Y}=await $.storage.connections.list(Z,{slug:"mcp-github"}),G=Y.filter((J)=>J.status==="active");if(Q){let J=G.find((W)=>{let K=q9(W);return K?.owner===Q.owner&&K?.repo===Q.name});if(J)return J}return G.find((J)=>q9(J)===null)??G[0]??null}function Cw0($){if(!$||typeof $!=="object")return null;let Z=$;if(Z.isError)return null;if(Z.structuredContent&&typeof Z.structuredContent==="object"&&Object.keys(Z.structuredContent).length>0)return Z.structuredContent;let X=Z.content?.find((Q)=>Q.type==="text")?.text;if(!X)return null;try{return JSON.parse(X)}catch{return null}}function On0($){let Z;try{Z=new URL($).hostname.toLowerCase()}catch{return!1}return Z==="deco.site"||Z.endsWith(".decocdn.com")||Z.endsWith(".deco-cx.workers.dev")||Z.endsWith(".deco.site")||Z.endsWith(".vercel.app")||Z.endsWith(".preview.vtex.app")}function FH4($){if(!$||!Array.isArray($.statuses))return null;let Z=$.statuses.map((X)=>X&&typeof X==="object"?X:null).filter((X)=>!!X&&typeof X.target_url==="string"&&On0(X.target_url));if(Z.length===0)return null;return Z.find((X)=>X.state==="success")?.target_url??Z[0].target_url}function UH4($){let Z=Array.isArray($)?$:Array.isArray($?.comments)?$.comments:Array.isArray($?.items)?$.items:[],X=(Y)=>{let G=Y;return Date.parse(G?.updated_at)||Date.parse(G?.created_at)},Q=Z.map((Y,G)=>({c:Y,index:G})).sort((Y,G)=>{let J=X(Y.c),W=X(G.c);if(Number.isNaN(J)||Number.isNaN(W))return Y.index-G.index;return W-J}).map(({c:Y})=>Y);for(let Y of Q){let G=Y&&typeof Y.body==="string"?Y.body:"";if(!G)continue;let J=G.match(/href=['"]([^'"]+)['"][^>]*>\s*Branch Preview/i);if(J?.[1]&&On0(J[1]))return J[1];let W=(G.match(/https?:\/\/[^\s"'<>)\]]+/g)??[]).find((K)=>On0(K));if(W)return W}return null}function v3$($){if(!$)return null;if((typeof $.total_count==="number"?$.total_count:null)===0)return null;switch($.state){case"success":return"passing";case"failure":case"error":return"failing";case"pending":return"pending";default:return null}}function f3$($){let Z=Array.isArray($)?$:Array.isArray($?.check_runs)?$.check_runs:[];if(Z.length===0)return null;let X=!1,Q=!1;for(let Y of Z){if(!Y||typeof Y!=="object")continue;let{status:G,conclusion:J}=Y;if(G!=="completed")Q=!0;else if(typeof J==="string"&&b3$.has(J))X=!0}if(X)return"failing";if(Q)return"pending";return"passing"}function x3$($,Z){if($==="failing"||Z==="failing")return"failing";if($==="pending"||Z==="pending")return"pending";if($==="passing"||Z==="passing")return"passing";return null}function wH4($){let Z=Array.isArray($)?$:Array.isArray($?.check_runs)?$.check_runs:[],X=[];for(let Q of Z){if(!Q||typeof Q!=="object")continue;let Y=Q;X.push({id:typeof Y.id==="number"?Y.id:null,name:typeof Y.name==="string"?Y.name:"",status:typeof Y.status==="string"?Y.status:"completed",conclusion:typeof Y.conclusion==="string"?Y.conclusion:null,detailsUrl:typeof Y.html_url==="string"?Y.html_url:typeof Y.details_url==="string"?Y.details_url:null})}return X}function OH4($){return $.status==="completed"&&$.conclusion!=null&&b3$.has($.conclusion)}async function BH4($,Z,X,Q,Y){let J=(await Dn0($,Z,"GET_CHECK_RUN",{owner:X.repoOwner,repo:X.repoName,checkRunId:Q},`${Bn0(X)} check-run ${Q}`,Y))?.output,W=typeof J?.summary==="string"?J.summary:null,K=typeof J?.text==="string"?J.text:null;return W??K??null}async function y3$($,Z,X){let Q=await fx($,Z,X.connectionId,{owner:X.repoOwner,name:X.repoName});if(!Q)return null;let Y=await E5(Q,$,!0),G=async(J)=>Cw0(await Y.callTool({name:"pull_request_read",arguments:{method:J,owner:X.repoOwner,repo:X.repoName,pullNumber:X.number}},void 0,{timeout:Vw0}));try{let J=null;try{J=v3$(await G("get_status"))}catch{}try{J=x3$(J,f3$(await G("get_check_runs")))}catch{}return J}finally{await Y.close().catch(()=>{})}}function g3$($){if(!$)return null;if($.state!=="open")return!1;return typeof $.mergeable==="boolean"?!$.mergeable:null}async function h3$($,Z,X){let Q=await fx($,Z,X.connectionId,{owner:X.repoOwner,name:X.repoName});if(!Q)return null;let Y=await E5(Q,$,!0);try{return g3$(Cw0(await Y.callTool({name:"pull_request_read",arguments:{method:"get",owner:X.repoOwner,repo:X.repoName,pullNumber:X.number}},void 0,{timeout:Vw0})))}catch{return null}finally{await Y.close().catch(()=>{})}}async function DH4($,Z,X,Q){let Y=(F)=>Dn0($,Z,"pull_request_read",{method:F,owner:X.repoOwner,repo:X.repoName,pullNumber:X.number},`${Bn0(X)} (${F})`,Q),[G,J,W]=await Promise.all([Y("get_status"),Y("get_check_runs"),Y("get_comments")]),K=x3$(v3$(G),f3$(J)),H=FH4(G)??UH4(W),N=await Promise.all(wH4(J).map(async(F)=>({name:F.name,status:F.status,conclusion:F.conclusion,detailsUrl:F.detailsUrl,summary:OH4(F)&&F.id!=null?await BH4($,Z,X,F.id,Q):null})));return{checksStatus:K,checks:N,previewUrl:H}}async function En0($,Z,X){let Q=await fx($,Z,X.connectionId,{owner:X.repoOwner,name:X.repoName});if(!Q)return wn0;let Y=await E5(Q,$,!0),G=[];try{let[J,W]=await Promise.all([Dn0(Y,Q.id,"pull_request_read",{method:"get",owner:X.repoOwner,repo:X.repoName,pullNumber:X.number},`${Bn0(X)} (get)`,G),DH4(Y,Q.id,X,G)]);if(!J)return wn0;let K=J.state,H=K==="open";return{title:typeof J.title==="string"?J.title:null,body:typeof J.body==="string"?J.body:null,state:K==="closed"?"closed":H?"open":null,draft:typeof J.draft==="boolean"?J.draft:null,merged:typeof J.merged==="boolean"?J.merged:null,mergeable:H&&typeof J.mergeable==="boolean"?J.mergeable:null,checksStatus:H?W.checksStatus:null,checks:H?W.checks:[],previewUrl:H?W.previewUrl:null}}catch{return wn0}finally{Promise.allSettled(G).then(()=>Y.close().catch(()=>{}))}}async function u3$($,Z,X){let Q=await fx($,Z,X.connectionId,{owner:X.repoOwner,name:X.repoName});if(!Q)return null;let Y=await E5(Q,$,!0);try{let G=Cw0(await Y.callTool({name:"pull_request_read",arguments:{method:"get",owner:X.repoOwner,repo:X.repoName,pullNumber:X.number}},void 0,{timeout:Vw0}));if(!G||G.state!=="open")return null;let J=G.head?.ref;return typeof J==="string"&&J.length>0?J:null}catch{return null}finally{await Y.close().catch(()=>{})}}var Vw0=8000,Un0,C3$,Bn0=($)=>`${$.repoOwner}/${$.repoName}#${$.number}`,wn0,b3$,Ln0=($)=>{let Z=$.find((X)=>X.state!=="closed"&&X.merged!==!0);return Z!=null&&Z.checksStatus!=="pending"&&Z.checksStatus!=="failing"},jn0;var xx=B(()=>{b0();mH();EG();Z7();L6();Um();sW();HK();SZ();Nn0();Fn0();Un0={revalidateAfterMs:55000,maxStaleMs:1800000,maxValueBytes:524288},C3$=new L60({"tools/call":Un0,"resources/read":Un0,"prompts/get":Un0});wn0={title:null,body:null,state:null,draft:null,merged:null,mergeable:null,checksStatus:null,checks:[],previewUrl:null};b3$=new Set(["failure","cancelled","timed_out","action_required","startup_failure","stale"]);jn0=d({name:"TASK_BOARD_ITEM_PRS_GET",description:"Get the GitHub pull requests linked to a task board item, each enriched with live state (title, open/closed, draft, merged) fetched from GitHub.",annotations:{title:"Get Task Board Item Pull Requests",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},inputSchema:Sw0.object({taskBoardItemId:Sw0.string()}),outputSchema:Sw0.object({prs:Sw0.array(fZ$)}),handler:async({taskBoardItemId:$},Z)=>{$0(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");let Q=await Z.storage.taskBoard.getById($,X),Y=await Z.storage.taskBoard.listPrs($,X),G=await Promise.all(Y.map(async(K)=>{let H=await En0(Z,X,K);return{url:K.url,number:K.number,repoOwner:K.repoOwner,repoName:K.repoName,createdAt:K.createdAt,...H}})),J=G.find((K)=>K.state==="open"&&!K.merged);if(Q&&Q.status==="in_review"&&Q.assigneeId===o4&&Ln0(G))await Mw0(Z,Q).catch((K)=>{console.error("[task-board] reviewer auto-handoff failed",K)});let W=J?g3$({state:J.state,mergeable:J.mergeable}):null;if(Q&&Q.status==="in_review"&&Q.assigneeId===o4&&J&&W===!0)await kw0(Z,X,Q,{pr:{number:J.number,url:J.url},conflict:!0}).catch((K)=>{console.error("[task-board] conflict auto-resolve failed",K)});if(G.some((K)=>K.merged))try{if(Q&&Q.status!=="done"){let K=await Z.storage.taskBoard.update($,X,{status:"done"},Q.updatedBy);await VZ(Z,{taskBoardItemId:$,action:"status_changed",actorId:null,data:{from:Q.status,to:"done"}}),q6(X,K)}}catch(K){console.error("[task-board] merge\u2192done reconcile failed",K)}return{prs:G}}})});async function yx($,Z){if(Z.assigneeId!==o4)return;await IN($,Z).catch((X)=>{if(X instanceof AG)throw X;console.error("[task-board] Super Agent enqueue failed",X)})}function LH4($,Z){return["You've been assigned this task. Complete it.","","You are running AUTONOMOUSLY \u2014 no human is watching this run, so drive it "+"to completion on your own. Use `user_ask` ONLY for a genuine, unresolvable blocker a human must clear (a missing credential/secret, or "+"a decision so ambiguous you truly cannot proceed) \u2014 that should be rare. "+"Do not ask for confirmation of a reasonable choice; make it and move on.","",`Title: ${$.title}`,$.description?`
1505
+ `);await Fn($,Z,{runClass:"reviewer",title:`${Mm[X]}: ${Z.title}`,prompt:F,temperature:0.3,...W?{harnessId:"claude-code",agent:{instructions:N,disallowedTools:XH4[X]}}:{},...J?{repo:J}:{}}),await VZ($,{taskBoardItemId:Z.id,action:"review_requested",actorId:null,data:{reviewer:X}});let U=await $.storage.taskBoard.getById(Z.id,Y);if(U)q6(Y,U)}var S3$,XH4,QH4,YH4=2;var Nn0=B(()=>{Z7();HK();SZ();Wn0();Hn0();S3$=new Set(["completed","failed","expired"]),XH4={qa:["Edit","NotebookEdit"],code_review:["Write","Edit","NotebookEdit"]},QH4={qa:"You are the QA Agent. Your job is to confirm the task ACTUALLY SOLVED THE "+"PROBLEM \u2014 not to review code style. Exercise the feature/behavior the task "+"describes (use the PR's preview / dev server when available), check the acceptance criteria implied by the title and description, and look for regressions in the affected flow. Judge outcomes, not the diff.",code_review:"You are the Code Reviewer. Review the code changes for correctness, security, and quality. FIRST look for a review skill/command appropriate to this repository's stack (e.g. a `/review`, `code-review`, or `security-review` skill, or the repo's CONTRIBUTING/review guidelines) and use it. Read the diff critically and flag concrete issues with file/line references."}});function HH4($){return $.filter((X)=>X.action==="merge_conflict_resolution").length>=V3$}async function kw0($,Z,X,Q){if(X.status!=="in_review")return!1;if(X.assigneeId!==o4)return!1;if(Q.conflict!==!0)return!1;let G=(await $.storage.organizationSettings.get(Z))?.flags??{};if(G.auto_merge!==!0)return!1;let J=$3.filter((N)=>G[Nw[N]]===!0),W=await $.storage.taskBoard.listActivity(X.id,Z);if(!bf(W,J,{verifiedOnly:!0}))return!1;if(HH4(W))return console.warn(`[task-board] conflict auto-resolve cap (${V3$}) reached on task ${X.id} \u2014 leaving the PR for a human`),!1;let K=Q.pr,H=await $.storage.taskBoard.claimConflictResolution(X.id,Z,X.updatedBy);if(!H)return!1;await VZ($,{taskBoardItemId:X.id,action:"merge_conflict_resolution",actorId:null,data:{prNumber:K.number}}),q6(Z,H);try{await IN($,H,{pr:{number:K.number,url:K.url},resolveConflict:!0})}catch(N){throw await $.storage.taskBoard.update(H.id,Z,{status:"in_review"},"system").then((F)=>q6(Z,F)).catch((F)=>console.error("[task-board] conflict-resolution status revert failed",F)),N}return!0}var V3$=3;var Fn0=B(()=>{Z7();HK();SZ();QO()});import{z as Sw0}from"zod";function NH4($){let Z=$ instanceof Error?$.message:String($);return/too many requests|rate limit|\b429\b/i.test(Z)}function _3$($){C3$.invalidate($)}async function Dn0($,Z,X,Q,Y,G){try{let J=await C3$.fetch({type:"tools/call",connectionId:Z,scope:{kind:"org"},params:{name:X,arguments:Q},fetchLive:()=>yZ(async()=>{let W=await $.callTool({name:X,arguments:Q},void 0,{timeout:Vw0});if(W&&typeof W==="object"&&W.isError)throw Error(W.content?.[0]?.text??`${X} returned isError`);return W},{maxAttempts:3,minTimeout:300,maxTimeout:3000,jitter:1,isRetriable:(W)=>!NH4(W)}),onRevalidation:(W)=>G.push(W)});return Cw0(J)}catch(J){let W=J instanceof ZJ?J.cause:J;return console.error(`[task-board] ${X} failed for ${Y}:`,W),null}}async function fx($,Z,X,Q){if(X){let J=await $.storage.connections.findById(X,Z);if(J&&J.status==="active")return J}let{items:Y}=await $.storage.connections.list(Z,{slug:"mcp-github"}),G=Y.filter((J)=>J.status==="active");if(Q){let J=G.find((W)=>{let K=q9(W);return K?.owner===Q.owner&&K?.repo===Q.name});if(J)return J}return G.find((J)=>q9(J)===null)??null}function Cw0($){if(!$||typeof $!=="object")return null;let Z=$;if(Z.isError)return null;if(Z.structuredContent&&typeof Z.structuredContent==="object"&&Object.keys(Z.structuredContent).length>0)return Z.structuredContent;let X=Z.content?.find((Q)=>Q.type==="text")?.text;if(!X)return null;try{return JSON.parse(X)}catch{return null}}function On0($){let Z;try{Z=new URL($).hostname.toLowerCase()}catch{return!1}return Z==="deco.site"||Z.endsWith(".decocdn.com")||Z.endsWith(".deco-cx.workers.dev")||Z.endsWith(".deco.site")||Z.endsWith(".vercel.app")||Z.endsWith(".preview.vtex.app")}function FH4($){if(!$||!Array.isArray($.statuses))return null;let Z=$.statuses.map((X)=>X&&typeof X==="object"?X:null).filter((X)=>!!X&&typeof X.target_url==="string"&&On0(X.target_url));if(Z.length===0)return null;return Z.find((X)=>X.state==="success")?.target_url??Z[0].target_url}function UH4($){let Z=Array.isArray($)?$:Array.isArray($?.comments)?$.comments:Array.isArray($?.items)?$.items:[],X=(Y)=>{let G=Y;return Date.parse(G?.updated_at)||Date.parse(G?.created_at)},Q=Z.map((Y,G)=>({c:Y,index:G})).sort((Y,G)=>{let J=X(Y.c),W=X(G.c);if(Number.isNaN(J)||Number.isNaN(W))return Y.index-G.index;return W-J}).map(({c:Y})=>Y);for(let Y of Q){let G=Y&&typeof Y.body==="string"?Y.body:"";if(!G)continue;let J=G.match(/href=['"]([^'"]+)['"][^>]*>\s*Branch Preview/i);if(J?.[1]&&On0(J[1]))return J[1];let W=(G.match(/https?:\/\/[^\s"'<>)\]]+/g)??[]).find((K)=>On0(K));if(W)return W}return null}function v3$($){if(!$)return null;if((typeof $.total_count==="number"?$.total_count:null)===0)return null;switch($.state){case"success":return"passing";case"failure":case"error":return"failing";case"pending":return"pending";default:return null}}function f3$($){let Z=Array.isArray($)?$:Array.isArray($?.check_runs)?$.check_runs:[];if(Z.length===0)return null;let X=!1,Q=!1;for(let Y of Z){if(!Y||typeof Y!=="object")continue;let{status:G,conclusion:J}=Y;if(G!=="completed")Q=!0;else if(typeof J==="string"&&b3$.has(J))X=!0}if(X)return"failing";if(Q)return"pending";return"passing"}function x3$($,Z){if($==="failing"||Z==="failing")return"failing";if($==="pending"||Z==="pending")return"pending";if($==="passing"||Z==="passing")return"passing";return null}function wH4($){let Z=Array.isArray($)?$:Array.isArray($?.check_runs)?$.check_runs:[],X=[];for(let Q of Z){if(!Q||typeof Q!=="object")continue;let Y=Q;X.push({id:typeof Y.id==="number"?Y.id:null,name:typeof Y.name==="string"?Y.name:"",status:typeof Y.status==="string"?Y.status:"completed",conclusion:typeof Y.conclusion==="string"?Y.conclusion:null,detailsUrl:typeof Y.html_url==="string"?Y.html_url:typeof Y.details_url==="string"?Y.details_url:null})}return X}function OH4($){return $.status==="completed"&&$.conclusion!=null&&b3$.has($.conclusion)}async function BH4($,Z,X,Q,Y){let J=(await Dn0($,Z,"GET_CHECK_RUN",{owner:X.repoOwner,repo:X.repoName,checkRunId:Q},`${Bn0(X)} check-run ${Q}`,Y))?.output,W=typeof J?.summary==="string"?J.summary:null,K=typeof J?.text==="string"?J.text:null;return W??K??null}async function y3$($,Z,X){let Q=await fx($,Z,X.connectionId,{owner:X.repoOwner,name:X.repoName});if(!Q)return null;let Y=await E5(Q,$,!0),G=async(J)=>Cw0(await Y.callTool({name:"pull_request_read",arguments:{method:J,owner:X.repoOwner,repo:X.repoName,pullNumber:X.number}},void 0,{timeout:Vw0}));try{let J=null;try{J=v3$(await G("get_status"))}catch{}try{J=x3$(J,f3$(await G("get_check_runs")))}catch{}return J}finally{await Y.close().catch(()=>{})}}function g3$($){if(!$)return null;if($.state!=="open")return!1;return typeof $.mergeable==="boolean"?!$.mergeable:null}async function h3$($,Z,X){let Q=await fx($,Z,X.connectionId,{owner:X.repoOwner,name:X.repoName});if(!Q)return null;let Y=await E5(Q,$,!0);try{return g3$(Cw0(await Y.callTool({name:"pull_request_read",arguments:{method:"get",owner:X.repoOwner,repo:X.repoName,pullNumber:X.number}},void 0,{timeout:Vw0})))}catch{return null}finally{await Y.close().catch(()=>{})}}async function DH4($,Z,X,Q){let Y=(F)=>Dn0($,Z,"pull_request_read",{method:F,owner:X.repoOwner,repo:X.repoName,pullNumber:X.number},`${Bn0(X)} (${F})`,Q),[G,J,W]=await Promise.all([Y("get_status"),Y("get_check_runs"),Y("get_comments")]),K=x3$(v3$(G),f3$(J)),H=FH4(G)??UH4(W),N=await Promise.all(wH4(J).map(async(F)=>({name:F.name,status:F.status,conclusion:F.conclusion,detailsUrl:F.detailsUrl,summary:OH4(F)&&F.id!=null?await BH4($,Z,X,F.id,Q):null})));return{checksStatus:K,checks:N,previewUrl:H}}async function En0($,Z,X){let Q=await fx($,Z,X.connectionId,{owner:X.repoOwner,name:X.repoName});if(!Q)return wn0;let Y=await E5(Q,$,!0),G=[];try{let[J,W]=await Promise.all([Dn0(Y,Q.id,"pull_request_read",{method:"get",owner:X.repoOwner,repo:X.repoName,pullNumber:X.number},`${Bn0(X)} (get)`,G),DH4(Y,Q.id,X,G)]);if(!J)return wn0;let K=J.state,H=K==="open";return{title:typeof J.title==="string"?J.title:null,body:typeof J.body==="string"?J.body:null,state:K==="closed"?"closed":H?"open":null,draft:typeof J.draft==="boolean"?J.draft:null,merged:typeof J.merged==="boolean"?J.merged:null,mergeable:H&&typeof J.mergeable==="boolean"?J.mergeable:null,checksStatus:H?W.checksStatus:null,checks:H?W.checks:[],previewUrl:H?W.previewUrl:null}}catch{return wn0}finally{Promise.allSettled(G).then(()=>Y.close().catch(()=>{}))}}async function u3$($,Z,X){let Q=await fx($,Z,X.connectionId,{owner:X.repoOwner,name:X.repoName});if(!Q)return null;let Y=await E5(Q,$,!0);try{let G=Cw0(await Y.callTool({name:"pull_request_read",arguments:{method:"get",owner:X.repoOwner,repo:X.repoName,pullNumber:X.number}},void 0,{timeout:Vw0}));if(!G||G.state!=="open")return null;let J=G.head?.ref;return typeof J==="string"&&J.length>0?J:null}catch{return null}finally{await Y.close().catch(()=>{})}}var Vw0=8000,Un0,C3$,Bn0=($)=>`${$.repoOwner}/${$.repoName}#${$.number}`,wn0,b3$,Ln0=($)=>{let Z=$.find((X)=>X.state!=="closed"&&X.merged!==!0);return Z!=null&&Z.checksStatus!=="pending"&&Z.checksStatus!=="failing"},jn0;var xx=B(()=>{b0();mH();EG();Z7();L6();Um();sW();HK();SZ();Nn0();Fn0();Un0={revalidateAfterMs:55000,maxStaleMs:1800000,maxValueBytes:524288},C3$=new L60({"tools/call":Un0,"resources/read":Un0,"prompts/get":Un0});wn0={title:null,body:null,state:null,draft:null,merged:null,mergeable:null,checksStatus:null,checks:[],previewUrl:null};b3$=new Set(["failure","cancelled","timed_out","action_required","startup_failure","stale"]);jn0=d({name:"TASK_BOARD_ITEM_PRS_GET",description:"Get the GitHub pull requests linked to a task board item, each enriched with live state (title, open/closed, draft, merged) fetched from GitHub.",annotations:{title:"Get Task Board Item Pull Requests",readOnlyHint:!1,destructiveHint:!1,idempotentHint:!0,openWorldHint:!0},inputSchema:Sw0.object({taskBoardItemId:Sw0.string()}),outputSchema:Sw0.object({prs:Sw0.array(fZ$)}),handler:async({taskBoardItemId:$},Z)=>{$0(Z),await Z.access.check();let X=Z.organization?.id;if(!X)throw Error("Organization ID required (no active organization in context)");let Q=await Z.storage.taskBoard.getById($,X),Y=await Z.storage.taskBoard.listPrs($,X),G=await Promise.all(Y.map(async(K)=>{let H=await En0(Z,X,K);return{url:K.url,number:K.number,repoOwner:K.repoOwner,repoName:K.repoName,createdAt:K.createdAt,...H}})),J=G.find((K)=>K.state==="open"&&!K.merged);if(Q&&Q.status==="in_review"&&Q.assigneeId===o4&&Ln0(G))await Mw0(Z,Q).catch((K)=>{console.error("[task-board] reviewer auto-handoff failed",K)});let W=J?g3$({state:J.state,mergeable:J.mergeable}):null;if(Q&&Q.status==="in_review"&&Q.assigneeId===o4&&J&&W===!0)await kw0(Z,X,Q,{pr:{number:J.number,url:J.url},conflict:!0}).catch((K)=>{console.error("[task-board] conflict auto-resolve failed",K)});if(G.some((K)=>K.merged))try{if(Q&&Q.status!=="done"){let K=await Z.storage.taskBoard.update($,X,{status:"done"},Q.updatedBy);await VZ(Z,{taskBoardItemId:$,action:"status_changed",actorId:null,data:{from:Q.status,to:"done"}}),q6(X,K)}}catch(K){console.error("[task-board] merge\u2192done reconcile failed",K)}return{prs:G}}})});async function yx($,Z){if(Z.assigneeId!==o4)return;await IN($,Z).catch((X)=>{if(X instanceof AG)throw X;console.error("[task-board] Super Agent enqueue failed",X)})}function LH4($,Z){return["You've been assigned this task. Complete it.","","You are running AUTONOMOUSLY \u2014 no human is watching this run, so drive it "+"to completion on your own. Use `user_ask` ONLY for a genuine, unresolvable blocker a human must clear (a missing credential/secret, or "+"a decision so ambiguous you truly cannot proceed) \u2014 that should be rare. "+"Do not ask for confirmation of a reasonable choice; make it and move on.","",`Title: ${$.title}`,$.description?`
1506
1506
  Description:
1507
1507
  ${$.description}
1508
1508
  `:"",Z?.resolveConflict&&Z.pr?[`Your pull request #${Z.pr.number} (${Z.pr.url}) is approved but can't be merged \u2014 it has a MERGE CONFLICT with its base branch.`,`Load the repo, CHECK OUT that PR's branch (e.g. \`gh pr checkout ${Z.pr.number}\`), then merge (or rebase) the base branch into it and resolve the conflicts, and push to update the SAME pull request \u2014 do NOT open a new one or start a new branch. Resolve conflicts by preserving BOTH sides' intent; never blindly discard either side. Change only what resolving the conflict requires.`,""].join(`
@@ -2726,7 +2726,7 @@ Do NOT require review (requiresReview = false) when the changes are low-risk, su
2726
2726
 
2727
2727
  When unsure between the two, lean toward NOT requiring review for small frontend-only diffs, and toward requiring it for anything backend or large.
2728
2728
 
2729
- Respond with the structured verdict and a short reason.`,x_$;var g_$=B(()=>{k4();dw();p81();O86=t81.object({requiresReview:t81.boolean().describe("true if the changes should go through pull-request review"),reason:t81.string().describe("One short sentence explaining the decision (max ~120 chars)")});x_$={requiresReview:!1,reason:""}});function E86($){if(!$||$.includes(".."))return!1;return L86.test($)}function h_$($){let Z=typeof $.__resolveType==="string"?$.__resolveType:null;if(!Z||!E86(Z))return null;let{__resolveType:X,...Q}=$;return{resolveType:Z,payload:Q}}function u_$($,Z){return`${$.replace(/\/+$/,"")}/deco/invoke/${Z}`}var L86;var c_$=B(()=>{L86=/^[\w./@-]+$/});function o81($){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 l_$($,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 d_$($,Z,X,Q){if(!Q.connectionId)throw new mg("Push requires a connected GitHub account. Connect mcp-github for this project and restart the sandbox.");let Y=$.organization?.id;if(!Y)throw new mg(l7);await Tw({ctx:$,connectionId:Q.connectionId,organizationId:Y,forceRefresh:!0,onLegacyMintError:(N)=>{let F=N instanceof Error?N.message:l7;throw new mg(F)}});let{cloneUrl:G,gitUserName:J,gitUserEmail:W}=await Rw(Q.connectionId,Q.owner,Q.name,$.db,$.vault),K=wj0($),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 N=await cw(H,j86).catch(()=>H.statusText);throw Error(`Failed to refresh sandbox git credentials (${H.status}): ${N}`)}}var j86=10485760,mg;var m_$=B(()=>{YN();u81();Ci();of();mg=class mg extends Error{constructor($){super($);this.name="GitPushAuthError"}}});function P86($){let Z=$.startsWith("thread:")?$.slice(7):$;if(!Z||Z.length>255||Z.includes("..")||Z.startsWith("/")||Z.endsWith("/")||Z.endsWith(".lock")||!z86.test(Z))throw Error(`Invalid branch name: ${$}`)}function cC($){return AbortSignal.any([$.req.raw.signal,AbortSignal.timeout(T86)])}function lC($){let{runner:Z}=$.get("vmClaim");if(!Z)return $.json({error:"No sandbox runner configured"},503);return Z}function r81($,Z){let Q=(Oj0.get($)??Promise.resolve()).catch(()=>{}).then(Z),Y=Q.catch(()=>{});return Oj0.set($,Y),Y.finally(()=>{if(Oj0.get($)===Y)Oj0.delete($)}),Q}async function bZ($,Z,X){let Q=lC($);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 N=X?.signal,F={method:W,headers:H,body:K,...N?{signal:N}:{}},U=async()=>{let w=await Q.proxyDaemonRequest(Y,Z,F);if(X?.map404to410&&w.status===404){try{await w.body?.cancel()}catch{}if(await Q.adoptLiveClaim?.({userId:G,projectRef:J},Y))w=await Q.proxyDaemonRequest(Y,Z,F);if(w.status===404){try{await w.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",...gY}})}}let O=await w.text(),D=X?.redactRepoDirUnlessDesktop&&Q.kind!=="user-desktop"?I86(O):O,L=w.headers.get("content-type")??"application/json";return new Response(D,{status:w.status,headers:{"content-type":L,...gY}})};try{if(N){let w=U();return w.catch(()=>{}),await Promise.race([w,new Promise((D,L)=>{if(N.aborted)return L(N.reason);N.addEventListener("abort",()=>L(N.reason),{once:!0})})])}return await U()}catch(w){let O=w instanceof Error?w.message:String(w);return $.json({error:`Daemon unreachable: ${O}`},502)}}function I86($){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 Bj0($,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)try{let W=JSON.parse(J);throw Error(W.error??`Daemon error (${G.status})`)}catch(W){if(W instanceof Error&&W.message!==J)throw W;throw Error(`Daemon error (${G.status})`)}return JSON.parse(J)}function q86($){return p_$.includes($)}var z86,i_$=524288,A86=65536,T86=1e4,n_$=2000,R86,Oj0,gY,p_$,t_$=()=>{let $=new B1;return $.use("/:virtualMcpId/:branch/*",R86),$.post("/:virtualMcpId/:branch/write",(Z)=>bZ(Z,"/_sandbox/write",{forwardJsonBody:!0,signal:cC(Z)})),$.post("/:virtualMcpId/:branch/unlink",(Z)=>bZ(Z,"/_sandbox/unlink",{forwardJsonBody:!0,signal:cC(Z)})),$.post("/:virtualMcpId/:branch/mkdir",(Z)=>bZ(Z,"/_sandbox/mkdir",{forwardJsonBody:!0,signal:cC(Z)})),$.post("/:virtualMcpId/:branch/rename",(Z)=>bZ(Z,"/_sandbox/rename",{forwardJsonBody:!0,signal:cC(Z)})),$.post("/:virtualMcpId/:branch/read",(Z)=>bZ(Z,"/_sandbox/read",{forwardJsonBody:!0,signal:cC(Z)})),$.post("/:virtualMcpId/:branch/glob",(Z)=>bZ(Z,"/_sandbox/glob",{forwardJsonBody:!0,signal:cC(Z)})),$.post("/:virtualMcpId/:branch/grep",(Z)=>bZ(Z,"/_sandbox/grep",{forwardJsonBody:!0,signal:cC(Z)})),$.post("/:virtualMcpId/:branch/exec/:script",async(Z)=>{let X=Z.req.param("script");if(!X)return Z.json({error:"missing script name"},400);return bZ(Z,`/_sandbox/exec/${encodeURIComponent(X)}`)}),$.post("/:virtualMcpId/:branch/exec/:script/kill",async(Z)=>{let X=Z.req.param("script");if(!X)return Z.json({error:"missing script name"},400);return bZ(Z,`/_sandbox/exec/${encodeURIComponent(X)}/kill`)}),$.get("/:virtualMcpId/:branch/config",(Z)=>bZ(Z,"/_sandbox/config",{method:"GET",map404to410:!0,redactRepoDirUnlessDesktop:!0})),$.put("/:virtualMcpId/:branch/config",(Z)=>bZ(Z,"/_sandbox/config",{method:"PUT",forwardJsonBody:!0,map404to410:!0})),$.post("/:virtualMcpId/:branch/setup/:step",async(Z)=>{let X=Z.req.param("step");if(!X||!q86(X))return Z.json({error:`step must be one of: ${p_$.join(", ")}`},400);if(X==="start"){let Q=Z.get("vmClaim");if(Q.runner){let Y=o(Z.var.studioContext),G=dF0(Q.virtualMcpMetadata);try{await iF0({ctx:Z.var.studioContext,runner:Q.runner,handle:Q.claimName,orgId:Y.id,userId:Q.callerUserId,entries:G})}catch(J){let W=J instanceof Error?J.message:String(J);return Z.json({error:`Failed to push env to daemon: ${W}`},502)}}}return bZ(Z,`/_sandbox/setup/${X}`,{signal:Z.req.raw.signal,map404to410:!0})}),$.get("/:virtualMcpId/:branch/events",(Z)=>{let X=Z.get("vmClaim");if(!X.runner)return XF(Z,async(Q)=>{await Q.writeSSE({event:"phase",data:JSON.stringify({kind:"failed",reason:"unknown",message:"No sandbox runner configured on this studio instance."})})});return V_$(Z,{ctx:Z.var.studioContext,claimName:X.claimName,runner:X.runner,virtualMcpId:X.virtualMcpId,branch:X.branch,userId:X.userId,projectRef:X.projectRef,virtualMcpMetadata:X.virtualMcpMetadata})}),$.get("/:virtualMcpId/:branch/git/status",(Z)=>bZ(Z,"/_sandbox/git/status",{method:"GET",map404to410:!0,signal:AbortSignal.any([Z.req.raw.signal,AbortSignal.timeout(n_$)])})),$.post("/:virtualMcpId/:branch/git/status",(Z)=>bZ(Z,"/_sandbox/git/status",{map404to410:!0,signal:AbortSignal.any([Z.req.raw.signal,AbortSignal.timeout(n_$)])})),$.post("/:virtualMcpId/:branch/git/diff",(Z)=>bZ(Z,"/_sandbox/git/diff",{forwardJsonBody:!0,map404to410:!0})),$.post("/:virtualMcpId/:branch/git/publish",async(Z)=>{let X=lC(Z);if(X instanceof Response)return X;let{claimName:Q,virtualMcpMetadata:Y,connectionIds:G}=Z.get("vmClaim"),J=Z.var.studioContext;return r81(Q,async()=>{try{await c81(J,X,Q);let W=l_$(Y,G);if(W)await d_$(J,X,Q,W)}catch(W){if(W instanceof mg)return Z.json({error:W.message},403,gY);let K=W instanceof Error?W.message:String(W);return Z.json({error:K},502,gY)}return bZ(Z,"/_sandbox/git/publish",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/discard",(Z)=>{let{claimName:X}=Z.get("vmClaim");return r81(X,()=>bZ(Z,"/_sandbox/git/discard",{forwardJsonBody:!0,map404to410:!0}))}),$.post("/:virtualMcpId/:branch/git/rebase",async(Z)=>{let X=lC(Z);if(X instanceof Response)return X;let{claimName:Q}=Z.get("vmClaim"),Y=Z.var.studioContext;return r81(Q,async()=>{try{await c81(Y,X,Q)}catch(G){let J=G instanceof Error?G.message:String(G);return Z.json({error:J},502,gY)}return bZ(Z,"/_sandbox/git/rebase",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/suggest-commit",WZ({maxSize:i_$,onError:(Z)=>Z.json({error:"Payload too large"},413,gY)}),async(Z)=>{let X=lC(Z);if(X instanceof Response)return X;let{claimName:Q,userId:Y,projectRef:G}=Z.get("vmClaim"),J=Z.var.studioContext;try{let W=await Z.req.json().catch(()=>({})),K=W.status,H=W.diff,N=H!=null&&typeof H.diffs==="object"&&H.diffs!==null,[F,U]=m81(K)&&N?[K,H]:await Promise.all([Bj0(X,Q,"/_sandbox/git/status","GET",{userId:Y,projectRef:G}),Bj0(X,Q,"/_sandbox/git/diff","GET",{userId:Y,projectRef:G})]),w=await f_$(J,F,U);return Z.json(w,200,gY)}catch(W){let K=W instanceof Error?W.message:String(W);if(K==="SANDBOX_GONE")return Z.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,gY);return Z.json({error:K},502,gY)}}),$.post("/:virtualMcpId/:branch/git/judge-review",WZ({maxSize:i_$,onError:(Z)=>Z.json({error:"Payload too large"},413,gY)}),async(Z)=>{let X=lC(Z);if(X instanceof Response)return X;let{claimName:Q,userId:Y,projectRef:G}=Z.get("vmClaim"),J=Z.var.studioContext;try{let W=await Z.req.json().catch(()=>({})),K=W.status,H=W.diff,N=H!=null&&typeof H.diffs==="object"&&H.diffs!==null,[F,U]=m81(K)&&N?[K,H]:await Promise.all([Bj0(X,Q,"/_sandbox/git/status","GET",{userId:Y,projectRef:G}),Bj0(X,Q,"/_sandbox/git/diff","GET",{userId:Y,projectRef:G})]),w=await y_$(J,F,U,typeof W.language==="string"?W.language:void 0);return Z.json(w,200,gY)}catch(W){let K=W instanceof Error?W.message:String(W);if(K==="SANDBOX_GONE")return Z.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,gY);return Z.json({error:K},502,gY)}}),$.get("/:virtualMcpId/:branch/preview-fetch",async(Z)=>{let X=lC(Z);if(X instanceof Response)return X;let{claimName:Q}=Z.get("vmClaim"),Y=Z.req.query("path");if(!Y||!Y.startsWith("/")||Y.startsWith("//")||Y.includes("..")||Y.includes("\\"))return Z.json({error:"Path not allowed"},403);let G;try{G=await X.getPreviewUrl(Q)}catch{return Z.json({error:"Preview not available"},502)}if(!G)return Z.json({error:"Preview not available"},502);let J=G.replace(/\/+$/,""),W=o81(`${J}${Y}`),K;try{K=await fetch(W?.url??`${J}${Y}`,{...W?{headers:{host:W.hostHeader}}:{}})}catch{return Z.json({error:"Preview unreachable"},502)}let H;try{H=await K.text()}catch{return Z.json({error:"Preview unreachable"},502)}return new Response(H,{status:K.status,headers:{"content-type":K.headers.get("content-type")??"application/json"}})}),$.post("/:virtualMcpId/:branch/preview-invoke",WZ({maxSize:A86,onError:(Z)=>Z.json({error:"Payload too large"},413)}),async(Z)=>{let X=lC(Z);if(X instanceof Response)return X;let{claimName:Q}=Z.get("vmClaim"),Y;try{Y=await X.getPreviewUrl(Q)}catch{return Z.json({error:"Preview not available"},502)}if(!Y)return Z.json({error:"Preview not available"},502);let G;try{G=await Z.req.json()}catch{return Z.json({error:"Invalid JSON body"},400)}if(!G||typeof G!=="object"||Array.isArray(G))return Z.json({error:"Invalid JSON body"},400);let J=h_$(G);if(!J)return Z.json({error:"Invalid or missing __resolveType"},400);let W=u_$(Y,J.resolveType),K=o81(W),H;try{H=await fetch(K?.url??W,{method:"POST",headers:{"content-type":"application/json",...K?{host:K.hostHeader}:{}},body:JSON.stringify(J.payload),signal:AbortSignal.timeout(30000)})}catch{return Z.json({error:"Preview unreachable"},502)}let N;try{N=await H.text()}catch{return Z.json({error:"Preview unreachable"},502)}return new Response(N,{status:H.status,headers:{"content-type":H.headers.get("content-type")??"application/json"}})}),$};var o_$=B(()=>{y8();lO();dg();q_$();QN();k_$();B3();yw();S_$();C_$();Rd0();Si();p81();g_$();c_$();m_$();z86=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;R86=I_$(async($,Z)=>{let X=$.var.studioContext;try{$0(X)}catch{return $.json({error:"Unauthorized"},401)}let Q=W1(X);if(!Q)return $.json({error:"Unauthorized"},401);let Y;try{Y=o(X)}catch{return $.json({error:"Organization scope required"},403)}let G=$.req.param("virtualMcpId"),J=$.req.param("branch");if(!G||!J)return $.json({error:"virtualMcpId and branch are required"},400);try{P86(J)}catch(w){let O=w instanceof Error?w.message:String(w);return $.json({error:O},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=rm({orgId:Y.id,virtualMcpId:G,branch:J}),H=await wN(X,J,Q),N=M_$({userId:H,projectRef:K}),F=W.metadata??null,U;try{U=(await hX(X,{userId:H,branch:J,virtualMcpMetadata:F})).provider}catch{U=null}if(!U)return $.json({error:"No sandbox runner found"},404);return $.set("vmClaim",{claimName:N,callerUserId:Q,runner:U,virtualMcpId:G,branch:J,userId:H,projectRef:K,virtualMcpMetadata:F,connectionIds:W.connections?.map((w)=>w.connection_id)??[]}),Z()});Oj0=new Map;gY={"Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache"};p_$=["clone","install","start"]});var r_$=($)=>{let Z=new B1;if(Z.use("*",_C),Z.route("/",VE0()),Z.route("/",HS$()),Z.route("/",U_$()),Z.route("/",H_$()),Z.route("/",Nj0()),Z.route("/tools",j_$()),Z.route("/",D_$()),Z.route("/",iC$({kvStorage:$.kvStorage})),Z.route("/",dC$()),Z.route("/fs",X_$({getConnection:$.getNatsConnection})),Z.route("/sandbox",t_$()),Z.route("/",J_$()),Z.route("/deco-sites",_E0()),Z.route("/sso",TE0()),Z.route("/",Fj0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",ZS$()),$.mountDevAssets)Z.route("/dev-assets",vE0({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("/",rq$()),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",Y_$()),Z.route("/mcp",nw0()),Z.route("/mcp/self",Hj0()),Z.route("/mcp",ow0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var a_$=B(()=>{y8();W$1();XS$();U$1();bE0();Yo();G$1();mC$();nC$();Q_$();Dn();r11();rw0();v81();G_$();W_$();N_$();w_$();L_$();f81();z_$();x81();pw0();o_$()});function k86($){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}}))}async function S86($,Z){let X=await fetch(`${$}/rest/v1/apps?select=name,title,description,logo,category,vendors(alias,url)`,{headers:{apikey:Z,Authorization:`Bearer ${Z}`,Accept:"application/json"},signal:AbortSignal.timeout(M86)});if(!X.ok){let Q=await X.text().catch(()=>X.statusText);throw console.error(`[deco-apps] Supabase error (${X.status}): ${Q.slice(0,200)}`),Error(`External service error (${X.status})`)}return await X.json()}var M86=1e4,V86=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},s_$=()=>{let $=new B1;return $.use("*",V86),$.get("/",async(Z)=>{let X=c0(),Q=X.decoSupabaseUrl,Y=X.decoSupabaseServiceKey;if(!Q||!Y)return Z.json({apps:[]});try{let G=await S86(Q,Y);return Z.json({apps:k86(G)})}catch(G){return console.error("[deco-apps] GET error:",G),Z.json({error:"Failed to fetch apps"},502)}}),$};var e_$=B(()=>{y8();S$()});import{z as M1}from"zod";function gK($,Z="invalid_request_error",X=null,Q=null){return{error:{message:$,type:Z,param:X,code:Q}}}function u86($){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 c86($,Z,X){try{return JSON.parse($)}catch{throw new Xv$(`Invalid JSON in tool call arguments for function '${X}' (tool_call_id: ${Z}): ${$}`)}}function l86($){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:c86(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 d86($){let Z=$.map((X)=>{let Q=X.function.parameters?EY(X.function.parameters):EY({type:"object",properties:{}});return[X.function.name,_$({description:X.function.description,inputSchema:Q})]});return Object.fromEntries(Z)}function m86($){if(!$)return;return{openai:{response_format:$}}}function i86(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function $v$($,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 Zv$($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var C86=256,_86,v86,b86,f86,x86,y86,g86,h86,Xv$,Qv$,Yv$;var Gv$=B(()=>{k4();y8();dg();fN();_86=M1.object({type:M1.literal("function"),function:M1.object({name:M1.string(),description:M1.string().optional(),parameters:M1.record(M1.string(),M1.unknown()).optional()})}),v86=M1.object({id:M1.string(),type:M1.literal("function"),function:M1.object({name:M1.string(),arguments:M1.string()})}),b86=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(v86).optional()}),M1.object({role:M1.literal("tool"),content:M1.string(),tool_call_id:M1.string()})]),f86=M1.object({type:M1.literal("text")}),x86=M1.object({type:M1.literal("json_object")}),y86=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()})}),g86=M1.union([f86,x86,y86]),h86=M1.object({model:M1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:M1.array(b86),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(_86).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:g86.optional(),user:M1.string().optional()});Xv$=class Xv$ extends Error{constructor($){super($);this.name="MessageConversionError"}};Qv$=new B1;Qv$.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),X=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(gK("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(gK("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(gK("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Q=await $.req.json(),Y=h86.safeParse(Q);if(!Y.success){let L=Y.error.issues[0]??{message:"Invalid request",path:[]};return $.json(gK(`Invalid request: ${L.message}`,"invalid_request_error",L.path.length>0?L.path.join("."):null),400)}let G=Y.data,J=u86(G.model);if(!J)return $.json(gK("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)=>ZD(j.providerId));if(!E)return $.json(gK("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(gK(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let N=H.aiSdk.languageModel(K),F=l86(G.messages),U=G.tools?d86(G.tools):void 0,w=m86(G.response_format),O=i86(),D=Math.floor(Date.now()/1000);if(G.stream)return XF($,async(L)=>{let E=$v$(N,F,U,G,w,$.req.raw.signal);try{let j=Pw(E),z=!1,A=0,P="",M=async()=>{if(P.length===0)return;let k=P;P="",await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{content:k},finish_reason:null}]})})};for await(let k of j.fullStream){if(!z&&(k.type==="text-delta"||k.type==="tool-call"))await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),z=!0;if(k.type==="text-delta"){if(P+=k.text,P.length>=C86)await M()}else if(k.type==="tool-call"){await M();let q=A++;await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{tool_calls:[{index:q,id:k.toolCallId,type:"function",function:{name:k.toolName,arguments:JSON.stringify(k.input)}}]},finish_reason:null}]})})}else if(k.type==="finish")await M(),await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{},finish_reason:Zv$(k.finishReason)}],usage:k.totalUsage?{prompt_tokens:k.totalUsage.inputTokens??0,completion_tokens:k.totalUsage.outputTokens??0,total_tokens:k.totalUsage.totalTokens??0}:void 0})})}await 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=$v$(N,F,U,G,w,$.req.raw.signal),E=await jw(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:O,object:"chat.completion",created:D,model:G.model,choices:[{index:0,message:j,finish_reason:Zv$(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(gK("Request aborted","invalid_request_error"),400);if(Y.name==="MessageConversionError")return $.json(gK(Y.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",Y.message,Y.stack),$.json(gK(Y.message,"server_error"),500)}});Yv$=Qv$});var Wv$;var Jv$=B(()=>{Wv$={name:"decocms",version:"4.197.2",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.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 t86(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??p86}}var Kv$,p86="https://ph.studio.decocms.com",Hv$;var Nv$=B(()=>{y8();_x0();IV();LZ();S$();i11();Jv$();Kv$=new B1;Kv$.get("/",($)=>{let Z={version:Wv$.version,theme:oh1(),...iD().logo&&{logo:iD().logo},...WK()&&{internalUrl:Tq1()},...c0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!c0().firecrawlApiKey,auth:Dk$(),posthog:t86(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:!WK()&&c0().sandboxProviderKind==="agent-sandbox"}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});Hv$=Kv$});function ig($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function a81($){return(ig($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((X)=>X.charAt(0).toUpperCase()+X.slice(1)).join(" ")}function Uv$($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(ig($))}&sz=${Z}`}function Fv$($,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 wv$($){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()?Fv$(`${Y.trim().replace(/\s+/g," ")} \u2014 ${J}`,200):Fv$(`How does ${X} really perform? ${J}`,200);return{title:G,description:W}}import{z as l0}from"zod";var dC,o86,r86,a86,s86,Ov$;var Bv$=B(()=>{dC=l0.enum(["good","bad","neutral"]),o86=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:dC.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 $})),r86=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(o86)),a86={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()},s86=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:dC.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:dC.optional()}),l0.object({template:l0.literal("stats"),stats:l0.array(l0.object({value:l0.coerce.string(),label:l0.coerce.string(),tone:dC.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:dC.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(r86).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:dC.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:dC.optional()})).min(1)})]),Ov$=l0.object({...a86,template:s86})});function Dj0($){let Z=[],X=[...$.sections].sort((Y,G)=>Y.position-G.position).map((Y)=>{let G=Ov$.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 s81=B(()=>{Bv$()});import{join as Dv$}from"path";async function $46($){try{let Z=await fetch(`${CW({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(e86)});if(!Z.ok)return null;let X=await Z.json(),{deck:Q}=Dj0(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()||a81($),score:Q.meta.scores?.cover??J?.score?.value,verdict:Y?.annotation?.trim()||Y?.headline?.trim()||void 0}}catch{return null}}function hY($){return $.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;")}function Z46($,Z){let X=ig($),Q=Z?.brand?.trim()||a81(X),Y=Uv$(X,128),J=`${(c0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(X)}`,{title:W,description:K}=wv$({brand:Q,domain:X,score:Z?.score,verdict:Z?.verdict}),H=`${J}/og.png`,N=`${Q} commerce report by decocms`;return[`<title>${hY(W)}</title>`,`<meta name="description" content="${hY(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="${hY(W)}" />`,`<meta property="og:description" content="${hY(K)}" />`,`<meta property="og:url" content="${hY(J)}" />`,`<meta property="og:image" content="${hY(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${hY(N)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${hY(W)}" />`,`<meta name="twitter:description" content="${hY(K)}" />`,`<meta name="twitter:image" content="${hY(H)}" />`,`<meta name="twitter:image:alt" content="${hY(N)}" />`,`<link rel="canonical" href="${hY(J)}" />`,`<link rel="icon" href="${hY(Y)}" sizes="any" />`].join(`
2729
+ Respond with the structured verdict and a short reason.`,x_$;var g_$=B(()=>{k4();dw();p81();O86=t81.object({requiresReview:t81.boolean().describe("true if the changes should go through pull-request review"),reason:t81.string().describe("One short sentence explaining the decision (max ~120 chars)")});x_$={requiresReview:!1,reason:""}});function E86($){if(!$||$.includes(".."))return!1;return L86.test($)}function h_$($){let Z=typeof $.__resolveType==="string"?$.__resolveType:null;if(!Z||!E86(Z))return null;let{__resolveType:X,...Q}=$;return{resolveType:Z,payload:Q}}function u_$($,Z){return`${$.replace(/\/+$/,"")}/deco/invoke/${Z}`}var L86;var c_$=B(()=>{L86=/^[\w./@-]+$/});function o81($){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 l_$($,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 d_$($,Z,X,Q){if(!Q.connectionId)throw new mg("Push requires a connected GitHub account. Connect mcp-github for this project and restart the sandbox.");let Y=$.organization?.id;if(!Y)throw new mg(l7);await Tw({ctx:$,connectionId:Q.connectionId,organizationId:Y,forceRefresh:!0,onLegacyMintError:(N)=>{let F=N instanceof Error?N.message:l7;throw new mg(F)}});let{cloneUrl:G,gitUserName:J,gitUserEmail:W}=await Rw(Q.connectionId,Q.owner,Q.name,$.db,$.vault),K=wj0($),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 N=await cw(H,j86).catch(()=>H.statusText);throw Error(`Failed to refresh sandbox git credentials (${H.status}): ${N}`)}}var j86=10485760,mg;var m_$=B(()=>{YN();u81();Ci();of();mg=class mg extends Error{constructor($){super($);this.name="GitPushAuthError"}}});function P86($){let Z=$.startsWith("thread:")?$.slice(7):$;if(!Z||Z.length>255||Z.includes("..")||Z.startsWith("/")||Z.endsWith("/")||Z.endsWith(".lock")||!z86.test(Z))throw Error(`Invalid branch name: ${$}`)}function cC($){return AbortSignal.any([$.req.raw.signal,AbortSignal.timeout(T86)])}function lC($){let{runner:Z}=$.get("vmClaim");if(!Z)return $.json({error:"No sandbox runner configured"},503);return Z}function r81($,Z){let Q=(Oj0.get($)??Promise.resolve()).catch(()=>{}).then(Z),Y=Q.catch(()=>{});return Oj0.set($,Y),Y.finally(()=>{if(Oj0.get($)===Y)Oj0.delete($)}),Q}async function bZ($,Z,X){let Q=lC($);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 N=X?.signal,F={method:W,headers:H,body:K,...N?{signal:N}:{}},U=async()=>{let w=await Q.proxyDaemonRequest(Y,Z,F);if(X?.map404to410&&w.status===404){try{await w.body?.cancel()}catch{}if(await Q.adoptLiveClaim?.({userId:G,projectRef:J},Y))w=await Q.proxyDaemonRequest(Y,Z,F);if(w.status===404){try{await w.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",...gY}})}}let O=await w.text(),D=X?.redactRepoDirUnlessDesktop&&Q.kind!=="user-desktop"?I86(O):O,L=w.headers.get("content-type")??"application/json";return new Response(D,{status:w.status,headers:{"content-type":L,...gY}})};try{if(N){let w=U();return w.catch(()=>{}),await Promise.race([w,new Promise((D,L)=>{if(N.aborted)return L(N.reason);N.addEventListener("abort",()=>L(N.reason),{once:!0})})])}return await U()}catch(w){let O=w instanceof Error?w.message:String(w);return $.json({error:`Daemon unreachable: ${O}`},502)}}function I86($){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 Bj0($,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)try{let W=JSON.parse(J);throw Error(W.error??`Daemon error (${G.status})`)}catch(W){if(W instanceof Error&&W.message!==J)throw W;throw Error(`Daemon error (${G.status})`)}return JSON.parse(J)}function q86($){return p_$.includes($)}var z86,i_$=524288,A86=65536,T86=1e4,n_$=2000,R86,Oj0,gY,p_$,t_$=()=>{let $=new B1;return $.use("/:virtualMcpId/:branch/*",R86),$.post("/:virtualMcpId/:branch/write",(Z)=>bZ(Z,"/_sandbox/write",{forwardJsonBody:!0,signal:cC(Z)})),$.post("/:virtualMcpId/:branch/unlink",(Z)=>bZ(Z,"/_sandbox/unlink",{forwardJsonBody:!0,signal:cC(Z)})),$.post("/:virtualMcpId/:branch/mkdir",(Z)=>bZ(Z,"/_sandbox/mkdir",{forwardJsonBody:!0,signal:cC(Z)})),$.post("/:virtualMcpId/:branch/rename",(Z)=>bZ(Z,"/_sandbox/rename",{forwardJsonBody:!0,signal:cC(Z)})),$.post("/:virtualMcpId/:branch/read",(Z)=>bZ(Z,"/_sandbox/read",{forwardJsonBody:!0,signal:cC(Z)})),$.post("/:virtualMcpId/:branch/glob",(Z)=>bZ(Z,"/_sandbox/glob",{forwardJsonBody:!0,signal:cC(Z)})),$.post("/:virtualMcpId/:branch/grep",(Z)=>bZ(Z,"/_sandbox/grep",{forwardJsonBody:!0,signal:cC(Z)})),$.post("/:virtualMcpId/:branch/exec/:script",async(Z)=>{let X=Z.req.param("script");if(!X)return Z.json({error:"missing script name"},400);return bZ(Z,`/_sandbox/exec/${encodeURIComponent(X)}`)}),$.post("/:virtualMcpId/:branch/exec/:script/kill",async(Z)=>{let X=Z.req.param("script");if(!X)return Z.json({error:"missing script name"},400);return bZ(Z,`/_sandbox/exec/${encodeURIComponent(X)}/kill`)}),$.get("/:virtualMcpId/:branch/config",(Z)=>bZ(Z,"/_sandbox/config",{method:"GET",map404to410:!0,redactRepoDirUnlessDesktop:!0})),$.put("/:virtualMcpId/:branch/config",(Z)=>bZ(Z,"/_sandbox/config",{method:"PUT",forwardJsonBody:!0,map404to410:!0})),$.post("/:virtualMcpId/:branch/setup/:step",async(Z)=>{let X=Z.req.param("step");if(!X||!q86(X))return Z.json({error:`step must be one of: ${p_$.join(", ")}`},400);if(X==="start"){let Q=Z.get("vmClaim");if(Q.runner){let Y=o(Z.var.studioContext),G=dF0(Q.virtualMcpMetadata);try{await iF0({ctx:Z.var.studioContext,runner:Q.runner,handle:Q.claimName,orgId:Y.id,userId:Q.callerUserId,entries:G})}catch(J){let W=J instanceof Error?J.message:String(J);return Z.json({error:`Failed to push env to daemon: ${W}`},502)}}}return bZ(Z,`/_sandbox/setup/${X}`,{signal:Z.req.raw.signal,map404to410:!0})}),$.get("/:virtualMcpId/:branch/events",(Z)=>{let X=Z.get("vmClaim");if(!X.runner)return XF(Z,async(Q)=>{await Q.writeSSE({event:"phase",data:JSON.stringify({kind:"failed",reason:"unknown",message:"No sandbox runner configured on this studio instance."})})});return V_$(Z,{ctx:Z.var.studioContext,claimName:X.claimName,runner:X.runner,virtualMcpId:X.virtualMcpId,branch:X.branch,userId:X.userId,projectRef:X.projectRef,virtualMcpMetadata:X.virtualMcpMetadata})}),$.get("/:virtualMcpId/:branch/git/status",(Z)=>bZ(Z,"/_sandbox/git/status",{method:"GET",map404to410:!0,signal:AbortSignal.any([Z.req.raw.signal,AbortSignal.timeout(n_$)])})),$.post("/:virtualMcpId/:branch/git/status",(Z)=>bZ(Z,"/_sandbox/git/status",{map404to410:!0,signal:AbortSignal.any([Z.req.raw.signal,AbortSignal.timeout(n_$)])})),$.post("/:virtualMcpId/:branch/git/diff",(Z)=>bZ(Z,"/_sandbox/git/diff",{forwardJsonBody:!0,map404to410:!0})),$.post("/:virtualMcpId/:branch/git/publish",async(Z)=>{let X=lC(Z);if(X instanceof Response)return X;let{claimName:Q,virtualMcpMetadata:Y,connectionIds:G}=Z.get("vmClaim"),J=Z.var.studioContext;return r81(Q,async()=>{try{await c81(J,X,Q);let W=l_$(Y,G);if(W)await d_$(J,X,Q,W)}catch(W){if(W instanceof mg)return Z.json({error:W.message},403,gY);let K=W instanceof Error?W.message:String(W);return Z.json({error:K},502,gY)}return bZ(Z,"/_sandbox/git/publish",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/discard",(Z)=>{let{claimName:X}=Z.get("vmClaim");return r81(X,()=>bZ(Z,"/_sandbox/git/discard",{forwardJsonBody:!0,map404to410:!0}))}),$.post("/:virtualMcpId/:branch/git/rebase",async(Z)=>{let X=lC(Z);if(X instanceof Response)return X;let{claimName:Q}=Z.get("vmClaim"),Y=Z.var.studioContext;return r81(Q,async()=>{try{await c81(Y,X,Q)}catch(G){let J=G instanceof Error?G.message:String(G);return Z.json({error:J},502,gY)}return bZ(Z,"/_sandbox/git/rebase",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/suggest-commit",WZ({maxSize:i_$,onError:(Z)=>Z.json({error:"Payload too large"},413,gY)}),async(Z)=>{let X=lC(Z);if(X instanceof Response)return X;let{claimName:Q,userId:Y,projectRef:G}=Z.get("vmClaim"),J=Z.var.studioContext;try{let W=await Z.req.json().catch(()=>({})),K=W.status,H=W.diff,N=H!=null&&typeof H.diffs==="object"&&H.diffs!==null,[F,U]=m81(K)&&N?[K,H]:await Promise.all([Bj0(X,Q,"/_sandbox/git/status","GET",{userId:Y,projectRef:G}),Bj0(X,Q,"/_sandbox/git/diff","GET",{userId:Y,projectRef:G})]),w=await f_$(J,F,U);return Z.json(w,200,gY)}catch(W){let K=W instanceof Error?W.message:String(W);if(K==="SANDBOX_GONE")return Z.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,gY);return Z.json({error:K},502,gY)}}),$.post("/:virtualMcpId/:branch/git/judge-review",WZ({maxSize:i_$,onError:(Z)=>Z.json({error:"Payload too large"},413,gY)}),async(Z)=>{let X=lC(Z);if(X instanceof Response)return X;let{claimName:Q,userId:Y,projectRef:G}=Z.get("vmClaim"),J=Z.var.studioContext;try{let W=await Z.req.json().catch(()=>({})),K=W.status,H=W.diff,N=H!=null&&typeof H.diffs==="object"&&H.diffs!==null,[F,U]=m81(K)&&N?[K,H]:await Promise.all([Bj0(X,Q,"/_sandbox/git/status","GET",{userId:Y,projectRef:G}),Bj0(X,Q,"/_sandbox/git/diff","GET",{userId:Y,projectRef:G})]),w=await y_$(J,F,U,typeof W.language==="string"?W.language:void 0);return Z.json(w,200,gY)}catch(W){let K=W instanceof Error?W.message:String(W);if(K==="SANDBOX_GONE")return Z.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,gY);return Z.json({error:K},502,gY)}}),$.get("/:virtualMcpId/:branch/preview-fetch",async(Z)=>{let X=lC(Z);if(X instanceof Response)return X;let{claimName:Q}=Z.get("vmClaim"),Y=Z.req.query("path");if(!Y||!Y.startsWith("/")||Y.startsWith("//")||Y.includes("..")||Y.includes("\\"))return Z.json({error:"Path not allowed"},403);let G;try{G=await X.getPreviewUrl(Q)}catch{return Z.json({error:"Preview not available"},502)}if(!G)return Z.json({error:"Preview not available"},502);let J=G.replace(/\/+$/,""),W=o81(`${J}${Y}`),K;try{K=await fetch(W?.url??`${J}${Y}`,{...W?{headers:{host:W.hostHeader}}:{}})}catch{return Z.json({error:"Preview unreachable"},502)}let H;try{H=await K.text()}catch{return Z.json({error:"Preview unreachable"},502)}return new Response(H,{status:K.status,headers:{"content-type":K.headers.get("content-type")??"application/json"}})}),$.post("/:virtualMcpId/:branch/preview-invoke",WZ({maxSize:A86,onError:(Z)=>Z.json({error:"Payload too large"},413)}),async(Z)=>{let X=lC(Z);if(X instanceof Response)return X;let{claimName:Q}=Z.get("vmClaim"),Y;try{Y=await X.getPreviewUrl(Q)}catch{return Z.json({error:"Preview not available"},502)}if(!Y)return Z.json({error:"Preview not available"},502);let G;try{G=await Z.req.json()}catch{return Z.json({error:"Invalid JSON body"},400)}if(!G||typeof G!=="object"||Array.isArray(G))return Z.json({error:"Invalid JSON body"},400);let J=h_$(G);if(!J)return Z.json({error:"Invalid or missing __resolveType"},400);let W=u_$(Y,J.resolveType),K=o81(W),H;try{H=await fetch(K?.url??W,{method:"POST",headers:{"content-type":"application/json",...K?{host:K.hostHeader}:{}},body:JSON.stringify(J.payload),signal:AbortSignal.timeout(30000)})}catch{return Z.json({error:"Preview unreachable"},502)}let N;try{N=await H.text()}catch{return Z.json({error:"Preview unreachable"},502)}return new Response(N,{status:H.status,headers:{"content-type":H.headers.get("content-type")??"application/json"}})}),$};var o_$=B(()=>{y8();lO();dg();q_$();QN();k_$();B3();yw();S_$();C_$();Rd0();Si();p81();g_$();c_$();m_$();z86=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;R86=I_$(async($,Z)=>{let X=$.var.studioContext;try{$0(X)}catch{return $.json({error:"Unauthorized"},401)}let Q=W1(X);if(!Q)return $.json({error:"Unauthorized"},401);let Y;try{Y=o(X)}catch{return $.json({error:"Organization scope required"},403)}let G=$.req.param("virtualMcpId"),J=$.req.param("branch");if(!G||!J)return $.json({error:"virtualMcpId and branch are required"},400);try{P86(J)}catch(w){let O=w instanceof Error?w.message:String(w);return $.json({error:O},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=rm({orgId:Y.id,virtualMcpId:G,branch:J}),H=await wN(X,J,Q),N=M_$({userId:H,projectRef:K}),F=W.metadata??null,U;try{U=(await hX(X,{userId:H,branch:J,virtualMcpMetadata:F})).provider}catch{U=null}if(!U)return $.json({error:"No sandbox runner found"},404);return $.set("vmClaim",{claimName:N,callerUserId:Q,runner:U,virtualMcpId:G,branch:J,userId:H,projectRef:K,virtualMcpMetadata:F,connectionIds:W.connections?.map((w)=>w.connection_id)??[]}),Z()});Oj0=new Map;gY={"Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache"};p_$=["clone","install","start"]});var r_$=($)=>{let Z=new B1;if(Z.use("*",_C),Z.route("/",VE0()),Z.route("/",HS$()),Z.route("/",U_$()),Z.route("/",H_$()),Z.route("/",Nj0()),Z.route("/tools",j_$()),Z.route("/",D_$()),Z.route("/",iC$({kvStorage:$.kvStorage})),Z.route("/",dC$()),Z.route("/fs",X_$({getConnection:$.getNatsConnection})),Z.route("/sandbox",t_$()),Z.route("/",J_$()),Z.route("/deco-sites",_E0()),Z.route("/sso",TE0()),Z.route("/",Fj0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",ZS$()),$.mountDevAssets)Z.route("/dev-assets",vE0({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("/",rq$()),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",Y_$()),Z.route("/mcp",nw0()),Z.route("/mcp/self",Hj0()),Z.route("/mcp",ow0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var a_$=B(()=>{y8();W$1();XS$();U$1();bE0();Yo();G$1();mC$();nC$();Q_$();Dn();r11();rw0();v81();G_$();W_$();N_$();w_$();L_$();f81();z_$();x81();pw0();o_$()});function k86($){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}}))}async function S86($,Z){let X=await fetch(`${$}/rest/v1/apps?select=name,title,description,logo,category,vendors(alias,url)`,{headers:{apikey:Z,Authorization:`Bearer ${Z}`,Accept:"application/json"},signal:AbortSignal.timeout(M86)});if(!X.ok){let Q=await X.text().catch(()=>X.statusText);throw console.error(`[deco-apps] Supabase error (${X.status}): ${Q.slice(0,200)}`),Error(`External service error (${X.status})`)}return await X.json()}var M86=1e4,V86=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},s_$=()=>{let $=new B1;return $.use("*",V86),$.get("/",async(Z)=>{let X=c0(),Q=X.decoSupabaseUrl,Y=X.decoSupabaseServiceKey;if(!Q||!Y)return Z.json({apps:[]});try{let G=await S86(Q,Y);return Z.json({apps:k86(G)})}catch(G){return console.error("[deco-apps] GET error:",G),Z.json({error:"Failed to fetch apps"},502)}}),$};var e_$=B(()=>{y8();S$()});import{z as M1}from"zod";function gK($,Z="invalid_request_error",X=null,Q=null){return{error:{message:$,type:Z,param:X,code:Q}}}function u86($){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 c86($,Z,X){try{return JSON.parse($)}catch{throw new Xv$(`Invalid JSON in tool call arguments for function '${X}' (tool_call_id: ${Z}): ${$}`)}}function l86($){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:c86(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 d86($){let Z=$.map((X)=>{let Q=X.function.parameters?EY(X.function.parameters):EY({type:"object",properties:{}});return[X.function.name,_$({description:X.function.description,inputSchema:Q})]});return Object.fromEntries(Z)}function m86($){if(!$)return;return{openai:{response_format:$}}}function i86(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function $v$($,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 Zv$($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var C86=256,_86,v86,b86,f86,x86,y86,g86,h86,Xv$,Qv$,Yv$;var Gv$=B(()=>{k4();y8();dg();fN();_86=M1.object({type:M1.literal("function"),function:M1.object({name:M1.string(),description:M1.string().optional(),parameters:M1.record(M1.string(),M1.unknown()).optional()})}),v86=M1.object({id:M1.string(),type:M1.literal("function"),function:M1.object({name:M1.string(),arguments:M1.string()})}),b86=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(v86).optional()}),M1.object({role:M1.literal("tool"),content:M1.string(),tool_call_id:M1.string()})]),f86=M1.object({type:M1.literal("text")}),x86=M1.object({type:M1.literal("json_object")}),y86=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()})}),g86=M1.union([f86,x86,y86]),h86=M1.object({model:M1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:M1.array(b86),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(_86).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:g86.optional(),user:M1.string().optional()});Xv$=class Xv$ extends Error{constructor($){super($);this.name="MessageConversionError"}};Qv$=new B1;Qv$.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),X=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(gK("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(gK("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(gK("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Q=await $.req.json(),Y=h86.safeParse(Q);if(!Y.success){let L=Y.error.issues[0]??{message:"Invalid request",path:[]};return $.json(gK(`Invalid request: ${L.message}`,"invalid_request_error",L.path.length>0?L.path.join("."):null),400)}let G=Y.data,J=u86(G.model);if(!J)return $.json(gK("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)=>ZD(j.providerId));if(!E)return $.json(gK("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(gK(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let N=H.aiSdk.languageModel(K),F=l86(G.messages),U=G.tools?d86(G.tools):void 0,w=m86(G.response_format),O=i86(),D=Math.floor(Date.now()/1000);if(G.stream)return XF($,async(L)=>{let E=$v$(N,F,U,G,w,$.req.raw.signal);try{let j=Pw(E),z=!1,A=0,P="",M=async()=>{if(P.length===0)return;let k=P;P="",await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{content:k},finish_reason:null}]})})};for await(let k of j.fullStream){if(!z&&(k.type==="text-delta"||k.type==="tool-call"))await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),z=!0;if(k.type==="text-delta"){if(P+=k.text,P.length>=C86)await M()}else if(k.type==="tool-call"){await M();let q=A++;await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{tool_calls:[{index:q,id:k.toolCallId,type:"function",function:{name:k.toolName,arguments:JSON.stringify(k.input)}}]},finish_reason:null}]})})}else if(k.type==="finish")await M(),await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{},finish_reason:Zv$(k.finishReason)}],usage:k.totalUsage?{prompt_tokens:k.totalUsage.inputTokens??0,completion_tokens:k.totalUsage.outputTokens??0,total_tokens:k.totalUsage.totalTokens??0}:void 0})})}await 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=$v$(N,F,U,G,w,$.req.raw.signal),E=await jw(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:O,object:"chat.completion",created:D,model:G.model,choices:[{index:0,message:j,finish_reason:Zv$(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(gK("Request aborted","invalid_request_error"),400);if(Y.name==="MessageConversionError")return $.json(gK(Y.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",Y.message,Y.stack),$.json(gK(Y.message,"server_error"),500)}});Yv$=Qv$});var Wv$;var Jv$=B(()=>{Wv$={name:"decocms",version:"4.197.4",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.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 t86(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??p86}}var Kv$,p86="https://ph.studio.decocms.com",Hv$;var Nv$=B(()=>{y8();_x0();IV();LZ();S$();i11();Jv$();Kv$=new B1;Kv$.get("/",($)=>{let Z={version:Wv$.version,theme:oh1(),...iD().logo&&{logo:iD().logo},...WK()&&{internalUrl:Tq1()},...c0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!c0().firecrawlApiKey,auth:Dk$(),posthog:t86(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:!WK()&&c0().sandboxProviderKind==="agent-sandbox"}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});Hv$=Kv$});function ig($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function a81($){return(ig($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((X)=>X.charAt(0).toUpperCase()+X.slice(1)).join(" ")}function Uv$($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(ig($))}&sz=${Z}`}function Fv$($,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 wv$($){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()?Fv$(`${Y.trim().replace(/\s+/g," ")} \u2014 ${J}`,200):Fv$(`How does ${X} really perform? ${J}`,200);return{title:G,description:W}}import{z as l0}from"zod";var dC,o86,r86,a86,s86,Ov$;var Bv$=B(()=>{dC=l0.enum(["good","bad","neutral"]),o86=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:dC.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 $})),r86=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(o86)),a86={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()},s86=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:dC.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:dC.optional()}),l0.object({template:l0.literal("stats"),stats:l0.array(l0.object({value:l0.coerce.string(),label:l0.coerce.string(),tone:dC.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:dC.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(r86).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:dC.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:dC.optional()})).min(1)})]),Ov$=l0.object({...a86,template:s86})});function Dj0($){let Z=[],X=[...$.sections].sort((Y,G)=>Y.position-G.position).map((Y)=>{let G=Ov$.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 s81=B(()=>{Bv$()});import{join as Dv$}from"path";async function $46($){try{let Z=await fetch(`${CW({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(e86)});if(!Z.ok)return null;let X=await Z.json(),{deck:Q}=Dj0(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()||a81($),score:Q.meta.scores?.cover??J?.score?.value,verdict:Y?.annotation?.trim()||Y?.headline?.trim()||void 0}}catch{return null}}function hY($){return $.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;")}function Z46($,Z){let X=ig($),Q=Z?.brand?.trim()||a81(X),Y=Uv$(X,128),J=`${(c0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(X)}`,{title:W,description:K}=wv$({brand:Q,domain:X,score:Z?.score,verdict:Z?.verdict}),H=`${J}/og.png`,N=`${Q} commerce report by decocms`;return[`<title>${hY(W)}</title>`,`<meta name="description" content="${hY(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="${hY(W)}" />`,`<meta property="og:description" content="${hY(K)}" />`,`<meta property="og:url" content="${hY(J)}" />`,`<meta property="og:image" content="${hY(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${hY(N)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${hY(W)}" />`,`<meta name="twitter:description" content="${hY(K)}" />`,`<meta name="twitter:image" content="${hY(H)}" />`,`<meta name="twitter:image:alt" content="${hY(N)}" />`,`<link rel="canonical" href="${hY(J)}" />`,`<link rel="icon" href="${hY(Y)}" sizes="any" />`].join(`
2730
2730
  `)}function X46($,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}
2731
2731
  </head>`)}function Lv$($){let Z=new B1;return Z.get("/:domain/og.png",async(X)=>{let Q=ig(X.req.param("domain")),Y=async()=>{let G=$?Bun.file(Dv$($,"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(`${CW({})}/api/v2/public/diagnostics/${encodeURIComponent(Q)}/og.png`,{signal:AbortSignal.timeout(Q46)}),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=$?Dv$($,"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 $46(ig(Q)),K=Z46(Q,W);return X.html(X46(J,K),200,{"Cache-Control":"public, max-age=0, s-maxage=300"})}catch{return X.html(J)}}),Z}var e86=2500,Q46=1e4;var Ev$=B(()=>{y8();s81();GL();S$()});function Co($,Z){return fetch(`${CW({})}${$}`,Z)}async function Y46($,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 Co(`/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}=Dj0(J);return{status:W.slides.length?"ready":"empty",deck:W,scanned_at:J.scanned_at,drops:K}}var G46,u3,Lj0=async($,Z)=>{if(!$.get("reportUser"))return $.json({error:"Authentication required"},401);await Z();return},jv$;var zv$=B(()=>{y8();PG();GL();s81();G46=new Set(["complete","errored","terminated","unknown"]),u3=new B1;u3.use("*",async($,Z)=>{let X=await j8.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});u3.use("/run",Lj0);u3.use("/status",Lj0);u3.use("/link-token/*",Lj0);u3.use("/suggest",Lj0);u3.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 Y46(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)}});u3.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 Co("/api/v2/diagnostics/run",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${YL({})}`},body:JSON.stringify({url:Q,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)}});u3.get("/status",async($)=>{let Z=$.req.query("id");if(!Z)return $.json({error:"id is required"},400);try{let X=await Co(`/api/v2/diagnostics/status?id=${encodeURIComponent(Z)}`,{headers:{Authorization:`Bearer ${YL({})}`}});if(!X.ok)return $.json({error:`status HTTP ${X.status}`},502);let Y=(await X.json()).status??"unknown",G={done:G46.has(Y),status:Y};return $.json(G)}catch{return $.json({error:"status failed"},502)}});u3.get("/link-token/:id",async($)=>{let Z=$.req.param("id");try{let X=await Co(`/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)}});u3.get("/suggest",async($)=>{let Z=($.req.query("q")??"").trim().slice(0,64);if(Z.length<2)return $.json({suggestions:[]});try{let X=await Co(`/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:[]})}});jv$=u3});import{createHmac as J46,timingSafeEqual as W46}from"crypto";function Av$($,Z,X,Q=Date.now()){if(!Z||!X)return!1;let Y,G=[];for(let H of Z.split(",")){let N=H.indexOf("=");if(N<=0)continue;let F=H.slice(0,N).trim(),U=H.slice(N+1).trim();if(F==="t")Y=U;else if(F==="v1")G.push(U)}if(!Y||G.length===0)return!1;let J=Number(Y);if(!Number.isFinite(J)||Math.abs(Q/1000-J)>K46)return!1;let W=J46("sha256",X).update(`${Y}.${$}`).digest("hex"),K=Buffer.from(W,"hex");return G.some((H)=>{let N=Buffer.from(H,"hex");return K.length===N.length&&W46(K,N)})}function Tv$($){let Z;try{Z=JSON.parse($)}catch{return null}let X=eG(Z),Q=eG(eG(X?.data)?.object);if(!X||typeof X.type!=="string"||!Q)return null;return{id:hK(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 Rv$($){switch($){case"active":case"trialing":return"active";case"past_due":return"past_due";default:return"canceled"}}function hK($){return typeof $==="string"?$:void 0}function eG($){return typeof $==="object"&&$!==null?$:void 0}function Ej0($){return typeof $==="number"?new Date($*1000):null}function Z41($){return hK($)??hK(eG($)?.id)}function H46($){return Z41($.subscription)??hK(eG(eG($.parent)?.subscription_details)?.subscription)}function N46($){let Z=Ej0($.current_period_end);if(Z)return Z;let X=eG($.items)?.data;if(!Array.isArray(X))return null;let Q=0;for(let Y of X){let G=eG(Y)?.current_period_end;if(typeof G==="number"&&G>Q)Q=G}return Q>0?new Date(Q*1000):null}function e81($,Z){let X=Ej0($.created);return!!X&&!!Z.lastStripeEventAt&&X<Z.lastStripeEventAt}function $41($,Z){let X=Ej0($.created);if(!X)return;return Z.lastStripeEventAt&&Z.lastStripeEventAt>X?void 0:X}async function F46($,Z){let X=Z.data.object;switch(Z.type){case"checkout.session.completed":case"checkout.session.async_payment_succeeded":{let Q=hK(eG(X.metadata)?.orgId);if(!Q)return{handled:!1,reason:"no orgId"};if(hK(eG(X.metadata)?.kind)==="topup"){if(X.mode!=="payment")return{handled:!1,reason:"topup with wrong mode"};if(hK(X.payment_status)!=="paid")return{handled:!1,reason:"payment not confirmed"};let J=hK(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(eG(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:eG(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(hK(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=Z41(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(e81(Z,Y))return{handled:!1,reason:"stale event"};return await $.updateStripeState(Q,{stripeCustomerId:Z41(X.customer),stripeSubscriptionId:G,status:"active",lastStripeEventAt:$41(Z,Y)}),{handled:!0,organizationId:Q}}case"customer.subscription.updated":case"customer.subscription.deleted":{let Q=hK(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&&e81(Z,Y))return{handled:!1,reason:"stale event"};let J=G?"canceled":Rv$(X.status);return await $.updateStripeState(Y.organizationId,{status:J,currentPeriodEnd:N46(X),...G&&{stripeSubscriptionId:null},lastStripeEventAt:$41(Z,Y)}),{handled:!0,organizationId:Y.organizationId}}case"invoice.paid":{let Q=H46(X);if(!Q)return{handled:!1,reason:"no sub id"};let Y=await $.getBillingByStripeSubscriptionId(Q);if(!Y)return{handled:!1,reason:"unknown subscription"};if(e81(Z,Y))return{handled:!1,reason:"stale event"};return await $.updateStripeState(Y.organizationId,{status:"active",currentPeriodEnd:Ej0(X.period_end),lastStripeEventAt:$41(Z,Y)}),{handled:!0,organizationId:Y.organizationId}}default:return{handled:!1,reason:`unhandled event ${Z.type}`}}}function U46($,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:Rv$(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 Pv$($,Z){let X=U46($,Z);if(!X)return;hH({event:X.name,organizationId:X.organizationId,...$.id?{uuid:Ql1(`stripe:${$.id}:${X.name}`)}:{},...$.created?{timestamp:new Date($.created*1000)}:{},properties:X.properties})}async function Iv$($){let Z=new MW(m8().db),X=await F46(Z,$);if(!(X.handled&&X.topUp))Pv$($,X);if(X.handled&&X.topUp)await ZF$({organizationId:X.organizationId,amountCents:X.topUp.creditCents,referenceId:X.topUp.referenceId}),Pv$($,X);if(!X.handled&&X.orphanSubscriptionId)try{await Dt1(X.orphanSubscriptionId),console.error("stripe webhook: canceled orphan subscription",{subscriptionId:X.orphanSubscriptionId,eventId:$.id})}catch(Q){if(!(Q instanceof eJ&&(Q.status===400||Q.status===404)))throw Q}return X}var K46=300;var qv$=B(()=>{wG();h4();qm();uo0()});var w46=1048576,X41;var Mv$=B(()=>{y8();lO();S$();qv$();X41=new B1;X41.post("/webhook",WZ({maxSize:w46,onError:($)=>$.json({error:"payload too large"},413)}),async($)=>{let Z=c0().stripeWebhookSecret;if(!Z)return $.json({error:"stripe billing not configured"},503);let X=await $.req.text();if(!Av$(X,$.req.header("stripe-signature"),Z))return $.json({error:"invalid signature"},400);let Y=Tv$(X);if(!Y)return $.json({error:"invalid payload"},400);let G=await Iv$(Y);return console.log("stripe webhook",{eventId:Y.id,type:Y.type,livemode:Y.livemode,...G}),$.json({received:!0})})});import{timingSafeEqual as O46}from"crypto";function D46($,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 O46(Buffer.from(Y),Buffer.from(Q))}var B46=5242880,Q41;var kv$=B(()=>{y8();lO();qi();Q41=new B1;Q41.post("/webhook",WZ({maxSize:B46,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(!D46(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 Ed0())?.markTenantPoolsDirty(G,Y)??[];return $.json({ok:!0,pools:W})})});function Sv$($,Z){if(Z.startsWith("text/html")||Z.startsWith("image/svg"))$.set("Content-Security-Policy","sandbox allow-scripts allow-modals allow-same-origin")}var Vv$,L46,E46,Cv$;var _v$=B(()=>{y8();dJ();Ix();kf();Vv$=new B1,L46=["range","if-none-match","if-modified-since"],E46=["content-type","content-length","content-range","accept-ranges","etag","last-modified"];Vv$.get("/:org/files/*",async($)=>{let Z=$.get("studioContext"),X=Z.organization?.id;if(!Z.auth?.user?.id){if(Rg($))return $.redirect(`/login?next=${encodeURIComponent($.req.path)}`,302);throw new Q$(401,{message:"Authentication required"})}if(!X)throw new Q$(401,{message:"Organization context required"});let Q=$.req.path.replace(/^.*\/files\//,"");if(!Q)throw new Q$(400,{message:"Missing file key"});let Y=await Xn(Q,Z);if(!Y)throw new Q$(503,{message:"Object storage not configured"});if(Y.startsWith("data:")&&tJ()){let K=Y.match(/^data:([^;]+);base64,(.+)$/s);if(!K)throw new Q$(500,{message:"Invalid data URL from storage"});let[,H,N]=K,F=Buffer.from(N,"base64"),U=new Headers({"Content-Type":H,"Cache-Control":"private, max-age=86400"});return Sv$(U,H),new Response(F,{status:200,headers:U})}let G=new Headers;for(let K of L46){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 Q$(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 Q$(502,{message:"Upstream storage error"});let W=new Headers;for(let K of E46){let H=J.headers.get(K);if(H)W.set(K,H)}return W.set("Cache-Control","private, max-age=86400"),Sv$(W,W.get("content-type")??""),new Response(J.body,{status:J.status,headers:W})});Cv$=Vv$});var _o=C((mC)=>{var j46=mC&&mC.__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]}),z46=mC&&mC.__exportStar||function($,Z){for(var X in $)if(X!=="default"&&!Object.prototype.hasOwnProperty.call(Z,X))j46(Z,$,X)};Object.defineProperty(mC,"__esModule",{value:!0});z46(aQ(),mC)});var fv$=C((vv$)=>{Object.defineProperty(vv$,"__esModule",{value:!0});vv$.version=void 0;vv$.version="3.4.0"});var gv$=C((uK)=>{var P46=uK&&uK.__importDefault||function($){return $&&$.__esModule?$:{default:$}};Object.defineProperty(uK,"__esModule",{value:!0});uK.NodeTransport=uK.VERSION=void 0;uK.nodeResolveHost=M46;var d6=_o(),A46=z0("net"),Y41=z0("tls"),T46=z0("path"),xv$=z0("fs"),R46=P46(z0("dns")),I46=fv$();uK.VERSION=I46.version;var q46="nats.js";class yv${socket;version;lang;yields=[];signal=(0,d6.deferred)();closedNotification=(0,d6.deferred)();options;connected=!1;tlsName="";done=!1;closeError;constructor(){this.lang=q46,this.version=uK.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,d6.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 d6.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 d6.errors.ConnectionError("error connecting - node provided an undefined error");let{code:J}=G,W=J==="ECONNREFUSED"?new d6.errors.ConnectionError("connection refused",{cause:G}):G;throw this.socket?.destroy(),W}}dial($){let Z=(0,d6.deferred)(),X,Q=(0,A46.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,d6.deferred)(),Z;return this.socket.on("data",(X)=>{this.yields.push(X);let Q=d6.DataBuffer.concat(...this.yields),Y=(0,d6.extractProtocolMessage)(Q);if(Y!=="")try{let G=d6.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,d6.deferred)();try{if($=(0,T46.resolve)($),!(0,xv$.existsSync)($))Z.reject(Error(`${$} doesn't exist`));(0,xv$.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,d6.extend)(X,this.options.tls,Y)}catch(Y){return Promise.reject(new d6.errors.ConnectionError(Y.message,{cause:Y}))}let Q=(0,d6.deferred)();try{let Y=(0,Y41.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 d6.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,d6.extend)(Z,this.options.tls,Q)}catch(Q){return Promise.reject(new d6.errors.ConnectionError(Q.message,{cause:Q}))}let X=(0,d6.deferred)();try{let Q=(0,Y41.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 d6.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,d6.render)($[Z])}`);yield $[Z]}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,d6.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 Y41.TLSSocket}_send($){if(this.isClosed||this.socket===void 0)return Promise.resolve();if(this.options.debug)console.info(`< ${(0,d6.render)($)}`);let Z=(0,d6.deferred)();try{this.socket.write($,(X)=>{if(X){if(this.options.debug)console.error(`!!! ${(0,d6.render)($)}: ${X}`);return Z.reject(X)}return Z.resolve()})}catch(X){if(this.options.debug)console.error(`!!! ${(0,d6.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}}uK.NodeTransport=yv$;function M46($){let Z=(0,d6.deferred)();return R46.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 dv$=C((lv$)=>{Object.defineProperty(lv$,"__esModule",{value:!0});lv$.connect=k46;var hv$=gv$(),uv$=_o(),cv$=_o();function k46($={}){if((0,cv$.hasWsProtocol)($))return Promise.reject(cv$.errors.InvalidArgumentError.format("servers","node client doesn't support websockets, use the 'wsconnect' function instead"));return(0,uv$.setTransportFactory)({factory:()=>{return new hv$.NodeTransport},dnsResolveFn:hv$.nodeResolveHost}),uv$.NatsConnectionImpl.connect($)}});var mv$=C((QF)=>{var V46=QF&&QF.__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]}),C46=QF&&QF.__exportStar||function($,Z){for(var X in $)if(X!=="default"&&!Object.prototype.hasOwnProperty.call(Z,X))V46(Z,$,X)};Object.defineProperty(QF,"__esModule",{value:!0});QF.connect=void 0;var _46=dv$();Object.defineProperty(QF,"connect",{enumerable:!0,get:function(){return _46.connect}});C46(_o(),QF)});function tv$($){let Z=$?.connectFn??x46,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 N(U){(async()=>{for await(let w of U.status())if(w.type==="disconnect")console.log("[NatsProvider] Disconnected"),J=!0;else if(w.type==="reconnect")console.log("[NatsProvider] Reconnected, re-firing ready callbacks"),J=!1,Q=null,H()})().catch(()=>{})}async function F(U,w){let O=0;while(!G)try{X=await Z({servers:U,timeout:f46,reconnect:!0,maxReconnectAttempts:-1,...w?{authenticator:w}:{}}),console.log(`[NatsProvider] Connected to ${X.getServer()} after ${O} attempt(s)`),Q=null,J=!1,N(X),H();return}catch{O++;let D=KX(b46,v46,O-1,2,0.5);await y$(D)}}return{init(U,w){if(Y)return;Y=!0,G=!1;let O=w?.creds?iv$.credsAuthenticator(new TextEncoder().encode(w.creds)):void 0;F(U,O).catch(()=>{})},isConnected(){return K()},getConnection(){return K()?X:null},getJetStream(){if(!K())return null;if(!Q)Q=pv$.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 x46($){return nv$.connect($)}var iv$,nv$,pv$,v46=100,b46=3000,f46=3000;var ov$=B(()=>{L6();iv$=S(Lh(),1),nv$=S(mv$(),1),pv$=S(HB(),1)});function G41($,Z){return`${$}.${Z}`}class J41{cache;constructor($){this.cache=Ng({ttlMs:$?.ttlMs??y46,maxSize:$?.maxSize??g46})}async get($,Z){return this.cache.get(G41($,Z))??null}async set($,Z,X){this.cache.set(G41($,Z),X)}async invalidate($,Z){this.cache.delete(G41($,Z))}teardown(){this.cache.clear()}}var y46=600000,g46=5000;var rv$=()=>{};function jj0($,Z){return`${$}:${Z}`}function W41($){let Z=Ng({ttlMs:$?.ttlMs??h46,maxSize:$?.maxSize??u46}),X=$?.getConnection,Q=crypto.randomUUID(),Y=new TextEncoder,G=new TextDecoder,J=null;function W(K,H){let N=X?.();if(!N)return;try{N.publish(av$,Y.encode(JSON.stringify({organizationId:K,keyId:H,originId:Q})))}catch(F){console.warn("[ProviderKeyCache] Publish failed (non-critical):",F)}}return{get(K,H){return Z.get(jj0(K,H))},set(K,H,N){Z.set(jj0(K,H),N)},invalidate(K,H){Z.delete(jj0(K,H)),W(K,H)},start(){if(J)return;let K=X?.();if(!K)return;J=K.subscribe(av$),(async()=>{for await(let H of J)try{let N=JSON.parse(G.decode(H.data));if(N.originId===Q)continue;Z.delete(jj0(N.organizationId,N.keyId))}catch{}})().catch(console.error)},teardown(){J?.unsubscribe(),J=null,Z.clear()}}}var av$="studio.ai-provider-keys.invalidate",h46=30000,u46=5000;var sv$=()=>{};class K41{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=ev$.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 ev$)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 ev$;var $b$=B(()=>{ev$=["studio.decopilot.cancel","mesh.decopilot.cancel"]});var Zb$=($)=>{let Z;return()=>Z??=$()},H41,N41;var Xb$=B(()=>{U5();H41=Zb$(()=>K8.createHistogram("decopilot.stream.encode_ms",{description:"Per-chunk JSON.stringify+encode time for decopilot stream",unit:"ms"})),N41=Zb$(()=>K8.createCounter("decopilot.stream.published_chunks",{description:"Logical decopilot stream chunks published to JetStream",unit:"{chunks}"}))});function p46(){return{name:RN,subjects:[`${Bw0}.>`],storage:c3.StorageType.File,max_age:d46,max_bytes:i46,max_msgs_per_subject:n46,discard:c3.DiscardPolicy.Old,retention:c3.RetentionPolicy.Limits,duplicate_window:m46,num_replicas:1}}class Gb${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 Qb$($){let Z=Yb$.headers();for(let[X,Q]of Object.entries($))Z.set(X,Q);return Z}function a46($,Z){let X=0;return{publish(Q,Y,G,J){Q.publish(Y,G,J?{headers:J}:void 0).catch((W)=>{if(X++,l46().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 s46($){if(!($ instanceof Error))return!1;if($.name==="TimeoutError")return!0;return/timeout|no responders|503/i.test($.message)}class F41{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=p46(),X=await yZ(async()=>{let Q=this.options.getJetStreamManager?await this.options.getJetStreamManager():await c3.jetstreamManager($);try{await Q.streams.info(RN),await Q.streams.update(RN,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(RN),await Q.streams.add(Z);else throw Y}return Q},{maxAttempts:5,minTimeout:250,maxTimeout:4000,jitter:0.5,isRetriable:s46});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=a46(Z,Q),J=!1,W=()=>{if(J)return;J=!0;let H=iJ$(Z);Y.publish(H.subject,H.data).catch(()=>{})};X.addEventListener("abort",W,{once:!0});let K=(H)=>{let N=performance.now(),F=hi0(H,{runId:Z}),U=performance.now()-N;if(H41().record(U),N41().add(1,{"org.id":Q??"unknown"}),r46?.record(U,F.reduce((w,O)=>w+O.data.length,0)),F.length===0){console.warn(`[Decopilot] dropping oversized stream chunk for thread ${Z}`);return}for(let w of F)G.publish(Y,w.subject,w.data,w.headers?Qb$(w.headers):void 0)};return(async()=>{let H=$.getReader(),N=0,F=0,U;try{while(!0){let{done:w,value:O}=await H.read();if(w)break;if(K(O),F++,++N>=64)N=0,await new Promise((D)=>setImmediate(D))}}catch(w){U=w,console.warn(`[Decopilot] stream pump error for thread ${Z}:`,w?.message??w)}finally{if(H.releaseLock(),W(),o46)console.warn(JSON.stringify({msg:"decopilot-stream-diag",event:"pump-done",taskId:Z,publishedChunks:F,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=hi0(Z,{runId:$,dedup:X});if(H41().record(performance.now()-Y),N41().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:Qb$(J.headers)}:{},...J.msgId?{msgID:J.msgId}:{}});return!0}async publishDone($,Z,X){let Q=this.js;if(!Q)return!1;let Y=mJ$({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"?c3.DeliverPolicy.New:c3.DeliverPolicy.All,G=X?.closeOnDone??!1,J=XO($),W;try{W=await(await Q.consumers.get(RN,{filter_subjects:J,deliver_policy:Y})).consume()}catch(D){return console.warn("[Decopilot] JetStream tail unavailable (non-critical):",D?.message??D),null}let N=zw0({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(Dw0()).pipeThrough(Lw0()).getReader(),F=!1,U=()=>{if(F)return;F=!0;try{N.releaseLock()}catch{}},w=!1,O=()=>{if(w)return;w=!0,W.stop(),N.cancel().catch(()=>{}),U()};return Z?.addEventListener("abort",O,{once:!0}),new ReadableStream({async pull(D){for(;;){let{done:L,value:E}=await N.read();if(L){O(),D.close();return}let j=E;if(j.kind==="done"){if(G){O(),D.close();return}continue}D.enqueue(j.chunk);return}},cancel(){O()}})}purge($){if(!this.jsm)return;this.jsm.streams.purge(RN,{filter:XO($)}).catch(()=>{})}teardown(){this.js=null,this.jsm=null}}var c3,Yb$,c46=($)=>{let Z;return()=>Z??=$()},l46,d46=86400000000000,m46=120000000000,i46=4294967296,n46=500000,t46,o46,r46;var Jb$=B(()=>{L6();ui0();Pw0();Ew0();U5();Xb$();c3=S(HB(),1),Yb$=S(Lh(),1),l46=c46(()=>K8.createCounter("decopilot.stream.publish_errors",{description:"Number of JetStream publish failures for decopilot stream chunks",unit:"{errors}"}));t46=process.env.STREAM_ENCODE_TRACE==="1",o46=process.env.DECOPILOT_STREAM_TRACE==="1";r46=t46?new Gb$:null});function zj0($,Z,X,Q){if(!Q)return!1;return $.emit(Z,NW(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 Wb$=B(()=>{L8()});class U41{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}}class w41{taskBoard;contextFactory;options;timer=null;running=!1;cursor=null;constructor($,Z,X={}){this.taskBoard=$;this.contextFactory=Z;this.options=X}start(){if(this.timer)return;let $=this.options.intervalMs??e46;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??Z66,X=this.options.itemIntervalMs??$66,Q=await this.taskBoard.listItemsPendingReview(Z,this.cursor,new Date(Date.now()-X)),Y=Q.at(-1);this.cursor=Q.length===Z&&Y?{updatedAt:Y.updatedAt,id:Y.id}:null;for(let{id:G,organizationId:J}of Q)try{if(await this.reconcileItem(G,J))$++}catch(W){console.error(`[task-board-review-sweeper] ${G} failed`,W)}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()-lY$),Pn0);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()-Q66));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 Ni0(this.taskBoard,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!==o4)continue;let W=await this.contextFactory(Y,J.assignedBy??J.createdBy);if(!W)continue;await IN(W,J,{runClass:"retry"}),Z++,console.warn(`[task-board-review-sweeper] re-dispatched ${Q} after a failure (attempt ${G})`)}catch(J){console.error(`[task-board-review-sweeper] retry dispatch for ${Q} failed`,J),await this.taskBoard.scheduleRunRetry(Q,Y,G,new Date(Date.now()+X66)).catch((W)=>console.error(`[task-board-review-sweeper] re-arming ${Q} failed`,W))}return Z}async reconcileItem($,Z){let X=await this.taskBoard.getById($,Z);if(!X)return!1;if(X.status!=="in_review"||X.assigneeId!==o4)return!1;await this.taskBoard.markSwept($,Z);let Q=await this.taskBoard.listPrs($,Z);if(Q.length===0)return!1;let Y=await this.contextFactory(Z,X.assignedBy??X.createdBy);if(!Y)return!1;let G=await Promise.all(Q.map(async(J)=>({...J,...await En0(Y,Z,J)})));if(G.every((J)=>J.state===null))console.warn(`[task-board-review-sweeper] ${$}: no live PR state from GitHub (${G.length} PR(s)) \u2014 proceeding on unknown`);if(!Ln0(G))return!1;return await Mw0(Y,X),!0}dispose(){if(this.timer)clearInterval(this.timer),this.timer=null}}var e46=60000,$66=300000,Z66=50,X66=60000,Q66=120000;var Kb$=B(()=>{Z7();Nn0();QO();SZ();An0();xx()});import{readdir as Y66,rm as Pj0}from"fs/promises";import{join as Aj0}from"path";async function Tj0($){let Z=new Date;Z.setUTCDate(Z.getUTCDate()-G66),Z.setUTCHours(0,0,0,0);let X=0;try{let Q=await iC($);for(let Y of Q)if(/^\d{4}$/.test(Y))X+=await Hb$($,Y,Z);else if(!Y.startsWith(".")){let G=Aj0($,Y),J=await iC(G);for(let K of J){if(!/^\d{4}$/.test(K))continue;X+=await Hb$(G,K,Z)}if((await iC(G)).length===0)await Pj0(G,{recursive:!0,force:!0})}}catch(Q){console.warn("monitoring retention cleanup failed:",Q)}return X}async function Hb$($,Z,X){let Q=0,Y=Aj0($,Z),G=await iC(Y);for(let W of G){if(!/^\d{2}$/.test(W))continue;let K=Aj0(Y,W),H=await iC(K);for(let F of H){if(!/^\d{2}$/.test(F))continue;let U=new Date(`${Z}-${W}-${F}T00:00:00Z`);if(isNaN(U.getTime()))continue;if(U<X){let w=Aj0(K,F);await Pj0(w,{recursive:!0,force:!0}),Q++}}if((await iC(K)).length===0)await Pj0(K,{recursive:!0,force:!0})}if((await iC(Y)).length===0)await Pj0(Y,{recursive:!0,force:!0});return Q}async function iC($){try{return(await Y66($)).filter((X)=>!X.startsWith("."))}catch{return[]}}var G66=30;var O41=()=>{};import{DBOS as B41,SchedulerMode as J66}from"@dbos-inc/dbos-sdk";async function K66(){let $=[YJ(),nC(),lK()],Z=0;for(let X of $)try{Z+=await Tj0(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 H66($,Z){await B41.runStep(()=>K66(),{name:"monitoringRetention"})}function Fb$(){if(Nb$)return;Nb$=!0;let $=B41.registerWorkflow(H66,{name:"monitoringRetentionWorkflow"});B41.registerScheduled($,{name:"monitoringRetentionWorkflow",crontab:W66,mode:J66.ExactlyOncePerIntervalWhenActive})}var W66="23 4 * * *",Nb$=!1;var Ub$=B(()=>{pQ();O41()});function wb$($){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 _K.create();Y.auth.user={id:X,role:Q.role},Y.organization={id:Q.orgId,slug:Q.orgSlug,name:Q.orgName};let G=await _11($.db,Z,Q.role);return Y.boundAuth=C11({auth:Y.authInstance,headers:new Headers,role:Q.role,permissions:G,userId:X}),Y.access=new cD(X,void 0,Y.boundAuth,Q.role,"self"),Ag(Y,{id:Q.orgId,slug:Q.orgSlug}),Y}}var Ob$=B(()=>{lD();Bg()});function N66(){return{services:[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}],migrationsStatus:"pending",serverUrl:null,logs:[]}}function U66(){for(let $ of F66)$()}function Bb$($){let Z=[...D41.logs,$];D41={...D41,logs:Z.length>500?Z.slice(-500):Z},U66()}function L41(){return w66}var D41,F66,w66=!1;var E41=B(()=>{D41=N66(),F66=new Set});import{EventEmitter as O66}from"events";var j41;var Db$=B(()=>{E41();j41=new O66;j41.on("request",($)=>{Bb$($)})});function Lb$(){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 w=ng(U.params.name),O=U.params.arguments||{},D=Object.keys(O).map((E)=>ng(E)),L=D.length>0?D.slice(0,3).join(",")+(D.length>3?"\u2026":""):"";G=`${e6.tool}${w}${e6.dim}(${L})${e6.reset}`}else if(U.method)G=`${e6.dim}${ng(U.method)}${e6.reset}`}}catch{}}let W=ng(Y);if(Y.startsWith("/mcp/conn_")){let N=Y.split("/")[2]??"";W=`/mcp/${e6.mcp}${ng(N.slice(0,12))}\u2026${e6.reset}`}else if(Y==="/mcp")W=`${e6.mcp}/mcp${e6.reset}`;else if(Y==="/mcp/registry")W=`${e6.mcp}/mcp/registry${e6.reset}`;let K=D66(Q),H=J?"\u25C0":"\u2190";if(!L41())console.log(`${e6.dim}${H}${e6.reset} ${K}${Q}${e6.reset} ${W}${G?` ${G}`:""}`);try{await Z()}finally{let N=Date.now()-X,F=$.res.status,U=B66(F),w=N<1000?`${N}ms`:`${(N/1000).toFixed(1)}s`,O=J?"\u25B6":"\u2192";if(!L41())console.log(`${e6.dim}${O}${e6.reset} ${K}${Q}${e6.reset} ${W}${G?` ${G}`:""} ${U}${F}${e6.reset} ${e6.duration}${w}${e6.reset}`);j41.emit("request",{method:Q,path:ng(Y),status:F,duration:N,timestamp:new Date})}}}var e6,B66=($)=>{if($>=500)return e6.serverError;if($>=400)return e6.clientError;if($>=300)return e6.redirect;return e6.ok},D66=($)=>{return e6[$]||e6.reset},ng=($)=>{return $.replace(/\r/g,"").replace(/\n/g,"").replace(/\x1b\[[0-9;]*m/g,"").replace(/[\x00-\x1f\x7f-\x9f]/g,"")};var Eb$=B(()=>{E41();Db$();e6={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 Ab$}from"crypto";import{mkdir as L66,readdir as E66,rm as jb$,stat as Tb$}from"fs/promises";import{join as P41,relative as j66}from"path";import{z as L$}from"zod";function Ib$($){let Z=$.replace(/[^a-zA-Z0-9_-]/g,"_");return P41(z66,Z)}function qb$($){return $.replace(/^\/+/,"").replace(/\.\./g,"")}function z41($,Z){let X=Ib$($),Q=qb$(Z);return P41(X,Q)}function P66($,Z,X,Q){let Y=c0().encryptionKey||"dev-secret",G=`${$}:${Z}:${X}:${Q}`;return Ab$("sha256",Y).update(G).digest("hex")}function Pb$($,Z,X,Q,Y){let G=Math.floor(Date.now()/1000)+Q,J=P66(Z,X,G,Y),W=new URL(`/api/dev-assets/${Z}/${qb$(X)}`,$);return W.searchParams.set("expires",G.toString()),W.searchParams.set("signature",J),W.searchParams.set("method",Y),W.toString()}function Mb$($,Z,X){let Q=`${$}:${Z.getTime()}:${X}`;return`"${Ab$("md5","etag").update(Q).digest("hex")}"`}async function kb$($,Z,X,Q,Y){try{let G=await E66($,{withFileTypes:!0});for(let J of G){let W=P41($,J.name),H=j66(Z,W).replace(/\\/g,"/");if(X&&!H.startsWith(X))continue;if(J.isDirectory())if(Q){let N=H+"/";if(!X||N.startsWith(X)){if(!(X?H.slice(X.length):H).includes("/"))Y.commonPrefixes.add(N)}}else await kb$(W,Z,X,Q,Y);else if(J.isFile()){if(Q&&X){let N=H.slice(X.length);if(N.includes(Q)){let F=N.indexOf(Q),U=X+N.slice(0,F+1);Y.commonPrefixes.add(U);continue}}try{let N=await Tb$(W);Y.objects.push({key:H,size:N.size,lastModified:N.mtime.toISOString(),etag:Mb$(W,N.mtime,N.size)})}catch{}}}}catch{}}function Sb$($,Z){let Q=o($).id;return[{name:"LIST_OBJECTS",description:"List objects in the local assets directory with pagination support",inputSchema:L$.object({prefix:L$.string().optional(),maxKeys:L$.number().optional().default(1000),continuationToken:L$.string().optional(),delimiter:L$.string().optional()}),outputSchema:L$.object({objects:L$.array(L$.object({key:L$.string(),size:L$.number(),lastModified:L$.string(),etag:L$.string()})),nextContinuationToken:L$.string().optional(),isTruncated:L$.boolean(),commonPrefixes:L$.array(L$.string()).optional()}),handler:async(Y)=>{let G=Y,J=G.prefix||"",W=G.maxKeys??1000,K=G.delimiter,H=G.continuationToken,N=Ib$(Q);await L66(N,{recursive:!0});let F={objects:[],commonPrefixes:new Set};await kb$(N,N,J,K,F),F.objects.sort((L,E)=>L.key.localeCompare(E.key));let U=0;if(H){if(U=F.objects.findIndex((L)=>L.key>H),U===-1)U=F.objects.length}let w=F.objects.slice(U,U+W),O=U+W<F.objects.length,D=O?w[w.length-1]?.key:void 0;return{objects:w,isTruncated:O,nextContinuationToken:D,commonPrefixes:Array.from(F.commonPrefixes).sort()}}},{name:"GET_OBJECT_METADATA",description:"Get metadata for a file in the local assets directory",inputSchema:L$.object({key:L$.string()}),outputSchema:L$.object({contentType:L$.string().optional(),contentLength:L$.number(),lastModified:L$.string(),etag:L$.string(),metadata:L$.record(L$.string(),L$.string()).optional()}),handler:async(Y)=>{let G=Y,J=z41(Q,G.key),W=await Tb$(J);return{contentType:O$1(G.key),contentLength:W.size,lastModified:W.mtime.toISOString(),etag:Mb$(J,W.mtime,W.size)}}},{name:"GET_PRESIGNED_URL",description:"Generate a presigned URL for downloading a file from local storage",inputSchema:L$.object({key:L$.string(),expiresIn:L$.number().optional()}),outputSchema:L$.object({url:L$.string(),expiresIn:L$.number()}),handler:async(Y)=>{let G=Y,J=G.expiresIn??zb$;return{url:Pb$(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:L$.object({key:L$.string(),expiresIn:L$.number().optional(),contentType:L$.string().optional()}),outputSchema:L$.object({url:L$.string(),expiresIn:L$.number()}),handler:async(Y)=>{let G=Y,J=G.expiresIn??zb$;return{url:Pb$(Z,Q,G.key,J,"PUT"),expiresIn:J}}},{name:"DELETE_OBJECT",description:"Delete a single file from local storage",inputSchema:L$.object({key:L$.string()}),outputSchema:L$.object({success:L$.boolean(),key:L$.string()}),handler:async(Y)=>{let G=Y,J=z41(Q,G.key);try{return await jb$(J),{success:!0,key:G.key}}catch{return{success:!1,key:G.key}}}},{name:"DELETE_OBJECTS",description:"Delete multiple files from local storage",inputSchema:L$.object({keys:L$.array(L$.string()).max(1000)}),outputSchema:L$.object({deleted:L$.array(L$.string()),errors:L$.array(L$.object({key:L$.string(),message:L$.string()}))}),handler:async(Y)=>{let G=Y,J=[],W=[];return await Promise.all(G.keys.map(async(K)=>{let H=z41(Q,K);try{await jb$(H),J.push(K)}catch(N){W.push({key:K,message:N instanceof Error?N.message:"Unknown error"})}})),{deleted:J,errors:W}}}]}async function A41($,Z,X){let Q=Sb$(Z,X),Y=new LW({name:"dev-assets-mcp",version:"1.0.0"},{capabilities:{tools:{}},jsonSchemaValidator:Y5});for(let J of Q){let W="shape"in J.inputSchema?J.inputSchema.shape:L$.object({}).shape,K=J.outputSchema&&"shape"in J.outputSchema?J.outputSchema.shape:L$.object({}).shape;Y.registerTool(J.name,{description:J.description??"",inputSchema:W,outputSchema:K,annotations:J.annotations,_meta:J._meta},async(H)=>{try{let N=await J.handler(H);return{content:[{type:"text",text:JSON.stringify(N)}],structuredContent:N}}catch(N){return{content:[{type:"text",text:`Error: ${N.message}`}],isError:!0}}})}let G=new cX({enableJsonResponse:$.headers.get("Accept")?.includes("application/json")??!1});return await Y.connect(G),hG(Y,G,$,"mcp:dev-assets")}async function Vb$($,Z,X,Q){let G=Sb$(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 z66="./data/assets",zb$=3600,Rb$,Cb$;var _b$=B(()=>{S$();cx();y8();lc();vV();TX();bE0();Rb$=new B1;Rb$.all("/",async($)=>{let Z=$.get("studioContext"),X=new URL($.req.url),Q=`${X.protocol}//${X.host}`;return A41($.req.raw,Z,Q)});Cb$=Rb$});var vb$={};N4(vb$,{mountDevRoutes:()=>A66});function A66($,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 A41(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 Vb$(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",Cb$);let X=new B1;X.use("*",g3({mountPath:"/api/dev-assets"})),X.route("/",vE0({orgFromPath:!1})),$.route("/api/dev-assets",X)}var bb$=B(()=>{y8();J$1();bE0();_b$()});import{sql as T66}from"kysely";import{randomUUID as fb$}from"crypto";import{z as R66}from"zod";async function q66($){let Z=new Date().toISOString(),X=fb$(),Q=y4.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:fb$(),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 T66`SELECT
2732
2732
  pg_notify('studio_events', ${X}),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "decocms",
3
- "version": "4.197.2",
3
+ "version": "4.197.4",
4
4
  "description": "Deco CMS — Self-hostable MCP Gateway for managing AI connections and tools",
5
5
  "author": "Deco team",
6
6
  "repository": {
@@ -1 +0,0 @@
1
- import{c as L,b as R,j as r}from"./index-BXi8XGVO.js";import{I as A}from"./input-DuPzhhSH.js";import{L as I}from"./label-BEZ9ozrm.js";import{S as z,a as J,b as O,c as V,d as $}from"./select-C2aLiaQD.js";import{T as D}from"./textarea-D00WtAVC.js";import{R as M,T as U,U as W,J as q,W as G,$ as H}from"./index-iB09S4ZI.js";import{s as F}from"./primitives-DGQ7OHkr.js";import{u as Q}from"./use-autosave-DVVHS6oi.js";import"./tooltip-dxFFf5TO.js";import"./Check-BChGvAW3.js";import"./ChevronDown-DfMtmSgR.js";import"./ChevronUp-Dr2YqthP.js";import"./ArrowUp-C_q46EO5.js";import"./chat-context-IT6-9MAd.js";import"./tab-id-DepDDA9_.js";import"./dialog-BJziDe4N.js";import"./X-Da1aH-NS.js";import"./Copy01-pcUw8cKn.js";import"./hooks-8AOqxrL3.js";import"./use-mcp-client-XuHEw0sL.js";import"./auth-B6pkXjQ7.js";import"./decopilot-sse-pool-DzGiYipX.js";import"./backoff-CrEUbyZT.js";import"./delay-CnY5UFtP.js";import"./use-is-desktop-app-BNujXJc_.js";import"./use-virtual-mcp-DF86UjN0.js";import"./use-ai-providers-pOnoTtq9.js";import"./studio-tools-CIwEdQH6.js";import"./use-decopilot-events-CL16kVza.js";import"./use-organization-settings-DYNBSfY0.js";import"./automation-runs-9N6MOCSR.js";import"./agent-icon-BQVVDebW.js";import"./AlertCircle-DpL6Tscn.js";import"./Tool01-BhAPypFm.js";import"./ArrowLeft-BYRvhhFt.js";import"./Tool02-C1_VEvRQ.js";import"./XCircle-Bn-kiykC.js";import"./ArrowUpRight-CFDR0g1M.js";import"./TrendUp01-CgrsvLX5.js";import"./ZapSquare-DjVa6YMe.js";import"./Users03-Y9NuGIXU.js";import"./CheckCircle-BZAw7ZLj.js";import"./ChevronRight-PJs7Wj1v.js";import"./DotsVertical-BuQlhNri.js";import"./Stars02-DnEwCMW-.js";import"./CpuChip01-CZAfbu8J.js";import"./CreditCard01-Be_a0Hl3.js";import"./Globe01-B5iAXvY9.js";import"./Settings02-BO8Tyy4j.js";import"./Eye-Cb8Ttsk7.js";import"./FilterLines-d91RyRXM.js";import"./Share07-B90wnNYq.js";import"./Star01-Cb4QEb-Y.js";import"./Globe04-CUj3yJ4H.js";import"./SwitchHorizontal01-BEcRH-iW.js";import"./HardDrive-C5Gg1Zd2.js";import"./Key01-fVtj4fXs.js";import"./LayoutLeft-BL44UyAD.js";import"./LinkExternal01-L9JYsRrc.js";import"./LogOut01-BSEcdW7a.js";import"./Monitor01-0j7xzNTu.js";import"./Sun-DqJVcwP1.js";import"./Palette-DxEDEmZD.js";import"./Play-Ce3PIPIz.js";import"./Plus-BshesZK9.js";import"./SearchLg-Bibw1E-2.js";import"./SearchMd-DuGOSj9Q.js";import"./Shield01-BEvfydMk.js";import"./Stars01-BbZWvgRz.js";import"./Trash01-CqgwN4Ls.js";import"./Upload01-CuT2JdpQ.js";import"./User01-Bv6oogoE.js";import"./Users01-mJuxxn4S.js";import"./XClose-DLc2n8Qt.js";import"./Zap-BZPI5EwL.js";import"./useInfiniteQuery-CaMxVBWb.js";import"./use-infinite-scroll-0GwuWQ18.js";import"./use-connection-1XceIaVt.js";import"./card-BSXmZFDc.js";import"./sidebar-Bo-R194o.js";import"./use-mobile-CLmBmZlL.js";import"./table-K5tRinKE.js";import"./empty-state-uZ77Jd0v.js";import"./use-members-B17dnJUi.js";import"./use-org-auth-client-DK9eV4Q0.js";import"./use-clock-tick-B7KDRjlj.js";import"./use-automations-BhU30_ns.js";import"./useSuspenseInfiniteQuery-CGDHD714.js";import"./avatar-BewHuBZX.js";import"./format-time-BnbuEtat.js";import"./differenceInSeconds-NQ4PDo0z.js";import"./use-copy-D6dj3bWn.js";import"./monaco-editor-Dtn0c3c0.js";import"./spinner-DEPr-FcG.js";import"./index-COtjVgHq.js";import"./shell-layout-uIkLH9Oh.js";import"./required-auth-layout-Km00f7IG.js";import"./use-org-sso-BXikBwjB.js";import"./integration-icon-oWKr_bxS.js";import"./use-navigate-to-agent-CesLlenP.js";import"./reusable-new-chat-CouMjkYR.js";import"./AreaChart-CoEemB4J.js";import"./form-BLZEj5M6.js";import"./file-type-icon-DRHukJhb.js";import"./drawer-CuRFEVgy.js";import"./collection-search-Cs9k9yDL.js";import"./tabs-BI2WYCWM.js";import"./toggle-group-BQuU-V-J.js";import"./use-deco-credits-D-5thmbQ.js";import"./popover-CIeMy6Tl.js";import"./alert-dialog-COu8iXMQ.js";import"./toolbar-2JK6-CKe.js";import"./skeleton-BwgcAM0S.js";import"./github-repo-picker-DDtjb7BS.js";import"./use-debounced-value-sAF9FOgW.js";import"./authenticate-and-persist-oauth-BpVUvoKT.js";import"./mcp-oauth-DznHTp7Q.js";import"./use-mcp-tools-DMU5G4E6.js";import"./extract-connection-data-CTTtSTKN.js";import"./metadata-dUsYcpuu.js";import"./provision-repo-scoped-github-connection-ufuvpGD9.js";import"./agent-capabilities-cXfbMfjV.js";import"./connection-card-B4imN2NA.js";import"./use-registry-connections-dmTn3QTb.js";import"./retry-CErkP7V6.js";import"./connection-slug-eyAPH6o3.js";import"./connection-form-helpers-BL4WThpd.js";import"./collection-tabs-CKgPXLEH.js";import"./badge-D2xVGCkQ.js";import"./use-open-billing-url-CqXZzDqc.js";import"./select-model-DnRANcdl.js";import"./checkbox-BgjJh_IR.js";import"./ai-providers-logos-DD3qZ33J.js";import"./settings-section-CSObNV42.js";import"./cards-C_ZfN-TN.js";import"./dropdown-menu-B0uYlxff.js";import"./question-004-sINsf4GQ.js";import"./use-status-sounds-DwKPBF6E.js";import"./deco-site-production-url-CaKZ7xBn.js";import"./use-capability-DtqmBc0p.js";import"./pt-BR-CLy76QW2.js";import"./switch-BPqfZ-jC.js";import"./use-debounced-autosave-DlgUqdX2.js";import"./index-BbwXrbtX.js";import"./search-input-DCThR-Dd.js";import"./index-BrfCenfw.js";import"./use-secrets-hMAD_KTZ.js";import"./self-tool-result-BWr3V3Nr.js";import"./use-tags-L_TWFhNu.js";import"./get-initials-D-f_fDFw.js";import"./command-5Lnlz65r.js";import"./index-BBVhZ0nf.js";import"./use-file-configs-CCGLmbGB.js";import"./automation-list-row-B5UmktTU.js";const X={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"}]},Y={authors:"sandbox.recordEditor.titleAuthor"};function Wr(C){const t=L.c(40),{orgSlug:K,virtualMcpId:h,branch:w,kind:a,blockKey:g,block:f}=C,i=R(),P=M(h);let b;t[0]!==w||t[1]!==K||t[2]!==P||t[3]!==h?(b={orgSlug:K,virtualMcpId:h,branch:w,packagePath:P},t[0]=w,t[1]=K,t[2]=P,t[3]=h,t[4]=b):b=t[4];const p=U(b);let k;t[5]!==f||t[6]!==a?(k=W(f,a),t[5]=f,t[6]=a,t[7]=k):k=t[7];const B=k;let v;t[8]!==g||t[9]!==a||t[10]!==p?(v=l=>{p.mutate({blockKey:g,data:G(g,a,l)})},t[8]=g,t[9]=a,t[10]=p,t[11]=v):v=t[11];const[e,S]=Q(B,v);let j;t[12]!==e||t[13]!==S?(j=(l,o)=>S({...e,[l]:o}),t[12]=e,t[13]=S,t[14]=j):j=t[14];const s=j,T=Y[a];let n;t[15]!==i||t[16]!==T?(n=i(T),t[15]=i,t[16]=T,t[17]=n):n=t[17];let c;t[18]!==n?(c=r.jsx("span",{className:"text-sm font-medium",children:n}),t[18]=n,t[19]=c):c=t[19];let d;t[20]!==p.isError||t[21]!==p.isPending?(d=r.jsx(q,{isPending:p.isPending,isError:p.isError}),t[20]=p.isError,t[21]=p.isPending,t[22]=d):d=t[22];let y;t[23]!==c||t[24]!==d?(y=r.jsxs("div",{className:"flex h-12 shrink-0 items-center justify-between border-b px-6",children:[c,d]}),t[23]=c,t[24]=d,t[25]=y):y=t[25];const N=X[a];let x;if(t[26]!==e||t[27]!==s||t[28]!==i||t[29]!==N){let l;t[31]!==e||t[32]!==s||t[33]!==i?(l=o=>r.jsx("div",{className:"space-y-2",children:o.widget==="image"?r.jsx(H,{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(I,{htmlFor:o.key,children:i(o.labelKey)}),r.jsxs(z,{value:F(e[o.key])||o.options?.[0]?.value,onValueChange:m=>s(o.key,m),children:[r.jsx(J,{id:o.key,className:"h-10 w-full",children:r.jsx(O,{placeholder:i(o.labelKey)})}),r.jsx(V,{children:(o.options??[]).map(m=>r.jsx($,{value:m.value,children:i(m.labelKey)},m.value))})]})]}):r.jsxs(r.Fragment,{children:[r.jsx(I,{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[31]=e,t[32]=s,t[33]=i,t[34]=l):l=t[34],x=N.map(l),t[26]=e,t[27]=s,t[28]=i,t[29]=N,t[30]=x}else x=t[30];let u;t[35]!==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[35]=x,t[36]=u):u=t[36];let E;return t[37]!==y||t[38]!==u?(E=r.jsxs("div",{className:"flex h-full flex-col",children:[y,u]}),t[37]=y,t[38]=u,t[39]=E):E=t[39],E}export{Wr as RecordEditor};
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/registry-layout-C7e1ipww.js","assets/index-BXi8XGVO.js","assets/index-C-bJCsC6.css","assets/Tool02-C1_VEvRQ.js","assets/CheckCircle-BZAw7ZLj.js","assets/Settings02-BO8Tyy4j.js","assets/use-mcp-client-XuHEw0sL.js","assets/auth-B6pkXjQ7.js","assets/useInfiniteQuery-CaMxVBWb.js","assets/use-infinite-scroll-0GwuWQ18.js","assets/studio-tools-CIwEdQH6.js","assets/badge-D2xVGCkQ.js","assets/input-DuPzhhSH.js","assets/dropdown-menu-B0uYlxff.js","assets/Check-BChGvAW3.js","assets/ChevronRight-PJs7Wj1v.js","assets/DotsVertical-BuQlhNri.js","assets/table-K5tRinKE.js","assets/toggle-group-BQuU-V-J.js","assets/use-view-mode-DqkubEXN.js","assets/use-mobile-CLmBmZlL.js","assets/FilterLines-d91RyRXM.js","assets/Globe01-B5iAXvY9.js","assets/SearchMd-DuGOSj9Q.js","assets/dialog-BJziDe4N.js","assets/X-Da1aH-NS.js","assets/AlertCircle-DpL6Tscn.js","assets/Upload01-CuT2JdpQ.js","assets/metadata-dUsYcpuu.js","assets/alert-dialog-COu8iXMQ.js","assets/card-BSXmZFDc.js","assets/Trash01-CqgwN4Ls.js","assets/label-BEZ9ozrm.js","assets/select-C2aLiaQD.js","assets/tooltip-dxFFf5TO.js","assets/ChevronDown-DfMtmSgR.js","assets/ChevronUp-Dr2YqthP.js","assets/switch-BPqfZ-jC.js","assets/textarea-D00WtAVC.js","assets/ArrowLeft-BYRvhhFt.js","assets/XCircle-Bn-kiykC.js","assets/checkbox-BgjJh_IR.js","assets/Eye-Cb8Ttsk7.js","assets/LinkExternal01-L9JYsRrc.js","assets/use-copy-D6dj3bWn.js","assets/Copy01-pcUw8cKn.js","assets/Key01-fVtj4fXs.js","assets/Plus-BshesZK9.js","assets/mcp-oauth-DznHTp7Q.js","assets/Play-Ce3PIPIz.js"])))=>i.map(i=>d[i]);
2
- import{c as i,j as e,r as s,k as a,aG as o}from"./index-BXi8XGVO.js";import{R as m}from"./require-capability-Bmfc_FY6.js";import"./use-capability-DtqmBc0p.js";import"./access-gate-CTmGk4ny.js";import"./capability-load-error-ChNs0ivS.js";const n=s.lazy(()=>o(()=>import("./registry-layout-C7e1ipww.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])));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};