decocms 4.212.1 → 4.212.2

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 (226) hide show
  1. package/dist/client/assets/{AlertCircle-WIL6cfet.js → AlertCircle-BrWawUMh.js} +1 -1
  2. package/dist/client/assets/{AreaChart-CPaAKTzB.js → AreaChart-Dq3avD73.js} +1 -1
  3. package/dist/client/assets/{ArrowLeft-CHHWfkpB.js → ArrowLeft-DukBnUAa.js} +1 -1
  4. package/dist/client/assets/{ArrowUp-iH2L4r6n.js → ArrowUp-B07C7dyQ.js} +1 -1
  5. package/dist/client/assets/{ArrowUpRight-BygkhTzB.js → ArrowUpRight-yOzHSCq8.js} +1 -1
  6. package/dist/client/assets/{Check-CxaYXpCa.js → Check-CCh4dbWr.js} +1 -1
  7. package/dist/client/assets/{CheckCircle-V1G6vRLw.js → CheckCircle-BQya7dCn.js} +1 -1
  8. package/dist/client/assets/{ChevronDown-DX-ceh2Z.js → ChevronDown-Ca0jthPy.js} +1 -1
  9. package/dist/client/assets/{ChevronRight-Dq2fkwrO.js → ChevronRight-HPgAjzxi.js} +1 -1
  10. package/dist/client/assets/{ChevronUp-BBj6JgxI.js → ChevronUp-DzaoNRP_.js} +1 -1
  11. package/dist/client/assets/{Copy01-CKFmCr1g.js → Copy01-CpXSYsyp.js} +1 -1
  12. package/dist/client/assets/{CpuChip01-Dq7zKXwa.js → CpuChip01-Cc50Lo0I.js} +1 -1
  13. package/dist/client/assets/{CreditCard01-B9LEr35P.js → CreditCard01-BKG7Bohf.js} +1 -1
  14. package/dist/client/assets/{DotsVertical-rZd6Fptu.js → DotsVertical-DlH6XIuo.js} +1 -1
  15. package/dist/client/assets/{Eye-OpHiFNhI.js → Eye-2T3GYbrN.js} +1 -1
  16. package/dist/client/assets/{FilterLines-CNeGl-15.js → FilterLines-C776g5z5.js} +1 -1
  17. package/dist/client/assets/{Globe01-DfaBbtRd.js → Globe01-B33W4P6M.js} +1 -1
  18. package/dist/client/assets/{Globe04-DPgOTzrT.js → Globe04-EX3M7qGz.js} +1 -1
  19. package/dist/client/assets/{HardDrive-Cm2nFFdL.js → HardDrive-DfapR7WP.js} +1 -1
  20. package/dist/client/assets/{Key01-B88ki6Fp.js → Key01-Cddk_hhJ.js} +1 -1
  21. package/dist/client/assets/{LayoutLeft-D7-SVGH-.js → LayoutLeft-C8Heq3nB.js} +1 -1
  22. package/dist/client/assets/{LinkExternal01-NnMSyAQt.js → LinkExternal01-pLqGn808.js} +1 -1
  23. package/dist/client/assets/{LogOut01-BfVuyPyg.js → LogOut01-DNkBPgt8.js} +1 -1
  24. package/dist/client/assets/{Monitor01-BLV4EJBH.js → Monitor01-CSWTYSOy.js} +1 -1
  25. package/dist/client/assets/{Palette-DR-tCSkP.js → Palette-EA8nbxpZ.js} +1 -1
  26. package/dist/client/assets/{Play-CoNHS2Qn.js → Play-4hgzXbRc.js} +1 -1
  27. package/dist/client/assets/{Plus-CFl9yMpW.js → Plus-Bz6RTZiE.js} +1 -1
  28. package/dist/client/assets/{SearchLg-Df6dgRDM.js → SearchLg-DFHswtTO.js} +1 -1
  29. package/dist/client/assets/{SearchMd-BLnTSrvc.js → SearchMd-BWb1QRdd.js} +1 -1
  30. package/dist/client/assets/{Settings02-UFz5U7L5.js → Settings02-DwGGfbDV.js} +1 -1
  31. package/dist/client/assets/{Share07-CbEikcMm.js → Share07-CWmKWA-y.js} +1 -1
  32. package/dist/client/assets/{Shield01-G4YJkuxh.js → Shield01-B7o4bMK2.js} +1 -1
  33. package/dist/client/assets/{Star01-B-GU7k_K.js → Star01-BD9DGx05.js} +1 -1
  34. package/dist/client/assets/{Stars01-B5yK5sU3.js → Stars01-B5NMhVF1.js} +1 -1
  35. package/dist/client/assets/{Stars02-D3JIQ4or.js → Stars02-BO7fe5Ew.js} +1 -1
  36. package/dist/client/assets/{Sun-CzUyl9bG.js → Sun-BjpZjbjE.js} +1 -1
  37. package/dist/client/assets/{SwitchHorizontal01-CajRI1eQ.js → SwitchHorizontal01-B_4k2ZAN.js} +1 -1
  38. package/dist/client/assets/{Tool01-B6qpLzw5.js → Tool01-BHhFZ07i.js} +1 -1
  39. package/dist/client/assets/{Tool02-BDWnkNP4.js → Tool02-Cbi_3sQA.js} +1 -1
  40. package/dist/client/assets/{Trash01-uG2e-LVc.js → Trash01-CME0Swn1.js} +1 -1
  41. package/dist/client/assets/{TrendUp01-913WGcDw.js → TrendUp01-CA1zfNJG.js} +1 -1
  42. package/dist/client/assets/{Upload01-CHLmEpA0.js → Upload01-CjRXsdp_.js} +1 -1
  43. package/dist/client/assets/{User01-N2Km578M.js → User01-FELbllyT.js} +1 -1
  44. package/dist/client/assets/{Users01-D97rIiW3.js → Users01-Befpq0S1.js} +1 -1
  45. package/dist/client/assets/{Users03-BZg-2yj1.js → Users03-C6QxYDuY.js} +1 -1
  46. package/dist/client/assets/{X-DQSyj_H1.js → X-Cx1gjRuI.js} +1 -1
  47. package/dist/client/assets/{XCircle-DuqbsXc1.js → XCircle-fw3q-GN3.js} +1 -1
  48. package/dist/client/assets/{XClose-BwSfuEMb.js → XClose-D4MwpIIO.js} +1 -1
  49. package/dist/client/assets/{Zap-VnO6gpQC.js → Zap-BR5qTBvs.js} +1 -1
  50. package/dist/client/assets/{ZapSquare-DT1OZQR4.js → ZapSquare-DVw2I7ku.js} +1 -1
  51. package/dist/client/assets/{access-gate-BS0xGuqy.js → access-gate-BQzKq8Pa.js} +1 -1
  52. package/dist/client/assets/{agent-icon-Bd04PxdB.js → agent-icon-3_F_vRiA.js} +1 -1
  53. package/dist/client/assets/{agents-list-C0P08iKg.js → agents-list-DBU2DDoD.js} +1 -1
  54. package/dist/client/assets/{ai-providers-CXH7oK-G.js → ai-providers-B-5LqrP2.js} +1 -1
  55. package/dist/client/assets/{alert-ZBbYuTSY.js → alert-CIXIFuqV.js} +1 -1
  56. package/dist/client/assets/{alert-dialog-QC1W-6Pa.js → alert-dialog-C7RW_QBb.js} +1 -1
  57. package/dist/client/assets/{app-editor-Irg95kYk.js → app-editor-BKQzRRVO.js} +1 -1
  58. package/dist/client/assets/{auth-catchall-vx12oZPU.js → auth-catchall-BANLYdnA.js} +1 -1
  59. package/dist/client/assets/{auth-entry-884Ls1N0.js → auth-entry-D0Hmp1k0.js} +1 -1
  60. package/dist/client/assets/{auth-BZX0cE3S.js → auth-hcD8a23p.js} +1 -1
  61. package/dist/client/assets/{auth-split-layout-CbMUUsis.js → auth-split-layout-Be37YxXj.js} +1 -1
  62. package/dist/client/assets/{authenticate-and-persist-oauth-D_o3ZfG2.js → authenticate-and-persist-oauth-Bgw8bmpj.js} +1 -1
  63. package/dist/client/assets/{automation-list-row-Dioka1IJ.js → automation-list-row-BLwTS-W-.js} +1 -1
  64. package/dist/client/assets/{automation-runs-CpPPHaaj.js → automation-runs-ByScBkOz.js} +1 -1
  65. package/dist/client/assets/{automations-DetuemjH.js → automations-MkaZTv5P.js} +1 -1
  66. package/dist/client/assets/{avatar-ChA3XW15.js → avatar-KrxHOF6o.js} +1 -1
  67. package/dist/client/assets/{badge-BxXEgJD5.js → badge-CPnYk8kW.js} +1 -1
  68. package/dist/client/assets/{billing-hQnVcj0R.js → billing-w4Seo2a2.js} +1 -1
  69. package/dist/client/assets/{block-document-zugmjNq1.js → block-document-BS8C1vdQ.js} +1 -1
  70. package/dist/client/assets/{brand-context-Ck0174hR.js → brand-context-CvMD_ofs.js} +1 -1
  71. package/dist/client/assets/{buckets-R0KmBi2V.js → buckets-BIEDNvfI.js} +1 -1
  72. package/dist/client/assets/{bulk-category-panel-DebNMqV7.js → bulk-category-panel-Bfa1ooqj.js} +1 -1
  73. package/dist/client/assets/{capability-load-error-BdHpqDfW.js → capability-load-error-C_o9CndY.js} +1 -1
  74. package/dist/client/assets/{card-D8IT-uY5.js → card-qSCZqOyG.js} +1 -1
  75. package/dist/client/assets/{cards-BlZkvfAM.js → cards-CsCBExsj.js} +1 -1
  76. package/dist/client/assets/{category-editor-JUPkzqLr.js → category-editor-CO4loxOy.js} +1 -1
  77. package/dist/client/assets/{chat-context-Cvs4EbTx.js → chat-context-BwBxOdFd.js} +1 -1
  78. package/dist/client/assets/{checkbox-DmTCNEX3.js → checkbox-DWoi8dI-.js} +1 -1
  79. package/dist/client/assets/{cli-auth-success-lNCvmXGn.js → cli-auth-success-Dzzz8TlI.js} +1 -1
  80. package/dist/client/assets/{collection-detail-BJvAeOle.js → collection-detail-DALIvvix.js} +1 -1
  81. package/dist/client/assets/{collection-display-button-D6szfwDF.js → collection-display-button-BFcAFMB5.js} +1 -1
  82. package/dist/client/assets/{collection-search-BZpNpsyc.js → collection-search-BOMfxaR9.js} +1 -1
  83. package/dist/client/assets/{collection-table-wrapper-IUCETLva.js → collection-table-wrapper-BKSIn7HA.js} +1 -1
  84. package/dist/client/assets/{collection-tabs-4dV9B3uE.js → collection-tabs-jD1ViCjE.js} +1 -1
  85. package/dist/client/assets/{command-Cwm0AdDf.js → command-D6MOuUMv.js} +1 -1
  86. package/dist/client/assets/{commerce-onboarding-BAYpogi0.js → commerce-onboarding-C0aM6NsI.js} +1 -1
  87. package/dist/client/assets/{connect-DluQYuA-.js → connect-B0SCQq67.js} +1 -1
  88. package/dist/client/assets/{connection-Dh_ooe1d.js → connection-Dvj_Ge2b.js} +1 -1
  89. package/dist/client/assets/{connection-card-drg1d7hg.js → connection-card-DqshAG3u.js} +1 -1
  90. package/dist/client/assets/{connection-detail-DDxykiLl.js → connection-detail-D_3IfujD.js} +1 -1
  91. package/dist/client/assets/{connection-form-helpers-Dkhl5xIg.js → connection-form-helpers-mn5rxFhe.js} +1 -1
  92. package/dist/client/assets/{connections-Bd8HfBgK.js → connections-BL3lBBw3.js} +1 -1
  93. package/dist/client/assets/{decopilot-sse-pool-Dv0V8xQ-.js → decopilot-sse-pool-D20lGJta.js} +1 -1
  94. package/dist/client/assets/{dialog-DAc4-g6m.js → dialog-CjU6w2bm.js} +1 -1
  95. package/dist/client/assets/{domain-settings-DlbxrG4S.js → domain-settings-Dd75vE9W.js} +1 -1
  96. package/dist/client/assets/{drawer-G48IA4Mc.js → drawer-ClA2RJdX.js} +1 -1
  97. package/dist/client/assets/{dropdown-menu-C-Pcq4IH.js → dropdown-menu-CYXeLlOI.js} +1 -1
  98. package/dist/client/assets/{empty-state-LOiFPHZS.js → empty-state-B7UF4wKu.js} +1 -1
  99. package/dist/client/assets/{extract-connection-data-BTqduo0n.js → extract-connection-data-wSWUWOqs.js} +1 -1
  100. package/dist/client/assets/{file-explorer-WMg5HmTg.js → file-explorer-C7nN1znG.js} +1 -1
  101. package/dist/client/assets/{file-type-icon-W1ZzTIaT.js → file-type-icon-pmey4Gs6.js} +1 -1
  102. package/dist/client/assets/{form-BYL5XAXX.js → form-JmCCAiyQ.js} +1 -1
  103. package/dist/client/assets/{general-C975mpR0.js → general-Dx6kOyVB.js} +1 -1
  104. package/dist/client/assets/{github-repo-picker-CqnMVe6t.js → github-repo-picker-UAT4wTyP.js} +1 -1
  105. package/dist/client/assets/{hooks-qUcRvsMr.js → hooks-CIsLffBs.js} +1 -1
  106. package/dist/client/assets/{index-D_CFS6JI.js → index-B-0ScEu-.js} +1 -1
  107. package/dist/client/assets/{index-Boo82Stv.js → index-B5_UsMYk.js} +1 -1
  108. package/dist/client/assets/{index-BdpWLlfo.js → index-BOZyPIBr.js} +3 -3
  109. package/dist/client/assets/{index-CMzjjINV.js → index-CP9Be_aj.js} +1 -1
  110. package/dist/client/assets/{index-BzH8uzdn.js → index-CaQdx6Aq.js} +1 -1
  111. package/dist/client/assets/{index-B-rJMZuF.js → index-DNJYUbTt.js} +48 -48
  112. package/dist/client/assets/{index-eXep7bvA.js → index-D_faBHMj.js} +1 -1
  113. package/dist/client/assets/{index-D_ugk4gp.js → index-DpwR5x-m.js} +1 -1
  114. package/dist/client/assets/{index-hxBUwYlX.js → index-ZVE2Wfke.js} +1 -1
  115. package/dist/client/assets/{index-redirect-I38-y9q3.js → index-redirect-D-WN_gS8.js} +1 -1
  116. package/dist/client/assets/{index-DDeH6C5P.js → index-soPqN9Mc.js} +1 -1
  117. package/dist/client/assets/{input-DEKGGhZK.js → input-CyXzuLZL.js} +1 -1
  118. package/dist/client/assets/{integration-icon-BaOIFBaS.js → integration-icon-Cp8VghM3.js} +1 -1
  119. package/dist/client/assets/{invite-member-dialog-C2eQcEHU.js → invite-member-dialog-CIptzibY.js} +1 -1
  120. package/dist/client/assets/{label-DHPULCw0.js → label-CEwyolJK.js} +1 -1
  121. package/dist/client/assets/{layout-CXMta2ST.js → layout-D87W76zi.js} +1 -1
  122. package/dist/client/assets/{login-BjscOAQ6.js → login-B9fh0Kdf.js} +1 -1
  123. package/dist/client/assets/{mcp-oauth-k8WwWmmz.js → mcp-oauth-BYT7x6lG.js} +1 -1
  124. package/dist/client/assets/{members-CO_r93n0.js → members-8-f9MwbP.js} +1 -1
  125. package/dist/client/assets/{monaco-editor-9VUv5hjp.js → monaco-editor-ueEhzyLl.js} +1 -1
  126. package/dist/client/assets/{monitoring-stats-row-BIhMAgn2.js → monitoring-stats-row-BVWK94GI.js} +1 -1
  127. package/dist/client/assets/{multi-select-CckhO9Qn.js → multi-select-BfQ5EWdG.js} +1 -1
  128. package/dist/client/assets/{oauth-callback-D1039wfk.js → oauth-callback-Bod74aMR.js} +1 -1
  129. package/dist/client/assets/{oauth-callback-ai-provider-Ba09_ZFO.js → oauth-callback-ai-provider-Dj4DO_Hk.js} +1 -1
  130. package/dist/client/assets/{onboarding-i3z96Qre.js → onboarding-CN8HgoDC.js} +1 -1
  131. package/dist/client/assets/{org-layout-BJ9YNytZ.js → org-layout-B2K8ybKR.js} +1 -1
  132. package/dist/client/assets/{organization-choice-BlokjHhS.js → organization-choice-6L5BS0JB.js} +1 -1
  133. package/dist/client/assets/{orgs-CFHR2DcV.js → orgs-5sZiYENm.js} +1 -1
  134. package/dist/client/assets/{page-seo-form-B6I-aCLS.js → page-seo-form-BQQo_xXF.js} +1 -1
  135. package/dist/client/assets/{popover-DjWnpEmJ.js → popover-BmGvdzeW.js} +1 -1
  136. package/dist/client/assets/{post-editor-DIwE0Ce0.js → post-editor-Ch-Ix2K6.js} +1 -1
  137. package/dist/client/assets/{primitives-DV8n3c4N.js → primitives-Cjc2ocXK.js} +1 -1
  138. package/dist/client/assets/{profile-CrlFx45Q.js → profile-zQu5QZBP.js} +1 -1
  139. package/dist/client/assets/{project-app-view-BsrXZaIG.js → project-app-view-DQ2gdj7W.js} +1 -1
  140. package/dist/client/assets/record-editor-B5uV7phu.js +1 -0
  141. package/dist/client/assets/redirect-editor-uNj1wbsU.js +1 -0
  142. package/dist/client/assets/registry-8eXaaTkl.js +2 -0
  143. package/dist/client/assets/{registry-layout-HYIlQinW.js → registry-layout-BbCP7mpH.js} +1 -1
  144. package/dist/client/assets/{reports-CKFq3olb.js → reports-DkzQot8U.js} +1 -1
  145. package/dist/client/assets/{require-capability-CsduCWoY.js → require-capability-DqGRJFru.js} +1 -1
  146. package/dist/client/assets/{required-auth-layout-Ddvi1F_9.js → required-auth-layout-zfi4rqof.js} +1 -1
  147. package/dist/client/assets/{reset-password-Yu6CU0GW.js → reset-password-CrWCfDSw.js} +1 -1
  148. package/dist/client/assets/{roles-DYuqLCca.js → roles-DJ0xLmd4.js} +1 -1
  149. package/dist/client/assets/{search-input-Bhw58eHR.js → search-input-Bu2JZrNW.js} +1 -1
  150. package/dist/client/assets/{secrets-tkw-CjVl.js → secrets-DDxK0gL9.js} +1 -1
  151. package/dist/client/assets/{sections-editor-DrK5E-Hb.js → sections-editor-BSHmM9yJ.js} +1 -1
  152. package/dist/client/assets/{select-CBpdZ7o2.js → select-BhL-cuuY.js} +1 -1
  153. package/dist/client/assets/{select-model-CheXfT8K.js → select-model-B1cuGSHI.js} +1 -1
  154. package/dist/client/assets/{self-tool-result-DFFRnOvl.js → self-tool-result-hGy2CtJI.js} +1 -1
  155. package/dist/client/assets/{seo-editor-D346GKcE.js → seo-editor-CRTTk44d.js} +1 -1
  156. package/dist/client/assets/{settings-layout-occgNiTO.js → settings-layout-Dpvd5vsm.js} +1 -1
  157. package/dist/client/assets/{settings-section-DOaNXejx.js → settings-section-ckx6NKYF.js} +1 -1
  158. package/dist/client/assets/{shell-controls-CoHd06YQ.js → shell-controls-h24ojyf3.js} +1 -1
  159. package/dist/client/assets/{shell-layout-BUm_6dBQ.js → shell-layout-Dj1S7UjH.js} +1 -1
  160. package/dist/client/assets/{sidebar-_WzLC9pk.js → sidebar-D94nP7z-.js} +1 -1
  161. package/dist/client/assets/{skeleton-lrQT5gcj.js → skeleton-CQbbX64G.js} +1 -1
  162. package/dist/client/assets/{spinner-B_dab8ke.js → spinner-DT7ycdgt.js} +1 -1
  163. package/dist/client/assets/{sso-Dc4jk7wT.js → sso--U5C8a-Y.js} +1 -1
  164. package/dist/client/assets/{store-zigKdDd7.js → store-CcFndEQ9.js} +1 -1
  165. package/dist/client/assets/store-registry-pwve-SGC.js +2 -0
  166. package/dist/client/assets/{studio-tools-CeODr8rO.js → studio-tools-BohZJDQ5.js} +1 -1
  167. package/dist/client/assets/{switch-BCfM0l-1.js → switch-5e7Gq3ok.js} +1 -1
  168. package/dist/client/assets/{synced-repos-B5gVTI7P.js → synced-repos-CLc42we0.js} +1 -1
  169. package/dist/client/assets/{tab-id-BnJCohG_.js → tab-id-BxCXhPWF.js} +1 -1
  170. package/dist/client/assets/{table-Cu9EWIa1.js → table--f4J1M3z.js} +1 -1
  171. package/dist/client/assets/{tabs-DLaFLm1m.js → tabs-Dc5sV9FR.js} +1 -1
  172. package/dist/client/assets/{textarea-BArtrh-R.js → textarea-D_V0Oawh.js} +1 -1
  173. package/dist/client/assets/{toggle-group-DNT1HP1y.js → toggle-group-BQOQbMlM.js} +1 -1
  174. package/dist/client/assets/{toolbar-CdMdEL2o.js → toolbar-DQhRTFeV.js} +1 -1
  175. package/dist/client/assets/{tooltip-DdfsISdl.js → tooltip-FdxcRA-b.js} +1 -1
  176. package/dist/client/assets/{track-CssF9gmT.js → track-YMs11v5I.js} +1 -1
  177. package/dist/client/assets/{use-ai-providers-B3QbnFSg.js → use-ai-providers-CNTxflFC.js} +1 -1
  178. package/dist/client/assets/{use-automations-C22lTAVt.js → use-automations-BSkfx6ZZ.js} +1 -1
  179. package/dist/client/assets/{use-autosave-D4dK2ec9.js → use-autosave-CxC4IwP5.js} +1 -1
  180. package/dist/client/assets/{use-capability-DTZN9m3p.js → use-capability-ES_xygKJ.js} +1 -1
  181. package/dist/client/assets/{use-clock-tick-CnrHrJSt.js → use-clock-tick-GUhjvm2v.js} +1 -1
  182. package/dist/client/assets/{use-connection-CY0u0E5V.js → use-connection-D-m0vi8v.js} +1 -1
  183. package/dist/client/assets/{use-copy-DnseyEW-.js → use-copy-CA6kxZl7.js} +1 -1
  184. package/dist/client/assets/{use-create-virtual-mcp-C-wnV9Zl.js → use-create-virtual-mcp-DoFM5sX7.js} +1 -1
  185. package/dist/client/assets/{use-debounced-autosave-CON7irHq.js → use-debounced-autosave-BKWJX-wb.js} +1 -1
  186. package/dist/client/assets/{use-debounced-value-DVV-uvkW.js → use-debounced-value-CfXK5GlD.js} +1 -1
  187. package/dist/client/assets/{use-deco-credits-DesPz-1R.js → use-deco-credits-rASiMyOA.js} +1 -1
  188. package/dist/client/assets/{use-decopilot-events-B83F-TYE.js → use-decopilot-events-C5upv1T4.js} +1 -1
  189. package/dist/client/assets/{use-delete-connection-Bw1AL7n6.js → use-delete-connection-6WPbTSKa.js} +1 -1
  190. package/dist/client/assets/{use-deployment-admin-a3HGJDBc.js → use-deployment-admin-4Qx-C21z.js} +1 -1
  191. package/dist/client/assets/{use-file-configs-Bit9bppN.js → use-file-configs-C2bhRcGf.js} +1 -1
  192. package/dist/client/assets/{use-infinite-scroll-BuACpKVm.js → use-infinite-scroll-BZKemN8e.js} +1 -1
  193. package/dist/client/assets/{use-join-requests-C3rpQno3.js → use-join-requests-CuQQ7377.js} +1 -1
  194. package/dist/client/assets/{use-mcp-client-Bxx6fsF6.js → use-mcp-client-CjXdPYpZ.js} +1 -1
  195. package/dist/client/assets/{use-mcp-tools-B6ezax7-.js → use-mcp-tools-C07eAKGo.js} +1 -1
  196. package/dist/client/assets/{use-members-Dj59vSPD.js → use-members-ClERksTe.js} +1 -1
  197. package/dist/client/assets/{use-mobile-1pXzbrVA.js → use-mobile-zgDrU_c7.js} +1 -1
  198. package/dist/client/assets/{use-navigate-to-agent-BTlUGafY.js → use-navigate-to-agent-BZk29Og8.js} +1 -1
  199. package/dist/client/assets/{use-open-billing-url-BFwsJQGb.js → use-open-billing-url-DadwwM7I.js} +1 -1
  200. package/dist/client/assets/{use-org-auth-client-sSkN4xfu.js → use-org-auth-client-D_Bc4gFe.js} +1 -1
  201. package/dist/client/assets/{use-org-sso-BgII0BvC.js → use-org-sso-DbU7jlG0.js} +1 -1
  202. package/dist/client/assets/{use-organization-roles-DsaIYSv3.js → use-organization-roles-Dh97vQGi.js} +1 -1
  203. package/dist/client/assets/{use-organization-settings-D5y7ESPS.js → use-organization-settings-dJx4ZnrJ.js} +1 -1
  204. package/dist/client/assets/{use-registry-connections-CQQ-BeSn.js → use-registry-connections-BTy5PCrw.js} +1 -1
  205. package/dist/client/assets/{use-secrets-CeCSqutU.js → use-secrets-CN9tIXdZ.js} +1 -1
  206. package/dist/client/assets/{use-section-preview-base-BLLzdQOx.js → use-section-preview-base-DiEnyEHJ.js} +1 -1
  207. package/dist/client/assets/{use-status-sounds-_edoe4rZ.js → use-status-sounds-8P3cDoZX.js} +1 -1
  208. package/dist/client/assets/{use-tags-DvWOTF3X.js → use-tags-OQuk1wS7.js} +1 -1
  209. package/dist/client/assets/{use-view-mode-QLHLQem3.js → use-view-mode-B_Pp5sRp.js} +1 -1
  210. package/dist/client/assets/{use-virtual-mcp-D7APgG1m.js → use-virtual-mcp-D9p1qVvF.js} +1 -1
  211. package/dist/client/assets/useInfiniteQuery-DB4cITX_.js +1 -0
  212. package/dist/client/assets/{useRouterState-DhKILL39.js → useRouterState-Dw1cwIsd.js} +1 -1
  213. package/dist/client/assets/useSuspenseInfiniteQuery-C9T0bWsE.js +1 -0
  214. package/dist/client/assets/{users-CgmkC3_-.js → users-CKhYzxyw.js} +1 -1
  215. package/dist/client/assets/{variant-calendar-CC484mOK.js → variant-calendar-BHTfU9mo.js} +1 -1
  216. package/dist/client/assets/{view-mode-toggle-KjMo42rw.js → view-mode-toggle-CESkm8ix.js} +1 -1
  217. package/dist/client/index.html +1 -1
  218. package/dist/server/cli.js +1 -1
  219. package/dist/server/server.js +1 -1
  220. package/package.json +1 -1
  221. package/dist/client/assets/record-editor-BJqYf6YT.js +0 -1
  222. package/dist/client/assets/redirect-editor-BvWoDDRT.js +0 -1
  223. package/dist/client/assets/registry-CplrzT-y.js +0 -2
  224. package/dist/client/assets/store-registry-Bw6zQvn2.js +0 -2
  225. package/dist/client/assets/useInfiniteQuery-Dcs9aui8.js +0 -1
  226. package/dist/client/assets/useSuspenseInfiniteQuery-ByfsxxEi.js +0 -1
@@ -2735,7 +2735,7 @@ Do NOT require review (requiresReview = false) when the changes are low-risk, su
2735
2735
  When unsure between the two, lean toward NOT requiring review for small frontend-only diffs, and toward requiring it for anything backend or large.
2736
2736
 
2737
2737
  Respond with the structured verdict and a short reason.`,xf$;var gf$=B(()=>{C4();oO();B61();G96=D61.object({requiresReview:D61.boolean().describe("true if the changes should go through pull-request review"),reason:D61.string().describe("One short sentence explaining the decision (max ~120 chars)")});xf$={requiresReview:!1,reason:""}});function hf$($){let Z=$?.trim();if(!Z)return null;try{let X=new URL(Z);if(X.protocol!=="http:"&&X.protocol!=="https:")return null;return X.href}catch{return null}}function Nz0($){return hf$($?.previewServerUrl)??hf$($?.productionUrl)}function uf$(){return process.env.GITHUB_API_BASE_URL??"https://api.github.com"}function cf$($,Z){return $==="GET"&&!Z.includes("/git/blobs/")&&!Z.includes("/git/trees/")&&!Z.includes("/tarball/")}function lf$($){let Z=Fh.get($);if(!Z)return;Fh.delete($),L61-=Z.bytes}function F96($,Z,X){let Q;try{Q=JSON.stringify(X)?.length??0}catch{return}if(lf$($),Q>N96)return;Fh.set($,{etag:Z,body:X,bytes:Q}),L61+=Q;while(L61>H96||Fh.size>K96){let Y=Fh.keys().next().value;if(Y===void 0)break;lf$(Y)}}function df$($){let{owner:Z,repo:X,accessToken:Q}=$,Y=`/repos/${Z}/${X}`,G=null;async function J(W,K,H,N){let F=`${uf$()}${K}`,U=cf$(W,K)?Fh.get(F):void 0,O=await fetch(F,{method:W,headers:{Accept:"application/vnd.github+json","User-Agent":"studio-decofile",Authorization:`token ${Q}`,...U?{"If-None-Match":U.etag}:{},...H!==void 0?{"content-type":"application/json"}:{}},body:H!==void 0?JSON.stringify(H):void 0,signal:AbortSignal.timeout(15000)});if(U&&O.status===304)return{status:200,json:U.body};if(!O.ok&&!N?.allow?.includes(O.status)){let D=await O.text().catch(()=>""),L=D;try{L=JSON.parse(D).message??D}catch{}throw new V6(O.status,W,K,L)}let w=O.status===204?void 0:await O.json();if(O.status===200&&cf$(W,K)){let D=O.headers.get("etag");if(D)F96(F,D,w)}return{status:O.status,json:w}}return{owner:Z,repo:X,async getDefaultBranch(){if(G)return G;let{json:W}=await J("GET",Y);return G=W.default_branch,G},async getHeadSha(W){let{json:K}=await J("GET",`${Y}/git/ref/heads/${$_(W)}`);return K.object.sha},async getTarballStream(W){let K=`${Y}/tarball/${$_(W)}`,H=await fetch(`${uf$()}${K}`,{headers:{"User-Agent":"studio-decofile",Authorization:`token ${Q}`},signal:AbortSignal.timeout(60000)});if(!H.ok){let N=await H.text().catch(()=>"");throw new V6(H.status,"GET",K,N.slice(0,300))}if(!H.body)throw new V6(502,"GET",K,"tarball had no body");return H.body},async getCommitTreeSha(W){let{json:K}=await J("GET",`${Y}/git/commits/${W}`);return K.tree.sha},async getTreeRecursive(W){let{json:K}=await J("GET",`${Y}/git/trees/${W}?recursive=1`);if(K.truncated)throw new V6(502,"GET",`${Y}/git/trees/${W}`,"tree listing truncated by GitHub; repo too large for recursive read");return K.tree},async getBlobText(W){let{json:K}=await J("GET",`${Y}/git/blobs/${W}`);if(K.encoding!=="base64")throw new V6(502,"GET",`${Y}/git/blobs/${W}`,`unexpected blob encoding ${K.encoding}`);return Buffer.from(K.content,"base64").toString("utf-8")},async createBlob(W){let{json:K}=await J("POST",`${Y}/git/blobs`,{content:W,encoding:"utf-8"});return K.sha},async createTree(W,K){let{json:H}=await J("POST",`${Y}/git/trees`,{base_tree:W,tree:K});return H.sha},async createCommit({message:W,treeSha:K,parentShas:H}){let{json:N}=await J("POST",`${Y}/git/commits`,{message:W,tree:K,parents:H});return N.sha},async updateRef(W,K){await J("PATCH",`${Y}/git/refs/heads/${$_(W)}`,{sha:K,force:!1})},async createRef(W,K){await J("POST",`${Y}/git/refs`,{ref:`refs/heads/${W}`,sha:K})},async mergeBranch(W,K,H){let{status:N,json:F}=await J("POST",`${Y}/merges`,{base:W,head:K,commit_message:H},{allow:[204]});return N===204?null:F?.sha??null},async createPullRequest({base:W,head:K,title:H}){let{json:N}=await J("POST",`${Y}/pulls`,{base:W,head:K,title:H});return{number:N.number,html_url:N.html_url}},async findOpenPullRequest(W,K){let{json:H}=await J("GET",`${Y}/pulls?state=open&base=${encodeURIComponent(W)}&head=${encodeURIComponent(`${Z}:${K}`)}`),N=H[0];return N?{number:N.number,html_url:N.html_url}:null},async compare(W,K){let{json:H}=await J("GET",`${Y}/compare/${$_(W)}...${$_(K)}`);return{aheadBy:H.ahead_by,behindBy:H.behind_by}},async compareDetailed(W,K){let{json:H}=await J("GET",`${Y}/compare/${$_(W)}...${$_(K)}`);return{aheadBy:H.ahead_by,behindBy:H.behind_by,mergeBaseSha:H.merge_base_commit.sha,files:(H.files??[]).map((N)=>({filename:N.filename,status:N.status,sha:N.sha,...N.previous_filename?{previousFilename:N.previous_filename}:{}}))}}}}function $_($){return $.split("/").map(encodeURIComponent).join("/")}var K96=512,H96=8388608,N96=262144,Fh,L61=0,V6;var Z_=B(()=>{Fh=new Map;V6=class V6 extends Error{status;method;path;constructor($,Z,X,Q){super(`GitHub ${Z} ${X} failed (${$}): ${Q}`);this.status=$;this.method=Z;this.path=X;this.name="GitHubApiError"}}});async function Fz0($,Z,X){if(!X.connectionId)throw new V6(401,"AUTH","connection","Project's GitHub connection is missing \u2014 reconnect GitHub");let Q=await $.storage.connections.findById(X.connectionId,Z);if(!Q)throw new V6(401,"AUTH","connection","Project's GitHub connection is missing \u2014 reconnect GitHub");let Y=await U96($,Q);if(!Y)throw new V6(401,"AUTH","connection",VZ);return df$({owner:X.owner,repo:X.name,accessToken:Y})}async function U96($,Z){if(t5(Z)?.sourceConnectionId)return wx($,Z);return(await SY({connectionId:Z.id,connectionUrl:Z.connection_url,tokenStorage:new R6($.db,$.vault)})).accessToken}var E61=B(()=>{TY();Z90();eW();AY();Z_()});function O96($){if(!$||$.includes("\\")||$.includes("..")||$.includes("\x00"))return!0;try{let Z=decodeURIComponent($);if(Z.includes("\\")||Z.includes("..")||Z.includes("\x00"))return!0;if(Z!==$&&Z.includes("/")){let X=($.match(/\//g)??[]).length;if((Z.match(/\//g)??[]).length>X)return!0}return!1}catch{return!0}}function Uz0($){if(O96($))throw Error(`Invalid block key: ${$||"(empty)"}`)}function Hr($){let Z=$;for(;;){let X;try{X=decodeURIComponent(Z)}catch{return Z}if(X===Z)return Z;Z=X}}function j61($){return Uz0($),encodeURIComponent($)}function Nr($){let Z=[...$].sort((Y,G)=>{let J=`${Y.stem}.json`,W=`${G.stem}.json`;return J<W?-1:J>W?1:0}),X="{",Q=!0;for(let Y of Z){let G=Y.content.trim();if(G.length===0)continue;if(!Q)X+=",";Q=!1,X+=`${JSON.stringify(Hr(Y.stem))}:${G}`}return`${X}}`}var mf$=()=>{};var Oz0=B(()=>{mf$()});function w96($){return $.startsWith("merged/")?"merged":"blobs"}function z61($,Z){let X=new Map;for(let G of $){let J=X.get(G.path);if(!J||G.mtimeMs>=J.mtimeMs)X.set(G.path,{bytes:G.bytes,mtimeMs:G.mtimeMs})}let Q=[...X.entries()].sort((G,J)=>G[1].mtimeMs-J[1].mtimeMs),Y={config:Z,entries:new Map,totalBytes:0,areaBytes:{blobs:0,merged:0}};for(let[G,{bytes:J}]of Q){let W=w96(G);Y.entries.set(G,{bytes:J,area:W}),Y.totalBytes+=J,Y.areaBytes[W]+=J}return Y}function if$($,Z){let X=$.entries.get(Z);if(!X)return;$.entries.delete(Z),$.entries.set(Z,X)}function Uh($,Z){let X=$.entries.get(Z);if(!X)return;$.entries.delete(Z),$.totalBytes-=X.bytes,$.areaBytes[X.area]-=X.bytes}function nf$($,Z){let{path:X,bytes:Q,area:Y}=Z,{config:G}=$;if(!Number.isFinite(Q)||Q<0||Q>G.maxEntryBytes[Y]||Q>G.maxTotalBytes||Y==="merged"&&Q>G.maxMergedBytes)return{admitted:!1,evict:[]};let W=$.entries.get(X),K=$.totalBytes-(W?.bytes??0),H=$.areaBytes.merged-(W?.area==="merged"?W.bytes:0),N=[],F=new Set;if(Y==="merged")for(let[U,O]of $.entries){if(H+Q<=G.maxMergedBytes)break;if(U===X||O.area!=="merged")continue;N.push(U),F.add(U),H-=O.bytes,K-=O.bytes}for(let[U,O]of $.entries){if(K+Q<=G.maxTotalBytes)break;if(U===X||F.has(U))continue;N.push(U),F.add(U),K-=O.bytes}for(let U of N)Uh($,U);return Uh($,X),$.entries.set(X,{bytes:Q,area:Y}),$.totalBytes+=Q,$.areaBytes[Y]+=Q,{admitted:!0,evict:N}}function Fr($){if($==="")throw TypeError("cache path segment must not be empty");let Z=$.toLowerCase(),X="";for(let Q of new TextEncoder().encode(Z)){let Y=String.fromCharCode(Q);X+=/[a-z0-9._-]/.test(Y)?Y:`%${Q.toString(16).padStart(2,"0")}`}if(X==="."||X==="..")X=X.replaceAll(".","%2e");return X}function P61($){return/^[0-9a-f]{40}$/.test($)}import{randomUUID as sf$}from"crypto";import{mkdir as Ur,readdir as B96,readFile as D96,rename as L96,rm as ef$,stat as $b$,statfs as E96,unlink as j96,writeFile as z96}from"fs/promises";import{tmpdir as P96}from"os";import{dirname as A96,join as T7}from"path";function Oh($,Z){let X=Bun.env[$];if(X===void 0||X==="")return Z;let Q=Number(X);return Number.isFinite(Q)&&Q>=0?Math.floor(Q):Z}function I96(){if(wz0)return wz0;let $=Bun.env.FAST_PREVIEW_CACHE_DIR,Z=$===void 0?T7(P96(),"studio-fast-preview-cache"):$;return wz0={enabled:Z!=="",root:Z,index:{maxTotalBytes:Oh("FAST_PREVIEW_CACHE_MAX_BYTES",2*pf$),maxMergedBytes:Oh("FAST_PREVIEW_CACHE_MERGED_MAX_BYTES",512*Bz0),maxEntryBytes:{blobs:Oh("FAST_PREVIEW_CACHE_MAX_BLOB_BYTES",Bz0),merged:Oh("FAST_PREVIEW_CACHE_MAX_MERGED_BYTES",32*Bz0)}},freeFloorBytes:Oh("FAST_PREVIEW_CACHE_FREE_FLOOR_BYTES",pf$),sweepIntervalMs:Oh("FAST_PREVIEW_CACHE_SWEEP_INTERVAL_MS",600000)},wz0}function q96(){return{hits:{blobs:0,merged:0},misses:{blobs:0,merged:0},evictions:0,errors:0,floorSkips:0,invalidKeySkips:0,admissionRefusals:0}}function M96(){if(XB)return;XB={hits:k$.createCounter("fast_preview_cache_hits",{description:"Decofile disk cache hits by area",unit:"{reads}"}),misses:k$.createCounter("fast_preview_cache_misses",{description:"Decofile disk cache misses by area",unit:"{reads}"}),evictions:k$.createCounter("fast_preview_cache_evictions",{description:"Decofile disk cache entries evicted",unit:"{entries}"}),errors:k$.createCounter("fast_preview_cache_errors",{description:"Decofile disk cache swallowed errors by operation",unit:"{errors}"}),floorSkips:k$.createCounter("fast_preview_cache_floor_skips",{description:"Decofile disk cache writes skipped by the free-space floor",unit:"{writes}"})},k$.createObservableGauge("fast_preview_cache_bytes",{description:"Decofile disk cache bytes by area",unit:"By"}).addCallback(($)=>{if(!wh)return;$.observe(wh.index.areaBytes.blobs,{area:"blobs"}),$.observe(wh.index.areaBytes.merged,{area:"merged"})}),k$.createObservableGauge("fast_preview_cache_entries",{description:"Decofile disk cache entry count by area",unit:"{entries}"}).addCallback(($)=>{if(!wh)return;let Z={blobs:0,merged:0};for(let X of wh.index.entries.values())Z[X.area]+=1;$.observe(Z.blobs,{area:"blobs"}),$.observe(Z.merged,{area:"merged"})})}function k96($){X_.hits[$]+=1,XB?.hits.add(1,{area:$})}function tf$($){X_.misses[$]+=1,XB?.misses.add(1,{area:$})}function A61(){X_.evictions+=1,XB?.evictions.add(1)}function WF($){X_.errors+=1,XB?.errors.add(1,{op:$})}function S96($){X_.invalidKeySkips+=1,XB?.errors.add(1,{op:`${$}_invalid_key`})}function T61(){return of$??=C96(),of$}async function C96(){let $=I96();if(!$.enabled)return null;M96();try{await Ur(T7($.root,"blobs"),{recursive:!0}),await Ur(T7($.root,"merged"),{recursive:!0}),await Ur(T7($.root,"tmp"),{recursive:!0})}catch{return WF("init"),null}let Z=[];try{Z=await Zb$($.root)}catch{WF("scan"),Z=[]}let X={root:$.root,index:z61(Z,$.index),cfg:$};return wh=X,f96(X),X}async function Dz0($){try{return await B96($)}catch{return[]}}async function Zb$($){let Z=[];for(let X of["blobs","merged"]){let Q=T7($,X);for(let Y of await Dz0(Q)){let G=T7(Q,Y);for(let J of await Dz0(G)){let W=T7(G,J);for(let K of await Dz0(W))try{let H=await $b$(T7(W,K));if(!H.isFile())continue;Z.push({path:`${X}/${Y}/${J}/${K}`,bytes:H.size,mtimeMs:H.mtimeMs})}catch{}}}}return Z}function Xb$($,Z,X){if(!P61(X))return null;try{return`blobs/${Fr($)}/${Fr(Z)}/${X}`}catch{return null}}function Qb$($,Z,X){if(!P61(X))return null;try{return`merged/${Fr($)}/${Fr(Z)}/${X}.json`}catch{return null}}async function Yb$($,Z){try{let X=await T61();if(!X)return null;if(Z===null)return tf$($),null;try{let Q=await D96(T7(X.root,Z),"utf8");return if$(X.index,Z),k96($),Q}catch{return tf$($),null}}catch{return WF(`get_${$}`),null}}function Gb$($,Z,X){return Yb$("blobs",Xb$($,Z,X))}function Jb$($,Z,X){return Yb$("merged",Qb$($,Z,X))}async function _96($){if($.cfg.freeFloorBytes<=0)return!0;try{let Z=await E96($.root);return Z.bavail*Z.bsize>=$.cfg.freeFloorBytes}catch{return!0}}async function Lz0($){try{await j96($)}catch{}}async function v96($){try{let Z=$.cfg.index.maxTotalBytes/2;while($.index.totalBytes>Z){let X=$.index.entries.keys().next();if(X.done)break;Uh($.index,X.value),await Lz0(T7($.root,X.value)),A61()}}catch{WF("emergency_evict")}}async function Wb$($,Z,X,Q){try{let Y=await T61();if(!Y)return;if(X===null){S96(Z);return}if(!await _96(Y)){X_.floorSkips+=1,XB?.floorSkips.add(1);return}let G=Buffer.byteLength(Q,"utf8"),J=nf$(Y.index,{path:X,bytes:G,area:$});if(!J.admitted){X_.admissionRefusals+=1;return}for(let K of J.evict)await Lz0(T7(Y.root,K)),A61();let W=T7(Y.root,"tmp",`stage-${sf$()}`);try{await z96(W,Q,"utf8");let K=T7(Y.root,X);await Ur(A96(K),{recursive:!0}),await L96(W,K)}catch(K){if(Uh(Y.index,X),await Lz0(W),WF(Z),K?.code==="ENOSPC")await v96(Y)}}catch{WF(Z)}}function Ez0($,Z,X,Q){return Wb$("blobs","put_blob",Xb$($,Z,X),Q)}function Kb$($,Z,X,Q){return Wb$("merged","put_merged",Qb$($,Z,X),Q)}async function Hb$(){try{let $=await T61();if(!$)return null;let Z=T7($.root,"tmp",sf$());return await Ur(Z,{recursive:!0}),Z}catch{return WF("make_scratch"),null}}async function Nb$($){try{await ef$($,{recursive:!0,force:!0})}catch{WF("remove_scratch")}}function f96($){let Z=$.cfg.sweepIntervalMs;if(Z<=0)return;rf$=new AbortController,C$(Math.random()*Z,{signal:rf$.signal}).then(()=>{af$($);let X=setInterval(()=>void af$($),Z);X.unref?.(),V96=X}).catch(()=>{})}async function af$($){try{let Z=z61(await Zb$($.root),$.cfg.index),X=$.cfg.index;for(let[G,J]of Z.entries){let W=Z.totalBytes>X.maxTotalBytes,K=Z.areaBytes.merged>X.maxMergedBytes;if(!W&&!K)break;if(!W&&K&&J.area!=="merged")continue;Uh(Z,G),await Lz0(T7($.root,G)),A61()}$.index=Z;let Q=T7($.root,"tmp"),Y=Date.now();for(let G of await Dz0(Q)){let J=T7(Q,G);try{let W=await $b$(J);if(Y-W.mtimeMs>R96)await ef$(J,{recursive:!0,force:!0})}catch{}}}catch{WF("sweep")}}var T96=1024,Bz0,pf$,R96=3600000,wz0=null,XB=null,X_,of$=null,wh=null,V96=null,rf$=null;var Fb$=B(()=>{$6();v6();Bz0=1024*T96,pf$=1024*Bz0;X_=q96()});function Ub$(){let $=new Map;return{run(Z,X){let Q=$.get(Z);if(Q)return Q;let Y=Promise.resolve().then(X).finally(()=>{$.delete(Z)});return $.set(Z,Y),Y}}}import{readdir as b96,stat as x96}from"fs/promises";import{join as Ob$}from"path";function y96($,Z,X){let Q=["-xz","--strip-components=1","-C",Z];return $==="gnu"?[...Q,"--wildcards",X]:[...Q,X]}function g96(){return wb$??=(async()=>{try{let $=Bun.spawn(["tar","--version"],{stdin:"ignore",stdout:"pipe",stderr:"ignore"}),Z=await new Response($.stdout).text();return await $.exited,Z.includes("GNU")?"gnu":"bsd"}catch{return"bsd"}})(),wb$}async function Bb$($,Z,X){let Q=X.replace(/^\.\//,"").replace(/^\/+/,"").replace(/\/+$/,"");if(Q===""||Q.split("/").includes(".."))throw new Or(`invalid blocks path prefix: ${X}`);let Y=await g96(),G=`*/${Q}/*.json`,J=()=>Bun.spawn(["tar",...y96(Y,Z,G)],{stdin:$,stdout:"ignore",stderr:"pipe"}),W;try{W=J()}catch(F){throw new Or("failed to spawn tar",{cause:F})}let K=new Response(W.stderr).text().catch(()=>""),H=await W.exited;if(H!==0){let F=(await K).trim().slice(0,500);throw new Or(`tar exited with code ${H}${F?`: ${F}`:""}`)}let N=await h96(Z,Q);if(N.length===0)throw new Or(`tar extracted no ${G} members into ${Z}`);return N}async function h96($,Z){let X=Ob$($,...Z.split("/")),Q;try{Q=await b96(X)}catch{return[]}let Y=[];for(let G of Q){if(!G.endsWith(".json"))continue;let J=Ob$(X,G);try{if(!(await x96(J)).isFile())continue}catch{continue}Y.push({path:`${Z}/${G}`,diskPath:J})}return Y.sort((G,J)=>G.path.localeCompare(J.path))}var Or,wb$=null;var Db$=B(()=>{Or=class Or extends Error{constructor($,Z){super($,Z);this.name="TarExtractError"}}});import{createHash as u96}from"crypto";import{readFile as c96}from"fs/promises";async function wr($,Z){try{return await $.getHeadSha(Z)}catch(Q){if(!(Q instanceof V6)||Q.status!==404)throw Q}let X=await $.getHeadSha(await $.getDefaultBranch());try{return await $.createRef(Z,X),X}catch(Q){if(Q instanceof V6&&Q.status===422)return $.getHeadSha(Z);throw Q}}function d96(){let $=Bun.env.FAST_PREVIEW_COLD_TARBALL_MAX_BYTES;if($===void 0||$==="")return Eb$;let Z=Number($);return Number.isFinite(Z)&&Z>=0?Math.floor(Z):Eb$}function m96($){jb$??=k$.createCounter("decofile_cold_reads",{description:"Decofile cold snapshot reads by resolution path",unit:"{reads}"}),jb$.add(1,{path:$})}async function jz0($,Z,X){let Q=Array($.length),Y=0,G=Array.from({length:Math.min(Z,$.length)},async()=>{for(;;){let J=Y++;if(J>=$.length)return;Q[J]=await X($[J])}});return await Promise.all(G),Q}function zz0($){return $?`${$}/.deco/blocks`:".deco/blocks"}function R61($,Z){let X=`${zz0(Z)}/`,Q=[];for(let Y of $){if(Y.type!=="blob"||!Y.path.startsWith(X))continue;let G=Y.path.slice(X.length);if(G.includes("/"))continue;if(!G.toLowerCase().endsWith(".json"))continue;Q.push({stem:G.slice(0,-5),sha:Y.sha,path:Y.path,size:Y.size})}return Q}function I61($,Z){return $.filter((X)=>Hr(X.stem)===Z).map((X)=>X.path).sort()}function zb$($,Z,X,Q){return Ez0($,Z,X,Q)}function i96($,Z){if(!Z)return $;return u96("sha1").update(`${$}:${Z}`).digest("hex")}async function Pb$($,Z,X,Q){let Y=Q?.createBranchIfMissing?await wr($,Z):await $.getHeadSha(Z);return n96.run(`${$.owner}/${$.repo}@${Y}:${X??""}`,()=>p96($,Y,X))}async function p96($,Z,X){let{owner:Q,repo:Y}=$,G=i96(Z,X),J=await Jb$(Q,Y,G);if(J!==null)return{sha:Z,decofile:J};let W=await $.getCommitTreeSha(Z),K=await $.getTreeRecursive(W),H=R61(K,X),N=new Map;if(await jz0(H,Lb$,async(w)=>{let D=await Gb$(Q,Y,w.sha);if(D!==null)N.set(w.path,D)}),H.length-N.size>l96){let w=await t96($,Z,X,H);if(m96(w!==null?"tarball":"blobs"),w!==null)for(let[D,L]of w)N.set(D,L)}let U=await jz0(H,Lb$,async(w)=>{let D=N.get(w.path);if(D!==void 0)return{stem:w.stem,content:D};let L=await $.getBlobText(w.sha);return await Ez0(Q,Y,w.sha,L),{stem:w.stem,content:L}}),O=Nr(U);return await Kb$(Q,Y,G,O),{sha:Z,decofile:O}}async function t96($,Z,X,Q){let Y=`${$.owner}/${$.repo}`,G=d96(),J=0;for(let K of Q){if(K.size===void 0)return console.warn("decofile cold read: tarball skipped (tree entry missing size; cannot pre-validate)",{repo:Y,sha:Z,path:K.path}),null;J+=K.size}if(J>G)return console.warn("decofile cold read: tarball skipped (blocks over FAST_PREVIEW_COLD_TARBALL_MAX_BYTES)",{repo:Y,sha:Z,aggregateBytes:J,maxBytes:G}),null;let W=await Hb$();if(W===null)return null;try{let K=await $.getTarballStream(Z),H=await Bb$(K,W,zz0(X)),N=new Map(Q.map((U)=>[U.path,U.sha])),F=new Map;for(let U of H){let O=N.get(U.path);if(O===void 0)continue;let w=await c96(U.diskPath,"utf8");await Ez0($.owner,$.repo,O,w),F.set(U.path,w)}return F}catch(K){return console.warn("decofile cold read: tarball path failed; falling back to blob fetches",{repo:Y,sha:Z,error:K instanceof Error?K.message:String(K)}),null}finally{await Nb$(W)}}var Lb$=12,l96=50,Eb$=134217728,jb$=null,n96;var Pz0=B(()=>{Oz0();v6();Fb$();Z_();Db$();n96=Ub$()});async function Az0($,Z){let X=await $.getDefaultBranch(),Q=await wr($,Z),Y=X===Z?{aheadBy:0,behindBy:0}:await $.compare(X,Z);return{not_added:[],conflicted:[],created:[],deleted:[],modified:[],renamed:[],files:[],staged:[],ahead:0,behind:0,current:Z,tracking:`origin/${Z}`,detached:!1,base:X,aheadOfBase:Y.aheadBy,behindBase:Y.behindBy,headSha:Q,unpushed:0}}async function Tz0($,Z,X){let Q=X??await $.getDefaultBranch(),Y=await $.compareDetailed(Q,Z),G=Y.files.slice(0,o96),J=await $.getCommitTreeSha(Y.mergeBaseSha),W=await $.getTreeRecursive(J),K=new Map(W.filter((N)=>N.type==="blob").map((N)=>[N.path,N.sha])),H=await jz0(G,r96,async(N)=>{let F=N.previousFilename??N.filename,U=N.status==="added"?void 0:K.get(F),O=U?await $.getBlobText(U):null,w=N.status==="removed"?null:await $.getBlobText(N.sha);return[N.filename,{from:O,to:w}]});return{diffs:Object.fromEntries(H),mergeBaseSha:Y.mergeBaseSha}}async function Ab$($,Z,X,Q="fail"){try{await $.mergeBranch(Z,X,`chore(decofile): merge ${X} into ${Z}`);return}catch(Y){if(!(Y instanceof V6&&Y.status===409))throw Y;if(Q!=="branch-wins")throw new V6(409,"POST","merges",`Merge conflict updating ${Z} from ${X} \u2014 resolve on GitHub`)}await e96($,Z,X)}async function e96($,Z,X){for(let Q=1;;Q++){let Y=await $.getHeadSha(Z),G=await $.getHeadSha(X),{files:J}=await $.compareDetailed(X,Z);if(J.length>=a96)throw new V6(409,"POST","merges",`Too many changed files on ${Z} to auto-merge (${J.length}); resolve on GitHub`);let W=await $.getTreeRecursive(await $.getCommitTreeSha(Y)),K=new Map(W.filter((U)=>U.type==="blob").map((U)=>[U.path,U])),H=[];for(let U of J){let O=K.get(U.filename);if(U.status==="removed"||!O)H.push({path:U.filename,mode:"100644",type:"blob",sha:null});else H.push({path:U.filename,mode:"100644",type:"blob",sha:O.sha});if(U.previousFilename&&U.previousFilename!==U.filename)H.push({path:U.previousFilename,mode:"100644",type:"blob",sha:null})}let N=await $.createTree(await $.getCommitTreeSha(G),H),F=await $.createCommit({message:`chore(decofile): merge ${X} into ${Z} (branch content wins)`,treeSha:N,parentShas:[Y,G]});try{await $.updateRef(Z,F);return}catch(U){if(U instanceof V6&&U.status===422&&Q<s96)continue;throw U}}}var o96=200,r96=12,a96=300,s96=3;var Tb$=B(()=>{Z_();Pz0()});function ZZ6($){if(!$||$.includes(".."))return!1;return $Z6.test($)}function Rb$($){let Z=typeof $.__resolveType==="string"?$.__resolveType:null;if(!Z||!ZZ6(Z))return null;let{__resolveType:X,...Q}=$;return{resolveType:Z,payload:Q}}function Ib$($,Z){return`${$.replace(/\/+$/,"")}/deco/invoke/${Z}`}var $Z6;var qb$=B(()=>{$Z6=/^[\w./@-]+$/});function q61($){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 Br($,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 Mb$($,Z,X,Q){if(!Q.connectionId)throw new Bh("Push requires a connected GitHub account. Connect mcp-github for this project and restart the sandbox.");let Y=$.organization?.id;if(!Y)throw new Bh(VZ);await SO({ctx:$,connectionId:Q.connectionId,organizationId:Y,forceRefresh:!0,onLegacyMintError:(N)=>{let F=N instanceof Error?N.message:VZ;throw new Bh(F)}});let{cloneUrl:G,gitUserName:J,gitUserEmail:W}=await VO(Q.connectionId,Q.owner,Q.name,$.db,$.vault),K=Nh($),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 pO(H,XZ6).catch(()=>H.statusText);throw Error(`Failed to refresh sandbox git credentials (${H.status}): ${N}`)}}var XZ6=10485760,Bh;var M61=B(()=>{eW();Hz0();Xn();Bx();Bh=class Bh extends Error{constructor($){super($);this.name="GitPushAuthError"}}});function YZ6($){let Z=$.startsWith("thread:")?$.slice(7):$;if(!Z||Z.length>255||Z.includes("..")||Z.startsWith("/")||Z.endsWith("/")||Z.endsWith(".lock")||!QZ6.test(Z))throw Error(`Invalid branch name: ${$}`)}function Q_($){return AbortSignal.any([$.req.raw.signal,AbortSignal.timeout(JZ6)])}function Y_($){let{runner:Z}=$.get("vmClaim");if(!Z)return $.json({error:"No sandbox runner configured"},503);return Z}async function Dr($){let{virtualMcpMetadata:Z,connectionIds:X}=$.get("vmClaim"),Q=$.var.studioContext,Y=Br(Z,X);if(!Y)throw new V6(404,"AUTH","repo","Project has no GitHub repository");let G=o(Q);return Fz0(Q,G.id,Y)}function k61($,Z){if(Z instanceof V6){let Q=Z.status===404?404:Z.status===409||Z.status===422?409:502;return $.json({error:Z.message},Q,j9)}let X=Z instanceof Error?Z.message:String(Z);return $.json({error:X},502,j9)}async function Vb$($){try{let Z=await Dr($),X=await Az0(Z,$.get("vmClaim").branch);return $.json(X,200,j9)}catch(Z){return k61($,Z)}}function Iz0($,Z){let Q=(Rz0.get($)??Promise.resolve()).catch(()=>{}).then(Z),Y=Q.catch(()=>{});return Rz0.set($,Y),Y.finally(()=>{if(Rz0.get($)===Y)Rz0.delete($)}),Q}async function gZ($,Z,X){if($.get("vmClaim").fastPreview)return $.json({error:"sandbox not found: Fast Preview projects are sandbox-less"},404,j9);let Q=Y_($);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 O=await Q.proxyDaemonRequest(Y,Z,F);if(X?.map404to410&&O.status===404){try{await O.body?.cancel()}catch{}if(await Q.adoptLiveClaim?.({userId:G,projectRef:J},Y))O=await Q.proxyDaemonRequest(Y,Z,F);if(O.status===404){try{await O.body?.cancel()}catch{}return new Response(JSON.stringify({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."}),{status:410,headers:{"content-type":"application/json",...j9}})}}let w=await O.text(),D=X?.redactRepoDirUnlessDesktop&&Q.kind!=="user-desktop"?KZ6(w):w,L=O.headers.get("content-type")??"application/json";return new Response(D,{status:O.status,headers:{"content-type":L,...j9}})};try{if(N){let O=U();return O.catch(()=>{}),await Promise.race([O,new Promise((D,L)=>{if(N.aborted)return L(N.reason);N.addEventListener("abort",()=>L(N.reason),{once:!0})})])}return await U()}catch(O){let w=O instanceof Error?O.message:String(O);return $.json({error:`Daemon unreachable: ${w}`},502)}}function KZ6($){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 qz0($,Z,X,Q="GET",Y){let G=await $.proxyDaemonRequest(Z,X,{method:Q,headers:new Headers,body:null});if(G.status===404&&Y){try{await G.body?.cancel()}catch{}if(await $.adoptLiveClaim?.(Y,Z))G=await $.proxyDaemonRequest(Z,X,{method:Q,headers:new Headers,body:null})}if(G.status===404){try{await G.body?.cancel()}catch{}throw Error("SANDBOX_GONE")}let J=await G.text();if(!G.ok){let W=`Daemon error (${G.status})`;try{W=JSON.parse(J).error??W}catch{}throw Error(W)}return JSON.parse(J)}function HZ6($){return Cb$.includes($)}var QZ6,kb$=524288,GZ6=65536,JZ6=1e4,Sb$=2000,WZ6,Rz0,j9,Cb$,_b$=()=>{let $=new U1;$.use("/:virtualMcpId/:branch/*",WZ6),$.post("/:virtualMcpId/:branch/write",(X)=>gZ(X,"/_sandbox/write",{forwardJsonBody:!0,signal:Q_(X)})),$.post("/:virtualMcpId/:branch/unlink",(X)=>gZ(X,"/_sandbox/unlink",{forwardJsonBody:!0,signal:Q_(X)})),$.post("/:virtualMcpId/:branch/mkdir",(X)=>gZ(X,"/_sandbox/mkdir",{forwardJsonBody:!0,signal:Q_(X)})),$.post("/:virtualMcpId/:branch/rename",(X)=>gZ(X,"/_sandbox/rename",{forwardJsonBody:!0,signal:Q_(X)})),$.post("/:virtualMcpId/:branch/read",(X)=>gZ(X,"/_sandbox/read",{forwardJsonBody:!0,signal:Q_(X)})),$.post("/:virtualMcpId/:branch/glob",(X)=>gZ(X,"/_sandbox/glob",{forwardJsonBody:!0,signal:Q_(X)})),$.post("/:virtualMcpId/:branch/grep",(X)=>gZ(X,"/_sandbox/grep",{forwardJsonBody:!0,signal:Q_(X)})),$.post("/:virtualMcpId/:branch/exec/:script",async(X)=>{let Q=X.req.param("script");if(!Q)return X.json({error:"missing script name"},400);return gZ(X,`/_sandbox/exec/${encodeURIComponent(Q)}`)}),$.post("/:virtualMcpId/:branch/exec/:script/kill",async(X)=>{let Q=X.req.param("script");if(!Q)return X.json({error:"missing script name"},400);return gZ(X,`/_sandbox/exec/${encodeURIComponent(Q)}/kill`)}),$.get("/:virtualMcpId/:branch/config",(X)=>gZ(X,"/_sandbox/config",{method:"GET",map404to410:!0,redactRepoDirUnlessDesktop:!0})),$.put("/:virtualMcpId/:branch/config",(X)=>gZ(X,"/_sandbox/config",{method:"PUT",forwardJsonBody:!0,map404to410:!0})),$.post("/:virtualMcpId/:branch/setup/:step",async(X)=>{let Q=X.req.param("step");if(!Q||!HZ6(Q))return X.json({error:`step must be one of: ${Cb$.join(", ")}`},400);if(Q==="start"){let Y=X.get("vmClaim");if(Y.runner){let G=o(X.var.studioContext),J=_x(Y.virtualMcpMetadata);try{await CU0({ctx:X.var.studioContext,runner:Y.runner,handle:Y.claimName,orgId:G.id,userId:Y.callerUserId,entries:J})}catch(W){let K=W instanceof Error?W.message:String(W);return X.json({error:`Failed to push env to daemon: ${K}`},502)}}}return gZ(X,`/_sandbox/setup/${Q}`,{signal:X.req.raw.signal,map404to410:!0})}),$.get("/:virtualMcpId/:branch/events",(X)=>{let Q=X.get("vmClaim");if(!Q.runner)return JF(X,async(Y)=>{await Y.writeSSE({event:"phase",data:JSON.stringify({kind:"failed",reason:"unknown",message:"No sandbox runner configured on this studio instance."})})});return Vf$(X,{ctx:X.var.studioContext,claimName:Q.claimName,runner:Q.runner,virtualMcpId:Q.virtualMcpId,branch:Q.branch,userId:Q.userId,projectRef:Q.projectRef,virtualMcpMetadata:Q.virtualMcpMetadata})}),$.get("/:virtualMcpId/:branch/git/status",(X)=>{if(X.get("vmClaim").fastPreview)return Vb$(X);return Z(X)});let Z=(X)=>gZ(X,"/_sandbox/git/status",{method:"GET",map404to410:!0,signal:AbortSignal.any([X.req.raw.signal,AbortSignal.timeout(Sb$)])});return $.post("/:virtualMcpId/:branch/git/status",(X)=>{if(X.get("vmClaim").fastPreview)return Vb$(X);return gZ(X,"/_sandbox/git/status",{map404to410:!0,signal:AbortSignal.any([X.req.raw.signal,AbortSignal.timeout(Sb$)])})}),$.post("/:virtualMcpId/:branch/git/diff",async(X)=>{let Q=X.get("vmClaim");if(Q.fastPreview)try{let Y=await X.req.json().catch(()=>({})),G=await Dr(X),J=await Tz0(G,Q.branch,Y.base);return X.json(J,200,j9)}catch(Y){return k61(X,Y)}return gZ(X,"/_sandbox/git/diff",{forwardJsonBody:!0,map404to410:!0})}),$.post("/:virtualMcpId/:branch/git/publish",async(X)=>{if(X.get("vmClaim").fastPreview)return X.json({ok:!0},200,j9);let Q=Y_(X);if(Q instanceof Response)return Q;let{claimName:Y,virtualMcpMetadata:G,connectionIds:J}=X.get("vmClaim"),W=X.var.studioContext;return Iz0(Y,async()=>{try{await H61(W,Q,Y);let K=Br(G,J);if(K)await Mb$(W,Q,Y,K)}catch(K){if(K instanceof Bh)return X.json({error:K.message},403,j9);let H=K instanceof Error?K.message:String(K);return X.json({error:H},502,j9)}return gZ(X,"/_sandbox/git/publish",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/discard",async(X)=>{let{claimName:Q,fastPreview:Y}=X.get("vmClaim");if(Y)return X.json({error:"Nothing to discard: Fast Preview projects have no working tree"},400,j9);return Iz0(Q,()=>gZ(X,"/_sandbox/git/discard",{forwardJsonBody:!0,map404to410:!0}))}),$.post("/:virtualMcpId/:branch/git/rebase",async(X)=>{let Q=X.get("vmClaim");if(Q.fastPreview)return Iz0(Q.claimName,async()=>{try{let W=await X.req.json().catch(()=>({})),K=await Dr(X),H=W.base??await K.getDefaultBranch();return await Ab$(K,Q.branch,H,W.onConflict==="branch-wins"?"branch-wins":"fail"),X.json({ok:!0},200,j9)}catch(W){return k61(X,W)}});let Y=Y_(X);if(Y instanceof Response)return Y;let{claimName:G}=X.get("vmClaim"),J=X.var.studioContext;return Iz0(G,async()=>{try{await H61(J,Y,G)}catch(W){let K=W instanceof Error?W.message:String(W);return X.json({error:K},502,j9)}return gZ(X,"/_sandbox/git/rebase",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/suggest-commit",FZ({maxSize:kb$,onError:(X)=>X.json({error:"Payload too large"},413,j9)}),async(X)=>{let Q=X.get("vmClaim"),Y=null;if(!Q.fastPreview){let H=Y_(X);if(H instanceof Response)return H;Y=H}let{claimName:G,userId:J,projectRef:W}=Q,K=X.var.studioContext;try{let H=await X.req.json().catch(()=>({})),N=H.status,F=H.diff,U=F!=null&&typeof F.diffs==="object"&&F.diffs!==null,[O,w]=U61(N)&&U?[N,F]:Y?await Promise.all([qz0(Y,G,"/_sandbox/git/status","GET",{userId:J,projectRef:W}),qz0(Y,G,"/_sandbox/git/diff","GET",{userId:J,projectRef:W})]):await(async()=>{let L=await Dr(X);return Promise.all([Az0(L,Q.branch),Tz0(L,Q.branch)])})(),D=await bf$(K,O,w);return X.json(D,200,j9)}catch(H){let N=H instanceof Error?H.message:String(H);if(N==="SANDBOX_GONE")return X.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,j9);return X.json({error:N},502,j9)}}),$.post("/:virtualMcpId/:branch/git/judge-review",FZ({maxSize:kb$,onError:(X)=>X.json({error:"Payload too large"},413,j9)}),async(X)=>{let Q=X.get("vmClaim"),Y=null;if(!Q.fastPreview){let H=Y_(X);if(H instanceof Response)return H;Y=H}let{claimName:G,userId:J,projectRef:W}=Q,K=X.var.studioContext;try{let H=await X.req.json().catch(()=>({})),N=H.status,F=H.diff,U=F!=null&&typeof F.diffs==="object"&&F.diffs!==null,[O,w]=U61(N)&&U?[N,F]:Y?await Promise.all([qz0(Y,G,"/_sandbox/git/status","GET",{userId:J,projectRef:W}),qz0(Y,G,"/_sandbox/git/diff","GET",{userId:J,projectRef:W})]):await(async()=>{let L=await Dr(X);return Promise.all([Az0(L,Q.branch),Tz0(L,Q.branch)])})(),D=await yf$(K,O,w,typeof H.language==="string"?H.language:void 0);return X.json(D,200,j9)}catch(H){let N=H instanceof Error?H.message:String(H);if(N==="SANDBOX_GONE")return X.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,j9);return X.json({error:N},502,j9)}}),$.get("/:virtualMcpId/:branch/preview-fetch",async(X)=>{let Q=Y_(X);if(Q instanceof Response)return Q;let{claimName:Y}=X.get("vmClaim"),G=X.req.query("path");if(!G||!G.startsWith("/")||G.startsWith("//")||G.includes("..")||G.includes("\\"))return X.json({error:"Path not allowed"},403);let J;try{J=await Q.getPreviewUrl(Y)}catch{return X.json({error:"Preview not available"},502)}if(!J)return X.json({error:"Preview not available"},502);let W=J.replace(/\/+$/,""),K=q61(`${W}${G}`),H;try{H=await fetch(K?.url??`${W}${G}`,{...K?{headers:{host:K.hostHeader}}:{}})}catch{return X.json({error:"Preview unreachable"},502)}let N;try{N=await H.text()}catch{return X.json({error:"Preview unreachable"},502)}return new Response(N,{status:H.status,headers:{"content-type":H.headers.get("content-type")??"application/json"}})}),$.post("/:virtualMcpId/:branch/preview-invoke",FZ({maxSize:GZ6,onError:(X)=>X.json({error:"Payload too large"},413)}),async(X)=>{let Q=Y_(X);if(Q instanceof Response)return Q;let{claimName:Y}=X.get("vmClaim"),G;try{G=await Q.getPreviewUrl(Y)}catch{return X.json({error:"Preview not available"},502)}if(!G)return X.json({error:"Preview not available"},502);let J;try{J=await X.req.json()}catch{return X.json({error:"Invalid JSON body"},400)}if(!J||typeof J!=="object"||Array.isArray(J))return X.json({error:"Invalid JSON body"},400);let W=Rb$(J);if(!W)return X.json({error:"Invalid or missing __resolveType"},400);let K=Ib$(G,W.resolveType),H=q61(K),N;try{N=await fetch(H?.url??K,{method:"POST",headers:{"content-type":"application/json",...H?{host:H.hostHeader}:{}},body:JSON.stringify(W.payload),signal:AbortSignal.timeout(30000)})}catch{return X.json({error:"Preview unreachable"},502)}let F;try{F=await N.text()}catch{return X.json({error:"Preview unreachable"},502)}return new Response(F,{status:N.status,headers:{"content-type":N.headers.get("content-type")??"application/json"}})}),$};var vb$=B(()=>{C8();aw();Hh();K61();WN();kf$();T3();dO();Sf$();Cf$();um0();$n();B61();gf$();E61();Z_();Tb$();qb$();M61();QZ6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;WZ6=Kz0(async($,Z)=>{let X=$.var.studioContext;try{Z0(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{YZ6(J)}catch(O){let w=O instanceof Error?O.message:String(O);return $.json({error:w},400)}let W=await X.storage.virtualMcps.findById(G);if(!W||W.organization_id!==Y.id)return $.json({error:"Virtual MCP not found"},404);let K=Ai({orgId:Y.id,virtualMcpId:G,branch:J}),H=await DN(X,J,Q),N=Mf$({userId:H,projectRef:K}),F=W.metadata??null;if(F?.fastPreview===!0&&Nz0(F))return $.set("vmClaim",{claimName:N,callerUserId:Q,runner:null,virtualMcpId:G,branch:J,userId:H,projectRef:K,virtualMcpMetadata:F,connectionIds:W.connections?.map((O)=>O.connection_id)??[],fastPreview:!0}),Z();let U;try{U=(await dX(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((O)=>O.connection_id)??[]}),Z()});Rz0=new Map;j9={"Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache"};Cb$=["clone","install","start"]});function fb$($,Z,X){let Q=S61.get($);if(!Q)Q={pending:null,running:!1},S61.set($,Q);if(!Q.pending)Q.pending={set:new Map,del:new Set,deps:Z,resolvers:[],rejecters:[]};let Y=Q.pending;Y.deps=Z;for(let[J,W]of Object.entries(X.set??{}))Y.set.set(J,W),Y.del.delete(J);for(let J of X.delete??[])Y.del.add(J),Y.set.delete(J);let G=new Promise((J,W)=>{Y.resolvers.push(J),Y.rejecters.push(W)});if(!Q.running)FZ6($,Q);return G}async function FZ6($,Z){Z.running=!0;try{while(Z.pending){let X=Z.pending;Z.pending=null;try{let Q=await UZ6(X);for(let Y of X.resolvers)Y(Q)}catch(Q){for(let Y of X.rejecters)Y(Q)}}}finally{if(Z.running=!1,!Z.pending)S61.delete($)}}async function UZ6($){let{client:Z,branch:X,packagePath:Q}=$.deps;for(let Y=0;;Y++){let G=await wr(Z,X),J=await Z.getCommitTreeSha(G),W=await Z.getTreeRecursive(J),K=R61(W,Q),H=[],N=new Map(K.map((w)=>[w.path,{stem:w.stem,sha:w.sha}]));for(let[w,D]of $.set){let L=I61(K,w),E=`${JSON.stringify(D,null,2)}
2738
- `,j=await Z.createBlob(E);await zb$(Z.owner,Z.repo,j,E);let z=L[0]??`${zz0(Q)}/${j61(w)}.json`;H.push({path:z,mode:"100644",type:"blob",sha:j});let A=z.slice(z.lastIndexOf("/")+1,-5);N.set(z,{stem:A,sha:j,content:E});for(let P of L.slice(1))H.push({path:P,mode:"100644",type:"blob",sha:null}),N.delete(P)}for(let w of $.del)for(let D of I61(K,w))H.push({path:D,mode:"100644",type:"blob",sha:null}),N.delete(D);if(H.length===0)return G;let F=Q?`${Q}/.deco/blocks.gen.json`:".deco/blocks.gen.json";if(W.some((w)=>w.type==="blob"&&w.path===F)){let w=await Promise.all([...N.values()].map(async(L)=>({stem:L.stem,content:L.content??await Z.getBlobText(L.sha)}))),D=await Z.createBlob(Nr(w));H.push({path:F,mode:"100644",type:"blob",sha:D})}let U=await Z.createTree(J,H),O=await Z.createCommit({message:OZ6($),treeSha:U,parentShas:[G]});try{return await Z.updateRef(X,O),O}catch(w){if(!(w instanceof V6&&w.status===422)||Y>=NZ6-1)throw w;await C$(cZ(2000,200,Y,2,0.5))}}}function OZ6($){let Z=(Y)=>{let G=Y.slice(0,3).join(", ");return Y.length>3?`${G} (+${Y.length-3} more)`:G},X=[];if($.set.size>0)X.push(`update ${Z([...$.set.keys()])}`);if($.del.size>0)X.push(`delete ${Z([...$.del])}`);let Q=`chore(decofile): ${X.join("; ")}`;return Ul0(Q,$.deps.coAuthor)}var NZ6=3,S61;var bb$=B(()=>{RU0();Oz0();$6();Z_();Pz0();S61=new Map});import{createHmac as xb$,randomBytes as wZ6,timingSafeEqual as BZ6}from"crypto";function yb$(){if(Mz0)return Mz0;let $;try{let Z=y0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return Mz0=$?Buffer.from($):wZ6(32),Mz0}function V61($){let Z=$.nowMs??Date.now(),X={o:$.organizationId,m:$.virtualMcpId,b:$.branch,e:Math.floor((Z+DZ6)/1000)},Q=Buffer.from(JSON.stringify(X)).toString("base64url"),Y=xb$("sha256",yb$()).update(Q).digest("base64url");return`${Q}.${Y}`}function gb$($,Z){let X=$.indexOf(".");if(X<0)return!1;let Q=$.slice(0,X),Y=Buffer.from($.slice(X+1)),G=Buffer.from(xb$("sha256",yb$()).update(Q).digest("base64url"));if(Y.length!==G.length||!BZ6(Y,G))return!1;let J;try{J=JSON.parse(Buffer.from(Q,"base64url").toString())}catch{return!1}let W=Math.floor((Z.nowMs??Date.now())/1000);return J.o===Z.organizationId&&J.m===Z.virtualMcpId&&J.b===Z.branch&&typeof J.e==="number"&&J.e>=W}var DZ6=21600000,Mz0=null;var hb$=B(()=>{M$()});import{z as Dh}from"zod";function EZ6($){return $.length>0&&$.length<=255&&!$.includes("..")&&!$.endsWith("/")&&!$.endsWith(".lock")&&LZ6.test($)}function cb$($){return $.req.header("x-forwarded-host")??new URL($.req.url).host}async function kz0($){let Z=$.get("decofileScope");return Fz0($.var.studioContext,Z.organizationId,Z.githubRepo)}function Sz0($,Z){if(Z instanceof V6){let Q=Z.status===404?404:Z.status===409?409:Z.status===422?409:502;return $.json({error:Z.message},Q)}let X=Z instanceof Error?Z.message:String(Z);return $.json({error:X},500)}function lb$(){let $=new U1;return $.use("/:virtualMcpId/:branch",ub$),$.use("/:virtualMcpId/:branch/*",ub$),$.get("/:virtualMcpId/:branch",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await kz0(Z),Y=await Pb$(Q,X.branch,X.packagePath,{createBranchIfMissing:!!X.userId}),G={ETag:`"${Y.sha}"`,"Cache-Control":"no-store","Access-Control-Allow-Origin":"*"};if(Z.req.header("if-none-match")===`"${Y.sha}"`)return Z.body(null,304,G);if(!X.userId)return Z.body(Y.decofile,200,{...G,"content-type":"application/json"});let J=V61({organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,branch:X.branch});return Z.body(`{"version":${JSON.stringify(Y.sha)},"token":${JSON.stringify(J)},"apiHost":${JSON.stringify(cb$(Z))},"decofile":${Y.decofile}}`,200,{...G,"content-type":"application/json"})}catch(Q){return Sz0(Z,Q)}}),$.patch("/:virtualMcpId/:branch",async(Z)=>{let X=Z.get("decofileScope"),Q=Z.var.studioContext,Y=jZ6.safeParse(await Z.req.json().catch(()=>null));if(!Y.success)return Z.json({error:"Invalid body",details:Y.error.issues},400);let G=Y.data;for(let J of[...Object.keys(G.set??{}),...G.delete??[]])try{Uz0(J)}catch(W){let K=W instanceof Error?W.message:String(W);return Z.json({error:K},400)}for(let[J,W]of Object.entries(G.set??{}))if(typeof W!=="object"||W===null||Array.isArray(W))return Z.json({error:`Block "${J}" must be a JSON object`},400);try{let J=await kz0(Z),W=await fb$(`${X.organizationId}/${X.virtualMcpId}/${X.branch}`,{client:J,branch:X.branch,packagePath:X.packagePath,coAuthor:Nh(Q)},G),K=V61({organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,branch:X.branch});return Z.json({version:W,token:K,apiHost:cb$(Z)})}catch(J){return Sz0(Z,J)}}),$.post("/:virtualMcpId/:branch/publish",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await kz0(Z),Y=await Q.getDefaultBranch();if(Y===X.branch)return Z.json({error:"Branch is already the default branch"},400);try{let G=await Q.mergeBranch(Y,X.branch,`chore(decofile): publish ${X.branch}`);return G?Z.json({result:"merged",sha:G}):Z.json({result:"up-to-date"})}catch(G){if(G instanceof V6&&G.status===409)return Z.json({error:"merge-conflict"},409);if(G instanceof V6&&G.status===405){let W=await Q.findOpenPullRequest(Y,X.branch)??await Q.createPullRequest({base:Y,head:X.branch,title:`Publish ${X.branch}`});return Z.json({result:"pull-request",number:W.number,url:W.html_url})}throw G}}catch(Q){return Sz0(Z,Q)}}),$.get("/:virtualMcpId/:branch/status",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await kz0(Z),Y=await Q.getDefaultBranch();if(Y===X.branch)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0});try{let{aheadBy:G,behindBy:J}=await Q.compare(Y,X.branch);return Z.json({baseBranch:Y,aheadBy:G,behindBy:J})}catch(G){if(G instanceof V6&&G.status===404)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0});throw G}}catch(Q){return Sz0(Z,Q)}}),$}var LZ6,jZ6,ub$;var db$=B(()=>{Oz0();C8();K61();Hz0();M61();E61();bb$();hb$();Z_();Pz0();LZ6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;jZ6=Dh.object({set:Dh.record(Dh.string(),Dh.unknown()).optional(),delete:Dh.array(Dh.string()).optional()}).refine(($)=>Object.keys($.set??{}).length>0||($.delete?.length??0)>0,{message:"Patch must set or delete at least one block"}),ub$=Kz0(async($,Z)=>{let X=$.var.studioContext,Q=X.organization;if(!Q)return $.json({error:"Organization scope required"},500);let Y=$.req.param("virtualMcpId"),G=$.req.param("branch");if(!Y||!G)return $.json({error:"virtualMcpId and branch are required"},400);if(!EZ6(G))return $.json({error:`Invalid branch name: ${G}`},400);let J=X.auth?.user?.id??null;if(!J){let O=$.req.query("token");if(!($.req.method==="GET"&&!$.req.path.match(/\/(publish|status)$/)))return $.json({error:"Unauthorized"},401);if(!O||!gb$(O,{organizationId:Q.id,virtualMcpId:Y,branch:G}))return $.json({error:"Unauthorized"},401)}let W=await X.storage.virtualMcps.findById(Y);if(!W||W.organization_id!==Q.id)return $.json({error:"Virtual MCP not found"},404);let K=W.metadata??null;if(!Nz0(K)||K?.fastPreview!==!0)return $.json({error:"Fast Preview is not enabled for this project"},404);let N=W.connections?.map((O)=>O.connection_id)??[],F=Br(K,N);if(!F)return $.json({error:"Project has no GitHub repository"},404);let U=K?.runtime;return $.set("decofileScope",{organizationId:Q.id,virtualMcpId:Y,branch:G,packagePath:U?.path?.replace(/^\/+|\/+$/g,"")||null,githubRepo:F,userId:J}),Z()})});var mb$=($)=>{let Z=new U1;if(Z.use("*",iC),Z.route("/",Ij0()),Z.route("/",FC$()),Z.route("/",wf$()),Z.route("/",Ff$()),Z.route("/",Gz0()),Z.route("/tools",Pf$()),Z.route("/",Ef$()),Z.route("/",pv$({kvStorage:$.kvStorage})),Z.route("/",iv$()),Z.route("/fs",Yf$({getConnection:$.getNatsConnection})),Z.route("/sandbox",_b$()),Z.route("/decofile",lb$()),Z.route("/",Kf$()),Z.route("/deco-sites",Mj0()),Z.route("/sso",jj0()),Z.route("/",Jz0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",QC$()),$.mountDevAssets)Z.route("/dev-assets",kj0({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("/",tk$()),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",Jf$()),Z.route("/mcp",cw0()),Z.route("/mcp/self",Yz0()),Z.route("/mcp",mw0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var ib$=B(()=>{C8();S81();YC$();f81();Sj0();bo();M81();nv$();tv$();Gf$();tn();j81();iw0();Z61();Wf$();Hf$();Uf$();Bf$();jf$();Q61();Af$();Y61();lw0();vb$();db$()});function PZ6($){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 AZ6($,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(zZ6)});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 zZ6=1e4,TZ6=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},nb$=()=>{let $=new U1;return $.use("*",TZ6),$.get("/",async(Z)=>{let X=y0(),Q=X.decoSupabaseUrl,Y=X.decoSupabaseServiceKey;if(!Q||!Y)return Z.json({apps:[]});try{let G=await AZ6(Q,Y);return Z.json({apps:PZ6(G)})}catch(G){return console.error("[deco-apps] GET error:",G),Z.json({error:"Failed to fetch apps"},502)}}),$};var pb$=B(()=>{C8();M$()});import{z as M1}from"zod";function lK($,Z="invalid_request_error",X=null,Q=null){return{error:{message:$,type:Z,param:X,code:Q}}}function vZ6($){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 fZ6($,Z,X){try{return JSON.parse($)}catch{throw new rb$(`Invalid JSON in tool call arguments for function '${X}' (tool_call_id: ${Z}): ${$}`)}}function bZ6($){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:fZ6(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 xZ6($){let Z=$.map((X)=>{let Q=X.function.parameters?MY(X.function.parameters):MY({type:"object",properties:{}});return[X.function.name,f$({description:X.function.description,inputSchema:Q})]});return Object.fromEntries(Z)}function yZ6($){if(!$)return;return{openai:{response_format:$}}}function gZ6(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function tb$($,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 ob$($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var RZ6=256,IZ6,qZ6,MZ6,kZ6,SZ6,VZ6,CZ6,_Z6,rb$,ab$,sb$;var eb$=B(()=>{C4();C8();Hh();hN();IZ6=M1.object({type:M1.literal("function"),function:M1.object({name:M1.string(),description:M1.string().optional(),parameters:M1.record(M1.string(),M1.unknown()).optional()})}),qZ6=M1.object({id:M1.string(),type:M1.literal("function"),function:M1.object({name:M1.string(),arguments:M1.string()})}),MZ6=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(qZ6).optional()}),M1.object({role:M1.literal("tool"),content:M1.string(),tool_call_id:M1.string()})]),kZ6=M1.object({type:M1.literal("text")}),SZ6=M1.object({type:M1.literal("json_object")}),VZ6=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()})}),CZ6=M1.union([kZ6,SZ6,VZ6]),_Z6=M1.object({model:M1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:M1.array(MZ6),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(IZ6).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:CZ6.optional(),user:M1.string().optional()});rb$=class rb$ extends Error{constructor($){super($);this.name="MessageConversionError"}};ab$=new U1;ab$.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),X=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(lK("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(lK("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(lK("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Q=await $.req.json(),Y=_Z6.safeParse(Q);if(!Y.success){let L=Y.error.issues[0]??{message:"Invalid request",path:[]};return $.json(lK(`Invalid request: ${L.message}`,"invalid_request_error",L.path.length>0?L.path.join("."):null),400)}let G=Y.data,J=vZ6(G.model);if(!J)return $.json(lK("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)=>UD(j.providerId));if(!E)return $.json(lK("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(lK(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let N=H.aiSdk.languageModel(K),F=bZ6(G.messages),U=G.tools?xZ6(G.tools):void 0,O=yZ6(G.response_format),w=gZ6(),D=Math.floor(Date.now()/1000);if(G.stream)return JF($,async(L)=>{let E=tb$(N,F,U,G,O,$.req.raw.signal);try{let j=MO(E),z=!1,A=0,P="",q=async()=>{if(P.length===0)return;let S=P;P="",await L.writeSSE({data:JSON.stringify({id:w,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{content:S},finish_reason:null}]})})};for await(let S of j.fullStream){if(!z&&(S.type==="text-delta"||S.type==="tool-call"))await L.writeSSE({data:JSON.stringify({id:w,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),z=!0;if(S.type==="text-delta"){if(P+=S.text,P.length>=RZ6)await q()}else if(S.type==="tool-call"){await q();let M=A++;await L.writeSSE({data:JSON.stringify({id:w,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{tool_calls:[{index:M,id:S.toolCallId,type:"function",function:{name:S.toolName,arguments:JSON.stringify(S.input)}}]},finish_reason:null}]})})}else if(S.type==="finish")await q(),await L.writeSSE({data:JSON.stringify({id:w,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{},finish_reason:ob$(S.finishReason)}],usage:S.totalUsage?{prompt_tokens:S.totalUsage.inputTokens??0,completion_tokens:S.totalUsage.outputTokens??0,total_tokens:S.totalUsage.totalTokens??0}:void 0})})}await q(),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=tb$(N,F,U,G,O,$.req.raw.signal),E=await IO(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:w,object:"chat.completion",created:D,model:G.model,choices:[{index:0,message:j,finish_reason:ob$(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(lK("Request aborted","invalid_request_error"),400);if(Y.name==="MessageConversionError")return $.json(lK(Y.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",Y.message,Y.stack),$.json(lK(Y.message,"server_error"),500)}});sb$=ab$});var Zx$;var $x$=B(()=>{Zx$={name:"decocms",version:"4.212.1",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 cZ6(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??uZ6}}var Xx$,uZ6="https://ph.studio.decocms.com",Qx$;var Yx$=B(()=>{C8();py0();gV();PZ();M$();w81();$x$();Xx$=new U1;Xx$.get("/",($)=>{let Z={version:Zx$.version,theme:Mc1(),...XL().logo&&{logo:XL().logo},...wK()&&{internalUrl:Xk1()},...y0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!y0().firecrawlApiKey,auth:PV$(),posthog:cZ6(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:!wK()&&y0().sandboxProviderKind==="agent-sandbox"}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});Qx$=Xx$});function Lh($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function C61($){return(Lh($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((X)=>X.charAt(0).toUpperCase()+X.slice(1)).join(" ")}function Jx$($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(Lh($))}&sz=${Z}`}function Gx$($,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 Wx$($){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()?Gx$(`${Y.trim().replace(/\s+/g," ")} \u2014 ${J}`,200):Gx$(`How does ${X} really perform? ${J}`,200);return{title:G,description:W}}import{z as c0}from"zod";var G_,lZ6,dZ6,mZ6,iZ6,Kx$;var Hx$=B(()=>{G_=c0.enum(["good","bad","neutral"]),lZ6=c0.preprocess(($)=>{if(Array.isArray($))return{kind:"text",value:$.find((X)=>X!==null&&typeof X!=="object")??""};return $!==null&&typeof $==="object"?$:{kind:"text",value:$}},c0.object({kind:c0.enum(["text","number","sparkline","badge","score"]).catch("text"),value:c0.coerce.string().optional(),tone:G_.optional(),muted:c0.boolean().optional(),delta:c0.coerce.string().optional(),deltaDir:c0.enum(["up","down","neutral"]).optional(),points:c0.array(c0.coerce.number()).optional(),label:c0.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 $})),dZ6=c0.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},c0.array(lZ6)),mZ6={key:c0.coerce.string(),title:c0.coerce.string(),eyebrow:c0.coerce.string().optional(),headline:c0.coerce.string(),annotation:c0.coerce.string().optional(),methodology:c0.coerce.string().optional(),sources:c0.array(c0.object({name:c0.coerce.string(),logoUrl:c0.coerce.string()})).optional()},iZ6=c0.discriminatedUnion("template",[c0.object({template:c0.literal("cover"),score:c0.object({value:c0.coerce.number(),max:c0.coerce.number().optional(),grade:c0.coerce.string().optional(),label:c0.coerce.string().optional()}).optional(),brandImage:c0.coerce.string().optional(),screenshot:c0.coerce.string().optional(),mobileScreenshot:c0.coerce.string().optional()}),c0.object({template:c0.literal("cta"),ctaUrl:c0.coerce.string().optional(),ctaLabel:c0.coerce.string().optional(),bullets:c0.array(c0.coerce.string()).optional()}),c0.object({template:c0.literal("series"),points:c0.array(c0.coerce.number()).min(2),xLabels:c0.array(c0.coerce.string()).min(1),unit:c0.coerce.string().optional(),callout:c0.object({index:c0.coerce.number(),value:c0.coerce.string(),tone:G_.optional()})}),c0.object({template:c0.literal("threshold"),value:c0.coerce.string().default(""),metricLabel:c0.coerce.string().optional(),ratio:c0.coerce.number(),thresholdRatio:c0.coerce.number().optional(),thresholdLabel:c0.coerce.string().default(""),tone:G_.optional()}),c0.object({template:c0.literal("stats"),stats:c0.array(c0.object({value:c0.coerce.string(),label:c0.coerce.string(),tone:G_.optional()})).min(1)}),c0.object({template:c0.literal("bars"),items:c0.array(c0.object({value:c0.coerce.string(),label:c0.coerce.string(),ratio:c0.coerce.number(),tone:G_.optional()})).min(1)}),c0.object({template:c0.literal("gauges"),gauges:c0.array(c0.object({label:c0.coerce.string(),value:c0.coerce.string(),status:c0.enum(["good","warn","bad"]).catch("warn"),caption:c0.coerce.string().optional(),ratio:c0.coerce.number().optional()})).min(1)}),c0.object({template:c0.literal("checklist"),checks:c0.array(c0.object({label:c0.coerce.string(),status:c0.enum(["pass","fail","warn"]).catch("fail"),value:c0.coerce.string().optional()})).min(1)}),c0.object({template:c0.literal("table"),columns:c0.array(c0.object({label:c0.coerce.string(),align:c0.enum(["left","right"]).optional()})).min(1),rows:c0.array(dZ6).min(1),highlightRow:c0.coerce.number().optional()}),c0.object({template:c0.literal("products"),products:c0.array(c0.object({name:c0.coerce.string(),price:c0.coerce.string().optional(),image:c0.coerce.string().optional(),url:c0.coerce.string().optional()})).min(1)}),c0.object({template:c0.literal("list"),entries:c0.array(c0.object({label:c0.coerce.string(),severity:c0.enum(["error","warning","notice"]).catch("notice")})).min(1),moreCount:c0.coerce.number().optional()}),c0.object({template:c0.literal("keywords"),volumeLabel:c0.coerce.string().optional(),keywords:c0.array(c0.object({term:c0.coerce.string(),volume:c0.coerce.string(),position:c0.coerce.number().catch(0)})).min(1)}),c0.object({template:c0.literal("competitor"),metricLabel:c0.coerce.string().optional(),competitors:c0.array(c0.object({name:c0.coerce.string(),value:c0.coerce.string(),tone:G_.optional(),isYou:c0.boolean().optional()})).min(1)}),c0.object({template:c0.literal("scorecard"),rivalLabel:c0.coerce.string().optional(),dimensions:c0.array(c0.object({label:c0.coerce.string(),you:c0.coerce.string(),rival:c0.coerce.string().optional(),rivalName:c0.coerce.string().optional(),tone:G_.optional()})).min(1)})]),Kx$=c0.object({...mZ6,template:iZ6})});function Vz0($){let Z=[],X=[...$.sections].sort((Y,G)=>Y.position-G.position).map((Y)=>{let G=Kx$.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 _61=B(()=>{Hx$()});import{join as Nx$}from"path";async function pZ6($){try{let Z=await fetch(`${gW({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(nZ6)});if(!Z.ok)return null;let X=await Z.json(),{deck:Q}=Vz0(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()||C61($),score:Q.meta.scores?.cover??J?.score?.value,verdict:Y?.annotation?.trim()||Y?.headline?.trim()||void 0}}catch{return null}}function oY($){return $.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;")}function tZ6($,Z){let X=Lh($),Q=Z?.brand?.trim()||C61(X),Y=Jx$(X,128),J=`${(y0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(X)}`,{title:W,description:K}=Wx$({brand:Q,domain:X,score:Z?.score,verdict:Z?.verdict}),H=`${J}/og.png`,N=`${Q} commerce report by decocms`;return[`<title>${oY(W)}</title>`,`<meta name="description" content="${oY(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="${oY(W)}" />`,`<meta property="og:description" content="${oY(K)}" />`,`<meta property="og:url" content="${oY(J)}" />`,`<meta property="og:image" content="${oY(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${oY(N)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${oY(W)}" />`,`<meta name="twitter:description" content="${oY(K)}" />`,`<meta name="twitter:image" content="${oY(H)}" />`,`<meta name="twitter:image:alt" content="${oY(N)}" />`,`<link rel="canonical" href="${oY(J)}" />`,`<link rel="icon" href="${oY(Y)}" sizes="any" />`].join(`
2738
+ `,j=await Z.createBlob(E);await zb$(Z.owner,Z.repo,j,E);let z=L[0]??`${zz0(Q)}/${j61(w)}.json`;H.push({path:z,mode:"100644",type:"blob",sha:j});let A=z.slice(z.lastIndexOf("/")+1,-5);N.set(z,{stem:A,sha:j,content:E});for(let P of L.slice(1))H.push({path:P,mode:"100644",type:"blob",sha:null}),N.delete(P)}for(let w of $.del)for(let D of I61(K,w))H.push({path:D,mode:"100644",type:"blob",sha:null}),N.delete(D);if(H.length===0)return G;let F=Q?`${Q}/.deco/blocks.gen.json`:".deco/blocks.gen.json";if(W.some((w)=>w.type==="blob"&&w.path===F)){let w=await Promise.all([...N.values()].map(async(L)=>({stem:L.stem,content:L.content??await Z.getBlobText(L.sha)}))),D=await Z.createBlob(Nr(w));H.push({path:F,mode:"100644",type:"blob",sha:D})}let U=await Z.createTree(J,H),O=await Z.createCommit({message:OZ6($),treeSha:U,parentShas:[G]});try{return await Z.updateRef(X,O),O}catch(w){if(!(w instanceof V6&&w.status===422)||Y>=NZ6-1)throw w;await C$(cZ(2000,200,Y,2,0.5))}}}function OZ6($){let Z=(Y)=>{let G=Y.slice(0,3).join(", ");return Y.length>3?`${G} (+${Y.length-3} more)`:G},X=[];if($.set.size>0)X.push(`update ${Z([...$.set.keys()])}`);if($.del.size>0)X.push(`delete ${Z([...$.del])}`);let Q=`chore(decofile): ${X.join("; ")}`;return Ul0(Q,$.deps.coAuthor)}var NZ6=3,S61;var bb$=B(()=>{RU0();Oz0();$6();Z_();Pz0();S61=new Map});import{createHmac as xb$,randomBytes as wZ6,timingSafeEqual as BZ6}from"crypto";function yb$(){if(Mz0)return Mz0;let $;try{let Z=y0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return Mz0=$?Buffer.from($):wZ6(32),Mz0}function V61($){let Z=$.nowMs??Date.now(),X={o:$.organizationId,m:$.virtualMcpId,b:$.branch,e:Math.floor((Z+DZ6)/1000)},Q=Buffer.from(JSON.stringify(X)).toString("base64url"),Y=xb$("sha256",yb$()).update(Q).digest("base64url");return`${Q}.${Y}`}function gb$($,Z){let X=$.indexOf(".");if(X<0)return!1;let Q=$.slice(0,X),Y=Buffer.from($.slice(X+1)),G=Buffer.from(xb$("sha256",yb$()).update(Q).digest("base64url"));if(Y.length!==G.length||!BZ6(Y,G))return!1;let J;try{J=JSON.parse(Buffer.from(Q,"base64url").toString())}catch{return!1}let W=Math.floor((Z.nowMs??Date.now())/1000);return J.o===Z.organizationId&&J.m===Z.virtualMcpId&&J.b===Z.branch&&typeof J.e==="number"&&J.e>=W}var DZ6=21600000,Mz0=null;var hb$=B(()=>{M$()});import{z as Dh}from"zod";function EZ6($){return $.length>0&&$.length<=255&&!$.includes("..")&&!$.endsWith("/")&&!$.endsWith(".lock")&&LZ6.test($)}function cb$($){return $.req.header("x-forwarded-host")??new URL($.req.url).host}async function kz0($){let Z=$.get("decofileScope");return Fz0($.var.studioContext,Z.organizationId,Z.githubRepo)}function Sz0($,Z){if(Z instanceof V6){let Q=Z.status===404?404:Z.status===409?409:Z.status===422?409:502;return $.json({error:Z.message},Q)}let X=Z instanceof Error?Z.message:String(Z);return $.json({error:X},500)}function lb$(){let $=new U1;return $.use("/:virtualMcpId/:branch",ub$),$.use("/:virtualMcpId/:branch/*",ub$),$.get("/:virtualMcpId/:branch",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await kz0(Z),Y=await Pb$(Q,X.branch,X.packagePath,{createBranchIfMissing:!!X.userId}),G={ETag:`"${Y.sha}"`,"Cache-Control":"no-store","Access-Control-Allow-Origin":"*"};if(Z.req.header("if-none-match")===`"${Y.sha}"`)return Z.body(null,304,G);if(!X.userId)return Z.body(Y.decofile,200,{...G,"content-type":"application/json"});let J=V61({organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,branch:X.branch});return Z.body(`{"version":${JSON.stringify(Y.sha)},"token":${JSON.stringify(J)},"apiHost":${JSON.stringify(cb$(Z))},"decofile":${Y.decofile}}`,200,{...G,"content-type":"application/json"})}catch(Q){return Sz0(Z,Q)}}),$.patch("/:virtualMcpId/:branch",async(Z)=>{let X=Z.get("decofileScope"),Q=Z.var.studioContext,Y=jZ6.safeParse(await Z.req.json().catch(()=>null));if(!Y.success)return Z.json({error:"Invalid body",details:Y.error.issues},400);let G=Y.data;for(let J of[...Object.keys(G.set??{}),...G.delete??[]])try{Uz0(J)}catch(W){let K=W instanceof Error?W.message:String(W);return Z.json({error:K},400)}for(let[J,W]of Object.entries(G.set??{}))if(typeof W!=="object"||W===null||Array.isArray(W))return Z.json({error:`Block "${J}" must be a JSON object`},400);try{let J=await kz0(Z),W=await fb$(`${X.organizationId}/${X.virtualMcpId}/${X.branch}`,{client:J,branch:X.branch,packagePath:X.packagePath,coAuthor:Nh(Q)},G),K=V61({organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,branch:X.branch});return Z.json({version:W,token:K,apiHost:cb$(Z)})}catch(J){return Sz0(Z,J)}}),$.post("/:virtualMcpId/:branch/publish",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await kz0(Z),Y=await Q.getDefaultBranch();if(Y===X.branch)return Z.json({error:"Branch is already the default branch"},400);try{let G=await Q.mergeBranch(Y,X.branch,`chore(decofile): publish ${X.branch}`);return G?Z.json({result:"merged",sha:G}):Z.json({result:"up-to-date"})}catch(G){if(G instanceof V6&&G.status===409)return Z.json({error:"merge-conflict"},409);if(G instanceof V6&&G.status===405){let W=await Q.findOpenPullRequest(Y,X.branch)??await Q.createPullRequest({base:Y,head:X.branch,title:`Publish ${X.branch}`});return Z.json({result:"pull-request",number:W.number,url:W.html_url})}throw G}}catch(Q){return Sz0(Z,Q)}}),$.get("/:virtualMcpId/:branch/status",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await kz0(Z),Y=await Q.getDefaultBranch();if(Y===X.branch)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0});try{let{aheadBy:G,behindBy:J}=await Q.compare(Y,X.branch);return Z.json({baseBranch:Y,aheadBy:G,behindBy:J})}catch(G){if(G instanceof V6&&G.status===404)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0});throw G}}catch(Q){return Sz0(Z,Q)}}),$}var LZ6,jZ6,ub$;var db$=B(()=>{Oz0();C8();K61();Hz0();M61();E61();bb$();hb$();Z_();Pz0();LZ6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;jZ6=Dh.object({set:Dh.record(Dh.string(),Dh.unknown()).optional(),delete:Dh.array(Dh.string()).optional()}).refine(($)=>Object.keys($.set??{}).length>0||($.delete?.length??0)>0,{message:"Patch must set or delete at least one block"}),ub$=Kz0(async($,Z)=>{let X=$.var.studioContext,Q=X.organization;if(!Q)return $.json({error:"Organization scope required"},500);let Y=$.req.param("virtualMcpId"),G=$.req.param("branch");if(!Y||!G)return $.json({error:"virtualMcpId and branch are required"},400);if(!EZ6(G))return $.json({error:`Invalid branch name: ${G}`},400);let J=X.auth?.user?.id??null;if(!J){let O=$.req.query("token");if(!($.req.method==="GET"&&!$.req.path.match(/\/(publish|status)$/)))return $.json({error:"Unauthorized"},401);if(!O||!gb$(O,{organizationId:Q.id,virtualMcpId:Y,branch:G}))return $.json({error:"Unauthorized"},401)}let W=await X.storage.virtualMcps.findById(Y);if(!W||W.organization_id!==Q.id)return $.json({error:"Virtual MCP not found"},404);let K=W.metadata??null;if(!Nz0(K)||K?.fastPreview!==!0)return $.json({error:"Fast Preview is not enabled for this project"},404);let N=W.connections?.map((O)=>O.connection_id)??[],F=Br(K,N);if(!F)return $.json({error:"Project has no GitHub repository"},404);let U=K?.runtime;return $.set("decofileScope",{organizationId:Q.id,virtualMcpId:Y,branch:G,packagePath:U?.path?.replace(/^\/+|\/+$/g,"")||null,githubRepo:F,userId:J}),Z()})});var mb$=($)=>{let Z=new U1;if(Z.use("*",iC),Z.route("/",Ij0()),Z.route("/",FC$()),Z.route("/",wf$()),Z.route("/",Ff$()),Z.route("/",Gz0()),Z.route("/tools",Pf$()),Z.route("/",Ef$()),Z.route("/",pv$({kvStorage:$.kvStorage})),Z.route("/",iv$()),Z.route("/fs",Yf$({getConnection:$.getNatsConnection})),Z.route("/sandbox",_b$()),Z.route("/decofile",lb$()),Z.route("/",Kf$()),Z.route("/deco-sites",Mj0()),Z.route("/sso",jj0()),Z.route("/",Jz0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",QC$()),$.mountDevAssets)Z.route("/dev-assets",kj0({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("/",tk$()),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",Jf$()),Z.route("/mcp",cw0()),Z.route("/mcp/self",Yz0()),Z.route("/mcp",mw0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var ib$=B(()=>{C8();S81();YC$();f81();Sj0();bo();M81();nv$();tv$();Gf$();tn();j81();iw0();Z61();Wf$();Hf$();Uf$();Bf$();jf$();Q61();Af$();Y61();lw0();vb$();db$()});function PZ6($){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 AZ6($,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(zZ6)});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 zZ6=1e4,TZ6=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},nb$=()=>{let $=new U1;return $.use("*",TZ6),$.get("/",async(Z)=>{let X=y0(),Q=X.decoSupabaseUrl,Y=X.decoSupabaseServiceKey;if(!Q||!Y)return Z.json({apps:[]});try{let G=await AZ6(Q,Y);return Z.json({apps:PZ6(G)})}catch(G){return console.error("[deco-apps] GET error:",G),Z.json({error:"Failed to fetch apps"},502)}}),$};var pb$=B(()=>{C8();M$()});import{z as M1}from"zod";function lK($,Z="invalid_request_error",X=null,Q=null){return{error:{message:$,type:Z,param:X,code:Q}}}function vZ6($){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 fZ6($,Z,X){try{return JSON.parse($)}catch{throw new rb$(`Invalid JSON in tool call arguments for function '${X}' (tool_call_id: ${Z}): ${$}`)}}function bZ6($){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:fZ6(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 xZ6($){let Z=$.map((X)=>{let Q=X.function.parameters?MY(X.function.parameters):MY({type:"object",properties:{}});return[X.function.name,f$({description:X.function.description,inputSchema:Q})]});return Object.fromEntries(Z)}function yZ6($){if(!$)return;return{openai:{response_format:$}}}function gZ6(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function tb$($,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 ob$($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var RZ6=256,IZ6,qZ6,MZ6,kZ6,SZ6,VZ6,CZ6,_Z6,rb$,ab$,sb$;var eb$=B(()=>{C4();C8();Hh();hN();IZ6=M1.object({type:M1.literal("function"),function:M1.object({name:M1.string(),description:M1.string().optional(),parameters:M1.record(M1.string(),M1.unknown()).optional()})}),qZ6=M1.object({id:M1.string(),type:M1.literal("function"),function:M1.object({name:M1.string(),arguments:M1.string()})}),MZ6=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(qZ6).optional()}),M1.object({role:M1.literal("tool"),content:M1.string(),tool_call_id:M1.string()})]),kZ6=M1.object({type:M1.literal("text")}),SZ6=M1.object({type:M1.literal("json_object")}),VZ6=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()})}),CZ6=M1.union([kZ6,SZ6,VZ6]),_Z6=M1.object({model:M1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:M1.array(MZ6),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(IZ6).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:CZ6.optional(),user:M1.string().optional()});rb$=class rb$ extends Error{constructor($){super($);this.name="MessageConversionError"}};ab$=new U1;ab$.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),X=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(lK("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(lK("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(lK("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Q=await $.req.json(),Y=_Z6.safeParse(Q);if(!Y.success){let L=Y.error.issues[0]??{message:"Invalid request",path:[]};return $.json(lK(`Invalid request: ${L.message}`,"invalid_request_error",L.path.length>0?L.path.join("."):null),400)}let G=Y.data,J=vZ6(G.model);if(!J)return $.json(lK("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)=>UD(j.providerId));if(!E)return $.json(lK("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(lK(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let N=H.aiSdk.languageModel(K),F=bZ6(G.messages),U=G.tools?xZ6(G.tools):void 0,O=yZ6(G.response_format),w=gZ6(),D=Math.floor(Date.now()/1000);if(G.stream)return JF($,async(L)=>{let E=tb$(N,F,U,G,O,$.req.raw.signal);try{let j=MO(E),z=!1,A=0,P="",q=async()=>{if(P.length===0)return;let S=P;P="",await L.writeSSE({data:JSON.stringify({id:w,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{content:S},finish_reason:null}]})})};for await(let S of j.fullStream){if(!z&&(S.type==="text-delta"||S.type==="tool-call"))await L.writeSSE({data:JSON.stringify({id:w,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),z=!0;if(S.type==="text-delta"){if(P+=S.text,P.length>=RZ6)await q()}else if(S.type==="tool-call"){await q();let M=A++;await L.writeSSE({data:JSON.stringify({id:w,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{tool_calls:[{index:M,id:S.toolCallId,type:"function",function:{name:S.toolName,arguments:JSON.stringify(S.input)}}]},finish_reason:null}]})})}else if(S.type==="finish")await q(),await L.writeSSE({data:JSON.stringify({id:w,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{},finish_reason:ob$(S.finishReason)}],usage:S.totalUsage?{prompt_tokens:S.totalUsage.inputTokens??0,completion_tokens:S.totalUsage.outputTokens??0,total_tokens:S.totalUsage.totalTokens??0}:void 0})})}await q(),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=tb$(N,F,U,G,O,$.req.raw.signal),E=await IO(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:w,object:"chat.completion",created:D,model:G.model,choices:[{index:0,message:j,finish_reason:ob$(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(lK("Request aborted","invalid_request_error"),400);if(Y.name==="MessageConversionError")return $.json(lK(Y.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",Y.message,Y.stack),$.json(lK(Y.message,"server_error"),500)}});sb$=ab$});var Zx$;var $x$=B(()=>{Zx$={name:"decocms",version:"4.212.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 cZ6(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??uZ6}}var Xx$,uZ6="https://ph.studio.decocms.com",Qx$;var Yx$=B(()=>{C8();py0();gV();PZ();M$();w81();$x$();Xx$=new U1;Xx$.get("/",($)=>{let Z={version:Zx$.version,theme:Mc1(),...XL().logo&&{logo:XL().logo},...wK()&&{internalUrl:Xk1()},...y0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!y0().firecrawlApiKey,auth:PV$(),posthog:cZ6(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:!wK()&&y0().sandboxProviderKind==="agent-sandbox"}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});Qx$=Xx$});function Lh($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function C61($){return(Lh($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((X)=>X.charAt(0).toUpperCase()+X.slice(1)).join(" ")}function Jx$($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(Lh($))}&sz=${Z}`}function Gx$($,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 Wx$($){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()?Gx$(`${Y.trim().replace(/\s+/g," ")} \u2014 ${J}`,200):Gx$(`How does ${X} really perform? ${J}`,200);return{title:G,description:W}}import{z as c0}from"zod";var G_,lZ6,dZ6,mZ6,iZ6,Kx$;var Hx$=B(()=>{G_=c0.enum(["good","bad","neutral"]),lZ6=c0.preprocess(($)=>{if(Array.isArray($))return{kind:"text",value:$.find((X)=>X!==null&&typeof X!=="object")??""};return $!==null&&typeof $==="object"?$:{kind:"text",value:$}},c0.object({kind:c0.enum(["text","number","sparkline","badge","score"]).catch("text"),value:c0.coerce.string().optional(),tone:G_.optional(),muted:c0.boolean().optional(),delta:c0.coerce.string().optional(),deltaDir:c0.enum(["up","down","neutral"]).optional(),points:c0.array(c0.coerce.number()).optional(),label:c0.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 $})),dZ6=c0.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},c0.array(lZ6)),mZ6={key:c0.coerce.string(),title:c0.coerce.string(),eyebrow:c0.coerce.string().optional(),headline:c0.coerce.string(),annotation:c0.coerce.string().optional(),methodology:c0.coerce.string().optional(),sources:c0.array(c0.object({name:c0.coerce.string(),logoUrl:c0.coerce.string()})).optional()},iZ6=c0.discriminatedUnion("template",[c0.object({template:c0.literal("cover"),score:c0.object({value:c0.coerce.number(),max:c0.coerce.number().optional(),grade:c0.coerce.string().optional(),label:c0.coerce.string().optional()}).optional(),brandImage:c0.coerce.string().optional(),screenshot:c0.coerce.string().optional(),mobileScreenshot:c0.coerce.string().optional()}),c0.object({template:c0.literal("cta"),ctaUrl:c0.coerce.string().optional(),ctaLabel:c0.coerce.string().optional(),bullets:c0.array(c0.coerce.string()).optional()}),c0.object({template:c0.literal("series"),points:c0.array(c0.coerce.number()).min(2),xLabels:c0.array(c0.coerce.string()).min(1),unit:c0.coerce.string().optional(),callout:c0.object({index:c0.coerce.number(),value:c0.coerce.string(),tone:G_.optional()})}),c0.object({template:c0.literal("threshold"),value:c0.coerce.string().default(""),metricLabel:c0.coerce.string().optional(),ratio:c0.coerce.number(),thresholdRatio:c0.coerce.number().optional(),thresholdLabel:c0.coerce.string().default(""),tone:G_.optional()}),c0.object({template:c0.literal("stats"),stats:c0.array(c0.object({value:c0.coerce.string(),label:c0.coerce.string(),tone:G_.optional()})).min(1)}),c0.object({template:c0.literal("bars"),items:c0.array(c0.object({value:c0.coerce.string(),label:c0.coerce.string(),ratio:c0.coerce.number(),tone:G_.optional()})).min(1)}),c0.object({template:c0.literal("gauges"),gauges:c0.array(c0.object({label:c0.coerce.string(),value:c0.coerce.string(),status:c0.enum(["good","warn","bad"]).catch("warn"),caption:c0.coerce.string().optional(),ratio:c0.coerce.number().optional()})).min(1)}),c0.object({template:c0.literal("checklist"),checks:c0.array(c0.object({label:c0.coerce.string(),status:c0.enum(["pass","fail","warn"]).catch("fail"),value:c0.coerce.string().optional()})).min(1)}),c0.object({template:c0.literal("table"),columns:c0.array(c0.object({label:c0.coerce.string(),align:c0.enum(["left","right"]).optional()})).min(1),rows:c0.array(dZ6).min(1),highlightRow:c0.coerce.number().optional()}),c0.object({template:c0.literal("products"),products:c0.array(c0.object({name:c0.coerce.string(),price:c0.coerce.string().optional(),image:c0.coerce.string().optional(),url:c0.coerce.string().optional()})).min(1)}),c0.object({template:c0.literal("list"),entries:c0.array(c0.object({label:c0.coerce.string(),severity:c0.enum(["error","warning","notice"]).catch("notice")})).min(1),moreCount:c0.coerce.number().optional()}),c0.object({template:c0.literal("keywords"),volumeLabel:c0.coerce.string().optional(),keywords:c0.array(c0.object({term:c0.coerce.string(),volume:c0.coerce.string(),position:c0.coerce.number().catch(0)})).min(1)}),c0.object({template:c0.literal("competitor"),metricLabel:c0.coerce.string().optional(),competitors:c0.array(c0.object({name:c0.coerce.string(),value:c0.coerce.string(),tone:G_.optional(),isYou:c0.boolean().optional()})).min(1)}),c0.object({template:c0.literal("scorecard"),rivalLabel:c0.coerce.string().optional(),dimensions:c0.array(c0.object({label:c0.coerce.string(),you:c0.coerce.string(),rival:c0.coerce.string().optional(),rivalName:c0.coerce.string().optional(),tone:G_.optional()})).min(1)})]),Kx$=c0.object({...mZ6,template:iZ6})});function Vz0($){let Z=[],X=[...$.sections].sort((Y,G)=>Y.position-G.position).map((Y)=>{let G=Kx$.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 _61=B(()=>{Hx$()});import{join as Nx$}from"path";async function pZ6($){try{let Z=await fetch(`${gW({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(nZ6)});if(!Z.ok)return null;let X=await Z.json(),{deck:Q}=Vz0(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()||C61($),score:Q.meta.scores?.cover??J?.score?.value,verdict:Y?.annotation?.trim()||Y?.headline?.trim()||void 0}}catch{return null}}function oY($){return $.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;")}function tZ6($,Z){let X=Lh($),Q=Z?.brand?.trim()||C61(X),Y=Jx$(X,128),J=`${(y0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(X)}`,{title:W,description:K}=Wx$({brand:Q,domain:X,score:Z?.score,verdict:Z?.verdict}),H=`${J}/og.png`,N=`${Q} commerce report by decocms`;return[`<title>${oY(W)}</title>`,`<meta name="description" content="${oY(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="${oY(W)}" />`,`<meta property="og:description" content="${oY(K)}" />`,`<meta property="og:url" content="${oY(J)}" />`,`<meta property="og:image" content="${oY(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${oY(N)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${oY(W)}" />`,`<meta name="twitter:description" content="${oY(K)}" />`,`<meta name="twitter:image" content="${oY(H)}" />`,`<meta name="twitter:image:alt" content="${oY(N)}" />`,`<link rel="canonical" href="${oY(J)}" />`,`<link rel="icon" href="${oY(Y)}" sizes="any" />`].join(`
2739
2739
  `)}function oZ6($,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}
2740
2740
  </head>`)}function Fx$($){let Z=new U1;return Z.get("/:domain/og.png",async(X)=>{let Q=Lh(X.req.param("domain")),Y=async()=>{let G=$?Bun.file(Nx$($,"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(`${gW({})}/api/v2/public/diagnostics/${encodeURIComponent(Q)}/og.png`,{signal:AbortSignal.timeout(rZ6)}),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=$?Nx$($,"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 pZ6(Lh(Q)),K=tZ6(Q,W);return X.html(oZ6(J,K),200,{"Cache-Control":"public, max-age=0, s-maxage=300"})}catch{return X.html(J)}}),Z}var nZ6=2500,rZ6=1e4;var Ux$=B(()=>{C8();_61();DL();M$()});function Lr($,Z){return fetch(`${gW({})}${$}`,Z)}async function aZ6($,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 Lr(`/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}=Vz0(J);return{status:W.slides.length?"ready":"empty",deck:W,scanned_at:J.scanned_at,drops:K}}var sZ6,KF,Ox$=async($,Z)=>{if(!$.get("reportUser"))return $.json({error:"Authentication required"},401);await Z();return},wx$;var Bx$=B(()=>{C8();VG();DL();_61();sZ6=new Set(["complete","errored","terminated","unknown"]),KF=new U1;KF.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});KF.use("/link-token/*",Ox$);KF.use("/suggest",Ox$);KF.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 aZ6(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)}});KF.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 Lr("/api/v2/diagnostics/run",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${BL({})}`},body:JSON.stringify({url:Q,...Y?{email:Y}:{},distinct_id:G})});if(!J.ok)return $.json({error:`run HTTP ${J.status}`},502);let W=await J.json(),K=W.blocked?{state:"blocked"}:W.status==="fresh"?{state:"fresh"}:W.mode==="sync"?{state:"sync"}:{state:"running",id:W.id??null};return $.json(K)}catch{return $.json({error:"run failed"},502)}});KF.get("/status",async($)=>{let Z=$.req.query("id");if(!Z)return $.json({error:"id is required"},400);try{let X=await Lr(`/api/v2/diagnostics/status?id=${encodeURIComponent(Z)}`,{headers:{Authorization:`Bearer ${BL({})}`}});if(!X.ok)return $.json({error:`status HTTP ${X.status}`},502);let Y=(await X.json()).status??"unknown",G={done:sZ6.has(Y),status:Y};return $.json(G)}catch{return $.json({error:"status failed"},502)}});KF.get("/link-token/:id",async($)=>{let Z=$.req.param("id");try{let X=await Lr(`/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)}});KF.get("/suggest",async($)=>{let Z=($.req.query("q")??"").trim().slice(0,64);if(Z.length<2)return $.json({suggestions:[]});try{let X=await Lr(`/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:[]})}});wx$=KF});import{createHmac as eZ6,timingSafeEqual as $76}from"crypto";function Lx$($,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)>Z76)return!1;let W=eZ6("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&&$76(K,N)})}function Ex$($){let Z;try{Z=JSON.parse($)}catch{return null}let X=NJ(Z),Q=NJ(NJ(X?.data)?.object);if(!X||typeof X.type!=="string"||!Q)return null;return{id:dK(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 jx$($){switch($){case"active":case"trialing":return"active";case"past_due":return"past_due";default:return"canceled"}}function dK($){return typeof $==="string"?$:void 0}function NJ($){return typeof $==="object"&&$!==null?$:void 0}function Cz0($){return typeof $==="number"?new Date($*1000):null}function b61($){return dK($)??dK(NJ($)?.id)}function X76($){return b61($.subscription)??dK(NJ(NJ($.parent)?.subscription_details)?.subscription)}function Q76($){let Z=Cz0($.current_period_end);if(Z)return Z;let X=NJ($.items)?.data;if(!Array.isArray(X))return null;let Q=0;for(let Y of X){let G=NJ(Y)?.current_period_end;if(typeof G==="number"&&G>Q)Q=G}return Q>0?new Date(Q*1000):null}function v61($,Z){let X=Cz0($.created);return!!X&&!!Z.lastStripeEventAt&&X<Z.lastStripeEventAt}function f61($,Z){let X=Cz0($.created);if(!X)return;return Z.lastStripeEventAt&&Z.lastStripeEventAt>X?void 0:X}async function Y76($,Z){let X=Z.data.object;switch(Z.type){case"checkout.session.completed":case"checkout.session.async_payment_succeeded":{let Q=dK(NJ(X.metadata)?.orgId);if(!Q)return{handled:!1,reason:"no orgId"};if(dK(NJ(X.metadata)?.kind)==="topup"){if(X.mode!=="payment")return{handled:!1,reason:"topup with wrong mode"};if(dK(X.payment_status)!=="paid")return{handled:!1,reason:"payment not confirmed"};let J=dK(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(NJ(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:NJ(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(dK(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=b61(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(v61(Z,Y))return{handled:!1,reason:"stale event"};return await $.updateStripeState(Q,{stripeCustomerId:b61(X.customer),stripeSubscriptionId:G,status:"active",lastStripeEventAt:f61(Z,Y)}),{handled:!0,organizationId:Q}}case"customer.subscription.updated":case"customer.subscription.deleted":{let Q=dK(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&&v61(Z,Y))return{handled:!1,reason:"stale event"};let J=G?"canceled":jx$(X.status);return await $.updateStripeState(Y.organizationId,{status:J,currentPeriodEnd:Q76(X),...G&&{stripeSubscriptionId:null},lastStripeEventAt:f61(Z,Y)}),{handled:!0,organizationId:Y.organizationId}}case"invoice.paid":{let Q=X76(X);if(!Q)return{handled:!1,reason:"no sub id"};let Y=await $.getBillingByStripeSubscriptionId(Q);if(!Y)return{handled:!1,reason:"unknown subscription"};if(v61(Z,Y))return{handled:!1,reason:"stale event"};return await $.updateStripeState(Y.organizationId,{status:"active",currentPeriodEnd:Cz0(X.period_end),lastStripeEventAt:f61(Z,Y)}),{handled:!0,organizationId:Y.organizationId}}default:return{handled:!1,reason:`unhandled event ${Z.type}`}}}function G76($,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:jx$(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 Dx$($,Z){let X=G76($,Z);if(!X)return;EY({event:X.name,organizationId:X.organizationId,...$.id?{uuid:bd1(`stripe:${$.id}:${X.name}`)}:{},...$.created?{timestamp:new Date($.created*1000)}:{},properties:X.properties})}async function zx$($){let Z=new fW(m8().db),X=await Y76(Z,$);if(!(X.handled&&X.topUp))Dx$($,X);if(X.handled&&X.topUp)await eU$({organizationId:X.organizationId,amountCents:X.topUp.creditCents,referenceId:X.topUp.referenceId}),Dx$($,X);if(!X.handled&&X.orphanSubscriptionId)try{await ro1(X.orphanSubscriptionId),console.error("stripe webhook: canceled orphan subscription",{subscriptionId:X.orphanSubscriptionId,eventId:$.id})}catch(Q){if(!(Q instanceof K3&&(Q.status===400||Q.status===404)))throw Q}return X}var Z76=300;var Px$=B(()=>{RG();I4();j40();sm();Wa0()});var J76=1048576,x61;var Ax$=B(()=>{C8();aw();M$();Px$();x61=new U1;x61.post("/webhook",FZ({maxSize:J76,onError:($)=>$.json({error:"payload too large"},413)}),async($)=>{let Z=y0().stripeWebhookSecret;if(!Z)return $.json({error:"stripe billing not configured"},503);let X=await $.req.text();if(!Lx$(X,$.req.header("stripe-signature"),Z))return $.json({error:"invalid signature"},400);let Y=Ex$(X);if(!Y)return $.json({error:"invalid payload"},400);let G=await zx$(Y);return console.log("stripe webhook",{eventId:Y.id,type:Y.type,livemode:Y.livemode,...G}),$.json({received:!0})})});import{timingSafeEqual as W76}from"crypto";function H76($,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 W76(Buffer.from(Y),Buffer.from(Q))}var K76=5242880,y61;var Tx$=B(()=>{C8();aw();ai();y61=new U1;y61.post("/webhook",FZ({maxSize:K76,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(!H76(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 fm0())?.markTenantPoolsDirty(G,Y)??[];return $.json({ok:!0,pools:W})})});function Rx$($,Z){if(Z.startsWith("text/html")||Z.startsWith("image/svg"))$.set("Content-Security-Policy","sandbox allow-scripts allow-modals allow-same-origin")}var Ix$,N76,F76,qx$;var Mx$=B(()=>{C8();sJ();nx();nb();Ix$=new U1,N76=["range","if-none-match","if-modified-since"],F76=["content-type","content-length","content-range","accept-ranges","etag","last-modified"];Ix$.get("/:org/files/*",async($)=>{let Z=$.get("studioContext"),X=Z.organization?.id;if(!Z.auth?.user?.id){if(mg($))return $.redirect(`/login?next=${encodeURIComponent($.req.path)}`,302);throw new e1(401,{message:"Authentication required"})}if(!X)throw new e1(401,{message:"Organization context required"});let Q=$.req.path.replace(/^.*\/files\//,"");if(!Q)throw new e1(400,{message:"Missing file key"});let Y=await kn(Q,Z);if(!Y)throw new e1(503,{message:"Object storage not configured"});if(Y.startsWith("data:")&&Q3()){let K=Y.match(/^data:([^;]+);base64,(.+)$/s);if(!K)throw new e1(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 Rx$(U,H),new Response(F,{status:200,headers:U})}let G=new Headers;for(let K of N76){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 e1(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 e1(502,{message:"Upstream storage error"});let W=new Headers;for(let K of F76){let H=J.headers.get(K);if(H)W.set(K,H)}return W.set("Cache-Control","private, max-age=86400"),Rx$(W,W.get("content-type")??""),new Response(J.body,{status:J.status,headers:W})});qx$=Ix$});var Er=C((J_)=>{var U76=J_&&J_.__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]}),O76=J_&&J_.__exportStar||function($,Z){for(var X in $)if(X!=="default"&&!Object.prototype.hasOwnProperty.call(Z,X))U76(Z,$,X)};Object.defineProperty(J_,"__esModule",{value:!0});O76(QY(),J_)});var Vx$=C((kx$)=>{Object.defineProperty(kx$,"__esModule",{value:!0});kx$.version=void 0;kx$.version="3.4.0"});var vx$=C((mK)=>{var w76=mK&&mK.__importDefault||function($){return $&&$.__esModule?$:{default:$}};Object.defineProperty(mK,"__esModule",{value:!0});mK.NodeTransport=mK.VERSION=void 0;mK.nodeResolveHost=z76;var n6=Er(),B76=z0("net"),g61=z0("tls"),D76=z0("path"),Cx$=z0("fs"),L76=w76(z0("dns")),E76=Vx$();mK.VERSION=E76.version;var j76="nats.js";class _x${socket;version;lang;yields=[];signal=(0,n6.deferred)();closedNotification=(0,n6.deferred)();options;connected=!1;tlsName="";done=!1;closeError;constructor(){this.lang=j76,this.version=mK.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,n6.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 n6.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 n6.errors.ConnectionError("error connecting - node provided an undefined error");let{code:J}=G,W=J==="ECONNREFUSED"?new n6.errors.ConnectionError("connection refused",{cause:G}):G;throw this.socket?.destroy(),W}}dial($){let Z=(0,n6.deferred)(),X,Q=(0,B76.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,n6.deferred)(),Z;return this.socket.on("data",(X)=>{this.yields.push(X);let Q=n6.DataBuffer.concat(...this.yields),Y=(0,n6.extractProtocolMessage)(Q);if(Y!=="")try{let G=n6.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,n6.deferred)();try{if($=(0,D76.resolve)($),!(0,Cx$.existsSync)($))Z.reject(Error(`${$} doesn't exist`));(0,Cx$.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,n6.extend)(X,this.options.tls,Y)}catch(Y){return Promise.reject(new n6.errors.ConnectionError(Y.message,{cause:Y}))}let Q=(0,n6.deferred)();try{let Y=(0,g61.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 n6.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,n6.extend)(Z,this.options.tls,Q)}catch(Q){return Promise.reject(new n6.errors.ConnectionError(Q.message,{cause:Q}))}let X=(0,n6.deferred)();try{let Q=(0,g61.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 n6.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,n6.render)($[Z])}`);yield $[Z]}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,n6.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 g61.TLSSocket}_send($){if(this.isClosed||this.socket===void 0)return Promise.resolve();if(this.options.debug)console.info(`< ${(0,n6.render)($)}`);let Z=(0,n6.deferred)();try{this.socket.write($,(X)=>{if(X){if(this.options.debug)console.error(`!!! ${(0,n6.render)($)}: ${X}`);return Z.reject(X)}return Z.resolve()})}catch(X){if(this.options.debug)console.error(`!!! ${(0,n6.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}}mK.NodeTransport=_x$;function z76($){let Z=(0,n6.deferred)();return L76.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 gx$=C((yx$)=>{Object.defineProperty(yx$,"__esModule",{value:!0});yx$.connect=P76;var fx$=vx$(),bx$=Er(),xx$=Er();function P76($={}){if((0,xx$.hasWsProtocol)($))return Promise.reject(xx$.errors.InvalidArgumentError.format("servers","node client doesn't support websockets, use the 'wsconnect' function instead"));return(0,bx$.setTransportFactory)({factory:()=>{return new fx$.NodeTransport},dnsResolveFn:fx$.nodeResolveHost}),bx$.NatsConnectionImpl.connect($)}});var hx$=C((HF)=>{var T76=HF&&HF.__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]}),R76=HF&&HF.__exportStar||function($,Z){for(var X in $)if(X!=="default"&&!Object.prototype.hasOwnProperty.call(Z,X))T76(Z,$,X)};Object.defineProperty(HF,"__esModule",{value:!0});HF.connect=void 0;var I76=gx$();Object.defineProperty(HF,"connect",{enumerable:!0,get:function(){return I76.connect}});R76(Er(),HF)});function dx$($){let Z=$?.connectFn??S76,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 O of U.status())if(O.type==="disconnect")console.log("[NatsProvider] Disconnected"),J=!0;else if(O.type==="reconnect")console.log("[NatsProvider] Reconnected, re-firing ready callbacks"),J=!1,Q=null,H()})().catch(()=>{})}async function F(U,O){let w=0;while(!G)try{X=await Z({servers:U,timeout:k76,reconnect:!0,maxReconnectAttempts:-1,...O?{authenticator:O}:{}}),console.log(`[NatsProvider] Connected to ${X.getServer()} after ${w} attempt(s)`),Q=null,J=!1,N(X),H();return}catch{w++;let D=cZ(M76,q76,w-1,2,0.5);await C$(D)}}return{init(U,O){if(Y)return;Y=!0,G=!1;let w=O?.creds?ux$.credsAuthenticator(new TextEncoder().encode(O.creds)):void 0;F(U,w).catch(()=>{})},isConnected(){return K()},getConnection(){return K()?X:null},getJetStream(){if(!K())return null;if(!Q)Q=lx$.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 S76($){return cx$.connect($)}var ux$,cx$,lx$,q76=100,M76=3000,k76=3000;var mx$=B(()=>{$6();ux$=k(lh(),1),cx$=k(hx$(),1),lx$=k(zB(),1)});function h61($,Z){return`${$}.${Z}`}class u61{cache;constructor($){this.cache=_g({ttlMs:$?.ttlMs??V76,maxSize:$?.maxSize??C76})}async get($,Z){return this.cache.get(h61($,Z))??null}async set($,Z,X){this.cache.set(h61($,Z),X)}async invalidate($,Z){this.cache.delete(h61($,Z))}teardown(){this.cache.clear()}}var V76=600000,C76=5000;var ix$=()=>{};function _z0($,Z){return`${$}:${Z}`}function c61($){let Z=_g({ttlMs:$?.ttlMs??_76,maxSize:$?.maxSize??v76}),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(nx$,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(_z0(K,H))},set(K,H,N){Z.set(_z0(K,H),N)},invalidate(K,H){Z.delete(_z0(K,H)),W(K,H)},start(){if(J)return;let K=X?.();if(!K)return;J=K.subscribe(nx$),(async()=>{for await(let H of J)try{let N=JSON.parse(G.decode(H.data));if(N.originId===Q)continue;Z.delete(_z0(N.organizationId,N.keyId))}catch{}})().catch(console.error)},teardown(){J?.unsubscribe(),J=null,Z.clear()}}}var nx$="studio.ai-provider-keys.invalidate",_76=30000,v76=5000;var px$=()=>{};class l61{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=tx$.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 tx$)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 tx$;var ox$=B(()=>{tx$=["studio.decopilot.cancel","mesh.decopilot.cancel"]});var rx$=($)=>{let Z;return()=>Z??=$()},d61,m61;var ax$=B(()=>{v6();d61=rx$(()=>k$.createHistogram("decopilot.stream.encode_ms",{description:"Per-chunk JSON.stringify+encode time for decopilot stream",unit:"ms"})),m61=rx$(()=>k$.createCounter("decopilot.stream.published_chunks",{description:"Logical decopilot stream chunks published to JetStream",unit:"{chunks}"}))});function u76(){return{name:MN,subjects:[`${Yw0}.>`],storage:o3.StorageType.File,max_age:x76,max_bytes:g76,max_msgs_per_subject:h76,discard:o3.DiscardPolicy.Old,retention:o3.RetentionPolicy.Limits,duplicate_window:y76,num_replicas:1}}class $y${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 sx$($){let Z=ex$.headers();for(let[X,Q]of Object.entries($))Z.set(X,Q);return Z}function m76($,Z){let X=0;return{publish(Q,Y,G,J){Q.publish(Y,G,J?{headers:J}:void 0).catch((W)=>{if(X++,b76().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 i76($){if(!($ instanceof Error))return!1;if($.name==="TimeoutError")return!0;return/timeout|no responders|503/i.test($.message)}class i61{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=u76(),X=await lZ(async()=>{let Q=this.options.getJetStreamManager?await this.options.getJetStreamManager():await o3.jetstreamManager($);try{await Q.streams.info(MN),await Q.streams.update(MN,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(MN),await Q.streams.add(Z);else throw Y}return Q},{maxAttempts:5,minTimeout:250,maxTimeout:4000,jitter:0.5,isRetriable:i76});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=m76(Z,Q),J=!1,W=()=>{if(J)return;J=!0;let H=vW$(Z);Y.publish(H.subject,H.data).catch(()=>{})};X.addEventListener("abort",W,{once:!0});let K=(H)=>{let N=performance.now(),F=Yp0(H,{runId:Z}),U=performance.now()-N;if(d61().record(U),m61().add(1,{"org.id":Q??"unknown"}),d76?.record(U,F.reduce((O,w)=>O+w.data.length,0)),F.length===0){console.warn(`[Decopilot] dropping oversized stream chunk for thread ${Z}`);return}for(let O of F)G.publish(Y,O.subject,O.data,O.headers?sx$(O.headers):void 0)};return(async()=>{let H=$.getReader(),N=0,F=0,U;try{while(!0){let{done:O,value:w}=await H.read();if(O)break;if(K(w),F++,++N>=64)N=0,await new Promise((D)=>setImmediate(D))}}catch(O){U=O,console.warn(`[Decopilot] stream pump error for thread ${Z}:`,O?.message??O)}finally{if(H.releaseLock(),W(),l76)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=Yp0(Z,{runId:$,dedup:X});if(d61().record(performance.now()-Y),m61().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:sx$(J.headers)}:{},...J.msgId?{msgID:J.msgId}:{}});return!0}async publishDone($,Z,X){let Q=this.js;if(!Q)return!1;let Y=_W$({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"?o3.DeliverPolicy.New:o3.DeliverPolicy.All,G=X?.closeOnDone??!1,J=Nw($),W;try{W=await(await Q.consumers.get(MN,{filter_subjects:J,deliver_policy:Y})).consume()}catch(D){return console.warn("[Decopilot] JetStream tail unavailable (non-critical):",D?.message??D),null}let N=Hw0({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(Gw0()).pipeThrough(Jw0()).getReader(),F=!1,U=()=>{if(F)return;F=!0;try{N.releaseLock()}catch{}},O=!1,w=()=>{if(O)return;O=!0,W.stop(),N.cancel().catch(()=>{}),U()};return Z?.addEventListener("abort",w,{once:!0}),new ReadableStream({async pull(D){for(;;){let{done:L,value:E}=await N.read();if(L){w(),D.close();return}let j=E;if(j.kind==="done"){if(G){w(),D.close();return}continue}D.enqueue(j.chunk);return}},cancel(){w()}})}purge($){if(!this.jsm)return;this.jsm.streams.purge(MN,{filter:Nw($)}).catch(()=>{})}teardown(){this.js=null,this.jsm=null}}var o3,ex$,f76=($)=>{let Z;return()=>Z??=$()},b76,x76=86400000000000,y76=120000000000,g76=4294967296,h76=500000,c76,l76,d76;var Zy$=B(()=>{$6();Gp0();Nw0();Ww0();v6();ax$();o3=k(zB(),1),ex$=k(lh(),1),b76=f76(()=>k$.createCounter("decopilot.stream.publish_errors",{description:"Number of JetStream publish failures for decopilot stream chunks",unit:"{errors}"}));c76=process.env.STREAM_ENCODE_TRACE==="1",l76=process.env.DECOPILOT_STREAM_TRACE==="1";d76=c76?new $y$:null});function vz0($,Z,X,Q){if(!Q)return!1;return $.emit(Z,LW(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 Xy$=B(()=>{L8()});class n61{storage;options;timer=null;constructor($,Z={}){this.storage=$;this.options=Z}start(){if(this.timer)return;let $=this.options.intervalMs??300000;this.timer=setInterval(()=>{this.runOnce()},$)}async runOnce(){let $=this.options.staleAfterMs??3600000;try{let Z=await this.storage.sweepAbandoned($);if(Z>0)console.log(`[async-research-sweeper] marked ${Z} stale jobs as abandoned`);return Z}catch(Z){return console.error("[async-research-sweeper] sweep failed",Z),0}}dispose(){if(this.timer)clearInterval(this.timer),this.timer=null}}function s76($){return $ instanceof zQ}function e76($,Z){return Z-$>=r76}class p61{taskBoard;contextFactory;billing;options;timer=null;running=!1;cursor=null;constructor($,Z,X,Q={}){this.taskBoard=$;this.contextFactory=Z;this.billing=X;this.options=Q}start(){if(this.timer)return;let $=this.options.intervalMs??n76;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??t76,X=this.options.itemIntervalMs??p76,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()-kJ$),cp0);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()-a76));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 Mn0(this.taskBoard,Y,Q),await kn0(this.taskBoard,this.billing,Y,Q)}catch(G){console.error(`[task-board-review-sweeper] unhandled-failure reaction for ${X} failed`,G)}}async dispatchDueRetries($){let Z=0,X=await this.taskBoard.listItemsDueForRetry($,new Date);for(let{id:Q,organizationId:Y,attempts:G}of X)try{if(!await this.taskBoard.claimDueRetry(Q,Y,new Date))continue;let J=await this.taskBoard.getById(Q,Y);if(!J||J.status!=="in_progress"||J.assigneeId!==M4)continue;let W=await this.contextFactory(Y,J.assignedBy??J.createdBy);if(!W)continue;await kN(W,J,{runClass:"retry"}),Z++,console.warn(`[task-board-review-sweeper] re-dispatched ${Q} after a failure (attempt ${G})`)}catch(J){if(console.error(`[task-board-review-sweeper] retry dispatch for ${Q} failed`,J),s76(J)){await this.returnToTodo(Q,Y,J instanceof Error?J.message:String(J));continue}await this.taskBoard.scheduleRunRetry(Q,Y,G,new Date(Date.now()+o76)).catch((W)=>console.error(`[task-board-review-sweeper] re-arming ${Q} failed`,W))}return Z}async returnToTodo($,Z,X){try{let Q=await this.taskBoard.getById($,Z);if(!Q||Q.status!=="in_progress")return;let Y=await this.taskBoard.returnToTodoAfterFailure($,Z,Q.updatedBy);if(!Y)return;await this.taskBoard.recordActivity({taskBoardItemId:$,action:"status_changed",actorId:null,data:{from:"in_progress",to:"todo",reason:X}}).catch(()=>{}),j4(Z,Y)}catch(Q){console.error(`[task-board-review-sweeper] returning ${$} to todo failed`,Q)}}async handOffReviewWithoutPr($,Z){let X=await this.taskBoard.listActivity(Z.id,Z.organizationId);if(!e76(IL(X),Date.now()))return;await Gw($,Z,"no pull request is linked to this task \u2014 there is nothing for a "+"reviewer to review")}async reconcileItem($,Z){let X=await this.taskBoard.getById($,Z);if(!X)return!1;if(X.status!=="in_review")return!1;let Q=X.assigneeId===M4;await this.taskBoard.markSwept($,Z);let Y=await this.taskBoard.listPrs($,Z),G=await this.contextFactory(Z,X.assignedBy??X.createdBy);if(!G)return!1;if(Y.length===0){if(Q)await this.handOffReviewWithoutPr(G,X);return!1}if(await mK$(G,X))return!0;if(!Q)return!1;let J=await Promise.all(Y.map(async(W)=>({...W,...await Qy(Z,W)})));if(J.every((W)=>W.state===null))console.warn(`[task-board-review-sweeper] ${$}: no live PR state from GitHub (${J.length} PR(s)) \u2014 proceeding on unknown`);if(!gp0(J))return!1;return await Bw0(G,X),!0}dispose(){if(this.timer)clearInterval(this.timer),this.timer=null}}var n76=60000,p76=300000,t76=50,o76=60000,r76=900000,a76=120000;var Qy$=B(()=>{kZ();Vp0();Fw();ln();v9();H3();lp0();Ow();hn()});import{readdir as $X6,rm as fz0}from"fs/promises";import{join as bz0}from"path";async function xz0($){let Z=new Date;Z.setUTCDate(Z.getUTCDate()-ZX6),Z.setUTCHours(0,0,0,0);let X=0;try{let Q=await W_($);for(let Y of Q)if(/^\d{4}$/.test(Y))X+=await Yy$($,Y,Z);else if(!Y.startsWith(".")){let G=bz0($,Y),J=await W_(G);for(let K of J){if(!/^\d{4}$/.test(K))continue;X+=await Yy$(G,K,Z)}if((await W_(G)).length===0)await fz0(G,{recursive:!0,force:!0})}}catch(Q){console.warn("monitoring retention cleanup failed:",Q)}return X}async function Yy$($,Z,X){let Q=0,Y=bz0($,Z),G=await W_(Y);for(let W of G){if(!/^\d{2}$/.test(W))continue;let K=bz0(Y,W),H=await W_(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 O=bz0(K,F);await fz0(O,{recursive:!0,force:!0}),Q++}}if((await W_(K)).length===0)await fz0(K,{recursive:!0,force:!0})}if((await W_(Y)).length===0)await fz0(Y,{recursive:!0,force:!0});return Q}async function W_($){try{return(await $X6($)).filter((X)=>!X.startsWith("."))}catch{return[]}}var ZX6=30;var t61=()=>{};import{DBOS as o61,SchedulerMode as XX6}from"@dbos-inc/dbos-sdk";async function YX6(){let $=[BJ(),H_(),pK()],Z=0;for(let X of $)try{Z+=await xz0(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 GX6($,Z){await o61.runStep(()=>YX6(),{name:"monitoringRetention"})}function Jy$(){if(Gy$)return;Gy$=!0;let $=o61.registerWorkflow(GX6,{name:"monitoringRetentionWorkflow"});o61.registerScheduled($,{name:"monitoringRetentionWorkflow",crontab:QX6,mode:XX6.ExactlyOncePerIntervalWhenActive})}var QX6="23 4 * * *",Gy$=!1;var Wy$=B(()=>{eQ();t61()});function Ky$($){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 dG.create();Y.auth.user={id:X,role:Q.role},Y.organization={id:Q.orgId,slug:Q.orgSlug,name:Q.orgName};let G=await e$1($.db,Z,Q.role);return Y.boundAuth=s$1({auth:Y.authInstance,headers:new Headers,role:Q.role,permissions:G,userId:X}),Y.access=new sD(X,void 0,Y.boundAuth,Q.role,"self"),Uw(Y,{id:Q.orgId,slug:Q.orgSlug}),Y}}var Hy$=B(()=>{eD();cV()});function JX6(){return{services:[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}],migrationsStatus:"pending",serverUrl:null,logs:[]}}function KX6(){for(let $ of WX6)$()}function Ny$($){let Z=[...r61.logs,$];r61={...r61,logs:Z.length>500?Z.slice(-500):Z},KX6()}function a61(){return HX6}var r61,WX6,HX6=!1;var s61=B(()=>{r61=JX6(),WX6=new Set});import{EventEmitter as NX6}from"events";var e61;var Fy$=B(()=>{s61();e61=new NX6;e61.on("request",($)=>{Ny$($)})});function Uy$(){return async($,Z)=>{let X=Date.now(),Q=$.req.method,Y=$.req.path;if(Y==="/api/auth/get-session"||Y.includes("favicon")){await Z();return}let G="",J=!1;if(Y.startsWith("/mcp")&&Q==="POST"){J=!0;try{if($.req.header("Content-Type")?.includes("application/json")){let U=await $.req.raw.clone().json();if(U.method==="tools/call"&&U.params?.name){let O=Eh(U.params.name),w=U.params.arguments||{},D=Object.keys(w).map((E)=>Eh(E)),L=D.length>0?D.slice(0,3).join(",")+(D.length>3?"\u2026":""):"";G=`${Z5.tool}${O}${Z5.dim}(${L})${Z5.reset}`}else if(U.method)G=`${Z5.dim}${Eh(U.method)}${Z5.reset}`}}catch{}}let W=Eh(Y);if(Y.startsWith("/mcp/conn_")){let N=Y.split("/")[2]??"";W=`/mcp/${Z5.mcp}${Eh(N.slice(0,12))}\u2026${Z5.reset}`}else if(Y==="/mcp")W=`${Z5.mcp}/mcp${Z5.reset}`;else if(Y==="/mcp/registry")W=`${Z5.mcp}/mcp/registry${Z5.reset}`;let K=UX6(Q),H=J?"\u25C0":"\u2190";if(!a61())console.log(`${Z5.dim}${H}${Z5.reset} ${K}${Q}${Z5.reset} ${W}${G?` ${G}`:""}`);try{await Z()}finally{let N=Date.now()-X,F=$.res.status,U=FX6(F),O=N<1000?`${N}ms`:`${(N/1000).toFixed(1)}s`,w=J?"\u25B6":"\u2192";if(!a61())console.log(`${Z5.dim}${w}${Z5.reset} ${K}${Q}${Z5.reset} ${W}${G?` ${G}`:""} ${U}${F}${Z5.reset} ${Z5.duration}${O}${Z5.reset}`);e61.emit("request",{method:Q,path:Eh(Y),status:F,duration:N,timestamp:new Date})}}}var Z5,FX6=($)=>{if($>=500)return Z5.serverError;if($>=400)return Z5.clientError;if($>=300)return Z5.redirect;return Z5.ok},UX6=($)=>{return Z5[$]||Z5.reset},Eh=($)=>{return $.replace(/\r/g,"").replace(/\n/g,"").replace(/\x1b\[[0-9;]*m/g,"").replace(/[\x00-\x1f\x7f-\x9f]/g,"")};var Oy$=B(()=>{s61();Fy$();Z5={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 Ly$}from"crypto";import{mkdir as OX6,readdir as wX6,rm as wy$,stat as Ey$}from"fs/promises";import{join as Z51,relative as BX6}from"path";import{z as E$}from"zod";function zy$($){let Z=$.replace(/[^a-zA-Z0-9_-]/g,"_");return Z51(DX6,Z)}function Py$($){return $.replace(/^\/+/,"").replace(/\.\./g,"")}function $51($,Z){let X=zy$($),Q=Py$(Z);return Z51(X,Q)}function LX6($,Z,X,Q){let Y=y0().encryptionKey||"dev-secret",G=`${$}:${Z}:${X}:${Q}`;return Ly$("sha256",Y).update(G).digest("hex")}function Dy$($,Z,X,Q,Y){let G=Math.floor(Date.now()/1000)+Q,J=LX6(Z,X,G,Y),W=new URL(`/api/dev-assets/${Z}/${Py$(X)}`,$);return W.searchParams.set("expires",G.toString()),W.searchParams.set("signature",J),W.searchParams.set("method",Y),W.toString()}function Ay$($,Z,X){let Q=`${$}:${Z.getTime()}:${X}`;return`"${Ly$("md5","etag").update(Q).digest("hex")}"`}async function Ty$($,Z,X,Q,Y){try{let G=await wX6($,{withFileTypes:!0});for(let J of G){let W=Z51($,J.name),H=BX6(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 Ty$(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 Ey$(W);Y.objects.push({key:H,size:N.size,lastModified:N.mtime.toISOString(),etag:Ay$(W,N.mtime,N.size)})}catch{}}}}catch{}}function Ry$($,Z){let Q=o($).id;return[{name:"LIST_OBJECTS",description:"List objects in the local assets directory with pagination support",inputSchema:E$.object({prefix:E$.string().optional(),maxKeys:E$.number().optional().default(1000),continuationToken:E$.string().optional(),delimiter:E$.string().optional()}),outputSchema:E$.object({objects:E$.array(E$.object({key:E$.string(),size:E$.number(),lastModified:E$.string(),etag:E$.string()})),nextContinuationToken:E$.string().optional(),isTruncated:E$.boolean(),commonPrefixes:E$.array(E$.string()).optional()}),handler:async(Y)=>{let G=Y,J=G.prefix||"",W=G.maxKeys??1000,K=G.delimiter,H=G.continuationToken,N=zy$(Q);await OX6(N,{recursive:!0});let F={objects:[],commonPrefixes:new Set};await Ty$(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 O=F.objects.slice(U,U+W),w=U+W<F.objects.length,D=w?O[O.length-1]?.key:void 0;return{objects:O,isTruncated:w,nextContinuationToken:D,commonPrefixes:Array.from(F.commonPrefixes).sort()}}},{name:"GET_OBJECT_METADATA",description:"Get metadata for a file in the local assets directory",inputSchema:E$.object({key:E$.string()}),outputSchema:E$.object({contentType:E$.string().optional(),contentLength:E$.number(),lastModified:E$.string(),etag:E$.string(),metadata:E$.record(E$.string(),E$.string()).optional()}),handler:async(Y)=>{let G=Y,J=$51(Q,G.key),W=await Ey$(J);return{contentType:x81(G.key),contentLength:W.size,lastModified:W.mtime.toISOString(),etag:Ay$(J,W.mtime,W.size)}}},{name:"GET_PRESIGNED_URL",description:"Generate a presigned URL for downloading a file from local storage",inputSchema:E$.object({key:E$.string(),expiresIn:E$.number().optional()}),outputSchema:E$.object({url:E$.string(),expiresIn:E$.number()}),handler:async(Y)=>{let G=Y,J=G.expiresIn??By$;return{url:Dy$(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:E$.object({key:E$.string(),expiresIn:E$.number().optional(),contentType:E$.string().optional()}),outputSchema:E$.object({url:E$.string(),expiresIn:E$.number()}),handler:async(Y)=>{let G=Y,J=G.expiresIn??By$;return{url:Dy$(Z,Q,G.key,J,"PUT"),expiresIn:J}}},{name:"DELETE_OBJECT",description:"Delete a single file from local storage",inputSchema:E$.object({key:E$.string()}),outputSchema:E$.object({success:E$.boolean(),key:E$.string()}),handler:async(Y)=>{let G=Y,J=$51(Q,G.key);try{return await wy$(J),{success:!0,key:G.key}}catch{return{success:!1,key:G.key}}}},{name:"DELETE_OBJECTS",description:"Delete multiple files from local storage",inputSchema:E$.object({keys:E$.array(E$.string()).max(1000)}),outputSchema:E$.object({deleted:E$.array(E$.string()),errors:E$.array(E$.object({key:E$.string(),message:E$.string()}))}),handler:async(Y)=>{let G=Y,J=[],W=[];return await Promise.all(G.keys.map(async(K)=>{let H=$51(Q,K);try{await wy$(H),J.push(K)}catch(N){W.push({key:K,message:N instanceof Error?N.message:"Unknown error"})}})),{deleted:J,errors:W}}}]}async function X51($,Z,X){let Q=Ry$(Z,X),Y=new RW({name:"dev-assets-mcp",version:"1.0.0"},{capabilities:{tools:{}},jsonSchemaValidator:J5});for(let J of Q){let W="shape"in J.inputSchema?J.inputSchema.shape:E$.object({}).shape,K=J.outputSchema&&"shape"in J.outputSchema?J.outputSchema.shape:E$.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 iX({enableJsonResponse:$.headers.get("Accept")?.includes("application/json")??!1});return await Y.connect(G),oG(Y,G,$,"mcp:dev-assets")}async function Iy$($,Z,X,Q){let G=Ry$(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 DX6="./data/assets",By$=3600,jy$,qy$;var My$=B(()=>{M$();Hy();C8();Ol();nV();MX();Sj0();jy$=new U1;jy$.all("/",async($)=>{let Z=$.get("studioContext"),X=new URL($.req.url),Q=`${X.protocol}//${X.host}`;return X51($.req.raw,Z,Q)});qy$=jy$});var ky$={};N4(ky$,{mountDevRoutes:()=>EX6});function EX6($,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 X51(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 Iy$(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",qy$);let X=new U1;X.use("*",p3({mountPath:"/api/dev-assets"})),X.route("/",kj0({orgFromPath:!1})),$.route("/api/dev-assets",X)}var Sy$=B(()=>{C8();k81();Sj0();My$()});import{sql as jX6}from"kysely";import{randomUUID as Vy$}from"crypto";import{z as zX6}from"zod";async function AX6($){let Z=new Date().toISOString(),X=Vy$(),Q=u4.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:Vy$(),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 jX6`SELECT
2741
2741
  pg_notify('studio_events', ${X}),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "decocms",
3
- "version": "4.212.1",
3
+ "version": "4.212.2",
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-BdpWLlfo.js";import{I as A}from"./input-DEKGGhZK.js";import{L as I}from"./label-DHPULCw0.js";import{S as z,a as J,b as O,c as V,d as $}from"./select-CBpdZ7o2.js";import{T as D}from"./textarea-BArtrh-R.js";import{R as M,T as U,U as W,J as q,W as G,$ as H}from"./index-B-rJMZuF.js";import{s as F}from"./primitives-DV8n3c4N.js";import{u as Q}from"./use-autosave-D4dK2ec9.js";import"./tooltip-DdfsISdl.js";import"./Check-CxaYXpCa.js";import"./ChevronDown-DX-ceh2Z.js";import"./ChevronUp-BBj6JgxI.js";import"./ArrowUp-iH2L4r6n.js";import"./chat-context-Cvs4EbTx.js";import"./tab-id-BnJCohG_.js";import"./dialog-DAc4-g6m.js";import"./X-DQSyj_H1.js";import"./Copy01-CKFmCr1g.js";import"./hooks-qUcRvsMr.js";import"./use-mcp-client-Bxx6fsF6.js";import"./auth-BZX0cE3S.js";import"./decopilot-sse-pool-Dv0V8xQ-.js";import"./backoff-CrEUbyZT.js";import"./delay-CnY5UFtP.js";import"./use-is-desktop-app-BNujXJc_.js";import"./use-virtual-mcp-D7APgG1m.js";import"./use-ai-providers-B3QbnFSg.js";import"./studio-tools-CeODr8rO.js";import"./use-decopilot-events-B83F-TYE.js";import"./use-organization-settings-D5y7ESPS.js";import"./automation-runs-CpPPHaaj.js";import"./agent-icon-Bd04PxdB.js";import"./AlertCircle-WIL6cfet.js";import"./Tool01-B6qpLzw5.js";import"./ArrowLeft-CHHWfkpB.js";import"./Tool02-BDWnkNP4.js";import"./XCircle-DuqbsXc1.js";import"./ArrowUpRight-BygkhTzB.js";import"./TrendUp01-913WGcDw.js";import"./ZapSquare-DT1OZQR4.js";import"./Users03-BZg-2yj1.js";import"./CheckCircle-V1G6vRLw.js";import"./ChevronRight-Dq2fkwrO.js";import"./DotsVertical-rZd6Fptu.js";import"./Stars02-D3JIQ4or.js";import"./CpuChip01-Dq7zKXwa.js";import"./CreditCard01-B9LEr35P.js";import"./Globe01-DfaBbtRd.js";import"./Settings02-UFz5U7L5.js";import"./Eye-OpHiFNhI.js";import"./FilterLines-CNeGl-15.js";import"./Share07-CbEikcMm.js";import"./Star01-B-GU7k_K.js";import"./Globe04-DPgOTzrT.js";import"./SwitchHorizontal01-CajRI1eQ.js";import"./HardDrive-Cm2nFFdL.js";import"./Key01-B88ki6Fp.js";import"./LayoutLeft-D7-SVGH-.js";import"./LinkExternal01-NnMSyAQt.js";import"./LogOut01-BfVuyPyg.js";import"./Monitor01-BLV4EJBH.js";import"./Sun-CzUyl9bG.js";import"./Palette-DR-tCSkP.js";import"./Play-CoNHS2Qn.js";import"./Plus-CFl9yMpW.js";import"./SearchLg-Df6dgRDM.js";import"./SearchMd-BLnTSrvc.js";import"./Shield01-G4YJkuxh.js";import"./Stars01-B5yK5sU3.js";import"./Trash01-uG2e-LVc.js";import"./Upload01-CHLmEpA0.js";import"./User01-N2Km578M.js";import"./Users01-D97rIiW3.js";import"./XClose-BwSfuEMb.js";import"./Zap-VnO6gpQC.js";import"./useInfiniteQuery-Dcs9aui8.js";import"./use-infinite-scroll-BuACpKVm.js";import"./use-connection-CY0u0E5V.js";import"./card-D8IT-uY5.js";import"./sidebar-_WzLC9pk.js";import"./use-mobile-1pXzbrVA.js";import"./table-Cu9EWIa1.js";import"./empty-state-LOiFPHZS.js";import"./use-members-Dj59vSPD.js";import"./use-org-auth-client-sSkN4xfu.js";import"./use-clock-tick-CnrHrJSt.js";import"./use-automations-C22lTAVt.js";import"./useSuspenseInfiniteQuery-ByfsxxEi.js";import"./avatar-ChA3XW15.js";import"./format-time-BnbuEtat.js";import"./differenceInSeconds-NQ4PDo0z.js";import"./use-copy-DnseyEW-.js";import"./monaco-editor-9VUv5hjp.js";import"./spinner-B_dab8ke.js";import"./index-Boo82Stv.js";import"./shell-layout-BUm_6dBQ.js";import"./required-auth-layout-Ddvi1F_9.js";import"./use-org-sso-BgII0BvC.js";import"./integration-icon-BaOIFBaS.js";import"./use-navigate-to-agent-BTlUGafY.js";import"./reusable-new-chat-CouMjkYR.js";import"./AreaChart-CPaAKTzB.js";import"./form-BYL5XAXX.js";import"./file-type-icon-W1ZzTIaT.js";import"./drawer-G48IA4Mc.js";import"./collection-search-BZpNpsyc.js";import"./deco-site-production-url-BjY4ZYd-.js";import"./tabs-DLaFLm1m.js";import"./toggle-group-DNT1HP1y.js";import"./use-deco-credits-DesPz-1R.js";import"./popover-DjWnpEmJ.js";import"./self-tool-result-DFFRnOvl.js";import"./alert-dialog-QC1W-6Pa.js";import"./extract-connection-data-BTqduo0n.js";import"./metadata-dUsYcpuu.js";import"./provision-repo-scoped-github-connection-C2HwF4Ce.js";import"./use-debounced-value-DVV-uvkW.js";import"./authenticate-and-persist-oauth-D_o3ZfG2.js";import"./mcp-oauth-k8WwWmmz.js";import"./track-CssF9gmT.js";import"./toolbar-CdMdEL2o.js";import"./skeleton-lrQT5gcj.js";import"./github-repo-picker-CqnMVe6t.js";import"./use-mcp-tools-B6ezax7-.js";import"./agent-capabilities-cXfbMfjV.js";import"./connection-card-drg1d7hg.js";import"./use-registry-connections-CQQ-BeSn.js";import"./retry-CErkP7V6.js";import"./connection-slug-eyAPH6o3.js";import"./connection-form-helpers-Dkhl5xIg.js";import"./collection-tabs-4dV9B3uE.js";import"./badge-BxXEgJD5.js";import"./use-open-billing-url-BFwsJQGb.js";import"./select-model-CheXfT8K.js";import"./checkbox-DmTCNEX3.js";import"./ai-providers-logos-DD3qZ33J.js";import"./settings-section-DOaNXejx.js";import"./cards-BlZkvfAM.js";import"./dropdown-menu-C-Pcq4IH.js";import"./question-004-sINsf4GQ.js";import"./use-status-sounds-_edoe4rZ.js";import"./use-capability-DTZN9m3p.js";import"./pt-BR-CLy76QW2.js";import"./switch-BCfM0l-1.js";import"./use-debounced-autosave-CON7irHq.js";import"./index-DDeH6C5P.js";import"./search-input-Bhw58eHR.js";import"./index-eXep7bvA.js";import"./use-secrets-CeCSqutU.js";import"./use-tags-DvWOTF3X.js";import"./get-initials-D-f_fDFw.js";import"./command-Cwm0AdDf.js";import"./index-hxBUwYlX.js";import"./use-file-configs-Bit9bppN.js";import"./automation-list-row-Dioka1IJ.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 qr(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{qr as RecordEditor};
@@ -1 +0,0 @@
1
- import{c as pt,b as at,j as r}from"./index-BdpWLlfo.js";import{C as ct}from"./checkbox-DmTCNEX3.js";import{I as rt}from"./input-DEKGGhZK.js";import{L as et}from"./label-DHPULCw0.js";import{d as dt,a as nt,b as ft,c as xt,S as ht}from"./select-CBpdZ7o2.js";import{F as ut,bw as bt,J as yt,bx as jt,by as vt}from"./index-B-rJMZuF.js";import{u as gt}from"./use-autosave-D4dK2ec9.js";import"./Check-CxaYXpCa.js";import"./tooltip-DdfsISdl.js";import"./ChevronDown-DX-ceh2Z.js";import"./ChevronUp-BBj6JgxI.js";import"./ArrowUp-iH2L4r6n.js";import"./chat-context-Cvs4EbTx.js";import"./tab-id-BnJCohG_.js";import"./dialog-DAc4-g6m.js";import"./X-DQSyj_H1.js";import"./Copy01-CKFmCr1g.js";import"./hooks-qUcRvsMr.js";import"./use-mcp-client-Bxx6fsF6.js";import"./auth-BZX0cE3S.js";import"./decopilot-sse-pool-Dv0V8xQ-.js";import"./backoff-CrEUbyZT.js";import"./delay-CnY5UFtP.js";import"./use-is-desktop-app-BNujXJc_.js";import"./use-virtual-mcp-D7APgG1m.js";import"./use-ai-providers-B3QbnFSg.js";import"./studio-tools-CeODr8rO.js";import"./use-decopilot-events-B83F-TYE.js";import"./use-organization-settings-D5y7ESPS.js";import"./automation-runs-CpPPHaaj.js";import"./agent-icon-Bd04PxdB.js";import"./AlertCircle-WIL6cfet.js";import"./Tool01-B6qpLzw5.js";import"./ArrowLeft-CHHWfkpB.js";import"./Tool02-BDWnkNP4.js";import"./XCircle-DuqbsXc1.js";import"./ArrowUpRight-BygkhTzB.js";import"./TrendUp01-913WGcDw.js";import"./ZapSquare-DT1OZQR4.js";import"./Users03-BZg-2yj1.js";import"./CheckCircle-V1G6vRLw.js";import"./ChevronRight-Dq2fkwrO.js";import"./DotsVertical-rZd6Fptu.js";import"./Stars02-D3JIQ4or.js";import"./CpuChip01-Dq7zKXwa.js";import"./CreditCard01-B9LEr35P.js";import"./Globe01-DfaBbtRd.js";import"./Settings02-UFz5U7L5.js";import"./Eye-OpHiFNhI.js";import"./FilterLines-CNeGl-15.js";import"./Share07-CbEikcMm.js";import"./Star01-B-GU7k_K.js";import"./Globe04-DPgOTzrT.js";import"./SwitchHorizontal01-CajRI1eQ.js";import"./HardDrive-Cm2nFFdL.js";import"./Key01-B88ki6Fp.js";import"./LayoutLeft-D7-SVGH-.js";import"./LinkExternal01-NnMSyAQt.js";import"./LogOut01-BfVuyPyg.js";import"./Monitor01-BLV4EJBH.js";import"./Sun-CzUyl9bG.js";import"./Palette-DR-tCSkP.js";import"./Play-CoNHS2Qn.js";import"./Plus-CFl9yMpW.js";import"./SearchLg-Df6dgRDM.js";import"./SearchMd-BLnTSrvc.js";import"./Shield01-G4YJkuxh.js";import"./Stars01-B5yK5sU3.js";import"./Trash01-uG2e-LVc.js";import"./Upload01-CHLmEpA0.js";import"./User01-N2Km578M.js";import"./Users01-D97rIiW3.js";import"./XClose-BwSfuEMb.js";import"./Zap-VnO6gpQC.js";import"./useInfiniteQuery-Dcs9aui8.js";import"./use-infinite-scroll-BuACpKVm.js";import"./use-connection-CY0u0E5V.js";import"./card-D8IT-uY5.js";import"./sidebar-_WzLC9pk.js";import"./use-mobile-1pXzbrVA.js";import"./table-Cu9EWIa1.js";import"./empty-state-LOiFPHZS.js";import"./use-members-Dj59vSPD.js";import"./use-org-auth-client-sSkN4xfu.js";import"./use-clock-tick-CnrHrJSt.js";import"./use-automations-C22lTAVt.js";import"./useSuspenseInfiniteQuery-ByfsxxEi.js";import"./avatar-ChA3XW15.js";import"./format-time-BnbuEtat.js";import"./differenceInSeconds-NQ4PDo0z.js";import"./use-copy-DnseyEW-.js";import"./monaco-editor-9VUv5hjp.js";import"./spinner-B_dab8ke.js";import"./index-Boo82Stv.js";import"./shell-layout-BUm_6dBQ.js";import"./required-auth-layout-Ddvi1F_9.js";import"./use-org-sso-BgII0BvC.js";import"./integration-icon-BaOIFBaS.js";import"./use-navigate-to-agent-BTlUGafY.js";import"./reusable-new-chat-CouMjkYR.js";import"./AreaChart-CPaAKTzB.js";import"./form-BYL5XAXX.js";import"./file-type-icon-W1ZzTIaT.js";import"./drawer-G48IA4Mc.js";import"./collection-search-BZpNpsyc.js";import"./deco-site-production-url-BjY4ZYd-.js";import"./tabs-DLaFLm1m.js";import"./toggle-group-DNT1HP1y.js";import"./use-deco-credits-DesPz-1R.js";import"./popover-DjWnpEmJ.js";import"./self-tool-result-DFFRnOvl.js";import"./alert-dialog-QC1W-6Pa.js";import"./extract-connection-data-BTqduo0n.js";import"./metadata-dUsYcpuu.js";import"./provision-repo-scoped-github-connection-C2HwF4Ce.js";import"./use-debounced-value-DVV-uvkW.js";import"./authenticate-and-persist-oauth-D_o3ZfG2.js";import"./mcp-oauth-k8WwWmmz.js";import"./track-CssF9gmT.js";import"./toolbar-CdMdEL2o.js";import"./skeleton-lrQT5gcj.js";import"./github-repo-picker-CqnMVe6t.js";import"./use-mcp-tools-B6ezax7-.js";import"./agent-capabilities-cXfbMfjV.js";import"./connection-card-drg1d7hg.js";import"./use-registry-connections-CQQ-BeSn.js";import"./retry-CErkP7V6.js";import"./connection-slug-eyAPH6o3.js";import"./textarea-BArtrh-R.js";import"./connection-form-helpers-Dkhl5xIg.js";import"./collection-tabs-4dV9B3uE.js";import"./badge-BxXEgJD5.js";import"./use-open-billing-url-BFwsJQGb.js";import"./select-model-CheXfT8K.js";import"./ai-providers-logos-DD3qZ33J.js";import"./settings-section-DOaNXejx.js";import"./cards-BlZkvfAM.js";import"./dropdown-menu-C-Pcq4IH.js";import"./question-004-sINsf4GQ.js";import"./use-status-sounds-_edoe4rZ.js";import"./use-capability-DTZN9m3p.js";import"./pt-BR-CLy76QW2.js";import"./switch-BCfM0l-1.js";import"./use-debounced-autosave-CON7irHq.js";import"./index-DDeH6C5P.js";import"./search-input-Bhw58eHR.js";import"./index-eXep7bvA.js";import"./use-secrets-CeCSqutU.js";import"./use-tags-DvWOTF3X.js";import"./get-initials-D-f_fDFw.js";import"./command-Cwm0AdDf.js";import"./index-hxBUwYlX.js";import"./use-file-configs-Bit9bppN.js";import"./automation-list-row-Dioka1IJ.js";const Et=[{value:"temporary",labelKey:"sandbox.redirectEditor.typeTemporary"},{value:"permanent",labelKey:"sandbox.redirectEditor.typePermanent"}];function hi(it){const t=pt.c(106),{orgSlug:G,virtualMcpId:H,branch:W,blockKey:X,block:Z}=it,e=at();let V;t[0]!==W||t[1]!==G||t[2]!==H?(V={orgSlug:G,virtualMcpId:H,branch:W},t[0]=W,t[1]=G,t[2]=H,t[3]=V):V=t[3];const s=ut(V);let J;t[4]!==Z?(J=bt(Z),t[4]=Z,t[5]=J):J=t[5];const ot=J;let M;t[6]!==X||t[7]!==s?(M=i=>{s.mutate({blockKey:X,data:vt(i)})},t[6]=X,t[7]=s,t[8]=M):M=t[8];const[o,tt]=gt(ot,M);let Y;t[9]!==o||t[10]!==tt?(Y=i=>tt({...o,...i}),t[9]=o,t[10]=tt,t[11]=Y):Y=t[11];const m=Y;let l;t[12]!==e?(l=e("sandbox.redirectEditor.title"),t[12]=e,t[13]=l):l=t[13];let p;t[14]!==l?(p=r.jsx("span",{className:"text-sm font-medium",children:l}),t[14]=l,t[15]=p):p=t[15];let a;t[16]!==s.isError||t[17]!==s.isPending?(a=r.jsx(yt,{isPending:s.isPending,isError:s.isError}),t[16]=s.isError,t[17]=s.isPending,t[18]=a):a=t[18];let c;t[19]!==p||t[20]!==a?(c=r.jsxs("div",{className:"flex h-12 shrink-0 items-center justify-between border-b px-6",children:[p,a]}),t[19]=p,t[20]=a,t[21]=c):c=t[21];let d;t[22]!==e?(d=e("sandbox.redirectEditor.fromLabel"),t[22]=e,t[23]=d):d=t[23];let n;t[24]!==d?(n=r.jsx(et,{htmlFor:"redirect-from",children:d}),t[24]=d,t[25]=n):n=t[25];const mt=o.from;let f;t[26]!==e?(f=e("sandbox.redirectEditor.fromPlaceholder"),t[26]=e,t[27]=f):f=t[27];let x;t[28]!==m?(x=i=>m({from:i.target.value}),t[28]=m,t[29]=x):x=t[29];let h;t[30]!==o.from||t[31]!==f||t[32]!==x?(h=r.jsx(rt,{id:"redirect-from",value:mt,placeholder:f,onChange:x,className:"h-10"}),t[30]=o.from,t[31]=f,t[32]=x,t[33]=h):h=t[33];let u;t[34]!==e?(u=e("sandbox.redirectEditor.fromDescription"),t[34]=e,t[35]=u):u=t[35];let b;t[36]!==u?(b=r.jsx("p",{className:"text-xs text-muted-foreground",children:u}),t[36]=u,t[37]=b):b=t[37];let y;t[38]!==n||t[39]!==h||t[40]!==b?(y=r.jsxs("div",{className:"space-y-2",children:[n,h,b]}),t[38]=n,t[39]=h,t[40]=b,t[41]=y):y=t[41];let j;t[42]!==e?(j=e("sandbox.redirectEditor.toLabel"),t[42]=e,t[43]=j):j=t[43];let v;t[44]!==j?(v=r.jsx(et,{htmlFor:"redirect-to",children:j}),t[44]=j,t[45]=v):v=t[45];const st=o.to;let g;t[46]!==e?(g=e("sandbox.redirectEditor.toPlaceholder"),t[46]=e,t[47]=g):g=t[47];let E;t[48]!==m?(E=i=>m({to:i.target.value}),t[48]=m,t[49]=E):E=t[49];let P;t[50]!==o.to||t[51]!==g||t[52]!==E?(P=r.jsx(rt,{id:"redirect-to",value:st,placeholder:g,onChange:E,className:"h-10"}),t[50]=o.to,t[51]=g,t[52]=E,t[53]=P):P=t[53];let N;t[54]!==e?(N=e("sandbox.redirectEditor.toDescription"),t[54]=e,t[55]=N):N=t[55];let S;t[56]!==N?(S=r.jsx("p",{className:"text-xs text-muted-foreground",children:N}),t[56]=N,t[57]=S):S=t[57];let C;t[58]!==v||t[59]!==P||t[60]!==S?(C=r.jsxs("div",{className:"space-y-2",children:[v,P,S]}),t[58]=v,t[59]=P,t[60]=S,t[61]=C):C=t[61];let T;t[62]!==e?(T=e("sandbox.redirectEditor.typeLabel"),t[62]=e,t[63]=T):T=t[63];let k;t[64]!==T?(k=r.jsx(et,{htmlFor:"redirect-type",children:T}),t[64]=T,t[65]=k):k=t[65];const lt=o.type;let w;t[66]!==m?(w=i=>m({type:i}),t[66]=m,t[67]=w):w=t[67];let R;t[68]!==e?(R=e("sandbox.redirectEditor.typePlaceholder"),t[68]=e,t[69]=R):R=t[69];let I;t[70]!==R?(I=r.jsx(nt,{id:"redirect-type",className:"h-10 w-full",children:r.jsx(ft,{placeholder:R})}),t[70]=R,t[71]=I):I=t[71];let _;t[72]!==e?(_=Et.map(i=>r.jsx(dt,{value:i.value,children:e(i.labelKey,{status:jt[i.value]})},i.value)),t[72]=e,t[73]=_):_=t[73];let F;t[74]!==_?(F=r.jsx(xt,{children:_}),t[74]=_,t[75]=F):F=t[75];let L;t[76]!==o.type||t[77]!==w||t[78]!==I||t[79]!==F?(L=r.jsxs(ht,{value:lt,onValueChange:w,children:[I,F]}),t[76]=o.type,t[77]=w,t[78]=I,t[79]=F,t[80]=L):L=t[80];let $;t[81]===Symbol.for("react.memo_cache_sentinel")?($=r.jsx("strong",{children:"Temporary"}),t[81]=$):$=t[81];let q;t[82]===Symbol.for("react.memo_cache_sentinel")?(q=r.jsxs("p",{className:"text-xs text-muted-foreground",children:["Use ",$," when the redirect may change;"," ",r.jsx("strong",{children:"Permanent"})," lets browsers cache it."]}),t[82]=q):q=t[82];let Q;t[83]!==k||t[84]!==L?(Q=r.jsxs("div",{className:"space-y-2",children:[k,L,q]}),t[83]=k,t[84]=L,t[85]=Q):Q=t[85];let K;t[86]!==m?(K=i=>m({discardQueryParameters:i===!0}),t[86]=m,t[87]=K):K=t[87];let D;t[88]!==o.discardQueryParameters||t[89]!==K?(D=r.jsx(ct,{checked:o.discardQueryParameters,onCheckedChange:K}),t[88]=o.discardQueryParameters,t[89]=K,t[90]=D):D=t[90];let A;t[91]!==e?(A=e("sandbox.redirectEditor.discardQueryParameters"),t[91]=e,t[92]=A):A=t[92];let B;t[93]!==A?(B=r.jsx("span",{className:"text-sm",children:A}),t[93]=A,t[94]=B):B=t[94];let O;t[95]!==D||t[96]!==B?(O=r.jsxs("label",{className:"flex cursor-pointer items-center gap-2.5",children:[D,B]}),t[95]=D,t[96]=B,t[97]=O):O=t[97];let U;t[98]!==y||t[99]!==C||t[100]!==Q||t[101]!==O?(U=r.jsx("div",{className:"min-w-0 flex-1 overflow-y-auto px-6 py-6",children:r.jsxs("div",{className:"mx-auto max-w-xl space-y-6",children:[y,C,Q,O]})}),t[98]=y,t[99]=C,t[100]=Q,t[101]=O,t[102]=U):U=t[102];let z;return t[103]!==U||t[104]!==c?(z=r.jsxs("div",{className:"flex h-full flex-col",children:[c,U]}),t[103]=U,t[104]=c,t[105]=z):z=t[105],z}export{hi as RedirectEditor};
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/registry-layout-HYIlQinW.js","assets/index-BdpWLlfo.js","assets/index-DJP7bbyy.css","assets/Tool02-BDWnkNP4.js","assets/CheckCircle-V1G6vRLw.js","assets/Settings02-UFz5U7L5.js","assets/use-mcp-client-Bxx6fsF6.js","assets/auth-BZX0cE3S.js","assets/useInfiniteQuery-Dcs9aui8.js","assets/use-infinite-scroll-BuACpKVm.js","assets/studio-tools-CeODr8rO.js","assets/badge-BxXEgJD5.js","assets/input-DEKGGhZK.js","assets/dropdown-menu-C-Pcq4IH.js","assets/Check-CxaYXpCa.js","assets/ChevronRight-Dq2fkwrO.js","assets/DotsVertical-rZd6Fptu.js","assets/table-Cu9EWIa1.js","assets/toggle-group-DNT1HP1y.js","assets/use-view-mode-QLHLQem3.js","assets/use-mobile-1pXzbrVA.js","assets/FilterLines-CNeGl-15.js","assets/Globe01-DfaBbtRd.js","assets/SearchMd-BLnTSrvc.js","assets/dialog-DAc4-g6m.js","assets/X-DQSyj_H1.js","assets/AlertCircle-WIL6cfet.js","assets/Upload01-CHLmEpA0.js","assets/metadata-dUsYcpuu.js","assets/alert-dialog-QC1W-6Pa.js","assets/card-D8IT-uY5.js","assets/Trash01-uG2e-LVc.js","assets/label-DHPULCw0.js","assets/select-CBpdZ7o2.js","assets/tooltip-DdfsISdl.js","assets/ChevronDown-DX-ceh2Z.js","assets/ChevronUp-BBj6JgxI.js","assets/switch-BCfM0l-1.js","assets/textarea-BArtrh-R.js","assets/ArrowLeft-CHHWfkpB.js","assets/XCircle-DuqbsXc1.js","assets/checkbox-DmTCNEX3.js","assets/Eye-OpHiFNhI.js","assets/LinkExternal01-NnMSyAQt.js","assets/use-copy-DnseyEW-.js","assets/Copy01-CKFmCr1g.js","assets/Key01-B88ki6Fp.js","assets/Plus-CFl9yMpW.js","assets/mcp-oauth-k8WwWmmz.js","assets/Play-CoNHS2Qn.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-BdpWLlfo.js";import{R as m}from"./require-capability-CsduCWoY.js";import"./use-capability-DTZN9m3p.js";import"./access-gate-BS0xGuqy.js";import"./capability-load-error-BdHpqDfW.js";const n=s.lazy(()=>o(()=>import("./registry-layout-HYIlQinW.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};
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/registry-layout-HYIlQinW.js","assets/index-BdpWLlfo.js","assets/index-DJP7bbyy.css","assets/Tool02-BDWnkNP4.js","assets/CheckCircle-V1G6vRLw.js","assets/Settings02-UFz5U7L5.js","assets/use-mcp-client-Bxx6fsF6.js","assets/auth-BZX0cE3S.js","assets/useInfiniteQuery-Dcs9aui8.js","assets/use-infinite-scroll-BuACpKVm.js","assets/studio-tools-CeODr8rO.js","assets/badge-BxXEgJD5.js","assets/input-DEKGGhZK.js","assets/dropdown-menu-C-Pcq4IH.js","assets/Check-CxaYXpCa.js","assets/ChevronRight-Dq2fkwrO.js","assets/DotsVertical-rZd6Fptu.js","assets/table-Cu9EWIa1.js","assets/toggle-group-DNT1HP1y.js","assets/use-view-mode-QLHLQem3.js","assets/use-mobile-1pXzbrVA.js","assets/FilterLines-CNeGl-15.js","assets/Globe01-DfaBbtRd.js","assets/SearchMd-BLnTSrvc.js","assets/dialog-DAc4-g6m.js","assets/X-DQSyj_H1.js","assets/AlertCircle-WIL6cfet.js","assets/Upload01-CHLmEpA0.js","assets/metadata-dUsYcpuu.js","assets/alert-dialog-QC1W-6Pa.js","assets/card-D8IT-uY5.js","assets/Trash01-uG2e-LVc.js","assets/label-DHPULCw0.js","assets/select-CBpdZ7o2.js","assets/tooltip-DdfsISdl.js","assets/ChevronDown-DX-ceh2Z.js","assets/ChevronUp-BBj6JgxI.js","assets/switch-BCfM0l-1.js","assets/textarea-BArtrh-R.js","assets/ArrowLeft-CHHWfkpB.js","assets/XCircle-DuqbsXc1.js","assets/checkbox-DmTCNEX3.js","assets/Eye-OpHiFNhI.js","assets/LinkExternal01-NnMSyAQt.js","assets/use-copy-DnseyEW-.js","assets/Copy01-CKFmCr1g.js","assets/Key01-B88ki6Fp.js","assets/Plus-CFl9yMpW.js","assets/mcp-oauth-k8WwWmmz.js","assets/Play-CoNHS2Qn.js"])))=>i.map(i=>d[i]);
2
- import{c as m,d as n,f as c,j as t,k as f,r as l,aG as p}from"./index-BdpWLlfo.js";import{R as u}from"./require-capability-CsduCWoY.js";import"./use-capability-DTZN9m3p.js";import"./access-gate-BS0xGuqy.js";import"./capability-load-error-BdHpqDfW.js";const g=l.lazy(()=>p(()=>import("./registry-layout-HYIlQinW.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 j(){const e=m.c(5),i=n();let s;e[0]===Symbol.for("react.memo_cache_sentinel")?(s={from:"/shell/$org"},e[0]=s):s=e[0];const{org:o}=c(s);let r;e[1]===Symbol.for("react.memo_cache_sentinel")?(r=t.jsx("div",{className:"h-full flex items-center justify-center",children:t.jsx(f,{size:20,className:"animate-spin text-muted-foreground"})}),e[1]=r):r=e[1];let a;return e[2]!==i||e[3]!==o?(a=t.jsx(u,{capability:"registry:manage",area:"the registry",children:t.jsx(l.Suspense,{fallback:r,children:t.jsx(g,{onBack:()=>i({to:"/$org/settings/store",params:{org:o}})})})}),e[2]=i,e[3]=o,e[4]=a):a=e[4],a}export{j as default};
@@ -1 +0,0 @@
1
- import{I as u}from"./use-infinite-scroll-BuACpKVm.js";import{e5 as i}from"./index-BdpWLlfo.js";function t(e,r){return i(e,u,r)}export{t as u};
@@ -1 +0,0 @@
1
- import{I as s}from"./use-infinite-scroll-BuACpKVm.js";import{e5 as u,b2 as n}from"./index-BdpWLlfo.js";function a(e,r){return u({...e,enabled:!0,suspense:!0,throwOnError:n},s,r)}export{a as u};