decocms 4.198.0 → 4.198.1

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 (224) hide show
  1. package/dist/client/assets/{AlertCircle-C8SY5iRK.js → AlertCircle-BIbNxVjT.js} +1 -1
  2. package/dist/client/assets/{AreaChart-BykRw1vR.js → AreaChart-BSeckxvp.js} +1 -1
  3. package/dist/client/assets/{ArrowLeft-DUpOl6Js.js → ArrowLeft-JNrncaC6.js} +1 -1
  4. package/dist/client/assets/{ArrowUp-DZGjkGkh.js → ArrowUp-DwpC76c7.js} +1 -1
  5. package/dist/client/assets/{ArrowUpRight-BdcALqtV.js → ArrowUpRight-CcTjVvug.js} +1 -1
  6. package/dist/client/assets/{Check-C_ZW4dMG.js → Check-B_Nj-gHK.js} +1 -1
  7. package/dist/client/assets/{CheckCircle-CJr8ykHV.js → CheckCircle-Bw5tspDF.js} +1 -1
  8. package/dist/client/assets/{ChevronDown-YGt15NDz.js → ChevronDown-CNBOIvzs.js} +1 -1
  9. package/dist/client/assets/{ChevronRight-Ti1DNRwg.js → ChevronRight-BZUn_enc.js} +1 -1
  10. package/dist/client/assets/{ChevronUp-BMKTxhtV.js → ChevronUp-CdWs-_Dd.js} +1 -1
  11. package/dist/client/assets/{Copy01-CfJtVQX8.js → Copy01-tmNhE-t9.js} +1 -1
  12. package/dist/client/assets/{CpuChip01-C6J5o_WD.js → CpuChip01-CrXiL_DJ.js} +1 -1
  13. package/dist/client/assets/{CreditCard01-sm5uN1al.js → CreditCard01-DY3SMPbk.js} +1 -1
  14. package/dist/client/assets/{DotsVertical-DwsPX2c8.js → DotsVertical-DfcdwSa4.js} +1 -1
  15. package/dist/client/assets/{Eye-D3pFPZtG.js → Eye-cbaxQ-uM.js} +1 -1
  16. package/dist/client/assets/{FilterLines-Dw8azjNW.js → FilterLines-D3AYXHFE.js} +1 -1
  17. package/dist/client/assets/{Globe01-gmiwWV2R.js → Globe01-DUDN_jNp.js} +1 -1
  18. package/dist/client/assets/{Globe04-aKKjTpe3.js → Globe04-B9iLrygy.js} +1 -1
  19. package/dist/client/assets/{HardDrive-KXYb8oGz.js → HardDrive-B-0a8X2k.js} +1 -1
  20. package/dist/client/assets/{Key01-OAo9mPW5.js → Key01-CobJpsot.js} +1 -1
  21. package/dist/client/assets/{LayoutLeft-L0QKFsvj.js → LayoutLeft-C7Efi9g6.js} +1 -1
  22. package/dist/client/assets/{LinkExternal01-5zhWp-5h.js → LinkExternal01-BIaY4WLz.js} +1 -1
  23. package/dist/client/assets/{LogOut01--xowgLO0.js → LogOut01-D7LBNdI7.js} +1 -1
  24. package/dist/client/assets/{Monitor01-hnS39xvO.js → Monitor01-BXIP8OxW.js} +1 -1
  25. package/dist/client/assets/{Palette-Bx9aEMJ1.js → Palette-332kO0aN.js} +1 -1
  26. package/dist/client/assets/{Play-B32e2Xb_.js → Play-Bw1dP5p6.js} +1 -1
  27. package/dist/client/assets/{Plus-BDl2qzjU.js → Plus-DzVetwWE.js} +1 -1
  28. package/dist/client/assets/{SearchLg-Ckqq0cHp.js → SearchLg-D393-Nvq.js} +1 -1
  29. package/dist/client/assets/{SearchMd-BLcdKvuz.js → SearchMd-Bsq8aUFV.js} +1 -1
  30. package/dist/client/assets/{Settings02-C7ZM_51J.js → Settings02-B9hBvqRc.js} +1 -1
  31. package/dist/client/assets/{Share07-Cdl4nAT0.js → Share07-C_evEhQ2.js} +1 -1
  32. package/dist/client/assets/{Shield01-wATI85Ji.js → Shield01-B8_2pB70.js} +1 -1
  33. package/dist/client/assets/{Star01-BiRYulu5.js → Star01-DKcK1qJm.js} +1 -1
  34. package/dist/client/assets/{Stars01-8kaUVt1Q.js → Stars01-DQF_ol_e.js} +1 -1
  35. package/dist/client/assets/{Stars02-CdSdmgrJ.js → Stars02-D_L3-JNs.js} +1 -1
  36. package/dist/client/assets/{Sun-DD5QWbOS.js → Sun-BZ-2mMHx.js} +1 -1
  37. package/dist/client/assets/{SwitchHorizontal01-ICtOJ5QG.js → SwitchHorizontal01-cX5yjouq.js} +1 -1
  38. package/dist/client/assets/{Tool01-poJm20KG.js → Tool01-Di5wrMOn.js} +1 -1
  39. package/dist/client/assets/{Tool02-CgKntXm0.js → Tool02-D9qHgvcl.js} +1 -1
  40. package/dist/client/assets/{Trash01-Dmkz9YvS.js → Trash01-Cm0lKOZG.js} +1 -1
  41. package/dist/client/assets/{TrendUp01-C1XYgKML.js → TrendUp01-BBnF39kN.js} +1 -1
  42. package/dist/client/assets/{Upload01-D0nuuz04.js → Upload01-BePdmFTv.js} +1 -1
  43. package/dist/client/assets/{User01-CGG-DKuM.js → User01-BW6ergBX.js} +1 -1
  44. package/dist/client/assets/{Users01-D9w3T_dV.js → Users01-BxRyw2mM.js} +1 -1
  45. package/dist/client/assets/{Users03-DthhgefL.js → Users03-CUTJivEE.js} +1 -1
  46. package/dist/client/assets/{X-BZGIgNvY.js → X-CpCDHfBC.js} +1 -1
  47. package/dist/client/assets/{XCircle-BOAiv6Zc.js → XCircle-CPtnwfis.js} +1 -1
  48. package/dist/client/assets/{XClose-C_7R4-TY.js → XClose-DKk5mGZw.js} +1 -1
  49. package/dist/client/assets/{Zap-Bp29Ikr4.js → Zap-QZU9B0Ko.js} +1 -1
  50. package/dist/client/assets/{ZapSquare-ycQJc7bI.js → ZapSquare-ibRsxEay.js} +1 -1
  51. package/dist/client/assets/{access-gate-CdRPCReq.js → access-gate-C_-m-aJr.js} +1 -1
  52. package/dist/client/assets/{agent-icon-LPvK1059.js → agent-icon-BWZFNaWR.js} +1 -1
  53. package/dist/client/assets/{agents-list-CDPMCErh.js → agents-list-CJ25eHwR.js} +1 -1
  54. package/dist/client/assets/{ai-providers-BeJAwnxA.js → ai-providers-BU49yNv_.js} +1 -1
  55. package/dist/client/assets/{alert-DgRfAuC5.js → alert-B7ewc3FR.js} +1 -1
  56. package/dist/client/assets/{alert-dialog-DrQn8XjO.js → alert-dialog-FBBdO1hK.js} +1 -1
  57. package/dist/client/assets/{app-editor-BE_yNkVZ.js → app-editor-DFKKNhPu.js} +1 -1
  58. package/dist/client/assets/{auth-DDiuYHCk.js → auth-BQ8cUt93.js} +1 -1
  59. package/dist/client/assets/{auth-catchall-DGMLdtc_.js → auth-catchall-B1BWrfuo.js} +1 -1
  60. package/dist/client/assets/{auth-entry-CSEQWvot.js → auth-entry-BPUfKuge.js} +1 -1
  61. package/dist/client/assets/{auth-split-layout-DM_qc_Ek.js → auth-split-layout-QsVtrXjW.js} +1 -1
  62. package/dist/client/assets/{authenticate-and-persist-oauth-BH2wumYo.js → authenticate-and-persist-oauth-D1OnAhxy.js} +1 -1
  63. package/dist/client/assets/{automation-list-row-WtSrToJ4.js → automation-list-row-Bc0NmrRb.js} +1 -1
  64. package/dist/client/assets/{automation-runs-D5KxWL-0.js → automation-runs-B0VppL3N.js} +1 -1
  65. package/dist/client/assets/{automations-DLVxippr.js → automations-Betrni9I.js} +1 -1
  66. package/dist/client/assets/{avatar-BsURgP8Z.js → avatar-7DIElZMt.js} +1 -1
  67. package/dist/client/assets/{badge-CGqdv3pi.js → badge-BHEOcTbG.js} +1 -1
  68. package/dist/client/assets/{billing-DxR0c_P7.js → billing-4CHfg28V.js} +1 -1
  69. package/dist/client/assets/{block-document-DcqEkLJr.js → block-document-i6LRoJ-D.js} +1 -1
  70. package/dist/client/assets/{brand-context-DZx3ob7g.js → brand-context-CswxRPsc.js} +1 -1
  71. package/dist/client/assets/{buckets-Don0qB35.js → buckets-BpqKkzF7.js} +1 -1
  72. package/dist/client/assets/{bulk-category-panel-k9ICfNOp.js → bulk-category-panel-DFH4-vHc.js} +1 -1
  73. package/dist/client/assets/{capability-load-error-UWmmGCEf.js → capability-load-error-CyhrUz-o.js} +1 -1
  74. package/dist/client/assets/{card-ClcwuDin.js → card-Dp-9GXlo.js} +1 -1
  75. package/dist/client/assets/{cards-CUx5NsvF.js → cards-CfIxTQzU.js} +1 -1
  76. package/dist/client/assets/{category-editor-DQQFG64v.js → category-editor-B40QqikJ.js} +1 -1
  77. package/dist/client/assets/{chat-context-CrZFK-7i.js → chat-context-BryS1E_V.js} +1 -1
  78. package/dist/client/assets/{checkbox-DBG4u_fO.js → checkbox-Bs_gQDjo.js} +1 -1
  79. package/dist/client/assets/{cli-auth-success-CRduEaZF.js → cli-auth-success-DE5hMAIJ.js} +1 -1
  80. package/dist/client/assets/{collection-detail-D5QTNVav.js → collection-detail-CelCrd7J.js} +1 -1
  81. package/dist/client/assets/{collection-display-button-LH8fvP3X.js → collection-display-button-B_9JnGuZ.js} +1 -1
  82. package/dist/client/assets/{collection-search-BInF7Ytk.js → collection-search-BB8jrWzh.js} +1 -1
  83. package/dist/client/assets/{collection-table-wrapper-BtxQ_2T0.js → collection-table-wrapper-CFwdQSZ5.js} +1 -1
  84. package/dist/client/assets/{collection-tabs-BVJ6vBjZ.js → collection-tabs-HzwKgHFx.js} +1 -1
  85. package/dist/client/assets/{command-_pFnaP7B.js → command-oAPvKl-D.js} +1 -1
  86. package/dist/client/assets/{commerce-onboarding-2OQc2aUH.js → commerce-onboarding-CnlM83M3.js} +1 -1
  87. package/dist/client/assets/{connect-CI-FFPbt.js → connect-CJCiDUfo.js} +1 -1
  88. package/dist/client/assets/{connection-jrhzHrwR.js → connection-Dq0ykxIo.js} +1 -1
  89. package/dist/client/assets/{connection-card-CTXYU6NY.js → connection-card-CXxAzxt-.js} +1 -1
  90. package/dist/client/assets/{connection-detail-C8foHE7j.js → connection-detail-DbhCEOJL.js} +1 -1
  91. package/dist/client/assets/{connection-form-helpers-p5xXKunb.js → connection-form-helpers-WwXYWqyk.js} +1 -1
  92. package/dist/client/assets/{connections-_8-kndEu.js → connections-uOWuPqqr.js} +1 -1
  93. package/dist/client/assets/{decopilot-sse-pool-C47eaXg_.js → decopilot-sse-pool-CLdQ7a7X.js} +1 -1
  94. package/dist/client/assets/{dialog-C1pWvbSS.js → dialog-DAFru5VU.js} +1 -1
  95. package/dist/client/assets/{domain-settings-p3m-ogGU.js → domain-settings-CIDsy--Z.js} +1 -1
  96. package/dist/client/assets/{drawer-DSq15Wq8.js → drawer-CsdgrCqs.js} +1 -1
  97. package/dist/client/assets/{dropdown-menu-DwsBHhdy.js → dropdown-menu-DR-T_e02.js} +1 -1
  98. package/dist/client/assets/{empty-state-CHvnW8r-.js → empty-state-CwdKnKvp.js} +1 -1
  99. package/dist/client/assets/{extract-connection-data-C9RG4h96.js → extract-connection-data-Cx7cSiJo.js} +1 -1
  100. package/dist/client/assets/{file-explorer-Bgh8S5n4.js → file-explorer-BGtos_rf.js} +1 -1
  101. package/dist/client/assets/{file-type-icon-DP_7rt6E.js → file-type-icon-BXkKuDnI.js} +1 -1
  102. package/dist/client/assets/{form-DalEUP2m.js → form-BFzX9jQB.js} +1 -1
  103. package/dist/client/assets/{general-BWbyxFD4.js → general-CEDqpd82.js} +1 -1
  104. package/dist/client/assets/{github-repo-picker-BI2NCSqn.js → github-repo-picker-Dnt_pLmG.js} +1 -1
  105. package/dist/client/assets/{hooks-DR_lYoD7.js → hooks-Ck0w6giS.js} +1 -1
  106. package/dist/client/assets/{index-CNLGJHNt.js → index-40vsYmi1.js} +3 -3
  107. package/dist/client/assets/{index-_2Geeoov.js → index-CA6bctzC.js} +1 -1
  108. package/dist/client/assets/{index-Bm7FRioN.js → index-Cc0BIKZV.js} +1 -1
  109. package/dist/client/assets/{index-DwDkC-Nl.js → index-D3Qiagvp.js} +1 -1
  110. package/dist/client/assets/{index-Cf3DzhTt.js → index-DESHD7l_.js} +1 -1
  111. package/dist/client/assets/{index-CQ2RadJN.js → index-Dt2OuZ-3.js} +1 -1
  112. package/dist/client/assets/{index-o9v9gPbF.js → index-PSAqTFqg.js} +1 -1
  113. package/dist/client/assets/{index-fjYYky3S.js → index-PYvEj9rl.js} +6 -6
  114. package/dist/client/assets/{index-KRubq2AR.js → index-TS-1Qvxc.js} +1 -1
  115. package/dist/client/assets/{index-BX-jkCjI.js → index-WB9eGgJj.js} +1 -1
  116. package/dist/client/assets/{index-redirect-DCUQv88i.js → index-redirect-D0fkfwe9.js} +1 -1
  117. package/dist/client/assets/{input-CnORcq3w.js → input-c67DqalF.js} +1 -1
  118. package/dist/client/assets/{integration-icon-Cv1PlDhh.js → integration-icon-CbnBAtSt.js} +1 -1
  119. package/dist/client/assets/{invite-member-dialog-Bk4TB_oD.js → invite-member-dialog-DEsRbEi3.js} +1 -1
  120. package/dist/client/assets/{label-BgE1QCwJ.js → label-CiWl6zR8.js} +1 -1
  121. package/dist/client/assets/{layout-BTKrMhu_.js → layout-KK1MgaRZ.js} +1 -1
  122. package/dist/client/assets/{login-C235-ne2.js → login-B6sKYtnG.js} +1 -1
  123. package/dist/client/assets/{mcp-oauth-Cki4VKX_.js → mcp-oauth-DFM9MSpi.js} +1 -1
  124. package/dist/client/assets/{members-RQST5rLo.js → members-Bfpw9cpu.js} +1 -1
  125. package/dist/client/assets/{monaco-editor-BTa8pVGH.js → monaco-editor-1VEbI-ff.js} +1 -1
  126. package/dist/client/assets/{monitoring-stats-row-xSIY1MZZ.js → monitoring-stats-row-CVo2qQNH.js} +1 -1
  127. package/dist/client/assets/{multi-select-CCUHIRrV.js → multi-select-B4DyE9eb.js} +1 -1
  128. package/dist/client/assets/{oauth-callback-Cena7qJB.js → oauth-callback-Bv6BVeZo.js} +1 -1
  129. package/dist/client/assets/{oauth-callback-ai-provider-BwG_RDHh.js → oauth-callback-ai-provider-DXJKwN7i.js} +1 -1
  130. package/dist/client/assets/{onboarding-Dwktxnk7.js → onboarding-CZOQQSpb.js} +1 -1
  131. package/dist/client/assets/{org-layout-BbbhfvYV.js → org-layout-CEVXo4Hj.js} +1 -1
  132. package/dist/client/assets/{organization-choice-Bdjdkprb.js → organization-choice-qLYRu1mJ.js} +1 -1
  133. package/dist/client/assets/{orgs-Cy0Msnks.js → orgs-jEJO14l8.js} +1 -1
  134. package/dist/client/assets/{page-seo-form-C7hpsmSt.js → page-seo-form-DcBpBjM3.js} +1 -1
  135. package/dist/client/assets/{popover-CS616JEv.js → popover-C3GV7NHT.js} +1 -1
  136. package/dist/client/assets/{post-editor-eJTncgFW.js → post-editor-C5h2pkA_.js} +1 -1
  137. package/dist/client/assets/{primitives-BxE9KtlN.js → primitives-DxG_-v6Q.js} +1 -1
  138. package/dist/client/assets/{profile-D3eV9fvK.js → profile-B2LXJVMK.js} +1 -1
  139. package/dist/client/assets/{project-app-view-C7G70sCo.js → project-app-view-Cr9viAZ9.js} +1 -1
  140. package/dist/client/assets/record-editor-DqQqXztj.js +1 -0
  141. package/dist/client/assets/{redirect-editor-Dx1xeXgF.js → redirect-editor-BW0lGYt1.js} +1 -1
  142. package/dist/client/assets/registry-BQpdlbwL.js +2 -0
  143. package/dist/client/assets/{registry-layout-BWBO0cwu.js → registry-layout-7G5vaR5-.js} +4 -4
  144. package/dist/client/assets/{reports-BUuYPpCn.js → reports-DDQO5s1F.js} +1 -1
  145. package/dist/client/assets/{require-capability-DRL4tfer.js → require-capability-CAxsHP25.js} +1 -1
  146. package/dist/client/assets/{required-auth-layout-CIb6VVsG.js → required-auth-layout-T2z6aSD0.js} +1 -1
  147. package/dist/client/assets/{reset-password-BVgR8Pua.js → reset-password-CvhXzd8Y.js} +1 -1
  148. package/dist/client/assets/{roles-wGMOH9-A.js → roles-Ctse7z57.js} +1 -1
  149. package/dist/client/assets/{search-input-BPma-uS3.js → search-input-ctAc0W8m.js} +1 -1
  150. package/dist/client/assets/{secrets-EKx5w8-4.js → secrets-BV-5oy2U.js} +1 -1
  151. package/dist/client/assets/{sections-editor-B30VUMU7.js → sections-editor-D9Zay_Mg.js} +1 -1
  152. package/dist/client/assets/{select-QT6EhBK9.js → select-DTTczhz5.js} +1 -1
  153. package/dist/client/assets/{select-model-CI7PIhFW.js → select-model-CFihyE2L.js} +1 -1
  154. package/dist/client/assets/{self-tool-result-BVlLkjQc.js → self-tool-result-TxiWbDY7.js} +1 -1
  155. package/dist/client/assets/{seo-editor-DKjkVH6n.js → seo-editor-By5nGlTj.js} +1 -1
  156. package/dist/client/assets/{settings-layout-geR9gLa0.js → settings-layout-CqL_nZDN.js} +1 -1
  157. package/dist/client/assets/{settings-section-D-EYP4ul.js → settings-section-CYzDucV_.js} +1 -1
  158. package/dist/client/assets/{shell-controls-BkN5yiE5.js → shell-controls-D1rGlY-A.js} +1 -1
  159. package/dist/client/assets/{shell-layout-D6BYDaXT.js → shell-layout-B1GSO3br.js} +1 -1
  160. package/dist/client/assets/{sidebar-BGib2vQQ.js → sidebar-yF4RAeOF.js} +1 -1
  161. package/dist/client/assets/{skeleton-vNRcNgUE.js → skeleton-BVCXxIvJ.js} +1 -1
  162. package/dist/client/assets/{spinner-B7MHDe6g.js → spinner-CvOt4SrY.js} +1 -1
  163. package/dist/client/assets/{sso-DVVGDTh8.js → sso-CvXXHYxM.js} +1 -1
  164. package/dist/client/assets/{store-DMrV7xfX.js → store-BCYMwsuG.js} +1 -1
  165. package/dist/client/assets/store-registry-DbDzNXGn.js +2 -0
  166. package/dist/client/assets/{studio-tools-CrdPQqWl.js → studio-tools-DqBTby73.js} +1 -1
  167. package/dist/client/assets/{switch-DFtBlkd_.js → switch-DQtuZQrl.js} +1 -1
  168. package/dist/client/assets/{synced-repos-uaJb0gdv.js → synced-repos-B4lY6bAa.js} +1 -1
  169. package/dist/client/assets/{tab-id-BrPzbiFK.js → tab-id-k4oMd3Kq.js} +1 -1
  170. package/dist/client/assets/{table-DPNST0df.js → table-ClUciDn4.js} +1 -1
  171. package/dist/client/assets/{tabs-C0OaM7EA.js → tabs-GNMKCzfU.js} +1 -1
  172. package/dist/client/assets/{textarea-C9wG3Z-z.js → textarea-CC00wWfB.js} +1 -1
  173. package/dist/client/assets/{toggle-group-DMXt56-2.js → toggle-group-Fo28SZSJ.js} +1 -1
  174. package/dist/client/assets/{toolbar-OXl5jnSh.js → toolbar-Dq8G83dn.js} +1 -1
  175. package/dist/client/assets/{tooltip-3t0rZx41.js → tooltip-gufneU6i.js} +1 -1
  176. package/dist/client/assets/{use-ai-providers-BohE9Odn.js → use-ai-providers-C0PU4vBf.js} +1 -1
  177. package/dist/client/assets/{use-automations-DIaiQwDa.js → use-automations-CuJzDcgN.js} +1 -1
  178. package/dist/client/assets/{use-autosave-CXlG3JMt.js → use-autosave-Bj5GBQ03.js} +1 -1
  179. package/dist/client/assets/{use-capability-BdRtF5xR.js → use-capability-DIGMjvZ4.js} +1 -1
  180. package/dist/client/assets/{use-clock-tick-BMT1sGFb.js → use-clock-tick-CQ5WMkJ4.js} +1 -1
  181. package/dist/client/assets/{use-connection-BENaTXf0.js → use-connection-BIE1ZM9Q.js} +1 -1
  182. package/dist/client/assets/{use-copy-WK3laWsp.js → use-copy-BFdepIlJ.js} +1 -1
  183. package/dist/client/assets/{use-create-virtual-mcp-DjzSEPVP.js → use-create-virtual-mcp-Bk3JFgs4.js} +1 -1
  184. package/dist/client/assets/{use-debounced-autosave-MSCj0o29.js → use-debounced-autosave-D2aIHp9V.js} +1 -1
  185. package/dist/client/assets/{use-debounced-value-DZ51uCua.js → use-debounced-value-Cj_-uF6e.js} +1 -1
  186. package/dist/client/assets/{use-deco-credits-QeC4b93u.js → use-deco-credits-B5I1ipIA.js} +1 -1
  187. package/dist/client/assets/{use-decopilot-events-DbrKzoUr.js → use-decopilot-events-z457sLTv.js} +1 -1
  188. package/dist/client/assets/{use-delete-connection-BwHxKbLh.js → use-delete-connection-BYKpDKlA.js} +1 -1
  189. package/dist/client/assets/{use-deployment-admin-C0JhF-1i.js → use-deployment-admin-ClIJXgko.js} +1 -1
  190. package/dist/client/assets/{use-file-configs-DGNI5Ogl.js → use-file-configs-BrR-HB5E.js} +1 -1
  191. package/dist/client/assets/{use-infinite-scroll-DAXVCvAz.js → use-infinite-scroll-DRTb36Sf.js} +1 -1
  192. package/dist/client/assets/{use-join-requests-Dj2xiAWL.js → use-join-requests-Cc3OGOFJ.js} +1 -1
  193. package/dist/client/assets/{use-mcp-client-b2C0aMJl.js → use-mcp-client-DJa-oLak.js} +1 -1
  194. package/dist/client/assets/{use-mcp-tools-B2dsPExT.js → use-mcp-tools-A8LxjQHB.js} +1 -1
  195. package/dist/client/assets/{use-members-C84tiGc_.js → use-members-B8sfkDFd.js} +1 -1
  196. package/dist/client/assets/{use-mobile-BFF1W7dr.js → use-mobile-CWfh0IvR.js} +1 -1
  197. package/dist/client/assets/{use-navigate-to-agent-BUdpxraz.js → use-navigate-to-agent-CH34Pmos.js} +1 -1
  198. package/dist/client/assets/{use-open-billing-url-z7FTgCyW.js → use-open-billing-url-CQyHsaDf.js} +1 -1
  199. package/dist/client/assets/{use-org-auth-client-DgAMGuej.js → use-org-auth-client-GAxA8mNj.js} +1 -1
  200. package/dist/client/assets/{use-org-sso-BppOiyDL.js → use-org-sso-DWulw-z5.js} +1 -1
  201. package/dist/client/assets/{use-organization-roles-r7jHYYqE.js → use-organization-roles-Imzuk9OO.js} +1 -1
  202. package/dist/client/assets/{use-organization-settings-NNUSxQ3V.js → use-organization-settings-D9Dm1v9H.js} +1 -1
  203. package/dist/client/assets/{use-registry-connections-BmoR-1Bp.js → use-registry-connections-BeG_rVWG.js} +1 -1
  204. package/dist/client/assets/{use-secrets-DS0rpghc.js → use-secrets-B6sP0fsa.js} +1 -1
  205. package/dist/client/assets/{use-section-preview-base-CPMKpV41.js → use-section-preview-base-BQYP0s2f.js} +1 -1
  206. package/dist/client/assets/{use-status-sounds-V4dngC1b.js → use-status-sounds-CDuYaLPP.js} +1 -1
  207. package/dist/client/assets/{use-tags-B_Th-dAy.js → use-tags-ClqL7tiK.js} +1 -1
  208. package/dist/client/assets/{use-view-mode-Bcs1DCpc.js → use-view-mode-BP_tcXyq.js} +1 -1
  209. package/dist/client/assets/{use-virtual-mcp-CoUnV_d7.js → use-virtual-mcp-JTMjOuzF.js} +1 -1
  210. package/dist/client/assets/useInfiniteQuery-BJ49akeX.js +1 -0
  211. package/dist/client/assets/{useRouterState-D5SizHvD.js → useRouterState-BZZWM__-.js} +1 -1
  212. package/dist/client/assets/useSuspenseInfiniteQuery-BtNtPB4O.js +1 -0
  213. package/dist/client/assets/{users-CsVEwC_b.js → users-3jk7spwK.js} +1 -1
  214. package/dist/client/assets/{variant-calendar-BwYz-0iI.js → variant-calendar-OLG0qkVW.js} +1 -1
  215. package/dist/client/assets/{view-mode-toggle-BV-YxzQ-.js → view-mode-toggle-CInGt6IN.js} +1 -1
  216. package/dist/client/index.html +1 -1
  217. package/dist/server/cli.js +2 -2
  218. package/dist/server/server.js +1 -1
  219. package/package.json +1 -1
  220. package/dist/client/assets/record-editor-DOD_YyGt.js +0 -1
  221. package/dist/client/assets/registry-b9FTrvme.js +0 -2
  222. package/dist/client/assets/store-registry-Bh6HctLA.js +0 -2
  223. package/dist/client/assets/useInfiniteQuery-B_PvBDpZ.js +0 -1
  224. package/dist/client/assets/useSuspenseInfiniteQuery-Bd-pDwwP.js +0 -1
@@ -1332,7 +1332,7 @@ Usage: deco services <up|down|status>`),process.exit(1)}}var fc1=O(()=>{kx()});f
1332
1332
  `.execute($);if(Number(W.rows[0]?.cnt)===0){console.warn(`Failed to migrate ${J}/${K}, keeping in old table`);continue}}await Xb`
1333
1333
  DELETE FROM kysely_migration WHERE name = ${X}
1334
1334
  `.execute($)}}async function ei1($){await Vc6($),await Sc6($);let Z=new ai1({db:$,provider:{getMigrations:()=>Promise.resolve(dl0)}}),{error:X,results:Q}=await Z.migrateToLatest(),Y=0;if(Q?.forEach((G)=>{if(G.status==="Success")Y++;else if(G.status==="Error")console.error(`Failed to execute migration "${G.migrationName}"`)}),X)throw console.error("Failed to migrate"),console.error(X),X;return Y}async function Cc6($){let{keepOpen:Z=!1,database:X,skipBetterAuth:Q=!1}=$??{},Y="skipped";if(!Q&&!X)Y=await Bh0();let G=X??U6(),J=async()=>{if(!Z&&!X)await Bw(G).catch((K)=>{console.warn("Warning: Error closing database:",K)})};try{let K=await ei1(G.db);return await J(),{betterAuth:Y,kysely:K}}catch(K){throw await J(),K}}async function _c6(){let $=U6(),Z=new ai1({db:$.db,provider:{getMigrations:()=>Promise.resolve(dl0)}}),{error:X,results:Q}=await Z.migrateDown();if(Q?.forEach((Y)=>{if(Y.status==="Success")console.log(`\u2705 Migration "${Y.migrationName}" rolled back successfully`);else if(Y.status==="Error")console.error(`\u274C Failed to rollback migration "${Y.migrationName}"`)}),X)throw console.error("Failed to rollback migration"),console.error(X),X}var Zn1=O(()=>{ri1();Oh0();o7()});async function p50($){let Z={...process.env},X=u00($,Z);console.log(OF1(X.settings.encryptionKey));let Q=X.settings.betterAuthSecret||(X.settings.localMode?Fd1(X.settings.dataDir):""),{ensureServices:Y}=await Promise.resolve().then(() => (Q50(),X50)),{outputs:G,services:J}=await Y({home:X.settings.dataDir,externalDatabaseUrl:X.externalDatabaseUrl,externalNatsUrl:X.externalNatsUrl});if(!X.skipMigrations){let{migrateBetterAuth:W}=await Promise.resolve().then(() => (Oh0(),Bd1));await W(G.databaseUrl);let{createDatabase:H}=await Promise.resolve().then(() => (o7(),Sl1)),{migrateToLatest:U}=await Promise.resolve().then(() => (Zn1(),$n1)),N=H(G.databaseUrl);await U({keepOpen:!0,database:N,skipBetterAuth:!0})}let K={...X.settings,betterAuthSecret:Q,databaseUrl:G.databaseUrl,natsUrls:G.natsUrls,...G.s3?{s3Endpoint:G.s3.endpoint,s3Bucket:G.s3.bucket,s3AccessKeyId:G.s3.accessKeyId,s3SecretAccessKey:G.s3.secretAccessKey,s3ForcePathStyle:G.s3.forcePathStyle}:{},...G.natsTunnel?{natsPublicUrl:G.natsTunnel.publicUrl,natsAccountJwt:G.natsTunnel.accountJwt,natsAccountSigningKey:G.natsTunnel.accountSigningKey,natsOperatorJwt:G.natsTunnel.operatorJwt,natsTunnelPublicEnabled:!0,natsCredsPath:G.natsTunnel.credsPath}:{}};return bc1(K),{settings:K,services:J.map((W)=>({name:W.name==="PostgreSQL"?"Postgres":W.name,port:W.port})),managedServiceNames:J.filter((W)=>W.owner==="managed").map((W)=>W.name)}}var ml0=O(()=>{kx();wd1();b8()});var Yn1={};w0(Yn1,{updateService:()=>pD,subscribeCliState:()=>pl0,setTuiConsoleIntercepted:()=>t50,setServerUrl:()=>km,setMigrationsDone:()=>Mm,setDevMode:()=>fc6,resetCliStateForTests:()=>vc6,isTuiConsoleIntercepted:()=>o50,getCliState:()=>nl0,addLogEntry:()=>zw});function Xn1(){return{services:[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}],migrationsStatus:"pending",serverUrl:null,logs:[]}}function vc6(){SQ=Xn1()}function xc6(){return[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}]}function qm(){for(let $ of il0)$()}function nl0(){return SQ}function pl0($){return il0.add($),()=>il0.delete($)}function pD($){SQ={...SQ,services:SQ.services.map((Z)=>Z.name===$.name?$:Z)},qm()}function Mm(){SQ={...SQ,migrationsStatus:"done"},qm()}function km($){SQ={...SQ,serverUrl:$},qm()}function zw($){let Z=[...SQ.logs,$];SQ={...SQ,logs:Z.length>500?Z.slice(-500):Z},qm()}function fc6(){SQ={...SQ,services:[...xc6(),{name:"API",status:"pending",port:0},{name:"Vite",status:"pending",port:0}]},qm()}function t50($){Qn1=$}function o50(){return Qn1}var SQ,il0,Qn1=!1;var tD=O(()=>{SQ=Xn1();il0=new Set});import{createServer as Gn1}from"net";function bc6($){return new Promise((Z)=>{let X=Gn1();X.once("error",()=>Z(!1)),X.listen($,"0.0.0.0",()=>{X.close(()=>Z(!0))})})}async function Vm($){if(await bc6($))return $;let Z=await new Promise((X,Q)=>{let Y=Gn1();Y.once("error",Q),Y.listen(0,"0.0.0.0",()=>{let G=Y.address(),J=typeof G==="object"&&G?G.port:0;Y.close(()=>X(J))})});return console.warn(`Port ${$} is in use, using port ${Z} instead.`),Z}var tl0=()=>{};function Sm($){return $.replace(/\x1b\[[0-9;]*m/g,"")}var ol0={};w0(ol0,{startDevServer:()=>gc6});import{join as yc6}from"path";function Jn1($){let Z=$.getReader(),X=new TextDecoder,Q="";function Y(){let G=Q.split(`
1335
- `);Q=G.pop()??"";for(let J of G){let K=Sm(J).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;zw({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:K})}}(async()=>{for(;;){let{done:G,value:J}=await Z.read();if(G)break;Q+=X.decode(J,{stream:!0}),Y()}if(Q.trim()){let G=Sm(Q).replace(/^\[\d+\]\s*/,"").trim();if(G)zw({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:G})}})()}async function gc6($){let{baseUrl:Z,noTui:X}=$,Q=process.env.HOST==="0.0.0.0"&&Boolean(process.env.PORT),Y=Q?process.env.PORT:$.vitePort,G=Z||`http://localhost:${Y}`,J=Q?await Vm(Number(Y)+1):await Vm(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await p50({port:String(J),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let L of W)pD({name:L.name,status:"ready",port:L.port});Mm();let U=yc6(import.meta.dir,"..","..","..","..",".."),N=X===!0,F=Bun.spawn(["bun","run","dev:servers"],{cwd:U,env:{...process.env,PORT:String(K.port),VITE_PORT:String(Y),DATABASE_URL:K.databaseUrl,NATS_URL:K.natsUrls.join(","),NODE_ENV:K.nodeEnv,BASE_URL:G,DECOCMS_LOCAL_MODE:String(K.localMode),DECOCMS_HOME:K.dataDir,DATA_DIR:K.dataDir,DECO_CLI:"1",...K.betterAuthSecret?{BETTER_AUTH_SECRET:K.betterAuthSecret}:{},...K.s3Endpoint?{S3_ENDPOINT:K.s3Endpoint,S3_BUCKET:K.s3Bucket??"",S3_ACCESS_KEY_ID:K.s3AccessKeyId??"",S3_SECRET_ACCESS_KEY:K.s3SecretAccessKey??"",S3_FORCE_PATH_STYLE:String(K.s3ForcePathStyle)}:{},...K.natsPublicUrl&&K.natsAccountJwt&&K.natsAccountSigningKey?{NATS_PUBLIC_URL:K.natsPublicUrl,NATS_ACCOUNT_JWT:K.natsAccountJwt,NATS_ACCOUNT_SIGNING_KEY:K.natsAccountSigningKey,NATS_OPERATOR_JWT:K.natsOperatorJwt??"",NATS_TUNNEL_PUBLIC_ENABLED:"true",...K.natsCredsPath?{NATS_CREDS:K.natsCredsPath}:{}}:{}},stdio:["inherit",N?"inherit":"pipe",N?"inherit":"pipe"]});if(!N)Jn1(F.stdout),Jn1(F.stderr);km(G),pD({name:"Vite",status:"ready",port:Number(Y)}),pD({name:"API",status:"ready",port:Number(K.port)});let B=async(L)=>{if(F.kill(L),await F.exited,H.length>0){let{stopServices:D}=await Promise.resolve().then(() => (Q50(),X50));await D(K.dataDir)}};return process.on("SIGINT",()=>B("SIGINT")),process.on("SIGTERM",()=>B("SIGTERM")),{port:Number(Y),process:F}}var rl0=O(()=>{ml0();tD();tl0()});var r50;var al0=O(()=>{r50={name:"decocms",version:"4.198.0",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"}}});import{Box as uc6,Text as Kn1}from"ink";import{jsx as cc6,jsxs as Wn1}from"react/jsx-runtime";function Hn1({version:$}){return Wn1(uc6,{flexDirection:"column",marginTop:1,children:[R50.map((Z,X)=>cc6(Kn1,{color:I50[X],children:Z},X)),Wn1(Kn1,{dimColor:!0,children:[" v",$]})]})}var Un1=O(()=>{Om()});import{Box as oD,Text as jw}from"ink";import{Spinner as lc6}from"@inkjs/ui";import{jsx as hY,jsxs as Qb}from"react/jsx-runtime";function Nn1({status:$}){if($==="pending")return hY(lc6,{label:""});return hY(jw,{color:"green",children:"\u2713"})}function dc6($){return`${$.name}: ${$.port||"...."}`}function Fn1({services:$,migrationsStatus:Z,home:X,serverUrl:Q}){return Qb(oD,{flexDirection:"column",paddingBottom:1,children:[hY(Hn1,{version:r50.version}),hY(oD,{marginBottom:1,children:hY(jw,{dimColor:!0,children:"\u2500".repeat(80)})}),hY(oD,{children:Qb(jw,{dimColor:!0,children:["Home: ",X]})}),Qb(oD,{gap:2,children:[$.map((Y)=>Qb(oD,{gap:1,children:[hY(jw,{children:dc6(Y)}),hY(Nn1,{status:Y.status})]},Y.name)),Qb(oD,{gap:1,children:[hY(jw,{children:"Migrations"}),hY(Nn1,{status:Z})]})]}),hY(oD,{children:Q?Qb(jw,{children:["Open in browser: ",hY(jw,{color:"cyan",children:Q})]}):hY(jw,{dimColor:!0,children:"Starting..."})})]})}var wn1=O(()=>{al0();Un1()});import{Box as mc6,Text as Cm}from"ink";import{jsx as sl0,jsxs as el0}from"react/jsx-runtime";function ic6($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function Bn1({logs:$}){return sl0(mc6,{flexDirection:"column",children:$.map((Z,X)=>{if(Z.rawLine)return sl0(Cm,{dimColor:!0,children:Z.rawLine},X);let Q=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return el0(Cm,{children:[el0(Cm,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),sl0(Cm,{color:ic6(Z.status),children:Z.status}),el0(Cm,{dimColor:!0,children:[" ",Q.padStart(8)]})]},X)})})}var On1=()=>{};var $d0={};w0($d0,{App:()=>tc6});import{Box as nc6}from"ink";import{useSyncExternalStore as pc6}from"react";import{jsx as Ln1,jsxs as oc6}from"react/jsx-runtime";function tc6({home:$}){let Z=pc6(pl0,nl0);return oc6(nc6,{flexDirection:"column",children:[Ln1(Fn1,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),Ln1(Bn1,{logs:Z.logs})]})}var Zd0=O(()=>{wn1();On1();tD()});var NJ="thread-gate",_U="decopilot-hosted-harness",nG="automations",Pw="background-tools";var Dn1="7";function En1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:Dn1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var zn1=()=>{};function rc6(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function Xd0($,Z){for(let X=0;X<$.length;X++){let Q=$[X];if(Q===void 0)continue;if(Q===Z)return $[X+1];if(Q.startsWith(`${Z}=`))return Q.slice(Z.length+1)}return}function jn1(){let $=rc6();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:Xd0($,"--cpu-prof-dir")??process.cwd(),name:Xd0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(Xd0($,"--cpu-prof-interval")??1000),note:"profile is written on process exit"}));return}if(process.env.CPU_PROFILE)console.warn(JSON.stringify({msg:"cpu-profiling-requested-but-inactive",hint:'CPU profiling is a Bun launch flag. Set BUN_OPTIONS="--cpu-prof --cpu-prof-md --cpu-prof-dir=/tmp" before starting the process.'}))}function Pn1(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let X=dD();if(!X)return;let Q={};try{let{heapStats:Y}=await import("bun:jsc"),G=Y(),J=Object.entries(G.objectTypeCounts).sort((K,W)=>W[1]-K[1]).slice(0,20);Q={objectCount:G.objectCount,heapSize:G.heapSize,top:Object.fromEntries(J)}}catch{}console.log(JSON.stringify({msg:"heap-watch",ts:new Date().toISOString(),uptimeS:Math.round(process.uptime()),rss:X.rss,heapUsed:X.heapUsed,heapTotal:X.heapTotal,external:X.external,arrayBuffers:X.arrayBuffers,...Q}))};return Z().catch(()=>{}),a50=setInterval(()=>void Z().catch(()=>{}),$),a50.unref?.(),process.on("SIGUSR2",()=>{try{let X=Bun.generateHeapSnapshot("v8"),Q=typeof X==="string"?X:JSON.stringify(X),Y=`/tmp/heap-${process.pid}-${Date.now()}.heapsnapshot`;Bun.write(Y,Q),console.log(JSON.stringify({msg:"heap-snapshot-written",path:Y}))}catch(X){console.error("[heap-watch] snapshot failed:",X)}}),()=>{if(a50)clearInterval(a50)}}var a50;var An1=()=>{};import*as ac6 from"bun:jsc";function Tn1(){if(process.env.STALL_WATCHDOG!=="1")return()=>{};let $=Number(process.env.STALL_WATCHDOG_MS??100),Z=Number(process.env.STALL_WATCHDOG_TICK_MS??50);try{sc6()}catch(G){return console.error("[stall-watchdog] failed to start sampling profiler:",G),()=>{}}let X,Q=performance.now()+Z,Y=()=>{let G=performance.now(),J=G-Q;Q=G+Z;let K=[];try{K=ec6()?.traces??[]}catch{}if(J>$&&K.length>0){let W=new Map;for(let U of K){let N=U.frames.find((B)=>B.sourceURL&&!/Unknown Executable/.test(B.category??""))??U.frames[0];if(!N)continue;let F=(N.sourceURL??"?").replace(/^.*\/node_modules\//,"node_modules/"),w=`${N.name??"?"} @ ${F}:${N.line??"?"}`;W.set(w,(W.get(w)??0)+1)}let H=[...W.entries()].sort((U,N)=>N[1]-U[1]).slice(0,8).map(([U,N])=>({frame:U,count:N}));console.warn(JSON.stringify({msg:"stall-stack",ts:new Date().toISOString(),lagMs:Math.round(J),samplesInWindow:K.length,top:H}))}X=setTimeout(Y,Z),X.unref?.()};return X=setTimeout(Y,Z),X.unref?.(),()=>{if(X)clearTimeout(X)}}var sc6,ec6;var Rn1=O(()=>{({startSamplingProfiler:sc6,samplingProfilerStackTraces:ec6}=ac6)});function In1(){jn1();let $=[Pn1(),Al1(),Tn1()];return()=>{for(let Z of $)Z()}}var qn1=O(()=>{Yh0();An1();Rn1()});var rD=_((Mn1)=>{Object.defineProperty(Mn1,"__esModule",{value:!0});Mn1.RepublishHeaders=Mn1.DirectMsgHeaders=Mn1.JsHeaders=Mn1.AdvisoryKind=void 0;Mn1.isOrderedPushConsumerOptions=$l6;Mn1.isPullConsumer=Zl6;Mn1.isPushConsumer=Xl6;Mn1.isBoundPushConsumerOptions=Ql6;function $l6($){if($&&typeof $==="object")return"name_prefix"in $||"deliver_subject_prefix"in $||"filter_subjects"in $||"filter_subject"in $||"deliver_policy"in $||"opt_start_seq"in $||"opt_start_time"in $||"replay_policy"in $||"inactive_threshold"in $||"headers_only"in $||"deliver_prefix"in $;return!1}function Zl6($){return $.isPullConsumer()}function Xl6($){return $.isPushConsumer()}function Ql6($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}Mn1.AdvisoryKind={API:"api_audit",StreamAction:"stream_action",ConsumerAction:"consumer_action",SnapshotCreate:"snapshot_create",SnapshotComplete:"snapshot_complete",RestoreCreate:"restore_create",RestoreComplete:"restore_complete",MaxDeliver:"max_deliver",Terminated:"terminated",Ack:"consumer_ack",StreamLeaderElected:"stream_leader_elected",StreamQuorumLost:"stream_quorum_lost",ConsumerLeaderElected:"consumer_leader_elected",ConsumerQuorumLost:"consumer_quorum_lost"};Mn1.JsHeaders={StreamSourceHdr:"Nats-Stream-Source",LastConsumerSeqHdr:"Nats-Last-Consumer",LastStreamSeqHdr:"Nats-Last-Stream",ConsumerStalledHdr:"Nats-Consumer-Stalled",MessageSizeHdr:"Nats-Msg-Size",RollupHdr:"Nats-Rollup",RollupValueSubject:"sub",RollupValueAll:"all",PendingMessagesHdr:"Nats-Pending-Messages",PendingBytesHdr:"Nats-Pending-Bytes",RequiredApiLevel:"Nats-Required-Api-Level"};Mn1.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};Mn1.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var uY=_((Vn1)=>{Object.defineProperty(Vn1,"__esModule",{value:!0});Vn1.TD=Vn1.TE=Vn1.Empty=void 0;Vn1.encode=Fl6;Vn1.decode=wl6;Vn1.Empty=new Uint8Array(0);Vn1.TE=new TextEncoder;Vn1.TD=new TextDecoder;function Nl6(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let X=new Uint8Array(Z),Q=0;for(let Y=0;Y<$.length;Y++)X.set($[Y],Q),Q+=$[Y].length;return X}function Fl6(...$){let Z=[];for(let X=0;X<$.length;X++)Z.push(Vn1.TE.encode($[X]));if(Z.length===0)return Vn1.Empty;if(Z.length===1)return Z[0];return Nl6(...Z)}function wl6($){if(!$||$.length===0)return"";return Vn1.TD.decode($)}});var cY=_((_n1)=>{Object.defineProperty(_n1,"__esModule",{value:!0});_n1.errors=_n1.PermissionViolationError=_n1.NoRespondersError=_n1.TimeoutError=_n1.RequestError=_n1.ProtocolError=_n1.ConnectionError=_n1.DrainingConnectionError=_n1.ClosedConnectionError=_n1.AuthorizationError=_n1.UserAuthenticationExpiredError=_n1.InvalidOperationError=_n1.InvalidArgumentError=_n1.InvalidSubjectError=void 0;class Yd0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}_n1.InvalidSubjectError=Yd0;class s50 extends Error{constructor($,Z){super($,Z);this.name="InvalidArgumentError"}static format($,Z,X){if(Array.isArray(Z)&&Z.length>1)Z=Z[0];if(Array.isArray($))$=$.map((Q)=>`'${Q}'`),$=$.join(",");else $=`'${$}'`;return new s50(`${$} ${Z}`,X)}}_n1.InvalidArgumentError=s50;class Gd0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}_n1.InvalidOperationError=Gd0;class e50 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new e50($);return null}}_n1.UserAuthenticationExpiredError=e50;class $90 extends Error{constructor($,Z){super($,Z);this.name="AuthorizationError"}static parse($){let Z=["authorization violation","account authentication expired","authentication timeout"],X=$.toLowerCase();for(let Q=0;Q<Z.length;Q++)if(X.indexOf(Z[Q])!==-1)return new $90($);return null}}_n1.AuthorizationError=$90;class Jd0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}_n1.ClosedConnectionError=Jd0;class Kd0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}_n1.DrainingConnectionError=Kd0;class Wd0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}_n1.ConnectionError=Wd0;class Hd0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}_n1.ProtocolError=Hd0;class Ud0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof Z90}}_n1.RequestError=Ud0;class Nd0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}_n1.TimeoutError=Nd0;class Z90 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}_n1.NoRespondersError=Z90;class X90 extends Error{operation;subject;queue;constructor($,Z,X,Q,Y){super($,Y);this.name="PermissionViolationError",this.operation=Z,this.subject=X,this.queue=Q}static parse($){if(($?$.toLowerCase():"").indexOf("permissions violation")===-1)return null;let X="publish",Q="",Y=void 0,G=$.match(/(Publish|Subscription) to "(\S+)"/);if(G){if(X=G[1].toLowerCase(),Q=G[2],X==="subscription"){let J=$.match(/using queue "(\S+)"/);if(J)Y=J[1]}}return new X90($,X,Q,Y)}}_n1.PermissionViolationError=X90;_n1.errors={AuthorizationError:$90,ClosedConnectionError:Jd0,ConnectionError:Wd0,DrainingConnectionError:Kd0,InvalidArgumentError:s50,InvalidOperationError:Gd0,InvalidSubjectError:Yd0,NoRespondersError:Z90,PermissionViolationError:X90,ProtocolError:Hd0,RequestError:Ud0,TimeoutError:Nd0,UserAuthenticationExpiredError:e50}});var FJ=_((yn1)=>{Object.defineProperty(yn1,"__esModule",{value:!0});yn1.SimpleMutex=yn1.Perf=void 0;yn1.extend=Sl6;yn1.render=Cl6;yn1.timeout=_l6;yn1.delay=vl6;yn1.deadline=xl6;yn1.deferred=wd0;yn1.debugDeferred=fl6;yn1.shuffle=bl6;yn1.collect=yl6;yn1.jitter=bn1;yn1.backoff=gl6;yn1.nanos=hl6;yn1.millis=ul6;yn1.randomToken=dl6;var Vl6=uY(),Fd0=cY();function Sl6($,...Z){for(let X=0;X<Z.length;X++){let Q=Z[X];Object.keys(Q).forEach(function(Y){$[Y]=Q[Y]})}return $}function Cl6($){return Vl6.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function _l6($,Z=!0){let X=Z?new Fd0.TimeoutError:null,Q,Y,G=new Promise((J,K)=>{Q={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(X===null)K(new Fd0.TimeoutError);else K(X)},$)});return Object.assign(G,Q)}function vl6($=0){let Z,X=new Promise((Q)=>{let Y=setTimeout(()=>{Q()},$);Z={cancel:()=>{if(Y)clearTimeout(Y),Q()}}});return Object.assign(X,Z)}async function xl6($,Z=1000){let X=wd0(),Q=setTimeout(()=>{X.reject(new Fd0.TimeoutError)},Z);try{return await Promise.race([$,X])}finally{clearTimeout(Q)}}function wd0(){let $={},Z=new Promise((X,Q)=>{$={resolve:X,reject:Q}});return Object.assign(Z,$)}function fl6(){let $={},Z=new Promise((X,Q)=>{$={resolve:(Y)=>{console.trace("resolve",Y),X(Y)},reject:(Y)=>{console.trace("reject"),Q(Y)}}});return Object.assign(Z,$)}function bl6($){for(let Z=$.length-1;Z>0;Z--){let X=Math.floor(Math.random()*(Z+1));[$[Z],$[X]]=[$[X],$[Z]]}return $}async function yl6($){let Z=[];for await(let X of $)Z.push(X);return Z}class xn1{timers;measures;constructor(){this.timers=new Map,this.measures=new Map}mark($){this.timers.set($,performance.now())}measure($,Z,X){let Q=this.timers.get(Z);if(Q===void 0)throw Error(`${Z} is not defined`);let Y=this.timers.get(X);if(Y===void 0)throw Error(`${X} is not defined`);this.measures.set($,Y-Q)}getEntries(){let $=[];return this.measures.forEach((Z,X)=>{$.push({name:X,duration:Z})}),$}}yn1.Perf=xn1;class fn1{max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=wd0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}yn1.SimpleMutex=fn1;function bn1($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function gl6($=[0,250,250,500,500,3000,5000]){if(!Array.isArray($))$=[0,250,250,500,500,3000,5000];let Z=$.length-1;return{backoff(X){return bn1(X>Z?$[Z]:$[X])}}}function hl6($){return $*1e6}function ul6($){return Math.floor($/1e6)}var cl6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",vU=new Uint8Array(62);for(let $=0;$<62;$++)vU[$]=cl6.charCodeAt($);var ll6=218340105584896;function dl6(){let $=Math.floor(Math.random()*ll6),Z=$%62,X=vU[Z];$=($-Z)/62,Z=$%62;let Q=vU[Z];$=($-Z)/62,Z=$%62;let Y=vU[Z];$=($-Z)/62,Z=$%62;let G=vU[Z];$=($-Z)/62,Z=$%62;let J=vU[Z];$=($-Z)/62,Z=$%62;let K=vU[Z];$=($-Z)/62,Z=$%62;let W=vU[Z];$=($-Z)/62;let H=vU[$];return String.fromCharCode(X,Q,Y,G,J,K,W,H)}});var in1=_((dn1)=>{Object.defineProperty(dn1,"__esModule",{value:!0});dn1.nuid=dn1.NuidImpl=void 0;var Gd6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",Aw=62,Y90=12,cn1=10,hn1=33,Jd6=333,un1=Y90+cn1,Od0=new Uint8Array(Aw);for(let $=0;$<Aw;$++)Od0[$]=Gd6.charCodeAt($);var Q90=4294967296,ln1=BigInt(Aw)**BigInt(cn1),_m=Number(ln1/(1n<<32n)),Bd0=Number(ln1%(1n<<32n));function Kd6($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function Wd6($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else Kd6($)}class Ld0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(un1),this.cbuf=new Uint8Array(Y90),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(_m+1)),this.seqLo=Math.floor(Math.random()*Q90);while($++<8&&this.seqHi===_m&&this.seqLo>=Bd0);if(this.seqHi===_m&&this.seqLo>=Bd0)this.seqLo=0;this.inc=Math.random()*(Jd6-hn1)+hn1|0}setPre(){Wd6(this.cbuf);for(let $=0;$<Y90;$++)this.buf[$]=Od0[this.cbuf[$]%Aw]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let X=un1-1;X>=Y90;X--){let Q=Math.floor($/Aw),G=($-Q*Aw)*Q90+Z,J=Math.floor(G/Aw),K=G-J*Aw;this.buf[X]=Od0[K],$=Q,Z=J}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=Q90)this.seqLo-=Q90,this.seqHi+=1;if(this.seqHi>_m||this.seqHi===_m&&this.seqLo>=Bd0)this.setPre(),this.initSeqAndInc();this.fillSeq();let $=this.buf;return String.fromCharCode($[0],$[1],$[2],$[3],$[4],$[5],$[6],$[7],$[8],$[9],$[10],$[11],$[12],$[13],$[14],$[15],$[16],$[17],$[18],$[19],$[20],$[21])}reset(){this.init()}}dn1.NuidImpl=Ld0;dn1.nuid=new Ld0});var on1=_((pn1)=>{Object.defineProperty(pn1,"__esModule",{value:!0});pn1.nuid=pn1.Nuid=void 0;var nn1=in1();pn1.Nuid=nn1.NuidImpl;pn1.nuid=nn1.nuid});var J90=_((G90)=>{Object.defineProperty(G90,"__esModule",{value:!0});G90.nuid=G90.Nuid=void 0;var rn1=on1();Object.defineProperty(G90,"Nuid",{enumerable:!0,get:function(){return rn1.Nuid}});Object.defineProperty(G90,"nuid",{enumerable:!0,get:function(){return rn1.nuid}})});var Tw=_((an1)=>{Object.defineProperty(an1,"__esModule",{value:!0});an1.DEFAULT_HOST=an1.DEFAULT_PORT=an1.Match=void 0;an1.syncIterator=Bd6;an1.createInbox=Od6;var Fd6=J90(),wd6=cY();an1.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function Bd6($){let Z=$[Symbol.asyncIterator]();return{async next(){let X=await Z.next();if(X.done)return Promise.resolve(null);return Promise.resolve(X.value)}}}function Od6($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw wd6.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${Fd6.nuid.next()}`}an1.DEFAULT_PORT=4222;an1.DEFAULT_HOST="127.0.0.1"});var vm=_((Zp1)=>{Object.defineProperty(Zp1,"__esModule",{value:!0});Zp1.DataBuffer=void 0;var en1=uY();class $p1{buffers;byteLength;constructor(){this.buffers=[],this.byteLength=0}static concat(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let X=new Uint8Array(Z),Q=0;for(let Y=0;Y<$.length;Y++)X.set($[Y],Q),Q+=$[Y].length;return X}static fromAscii($){if(!$)$="";return en1.TE.encode($)}static toAscii($){return en1.TD.decode($)}reset(){this.buffers.length=0,this.byteLength=0}pack(){if(this.buffers.length>1){let $=new Uint8Array(this.byteLength),Z=0;for(let X=0;X<this.buffers.length;X++)$.set(this.buffers[X],Z),Z+=this.buffers[X].length;this.buffers.length=0,this.buffers.push($)}}shift(){if(this.buffers.length){let $=this.buffers.shift();if($)return this.byteLength-=$.length,$}return new Uint8Array(0)}drain($){if(this.buffers.length){this.pack();let Z=this.buffers.pop();if(Z){let X=this.byteLength;if($===void 0||$>X)$=X;let Q=Z.subarray(0,$);if(X>$)this.buffers.push(Z.subarray($));return this.byteLength=X-$,Q}}return new Uint8Array(0)}fill($,...Z){if($)this.buffers.push($),this.byteLength+=$.length;for(let X=0;X<Z.length;X++)if(Z[X]&&Z[X].length)this.buffers.push(Z[X]),this.byteLength+=Z[X].length}peek(){if(this.buffers.length)return this.pack(),this.buffers[0];return new Uint8Array(0)}size(){return this.byteLength}length(){return this.buffers.length}}Zp1.DataBuffer=$p1});var aD=_((Yp1)=>{Object.defineProperty(Yp1,"__esModule",{value:!0});Yp1.LF=Yp1.CR=Yp1.CRLF=Yp1.CR_LF_LEN=Yp1.CR_LF=void 0;Yp1.setTransportFactory=Td6;Yp1.defaultPort=Rd6;Yp1.getUrlParseFn=Id6;Yp1.newTransport=qd6;Yp1.getResolveFn=Md6;Yp1.protoLen=Qp1;Yp1.extractProtocolMessage=kd6;var jd6=uY(),Pd6=Tw(),Ad6=vm(),lY;function Td6($){lY=$}function Rd6(){return lY!==void 0&&lY.defaultPort!==void 0?lY.defaultPort:Pd6.DEFAULT_PORT}function Id6(){return lY!==void 0&&lY.urlParseFn?lY.urlParseFn:void 0}function qd6(){if(!lY||typeof lY.factory!=="function")throw Error("transport fn is not set");return lY.factory()}function Md6(){return lY!==void 0&&lY.dnsResolveFn?lY.dnsResolveFn:void 0}Yp1.CR_LF=`\r
1335
+ `);Q=G.pop()??"";for(let J of G){let K=Sm(J).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;zw({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:K})}}(async()=>{for(;;){let{done:G,value:J}=await Z.read();if(G)break;Q+=X.decode(J,{stream:!0}),Y()}if(Q.trim()){let G=Sm(Q).replace(/^\[\d+\]\s*/,"").trim();if(G)zw({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:G})}})()}async function gc6($){let{baseUrl:Z,noTui:X}=$,Q=process.env.HOST==="0.0.0.0"&&Boolean(process.env.PORT),Y=Q?process.env.PORT:$.vitePort,G=Z||`http://localhost:${Y}`,J=Q?await Vm(Number(Y)+1):await Vm(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await p50({port:String(J),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let L of W)pD({name:L.name,status:"ready",port:L.port});Mm();let U=yc6(import.meta.dir,"..","..","..","..",".."),N=X===!0,F=Bun.spawn(["bun","run","dev:servers"],{cwd:U,env:{...process.env,PORT:String(K.port),VITE_PORT:String(Y),DATABASE_URL:K.databaseUrl,NATS_URL:K.natsUrls.join(","),NODE_ENV:K.nodeEnv,BASE_URL:G,DECOCMS_LOCAL_MODE:String(K.localMode),DECOCMS_HOME:K.dataDir,DATA_DIR:K.dataDir,DECO_CLI:"1",...K.betterAuthSecret?{BETTER_AUTH_SECRET:K.betterAuthSecret}:{},...K.s3Endpoint?{S3_ENDPOINT:K.s3Endpoint,S3_BUCKET:K.s3Bucket??"",S3_ACCESS_KEY_ID:K.s3AccessKeyId??"",S3_SECRET_ACCESS_KEY:K.s3SecretAccessKey??"",S3_FORCE_PATH_STYLE:String(K.s3ForcePathStyle)}:{},...K.natsPublicUrl&&K.natsAccountJwt&&K.natsAccountSigningKey?{NATS_PUBLIC_URL:K.natsPublicUrl,NATS_ACCOUNT_JWT:K.natsAccountJwt,NATS_ACCOUNT_SIGNING_KEY:K.natsAccountSigningKey,NATS_OPERATOR_JWT:K.natsOperatorJwt??"",NATS_TUNNEL_PUBLIC_ENABLED:"true",...K.natsCredsPath?{NATS_CREDS:K.natsCredsPath}:{}}:{}},stdio:["inherit",N?"inherit":"pipe",N?"inherit":"pipe"]});if(!N)Jn1(F.stdout),Jn1(F.stderr);km(G),pD({name:"Vite",status:"ready",port:Number(Y)}),pD({name:"API",status:"ready",port:Number(K.port)});let B=async(L)=>{if(F.kill(L),await F.exited,H.length>0){let{stopServices:D}=await Promise.resolve().then(() => (Q50(),X50));await D(K.dataDir)}};return process.on("SIGINT",()=>B("SIGINT")),process.on("SIGTERM",()=>B("SIGTERM")),{port:Number(Y),process:F}}var rl0=O(()=>{ml0();tD();tl0()});var r50;var al0=O(()=>{r50={name:"decocms",version:"4.198.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"}}});import{Box as uc6,Text as Kn1}from"ink";import{jsx as cc6,jsxs as Wn1}from"react/jsx-runtime";function Hn1({version:$}){return Wn1(uc6,{flexDirection:"column",marginTop:1,children:[R50.map((Z,X)=>cc6(Kn1,{color:I50[X],children:Z},X)),Wn1(Kn1,{dimColor:!0,children:[" v",$]})]})}var Un1=O(()=>{Om()});import{Box as oD,Text as jw}from"ink";import{Spinner as lc6}from"@inkjs/ui";import{jsx as hY,jsxs as Qb}from"react/jsx-runtime";function Nn1({status:$}){if($==="pending")return hY(lc6,{label:""});return hY(jw,{color:"green",children:"\u2713"})}function dc6($){return`${$.name}: ${$.port||"...."}`}function Fn1({services:$,migrationsStatus:Z,home:X,serverUrl:Q}){return Qb(oD,{flexDirection:"column",paddingBottom:1,children:[hY(Hn1,{version:r50.version}),hY(oD,{marginBottom:1,children:hY(jw,{dimColor:!0,children:"\u2500".repeat(80)})}),hY(oD,{children:Qb(jw,{dimColor:!0,children:["Home: ",X]})}),Qb(oD,{gap:2,children:[$.map((Y)=>Qb(oD,{gap:1,children:[hY(jw,{children:dc6(Y)}),hY(Nn1,{status:Y.status})]},Y.name)),Qb(oD,{gap:1,children:[hY(jw,{children:"Migrations"}),hY(Nn1,{status:Z})]})]}),hY(oD,{children:Q?Qb(jw,{children:["Open in browser: ",hY(jw,{color:"cyan",children:Q})]}):hY(jw,{dimColor:!0,children:"Starting..."})})]})}var wn1=O(()=>{al0();Un1()});import{Box as mc6,Text as Cm}from"ink";import{jsx as sl0,jsxs as el0}from"react/jsx-runtime";function ic6($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function Bn1({logs:$}){return sl0(mc6,{flexDirection:"column",children:$.map((Z,X)=>{if(Z.rawLine)return sl0(Cm,{dimColor:!0,children:Z.rawLine},X);let Q=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return el0(Cm,{children:[el0(Cm,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),sl0(Cm,{color:ic6(Z.status),children:Z.status}),el0(Cm,{dimColor:!0,children:[" ",Q.padStart(8)]})]},X)})})}var On1=()=>{};var $d0={};w0($d0,{App:()=>tc6});import{Box as nc6}from"ink";import{useSyncExternalStore as pc6}from"react";import{jsx as Ln1,jsxs as oc6}from"react/jsx-runtime";function tc6({home:$}){let Z=pc6(pl0,nl0);return oc6(nc6,{flexDirection:"column",children:[Ln1(Fn1,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),Ln1(Bn1,{logs:Z.logs})]})}var Zd0=O(()=>{wn1();On1();tD()});var NJ="thread-gate",_U="decopilot-hosted-harness",nG="automations",Pw="background-tools";var Dn1="7";function En1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:Dn1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var zn1=()=>{};function rc6(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function Xd0($,Z){for(let X=0;X<$.length;X++){let Q=$[X];if(Q===void 0)continue;if(Q===Z)return $[X+1];if(Q.startsWith(`${Z}=`))return Q.slice(Z.length+1)}return}function jn1(){let $=rc6();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:Xd0($,"--cpu-prof-dir")??process.cwd(),name:Xd0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(Xd0($,"--cpu-prof-interval")??1000),note:"profile is written on process exit"}));return}if(process.env.CPU_PROFILE)console.warn(JSON.stringify({msg:"cpu-profiling-requested-but-inactive",hint:'CPU profiling is a Bun launch flag. Set BUN_OPTIONS="--cpu-prof --cpu-prof-md --cpu-prof-dir=/tmp" before starting the process.'}))}function Pn1(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let X=dD();if(!X)return;let Q={};try{let{heapStats:Y}=await import("bun:jsc"),G=Y(),J=Object.entries(G.objectTypeCounts).sort((K,W)=>W[1]-K[1]).slice(0,20);Q={objectCount:G.objectCount,heapSize:G.heapSize,top:Object.fromEntries(J)}}catch{}console.log(JSON.stringify({msg:"heap-watch",ts:new Date().toISOString(),uptimeS:Math.round(process.uptime()),rss:X.rss,heapUsed:X.heapUsed,heapTotal:X.heapTotal,external:X.external,arrayBuffers:X.arrayBuffers,...Q}))};return Z().catch(()=>{}),a50=setInterval(()=>void Z().catch(()=>{}),$),a50.unref?.(),process.on("SIGUSR2",()=>{try{let X=Bun.generateHeapSnapshot("v8"),Q=typeof X==="string"?X:JSON.stringify(X),Y=`/tmp/heap-${process.pid}-${Date.now()}.heapsnapshot`;Bun.write(Y,Q),console.log(JSON.stringify({msg:"heap-snapshot-written",path:Y}))}catch(X){console.error("[heap-watch] snapshot failed:",X)}}),()=>{if(a50)clearInterval(a50)}}var a50;var An1=()=>{};import*as ac6 from"bun:jsc";function Tn1(){if(process.env.STALL_WATCHDOG!=="1")return()=>{};let $=Number(process.env.STALL_WATCHDOG_MS??100),Z=Number(process.env.STALL_WATCHDOG_TICK_MS??50);try{sc6()}catch(G){return console.error("[stall-watchdog] failed to start sampling profiler:",G),()=>{}}let X,Q=performance.now()+Z,Y=()=>{let G=performance.now(),J=G-Q;Q=G+Z;let K=[];try{K=ec6()?.traces??[]}catch{}if(J>$&&K.length>0){let W=new Map;for(let U of K){let N=U.frames.find((B)=>B.sourceURL&&!/Unknown Executable/.test(B.category??""))??U.frames[0];if(!N)continue;let F=(N.sourceURL??"?").replace(/^.*\/node_modules\//,"node_modules/"),w=`${N.name??"?"} @ ${F}:${N.line??"?"}`;W.set(w,(W.get(w)??0)+1)}let H=[...W.entries()].sort((U,N)=>N[1]-U[1]).slice(0,8).map(([U,N])=>({frame:U,count:N}));console.warn(JSON.stringify({msg:"stall-stack",ts:new Date().toISOString(),lagMs:Math.round(J),samplesInWindow:K.length,top:H}))}X=setTimeout(Y,Z),X.unref?.()};return X=setTimeout(Y,Z),X.unref?.(),()=>{if(X)clearTimeout(X)}}var sc6,ec6;var Rn1=O(()=>{({startSamplingProfiler:sc6,samplingProfilerStackTraces:ec6}=ac6)});function In1(){jn1();let $=[Pn1(),Al1(),Tn1()];return()=>{for(let Z of $)Z()}}var qn1=O(()=>{Yh0();An1();Rn1()});var rD=_((Mn1)=>{Object.defineProperty(Mn1,"__esModule",{value:!0});Mn1.RepublishHeaders=Mn1.DirectMsgHeaders=Mn1.JsHeaders=Mn1.AdvisoryKind=void 0;Mn1.isOrderedPushConsumerOptions=$l6;Mn1.isPullConsumer=Zl6;Mn1.isPushConsumer=Xl6;Mn1.isBoundPushConsumerOptions=Ql6;function $l6($){if($&&typeof $==="object")return"name_prefix"in $||"deliver_subject_prefix"in $||"filter_subjects"in $||"filter_subject"in $||"deliver_policy"in $||"opt_start_seq"in $||"opt_start_time"in $||"replay_policy"in $||"inactive_threshold"in $||"headers_only"in $||"deliver_prefix"in $;return!1}function Zl6($){return $.isPullConsumer()}function Xl6($){return $.isPushConsumer()}function Ql6($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}Mn1.AdvisoryKind={API:"api_audit",StreamAction:"stream_action",ConsumerAction:"consumer_action",SnapshotCreate:"snapshot_create",SnapshotComplete:"snapshot_complete",RestoreCreate:"restore_create",RestoreComplete:"restore_complete",MaxDeliver:"max_deliver",Terminated:"terminated",Ack:"consumer_ack",StreamLeaderElected:"stream_leader_elected",StreamQuorumLost:"stream_quorum_lost",ConsumerLeaderElected:"consumer_leader_elected",ConsumerQuorumLost:"consumer_quorum_lost"};Mn1.JsHeaders={StreamSourceHdr:"Nats-Stream-Source",LastConsumerSeqHdr:"Nats-Last-Consumer",LastStreamSeqHdr:"Nats-Last-Stream",ConsumerStalledHdr:"Nats-Consumer-Stalled",MessageSizeHdr:"Nats-Msg-Size",RollupHdr:"Nats-Rollup",RollupValueSubject:"sub",RollupValueAll:"all",PendingMessagesHdr:"Nats-Pending-Messages",PendingBytesHdr:"Nats-Pending-Bytes",RequiredApiLevel:"Nats-Required-Api-Level"};Mn1.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};Mn1.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var uY=_((Vn1)=>{Object.defineProperty(Vn1,"__esModule",{value:!0});Vn1.TD=Vn1.TE=Vn1.Empty=void 0;Vn1.encode=Fl6;Vn1.decode=wl6;Vn1.Empty=new Uint8Array(0);Vn1.TE=new TextEncoder;Vn1.TD=new TextDecoder;function Nl6(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let X=new Uint8Array(Z),Q=0;for(let Y=0;Y<$.length;Y++)X.set($[Y],Q),Q+=$[Y].length;return X}function Fl6(...$){let Z=[];for(let X=0;X<$.length;X++)Z.push(Vn1.TE.encode($[X]));if(Z.length===0)return Vn1.Empty;if(Z.length===1)return Z[0];return Nl6(...Z)}function wl6($){if(!$||$.length===0)return"";return Vn1.TD.decode($)}});var cY=_((_n1)=>{Object.defineProperty(_n1,"__esModule",{value:!0});_n1.errors=_n1.PermissionViolationError=_n1.NoRespondersError=_n1.TimeoutError=_n1.RequestError=_n1.ProtocolError=_n1.ConnectionError=_n1.DrainingConnectionError=_n1.ClosedConnectionError=_n1.AuthorizationError=_n1.UserAuthenticationExpiredError=_n1.InvalidOperationError=_n1.InvalidArgumentError=_n1.InvalidSubjectError=void 0;class Yd0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}_n1.InvalidSubjectError=Yd0;class s50 extends Error{constructor($,Z){super($,Z);this.name="InvalidArgumentError"}static format($,Z,X){if(Array.isArray(Z)&&Z.length>1)Z=Z[0];if(Array.isArray($))$=$.map((Q)=>`'${Q}'`),$=$.join(",");else $=`'${$}'`;return new s50(`${$} ${Z}`,X)}}_n1.InvalidArgumentError=s50;class Gd0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}_n1.InvalidOperationError=Gd0;class e50 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new e50($);return null}}_n1.UserAuthenticationExpiredError=e50;class $90 extends Error{constructor($,Z){super($,Z);this.name="AuthorizationError"}static parse($){let Z=["authorization violation","account authentication expired","authentication timeout"],X=$.toLowerCase();for(let Q=0;Q<Z.length;Q++)if(X.indexOf(Z[Q])!==-1)return new $90($);return null}}_n1.AuthorizationError=$90;class Jd0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}_n1.ClosedConnectionError=Jd0;class Kd0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}_n1.DrainingConnectionError=Kd0;class Wd0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}_n1.ConnectionError=Wd0;class Hd0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}_n1.ProtocolError=Hd0;class Ud0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof Z90}}_n1.RequestError=Ud0;class Nd0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}_n1.TimeoutError=Nd0;class Z90 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}_n1.NoRespondersError=Z90;class X90 extends Error{operation;subject;queue;constructor($,Z,X,Q,Y){super($,Y);this.name="PermissionViolationError",this.operation=Z,this.subject=X,this.queue=Q}static parse($){if(($?$.toLowerCase():"").indexOf("permissions violation")===-1)return null;let X="publish",Q="",Y=void 0,G=$.match(/(Publish|Subscription) to "(\S+)"/);if(G){if(X=G[1].toLowerCase(),Q=G[2],X==="subscription"){let J=$.match(/using queue "(\S+)"/);if(J)Y=J[1]}}return new X90($,X,Q,Y)}}_n1.PermissionViolationError=X90;_n1.errors={AuthorizationError:$90,ClosedConnectionError:Jd0,ConnectionError:Wd0,DrainingConnectionError:Kd0,InvalidArgumentError:s50,InvalidOperationError:Gd0,InvalidSubjectError:Yd0,NoRespondersError:Z90,PermissionViolationError:X90,ProtocolError:Hd0,RequestError:Ud0,TimeoutError:Nd0,UserAuthenticationExpiredError:e50}});var FJ=_((yn1)=>{Object.defineProperty(yn1,"__esModule",{value:!0});yn1.SimpleMutex=yn1.Perf=void 0;yn1.extend=Sl6;yn1.render=Cl6;yn1.timeout=_l6;yn1.delay=vl6;yn1.deadline=xl6;yn1.deferred=wd0;yn1.debugDeferred=fl6;yn1.shuffle=bl6;yn1.collect=yl6;yn1.jitter=bn1;yn1.backoff=gl6;yn1.nanos=hl6;yn1.millis=ul6;yn1.randomToken=dl6;var Vl6=uY(),Fd0=cY();function Sl6($,...Z){for(let X=0;X<Z.length;X++){let Q=Z[X];Object.keys(Q).forEach(function(Y){$[Y]=Q[Y]})}return $}function Cl6($){return Vl6.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function _l6($,Z=!0){let X=Z?new Fd0.TimeoutError:null,Q,Y,G=new Promise((J,K)=>{Q={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(X===null)K(new Fd0.TimeoutError);else K(X)},$)});return Object.assign(G,Q)}function vl6($=0){let Z,X=new Promise((Q)=>{let Y=setTimeout(()=>{Q()},$);Z={cancel:()=>{if(Y)clearTimeout(Y),Q()}}});return Object.assign(X,Z)}async function xl6($,Z=1000){let X=wd0(),Q=setTimeout(()=>{X.reject(new Fd0.TimeoutError)},Z);try{return await Promise.race([$,X])}finally{clearTimeout(Q)}}function wd0(){let $={},Z=new Promise((X,Q)=>{$={resolve:X,reject:Q}});return Object.assign(Z,$)}function fl6(){let $={},Z=new Promise((X,Q)=>{$={resolve:(Y)=>{console.trace("resolve",Y),X(Y)},reject:(Y)=>{console.trace("reject"),Q(Y)}}});return Object.assign(Z,$)}function bl6($){for(let Z=$.length-1;Z>0;Z--){let X=Math.floor(Math.random()*(Z+1));[$[Z],$[X]]=[$[X],$[Z]]}return $}async function yl6($){let Z=[];for await(let X of $)Z.push(X);return Z}class xn1{timers;measures;constructor(){this.timers=new Map,this.measures=new Map}mark($){this.timers.set($,performance.now())}measure($,Z,X){let Q=this.timers.get(Z);if(Q===void 0)throw Error(`${Z} is not defined`);let Y=this.timers.get(X);if(Y===void 0)throw Error(`${X} is not defined`);this.measures.set($,Y-Q)}getEntries(){let $=[];return this.measures.forEach((Z,X)=>{$.push({name:X,duration:Z})}),$}}yn1.Perf=xn1;class fn1{max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=wd0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}yn1.SimpleMutex=fn1;function bn1($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function gl6($=[0,250,250,500,500,3000,5000]){if(!Array.isArray($))$=[0,250,250,500,500,3000,5000];let Z=$.length-1;return{backoff(X){return bn1(X>Z?$[Z]:$[X])}}}function hl6($){return $*1e6}function ul6($){return Math.floor($/1e6)}var cl6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",vU=new Uint8Array(62);for(let $=0;$<62;$++)vU[$]=cl6.charCodeAt($);var ll6=218340105584896;function dl6(){let $=Math.floor(Math.random()*ll6),Z=$%62,X=vU[Z];$=($-Z)/62,Z=$%62;let Q=vU[Z];$=($-Z)/62,Z=$%62;let Y=vU[Z];$=($-Z)/62,Z=$%62;let G=vU[Z];$=($-Z)/62,Z=$%62;let J=vU[Z];$=($-Z)/62,Z=$%62;let K=vU[Z];$=($-Z)/62,Z=$%62;let W=vU[Z];$=($-Z)/62;let H=vU[$];return String.fromCharCode(X,Q,Y,G,J,K,W,H)}});var in1=_((dn1)=>{Object.defineProperty(dn1,"__esModule",{value:!0});dn1.nuid=dn1.NuidImpl=void 0;var Gd6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",Aw=62,Y90=12,cn1=10,hn1=33,Jd6=333,un1=Y90+cn1,Od0=new Uint8Array(Aw);for(let $=0;$<Aw;$++)Od0[$]=Gd6.charCodeAt($);var Q90=4294967296,ln1=BigInt(Aw)**BigInt(cn1),_m=Number(ln1/(1n<<32n)),Bd0=Number(ln1%(1n<<32n));function Kd6($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function Wd6($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else Kd6($)}class Ld0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(un1),this.cbuf=new Uint8Array(Y90),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(_m+1)),this.seqLo=Math.floor(Math.random()*Q90);while($++<8&&this.seqHi===_m&&this.seqLo>=Bd0);if(this.seqHi===_m&&this.seqLo>=Bd0)this.seqLo=0;this.inc=Math.random()*(Jd6-hn1)+hn1|0}setPre(){Wd6(this.cbuf);for(let $=0;$<Y90;$++)this.buf[$]=Od0[this.cbuf[$]%Aw]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let X=un1-1;X>=Y90;X--){let Q=Math.floor($/Aw),G=($-Q*Aw)*Q90+Z,J=Math.floor(G/Aw),K=G-J*Aw;this.buf[X]=Od0[K],$=Q,Z=J}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=Q90)this.seqLo-=Q90,this.seqHi+=1;if(this.seqHi>_m||this.seqHi===_m&&this.seqLo>=Bd0)this.setPre(),this.initSeqAndInc();this.fillSeq();let $=this.buf;return String.fromCharCode($[0],$[1],$[2],$[3],$[4],$[5],$[6],$[7],$[8],$[9],$[10],$[11],$[12],$[13],$[14],$[15],$[16],$[17],$[18],$[19],$[20],$[21])}reset(){this.init()}}dn1.NuidImpl=Ld0;dn1.nuid=new Ld0});var on1=_((pn1)=>{Object.defineProperty(pn1,"__esModule",{value:!0});pn1.nuid=pn1.Nuid=void 0;var nn1=in1();pn1.Nuid=nn1.NuidImpl;pn1.nuid=nn1.nuid});var J90=_((G90)=>{Object.defineProperty(G90,"__esModule",{value:!0});G90.nuid=G90.Nuid=void 0;var rn1=on1();Object.defineProperty(G90,"Nuid",{enumerable:!0,get:function(){return rn1.Nuid}});Object.defineProperty(G90,"nuid",{enumerable:!0,get:function(){return rn1.nuid}})});var Tw=_((an1)=>{Object.defineProperty(an1,"__esModule",{value:!0});an1.DEFAULT_HOST=an1.DEFAULT_PORT=an1.Match=void 0;an1.syncIterator=Bd6;an1.createInbox=Od6;var Fd6=J90(),wd6=cY();an1.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function Bd6($){let Z=$[Symbol.asyncIterator]();return{async next(){let X=await Z.next();if(X.done)return Promise.resolve(null);return Promise.resolve(X.value)}}}function Od6($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw wd6.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${Fd6.nuid.next()}`}an1.DEFAULT_PORT=4222;an1.DEFAULT_HOST="127.0.0.1"});var vm=_((Zp1)=>{Object.defineProperty(Zp1,"__esModule",{value:!0});Zp1.DataBuffer=void 0;var en1=uY();class $p1{buffers;byteLength;constructor(){this.buffers=[],this.byteLength=0}static concat(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let X=new Uint8Array(Z),Q=0;for(let Y=0;Y<$.length;Y++)X.set($[Y],Q),Q+=$[Y].length;return X}static fromAscii($){if(!$)$="";return en1.TE.encode($)}static toAscii($){return en1.TD.decode($)}reset(){this.buffers.length=0,this.byteLength=0}pack(){if(this.buffers.length>1){let $=new Uint8Array(this.byteLength),Z=0;for(let X=0;X<this.buffers.length;X++)$.set(this.buffers[X],Z),Z+=this.buffers[X].length;this.buffers.length=0,this.buffers.push($)}}shift(){if(this.buffers.length){let $=this.buffers.shift();if($)return this.byteLength-=$.length,$}return new Uint8Array(0)}drain($){if(this.buffers.length){this.pack();let Z=this.buffers.pop();if(Z){let X=this.byteLength;if($===void 0||$>X)$=X;let Q=Z.subarray(0,$);if(X>$)this.buffers.push(Z.subarray($));return this.byteLength=X-$,Q}}return new Uint8Array(0)}fill($,...Z){if($)this.buffers.push($),this.byteLength+=$.length;for(let X=0;X<Z.length;X++)if(Z[X]&&Z[X].length)this.buffers.push(Z[X]),this.byteLength+=Z[X].length}peek(){if(this.buffers.length)return this.pack(),this.buffers[0];return new Uint8Array(0)}size(){return this.byteLength}length(){return this.buffers.length}}Zp1.DataBuffer=$p1});var aD=_((Yp1)=>{Object.defineProperty(Yp1,"__esModule",{value:!0});Yp1.LF=Yp1.CR=Yp1.CRLF=Yp1.CR_LF_LEN=Yp1.CR_LF=void 0;Yp1.setTransportFactory=Td6;Yp1.defaultPort=Rd6;Yp1.getUrlParseFn=Id6;Yp1.newTransport=qd6;Yp1.getResolveFn=Md6;Yp1.protoLen=Qp1;Yp1.extractProtocolMessage=kd6;var jd6=uY(),Pd6=Tw(),Ad6=vm(),lY;function Td6($){lY=$}function Rd6(){return lY!==void 0&&lY.defaultPort!==void 0?lY.defaultPort:Pd6.DEFAULT_PORT}function Id6(){return lY!==void 0&&lY.urlParseFn?lY.urlParseFn:void 0}function qd6(){if(!lY||typeof lY.factory!=="function")throw Error("transport fn is not set");return lY.factory()}function Md6(){return lY!==void 0&&lY.dnsResolveFn?lY.dnsResolveFn:void 0}Yp1.CR_LF=`\r
1336
1336
  `;Yp1.CR_LF_LEN=Yp1.CR_LF.length;Yp1.CRLF=Ad6.DataBuffer.fromAscii(Yp1.CR_LF);Yp1.CR=new Uint8Array(Yp1.CRLF)[0];Yp1.LF=new Uint8Array(Yp1.CRLF)[1];function Qp1($){for(let Z=0;Z<$.length;Z++){let X=Z+1;if($.byteLength>X&&$[Z]===Yp1.CR&&$[X]===Yp1.LF)return X+1}return 0}function kd6($){let Z=Qp1($);if(Z>0){let Q=new Uint8Array($).slice(0,Z);return jd6.TD.decode(Q)}return""}});var Pd0=_((Fp1)=>{Object.defineProperty(Fp1,"__esModule",{value:!0});Fp1.ipV4=Hp1;Fp1.isIP=hd6;Fp1.parseIP=Up1;var xm=4,sD=16,K90=48,Wp1=57,Jp1=65,yd6=70,Kp1=97,gd6=102,jd0=16777215;function Hp1($,Z,X,Q){let Y=new Uint8Array(sD);return[0,0,0,0,0,0,0,0,0,0,255,255].forEach((J,K)=>{Y[K]=J}),Y[12]=$,Y[13]=Z,Y[14]=X,Y[15]=Q,Y}function hd6($){return Up1($)!==void 0}function Up1($){for(let Z=0;Z<$.length;Z++)switch($[Z]){case".":return Np1($);case":":return ud6($)}return}function Np1($){let Z=new Uint8Array(xm);for(let X=0;X<xm;X++){if($.length===0)return;if(X>0){if($[0]!==".")return;$=$.substring(1)}let{n:Q,c:Y,ok:G}=cd6($);if(!G||Q>255)return;$=$.substring(Y),Z[X]=Q}return Hp1(Z[0],Z[1],Z[2],Z[3])}function ud6($){let Z=new Uint8Array(sD),X=-1;if($.length>=2&&$[0]===":"&&$[1]===":"){if(X=0,$=$.substring(2),$.length===0)return Z}let Q=0;while(Q<sD){let{n:Y,c:G,ok:J}=ld6($);if(!J||Y>65535)return;if(G<$.length&&$[G]==="."){if(X<0&&Q!=sD-xm)return;if(Q+xm>sD)return;let K=Np1($);if(K===void 0)return;Z[Q]=K[12],Z[Q+1]=K[13],Z[Q+2]=K[14],Z[Q+3]=K[15],$="",Q+=xm;break}if(Z[Q]=Y>>8,Z[Q+1]=Y,Q+=2,$=$.substring(G),$.length===0)break;if($[0]!==":"||$.length==1)return;if($=$.substring(1),$[0]===":"){if(X>=0)return;if(X=Q,$=$.substring(1),$.length===0)break}}if($.length!==0)return;if(Q<sD){if(X<0)return;let Y=sD-Q;for(let G=Q-1;G>=X;G--)Z[G+Y]=Z[G];for(let G=X+Y-1;G>=X;G--)Z[G]=0}else if(X>=0)return;return Z}function cd6($){let Z=0,X=0;for(Z=0;Z<$.length&&K90<=$.charCodeAt(Z)&&$.charCodeAt(Z)<=Wp1;Z++)if(X=X*10+($.charCodeAt(Z)-K90),X>=jd0)return{n:jd0,c:Z,ok:!1};if(Z===0)return{n:0,c:0,ok:!1};return{n:X,c:Z,ok:!0}}function ld6($){let Z=0,X=0;for(X=0;X<$.length;X++){if(K90<=$.charCodeAt(X)&&$.charCodeAt(X)<=Wp1)Z*=16,Z+=$.charCodeAt(X)-K90;else if(Kp1<=$.charCodeAt(X)&&$.charCodeAt(X)<=gd6)Z*=16,Z+=$.charCodeAt(X)-Kp1+10;else if(Jp1<=$.charCodeAt(X)&&$.charCodeAt(X)<=yd6)Z*=16,Z+=$.charCodeAt(X)-Jp1+10;else break;if(Z>=jd0)return{n:0,c:X,ok:!1}}if(X===0)return{n:0,c:X,ok:!1};return{n:Z,c:X,ok:!0}}});var Md0=_((Bp1)=>{Object.defineProperty(Bp1,"__esModule",{value:!0});Bp1.Servers=Bp1.ServerImpl=void 0;Bp1.isIPV4OrHostname=wp1;Bp1.hostPort=qd0;var Ad0=aD(),Td0=FJ(),Rd0=Pd0(),nd6=Tw(),pd6=cY();function wp1($){if($.indexOf("[")!==-1||$.indexOf("::")!==-1)return!1;if($.indexOf(".")!==-1)return!0;if($.split(":").length<=2)return!0;return!1}function Id0($){return!wp1($)}function td6($){let X=$.toUpperCase().indexOf("::FFFF:");if(X!==-1&&$.indexOf(".")!==-1){let Q=$.substring(X+7);return Q=Q.replace("[",""),Q.replace("]","")}return $}function qd0($){if($=$.trim(),$.match(/^(.*:\/\/)(.*)/m))$=$.replace(/^(.*:\/\/)(.*)/gm,"$2");if($=td6($),Id0($)&&$.indexOf("[")===-1)$=`[${$}]`;let Z=Id0($)?$.match(/(]:)(\d+)/):$.match(/(:)(\d+)/),X=Z&&Z.length===3&&Z[1]&&Z[2]?parseInt(Z[2]):nd6.DEFAULT_PORT,Y=new URL(`${X===80?"https":"http"}://${$}`);Y.port=`${X}`;let G=Y.hostname;if(G.charAt(0)==="[")G=G.substring(1,G.length-1);return{listen:Y.host,hostname:G,port:X}}class Yb{src;listen;hostname;port;didConnect;reconnects;lastConnect;gossiped;tlsName;resolves;constructor($,Z=!1){this.src=$,this.tlsName="";let X=qd0($);this.listen=X.listen,this.hostname=X.hostname,this.port=X.port,this.didConnect=!1,this.reconnects=0,this.lastConnect=0,this.gossiped=Z}toString(){return this.listen}async resolve($){if(!$.fn||$.resolve===!1)return[this];let Z=[];if((0,Rd0.isIP)(this.hostname))return[this];else{let X=await $.fn(this.hostname);if($.debug)console.log(`resolve ${this.hostname} = ${X.join(",")}`);for(let Q of X){let Y=this.port===80?"https":"http",G=new URL(`${Y}://${Id0(Q)?"["+Q+"]":Q}`);G.port=`${this.port}`;let J=new Yb(G.host,!1);J.tlsName=this.hostname,Z.push(J)}}if($.randomize)(0,Td0.shuffle)(Z);return this.resolves=Z,Z}}Bp1.ServerImpl=Yb;class W90{firstSelect;servers;currentServer;tlsName;randomize;constructor($={}){this.firstSelect=!0,this.servers=[],this.tlsName="",this.randomize=$.randomize||!1}setServers($){if(!Array.isArray($)||$.length===0)throw pd6.InvalidArgumentError.format("servers","cannot be empty");let Z=(0,Ad0.getUrlParseFn)(),X=new Map;for(let Y of this.servers)X.set(Y.listen,Y);let Q=[];for(let Y of $){Y=Z?Z(Y):Y;let{listen:G}=qd0(Y),J=X.get(G);if(J)J.gossiped=!1,Q.push(J);else Q.push(new Yb(Y))}if(this.randomize)(0,Td0.shuffle)(Q);if(this.servers=Q,this.currentServer===void 0||!Q.includes(this.currentServer))this.currentServer=Q[0],this.firstSelect=!0}clear(){this.servers.length=0}updateTLSName(){let $=this.getCurrentServer();if(!(0,Rd0.isIP)($.hostname))this.tlsName=$.hostname,this.servers.forEach((Z)=>{if(Z.gossiped)Z.tlsName=this.tlsName})}getCurrentServer(){return this.currentServer}addServer($,Z=!1){let X=(0,Ad0.getUrlParseFn)();$=X?X($):$;let Q=new Yb($,Z);if((0,Rd0.isIP)(Q.hostname))Q.tlsName=this.tlsName;this.servers.push(Q)}selectServer(){if(this.firstSelect)return this.firstSelect=!1,this.currentServer;let $=this.servers.shift();if($)this.servers.push($),this.currentServer=$;return $}removeCurrentServer(){this.removeServer(this.currentServer)}removeServer($){if($){let Z=this.servers.indexOf($);this.servers.splice(Z,1)}}snapshot(){return W90.freezeAll(this.servers)}snapshotForHandler(){let $=this.currentServer;if(!$)return this.snapshot();let Z=this.servers.indexOf($);if(Z<=0)return this.snapshot();return W90.freezeAll([$,...this.servers.slice(0,Z),...this.servers.slice(Z+1)])}static freezeAll($){return $.map((Z)=>Object.freeze({hostname:Z.hostname,port:Z.port,listen:Z.listen,src:Z.src,tlsName:Z.tlsName,reconnects:Z.reconnects,lastConnect:Z.lastConnect,gossiped:Z.gossiped,didConnect:Z.didConnect}))}find($){return this.servers.find((Z)=>Z.listen===$.listen)}setCurrent($){this.currentServer=$}length(){return this.servers.length}next(){return this.servers.length?this.servers[0]:void 0}getServers(){return this.servers}update($,Z){let X=[],Q=[],Y=(0,Ad0.getUrlParseFn)(),G=new Map;if($.connect_urls&&$.connect_urls.length>0)$.connect_urls.forEach((K)=>{K=Y?Y(K,Z):K;let W=new Yb(K,!0);G.set(K,W)});let J=[];if(this.servers.forEach((K,W)=>{let H=K.listen;if(K.gossiped&&this.currentServer.listen!==H&&G.get(H)===void 0)J.push(W);G.delete(H)}),J.reverse(),J.forEach((K)=>{let W=this.servers.splice(K,1);Q=Q.concat(W[0].listen)}),G.forEach((K,W)=>{this.servers.push(K),X.push(W)}),this.randomize&&X.length>0){let K=this.currentServer,W=this.servers.filter((H)=>H!==K);(0,Td0.shuffle)(W),this.servers=K?[K,...W]:W}return{added:X,deleted:Q}}}Bp1.Servers=W90});var H90=_((Ep1)=>{Object.defineProperty(Ep1,"__esModule",{value:!0});Ep1.QueuedIteratorImpl=void 0;var kd0=FJ(),Lp1=cY();class Dp1{inflight;processed;received;noIterator;iterClosed;done;signal;yields;filtered;pendingFiltered;ctx;_data;err;time;profile;yielding;didBreak;constructor(){this.inflight=0,this.filtered=0,this.pendingFiltered=0,this.processed=0,this.received=0,this.noIterator=!1,this.done=!1,this.signal=(0,kd0.deferred)(),this.yields=[],this.iterClosed=(0,kd0.deferred)(),this.time=0,this.yielding=!1,this.didBreak=!1,this.profile=!1}[Symbol.asyncIterator](){return this.iterate()}push($){if(this.done)return;if(this.didBreak){if(typeof $==="function"){let Z=$;try{Z()}catch(X){}}return}if(typeof $==="function")this.pendingFiltered++;this.yields.push($),this.signal.resolve()}async*iterate(){if(this.noIterator)throw new Lp1.InvalidOperationError("iterator cannot be used when a callback is registered");if(this.yielding)throw new Lp1.InvalidOperationError("iterator is already yielding");this.yielding=!0;try{while(!0){if(this.yields.length===0)await this.signal;if(this.err)throw this.err;let $=this.yields;this.inflight=$.length,this.yields=[];for(let Z=0;Z<$.length;Z++){if(typeof $[Z]==="function"){this.pendingFiltered--;let Q=$[Z];try{Q()}catch(Y){throw Y}if(this.err)throw this.err;continue}this.processed++,this.inflight--;let X=this.profile?Date.now():0;yield $[Z],this.time=this.profile?Date.now()-X:0}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,kd0.deferred)()}}finally{this.didBreak=!0,this.stop()}}stop($){if(this.done)return;this.err=$,this.done=!0,this.signal.resolve(),this.iterClosed.resolve($)}getProcessed(){return this.noIterator?this.received:this.processed}getPending(){return this.yields.length+this.inflight-this.pendingFiltered}getReceived(){return this.received-this.filtered}}Ep1.QueuedIteratorImpl=Dp1});var Vd0=_((Ap1)=>{Object.defineProperty(Ap1,"__esModule",{value:!0});Ap1.MuxSubscription=void 0;var sd6=Tw(),jp1=cY();class Pp1{baseInbox;reqs;constructor(){this.reqs=new Map}size(){return this.reqs.size}init($){return this.baseInbox=`${(0,sd6.createInbox)($)}.`,this.baseInbox}add($){if(!isNaN($.received))$.received=0;this.reqs.set($.token,$)}get($){return this.reqs.get($)}cancel($){this.reqs.delete($.token)}getToken($){let Z=$.subject||"";if(Z.indexOf(this.baseInbox)===0)return Z.substring(this.baseInbox.length);return null}all(){return Array.from(this.reqs.values())}handleError($,Z){if($)return this.all().forEach((X)=>{X.resolver(Z,{})}),!0;if(Z.operation==="publish"){let X=this.all().find((Q)=>{return Q.requestSubject===Z.subject});if(X)return X.resolver(Z,{}),!0}return!1}dispatcher(){return($,Z)=>{let X=this.getToken(Z);if(X){let Q=this.get(X);if(Q){if($===null)$=Z?.data?.length===0&&Z.headers?.code===503?new jp1.NoRespondersError(Q.requestSubject):null;Q.resolver($,Z)}}}}close(){let $=new jp1.RequestError("connection closed");this.reqs.forEach((Z)=>{Z.resolver($,{})})}}Ap1.MuxSubscription=Pp1});var Sd0=_((Ip1)=>{Object.defineProperty(Ip1,"__esModule",{value:!0});Ip1.Heartbeat=void 0;var ed6=FJ();class Rp1{ph;interval;maxOut;timer;pendings;constructor($,Z,X){this.ph=$,this.interval=Z,this.maxOut=X,this.pendings=[]}start(){this.cancel(),this._schedule()}cancel($){if(this.timer)clearTimeout(this.timer),this.timer=void 0;if(this._reset(),$)this.ph.disconnect()}_schedule(){this.timer=setTimeout(()=>{if(this.ph.dispatchStatus({type:"ping",pendingPings:this.pendings.length+1}),this.pendings.length===this.maxOut){this.cancel(!0);return}let $=(0,ed6.deferred)();this.ph.flush($).then(()=>{this._reset()}).catch(()=>{this.cancel()}),this.pendings.push($),this._schedule()},this.interval)}_reset(){this.pendings=this.pendings.filter(($)=>{return $.resolve(),!1})}}Ip1.Heartbeat=Rp1});var vd0=_((Sp1)=>{Object.defineProperty(Sp1,"__esModule",{value:!0});Sp1.DenoBuffer=Sp1.MAX_SIZE=Sp1.AssertionError=void 0;Sp1.assert=kp1;Sp1.concat=Vp1;Sp1.append=Zm6;Sp1.readAll=Xm6;Sp1.writeAll=Qm6;var $m6=uY();class Cd0 extends Error{constructor($){super($);this.name="AssertionError"}}Sp1.AssertionError=Cd0;function kp1($,Z="Assertion failed."){if(!$)throw new Cd0(Z)}var Mp1=32768;Sp1.MAX_SIZE=4294967294;function U90($,Z,X=0){let Q=Z.byteLength-X;if($.byteLength>Q)$=$.subarray(0,Q);return Z.set($,X),$.byteLength}function Vp1($,Z){if($===void 0&&Z===void 0)return new Uint8Array(0);if($===void 0)return Z;if(Z===void 0)return $;let X=new Uint8Array($.length+Z.length);return X.set($,0),X.set(Z,$.length),X}function Zm6($,Z){return Vp1($,Uint8Array.of(Z))}class _d0{_buf;_off;constructor($){if(this._off=0,$==null){this._buf=new Uint8Array(0);return}this._buf=new Uint8Array($)}bytes($={copy:!0}){if($.copy===!1)return this._buf.subarray(this._off);return this._buf.slice(this._off)}empty(){return this._buf.byteLength<=this._off}get length(){return this._buf.byteLength-this._off}get capacity(){return this._buf.buffer.byteLength}truncate($){if($===0){this.reset();return}if($<0||$>this.length)throw Error("bytes.Buffer: truncation out of range");this._reslice(this._off+$)}reset(){this._reslice(0),this._off=0}_tryGrowByReslice($){let Z=this._buf.byteLength;if($<=this.capacity-Z)return this._reslice(Z+$),Z;return-1}_reslice($){kp1($<=this._buf.buffer.byteLength),this._buf=new Uint8Array(this._buf.buffer,0,$)}readByte(){let $=new Uint8Array(1);if(this.read($))return $[0];return null}read($){if(this.empty()){if(this.reset(),$.byteLength===0)return 0;return null}let Z=U90(this._buf.subarray(this._off),$);return this._off+=Z,Z}writeByte($){return this.write(Uint8Array.of($))}writeString($){return this.write($m6.TE.encode($))}write($){let Z=this._grow($.byteLength);return U90($,this._buf,Z)}_grow($){let Z=this.length;if(Z===0&&this._off!==0)this.reset();let X=this._tryGrowByReslice($);if(X>=0)return X;let Q=this.capacity;if($<=Math.floor(Q/2)-Z)U90(this._buf.subarray(this._off),this._buf);else if(Q+$>Sp1.MAX_SIZE)throw Error("The buffer cannot be grown beyond the maximum size.");else{let Y=new Uint8Array(Math.min(2*Q+$,Sp1.MAX_SIZE));U90(this._buf.subarray(this._off),Y),this._buf=Y}return this._off=0,this._reslice(Math.min(Z+$,Sp1.MAX_SIZE)),Z}grow($){if($<0)throw Error("Buffer._grow: negative count");let Z=this._grow($);this._reslice(Z)}readFrom($){let Z=0,X=new Uint8Array(Mp1);while(!0){let Q=this.capacity-this.length<Mp1,Y=Q?X:new Uint8Array(this._buf.buffer,this.length),G=$.read(Y);if(G===null)return Z;if(Q)this.write(Y.subarray(0,G));else this._reslice(this.length+G);Z+=G}}}Sp1.DenoBuffer=_d0;function Xm6($){let Z=new _d0;return Z.readFrom($),Z.bytes()}function Qm6($,Z){let X=0;while(X<Z.length)X+=$.write(Z.subarray(X))}});var bd0=_((fp1)=>{Object.defineProperty(fp1,"__esModule",{value:!0});fp1.cc=fp1.State=fp1.Parser=fp1.Kind=void 0;fp1.describe=Um6;var xd0=vd0(),fd0=uY();fp1.Kind={OK:0,ERR:1,MSG:2,INFO:3,PING:4,PONG:5};function Um6($){let Z,X="";switch($.kind){case fp1.Kind.MSG:Z="MSG";break;case fp1.Kind.OK:Z="OK";break;case fp1.Kind.ERR:Z="ERR",X=fd0.TD.decode($.data);break;case fp1.Kind.PING:Z="PING";break;case fp1.Kind.PONG:Z="PONG";break;case fp1.Kind.INFO:Z="INFO",X=fd0.TD.decode($.data)}return`${Z}: ${X}`}function _p1(){let $={};return $.sid=-1,$.hdr=-1,$.size=-1,$}var vp1=48,Nm6=57,Gb=67108864;class xp1{dispatcher;state;as;drop;hdr;ma;argBuf;msgBuf;constructor($){this.dispatcher=$,this.state=fp1.State.OP_START,this.as=0,this.drop=0,this.hdr=0}parse($){let Z;for(Z=0;Z<$.length;Z++){let X=$[Z];switch(this.state){case fp1.State.OP_START:switch(X){case fp1.cc.M:case fp1.cc.m:this.state=fp1.State.OP_M,this.hdr=-1,this.ma=_p1();break;case fp1.cc.H:case fp1.cc.h:this.state=fp1.State.OP_H,this.hdr=0,this.ma=_p1();break;case fp1.cc.P:case fp1.cc.p:this.state=fp1.State.OP_P;break;case fp1.cc.PLUS:this.state=fp1.State.OP_PLUS;break;case fp1.cc.MINUS:this.state=fp1.State.OP_MINUS;break;case fp1.cc.I:case fp1.cc.i:this.state=fp1.State.OP_I;break;default:throw this.fail($.subarray(Z))}break;case fp1.State.OP_H:switch(X){case fp1.cc.M:case fp1.cc.m:this.state=fp1.State.OP_M;break;default:throw this.fail($.subarray(Z))}break;case fp1.State.OP_M:switch(X){case fp1.cc.S:case fp1.cc.s:this.state=fp1.State.OP_MS;break;default:throw this.fail($.subarray(Z))}break;case fp1.State.OP_MS:switch(X){case fp1.cc.G:case fp1.cc.g:this.state=fp1.State.OP_MSG;break;default:throw this.fail($.subarray(Z))}break;case fp1.State.OP_MSG:switch(X){case fp1.cc.SPACE:case fp1.cc.TAB:this.state=fp1.State.OP_MSG_SPC;break;default:throw this.fail($.subarray(Z))}break;case fp1.State.OP_MSG_SPC:switch(X){case fp1.cc.SPACE:case fp1.cc.TAB:continue;default:this.state=fp1.State.MSG_ARG,this.as=Z}break;case fp1.State.MSG_ARG:switch(X){case fp1.cc.CR:this.drop=1;break;case fp1.cc.NL:{let Q=this.argBuf?this.argBuf.bytes():$.subarray(this.as,Z-this.drop);this.processMsgArgs(Q),this.drop=0,this.as=Z+1,this.state=fp1.State.MSG_PAYLOAD,Z=this.as+this.ma.size-1;break}default:if(this.argBuf)this.argBuf.writeByte(X)}break;case fp1.State.MSG_PAYLOAD:if(this.msgBuf)if(this.msgBuf.length>=this.ma.size){let Q=this.msgBuf.bytes({copy:!1});this.dispatcher.push({kind:fp1.Kind.MSG,msg:this.ma,data:Q}),this.argBuf=void 0,this.msgBuf=void 0,this.state=fp1.State.MSG_END}else{let Q=this.ma.size-this.msgBuf.length,Y=$.length-Z;if(Y<Q)Q=Y;if(Q>0)this.msgBuf.write($.subarray(Z,Z+Q)),Z=Z+Q-1;else this.msgBuf.writeByte(X)}else if(Z-this.as>=this.ma.size)this.dispatcher.push({kind:fp1.Kind.MSG,msg:this.ma,data:$.subarray(this.as,Z)}),this.argBuf=void 0,this.msgBuf=void 0,this.state=fp1.State.MSG_END;break;case fp1.State.MSG_END:switch(X){case fp1.cc.NL:this.drop=0,this.as=Z+1,this.state=fp1.State.OP_START;break;default:continue}break;case fp1.State.OP_PLUS:switch(X){case fp1.cc.O:case fp1.cc.o:this.state=fp1.State.OP_PLUS_O;break;default:throw this.fail($.subarray(Z))}break;case fp1.State.OP_PLUS_O:switch(X){case fp1.cc.K:case fp1.cc.k:this.state=fp1.State.OP_PLUS_OK;break;default:throw this.fail($.subarray(Z))}break;case fp1.State.OP_PLUS_OK:switch(X){case fp1.cc.NL:this.dispatcher.push({kind:fp1.Kind.OK}),this.drop=0,this.state=fp1.State.OP_START;break}break;case fp1.State.OP_MINUS:switch(X){case fp1.cc.E:case fp1.cc.e:this.state=fp1.State.OP_MINUS_E;break;default:throw this.fail($.subarray(Z))}break;case fp1.State.OP_MINUS_E:switch(X){case fp1.cc.R:case fp1.cc.r:this.state=fp1.State.OP_MINUS_ER;break;default:throw this.fail($.subarray(Z))}break;case fp1.State.OP_MINUS_ER:switch(X){case fp1.cc.R:case fp1.cc.r:this.state=fp1.State.OP_MINUS_ERR;break;default:throw this.fail($.subarray(Z))}break;case fp1.State.OP_MINUS_ERR:switch(X){case fp1.cc.SPACE:case fp1.cc.TAB:this.state=fp1.State.OP_MINUS_ERR_SPC;break;default:throw this.fail($.subarray(Z))}break;case fp1.State.OP_MINUS_ERR_SPC:switch(X){case fp1.cc.SPACE:case fp1.cc.TAB:continue;default:this.state=fp1.State.MINUS_ERR_ARG,this.as=Z}break;case fp1.State.MINUS_ERR_ARG:switch(X){case fp1.cc.CR:this.drop=1;break;case fp1.cc.NL:{let Q;if(this.argBuf)Q=this.argBuf.bytes(),this.argBuf=void 0;else Q=$.subarray(this.as,Z-this.drop);this.dispatcher.push({kind:fp1.Kind.ERR,data:Q}),this.drop=0,this.as=Z+1,this.state=fp1.State.OP_START;break}default:if(this.argBuf)this.argBuf.write(Uint8Array.of(X))}break;case fp1.State.OP_P:switch(X){case fp1.cc.I:case fp1.cc.i:this.state=fp1.State.OP_PI;break;case fp1.cc.O:case fp1.cc.o:this.state=fp1.State.OP_PO;break;default:throw this.fail($.subarray(Z))}break;case fp1.State.OP_PO:switch(X){case fp1.cc.N:case fp1.cc.n:this.state=fp1.State.OP_PON;break;default:throw this.fail($.subarray(Z))}break;case fp1.State.OP_PON:switch(X){case fp1.cc.G:case fp1.cc.g:this.state=fp1.State.OP_PONG;break;default:throw this.fail($.subarray(Z))}break;case fp1.State.OP_PONG:switch(X){case fp1.cc.NL:this.dispatcher.push({kind:fp1.Kind.PONG}),this.drop=0,this.state=fp1.State.OP_START;break}break;case fp1.State.OP_PI:switch(X){case fp1.cc.N:case fp1.cc.n:this.state=fp1.State.OP_PIN;break;default:throw this.fail($.subarray(Z))}break;case fp1.State.OP_PIN:switch(X){case fp1.cc.G:case fp1.cc.g:this.state=fp1.State.OP_PING;break;default:throw this.fail($.subarray(Z))}break;case fp1.State.OP_PING:switch(X){case fp1.cc.NL:this.dispatcher.push({kind:fp1.Kind.PING}),this.drop=0,this.state=fp1.State.OP_START;break}break;case fp1.State.OP_I:switch(X){case fp1.cc.N:case fp1.cc.n:this.state=fp1.State.OP_IN;break;default:throw this.fail($.subarray(Z))}break;case fp1.State.OP_IN:switch(X){case fp1.cc.F:case fp1.cc.f:this.state=fp1.State.OP_INF;break;default:throw this.fail($.subarray(Z))}break;case fp1.State.OP_INF:switch(X){case fp1.cc.O:case fp1.cc.o:this.state=fp1.State.OP_INFO;break;default:throw this.fail($.subarray(Z))}break;case fp1.State.OP_INFO:switch(X){case fp1.cc.SPACE:case fp1.cc.TAB:this.state=fp1.State.OP_INFO_SPC;break;default:throw this.fail($.subarray(Z))}break;case fp1.State.OP_INFO_SPC:switch(X){case fp1.cc.SPACE:case fp1.cc.TAB:continue;default:this.state=fp1.State.INFO_ARG,this.as=Z}break;case fp1.State.INFO_ARG:switch(X){case fp1.cc.CR:this.drop=1;break;case fp1.cc.NL:{let Q;if(this.argBuf)Q=this.argBuf.bytes(),this.argBuf=void 0;else Q=$.subarray(this.as,Z-this.drop);this.dispatcher.push({kind:fp1.Kind.INFO,data:Q}),this.drop=0,this.as=Z+1,this.state=fp1.State.OP_START;break}default:if(this.argBuf)this.argBuf.writeByte(X)}break;default:throw this.fail($.subarray(Z))}}if((this.state===fp1.State.MSG_ARG||this.state===fp1.State.MINUS_ERR_ARG||this.state===fp1.State.INFO_ARG)&&!this.argBuf)this.argBuf=new xd0.DenoBuffer($.subarray(this.as,Z-this.drop));if(this.state===fp1.State.MSG_PAYLOAD&&!this.msgBuf){if(!this.argBuf)this.cloneMsgArg();this.msgBuf=new xd0.DenoBuffer($.subarray(this.as))}}cloneMsgArg(){let $=this.ma.subject.length,Z=this.ma.reply?this.ma.reply.length:0,X=new Uint8Array($+Z);if(X.set(this.ma.subject),this.ma.reply)X.set(this.ma.reply,$);if(this.argBuf=new xd0.DenoBuffer(X),this.ma.subject=X.subarray(0,$),this.ma.reply)this.ma.reply=X.subarray($)}processMsgArgs($){if(this.hdr>=0)return this.processHeaderMsgArgs($);let Z=[],X=-1;for(let Q=0;Q<$.length;Q++)switch($[Q]){case fp1.cc.SPACE:case fp1.cc.TAB:case fp1.cc.CR:case fp1.cc.NL:if(X>=0)Z.push($.subarray(X,Q)),X=-1;break;default:if(X<0)X=Q}if(X>=0)Z.push($.subarray(X));switch(Z.length){case 3:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=void 0,this.ma.size=this.protoParseInt(Z[2],Gb);break;case 4:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=Z[2],this.ma.size=this.protoParseInt(Z[3],Gb);break;default:throw this.fail($,"processMsgArgs Parse Error")}if(this.ma.sid<0)throw this.fail($,"processMsgArgs Bad or Missing Sid Error");if(this.ma.size<0)throw this.fail($,"processMsgArgs Bad or Missing Size Error")}fail($,Z=""){if(!Z)Z=`parse error [${this.state}]`;else Z=`${Z} [${this.state}]`;return Error(`${Z}: ${fd0.TD.decode($)}`)}processHeaderMsgArgs($){let Z=[],X=-1;for(let Q=0;Q<$.length;Q++)switch($[Q]){case fp1.cc.SPACE:case fp1.cc.TAB:case fp1.cc.CR:case fp1.cc.NL:if(X>=0)Z.push($.subarray(X,Q)),X=-1;break;default:if(X<0)X=Q}if(X>=0)Z.push($.subarray(X));switch(Z.length){case 4:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=void 0,this.ma.hdr=this.protoParseInt(Z[2],Gb),this.ma.size=this.protoParseInt(Z[3],Gb);break;case 5:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=Z[2],this.ma.hdr=this.protoParseInt(Z[3],Gb),this.ma.size=this.protoParseInt(Z[4],Gb);break;default:throw this.fail($,"processHeaderMsgArgs Parse Error")}if(this.ma.sid<0)throw this.fail($,"processHeaderMsgArgs Bad or Missing Sid Error");if(this.ma.hdr<0||this.ma.hdr>this.ma.size)throw this.fail($,"processHeaderMsgArgs Bad or Missing Header Size Error");if(this.ma.size<0)throw this.fail($,"processHeaderMsgArgs Bad or Missing Size Error")}protoParseInt($,Z){if($.length===0||$.length>15)return-1;let X=0;for(let Q=0;Q<$.length;Q++){if($[Q]<vp1||$[Q]>Nm6)return-1;X=X*10+($[Q]-vp1)}return Z!==void 0&&X>Z?-1:X}}fp1.Parser=xp1;fp1.State={OP_START:0,OP_PLUS:1,OP_PLUS_O:2,OP_PLUS_OK:3,OP_MINUS:4,OP_MINUS_E:5,OP_MINUS_ER:6,OP_MINUS_ERR:7,OP_MINUS_ERR_SPC:8,MINUS_ERR_ARG:9,OP_M:10,OP_MS:11,OP_MSG:12,OP_MSG_SPC:13,MSG_ARG:14,MSG_PAYLOAD:15,MSG_END:16,OP_H:17,OP_P:18,OP_PI:19,OP_PIN:20,OP_PING:21,OP_PO:22,OP_PON:23,OP_PONG:24,OP_I:25,OP_IN:26,OP_INF:27,OP_INFO:28,OP_INFO_SPC:29,INFO_ARG:30};fp1.cc={CR:13,E:69,e:101,F:70,f:102,G:71,g:103,H:72,h:104,I:73,i:105,K:75,k:107,M:77,m:109,MINUS:45,N:78,n:110,NL:10,O:79,o:111,P:80,p:112,PLUS:43,R:82,r:114,S:83,s:115,SPACE:32,TAB:9}});var w90=_((yp1)=>{Object.defineProperty(yp1,"__esModule",{value:!0});yp1.MsgHdrsImpl=void 0;yp1.canonicalMIMEHeaderKey=gd0;yp1.headers=Bm6;var bp1=uY(),wJ=Tw(),F90=cY();function gd0($){let U=!0,N=Array($.length);for(let F=0;F<$.length;F++){let w=$.charCodeAt(F);if(w===58||w<33||w>126)throw F90.InvalidArgumentError.format("header",`'${$[F]}' is not a valid character in a header name`);if(U&&97<=w&&w<=122)w-=32;else if(!U&&65<=w&&w<=90)w+=32;N[F]=w,U=w==45}return String.fromCharCode(...N)}function Bm6($=0,Z=""){if($===0&&Z!=="")throw F90.InvalidArgumentError.format("code","is required");else if($>0&&Z==="")throw F90.InvalidArgumentError.format("description","is required");return new Jb($,Z)}var yd0="NATS/1.0";class Jb{_code;headers;_description;constructor($=0,Z=""){this._code=$,this._description=Z,this.headers=new Map}[Symbol.iterator](){return this.headers.entries()}size(){return this.headers.size}equals($){if($&&this.headers.size===$.headers.size&&this._code===$._code){for(let[Z,X]of this.headers){let Q=$.values(Z);if(X.length!==Q.length)return!1;let Y=[...X].sort(),G=[...Q].sort();for(let J=0;J<Y.length;J++)if(Y[J]!==G[J])return!1}return!0}return!1}static decode($){let Z=new Jb,Q=bp1.TD.decode($).split(`\r
1337
1337
  `),Y=Q[0];if(Y!==yd0){let G=Y.replace(yd0,"").trim();if(G.length>0){if(Z._code=parseInt(G,10),isNaN(Z._code))Z._code=0;let J=Z._code.toString();G=G.replace(J,""),Z._description=G.trim()}}if(Q.length>=1)Q.slice(1).map((G)=>{if(G){let J=G.indexOf(":");if(J>-1){let K=G.slice(0,J),W=G.slice(J+1).trim();Z.append(K,W)}}});return Z}toString(){if(this.headers.size===0&&this._code===0)return"";let $=yd0;if(this._code>0&&this._description!=="")$+=` ${this._code} ${this._description}`;for(let[Z,X]of this.headers)for(let Q=0;Q<X.length;Q++)$=`${$}\r
1338
1338
  ${Z}: ${X[Q]}`;return`${$}\r
@@ -4006,7 +4006,7 @@ Do NOT require review (requiresReview = false) when the changes are low-risk, su
4006
4006
 
4007
4007
  When unsure between the two, lean toward NOT requiring review for small frontend-only diffs, and toward requiring it for anything backend or large.
4008
4008
 
4009
- Respond with the structured verdict and a short reason.`,p86;var o86=O(()=>{h4();VO();nW1();zM$=pW1.object({requiresReview:pW1.boolean().describe("true if the changes should go through pull-request review"),reason:pW1.string().describe("One short sentence explaining the decision (max ~120 chars)")});p86={requiresReview:!1,reason:""}});function TM$($){if(!$||$.includes(".."))return!1;return AM$.test($)}function r86($){let Z=typeof $.__resolveType==="string"?$.__resolveType:null;if(!Z||!TM$(Z))return null;let{__resolveType:X,...Q}=$;return{resolveType:Z,payload:Q}}function a86($,Z){return`${$.replace(/\/+$/,"")}/deco/invoke/${Z}`}var AM$;var s86=O(()=>{AM$=/^[\w./@-]+$/});function tW1($){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 e86($,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 $66($,Z,X,Q){if(!Q.connectionId)throw new mc("Push requires a connected GitHub account. Connect mcp-github for this project and restart the sandbox.");let Y=$.organization?.id;if(!Y)throw new mc(FX);await HO({ctx:$,connectionId:Q.connectionId,organizationId:Y,forceRefresh:!0,onLegacyMintError:(U)=>{let N=U instanceof Error?U.message:FX;throw new mc(N)}});let{cloneUrl:G,gitUserName:J,gitUserEmail:K}=await UO(Q.connectionId,Q.owner,Q.name,$.db,$.vault),W=fI0($),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:K}},...W?{operator:W}:{}})});if(!H.ok){let U=await MO(H,RM$).catch(()=>H.statusText);throw Error(`Failed to refresh sandbox git credentials (${H.status}): ${U}`)}}var RM$=10485760,mc;var Z66=O(()=>{TN();hW1();yo();og();mc=class mc extends Error{constructor($){super($);this.name="GitPushAuthError"}}});function qM$($){let Z=$.startsWith("thread:")?$.slice(7):$;if(!Z||Z.length>255||Z.includes("..")||Z.startsWith("/")||Z.endsWith("/")||Z.endsWith(".lock")||!IM$.test(Z))throw Error(`Invalid branch name: ${$}`)}function av($){return AbortSignal.any([$.req.raw.signal,AbortSignal.timeout(kM$)])}function sv($){let{runner:Z}=$.get("vmClaim");if(!Z)return $.json({error:"No sandbox runner configured"},503);return Z}function oW1($,Z){let Q=(bI0.get($)??Promise.resolve()).catch(()=>{}).then(Z),Y=Q.catch(()=>{});return bI0.set($,Y),Y.finally(()=>{if(bI0.get($)===Y)bI0.delete($)}),Q}async function Q7($,Z,X){let Q=sv($);if(Q instanceof Response)return Q;let{claimName:Y,userId:G,projectRef:J}=$.get("vmClaim"),K=X?.method??"POST",W=null,H=new Headers;if(X?.jsonBody!==void 0)W=X.jsonBody,H.set("content-type","application/json");else if(X?.forwardJsonBody)W=await $.req.text(),H.set("content-type","application/json");let U=X?.signal,N={method:K,headers:H,body:W,...U?{signal:U}:{}},F=async()=>{let w=await Q.proxyDaemonRequest(Y,Z,N);if(X?.map404to410&&w.status===404){try{await w.body?.cancel()}catch{}if(await Q.adoptLiveClaim?.({userId:G,projectRef:J},Y))w=await Q.proxyDaemonRequest(Y,Z,N);if(w.status===404){try{await w.body?.cancel()}catch{}return new Response(JSON.stringify({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."}),{status:410,headers:{"content-type":"application/json",...TG}})}}let B=await w.text(),L=X?.redactRepoDirUnlessDesktop&&Q.kind!=="user-desktop"?SM$(B):B,D=w.headers.get("content-type")??"application/json";return new Response(L,{status:w.status,headers:{"content-type":D,...TG}})};try{if(U){let w=F();return w.catch(()=>{}),await Promise.race([w,new Promise((L,D)=>{if(U.aborted)return D(U.reason);U.addEventListener("abort",()=>D(U.reason),{once:!0})})])}return await F()}catch(w){let B=w instanceof Error?w.message:String(w);return $.json({error:`Daemon unreachable: ${B}`},502)}}function SM$($){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 yI0($,Z,X,Q="GET",Y){let G=await $.proxyDaemonRequest(Z,X,{method:Q,headers:new Headers,body:null});if(G.status===404&&Y){try{await G.body?.cancel()}catch{}if(await $.adoptLiveClaim?.(Y,Z))G=await $.proxyDaemonRequest(Z,X,{method:Q,headers:new Headers,body:null})}if(G.status===404){try{await G.body?.cancel()}catch{}throw Error("SANDBOX_GONE")}let J=await G.text();if(!G.ok)try{let K=JSON.parse(J);throw Error(K.error??`Daemon error (${G.status})`)}catch(K){if(K instanceof Error&&K.message!==J)throw K;throw Error(`Daemon error (${G.status})`)}return JSON.parse(J)}function CM$($){return Y66.includes($)}var IM$,X66=524288,MM$=65536,kM$=1e4,Q66=2000,VM$,bI0,TG,Y66,G66=()=>{let $=new V1;return $.use("/:virtualMcpId/:branch/*",VM$),$.post("/:virtualMcpId/:branch/write",(Z)=>Q7(Z,"/_sandbox/write",{forwardJsonBody:!0,signal:av(Z)})),$.post("/:virtualMcpId/:branch/unlink",(Z)=>Q7(Z,"/_sandbox/unlink",{forwardJsonBody:!0,signal:av(Z)})),$.post("/:virtualMcpId/:branch/mkdir",(Z)=>Q7(Z,"/_sandbox/mkdir",{forwardJsonBody:!0,signal:av(Z)})),$.post("/:virtualMcpId/:branch/rename",(Z)=>Q7(Z,"/_sandbox/rename",{forwardJsonBody:!0,signal:av(Z)})),$.post("/:virtualMcpId/:branch/read",(Z)=>Q7(Z,"/_sandbox/read",{forwardJsonBody:!0,signal:av(Z)})),$.post("/:virtualMcpId/:branch/glob",(Z)=>Q7(Z,"/_sandbox/glob",{forwardJsonBody:!0,signal:av(Z)})),$.post("/:virtualMcpId/:branch/grep",(Z)=>Q7(Z,"/_sandbox/grep",{forwardJsonBody:!0,signal:av(Z)})),$.post("/:virtualMcpId/:branch/exec/:script",async(Z)=>{let X=Z.req.param("script");if(!X)return Z.json({error:"missing script name"},400);return Q7(Z,`/_sandbox/exec/${encodeURIComponent(X)}`)}),$.post("/:virtualMcpId/:branch/exec/:script/kill",async(Z)=>{let X=Z.req.param("script");if(!X)return Z.json({error:"missing script name"},400);return Q7(Z,`/_sandbox/exec/${encodeURIComponent(X)}/kill`)}),$.get("/:virtualMcpId/:branch/config",(Z)=>Q7(Z,"/_sandbox/config",{method:"GET",map404to410:!0,redactRepoDirUnlessDesktop:!0})),$.put("/:virtualMcpId/:branch/config",(Z)=>Q7(Z,"/_sandbox/config",{method:"PUT",forwardJsonBody:!0,map404to410:!0})),$.post("/:virtualMcpId/:branch/setup/:step",async(Z)=>{let X=Z.req.param("step");if(!X||!CM$(X))return Z.json({error:`step must be one of: ${Y66.join(", ")}`},400);if(X==="start"){let Q=Z.get("vmClaim");if(Q.runner){let Y=G0(Z.var.studioContext),G=Fz0(Q.virtualMcpMetadata);try{await Bz0({ctx:Z.var.studioContext,runner:Q.runner,handle:Q.claimName,orgId:Y.id,userId:Q.callerUserId,entries:G})}catch(J){let K=J instanceof Error?J.message:String(J);return Z.json({error:`Failed to push env to daemon: ${K}`},502)}}}return Q7(Z,`/_sandbox/setup/${X}`,{signal:Z.req.raw.signal,map404to410:!0})}),$.get("/:virtualMcpId/:branch/events",(Z)=>{let X=Z.get("vmClaim");if(!X.runner)return PF(Z,async(Q)=>{await Q.writeSSE({event:"phase",data:JSON.stringify({kind:"failed",reason:"unknown",message:"No sandbox runner configured on this studio instance."})})});return c86(Z,{ctx:Z.var.studioContext,claimName:X.claimName,runner:X.runner,virtualMcpId:X.virtualMcpId,branch:X.branch,userId:X.userId,projectRef:X.projectRef,virtualMcpMetadata:X.virtualMcpMetadata})}),$.get("/:virtualMcpId/:branch/git/status",(Z)=>Q7(Z,"/_sandbox/git/status",{method:"GET",map404to410:!0,signal:AbortSignal.any([Z.req.raw.signal,AbortSignal.timeout(Q66)])})),$.post("/:virtualMcpId/:branch/git/status",(Z)=>Q7(Z,"/_sandbox/git/status",{map404to410:!0,signal:AbortSignal.any([Z.req.raw.signal,AbortSignal.timeout(Q66)])})),$.post("/:virtualMcpId/:branch/git/diff",(Z)=>Q7(Z,"/_sandbox/git/diff",{forwardJsonBody:!0,map404to410:!0})),$.post("/:virtualMcpId/:branch/git/publish",async(Z)=>{let X=sv(Z);if(X instanceof Response)return X;let{claimName:Q,virtualMcpMetadata:Y,connectionIds:G}=Z.get("vmClaim"),J=Z.var.studioContext;return oW1(Q,async()=>{try{await uW1(J,X,Q);let K=e86(Y,G);if(K)await $66(J,X,Q,K)}catch(K){if(K instanceof mc)return Z.json({error:K.message},403,TG);let W=K instanceof Error?K.message:String(K);return Z.json({error:W},502,TG)}return Q7(Z,"/_sandbox/git/publish",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/discard",(Z)=>{let{claimName:X}=Z.get("vmClaim");return oW1(X,()=>Q7(Z,"/_sandbox/git/discard",{forwardJsonBody:!0,map404to410:!0}))}),$.post("/:virtualMcpId/:branch/git/rebase",async(Z)=>{let X=sv(Z);if(X instanceof Response)return X;let{claimName:Q}=Z.get("vmClaim"),Y=Z.var.studioContext;return oW1(Q,async()=>{try{await uW1(Y,X,Q)}catch(G){let J=G instanceof Error?G.message:String(G);return Z.json({error:J},502,TG)}return Q7(Z,"/_sandbox/git/rebase",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/suggest-commit",VZ({maxSize:X66,onError:(Z)=>Z.json({error:"Payload too large"},413,TG)}),async(Z)=>{let X=sv(Z);if(X instanceof Response)return X;let{claimName:Q,userId:Y,projectRef:G}=Z.get("vmClaim"),J=Z.var.studioContext;try{let K=await Z.req.json().catch(()=>({})),W=K.status,H=K.diff,U=H!=null&&typeof H.diffs==="object"&&H.diffs!==null,[N,F]=dW1(W)&&U?[W,H]:await Promise.all([yI0(X,Q,"/_sandbox/git/status","GET",{userId:Y,projectRef:G}),yI0(X,Q,"/_sandbox/git/diff","GET",{userId:Y,projectRef:G})]),w=await n86(J,N,F);return Z.json(w,200,TG)}catch(K){let W=K instanceof Error?K.message:String(K);if(W==="SANDBOX_GONE")return Z.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,TG);return Z.json({error:W},502,TG)}}),$.post("/:virtualMcpId/:branch/git/judge-review",VZ({maxSize:X66,onError:(Z)=>Z.json({error:"Payload too large"},413,TG)}),async(Z)=>{let X=sv(Z);if(X instanceof Response)return X;let{claimName:Q,userId:Y,projectRef:G}=Z.get("vmClaim"),J=Z.var.studioContext;try{let K=await Z.req.json().catch(()=>({})),W=K.status,H=K.diff,U=H!=null&&typeof H.diffs==="object"&&H.diffs!==null,[N,F]=dW1(W)&&U?[W,H]:await Promise.all([yI0(X,Q,"/_sandbox/git/status","GET",{userId:Y,projectRef:G}),yI0(X,Q,"/_sandbox/git/diff","GET",{userId:Y,projectRef:G})]),w=await t86(J,N,F,typeof K.language==="string"?K.language:void 0);return Z.json(w,200,TG)}catch(K){let W=K instanceof Error?K.message:String(K);if(W==="SANDBOX_GONE")return Z.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,TG);return Z.json({error:W},502,TG)}}),$.get("/:virtualMcpId/:branch/preview-fetch",async(Z)=>{let X=sv(Z);if(X instanceof Response)return X;let{claimName:Q}=Z.get("vmClaim"),Y=Z.req.query("path");if(!Y||!Y.startsWith("/")||Y.startsWith("//")||Y.includes("..")||Y.includes("\\"))return Z.json({error:"Path not allowed"},403);let G;try{G=await X.getPreviewUrl(Q)}catch{return Z.json({error:"Preview not available"},502)}if(!G)return Z.json({error:"Preview not available"},502);let J=G.replace(/\/+$/,""),K=tW1(`${J}${Y}`),W;try{W=await fetch(K?.url??`${J}${Y}`,{...K?{headers:{host:K.hostHeader}}:{}})}catch{return Z.json({error:"Preview unreachable"},502)}let H;try{H=await W.text()}catch{return Z.json({error:"Preview unreachable"},502)}return new Response(H,{status:W.status,headers:{"content-type":W.headers.get("content-type")??"application/json"}})}),$.post("/:virtualMcpId/:branch/preview-invoke",VZ({maxSize:MM$,onError:(Z)=>Z.json({error:"Payload too large"},413)}),async(Z)=>{let X=sv(Z);if(X instanceof Response)return X;let{claimName:Q}=Z.get("vmClaim"),Y;try{Y=await X.getPreviewUrl(Q)}catch{return Z.json({error:"Preview not available"},502)}if(!Y)return Z.json({error:"Preview not available"},502);let G;try{G=await Z.req.json()}catch{return Z.json({error:"Invalid JSON body"},400)}if(!G||typeof G!=="object"||Array.isArray(G))return Z.json({error:"Invalid JSON body"},400);let J=r86(G);if(!J)return Z.json({error:"Invalid or missing __resolveType"},400);let K=a86(Y,J.resolveType),W=tW1(K),H;try{H=await fetch(W?.url??K,{method:"POST",headers:{"content-type":"application/json",...W?{host:W.hostHeader}:{}},body:JSON.stringify(J.payload),signal:AbortSignal.timeout(30000)})}catch{return Z.json({error:"Preview unreachable"},502)}let U;try{U=await H.text()}catch{return Z.json({error:"Preview unreachable"},502)}return new Response(U,{status:H.status,headers:{"content-type":H.headers.get("content-type")??"application/json"}})}),$};var J66=O(()=>{o6();kL();dc();y86();AN();h86();FK();TO();u86();l86();M61();fo();nW1();o86();s86();Z66();IM$=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;VM$=b86(async($,Z)=>{let X=$.var.studioContext;try{W0(X)}catch{return $.json({error:"Unauthorized"},401)}let Q=z1(X);if(!Q)return $.json({error:"Unauthorized"},401);let Y;try{Y=G0(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{qM$(J)}catch(w){let B=w instanceof Error?w.message:String(w);return $.json({error:B},400)}let K=await X.storage.virtualMcps.findById(G);if(!K||K.organization_id!==Y.id)return $.json({error:"Virtual MCP not found"},404);let W=Xo({orgId:Y.id,virtualMcpId:G,branch:J}),H=await _N(X,J,Q),U=g86({userId:H,projectRef:W}),N=K.metadata??null,F;try{F=(await NQ(X,{userId:H,branch:J,virtualMcpMetadata:N})).provider}catch{F=null}if(!F)return $.json({error:"No sandbox runner found"},404);return $.set("vmClaim",{claimName:U,callerUserId:Q,runner:F,virtualMcpId:G,branch:J,userId:H,projectRef:W,virtualMcpMetadata:N,connectionIds:K.connections?.map((w)=>w.connection_id)??[]}),Z()});bI0=new Map;TG={"Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache"};Y66=["clone","install","start"]});var K66=($)=>{let Z=new V1;if(Z.use("*",lv),Z.route("/",s20()),Z.route("/",je8()),Z.route("/",T86()),Z.route("/",j86()),Z.route("/",_I0()),Z.route("/tools",S86()),Z.route("/",M86()),Z.route("/",X86({kvStorage:$.kvStorage})),Z.route("/",$86()),Z.route("/fs",w86({getConnection:$.getNatsConnection})),Z.route("/sandbox",G66()),Z.route("/",D86()),Z.route("/deco-sites",$I0()),Z.route("/sso",i20()),Z.route("/",vI0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",Fe8()),$.mountDevAssets)Z.route("/dev-assets",ZI0({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("/",Ka8()),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",O86()),Z.route("/mcp",OP0()),Z.route("/mcp/self",CI0()),Z.route("/mcp",EP0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var W66=O(()=>{o6();JK1();we8();NK1();XI0();Ue();YK1();Z86();Q86();B86();Rr();oJ1();zP0();_W1();L86();E86();P86();R86();k86();xW1();C86();fW1();LP0();J66()});function vM$($){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 xM$($,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(_M$)});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 _M$=1e4,fM$=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},H66=()=>{let $=new V1;return $.use("*",fM$),$.get("/",async(Z)=>{let X=Z1(),Q=X.decoSupabaseUrl,Y=X.decoSupabaseServiceKey;if(!Q||!Y)return Z.json({apps:[]});try{let G=await xM$(Q,Y);return Z.json({apps:vM$(G)})}catch(G){return console.error("[deco-apps] GET error:",G),Z.json({error:"Failed to fetch apps"},502)}}),$};var U66=O(()=>{o6();b8()});import{z as u1}from"zod";function pH($,Z="invalid_request_error",X=null,Q=null){return{error:{message:$,type:Z,param:X,code:Q}}}function iM$($){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 nM$($,Z,X){try{return JSON.parse($)}catch{throw new w66(`Invalid JSON in tool call arguments for function '${X}' (tool_call_id: ${Z}): ${$}`)}}function pM$($){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:nM$(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 tM$($){let Z=$.map((X)=>{let Q=X.function.parameters?QG(X.function.parameters):QG({type:"object",properties:{}});return[X.function.name,l8({description:X.function.description,inputSchema:Q})]});return Object.fromEntries(Z)}function oM$($){if(!$)return;return{openai:{response_format:$}}}function rM$(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function N66($,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 F66($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var bM$=256,yM$,gM$,hM$,uM$,cM$,lM$,dM$,mM$,w66,B66,O66;var L66=O(()=>{h4();o6();dc();$F();yM$=u1.object({type:u1.literal("function"),function:u1.object({name:u1.string(),description:u1.string().optional(),parameters:u1.record(u1.string(),u1.unknown()).optional()})}),gM$=u1.object({id:u1.string(),type:u1.literal("function"),function:u1.object({name:u1.string(),arguments:u1.string()})}),hM$=u1.discriminatedUnion("role",[u1.object({role:u1.literal("system"),content:u1.string(),name:u1.string().optional()}),u1.object({role:u1.literal("user"),content:u1.union([u1.string(),u1.array(u1.union([u1.object({type:u1.literal("text"),text:u1.string()}),u1.object({type:u1.literal("image_url"),image_url:u1.object({url:u1.string(),detail:u1.string().optional()})})]))]),name:u1.string().optional()}),u1.object({role:u1.literal("assistant"),content:u1.string().nullable().optional(),name:u1.string().optional(),tool_calls:u1.array(gM$).optional()}),u1.object({role:u1.literal("tool"),content:u1.string(),tool_call_id:u1.string()})]),uM$=u1.object({type:u1.literal("text")}),cM$=u1.object({type:u1.literal("json_object")}),lM$=u1.object({type:u1.literal("json_schema"),json_schema:u1.object({name:u1.string(),description:u1.string().optional(),schema:u1.record(u1.string(),u1.unknown()),strict:u1.boolean().optional()})}),dM$=u1.union([uM$,cM$,lM$]),mM$=u1.object({model:u1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:u1.array(hM$),stream:u1.boolean().optional().default(!1),temperature:u1.number().min(0).max(2).optional(),max_tokens:u1.number().positive().optional(),top_p:u1.number().min(0).max(1).optional(),frequency_penalty:u1.number().min(-2).max(2).optional(),presence_penalty:u1.number().min(-2).max(2).optional(),stop:u1.union([u1.string(),u1.array(u1.string())]).optional(),tools:u1.array(yM$).optional(),tool_choice:u1.union([u1.literal("auto"),u1.literal("none"),u1.literal("required"),u1.object({type:u1.literal("function"),function:u1.object({name:u1.string()})})]).optional(),response_format:dM$.optional(),user:u1.string().optional()});w66=class w66 extends Error{constructor($){super($);this.name="MessageConversionError"}};B66=new V1;B66.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),X=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(pH("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(pH("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(pH("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Q=await $.req.json(),Y=mM$.safeParse(Q);if(!Y.success){let D=Y.error.issues[0]??{message:"Invalid request",path:[]};return $.json(pH(`Invalid request: ${D.message}`,"invalid_request_error",D.path.length>0?D.path.join("."):null),400)}let G=Y.data,J=iM$(G.model);if(!J)return $.json(pH("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:K}=J,{modelId:W}=J;if(!K){let E=(await Z.storage.aiProviderKeys.list({organizationId:Z.organization.id})).find((z)=>FE(z.providerId));if(!E)return $.json(pH("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);K=E.id}let H;try{H=await Z.aiProviders.activate(K,Z.organization.id)}catch{return $.json(pH(`AI provider credential not found or inaccessible: ${K}`,"invalid_request_error","model"),404)}let U=H.aiSdk.languageModel(W),N=pM$(G.messages),F=G.tools?tM$(G.tools):void 0,w=oM$(G.response_format),B=rM$(),L=Math.floor(Date.now()/1000);if(G.stream)return PF($,async(D)=>{let E=N66(U,N,F,G,w,$.req.raw.signal);try{let z=KO(E),j=!1,A=0,P="",q=async()=>{if(P.length===0)return;let k=P;P="",await D.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:L,model:G.model,choices:[{index:0,delta:{content:k},finish_reason:null}]})})};for await(let k of z.fullStream){if(!j&&(k.type==="text-delta"||k.type==="tool-call"))await D.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:L,model:G.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),j=!0;if(k.type==="text-delta"){if(P+=k.text,P.length>=bM$)await q()}else if(k.type==="tool-call"){await q();let M=A++;await D.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:L,model:G.model,choices:[{index:0,delta:{tool_calls:[{index:M,id:k.toolCallId,type:"function",function:{name:k.toolName,arguments:JSON.stringify(k.input)}}]},finish_reason:null}]})})}else if(k.type==="finish")await q(),await D.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:L,model:G.model,choices:[{index:0,delta:{},finish_reason:F66(k.finishReason)}],usage:k.totalUsage?{prompt_tokens:k.totalUsage.inputTokens??0,completion_tokens:k.totalUsage.outputTokens??0,total_tokens:k.totalUsage.totalTokens??0}:void 0})})}await q(),await D.writeSSE({data:"[DONE]"})}catch(z){let j=z;console.error("[openai-compat:stream] Error:",j.message),await D.writeSSE({data:JSON.stringify({error:{message:j.message,type:"server_error"}})})}});else{let D=N66(U,N,F,G,w,$.req.raw.signal),E=await GO(D),z={role:"assistant",content:E.text||null};if(E.toolCalls&&E.toolCalls.length>0)z.tool_calls=E.toolCalls.map((j)=>({id:j.toolCallId,type:"function",function:{name:j.toolName,arguments:JSON.stringify("input"in j?j.input:{})}})),z.content=null;return $.json({id:B,object:"chat.completion",created:L,model:G.model,choices:[{index:0,message:z,finish_reason:F66(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(pH("Request aborted","invalid_request_error"),400);if(Y.name==="MessageConversionError")return $.json(pH(Y.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",Y.message,Y.stack),$.json(pH(Y.message,"server_error"),500)}});O66=B66});function sM$(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??aM$}}var D66,aM$="https://ph.studio.decocms.com",E66;var z66=O(()=>{o6();fr0();f_();KZ();b8();mJ1();al0();D66=new V1;D66.get("/",($)=>{let Z={version:r50.version,theme:LX8(),...Zz().logo&&{logo:Zz().logo},...DH()&&{internalUrl:il1()},...Z1().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!Z1().firecrawlApiKey,auth:Ms8(),posthog:sM$(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:!DH()&&Z1().sandboxProviderKind==="agent-sandbox"}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});E66=D66});function ic($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function rW1($){return(ic($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((X)=>X.charAt(0).toUpperCase()+X.slice(1)).join(" ")}function P66($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(ic($))}&sz=${Z}`}function j66($,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 A66($){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.`,K=Y?.trim()?j66(`${Y.trim().replace(/\s+/g," ")} \u2014 ${J}`,200):j66(`How does ${X} really perform? ${J}`,200);return{title:G,description:K}}import{z as X1}from"zod";var ev,eM$,$k$,Zk$,Xk$,T66;var R66=O(()=>{ev=X1.enum(["good","bad","neutral"]),eM$=X1.preprocess(($)=>{if(Array.isArray($))return{kind:"text",value:$.find((X)=>X!==null&&typeof X!=="object")??""};return $!==null&&typeof $==="object"?$:{kind:"text",value:$}},X1.object({kind:X1.enum(["text","number","sparkline","badge","score"]).catch("text"),value:X1.coerce.string().optional(),tone:ev.optional(),muted:X1.boolean().optional(),delta:X1.coerce.string().optional(),deltaDir:X1.enum(["up","down","neutral"]).optional(),points:X1.array(X1.coerce.number()).optional(),label:X1.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 $})),$k$=X1.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},X1.array(eM$)),Zk$={key:X1.coerce.string(),title:X1.coerce.string(),eyebrow:X1.coerce.string().optional(),headline:X1.coerce.string(),annotation:X1.coerce.string().optional(),methodology:X1.coerce.string().optional(),sources:X1.array(X1.object({name:X1.coerce.string(),logoUrl:X1.coerce.string()})).optional()},Xk$=X1.discriminatedUnion("template",[X1.object({template:X1.literal("cover"),score:X1.object({value:X1.coerce.number(),max:X1.coerce.number().optional(),grade:X1.coerce.string().optional(),label:X1.coerce.string().optional()}).optional(),brandImage:X1.coerce.string().optional(),screenshot:X1.coerce.string().optional(),mobileScreenshot:X1.coerce.string().optional()}),X1.object({template:X1.literal("cta"),ctaUrl:X1.coerce.string().optional(),ctaLabel:X1.coerce.string().optional(),bullets:X1.array(X1.coerce.string()).optional()}),X1.object({template:X1.literal("series"),points:X1.array(X1.coerce.number()).min(2),xLabels:X1.array(X1.coerce.string()).min(1),unit:X1.coerce.string().optional(),callout:X1.object({index:X1.coerce.number(),value:X1.coerce.string(),tone:ev.optional()})}),X1.object({template:X1.literal("threshold"),value:X1.coerce.string().default(""),metricLabel:X1.coerce.string().optional(),ratio:X1.coerce.number(),thresholdRatio:X1.coerce.number().optional(),thresholdLabel:X1.coerce.string().default(""),tone:ev.optional()}),X1.object({template:X1.literal("stats"),stats:X1.array(X1.object({value:X1.coerce.string(),label:X1.coerce.string(),tone:ev.optional()})).min(1)}),X1.object({template:X1.literal("bars"),items:X1.array(X1.object({value:X1.coerce.string(),label:X1.coerce.string(),ratio:X1.coerce.number(),tone:ev.optional()})).min(1)}),X1.object({template:X1.literal("gauges"),gauges:X1.array(X1.object({label:X1.coerce.string(),value:X1.coerce.string(),status:X1.enum(["good","warn","bad"]).catch("warn"),caption:X1.coerce.string().optional(),ratio:X1.coerce.number().optional()})).min(1)}),X1.object({template:X1.literal("checklist"),checks:X1.array(X1.object({label:X1.coerce.string(),status:X1.enum(["pass","fail","warn"]).catch("fail"),value:X1.coerce.string().optional()})).min(1)}),X1.object({template:X1.literal("table"),columns:X1.array(X1.object({label:X1.coerce.string(),align:X1.enum(["left","right"]).optional()})).min(1),rows:X1.array($k$).min(1),highlightRow:X1.coerce.number().optional()}),X1.object({template:X1.literal("products"),products:X1.array(X1.object({name:X1.coerce.string(),price:X1.coerce.string().optional(),image:X1.coerce.string().optional(),url:X1.coerce.string().optional()})).min(1)}),X1.object({template:X1.literal("list"),entries:X1.array(X1.object({label:X1.coerce.string(),severity:X1.enum(["error","warning","notice"]).catch("notice")})).min(1),moreCount:X1.coerce.number().optional()}),X1.object({template:X1.literal("keywords"),volumeLabel:X1.coerce.string().optional(),keywords:X1.array(X1.object({term:X1.coerce.string(),volume:X1.coerce.string(),position:X1.coerce.number().catch(0)})).min(1)}),X1.object({template:X1.literal("competitor"),metricLabel:X1.coerce.string().optional(),competitors:X1.array(X1.object({name:X1.coerce.string(),value:X1.coerce.string(),tone:ev.optional(),isYou:X1.boolean().optional()})).min(1)}),X1.object({template:X1.literal("scorecard"),rivalLabel:X1.coerce.string().optional(),dimensions:X1.array(X1.object({label:X1.coerce.string(),you:X1.coerce.string(),rival:X1.coerce.string().optional(),rivalName:X1.coerce.string().optional(),tone:ev.optional()})).min(1)})]),T66=X1.object({...Zk$,template:Xk$})});function gI0($){let Z=[],X=[...$.sections].sort((Y,G)=>Y.position-G.position).map((Y)=>{let G=T66.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 aW1=O(()=>{R66()});import{join as I66}from"path";async function Yk$($){try{let Z=await fetch(`${cW({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(Qk$)});if(!Z.ok)return null;let X=await Z.json(),{deck:Q}=gI0(X);if(!Q.slides.length)return null;let Y=Q.slides.find((K)=>K.template.template==="cover"),G=Y?.template,J=G&&G.template==="cover"?G:void 0;return{brand:Q.meta.brand?.trim()||rW1($),score:Q.meta.scores?.cover??J?.score?.value,verdict:Y?.annotation?.trim()||Y?.headline?.trim()||void 0}}catch{return null}}function RG($){return $.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;")}function Gk$($,Z){let X=ic($),Q=Z?.brand?.trim()||rW1(X),Y=P66(X,128),J=`${(Z1().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(X)}`,{title:K,description:W}=A66({brand:Q,domain:X,score:Z?.score,verdict:Z?.verdict}),H=`${J}/og.png`,U=`${Q} commerce report by decocms`;return[`<title>${RG(K)}</title>`,`<meta name="description" content="${RG(W)}" />`,'<meta name="robots" content="noindex, follow" />','<meta property="og:type" content="website" />','<meta property="og:site_name" content="decocms" />',`<meta property="og:title" content="${RG(K)}" />`,`<meta property="og:description" content="${RG(W)}" />`,`<meta property="og:url" content="${RG(J)}" />`,`<meta property="og:image" content="${RG(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${RG(U)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${RG(K)}" />`,`<meta name="twitter:description" content="${RG(W)}" />`,`<meta name="twitter:image" content="${RG(H)}" />`,`<meta name="twitter:image:alt" content="${RG(U)}" />`,`<link rel="canonical" href="${RG(J)}" />`,`<link rel="icon" href="${RG(Y)}" sizes="any" />`].join(`
4009
+ Respond with the structured verdict and a short reason.`,p86;var o86=O(()=>{h4();VO();nW1();zM$=pW1.object({requiresReview:pW1.boolean().describe("true if the changes should go through pull-request review"),reason:pW1.string().describe("One short sentence explaining the decision (max ~120 chars)")});p86={requiresReview:!1,reason:""}});function TM$($){if(!$||$.includes(".."))return!1;return AM$.test($)}function r86($){let Z=typeof $.__resolveType==="string"?$.__resolveType:null;if(!Z||!TM$(Z))return null;let{__resolveType:X,...Q}=$;return{resolveType:Z,payload:Q}}function a86($,Z){return`${$.replace(/\/+$/,"")}/deco/invoke/${Z}`}var AM$;var s86=O(()=>{AM$=/^[\w./@-]+$/});function tW1($){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 e86($,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 $66($,Z,X,Q){if(!Q.connectionId)throw new mc("Push requires a connected GitHub account. Connect mcp-github for this project and restart the sandbox.");let Y=$.organization?.id;if(!Y)throw new mc(FX);await HO({ctx:$,connectionId:Q.connectionId,organizationId:Y,forceRefresh:!0,onLegacyMintError:(U)=>{let N=U instanceof Error?U.message:FX;throw new mc(N)}});let{cloneUrl:G,gitUserName:J,gitUserEmail:K}=await UO(Q.connectionId,Q.owner,Q.name,$.db,$.vault),W=fI0($),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:K}},...W?{operator:W}:{}})});if(!H.ok){let U=await MO(H,RM$).catch(()=>H.statusText);throw Error(`Failed to refresh sandbox git credentials (${H.status}): ${U}`)}}var RM$=10485760,mc;var Z66=O(()=>{TN();hW1();yo();og();mc=class mc extends Error{constructor($){super($);this.name="GitPushAuthError"}}});function qM$($){let Z=$.startsWith("thread:")?$.slice(7):$;if(!Z||Z.length>255||Z.includes("..")||Z.startsWith("/")||Z.endsWith("/")||Z.endsWith(".lock")||!IM$.test(Z))throw Error(`Invalid branch name: ${$}`)}function av($){return AbortSignal.any([$.req.raw.signal,AbortSignal.timeout(kM$)])}function sv($){let{runner:Z}=$.get("vmClaim");if(!Z)return $.json({error:"No sandbox runner configured"},503);return Z}function oW1($,Z){let Q=(bI0.get($)??Promise.resolve()).catch(()=>{}).then(Z),Y=Q.catch(()=>{});return bI0.set($,Y),Y.finally(()=>{if(bI0.get($)===Y)bI0.delete($)}),Q}async function Q7($,Z,X){let Q=sv($);if(Q instanceof Response)return Q;let{claimName:Y,userId:G,projectRef:J}=$.get("vmClaim"),K=X?.method??"POST",W=null,H=new Headers;if(X?.jsonBody!==void 0)W=X.jsonBody,H.set("content-type","application/json");else if(X?.forwardJsonBody)W=await $.req.text(),H.set("content-type","application/json");let U=X?.signal,N={method:K,headers:H,body:W,...U?{signal:U}:{}},F=async()=>{let w=await Q.proxyDaemonRequest(Y,Z,N);if(X?.map404to410&&w.status===404){try{await w.body?.cancel()}catch{}if(await Q.adoptLiveClaim?.({userId:G,projectRef:J},Y))w=await Q.proxyDaemonRequest(Y,Z,N);if(w.status===404){try{await w.body?.cancel()}catch{}return new Response(JSON.stringify({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."}),{status:410,headers:{"content-type":"application/json",...TG}})}}let B=await w.text(),L=X?.redactRepoDirUnlessDesktop&&Q.kind!=="user-desktop"?SM$(B):B,D=w.headers.get("content-type")??"application/json";return new Response(L,{status:w.status,headers:{"content-type":D,...TG}})};try{if(U){let w=F();return w.catch(()=>{}),await Promise.race([w,new Promise((L,D)=>{if(U.aborted)return D(U.reason);U.addEventListener("abort",()=>D(U.reason),{once:!0})})])}return await F()}catch(w){let B=w instanceof Error?w.message:String(w);return $.json({error:`Daemon unreachable: ${B}`},502)}}function SM$($){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 yI0($,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 K=`Daemon error (${G.status})`;try{K=JSON.parse(J).error??K}catch{}throw Error(K)}return JSON.parse(J)}function CM$($){return Y66.includes($)}var IM$,X66=524288,MM$=65536,kM$=1e4,Q66=2000,VM$,bI0,TG,Y66,G66=()=>{let $=new V1;return $.use("/:virtualMcpId/:branch/*",VM$),$.post("/:virtualMcpId/:branch/write",(Z)=>Q7(Z,"/_sandbox/write",{forwardJsonBody:!0,signal:av(Z)})),$.post("/:virtualMcpId/:branch/unlink",(Z)=>Q7(Z,"/_sandbox/unlink",{forwardJsonBody:!0,signal:av(Z)})),$.post("/:virtualMcpId/:branch/mkdir",(Z)=>Q7(Z,"/_sandbox/mkdir",{forwardJsonBody:!0,signal:av(Z)})),$.post("/:virtualMcpId/:branch/rename",(Z)=>Q7(Z,"/_sandbox/rename",{forwardJsonBody:!0,signal:av(Z)})),$.post("/:virtualMcpId/:branch/read",(Z)=>Q7(Z,"/_sandbox/read",{forwardJsonBody:!0,signal:av(Z)})),$.post("/:virtualMcpId/:branch/glob",(Z)=>Q7(Z,"/_sandbox/glob",{forwardJsonBody:!0,signal:av(Z)})),$.post("/:virtualMcpId/:branch/grep",(Z)=>Q7(Z,"/_sandbox/grep",{forwardJsonBody:!0,signal:av(Z)})),$.post("/:virtualMcpId/:branch/exec/:script",async(Z)=>{let X=Z.req.param("script");if(!X)return Z.json({error:"missing script name"},400);return Q7(Z,`/_sandbox/exec/${encodeURIComponent(X)}`)}),$.post("/:virtualMcpId/:branch/exec/:script/kill",async(Z)=>{let X=Z.req.param("script");if(!X)return Z.json({error:"missing script name"},400);return Q7(Z,`/_sandbox/exec/${encodeURIComponent(X)}/kill`)}),$.get("/:virtualMcpId/:branch/config",(Z)=>Q7(Z,"/_sandbox/config",{method:"GET",map404to410:!0,redactRepoDirUnlessDesktop:!0})),$.put("/:virtualMcpId/:branch/config",(Z)=>Q7(Z,"/_sandbox/config",{method:"PUT",forwardJsonBody:!0,map404to410:!0})),$.post("/:virtualMcpId/:branch/setup/:step",async(Z)=>{let X=Z.req.param("step");if(!X||!CM$(X))return Z.json({error:`step must be one of: ${Y66.join(", ")}`},400);if(X==="start"){let Q=Z.get("vmClaim");if(Q.runner){let Y=G0(Z.var.studioContext),G=Fz0(Q.virtualMcpMetadata);try{await Bz0({ctx:Z.var.studioContext,runner:Q.runner,handle:Q.claimName,orgId:Y.id,userId:Q.callerUserId,entries:G})}catch(J){let K=J instanceof Error?J.message:String(J);return Z.json({error:`Failed to push env to daemon: ${K}`},502)}}}return Q7(Z,`/_sandbox/setup/${X}`,{signal:Z.req.raw.signal,map404to410:!0})}),$.get("/:virtualMcpId/:branch/events",(Z)=>{let X=Z.get("vmClaim");if(!X.runner)return PF(Z,async(Q)=>{await Q.writeSSE({event:"phase",data:JSON.stringify({kind:"failed",reason:"unknown",message:"No sandbox runner configured on this studio instance."})})});return c86(Z,{ctx:Z.var.studioContext,claimName:X.claimName,runner:X.runner,virtualMcpId:X.virtualMcpId,branch:X.branch,userId:X.userId,projectRef:X.projectRef,virtualMcpMetadata:X.virtualMcpMetadata})}),$.get("/:virtualMcpId/:branch/git/status",(Z)=>Q7(Z,"/_sandbox/git/status",{method:"GET",map404to410:!0,signal:AbortSignal.any([Z.req.raw.signal,AbortSignal.timeout(Q66)])})),$.post("/:virtualMcpId/:branch/git/status",(Z)=>Q7(Z,"/_sandbox/git/status",{map404to410:!0,signal:AbortSignal.any([Z.req.raw.signal,AbortSignal.timeout(Q66)])})),$.post("/:virtualMcpId/:branch/git/diff",(Z)=>Q7(Z,"/_sandbox/git/diff",{forwardJsonBody:!0,map404to410:!0})),$.post("/:virtualMcpId/:branch/git/publish",async(Z)=>{let X=sv(Z);if(X instanceof Response)return X;let{claimName:Q,virtualMcpMetadata:Y,connectionIds:G}=Z.get("vmClaim"),J=Z.var.studioContext;return oW1(Q,async()=>{try{await uW1(J,X,Q);let K=e86(Y,G);if(K)await $66(J,X,Q,K)}catch(K){if(K instanceof mc)return Z.json({error:K.message},403,TG);let W=K instanceof Error?K.message:String(K);return Z.json({error:W},502,TG)}return Q7(Z,"/_sandbox/git/publish",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/discard",(Z)=>{let{claimName:X}=Z.get("vmClaim");return oW1(X,()=>Q7(Z,"/_sandbox/git/discard",{forwardJsonBody:!0,map404to410:!0}))}),$.post("/:virtualMcpId/:branch/git/rebase",async(Z)=>{let X=sv(Z);if(X instanceof Response)return X;let{claimName:Q}=Z.get("vmClaim"),Y=Z.var.studioContext;return oW1(Q,async()=>{try{await uW1(Y,X,Q)}catch(G){let J=G instanceof Error?G.message:String(G);return Z.json({error:J},502,TG)}return Q7(Z,"/_sandbox/git/rebase",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/suggest-commit",VZ({maxSize:X66,onError:(Z)=>Z.json({error:"Payload too large"},413,TG)}),async(Z)=>{let X=sv(Z);if(X instanceof Response)return X;let{claimName:Q,userId:Y,projectRef:G}=Z.get("vmClaim"),J=Z.var.studioContext;try{let K=await Z.req.json().catch(()=>({})),W=K.status,H=K.diff,U=H!=null&&typeof H.diffs==="object"&&H.diffs!==null,[N,F]=dW1(W)&&U?[W,H]:await Promise.all([yI0(X,Q,"/_sandbox/git/status","GET",{userId:Y,projectRef:G}),yI0(X,Q,"/_sandbox/git/diff","GET",{userId:Y,projectRef:G})]),w=await n86(J,N,F);return Z.json(w,200,TG)}catch(K){let W=K instanceof Error?K.message:String(K);if(W==="SANDBOX_GONE")return Z.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,TG);return Z.json({error:W},502,TG)}}),$.post("/:virtualMcpId/:branch/git/judge-review",VZ({maxSize:X66,onError:(Z)=>Z.json({error:"Payload too large"},413,TG)}),async(Z)=>{let X=sv(Z);if(X instanceof Response)return X;let{claimName:Q,userId:Y,projectRef:G}=Z.get("vmClaim"),J=Z.var.studioContext;try{let K=await Z.req.json().catch(()=>({})),W=K.status,H=K.diff,U=H!=null&&typeof H.diffs==="object"&&H.diffs!==null,[N,F]=dW1(W)&&U?[W,H]:await Promise.all([yI0(X,Q,"/_sandbox/git/status","GET",{userId:Y,projectRef:G}),yI0(X,Q,"/_sandbox/git/diff","GET",{userId:Y,projectRef:G})]),w=await t86(J,N,F,typeof K.language==="string"?K.language:void 0);return Z.json(w,200,TG)}catch(K){let W=K instanceof Error?K.message:String(K);if(W==="SANDBOX_GONE")return Z.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,TG);return Z.json({error:W},502,TG)}}),$.get("/:virtualMcpId/:branch/preview-fetch",async(Z)=>{let X=sv(Z);if(X instanceof Response)return X;let{claimName:Q}=Z.get("vmClaim"),Y=Z.req.query("path");if(!Y||!Y.startsWith("/")||Y.startsWith("//")||Y.includes("..")||Y.includes("\\"))return Z.json({error:"Path not allowed"},403);let G;try{G=await X.getPreviewUrl(Q)}catch{return Z.json({error:"Preview not available"},502)}if(!G)return Z.json({error:"Preview not available"},502);let J=G.replace(/\/+$/,""),K=tW1(`${J}${Y}`),W;try{W=await fetch(K?.url??`${J}${Y}`,{...K?{headers:{host:K.hostHeader}}:{}})}catch{return Z.json({error:"Preview unreachable"},502)}let H;try{H=await W.text()}catch{return Z.json({error:"Preview unreachable"},502)}return new Response(H,{status:W.status,headers:{"content-type":W.headers.get("content-type")??"application/json"}})}),$.post("/:virtualMcpId/:branch/preview-invoke",VZ({maxSize:MM$,onError:(Z)=>Z.json({error:"Payload too large"},413)}),async(Z)=>{let X=sv(Z);if(X instanceof Response)return X;let{claimName:Q}=Z.get("vmClaim"),Y;try{Y=await X.getPreviewUrl(Q)}catch{return Z.json({error:"Preview not available"},502)}if(!Y)return Z.json({error:"Preview not available"},502);let G;try{G=await Z.req.json()}catch{return Z.json({error:"Invalid JSON body"},400)}if(!G||typeof G!=="object"||Array.isArray(G))return Z.json({error:"Invalid JSON body"},400);let J=r86(G);if(!J)return Z.json({error:"Invalid or missing __resolveType"},400);let K=a86(Y,J.resolveType),W=tW1(K),H;try{H=await fetch(W?.url??K,{method:"POST",headers:{"content-type":"application/json",...W?{host:W.hostHeader}:{}},body:JSON.stringify(J.payload),signal:AbortSignal.timeout(30000)})}catch{return Z.json({error:"Preview unreachable"},502)}let U;try{U=await H.text()}catch{return Z.json({error:"Preview unreachable"},502)}return new Response(U,{status:H.status,headers:{"content-type":H.headers.get("content-type")??"application/json"}})}),$};var J66=O(()=>{o6();kL();dc();y86();AN();h86();FK();TO();u86();l86();M61();fo();nW1();o86();s86();Z66();IM$=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;VM$=b86(async($,Z)=>{let X=$.var.studioContext;try{W0(X)}catch{return $.json({error:"Unauthorized"},401)}let Q=z1(X);if(!Q)return $.json({error:"Unauthorized"},401);let Y;try{Y=G0(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{qM$(J)}catch(w){let B=w instanceof Error?w.message:String(w);return $.json({error:B},400)}let K=await X.storage.virtualMcps.findById(G);if(!K||K.organization_id!==Y.id)return $.json({error:"Virtual MCP not found"},404);let W=Xo({orgId:Y.id,virtualMcpId:G,branch:J}),H=await _N(X,J,Q),U=g86({userId:H,projectRef:W}),N=K.metadata??null,F;try{F=(await NQ(X,{userId:H,branch:J,virtualMcpMetadata:N})).provider}catch{F=null}if(!F)return $.json({error:"No sandbox runner found"},404);return $.set("vmClaim",{claimName:U,callerUserId:Q,runner:F,virtualMcpId:G,branch:J,userId:H,projectRef:W,virtualMcpMetadata:N,connectionIds:K.connections?.map((w)=>w.connection_id)??[]}),Z()});bI0=new Map;TG={"Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache"};Y66=["clone","install","start"]});var K66=($)=>{let Z=new V1;if(Z.use("*",lv),Z.route("/",s20()),Z.route("/",je8()),Z.route("/",T86()),Z.route("/",j86()),Z.route("/",_I0()),Z.route("/tools",S86()),Z.route("/",M86()),Z.route("/",X86({kvStorage:$.kvStorage})),Z.route("/",$86()),Z.route("/fs",w86({getConnection:$.getNatsConnection})),Z.route("/sandbox",G66()),Z.route("/",D86()),Z.route("/deco-sites",$I0()),Z.route("/sso",i20()),Z.route("/",vI0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",Fe8()),$.mountDevAssets)Z.route("/dev-assets",ZI0({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("/",Ka8()),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",O86()),Z.route("/mcp",OP0()),Z.route("/mcp/self",CI0()),Z.route("/mcp",EP0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var W66=O(()=>{o6();JK1();we8();NK1();XI0();Ue();YK1();Z86();Q86();B86();Rr();oJ1();zP0();_W1();L86();E86();P86();R86();k86();xW1();C86();fW1();LP0();J66()});function vM$($){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 xM$($,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(_M$)});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 _M$=1e4,fM$=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},H66=()=>{let $=new V1;return $.use("*",fM$),$.get("/",async(Z)=>{let X=Z1(),Q=X.decoSupabaseUrl,Y=X.decoSupabaseServiceKey;if(!Q||!Y)return Z.json({apps:[]});try{let G=await xM$(Q,Y);return Z.json({apps:vM$(G)})}catch(G){return console.error("[deco-apps] GET error:",G),Z.json({error:"Failed to fetch apps"},502)}}),$};var U66=O(()=>{o6();b8()});import{z as u1}from"zod";function pH($,Z="invalid_request_error",X=null,Q=null){return{error:{message:$,type:Z,param:X,code:Q}}}function iM$($){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 nM$($,Z,X){try{return JSON.parse($)}catch{throw new w66(`Invalid JSON in tool call arguments for function '${X}' (tool_call_id: ${Z}): ${$}`)}}function pM$($){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:nM$(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 tM$($){let Z=$.map((X)=>{let Q=X.function.parameters?QG(X.function.parameters):QG({type:"object",properties:{}});return[X.function.name,l8({description:X.function.description,inputSchema:Q})]});return Object.fromEntries(Z)}function oM$($){if(!$)return;return{openai:{response_format:$}}}function rM$(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function N66($,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 F66($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var bM$=256,yM$,gM$,hM$,uM$,cM$,lM$,dM$,mM$,w66,B66,O66;var L66=O(()=>{h4();o6();dc();$F();yM$=u1.object({type:u1.literal("function"),function:u1.object({name:u1.string(),description:u1.string().optional(),parameters:u1.record(u1.string(),u1.unknown()).optional()})}),gM$=u1.object({id:u1.string(),type:u1.literal("function"),function:u1.object({name:u1.string(),arguments:u1.string()})}),hM$=u1.discriminatedUnion("role",[u1.object({role:u1.literal("system"),content:u1.string(),name:u1.string().optional()}),u1.object({role:u1.literal("user"),content:u1.union([u1.string(),u1.array(u1.union([u1.object({type:u1.literal("text"),text:u1.string()}),u1.object({type:u1.literal("image_url"),image_url:u1.object({url:u1.string(),detail:u1.string().optional()})})]))]),name:u1.string().optional()}),u1.object({role:u1.literal("assistant"),content:u1.string().nullable().optional(),name:u1.string().optional(),tool_calls:u1.array(gM$).optional()}),u1.object({role:u1.literal("tool"),content:u1.string(),tool_call_id:u1.string()})]),uM$=u1.object({type:u1.literal("text")}),cM$=u1.object({type:u1.literal("json_object")}),lM$=u1.object({type:u1.literal("json_schema"),json_schema:u1.object({name:u1.string(),description:u1.string().optional(),schema:u1.record(u1.string(),u1.unknown()),strict:u1.boolean().optional()})}),dM$=u1.union([uM$,cM$,lM$]),mM$=u1.object({model:u1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:u1.array(hM$),stream:u1.boolean().optional().default(!1),temperature:u1.number().min(0).max(2).optional(),max_tokens:u1.number().positive().optional(),top_p:u1.number().min(0).max(1).optional(),frequency_penalty:u1.number().min(-2).max(2).optional(),presence_penalty:u1.number().min(-2).max(2).optional(),stop:u1.union([u1.string(),u1.array(u1.string())]).optional(),tools:u1.array(yM$).optional(),tool_choice:u1.union([u1.literal("auto"),u1.literal("none"),u1.literal("required"),u1.object({type:u1.literal("function"),function:u1.object({name:u1.string()})})]).optional(),response_format:dM$.optional(),user:u1.string().optional()});w66=class w66 extends Error{constructor($){super($);this.name="MessageConversionError"}};B66=new V1;B66.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),X=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(pH("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(pH("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(pH("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Q=await $.req.json(),Y=mM$.safeParse(Q);if(!Y.success){let D=Y.error.issues[0]??{message:"Invalid request",path:[]};return $.json(pH(`Invalid request: ${D.message}`,"invalid_request_error",D.path.length>0?D.path.join("."):null),400)}let G=Y.data,J=iM$(G.model);if(!J)return $.json(pH("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:K}=J,{modelId:W}=J;if(!K){let E=(await Z.storage.aiProviderKeys.list({organizationId:Z.organization.id})).find((z)=>FE(z.providerId));if(!E)return $.json(pH("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);K=E.id}let H;try{H=await Z.aiProviders.activate(K,Z.organization.id)}catch{return $.json(pH(`AI provider credential not found or inaccessible: ${K}`,"invalid_request_error","model"),404)}let U=H.aiSdk.languageModel(W),N=pM$(G.messages),F=G.tools?tM$(G.tools):void 0,w=oM$(G.response_format),B=rM$(),L=Math.floor(Date.now()/1000);if(G.stream)return PF($,async(D)=>{let E=N66(U,N,F,G,w,$.req.raw.signal);try{let z=KO(E),j=!1,A=0,P="",q=async()=>{if(P.length===0)return;let k=P;P="",await D.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:L,model:G.model,choices:[{index:0,delta:{content:k},finish_reason:null}]})})};for await(let k of z.fullStream){if(!j&&(k.type==="text-delta"||k.type==="tool-call"))await D.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:L,model:G.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),j=!0;if(k.type==="text-delta"){if(P+=k.text,P.length>=bM$)await q()}else if(k.type==="tool-call"){await q();let M=A++;await D.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:L,model:G.model,choices:[{index:0,delta:{tool_calls:[{index:M,id:k.toolCallId,type:"function",function:{name:k.toolName,arguments:JSON.stringify(k.input)}}]},finish_reason:null}]})})}else if(k.type==="finish")await q(),await D.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:L,model:G.model,choices:[{index:0,delta:{},finish_reason:F66(k.finishReason)}],usage:k.totalUsage?{prompt_tokens:k.totalUsage.inputTokens??0,completion_tokens:k.totalUsage.outputTokens??0,total_tokens:k.totalUsage.totalTokens??0}:void 0})})}await q(),await D.writeSSE({data:"[DONE]"})}catch(z){let j=z;console.error("[openai-compat:stream] Error:",j.message),await D.writeSSE({data:JSON.stringify({error:{message:j.message,type:"server_error"}})})}});else{let D=N66(U,N,F,G,w,$.req.raw.signal),E=await GO(D),z={role:"assistant",content:E.text||null};if(E.toolCalls&&E.toolCalls.length>0)z.tool_calls=E.toolCalls.map((j)=>({id:j.toolCallId,type:"function",function:{name:j.toolName,arguments:JSON.stringify("input"in j?j.input:{})}})),z.content=null;return $.json({id:B,object:"chat.completion",created:L,model:G.model,choices:[{index:0,message:z,finish_reason:F66(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(pH("Request aborted","invalid_request_error"),400);if(Y.name==="MessageConversionError")return $.json(pH(Y.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",Y.message,Y.stack),$.json(pH(Y.message,"server_error"),500)}});O66=B66});function sM$(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??aM$}}var D66,aM$="https://ph.studio.decocms.com",E66;var z66=O(()=>{o6();fr0();f_();KZ();b8();mJ1();al0();D66=new V1;D66.get("/",($)=>{let Z={version:r50.version,theme:LX8(),...Zz().logo&&{logo:Zz().logo},...DH()&&{internalUrl:il1()},...Z1().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!Z1().firecrawlApiKey,auth:Ms8(),posthog:sM$(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:!DH()&&Z1().sandboxProviderKind==="agent-sandbox"}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});E66=D66});function ic($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function rW1($){return(ic($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((X)=>X.charAt(0).toUpperCase()+X.slice(1)).join(" ")}function P66($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(ic($))}&sz=${Z}`}function j66($,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 A66($){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.`,K=Y?.trim()?j66(`${Y.trim().replace(/\s+/g," ")} \u2014 ${J}`,200):j66(`How does ${X} really perform? ${J}`,200);return{title:G,description:K}}import{z as X1}from"zod";var ev,eM$,$k$,Zk$,Xk$,T66;var R66=O(()=>{ev=X1.enum(["good","bad","neutral"]),eM$=X1.preprocess(($)=>{if(Array.isArray($))return{kind:"text",value:$.find((X)=>X!==null&&typeof X!=="object")??""};return $!==null&&typeof $==="object"?$:{kind:"text",value:$}},X1.object({kind:X1.enum(["text","number","sparkline","badge","score"]).catch("text"),value:X1.coerce.string().optional(),tone:ev.optional(),muted:X1.boolean().optional(),delta:X1.coerce.string().optional(),deltaDir:X1.enum(["up","down","neutral"]).optional(),points:X1.array(X1.coerce.number()).optional(),label:X1.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 $})),$k$=X1.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},X1.array(eM$)),Zk$={key:X1.coerce.string(),title:X1.coerce.string(),eyebrow:X1.coerce.string().optional(),headline:X1.coerce.string(),annotation:X1.coerce.string().optional(),methodology:X1.coerce.string().optional(),sources:X1.array(X1.object({name:X1.coerce.string(),logoUrl:X1.coerce.string()})).optional()},Xk$=X1.discriminatedUnion("template",[X1.object({template:X1.literal("cover"),score:X1.object({value:X1.coerce.number(),max:X1.coerce.number().optional(),grade:X1.coerce.string().optional(),label:X1.coerce.string().optional()}).optional(),brandImage:X1.coerce.string().optional(),screenshot:X1.coerce.string().optional(),mobileScreenshot:X1.coerce.string().optional()}),X1.object({template:X1.literal("cta"),ctaUrl:X1.coerce.string().optional(),ctaLabel:X1.coerce.string().optional(),bullets:X1.array(X1.coerce.string()).optional()}),X1.object({template:X1.literal("series"),points:X1.array(X1.coerce.number()).min(2),xLabels:X1.array(X1.coerce.string()).min(1),unit:X1.coerce.string().optional(),callout:X1.object({index:X1.coerce.number(),value:X1.coerce.string(),tone:ev.optional()})}),X1.object({template:X1.literal("threshold"),value:X1.coerce.string().default(""),metricLabel:X1.coerce.string().optional(),ratio:X1.coerce.number(),thresholdRatio:X1.coerce.number().optional(),thresholdLabel:X1.coerce.string().default(""),tone:ev.optional()}),X1.object({template:X1.literal("stats"),stats:X1.array(X1.object({value:X1.coerce.string(),label:X1.coerce.string(),tone:ev.optional()})).min(1)}),X1.object({template:X1.literal("bars"),items:X1.array(X1.object({value:X1.coerce.string(),label:X1.coerce.string(),ratio:X1.coerce.number(),tone:ev.optional()})).min(1)}),X1.object({template:X1.literal("gauges"),gauges:X1.array(X1.object({label:X1.coerce.string(),value:X1.coerce.string(),status:X1.enum(["good","warn","bad"]).catch("warn"),caption:X1.coerce.string().optional(),ratio:X1.coerce.number().optional()})).min(1)}),X1.object({template:X1.literal("checklist"),checks:X1.array(X1.object({label:X1.coerce.string(),status:X1.enum(["pass","fail","warn"]).catch("fail"),value:X1.coerce.string().optional()})).min(1)}),X1.object({template:X1.literal("table"),columns:X1.array(X1.object({label:X1.coerce.string(),align:X1.enum(["left","right"]).optional()})).min(1),rows:X1.array($k$).min(1),highlightRow:X1.coerce.number().optional()}),X1.object({template:X1.literal("products"),products:X1.array(X1.object({name:X1.coerce.string(),price:X1.coerce.string().optional(),image:X1.coerce.string().optional(),url:X1.coerce.string().optional()})).min(1)}),X1.object({template:X1.literal("list"),entries:X1.array(X1.object({label:X1.coerce.string(),severity:X1.enum(["error","warning","notice"]).catch("notice")})).min(1),moreCount:X1.coerce.number().optional()}),X1.object({template:X1.literal("keywords"),volumeLabel:X1.coerce.string().optional(),keywords:X1.array(X1.object({term:X1.coerce.string(),volume:X1.coerce.string(),position:X1.coerce.number().catch(0)})).min(1)}),X1.object({template:X1.literal("competitor"),metricLabel:X1.coerce.string().optional(),competitors:X1.array(X1.object({name:X1.coerce.string(),value:X1.coerce.string(),tone:ev.optional(),isYou:X1.boolean().optional()})).min(1)}),X1.object({template:X1.literal("scorecard"),rivalLabel:X1.coerce.string().optional(),dimensions:X1.array(X1.object({label:X1.coerce.string(),you:X1.coerce.string(),rival:X1.coerce.string().optional(),rivalName:X1.coerce.string().optional(),tone:ev.optional()})).min(1)})]),T66=X1.object({...Zk$,template:Xk$})});function gI0($){let Z=[],X=[...$.sections].sort((Y,G)=>Y.position-G.position).map((Y)=>{let G=T66.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 aW1=O(()=>{R66()});import{join as I66}from"path";async function Yk$($){try{let Z=await fetch(`${cW({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(Qk$)});if(!Z.ok)return null;let X=await Z.json(),{deck:Q}=gI0(X);if(!Q.slides.length)return null;let Y=Q.slides.find((K)=>K.template.template==="cover"),G=Y?.template,J=G&&G.template==="cover"?G:void 0;return{brand:Q.meta.brand?.trim()||rW1($),score:Q.meta.scores?.cover??J?.score?.value,verdict:Y?.annotation?.trim()||Y?.headline?.trim()||void 0}}catch{return null}}function RG($){return $.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;")}function Gk$($,Z){let X=ic($),Q=Z?.brand?.trim()||rW1(X),Y=P66(X,128),J=`${(Z1().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(X)}`,{title:K,description:W}=A66({brand:Q,domain:X,score:Z?.score,verdict:Z?.verdict}),H=`${J}/og.png`,U=`${Q} commerce report by decocms`;return[`<title>${RG(K)}</title>`,`<meta name="description" content="${RG(W)}" />`,'<meta name="robots" content="noindex, follow" />','<meta property="og:type" content="website" />','<meta property="og:site_name" content="decocms" />',`<meta property="og:title" content="${RG(K)}" />`,`<meta property="og:description" content="${RG(W)}" />`,`<meta property="og:url" content="${RG(J)}" />`,`<meta property="og:image" content="${RG(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${RG(U)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${RG(K)}" />`,`<meta name="twitter:description" content="${RG(W)}" />`,`<meta name="twitter:image" content="${RG(H)}" />`,`<meta name="twitter:image:alt" content="${RG(U)}" />`,`<link rel="canonical" href="${RG(J)}" />`,`<link rel="icon" href="${RG(Y)}" sizes="any" />`].join(`
4010
4010
  `)}function Jk$($,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}
4011
4011
  </head>`)}function q66($){let Z=new V1;return Z.get("/:domain/og.png",async(X)=>{let Q=ic(X.req.param("domain")),Y=async()=>{let G=$?Bun.file(I66($,"report-og-fallback.png")):null;if(!G||!await G.exists())return X.notFound();return X.body(new Uint8Array(await G.arrayBuffer()),200,{"Content-Type":"image/png","Cache-Control":"public, max-age=0, s-maxage=3600"})};try{let G=await fetch(`${cW({})}/api/v2/public/diagnostics/${encodeURIComponent(Q)}/og.png`,{signal:AbortSignal.timeout(Kk$)}),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=$?I66($,"index.html"):null,G=Y?Bun.file(Y):null;if(!G||!await G.exists())return X.notFound();let J=await G.text();try{let K=await Yk$(ic(Q)),W=Gk$(Q,K);return X.html(Jk$(J,W),200,{"Cache-Control":"public, max-age=0, s-maxage=300"})}catch{return X.html(J)}}),Z}var Qk$=2500,Kk$=1e4;var M66=O(()=>{o6();aW1();Oz();b8()});function ye($,Z){return fetch(`${cW({})}${$}`,Z)}async function Wk$($,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 ye(`/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:K,drops:W}=gI0(J);return{status:K.slides.length?"ready":"empty",deck:K,scanned_at:J.scanned_at,drops:W}}var Hk$,gK,hI0=async($,Z)=>{if(!$.get("reportUser"))return $.json({error:"Authentication required"},401);await Z();return},k66;var V66=O(()=>{o6();w3();Oz();aW1();Hk$=new Set(["complete","errored","terminated","unknown"]),gK=new V1;gK.use("*",async($,Z)=>{let X=await k6.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});gK.use("/run",hI0);gK.use("/status",hI0);gK.use("/link-token/*",hI0);gK.use("/suggest",hI0);gK.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 Wk$(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)}});gK.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 ye("/api/v2/diagnostics/run",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${Bz({})}`},body:JSON.stringify({url:Q,email:Y,distinct_id:G})});if(!J.ok)return $.json({error:`run HTTP ${J.status}`},502);let K=await J.json(),W=K.blocked?{state:"blocked"}:K.status==="fresh"?{state:"fresh"}:K.mode==="sync"?{state:"sync"}:{state:"running",id:K.id??null};return $.json(W)}catch{return $.json({error:"run failed"},502)}});gK.get("/status",async($)=>{let Z=$.req.query("id");if(!Z)return $.json({error:"id is required"},400);try{let X=await ye(`/api/v2/diagnostics/status?id=${encodeURIComponent(Z)}`,{headers:{Authorization:`Bearer ${Bz({})}`}});if(!X.ok)return $.json({error:`status HTTP ${X.status}`},502);let Y=(await X.json()).status??"unknown",G={done:Hk$.has(Y),status:Y};return $.json(G)}catch{return $.json({error:"status failed"},502)}});gK.get("/link-token/:id",async($)=>{let Z=$.req.param("id");try{let X=await ye(`/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)}});gK.get("/suggest",async($)=>{let Z=($.req.query("q")??"").trim().slice(0,64);if(Z.length<2)return $.json({suggestions:[]});try{let X=await ye(`/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:[]})}});k66=gK});import{createHmac as Uk$,timingSafeEqual as Nk$}from"crypto";function C66($,Z,X,Q=Date.now()){if(!Z||!X)return!1;let Y,G=[];for(let H of Z.split(",")){let U=H.indexOf("=");if(U<=0)continue;let N=H.slice(0,U).trim(),F=H.slice(U+1).trim();if(N==="t")Y=F;else if(N==="v1")G.push(F)}if(!Y||G.length===0)return!1;let J=Number(Y);if(!Number.isFinite(J)||Math.abs(Q/1000-J)>Fk$)return!1;let K=Uk$("sha256",X).update(`${Y}.${$}`).digest("hex"),W=Buffer.from(K,"hex");return G.some((H)=>{let U=Buffer.from(H,"hex");return W.length===U.length&&Nk$(W,U)})}function _66($){let Z;try{Z=JSON.parse($)}catch{return null}let X=i3(Z),Q=i3(i3(X?.data)?.object);if(!X||typeof X.type!=="string"||!Q)return null;return{id:tH(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 v66($){switch($){case"active":case"trialing":return"active";case"past_due":return"past_due";default:return"canceled"}}function tH($){return typeof $==="string"?$:void 0}function i3($){return typeof $==="object"&&$!==null?$:void 0}function uI0($){return typeof $==="number"?new Date($*1000):null}function $H1($){return tH($)??tH(i3($)?.id)}function wk$($){return $H1($.subscription)??tH(i3(i3($.parent)?.subscription_details)?.subscription)}function Bk$($){let Z=uI0($.current_period_end);if(Z)return Z;let X=i3($.items)?.data;if(!Array.isArray(X))return null;let Q=0;for(let Y of X){let G=i3(Y)?.current_period_end;if(typeof G==="number"&&G>Q)Q=G}return Q>0?new Date(Q*1000):null}function sW1($,Z){let X=uI0($.created);return!!X&&!!Z.lastStripeEventAt&&X<Z.lastStripeEventAt}function eW1($,Z){let X=uI0($.created);if(!X)return;return Z.lastStripeEventAt&&Z.lastStripeEventAt>X?void 0:X}async function Ok$($,Z){let X=Z.data.object;switch(Z.type){case"checkout.session.completed":case"checkout.session.async_payment_succeeded":{let Q=tH(i3(X.metadata)?.orgId);if(!Q)return{handled:!1,reason:"no orgId"};if(tH(i3(X.metadata)?.kind)==="topup"){if(X.mode!=="payment")return{handled:!1,reason:"topup with wrong mode"};if(tH(X.payment_status)!=="paid")return{handled:!1,reason:"payment not confirmed"};let J=tH(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 K=Number(i3(X.metadata)?.creditCents);if(!Number.isInteger(K)||K<=0)return console.error("stripe webhook: paid topup with bad metadata \u2014 credit NOT applied",{eventId:Z.id,organizationId:Q,creditCents:i3(X.metadata)?.creditCents}),{handled:!1,reason:"bad topup metadata"};return{handled:!0,organizationId:Q,topUp:{creditCents:K,referenceId:`stripe-topup:${J}`}}}if(X.mode!=="subscription")return{handled:!1,reason:"not a subscription checkout"};if(tH(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=$H1(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(sW1(Z,Y))return{handled:!1,reason:"stale event"};return await $.updateStripeState(Q,{stripeCustomerId:$H1(X.customer),stripeSubscriptionId:G,status:"active",lastStripeEventAt:eW1(Z,Y)}),{handled:!0,organizationId:Q}}case"customer.subscription.updated":case"customer.subscription.deleted":{let Q=tH(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&&sW1(Z,Y))return{handled:!1,reason:"stale event"};let J=G?"canceled":v66(X.status);return await $.updateStripeState(Y.organizationId,{status:J,currentPeriodEnd:Bk$(X),...G&&{stripeSubscriptionId:null},lastStripeEventAt:eW1(Z,Y)}),{handled:!0,organizationId:Y.organizationId}}case"invoice.paid":{let Q=wk$(X);if(!Q)return{handled:!1,reason:"no sub id"};let Y=await $.getBillingByStripeSubscriptionId(Q);if(!Y)return{handled:!1,reason:"unknown subscription"};if(sW1(Z,Y))return{handled:!1,reason:"stale event"};return await $.updateStripeState(Y.organizationId,{status:"active",currentPeriodEnd:uI0(X.period_end),lastStripeEventAt:eW1(Z,Y)}),{handled:!0,organizationId:Y.organizationId}}default:return{handled:!1,reason:`unhandled event ${Z.type}`}}}function Lk$($,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:v66(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 S66($,Z){let X=Lk$($,Z);if(!X)return;YN({event:X.name,organizationId:X.organizationId,...$.id?{uuid:RY8(`stripe:${$.id}:${X.name}`)}:{},...$.created?{timestamp:new Date($.created*1000)}:{},properties:X.properties})}async function x66($){let Z=new yW(U6().db),X=await Ok$(Z,$);if(!(X.handled&&X.topUp))S66($,X);if(X.handled&&X.topUp)await Bx8({organizationId:X.organizationId,amountCents:X.topUp.creditCents,referenceId:X.topUp.referenceId}),S66($,X);if(!X.handled&&X.orphanSubscriptionId)try{await kH8(X.orphanSubscriptionId),console.error("stripe webhook: canceled orphan subscription",{subscriptionId:X.orphanSubscriptionId,eventId:$.id})}catch(Q){if(!(Q instanceof rJ&&(Q.status===400||Q.status===404)))throw Q}return X}var Fk$=300;var f66=O(()=>{o7();a4();_t();d71()});var Dk$=1048576,ZH1;var b66=O(()=>{o6();kL();b8();f66();ZH1=new V1;ZH1.post("/webhook",VZ({maxSize:Dk$,onError:($)=>$.json({error:"payload too large"},413)}),async($)=>{let Z=Z1().stripeWebhookSecret;if(!Z)return $.json({error:"stripe billing not configured"},503);let X=await $.req.text();if(!C66(X,$.req.header("stripe-signature"),Z))return $.json({error:"invalid signature"},400);let Y=_66(X);if(!Y)return $.json({error:"invalid payload"},400);let G=await x66(Y);return console.log("stripe webhook",{eventId:Y.id,type:Y.type,livemode:Y.livemode,...G}),$.json({received:!0})})});import{timingSafeEqual as Ek$}from"crypto";function jk$($,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 Ek$(Buffer.from(Y),Buffer.from(Q))}var zk$=5242880,XH1;var y66=O(()=>{o6();kL();_o();XH1=new V1;XH1.post("/webhook",VZ({maxSize:zk$,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(!jk$(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 K=(await P61())?.markTenantPoolsDirty(G,Y)??[];return $.json({ok:!0,pools:K})})});function g66($,Z){if(Z.startsWith("text/html")||Z.startsWith("image/svg"))$.set("Content-Security-Policy","sandbox allow-scripts allow-modals allow-same-origin")}var h66,Pk$,Ak$,u66;var c66=O(()=>{o6();uJ();Ih();Vg();h66=new V1,Pk$=["range","if-none-match","if-modified-since"],Ak$=["content-type","content-length","content-range","accept-ranges","etag","last-modified"];h66.get("/:org/files/*",async($)=>{let Z=$.get("studioContext"),X=Z.organization?.id;if(!Z.auth?.user?.id){if(Rc($))return $.redirect(`/login?next=${encodeURIComponent($.req.path)}`,302);throw new H8(401,{message:"Authentication required"})}if(!X)throw new H8(401,{message:"Organization context required"});let Q=$.req.path.replace(/^.*\/files\//,"");if(!Q)throw new H8(400,{message:"Missing file key"});let Y=await Hr(Q,Z);if(!Y)throw new H8(503,{message:"Object storage not configured"});if(Y.startsWith("data:")&&iJ()){let W=Y.match(/^data:([^;]+);base64,(.+)$/s);if(!W)throw new H8(500,{message:"Invalid data URL from storage"});let[,H,U]=W,N=Buffer.from(U,"base64"),F=new Headers({"Content-Type":H,"Cache-Control":"private, max-age=86400"});return g66(F,H),new Response(N,{status:200,headers:F})}let G=new Headers;for(let W of Pk$){let H=$.req.header(W);if(H)G.set(W,H)}let J=await fetch(Y,{headers:G});if(J.status===403||J.status===404)throw new H8(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 H8(502,{message:"Upstream storage error"});let K=new Headers;for(let W of Ak$){let H=J.headers.get(W);if(H)K.set(W,H)}return K.set("Cache-Control","private, max-age=86400"),g66(K,K.get("content-type")??""),new Response(J.body,{status:J.status,headers:K})});u66=h66});var ge=_(($x)=>{var Tk$=$x&&$x.__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]}),Rk$=$x&&$x.__exportStar||function($,Z){for(var X in $)if(X!=="default"&&!Object.prototype.hasOwnProperty.call(Z,X))Tk$(Z,$,X)};Object.defineProperty($x,"__esModule",{value:!0});Rk$(dY(),$x)});var m66=_((l66)=>{Object.defineProperty(l66,"__esModule",{value:!0});l66.version=void 0;l66.version="3.4.0"});var p66=_((oH)=>{var Ik$=oH&&oH.__importDefault||function($){return $&&$.__esModule?$:{default:$}};Object.defineProperty(oH,"__esModule",{value:!0});oH.NodeTransport=oH.VERSION=void 0;oH.nodeResolveHost=Ck$;var X5=ge(),qk$=N0("net"),QH1=N0("tls"),Mk$=N0("path"),i66=N0("fs"),kk$=Ik$(N0("dns")),Vk$=m66();oH.VERSION=Vk$.version;var Sk$="nats.js";class n66{socket;version;lang;yields=[];signal=(0,X5.deferred)();closedNotification=(0,X5.deferred)();options;connected=!1;tlsName="";done=!1;closeError;constructor(){this.lang=Sk$,this.version=oH.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,X5.checkOptions)(Y,Z);let{tls_required:G,tls_available:J}=Y,K=J===!0&&Z.tls!==null;if(!Q&&(G||K))this.socket=await this.startTLS();if(this.done)this.socket?.destroy();if(G&&this.socket.encrypted!==!0)throw X5.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 X5.errors.ConnectionError("error connecting - node provided an undefined error");let{code:J}=G,K=J==="ECONNREFUSED"?new X5.errors.ConnectionError("connection refused",{cause:G}):G;throw this.socket?.destroy(),K}}dial($){let Z=(0,X5.deferred)(),X,Q=(0,qk$.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,X5.deferred)(),Z;return this.socket.on("data",(X)=>{this.yields.push(X);let Q=X5.DataBuffer.concat(...this.yields),Y=(0,X5.extractProtocolMessage)(Q);if(Y!=="")try{let G=X5.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,X5.deferred)();try{if($=(0,Mk$.resolve)($),!(0,i66.existsSync)($))Z.reject(Error(`${$} doesn't exist`));(0,i66.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 K=await this.loadFile(Z);if(K)$.cert=K}else if(X)$.cert=X;if(G){let K=await this.loadFile(G);if(K)$.key=K}else if(J)$.key=J;if(Q){let K=await this.loadFile(Q);if(K)$.ca=[K]}else if(Y)$.ca=Y;return Promise.resolve($)}catch(K){return Promise.reject(K)}}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,X5.extend)(X,this.options.tls,Y)}catch(Y){return Promise.reject(new X5.errors.ConnectionError(Y.message,{cause:Y}))}let Q=(0,X5.deferred)();try{let Y=(0,QH1.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 X5.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,X5.extend)(Z,this.options.tls,Q)}catch(Q){return Promise.reject(new X5.errors.ConnectionError(Q.message,{cause:Q}))}let X=(0,X5.deferred)();try{let Q=(0,QH1.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 X5.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,X5.render)($[Z])}`);yield $[Z]}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,X5.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 QH1.TLSSocket}_send($){if(this.isClosed||this.socket===void 0)return Promise.resolve();if(this.options.debug)console.info(`< ${(0,X5.render)($)}`);let Z=(0,X5.deferred)();try{this.socket.write($,(X)=>{if(X){if(this.options.debug)console.error(`!!! ${(0,X5.render)($)}: ${X}`);return Z.reject(X)}return Z.resolve()})}catch(X){if(this.options.debug)console.error(`!!! ${(0,X5.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}}oH.NodeTransport=n66;function Ck$($){let Z=(0,X5.deferred)();return kk$.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 s66=_((a66)=>{Object.defineProperty(a66,"__esModule",{value:!0});a66.connect=_k$;var t66=p66(),o66=ge(),r66=ge();function _k$($={}){if((0,r66.hasWsProtocol)($))return Promise.reject(r66.errors.InvalidArgumentError.format("servers","node client doesn't support websockets, use the 'wsconnect' function instead"));return(0,o66.setTransportFactory)({factory:()=>{return new t66.NodeTransport},dnsResolveFn:t66.nodeResolveHost}),o66.NatsConnectionImpl.connect($)}});var e66=_((AF)=>{var xk$=AF&&AF.__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]}),fk$=AF&&AF.__exportStar||function($,Z){for(var X in $)if(X!=="default"&&!Object.prototype.hasOwnProperty.call(Z,X))xk$(Z,$,X)};Object.defineProperty(AF,"__esModule",{value:!0});AF.connect=void 0;var bk$=s66();Object.defineProperty(AF,"connect",{enumerable:!0,get:function(){return bk$.connect}});fk$(ge(),AF)});function Q46($){let Z=$?.connectFn??uk$,X=null,Q=null,Y=!1,G=!1,J=!1,K=[];function W(){return X!==null&&!X.isClosed()&&!X.isDraining()&&!J}function H(){console.log(`[NatsProvider] fireReady: ${K.length} callbacks`);for(let F of K)try{F()}catch{}}function U(F){(async()=>{for await(let w of F.status())if(w.type==="disconnect")console.log("[NatsProvider] Disconnected"),J=!0;else if(w.type==="reconnect")console.log("[NatsProvider] Reconnected, re-firing ready callbacks"),J=!1,Q=null,H()})().catch(()=>{})}async function N(F,w){let B=0;while(!G)try{X=await Z({servers:F,timeout:hk$,reconnect:!0,maxReconnectAttempts:-1,...w?{authenticator:w}:{}}),console.log(`[NatsProvider] Connected to ${X.getServer()} after ${B} attempt(s)`),Q=null,J=!1,U(X),H();return}catch{B++;let L=vX(gk$,yk$,B-1,2,0.5);await _8(L)}}return{init(F,w){if(Y)return;Y=!0,G=!1;let B=w?.creds?$46.credsAuthenticator(new TextEncoder().encode(w.creds)):void 0;N(F,B).catch(()=>{})},isConnected(){return W()},getConnection(){return W()?X:null},getJetStream(){if(!W())return null;if(!Q)Q=X46.jetstream(X);return Q},onReady(F){if(K.push(F),W())try{F()}catch{}},async drain(){if(G=!0,Y=!1,Q=null,J=!1,X){let F=X;X=null,await F.drain().catch(()=>{})}}}}function uk$($){return Z46.connect($)}var $46,Z46,X46,yk$=100,gk$=3000,hk$=3000;var Y46=O(()=>{F$();$46=V(mm(),1),Z46=V(e66(),1),X46=V(KE(),1)});function YH1($,Z){return`${$}.${Z}`}class GH1{cache;constructor($){this.cache=Uc({ttlMs:$?.ttlMs??ck$,maxSize:$?.maxSize??lk$})}async get($,Z){return this.cache.get(YH1($,Z))??null}async set($,Z,X){this.cache.set(YH1($,Z),X)}async invalidate($,Z){this.cache.delete(YH1($,Z))}teardown(){this.cache.clear()}}var ck$=600000,lk$=5000;var G46=()=>{};function cI0($,Z){return`${$}:${Z}`}function JH1($){let Z=Uc({ttlMs:$?.ttlMs??dk$,maxSize:$?.maxSize??mk$}),X=$?.getConnection,Q=crypto.randomUUID(),Y=new TextEncoder,G=new TextDecoder,J=null;function K(W,H){let U=X?.();if(!U)return;try{U.publish(J46,Y.encode(JSON.stringify({organizationId:W,keyId:H,originId:Q})))}catch(N){console.warn("[ProviderKeyCache] Publish failed (non-critical):",N)}}return{get(W,H){return Z.get(cI0(W,H))},set(W,H,U){Z.set(cI0(W,H),U)},invalidate(W,H){Z.delete(cI0(W,H)),K(W,H)},start(){if(J)return;let W=X?.();if(!W)return;J=W.subscribe(J46),(async()=>{for await(let H of J)try{let U=JSON.parse(G.decode(H.data));if(U.originId===Q)continue;Z.delete(cI0(U.organizationId,U.keyId))}catch{}})().catch(console.error)},teardown(){J?.unsubscribe(),J=null,Z.clear()}}}var J46="studio.ai-provider-keys.invalidate",dk$=30000,mk$=5000;var K46=()=>{};class KH1{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=W46.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 W46)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 W46;var H46=O(()=>{W46=["studio.decopilot.cancel","mesh.decopilot.cancel"]});var U46=($)=>{let Z;return()=>Z??=$()},WH1,HH1;var N46=O(()=>{k5();WH1=U46(()=>E6.createHistogram("decopilot.stream.encode_ms",{description:"Per-chunk JSON.stringify+encode time for decopilot stream",unit:"ms"})),HH1=U46(()=>E6.createCounter("decopilot.stream.published_chunks",{description:"Logical decopilot stream chunks published to JetStream",unit:"{chunks}"}))});function ak$(){return{name:dN,subjects:[`${gj0}.>`],storage:hK.StorageType.File,max_age:pk$,max_bytes:ok$,max_msgs_per_subject:rk$,discard:hK.DiscardPolicy.Old,retention:hK.RetentionPolicy.Limits,duplicate_window:tk$,num_replicas:1}}class B46{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 F46($){let Z=w46.headers();for(let[X,Q]of Object.entries($))Z.set(X,Q);return Z}function ZV$($,Z){let X=0;return{publish(Q,Y,G,J){Q.publish(Y,G,J?{headers:J}:void 0).catch((K)=>{if(X++,nk$().add(1,{"org.id":Z??"unknown"}),X===1||X%100===0)console.warn(`[Decopilot] JetStream publish failed for thread ${$} (${X} total):`,K)})},get errorCount(){return X}}}function XV$($){if(!($ instanceof Error))return!1;if($.name==="TimeoutError")return!0;return/timeout|no responders|503/i.test($.message)}class UH1{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=ak$(),X=await j9(async()=>{let Q=this.options.getJetStreamManager?await this.options.getJetStreamManager():await hK.jetstreamManager($);try{await Q.streams.info(dN),await Q.streams.update(dN,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(dN),await Q.streams.add(Z);else throw Y}return Q},{maxAttempts:5,minTimeout:250,maxTimeout:4000,jitter:0.5,isRetriable:XV$});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=ZV$(Z,Q),J=!1,K=()=>{if(J)return;J=!0;let H=QV8(Z);Y.publish(H.subject,H.data).catch(()=>{})};X.addEventListener("abort",K,{once:!0});let W=(H)=>{let U=performance.now(),N=l$1(H,{runId:Z}),F=performance.now()-U;if(WH1().record(F),HH1().add(1,{"org.id":Q??"unknown"}),$V$?.record(F,N.reduce((w,B)=>w+B.data.length,0)),N.length===0){console.warn(`[Decopilot] dropping oversized stream chunk for thread ${Z}`);return}for(let w of N)G.publish(Y,w.subject,w.data,w.headers?F46(w.headers):void 0)};return(async()=>{let H=$.getReader(),U=0,N=0,F;try{while(!0){let{done:w,value:B}=await H.read();if(w)break;if(W(B),N++,++U>=64)U=0,await new Promise((L)=>setImmediate(L))}}catch(w){F=w,console.warn(`[Decopilot] stream pump error for thread ${Z}:`,w?.message??w)}finally{if(H.releaseLock(),K(),ek$)console.warn(JSON.stringify({msg:"decopilot-stream-diag",event:"pump-done",taskId:Z,publishedChunks:N,publishErrors:G.errorCount}))}if(F!==void 0)throw F})()}async publishRawChunk($,Z,X){let Q=this.js;if(!Q)return!1;let Y=performance.now(),G=l$1(Z,{runId:$,dedup:X});if(WH1().record(performance.now()-Y),HH1().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:F46(J.headers)}:{},...J.msgId?{msgID:J.msgId}:{}});return!0}async publishDone($,Z,X){let Q=this.js;if(!Q)return!1;let Y=XV8({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"?hK.DeliverPolicy.New:hK.DeliverPolicy.All,G=X?.closeOnDone??!1,J=lO($),K;try{K=await(await Q.consumers.get(dN,{filter_subjects:J,deliver_policy:Y})).consume()}catch(L){return console.warn("[Decopilot] JetStream tail unavailable (non-critical):",L?.message??L),null}let U=dj0({messages:async function*(){try{for await(let L of K)yield{subject:L.subject,data:L.data,headers:L.headers}}finally{K.stop()}}(),onCancel:()=>K.stop()}).pipeThrough(hj0()).pipeThrough(uj0()).getReader(),N=!1,F=()=>{if(N)return;N=!0;try{U.releaseLock()}catch{}},w=!1,B=()=>{if(w)return;w=!0,K.stop(),U.cancel().catch(()=>{}),F()};return Z?.addEventListener("abort",B,{once:!0}),new ReadableStream({async pull(L){for(;;){let{done:D,value:E}=await U.read();if(D){B(),L.close();return}let z=E;if(z.kind==="done"){if(G){B(),L.close();return}continue}L.enqueue(z.chunk);return}},cancel(){B()}})}purge($){if(!this.jsm)return;this.jsm.streams.purge(dN,{filter:lO($)}).catch(()=>{})}teardown(){this.js=null,this.jsm=null}}var hK,w46,ik$=($)=>{let Z;return()=>Z??=$()},nk$,pk$=86400000000000,tk$=120000000000,ok$=4294967296,rk$=500000,sk$,ek$,$V$;var O46=O(()=>{F$();d$1();mj0();cj0();k5();N46();hK=V(KE(),1),w46=V(mm(),1),nk$=ik$(()=>E6.createCounter("decopilot.stream.publish_errors",{description:"Number of JetStream publish failures for decopilot stream chunks",unit:"{errors}"}));sk$=process.env.STREAM_ENCODE_TRACE==="1",ek$=process.env.DECOPILOT_STREAM_TRACE==="1";$V$=sk$?new B46:null});function lI0($,Z,X,Q){if(!Q)return!1;return $.emit(Z,jW(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 L46=O(()=>{q6()});class NH1{storage;options;timer=null;constructor($,Z={}){this.storage=$;this.options=Z}start(){if(this.timer)return;let $=this.options.intervalMs??300000;this.timer=setInterval(()=>{this.runOnce()},$)}async runOnce(){let $=this.options.staleAfterMs??3600000;try{let Z=await this.storage.sweepAbandoned($);if(Z>0)console.log(`[async-research-sweeper] marked ${Z} stale jobs as abandoned`);return Z}catch(Z){return console.error("[async-research-sweeper] sweep failed",Z),0}}dispose(){if(this.timer)clearInterval(this.timer),this.timer=null}}class FH1{taskBoard;contextFactory;options;timer=null;running=!1;cursor=null;constructor($,Z,X={}){this.taskBoard=$;this.contextFactory=Z;this.options=X}start(){if(this.timer)return;let $=this.options.intervalMs??QV$;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??GV$,X=this.options.itemIntervalMs??YV$,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(K){console.error(`[task-board-review-sweeper] ${G} failed`,K)}await this.reapNeverStartedThreads(Z),$+=await this.dispatchDueRetries(Z),await this.reactToUnhandledFailures(Z)}catch(Z){console.error("[task-board-review-sweeper] sweep failed",Z)}finally{this.running=!1}return $}async reapNeverStartedThreads($){try{let Z=await this.taskBoard.failNeverStartedLinkedThreads($,new Date(Date.now()-$M8),R51);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()-KV$));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 w$1(this.taskBoard,Y,Q)}catch(G){console.error(`[task-board-review-sweeper] unhandled-failure reaction for ${X} failed`,G)}}async dispatchDueRetries($){let Z=0,X=await this.taskBoard.listItemsDueForRetry($,new Date);for(let{id:Q,organizationId:Y,attempts:G}of X)try{if(!await this.taskBoard.claimDueRetry(Q,Y,new Date))continue;let J=await this.taskBoard.getById(Q,Y);if(!J||J.status!=="in_progress"||J.assigneeId!==J$)continue;let K=await this.contextFactory(Y,J.assignedBy??J.createdBy);if(!K)continue;await mN(K,J,{runClass:"retry"}),Z++,console.warn(`[task-board-review-sweeper] re-dispatched ${Q} after a failure (attempt ${G})`)}catch(J){console.error(`[task-board-review-sweeper] retry dispatch for ${Q} failed`,J),await this.taskBoard.scheduleRunRetry(Q,Y,G,new Date(Date.now()+JV$)).catch((K)=>console.error(`[task-board-review-sweeper] re-arming ${Q} failed`,K))}return Z}async reconcileItem($,Z){let X=await this.taskBoard.getById($,Z);if(!X)return!1;if(X.status!=="in_review"||X.assigneeId!==J$)return!1;await this.taskBoard.markSwept($,Z);let Q=await this.taskBoard.listPrs($,Z);if(Q.length===0)return!1;let Y=await this.contextFactory(Z,X.assignedBy??X.createdBy);if(!Y)return!1;if(await JS8(Y,X))return!0;let G=await Promise.all(Q.map(async(J)=>({...J,...await P51(Y,Z,J)})));if(G.every((J)=>J.state===null))console.warn(`[task-board-review-sweeper] ${$}: no live PR state from GitHub (${G.length} PR(s)) \u2014 proceeding on unknown`);if(!j51(G))return!1;return await rj0(Y,X),!0}dispose(){if(this.timer)clearInterval(this.timer),this.timer=null}}var QV$=60000,YV$=300000,GV$=50,JV$=60000,KV$=120000;var D46=O(()=>{tZ();w51();dO();XP0();zZ();I51();bh()});import{readdir as WV$,rm as dI0}from"fs/promises";import{join as mI0}from"path";async function iI0($){let Z=new Date;Z.setUTCDate(Z.getUTCDate()-HV$),Z.setUTCHours(0,0,0,0);let X=0;try{let Q=await Zx($);for(let Y of Q)if(/^\d{4}$/.test(Y))X+=await E46($,Y,Z);else if(!Y.startsWith(".")){let G=mI0($,Y),J=await Zx(G);for(let W of J){if(!/^\d{4}$/.test(W))continue;X+=await E46(G,W,Z)}if((await Zx(G)).length===0)await dI0(G,{recursive:!0,force:!0})}}catch(Q){console.warn("monitoring retention cleanup failed:",Q)}return X}async function E46($,Z,X){let Q=0,Y=mI0($,Z),G=await Zx(Y);for(let K of G){if(!/^\d{2}$/.test(K))continue;let W=mI0(Y,K),H=await Zx(W);for(let N of H){if(!/^\d{2}$/.test(N))continue;let F=new Date(`${Z}-${K}-${N}T00:00:00Z`);if(isNaN(F.getTime()))continue;if(F<X){let w=mI0(W,N);await dI0(w,{recursive:!0,force:!0}),Q++}}if((await Zx(W)).length===0)await dI0(W,{recursive:!0,force:!0})}if((await Zx(Y)).length===0)await dI0(Y,{recursive:!0,force:!0});return Q}async function Zx($){try{return(await WV$($)).filter((X)=>!X.startsWith("."))}catch{return[]}}var HV$=30;var wH1=()=>{};import{DBOS as BH1,SchedulerMode as UV$}from"@dbos-inc/dbos-sdk";async function FV$(){let $=[KJ(),lf(),VU()],Z=0;for(let X of $)try{Z+=await iI0(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 wV$($,Z){await BH1.runStep(()=>FV$(),{name:"monitoringRetention"})}function j46(){if(z46)return;z46=!0;let $=BH1.registerWorkflow(wV$,{name:"monitoringRetentionWorkflow"});BH1.registerScheduled($,{name:"monitoringRetentionWorkflow",crontab:NV$,mode:UV$.ExactlyOncePerIntervalWhenActive})}var NV$="23 4 * * *",z46=!1;var P46=O(()=>{yY();wH1()});function A46($){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 cH.create();Y.auth.user={id:X,role:Q.role},Y.organization={id:Q.orgId,slug:Q.orgSlug,name:Q.orgName};let G=await CJ1($.db,Z,Q.role);return Y.boundAuth=SJ1({auth:Y.authInstance,headers:new Headers,role:Q.role,permissions:G,userId:X}),Y.access=new aE(X,void 0,Y.boundAuth,Q.role,"self"),Ac(Y,{id:Q.orgId,slug:Q.orgSlug}),Y}}var T46=O(()=>{sE();Oc()});import{EventEmitter as BV$}from"events";var OH1;var R46=O(()=>{tD();OH1=new BV$;OH1.on("request",($)=>{zw($)})});function I46(){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 F=await $.req.raw.clone().json();if(F.method==="tools/call"&&F.params?.name){let w=nc(F.params.name),B=F.params.arguments||{},L=Object.keys(B).map((E)=>nc(E)),D=L.length>0?L.slice(0,3).join(",")+(L.length>3?"\u2026":""):"";G=`${N5.tool}${w}${N5.dim}(${D})${N5.reset}`}else if(F.method)G=`${N5.dim}${nc(F.method)}${N5.reset}`}}catch{}}let K=nc(Y);if(Y.startsWith("/mcp/conn_")){let U=Y.split("/")[2]??"";K=`/mcp/${N5.mcp}${nc(U.slice(0,12))}\u2026${N5.reset}`}else if(Y==="/mcp")K=`${N5.mcp}/mcp${N5.reset}`;else if(Y==="/mcp/registry")K=`${N5.mcp}/mcp/registry${N5.reset}`;let W=LV$(Q),H=J?"\u25C0":"\u2190";if(!o50())console.log(`${N5.dim}${H}${N5.reset} ${W}${Q}${N5.reset} ${K}${G?` ${G}`:""}`);try{await Z()}finally{let U=Date.now()-X,N=$.res.status,F=OV$(N),w=U<1000?`${U}ms`:`${(U/1000).toFixed(1)}s`,B=J?"\u25B6":"\u2192";if(!o50())console.log(`${N5.dim}${B}${N5.reset} ${W}${Q}${N5.reset} ${K}${G?` ${G}`:""} ${F}${N}${N5.reset} ${N5.duration}${w}${N5.reset}`);OH1.emit("request",{method:Q,path:nc(Y),status:N,duration:U,timestamp:new Date})}}}var N5,OV$=($)=>{if($>=500)return N5.serverError;if($>=400)return N5.clientError;if($>=300)return N5.redirect;return N5.ok},LV$=($)=>{return N5[$]||N5.reset},nc=($)=>{return $.replace(/\r/g,"").replace(/\n/g,"").replace(/\x1b\[[0-9;]*m/g,"").replace(/[\x00-\x1f\x7f-\x9f]/g,"")};var q46=O(()=>{tD();R46();N5={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 S46}from"crypto";import{mkdir as DV$,readdir as EV$,rm as M46,stat as C46}from"fs/promises";import{join as DH1,relative as zV$}from"path";import{z as I8}from"zod";function v46($){let Z=$.replace(/[^a-zA-Z0-9_-]/g,"_");return DH1(jV$,Z)}function x46($){return $.replace(/^\/+/,"").replace(/\.\./g,"")}function LH1($,Z){let X=v46($),Q=x46(Z);return DH1(X,Q)}function PV$($,Z,X,Q){let Y=Z1().encryptionKey||"dev-secret",G=`${$}:${Z}:${X}:${Q}`;return S46("sha256",Y).update(G).digest("hex")}function V46($,Z,X,Q,Y){let G=Math.floor(Date.now()/1000)+Q,J=PV$(Z,X,G,Y),K=new URL(`/api/dev-assets/${Z}/${x46(X)}`,$);return K.searchParams.set("expires",G.toString()),K.searchParams.set("signature",J),K.searchParams.set("method",Y),K.toString()}function f46($,Z,X){let Q=`${$}:${Z.getTime()}:${X}`;return`"${S46("md5","etag").update(Q).digest("hex")}"`}async function b46($,Z,X,Q,Y){try{let G=await EV$($,{withFileTypes:!0});for(let J of G){let K=DH1($,J.name),H=zV$(Z,K).replace(/\\/g,"/");if(X&&!H.startsWith(X))continue;if(J.isDirectory())if(Q){let U=H+"/";if(!X||U.startsWith(X)){if(!(X?H.slice(X.length):H).includes("/"))Y.commonPrefixes.add(U)}}else await b46(K,Z,X,Q,Y);else if(J.isFile()){if(Q&&X){let U=H.slice(X.length);if(U.includes(Q)){let N=U.indexOf(Q),F=X+U.slice(0,N+1);Y.commonPrefixes.add(F);continue}}try{let U=await C46(K);Y.objects.push({key:H,size:U.size,lastModified:U.mtime.toISOString(),etag:f46(K,U.mtime,U.size)})}catch{}}}}catch{}}function y46($,Z){let Q=G0($).id;return[{name:"LIST_OBJECTS",description:"List objects in the local assets directory with pagination support",inputSchema:I8.object({prefix:I8.string().optional(),maxKeys:I8.number().optional().default(1000),continuationToken:I8.string().optional(),delimiter:I8.string().optional()}),outputSchema:I8.object({objects:I8.array(I8.object({key:I8.string(),size:I8.number(),lastModified:I8.string(),etag:I8.string()})),nextContinuationToken:I8.string().optional(),isTruncated:I8.boolean(),commonPrefixes:I8.array(I8.string()).optional()}),handler:async(Y)=>{let G=Y,J=G.prefix||"",K=G.maxKeys??1000,W=G.delimiter,H=G.continuationToken,U=v46(Q);await DV$(U,{recursive:!0});let N={objects:[],commonPrefixes:new Set};await b46(U,U,J,W,N),N.objects.sort((D,E)=>D.key.localeCompare(E.key));let F=0;if(H){if(F=N.objects.findIndex((D)=>D.key>H),F===-1)F=N.objects.length}let w=N.objects.slice(F,F+K),B=F+K<N.objects.length,L=B?w[w.length-1]?.key:void 0;return{objects:w,isTruncated:B,nextContinuationToken:L,commonPrefixes:Array.from(N.commonPrefixes).sort()}}},{name:"GET_OBJECT_METADATA",description:"Get metadata for a file in the local assets directory",inputSchema:I8.object({key:I8.string()}),outputSchema:I8.object({contentType:I8.string().optional(),contentLength:I8.number(),lastModified:I8.string(),etag:I8.string(),metadata:I8.record(I8.string(),I8.string()).optional()}),handler:async(Y)=>{let G=Y,J=LH1(Q,G.key),K=await C46(J);return{contentType:wK1(G.key),contentLength:K.size,lastModified:K.mtime.toISOString(),etag:f46(J,K.mtime,K.size)}}},{name:"GET_PRESIGNED_URL",description:"Generate a presigned URL for downloading a file from local storage",inputSchema:I8.object({key:I8.string(),expiresIn:I8.number().optional()}),outputSchema:I8.object({url:I8.string(),expiresIn:I8.number()}),handler:async(Y)=>{let G=Y,J=G.expiresIn??k46;return{url:V46(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:I8.object({key:I8.string(),expiresIn:I8.number().optional(),contentType:I8.string().optional()}),outputSchema:I8.object({url:I8.string(),expiresIn:I8.number()}),handler:async(Y)=>{let G=Y,J=G.expiresIn??k46;return{url:V46(Z,Q,G.key,J,"PUT"),expiresIn:J}}},{name:"DELETE_OBJECT",description:"Delete a single file from local storage",inputSchema:I8.object({key:I8.string()}),outputSchema:I8.object({success:I8.boolean(),key:I8.string()}),handler:async(Y)=>{let G=Y,J=LH1(Q,G.key);try{return await M46(J),{success:!0,key:G.key}}catch{return{success:!1,key:G.key}}}},{name:"DELETE_OBJECTS",description:"Delete multiple files from local storage",inputSchema:I8.object({keys:I8.array(I8.string()).max(1000)}),outputSchema:I8.object({deleted:I8.array(I8.string()),errors:I8.array(I8.object({key:I8.string(),message:I8.string()}))}),handler:async(Y)=>{let G=Y,J=[],K=[];return await Promise.all(G.keys.map(async(W)=>{let H=LH1(Q,W);try{await M46(H),J.push(W)}catch(U){K.push({key:W,message:U instanceof Error?U.message:"Unknown error"})}})),{deleted:J,errors:K}}}]}async function EH1($,Z,X){let Q=y46(Z,X),Y=new MW({name:"dev-assets-mcp",version:"1.0.0"},{capabilities:{tools:{}},jsonSchemaValidator:E5});for(let J of Q){let K="shape"in J.inputSchema?J.inputSchema.shape:I8.object({}).shape,W=J.outputSchema&&"shape"in J.outputSchema?J.outputSchema.shape:I8.object({}).shape;Y.registerTool(J.name,{description:J.description??"",inputSchema:K,outputSchema:W,annotations:J.annotations,_meta:J._meta},async(H)=>{try{let U=await J.handler(H);return{content:[{type:"text",text:JSON.stringify(U)}],structuredContent:U}}catch(U){return{content:[{type:"text",text:`Error: ${U.message}`}],isError:!0}}})}let G=new wQ({enableJsonResponse:$.headers.get("Accept")?.includes("application/json")??!1});return await Y.connect(G),C3(Y,G,$,"mcp:dev-assets")}async function g46($,Z,X,Q){let G=y46(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 jV$="./data/assets",k46=3600,_46,h46;var u46=O(()=>{b8();ch();o6();oi();d_();oX();XI0();_46=new V1;_46.all("/",async($)=>{let Z=$.get("studioContext"),X=new URL($.req.url),Q=`${X.protocol}//${X.host}`;return EH1($.req.raw,Z,Q)});h46=_46});var c46={};w0(c46,{mountDevRoutes:()=>AV$});function AV$($,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 EH1(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}`,K=Q.req.param("toolName");if(!K)return Q.json({error:"Missing tool name"},400);let W=await Q.req.json(),H=await g46(K,W,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",h46);let X=new V1;X.use("*",bK({mountPath:"/api/dev-assets"})),X.route("/",ZI0({orgFromPath:!1})),$.route("/api/dev-assets",X)}var l46=O(()=>{o6();GK1();XI0();u46()});import{sql as TV$}from"kysely";import{randomUUID as d46}from"crypto";import{z as RV$}from"zod";async function qV$($){let Z=new Date().toISOString(),X=d46(),Q=o4.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((K)=>K.or([K("publisher","is",null),K("publisher","=",Q)])).execute();if(J.length>0)await $.db.insertInto("event_deliveries").values(J.map((K)=>({id:d46(),event_id:X,subscription_id:K.id,status:"pending",attempts:0,last_error:null,delivered_at:null,next_retry_at:null,created_at:Z}))).execute();try{await TV$`SELECT
4012
4012
  pg_notify('studio_events', ${X}),