decocms 4.239.2 → 4.241.0

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 (261) hide show
  1. package/dist/client/assets/{AlertCircle-CeleFBrs.js → AlertCircle-BSGNUx7V.js} +1 -1
  2. package/dist/client/assets/{AreaChart-Cr68R9KD.js → AreaChart-qGMzdkmk.js} +1 -1
  3. package/dist/client/assets/{ArrowLeft-CwsJ1Sfc.js → ArrowLeft-DHRINKlz.js} +1 -1
  4. package/dist/client/assets/{ArrowUp-PM43ttWN.js → ArrowUp-ntTpD-To.js} +1 -1
  5. package/dist/client/assets/{ArrowUpRight-C0hTvHTE.js → ArrowUpRight-BG4SvGJv.js} +1 -1
  6. package/dist/client/assets/{Check-BdzjeMXF.js → Check-DhNjrmaj.js} +1 -1
  7. package/dist/client/assets/{CheckCircle-D-nlOrXB.js → CheckCircle-B_sdSbJU.js} +1 -1
  8. package/dist/client/assets/{ChevronDown-BOc1-i9L.js → ChevronDown-CaUFgq06.js} +1 -1
  9. package/dist/client/assets/{ChevronRight-wqbYwiLF.js → ChevronRight-jZWdrf9f.js} +1 -1
  10. package/dist/client/assets/{ChevronUp-IHCmvX3E.js → ChevronUp-BRjHRWFg.js} +1 -1
  11. package/dist/client/assets/{Copy01-DIJvVGQk.js → Copy01-C3CSvCmh.js} +1 -1
  12. package/dist/client/assets/{CreditCard01-W4m_wy49.js → CreditCard01-5rNLMrBA.js} +1 -1
  13. package/dist/client/assets/{DotsVertical-Bohq38Q1.js → DotsVertical-Dp5Cm_iP.js} +1 -1
  14. package/dist/client/assets/Download01-DIiuseU_.js +1 -0
  15. package/dist/client/assets/{Eye-C5vDWwaK.js → Eye-CVDf_kH4.js} +1 -1
  16. package/dist/client/assets/{FilterLines-C9pmu5SZ.js → FilterLines-DV7AkyjC.js} +1 -1
  17. package/dist/client/assets/Globe01-Bak8Df7R.js +1 -0
  18. package/dist/client/assets/{Globe04-CDJqKwdP.js → Globe04-21nMtmZT.js} +1 -1
  19. package/dist/client/assets/{HardDrive-BicURFt0.js → HardDrive-yKF5zKg2.js} +1 -1
  20. package/dist/client/assets/{Key01-CRQOB5O_.js → Key01-C-HagbU9.js} +1 -1
  21. package/dist/client/assets/{LayoutLeft-DZwVeKk1.js → LayoutLeft-DTt2h_gY.js} +1 -1
  22. package/dist/client/assets/{LinkExternal01-Do6tmctI.js → LinkExternal01-BAXCjJ3W.js} +1 -1
  23. package/dist/client/assets/{LockUnlocked01-BxK9l3CJ.js → LockUnlocked01-CTGb9BVB.js} +1 -1
  24. package/dist/client/assets/{LogOut01-DhAdDNkV.js → LogOut01-CI181NEF.js} +1 -1
  25. package/dist/client/assets/{Monitor01-BKGGKBRj.js → Monitor01-Be5N7TRy.js} +1 -1
  26. package/dist/client/assets/{Palette-5WrpEUaC.js → Palette-BNNCPeK0.js} +1 -1
  27. package/dist/client/assets/{Play-Yhg2bDxR.js → Play-BsRzOgzp.js} +1 -1
  28. package/dist/client/assets/{Plus-CgXuzVCT.js → Plus-9luEKPZw.js} +1 -1
  29. package/dist/client/assets/{SearchLg-CYNvKytJ.js → SearchLg-F6MPrrZo.js} +1 -1
  30. package/dist/client/assets/{SearchMd-BOeEZKFu.js → SearchMd-7UCVFr92.js} +1 -1
  31. package/dist/client/assets/{Settings02-CpRid7rG.js → Settings02-DWTUyGYI.js} +1 -1
  32. package/dist/client/assets/{Share07-B14EYmF_.js → Share07-BBwkuMmH.js} +1 -1
  33. package/dist/client/assets/{Shield01-DS1CkOm5.js → Shield01-DwaMx4Kj.js} +1 -1
  34. package/dist/client/assets/{Stars01-CPDNiFNQ.js → Stars01-gwxykcEQ.js} +1 -1
  35. package/dist/client/assets/{Stars02-CH68Qhm_.js → Stars02-B6JXDKru.js} +1 -1
  36. package/dist/client/assets/{Sun-CjcZKPaq.js → Sun-BJxBIAjy.js} +1 -1
  37. package/dist/client/assets/{SwitchHorizontal01-DOmwqeXB.js → SwitchHorizontal01-CdQluNjW.js} +1 -1
  38. package/dist/client/assets/{Tool01-BLxK-7k7.js → Tool01-B3cfX7QW.js} +1 -1
  39. package/dist/client/assets/{Tool02-B8GwG_SX.js → Tool02-Dz1T3Rmg.js} +1 -1
  40. package/dist/client/assets/{Trash01-COMthlp3.js → Trash01-Dx-L9twD.js} +1 -1
  41. package/dist/client/assets/{TrendUp01-Pa_0KlRB.js → TrendUp01-jt7vyfmI.js} +1 -1
  42. package/dist/client/assets/{Upload01-DO7DRGUd.js → Upload01-BxhthB2p.js} +1 -1
  43. package/dist/client/assets/{User01-C2rVZTl-.js → User01-CFSl83nB.js} +1 -1
  44. package/dist/client/assets/{Users01-ClsBMo4K.js → Users01-BijcXXI3.js} +1 -1
  45. package/dist/client/assets/{Users03-DP3zwt6-.js → Users03-D4EG206O.js} +1 -1
  46. package/dist/client/assets/{X-Bfx6rO6W.js → X-CSYXCnV9.js} +1 -1
  47. package/dist/client/assets/{XCircle-jlAhwcDu.js → XCircle-Cu0-8nUy.js} +1 -1
  48. package/dist/client/assets/{XClose-DdXn46Em.js → XClose-DSHM2tuZ.js} +1 -1
  49. package/dist/client/assets/{YAxis-C5lX8CaJ.js → YAxis-DaCLoj6F.js} +1 -1
  50. package/dist/client/assets/{Zap-li0rR-RI.js → Zap-BJ7aktKA.js} +1 -1
  51. package/dist/client/assets/{ZapSquare-Gxca0Ylc.js → ZapSquare-DsGT7WIC.js} +1 -1
  52. package/dist/client/assets/{access-gate-C8o_OE1N.js → access-gate-rP_MjwR7.js} +1 -1
  53. package/dist/client/assets/agent-icon-eH38g2HT.js +1 -0
  54. package/dist/client/assets/agents-list-DCLtFhhx.js +1 -0
  55. package/dist/client/assets/ai-providers-BVZMQNKu.js +1 -0
  56. package/dist/client/assets/{alert-1MxwzRCP.js → alert-BMVQGRt6.js} +1 -1
  57. package/dist/client/assets/{alert-dialog-Cqq7FgQj.js → alert-dialog-CMLgUtLr.js} +1 -1
  58. package/dist/client/assets/{api-keys-BmVwKDo4.js → api-keys-KMpkqWx8.js} +1 -1
  59. package/dist/client/assets/app-editor-DePidg7R.js +1 -0
  60. package/dist/client/assets/{auth-tEJ4bybR.js → auth-C0RxM0MV.js} +1 -1
  61. package/dist/client/assets/{auth-catchall-CYO83hyU.js → auth-catchall-DKTY___X.js} +1 -1
  62. package/dist/client/assets/{auth-entry-Dc1zlPtG.js → auth-entry-BpqowsP8.js} +1 -1
  63. package/dist/client/assets/{auth-split-layout-C945ZTK3.js → auth-split-layout-CjAUeNRJ.js} +1 -1
  64. package/dist/client/assets/{authenticate-and-persist-oauth-CqRX86RU.js → authenticate-and-persist-oauth-iw6ouFr9.js} +1 -1
  65. package/dist/client/assets/{automation-list-row-BN46j3bE.js → automation-list-row-Bkk5b-Xu.js} +1 -1
  66. package/dist/client/assets/{automation-runs-nfuxnSim.js → automation-runs-7BxhYAN0.js} +16 -16
  67. package/dist/client/assets/automations-g01DiXGR.js +1 -0
  68. package/dist/client/assets/{avatar-BqAz0FLa.js → avatar-CzJUVoDs.js} +1 -1
  69. package/dist/client/assets/{badge-D24p8Xxi.js → badge-DbSQDjS0.js} +1 -1
  70. package/dist/client/assets/{billing-DSz5ucLf.js → billing-4Wr63XfR.js} +1 -1
  71. package/dist/client/assets/{block-document-ChYHEJUH.js → block-document-c_ItM0iq.js} +1 -1
  72. package/dist/client/assets/{buckets-DyBjeMFW.js → buckets-BEGiPCkc.js} +1 -1
  73. package/dist/client/assets/bulk-category-panel-DhM1EGbP.js +1 -0
  74. package/dist/client/assets/{capability-load-error-CPQoG_lp.js → capability-load-error-CRpB249h.js} +1 -1
  75. package/dist/client/assets/{card-CooN3E-v.js → card-FCEwqon6.js} +1 -1
  76. package/dist/client/assets/cards-CIZK-4zJ.js +9 -0
  77. package/dist/client/assets/category-editor-CVaNQqlc.js +1 -0
  78. package/dist/client/assets/{chart-Dtka3CXu.js → chart-BVs8Wshz.js} +1 -1
  79. package/dist/client/assets/{chat-context--S2eGI2t.js → chat-context-Qk-9IhfU.js} +1 -1
  80. package/dist/client/assets/{checkbox-BqtDvsR1.js → checkbox-Badqx0C2.js} +1 -1
  81. package/dist/client/assets/{cli-auth-success-B6EGxQbP.js → cli-auth-success-BBdGAncX.js} +1 -1
  82. package/dist/client/assets/collection-detail-C13FmfjI.js +1 -0
  83. package/dist/client/assets/{collection-display-button-B1OCDGvC.js → collection-display-button-DBcRwNMI.js} +1 -1
  84. package/dist/client/assets/{collection-search-H6c7ia6t.js → collection-search-DcQsyJxv.js} +1 -1
  85. package/dist/client/assets/{collection-table-wrapper-CksgkvG8.js → collection-table-wrapper-DKCmgLGf.js} +1 -1
  86. package/dist/client/assets/{collection-tabs-BqnoVI6Y.js → collection-tabs-TNXMy8gA.js} +1 -1
  87. package/dist/client/assets/{command-DhvOaMnH.js → command-DWBbdLBX.js} +1 -1
  88. package/dist/client/assets/commerce-onboarding-4x4UgCdX.js +1 -0
  89. package/dist/client/assets/{connect-C-NmOGr7.js → connect-Dtqc1nsL.js} +1 -1
  90. package/dist/client/assets/{connection-DJ2785KU.js → connection-DyYsm8dV.js} +1 -1
  91. package/dist/client/assets/{connection-card-DSX5zHxO.js → connection-card-BsbMWXtq.js} +1 -1
  92. package/dist/client/assets/connection-detail-CusJoVJI.js +1 -0
  93. package/dist/client/assets/{connection-form-helpers-B07wLptq.js → connection-form-helpers-hjpjGHOP.js} +1 -1
  94. package/dist/client/assets/connections-C3g87Fyq.js +1 -0
  95. package/dist/client/assets/{decopilot-sse-pool-U92pbu07.js → decopilot-sse-pool-BNW6JWpR.js} +1 -1
  96. package/dist/client/assets/{dialog-C2XtKj4W.js → dialog-0fNUeR9R.js} +1 -1
  97. package/dist/client/assets/{domain-settings-D2fweBMx.js → domain-settings-B4x9P8HV.js} +1 -1
  98. package/dist/client/assets/{drawer-HtUPoolZ.js → drawer-HRJ32EbE.js} +1 -1
  99. package/dist/client/assets/{dropdown-menu-Buaqq-Fn.js → dropdown-menu-Gs5UGB4h.js} +1 -1
  100. package/dist/client/assets/{empty-state-Bd3g-2FH.js → empty-state-LcWMvkBG.js} +1 -1
  101. package/dist/client/assets/{extract-connection-data-V948FMyj.js → extract-connection-data-BYxfOuH_.js} +1 -1
  102. package/dist/client/assets/file-explorer-B7clljfW.js +2 -0
  103. package/dist/client/assets/{file-type-icon-BSAnhEu5.js → file-type-icon-CTX2jq9G.js} +1 -1
  104. package/dist/client/assets/{form-CMuk1nXb.js → form-DGhZtrNx.js} +1 -1
  105. package/dist/client/assets/general-B8n1QEr5.js +1 -0
  106. package/dist/client/assets/{github-repo-picker-DjVb6-0i.js → github-repo-picker-DOf_JZk2.js} +1 -1
  107. package/dist/client/assets/{hooks-Cd2G3711.js → hooks-Cj6NKwbB.js} +1 -1
  108. package/dist/client/assets/{index-Dwrgaiv3.js → index-2ZeZ7XA1.js} +1 -1
  109. package/dist/client/assets/{index-DNa-ZV66.js → index-Bqi-j8tu.js} +1 -1
  110. package/dist/client/assets/{index-BKOwC_zz.js → index-CElD4z4O.js} +1 -1
  111. package/dist/client/assets/{index-BflbKT0u.js → index-CiuQrzO7.js} +2 -2
  112. package/dist/client/assets/{index-BaWtU9eb.js → index-CnpdnndP.js} +58 -61
  113. package/dist/client/assets/{index-BoSySxnu.js → index-D87JktxF.js} +1 -1
  114. package/dist/client/assets/{index-CPCOiQxX.js → index-DZl62lg2.js} +1 -1
  115. package/dist/client/assets/{index-BRjr3L_N.js → index-DporvBqC.js} +1 -1
  116. package/dist/client/assets/{index-BphIXXOp.js → index-QSWmOkVC.js} +37 -37
  117. package/dist/client/assets/index-mmj8d1OZ.js +1 -0
  118. package/dist/client/assets/{index-redirect-CyqcxiJb.js → index-redirect-CLI7ZZ-t.js} +1 -1
  119. package/dist/client/assets/{infra-billing-B1fwJNOz.js → infra-billing-BEXhDVVj.js} +1 -1
  120. package/dist/client/assets/{input-9TNY2G6W.js → input-CjD4VhOq.js} +1 -1
  121. package/dist/client/assets/{integration-icon-CGwCrGIc.js → integration-icon-CPM2Wy4S.js} +1 -1
  122. package/dist/client/assets/{invite-member-dialog-BIJfPXUf.js → invite-member-dialog-uqixWqH7.js} +1 -1
  123. package/dist/client/assets/{label-DhJo3WjY.js → label-BM_KNax6.js} +1 -1
  124. package/dist/client/assets/{layout-CeWP0gEY.js → layout-Cyxx23a5.js} +1 -1
  125. package/dist/client/assets/{login-DxZTpOpk.js → login-DTcPenfD.js} +1 -1
  126. package/dist/client/assets/{mcp-oauth--A5K-xL8.js → mcp-oauth-CXtITOci.js} +1 -1
  127. package/dist/client/assets/{members-B5PzIuUU.js → members-BngJJI1k.js} +1 -1
  128. package/dist/client/assets/{monaco-editor-BMLOnDLJ.js → monaco-editor-BhG2pRsy.js} +1 -1
  129. package/dist/client/assets/{monitoring-stats-row-Rpla78Nn.js → monitoring-stats-row-V0REizP2.js} +1 -1
  130. package/dist/client/assets/{multi-select-Duz2hJ29.js → multi-select-DVmJ8N16.js} +1 -1
  131. package/dist/client/assets/{oauth-callback-Cn0wl-wL.js → oauth-callback-QWZ-1Ao_.js} +1 -1
  132. package/dist/client/assets/{oauth-callback-ai-provider-CvoqVCiX.js → oauth-callback-ai-provider-DNiT_-tQ.js} +1 -1
  133. package/dist/client/assets/{onboarding-CTQgNbX8.js → onboarding-4kFhDwBC.js} +1 -1
  134. package/dist/client/assets/{org-layout-tUX-e_rZ.js → org-layout-D1UQZWSN.js} +1 -1
  135. package/dist/client/assets/{organization-choice-T8a5zIBy.js → organization-choice-CguXU_qj.js} +1 -1
  136. package/dist/client/assets/{orgs-CGkwFzZ6.js → orgs-C0r08Wz9.js} +1 -1
  137. package/dist/client/assets/{page-seo-form-C0yVvfZn.js → page-seo-form-BYQ_C966.js} +1 -1
  138. package/dist/client/assets/{popover-BV2Ziop4.js → popover-Cdk4wGDs.js} +1 -1
  139. package/dist/client/assets/post-editor-CBRsERKT.js +1 -0
  140. package/dist/client/assets/{primitives-QfIbZaez.js → primitives-oSbSlJdK.js} +1 -1
  141. package/dist/client/assets/{profile-Bp26cqE6.js → profile-DT6piyAB.js} +1 -1
  142. package/dist/client/assets/project-app-view-ODxcuXJo.js +1 -0
  143. package/dist/client/assets/record-editor-DVIXyY1q.js +1 -0
  144. package/dist/client/assets/redirect-editor-CXtmXnNZ.js +1 -0
  145. package/dist/client/assets/registry-C7n-7FhE.js +2 -0
  146. package/dist/client/assets/{registry-layout-DdRmZw6K.js → registry-layout-DoD0R5_E.js} +3 -3
  147. package/dist/client/assets/{reports-DMvf7MMo.js → reports-CxxatuXV.js} +1 -1
  148. package/dist/client/assets/{require-capability-ChdE_Nc5.js → require-capability-BujVC6Iv.js} +1 -1
  149. package/dist/client/assets/{required-auth-layout-DYO8_0ig.js → required-auth-layout-Bc5Jqmw0.js} +1 -1
  150. package/dist/client/assets/{reset-password-C661myht.js → reset-password-CRp5Vxzw.js} +1 -1
  151. package/dist/client/assets/roles-Bg6Wpwtz.js +1 -0
  152. package/dist/client/assets/{search-input-ChJAF9CO.js → search-input-DPH-j2ty.js} +1 -1
  153. package/dist/client/assets/{secrets-CwgPWaoJ.js → secrets-BS8SMJ5_.js} +1 -1
  154. package/dist/client/assets/{sections-editor-D8xoci4G.js → sections-editor-Cm60dl8s.js} +2 -2
  155. package/dist/client/assets/{select-COjQ5V-V.js → select-BY-TTUaX.js} +1 -1
  156. package/dist/client/assets/select-model-CKrLO7E8.js +4 -0
  157. package/dist/client/assets/{self-tool-result-DA97K7F2.js → self-tool-result-CQmRuOJJ.js} +1 -1
  158. package/dist/client/assets/seo-editor-qcHpiGxs.js +1 -0
  159. package/dist/client/assets/{settings-layout-C23Ga1Si.js → settings-layout-CkkEfluT.js} +1 -1
  160. package/dist/client/assets/{settings-section-BN0IrtYX.js → settings-section-KNTU5IvO.js} +1 -1
  161. package/dist/client/assets/{settings-subnav-DlbWpD1A.js → settings-subnav-Cd0l_6Ey.js} +1 -1
  162. package/dist/client/assets/{shell-controls-BBRNaPXa.js → shell-controls-yGJ3B9DE.js} +1 -1
  163. package/dist/client/assets/{shell-layout-DIvwZhUJ.js → shell-layout-BJ43I-fM.js} +1 -1
  164. package/dist/client/assets/{sidebar-Dckv7Gxe.js → sidebar-B9FCz4Mq.js} +1 -1
  165. package/dist/client/assets/{skeleton-C_J-aMdg.js → skeleton-B9r2TOyq.js} +1 -1
  166. package/dist/client/assets/{spinner-Cbrhyipt.js → spinner-DzAXz-ak.js} +1 -1
  167. package/dist/client/assets/{sso-DC7cMRPW.js → sso-CktB1aVG.js} +1 -1
  168. package/dist/client/assets/{store-rWTYBa0y.js → store-DVzGhYCb.js} +1 -1
  169. package/dist/client/assets/store-registry-BsmH8UbB.js +2 -0
  170. package/dist/client/assets/{studio-tools-BoD8kcA1.js → studio-tools-D6IcfTHF.js} +1 -1
  171. package/dist/client/assets/{switch-b-8BZDWJ.js → switch-B8JKQssM.js} +1 -1
  172. package/dist/client/assets/synced-repos-R0AkTDG5.js +1 -0
  173. package/dist/client/assets/tab-id-CPIceFUq.js +1 -0
  174. package/dist/client/assets/{table-CfpVPCrj.js → table-DjnLlp3Y.js} +1 -1
  175. package/dist/client/assets/{tabs-D-7lRbur.js → tabs-BVCZRpzY.js} +1 -1
  176. package/dist/client/assets/tasks-bT0G2AAJ.js +1 -0
  177. package/dist/client/assets/{textarea-CosQp1Ex.js → textarea-DUhzY-49.js} +1 -1
  178. package/dist/client/assets/{toggle-group-5LW11eFN.js → toggle-group-C2GRyClc.js} +1 -1
  179. package/dist/client/assets/{toolbar-Q0b8veSU.js → toolbar-CRquLcIr.js} +1 -1
  180. package/dist/client/assets/{tooltip-BfkRKScU.js → tooltip-C8WdZoAs.js} +1 -1
  181. package/dist/client/assets/{track-CG8KgfQd.js → track-DlQssvS7.js} +1 -1
  182. package/dist/client/assets/{types-BGHf5GHQ.js → types-CPa8SGGQ.js} +1 -1
  183. package/dist/client/assets/{use-ai-providers-BezO2qdd.js → use-ai-providers-hG0NJmyg.js} +1 -1
  184. package/dist/client/assets/{use-api-keys-BELfjQ6X.js → use-api-keys-D8jDupAP.js} +1 -1
  185. package/dist/client/assets/{use-automations-BB8THpxC.js → use-automations-B_w6lxQU.js} +1 -1
  186. package/dist/client/assets/{use-autosave-C7alUjY0.js → use-autosave-g4einljo.js} +1 -1
  187. package/dist/client/assets/{use-capability-mz-0XBoJ.js → use-capability-B23RInvZ.js} +1 -1
  188. package/dist/client/assets/{use-clock-tick-BlWbr6nY.js → use-clock-tick-BDuDvLsc.js} +1 -1
  189. package/dist/client/assets/{use-commerce-diagnostic-B54oYyoh.js → use-commerce-diagnostic-C2s_wvEf.js} +1 -1
  190. package/dist/client/assets/{use-connection-B5TzA1Ut.js → use-connection-Dg56f5Vt.js} +1 -1
  191. package/dist/client/assets/{use-copy-BEi_L0rW.js → use-copy-DGVAP1M7.js} +1 -1
  192. package/dist/client/assets/{use-create-virtual-mcp-BfQJXcoA.js → use-create-virtual-mcp-Cv6u_vQj.js} +1 -1
  193. package/dist/client/assets/{use-debounced-autosave-BHPvlnZn.js → use-debounced-autosave-CTkEMRHe.js} +1 -1
  194. package/dist/client/assets/{use-debounced-value-D880nDlC.js → use-debounced-value-qVTGK2NR.js} +1 -1
  195. package/dist/client/assets/{use-decopilot-events-D7YXko6B.js → use-decopilot-events-_lZ6Xk3T.js} +1 -1
  196. package/dist/client/assets/{use-delete-connection-urOdWe-_.js → use-delete-connection-9Bgp-HfT.js} +1 -1
  197. package/dist/client/assets/{use-deployment-admin-D_5KLYHI.js → use-deployment-admin-Dsr6f3P7.js} +1 -1
  198. package/dist/client/assets/{use-file-configs-C4oqeXep.js → use-file-configs-BZ18LlNu.js} +1 -1
  199. package/dist/client/assets/{use-infinite-scroll-A-tTatQb.js → use-infinite-scroll-CWnPk8zt.js} +1 -1
  200. package/dist/client/assets/{use-join-requests-Cvq2Nlxy.js → use-join-requests-Bo2pV8IS.js} +1 -1
  201. package/dist/client/assets/{use-mcp-client-DKcZ7v-W.js → use-mcp-client-BsAnTcHa.js} +1 -1
  202. package/dist/client/assets/{use-mcp-tools-B4aUfPof.js → use-mcp-tools-kK8zHPYS.js} +1 -1
  203. package/dist/client/assets/{use-members-Dypq7HzL.js → use-members-B9vphmDn.js} +1 -1
  204. package/dist/client/assets/{use-mobile-C0XoguQx.js → use-mobile-D3ZpQ04i.js} +1 -1
  205. package/dist/client/assets/{use-navigate-to-agent-Cxg9_mL_.js → use-navigate-to-agent-BhiQJGHm.js} +1 -1
  206. package/dist/client/assets/{use-open-billing-url-BwHZpmU9.js → use-open-billing-url-FgqegUnw.js} +1 -1
  207. package/dist/client/assets/{use-org-auth-client-CEm0cNyU.js → use-org-auth-client-tPvCf1dF.js} +1 -1
  208. package/dist/client/assets/{use-org-repo-syncs-DCxfKVxi.js → use-org-repo-syncs-Dn3ug8I0.js} +1 -1
  209. package/dist/client/assets/{use-org-sso-8p_mXDai.js → use-org-sso-DdtLWeHC.js} +1 -1
  210. package/dist/client/assets/{use-organization-roles-EKX73RmE.js → use-organization-roles-BYyGmBMK.js} +1 -1
  211. package/dist/client/assets/{use-organization-settings-C62jhu_V.js → use-organization-settings-DbHsJaaW.js} +1 -1
  212. package/dist/client/assets/{use-registry-connections-C82adOhA.js → use-registry-connections-CI0z613-.js} +1 -1
  213. package/dist/client/assets/{use-secrets-CXv4Or8y.js → use-secrets-dYdxMugZ.js} +1 -1
  214. package/dist/client/assets/{use-section-preview-base-uursozx3.js → use-section-preview-base-B46aIuGF.js} +1 -1
  215. package/dist/client/assets/{use-settings-tabs-BO1uyGPC.js → use-settings-tabs-B_hY1mlT.js} +1 -1
  216. package/dist/client/assets/{use-status-sounds-Df1zE4-g.js → use-status-sounds-DnGWueq0.js} +1 -1
  217. package/dist/client/assets/{use-tags-DBhn0x6Q.js → use-tags-BIZOfShH.js} +1 -1
  218. package/dist/client/assets/{use-view-mode-B8mZlQkB.js → use-view-mode-DQUSR-GN.js} +1 -1
  219. package/dist/client/assets/{use-virtual-mcp-IokMTZJW.js → use-virtual-mcp-CJYABS2i.js} +1 -1
  220. package/dist/client/assets/useInfiniteQuery-3soE5ZtR.js +1 -0
  221. package/dist/client/assets/{useRouterState-BHrQRzTY.js → useRouterState-CFKKaLoi.js} +1 -1
  222. package/dist/client/assets/useSuspenseInfiniteQuery-Cean782d.js +1 -0
  223. package/dist/client/assets/{users-B6MzMck4.js → users-CAizcdlt.js} +1 -1
  224. package/dist/client/assets/variant-calendar-CpdX720c.js +1 -0
  225. package/dist/client/assets/{view-mode-toggle-waWn0PEd.js → view-mode-toggle-DMaq2N-u.js} +1 -1
  226. package/dist/client/index.html +1 -1
  227. package/dist/client/install.sh +443 -45
  228. package/dist/server/cli.js +1 -1
  229. package/dist/server/server.js +1 -1
  230. package/package.json +1 -1
  231. package/dist/client/assets/Globe01-DEX4B2yM.js +0 -1
  232. package/dist/client/assets/agent-icon-BnyLUh_P.js +0 -1
  233. package/dist/client/assets/agents-list-WqvM4PBU.js +0 -1
  234. package/dist/client/assets/ai-providers-Cm0Rm1KR.js +0 -1
  235. package/dist/client/assets/app-editor-BDtjnvii.js +0 -1
  236. package/dist/client/assets/automations-C9iJneF6.js +0 -1
  237. package/dist/client/assets/bulk-category-panel-tfM9zSbQ.js +0 -1
  238. package/dist/client/assets/cards-CxCBBMfu.js +0 -9
  239. package/dist/client/assets/category-editor-CIZoMWm2.js +0 -1
  240. package/dist/client/assets/collection-detail-DGbcByEY.js +0 -1
  241. package/dist/client/assets/commerce-onboarding-DO7FMttC.js +0 -1
  242. package/dist/client/assets/connection-detail-m014gzNI.js +0 -1
  243. package/dist/client/assets/connections-BNQ0Y0h7.js +0 -1
  244. package/dist/client/assets/file-explorer-DKHfXuC4.js +0 -2
  245. package/dist/client/assets/general-BTyXC0VC.js +0 -1
  246. package/dist/client/assets/index-Di0wCO9r.js +0 -1
  247. package/dist/client/assets/post-editor-DnamQd0I.js +0 -1
  248. package/dist/client/assets/project-app-view-C-J9cu-l.js +0 -1
  249. package/dist/client/assets/record-editor-CoztL6I2.js +0 -1
  250. package/dist/client/assets/redirect-editor-Bz1AUCqF.js +0 -1
  251. package/dist/client/assets/registry-DQjw_3WH.js +0 -2
  252. package/dist/client/assets/roles-CYg93TjU.js +0 -1
  253. package/dist/client/assets/select-model-B5IdH_n6.js +0 -4
  254. package/dist/client/assets/seo-editor-Do7jjKRP.js +0 -1
  255. package/dist/client/assets/store-registry-Dz8WBmEa.js +0 -2
  256. package/dist/client/assets/synced-repos-Cuzl6scP.js +0 -1
  257. package/dist/client/assets/tab-id-BJUTVZdl.js +0 -1
  258. package/dist/client/assets/tasks-EwwXPqCM.js +0 -1
  259. package/dist/client/assets/useInfiniteQuery-ewuCizNF.js +0 -1
  260. package/dist/client/assets/useSuspenseInfiniteQuery-BvX-6eAF.js +0 -1
  261. package/dist/client/assets/variant-calendar-DrArrrSO.js +0 -1
@@ -1371,7 +1371,7 @@ Usage: deco services <up|down|status>`),process.exit(1)}}var Gi1=w(()=>{Of()});f
1371
1371
  `.execute($);if(Number(W.rows[0]?.cnt)===0){console.warn(`Failed to migrate ${J}/${K}, keeping in old table`);continue}}await lb`
1372
1372
  DELETE FROM kysely_migration WHERE name = ${X}
1373
1373
  `.execute($)}}async function To1($){await Np6($),await Up6($);let Z=new Po1({db:$,provider:{getMigrations:()=>Promise.resolve(Ei0)}}),{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 Fp6($){let{keepOpen:Z=!1,database:X,skipBetterAuth:Q=!1}=$??{},Y="skipped";if(!Q&&!X)Y=await cc0();let G=X??F6(),J=async()=>{if(!Z&&!X)await yB(G).catch((K)=>{console.warn("Warning: Error closing database:",K)})};try{let K=await To1(G.db);return await J(),{betterAuth:Y,kysely:K}}catch(K){throw await J(),K}}async function Bp6(){let $=F6(),Z=new Po1({db:$.db,provider:{getMigrations:()=>Promise.resolve(Ei0)}}),{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 Io1=w(()=>{jo1();lc0();XX()});async function EZ0($){let Z={...process.env},X=H80($,Z);console.log(hw1(X.settings.encryptionKey));let Q=X.settings.betterAuthSecret||(X.settings.localMode?fn1(X.settings.dataDir):""),{ensureServices:Y}=await Promise.resolve().then(() => (q90(),I90)),{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(() => (lc0(),yn1));await W(G.databaseUrl);let{createDatabase:H}=await Promise.resolve().then(() => (XX(),$n1)),{migrateToLatest:N}=await Promise.resolve().then(() => (Io1(),Ro1)),U=H(G.databaseUrl);await N({keepOpen:!0,database:U,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 Ji1(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 zi0=w(()=>{Of();bn1();C8()});var Vo1={};F0(Vo1,{updateService:()=>DE,subscribeCliState:()=>Ai0,setTuiConsoleIntercepted:()=>zZ0,setServerUrl:()=>Ci,setMigrationsDone:()=>Si,setDevMode:()=>Lp6,resetCliStateForTests:()=>Op6,isTuiConsoleIntercepted:()=>jZ0,getCliState:()=>Pi0,addLogEntry:()=>lB});function qo1(){return{services:[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}],migrationsStatus:"pending",serverUrl:null,logs:[]}}function Op6(){cQ=qo1()}function wp6(){return[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}]}function ki(){for(let $ of ji0)$()}function Pi0(){return cQ}function Ai0($){return ji0.add($),()=>ji0.delete($)}function DE($){cQ={...cQ,services:cQ.services.map((Z)=>Z.name===$.name?$:Z)},ki()}function Si(){cQ={...cQ,migrationsStatus:"done"},ki()}function Ci($){cQ={...cQ,serverUrl:$},ki()}function lB($){let Z=[...cQ.logs,$];cQ={...cQ,logs:Z.length>500?Z.slice(-500):Z},ki()}function Lp6(){cQ={...cQ,services:[...wp6(),{name:"API",status:"pending",port:0},{name:"Vite",status:"pending",port:0}]},ki()}function zZ0($){Mo1=$}function jZ0(){return Mo1}var cQ,ji0,Mo1=!1;var EE=w(()=>{cQ=qo1();ji0=new Set});import{createServer as ko1}from"net";function Dp6($){return new Promise((Z)=>{let X=ko1();X.once("error",()=>Z(!1)),X.listen($,"0.0.0.0",()=>{X.close(()=>Z(!0))})})}async function _i($){if(await Dp6($))return $;let Z=await new Promise((X,Q)=>{let Y=ko1();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 Ti0=()=>{};function vi($){return $.replace(/\x1b\[[0-9;]*m/g,"")}var Ri0={};F0(Ri0,{startDevServer:()=>zp6});import{join as Ep6}from"path";function So1($){let Z=$.getReader(),X=new TextDecoder,Q="";function Y(){let G=Q.split(`
1374
- `);Q=G.pop()??"";for(let J of G){let K=vi(J).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;lB({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=vi(Q).replace(/^\[\d+\]\s*/,"").trim();if(G)lB({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:G})}})()}async function zp6($){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 _i(Number(Y)+1):await _i(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await EZ0({port:String(J),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let L of W)DE({name:L.name,status:"ready",port:L.port});Si();let N=Ep6(import.meta.dir,"..","..","..","..",".."),U=X===!0,F=Bun.spawn(["bun","run","dev:servers"],{cwd:N,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",U?"inherit":"pipe",U?"inherit":"pipe"]});if(!U)So1(F.stdout),So1(F.stderr);Ci(G),DE({name:"Vite",status:"ready",port:Number(Y)}),DE({name:"API",status:"ready",port:Number(K.port)});let O=async(L)=>{if(F.kill(L),await F.exited,H.length>0){let{stopServices:D}=await Promise.resolve().then(() => (q90(),I90));await D(K.dataDir)}};return process.on("SIGINT",()=>O("SIGINT")),process.on("SIGTERM",()=>O("SIGTERM")),{port:Number(Y),process:F}}var Ii0=w(()=>{zi0();EE();Ti0()});var PZ0;var qi0=w(()=>{PZ0={name:"decocms",version:"4.239.2",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@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 Pp6,Text as Co1}from"ink";import{jsx as Ap6,jsxs as _o1}from"react/jsx-runtime";function vo1({version:$}){return _o1(Pp6,{flexDirection:"column",marginTop:1,children:[o90.map((Z,X)=>Ap6(Co1,{color:r90[X],children:Z},X)),_o1(Co1,{dimColor:!0,children:[" v",$]})]})}var xo1=w(()=>{Ei()});import{Box as zE,Text as dB}from"ink";import{Spinner as Tp6}from"@inkjs/ui";import{jsx as sY,jsxs as db}from"react/jsx-runtime";function fo1({status:$}){if($==="pending")return sY(Tp6,{label:""});return sY(dB,{color:"green",children:"\u2713"})}function Rp6($){return`${$.name}: ${$.port||"...."}`}function bo1({services:$,migrationsStatus:Z,home:X,serverUrl:Q}){return db(zE,{flexDirection:"column",paddingBottom:1,children:[sY(vo1,{version:PZ0.version}),sY(zE,{marginBottom:1,children:sY(dB,{dimColor:!0,children:"\u2500".repeat(80)})}),sY(zE,{children:db(dB,{dimColor:!0,children:["Home: ",X]})}),db(zE,{gap:2,children:[$.map((Y)=>db(zE,{gap:1,children:[sY(dB,{children:Rp6(Y)}),sY(fo1,{status:Y.status})]},Y.name)),db(zE,{gap:1,children:[sY(dB,{children:"Migrations"}),sY(fo1,{status:Z})]})]}),sY(zE,{children:Q?db(dB,{children:["Open in browser: ",sY(dB,{color:"cyan",children:Q})]}):sY(dB,{dimColor:!0,children:"Starting..."})})]})}var yo1=w(()=>{qi0();xo1()});import{Box as Ip6,Text as xi}from"ink";import{jsx as Mi0,jsxs as Vi0}from"react/jsx-runtime";function qp6($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function go1({logs:$}){return Mi0(Ip6,{flexDirection:"column",children:$.map((Z,X)=>{if(Z.rawLine)return Mi0(xi,{dimColor:!0,children:Z.rawLine},X);let Q=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return Vi0(xi,{children:[Vi0(xi,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),Mi0(xi,{color:qp6(Z.status),children:Z.status}),Vi0(xi,{dimColor:!0,children:[" ",Q.padStart(8)]})]},X)})})}var ho1=()=>{};var ki0={};F0(ki0,{App:()=>kp6});import{Box as Mp6}from"ink";import{useSyncExternalStore as Vp6}from"react";import{jsx as uo1,jsxs as Sp6}from"react/jsx-runtime";function kp6({home:$}){let Z=Vp6(Ai0,Pi0);return Sp6(Mp6,{flexDirection:"column",children:[uo1(bo1,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),uo1(go1,{logs:Z.logs})]})}var Si0=w(()=>{yo1();ho1();EE()});var vJ="thread-gate",rN="decopilot-hosted-harness",aN="decopilot-hosted-harness-sandboxed",F3="automations",mB="background-tools",jE="task-board-github-reads",PE="jira-push";var co1="7";function lo1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:co1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var do1=()=>{};function Cp6(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function Ci0($,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 mo1(){let $=Cp6();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:Ci0($,"--cpu-prof-dir")??process.cwd(),name:Ci0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(Ci0($,"--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 io1(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let X=BE();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(()=>{}),AZ0=setInterval(()=>void Z().catch(()=>{}),$),AZ0.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(AZ0)clearInterval(AZ0)}}var AZ0;var no1=()=>{};import*as _p6 from"bun:jsc";function po1(){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{vp6()}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=xp6()?.traces??[]}catch{}if(J>$&&K.length>0){let W=new Map;for(let N of K){let U=N.frames.find((O)=>O.sourceURL&&!/Unknown Executable/.test(O.category??""))??N.frames[0];if(!U)continue;let F=(U.sourceURL??"?").replace(/^.*\/node_modules\//,"node_modules/"),B=`${U.name??"?"} @ ${F}:${U.line??"?"}`;W.set(B,(W.get(B)??0)+1)}let H=[...W.entries()].sort((N,U)=>U[1]-N[1]).slice(0,8).map(([N,U])=>({frame:N,count:U}));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 vp6,xp6;var to1=w(()=>{({startSamplingProfiler:vp6,samplingProfilerStackTraces:xp6}=_p6)});function oo1(){mo1();let $=[io1(),ni1(),po1()];return()=>{for(let Z of $)Z()}}var ro1=w(()=>{Cc0();no1();to1()});var AE=_((ao1)=>{Object.defineProperty(ao1,"__esModule",{value:!0});ao1.RepublishHeaders=ao1.DirectMsgHeaders=ao1.JsHeaders=ao1.AdvisoryKind=void 0;ao1.isOrderedPushConsumerOptions=fp6;ao1.isPullConsumer=bp6;ao1.isPushConsumer=yp6;ao1.isBoundPushConsumerOptions=gp6;function fp6($){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 bp6($){return $.isPullConsumer()}function yp6($){return $.isPushConsumer()}function gp6($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}ao1.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"};ao1.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"};ao1.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};ao1.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var eY=_((eo1)=>{Object.defineProperty(eo1,"__esModule",{value:!0});eo1.TD=eo1.TE=eo1.Empty=void 0;eo1.encode=pp6;eo1.decode=tp6;eo1.Empty=new Uint8Array(0);eo1.TE=new TextEncoder;eo1.TD=new TextDecoder;function np6(...$){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 pp6(...$){let Z=[];for(let X=0;X<$.length;X++)Z.push(eo1.TE.encode($[X]));if(Z.length===0)return eo1.Empty;if(Z.length===1)return Z[0];return np6(...Z)}function tp6($){if(!$||$.length===0)return"";return eo1.TD.decode($)}});var $G=_((Xr1)=>{Object.defineProperty(Xr1,"__esModule",{value:!0});Xr1.errors=Xr1.PermissionViolationError=Xr1.NoRespondersError=Xr1.TimeoutError=Xr1.RequestError=Xr1.ProtocolError=Xr1.ConnectionError=Xr1.DrainingConnectionError=Xr1.ClosedConnectionError=Xr1.AuthorizationError=Xr1.UserAuthenticationExpiredError=Xr1.InvalidOperationError=Xr1.InvalidArgumentError=Xr1.InvalidSubjectError=void 0;class vi0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}Xr1.InvalidSubjectError=vi0;class TZ0 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 TZ0(`${$} ${Z}`,X)}}Xr1.InvalidArgumentError=TZ0;class xi0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}Xr1.InvalidOperationError=xi0;class RZ0 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new RZ0($);return null}}Xr1.UserAuthenticationExpiredError=RZ0;class IZ0 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 IZ0($);return null}}Xr1.AuthorizationError=IZ0;class fi0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}Xr1.ClosedConnectionError=fi0;class bi0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}Xr1.DrainingConnectionError=bi0;class yi0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}Xr1.ConnectionError=yi0;class gi0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}Xr1.ProtocolError=gi0;class hi0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof qZ0}}Xr1.RequestError=hi0;class ui0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}Xr1.TimeoutError=ui0;class qZ0 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}Xr1.NoRespondersError=qZ0;class MZ0 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 MZ0($,X,Q,Y)}}Xr1.PermissionViolationError=MZ0;Xr1.errors={AuthorizationError:IZ0,ClosedConnectionError:fi0,ConnectionError:yi0,DrainingConnectionError:bi0,InvalidArgumentError:TZ0,InvalidOperationError:xi0,InvalidSubjectError:vi0,NoRespondersError:qZ0,PermissionViolationError:MZ0,ProtocolError:gi0,RequestError:hi0,TimeoutError:ui0,UserAuthenticationExpiredError:RZ0}});var xJ=_((Kr1)=>{Object.defineProperty(Kr1,"__esModule",{value:!0});Kr1.SimpleMutex=Kr1.Perf=void 0;Kr1.extend=Ut6;Kr1.render=Ft6;Kr1.timeout=Bt6;Kr1.delay=Ot6;Kr1.deadline=wt6;Kr1.deferred=li0;Kr1.debugDeferred=Lt6;Kr1.shuffle=Dt6;Kr1.collect=Et6;Kr1.jitter=Jr1;Kr1.backoff=zt6;Kr1.nanos=jt6;Kr1.millis=Pt6;Kr1.randomToken=Rt6;var Nt6=eY(),ci0=$G();function Ut6($,...Z){for(let X=0;X<Z.length;X++){let Q=Z[X];Object.keys(Q).forEach(function(Y){$[Y]=Q[Y]})}return $}function Ft6($){return Nt6.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function Bt6($,Z=!0){let X=Z?new ci0.TimeoutError:null,Q,Y,G=new Promise((J,K)=>{Q={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(X===null)K(new ci0.TimeoutError);else K(X)},$)});return Object.assign(G,Q)}function Ot6($=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 wt6($,Z=1000){let X=li0(),Q=setTimeout(()=>{X.reject(new ci0.TimeoutError)},Z);try{return await Promise.race([$,X])}finally{clearTimeout(Q)}}function li0(){let $={},Z=new Promise((X,Q)=>{$={resolve:X,reject:Q}});return Object.assign(Z,$)}function Lt6(){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 Dt6($){for(let Z=$.length-1;Z>0;Z--){let X=Math.floor(Math.random()*(Z+1));[$[Z],$[X]]=[$[X],$[Z]]}return $}async function Et6($){let Z=[];for await(let X of $)Z.push(X);return Z}class Yr1{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})}),$}}Kr1.Perf=Yr1;class Gr1{max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=li0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}Kr1.SimpleMutex=Gr1;function Jr1($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function zt6($=[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 Jr1(X>Z?$[Z]:$[X])}}}function jt6($){return $*1e6}function Pt6($){return Math.floor($/1e6)}var At6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",sN=new Uint8Array(62);for(let $=0;$<62;$++)sN[$]=At6.charCodeAt($);var Tt6=218340105584896;function Rt6(){let $=Math.floor(Math.random()*Tt6),Z=$%62,X=sN[Z];$=($-Z)/62,Z=$%62;let Q=sN[Z];$=($-Z)/62,Z=$%62;let Y=sN[Z];$=($-Z)/62,Z=$%62;let G=sN[Z];$=($-Z)/62,Z=$%62;let J=sN[Z];$=($-Z)/62,Z=$%62;let K=sN[Z];$=($-Z)/62,Z=$%62;let W=sN[Z];$=($-Z)/62;let H=sN[$];return String.fromCharCode(X,Q,Y,G,J,K,W,H)}});var wr1=_((Br1)=>{Object.defineProperty(Br1,"__esModule",{value:!0});Br1.nuid=Br1.NuidImpl=void 0;var ut6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",iB=62,kZ0=12,Ur1=10,Hr1=33,ct6=333,Nr1=kZ0+Ur1,mi0=new Uint8Array(iB);for(let $=0;$<iB;$++)mi0[$]=ut6.charCodeAt($);var VZ0=4294967296,Fr1=BigInt(iB)**BigInt(Ur1),fi=Number(Fr1/(1n<<32n)),di0=Number(Fr1%(1n<<32n));function lt6($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function dt6($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else lt6($)}class ii0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(Nr1),this.cbuf=new Uint8Array(kZ0),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(fi+1)),this.seqLo=Math.floor(Math.random()*VZ0);while($++<8&&this.seqHi===fi&&this.seqLo>=di0);if(this.seqHi===fi&&this.seqLo>=di0)this.seqLo=0;this.inc=Math.random()*(ct6-Hr1)+Hr1|0}setPre(){dt6(this.cbuf);for(let $=0;$<kZ0;$++)this.buf[$]=mi0[this.cbuf[$]%iB]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let X=Nr1-1;X>=kZ0;X--){let Q=Math.floor($/iB),G=($-Q*iB)*VZ0+Z,J=Math.floor(G/iB),K=G-J*iB;this.buf[X]=mi0[K],$=Q,Z=J}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=VZ0)this.seqLo-=VZ0,this.seqHi+=1;if(this.seqHi>fi||this.seqHi===fi&&this.seqLo>=di0)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()}}Br1.NuidImpl=ii0;Br1.nuid=new ii0});var zr1=_((Dr1)=>{Object.defineProperty(Dr1,"__esModule",{value:!0});Dr1.nuid=Dr1.Nuid=void 0;var Lr1=wr1();Dr1.Nuid=Lr1.NuidImpl;Dr1.nuid=Lr1.nuid});var CZ0=_((SZ0)=>{Object.defineProperty(SZ0,"__esModule",{value:!0});SZ0.nuid=SZ0.Nuid=void 0;var jr1=zr1();Object.defineProperty(SZ0,"Nuid",{enumerable:!0,get:function(){return jr1.Nuid}});Object.defineProperty(SZ0,"nuid",{enumerable:!0,get:function(){return jr1.nuid}})});var nB=_((Pr1)=>{Object.defineProperty(Pr1,"__esModule",{value:!0});Pr1.DEFAULT_HOST=Pr1.DEFAULT_PORT=Pr1.Match=void 0;Pr1.syncIterator=ot6;Pr1.createInbox=rt6;var pt6=CZ0(),tt6=$G();Pr1.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function ot6($){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 rt6($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw tt6.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${pt6.nuid.next()}`}Pr1.DEFAULT_PORT=4222;Pr1.DEFAULT_HOST="127.0.0.1"});var bi=_((Ir1)=>{Object.defineProperty(Ir1,"__esModule",{value:!0});Ir1.DataBuffer=void 0;var Tr1=eY();class Rr1{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 Tr1.TE.encode($)}static toAscii($){return Tr1.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}}Ir1.DataBuffer=Rr1});var TE=_((Vr1)=>{Object.defineProperty(Vr1,"__esModule",{value:!0});Vr1.LF=Vr1.CR=Vr1.CRLF=Vr1.CR_LF_LEN=Vr1.CR_LF=void 0;Vr1.setTransportFactory=Yo6;Vr1.defaultPort=Go6;Vr1.getUrlParseFn=Jo6;Vr1.newTransport=Ko6;Vr1.getResolveFn=Wo6;Vr1.protoLen=Mr1;Vr1.extractProtocolMessage=Ho6;var Zo6=eY(),Xo6=nB(),Qo6=bi(),ZG;function Yo6($){ZG=$}function Go6(){return ZG!==void 0&&ZG.defaultPort!==void 0?ZG.defaultPort:Xo6.DEFAULT_PORT}function Jo6(){return ZG!==void 0&&ZG.urlParseFn?ZG.urlParseFn:void 0}function Ko6(){if(!ZG||typeof ZG.factory!=="function")throw Error("transport fn is not set");return ZG.factory()}function Wo6(){return ZG!==void 0&&ZG.dnsResolveFn?ZG.dnsResolveFn:void 0}Vr1.CR_LF=`\r
1374
+ `);Q=G.pop()??"";for(let J of G){let K=vi(J).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;lB({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=vi(Q).replace(/^\[\d+\]\s*/,"").trim();if(G)lB({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:G})}})()}async function zp6($){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 _i(Number(Y)+1):await _i(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await EZ0({port:String(J),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let L of W)DE({name:L.name,status:"ready",port:L.port});Si();let N=Ep6(import.meta.dir,"..","..","..","..",".."),U=X===!0,F=Bun.spawn(["bun","run","dev:servers"],{cwd:N,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",U?"inherit":"pipe",U?"inherit":"pipe"]});if(!U)So1(F.stdout),So1(F.stderr);Ci(G),DE({name:"Vite",status:"ready",port:Number(Y)}),DE({name:"API",status:"ready",port:Number(K.port)});let O=async(L)=>{if(F.kill(L),await F.exited,H.length>0){let{stopServices:D}=await Promise.resolve().then(() => (q90(),I90));await D(K.dataDir)}};return process.on("SIGINT",()=>O("SIGINT")),process.on("SIGTERM",()=>O("SIGTERM")),{port:Number(Y),process:F}}var Ii0=w(()=>{zi0();EE();Ti0()});var PZ0;var qi0=w(()=>{PZ0={name:"decocms",version:"4.241.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","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@nats-io/jwt":"0.0.10-5","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});import{Box as Pp6,Text as Co1}from"ink";import{jsx as Ap6,jsxs as _o1}from"react/jsx-runtime";function vo1({version:$}){return _o1(Pp6,{flexDirection:"column",marginTop:1,children:[o90.map((Z,X)=>Ap6(Co1,{color:r90[X],children:Z},X)),_o1(Co1,{dimColor:!0,children:[" v",$]})]})}var xo1=w(()=>{Ei()});import{Box as zE,Text as dB}from"ink";import{Spinner as Tp6}from"@inkjs/ui";import{jsx as sY,jsxs as db}from"react/jsx-runtime";function fo1({status:$}){if($==="pending")return sY(Tp6,{label:""});return sY(dB,{color:"green",children:"\u2713"})}function Rp6($){return`${$.name}: ${$.port||"...."}`}function bo1({services:$,migrationsStatus:Z,home:X,serverUrl:Q}){return db(zE,{flexDirection:"column",paddingBottom:1,children:[sY(vo1,{version:PZ0.version}),sY(zE,{marginBottom:1,children:sY(dB,{dimColor:!0,children:"\u2500".repeat(80)})}),sY(zE,{children:db(dB,{dimColor:!0,children:["Home: ",X]})}),db(zE,{gap:2,children:[$.map((Y)=>db(zE,{gap:1,children:[sY(dB,{children:Rp6(Y)}),sY(fo1,{status:Y.status})]},Y.name)),db(zE,{gap:1,children:[sY(dB,{children:"Migrations"}),sY(fo1,{status:Z})]})]}),sY(zE,{children:Q?db(dB,{children:["Open in browser: ",sY(dB,{color:"cyan",children:Q})]}):sY(dB,{dimColor:!0,children:"Starting..."})})]})}var yo1=w(()=>{qi0();xo1()});import{Box as Ip6,Text as xi}from"ink";import{jsx as Mi0,jsxs as Vi0}from"react/jsx-runtime";function qp6($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function go1({logs:$}){return Mi0(Ip6,{flexDirection:"column",children:$.map((Z,X)=>{if(Z.rawLine)return Mi0(xi,{dimColor:!0,children:Z.rawLine},X);let Q=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return Vi0(xi,{children:[Vi0(xi,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),Mi0(xi,{color:qp6(Z.status),children:Z.status}),Vi0(xi,{dimColor:!0,children:[" ",Q.padStart(8)]})]},X)})})}var ho1=()=>{};var ki0={};F0(ki0,{App:()=>kp6});import{Box as Mp6}from"ink";import{useSyncExternalStore as Vp6}from"react";import{jsx as uo1,jsxs as Sp6}from"react/jsx-runtime";function kp6({home:$}){let Z=Vp6(Ai0,Pi0);return Sp6(Mp6,{flexDirection:"column",children:[uo1(bo1,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),uo1(go1,{logs:Z.logs})]})}var Si0=w(()=>{yo1();ho1();EE()});var vJ="thread-gate",rN="decopilot-hosted-harness",aN="decopilot-hosted-harness-sandboxed",F3="automations",mB="background-tools",jE="task-board-github-reads",PE="jira-push";var co1="7";function lo1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:co1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var do1=()=>{};function Cp6(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function Ci0($,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 mo1(){let $=Cp6();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:Ci0($,"--cpu-prof-dir")??process.cwd(),name:Ci0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(Ci0($,"--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 io1(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let X=BE();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(()=>{}),AZ0=setInterval(()=>void Z().catch(()=>{}),$),AZ0.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(AZ0)clearInterval(AZ0)}}var AZ0;var no1=()=>{};import*as _p6 from"bun:jsc";function po1(){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{vp6()}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=xp6()?.traces??[]}catch{}if(J>$&&K.length>0){let W=new Map;for(let N of K){let U=N.frames.find((O)=>O.sourceURL&&!/Unknown Executable/.test(O.category??""))??N.frames[0];if(!U)continue;let F=(U.sourceURL??"?").replace(/^.*\/node_modules\//,"node_modules/"),B=`${U.name??"?"} @ ${F}:${U.line??"?"}`;W.set(B,(W.get(B)??0)+1)}let H=[...W.entries()].sort((N,U)=>U[1]-N[1]).slice(0,8).map(([N,U])=>({frame:N,count:U}));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 vp6,xp6;var to1=w(()=>{({startSamplingProfiler:vp6,samplingProfilerStackTraces:xp6}=_p6)});function oo1(){mo1();let $=[io1(),ni1(),po1()];return()=>{for(let Z of $)Z()}}var ro1=w(()=>{Cc0();no1();to1()});var AE=_((ao1)=>{Object.defineProperty(ao1,"__esModule",{value:!0});ao1.RepublishHeaders=ao1.DirectMsgHeaders=ao1.JsHeaders=ao1.AdvisoryKind=void 0;ao1.isOrderedPushConsumerOptions=fp6;ao1.isPullConsumer=bp6;ao1.isPushConsumer=yp6;ao1.isBoundPushConsumerOptions=gp6;function fp6($){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 bp6($){return $.isPullConsumer()}function yp6($){return $.isPushConsumer()}function gp6($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}ao1.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"};ao1.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"};ao1.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};ao1.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var eY=_((eo1)=>{Object.defineProperty(eo1,"__esModule",{value:!0});eo1.TD=eo1.TE=eo1.Empty=void 0;eo1.encode=pp6;eo1.decode=tp6;eo1.Empty=new Uint8Array(0);eo1.TE=new TextEncoder;eo1.TD=new TextDecoder;function np6(...$){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 pp6(...$){let Z=[];for(let X=0;X<$.length;X++)Z.push(eo1.TE.encode($[X]));if(Z.length===0)return eo1.Empty;if(Z.length===1)return Z[0];return np6(...Z)}function tp6($){if(!$||$.length===0)return"";return eo1.TD.decode($)}});var $G=_((Xr1)=>{Object.defineProperty(Xr1,"__esModule",{value:!0});Xr1.errors=Xr1.PermissionViolationError=Xr1.NoRespondersError=Xr1.TimeoutError=Xr1.RequestError=Xr1.ProtocolError=Xr1.ConnectionError=Xr1.DrainingConnectionError=Xr1.ClosedConnectionError=Xr1.AuthorizationError=Xr1.UserAuthenticationExpiredError=Xr1.InvalidOperationError=Xr1.InvalidArgumentError=Xr1.InvalidSubjectError=void 0;class vi0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}Xr1.InvalidSubjectError=vi0;class TZ0 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 TZ0(`${$} ${Z}`,X)}}Xr1.InvalidArgumentError=TZ0;class xi0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}Xr1.InvalidOperationError=xi0;class RZ0 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new RZ0($);return null}}Xr1.UserAuthenticationExpiredError=RZ0;class IZ0 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 IZ0($);return null}}Xr1.AuthorizationError=IZ0;class fi0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}Xr1.ClosedConnectionError=fi0;class bi0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}Xr1.DrainingConnectionError=bi0;class yi0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}Xr1.ConnectionError=yi0;class gi0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}Xr1.ProtocolError=gi0;class hi0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof qZ0}}Xr1.RequestError=hi0;class ui0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}Xr1.TimeoutError=ui0;class qZ0 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}Xr1.NoRespondersError=qZ0;class MZ0 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 MZ0($,X,Q,Y)}}Xr1.PermissionViolationError=MZ0;Xr1.errors={AuthorizationError:IZ0,ClosedConnectionError:fi0,ConnectionError:yi0,DrainingConnectionError:bi0,InvalidArgumentError:TZ0,InvalidOperationError:xi0,InvalidSubjectError:vi0,NoRespondersError:qZ0,PermissionViolationError:MZ0,ProtocolError:gi0,RequestError:hi0,TimeoutError:ui0,UserAuthenticationExpiredError:RZ0}});var xJ=_((Kr1)=>{Object.defineProperty(Kr1,"__esModule",{value:!0});Kr1.SimpleMutex=Kr1.Perf=void 0;Kr1.extend=Ut6;Kr1.render=Ft6;Kr1.timeout=Bt6;Kr1.delay=Ot6;Kr1.deadline=wt6;Kr1.deferred=li0;Kr1.debugDeferred=Lt6;Kr1.shuffle=Dt6;Kr1.collect=Et6;Kr1.jitter=Jr1;Kr1.backoff=zt6;Kr1.nanos=jt6;Kr1.millis=Pt6;Kr1.randomToken=Rt6;var Nt6=eY(),ci0=$G();function Ut6($,...Z){for(let X=0;X<Z.length;X++){let Q=Z[X];Object.keys(Q).forEach(function(Y){$[Y]=Q[Y]})}return $}function Ft6($){return Nt6.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function Bt6($,Z=!0){let X=Z?new ci0.TimeoutError:null,Q,Y,G=new Promise((J,K)=>{Q={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(X===null)K(new ci0.TimeoutError);else K(X)},$)});return Object.assign(G,Q)}function Ot6($=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 wt6($,Z=1000){let X=li0(),Q=setTimeout(()=>{X.reject(new ci0.TimeoutError)},Z);try{return await Promise.race([$,X])}finally{clearTimeout(Q)}}function li0(){let $={},Z=new Promise((X,Q)=>{$={resolve:X,reject:Q}});return Object.assign(Z,$)}function Lt6(){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 Dt6($){for(let Z=$.length-1;Z>0;Z--){let X=Math.floor(Math.random()*(Z+1));[$[Z],$[X]]=[$[X],$[Z]]}return $}async function Et6($){let Z=[];for await(let X of $)Z.push(X);return Z}class Yr1{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})}),$}}Kr1.Perf=Yr1;class Gr1{max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=li0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}Kr1.SimpleMutex=Gr1;function Jr1($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function zt6($=[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 Jr1(X>Z?$[Z]:$[X])}}}function jt6($){return $*1e6}function Pt6($){return Math.floor($/1e6)}var At6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",sN=new Uint8Array(62);for(let $=0;$<62;$++)sN[$]=At6.charCodeAt($);var Tt6=218340105584896;function Rt6(){let $=Math.floor(Math.random()*Tt6),Z=$%62,X=sN[Z];$=($-Z)/62,Z=$%62;let Q=sN[Z];$=($-Z)/62,Z=$%62;let Y=sN[Z];$=($-Z)/62,Z=$%62;let G=sN[Z];$=($-Z)/62,Z=$%62;let J=sN[Z];$=($-Z)/62,Z=$%62;let K=sN[Z];$=($-Z)/62,Z=$%62;let W=sN[Z];$=($-Z)/62;let H=sN[$];return String.fromCharCode(X,Q,Y,G,J,K,W,H)}});var wr1=_((Br1)=>{Object.defineProperty(Br1,"__esModule",{value:!0});Br1.nuid=Br1.NuidImpl=void 0;var ut6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",iB=62,kZ0=12,Ur1=10,Hr1=33,ct6=333,Nr1=kZ0+Ur1,mi0=new Uint8Array(iB);for(let $=0;$<iB;$++)mi0[$]=ut6.charCodeAt($);var VZ0=4294967296,Fr1=BigInt(iB)**BigInt(Ur1),fi=Number(Fr1/(1n<<32n)),di0=Number(Fr1%(1n<<32n));function lt6($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function dt6($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else lt6($)}class ii0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(Nr1),this.cbuf=new Uint8Array(kZ0),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(fi+1)),this.seqLo=Math.floor(Math.random()*VZ0);while($++<8&&this.seqHi===fi&&this.seqLo>=di0);if(this.seqHi===fi&&this.seqLo>=di0)this.seqLo=0;this.inc=Math.random()*(ct6-Hr1)+Hr1|0}setPre(){dt6(this.cbuf);for(let $=0;$<kZ0;$++)this.buf[$]=mi0[this.cbuf[$]%iB]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let X=Nr1-1;X>=kZ0;X--){let Q=Math.floor($/iB),G=($-Q*iB)*VZ0+Z,J=Math.floor(G/iB),K=G-J*iB;this.buf[X]=mi0[K],$=Q,Z=J}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=VZ0)this.seqLo-=VZ0,this.seqHi+=1;if(this.seqHi>fi||this.seqHi===fi&&this.seqLo>=di0)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()}}Br1.NuidImpl=ii0;Br1.nuid=new ii0});var zr1=_((Dr1)=>{Object.defineProperty(Dr1,"__esModule",{value:!0});Dr1.nuid=Dr1.Nuid=void 0;var Lr1=wr1();Dr1.Nuid=Lr1.NuidImpl;Dr1.nuid=Lr1.nuid});var CZ0=_((SZ0)=>{Object.defineProperty(SZ0,"__esModule",{value:!0});SZ0.nuid=SZ0.Nuid=void 0;var jr1=zr1();Object.defineProperty(SZ0,"Nuid",{enumerable:!0,get:function(){return jr1.Nuid}});Object.defineProperty(SZ0,"nuid",{enumerable:!0,get:function(){return jr1.nuid}})});var nB=_((Pr1)=>{Object.defineProperty(Pr1,"__esModule",{value:!0});Pr1.DEFAULT_HOST=Pr1.DEFAULT_PORT=Pr1.Match=void 0;Pr1.syncIterator=ot6;Pr1.createInbox=rt6;var pt6=CZ0(),tt6=$G();Pr1.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function ot6($){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 rt6($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw tt6.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${pt6.nuid.next()}`}Pr1.DEFAULT_PORT=4222;Pr1.DEFAULT_HOST="127.0.0.1"});var bi=_((Ir1)=>{Object.defineProperty(Ir1,"__esModule",{value:!0});Ir1.DataBuffer=void 0;var Tr1=eY();class Rr1{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 Tr1.TE.encode($)}static toAscii($){return Tr1.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}}Ir1.DataBuffer=Rr1});var TE=_((Vr1)=>{Object.defineProperty(Vr1,"__esModule",{value:!0});Vr1.LF=Vr1.CR=Vr1.CRLF=Vr1.CR_LF_LEN=Vr1.CR_LF=void 0;Vr1.setTransportFactory=Yo6;Vr1.defaultPort=Go6;Vr1.getUrlParseFn=Jo6;Vr1.newTransport=Ko6;Vr1.getResolveFn=Wo6;Vr1.protoLen=Mr1;Vr1.extractProtocolMessage=Ho6;var Zo6=eY(),Xo6=nB(),Qo6=bi(),ZG;function Yo6($){ZG=$}function Go6(){return ZG!==void 0&&ZG.defaultPort!==void 0?ZG.defaultPort:Xo6.DEFAULT_PORT}function Jo6(){return ZG!==void 0&&ZG.urlParseFn?ZG.urlParseFn:void 0}function Ko6(){if(!ZG||typeof ZG.factory!=="function")throw Error("transport fn is not set");return ZG.factory()}function Wo6(){return ZG!==void 0&&ZG.dnsResolveFn?ZG.dnsResolveFn:void 0}Vr1.CR_LF=`\r
1375
1375
  `;Vr1.CR_LF_LEN=Vr1.CR_LF.length;Vr1.CRLF=Qo6.DataBuffer.fromAscii(Vr1.CR_LF);Vr1.CR=new Uint8Array(Vr1.CRLF)[0];Vr1.LF=new Uint8Array(Vr1.CRLF)[1];function Mr1($){for(let Z=0;Z<$.length;Z++){let X=Z+1;if($.byteLength>X&&$[Z]===Vr1.CR&&$[X]===Vr1.LF)return X+1}return 0}function Ho6($){let Z=Mr1($);if(Z>0){let Q=new Uint8Array($).slice(0,Z);return Zo6.TD.decode(Q)}return""}});var ri0=_((br1)=>{Object.defineProperty(br1,"__esModule",{value:!0});br1.ipV4=vr1;br1.isIP=jo6;br1.parseIP=xr1;var yi=4,RE=16,_Z0=48,_r1=57,Sr1=65,Eo6=70,Cr1=97,zo6=102,oi0=16777215;function vr1($,Z,X,Q){let Y=new Uint8Array(RE);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 jo6($){return xr1($)!==void 0}function xr1($){for(let Z=0;Z<$.length;Z++)switch($[Z]){case".":return fr1($);case":":return Po6($)}return}function fr1($){let Z=new Uint8Array(yi);for(let X=0;X<yi;X++){if($.length===0)return;if(X>0){if($[0]!==".")return;$=$.substring(1)}let{n:Q,c:Y,ok:G}=Ao6($);if(!G||Q>255)return;$=$.substring(Y),Z[X]=Q}return vr1(Z[0],Z[1],Z[2],Z[3])}function Po6($){let Z=new Uint8Array(RE),X=-1;if($.length>=2&&$[0]===":"&&$[1]===":"){if(X=0,$=$.substring(2),$.length===0)return Z}let Q=0;while(Q<RE){let{n:Y,c:G,ok:J}=To6($);if(!J||Y>65535)return;if(G<$.length&&$[G]==="."){if(X<0&&Q!=RE-yi)return;if(Q+yi>RE)return;let K=fr1($);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+=yi;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<RE){if(X<0)return;let Y=RE-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 Ao6($){let Z=0,X=0;for(Z=0;Z<$.length&&_Z0<=$.charCodeAt(Z)&&$.charCodeAt(Z)<=_r1;Z++)if(X=X*10+($.charCodeAt(Z)-_Z0),X>=oi0)return{n:oi0,c:Z,ok:!1};if(Z===0)return{n:0,c:0,ok:!1};return{n:X,c:Z,ok:!0}}function To6($){let Z=0,X=0;for(X=0;X<$.length;X++){if(_Z0<=$.charCodeAt(X)&&$.charCodeAt(X)<=_r1)Z*=16,Z+=$.charCodeAt(X)-_Z0;else if(Cr1<=$.charCodeAt(X)&&$.charCodeAt(X)<=zo6)Z*=16,Z+=$.charCodeAt(X)-Cr1+10;else if(Sr1<=$.charCodeAt(X)&&$.charCodeAt(X)<=Eo6)Z*=16,Z+=$.charCodeAt(X)-Sr1+10;else break;if(Z>=oi0)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 Xn0=_((gr1)=>{Object.defineProperty(gr1,"__esModule",{value:!0});gr1.Servers=gr1.ServerImpl=void 0;gr1.isIPV4OrHostname=yr1;gr1.hostPort=Zn0;var ai0=TE(),si0=xJ(),ei0=ri0(),Mo6=nB(),Vo6=$G();function yr1($){if($.indexOf("[")!==-1||$.indexOf("::")!==-1)return!1;if($.indexOf(".")!==-1)return!0;if($.split(":").length<=2)return!0;return!1}function $n0($){return!yr1($)}function ko6($){let X=$.toUpperCase().indexOf("::FFFF:");if(X!==-1&&$.indexOf(".")!==-1){let Q=$.substring(X+7);return Q=Q.replace("[",""),Q.replace("]","")}return $}function Zn0($){if($=$.trim(),$.match(/^(.*:\/\/)(.*)/m))$=$.replace(/^(.*:\/\/)(.*)/gm,"$2");if($=ko6($),$n0($)&&$.indexOf("[")===-1)$=`[${$}]`;let Z=$n0($)?$.match(/(]:)(\d+)/):$.match(/(:)(\d+)/),X=Z&&Z.length===3&&Z[1]&&Z[2]?parseInt(Z[2]):Mo6.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 mb{src;listen;hostname;port;didConnect;reconnects;lastConnect;gossiped;tlsName;resolves;constructor($,Z=!1){this.src=$,this.tlsName="";let X=Zn0($);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,ei0.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}://${$n0(Q)?"["+Q+"]":Q}`);G.port=`${this.port}`;let J=new mb(G.host,!1);J.tlsName=this.hostname,Z.push(J)}}if($.randomize)(0,si0.shuffle)(Z);return this.resolves=Z,Z}}gr1.ServerImpl=mb;class vZ0{firstSelect;servers;currentServer;tlsName;randomize;constructor($={}){this.firstSelect=!0,this.servers=[],this.tlsName="",this.randomize=$.randomize||!1}setServers($){if(!Array.isArray($)||$.length===0)throw Vo6.InvalidArgumentError.format("servers","cannot be empty");let Z=(0,ai0.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}=Zn0(Y),J=X.get(G);if(J)J.gossiped=!1,Q.push(J);else Q.push(new mb(Y))}if(this.randomize)(0,si0.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,ei0.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,ai0.getUrlParseFn)();$=X?X($):$;let Q=new mb($,Z);if((0,ei0.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 vZ0.freezeAll(this.servers)}snapshotForHandler(){let $=this.currentServer;if(!$)return this.snapshot();let Z=this.servers.indexOf($);if(Z<=0)return this.snapshot();return vZ0.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,ai0.getUrlParseFn)(),G=new Map;if($.connect_urls&&$.connect_urls.length>0)$.connect_urls.forEach((K)=>{K=Y?Y(K,Z):K;let W=new mb(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,si0.shuffle)(W),this.servers=K?[K,...W]:W}return{added:X,deleted:Q}}}gr1.Servers=vZ0});var xZ0=_((lr1)=>{Object.defineProperty(lr1,"__esModule",{value:!0});lr1.QueuedIteratorImpl=void 0;var Qn0=xJ(),ur1=$G();class cr1{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,Qn0.deferred)(),this.yields=[],this.iterClosed=(0,Qn0.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 ur1.InvalidOperationError("iterator cannot be used when a callback is registered");if(this.yielding)throw new ur1.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,Qn0.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}}lr1.QueuedIteratorImpl=cr1});var Yn0=_((nr1)=>{Object.defineProperty(nr1,"__esModule",{value:!0});nr1.MuxSubscription=void 0;var vo6=nB(),mr1=$G();class ir1{baseInbox;reqs;constructor(){this.reqs=new Map}size(){return this.reqs.size}init($){return this.baseInbox=`${(0,vo6.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 mr1.NoRespondersError(Q.requestSubject):null;Q.resolver($,Z)}}}}close(){let $=new mr1.RequestError("connection closed");this.reqs.forEach((Z)=>{Z.resolver($,{})})}}nr1.MuxSubscription=ir1});var Gn0=_((or1)=>{Object.defineProperty(or1,"__esModule",{value:!0});or1.Heartbeat=void 0;var xo6=xJ();class tr1{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,xo6.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})}}or1.Heartbeat=tr1});var Wn0=_(($a1)=>{Object.defineProperty($a1,"__esModule",{value:!0});$a1.DenoBuffer=$a1.MAX_SIZE=$a1.AssertionError=void 0;$a1.assert=sr1;$a1.concat=er1;$a1.append=bo6;$a1.readAll=yo6;$a1.writeAll=go6;var fo6=eY();class Jn0 extends Error{constructor($){super($);this.name="AssertionError"}}$a1.AssertionError=Jn0;function sr1($,Z="Assertion failed."){if(!$)throw new Jn0(Z)}var ar1=32768;$a1.MAX_SIZE=4294967294;function fZ0($,Z,X=0){let Q=Z.byteLength-X;if($.byteLength>Q)$=$.subarray(0,Q);return Z.set($,X),$.byteLength}function er1($,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 bo6($,Z){return er1($,Uint8Array.of(Z))}class Kn0{_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($){sr1($<=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=fZ0(this._buf.subarray(this._off),$);return this._off+=Z,Z}writeByte($){return this.write(Uint8Array.of($))}writeString($){return this.write(fo6.TE.encode($))}write($){let Z=this._grow($.byteLength);return fZ0($,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)fZ0(this._buf.subarray(this._off),this._buf);else if(Q+$>$a1.MAX_SIZE)throw Error("The buffer cannot be grown beyond the maximum size.");else{let Y=new Uint8Array(Math.min(2*Q+$,$a1.MAX_SIZE));fZ0(this._buf.subarray(this._off),Y),this._buf=Y}return this._off=0,this._reslice(Math.min(Z+$,$a1.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(ar1);while(!0){let Q=this.capacity-this.length<ar1,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}}}$a1.DenoBuffer=Kn0;function yo6($){let Z=new Kn0;return Z.readFrom($),Z.bytes()}function go6($,Z){let X=0;while(X<Z.length)X+=$.write(Z.subarray(X))}});var Un0=_((Ga1)=>{Object.defineProperty(Ga1,"__esModule",{value:!0});Ga1.cc=Ga1.State=Ga1.Parser=Ga1.Kind=void 0;Ga1.describe=io6;var Hn0=Wn0(),Nn0=eY();Ga1.Kind={OK:0,ERR:1,MSG:2,INFO:3,PING:4,PONG:5};function io6($){let Z,X="";switch($.kind){case Ga1.Kind.MSG:Z="MSG";break;case Ga1.Kind.OK:Z="OK";break;case Ga1.Kind.ERR:Z="ERR",X=Nn0.TD.decode($.data);break;case Ga1.Kind.PING:Z="PING";break;case Ga1.Kind.PONG:Z="PONG";break;case Ga1.Kind.INFO:Z="INFO",X=Nn0.TD.decode($.data)}return`${Z}: ${X}`}function Xa1(){let $={};return $.sid=-1,$.hdr=-1,$.size=-1,$}var Qa1=48,no6=57,ib=67108864;class Ya1{dispatcher;state;as;drop;hdr;ma;argBuf;msgBuf;constructor($){this.dispatcher=$,this.state=Ga1.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 Ga1.State.OP_START:switch(X){case Ga1.cc.M:case Ga1.cc.m:this.state=Ga1.State.OP_M,this.hdr=-1,this.ma=Xa1();break;case Ga1.cc.H:case Ga1.cc.h:this.state=Ga1.State.OP_H,this.hdr=0,this.ma=Xa1();break;case Ga1.cc.P:case Ga1.cc.p:this.state=Ga1.State.OP_P;break;case Ga1.cc.PLUS:this.state=Ga1.State.OP_PLUS;break;case Ga1.cc.MINUS:this.state=Ga1.State.OP_MINUS;break;case Ga1.cc.I:case Ga1.cc.i:this.state=Ga1.State.OP_I;break;default:throw this.fail($.subarray(Z))}break;case Ga1.State.OP_H:switch(X){case Ga1.cc.M:case Ga1.cc.m:this.state=Ga1.State.OP_M;break;default:throw this.fail($.subarray(Z))}break;case Ga1.State.OP_M:switch(X){case Ga1.cc.S:case Ga1.cc.s:this.state=Ga1.State.OP_MS;break;default:throw this.fail($.subarray(Z))}break;case Ga1.State.OP_MS:switch(X){case Ga1.cc.G:case Ga1.cc.g:this.state=Ga1.State.OP_MSG;break;default:throw this.fail($.subarray(Z))}break;case Ga1.State.OP_MSG:switch(X){case Ga1.cc.SPACE:case Ga1.cc.TAB:this.state=Ga1.State.OP_MSG_SPC;break;default:throw this.fail($.subarray(Z))}break;case Ga1.State.OP_MSG_SPC:switch(X){case Ga1.cc.SPACE:case Ga1.cc.TAB:continue;default:this.state=Ga1.State.MSG_ARG,this.as=Z}break;case Ga1.State.MSG_ARG:switch(X){case Ga1.cc.CR:this.drop=1;break;case Ga1.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=Ga1.State.MSG_PAYLOAD,Z=this.as+this.ma.size-1;break}default:if(this.argBuf)this.argBuf.writeByte(X)}break;case Ga1.State.MSG_PAYLOAD:if(this.msgBuf)if(this.msgBuf.length>=this.ma.size){let Q=this.msgBuf.bytes({copy:!1});this.dispatcher.push({kind:Ga1.Kind.MSG,msg:this.ma,data:Q}),this.argBuf=void 0,this.msgBuf=void 0,this.state=Ga1.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:Ga1.Kind.MSG,msg:this.ma,data:$.subarray(this.as,Z)}),this.argBuf=void 0,this.msgBuf=void 0,this.state=Ga1.State.MSG_END;break;case Ga1.State.MSG_END:switch(X){case Ga1.cc.NL:this.drop=0,this.as=Z+1,this.state=Ga1.State.OP_START;break;default:continue}break;case Ga1.State.OP_PLUS:switch(X){case Ga1.cc.O:case Ga1.cc.o:this.state=Ga1.State.OP_PLUS_O;break;default:throw this.fail($.subarray(Z))}break;case Ga1.State.OP_PLUS_O:switch(X){case Ga1.cc.K:case Ga1.cc.k:this.state=Ga1.State.OP_PLUS_OK;break;default:throw this.fail($.subarray(Z))}break;case Ga1.State.OP_PLUS_OK:switch(X){case Ga1.cc.NL:this.dispatcher.push({kind:Ga1.Kind.OK}),this.drop=0,this.state=Ga1.State.OP_START;break}break;case Ga1.State.OP_MINUS:switch(X){case Ga1.cc.E:case Ga1.cc.e:this.state=Ga1.State.OP_MINUS_E;break;default:throw this.fail($.subarray(Z))}break;case Ga1.State.OP_MINUS_E:switch(X){case Ga1.cc.R:case Ga1.cc.r:this.state=Ga1.State.OP_MINUS_ER;break;default:throw this.fail($.subarray(Z))}break;case Ga1.State.OP_MINUS_ER:switch(X){case Ga1.cc.R:case Ga1.cc.r:this.state=Ga1.State.OP_MINUS_ERR;break;default:throw this.fail($.subarray(Z))}break;case Ga1.State.OP_MINUS_ERR:switch(X){case Ga1.cc.SPACE:case Ga1.cc.TAB:this.state=Ga1.State.OP_MINUS_ERR_SPC;break;default:throw this.fail($.subarray(Z))}break;case Ga1.State.OP_MINUS_ERR_SPC:switch(X){case Ga1.cc.SPACE:case Ga1.cc.TAB:continue;default:this.state=Ga1.State.MINUS_ERR_ARG,this.as=Z}break;case Ga1.State.MINUS_ERR_ARG:switch(X){case Ga1.cc.CR:this.drop=1;break;case Ga1.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:Ga1.Kind.ERR,data:Q}),this.drop=0,this.as=Z+1,this.state=Ga1.State.OP_START;break}default:if(this.argBuf)this.argBuf.write(Uint8Array.of(X))}break;case Ga1.State.OP_P:switch(X){case Ga1.cc.I:case Ga1.cc.i:this.state=Ga1.State.OP_PI;break;case Ga1.cc.O:case Ga1.cc.o:this.state=Ga1.State.OP_PO;break;default:throw this.fail($.subarray(Z))}break;case Ga1.State.OP_PO:switch(X){case Ga1.cc.N:case Ga1.cc.n:this.state=Ga1.State.OP_PON;break;default:throw this.fail($.subarray(Z))}break;case Ga1.State.OP_PON:switch(X){case Ga1.cc.G:case Ga1.cc.g:this.state=Ga1.State.OP_PONG;break;default:throw this.fail($.subarray(Z))}break;case Ga1.State.OP_PONG:switch(X){case Ga1.cc.NL:this.dispatcher.push({kind:Ga1.Kind.PONG}),this.drop=0,this.state=Ga1.State.OP_START;break}break;case Ga1.State.OP_PI:switch(X){case Ga1.cc.N:case Ga1.cc.n:this.state=Ga1.State.OP_PIN;break;default:throw this.fail($.subarray(Z))}break;case Ga1.State.OP_PIN:switch(X){case Ga1.cc.G:case Ga1.cc.g:this.state=Ga1.State.OP_PING;break;default:throw this.fail($.subarray(Z))}break;case Ga1.State.OP_PING:switch(X){case Ga1.cc.NL:this.dispatcher.push({kind:Ga1.Kind.PING}),this.drop=0,this.state=Ga1.State.OP_START;break}break;case Ga1.State.OP_I:switch(X){case Ga1.cc.N:case Ga1.cc.n:this.state=Ga1.State.OP_IN;break;default:throw this.fail($.subarray(Z))}break;case Ga1.State.OP_IN:switch(X){case Ga1.cc.F:case Ga1.cc.f:this.state=Ga1.State.OP_INF;break;default:throw this.fail($.subarray(Z))}break;case Ga1.State.OP_INF:switch(X){case Ga1.cc.O:case Ga1.cc.o:this.state=Ga1.State.OP_INFO;break;default:throw this.fail($.subarray(Z))}break;case Ga1.State.OP_INFO:switch(X){case Ga1.cc.SPACE:case Ga1.cc.TAB:this.state=Ga1.State.OP_INFO_SPC;break;default:throw this.fail($.subarray(Z))}break;case Ga1.State.OP_INFO_SPC:switch(X){case Ga1.cc.SPACE:case Ga1.cc.TAB:continue;default:this.state=Ga1.State.INFO_ARG,this.as=Z}break;case Ga1.State.INFO_ARG:switch(X){case Ga1.cc.CR:this.drop=1;break;case Ga1.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:Ga1.Kind.INFO,data:Q}),this.drop=0,this.as=Z+1,this.state=Ga1.State.OP_START;break}default:if(this.argBuf)this.argBuf.writeByte(X)}break;default:throw this.fail($.subarray(Z))}}if((this.state===Ga1.State.MSG_ARG||this.state===Ga1.State.MINUS_ERR_ARG||this.state===Ga1.State.INFO_ARG)&&!this.argBuf)this.argBuf=new Hn0.DenoBuffer($.subarray(this.as,Z-this.drop));if(this.state===Ga1.State.MSG_PAYLOAD&&!this.msgBuf){if(!this.argBuf)this.cloneMsgArg();this.msgBuf=new Hn0.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 Hn0.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 Ga1.cc.SPACE:case Ga1.cc.TAB:case Ga1.cc.CR:case Ga1.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],ib);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],ib);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}: ${Nn0.TD.decode($)}`)}processHeaderMsgArgs($){let Z=[],X=-1;for(let Q=0;Q<$.length;Q++)switch($[Q]){case Ga1.cc.SPACE:case Ga1.cc.TAB:case Ga1.cc.CR:case Ga1.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],ib),this.ma.size=this.protoParseInt(Z[3],ib);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],ib),this.ma.size=this.protoParseInt(Z[4],ib);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]<Qa1||$[Q]>no6)return-1;X=X*10+($[Q]-Qa1)}return Z!==void 0&&X>Z?-1:X}}Ga1.Parser=Ya1;Ga1.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};Ga1.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 gZ0=_((Ka1)=>{Object.defineProperty(Ka1,"__esModule",{value:!0});Ka1.MsgHdrsImpl=void 0;Ka1.canonicalMIMEHeaderKey=Bn0;Ka1.headers=oo6;var Ja1=eY(),fJ=nB(),yZ0=$G();function Bn0($){let N=!0,U=Array($.length);for(let F=0;F<$.length;F++){let B=$.charCodeAt(F);if(B===58||B<33||B>126)throw yZ0.InvalidArgumentError.format("header",`'${$[F]}' is not a valid character in a header name`);if(N&&97<=B&&B<=122)B-=32;else if(!N&&65<=B&&B<=90)B+=32;U[F]=B,N=B==45}return String.fromCharCode(...U)}function oo6($=0,Z=""){if($===0&&Z!=="")throw yZ0.InvalidArgumentError.format("code","is required");else if($>0&&Z==="")throw yZ0.InvalidArgumentError.format("description","is required");return new nb($,Z)}var Fn0="NATS/1.0";class nb{_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 nb,Q=Ja1.TD.decode($).split(`\r
1376
1376
  `),Y=Q[0];if(Y!==Fn0){let G=Y.replace(Fn0,"").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 $=Fn0;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
1377
1377
  ${Z}: ${X[Q]}`;return`${$}\r
@@ -2783,7 +2783,7 @@ Respond with the structured verdict and a short reason.`,wy$;var Ly$=w(()=>{_4()
2783
2783
  ${G.join(`
2784
2784
  `)}`:Y}function dY6($){let Z=new Set;for(let X of $)for(let Q of X.split(`
2785
2785
  `)){let Y=Q.trim();if(/^Co-authored-by:\s/i.test(Y))Z.add(Y)}return[...Z]}var xY6=200,yY6=12,gY6=300,N91=3;var U91=w(()=>{R_();_P0()});function iY6($){if(!$||$.includes(".."))return!1;return mY6.test($)}function Xg$($){let Z=typeof $.__resolveType==="string"?$.__resolveType:null;if(!Z||!iY6(Z))return null;let{__resolveType:X,...Q}=$;return{resolveType:Z,payload:Q}}function Qg$($,Z){return`${$.replace(/\/+$/,"")}/deco/invoke/${Z}`}var mY6;var Yg$=w(()=>{mY6=/^[\w./@-]+$/});function O91($){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 sr($,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 Gg$($,Z,X,Q){if(!Q.connectionId)throw new q_("Push requires a connected GitHub account. Connect mcp-github for this project and restart the sandbox.");let Y=$.organization?.id;if(!Y)throw new q_(fZ);await iO({ctx:$,connectionId:Q.connectionId,organizationId:Y,forceRefresh:!0,onLegacyMintError:(F)=>{let N=F instanceof Error?F.message:fZ;throw new q_(N)}});let{cloneUrl:G,gitUserName:J,gitUserEmail:W}=await pO(Q.connectionId,Q.owner,Q.name,$.db,$.vault).catch((F)=>{let{code:N,message:U}=t8$(F instanceof Error?F.message:String(F));throw N?new q_(U):F}),K=ch($),H=await Z.proxyDaemonRequest(X,"/_sandbox/config",{method:"PUT",headers:new Headers({"content-type":"application/json"}),body:JSON.stringify({git:{repository:{cloneUrl:G},identity:{userName:J,userEmail:W}},...K?{operator:K}:{}})});if(!H.ok){let F=await FB(H,pY6).catch(()=>H.statusText);throw Error(`Failed to refresh sandbox git credentials (${H.status}): ${F}`)}}var pY6=10485760,q_;var B91=w(()=>{R3();PP0();vp();vd0();gx();q_=class q_ extends Error{constructor($){super($);this.name="GitPushAuthError"}}});function tY6($){let Z=$.startsWith("thread:")?$.slice(7):$;if(!Z||Z.length>255||Z.includes("..")||Z.startsWith("/")||Z.endsWith("/")||Z.endsWith(".lock")||!nY6.test(Z))throw Error(`Invalid branch name: ${$}`)}function M_($){return AbortSignal.any([$.req.raw.signal,AbortSignal.timeout(rY6)])}function aY6($,Z,X){let Q=B5($)[Z]?.[X];return!!Q&&Object.keys(AY(Q)).length>0}function k_($){let{runner:Z}=$.get("vmClaim");if(!Z)return $.json({error:"No sandbox runner configured"},503);return Z}async function ph($){let{virtualMcpMetadata:Z,connectionIds:X}=$.get("vmClaim"),Q=$.var.studioContext,Y=sr(Z,X);if(!Y)throw new Q6(404,"AUTH","repo","Project has no GitHub repository");let G=t(Q);return AP0(Q,G.id,Y)}function w91($,Z){if(Z instanceof Q6){let Q=Z.status===404?404:Z.status===409||Z.status===422?409:502;return $.json({error:Z.message},Q,m5)}let X=Z instanceof Error?Z.message:String(Z);return $.json({error:X},502,m5)}async function Kg$($){try{let Z=await ph($),X=await vP0(Z,$.get("vmClaim").branch);return $.json(X,200,m5)}catch(Z){return w91($,Z)}}function er($,Z){let Q=(xP0.get($)??Promise.resolve()).catch(()=>{}).then(Z),Y=Q.catch(()=>{});return xP0.set($,Y),Y.finally(()=>{if(xP0.get($)===Y)xP0.delete($)}),Q}async function dZ($,Z,X){if($.get("vmClaim").fastPreview)return $.json({error:"sandbox not found: Fast Preview projects are sandbox-less"},404,m5);let Q=k_($);if(Q instanceof Response)return Q;let{claimName:Y,userId:G,projectRef:J}=$.get("vmClaim"),W=X?.method??"POST",K=null,H=new Headers;if(X?.jsonBody!==void 0)K=X.jsonBody,H.set("content-type","application/json");else if(X?.forwardJsonBody)K=await $.req.text(),H.set("content-type","application/json");let F=X?.signal,N={method:W,headers:H,body:K,...F?{signal:F}:{}},U=async()=>{let O=await Q.proxyDaemonRequest(Y,Z,N);if(X?.map404to410&&O.status===404){try{await O.body?.cancel()}catch{}if(await Q.adoptLiveClaim?.({userId:G,projectRef:J},Y))O=await Q.proxyDaemonRequest(Y,Z,N);if(O.status===404){try{await O.body?.cancel()}catch{}return new Response(JSON.stringify({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."}),{status:410,headers:{"content-type":"application/json",...m5}})}}let B=await O.text(),D=X?.redactRepoDirUnlessDesktop&&Q.kind!=="user-desktop"?eY6(B):B,L=O.headers.get("content-type")??"application/json";return new Response(D,{status:O.status,headers:{"content-type":L,...m5}})};try{if(F){let O=U();return O.catch(()=>{}),await Promise.race([O,new Promise((D,L)=>{if(F.aborted)return L(F.reason);F.addEventListener("abort",()=>L(F.reason),{once:!0})})])}return await U()}catch(O){let B=O instanceof Error?O.message:String(O);return $.json({error:`Daemon unreachable: ${B}`},502)}}function eY6($){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 yP0($,Z,X,Q="GET",Y){let G=await $.proxyDaemonRequest(Z,X,{method:Q,headers:new Headers,body:null});if(G.status===404&&Y){try{await G.body?.cancel()}catch{}if(await $.adoptLiveClaim?.(Y,Z))G=await $.proxyDaemonRequest(Z,X,{method:Q,headers:new Headers,body:null})}if(G.status===404){try{await G.body?.cancel()}catch{}throw Error("SANDBOX_GONE")}let J=await G.text();if(!G.ok){let W=`Daemon error (${G.status})`;try{W=JSON.parse(J).error??W}catch{}throw Error(W)}return JSON.parse(J)}function $G6($){return Hg$.includes($)}var nY6,Jg$=524288,oY6=65536,rY6=1e4,Wg$=2000,sY6,xP0,m5,Hg$,Fg$=()=>{let $=new U1;$.use("/:virtualMcpId/:branch/*",sY6),$.post("/:virtualMcpId/:branch/write",(X)=>dZ(X,"/_sandbox/write",{forwardJsonBody:!0,signal:M_(X)})),$.post("/:virtualMcpId/:branch/unlink",(X)=>dZ(X,"/_sandbox/unlink",{forwardJsonBody:!0,signal:M_(X)})),$.post("/:virtualMcpId/:branch/mkdir",(X)=>dZ(X,"/_sandbox/mkdir",{forwardJsonBody:!0,signal:M_(X)})),$.post("/:virtualMcpId/:branch/rename",(X)=>dZ(X,"/_sandbox/rename",{forwardJsonBody:!0,signal:M_(X)})),$.post("/:virtualMcpId/:branch/read",(X)=>dZ(X,"/_sandbox/read",{forwardJsonBody:!0,signal:M_(X)})),$.post("/:virtualMcpId/:branch/glob",(X)=>dZ(X,"/_sandbox/glob",{forwardJsonBody:!0,signal:M_(X)})),$.post("/:virtualMcpId/:branch/grep",(X)=>dZ(X,"/_sandbox/grep",{forwardJsonBody:!0,signal:M_(X)})),$.post("/:virtualMcpId/:branch/exec/:script",async(X)=>{let Q=X.req.param("script");if(!Q)return X.json({error:"missing script name"},400);return dZ(X,`/_sandbox/exec/${encodeURIComponent(Q)}`)}),$.post("/:virtualMcpId/:branch/exec/:script/kill",async(X)=>{let Q=X.req.param("script");if(!Q)return X.json({error:"missing script name"},400);return dZ(X,`/_sandbox/exec/${encodeURIComponent(Q)}/kill`)}),$.get("/:virtualMcpId/:branch/config",(X)=>dZ(X,"/_sandbox/config",{method:"GET",map404to410:!0,redactRepoDirUnlessDesktop:!0})),$.put("/:virtualMcpId/:branch/config",(X)=>dZ(X,"/_sandbox/config",{method:"PUT",forwardJsonBody:!0,map404to410:!0})),$.post("/:virtualMcpId/:branch/setup/:step",async(X)=>{let Q=X.req.param("step");if(!Q||!$G6(Q))return X.json({error:`step must be one of: ${Hg$.join(", ")}`},400);if(Q==="start"){let Y=X.get("vmClaim");if(Y.runner){let G=t(X.var.studioContext),J=Xy(Y.virtualMcpMetadata);try{await kO0({ctx:X.var.studioContext,runner:Y.runner,handle:Y.claimName,orgId:G.id,userId:Y.callerUserId,entries:J})}catch(W){let K=W instanceof Error?W.message:String(W);return X.json({error:`Failed to push env to daemon: ${K}`},502)}}}return dZ(X,`/_sandbox/setup/${Q}`,{signal:X.req.raw.signal,map404to410:!0})}),$.get("/:virtualMcpId/:branch/events",(X)=>{let Q=X.get("vmClaim");if(!Q.runner)return PN(X,async(Y)=>{await Y.writeSSE({event:"phase",data:JSON.stringify({kind:"failed",reason:"unknown",message:"No sandbox runner configured on this studio instance."})})});return Hy$(X,{ctx:X.var.studioContext,claimName:Q.claimName,runner:Q.runner,virtualMcpId:Q.virtualMcpId,branch:Q.branch,userId:Q.userId,projectRef:Q.projectRef,virtualMcpMetadata:Q.virtualMcpMetadata})}),$.get("/:virtualMcpId/:branch/git/status",(X)=>{if(X.get("vmClaim").fastPreview)return Kg$(X);return Z(X)});let Z=(X)=>dZ(X,"/_sandbox/git/status",{method:"GET",map404to410:!0,signal:AbortSignal.any([X.req.raw.signal,AbortSignal.timeout(Wg$)])});return $.post("/:virtualMcpId/:branch/git/status",(X)=>{if(X.get("vmClaim").fastPreview)return Kg$(X);return dZ(X,"/_sandbox/git/status",{map404to410:!0,signal:AbortSignal.any([X.req.raw.signal,AbortSignal.timeout(Wg$)])})}),$.post("/:virtualMcpId/:branch/git/diff",async(X)=>{let Q=X.get("vmClaim");if(Q.fastPreview)try{let Y=await X.req.json().catch(()=>({})),G=await ph(X),J=await fP0(G,Q.branch,Y.base);return X.json(J,200,m5)}catch(Y){return w91(X,Y)}return dZ(X,"/_sandbox/git/diff",{forwardJsonBody:!0,map404to410:!0})}),$.post("/:virtualMcpId/:branch/git/publish",async(X)=>{if(X.get("vmClaim").fastPreview)return X.json({ok:!0},200,m5);let Q=k_(X);if(Q instanceof Response)return Q;let{claimName:Y,virtualMcpMetadata:G,connectionIds:J}=X.get("vmClaim"),W=X.var.studioContext;return er(Y,async()=>{try{await t51(W,Q,Y);let K=sr(G,J);if(K)await Gg$(W,Q,Y,K)}catch(K){if(K instanceof q_)return X.json({error:K.message},403,m5);let H=K instanceof Error?K.message:String(K);return X.json({error:H},502,m5)}return dZ(X,"/_sandbox/git/publish",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/discard",async(X)=>{let Q=X.get("vmClaim");if(Q.fastPreview)return er(Q.claimName,async()=>{let Y=await X.req.json().catch(()=>({})),G=Array.isArray(Y.filepaths)?Y.filepaths.filter((J)=>typeof J==="string"):[];if(G.length===0)return X.json({error:"filepaths is required"},400,m5);try{let J=await ph(X);return await Zg$(J,Q.branch,G),X.json({ok:!0},200,m5)}catch(J){let W=J instanceof Q6&&J.status===409?409:502,K=J instanceof Error?J.message:String(J);return X.json({error:K},W,m5)}});return er(Q.claimName,()=>dZ(X,"/_sandbox/git/discard",{forwardJsonBody:!0,map404to410:!0}))}),$.post("/:virtualMcpId/:branch/git/rebase",async(X)=>{let Q=X.get("vmClaim");if(Q.fastPreview)return er(Q.claimName,async()=>{try{let W=await X.req.json().catch(()=>({})),K=await ph(X),H=W.base??await K.getDefaultBranch();return await bP0(K,Q.branch,H),X.json({ok:!0},200,m5)}catch(W){return w91(X,W)}});let Y=k_(X);if(Y instanceof Response)return Y;let{claimName:G}=X.get("vmClaim"),J=X.var.studioContext;return er(G,async()=>{try{await t51(J,Y,G)}catch(W){let K=W instanceof Error?W.message:String(W);return X.json({error:K},502,m5)}return dZ(X,"/_sandbox/git/rebase",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/suggest-commit",q9({maxSize:Jg$,onError:(X)=>X.json({error:"Payload too large"},413,m5)}),async(X)=>{let Q=X.get("vmClaim"),Y=null;if(!Q.fastPreview){let H=k_(X);if(H instanceof Response)return H;Y=H}let{claimName:G,userId:J,projectRef:W}=Q,K=X.var.studioContext;try{let H=await X.req.json().catch(()=>({})),F=H.status,N=H.diff,U=N!=null&&typeof N.diffs==="object"&&N.diffs!==null,[O,B]=a51(F)&&U?[F,N]:Y?await Promise.all([yP0(Y,G,"/_sandbox/git/status","GET",{userId:J,projectRef:W}),yP0(Y,G,"/_sandbox/git/diff","GET",{userId:J,projectRef:W})]):await(async()=>{let L=await ph(X);return Promise.all([vP0(L,Q.branch),fP0(L,Q.branch)])})(),D=await By$(K,O,B);return X.json(D,200,m5)}catch(H){let F=H instanceof Error?H.message:String(H);if(F==="SANDBOX_GONE")return X.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,m5);return X.json({error:F},502,m5)}}),$.post("/:virtualMcpId/:branch/git/judge-review",q9({maxSize:Jg$,onError:(X)=>X.json({error:"Payload too large"},413,m5)}),async(X)=>{let Q=X.get("vmClaim"),Y=null;if(!Q.fastPreview){let H=k_(X);if(H instanceof Response)return H;Y=H}let{claimName:G,userId:J,projectRef:W}=Q,K=X.var.studioContext;try{let H=await X.req.json().catch(()=>({})),F=H.status,N=H.diff,U=N!=null&&typeof N.diffs==="object"&&N.diffs!==null,[O,B]=a51(F)&&U?[F,N]:Y?await Promise.all([yP0(Y,G,"/_sandbox/git/status","GET",{userId:J,projectRef:W}),yP0(Y,G,"/_sandbox/git/diff","GET",{userId:J,projectRef:W})]):await(async()=>{let L=await ph(X);return Promise.all([vP0(L,Q.branch),fP0(L,Q.branch)])})(),D=await Dy$(K,O,B,typeof H.language==="string"?H.language:void 0);return X.json(D,200,m5)}catch(H){let F=H instanceof Error?H.message:String(H);if(F==="SANDBOX_GONE")return X.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,m5);return X.json({error:F},502,m5)}}),$.get("/:virtualMcpId/:branch/preview-fetch",async(X)=>{let Q=k_(X);if(Q instanceof Response)return Q;let{claimName:Y}=X.get("vmClaim"),G=X.req.query("path");if(!G||!G.startsWith("/")||G.startsWith("//")||G.includes("..")||G.includes("\\"))return X.json({error:"Path not allowed"},403);let J;try{J=await Q.getPreviewUrl(Y)}catch{return X.json({error:"Preview not available"},502)}if(!J)return X.json({error:"Preview not available"},502);let W=J.replace(/\/+$/,""),K=O91(`${W}${G}`),H;try{H=await fetch(K?.url??`${W}${G}`,{...K?{headers:{host:K.hostHeader}}:{}})}catch{return X.json({error:"Preview unreachable"},502)}let F;try{F=await H.text()}catch{return X.json({error:"Preview unreachable"},502)}return new Response(F,{status:H.status,headers:{"content-type":H.headers.get("content-type")??"application/json"}})}),$.post("/:virtualMcpId/:branch/preview-invoke",q9({maxSize:oY6,onError:(X)=>X.json({error:"Payload too large"},413)}),async(X)=>{let Q=k_(X);if(Q instanceof Response)return Q;let{claimName:Y}=X.get("vmClaim"),G;try{G=await Q.getPreviewUrl(Y)}catch{return X.json({error:"Preview not available"},502)}if(!G)return X.json({error:"Preview not available"},502);let J;try{J=await X.req.json()}catch{return X.json({error:"Invalid JSON body"},400)}if(!J||typeof J!=="object"||Array.isArray(J))return X.json({error:"Invalid JSON body"},400);let W=Xg$(J);if(!W)return X.json({error:"Invalid or missing __resolveType"},400);let K=Qg$(G,W.resolveType),H=O91(K),F;try{F=await fetch(H?.url??K,{method:"POST",headers:{"content-type":"application/json",...H?{host:H.hostHeader}:{}},body:JSON.stringify(W.payload),signal:AbortSignal.timeout(30000)})}catch{return X.json({error:"Preview unreachable"},502)}let N;try{N=await F.text()}catch{return X.json({error:"Preview unreachable"},502)}return new Response(N,{status:F.status,headers:{"content-type":F.headers.get("content-type")??"application/json"}})}),$};var Ng$=w(()=>{P8();UN();uh();n51();PF();Wy$();S3();dX();U8();kB0();JB();Ky$();Fy$();Zp0();Cp();$91();Ly$();Q91();R_();U91();Yg$();B91();nY6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;sY6=zP0(async($,Z)=>{let X=$.var.studioContext;try{r(X)}catch{return $.json({error:"Unauthorized"},401)}let Q=J1(X);if(!Q)return $.json({error:"Unauthorized"},401);let Y;try{Y=t(X)}catch{return $.json({error:"Organization scope required"},403)}let G=$.req.param("virtualMcpId"),J=$.req.param("branch");if(!G||!J)return $.json({error:"virtualMcpId and branch are required"},400);try{tY6(J)}catch(O){let B=O instanceof Error?O.message:String(O);return $.json({error:B},400)}let W=await X.storage.virtualMcps.findById(G);if(!W||W.organization_id!==Y.id)return $.json({error:"Virtual MCP not found"},404);let K=ai({orgId:Y.id,virtualMcpId:G,branch:J}),H=await CF(X,J,Q),F=Jy$({userId:H,projectRef:K}),N=W.metadata??null;if(FW$(N).fastPreviewCapability&&!aY6(N,H,J))return $.set("vmClaim",{claimName:F,callerUserId:Q,runner:null,virtualMcpId:G,branch:J,userId:H,projectRef:K,virtualMcpMetadata:N,connectionIds:W.connections?.map((O)=>O.connection_id)??[],fastPreview:!0}),Z();let U;try{U=(await oX(X,{userId:H,branch:J,virtualMcpMetadata:N})).provider}catch{U=null}if(!U)return $.json({error:"No sandbox runner found"},404);return $.set("vmClaim",{claimName:F,callerUserId:Q,runner:U,virtualMcpId:G,branch:J,userId:H,projectRef:K,virtualMcpMetadata:N,connectionIds:W.connections?.map((O)=>O.connection_id)??[]}),Z()});xP0=new Map;m5={"Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache"};Hg$=["clone","install","start"]});function Ug$($,Z,X){let Q=D91.get($);if(!Q)Q={pending:null,running:!1},D91.set($,Q);if(!Q.pending)Q.pending={set:new Map,del:new Set,deps:Z,resolvers:[],rejecters:[]};let Y=Q.pending;Y.deps=Z;for(let[J,W]of Object.entries(X.set??{}))Y.set.set(J,W),Y.del.delete(J);for(let J of X.delete??[])Y.del.add(J),Y.set.delete(J);let G=new Promise((J,W)=>{Y.resolvers.push(J),Y.rejecters.push(W)});if(!Q.running)XG6($,Q);return G}async function XG6($,Z){Z.running=!0;try{while(Z.pending){let X=Z.pending;Z.pending=null;try{let Q=await QG6(X);for(let Y of X.resolvers)Y(Q)}catch(Q){for(let Y of X.rejecters)Y(Q)}}}finally{if(Z.running=!1,!Z.pending)D91.delete($)}}async function QG6($){let{client:Z,branch:X,packagePath:Q}=$.deps;for(let Y=0;;Y++){let G=await ar(Z,X),J=await Z.getCommitTreeSha(G),W=await Z.getTreeRecursive(J),K=H91(W,Q),H=[],F=new Map(K.map((B)=>[B.path,{stem:B.stem,sha:B.sha}]));for(let[B,D]of $.set){let L=F91(K,B),E=`${JSON.stringify(D,null,2)}
2786
- `,j=await Z.createBlob(E);await ey$(Z.owner,Z.repo,j,E);let z=L[0]??`${CP0(Q)}/${Y91(B)}.json`;H.push({path:z,mode:"100644",type:"blob",sha:j});let A=z.slice(z.lastIndexOf("/")+1,-5);F.set(z,{stem:A,sha:j,content:E});for(let P of L.slice(1))H.push({path:P,mode:"100644",type:"blob",sha:null}),F.delete(P)}for(let B of $.del)for(let D of F91(K,B))H.push({path:D,mode:"100644",type:"blob",sha:null}),F.delete(D);if(H.length===0)return G;let N=Q?`${Q}/.deco/blocks.gen.json`:".deco/blocks.gen.json";if(W.some((B)=>B.type==="blob"&&B.path===N)){let B=await Promise.all([...F.values()].map(async(j)=>({stem:j.stem,content:j.content??await Z.getBlobText(j.sha)}))),{decofile:D,skipped:L}=nr(B);if(L.length>0)console.warn("decofile gen: dropped blocks that were not valid JSON",{repo:`${Z.owner}/${Z.repo}`,branch:X,packagePath:Q,blocks:L.map((j)=>j.key)});let E=await Z.createBlob(D);H.push({path:N,mode:"100644",type:"blob",sha:E})}let U=await Z.createTree(J,H),O=await Z.createCommit({message:YG6($),treeSha:U,parentShas:[G]});try{return await Z.updateRef(X,O),O}catch(B){if(!(B instanceof Q6&&B.status===422)||Y>=ZG6-1)throw B;await q$(pZ(2000,200,Y,2,0.5))}}}function YG6($){let Z=(Y)=>{let G=Y.slice(0,3).join(", ");return Y.length>3?`${G} (+${Y.length-3} more)`:G},X=[];if($.set.size>0)X.push(`update ${Z([...$.set.keys()])}`);if($.del.size>0)X.push(`delete ${Z([...$.del])}`);let Q=`chore(decofile): ${X.join("; ")}`;return Rd0(Q,$.deps.coAuthor)}var ZG6=3,D91;var Og$=w(()=>{zO0();RP0();u4();R_();_P0();D91=new Map});import{createHmac as Bg$,randomBytes as GG6,timingSafeEqual as JG6}from"crypto";function wg$(){if(gP0)return gP0;let $;try{let Z=b0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return gP0=$?Buffer.from($):GG6(32),gP0}function L91($){let Z=$.nowMs??Date.now(),X={o:$.organizationId,m:$.virtualMcpId,b:$.branch,e:Math.floor((Z+WG6)/1000)},Q=Buffer.from(JSON.stringify(X)).toString("base64url"),Y=Bg$("sha256",wg$()).update(Q).digest("base64url");return`${Q}.${Y}`}function Dg$($,Z){let X=$.indexOf(".");if(X<0)return!1;let Q=$.slice(0,X),Y=Buffer.from($.slice(X+1)),G=Buffer.from(Bg$("sha256",wg$()).update(Q).digest("base64url"));if(Y.length!==G.length||!JG6(Y,G))return!1;let J;try{J=JSON.parse(Buffer.from(Q,"base64url").toString())}catch{return!1}let W=Math.floor((Z.nowMs??Date.now())/1000);return J.o===Z.organizationId&&J.m===Z.virtualMcpId&&J.b===Z.branch&&typeof J.e==="number"&&J.e>=W}var WG6=21600000,gP0=null;var Lg$=w(()=>{T$()});import{z as nh}from"zod";function HG6($){return $.length>0&&$.length<=255&&!$.includes("..")&&!$.endsWith("/")&&!$.endsWith(".lock")&&KG6.test($)}function jg$($){return $.req.header("x-forwarded-host")??new URL($.req.url).host}async function hP0($){let Z=$.get("decofileScope");return AP0($.var.studioContext,Z.organizationId,Z.githubRepo)}function uP0($,Z){if(Z instanceof Q6){let Q=Z.status===404?404:Z.status===409?409:Z.status===422?409:502;return $.json({error:Z.message},Q)}let X=Z instanceof Error?Z.message:String(Z);return $.json({error:X},500)}function zg$(){let $=new U1;return $.use("/:virtualMcpId/:branch",Eg$),$.use("/:virtualMcpId/:branch/*",Eg$),$.get("/:virtualMcpId/:branch",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await hP0(Z),Y=await $g$(Q,X.branch,X.packagePath,{createBranchIfMissing:!!X.userId}),G={ETag:`"${Y.sha}"`,"Cache-Control":"no-store","Access-Control-Allow-Origin":"*"};if(Z.req.header("if-none-match")===`"${Y.sha}"`)return Z.body(null,304,G);if(!X.userId)return Z.body(Y.decofile,200,{...G,"content-type":"application/json"});let J=L91({organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,branch:X.branch});return Z.body(`{"version":${JSON.stringify(Y.sha)},"token":${JSON.stringify(J)},"apiHost":${JSON.stringify(jg$(Z))},"decofile":${Y.decofile}}`,200,{...G,"content-type":"application/json"})}catch(Q){return uP0(Z,Q)}}),$.patch("/:virtualMcpId/:branch",async(Z)=>{let X=Z.get("decofileScope"),Q=Z.var.studioContext,Y=FG6.safeParse(await Z.req.json().catch(()=>null));if(!Y.success)return Z.json({error:"Invalid body",details:Y.error.issues},400);let G=Y.data;for(let J of[...Object.keys(G.set??{}),...G.delete??[]])try{TP0(J)}catch(W){let K=W instanceof Error?W.message:String(W);return Z.json({error:K},400)}for(let[J,W]of Object.entries(G.set??{}))if(typeof W!=="object"||W===null||Array.isArray(W))return Z.json({error:`Block "${J}" must be a JSON object`},400);try{let J=await hP0(Z),W=await Ug$(`${X.organizationId}/${X.virtualMcpId}/${X.branch}`,{client:J,branch:X.branch,packagePath:X.packagePath,coAuthor:ch(Q)},G),K=L91({organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,branch:X.branch});return Z.json({version:W,token:K,apiHost:jg$(Z)})}catch(J){return uP0(Z,J)}}),$.post("/:virtualMcpId/:branch/publish",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await hP0(Z),Y=await Q.getDefaultBranch();if(Y===X.branch)return Z.json({error:"Branch is already the default branch"},400);let G=`chore(decofile): publish ${X.branch}`;try{let J;try{J=await Q.mergeBranch(Y,X.branch,G)}catch(W){if(!(W instanceof Q6&&W.status===409))throw W;await bP0(Q,X.branch,Y),J=await Q.mergeBranch(Y,X.branch,G)}return J?Z.json({result:"merged",sha:J}):Z.json({result:"up-to-date"})}catch(J){if(J instanceof Q6&&J.status===409)return Z.json({error:"merge-conflict"},409);if(J instanceof Q6&&J.status===405){let K=await Q.findOpenPullRequest(Y,X.branch)??await Q.createPullRequest({base:Y,head:X.branch,title:`Publish ${X.branch}`});return Z.json({result:"pull-request",number:K.number,url:K.html_url})}throw J}}catch(Q){return uP0(Z,Q)}}),$.get("/:virtualMcpId/:branch/status",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await hP0(Z),Y=await Q.getDefaultBranch();if(Y===X.branch)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0});try{let{aheadBy:G,behindBy:J}=await Q.compare(Y,X.branch);return Z.json({baseBranch:Y,aheadBy:G,behindBy:J})}catch(G){if(G instanceof Q6&&G.status===404)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0});throw G}}catch(Q){return uP0(Z,Q)}}),$}var KG6,FG6,Eg$;var Pg$=w(()=>{RP0();P8();n51();PP0();B91();Q91();Og$();Lg$();U91();R_();_P0();KG6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;FG6=nh.object({set:nh.record(nh.string(),nh.unknown()).optional(),delete:nh.array(nh.string()).optional()}).refine(($)=>Object.keys($.set??{}).length>0||($.delete?.length??0)>0,{message:"Patch must set or delete at least one block"}),Eg$=zP0(async($,Z)=>{let X=$.var.studioContext,Q=X.organization;if(!Q)return $.json({error:"Organization scope required"},500);let Y=$.req.param("virtualMcpId"),G=$.req.param("branch");if(!Y||!G)return $.json({error:"virtualMcpId and branch are required"},400);if(!HG6(G))return $.json({error:`Invalid branch name: ${G}`},400);let J=X.auth?.user?.id??null;if(!J){let O=$.req.query("token");if(!($.req.method==="GET"&&!$.req.path.match(/\/(publish|status)$/)))return $.json({error:"Unauthorized"},401);if(!O||!Dg$(O,{organizationId:Q.id,virtualMcpId:Y,branch:G}))return $.json({error:"Unauthorized"},401)}let W=await X.storage.virtualMcps.findById(Y);if(!W||W.organization_id!==Q.id)return $.json({error:"Virtual MCP not found"},404);let K=W.metadata??null;if(!MB0(K)||K?.fastPreview!==!0)return $.json({error:"Fast Preview is not enabled for this project"},404);let F=W.connections?.map((O)=>O.connection_id)??[],N=sr(K,F);if(!N)return $.json({error:"Project has no GitHub repository"},404);let U=K?.runtime;return $.set("decofileScope",{organizationId:Q.id,virtualMcpId:Y,branch:G,packagePath:U?.path?.replace(/^\/+|\/+$/g,"")||null,githubRepo:N,userId:J}),Z()})});var Ag$=($)=>{let Z=new U1;if(Z.use("*",D_),Z.route("/",yz0()),Z.route("/",nv$()),Z.route("/",nx$()),Z.route("/",mx$()),Z.route("/",LP0()),Z.route("/tools",$y$()),Z.route("/",ax$()),Z.route("/",qx$({kvStorage:$.kvStorage})),Z.route("/",Rx$()),Z.route("/fs",yx$({getConnection:$.getNatsConnection})),Z.route("/sandbox",Fg$()),Z.route("/decofile",zg$()),Z.route("/",cx$()),Z.route("/deco-sites",hz0()),Z.route("/sso",Cz0()),Z.route("/",EP0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",hv$()),$.mountDevAssets)Z.route("/dev-assets",uz0({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("/",PC$()),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",hx$()),Z.route("/mcp",iw0()),Z.route("/mcp/self",DP0()),Z.route("/mcp",tw0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var Tg$=w(()=>{P8();w61();uv$();j61();cz0();jr();O61();Ix$();Mx$();gx$();Vn();G61();ow0();u51();ux$();lx$();ix$();tx$();sx$();l51();Zy$();d51();pw0();Ng$();Pg$()});function NG6($){return $.filter((Z)=>Z.vendors?.alias).map((Z)=>({name:Z.name,title:Z.title,description:Z.description,logo:Z.logo,category:Z.category,vendor:{alias:Z.vendors.alias,url:Z.vendors.url}}))}var UG6=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},Rg$=()=>{let $=new U1;return $.use("*",UG6),$.get("/",async(Z)=>{let X=b0(),Q=X.decoSupabaseUrl,Y=X.decoSupabaseServiceKey;if(!Q||!Y)return Z.json({apps:[]});try{let G=await lZ(Q,Y,"apps?select=name,title,description,logo,category,vendors(alias,url)");return Z.json({apps:NG6(G)})}catch(G){return console.error("[deco-apps] GET error:",G),Z.json({error:"Failed to fetch apps"},502)}}),$};var Ig$=w(()=>{P8();T$();hj0()});import{z as M1}from"zod";function ZH($,Z="invalid_request_error",X=null,Q=null){return{error:{message:$,type:Z,param:X,code:Q}}}function AG6($){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 TG6($,Z,X){try{return JSON.parse($)}catch{throw new kg$(`Invalid JSON in tool call arguments for function '${X}' (tool_call_id: ${Z}): ${$}`)}}function RG6($){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:TG6(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 IG6($){let Z=$.map((X)=>{let Q=X.function.parameters?yY(X.function.parameters):yY({type:"object",properties:{}});return[X.function.name,b$({description:X.function.description,inputSchema:Q})]});return Object.fromEntries(Z)}function qG6($){if(!$)return;return{openai:{response_format:$}}}function MG6(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function qg$($,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 Mg$($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var OG6=256,BG6,wG6,DG6,LG6,EG6,jG6,zG6,PG6,kg$,Vg$,Sg$;var Cg$=w(()=>{_4();P8();uh();$N();BG6=M1.object({type:M1.literal("function"),function:M1.object({name:M1.string(),description:M1.string().optional(),parameters:M1.record(M1.string(),M1.unknown()).optional()})}),wG6=M1.object({id:M1.string(),type:M1.literal("function"),function:M1.object({name:M1.string(),arguments:M1.string()})}),DG6=M1.discriminatedUnion("role",[M1.object({role:M1.literal("system"),content:M1.string(),name:M1.string().optional()}),M1.object({role:M1.literal("user"),content:M1.union([M1.string(),M1.array(M1.union([M1.object({type:M1.literal("text"),text:M1.string()}),M1.object({type:M1.literal("image_url"),image_url:M1.object({url:M1.string(),detail:M1.string().optional()})})]))]),name:M1.string().optional()}),M1.object({role:M1.literal("assistant"),content:M1.string().nullable().optional(),name:M1.string().optional(),tool_calls:M1.array(wG6).optional()}),M1.object({role:M1.literal("tool"),content:M1.string(),tool_call_id:M1.string()})]),LG6=M1.object({type:M1.literal("text")}),EG6=M1.object({type:M1.literal("json_object")}),jG6=M1.object({type:M1.literal("json_schema"),json_schema:M1.object({name:M1.string(),description:M1.string().optional(),schema:M1.record(M1.string(),M1.unknown()),strict:M1.boolean().optional()})}),zG6=M1.union([LG6,EG6,jG6]),PG6=M1.object({model:M1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:M1.array(DG6),stream:M1.boolean().optional().default(!1),temperature:M1.number().min(0).max(2).optional(),max_tokens:M1.number().positive().optional(),top_p:M1.number().min(0).max(1).optional(),frequency_penalty:M1.number().min(-2).max(2).optional(),presence_penalty:M1.number().min(-2).max(2).optional(),stop:M1.union([M1.string(),M1.array(M1.string())]).optional(),tools:M1.array(BG6).optional(),tool_choice:M1.union([M1.literal("auto"),M1.literal("none"),M1.literal("required"),M1.object({type:M1.literal("function"),function:M1.object({name:M1.string()})})]).optional(),response_format:zG6.optional(),user:M1.string().optional()});kg$=class kg$ extends Error{constructor($){super($);this.name="MessageConversionError"}};Vg$=new U1;Vg$.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),X=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(ZH("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(ZH("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(ZH("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Q=await $.req.json(),Y=PG6.safeParse(Q);if(!Y.success){let L=Y.error.issues[0]??{message:"Invalid request",path:[]};return $.json(ZH(`Invalid request: ${L.message}`,"invalid_request_error",L.path.length>0?L.path.join("."):null),400)}let G=Y.data,J=AG6(G.model);if(!J)return $.json(ZH("Invalid model format. Expected 'model_id' or 'credential_id:model_id' (e.g., 'claude-sonnet-4-6' or 'key_abc123:claude-sonnet-4-6')","invalid_request_error","model"),400);let{credentialId:W}=J,{modelId:K}=J;if(!W){let E=(await Z.storage.aiProviderKeys.list({organizationId:Z.organization.id})).find((j)=>kD(j.providerId));if(!E)return $.json(ZH("No AI provider credentials configured for this organization. Add a credential in settings or specify one explicitly via 'credential_id:model_id'.","invalid_request_error","model"),400);W=E.id}let H;try{H=await Z.aiProviders.activate(W,Z.organization.id)}catch{return $.json(ZH(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(K),N=RG6(G.messages),U=G.tools?IG6(G.tools):void 0,O=qG6(G.response_format),B=MG6(),D=Math.floor(Date.now()/1000);if(G.stream)return PN($,async(L)=>{let E=qg$(F,N,U,G,O,$.req.raw.signal);try{let j=dO(E),z=!1,A=0,P="",M=async()=>{if(P.length===0)return;let q=P;P="",await L.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{content:q},finish_reason:null}]})})};for await(let q of j.fullStream){if(!z&&(q.type==="text-delta"||q.type==="tool-call"))await L.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),z=!0;if(q.type==="text-delta"){if(P+=q.text,P.length>=OG6)await M()}else if(q.type==="tool-call"){await M();let k=A++;await L.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{tool_calls:[{index:k,id:q.toolCallId,type:"function",function:{name:q.toolName,arguments:JSON.stringify(q.input)}}]},finish_reason:null}]})})}else if(q.type==="finish")await M(),await L.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{},finish_reason:Mg$(q.finishReason)}],usage:q.totalUsage?{prompt_tokens:q.totalUsage.inputTokens??0,completion_tokens:q.totalUsage.outputTokens??0,total_tokens:q.totalUsage.totalTokens??0}:void 0})})}await M(),await L.writeSSE({data:"[DONE]"})}catch(j){let z=j;console.error("[openai-compat:stream] Error:",z.message),await L.writeSSE({data:JSON.stringify({error:{message:z.message,type:"server_error"}})})}});else{let L=qg$(F,N,U,G,O,$.req.raw.signal),E=await cO(L),j={role:"assistant",content:E.text||null};if(E.toolCalls&&E.toolCalls.length>0)j.tool_calls=E.toolCalls.map((z)=>({id:z.toolCallId,type:"function",function:{name:z.toolName,arguments:JSON.stringify("input"in z?z.input:{})}})),j.content=null;return $.json({id:B,object:"chat.completion",created:D,model:G.model,choices:[{index:0,message:j,finish_reason:Mg$(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(ZH("Request aborted","invalid_request_error"),400);if(Y.name==="MessageConversionError")return $.json(ZH(Y.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",Y.message,Y.stack),$.json(ZH(Y.message,"server_error"),500)}});Sg$=Vg$});var vg$;var _g$=w(()=>{vg$={name:"decocms",version:"4.239.2",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@nats-io/jwt":"0.0.10-5","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});function SG6(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??VG6}}var fg$,VG6="https://ph.studio.decocms.com",bg$;var xg$=w(()=>{P8();Yh0();XC();_9();T$();$61();_g$();fg$=new U1;fg$.get("/",($)=>{let Z={version:vg$.version,theme:Od1(),...EL().logo&&{logo:EL().logo},...AK()&&{internalUrl:dV1()},...b0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!b0().firecrawlApiKey,auth:Yv$(),posthog:SG6(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:!AK()&&b0().sandboxProviderKind==="agent-sandbox"}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});bg$=fg$});function th($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function E91($){return(th($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((X)=>X.charAt(0).toUpperCase()+X.slice(1)).join(" ")}function gg$($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(th($))}&sz=${Z}`}function yg$($,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 hg$($){let{brand:Z,domain:X,score:Q,verdict:Y}=$,G=typeof Q==="number"?`${Z} commerce report \u2014 ${Math.round(Q)}/100 \xB7 decocms`:`${Z} commerce report \xB7 decocms`,J=`See the full ${Z} scorecard \u2014 SEO, performance, conversion & AEO signals scored by decocms.`,W=Y?.trim()?yg$(`${Y.trim().replace(/\s+/g," ")} \u2014 ${J}`,200):yg$(`How does ${X} really perform? ${J}`,200);return{title:G,description:W}}import{z as l0}from"zod";var V_,CG6,_G6,vG6,fG6,ug$;var cg$=w(()=>{V_=l0.enum(["good","bad","neutral"]),CG6=l0.preprocess(($)=>{if(Array.isArray($))return{kind:"text",value:$.find((X)=>X!==null&&typeof X!=="object")??""};return $!==null&&typeof $==="object"?$:{kind:"text",value:$}},l0.object({kind:l0.enum(["text","number","sparkline","badge","score"]).catch("text"),value:l0.coerce.string().optional(),tone:V_.optional(),muted:l0.boolean().optional(),delta:l0.coerce.string().optional(),deltaDir:l0.enum(["up","down","neutral"]).optional(),points:l0.array(l0.coerce.number()).optional(),label:l0.coerce.string().optional()}).transform(($)=>{if($.kind==="badge"&&$.label==null)$.label=$.value??"";if($.kind==="score"){let Z=Number($.value);if(Number.isNaN(Z))return{...$,kind:"text"}}return $})),_G6=l0.preprocess(($)=>{let Z=$;if(Z&&typeof Z==="object"&&!Array.isArray(Z)&&Array.isArray(Z.cells))Z=Z.cells;if(Array.isArray(Z)&&Z.length===1&&Array.isArray(Z[0]))Z=Z[0];if(Array.isArray(Z))return Z;if(Z&&typeof Z==="object")return Object.values(Z);return Z},l0.array(CG6)),vG6={key:l0.coerce.string(),title:l0.coerce.string(),eyebrow:l0.coerce.string().optional(),headline:l0.coerce.string(),annotation:l0.coerce.string().optional(),methodology:l0.coerce.string().optional(),sources:l0.array(l0.object({name:l0.coerce.string(),logoUrl:l0.coerce.string()})).optional()},fG6=l0.discriminatedUnion("template",[l0.object({template:l0.literal("cover"),score:l0.object({value:l0.coerce.number(),max:l0.coerce.number().optional(),grade:l0.coerce.string().optional(),label:l0.coerce.string().optional()}).optional(),brandImage:l0.coerce.string().optional(),screenshot:l0.coerce.string().optional(),mobileScreenshot:l0.coerce.string().optional()}),l0.object({template:l0.literal("cta"),ctaUrl:l0.coerce.string().optional(),ctaLabel:l0.coerce.string().optional(),bullets:l0.array(l0.coerce.string()).optional()}),l0.object({template:l0.literal("series"),points:l0.array(l0.coerce.number()).min(2),xLabels:l0.array(l0.coerce.string()).min(1),unit:l0.coerce.string().optional(),callout:l0.object({index:l0.coerce.number(),value:l0.coerce.string(),tone:V_.optional()})}),l0.object({template:l0.literal("threshold"),value:l0.coerce.string().default(""),metricLabel:l0.coerce.string().optional(),ratio:l0.coerce.number(),thresholdRatio:l0.coerce.number().optional(),thresholdLabel:l0.coerce.string().default(""),tone:V_.optional()}),l0.object({template:l0.literal("stats"),stats:l0.array(l0.object({value:l0.coerce.string(),label:l0.coerce.string(),tone:V_.optional()})).min(1)}),l0.object({template:l0.literal("bars"),items:l0.array(l0.object({value:l0.coerce.string(),label:l0.coerce.string(),ratio:l0.coerce.number(),tone:V_.optional()})).min(1)}),l0.object({template:l0.literal("gauges"),gauges:l0.array(l0.object({label:l0.coerce.string(),value:l0.coerce.string(),status:l0.enum(["good","warn","bad"]).catch("warn"),caption:l0.coerce.string().optional(),ratio:l0.coerce.number().optional()})).min(1)}),l0.object({template:l0.literal("checklist"),checks:l0.array(l0.object({label:l0.coerce.string(),status:l0.enum(["pass","fail","warn"]).catch("fail"),value:l0.coerce.string().optional()})).min(1)}),l0.object({template:l0.literal("table"),columns:l0.array(l0.object({label:l0.coerce.string(),align:l0.enum(["left","right"]).optional()})).min(1),rows:l0.array(_G6).min(1),highlightRow:l0.coerce.number().optional()}),l0.object({template:l0.literal("products"),products:l0.array(l0.object({name:l0.coerce.string(),price:l0.coerce.string().optional(),image:l0.coerce.string().optional(),url:l0.coerce.string().optional()})).min(1)}),l0.object({template:l0.literal("list"),entries:l0.array(l0.object({label:l0.coerce.string(),severity:l0.enum(["error","warning","notice"]).catch("notice")})).min(1),moreCount:l0.coerce.number().optional()}),l0.object({template:l0.literal("keywords"),volumeLabel:l0.coerce.string().optional(),keywords:l0.array(l0.object({term:l0.coerce.string(),volume:l0.coerce.string(),position:l0.coerce.number().catch(0)})).min(1)}),l0.object({template:l0.literal("competitor"),metricLabel:l0.coerce.string().optional(),competitors:l0.array(l0.object({name:l0.coerce.string(),value:l0.coerce.string(),tone:V_.optional(),isYou:l0.boolean().optional()})).min(1)}),l0.object({template:l0.literal("scorecard"),rivalLabel:l0.coerce.string().optional(),dimensions:l0.array(l0.object({label:l0.coerce.string(),you:l0.coerce.string(),rival:l0.coerce.string().optional(),rivalName:l0.coerce.string().optional(),tone:V_.optional()})).min(1)})]),ug$=l0.object({...vG6,template:fG6})});function cP0($){let Z=[],X=[...$.sections].sort((Y,G)=>Y.position-G.position).map((Y)=>{let G=ug$.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 j91=w(()=>{cg$()});import{join as lg$}from"path";async function xG6($){try{let Z=await fetch(`${tW({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(bG6)});if(!Z.ok)return null;let X=await Z.json(),{deck:Q}=cP0(X);if(!Q.slides.length)return null;let Y=Q.slides.find((W)=>W.template.template==="cover"),G=Y?.template,J=G&&G.template==="cover"?G:void 0;return{brand:Q.meta.brand?.trim()||E91($),score:Q.meta.scores?.cover??J?.score?.value,verdict:Y?.annotation?.trim()||Y?.headline?.trim()||void 0}}catch{return null}}function GG($){return $.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;")}function yG6($,Z){let X=th($),Q=Z?.brand?.trim()||E91(X),Y=gg$(X,128),J=`${(b0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(X)}`,{title:W,description:K}=hg$({brand:Q,domain:X,score:Z?.score,verdict:Z?.verdict}),H=`${J}/og.png`,F=`${Q} commerce report by decocms`;return[`<title>${GG(W)}</title>`,`<meta name="description" content="${GG(K)}" />`,'<meta name="robots" content="noindex, follow" />','<meta property="og:type" content="website" />','<meta property="og:site_name" content="decocms" />',`<meta property="og:title" content="${GG(W)}" />`,`<meta property="og:description" content="${GG(K)}" />`,`<meta property="og:url" content="${GG(J)}" />`,`<meta property="og:image" content="${GG(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${GG(F)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${GG(W)}" />`,`<meta name="twitter:description" content="${GG(K)}" />`,`<meta name="twitter:image" content="${GG(H)}" />`,`<meta name="twitter:image:alt" content="${GG(F)}" />`,`<link rel="canonical" href="${GG(J)}" />`,`<link rel="icon" href="${GG(Y)}" sizes="any" />`].join(`
2786
+ `,j=await Z.createBlob(E);await ey$(Z.owner,Z.repo,j,E);let z=L[0]??`${CP0(Q)}/${Y91(B)}.json`;H.push({path:z,mode:"100644",type:"blob",sha:j});let A=z.slice(z.lastIndexOf("/")+1,-5);F.set(z,{stem:A,sha:j,content:E});for(let P of L.slice(1))H.push({path:P,mode:"100644",type:"blob",sha:null}),F.delete(P)}for(let B of $.del)for(let D of F91(K,B))H.push({path:D,mode:"100644",type:"blob",sha:null}),F.delete(D);if(H.length===0)return G;let N=Q?`${Q}/.deco/blocks.gen.json`:".deco/blocks.gen.json";if(W.some((B)=>B.type==="blob"&&B.path===N)){let B=await Promise.all([...F.values()].map(async(j)=>({stem:j.stem,content:j.content??await Z.getBlobText(j.sha)}))),{decofile:D,skipped:L}=nr(B);if(L.length>0)console.warn("decofile gen: dropped blocks that were not valid JSON",{repo:`${Z.owner}/${Z.repo}`,branch:X,packagePath:Q,blocks:L.map((j)=>j.key)});let E=await Z.createBlob(D);H.push({path:N,mode:"100644",type:"blob",sha:E})}let U=await Z.createTree(J,H),O=await Z.createCommit({message:YG6($),treeSha:U,parentShas:[G]});try{return await Z.updateRef(X,O),O}catch(B){if(!(B instanceof Q6&&B.status===422)||Y>=ZG6-1)throw B;await q$(pZ(2000,200,Y,2,0.5))}}}function YG6($){let Z=(Y)=>{let G=Y.slice(0,3).join(", ");return Y.length>3?`${G} (+${Y.length-3} more)`:G},X=[];if($.set.size>0)X.push(`update ${Z([...$.set.keys()])}`);if($.del.size>0)X.push(`delete ${Z([...$.del])}`);let Q=`chore(decofile): ${X.join("; ")}`;return Rd0(Q,$.deps.coAuthor)}var ZG6=3,D91;var Og$=w(()=>{zO0();RP0();u4();R_();_P0();D91=new Map});import{createHmac as Bg$,randomBytes as GG6,timingSafeEqual as JG6}from"crypto";function wg$(){if(gP0)return gP0;let $;try{let Z=b0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return gP0=$?Buffer.from($):GG6(32),gP0}function L91($){let Z=$.nowMs??Date.now(),X={o:$.organizationId,m:$.virtualMcpId,b:$.branch,e:Math.floor((Z+WG6)/1000)},Q=Buffer.from(JSON.stringify(X)).toString("base64url"),Y=Bg$("sha256",wg$()).update(Q).digest("base64url");return`${Q}.${Y}`}function Dg$($,Z){let X=$.indexOf(".");if(X<0)return!1;let Q=$.slice(0,X),Y=Buffer.from($.slice(X+1)),G=Buffer.from(Bg$("sha256",wg$()).update(Q).digest("base64url"));if(Y.length!==G.length||!JG6(Y,G))return!1;let J;try{J=JSON.parse(Buffer.from(Q,"base64url").toString())}catch{return!1}let W=Math.floor((Z.nowMs??Date.now())/1000);return J.o===Z.organizationId&&J.m===Z.virtualMcpId&&J.b===Z.branch&&typeof J.e==="number"&&J.e>=W}var WG6=21600000,gP0=null;var Lg$=w(()=>{T$()});import{z as nh}from"zod";function HG6($){return $.length>0&&$.length<=255&&!$.includes("..")&&!$.endsWith("/")&&!$.endsWith(".lock")&&KG6.test($)}function jg$($){return $.req.header("x-forwarded-host")??new URL($.req.url).host}async function hP0($){let Z=$.get("decofileScope");return AP0($.var.studioContext,Z.organizationId,Z.githubRepo)}function uP0($,Z){if(Z instanceof Q6){let Q=Z.status===404?404:Z.status===409?409:Z.status===422?409:502;return $.json({error:Z.message},Q)}let X=Z instanceof Error?Z.message:String(Z);return $.json({error:X},500)}function zg$(){let $=new U1;return $.use("/:virtualMcpId/:branch",Eg$),$.use("/:virtualMcpId/:branch/*",Eg$),$.get("/:virtualMcpId/:branch",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await hP0(Z),Y=await $g$(Q,X.branch,X.packagePath,{createBranchIfMissing:!!X.userId}),G={ETag:`"${Y.sha}"`,"Cache-Control":"no-store","Access-Control-Allow-Origin":"*"};if(Z.req.header("if-none-match")===`"${Y.sha}"`)return Z.body(null,304,G);if(!X.userId)return Z.body(Y.decofile,200,{...G,"content-type":"application/json"});let J=L91({organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,branch:X.branch});return Z.body(`{"version":${JSON.stringify(Y.sha)},"token":${JSON.stringify(J)},"apiHost":${JSON.stringify(jg$(Z))},"decofile":${Y.decofile}}`,200,{...G,"content-type":"application/json"})}catch(Q){return uP0(Z,Q)}}),$.patch("/:virtualMcpId/:branch",async(Z)=>{let X=Z.get("decofileScope"),Q=Z.var.studioContext,Y=FG6.safeParse(await Z.req.json().catch(()=>null));if(!Y.success)return Z.json({error:"Invalid body",details:Y.error.issues},400);let G=Y.data;for(let J of[...Object.keys(G.set??{}),...G.delete??[]])try{TP0(J)}catch(W){let K=W instanceof Error?W.message:String(W);return Z.json({error:K},400)}for(let[J,W]of Object.entries(G.set??{}))if(typeof W!=="object"||W===null||Array.isArray(W))return Z.json({error:`Block "${J}" must be a JSON object`},400);try{let J=await hP0(Z),W=await Ug$(`${X.organizationId}/${X.virtualMcpId}/${X.branch}`,{client:J,branch:X.branch,packagePath:X.packagePath,coAuthor:ch(Q)},G),K=L91({organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,branch:X.branch});return Z.json({version:W,token:K,apiHost:jg$(Z)})}catch(J){return uP0(Z,J)}}),$.post("/:virtualMcpId/:branch/publish",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await hP0(Z),Y=await Q.getDefaultBranch();if(Y===X.branch)return Z.json({error:"Branch is already the default branch"},400);let G=`chore(decofile): publish ${X.branch}`;try{let J;try{J=await Q.mergeBranch(Y,X.branch,G)}catch(W){if(!(W instanceof Q6&&W.status===409))throw W;await bP0(Q,X.branch,Y),J=await Q.mergeBranch(Y,X.branch,G)}return J?Z.json({result:"merged",sha:J}):Z.json({result:"up-to-date"})}catch(J){if(J instanceof Q6&&J.status===409)return Z.json({error:"merge-conflict"},409);if(J instanceof Q6&&J.status===405){let K=await Q.findOpenPullRequest(Y,X.branch)??await Q.createPullRequest({base:Y,head:X.branch,title:`Publish ${X.branch}`});return Z.json({result:"pull-request",number:K.number,url:K.html_url})}throw J}}catch(Q){return uP0(Z,Q)}}),$.get("/:virtualMcpId/:branch/status",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await hP0(Z),Y=await Q.getDefaultBranch();if(Y===X.branch)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0});try{let{aheadBy:G,behindBy:J}=await Q.compare(Y,X.branch);return Z.json({baseBranch:Y,aheadBy:G,behindBy:J})}catch(G){if(G instanceof Q6&&G.status===404)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0});throw G}}catch(Q){return uP0(Z,Q)}}),$}var KG6,FG6,Eg$;var Pg$=w(()=>{RP0();P8();n51();PP0();B91();Q91();Og$();Lg$();U91();R_();_P0();KG6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;FG6=nh.object({set:nh.record(nh.string(),nh.unknown()).optional(),delete:nh.array(nh.string()).optional()}).refine(($)=>Object.keys($.set??{}).length>0||($.delete?.length??0)>0,{message:"Patch must set or delete at least one block"}),Eg$=zP0(async($,Z)=>{let X=$.var.studioContext,Q=X.organization;if(!Q)return $.json({error:"Organization scope required"},500);let Y=$.req.param("virtualMcpId"),G=$.req.param("branch");if(!Y||!G)return $.json({error:"virtualMcpId and branch are required"},400);if(!HG6(G))return $.json({error:`Invalid branch name: ${G}`},400);let J=X.auth?.user?.id??null;if(!J){let O=$.req.query("token");if(!($.req.method==="GET"&&!$.req.path.match(/\/(publish|status)$/)))return $.json({error:"Unauthorized"},401);if(!O||!Dg$(O,{organizationId:Q.id,virtualMcpId:Y,branch:G}))return $.json({error:"Unauthorized"},401)}let W=await X.storage.virtualMcps.findById(Y);if(!W||W.organization_id!==Q.id)return $.json({error:"Virtual MCP not found"},404);let K=W.metadata??null;if(!MB0(K)||K?.fastPreview!==!0)return $.json({error:"Fast Preview is not enabled for this project"},404);let F=W.connections?.map((O)=>O.connection_id)??[],N=sr(K,F);if(!N)return $.json({error:"Project has no GitHub repository"},404);let U=K?.runtime;return $.set("decofileScope",{organizationId:Q.id,virtualMcpId:Y,branch:G,packagePath:U?.path?.replace(/^\/+|\/+$/g,"")||null,githubRepo:N,userId:J}),Z()})});var Ag$=($)=>{let Z=new U1;if(Z.use("*",D_),Z.route("/",yz0()),Z.route("/",nv$()),Z.route("/",nx$()),Z.route("/",mx$()),Z.route("/",LP0()),Z.route("/tools",$y$()),Z.route("/",ax$()),Z.route("/",qx$({kvStorage:$.kvStorage})),Z.route("/",Rx$()),Z.route("/fs",yx$({getConnection:$.getNatsConnection})),Z.route("/sandbox",Fg$()),Z.route("/decofile",zg$()),Z.route("/",cx$()),Z.route("/deco-sites",hz0()),Z.route("/sso",Cz0()),Z.route("/",EP0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",hv$()),$.mountDevAssets)Z.route("/dev-assets",uz0({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("/",PC$()),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",hx$()),Z.route("/mcp",iw0()),Z.route("/mcp/self",DP0()),Z.route("/mcp",tw0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var Tg$=w(()=>{P8();w61();uv$();j61();cz0();jr();O61();Ix$();Mx$();gx$();Vn();G61();ow0();u51();ux$();lx$();ix$();tx$();sx$();l51();Zy$();d51();pw0();Ng$();Pg$()});function NG6($){return $.filter((Z)=>Z.vendors?.alias).map((Z)=>({name:Z.name,title:Z.title,description:Z.description,logo:Z.logo,category:Z.category,vendor:{alias:Z.vendors.alias,url:Z.vendors.url}}))}var UG6=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},Rg$=()=>{let $=new U1;return $.use("*",UG6),$.get("/",async(Z)=>{let X=b0(),Q=X.decoSupabaseUrl,Y=X.decoSupabaseServiceKey;if(!Q||!Y)return Z.json({apps:[]});try{let G=await lZ(Q,Y,"apps?select=name,title,description,logo,category,vendors(alias,url)");return Z.json({apps:NG6(G)})}catch(G){return console.error("[deco-apps] GET error:",G),Z.json({error:"Failed to fetch apps"},502)}}),$};var Ig$=w(()=>{P8();T$();hj0()});import{z as M1}from"zod";function ZH($,Z="invalid_request_error",X=null,Q=null){return{error:{message:$,type:Z,param:X,code:Q}}}function AG6($){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 TG6($,Z,X){try{return JSON.parse($)}catch{throw new kg$(`Invalid JSON in tool call arguments for function '${X}' (tool_call_id: ${Z}): ${$}`)}}function RG6($){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:TG6(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 IG6($){let Z=$.map((X)=>{let Q=X.function.parameters?yY(X.function.parameters):yY({type:"object",properties:{}});return[X.function.name,b$({description:X.function.description,inputSchema:Q})]});return Object.fromEntries(Z)}function qG6($){if(!$)return;return{openai:{response_format:$}}}function MG6(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function qg$($,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 Mg$($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var OG6=256,BG6,wG6,DG6,LG6,EG6,jG6,zG6,PG6,kg$,Vg$,Sg$;var Cg$=w(()=>{_4();P8();uh();$N();BG6=M1.object({type:M1.literal("function"),function:M1.object({name:M1.string(),description:M1.string().optional(),parameters:M1.record(M1.string(),M1.unknown()).optional()})}),wG6=M1.object({id:M1.string(),type:M1.literal("function"),function:M1.object({name:M1.string(),arguments:M1.string()})}),DG6=M1.discriminatedUnion("role",[M1.object({role:M1.literal("system"),content:M1.string(),name:M1.string().optional()}),M1.object({role:M1.literal("user"),content:M1.union([M1.string(),M1.array(M1.union([M1.object({type:M1.literal("text"),text:M1.string()}),M1.object({type:M1.literal("image_url"),image_url:M1.object({url:M1.string(),detail:M1.string().optional()})})]))]),name:M1.string().optional()}),M1.object({role:M1.literal("assistant"),content:M1.string().nullable().optional(),name:M1.string().optional(),tool_calls:M1.array(wG6).optional()}),M1.object({role:M1.literal("tool"),content:M1.string(),tool_call_id:M1.string()})]),LG6=M1.object({type:M1.literal("text")}),EG6=M1.object({type:M1.literal("json_object")}),jG6=M1.object({type:M1.literal("json_schema"),json_schema:M1.object({name:M1.string(),description:M1.string().optional(),schema:M1.record(M1.string(),M1.unknown()),strict:M1.boolean().optional()})}),zG6=M1.union([LG6,EG6,jG6]),PG6=M1.object({model:M1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:M1.array(DG6),stream:M1.boolean().optional().default(!1),temperature:M1.number().min(0).max(2).optional(),max_tokens:M1.number().positive().optional(),top_p:M1.number().min(0).max(1).optional(),frequency_penalty:M1.number().min(-2).max(2).optional(),presence_penalty:M1.number().min(-2).max(2).optional(),stop:M1.union([M1.string(),M1.array(M1.string())]).optional(),tools:M1.array(BG6).optional(),tool_choice:M1.union([M1.literal("auto"),M1.literal("none"),M1.literal("required"),M1.object({type:M1.literal("function"),function:M1.object({name:M1.string()})})]).optional(),response_format:zG6.optional(),user:M1.string().optional()});kg$=class kg$ extends Error{constructor($){super($);this.name="MessageConversionError"}};Vg$=new U1;Vg$.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),X=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(ZH("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(ZH("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(ZH("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Q=await $.req.json(),Y=PG6.safeParse(Q);if(!Y.success){let L=Y.error.issues[0]??{message:"Invalid request",path:[]};return $.json(ZH(`Invalid request: ${L.message}`,"invalid_request_error",L.path.length>0?L.path.join("."):null),400)}let G=Y.data,J=AG6(G.model);if(!J)return $.json(ZH("Invalid model format. Expected 'model_id' or 'credential_id:model_id' (e.g., 'claude-sonnet-4-6' or 'key_abc123:claude-sonnet-4-6')","invalid_request_error","model"),400);let{credentialId:W}=J,{modelId:K}=J;if(!W){let E=(await Z.storage.aiProviderKeys.list({organizationId:Z.organization.id})).find((j)=>kD(j.providerId));if(!E)return $.json(ZH("No AI provider credentials configured for this organization. Add a credential in settings or specify one explicitly via 'credential_id:model_id'.","invalid_request_error","model"),400);W=E.id}let H;try{H=await Z.aiProviders.activate(W,Z.organization.id)}catch{return $.json(ZH(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(K),N=RG6(G.messages),U=G.tools?IG6(G.tools):void 0,O=qG6(G.response_format),B=MG6(),D=Math.floor(Date.now()/1000);if(G.stream)return PN($,async(L)=>{let E=qg$(F,N,U,G,O,$.req.raw.signal);try{let j=dO(E),z=!1,A=0,P="",M=async()=>{if(P.length===0)return;let q=P;P="",await L.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{content:q},finish_reason:null}]})})};for await(let q of j.fullStream){if(!z&&(q.type==="text-delta"||q.type==="tool-call"))await L.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),z=!0;if(q.type==="text-delta"){if(P+=q.text,P.length>=OG6)await M()}else if(q.type==="tool-call"){await M();let k=A++;await L.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{tool_calls:[{index:k,id:q.toolCallId,type:"function",function:{name:q.toolName,arguments:JSON.stringify(q.input)}}]},finish_reason:null}]})})}else if(q.type==="finish")await M(),await L.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{},finish_reason:Mg$(q.finishReason)}],usage:q.totalUsage?{prompt_tokens:q.totalUsage.inputTokens??0,completion_tokens:q.totalUsage.outputTokens??0,total_tokens:q.totalUsage.totalTokens??0}:void 0})})}await M(),await L.writeSSE({data:"[DONE]"})}catch(j){let z=j;console.error("[openai-compat:stream] Error:",z.message),await L.writeSSE({data:JSON.stringify({error:{message:z.message,type:"server_error"}})})}});else{let L=qg$(F,N,U,G,O,$.req.raw.signal),E=await cO(L),j={role:"assistant",content:E.text||null};if(E.toolCalls&&E.toolCalls.length>0)j.tool_calls=E.toolCalls.map((z)=>({id:z.toolCallId,type:"function",function:{name:z.toolName,arguments:JSON.stringify("input"in z?z.input:{})}})),j.content=null;return $.json({id:B,object:"chat.completion",created:D,model:G.model,choices:[{index:0,message:j,finish_reason:Mg$(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(ZH("Request aborted","invalid_request_error"),400);if(Y.name==="MessageConversionError")return $.json(ZH(Y.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",Y.message,Y.stack),$.json(ZH(Y.message,"server_error"),500)}});Sg$=Vg$});var vg$;var _g$=w(()=>{vg$={name:"decocms",version:"4.241.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","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@nats-io/jwt":"0.0.10-5","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});function SG6(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??VG6}}var fg$,VG6="https://ph.studio.decocms.com",bg$;var xg$=w(()=>{P8();Yh0();XC();_9();T$();$61();_g$();fg$=new U1;fg$.get("/",($)=>{let Z={version:vg$.version,theme:Od1(),...EL().logo&&{logo:EL().logo},...AK()&&{internalUrl:dV1()},...b0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!b0().firecrawlApiKey,auth:Yv$(),posthog:SG6(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:!AK()&&b0().sandboxProviderKind==="agent-sandbox"}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});bg$=fg$});function th($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function E91($){return(th($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((X)=>X.charAt(0).toUpperCase()+X.slice(1)).join(" ")}function gg$($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(th($))}&sz=${Z}`}function yg$($,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 hg$($){let{brand:Z,domain:X,score:Q,verdict:Y}=$,G=typeof Q==="number"?`${Z} commerce report \u2014 ${Math.round(Q)}/100 \xB7 decocms`:`${Z} commerce report \xB7 decocms`,J=`See the full ${Z} scorecard \u2014 SEO, performance, conversion & AEO signals scored by decocms.`,W=Y?.trim()?yg$(`${Y.trim().replace(/\s+/g," ")} \u2014 ${J}`,200):yg$(`How does ${X} really perform? ${J}`,200);return{title:G,description:W}}import{z as l0}from"zod";var V_,CG6,_G6,vG6,fG6,ug$;var cg$=w(()=>{V_=l0.enum(["good","bad","neutral"]),CG6=l0.preprocess(($)=>{if(Array.isArray($))return{kind:"text",value:$.find((X)=>X!==null&&typeof X!=="object")??""};return $!==null&&typeof $==="object"?$:{kind:"text",value:$}},l0.object({kind:l0.enum(["text","number","sparkline","badge","score"]).catch("text"),value:l0.coerce.string().optional(),tone:V_.optional(),muted:l0.boolean().optional(),delta:l0.coerce.string().optional(),deltaDir:l0.enum(["up","down","neutral"]).optional(),points:l0.array(l0.coerce.number()).optional(),label:l0.coerce.string().optional()}).transform(($)=>{if($.kind==="badge"&&$.label==null)$.label=$.value??"";if($.kind==="score"){let Z=Number($.value);if(Number.isNaN(Z))return{...$,kind:"text"}}return $})),_G6=l0.preprocess(($)=>{let Z=$;if(Z&&typeof Z==="object"&&!Array.isArray(Z)&&Array.isArray(Z.cells))Z=Z.cells;if(Array.isArray(Z)&&Z.length===1&&Array.isArray(Z[0]))Z=Z[0];if(Array.isArray(Z))return Z;if(Z&&typeof Z==="object")return Object.values(Z);return Z},l0.array(CG6)),vG6={key:l0.coerce.string(),title:l0.coerce.string(),eyebrow:l0.coerce.string().optional(),headline:l0.coerce.string(),annotation:l0.coerce.string().optional(),methodology:l0.coerce.string().optional(),sources:l0.array(l0.object({name:l0.coerce.string(),logoUrl:l0.coerce.string()})).optional()},fG6=l0.discriminatedUnion("template",[l0.object({template:l0.literal("cover"),score:l0.object({value:l0.coerce.number(),max:l0.coerce.number().optional(),grade:l0.coerce.string().optional(),label:l0.coerce.string().optional()}).optional(),brandImage:l0.coerce.string().optional(),screenshot:l0.coerce.string().optional(),mobileScreenshot:l0.coerce.string().optional()}),l0.object({template:l0.literal("cta"),ctaUrl:l0.coerce.string().optional(),ctaLabel:l0.coerce.string().optional(),bullets:l0.array(l0.coerce.string()).optional()}),l0.object({template:l0.literal("series"),points:l0.array(l0.coerce.number()).min(2),xLabels:l0.array(l0.coerce.string()).min(1),unit:l0.coerce.string().optional(),callout:l0.object({index:l0.coerce.number(),value:l0.coerce.string(),tone:V_.optional()})}),l0.object({template:l0.literal("threshold"),value:l0.coerce.string().default(""),metricLabel:l0.coerce.string().optional(),ratio:l0.coerce.number(),thresholdRatio:l0.coerce.number().optional(),thresholdLabel:l0.coerce.string().default(""),tone:V_.optional()}),l0.object({template:l0.literal("stats"),stats:l0.array(l0.object({value:l0.coerce.string(),label:l0.coerce.string(),tone:V_.optional()})).min(1)}),l0.object({template:l0.literal("bars"),items:l0.array(l0.object({value:l0.coerce.string(),label:l0.coerce.string(),ratio:l0.coerce.number(),tone:V_.optional()})).min(1)}),l0.object({template:l0.literal("gauges"),gauges:l0.array(l0.object({label:l0.coerce.string(),value:l0.coerce.string(),status:l0.enum(["good","warn","bad"]).catch("warn"),caption:l0.coerce.string().optional(),ratio:l0.coerce.number().optional()})).min(1)}),l0.object({template:l0.literal("checklist"),checks:l0.array(l0.object({label:l0.coerce.string(),status:l0.enum(["pass","fail","warn"]).catch("fail"),value:l0.coerce.string().optional()})).min(1)}),l0.object({template:l0.literal("table"),columns:l0.array(l0.object({label:l0.coerce.string(),align:l0.enum(["left","right"]).optional()})).min(1),rows:l0.array(_G6).min(1),highlightRow:l0.coerce.number().optional()}),l0.object({template:l0.literal("products"),products:l0.array(l0.object({name:l0.coerce.string(),price:l0.coerce.string().optional(),image:l0.coerce.string().optional(),url:l0.coerce.string().optional()})).min(1)}),l0.object({template:l0.literal("list"),entries:l0.array(l0.object({label:l0.coerce.string(),severity:l0.enum(["error","warning","notice"]).catch("notice")})).min(1),moreCount:l0.coerce.number().optional()}),l0.object({template:l0.literal("keywords"),volumeLabel:l0.coerce.string().optional(),keywords:l0.array(l0.object({term:l0.coerce.string(),volume:l0.coerce.string(),position:l0.coerce.number().catch(0)})).min(1)}),l0.object({template:l0.literal("competitor"),metricLabel:l0.coerce.string().optional(),competitors:l0.array(l0.object({name:l0.coerce.string(),value:l0.coerce.string(),tone:V_.optional(),isYou:l0.boolean().optional()})).min(1)}),l0.object({template:l0.literal("scorecard"),rivalLabel:l0.coerce.string().optional(),dimensions:l0.array(l0.object({label:l0.coerce.string(),you:l0.coerce.string(),rival:l0.coerce.string().optional(),rivalName:l0.coerce.string().optional(),tone:V_.optional()})).min(1)})]),ug$=l0.object({...vG6,template:fG6})});function cP0($){let Z=[],X=[...$.sections].sort((Y,G)=>Y.position-G.position).map((Y)=>{let G=ug$.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 j91=w(()=>{cg$()});import{join as lg$}from"path";async function xG6($){try{let Z=await fetch(`${tW({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(bG6)});if(!Z.ok)return null;let X=await Z.json(),{deck:Q}=cP0(X);if(!Q.slides.length)return null;let Y=Q.slides.find((W)=>W.template.template==="cover"),G=Y?.template,J=G&&G.template==="cover"?G:void 0;return{brand:Q.meta.brand?.trim()||E91($),score:Q.meta.scores?.cover??J?.score?.value,verdict:Y?.annotation?.trim()||Y?.headline?.trim()||void 0}}catch{return null}}function GG($){return $.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;")}function yG6($,Z){let X=th($),Q=Z?.brand?.trim()||E91(X),Y=gg$(X,128),J=`${(b0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(X)}`,{title:W,description:K}=hg$({brand:Q,domain:X,score:Z?.score,verdict:Z?.verdict}),H=`${J}/og.png`,F=`${Q} commerce report by decocms`;return[`<title>${GG(W)}</title>`,`<meta name="description" content="${GG(K)}" />`,'<meta name="robots" content="noindex, follow" />','<meta property="og:type" content="website" />','<meta property="og:site_name" content="decocms" />',`<meta property="og:title" content="${GG(W)}" />`,`<meta property="og:description" content="${GG(K)}" />`,`<meta property="og:url" content="${GG(J)}" />`,`<meta property="og:image" content="${GG(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${GG(F)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${GG(W)}" />`,`<meta name="twitter:description" content="${GG(K)}" />`,`<meta name="twitter:image" content="${GG(H)}" />`,`<meta name="twitter:image:alt" content="${GG(F)}" />`,`<link rel="canonical" href="${GG(J)}" />`,`<link rel="icon" href="${GG(Y)}" sizes="any" />`].join(`
2787
2787
  `)}function gG6($,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}
2788
2788
  </head>`)}function dg$($){let Z=new U1;return Z.get("/:domain/og.png",async(X)=>{let Q=th(X.req.param("domain")),Y=async()=>{let G=$?Bun.file(lg$($,"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(`${tW({})}/api/v2/public/diagnostics/${encodeURIComponent(Q)}/og.png`,{signal:AbortSignal.timeout(hG6)}),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=$?lg$($,"index.html"):null,G=Y?Bun.file(Y):null;if(!G||!await G.exists())return X.notFound();let J=await G.text();try{let W=await xG6(th(Q)),K=yG6(Q,W);return X.html(gG6(J,K),200,{"Cache-Control":"public, max-age=0, s-maxage=300"})}catch{return X.html(J)}}),Z}var bG6=2500,hG6=1e4;var mg$=w(()=>{P8();j91();_L();T$()});function $a($,Z){return fetch(`${tW({})}${$}`,Z)}async function uG6($,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 $a(`/api/v2/public/diagnostics/${encodeURIComponent($)}${Y}`,{headers:{Accept:"application/json"}});if(G.status===404)return{status:"not_found",deck:null,scanned_at:null,drops:[]};if(!G.ok)throw Error(`report read HTTP ${G.status}`);let J=await G.json(),{deck:W,drops:K}=cP0(J);return{status:W.slides.length?"ready":"empty",deck:W,scanned_at:J.scanned_at,drops:K}}var cG6,TN,ig$=async($,Z)=>{if(!$.get("reportUser"))return $.json({error:"Authentication required"},401);await Z();return},pg$;var ng$=w(()=>{P8();vY();_L();j91();cG6=new Set(["complete","errored","terminated","unknown"]),TN=new U1;TN.use("*",async($,Z)=>{let X=await H8.api.getSession({headers:$.req.raw.headers});$.set("reportUser",X?.user?.id?{email:X.user.email}:void 0),await Z(),$.header("Cache-Control","private, no-store"),$.header("Vary","Cookie");return});TN.use("/link-token/*",ig$);TN.use("/suggest",ig$);TN.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 uG6(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)}});TN.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 $a("/api/v2/diagnostics/run",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${CL({})}`},body:JSON.stringify({url:Q,...Y?{email:Y}:{},distinct_id:G})});if(!J.ok)return $.json({error:`run HTTP ${J.status}`},502);let W=await J.json(),K=W.blocked?{state:"blocked"}:W.status==="fresh"?{state:"fresh"}:W.mode==="sync"?{state:"sync"}:{state:"running",id:W.id??null};return $.json(K)}catch{return $.json({error:"run failed"},502)}});TN.get("/status",async($)=>{let Z=$.req.query("id");if(!Z)return $.json({error:"id is required"},400);try{let X=await $a(`/api/v2/diagnostics/status?id=${encodeURIComponent(Z)}`,{headers:{Authorization:`Bearer ${CL({})}`}});if(!X.ok)return $.json({error:`status HTTP ${X.status}`},502);let Y=(await X.json()).status??"unknown",G={done:cG6.has(Y),status:Y};return $.json(G)}catch{return $.json({error:"status failed"},502)}});TN.get("/link-token/:id",async($)=>{let Z=$.req.param("id");try{let X=await $a(`/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)}});TN.get("/suggest",async($)=>{let Z=($.req.query("q")??"").trim().slice(0,64);if(Z.length<2)return $.json({suggestions:[]});try{let X=await $a(`/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:[]})}});pg$=TN});import{createHmac as lG6,timingSafeEqual as dG6}from"crypto";function og$($,Z,X,Q=Date.now()){if(!Z||!X)return!1;let Y,G=[];for(let H of Z.split(",")){let F=H.indexOf("=");if(F<=0)continue;let N=H.slice(0,F).trim(),U=H.slice(F+1).trim();if(N==="t")Y=U;else if(N==="v1")G.push(U)}if(!Y||G.length===0)return!1;let J=Number(Y);if(!Number.isFinite(J)||Math.abs(Q/1000-J)>mG6)return!1;let W=lG6("sha256",X).update(`${Y}.${$}`).digest("hex"),K=Buffer.from(W,"hex");return G.some((H)=>{let F=Buffer.from(H,"hex");return K.length===F.length&&dG6(K,F)})}function rg$($){let Z;try{Z=JSON.parse($)}catch{return null}let X=zJ(Z),Q=zJ(zJ(X?.data)?.object);if(!X||typeof X.type!=="string"||!Q)return null;return{id:XH(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 ag$($){switch($){case"active":case"trialing":return"active";case"past_due":return"past_due";default:return"canceled"}}function XH($){return typeof $==="string"?$:void 0}function zJ($){return typeof $==="object"&&$!==null?$:void 0}function lP0($){return typeof $==="number"?new Date($*1000):null}function A91($){return XH($)??XH(zJ($)?.id)}function iG6($){return A91($.subscription)??XH(zJ(zJ($.parent)?.subscription_details)?.subscription)}function pG6($){let Z=lP0($.current_period_end);if(Z)return Z;let X=zJ($.items)?.data;if(!Array.isArray(X))return null;let Q=0;for(let Y of X){let G=zJ(Y)?.current_period_end;if(typeof G==="number"&&G>Q)Q=G}return Q>0?new Date(Q*1000):null}function z91($,Z){let X=lP0($.created);return!!X&&!!Z.lastStripeEventAt&&X<Z.lastStripeEventAt}function P91($,Z){let X=lP0($.created);if(!X)return;return Z.lastStripeEventAt&&Z.lastStripeEventAt>X?void 0:X}async function nG6($,Z){let X=Z.data.object;switch(Z.type){case"checkout.session.completed":case"checkout.session.async_payment_succeeded":{let Q=XH(zJ(X.metadata)?.orgId);if(!Q)return{handled:!1,reason:"no orgId"};if(XH(zJ(X.metadata)?.kind)==="topup"){if(X.mode!=="payment")return{handled:!1,reason:"topup with wrong mode"};if(XH(X.payment_status)!=="paid")return{handled:!1,reason:"payment not confirmed"};let J=XH(X.id);if(!J)return console.error("stripe webhook: topup session without id",{eventId:Z.id,organizationId:Q}),{handled:!1,reason:"topup session without id"};let W=Number(zJ(X.metadata)?.creditCents);if(!Number.isInteger(W)||W<=0)return console.error("stripe webhook: paid topup with bad metadata \u2014 credit NOT applied",{eventId:Z.id,organizationId:Q,creditCents:zJ(X.metadata)?.creditCents}),{handled:!1,reason:"bad topup metadata"};return{handled:!0,organizationId:Q,topUp:{creditCents:W,referenceId:`stripe-topup:${J}`}}}if(X.mode!=="subscription")return{handled:!1,reason:"not a subscription checkout"};if(XH(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=A91(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(z91(Z,Y))return{handled:!1,reason:"stale event"};return await $.updateStripeState(Q,{stripeCustomerId:A91(X.customer),stripeSubscriptionId:G,status:"active",lastStripeEventAt:P91(Z,Y)}),{handled:!0,organizationId:Q}}case"customer.subscription.updated":case"customer.subscription.deleted":{let Q=XH(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&&z91(Z,Y))return{handled:!1,reason:"stale event"};let J=G?"canceled":ag$(X.status);return await $.updateStripeState(Y.organizationId,{status:J,currentPeriodEnd:pG6(X),...G&&{stripeSubscriptionId:null},lastStripeEventAt:P91(Z,Y)}),{handled:!0,organizationId:Y.organizationId}}case"invoice.paid":{let Q=iG6(X);if(!Q)return{handled:!1,reason:"no sub id"};let Y=await $.getBillingByStripeSubscriptionId(Q);if(!Y)return{handled:!1,reason:"unknown subscription"};if(z91(Z,Y))return{handled:!1,reason:"stale event"};return await $.updateStripeState(Y.organizationId,{status:"active",currentPeriodEnd:lP0(X.period_end),lastStripeEventAt:P91(Z,Y)}),{handled:!0,organizationId:Y.organizationId}}default:return{handled:!1,reason:`unhandled event ${Z.type}`}}}function tG6($,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:ag$(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 tg$($,Z){let X=tG6($,Z);if(!X)return;MY({event:X.name,organizationId:X.organizationId,...$.id?{uuid:Pi1(`stripe:${$.id}:${X.name}`)}:{},...$.created?{timestamp:new Date($.created*1000)}:{},properties:X.properties})}async function sg$($){let Z=new mW(p8().db),X=await nG6(Z,$);if(!(X.handled&&X.topUp))tg$($,X);if(X.handled&&X.topUp)await sB$({organizationId:X.organizationId,amountCents:X.topUp.creditCents,referenceId:X.topUp.referenceId}),tg$($,X);if(!X.handled&&X.orphanSubscriptionId)try{await fa1(X.orphanSubscriptionId),console.error("stripe webhook: canceled orphan subscription",{subscriptionId:X.orphanSubscriptionId,eventId:$.id})}catch(Q){if(!(Q instanceof fY&&(Q.status===400||Q.status===404)))throw Q}return X}var mG6=300;var eg$=w(()=>{fG();M4();X60();cL();fs0()});var oG6=1048576,T91;var $h$=w(()=>{P8();UN();T$();eg$();T91=new U1;T91.post("/webhook",q9({maxSize:oG6,onError:($)=>$.json({error:"payload too large"},413)}),async($)=>{let Z=b0().stripeWebhookSecret;if(!Z)return $.json({error:"stripe billing not configured"},503);let X=await $.req.text();if(!og$(X,$.req.header("stripe-signature"),Z))return $.json({error:"invalid signature"},400);let Y=rg$(X);if(!Y)return $.json({error:"invalid payload"},400);let G=await sg$(Y);return console.log("stripe webhook",{eventId:Y.id,type:Y.type,livemode:Y.livemode,...G}),$.json({received:!0})})});import{timingSafeEqual as rG6}from"crypto";function sG6($,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 rG6(Buffer.from(Y),Buffer.from(Q))}var aG6=5242880,R91;var Zh$=w(()=>{P8();UN();kp();R91=new U1;R91.post("/webhook",q9({maxSize:aG6,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(!sG6(X,$.req.header("x-hub-signature-256"),Z))return $.json({error:"invalid signature"},400);if($.req.header("x-github-event")!=="push")return $.json({ok:!0,ignored:"event"});let Q;try{Q=JSON.parse(X)}catch{return $.json({error:"invalid payload"},400)}let Y=Q.ref,G=Q.repository?.full_name;if(!Y||!G)return $.json({ok:!0,ignored:"shape"});let W=(await oi0())?.markTenantPoolsDirty(G,Y)??[];return $.json({ok:!0,pools:W})})});function Xh$($,Z){if(Z.startsWith("text/html")||Z.startsWith("image/svg"))$.set("Content-Security-Policy","sandbox allow-scripts allow-modals allow-same-origin")}var Qh$,eG6,$J6,Yh$;var Gh$=w(()=>{P8();W3();Ey();wx();Qh$=new U1,eG6=["range","if-none-match","if-modified-since"],$J6=["content-type","content-length","content-range","accept-ranges","etag","last-modified"];Qh$.get("/:org/files/*",async($)=>{let Z=$.get("studioContext"),X=Z.organization?.id;if(!Z.auth?.user?.id){if(Ah($))return $.redirect(`/login?next=${encodeURIComponent($.req.path)}`,302);throw new $$(401,{message:"Authentication required"})}if(!X)throw new $$(401,{message:"Organization context required"});let Q=$.req.path.replace(/^.*\/files\//,"");if(!Q)throw new $$(400,{message:"Missing file key"});let Y=await Yn(Q,Z);if(!Y)throw new $$(503,{message:"Object storage not configured"});if(Y.startsWith("data:")&&U3()){let K=Y.match(/^data:([^;]+);base64,(.+)$/s);if(!K)throw new $$(500,{message:"Invalid data URL from storage"});let[,H,F]=K,N=Buffer.from(F,"base64"),U=new Headers({"Content-Type":H,"Cache-Control":"private, max-age=86400"});return Xh$(U,H),new Response(N,{status:200,headers:U})}let G=new Headers;for(let K of eG6){let H=$.req.header(K);if(H)G.set(K,H)}let J=await fetch(Y,{headers:G});if(J.status===403||J.status===404)throw new $$(404,{message:"File not found"});if(!J.ok&&J.status!==304&&J.status!==416)throw console.error(`[files] upstream storage error ${J.status} for key:`,Q),new $$(502,{message:"Upstream storage error"});let W=new Headers;for(let K of $J6){let H=J.headers.get(K);if(H)W.set(K,H)}return W.set("Cache-Control","private, max-age=86400"),Xh$(W,W.get("content-type")??""),new Response(J.body,{status:J.status,headers:W})});Yh$=Qh$});var Za=_((S_)=>{var ZJ6=S_&&S_.__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]}),XJ6=S_&&S_.__exportStar||function($,Z){for(var X in $)if(X!=="default"&&!Object.prototype.hasOwnProperty.call(Z,X))ZJ6(Z,$,X)};Object.defineProperty(S_,"__esModule",{value:!0});XJ6(FY(),S_)});var Kh$=_((Jh$)=>{Object.defineProperty(Jh$,"__esModule",{value:!0});Jh$.version=void 0;Jh$.version="3.4.0"});var Nh$=_((QH)=>{var QJ6=QH&&QH.__importDefault||function($){return $&&$.__esModule?$:{default:$}};Object.defineProperty(QH,"__esModule",{value:!0});QH.NodeTransport=QH.VERSION=void 0;QH.nodeResolveHost=HJ6;var t6=Za(),YJ6=z0("net"),I91=z0("tls"),GJ6=z0("path"),Hh$=z0("fs"),JJ6=QJ6(z0("dns")),WJ6=Kh$();QH.VERSION=WJ6.version;var KJ6="nats.js";class Fh${socket;version;lang;yields=[];signal=(0,t6.deferred)();closedNotification=(0,t6.deferred)();options;connected=!1;tlsName="";done=!1;closeError;constructor(){this.lang=KJ6,this.version=QH.VERSION}async connect($,Z){this.tlsName=$.tlsName,this.options=Z;let{tls:X}=this.options,{handshakeFirst:Q}=X||{};try{if(Q===!0)this.socket=await this.tlsFirst($);else this.socket=await this.dial($);if(this.done)this.socket?.destroy();let Y=await this.peekInfo();(0,t6.checkOptions)(Y,Z);let{tls_required:G,tls_available:J}=Y,W=J===!0&&Z.tls!==null;if(!Q&&(G||W))this.socket=await this.startTLS();if(this.done)this.socket?.destroy();if(G&&this.socket.encrypted!==!0)throw t6.errors.InvalidArgumentError.format("tls","is not available on this server");return this.connected=!0,this.setupHandlers(),this.signal.resolve(),Promise.resolve()}catch(Y){let G=Y;if(!G)G=new t6.errors.ConnectionError("error connecting - node provided an undefined error");let{code:J}=G,W=J==="ECONNREFUSED"?new t6.errors.ConnectionError("connection refused",{cause:G}):G;throw this.socket?.destroy(),W}}dial($){let Z=(0,t6.deferred)(),X,Q=(0,YJ6.createConnection)($.port,$.hostname,()=>{Z.resolve(Q),Q.removeAllListeners()});return Q.on("error",(Y)=>{X=Y}),Q.on("close",()=>{Q.removeAllListeners(),Z.reject(X)}),Q.setNoDelay(!0),Z}get isClosed(){return this.done}close($){return this._closed($,!1)}peekInfo(){let $=(0,t6.deferred)(),Z;return this.socket.on("data",(X)=>{this.yields.push(X);let Q=t6.DataBuffer.concat(...this.yields),Y=(0,t6.extractProtocolMessage)(Q);if(Y!=="")try{let G=t6.INFO.exec(Y);if(!G)throw Error("unexpected response from server");let J=JSON.parse(G[1]);$.resolve(J)}catch(G){$.reject(G)}finally{this.socket.removeAllListeners()}}),this.socket.on("error",(X)=>{Z=X}),this.socket.on("close",()=>{this.socket.removeAllListeners(),$.reject(Z)}),$}loadFile($){if(!$)return Promise.resolve();let Z=(0,t6.deferred)();try{if($=(0,GJ6.resolve)($),!(0,Hh$.existsSync)($))Z.reject(Error(`${$} doesn't exist`));(0,Hh$.readFile)($,(X,Q)=>{if(X)return Z.reject(X);Z.resolve(Q)})}catch(X){Z.reject(X)}return Z}async loadClientCerts(){let $={},{certFile:Z,cert:X,caFile:Q,ca:Y,keyFile:G,key:J}=this.options.tls;try{if(Z){let W=await this.loadFile(Z);if(W)$.cert=W}else if(X)$.cert=X;if(G){let W=await this.loadFile(G);if(W)$.key=W}else if(J)$.key=J;if(Q){let W=await this.loadFile(Q);if(W)$.ca=[W]}else if(Y)$.ca=Y;return Promise.resolve($)}catch(W){return Promise.reject(W)}}async tlsFirst($){let Z,X={servername:this.tlsName,rejectUnauthorized:!0};if(this.socket)X.socket=this.socket;if(typeof this.options.tls==="object")try{let Y=await this.loadClientCerts()||{};X=(0,t6.extend)(X,this.options.tls,Y)}catch(Y){return Promise.reject(new t6.errors.ConnectionError(Y.message,{cause:Y}))}let Q=(0,t6.deferred)();try{let Y=(0,I91.connect)($.port,$.hostname,X,()=>{Y.removeAllListeners(),Q.resolve(Y)});Y.on("error",(G)=>{Z=G}),Y.on("secureConnect",()=>{if(X.rejectUnauthorized===!1)return;if(!Y.authorized)throw Y.authorizationError}),Y.on("close",()=>{Q.reject(Z),Y.removeAllListeners()}),Y.setNoDelay(!0)}catch(Y){Q.reject(new t6.errors.ConnectionError(Y.message,{cause:Y}))}return Q}async startTLS(){let $,Z={socket:this.socket,servername:this.tlsName,rejectUnauthorized:!0};if(typeof this.options.tls==="object")try{let Q=await this.loadClientCerts()||{};Z=(0,t6.extend)(Z,this.options.tls,Q)}catch(Q){return Promise.reject(new t6.errors.ConnectionError(Q.message,{cause:Q}))}let X=(0,t6.deferred)();try{let Q=(0,I91.connect)(Z,()=>{Q.removeAllListeners(),X.resolve(Q)});Q.on("error",(Y)=>{$=Y}),Q.on("secureConnect",()=>{if(Z.rejectUnauthorized===!1)return;if(!Q.authorized)throw Q.authorizationError}),Q.on("close",()=>{X.reject($),Q.removeAllListeners()})}catch(Q){X.reject(new t6.errors.ConnectionError(Q.message,{cause:Q}))}return X}setupHandlers(){let $;this.socket.on("data",(Z)=>{return this.yields.push(Z),this.signal.resolve()}),this.socket.on("error",(Z)=>{$=Z}),this.socket.on("end",()=>{if(this.socket?.destroyed)return;this.socket?.write(new Uint8Array(0),()=>{this.socket?.end()})}),this.socket.on("close",()=>{this._closed($,!1)})}[Symbol.asyncIterator](){return this.iterate()}async*iterate(){while(!0){if(this.yields.length===0)await this.signal;let $=this.yields;this.yields=[];for(let Z=0;Z<$.length;Z++){if(this.options.debug)console.info(`> ${(0,t6.render)($[Z])}`);yield $[Z]}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,t6.deferred)()}}discard(){if(this.done=!0,this.socket)try{this.socket.removeAllListeners(),this.socket.destroy()}catch{}}disconnect(){this._closed(void 0,!0).then().catch()}isEncrypted(){return this.socket instanceof I91.TLSSocket}_send($){if(this.isClosed||this.socket===void 0)return Promise.resolve();if(this.options.debug)console.info(`< ${(0,t6.render)($)}`);let Z=(0,t6.deferred)();try{this.socket.write($,(X)=>{if(X){if(this.options.debug)console.error(`!!! ${(0,t6.render)($)}: ${X}`);return Z.reject(X)}return Z.resolve()})}catch(X){if(this.options.debug)console.error(`!!! ${(0,t6.render)($)}: ${X}`);Z.reject(X)}return Z}send($){this._send($).catch((X)=>{})}async _closed($,Z=!0){if(!this.connected)return;if(this.done){this.socket?.destroy();return}if(this.closeError=$,!$&&this.socket&&Z)try{await this._send(new TextEncoder().encode(""))}catch(X){if(this.options.debug)console.log("transport close terminated with an error",X)}try{if(this.socket)this.socket.removeAllListeners(),this.socket?.destroy(),this.socket=void 0}catch(X){console.log(X)}this.done=!0,this.closedNotification.resolve(this.closeError)}closed(){return this.closedNotification}}QH.NodeTransport=Fh$;function HJ6($){let Z=(0,t6.deferred)();return JJ6.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 Dh$=_((wh$)=>{Object.defineProperty(wh$,"__esModule",{value:!0});wh$.connect=FJ6;var Uh$=Nh$(),Oh$=Za(),Bh$=Za();function FJ6($={}){if((0,Bh$.hasWsProtocol)($))return Promise.reject(Bh$.errors.InvalidArgumentError.format("servers","node client doesn't support websockets, use the 'wsconnect' function instead"));return(0,Oh$.setTransportFactory)({factory:()=>{return new Uh$.NodeTransport},dnsResolveFn:Uh$.nodeResolveHost}),Oh$.NatsConnectionImpl.connect($)}});var Lh$=_((RN)=>{var UJ6=RN&&RN.__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]}),OJ6=RN&&RN.__exportStar||function($,Z){for(var X in $)if(X!=="default"&&!Object.prototype.hasOwnProperty.call(Z,X))UJ6(Z,$,X)};Object.defineProperty(RN,"__esModule",{value:!0});RN.connect=void 0;var BJ6=Dh$();Object.defineProperty(RN,"connect",{enumerable:!0,get:function(){return BJ6.connect}});OJ6(Za(),RN)});function Ph$($){let Z=$?.connectFn??EJ6,X=null,Q=null,Y=!1,G=!1,J=!1,W=[];function K(){return X!==null&&!X.isClosed()&&!X.isDraining()&&!J}function H(){console.log(`[NatsProvider] fireReady: ${W.length} callbacks`);for(let U of W)try{U()}catch{}}function F(U){(async()=>{for await(let O of U.status())if(O.type==="disconnect")console.log("[NatsProvider] Disconnected"),J=!0;else if(O.type==="reconnect")console.log("[NatsProvider] Reconnected, re-firing ready callbacks"),J=!1,Q=null,H()})().catch(()=>{})}async function N(U,O){let B=0;while(!G)try{X=await Z({servers:U,timeout:LJ6,reconnect:!0,maxReconnectAttempts:-1,...O?{authenticator:O}:{}}),console.log(`[NatsProvider] Connected to ${X.getServer()} after ${B} attempt(s)`),Q=null,J=!1,F(X),H();return}catch{B++;let D=pZ(DJ6,wJ6,B-1,2,0.5);await q$(D)}}return{init(U,O){if(Y)return;Y=!0,G=!1;let B=O?.creds?Eh$.credsAuthenticator(new TextEncoder().encode(O.creds)):void 0;N(U,B).catch(()=>{})},isConnected(){return K()},getConnection(){return K()?X:null},getJetStream(){if(!K())return null;if(!Q)Q=zh$.jetstream(X);return Q},onReady(U){if(W.push(U),K())try{U()}catch{}},async drain(){if(G=!0,Y=!1,Q=null,J=!1,X){let U=X;X=null,await U.drain().catch(()=>{})}}}}function EJ6($){return jh$.connect($)}var Eh$,jh$,zh$,wJ6=100,DJ6=3000,LJ6=3000;var Ah$=w(()=>{u4();Eh$=V(ju(),1),jh$=V(Lh$(),1),zh$=V(fw(),1)});function q91($,Z){return`${$}.${Z}`}class M91{cache;constructor($){this.cache=Hh({ttlMs:$?.ttlMs??jJ6,maxSize:$?.maxSize??zJ6})}async get($,Z){return this.cache.get(q91($,Z))??null}async set($,Z,X){this.cache.set(q91($,Z),X)}async invalidate($,Z){this.cache.delete(q91($,Z))}teardown(){this.cache.clear()}}var jJ6=600000,zJ6=5000;var Th$=()=>{};function dP0($,Z){return`${$}:${Z}`}function k91($){let Z=Hh({ttlMs:$?.ttlMs??PJ6,maxSize:$?.maxSize??AJ6}),X=$?.getConnection,Q=crypto.randomUUID(),Y=new TextEncoder,G=new TextDecoder,J=null;function W(K,H){let F=X?.();if(!F)return;try{F.publish(Rh$,Y.encode(JSON.stringify({organizationId:K,keyId:H,originId:Q})))}catch(N){console.warn("[ProviderKeyCache] Publish failed (non-critical):",N)}}return{get(K,H){return Z.get(dP0(K,H))},set(K,H,F){Z.set(dP0(K,H),F)},invalidate(K,H){Z.delete(dP0(K,H)),W(K,H)},start(){if(J)return;let K=X?.();if(!K)return;J=K.subscribe(Rh$),(async()=>{for await(let H of J)try{let F=JSON.parse(G.decode(H.data));if(F.originId===Q)continue;Z.delete(dP0(F.organizationId,F.keyId))}catch{}})().catch(console.error)},teardown(){J?.unsubscribe(),J=null,Z.clear()}}}var Rh$="studio.ai-provider-keys.invalidate",PJ6=30000,AJ6=5000;var Ih$=()=>{};class V91{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=qh$.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 qh$)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 qh$;var Mh$=w(()=>{qh$=["studio.decopilot.cancel","mesh.decopilot.cancel"]});var kh$=($)=>{let Z;return()=>Z??=$()},S91,C91;var Vh$=w(()=>{b6();S91=kh$(()=>S$.createHistogram("decopilot.stream.encode_ms",{description:"Per-chunk JSON.stringify+encode time for decopilot stream",unit:"ms"})),C91=kh$(()=>S$.createCounter("decopilot.stream.published_chunks",{description:"Logical decopilot stream chunks published to JetStream",unit:"{chunks}"}))});function VJ6(){return{name:lF,subjects:[`${Fw0}.>`],storage:GW.StorageType.File,max_age:IJ6,max_bytes:MJ6,max_msgs_per_subject:kJ6,discard:GW.DiscardPolicy.Old,retention:GW.RetentionPolicy.Limits,duplicate_window:qJ6,num_replicas:1}}class _h${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 Sh$($){let Z=Ch$.headers();for(let[X,Q]of Object.entries($))Z.set(X,Q);return Z}function vJ6($,Z){let X=0;return{publish(Q,Y,G,J){Q.publish(Y,G,J?{headers:J}:void 0).catch((W)=>{if(X++,RJ6().add(1,{"org.id":Z??"unknown"}),X===1||X%100===0)console.warn(`[Decopilot] JetStream publish failed for thread ${$} (${X} total):`,W)})},get errorCount(){return X}}}function fJ6($){if(!($ instanceof Error))return!1;if($.name==="TimeoutError")return!0;return/timeout|no responders|503/i.test($.message)}class _91{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=VJ6(),X=await F9(async()=>{let Q=this.options.getJetStreamManager?await this.options.getJetStreamManager():await GW.jetstreamManager($);try{await Q.streams.info(lF),await Q.streams.update(lF,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(lF),await Q.streams.add(Z);else throw Y}return Q},{maxAttempts:5,minTimeout:250,maxTimeout:4000,jitter:0.5,isRetriable:fJ6});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=vJ6(Z,Q),J=!1,W=()=>{if(J)return;J=!0;let H=SH$(Z);Y.publish(H.subject,H.data).catch(()=>{})};X.addEventListener("abort",W,{once:!0});let K=(H)=>{let F=performance.now(),N=Ct0(H,{runId:Z}),U=performance.now()-F;if(S91().record(U),C91().add(1,{"org.id":Q??"unknown"}),_J6?.record(U,N.reduce((O,B)=>O+B.data.length,0)),N.length===0){console.warn(`[Decopilot] dropping oversized stream chunk for thread ${Z}`);return}for(let O of N)G.publish(Y,O.subject,O.data,O.headers?Sh$(O.headers):void 0)};return(async()=>{let H=$.getReader(),F=0,N=0,U;try{while(!0){let{done:O,value:B}=await H.read();if(O)break;if(K(B),N++,++F>=64)F=0,await new Promise((D)=>setImmediate(D))}}catch(O){U=O,console.warn(`[Decopilot] stream pump error for thread ${Z}:`,O?.message??O)}finally{if(H.releaseLock(),W(),CJ6)console.warn(JSON.stringify({msg:"decopilot-stream-diag",event:"pump-done",taskId:Z,publishedChunks:N,publishErrors:G.errorCount}))}if(U!==void 0)throw U})()}async publishRawChunk($,Z,X){let Q=this.js;if(!Q)return!1;let Y=performance.now(),G=Ct0(Z,{runId:$,dedup:X});if(S91().record(performance.now()-Y),C91().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:Sh$(J.headers)}:{},...J.msgId?{msgID:J.msgId}:{}});return!0}async publishDone($,Z,X){let Q=this.js;if(!Q)return!1;let Y=VH$({runId:$,fenceToken:Z,finalSeq:X});return await Q.publish(Y.subject,Y.data,{msgID:Y.msgId}),!0}async createTailStream($,Z,X){let Q=this.js;if(!Q)return console.warn(`[Decopilot] createTailStream: JetStream client unavailable for thread ${$}; no live tail`),null;let Y=X?.deliverPolicy==="new"?GW.DeliverPolicy.New:GW.DeliverPolicy.All,G=X?.closeOnDone??!1,J=IB($),W;try{W=await(await Q.consumers.get(lF,{filter_subjects:J,deliver_policy:Y})).consume()}catch(D){return console.warn("[Decopilot] JetStream tail unavailable (non-critical):",D?.message??D),null}let F=ww0({messages:async function*(){try{for await(let D of W)yield{subject:D.subject,data:D.data,headers:D.headers}}finally{W.stop()}}(),onCancel:()=>W.stop()}).pipeThrough(Nw0()).pipeThrough(Uw0()).getReader(),N=!1,U=()=>{if(N)return;N=!0;try{F.releaseLock()}catch{}},O=!1,B=()=>{if(O)return;O=!0,W.stop(),F.cancel().catch(()=>{}),U()};return Z?.addEventListener("abort",B,{once:!0}),new ReadableStream({async pull(D){for(;;){let{done:L,value:E}=await F.read();if(L){B(),D.close();return}let j=E;if(j.kind==="done"){if(G){B(),D.close();return}continue}D.enqueue(j.chunk);return}},cancel(){B()}})}purge($){if(!this.jsm)return;this.jsm.streams.purge(lF,{filter:IB($)}).catch(()=>{})}teardown(){this.js=null,this.jsm=null}}var GW,Ch$,TJ6=($)=>{let Z;return()=>Z??=$()},RJ6,IJ6=86400000000000,qJ6=120000000000,MJ6=4294967296,kJ6=500000,SJ6,CJ6,_J6;var vh$=w(()=>{u4();_t0();Dw0();Ow0();b6();Vh$();GW=V(fw(),1),Ch$=V(ju(),1),RJ6=TJ6(()=>S$.createCounter("decopilot.stream.publish_errors",{description:"Number of JetStream publish failures for decopilot stream chunks",unit:"{errors}"}));SJ6=process.env.STREAM_ENCODE_TRACE==="1",CJ6=process.env.DECOPILOT_STREAM_TRACE==="1";_J6=SJ6?new _h$:null});function mP0($,Z,X,Q){if(!Q)return!1;return $.emit(Z,MW(X,Q.status,{title:Q.title??void 0,virtualMcpId:Q.virtual_mcp_id??void 0,createdBy:Q.created_by??void 0,triggerId:Q.trigger_id??null,branch:Q.branch??null,harnessId:Q.harness_id??void 0,createdAt:Q.created_at,updatedAt:Q.updated_at})),!0}var fh$=w(()=>{U8()});class v91{storage;options;timer=null;constructor($,Z={}){this.storage=$;this.options=Z}start(){if(this.timer)return;let $=this.options.intervalMs??300000;this.timer=setInterval(()=>{this.runOnce()},$)}async runOnce(){let $=this.options.staleAfterMs??3600000;try{let Z=await this.storage.sweepAbandoned($);if(Z>0)console.log(`[async-research-sweeper] marked ${Z} stale jobs as abandoned`);return Z}catch(Z){return console.error("[async-research-sweeper] sweep failed",Z),0}}dispose(){if(this.timer)clearInterval(this.timer),this.timer=null}}function cJ6($){return $ instanceof p7}function lJ6($,Z){return Z-$>=hJ6}class f91{taskBoard;contextFactory;billing;options;timer=null;running=!1;cursor=null;constructor($,Z,X,Q={}){this.taskBoard=$;this.contextFactory=Z;this.billing=X;this.options=Q}start(){if(this.timer)return;let $=this.options.intervalMs??bJ6;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??yJ6,X=this.options.itemIntervalMs??xJ6,Q=new Date(Date.now()-X),Y=await this.taskBoard.listItemsPendingReview(Z,this.cursor,Q),G=Y.at(-1);this.cursor=Y.length===Z&&G?{updatedAt:G.updatedAt,id:G.id}:null;for(let{id:J,organizationId:W}of Y)try{if(await this.reconcileItem(J,W,Q))$++}catch(K){console.error(`[task-board-review-sweeper] ${J} failed`,K)}await this.reapNeverStartedThreads(Z),$+=await this.dispatchDueRetries(Z),await this.reactToUnhandledFailures(Z)}catch(Z){console.error("[task-board-review-sweeper] sweep failed",Z)}finally{this.running=!1}return $}async reapNeverStartedThreads($){try{let Z=await this.taskBoard.failNeverStartedLinkedThreads($,new Date(Date.now()-Tn0),Bo0);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()-uJ6));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 $t0(this.taskBoard,Y,Q),await Zt0(this.taskBoard,this.billing,Y,Q)}catch(G){console.error(`[task-board-review-sweeper] unhandled-failure reaction for ${X} failed`,G)}}async dispatchDueRetries($){let Z=0,X=await this.taskBoard.listItemsDueForRetry($,new Date);for(let{id:Q,organizationId:Y,attempts:G}of X)try{if(!await this.taskBoard.claimDueRetry(Q,Y,new Date))continue;let J=await this.taskBoard.getById(Q,Y);if(!J||J.status!=="in_progress"||J.assigneeId!==n8)continue;let W=await this.contextFactory(Y,J.assignedBy??J.createdBy);if(!W)continue;await dF(W,J,{runClass:"retry"}),Z++,console.warn(`[task-board-review-sweeper] re-dispatched ${Q} after a failure (attempt ${G})`)}catch(J){if(console.error(`[task-board-review-sweeper] retry dispatch for ${Q} failed`,J),cJ6(J)){await this.returnToTodo(Q,Y,J instanceof Error?J.message:String(J));continue}await this.taskBoard.scheduleRunRetry(Q,Y,G,new Date(Date.now()+gJ6)).catch((W)=>console.error(`[task-board-review-sweeper] re-arming ${Q} failed`,W))}return Z}async returnToTodo($,Z,X){try{let Q=await this.taskBoard.getById($,Z);if(!Q||Q.status!=="in_progress")return;let Y=await this.taskBoard.returnToTodoAfterFailure($,Z,Q.updatedBy);if(!Y)return;await this.taskBoard.recordActivity({taskBoardItemId:$,action:"status_changed",actorId:null,data:{from:"in_progress",to:"todo",reason:X}}).catch(()=>{}),A8(Z,Y)}catch(Q){console.error(`[task-board-review-sweeper] returning ${$} to todo failed`,Q)}}async handOffReviewWithoutPr($,Z){let X=await this.taskBoard.listActivity(Z.id,Z.organizationId);if(!lJ6(wF(X),Date.now()))return;await IK($,Z,"no pull request is linked to this task \u2014 there is nothing for a "+"reviewer to review")}async reconcileItem($,Z,X){if(!await this.taskBoard.claimSweep($,Z,X))return!1;let Q=await this.taskBoard.getById($,Z);if(!Q)return!1;if(Q.status!=="in_review")return!1;let Y=Q.assigneeId===n8,G=await this.taskBoard.listPrs($,Z),J=await this.contextFactory(Z,Q.assignedBy??Q.createdBy);if(!J)return!1;if(G.length===0){if(Y)await this.handOffReviewWithoutPr(J,Q);return!1}if(await lF$(J,Q))return!0;if(!Y)return!1;let W=await Promise.all(G.map(async(K)=>({...K,...await _y(Z,K)})));if(W.every((K)=>K.state===null))console.warn(`[task-board-review-sweeper] ${$}: no live PR state from GitHub (${W.length} PR(s)) \u2014 proceeding on unknown`);if(!Fo0(W))return!1;return await Aw0(J,Q,{previewMatchesHead:No0(W)}),!0}dispose(){if(this.timer)clearInterval(this.timer),this.timer=null}}var bJ6=60000,xJ6=300000,yJ6=50,gJ6=60000,hJ6=900000,uJ6=120000;var bh$=w(()=>{L9();Xo0();hF();Rn();Y9();L3();wo0();MK();En()});import{readdir as dJ6,rm as iP0}from"fs/promises";import{join as pP0}from"path";async function nP0($){let Z=new Date;Z.setUTCDate(Z.getUTCDate()-mJ6),Z.setUTCHours(0,0,0,0);let X=0;try{let Q=await C_($);for(let Y of Q)if(/^\d{4}$/.test(Y))X+=await xh$($,Y,Z);else if(!Y.startsWith(".")){let G=pP0($,Y),J=await C_(G);for(let K of J){if(!/^\d{4}$/.test(K))continue;X+=await xh$(G,K,Z)}if((await C_(G)).length===0)await iP0(G,{recursive:!0,force:!0})}}catch(Q){console.warn("monitoring retention cleanup failed:",Q)}return X}async function xh$($,Z,X){let Q=0,Y=pP0($,Z),G=await C_(Y);for(let W of G){if(!/^\d{2}$/.test(W))continue;let K=pP0(Y,W),H=await C_(K);for(let N of H){if(!/^\d{2}$/.test(N))continue;let U=new Date(`${Z}-${W}-${N}T00:00:00Z`);if(isNaN(U.getTime()))continue;if(U<X){let O=pP0(K,N);await iP0(O,{recursive:!0,force:!0}),Q++}}if((await C_(K)).length===0)await iP0(K,{recursive:!0,force:!0})}if((await C_(Y)).length===0)await iP0(Y,{recursive:!0,force:!0});return Q}async function C_($){try{return(await dJ6($)).filter((X)=>!X.startsWith("."))}catch{return[]}}var mJ6=30;var b91=()=>{};import{DBOS as x91,SchedulerMode as iJ6}from"@dbos-inc/dbos-sdk";async function nJ6(){let $=[IJ(),__(),WH()],Z=0;for(let X of $)try{Z+=await nP0(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 tJ6($,Z){await x91.runStep(()=>nJ6(),{name:"monitoringRetention"})}function gh$(){if(yh$)return;yh$=!0;let $=x91.registerWorkflow(tJ6,{name:"monitoringRetentionWorkflow"});x91.registerScheduled($,{name:"monitoringRetentionWorkflow",crontab:pJ6,mode:iJ6.ExactlyOncePerIntervalWhenActive})}var pJ6="23 4 * * *",yh$=!1;var hh$=w(()=>{JY();b91()});function uh$($){return async(Z,X)=>{let Q=await $.db.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["member.role","organization.id as orgId","organization.slug as orgSlug","organization.name as orgName"]).where("member.userId","=",X).where("member.organizationId","=",Z).executeTakeFirst();if(!Q)return console.warn(`[automationContextFactory] User ${X} not found in org ${Z} \u2014 returning null`),null;let Y=await sG.create();Y.auth.user={id:X,role:Q.role},Y.organization={id:Q.orgId,slug:Q.orgSlug,name:Q.orgName};let G=await x41($.db,Z,Q.role);return Y.boundAuth=b41({auth:Y.authInstance,headers:new Headers,role:Q.role,permissions:G,userId:X}),Y.access=new BL(X,void 0,Y.boundAuth,Q.role,"self"),zB(Y,{id:Q.orgId,slug:Q.orgSlug}),Y}}var ch$=w(()=>{wL();QC()});function oJ6(){return{services:[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}],migrationsStatus:"pending",serverUrl:null,logs:[]}}function aJ6(){for(let $ of rJ6)$()}function lh$($){let Z=[...y91.logs,$];y91={...y91,logs:Z.length>500?Z.slice(-500):Z},aJ6()}function g91(){return sJ6}var y91,rJ6,sJ6=!1;var h91=w(()=>{y91=oJ6(),rJ6=new Set});import{EventEmitter as eJ6}from"events";var u91;var dh$=w(()=>{h91();u91=new eJ6;u91.on("request",($)=>{lh$($)})});function mh$(){return async($,Z)=>{let X=Date.now(),Q=$.req.method,Y=$.req.path;if(Y==="/api/auth/get-session"||Y.includes("favicon")){await Z();return}let G="",J=!1;if(Y.startsWith("/mcp")&&Q==="POST"){J=!0;try{if($.req.header("Content-Type")?.includes("application/json")){let U=await $.req.raw.clone().json();if(U.method==="tools/call"&&U.params?.name){let O=oh(U.params.name),B=U.params.arguments||{},D=Object.keys(B).map((E)=>oh(E)),L=D.length>0?D.slice(0,3).join(",")+(D.length>3?"\u2026":""):"";G=`${Y5.tool}${O}${Y5.dim}(${L})${Y5.reset}`}else if(U.method)G=`${Y5.dim}${oh(U.method)}${Y5.reset}`}}catch{}}let W=oh(Y);if(Y.startsWith("/mcp/conn_")){let F=Y.split("/")[2]??"";W=`/mcp/${Y5.mcp}${oh(F.slice(0,12))}\u2026${Y5.reset}`}else if(Y==="/mcp")W=`${Y5.mcp}/mcp${Y5.reset}`;else if(Y==="/mcp/registry")W=`${Y5.mcp}/mcp/registry${Y5.reset}`;let K=Z36(Q),H=J?"\u25C0":"\u2190";if(!g91())console.log(`${Y5.dim}${H}${Y5.reset} ${K}${Q}${Y5.reset} ${W}${G?` ${G}`:""}`);try{await Z()}finally{let F=Date.now()-X,N=$.res.status,U=$36(N),O=F<1000?`${F}ms`:`${(F/1000).toFixed(1)}s`,B=J?"\u25B6":"\u2192";if(!g91())console.log(`${Y5.dim}${B}${Y5.reset} ${K}${Q}${Y5.reset} ${W}${G?` ${G}`:""} ${U}${N}${Y5.reset} ${Y5.duration}${O}${Y5.reset}`);u91.emit("request",{method:Q,path:oh(Y),status:N,duration:F,timestamp:new Date})}}}var Y5,$36=($)=>{if($>=500)return Y5.serverError;if($>=400)return Y5.clientError;if($>=300)return Y5.redirect;return Y5.ok},Z36=($)=>{return Y5[$]||Y5.reset},oh=($)=>{return $.replace(/\r/g,"").replace(/\n/g,"").replace(/\x1b\[[0-9;]*m/g,"").replace(/[\x00-\x1f\x7f-\x9f]/g,"")};var ih$=w(()=>{h91();dh$();Y5={reset:"\x1B[0m",dim:"\x1B[2m",bold:"\x1B[1m",GET:"\x1B[36m",POST:"\x1B[33m",PUT:"\x1B[35m",DELETE:"\x1B[31m",ok:"\x1B[32m",redirect:"\x1B[36m",clientError:"\x1B[33m",serverError:"\x1B[31m",mcp:"\x1B[35m",tool:"\x1B[96m",duration:"\x1B[90m"}});import{createHmac as oh$}from"crypto";import{mkdir as X36,readdir as Q36,rm as ph$,stat as rh$}from"fs/promises";import{join as l91,relative as Y36}from"path";import{z as z$}from"zod";function sh$($){let Z=$.replace(/[^a-zA-Z0-9_-]/g,"_");return l91(G36,Z)}function eh$($){return $.replace(/^\/+/,"").replace(/\.\./g,"")}function c91($,Z){let X=sh$($),Q=eh$(Z);return l91(X,Q)}function J36($,Z,X,Q){let Y=b0().encryptionKey||"dev-secret",G=`${$}:${Z}:${X}:${Q}`;return oh$("sha256",Y).update(G).digest("hex")}function th$($,Z,X,Q,Y){let G=Math.floor(Date.now()/1000)+Q,J=J36(Z,X,G,Y),W=new URL(`/api/dev-assets/${Z}/${eh$(X)}`,$);return W.searchParams.set("expires",G.toString()),W.searchParams.set("signature",J),W.searchParams.set("method",Y),W.toString()}function $u$($,Z,X){let Q=`${$}:${Z.getTime()}:${X}`;return`"${oh$("md5","etag").update(Q).digest("hex")}"`}async function Zu$($,Z,X,Q,Y){try{let G=await Q36($,{withFileTypes:!0});for(let J of G){let W=l91($,J.name),H=Y36(Z,W).replace(/\\/g,"/");if(X&&!H.startsWith(X))continue;if(J.isDirectory())if(Q){let F=H+"/";if(!X||F.startsWith(X)){if(!(X?H.slice(X.length):H).includes("/"))Y.commonPrefixes.add(F)}}else await Zu$(W,Z,X,Q,Y);else if(J.isFile()){if(Q&&X){let F=H.slice(X.length);if(F.includes(Q)){let N=F.indexOf(Q),U=X+F.slice(0,N+1);Y.commonPrefixes.add(U);continue}}try{let F=await rh$(W);Y.objects.push({key:H,size:F.size,lastModified:F.mtime.toISOString(),etag:$u$(W,F.mtime,F.size)})}catch{}}}}catch{}}function Xu$($,Z){let Q=t($).id;return[{name:"LIST_OBJECTS",description:"List objects in the local assets directory with pagination support",inputSchema:z$.object({prefix:z$.string().optional(),maxKeys:z$.number().optional().default(1000),continuationToken:z$.string().optional(),delimiter:z$.string().optional()}),outputSchema:z$.object({objects:z$.array(z$.object({key:z$.string(),size:z$.number(),lastModified:z$.string(),etag:z$.string()})),nextContinuationToken:z$.string().optional(),isTruncated:z$.boolean(),commonPrefixes:z$.array(z$.string()).optional()}),handler:async(Y)=>{let G=Y,J=G.prefix||"",W=G.maxKeys??1000,K=G.delimiter,H=G.continuationToken,F=sh$(Q);await X36(F,{recursive:!0});let N={objects:[],commonPrefixes:new Set};await Zu$(F,F,J,K,N),N.objects.sort((L,E)=>L.key.localeCompare(E.key));let U=0;if(H){if(U=N.objects.findIndex((L)=>L.key>H),U===-1)U=N.objects.length}let O=N.objects.slice(U,U+W),B=U+W<N.objects.length,D=B?O[O.length-1]?.key:void 0;return{objects:O,isTruncated:B,nextContinuationToken:D,commonPrefixes:Array.from(N.commonPrefixes).sort()}}},{name:"GET_OBJECT_METADATA",description:"Get metadata for a file in the local assets directory",inputSchema:z$.object({key:z$.string()}),outputSchema:z$.object({contentType:z$.string().optional(),contentLength:z$.number(),lastModified:z$.string(),etag:z$.string(),metadata:z$.record(z$.string(),z$.string()).optional()}),handler:async(Y)=>{let G=Y,J=c91(Q,G.key),W=await rh$(J);return{contentType:P61(G.key),contentLength:W.size,lastModified:W.mtime.toISOString(),etag:$u$(J,W.mtime,W.size)}}},{name:"GET_PRESIGNED_URL",description:"Generate a presigned URL for downloading a file from local storage",inputSchema:z$.object({key:z$.string(),expiresIn:z$.number().optional()}),outputSchema:z$.object({url:z$.string(),expiresIn:z$.number()}),handler:async(Y)=>{let G=Y,J=G.expiresIn??nh$;return{url:th$(Z,Q,G.key,J,"GET"),expiresIn:J}}},{name:"PUT_PRESIGNED_URL",description:"Generate a presigned URL for uploading a file to local storage",inputSchema:z$.object({key:z$.string(),expiresIn:z$.number().optional(),contentType:z$.string().optional()}),outputSchema:z$.object({url:z$.string(),expiresIn:z$.number()}),handler:async(Y)=>{let G=Y,J=G.expiresIn??nh$;return{url:th$(Z,Q,G.key,J,"PUT"),expiresIn:J}}},{name:"DELETE_OBJECT",description:"Delete a single file from local storage",inputSchema:z$.object({key:z$.string()}),outputSchema:z$.object({success:z$.boolean(),key:z$.string()}),handler:async(Y)=>{let G=Y,J=c91(Q,G.key);try{return await ph$(J),{success:!0,key:G.key}}catch{return{success:!1,key:G.key}}}},{name:"DELETE_OBJECTS",description:"Delete multiple files from local storage",inputSchema:z$.object({keys:z$.array(z$.string()).max(1000)}),outputSchema:z$.object({deleted:z$.array(z$.string()),errors:z$.array(z$.object({key:z$.string(),message:z$.string()}))}),handler:async(Y)=>{let G=Y,J=[],W=[];return await Promise.all(G.keys.map(async(K)=>{let H=c91(Q,K);try{await ph$(H),J.push(K)}catch(F){W.push({key:K,message:F instanceof Error?F.message:"Unknown error"})}})),{deleted:J,errors:W}}}]}async function d91($,Z,X){let Q=Xu$(Z,X),Y=new fW({name:"dev-assets-mcp",version:"1.0.0"},{capabilities:{tools:{}},jsonSchemaValidator:H5});for(let J of Q){let W="shape"in J.inputSchema?J.inputSchema.shape:z$.object({}).shape,K=J.outputSchema&&"shape"in J.outputSchema?J.outputSchema.shape:z$.object({}).shape;Y.registerTool(J.name,{description:J.description??"",inputSchema:W,outputSchema:K,annotations:J.annotations,_meta:J._meta},async(H)=>{try{let F=await J.handler(H);return{content:[{type:"text",text:JSON.stringify(F)}],structuredContent:F}}catch(F){return{content:[{type:"text",text:`Error: ${F.message}`}],isError:!0}}})}let G=new sX({enableJsonResponse:$.headers.get("Accept")?.includes("application/json")??!1});return await Y.connect(G),GJ(Y,G,$,"mcp:dev-assets")}async function Qu$($,Z,X,Q){let G=Xu$(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 G36="./data/assets",nh$=3600,ah$,Yu$;var Gu$=w(()=>{T$();gy();P8();ll();BC();CX();cz0();ah$=new U1;ah$.all("/",async($)=>{let Z=$.get("studioContext"),X=new URL($.req.url),Q=`${X.protocol}//${X.host}`;return d91($.req.raw,Z,Q)});Yu$=ah$});var Ju$={};Y4(Ju$,{mountDevRoutes:()=>W36});function W36($,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 d91(Q.req.raw,Y,J)}),$.all("/mcp/:connectionId{.*_dev-assets$}/call-tool/:toolName",Z,async(Q)=>{let Y=Q.get("studioContext"),G=new URL(Q.req.url),J=`${G.protocol}//${G.host}`,W=Q.req.param("toolName");if(!W)return Q.json({error:"Missing tool name"},400);let K=await Q.req.json(),H=await Qu$(W,K,Y,J);if(H.isError)return Q.json(H.content,500);return Q.json(H.content)}),$.use("/mcp/dev-assets",Z),$.route("/mcp/dev-assets",Yu$);let X=new U1;X.use("*",QW({mountPath:"/api/dev-assets"})),X.route("/",uz0({orgFromPath:!1})),$.route("/api/dev-assets",X)}var Wu$=w(()=>{P8();B61();cz0();Gu$()});import{sql as K36}from"kysely";import{randomUUID as Ku$}from"crypto";import{z as H36}from"zod";async function N36($){let Z=new Date().toISOString(),X=Ku$(),Q=l4.SELF($.organizationId),Y="registry.publish_request.created",G={requestId:$.request.id,requestedId:$.request.requested_id,title:$.request.title,status:$.request.status,createdAt:$.request.created_at,requester:{name:$.request.requester_name,email:$.request.requester_email}};await $.db.insertInto("events").values({id:X,organization_id:$.organizationId,type:"registry.publish_request.created",source:Q,specversion:"1.0",subject:$.request.id,time:Z,datacontenttype:"application/json",dataschema:null,data:JSON.stringify(G),cron:null,status:"pending",attempts:0,last_error:null,next_retry_at:null,created_at:Z,updated_at:Z}).execute();let J=await $.db.selectFrom("event_subscriptions").select(["id"]).where("organization_id","=",$.organizationId).where("enabled","=",1).where("event_type","=","registry.publish_request.created").where((W)=>W.or([W("publisher","is",null),W("publisher","=",Q)])).execute();if(J.length>0)await $.db.insertInto("event_deliveries").values(J.map((W)=>({id:Ku$(),event_id:X,subscription_id:W.id,status:"pending",attempts:0,last_error:null,delivered_at:null,next_retry_at:null,created_at:Z}))).execute();try{await K36`SELECT
2789
2789
  pg_notify('studio_events', ${X}),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "decocms",
3
- "version": "4.239.2",
3
+ "version": "4.241.0",
4
4
  "description": "Deco CMS — Self-hostable MCP Gateway for managing AI connections and tools",
5
5
  "author": "Deco team",
6
6
  "repository": {
@@ -1 +0,0 @@
1
- import{r}from"./index-BphIXXOp.js";const i=({size:e=24,color:t="currentColor",...o})=>r.createElement("svg",{viewBox:"0 0 24 24",width:e,height:e,stroke:t,strokeWidth:"2",fill:"none",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",...o},r.createElement("path",{d:"M21 15v1.2c0 1.68 0 2.52-.327 3.162a3 3 0 0 1-1.311 1.311C18.72 21 17.88 21 16.2 21H7.8c-1.68 0-2.52 0-3.162-.327a3 3 0 0 1-1.311-1.311C3 18.72 3 17.88 3 16.2V15m14-5-5 5m0 0-5-5m5 5V3"}));i.displayName="Download01";const n=({size:e=24,color:t="currentColor",...o})=>r.createElement("svg",{viewBox:"0 0 24 24",width:e,height:e,stroke:t,strokeWidth:"2",fill:"none",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",...o},r.createElement("path",{d:"M2 12h20M2 12c0 5.523 4.477 10 10 10M2 12C2 6.477 6.477 2 12 2m10 10c0 5.523-4.477 10-10 10m10-10c0-5.523-4.477-10-10-10m0 0a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10m0-20a15.3 15.3 0 0 0-4 10 15.3 15.3 0 0 0 4 10"}));n.displayName="Globe01";export{n as i,i as n};