decocms 4.197.9 → 4.197.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (225) hide show
  1. package/dist/client/assets/{AlertCircle-CxL-RfpC.js → AlertCircle-V5q6ZGsb.js} +1 -1
  2. package/dist/client/assets/{AreaChart-DjZwE5LG.js → AreaChart-BvWJ2XQ7.js} +1 -1
  3. package/dist/client/assets/{ArrowLeft-QGlpKCf_.js → ArrowLeft-DbHOnUIW.js} +1 -1
  4. package/dist/client/assets/{ArrowUp-DObS8Kur.js → ArrowUp-CpYG5jkO.js} +1 -1
  5. package/dist/client/assets/{ArrowUpRight-DbuubD-7.js → ArrowUpRight-BJayjxfI.js} +1 -1
  6. package/dist/client/assets/{Check-NchPMq7E.js → Check-DAEByF5B.js} +1 -1
  7. package/dist/client/assets/{CheckCircle-B3Cdmfx4.js → CheckCircle-CrW9H134.js} +1 -1
  8. package/dist/client/assets/{ChevronDown-CXpNZ7Wl.js → ChevronDown-Bjss5Vml.js} +1 -1
  9. package/dist/client/assets/{ChevronRight-L7gUokeh.js → ChevronRight-BGjVmut6.js} +1 -1
  10. package/dist/client/assets/{ChevronUp-BemIVRvf.js → ChevronUp-CX_YEMlY.js} +1 -1
  11. package/dist/client/assets/{Copy01-enMpZwC9.js → Copy01-B28h9bAF.js} +1 -1
  12. package/dist/client/assets/{CpuChip01-BSJyG7Iu.js → CpuChip01-BWGWEcqe.js} +1 -1
  13. package/dist/client/assets/{CreditCard01-yXoJBe6p.js → CreditCard01-0u0gKZIG.js} +1 -1
  14. package/dist/client/assets/{DotsVertical-BKQfXrft.js → DotsVertical-BFha7Xto.js} +1 -1
  15. package/dist/client/assets/{Eye-adT78Eq5.js → Eye-DQdeduJV.js} +1 -1
  16. package/dist/client/assets/{FilterLines-BJuwDPKZ.js → FilterLines-CgznPcEi.js} +1 -1
  17. package/dist/client/assets/{Globe01-awr89_h1.js → Globe01-CTIzc7FG.js} +1 -1
  18. package/dist/client/assets/{Globe04-DZXkguTi.js → Globe04-J1R-pL3w.js} +1 -1
  19. package/dist/client/assets/{HardDrive-RfmZHKeG.js → HardDrive-UpxzOVXl.js} +1 -1
  20. package/dist/client/assets/{Key01-BmYYLASu.js → Key01-DP2FPTTv.js} +1 -1
  21. package/dist/client/assets/{LayoutLeft-5lCxAw7M.js → LayoutLeft-DcaHX-AX.js} +1 -1
  22. package/dist/client/assets/{LinkExternal01-Cjeld-3X.js → LinkExternal01-Dn83fhF5.js} +1 -1
  23. package/dist/client/assets/{LogOut01-DgyImBAB.js → LogOut01-eTb5Hb_a.js} +1 -1
  24. package/dist/client/assets/{Monitor01-DCle44xE.js → Monitor01-CweVCjuU.js} +1 -1
  25. package/dist/client/assets/{Palette-DICUlP9p.js → Palette-B_kRpNqI.js} +1 -1
  26. package/dist/client/assets/{Play-CrcZkMuS.js → Play-Dyt0eTtd.js} +1 -1
  27. package/dist/client/assets/{Plus-DFc7q_gc.js → Plus-C5jl13My.js} +1 -1
  28. package/dist/client/assets/{SearchLg-ZjMSmToh.js → SearchLg-F_sh14Gy.js} +1 -1
  29. package/dist/client/assets/{SearchMd-ByFawt5e.js → SearchMd-KqjjXVY2.js} +1 -1
  30. package/dist/client/assets/{Settings02-C3Q5pZS9.js → Settings02-BVdNx8mH.js} +1 -1
  31. package/dist/client/assets/{Share07-BAXj2rKU.js → Share07-DtVcn7WC.js} +1 -1
  32. package/dist/client/assets/{Shield01-Bf6Et42o.js → Shield01-DO64XOZV.js} +1 -1
  33. package/dist/client/assets/{Star01-M4sGz3R4.js → Star01-4zsGR6T5.js} +1 -1
  34. package/dist/client/assets/{Stars01-Xl3Ex0DK.js → Stars01-Cf4ussTv.js} +1 -1
  35. package/dist/client/assets/{Stars02-CHBLXdtx.js → Stars02-6bvS1Npi.js} +1 -1
  36. package/dist/client/assets/{Sun-DqJj03qC.js → Sun-D2zYQSSr.js} +1 -1
  37. package/dist/client/assets/{SwitchHorizontal01-Dns3MNo-.js → SwitchHorizontal01-BoHqRaIO.js} +1 -1
  38. package/dist/client/assets/{Tool01-BOX2-PtT.js → Tool01-C9uqHeLn.js} +1 -1
  39. package/dist/client/assets/{Tool02-CSGK12K4.js → Tool02-Cq-7tfI8.js} +1 -1
  40. package/dist/client/assets/{Trash01--_ZRAP6e.js → Trash01-X4G23Jr7.js} +1 -1
  41. package/dist/client/assets/{TrendUp01-DRrCk8h7.js → TrendUp01-D1FBIzHh.js} +1 -1
  42. package/dist/client/assets/{Upload01-DMQ98pQD.js → Upload01-CSS9udHq.js} +1 -1
  43. package/dist/client/assets/{User01-hKrb3XrS.js → User01-CDSa6ww6.js} +1 -1
  44. package/dist/client/assets/{Users01-BwTYmy26.js → Users01-pRULjU57.js} +1 -1
  45. package/dist/client/assets/{Users03-B6gdf3vD.js → Users03-Cm21qo0h.js} +1 -1
  46. package/dist/client/assets/{X-eoljqW_w.js → X-CuRROejy.js} +1 -1
  47. package/dist/client/assets/{XCircle-DgmOKCj_.js → XCircle-CXK7n7LR.js} +1 -1
  48. package/dist/client/assets/{XClose-D05_PZ5P.js → XClose-CB6SJUhu.js} +1 -1
  49. package/dist/client/assets/{Zap-v9T1n40K.js → Zap-D2FSu33p.js} +1 -1
  50. package/dist/client/assets/{ZapSquare-BuGiMQU_.js → ZapSquare-oPnMoZHp.js} +1 -1
  51. package/dist/client/assets/{access-gate-_ma_Bi3d.js → access-gate-CrJOZowc.js} +1 -1
  52. package/dist/client/assets/{agent-icon-BpQi7Tlx.js → agent-icon-CKfOJSkG.js} +1 -1
  53. package/dist/client/assets/{agents-list-CqSKTnQA.js → agents-list-DntMgnUv.js} +1 -1
  54. package/dist/client/assets/{ai-providers-Dc4MIOhV.js → ai-providers-rhjAy1-9.js} +1 -1
  55. package/dist/client/assets/{alert-DwBMDgi1.js → alert-DwZ8uYwL.js} +1 -1
  56. package/dist/client/assets/{alert-dialog-D_A2_A2V.js → alert-dialog-3zgDY-JS.js} +1 -1
  57. package/dist/client/assets/{app-editor-CX9G9zDm.js → app-editor-DVPLiGet.js} +1 -1
  58. package/dist/client/assets/{auth-ClQ0V7_D.js → auth-DjwyiIK1.js} +1 -1
  59. package/dist/client/assets/{auth-catchall-QTduNgIH.js → auth-catchall-B1n80k1M.js} +1 -1
  60. package/dist/client/assets/{auth-entry-D8PlzWZ6.js → auth-entry-D3lqIaPf.js} +1 -1
  61. package/dist/client/assets/{auth-split-layout-ESbd1LYl.js → auth-split-layout-Ojf8ogUx.js} +1 -1
  62. package/dist/client/assets/{authenticate-and-persist-oauth-DbWzUSJ2.js → authenticate-and-persist-oauth-DyECUkxO.js} +1 -1
  63. package/dist/client/assets/{automation-list-row-NEOp8E1l.js → automation-list-row-pVBnexau.js} +1 -1
  64. package/dist/client/assets/{automation-runs-Dp14ZuLU.js → automation-runs-CX-2JT3f.js} +1 -1
  65. package/dist/client/assets/{automations-DOT8XXKq.js → automations-DGbgRof5.js} +1 -1
  66. package/dist/client/assets/{avatar-DRnc8deS.js → avatar-CpQW9JpY.js} +1 -1
  67. package/dist/client/assets/{badge-DUX3qr7D.js → badge-B6cSZESa.js} +1 -1
  68. package/dist/client/assets/{billing-DwNlxWcm.js → billing-CkFRRgu2.js} +1 -1
  69. package/dist/client/assets/{block-document-BDVza8fk.js → block-document-BqJJpA8m.js} +1 -1
  70. package/dist/client/assets/{brand-context-BlMnN_Rp.js → brand-context-FZj3laHr.js} +1 -1
  71. package/dist/client/assets/{buckets-BPBmQjOv.js → buckets-CUv0ncw1.js} +1 -1
  72. package/dist/client/assets/{bulk-category-panel-DfypEtzo.js → bulk-category-panel-Bv1nm6ET.js} +1 -1
  73. package/dist/client/assets/{capability-load-error-D7hyVEWb.js → capability-load-error-DnFudlB5.js} +1 -1
  74. package/dist/client/assets/{card-CTtv_Lg1.js → card-BIirS6Wm.js} +1 -1
  75. package/dist/client/assets/{cards-DPdBE6oR.js → cards-CHHhP59y.js} +1 -1
  76. package/dist/client/assets/{category-editor-DSn5J5ho.js → category-editor-Df3UDhBN.js} +1 -1
  77. package/dist/client/assets/{chat-context-B7NV9JYC.js → chat-context-D98_IvwC.js} +1 -1
  78. package/dist/client/assets/{checkbox-BWo1JzBj.js → checkbox-CS6oiDYx.js} +1 -1
  79. package/dist/client/assets/{cli-auth-success-DwsqvBUo.js → cli-auth-success-Bxc_GwYc.js} +1 -1
  80. package/dist/client/assets/{collection-detail-kir5m68_.js → collection-detail-Cj0ftBnV.js} +1 -1
  81. package/dist/client/assets/{collection-display-button-BCiw8WqR.js → collection-display-button-l7r334wD.js} +1 -1
  82. package/dist/client/assets/{collection-search-S3K5dXrJ.js → collection-search-CY1JClJ3.js} +1 -1
  83. package/dist/client/assets/{collection-table-wrapper-CA4ffInB.js → collection-table-wrapper-BsE0Uwov.js} +1 -1
  84. package/dist/client/assets/{collection-tabs-LBdOoBUv.js → collection-tabs-Dp3LyUPw.js} +1 -1
  85. package/dist/client/assets/{command-BmAKHjXy.js → command-5yxpzkTc.js} +1 -1
  86. package/dist/client/assets/{commerce-onboarding-TvZ2hLDv.js → commerce-onboarding-wHzu60hU.js} +1 -1
  87. package/dist/client/assets/{connect-CGZViud0.js → connect-CmDdRUOy.js} +1 -1
  88. package/dist/client/assets/{connection-KjfJPwtm.js → connection-DgUJaGux.js} +1 -1
  89. package/dist/client/assets/{connection-card-CQl1tHJ5.js → connection-card-CLBydNIu.js} +1 -1
  90. package/dist/client/assets/{connection-detail-DVTiZidF.js → connection-detail-DBkGq0H6.js} +1 -1
  91. package/dist/client/assets/{connection-form-helpers-BJzHKC3_.js → connection-form-helpers-Tni1x7cy.js} +1 -1
  92. package/dist/client/assets/{connections-DW_Dj7Wv.js → connections-CYhJzeJz.js} +1 -1
  93. package/dist/client/assets/{decopilot-sse-pool-Ci-3o-q5.js → decopilot-sse-pool-Dr020en0.js} +1 -1
  94. package/dist/client/assets/{dialog-l2OBsV75.js → dialog-DlYbt7z3.js} +1 -1
  95. package/dist/client/assets/{domain-settings-CU8Zb9ZY.js → domain-settings-BhnS8Y1z.js} +1 -1
  96. package/dist/client/assets/{drawer-BGv3qgzL.js → drawer-Cgi7pz9a.js} +1 -1
  97. package/dist/client/assets/{dropdown-menu-COzMAu_L.js → dropdown-menu-BBCeToN_.js} +1 -1
  98. package/dist/client/assets/{empty-state-BCvFmA3Z.js → empty-state-Vl-ZG0b9.js} +1 -1
  99. package/dist/client/assets/{extract-connection-data-C6Hlcz0-.js → extract-connection-data-dHqlMWep.js} +1 -1
  100. package/dist/client/assets/{file-explorer-DECqbPYE.js → file-explorer-BJ0ukpie.js} +1 -1
  101. package/dist/client/assets/{file-type-icon-Cq3oEmFu.js → file-type-icon-D5D5i3YP.js} +1 -1
  102. package/dist/client/assets/{form-ihaDTVuG.js → form-yy73gw2K.js} +1 -1
  103. package/dist/client/assets/{general-Ci5U5abl.js → general-CI3A6DWg.js} +1 -1
  104. package/dist/client/assets/{github-repo-picker-CyYRtM1S.js → github-repo-picker-BH2ayUaO.js} +1 -1
  105. package/dist/client/assets/{hooks-DswAQjSR.js → hooks-CJHxKTUE.js} +1 -1
  106. package/dist/client/assets/{index-B_RnzDaZ.js → index-B3XoS4IT.js} +1 -1
  107. package/dist/client/assets/{index-HM6u45SK.js → index-BFV_VYUz.js} +1 -1
  108. package/dist/client/assets/{index-qqGYnWk5.js → index-B_1Z9z44.js} +1 -1
  109. package/dist/client/assets/{index-DWASj6K-.js → index-C1MGccCL.js} +1 -1
  110. package/dist/client/assets/{index-BuLcmyVS.js → index-CcWxwSOv.js} +1 -1
  111. package/dist/client/assets/{index-X0MP80DX.js → index-DPJwQpAe.js} +1 -1
  112. package/dist/client/assets/{index-DEbaQiYb.js → index-DQtLFXTk.js} +3 -3
  113. package/dist/client/assets/{index-JlUzT4cR.js → index-DmL7Zhiy.js} +1 -1
  114. package/dist/client/assets/index-HhomUO-s.js +1 -0
  115. package/dist/client/assets/{index-CJf78SgJ.js → index-U4KLKG0Q.js} +5 -5
  116. package/dist/client/assets/{index-redirect-B2hsGDQI.js → index-redirect-DzGaoHjj.js} +1 -1
  117. package/dist/client/assets/{input-B7OfYqtf.js → input-DSUm_Erg.js} +1 -1
  118. package/dist/client/assets/{integration-icon-DDadrQV4.js → integration-icon-Cmjaxx59.js} +1 -1
  119. package/dist/client/assets/{invite-member-dialog-CCaqhrix.js → invite-member-dialog-DpEsLIsR.js} +1 -1
  120. package/dist/client/assets/{label-CqIESyIw.js → label-BfvSISi4.js} +1 -1
  121. package/dist/client/assets/{layout-Bh7O6rjS.js → layout-CCpcZA-o.js} +1 -1
  122. package/dist/client/assets/{login-BYxV-Cum.js → login-BU8lDE4x.js} +1 -1
  123. package/dist/client/assets/{mcp-oauth-CEiOweoR.js → mcp-oauth-CxCw9mAZ.js} +1 -1
  124. package/dist/client/assets/{members-bo2XnfZN.js → members-Ble-PH_O.js} +1 -1
  125. package/dist/client/assets/{monaco-editor-CGjJD7Yf.js → monaco-editor-or6u5lRp.js} +1 -1
  126. package/dist/client/assets/{monitoring-stats-row-7hWpYxAE.js → monitoring-stats-row-BrsJF8DR.js} +1 -1
  127. package/dist/client/assets/{multi-select-D1t8lp-H.js → multi-select-RUQMTstq.js} +1 -1
  128. package/dist/client/assets/{oauth-callback-C3YoIfJU.js → oauth-callback-CHMBnxyK.js} +1 -1
  129. package/dist/client/assets/{oauth-callback-ai-provider-BgOg2rhU.js → oauth-callback-ai-provider-C_gUw-X4.js} +1 -1
  130. package/dist/client/assets/{onboarding-BGJFgYbo.js → onboarding-CsL1hjkt.js} +1 -1
  131. package/dist/client/assets/{org-layout-DJPs60To.js → org-layout-DTV_NSvx.js} +1 -1
  132. package/dist/client/assets/{organization-choice-CvBxwHTS.js → organization-choice-Bbzu3zoU.js} +1 -1
  133. package/dist/client/assets/{orgs-BtbLgWMZ.js → orgs-zKbqVh4s.js} +1 -1
  134. package/dist/client/assets/{page-seo-form-BzCO3YjG.js → page-seo-form-BN0SiVDd.js} +1 -1
  135. package/dist/client/assets/{popover-nTH3V4Su.js → popover-LB3jPZY1.js} +1 -1
  136. package/dist/client/assets/{post-editor-CYHCnEOe.js → post-editor-ZrGFXj8M.js} +1 -1
  137. package/dist/client/assets/{primitives-DQJhK8OJ.js → primitives-SNKJiPyO.js} +1 -1
  138. package/dist/client/assets/{profile-C-TnAt3y.js → profile-BAQmhtRa.js} +1 -1
  139. package/dist/client/assets/{project-app-view-C-_FtNDZ.js → project-app-view-h0MzOhBC.js} +1 -1
  140. package/dist/client/assets/record-editor-Cbb9yqyi.js +1 -0
  141. package/dist/client/assets/{redirect-editor-BvRYWu7P.js → redirect-editor-D3Ir9FS3.js} +1 -1
  142. package/dist/client/assets/{registry-layout-DhDvedO-.js → registry-layout-X0o9TF3Z.js} +1 -1
  143. package/dist/client/assets/registry-zeKMAirh.js +2 -0
  144. package/dist/client/assets/{reports-DHMR3j7U.js → reports-C4ZXcxiE.js} +1 -1
  145. package/dist/client/assets/{require-capability-C6Id1rRI.js → require-capability-CrGKgtji.js} +1 -1
  146. package/dist/client/assets/{required-auth-layout-C-LS_LM4.js → required-auth-layout-jy5QJ-_y.js} +1 -1
  147. package/dist/client/assets/{reset-password-JHz8ofpJ.js → reset-password-K7bXbyHG.js} +1 -1
  148. package/dist/client/assets/{roles-DCgaw00r.js → roles-KVGYQGU9.js} +1 -1
  149. package/dist/client/assets/{search-input-DEQe5giW.js → search-input-C0EkBLxj.js} +1 -1
  150. package/dist/client/assets/{secrets-B0Aq7rFx.js → secrets-D-64en9F.js} +1 -1
  151. package/dist/client/assets/{sections-editor-I92gDJWz.js → sections-editor-DEVx7fnk.js} +1 -1
  152. package/dist/client/assets/{select-C2kXd7SW.js → select-D-apSMci.js} +1 -1
  153. package/dist/client/assets/{select-model-CT1cndvk.js → select-model-B6uVfhWc.js} +1 -1
  154. package/dist/client/assets/{self-tool-result-DcZl_ru3.js → self-tool-result-C0htamES.js} +1 -1
  155. package/dist/client/assets/{seo-editor-Dccmyr8R.js → seo-editor-80AalZ7q.js} +1 -1
  156. package/dist/client/assets/{settings-layout-BlAOClxP.js → settings-layout-BPFqAegW.js} +1 -1
  157. package/dist/client/assets/{settings-section-Cua_qQsp.js → settings-section-B3bCRATC.js} +1 -1
  158. package/dist/client/assets/{shell-controls-xpYRsfDc.js → shell-controls-Bsq3Cov_.js} +1 -1
  159. package/dist/client/assets/{shell-layout-CbJEWfC_.js → shell-layout-CDUa0RQi.js} +1 -1
  160. package/dist/client/assets/{sidebar-Cb_cMZ4R.js → sidebar-DQpwqVH6.js} +1 -1
  161. package/dist/client/assets/{skeleton-it0qrRni.js → skeleton-C4ladDy0.js} +1 -1
  162. package/dist/client/assets/{spinner-BVC1xDRP.js → spinner-BQC50G3I.js} +1 -1
  163. package/dist/client/assets/{sso-CP0wHV8C.js → sso-DzXMWQrm.js} +1 -1
  164. package/dist/client/assets/{store-CZnW4C-x.js → store-BOhFfiVO.js} +1 -1
  165. package/dist/client/assets/store-registry-CFBj0Hu2.js +2 -0
  166. package/dist/client/assets/{studio-tools-yOOEvZ0I.js → studio-tools-CBZ7-w7E.js} +1 -1
  167. package/dist/client/assets/{switch-CekPri_v.js → switch-DUYCjSJv.js} +1 -1
  168. package/dist/client/assets/{synced-repos-C4vrlsqf.js → synced-repos-D6612TVT.js} +1 -1
  169. package/dist/client/assets/{tab-id-XaxwFZI6.js → tab-id-Cub_nviB.js} +1 -1
  170. package/dist/client/assets/{table-DZEgcOaR.js → table-BrHLfa07.js} +1 -1
  171. package/dist/client/assets/{tabs-DrAnIJkr.js → tabs-D4u23tQO.js} +1 -1
  172. package/dist/client/assets/{textarea-CgnaTku6.js → textarea-1PgWx7sr.js} +1 -1
  173. package/dist/client/assets/{toggle-group-D7He3t53.js → toggle-group-9l3gKSIn.js} +1 -1
  174. package/dist/client/assets/{toolbar-DVtb5mku.js → toolbar-CBPM3wJm.js} +1 -1
  175. package/dist/client/assets/{tooltip-DqnhA4S0.js → tooltip-oxGz82xn.js} +1 -1
  176. package/dist/client/assets/{use-ai-providers-CSj-UhVU.js → use-ai-providers-CQN7J_3n.js} +1 -1
  177. package/dist/client/assets/{use-automations-PSzopaCj.js → use-automations-0gtBNMtm.js} +1 -1
  178. package/dist/client/assets/{use-autosave-Cv9eOEDd.js → use-autosave-DAb3LjfB.js} +1 -1
  179. package/dist/client/assets/{use-capability-B9SgkrO9.js → use-capability-C03WMdXO.js} +1 -1
  180. package/dist/client/assets/{use-clock-tick-DnJ7-WzZ.js → use-clock-tick-BHSy6RA8.js} +1 -1
  181. package/dist/client/assets/{use-connection-D7SgOzPk.js → use-connection-DTT5IHiu.js} +1 -1
  182. package/dist/client/assets/{use-copy-BQlJWb-8.js → use-copy-DzYhimX2.js} +1 -1
  183. package/dist/client/assets/{use-create-virtual-mcp-Cit_t3dS.js → use-create-virtual-mcp-CiJqGn3b.js} +1 -1
  184. package/dist/client/assets/{use-debounced-autosave-D-9ghw8r.js → use-debounced-autosave-CfukZ-3I.js} +1 -1
  185. package/dist/client/assets/{use-debounced-value-CDC2N1qD.js → use-debounced-value-CouYt5rY.js} +1 -1
  186. package/dist/client/assets/{use-deco-credits-BXaNbiJH.js → use-deco-credits-14iZTzLL.js} +1 -1
  187. package/dist/client/assets/{use-decopilot-events-C1Le25GL.js → use-decopilot-events-DcQ67ld6.js} +1 -1
  188. package/dist/client/assets/{use-delete-connection-DcMtQdIb.js → use-delete-connection-RFk_9kEE.js} +1 -1
  189. package/dist/client/assets/{use-deployment-admin-2Zzfpare.js → use-deployment-admin-BaKBzevn.js} +1 -1
  190. package/dist/client/assets/{use-file-configs-C8dctNTt.js → use-file-configs-DZ9S6XiA.js} +1 -1
  191. package/dist/client/assets/{use-infinite-scroll-C-lZkX8C.js → use-infinite-scroll-CGnIpLJw.js} +1 -1
  192. package/dist/client/assets/{use-join-requests-7hZ3_biA.js → use-join-requests-CMNencDg.js} +1 -1
  193. package/dist/client/assets/{use-mcp-client-CDVFynb6.js → use-mcp-client-DBzQk09p.js} +1 -1
  194. package/dist/client/assets/{use-mcp-tools-CRlQxYGi.js → use-mcp-tools-DIk8gtU5.js} +1 -1
  195. package/dist/client/assets/{use-members-lmvp2uqq.js → use-members-Bm7mhhwQ.js} +1 -1
  196. package/dist/client/assets/{use-mobile-Bnp6g-MW.js → use-mobile-B-iR7fuq.js} +1 -1
  197. package/dist/client/assets/{use-navigate-to-agent-CiwVjkEh.js → use-navigate-to-agent-DNEdwRRC.js} +1 -1
  198. package/dist/client/assets/{use-open-billing-url-CTO4nDDH.js → use-open-billing-url-DFhwtLAH.js} +1 -1
  199. package/dist/client/assets/{use-org-auth-client-CGIpCAgZ.js → use-org-auth-client-Bfgxgehq.js} +1 -1
  200. package/dist/client/assets/{use-org-sso-C5JHilQx.js → use-org-sso-BLrrMByk.js} +1 -1
  201. package/dist/client/assets/{use-organization-roles-BDz91tMq.js → use-organization-roles-Bu-22_hB.js} +1 -1
  202. package/dist/client/assets/{use-organization-settings-DM6nHt7O.js → use-organization-settings-Z1d_LhJ6.js} +1 -1
  203. package/dist/client/assets/{use-registry-connections-CjpxWSUv.js → use-registry-connections-CCCZS0XT.js} +1 -1
  204. package/dist/client/assets/{use-secrets-Cq8NXR9W.js → use-secrets-ZNl74urv.js} +1 -1
  205. package/dist/client/assets/{use-section-preview-base-KGT4_3Ie.js → use-section-preview-base-BsgHHYe1.js} +1 -1
  206. package/dist/client/assets/{use-status-sounds-hbtHnhwP.js → use-status-sounds-TW0uho6k.js} +1 -1
  207. package/dist/client/assets/{use-tags-URA6Ioo7.js → use-tags-BpNBUA8C.js} +1 -1
  208. package/dist/client/assets/{use-view-mode-ha4q8XRt.js → use-view-mode-CT3Z-WPt.js} +1 -1
  209. package/dist/client/assets/{use-virtual-mcp-C3zshab_.js → use-virtual-mcp-DxafBc8a.js} +1 -1
  210. package/dist/client/assets/useInfiniteQuery-i3dhUyy7.js +1 -0
  211. package/dist/client/assets/{useRouterState-CZs02ElB.js → useRouterState-DQSKmQfk.js} +1 -1
  212. package/dist/client/assets/useSuspenseInfiniteQuery-BQytHROn.js +1 -0
  213. package/dist/client/assets/{users-Bn-BZ5gD.js → users-DwvGAj2Y.js} +1 -1
  214. package/dist/client/assets/{variant-calendar-BITB5ZIA.js → variant-calendar-Dm548uok.js} +1 -1
  215. package/dist/client/assets/{view-mode-toggle-Cb2pnfgo.js → view-mode-toggle-D3jq_w3J.js} +1 -1
  216. package/dist/client/index.html +1 -1
  217. package/dist/server/cli.js +1 -1
  218. package/dist/server/server.js +1 -1
  219. package/package.json +1 -1
  220. package/dist/client/assets/index-CzXy10g8.js +0 -1
  221. package/dist/client/assets/record-editor-CbEjcAdg.js +0 -1
  222. package/dist/client/assets/registry-gWLSq7CY.js +0 -2
  223. package/dist/client/assets/store-registry-V_cCFlH_.js +0 -2
  224. package/dist/client/assets/useInfiniteQuery-B1LXfdHm.js +0 -1
  225. package/dist/client/assets/useSuspenseInfiniteQuery-BPl7Irbr.js +0 -1
@@ -1332,7 +1332,7 @@ Usage: deco services <up|down|status>`),process.exit(1)}}var fc1=O(()=>{kx()});f
1332
1332
  `.execute($);if(Number(W.rows[0]?.cnt)===0){console.warn(`Failed to migrate ${J}/${K}, keeping in old table`);continue}}await Xb`
1333
1333
  DELETE FROM kysely_migration WHERE name = ${X}
1334
1334
  `.execute($)}}async function ei1($){await Vc6($),await Sc6($);let Z=new ai1({db:$,provider:{getMigrations:()=>Promise.resolve(dl0)}}),{error:X,results:Q}=await Z.migrateToLatest(),Y=0;if(Q?.forEach((G)=>{if(G.status==="Success")Y++;else if(G.status==="Error")console.error(`Failed to execute migration "${G.migrationName}"`)}),X)throw console.error("Failed to migrate"),console.error(X),X;return Y}async function Cc6($){let{keepOpen:Z=!1,database:X,skipBetterAuth:Q=!1}=$??{},Y="skipped";if(!Q&&!X)Y=await Bh0();let G=X??U6(),J=async()=>{if(!Z&&!X)await Bw(G).catch((K)=>{console.warn("Warning: Error closing database:",K)})};try{let K=await ei1(G.db);return await J(),{betterAuth:Y,kysely:K}}catch(K){throw await J(),K}}async function _c6(){let $=U6(),Z=new ai1({db:$.db,provider:{getMigrations:()=>Promise.resolve(dl0)}}),{error:X,results:Q}=await Z.migrateDown();if(Q?.forEach((Y)=>{if(Y.status==="Success")console.log(`\u2705 Migration "${Y.migrationName}" rolled back successfully`);else if(Y.status==="Error")console.error(`\u274C Failed to rollback migration "${Y.migrationName}"`)}),X)throw console.error("Failed to rollback migration"),console.error(X),X}var Zn1=O(()=>{ri1();Oh0();o7()});async function p50($){let Z={...process.env},X=u00($,Z);console.log(OF1(X.settings.encryptionKey));let Q=X.settings.betterAuthSecret||(X.settings.localMode?Fd1(X.settings.dataDir):""),{ensureServices:Y}=await Promise.resolve().then(() => (Q50(),X50)),{outputs:G,services:J}=await Y({home:X.settings.dataDir,externalDatabaseUrl:X.externalDatabaseUrl,externalNatsUrl:X.externalNatsUrl});if(!X.skipMigrations){let{migrateBetterAuth:W}=await Promise.resolve().then(() => (Oh0(),Bd1));await W(G.databaseUrl);let{createDatabase:H}=await Promise.resolve().then(() => (o7(),Sl1)),{migrateToLatest:U}=await Promise.resolve().then(() => (Zn1(),$n1)),N=H(G.databaseUrl);await U({keepOpen:!0,database:N,skipBetterAuth:!0})}let K={...X.settings,betterAuthSecret:Q,databaseUrl:G.databaseUrl,natsUrls:G.natsUrls,...G.s3?{s3Endpoint:G.s3.endpoint,s3Bucket:G.s3.bucket,s3AccessKeyId:G.s3.accessKeyId,s3SecretAccessKey:G.s3.secretAccessKey,s3ForcePathStyle:G.s3.forcePathStyle}:{},...G.natsTunnel?{natsPublicUrl:G.natsTunnel.publicUrl,natsAccountJwt:G.natsTunnel.accountJwt,natsAccountSigningKey:G.natsTunnel.accountSigningKey,natsOperatorJwt:G.natsTunnel.operatorJwt,natsTunnelPublicEnabled:!0,natsCredsPath:G.natsTunnel.credsPath}:{}};return bc1(K),{settings:K,services:J.map((W)=>({name:W.name==="PostgreSQL"?"Postgres":W.name,port:W.port})),managedServiceNames:J.filter((W)=>W.owner==="managed").map((W)=>W.name)}}var ml0=O(()=>{kx();wd1();b8()});var Yn1={};w0(Yn1,{updateService:()=>pD,subscribeCliState:()=>pl0,setTuiConsoleIntercepted:()=>t50,setServerUrl:()=>km,setMigrationsDone:()=>Mm,setDevMode:()=>fc6,resetCliStateForTests:()=>vc6,isTuiConsoleIntercepted:()=>o50,getCliState:()=>nl0,addLogEntry:()=>zw});function Xn1(){return{services:[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}],migrationsStatus:"pending",serverUrl:null,logs:[]}}function vc6(){SQ=Xn1()}function xc6(){return[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}]}function qm(){for(let $ of il0)$()}function nl0(){return SQ}function pl0($){return il0.add($),()=>il0.delete($)}function pD($){SQ={...SQ,services:SQ.services.map((Z)=>Z.name===$.name?$:Z)},qm()}function Mm(){SQ={...SQ,migrationsStatus:"done"},qm()}function km($){SQ={...SQ,serverUrl:$},qm()}function zw($){let Z=[...SQ.logs,$];SQ={...SQ,logs:Z.length>500?Z.slice(-500):Z},qm()}function fc6(){SQ={...SQ,services:[...xc6(),{name:"API",status:"pending",port:0},{name:"Vite",status:"pending",port:0}]},qm()}function t50($){Qn1=$}function o50(){return Qn1}var SQ,il0,Qn1=!1;var tD=O(()=>{SQ=Xn1();il0=new Set});import{createServer as Gn1}from"net";function bc6($){return new Promise((Z)=>{let X=Gn1();X.once("error",()=>Z(!1)),X.listen($,"0.0.0.0",()=>{X.close(()=>Z(!0))})})}async function Vm($){if(await bc6($))return $;let Z=await new Promise((X,Q)=>{let Y=Gn1();Y.once("error",Q),Y.listen(0,"0.0.0.0",()=>{let G=Y.address(),J=typeof G==="object"&&G?G.port:0;Y.close(()=>X(J))})});return console.warn(`Port ${$} is in use, using port ${Z} instead.`),Z}var tl0=()=>{};function Sm($){return $.replace(/\x1b\[[0-9;]*m/g,"")}var ol0={};w0(ol0,{startDevServer:()=>gc6});import{join as yc6}from"path";function Jn1($){let Z=$.getReader(),X=new TextDecoder,Q="";function Y(){let G=Q.split(`
1335
- `);Q=G.pop()??"";for(let J of G){let K=Sm(J).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;zw({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:K})}}(async()=>{for(;;){let{done:G,value:J}=await Z.read();if(G)break;Q+=X.decode(J,{stream:!0}),Y()}if(Q.trim()){let G=Sm(Q).replace(/^\[\d+\]\s*/,"").trim();if(G)zw({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:G})}})()}async function gc6($){let{baseUrl:Z,noTui:X}=$,Q=process.env.HOST==="0.0.0.0"&&Boolean(process.env.PORT),Y=Q?process.env.PORT:$.vitePort,G=Z||`http://localhost:${Y}`,J=Q?await Vm(Number(Y)+1):await Vm(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await p50({port:String(J),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let L of W)pD({name:L.name,status:"ready",port:L.port});Mm();let U=yc6(import.meta.dir,"..","..","..","..",".."),N=X===!0,F=Bun.spawn(["bun","run","dev:servers"],{cwd:U,env:{...process.env,PORT:String(K.port),VITE_PORT:String(Y),DATABASE_URL:K.databaseUrl,NATS_URL:K.natsUrls.join(","),NODE_ENV:K.nodeEnv,BASE_URL:G,DECOCMS_LOCAL_MODE:String(K.localMode),DECOCMS_HOME:K.dataDir,DATA_DIR:K.dataDir,DECO_CLI:"1",...K.betterAuthSecret?{BETTER_AUTH_SECRET:K.betterAuthSecret}:{},...K.s3Endpoint?{S3_ENDPOINT:K.s3Endpoint,S3_BUCKET:K.s3Bucket??"",S3_ACCESS_KEY_ID:K.s3AccessKeyId??"",S3_SECRET_ACCESS_KEY:K.s3SecretAccessKey??"",S3_FORCE_PATH_STYLE:String(K.s3ForcePathStyle)}:{},...K.natsPublicUrl&&K.natsAccountJwt&&K.natsAccountSigningKey?{NATS_PUBLIC_URL:K.natsPublicUrl,NATS_ACCOUNT_JWT:K.natsAccountJwt,NATS_ACCOUNT_SIGNING_KEY:K.natsAccountSigningKey,NATS_OPERATOR_JWT:K.natsOperatorJwt??"",NATS_TUNNEL_PUBLIC_ENABLED:"true",...K.natsCredsPath?{NATS_CREDS:K.natsCredsPath}:{}}:{}},stdio:["inherit",N?"inherit":"pipe",N?"inherit":"pipe"]});if(!N)Jn1(F.stdout),Jn1(F.stderr);km(G),pD({name:"Vite",status:"ready",port:Number(Y)}),pD({name:"API",status:"ready",port:Number(K.port)});let B=async(L)=>{if(F.kill(L),await F.exited,H.length>0){let{stopServices:D}=await Promise.resolve().then(() => (Q50(),X50));await D(K.dataDir)}};return process.on("SIGINT",()=>B("SIGINT")),process.on("SIGTERM",()=>B("SIGTERM")),{port:Number(Y),process:F}}var rl0=O(()=>{ml0();tD();tl0()});var r50;var al0=O(()=>{r50={name:"decocms",version:"4.197.9",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@nats-io/jwt":"0.0.10-5","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});import{Box as uc6,Text as Kn1}from"ink";import{jsx as cc6,jsxs as Wn1}from"react/jsx-runtime";function Hn1({version:$}){return Wn1(uc6,{flexDirection:"column",marginTop:1,children:[R50.map((Z,X)=>cc6(Kn1,{color:I50[X],children:Z},X)),Wn1(Kn1,{dimColor:!0,children:[" v",$]})]})}var Un1=O(()=>{Om()});import{Box as oD,Text as jw}from"ink";import{Spinner as lc6}from"@inkjs/ui";import{jsx as hY,jsxs as Qb}from"react/jsx-runtime";function Nn1({status:$}){if($==="pending")return hY(lc6,{label:""});return hY(jw,{color:"green",children:"\u2713"})}function dc6($){return`${$.name}: ${$.port||"...."}`}function Fn1({services:$,migrationsStatus:Z,home:X,serverUrl:Q}){return Qb(oD,{flexDirection:"column",paddingBottom:1,children:[hY(Hn1,{version:r50.version}),hY(oD,{marginBottom:1,children:hY(jw,{dimColor:!0,children:"\u2500".repeat(80)})}),hY(oD,{children:Qb(jw,{dimColor:!0,children:["Home: ",X]})}),Qb(oD,{gap:2,children:[$.map((Y)=>Qb(oD,{gap:1,children:[hY(jw,{children:dc6(Y)}),hY(Nn1,{status:Y.status})]},Y.name)),Qb(oD,{gap:1,children:[hY(jw,{children:"Migrations"}),hY(Nn1,{status:Z})]})]}),hY(oD,{children:Q?Qb(jw,{children:["Open in browser: ",hY(jw,{color:"cyan",children:Q})]}):hY(jw,{dimColor:!0,children:"Starting..."})})]})}var wn1=O(()=>{al0();Un1()});import{Box as mc6,Text as Cm}from"ink";import{jsx as sl0,jsxs as el0}from"react/jsx-runtime";function ic6($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function Bn1({logs:$}){return sl0(mc6,{flexDirection:"column",children:$.map((Z,X)=>{if(Z.rawLine)return sl0(Cm,{dimColor:!0,children:Z.rawLine},X);let Q=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return el0(Cm,{children:[el0(Cm,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),sl0(Cm,{color:ic6(Z.status),children:Z.status}),el0(Cm,{dimColor:!0,children:[" ",Q.padStart(8)]})]},X)})})}var On1=()=>{};var $d0={};w0($d0,{App:()=>tc6});import{Box as nc6}from"ink";import{useSyncExternalStore as pc6}from"react";import{jsx as Ln1,jsxs as oc6}from"react/jsx-runtime";function tc6({home:$}){let Z=pc6(pl0,nl0);return oc6(nc6,{flexDirection:"column",children:[Ln1(Fn1,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),Ln1(Bn1,{logs:Z.logs})]})}var Zd0=O(()=>{wn1();On1();tD()});var NJ="thread-gate",_U="decopilot-hosted-harness",nG="automations",Pw="background-tools";var Dn1="7";function En1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:Dn1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var zn1=()=>{};function rc6(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function Xd0($,Z){for(let X=0;X<$.length;X++){let Q=$[X];if(Q===void 0)continue;if(Q===Z)return $[X+1];if(Q.startsWith(`${Z}=`))return Q.slice(Z.length+1)}return}function jn1(){let $=rc6();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:Xd0($,"--cpu-prof-dir")??process.cwd(),name:Xd0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(Xd0($,"--cpu-prof-interval")??1000),note:"profile is written on process exit"}));return}if(process.env.CPU_PROFILE)console.warn(JSON.stringify({msg:"cpu-profiling-requested-but-inactive",hint:'CPU profiling is a Bun launch flag. Set BUN_OPTIONS="--cpu-prof --cpu-prof-md --cpu-prof-dir=/tmp" before starting the process.'}))}function Pn1(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let X=dD();if(!X)return;let Q={};try{let{heapStats:Y}=await import("bun:jsc"),G=Y(),J=Object.entries(G.objectTypeCounts).sort((K,W)=>W[1]-K[1]).slice(0,20);Q={objectCount:G.objectCount,heapSize:G.heapSize,top:Object.fromEntries(J)}}catch{}console.log(JSON.stringify({msg:"heap-watch",ts:new Date().toISOString(),uptimeS:Math.round(process.uptime()),rss:X.rss,heapUsed:X.heapUsed,heapTotal:X.heapTotal,external:X.external,arrayBuffers:X.arrayBuffers,...Q}))};return Z().catch(()=>{}),a50=setInterval(()=>void Z().catch(()=>{}),$),a50.unref?.(),process.on("SIGUSR2",()=>{try{let X=Bun.generateHeapSnapshot("v8"),Q=typeof X==="string"?X:JSON.stringify(X),Y=`/tmp/heap-${process.pid}-${Date.now()}.heapsnapshot`;Bun.write(Y,Q),console.log(JSON.stringify({msg:"heap-snapshot-written",path:Y}))}catch(X){console.error("[heap-watch] snapshot failed:",X)}}),()=>{if(a50)clearInterval(a50)}}var a50;var An1=()=>{};import*as ac6 from"bun:jsc";function Tn1(){if(process.env.STALL_WATCHDOG!=="1")return()=>{};let $=Number(process.env.STALL_WATCHDOG_MS??100),Z=Number(process.env.STALL_WATCHDOG_TICK_MS??50);try{sc6()}catch(G){return console.error("[stall-watchdog] failed to start sampling profiler:",G),()=>{}}let X,Q=performance.now()+Z,Y=()=>{let G=performance.now(),J=G-Q;Q=G+Z;let K=[];try{K=ec6()?.traces??[]}catch{}if(J>$&&K.length>0){let W=new Map;for(let U of K){let N=U.frames.find((B)=>B.sourceURL&&!/Unknown Executable/.test(B.category??""))??U.frames[0];if(!N)continue;let F=(N.sourceURL??"?").replace(/^.*\/node_modules\//,"node_modules/"),w=`${N.name??"?"} @ ${F}:${N.line??"?"}`;W.set(w,(W.get(w)??0)+1)}let H=[...W.entries()].sort((U,N)=>N[1]-U[1]).slice(0,8).map(([U,N])=>({frame:U,count:N}));console.warn(JSON.stringify({msg:"stall-stack",ts:new Date().toISOString(),lagMs:Math.round(J),samplesInWindow:K.length,top:H}))}X=setTimeout(Y,Z),X.unref?.()};return X=setTimeout(Y,Z),X.unref?.(),()=>{if(X)clearTimeout(X)}}var sc6,ec6;var Rn1=O(()=>{({startSamplingProfiler:sc6,samplingProfilerStackTraces:ec6}=ac6)});function In1(){jn1();let $=[Pn1(),Al1(),Tn1()];return()=>{for(let Z of $)Z()}}var qn1=O(()=>{Yh0();An1();Rn1()});var rD=_((Mn1)=>{Object.defineProperty(Mn1,"__esModule",{value:!0});Mn1.RepublishHeaders=Mn1.DirectMsgHeaders=Mn1.JsHeaders=Mn1.AdvisoryKind=void 0;Mn1.isOrderedPushConsumerOptions=$l6;Mn1.isPullConsumer=Zl6;Mn1.isPushConsumer=Xl6;Mn1.isBoundPushConsumerOptions=Ql6;function $l6($){if($&&typeof $==="object")return"name_prefix"in $||"deliver_subject_prefix"in $||"filter_subjects"in $||"filter_subject"in $||"deliver_policy"in $||"opt_start_seq"in $||"opt_start_time"in $||"replay_policy"in $||"inactive_threshold"in $||"headers_only"in $||"deliver_prefix"in $;return!1}function Zl6($){return $.isPullConsumer()}function Xl6($){return $.isPushConsumer()}function Ql6($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}Mn1.AdvisoryKind={API:"api_audit",StreamAction:"stream_action",ConsumerAction:"consumer_action",SnapshotCreate:"snapshot_create",SnapshotComplete:"snapshot_complete",RestoreCreate:"restore_create",RestoreComplete:"restore_complete",MaxDeliver:"max_deliver",Terminated:"terminated",Ack:"consumer_ack",StreamLeaderElected:"stream_leader_elected",StreamQuorumLost:"stream_quorum_lost",ConsumerLeaderElected:"consumer_leader_elected",ConsumerQuorumLost:"consumer_quorum_lost"};Mn1.JsHeaders={StreamSourceHdr:"Nats-Stream-Source",LastConsumerSeqHdr:"Nats-Last-Consumer",LastStreamSeqHdr:"Nats-Last-Stream",ConsumerStalledHdr:"Nats-Consumer-Stalled",MessageSizeHdr:"Nats-Msg-Size",RollupHdr:"Nats-Rollup",RollupValueSubject:"sub",RollupValueAll:"all",PendingMessagesHdr:"Nats-Pending-Messages",PendingBytesHdr:"Nats-Pending-Bytes",RequiredApiLevel:"Nats-Required-Api-Level"};Mn1.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};Mn1.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var uY=_((Vn1)=>{Object.defineProperty(Vn1,"__esModule",{value:!0});Vn1.TD=Vn1.TE=Vn1.Empty=void 0;Vn1.encode=Fl6;Vn1.decode=wl6;Vn1.Empty=new Uint8Array(0);Vn1.TE=new TextEncoder;Vn1.TD=new TextDecoder;function Nl6(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let X=new Uint8Array(Z),Q=0;for(let Y=0;Y<$.length;Y++)X.set($[Y],Q),Q+=$[Y].length;return X}function Fl6(...$){let Z=[];for(let X=0;X<$.length;X++)Z.push(Vn1.TE.encode($[X]));if(Z.length===0)return Vn1.Empty;if(Z.length===1)return Z[0];return Nl6(...Z)}function wl6($){if(!$||$.length===0)return"";return Vn1.TD.decode($)}});var cY=_((_n1)=>{Object.defineProperty(_n1,"__esModule",{value:!0});_n1.errors=_n1.PermissionViolationError=_n1.NoRespondersError=_n1.TimeoutError=_n1.RequestError=_n1.ProtocolError=_n1.ConnectionError=_n1.DrainingConnectionError=_n1.ClosedConnectionError=_n1.AuthorizationError=_n1.UserAuthenticationExpiredError=_n1.InvalidOperationError=_n1.InvalidArgumentError=_n1.InvalidSubjectError=void 0;class Yd0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}_n1.InvalidSubjectError=Yd0;class s50 extends Error{constructor($,Z){super($,Z);this.name="InvalidArgumentError"}static format($,Z,X){if(Array.isArray(Z)&&Z.length>1)Z=Z[0];if(Array.isArray($))$=$.map((Q)=>`'${Q}'`),$=$.join(",");else $=`'${$}'`;return new s50(`${$} ${Z}`,X)}}_n1.InvalidArgumentError=s50;class Gd0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}_n1.InvalidOperationError=Gd0;class e50 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new e50($);return null}}_n1.UserAuthenticationExpiredError=e50;class $90 extends Error{constructor($,Z){super($,Z);this.name="AuthorizationError"}static parse($){let Z=["authorization violation","account authentication expired","authentication timeout"],X=$.toLowerCase();for(let Q=0;Q<Z.length;Q++)if(X.indexOf(Z[Q])!==-1)return new $90($);return null}}_n1.AuthorizationError=$90;class Jd0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}_n1.ClosedConnectionError=Jd0;class Kd0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}_n1.DrainingConnectionError=Kd0;class Wd0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}_n1.ConnectionError=Wd0;class Hd0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}_n1.ProtocolError=Hd0;class Ud0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof Z90}}_n1.RequestError=Ud0;class Nd0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}_n1.TimeoutError=Nd0;class Z90 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}_n1.NoRespondersError=Z90;class X90 extends Error{operation;subject;queue;constructor($,Z,X,Q,Y){super($,Y);this.name="PermissionViolationError",this.operation=Z,this.subject=X,this.queue=Q}static parse($){if(($?$.toLowerCase():"").indexOf("permissions violation")===-1)return null;let X="publish",Q="",Y=void 0,G=$.match(/(Publish|Subscription) to "(\S+)"/);if(G){if(X=G[1].toLowerCase(),Q=G[2],X==="subscription"){let J=$.match(/using queue "(\S+)"/);if(J)Y=J[1]}}return new X90($,X,Q,Y)}}_n1.PermissionViolationError=X90;_n1.errors={AuthorizationError:$90,ClosedConnectionError:Jd0,ConnectionError:Wd0,DrainingConnectionError:Kd0,InvalidArgumentError:s50,InvalidOperationError:Gd0,InvalidSubjectError:Yd0,NoRespondersError:Z90,PermissionViolationError:X90,ProtocolError:Hd0,RequestError:Ud0,TimeoutError:Nd0,UserAuthenticationExpiredError:e50}});var FJ=_((yn1)=>{Object.defineProperty(yn1,"__esModule",{value:!0});yn1.SimpleMutex=yn1.Perf=void 0;yn1.extend=Sl6;yn1.render=Cl6;yn1.timeout=_l6;yn1.delay=vl6;yn1.deadline=xl6;yn1.deferred=wd0;yn1.debugDeferred=fl6;yn1.shuffle=bl6;yn1.collect=yl6;yn1.jitter=bn1;yn1.backoff=gl6;yn1.nanos=hl6;yn1.millis=ul6;yn1.randomToken=dl6;var Vl6=uY(),Fd0=cY();function Sl6($,...Z){for(let X=0;X<Z.length;X++){let Q=Z[X];Object.keys(Q).forEach(function(Y){$[Y]=Q[Y]})}return $}function Cl6($){return Vl6.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function _l6($,Z=!0){let X=Z?new Fd0.TimeoutError:null,Q,Y,G=new Promise((J,K)=>{Q={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(X===null)K(new Fd0.TimeoutError);else K(X)},$)});return Object.assign(G,Q)}function vl6($=0){let Z,X=new Promise((Q)=>{let Y=setTimeout(()=>{Q()},$);Z={cancel:()=>{if(Y)clearTimeout(Y),Q()}}});return Object.assign(X,Z)}async function xl6($,Z=1000){let X=wd0(),Q=setTimeout(()=>{X.reject(new Fd0.TimeoutError)},Z);try{return await Promise.race([$,X])}finally{clearTimeout(Q)}}function wd0(){let $={},Z=new Promise((X,Q)=>{$={resolve:X,reject:Q}});return Object.assign(Z,$)}function fl6(){let $={},Z=new Promise((X,Q)=>{$={resolve:(Y)=>{console.trace("resolve",Y),X(Y)},reject:(Y)=>{console.trace("reject"),Q(Y)}}});return Object.assign(Z,$)}function bl6($){for(let Z=$.length-1;Z>0;Z--){let X=Math.floor(Math.random()*(Z+1));[$[Z],$[X]]=[$[X],$[Z]]}return $}async function yl6($){let Z=[];for await(let X of $)Z.push(X);return Z}class xn1{timers;measures;constructor(){this.timers=new Map,this.measures=new Map}mark($){this.timers.set($,performance.now())}measure($,Z,X){let Q=this.timers.get(Z);if(Q===void 0)throw Error(`${Z} is not defined`);let Y=this.timers.get(X);if(Y===void 0)throw Error(`${X} is not defined`);this.measures.set($,Y-Q)}getEntries(){let $=[];return this.measures.forEach((Z,X)=>{$.push({name:X,duration:Z})}),$}}yn1.Perf=xn1;class fn1{max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=wd0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}yn1.SimpleMutex=fn1;function bn1($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function gl6($=[0,250,250,500,500,3000,5000]){if(!Array.isArray($))$=[0,250,250,500,500,3000,5000];let Z=$.length-1;return{backoff(X){return bn1(X>Z?$[Z]:$[X])}}}function hl6($){return $*1e6}function ul6($){return Math.floor($/1e6)}var cl6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",vU=new Uint8Array(62);for(let $=0;$<62;$++)vU[$]=cl6.charCodeAt($);var ll6=218340105584896;function dl6(){let $=Math.floor(Math.random()*ll6),Z=$%62,X=vU[Z];$=($-Z)/62,Z=$%62;let Q=vU[Z];$=($-Z)/62,Z=$%62;let Y=vU[Z];$=($-Z)/62,Z=$%62;let G=vU[Z];$=($-Z)/62,Z=$%62;let J=vU[Z];$=($-Z)/62,Z=$%62;let K=vU[Z];$=($-Z)/62,Z=$%62;let W=vU[Z];$=($-Z)/62;let H=vU[$];return String.fromCharCode(X,Q,Y,G,J,K,W,H)}});var in1=_((dn1)=>{Object.defineProperty(dn1,"__esModule",{value:!0});dn1.nuid=dn1.NuidImpl=void 0;var Gd6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",Aw=62,Y90=12,cn1=10,hn1=33,Jd6=333,un1=Y90+cn1,Od0=new Uint8Array(Aw);for(let $=0;$<Aw;$++)Od0[$]=Gd6.charCodeAt($);var Q90=4294967296,ln1=BigInt(Aw)**BigInt(cn1),_m=Number(ln1/(1n<<32n)),Bd0=Number(ln1%(1n<<32n));function Kd6($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function Wd6($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else Kd6($)}class Ld0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(un1),this.cbuf=new Uint8Array(Y90),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(_m+1)),this.seqLo=Math.floor(Math.random()*Q90);while($++<8&&this.seqHi===_m&&this.seqLo>=Bd0);if(this.seqHi===_m&&this.seqLo>=Bd0)this.seqLo=0;this.inc=Math.random()*(Jd6-hn1)+hn1|0}setPre(){Wd6(this.cbuf);for(let $=0;$<Y90;$++)this.buf[$]=Od0[this.cbuf[$]%Aw]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let X=un1-1;X>=Y90;X--){let Q=Math.floor($/Aw),G=($-Q*Aw)*Q90+Z,J=Math.floor(G/Aw),K=G-J*Aw;this.buf[X]=Od0[K],$=Q,Z=J}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=Q90)this.seqLo-=Q90,this.seqHi+=1;if(this.seqHi>_m||this.seqHi===_m&&this.seqLo>=Bd0)this.setPre(),this.initSeqAndInc();this.fillSeq();let $=this.buf;return String.fromCharCode($[0],$[1],$[2],$[3],$[4],$[5],$[6],$[7],$[8],$[9],$[10],$[11],$[12],$[13],$[14],$[15],$[16],$[17],$[18],$[19],$[20],$[21])}reset(){this.init()}}dn1.NuidImpl=Ld0;dn1.nuid=new Ld0});var on1=_((pn1)=>{Object.defineProperty(pn1,"__esModule",{value:!0});pn1.nuid=pn1.Nuid=void 0;var nn1=in1();pn1.Nuid=nn1.NuidImpl;pn1.nuid=nn1.nuid});var J90=_((G90)=>{Object.defineProperty(G90,"__esModule",{value:!0});G90.nuid=G90.Nuid=void 0;var rn1=on1();Object.defineProperty(G90,"Nuid",{enumerable:!0,get:function(){return rn1.Nuid}});Object.defineProperty(G90,"nuid",{enumerable:!0,get:function(){return rn1.nuid}})});var Tw=_((an1)=>{Object.defineProperty(an1,"__esModule",{value:!0});an1.DEFAULT_HOST=an1.DEFAULT_PORT=an1.Match=void 0;an1.syncIterator=Bd6;an1.createInbox=Od6;var Fd6=J90(),wd6=cY();an1.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function Bd6($){let Z=$[Symbol.asyncIterator]();return{async next(){let X=await Z.next();if(X.done)return Promise.resolve(null);return Promise.resolve(X.value)}}}function Od6($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw wd6.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${Fd6.nuid.next()}`}an1.DEFAULT_PORT=4222;an1.DEFAULT_HOST="127.0.0.1"});var vm=_((Zp1)=>{Object.defineProperty(Zp1,"__esModule",{value:!0});Zp1.DataBuffer=void 0;var en1=uY();class $p1{buffers;byteLength;constructor(){this.buffers=[],this.byteLength=0}static concat(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let X=new Uint8Array(Z),Q=0;for(let Y=0;Y<$.length;Y++)X.set($[Y],Q),Q+=$[Y].length;return X}static fromAscii($){if(!$)$="";return en1.TE.encode($)}static toAscii($){return en1.TD.decode($)}reset(){this.buffers.length=0,this.byteLength=0}pack(){if(this.buffers.length>1){let $=new Uint8Array(this.byteLength),Z=0;for(let X=0;X<this.buffers.length;X++)$.set(this.buffers[X],Z),Z+=this.buffers[X].length;this.buffers.length=0,this.buffers.push($)}}shift(){if(this.buffers.length){let $=this.buffers.shift();if($)return this.byteLength-=$.length,$}return new Uint8Array(0)}drain($){if(this.buffers.length){this.pack();let Z=this.buffers.pop();if(Z){let X=this.byteLength;if($===void 0||$>X)$=X;let Q=Z.subarray(0,$);if(X>$)this.buffers.push(Z.subarray($));return this.byteLength=X-$,Q}}return new Uint8Array(0)}fill($,...Z){if($)this.buffers.push($),this.byteLength+=$.length;for(let X=0;X<Z.length;X++)if(Z[X]&&Z[X].length)this.buffers.push(Z[X]),this.byteLength+=Z[X].length}peek(){if(this.buffers.length)return this.pack(),this.buffers[0];return new Uint8Array(0)}size(){return this.byteLength}length(){return this.buffers.length}}Zp1.DataBuffer=$p1});var aD=_((Yp1)=>{Object.defineProperty(Yp1,"__esModule",{value:!0});Yp1.LF=Yp1.CR=Yp1.CRLF=Yp1.CR_LF_LEN=Yp1.CR_LF=void 0;Yp1.setTransportFactory=Td6;Yp1.defaultPort=Rd6;Yp1.getUrlParseFn=Id6;Yp1.newTransport=qd6;Yp1.getResolveFn=Md6;Yp1.protoLen=Qp1;Yp1.extractProtocolMessage=kd6;var jd6=uY(),Pd6=Tw(),Ad6=vm(),lY;function Td6($){lY=$}function Rd6(){return lY!==void 0&&lY.defaultPort!==void 0?lY.defaultPort:Pd6.DEFAULT_PORT}function Id6(){return lY!==void 0&&lY.urlParseFn?lY.urlParseFn:void 0}function qd6(){if(!lY||typeof lY.factory!=="function")throw Error("transport fn is not set");return lY.factory()}function Md6(){return lY!==void 0&&lY.dnsResolveFn?lY.dnsResolveFn:void 0}Yp1.CR_LF=`\r
1335
+ `);Q=G.pop()??"";for(let J of G){let K=Sm(J).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;zw({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:K})}}(async()=>{for(;;){let{done:G,value:J}=await Z.read();if(G)break;Q+=X.decode(J,{stream:!0}),Y()}if(Q.trim()){let G=Sm(Q).replace(/^\[\d+\]\s*/,"").trim();if(G)zw({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:G})}})()}async function gc6($){let{baseUrl:Z,noTui:X}=$,Q=process.env.HOST==="0.0.0.0"&&Boolean(process.env.PORT),Y=Q?process.env.PORT:$.vitePort,G=Z||`http://localhost:${Y}`,J=Q?await Vm(Number(Y)+1):await Vm(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await p50({port:String(J),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let L of W)pD({name:L.name,status:"ready",port:L.port});Mm();let U=yc6(import.meta.dir,"..","..","..","..",".."),N=X===!0,F=Bun.spawn(["bun","run","dev:servers"],{cwd:U,env:{...process.env,PORT:String(K.port),VITE_PORT:String(Y),DATABASE_URL:K.databaseUrl,NATS_URL:K.natsUrls.join(","),NODE_ENV:K.nodeEnv,BASE_URL:G,DECOCMS_LOCAL_MODE:String(K.localMode),DECOCMS_HOME:K.dataDir,DATA_DIR:K.dataDir,DECO_CLI:"1",...K.betterAuthSecret?{BETTER_AUTH_SECRET:K.betterAuthSecret}:{},...K.s3Endpoint?{S3_ENDPOINT:K.s3Endpoint,S3_BUCKET:K.s3Bucket??"",S3_ACCESS_KEY_ID:K.s3AccessKeyId??"",S3_SECRET_ACCESS_KEY:K.s3SecretAccessKey??"",S3_FORCE_PATH_STYLE:String(K.s3ForcePathStyle)}:{},...K.natsPublicUrl&&K.natsAccountJwt&&K.natsAccountSigningKey?{NATS_PUBLIC_URL:K.natsPublicUrl,NATS_ACCOUNT_JWT:K.natsAccountJwt,NATS_ACCOUNT_SIGNING_KEY:K.natsAccountSigningKey,NATS_OPERATOR_JWT:K.natsOperatorJwt??"",NATS_TUNNEL_PUBLIC_ENABLED:"true",...K.natsCredsPath?{NATS_CREDS:K.natsCredsPath}:{}}:{}},stdio:["inherit",N?"inherit":"pipe",N?"inherit":"pipe"]});if(!N)Jn1(F.stdout),Jn1(F.stderr);km(G),pD({name:"Vite",status:"ready",port:Number(Y)}),pD({name:"API",status:"ready",port:Number(K.port)});let B=async(L)=>{if(F.kill(L),await F.exited,H.length>0){let{stopServices:D}=await Promise.resolve().then(() => (Q50(),X50));await D(K.dataDir)}};return process.on("SIGINT",()=>B("SIGINT")),process.on("SIGTERM",()=>B("SIGTERM")),{port:Number(Y),process:F}}var rl0=O(()=>{ml0();tD();tl0()});var r50;var al0=O(()=>{r50={name:"decocms",version:"4.197.10",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@nats-io/jwt":"0.0.10-5","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});import{Box as uc6,Text as Kn1}from"ink";import{jsx as cc6,jsxs as Wn1}from"react/jsx-runtime";function Hn1({version:$}){return Wn1(uc6,{flexDirection:"column",marginTop:1,children:[R50.map((Z,X)=>cc6(Kn1,{color:I50[X],children:Z},X)),Wn1(Kn1,{dimColor:!0,children:[" v",$]})]})}var Un1=O(()=>{Om()});import{Box as oD,Text as jw}from"ink";import{Spinner as lc6}from"@inkjs/ui";import{jsx as hY,jsxs as Qb}from"react/jsx-runtime";function Nn1({status:$}){if($==="pending")return hY(lc6,{label:""});return hY(jw,{color:"green",children:"\u2713"})}function dc6($){return`${$.name}: ${$.port||"...."}`}function Fn1({services:$,migrationsStatus:Z,home:X,serverUrl:Q}){return Qb(oD,{flexDirection:"column",paddingBottom:1,children:[hY(Hn1,{version:r50.version}),hY(oD,{marginBottom:1,children:hY(jw,{dimColor:!0,children:"\u2500".repeat(80)})}),hY(oD,{children:Qb(jw,{dimColor:!0,children:["Home: ",X]})}),Qb(oD,{gap:2,children:[$.map((Y)=>Qb(oD,{gap:1,children:[hY(jw,{children:dc6(Y)}),hY(Nn1,{status:Y.status})]},Y.name)),Qb(oD,{gap:1,children:[hY(jw,{children:"Migrations"}),hY(Nn1,{status:Z})]})]}),hY(oD,{children:Q?Qb(jw,{children:["Open in browser: ",hY(jw,{color:"cyan",children:Q})]}):hY(jw,{dimColor:!0,children:"Starting..."})})]})}var wn1=O(()=>{al0();Un1()});import{Box as mc6,Text as Cm}from"ink";import{jsx as sl0,jsxs as el0}from"react/jsx-runtime";function ic6($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function Bn1({logs:$}){return sl0(mc6,{flexDirection:"column",children:$.map((Z,X)=>{if(Z.rawLine)return sl0(Cm,{dimColor:!0,children:Z.rawLine},X);let Q=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return el0(Cm,{children:[el0(Cm,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),sl0(Cm,{color:ic6(Z.status),children:Z.status}),el0(Cm,{dimColor:!0,children:[" ",Q.padStart(8)]})]},X)})})}var On1=()=>{};var $d0={};w0($d0,{App:()=>tc6});import{Box as nc6}from"ink";import{useSyncExternalStore as pc6}from"react";import{jsx as Ln1,jsxs as oc6}from"react/jsx-runtime";function tc6({home:$}){let Z=pc6(pl0,nl0);return oc6(nc6,{flexDirection:"column",children:[Ln1(Fn1,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),Ln1(Bn1,{logs:Z.logs})]})}var Zd0=O(()=>{wn1();On1();tD()});var NJ="thread-gate",_U="decopilot-hosted-harness",nG="automations",Pw="background-tools";var Dn1="7";function En1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:Dn1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var zn1=()=>{};function rc6(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function Xd0($,Z){for(let X=0;X<$.length;X++){let Q=$[X];if(Q===void 0)continue;if(Q===Z)return $[X+1];if(Q.startsWith(`${Z}=`))return Q.slice(Z.length+1)}return}function jn1(){let $=rc6();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:Xd0($,"--cpu-prof-dir")??process.cwd(),name:Xd0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(Xd0($,"--cpu-prof-interval")??1000),note:"profile is written on process exit"}));return}if(process.env.CPU_PROFILE)console.warn(JSON.stringify({msg:"cpu-profiling-requested-but-inactive",hint:'CPU profiling is a Bun launch flag. Set BUN_OPTIONS="--cpu-prof --cpu-prof-md --cpu-prof-dir=/tmp" before starting the process.'}))}function Pn1(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let X=dD();if(!X)return;let Q={};try{let{heapStats:Y}=await import("bun:jsc"),G=Y(),J=Object.entries(G.objectTypeCounts).sort((K,W)=>W[1]-K[1]).slice(0,20);Q={objectCount:G.objectCount,heapSize:G.heapSize,top:Object.fromEntries(J)}}catch{}console.log(JSON.stringify({msg:"heap-watch",ts:new Date().toISOString(),uptimeS:Math.round(process.uptime()),rss:X.rss,heapUsed:X.heapUsed,heapTotal:X.heapTotal,external:X.external,arrayBuffers:X.arrayBuffers,...Q}))};return Z().catch(()=>{}),a50=setInterval(()=>void Z().catch(()=>{}),$),a50.unref?.(),process.on("SIGUSR2",()=>{try{let X=Bun.generateHeapSnapshot("v8"),Q=typeof X==="string"?X:JSON.stringify(X),Y=`/tmp/heap-${process.pid}-${Date.now()}.heapsnapshot`;Bun.write(Y,Q),console.log(JSON.stringify({msg:"heap-snapshot-written",path:Y}))}catch(X){console.error("[heap-watch] snapshot failed:",X)}}),()=>{if(a50)clearInterval(a50)}}var a50;var An1=()=>{};import*as ac6 from"bun:jsc";function Tn1(){if(process.env.STALL_WATCHDOG!=="1")return()=>{};let $=Number(process.env.STALL_WATCHDOG_MS??100),Z=Number(process.env.STALL_WATCHDOG_TICK_MS??50);try{sc6()}catch(G){return console.error("[stall-watchdog] failed to start sampling profiler:",G),()=>{}}let X,Q=performance.now()+Z,Y=()=>{let G=performance.now(),J=G-Q;Q=G+Z;let K=[];try{K=ec6()?.traces??[]}catch{}if(J>$&&K.length>0){let W=new Map;for(let U of K){let N=U.frames.find((B)=>B.sourceURL&&!/Unknown Executable/.test(B.category??""))??U.frames[0];if(!N)continue;let F=(N.sourceURL??"?").replace(/^.*\/node_modules\//,"node_modules/"),w=`${N.name??"?"} @ ${F}:${N.line??"?"}`;W.set(w,(W.get(w)??0)+1)}let H=[...W.entries()].sort((U,N)=>N[1]-U[1]).slice(0,8).map(([U,N])=>({frame:U,count:N}));console.warn(JSON.stringify({msg:"stall-stack",ts:new Date().toISOString(),lagMs:Math.round(J),samplesInWindow:K.length,top:H}))}X=setTimeout(Y,Z),X.unref?.()};return X=setTimeout(Y,Z),X.unref?.(),()=>{if(X)clearTimeout(X)}}var sc6,ec6;var Rn1=O(()=>{({startSamplingProfiler:sc6,samplingProfilerStackTraces:ec6}=ac6)});function In1(){jn1();let $=[Pn1(),Al1(),Tn1()];return()=>{for(let Z of $)Z()}}var qn1=O(()=>{Yh0();An1();Rn1()});var rD=_((Mn1)=>{Object.defineProperty(Mn1,"__esModule",{value:!0});Mn1.RepublishHeaders=Mn1.DirectMsgHeaders=Mn1.JsHeaders=Mn1.AdvisoryKind=void 0;Mn1.isOrderedPushConsumerOptions=$l6;Mn1.isPullConsumer=Zl6;Mn1.isPushConsumer=Xl6;Mn1.isBoundPushConsumerOptions=Ql6;function $l6($){if($&&typeof $==="object")return"name_prefix"in $||"deliver_subject_prefix"in $||"filter_subjects"in $||"filter_subject"in $||"deliver_policy"in $||"opt_start_seq"in $||"opt_start_time"in $||"replay_policy"in $||"inactive_threshold"in $||"headers_only"in $||"deliver_prefix"in $;return!1}function Zl6($){return $.isPullConsumer()}function Xl6($){return $.isPushConsumer()}function Ql6($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}Mn1.AdvisoryKind={API:"api_audit",StreamAction:"stream_action",ConsumerAction:"consumer_action",SnapshotCreate:"snapshot_create",SnapshotComplete:"snapshot_complete",RestoreCreate:"restore_create",RestoreComplete:"restore_complete",MaxDeliver:"max_deliver",Terminated:"terminated",Ack:"consumer_ack",StreamLeaderElected:"stream_leader_elected",StreamQuorumLost:"stream_quorum_lost",ConsumerLeaderElected:"consumer_leader_elected",ConsumerQuorumLost:"consumer_quorum_lost"};Mn1.JsHeaders={StreamSourceHdr:"Nats-Stream-Source",LastConsumerSeqHdr:"Nats-Last-Consumer",LastStreamSeqHdr:"Nats-Last-Stream",ConsumerStalledHdr:"Nats-Consumer-Stalled",MessageSizeHdr:"Nats-Msg-Size",RollupHdr:"Nats-Rollup",RollupValueSubject:"sub",RollupValueAll:"all",PendingMessagesHdr:"Nats-Pending-Messages",PendingBytesHdr:"Nats-Pending-Bytes",RequiredApiLevel:"Nats-Required-Api-Level"};Mn1.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};Mn1.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var uY=_((Vn1)=>{Object.defineProperty(Vn1,"__esModule",{value:!0});Vn1.TD=Vn1.TE=Vn1.Empty=void 0;Vn1.encode=Fl6;Vn1.decode=wl6;Vn1.Empty=new Uint8Array(0);Vn1.TE=new TextEncoder;Vn1.TD=new TextDecoder;function Nl6(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let X=new Uint8Array(Z),Q=0;for(let Y=0;Y<$.length;Y++)X.set($[Y],Q),Q+=$[Y].length;return X}function Fl6(...$){let Z=[];for(let X=0;X<$.length;X++)Z.push(Vn1.TE.encode($[X]));if(Z.length===0)return Vn1.Empty;if(Z.length===1)return Z[0];return Nl6(...Z)}function wl6($){if(!$||$.length===0)return"";return Vn1.TD.decode($)}});var cY=_((_n1)=>{Object.defineProperty(_n1,"__esModule",{value:!0});_n1.errors=_n1.PermissionViolationError=_n1.NoRespondersError=_n1.TimeoutError=_n1.RequestError=_n1.ProtocolError=_n1.ConnectionError=_n1.DrainingConnectionError=_n1.ClosedConnectionError=_n1.AuthorizationError=_n1.UserAuthenticationExpiredError=_n1.InvalidOperationError=_n1.InvalidArgumentError=_n1.InvalidSubjectError=void 0;class Yd0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}_n1.InvalidSubjectError=Yd0;class s50 extends Error{constructor($,Z){super($,Z);this.name="InvalidArgumentError"}static format($,Z,X){if(Array.isArray(Z)&&Z.length>1)Z=Z[0];if(Array.isArray($))$=$.map((Q)=>`'${Q}'`),$=$.join(",");else $=`'${$}'`;return new s50(`${$} ${Z}`,X)}}_n1.InvalidArgumentError=s50;class Gd0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}_n1.InvalidOperationError=Gd0;class e50 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new e50($);return null}}_n1.UserAuthenticationExpiredError=e50;class $90 extends Error{constructor($,Z){super($,Z);this.name="AuthorizationError"}static parse($){let Z=["authorization violation","account authentication expired","authentication timeout"],X=$.toLowerCase();for(let Q=0;Q<Z.length;Q++)if(X.indexOf(Z[Q])!==-1)return new $90($);return null}}_n1.AuthorizationError=$90;class Jd0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}_n1.ClosedConnectionError=Jd0;class Kd0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}_n1.DrainingConnectionError=Kd0;class Wd0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}_n1.ConnectionError=Wd0;class Hd0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}_n1.ProtocolError=Hd0;class Ud0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof Z90}}_n1.RequestError=Ud0;class Nd0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}_n1.TimeoutError=Nd0;class Z90 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}_n1.NoRespondersError=Z90;class X90 extends Error{operation;subject;queue;constructor($,Z,X,Q,Y){super($,Y);this.name="PermissionViolationError",this.operation=Z,this.subject=X,this.queue=Q}static parse($){if(($?$.toLowerCase():"").indexOf("permissions violation")===-1)return null;let X="publish",Q="",Y=void 0,G=$.match(/(Publish|Subscription) to "(\S+)"/);if(G){if(X=G[1].toLowerCase(),Q=G[2],X==="subscription"){let J=$.match(/using queue "(\S+)"/);if(J)Y=J[1]}}return new X90($,X,Q,Y)}}_n1.PermissionViolationError=X90;_n1.errors={AuthorizationError:$90,ClosedConnectionError:Jd0,ConnectionError:Wd0,DrainingConnectionError:Kd0,InvalidArgumentError:s50,InvalidOperationError:Gd0,InvalidSubjectError:Yd0,NoRespondersError:Z90,PermissionViolationError:X90,ProtocolError:Hd0,RequestError:Ud0,TimeoutError:Nd0,UserAuthenticationExpiredError:e50}});var FJ=_((yn1)=>{Object.defineProperty(yn1,"__esModule",{value:!0});yn1.SimpleMutex=yn1.Perf=void 0;yn1.extend=Sl6;yn1.render=Cl6;yn1.timeout=_l6;yn1.delay=vl6;yn1.deadline=xl6;yn1.deferred=wd0;yn1.debugDeferred=fl6;yn1.shuffle=bl6;yn1.collect=yl6;yn1.jitter=bn1;yn1.backoff=gl6;yn1.nanos=hl6;yn1.millis=ul6;yn1.randomToken=dl6;var Vl6=uY(),Fd0=cY();function Sl6($,...Z){for(let X=0;X<Z.length;X++){let Q=Z[X];Object.keys(Q).forEach(function(Y){$[Y]=Q[Y]})}return $}function Cl6($){return Vl6.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function _l6($,Z=!0){let X=Z?new Fd0.TimeoutError:null,Q,Y,G=new Promise((J,K)=>{Q={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(X===null)K(new Fd0.TimeoutError);else K(X)},$)});return Object.assign(G,Q)}function vl6($=0){let Z,X=new Promise((Q)=>{let Y=setTimeout(()=>{Q()},$);Z={cancel:()=>{if(Y)clearTimeout(Y),Q()}}});return Object.assign(X,Z)}async function xl6($,Z=1000){let X=wd0(),Q=setTimeout(()=>{X.reject(new Fd0.TimeoutError)},Z);try{return await Promise.race([$,X])}finally{clearTimeout(Q)}}function wd0(){let $={},Z=new Promise((X,Q)=>{$={resolve:X,reject:Q}});return Object.assign(Z,$)}function fl6(){let $={},Z=new Promise((X,Q)=>{$={resolve:(Y)=>{console.trace("resolve",Y),X(Y)},reject:(Y)=>{console.trace("reject"),Q(Y)}}});return Object.assign(Z,$)}function bl6($){for(let Z=$.length-1;Z>0;Z--){let X=Math.floor(Math.random()*(Z+1));[$[Z],$[X]]=[$[X],$[Z]]}return $}async function yl6($){let Z=[];for await(let X of $)Z.push(X);return Z}class xn1{timers;measures;constructor(){this.timers=new Map,this.measures=new Map}mark($){this.timers.set($,performance.now())}measure($,Z,X){let Q=this.timers.get(Z);if(Q===void 0)throw Error(`${Z} is not defined`);let Y=this.timers.get(X);if(Y===void 0)throw Error(`${X} is not defined`);this.measures.set($,Y-Q)}getEntries(){let $=[];return this.measures.forEach((Z,X)=>{$.push({name:X,duration:Z})}),$}}yn1.Perf=xn1;class fn1{max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=wd0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}yn1.SimpleMutex=fn1;function bn1($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function gl6($=[0,250,250,500,500,3000,5000]){if(!Array.isArray($))$=[0,250,250,500,500,3000,5000];let Z=$.length-1;return{backoff(X){return bn1(X>Z?$[Z]:$[X])}}}function hl6($){return $*1e6}function ul6($){return Math.floor($/1e6)}var cl6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",vU=new Uint8Array(62);for(let $=0;$<62;$++)vU[$]=cl6.charCodeAt($);var ll6=218340105584896;function dl6(){let $=Math.floor(Math.random()*ll6),Z=$%62,X=vU[Z];$=($-Z)/62,Z=$%62;let Q=vU[Z];$=($-Z)/62,Z=$%62;let Y=vU[Z];$=($-Z)/62,Z=$%62;let G=vU[Z];$=($-Z)/62,Z=$%62;let J=vU[Z];$=($-Z)/62,Z=$%62;let K=vU[Z];$=($-Z)/62,Z=$%62;let W=vU[Z];$=($-Z)/62;let H=vU[$];return String.fromCharCode(X,Q,Y,G,J,K,W,H)}});var in1=_((dn1)=>{Object.defineProperty(dn1,"__esModule",{value:!0});dn1.nuid=dn1.NuidImpl=void 0;var Gd6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",Aw=62,Y90=12,cn1=10,hn1=33,Jd6=333,un1=Y90+cn1,Od0=new Uint8Array(Aw);for(let $=0;$<Aw;$++)Od0[$]=Gd6.charCodeAt($);var Q90=4294967296,ln1=BigInt(Aw)**BigInt(cn1),_m=Number(ln1/(1n<<32n)),Bd0=Number(ln1%(1n<<32n));function Kd6($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function Wd6($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else Kd6($)}class Ld0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(un1),this.cbuf=new Uint8Array(Y90),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(_m+1)),this.seqLo=Math.floor(Math.random()*Q90);while($++<8&&this.seqHi===_m&&this.seqLo>=Bd0);if(this.seqHi===_m&&this.seqLo>=Bd0)this.seqLo=0;this.inc=Math.random()*(Jd6-hn1)+hn1|0}setPre(){Wd6(this.cbuf);for(let $=0;$<Y90;$++)this.buf[$]=Od0[this.cbuf[$]%Aw]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let X=un1-1;X>=Y90;X--){let Q=Math.floor($/Aw),G=($-Q*Aw)*Q90+Z,J=Math.floor(G/Aw),K=G-J*Aw;this.buf[X]=Od0[K],$=Q,Z=J}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=Q90)this.seqLo-=Q90,this.seqHi+=1;if(this.seqHi>_m||this.seqHi===_m&&this.seqLo>=Bd0)this.setPre(),this.initSeqAndInc();this.fillSeq();let $=this.buf;return String.fromCharCode($[0],$[1],$[2],$[3],$[4],$[5],$[6],$[7],$[8],$[9],$[10],$[11],$[12],$[13],$[14],$[15],$[16],$[17],$[18],$[19],$[20],$[21])}reset(){this.init()}}dn1.NuidImpl=Ld0;dn1.nuid=new Ld0});var on1=_((pn1)=>{Object.defineProperty(pn1,"__esModule",{value:!0});pn1.nuid=pn1.Nuid=void 0;var nn1=in1();pn1.Nuid=nn1.NuidImpl;pn1.nuid=nn1.nuid});var J90=_((G90)=>{Object.defineProperty(G90,"__esModule",{value:!0});G90.nuid=G90.Nuid=void 0;var rn1=on1();Object.defineProperty(G90,"Nuid",{enumerable:!0,get:function(){return rn1.Nuid}});Object.defineProperty(G90,"nuid",{enumerable:!0,get:function(){return rn1.nuid}})});var Tw=_((an1)=>{Object.defineProperty(an1,"__esModule",{value:!0});an1.DEFAULT_HOST=an1.DEFAULT_PORT=an1.Match=void 0;an1.syncIterator=Bd6;an1.createInbox=Od6;var Fd6=J90(),wd6=cY();an1.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function Bd6($){let Z=$[Symbol.asyncIterator]();return{async next(){let X=await Z.next();if(X.done)return Promise.resolve(null);return Promise.resolve(X.value)}}}function Od6($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw wd6.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${Fd6.nuid.next()}`}an1.DEFAULT_PORT=4222;an1.DEFAULT_HOST="127.0.0.1"});var vm=_((Zp1)=>{Object.defineProperty(Zp1,"__esModule",{value:!0});Zp1.DataBuffer=void 0;var en1=uY();class $p1{buffers;byteLength;constructor(){this.buffers=[],this.byteLength=0}static concat(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let X=new Uint8Array(Z),Q=0;for(let Y=0;Y<$.length;Y++)X.set($[Y],Q),Q+=$[Y].length;return X}static fromAscii($){if(!$)$="";return en1.TE.encode($)}static toAscii($){return en1.TD.decode($)}reset(){this.buffers.length=0,this.byteLength=0}pack(){if(this.buffers.length>1){let $=new Uint8Array(this.byteLength),Z=0;for(let X=0;X<this.buffers.length;X++)$.set(this.buffers[X],Z),Z+=this.buffers[X].length;this.buffers.length=0,this.buffers.push($)}}shift(){if(this.buffers.length){let $=this.buffers.shift();if($)return this.byteLength-=$.length,$}return new Uint8Array(0)}drain($){if(this.buffers.length){this.pack();let Z=this.buffers.pop();if(Z){let X=this.byteLength;if($===void 0||$>X)$=X;let Q=Z.subarray(0,$);if(X>$)this.buffers.push(Z.subarray($));return this.byteLength=X-$,Q}}return new Uint8Array(0)}fill($,...Z){if($)this.buffers.push($),this.byteLength+=$.length;for(let X=0;X<Z.length;X++)if(Z[X]&&Z[X].length)this.buffers.push(Z[X]),this.byteLength+=Z[X].length}peek(){if(this.buffers.length)return this.pack(),this.buffers[0];return new Uint8Array(0)}size(){return this.byteLength}length(){return this.buffers.length}}Zp1.DataBuffer=$p1});var aD=_((Yp1)=>{Object.defineProperty(Yp1,"__esModule",{value:!0});Yp1.LF=Yp1.CR=Yp1.CRLF=Yp1.CR_LF_LEN=Yp1.CR_LF=void 0;Yp1.setTransportFactory=Td6;Yp1.defaultPort=Rd6;Yp1.getUrlParseFn=Id6;Yp1.newTransport=qd6;Yp1.getResolveFn=Md6;Yp1.protoLen=Qp1;Yp1.extractProtocolMessage=kd6;var jd6=uY(),Pd6=Tw(),Ad6=vm(),lY;function Td6($){lY=$}function Rd6(){return lY!==void 0&&lY.defaultPort!==void 0?lY.defaultPort:Pd6.DEFAULT_PORT}function Id6(){return lY!==void 0&&lY.urlParseFn?lY.urlParseFn:void 0}function qd6(){if(!lY||typeof lY.factory!=="function")throw Error("transport fn is not set");return lY.factory()}function Md6(){return lY!==void 0&&lY.dnsResolveFn?lY.dnsResolveFn:void 0}Yp1.CR_LF=`\r
1336
1336
  `;Yp1.CR_LF_LEN=Yp1.CR_LF.length;Yp1.CRLF=Ad6.DataBuffer.fromAscii(Yp1.CR_LF);Yp1.CR=new Uint8Array(Yp1.CRLF)[0];Yp1.LF=new Uint8Array(Yp1.CRLF)[1];function Qp1($){for(let Z=0;Z<$.length;Z++){let X=Z+1;if($.byteLength>X&&$[Z]===Yp1.CR&&$[X]===Yp1.LF)return X+1}return 0}function kd6($){let Z=Qp1($);if(Z>0){let Q=new Uint8Array($).slice(0,Z);return jd6.TD.decode(Q)}return""}});var Pd0=_((Fp1)=>{Object.defineProperty(Fp1,"__esModule",{value:!0});Fp1.ipV4=Hp1;Fp1.isIP=hd6;Fp1.parseIP=Up1;var xm=4,sD=16,K90=48,Wp1=57,Jp1=65,yd6=70,Kp1=97,gd6=102,jd0=16777215;function Hp1($,Z,X,Q){let Y=new Uint8Array(sD);return[0,0,0,0,0,0,0,0,0,0,255,255].forEach((J,K)=>{Y[K]=J}),Y[12]=$,Y[13]=Z,Y[14]=X,Y[15]=Q,Y}function hd6($){return Up1($)!==void 0}function Up1($){for(let Z=0;Z<$.length;Z++)switch($[Z]){case".":return Np1($);case":":return ud6($)}return}function Np1($){let Z=new Uint8Array(xm);for(let X=0;X<xm;X++){if($.length===0)return;if(X>0){if($[0]!==".")return;$=$.substring(1)}let{n:Q,c:Y,ok:G}=cd6($);if(!G||Q>255)return;$=$.substring(Y),Z[X]=Q}return Hp1(Z[0],Z[1],Z[2],Z[3])}function ud6($){let Z=new Uint8Array(sD),X=-1;if($.length>=2&&$[0]===":"&&$[1]===":"){if(X=0,$=$.substring(2),$.length===0)return Z}let Q=0;while(Q<sD){let{n:Y,c:G,ok:J}=ld6($);if(!J||Y>65535)return;if(G<$.length&&$[G]==="."){if(X<0&&Q!=sD-xm)return;if(Q+xm>sD)return;let K=Np1($);if(K===void 0)return;Z[Q]=K[12],Z[Q+1]=K[13],Z[Q+2]=K[14],Z[Q+3]=K[15],$="",Q+=xm;break}if(Z[Q]=Y>>8,Z[Q+1]=Y,Q+=2,$=$.substring(G),$.length===0)break;if($[0]!==":"||$.length==1)return;if($=$.substring(1),$[0]===":"){if(X>=0)return;if(X=Q,$=$.substring(1),$.length===0)break}}if($.length!==0)return;if(Q<sD){if(X<0)return;let Y=sD-Q;for(let G=Q-1;G>=X;G--)Z[G+Y]=Z[G];for(let G=X+Y-1;G>=X;G--)Z[G]=0}else if(X>=0)return;return Z}function cd6($){let Z=0,X=0;for(Z=0;Z<$.length&&K90<=$.charCodeAt(Z)&&$.charCodeAt(Z)<=Wp1;Z++)if(X=X*10+($.charCodeAt(Z)-K90),X>=jd0)return{n:jd0,c:Z,ok:!1};if(Z===0)return{n:0,c:0,ok:!1};return{n:X,c:Z,ok:!0}}function ld6($){let Z=0,X=0;for(X=0;X<$.length;X++){if(K90<=$.charCodeAt(X)&&$.charCodeAt(X)<=Wp1)Z*=16,Z+=$.charCodeAt(X)-K90;else if(Kp1<=$.charCodeAt(X)&&$.charCodeAt(X)<=gd6)Z*=16,Z+=$.charCodeAt(X)-Kp1+10;else if(Jp1<=$.charCodeAt(X)&&$.charCodeAt(X)<=yd6)Z*=16,Z+=$.charCodeAt(X)-Jp1+10;else break;if(Z>=jd0)return{n:0,c:X,ok:!1}}if(X===0)return{n:0,c:X,ok:!1};return{n:Z,c:X,ok:!0}}});var Md0=_((Bp1)=>{Object.defineProperty(Bp1,"__esModule",{value:!0});Bp1.Servers=Bp1.ServerImpl=void 0;Bp1.isIPV4OrHostname=wp1;Bp1.hostPort=qd0;var Ad0=aD(),Td0=FJ(),Rd0=Pd0(),nd6=Tw(),pd6=cY();function wp1($){if($.indexOf("[")!==-1||$.indexOf("::")!==-1)return!1;if($.indexOf(".")!==-1)return!0;if($.split(":").length<=2)return!0;return!1}function Id0($){return!wp1($)}function td6($){let X=$.toUpperCase().indexOf("::FFFF:");if(X!==-1&&$.indexOf(".")!==-1){let Q=$.substring(X+7);return Q=Q.replace("[",""),Q.replace("]","")}return $}function qd0($){if($=$.trim(),$.match(/^(.*:\/\/)(.*)/m))$=$.replace(/^(.*:\/\/)(.*)/gm,"$2");if($=td6($),Id0($)&&$.indexOf("[")===-1)$=`[${$}]`;let Z=Id0($)?$.match(/(]:)(\d+)/):$.match(/(:)(\d+)/),X=Z&&Z.length===3&&Z[1]&&Z[2]?parseInt(Z[2]):nd6.DEFAULT_PORT,Y=new URL(`${X===80?"https":"http"}://${$}`);Y.port=`${X}`;let G=Y.hostname;if(G.charAt(0)==="[")G=G.substring(1,G.length-1);return{listen:Y.host,hostname:G,port:X}}class Yb{src;listen;hostname;port;didConnect;reconnects;lastConnect;gossiped;tlsName;resolves;constructor($,Z=!1){this.src=$,this.tlsName="";let X=qd0($);this.listen=X.listen,this.hostname=X.hostname,this.port=X.port,this.didConnect=!1,this.reconnects=0,this.lastConnect=0,this.gossiped=Z}toString(){return this.listen}async resolve($){if(!$.fn||$.resolve===!1)return[this];let Z=[];if((0,Rd0.isIP)(this.hostname))return[this];else{let X=await $.fn(this.hostname);if($.debug)console.log(`resolve ${this.hostname} = ${X.join(",")}`);for(let Q of X){let Y=this.port===80?"https":"http",G=new URL(`${Y}://${Id0(Q)?"["+Q+"]":Q}`);G.port=`${this.port}`;let J=new Yb(G.host,!1);J.tlsName=this.hostname,Z.push(J)}}if($.randomize)(0,Td0.shuffle)(Z);return this.resolves=Z,Z}}Bp1.ServerImpl=Yb;class W90{firstSelect;servers;currentServer;tlsName;randomize;constructor($={}){this.firstSelect=!0,this.servers=[],this.tlsName="",this.randomize=$.randomize||!1}setServers($){if(!Array.isArray($)||$.length===0)throw pd6.InvalidArgumentError.format("servers","cannot be empty");let Z=(0,Ad0.getUrlParseFn)(),X=new Map;for(let Y of this.servers)X.set(Y.listen,Y);let Q=[];for(let Y of $){Y=Z?Z(Y):Y;let{listen:G}=qd0(Y),J=X.get(G);if(J)J.gossiped=!1,Q.push(J);else Q.push(new Yb(Y))}if(this.randomize)(0,Td0.shuffle)(Q);if(this.servers=Q,this.currentServer===void 0||!Q.includes(this.currentServer))this.currentServer=Q[0],this.firstSelect=!0}clear(){this.servers.length=0}updateTLSName(){let $=this.getCurrentServer();if(!(0,Rd0.isIP)($.hostname))this.tlsName=$.hostname,this.servers.forEach((Z)=>{if(Z.gossiped)Z.tlsName=this.tlsName})}getCurrentServer(){return this.currentServer}addServer($,Z=!1){let X=(0,Ad0.getUrlParseFn)();$=X?X($):$;let Q=new Yb($,Z);if((0,Rd0.isIP)(Q.hostname))Q.tlsName=this.tlsName;this.servers.push(Q)}selectServer(){if(this.firstSelect)return this.firstSelect=!1,this.currentServer;let $=this.servers.shift();if($)this.servers.push($),this.currentServer=$;return $}removeCurrentServer(){this.removeServer(this.currentServer)}removeServer($){if($){let Z=this.servers.indexOf($);this.servers.splice(Z,1)}}snapshot(){return W90.freezeAll(this.servers)}snapshotForHandler(){let $=this.currentServer;if(!$)return this.snapshot();let Z=this.servers.indexOf($);if(Z<=0)return this.snapshot();return W90.freezeAll([$,...this.servers.slice(0,Z),...this.servers.slice(Z+1)])}static freezeAll($){return $.map((Z)=>Object.freeze({hostname:Z.hostname,port:Z.port,listen:Z.listen,src:Z.src,tlsName:Z.tlsName,reconnects:Z.reconnects,lastConnect:Z.lastConnect,gossiped:Z.gossiped,didConnect:Z.didConnect}))}find($){return this.servers.find((Z)=>Z.listen===$.listen)}setCurrent($){this.currentServer=$}length(){return this.servers.length}next(){return this.servers.length?this.servers[0]:void 0}getServers(){return this.servers}update($,Z){let X=[],Q=[],Y=(0,Ad0.getUrlParseFn)(),G=new Map;if($.connect_urls&&$.connect_urls.length>0)$.connect_urls.forEach((K)=>{K=Y?Y(K,Z):K;let W=new Yb(K,!0);G.set(K,W)});let J=[];if(this.servers.forEach((K,W)=>{let H=K.listen;if(K.gossiped&&this.currentServer.listen!==H&&G.get(H)===void 0)J.push(W);G.delete(H)}),J.reverse(),J.forEach((K)=>{let W=this.servers.splice(K,1);Q=Q.concat(W[0].listen)}),G.forEach((K,W)=>{this.servers.push(K),X.push(W)}),this.randomize&&X.length>0){let K=this.currentServer,W=this.servers.filter((H)=>H!==K);(0,Td0.shuffle)(W),this.servers=K?[K,...W]:W}return{added:X,deleted:Q}}}Bp1.Servers=W90});var H90=_((Ep1)=>{Object.defineProperty(Ep1,"__esModule",{value:!0});Ep1.QueuedIteratorImpl=void 0;var kd0=FJ(),Lp1=cY();class Dp1{inflight;processed;received;noIterator;iterClosed;done;signal;yields;filtered;pendingFiltered;ctx;_data;err;time;profile;yielding;didBreak;constructor(){this.inflight=0,this.filtered=0,this.pendingFiltered=0,this.processed=0,this.received=0,this.noIterator=!1,this.done=!1,this.signal=(0,kd0.deferred)(),this.yields=[],this.iterClosed=(0,kd0.deferred)(),this.time=0,this.yielding=!1,this.didBreak=!1,this.profile=!1}[Symbol.asyncIterator](){return this.iterate()}push($){if(this.done)return;if(this.didBreak){if(typeof $==="function"){let Z=$;try{Z()}catch(X){}}return}if(typeof $==="function")this.pendingFiltered++;this.yields.push($),this.signal.resolve()}async*iterate(){if(this.noIterator)throw new Lp1.InvalidOperationError("iterator cannot be used when a callback is registered");if(this.yielding)throw new Lp1.InvalidOperationError("iterator is already yielding");this.yielding=!0;try{while(!0){if(this.yields.length===0)await this.signal;if(this.err)throw this.err;let $=this.yields;this.inflight=$.length,this.yields=[];for(let Z=0;Z<$.length;Z++){if(typeof $[Z]==="function"){this.pendingFiltered--;let Q=$[Z];try{Q()}catch(Y){throw Y}if(this.err)throw this.err;continue}this.processed++,this.inflight--;let X=this.profile?Date.now():0;yield $[Z],this.time=this.profile?Date.now()-X:0}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,kd0.deferred)()}}finally{this.didBreak=!0,this.stop()}}stop($){if(this.done)return;this.err=$,this.done=!0,this.signal.resolve(),this.iterClosed.resolve($)}getProcessed(){return this.noIterator?this.received:this.processed}getPending(){return this.yields.length+this.inflight-this.pendingFiltered}getReceived(){return this.received-this.filtered}}Ep1.QueuedIteratorImpl=Dp1});var Vd0=_((Ap1)=>{Object.defineProperty(Ap1,"__esModule",{value:!0});Ap1.MuxSubscription=void 0;var sd6=Tw(),jp1=cY();class Pp1{baseInbox;reqs;constructor(){this.reqs=new Map}size(){return this.reqs.size}init($){return this.baseInbox=`${(0,sd6.createInbox)($)}.`,this.baseInbox}add($){if(!isNaN($.received))$.received=0;this.reqs.set($.token,$)}get($){return this.reqs.get($)}cancel($){this.reqs.delete($.token)}getToken($){let Z=$.subject||"";if(Z.indexOf(this.baseInbox)===0)return Z.substring(this.baseInbox.length);return null}all(){return Array.from(this.reqs.values())}handleError($,Z){if($)return this.all().forEach((X)=>{X.resolver(Z,{})}),!0;if(Z.operation==="publish"){let X=this.all().find((Q)=>{return Q.requestSubject===Z.subject});if(X)return X.resolver(Z,{}),!0}return!1}dispatcher(){return($,Z)=>{let X=this.getToken(Z);if(X){let Q=this.get(X);if(Q){if($===null)$=Z?.data?.length===0&&Z.headers?.code===503?new jp1.NoRespondersError(Q.requestSubject):null;Q.resolver($,Z)}}}}close(){let $=new jp1.RequestError("connection closed");this.reqs.forEach((Z)=>{Z.resolver($,{})})}}Ap1.MuxSubscription=Pp1});var Sd0=_((Ip1)=>{Object.defineProperty(Ip1,"__esModule",{value:!0});Ip1.Heartbeat=void 0;var ed6=FJ();class Rp1{ph;interval;maxOut;timer;pendings;constructor($,Z,X){this.ph=$,this.interval=Z,this.maxOut=X,this.pendings=[]}start(){this.cancel(),this._schedule()}cancel($){if(this.timer)clearTimeout(this.timer),this.timer=void 0;if(this._reset(),$)this.ph.disconnect()}_schedule(){this.timer=setTimeout(()=>{if(this.ph.dispatchStatus({type:"ping",pendingPings:this.pendings.length+1}),this.pendings.length===this.maxOut){this.cancel(!0);return}let $=(0,ed6.deferred)();this.ph.flush($).then(()=>{this._reset()}).catch(()=>{this.cancel()}),this.pendings.push($),this._schedule()},this.interval)}_reset(){this.pendings=this.pendings.filter(($)=>{return $.resolve(),!1})}}Ip1.Heartbeat=Rp1});var vd0=_((Sp1)=>{Object.defineProperty(Sp1,"__esModule",{value:!0});Sp1.DenoBuffer=Sp1.MAX_SIZE=Sp1.AssertionError=void 0;Sp1.assert=kp1;Sp1.concat=Vp1;Sp1.append=Zm6;Sp1.readAll=Xm6;Sp1.writeAll=Qm6;var $m6=uY();class Cd0 extends Error{constructor($){super($);this.name="AssertionError"}}Sp1.AssertionError=Cd0;function kp1($,Z="Assertion failed."){if(!$)throw new Cd0(Z)}var Mp1=32768;Sp1.MAX_SIZE=4294967294;function U90($,Z,X=0){let Q=Z.byteLength-X;if($.byteLength>Q)$=$.subarray(0,Q);return Z.set($,X),$.byteLength}function Vp1($,Z){if($===void 0&&Z===void 0)return new Uint8Array(0);if($===void 0)return Z;if(Z===void 0)return $;let X=new Uint8Array($.length+Z.length);return X.set($,0),X.set(Z,$.length),X}function Zm6($,Z){return Vp1($,Uint8Array.of(Z))}class _d0{_buf;_off;constructor($){if(this._off=0,$==null){this._buf=new Uint8Array(0);return}this._buf=new Uint8Array($)}bytes($={copy:!0}){if($.copy===!1)return this._buf.subarray(this._off);return this._buf.slice(this._off)}empty(){return this._buf.byteLength<=this._off}get length(){return this._buf.byteLength-this._off}get capacity(){return this._buf.buffer.byteLength}truncate($){if($===0){this.reset();return}if($<0||$>this.length)throw Error("bytes.Buffer: truncation out of range");this._reslice(this._off+$)}reset(){this._reslice(0),this._off=0}_tryGrowByReslice($){let Z=this._buf.byteLength;if($<=this.capacity-Z)return this._reslice(Z+$),Z;return-1}_reslice($){kp1($<=this._buf.buffer.byteLength),this._buf=new Uint8Array(this._buf.buffer,0,$)}readByte(){let $=new Uint8Array(1);if(this.read($))return $[0];return null}read($){if(this.empty()){if(this.reset(),$.byteLength===0)return 0;return null}let Z=U90(this._buf.subarray(this._off),$);return this._off+=Z,Z}writeByte($){return this.write(Uint8Array.of($))}writeString($){return this.write($m6.TE.encode($))}write($){let Z=this._grow($.byteLength);return U90($,this._buf,Z)}_grow($){let Z=this.length;if(Z===0&&this._off!==0)this.reset();let X=this._tryGrowByReslice($);if(X>=0)return X;let Q=this.capacity;if($<=Math.floor(Q/2)-Z)U90(this._buf.subarray(this._off),this._buf);else if(Q+$>Sp1.MAX_SIZE)throw Error("The buffer cannot be grown beyond the maximum size.");else{let Y=new Uint8Array(Math.min(2*Q+$,Sp1.MAX_SIZE));U90(this._buf.subarray(this._off),Y),this._buf=Y}return this._off=0,this._reslice(Math.min(Z+$,Sp1.MAX_SIZE)),Z}grow($){if($<0)throw Error("Buffer._grow: negative count");let Z=this._grow($);this._reslice(Z)}readFrom($){let Z=0,X=new Uint8Array(Mp1);while(!0){let Q=this.capacity-this.length<Mp1,Y=Q?X:new Uint8Array(this._buf.buffer,this.length),G=$.read(Y);if(G===null)return Z;if(Q)this.write(Y.subarray(0,G));else this._reslice(this.length+G);Z+=G}}}Sp1.DenoBuffer=_d0;function Xm6($){let Z=new _d0;return Z.readFrom($),Z.bytes()}function Qm6($,Z){let X=0;while(X<Z.length)X+=$.write(Z.subarray(X))}});var bd0=_((fp1)=>{Object.defineProperty(fp1,"__esModule",{value:!0});fp1.cc=fp1.State=fp1.Parser=fp1.Kind=void 0;fp1.describe=Um6;var xd0=vd0(),fd0=uY();fp1.Kind={OK:0,ERR:1,MSG:2,INFO:3,PING:4,PONG:5};function Um6($){let Z,X="";switch($.kind){case fp1.Kind.MSG:Z="MSG";break;case fp1.Kind.OK:Z="OK";break;case fp1.Kind.ERR:Z="ERR",X=fd0.TD.decode($.data);break;case fp1.Kind.PING:Z="PING";break;case fp1.Kind.PONG:Z="PONG";break;case fp1.Kind.INFO:Z="INFO",X=fd0.TD.decode($.data)}return`${Z}: ${X}`}function _p1(){let $={};return $.sid=-1,$.hdr=-1,$.size=-1,$}var vp1=48,Nm6=57,Gb=67108864;class xp1{dispatcher;state;as;drop;hdr;ma;argBuf;msgBuf;constructor($){this.dispatcher=$,this.state=fp1.State.OP_START,this.as=0,this.drop=0,this.hdr=0}parse($){let Z;for(Z=0;Z<$.length;Z++){let X=$[Z];switch(this.state){case fp1.State.OP_START:switch(X){case fp1.cc.M:case fp1.cc.m:this.state=fp1.State.OP_M,this.hdr=-1,this.ma=_p1();break;case fp1.cc.H:case fp1.cc.h:this.state=fp1.State.OP_H,this.hdr=0,this.ma=_p1();break;case fp1.cc.P:case fp1.cc.p:this.state=fp1.State.OP_P;break;case fp1.cc.PLUS:this.state=fp1.State.OP_PLUS;break;case fp1.cc.MINUS:this.state=fp1.State.OP_MINUS;break;case fp1.cc.I:case fp1.cc.i:this.state=fp1.State.OP_I;break;default:throw this.fail($.subarray(Z))}break;case fp1.State.OP_H:switch(X){case fp1.cc.M:case fp1.cc.m:this.state=fp1.State.OP_M;break;default:throw this.fail($.subarray(Z))}break;case fp1.State.OP_M:switch(X){case fp1.cc.S:case fp1.cc.s:this.state=fp1.State.OP_MS;break;default:throw this.fail($.subarray(Z))}break;case fp1.State.OP_MS:switch(X){case fp1.cc.G:case fp1.cc.g:this.state=fp1.State.OP_MSG;break;default:throw this.fail($.subarray(Z))}break;case fp1.State.OP_MSG:switch(X){case fp1.cc.SPACE:case fp1.cc.TAB:this.state=fp1.State.OP_MSG_SPC;break;default:throw this.fail($.subarray(Z))}break;case fp1.State.OP_MSG_SPC:switch(X){case fp1.cc.SPACE:case fp1.cc.TAB:continue;default:this.state=fp1.State.MSG_ARG,this.as=Z}break;case fp1.State.MSG_ARG:switch(X){case fp1.cc.CR:this.drop=1;break;case fp1.cc.NL:{let Q=this.argBuf?this.argBuf.bytes():$.subarray(this.as,Z-this.drop);this.processMsgArgs(Q),this.drop=0,this.as=Z+1,this.state=fp1.State.MSG_PAYLOAD,Z=this.as+this.ma.size-1;break}default:if(this.argBuf)this.argBuf.writeByte(X)}break;case fp1.State.MSG_PAYLOAD:if(this.msgBuf)if(this.msgBuf.length>=this.ma.size){let Q=this.msgBuf.bytes({copy:!1});this.dispatcher.push({kind:fp1.Kind.MSG,msg:this.ma,data:Q}),this.argBuf=void 0,this.msgBuf=void 0,this.state=fp1.State.MSG_END}else{let Q=this.ma.size-this.msgBuf.length,Y=$.length-Z;if(Y<Q)Q=Y;if(Q>0)this.msgBuf.write($.subarray(Z,Z+Q)),Z=Z+Q-1;else this.msgBuf.writeByte(X)}else if(Z-this.as>=this.ma.size)this.dispatcher.push({kind:fp1.Kind.MSG,msg:this.ma,data:$.subarray(this.as,Z)}),this.argBuf=void 0,this.msgBuf=void 0,this.state=fp1.State.MSG_END;break;case fp1.State.MSG_END:switch(X){case fp1.cc.NL:this.drop=0,this.as=Z+1,this.state=fp1.State.OP_START;break;default:continue}break;case fp1.State.OP_PLUS:switch(X){case fp1.cc.O:case fp1.cc.o:this.state=fp1.State.OP_PLUS_O;break;default:throw this.fail($.subarray(Z))}break;case fp1.State.OP_PLUS_O:switch(X){case fp1.cc.K:case fp1.cc.k:this.state=fp1.State.OP_PLUS_OK;break;default:throw this.fail($.subarray(Z))}break;case fp1.State.OP_PLUS_OK:switch(X){case fp1.cc.NL:this.dispatcher.push({kind:fp1.Kind.OK}),this.drop=0,this.state=fp1.State.OP_START;break}break;case fp1.State.OP_MINUS:switch(X){case fp1.cc.E:case fp1.cc.e:this.state=fp1.State.OP_MINUS_E;break;default:throw this.fail($.subarray(Z))}break;case fp1.State.OP_MINUS_E:switch(X){case fp1.cc.R:case fp1.cc.r:this.state=fp1.State.OP_MINUS_ER;break;default:throw this.fail($.subarray(Z))}break;case fp1.State.OP_MINUS_ER:switch(X){case fp1.cc.R:case fp1.cc.r:this.state=fp1.State.OP_MINUS_ERR;break;default:throw this.fail($.subarray(Z))}break;case fp1.State.OP_MINUS_ERR:switch(X){case fp1.cc.SPACE:case fp1.cc.TAB:this.state=fp1.State.OP_MINUS_ERR_SPC;break;default:throw this.fail($.subarray(Z))}break;case fp1.State.OP_MINUS_ERR_SPC:switch(X){case fp1.cc.SPACE:case fp1.cc.TAB:continue;default:this.state=fp1.State.MINUS_ERR_ARG,this.as=Z}break;case fp1.State.MINUS_ERR_ARG:switch(X){case fp1.cc.CR:this.drop=1;break;case fp1.cc.NL:{let Q;if(this.argBuf)Q=this.argBuf.bytes(),this.argBuf=void 0;else Q=$.subarray(this.as,Z-this.drop);this.dispatcher.push({kind:fp1.Kind.ERR,data:Q}),this.drop=0,this.as=Z+1,this.state=fp1.State.OP_START;break}default:if(this.argBuf)this.argBuf.write(Uint8Array.of(X))}break;case fp1.State.OP_P:switch(X){case fp1.cc.I:case fp1.cc.i:this.state=fp1.State.OP_PI;break;case fp1.cc.O:case fp1.cc.o:this.state=fp1.State.OP_PO;break;default:throw this.fail($.subarray(Z))}break;case fp1.State.OP_PO:switch(X){case fp1.cc.N:case fp1.cc.n:this.state=fp1.State.OP_PON;break;default:throw this.fail($.subarray(Z))}break;case fp1.State.OP_PON:switch(X){case fp1.cc.G:case fp1.cc.g:this.state=fp1.State.OP_PONG;break;default:throw this.fail($.subarray(Z))}break;case fp1.State.OP_PONG:switch(X){case fp1.cc.NL:this.dispatcher.push({kind:fp1.Kind.PONG}),this.drop=0,this.state=fp1.State.OP_START;break}break;case fp1.State.OP_PI:switch(X){case fp1.cc.N:case fp1.cc.n:this.state=fp1.State.OP_PIN;break;default:throw this.fail($.subarray(Z))}break;case fp1.State.OP_PIN:switch(X){case fp1.cc.G:case fp1.cc.g:this.state=fp1.State.OP_PING;break;default:throw this.fail($.subarray(Z))}break;case fp1.State.OP_PING:switch(X){case fp1.cc.NL:this.dispatcher.push({kind:fp1.Kind.PING}),this.drop=0,this.state=fp1.State.OP_START;break}break;case fp1.State.OP_I:switch(X){case fp1.cc.N:case fp1.cc.n:this.state=fp1.State.OP_IN;break;default:throw this.fail($.subarray(Z))}break;case fp1.State.OP_IN:switch(X){case fp1.cc.F:case fp1.cc.f:this.state=fp1.State.OP_INF;break;default:throw this.fail($.subarray(Z))}break;case fp1.State.OP_INF:switch(X){case fp1.cc.O:case fp1.cc.o:this.state=fp1.State.OP_INFO;break;default:throw this.fail($.subarray(Z))}break;case fp1.State.OP_INFO:switch(X){case fp1.cc.SPACE:case fp1.cc.TAB:this.state=fp1.State.OP_INFO_SPC;break;default:throw this.fail($.subarray(Z))}break;case fp1.State.OP_INFO_SPC:switch(X){case fp1.cc.SPACE:case fp1.cc.TAB:continue;default:this.state=fp1.State.INFO_ARG,this.as=Z}break;case fp1.State.INFO_ARG:switch(X){case fp1.cc.CR:this.drop=1;break;case fp1.cc.NL:{let Q;if(this.argBuf)Q=this.argBuf.bytes(),this.argBuf=void 0;else Q=$.subarray(this.as,Z-this.drop);this.dispatcher.push({kind:fp1.Kind.INFO,data:Q}),this.drop=0,this.as=Z+1,this.state=fp1.State.OP_START;break}default:if(this.argBuf)this.argBuf.writeByte(X)}break;default:throw this.fail($.subarray(Z))}}if((this.state===fp1.State.MSG_ARG||this.state===fp1.State.MINUS_ERR_ARG||this.state===fp1.State.INFO_ARG)&&!this.argBuf)this.argBuf=new xd0.DenoBuffer($.subarray(this.as,Z-this.drop));if(this.state===fp1.State.MSG_PAYLOAD&&!this.msgBuf){if(!this.argBuf)this.cloneMsgArg();this.msgBuf=new xd0.DenoBuffer($.subarray(this.as))}}cloneMsgArg(){let $=this.ma.subject.length,Z=this.ma.reply?this.ma.reply.length:0,X=new Uint8Array($+Z);if(X.set(this.ma.subject),this.ma.reply)X.set(this.ma.reply,$);if(this.argBuf=new xd0.DenoBuffer(X),this.ma.subject=X.subarray(0,$),this.ma.reply)this.ma.reply=X.subarray($)}processMsgArgs($){if(this.hdr>=0)return this.processHeaderMsgArgs($);let Z=[],X=-1;for(let Q=0;Q<$.length;Q++)switch($[Q]){case fp1.cc.SPACE:case fp1.cc.TAB:case fp1.cc.CR:case fp1.cc.NL:if(X>=0)Z.push($.subarray(X,Q)),X=-1;break;default:if(X<0)X=Q}if(X>=0)Z.push($.subarray(X));switch(Z.length){case 3:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=void 0,this.ma.size=this.protoParseInt(Z[2],Gb);break;case 4:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=Z[2],this.ma.size=this.protoParseInt(Z[3],Gb);break;default:throw this.fail($,"processMsgArgs Parse Error")}if(this.ma.sid<0)throw this.fail($,"processMsgArgs Bad or Missing Sid Error");if(this.ma.size<0)throw this.fail($,"processMsgArgs Bad or Missing Size Error")}fail($,Z=""){if(!Z)Z=`parse error [${this.state}]`;else Z=`${Z} [${this.state}]`;return Error(`${Z}: ${fd0.TD.decode($)}`)}processHeaderMsgArgs($){let Z=[],X=-1;for(let Q=0;Q<$.length;Q++)switch($[Q]){case fp1.cc.SPACE:case fp1.cc.TAB:case fp1.cc.CR:case fp1.cc.NL:if(X>=0)Z.push($.subarray(X,Q)),X=-1;break;default:if(X<0)X=Q}if(X>=0)Z.push($.subarray(X));switch(Z.length){case 4:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=void 0,this.ma.hdr=this.protoParseInt(Z[2],Gb),this.ma.size=this.protoParseInt(Z[3],Gb);break;case 5:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=Z[2],this.ma.hdr=this.protoParseInt(Z[3],Gb),this.ma.size=this.protoParseInt(Z[4],Gb);break;default:throw this.fail($,"processHeaderMsgArgs Parse Error")}if(this.ma.sid<0)throw this.fail($,"processHeaderMsgArgs Bad or Missing Sid Error");if(this.ma.hdr<0||this.ma.hdr>this.ma.size)throw this.fail($,"processHeaderMsgArgs Bad or Missing Header Size Error");if(this.ma.size<0)throw this.fail($,"processHeaderMsgArgs Bad or Missing Size Error")}protoParseInt($,Z){if($.length===0||$.length>15)return-1;let X=0;for(let Q=0;Q<$.length;Q++){if($[Q]<vp1||$[Q]>Nm6)return-1;X=X*10+($[Q]-vp1)}return Z!==void 0&&X>Z?-1:X}}fp1.Parser=xp1;fp1.State={OP_START:0,OP_PLUS:1,OP_PLUS_O:2,OP_PLUS_OK:3,OP_MINUS:4,OP_MINUS_E:5,OP_MINUS_ER:6,OP_MINUS_ERR:7,OP_MINUS_ERR_SPC:8,MINUS_ERR_ARG:9,OP_M:10,OP_MS:11,OP_MSG:12,OP_MSG_SPC:13,MSG_ARG:14,MSG_PAYLOAD:15,MSG_END:16,OP_H:17,OP_P:18,OP_PI:19,OP_PIN:20,OP_PING:21,OP_PO:22,OP_PON:23,OP_PONG:24,OP_I:25,OP_IN:26,OP_INF:27,OP_INFO:28,OP_INFO_SPC:29,INFO_ARG:30};fp1.cc={CR:13,E:69,e:101,F:70,f:102,G:71,g:103,H:72,h:104,I:73,i:105,K:75,k:107,M:77,m:109,MINUS:45,N:78,n:110,NL:10,O:79,o:111,P:80,p:112,PLUS:43,R:82,r:114,S:83,s:115,SPACE:32,TAB:9}});var w90=_((yp1)=>{Object.defineProperty(yp1,"__esModule",{value:!0});yp1.MsgHdrsImpl=void 0;yp1.canonicalMIMEHeaderKey=gd0;yp1.headers=Bm6;var bp1=uY(),wJ=Tw(),F90=cY();function gd0($){let U=!0,N=Array($.length);for(let F=0;F<$.length;F++){let w=$.charCodeAt(F);if(w===58||w<33||w>126)throw F90.InvalidArgumentError.format("header",`'${$[F]}' is not a valid character in a header name`);if(U&&97<=w&&w<=122)w-=32;else if(!U&&65<=w&&w<=90)w+=32;N[F]=w,U=w==45}return String.fromCharCode(...N)}function Bm6($=0,Z=""){if($===0&&Z!=="")throw F90.InvalidArgumentError.format("code","is required");else if($>0&&Z==="")throw F90.InvalidArgumentError.format("description","is required");return new Jb($,Z)}var yd0="NATS/1.0";class Jb{_code;headers;_description;constructor($=0,Z=""){this._code=$,this._description=Z,this.headers=new Map}[Symbol.iterator](){return this.headers.entries()}size(){return this.headers.size}equals($){if($&&this.headers.size===$.headers.size&&this._code===$._code){for(let[Z,X]of this.headers){let Q=$.values(Z);if(X.length!==Q.length)return!1;let Y=[...X].sort(),G=[...Q].sort();for(let J=0;J<Y.length;J++)if(Y[J]!==G[J])return!1}return!0}return!1}static decode($){let Z=new Jb,Q=bp1.TD.decode($).split(`\r
1337
1337
  `),Y=Q[0];if(Y!==yd0){let G=Y.replace(yd0,"").trim();if(G.length>0){if(Z._code=parseInt(G,10),isNaN(Z._code))Z._code=0;let J=Z._code.toString();G=G.replace(J,""),Z._description=G.trim()}}if(Q.length>=1)Q.slice(1).map((G)=>{if(G){let J=G.indexOf(":");if(J>-1){let K=G.slice(0,J),W=G.slice(J+1).trim();Z.append(K,W)}}});return Z}toString(){if(this.headers.size===0&&this._code===0)return"";let $=yd0;if(this._code>0&&this._description!=="")$+=` ${this._code} ${this._description}`;for(let[Z,X]of this.headers)for(let Q=0;Q<X.length;Q++)$=`${$}\r
1338
1338
  ${Z}: ${X[Q]}`;return`${$}\r
@@ -2726,7 +2726,7 @@ Do NOT require review (requiresReview = false) when the changes are low-risk, su
2726
2726
 
2727
2727
  When unsure between the two, lean toward NOT requiring review for small frontend-only diffs, and toward requiring it for anything backend or large.
2728
2728
 
2729
- Respond with the structured verdict and a short reason.`,g_$;var u_$=B(()=>{k4();dw();t81();E86=o81.object({requiresReview:o81.boolean().describe("true if the changes should go through pull-request review"),reason:o81.string().describe("One short sentence explaining the decision (max ~120 chars)")});g_$={requiresReview:!1,reason:""}});function A86($){if(!$||$.includes(".."))return!1;return P86.test($)}function c_$($){let Z=typeof $.__resolveType==="string"?$.__resolveType:null;if(!Z||!A86(Z))return null;let{__resolveType:X,...Q}=$;return{resolveType:Z,payload:Q}}function l_$($,Z){return`${$.replace(/\/+$/,"")}/deco/invoke/${Z}`}var P86;var d_$=B(()=>{P86=/^[\w./@-]+$/});function r81($){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 m_$($,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 i_$($,Z,X,Q){if(!Q.connectionId)throw new mg("Push requires a connected GitHub account. Connect mcp-github for this project and restart the sandbox.");let G=$.organization?.id;if(!G)throw new mg(l7);await Tw({ctx:$,connectionId:Q.connectionId,organizationId:G,forceRefresh:!0,onLegacyMintError:(N)=>{let F=N instanceof Error?N.message:l7;throw new mg(F)}});let{cloneUrl:Y,gitUserName:J,gitUserEmail:W}=await Rw(Q.connectionId,Q.owner,Q.name,$.db,$.vault),K=Oj0($),H=await Z.proxyDaemonRequest(X,"/_sandbox/config",{method:"PUT",headers:new Headers({"content-type":"application/json"}),body:JSON.stringify({git:{repository:{cloneUrl:Y},identity:{userName:J,userEmail:W}},...K?{operator:K}:{}})});if(!H.ok){let N=await cw(H,T86).catch(()=>H.statusText);throw Error(`Failed to refresh sandbox git credentials (${H.status}): ${N}`)}}var T86=10485760,mg;var n_$=B(()=>{GN();c81();Ci();of();mg=class mg extends Error{constructor($){super($);this.name="GitPushAuthError"}}});function I86($){let Z=$.startsWith("thread:")?$.slice(7):$;if(!Z||Z.length>255||Z.includes("..")||Z.startsWith("/")||Z.endsWith("/")||Z.endsWith(".lock")||!R86.test(Z))throw Error(`Invalid branch name: ${$}`)}function cC($){return AbortSignal.any([$.req.raw.signal,AbortSignal.timeout(M86)])}function lC($){let{runner:Z}=$.get("vmClaim");if(!Z)return $.json({error:"No sandbox runner configured"},503);return Z}function a81($,Z){let Q=(Bj0.get($)??Promise.resolve()).catch(()=>{}).then(Z),G=Q.catch(()=>{});return Bj0.set($,G),G.finally(()=>{if(Bj0.get($)===G)Bj0.delete($)}),Q}async function fZ($,Z,X){let Q=lC($);if(Q instanceof Response)return Q;let{claimName:G,userId:Y,projectRef:J}=$.get("vmClaim"),W=X?.method??"POST",K=null,H=new Headers;if(X?.jsonBody!==void 0)K=X.jsonBody,H.set("content-type","application/json");else if(X?.forwardJsonBody)K=await $.req.text(),H.set("content-type","application/json");let N=X?.signal,F={method:W,headers:H,body:K,...N?{signal:N}:{}},U=async()=>{let w=await Q.proxyDaemonRequest(G,Z,F);if(X?.map404to410&&w.status===404){try{await w.body?.cancel()}catch{}if(await Q.adoptLiveClaim?.({userId:Y,projectRef:J},G))w=await Q.proxyDaemonRequest(G,Z,F);if(w.status===404){try{await w.body?.cancel()}catch{}return new Response(JSON.stringify({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."}),{status:410,headers:{"content-type":"application/json",...gG}})}}let O=await w.text(),D=X?.redactRepoDirUnlessDesktop&&Q.kind!=="user-desktop"?S86(O):O,L=w.headers.get("content-type")??"application/json";return new Response(D,{status:w.status,headers:{"content-type":L,...gG}})};try{if(N){let w=U();return w.catch(()=>{}),await Promise.race([w,new Promise((D,L)=>{if(N.aborted)return L(N.reason);N.addEventListener("abort",()=>L(N.reason),{once:!0})})])}return await U()}catch(w){let O=w instanceof Error?w.message:String(w);return $.json({error:`Daemon unreachable: ${O}`},502)}}function S86($){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 Dj0($,Z,X,Q="GET",G){let Y=await $.proxyDaemonRequest(Z,X,{method:Q,headers:new Headers,body:null});if(Y.status===404&&G){try{await Y.body?.cancel()}catch{}if(await $.adoptLiveClaim?.(G,Z))Y=await $.proxyDaemonRequest(Z,X,{method:Q,headers:new Headers,body:null})}if(Y.status===404){try{await Y.body?.cancel()}catch{}throw Error("SANDBOX_GONE")}let J=await Y.text();if(!Y.ok)try{let W=JSON.parse(J);throw Error(W.error??`Daemon error (${Y.status})`)}catch(W){if(W instanceof Error&&W.message!==J)throw W;throw Error(`Daemon error (${Y.status})`)}return JSON.parse(J)}function V86($){return o_$.includes($)}var R86,p_$=524288,q86=65536,M86=1e4,t_$=2000,k86,Bj0,gG,o_$,r_$=()=>{let $=new B1;return $.use("/:virtualMcpId/:branch/*",k86),$.post("/:virtualMcpId/:branch/write",(Z)=>fZ(Z,"/_sandbox/write",{forwardJsonBody:!0,signal:cC(Z)})),$.post("/:virtualMcpId/:branch/unlink",(Z)=>fZ(Z,"/_sandbox/unlink",{forwardJsonBody:!0,signal:cC(Z)})),$.post("/:virtualMcpId/:branch/mkdir",(Z)=>fZ(Z,"/_sandbox/mkdir",{forwardJsonBody:!0,signal:cC(Z)})),$.post("/:virtualMcpId/:branch/rename",(Z)=>fZ(Z,"/_sandbox/rename",{forwardJsonBody:!0,signal:cC(Z)})),$.post("/:virtualMcpId/:branch/read",(Z)=>fZ(Z,"/_sandbox/read",{forwardJsonBody:!0,signal:cC(Z)})),$.post("/:virtualMcpId/:branch/glob",(Z)=>fZ(Z,"/_sandbox/glob",{forwardJsonBody:!0,signal:cC(Z)})),$.post("/:virtualMcpId/:branch/grep",(Z)=>fZ(Z,"/_sandbox/grep",{forwardJsonBody:!0,signal:cC(Z)})),$.post("/:virtualMcpId/:branch/exec/:script",async(Z)=>{let X=Z.req.param("script");if(!X)return Z.json({error:"missing script name"},400);return fZ(Z,`/_sandbox/exec/${encodeURIComponent(X)}`)}),$.post("/:virtualMcpId/:branch/exec/:script/kill",async(Z)=>{let X=Z.req.param("script");if(!X)return Z.json({error:"missing script name"},400);return fZ(Z,`/_sandbox/exec/${encodeURIComponent(X)}/kill`)}),$.get("/:virtualMcpId/:branch/config",(Z)=>fZ(Z,"/_sandbox/config",{method:"GET",map404to410:!0,redactRepoDirUnlessDesktop:!0})),$.put("/:virtualMcpId/:branch/config",(Z)=>fZ(Z,"/_sandbox/config",{method:"PUT",forwardJsonBody:!0,map404to410:!0})),$.post("/:virtualMcpId/:branch/setup/:step",async(Z)=>{let X=Z.req.param("step");if(!X||!V86(X))return Z.json({error:`step must be one of: ${o_$.join(", ")}`},400);if(X==="start"){let Q=Z.get("vmClaim");if(Q.runner){let G=o(Z.var.studioContext),Y=mF0(Q.virtualMcpMetadata);try{await nF0({ctx:Z.var.studioContext,runner:Q.runner,handle:Q.claimName,orgId:G.id,userId:Q.callerUserId,entries:Y})}catch(J){let W=J instanceof Error?J.message:String(J);return Z.json({error:`Failed to push env to daemon: ${W}`},502)}}}return fZ(Z,`/_sandbox/setup/${X}`,{signal:Z.req.raw.signal,map404to410:!0})}),$.get("/:virtualMcpId/:branch/events",(Z)=>{let X=Z.get("vmClaim");if(!X.runner)return XF(Z,async(Q)=>{await Q.writeSSE({event:"phase",data:JSON.stringify({kind:"failed",reason:"unknown",message:"No sandbox runner configured on this studio instance."})})});return __$(Z,{ctx:Z.var.studioContext,claimName:X.claimName,runner:X.runner,virtualMcpId:X.virtualMcpId,branch:X.branch,userId:X.userId,projectRef:X.projectRef,virtualMcpMetadata:X.virtualMcpMetadata})}),$.get("/:virtualMcpId/:branch/git/status",(Z)=>fZ(Z,"/_sandbox/git/status",{method:"GET",map404to410:!0,signal:AbortSignal.any([Z.req.raw.signal,AbortSignal.timeout(t_$)])})),$.post("/:virtualMcpId/:branch/git/status",(Z)=>fZ(Z,"/_sandbox/git/status",{map404to410:!0,signal:AbortSignal.any([Z.req.raw.signal,AbortSignal.timeout(t_$)])})),$.post("/:virtualMcpId/:branch/git/diff",(Z)=>fZ(Z,"/_sandbox/git/diff",{forwardJsonBody:!0,map404to410:!0})),$.post("/:virtualMcpId/:branch/git/publish",async(Z)=>{let X=lC(Z);if(X instanceof Response)return X;let{claimName:Q,virtualMcpMetadata:G,connectionIds:Y}=Z.get("vmClaim"),J=Z.var.studioContext;return a81(Q,async()=>{try{await l81(J,X,Q);let W=m_$(G,Y);if(W)await i_$(J,X,Q,W)}catch(W){if(W instanceof mg)return Z.json({error:W.message},403,gG);let K=W instanceof Error?W.message:String(W);return Z.json({error:K},502,gG)}return fZ(Z,"/_sandbox/git/publish",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/discard",(Z)=>{let{claimName:X}=Z.get("vmClaim");return a81(X,()=>fZ(Z,"/_sandbox/git/discard",{forwardJsonBody:!0,map404to410:!0}))}),$.post("/:virtualMcpId/:branch/git/rebase",async(Z)=>{let X=lC(Z);if(X instanceof Response)return X;let{claimName:Q}=Z.get("vmClaim"),G=Z.var.studioContext;return a81(Q,async()=>{try{await l81(G,X,Q)}catch(Y){let J=Y instanceof Error?Y.message:String(Y);return Z.json({error:J},502,gG)}return fZ(Z,"/_sandbox/git/rebase",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/suggest-commit",HZ({maxSize:p_$,onError:(Z)=>Z.json({error:"Payload too large"},413,gG)}),async(Z)=>{let X=lC(Z);if(X instanceof Response)return X;let{claimName:Q,userId:G,projectRef:Y}=Z.get("vmClaim"),J=Z.var.studioContext;try{let W=await Z.req.json().catch(()=>({})),K=W.status,H=W.diff,N=H!=null&&typeof H.diffs==="object"&&H.diffs!==null,[F,U]=i81(K)&&N?[K,H]:await Promise.all([Dj0(X,Q,"/_sandbox/git/status","GET",{userId:G,projectRef:Y}),Dj0(X,Q,"/_sandbox/git/diff","GET",{userId:G,projectRef:Y})]),w=await y_$(J,F,U);return Z.json(w,200,gG)}catch(W){let K=W instanceof Error?W.message:String(W);if(K==="SANDBOX_GONE")return Z.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,gG);return Z.json({error:K},502,gG)}}),$.post("/:virtualMcpId/:branch/git/judge-review",HZ({maxSize:p_$,onError:(Z)=>Z.json({error:"Payload too large"},413,gG)}),async(Z)=>{let X=lC(Z);if(X instanceof Response)return X;let{claimName:Q,userId:G,projectRef:Y}=Z.get("vmClaim"),J=Z.var.studioContext;try{let W=await Z.req.json().catch(()=>({})),K=W.status,H=W.diff,N=H!=null&&typeof H.diffs==="object"&&H.diffs!==null,[F,U]=i81(K)&&N?[K,H]:await Promise.all([Dj0(X,Q,"/_sandbox/git/status","GET",{userId:G,projectRef:Y}),Dj0(X,Q,"/_sandbox/git/diff","GET",{userId:G,projectRef:Y})]),w=await h_$(J,F,U,typeof W.language==="string"?W.language:void 0);return Z.json(w,200,gG)}catch(W){let K=W instanceof Error?W.message:String(W);if(K==="SANDBOX_GONE")return Z.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,gG);return Z.json({error:K},502,gG)}}),$.get("/:virtualMcpId/:branch/preview-fetch",async(Z)=>{let X=lC(Z);if(X instanceof Response)return X;let{claimName:Q}=Z.get("vmClaim"),G=Z.req.query("path");if(!G||!G.startsWith("/")||G.startsWith("//")||G.includes("..")||G.includes("\\"))return Z.json({error:"Path not allowed"},403);let Y;try{Y=await X.getPreviewUrl(Q)}catch{return Z.json({error:"Preview not available"},502)}if(!Y)return Z.json({error:"Preview not available"},502);let J=Y.replace(/\/+$/,""),W=r81(`${J}${G}`),K;try{K=await fetch(W?.url??`${J}${G}`,{...W?{headers:{host:W.hostHeader}}:{}})}catch{return Z.json({error:"Preview unreachable"},502)}let H;try{H=await K.text()}catch{return Z.json({error:"Preview unreachable"},502)}return new Response(H,{status:K.status,headers:{"content-type":K.headers.get("content-type")??"application/json"}})}),$.post("/:virtualMcpId/:branch/preview-invoke",HZ({maxSize:q86,onError:(Z)=>Z.json({error:"Payload too large"},413)}),async(Z)=>{let X=lC(Z);if(X instanceof Response)return X;let{claimName:Q}=Z.get("vmClaim"),G;try{G=await X.getPreviewUrl(Q)}catch{return Z.json({error:"Preview not available"},502)}if(!G)return Z.json({error:"Preview not available"},502);let Y;try{Y=await Z.req.json()}catch{return Z.json({error:"Invalid JSON body"},400)}if(!Y||typeof Y!=="object"||Array.isArray(Y))return Z.json({error:"Invalid JSON body"},400);let J=c_$(Y);if(!J)return Z.json({error:"Invalid or missing __resolveType"},400);let W=l_$(G,J.resolveType),K=r81(W),H;try{H=await fetch(K?.url??W,{method:"POST",headers:{"content-type":"application/json",...K?{host:K.hostHeader}:{}},body:JSON.stringify(J.payload),signal:AbortSignal.timeout(30000)})}catch{return Z.json({error:"Preview unreachable"},502)}let N;try{N=await H.text()}catch{return Z.json({error:"Preview unreachable"},502)}return new Response(N,{status:H.status,headers:{"content-type":H.headers.get("content-type")??"application/json"}})}),$};var a_$=B(()=>{y8();lO();dg();k_$();QN();V_$();B3();yw();C_$();v_$();Id0();Si();t81();u_$();d_$();n_$();R86=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;k86=M_$(async($,Z)=>{let X=$.var.studioContext;try{$0(X)}catch{return $.json({error:"Unauthorized"},401)}let Q=W1(X);if(!Q)return $.json({error:"Unauthorized"},401);let G;try{G=o(X)}catch{return $.json({error:"Organization scope required"},403)}let Y=$.req.param("virtualMcpId"),J=$.req.param("branch");if(!Y||!J)return $.json({error:"virtualMcpId and branch are required"},400);try{I86(J)}catch(w){let O=w instanceof Error?w.message:String(w);return $.json({error:O},400)}let W=await X.storage.virtualMcps.findById(Y);if(!W||W.organization_id!==G.id)return $.json({error:"Virtual MCP not found"},404);let K=rm({orgId:G.id,virtualMcpId:Y,branch:J}),H=await wN(X,J,Q),N=S_$({userId:H,projectRef:K}),F=W.metadata??null,U;try{U=(await hX(X,{userId:H,branch:J,virtualMcpMetadata:F})).provider}catch{U=null}if(!U)return $.json({error:"No sandbox runner found"},404);return $.set("vmClaim",{claimName:N,callerUserId:Q,runner:U,virtualMcpId:Y,branch:J,userId:H,projectRef:K,virtualMcpMetadata:F,connectionIds:W.connections?.map((w)=>w.connection_id)??[]}),Z()});Bj0=new Map;gG={"Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache"};o_$=["clone","install","start"]});var s_$=($)=>{let Z=new B1;if(Z.use("*",_C),Z.route("/",CE0()),Z.route("/",FS$()),Z.route("/",O_$()),Z.route("/",F_$()),Z.route("/",Fj0()),Z.route("/tools",P_$()),Z.route("/",E_$()),Z.route("/",pC$({kvStorage:$.kvStorage})),Z.route("/",iC$()),Z.route("/fs",G_$({getConnection:$.getNatsConnection})),Z.route("/sandbox",r_$()),Z.route("/",K_$()),Z.route("/deco-sites",vE0()),Z.route("/sso",RE0()),Z.route("/",Uj0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",QS$()),$.mountDevAssets)Z.route("/dev-assets",bE0({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("/",sq$()),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",J_$()),Z.route("/mcp",pw0()),Z.route("/mcp/self",Nj0()),Z.route("/mcp",rw0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var e_$=B(()=>{y8();K$1();GS$();w$1();fE0();Yo();J$1();nC$();tC$();Y_$();Ln();a11();aw0();b81();W_$();H_$();U_$();B_$();j_$();x81();A_$();y81();tw0();a_$()});function _86($){return $.filter((Z)=>Z.vendors?.alias).map((Z)=>({name:Z.name,title:Z.title,description:Z.description,logo:Z.logo,category:Z.category,vendor:{alias:Z.vendors.alias,url:Z.vendors.url}}))}async function v86($,Z){let X=await fetch(`${$}/rest/v1/apps?select=name,title,description,logo,category,vendors(alias,url)`,{headers:{apikey:Z,Authorization:`Bearer ${Z}`,Accept:"application/json"},signal:AbortSignal.timeout(C86)});if(!X.ok){let Q=await X.text().catch(()=>X.statusText);throw console.error(`[deco-apps] Supabase error (${X.status}): ${Q.slice(0,200)}`),Error(`External service error (${X.status})`)}return await X.json()}var C86=1e4,b86=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},$v$=()=>{let $=new B1;return $.use("*",b86),$.get("/",async(Z)=>{let X=c0(),Q=X.decoSupabaseUrl,G=X.decoSupabaseServiceKey;if(!Q||!G)return Z.json({apps:[]});try{let Y=await v86(Q,G);return Z.json({apps:_86(Y)})}catch(Y){return console.error("[deco-apps] GET error:",Y),Z.json({error:"Failed to fetch apps"},502)}}),$};var Zv$=B(()=>{y8();S$()});import{z as M1}from"zod";function gK($,Z="invalid_request_error",X=null,Q=null){return{error:{message:$,type:Z,param:X,code:Q}}}function m86($){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 i86($,Z,X){try{return JSON.parse($)}catch{throw new Gv$(`Invalid JSON in tool call arguments for function '${X}' (tool_call_id: ${Z}): ${$}`)}}function n86($){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((G)=>{if(G.type==="text")return{type:"text",text:G.text};return{type:"image",image:G.image_url.url}})};case"assistant":if(X.tool_calls&&X.tool_calls.length>0)return{role:"assistant",content:X.tool_calls.map((G)=>({type:"tool-call",toolCallId:G.id,toolName:G.function.name,input:i86(G.function.arguments,G.id,G.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 p86($){let Z=$.map((X)=>{let Q=X.function.parameters?EG(X.function.parameters):EG({type:"object",properties:{}});return[X.function.name,_$({description:X.function.description,inputSchema:Q})]});return Object.fromEntries(Z)}function t86($){if(!$)return;return{openai:{response_format:$}}}function o86(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function Xv$($,Z,X,Q,G,Y){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:Y};return G?{...J,providerOptions:G}:J}function Qv$($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var f86=256,x86,y86,g86,h86,u86,c86,l86,d86,Gv$,Yv$,Jv$;var Wv$=B(()=>{k4();y8();dg();fN();x86=M1.object({type:M1.literal("function"),function:M1.object({name:M1.string(),description:M1.string().optional(),parameters:M1.record(M1.string(),M1.unknown()).optional()})}),y86=M1.object({id:M1.string(),type:M1.literal("function"),function:M1.object({name:M1.string(),arguments:M1.string()})}),g86=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(y86).optional()}),M1.object({role:M1.literal("tool"),content:M1.string(),tool_call_id:M1.string()})]),h86=M1.object({type:M1.literal("text")}),u86=M1.object({type:M1.literal("json_object")}),c86=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()})}),l86=M1.union([h86,u86,c86]),d86=M1.object({model:M1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:M1.array(g86),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(x86).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:l86.optional(),user:M1.string().optional()});Gv$=class Gv$ extends Error{constructor($){super($);this.name="MessageConversionError"}};Yv$=new B1;Yv$.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),X=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(gK("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(gK("Organization context is required. Ensure your API key has organization metadata.","invalid_request_error","organization"),400);if((Z.organization.slug??Z.organization.id)!==X)return $.json(gK("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Q=await $.req.json(),G=d86.safeParse(Q);if(!G.success){let L=G.error.issues[0]??{message:"Invalid request",path:[]};return $.json(gK(`Invalid request: ${L.message}`,"invalid_request_error",L.path.length>0?L.path.join("."):null),400)}let Y=G.data,J=m86(Y.model);if(!J)return $.json(gK("Invalid model format. Expected 'model_id' or 'credential_id:model_id' (e.g., 'claude-sonnet-4-6' or 'key_abc123:claude-sonnet-4-6')","invalid_request_error","model"),400);let{credentialId:W}=J,{modelId:K}=J;if(!W){let E=(await Z.storage.aiProviderKeys.list({organizationId:Z.organization.id})).find((j)=>ZD(j.providerId));if(!E)return $.json(gK("No AI provider credentials configured for this organization. Add a credential in settings or specify one explicitly via 'credential_id:model_id'.","invalid_request_error","model"),400);W=E.id}let H;try{H=await Z.aiProviders.activate(W,Z.organization.id)}catch{return $.json(gK(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let N=H.aiSdk.languageModel(K),F=n86(Y.messages),U=Y.tools?p86(Y.tools):void 0,w=t86(Y.response_format),O=o86(),D=Math.floor(Date.now()/1000);if(Y.stream)return XF($,async(L)=>{let E=Xv$(N,F,U,Y,w,$.req.raw.signal);try{let j=Pw(E),z=!1,A=0,P="",M=async()=>{if(P.length===0)return;let k=P;P="",await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:D,model:Y.model,choices:[{index:0,delta:{content:k},finish_reason:null}]})})};for await(let k of j.fullStream){if(!z&&(k.type==="text-delta"||k.type==="tool-call"))await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:D,model:Y.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),z=!0;if(k.type==="text-delta"){if(P+=k.text,P.length>=f86)await M()}else if(k.type==="tool-call"){await M();let q=A++;await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:D,model:Y.model,choices:[{index:0,delta:{tool_calls:[{index:q,id:k.toolCallId,type:"function",function:{name:k.toolName,arguments:JSON.stringify(k.input)}}]},finish_reason:null}]})})}else if(k.type==="finish")await M(),await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:D,model:Y.model,choices:[{index:0,delta:{},finish_reason:Qv$(k.finishReason)}],usage:k.totalUsage?{prompt_tokens:k.totalUsage.inputTokens??0,completion_tokens:k.totalUsage.outputTokens??0,total_tokens:k.totalUsage.totalTokens??0}:void 0})})}await M(),await L.writeSSE({data:"[DONE]"})}catch(j){let z=j;console.error("[openai-compat:stream] Error:",z.message),await L.writeSSE({data:JSON.stringify({error:{message:z.message,type:"server_error"}})})}});else{let L=Xv$(N,F,U,Y,w,$.req.raw.signal),E=await jw(L),j={role:"assistant",content:E.text||null};if(E.toolCalls&&E.toolCalls.length>0)j.tool_calls=E.toolCalls.map((z)=>({id:z.toolCallId,type:"function",function:{name:z.toolName,arguments:JSON.stringify("input"in z?z.input:{})}})),j.content=null;return $.json({id:O,object:"chat.completion",created:D,model:Y.model,choices:[{index:0,message:j,finish_reason:Qv$(E.finishReason)}],usage:{prompt_tokens:E.usage?.inputTokens??0,completion_tokens:E.usage?.outputTokens??0,total_tokens:E.usage?.totalTokens??0}})}}catch(Q){let G=Q;if(G.name==="AbortError")return $.json(gK("Request aborted","invalid_request_error"),400);if(G.name==="MessageConversionError")return $.json(gK(G.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",G.message,G.stack),$.json(gK(G.message,"server_error"),500)}});Jv$=Yv$});var Hv$;var Kv$=B(()=>{Hv$={name:"decocms",version:"4.197.9",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@nats-io/jwt":"0.0.10-5","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});function s86(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??a86}}var Nv$,a86="https://ph.studio.decocms.com",Fv$;var Uv$=B(()=>{y8();vx0();IV();jZ();S$();n11();Kv$();Nv$=new B1;Nv$.get("/",($)=>{let Z={version:Hv$.version,theme:rh1(),...iD().logo&&{logo:iD().logo},...KK()&&{internalUrl:Rq1()},...c0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!c0().firecrawlApiKey,auth:Ek$(),posthog:s86(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:!KK()&&c0().sandboxProviderKind==="agent-sandbox"}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});Fv$=Nv$});function ig($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function s81($){return(ig($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((X)=>X.charAt(0).toUpperCase()+X.slice(1)).join(" ")}function Ov$($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(ig($))}&sz=${Z}`}function wv$($,Z){let X=$.trim();if(X.length<=Z)return X;let Q=X.slice(0,Z-1),G=Q.lastIndexOf(" ");return`${(G>Z*0.6?Q.slice(0,G):Q).trimEnd()}\u2026`}function Bv$($){let{brand:Z,domain:X,score:Q,verdict:G}=$,Y=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=G?.trim()?wv$(`${G.trim().replace(/\s+/g," ")} \u2014 ${J}`,200):wv$(`How does ${X} really perform? ${J}`,200);return{title:Y,description:W}}import{z as l0}from"zod";var dC,e86,$46,Z46,X46,Dv$;var Lv$=B(()=>{dC=l0.enum(["good","bad","neutral"]),e86=l0.preprocess(($)=>{if(Array.isArray($))return{kind:"text",value:$.find((X)=>X!==null&&typeof X!=="object")??""};return $!==null&&typeof $==="object"?$:{kind:"text",value:$}},l0.object({kind:l0.enum(["text","number","sparkline","badge","score"]).catch("text"),value:l0.coerce.string().optional(),tone:dC.optional(),muted:l0.boolean().optional(),delta:l0.coerce.string().optional(),deltaDir:l0.enum(["up","down","neutral"]).optional(),points:l0.array(l0.coerce.number()).optional(),label:l0.coerce.string().optional()}).transform(($)=>{if($.kind==="badge"&&$.label==null)$.label=$.value??"";if($.kind==="score"){let Z=Number($.value);if(Number.isNaN(Z))return{...$,kind:"text"}}return $})),$46=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(e86)),Z46={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()},X46=l0.discriminatedUnion("template",[l0.object({template:l0.literal("cover"),score:l0.object({value:l0.coerce.number(),max:l0.coerce.number().optional(),grade:l0.coerce.string().optional(),label:l0.coerce.string().optional()}).optional(),brandImage:l0.coerce.string().optional(),screenshot:l0.coerce.string().optional(),mobileScreenshot:l0.coerce.string().optional()}),l0.object({template:l0.literal("cta"),ctaUrl:l0.coerce.string().optional(),ctaLabel:l0.coerce.string().optional(),bullets:l0.array(l0.coerce.string()).optional()}),l0.object({template:l0.literal("series"),points:l0.array(l0.coerce.number()).min(2),xLabels:l0.array(l0.coerce.string()).min(1),unit:l0.coerce.string().optional(),callout:l0.object({index:l0.coerce.number(),value:l0.coerce.string(),tone:dC.optional()})}),l0.object({template:l0.literal("threshold"),value:l0.coerce.string().default(""),metricLabel:l0.coerce.string().optional(),ratio:l0.coerce.number(),thresholdRatio:l0.coerce.number().optional(),thresholdLabel:l0.coerce.string().default(""),tone:dC.optional()}),l0.object({template:l0.literal("stats"),stats:l0.array(l0.object({value:l0.coerce.string(),label:l0.coerce.string(),tone:dC.optional()})).min(1)}),l0.object({template:l0.literal("bars"),items:l0.array(l0.object({value:l0.coerce.string(),label:l0.coerce.string(),ratio:l0.coerce.number(),tone:dC.optional()})).min(1)}),l0.object({template:l0.literal("gauges"),gauges:l0.array(l0.object({label:l0.coerce.string(),value:l0.coerce.string(),status:l0.enum(["good","warn","bad"]).catch("warn"),caption:l0.coerce.string().optional(),ratio:l0.coerce.number().optional()})).min(1)}),l0.object({template:l0.literal("checklist"),checks:l0.array(l0.object({label:l0.coerce.string(),status:l0.enum(["pass","fail","warn"]).catch("fail"),value:l0.coerce.string().optional()})).min(1)}),l0.object({template:l0.literal("table"),columns:l0.array(l0.object({label:l0.coerce.string(),align:l0.enum(["left","right"]).optional()})).min(1),rows:l0.array($46).min(1),highlightRow:l0.coerce.number().optional()}),l0.object({template:l0.literal("products"),products:l0.array(l0.object({name:l0.coerce.string(),price:l0.coerce.string().optional(),image:l0.coerce.string().optional(),url:l0.coerce.string().optional()})).min(1)}),l0.object({template:l0.literal("list"),entries:l0.array(l0.object({label:l0.coerce.string(),severity:l0.enum(["error","warning","notice"]).catch("notice")})).min(1),moreCount:l0.coerce.number().optional()}),l0.object({template:l0.literal("keywords"),volumeLabel:l0.coerce.string().optional(),keywords:l0.array(l0.object({term:l0.coerce.string(),volume:l0.coerce.string(),position:l0.coerce.number().catch(0)})).min(1)}),l0.object({template:l0.literal("competitor"),metricLabel:l0.coerce.string().optional(),competitors:l0.array(l0.object({name:l0.coerce.string(),value:l0.coerce.string(),tone:dC.optional(),isYou:l0.boolean().optional()})).min(1)}),l0.object({template:l0.literal("scorecard"),rivalLabel:l0.coerce.string().optional(),dimensions:l0.array(l0.object({label:l0.coerce.string(),you:l0.coerce.string(),rival:l0.coerce.string().optional(),rivalName:l0.coerce.string().optional(),tone:dC.optional()})).min(1)})]),Dv$=l0.object({...Z46,template:X46})});function Lj0($){let Z=[],X=[...$.sections].sort((G,Y)=>G.position-Y.position).map((G)=>{let Y=Dv$.safeParse(G.props);if(Y.success)return Y.data;let J=Y.error.issues[0];return Z.push({section_type:G.section_type,position:G.position,reason:J?`${J.path.join(".")||"(root)"}: ${J.message}`:"contract violation"}),null}).filter((G)=>G!==null),Q=X.filter((G)=>G.template.template!=="cover"&&G.template.template!=="cta").map((G)=>({key:G.key,title:G.title}));return{deck:{meta:{...$.meta,scores:$.summary?.scores,scannedAt:$.scanned_at,toc:Q},slides:X},drops:Z}}var e81=B(()=>{Lv$()});import{join as Ev$}from"path";async function G46($){try{let Z=await fetch(`${_W({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(Q46)});if(!Z.ok)return null;let X=await Z.json(),{deck:Q}=Lj0(X);if(!Q.slides.length)return null;let G=Q.slides.find((W)=>W.template.template==="cover"),Y=G?.template,J=Y&&Y.template==="cover"?Y:void 0;return{brand:Q.meta.brand?.trim()||s81($),score:Q.meta.scores?.cover??J?.score?.value,verdict:G?.annotation?.trim()||G?.headline?.trim()||void 0}}catch{return null}}function hG($){return $.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;")}function Y46($,Z){let X=ig($),Q=Z?.brand?.trim()||s81(X),G=Ov$(X,128),J=`${(c0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(X)}`,{title:W,description:K}=Bv$({brand:Q,domain:X,score:Z?.score,verdict:Z?.verdict}),H=`${J}/og.png`,N=`${Q} commerce report by decocms`;return[`<title>${hG(W)}</title>`,`<meta name="description" content="${hG(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="${hG(W)}" />`,`<meta property="og:description" content="${hG(K)}" />`,`<meta property="og:url" content="${hG(J)}" />`,`<meta property="og:image" content="${hG(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${hG(N)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${hG(W)}" />`,`<meta name="twitter:description" content="${hG(K)}" />`,`<meta name="twitter:image" content="${hG(H)}" />`,`<meta name="twitter:image:alt" content="${hG(N)}" />`,`<link rel="canonical" href="${hG(J)}" />`,`<link rel="icon" href="${hG(G)}" sizes="any" />`].join(`
2729
+ Respond with the structured verdict and a short reason.`,g_$;var u_$=B(()=>{k4();dw();t81();E86=o81.object({requiresReview:o81.boolean().describe("true if the changes should go through pull-request review"),reason:o81.string().describe("One short sentence explaining the decision (max ~120 chars)")});g_$={requiresReview:!1,reason:""}});function A86($){if(!$||$.includes(".."))return!1;return P86.test($)}function c_$($){let Z=typeof $.__resolveType==="string"?$.__resolveType:null;if(!Z||!A86(Z))return null;let{__resolveType:X,...Q}=$;return{resolveType:Z,payload:Q}}function l_$($,Z){return`${$.replace(/\/+$/,"")}/deco/invoke/${Z}`}var P86;var d_$=B(()=>{P86=/^[\w./@-]+$/});function r81($){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 m_$($,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 i_$($,Z,X,Q){if(!Q.connectionId)throw new mg("Push requires a connected GitHub account. Connect mcp-github for this project and restart the sandbox.");let G=$.organization?.id;if(!G)throw new mg(l7);await Tw({ctx:$,connectionId:Q.connectionId,organizationId:G,forceRefresh:!0,onLegacyMintError:(N)=>{let F=N instanceof Error?N.message:l7;throw new mg(F)}});let{cloneUrl:Y,gitUserName:J,gitUserEmail:W}=await Rw(Q.connectionId,Q.owner,Q.name,$.db,$.vault),K=Oj0($),H=await Z.proxyDaemonRequest(X,"/_sandbox/config",{method:"PUT",headers:new Headers({"content-type":"application/json"}),body:JSON.stringify({git:{repository:{cloneUrl:Y},identity:{userName:J,userEmail:W}},...K?{operator:K}:{}})});if(!H.ok){let N=await cw(H,T86).catch(()=>H.statusText);throw Error(`Failed to refresh sandbox git credentials (${H.status}): ${N}`)}}var T86=10485760,mg;var n_$=B(()=>{GN();c81();Ci();of();mg=class mg extends Error{constructor($){super($);this.name="GitPushAuthError"}}});function I86($){let Z=$.startsWith("thread:")?$.slice(7):$;if(!Z||Z.length>255||Z.includes("..")||Z.startsWith("/")||Z.endsWith("/")||Z.endsWith(".lock")||!R86.test(Z))throw Error(`Invalid branch name: ${$}`)}function cC($){return AbortSignal.any([$.req.raw.signal,AbortSignal.timeout(M86)])}function lC($){let{runner:Z}=$.get("vmClaim");if(!Z)return $.json({error:"No sandbox runner configured"},503);return Z}function a81($,Z){let Q=(Bj0.get($)??Promise.resolve()).catch(()=>{}).then(Z),G=Q.catch(()=>{});return Bj0.set($,G),G.finally(()=>{if(Bj0.get($)===G)Bj0.delete($)}),Q}async function fZ($,Z,X){let Q=lC($);if(Q instanceof Response)return Q;let{claimName:G,userId:Y,projectRef:J}=$.get("vmClaim"),W=X?.method??"POST",K=null,H=new Headers;if(X?.jsonBody!==void 0)K=X.jsonBody,H.set("content-type","application/json");else if(X?.forwardJsonBody)K=await $.req.text(),H.set("content-type","application/json");let N=X?.signal,F={method:W,headers:H,body:K,...N?{signal:N}:{}},U=async()=>{let w=await Q.proxyDaemonRequest(G,Z,F);if(X?.map404to410&&w.status===404){try{await w.body?.cancel()}catch{}if(await Q.adoptLiveClaim?.({userId:Y,projectRef:J},G))w=await Q.proxyDaemonRequest(G,Z,F);if(w.status===404){try{await w.body?.cancel()}catch{}return new Response(JSON.stringify({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."}),{status:410,headers:{"content-type":"application/json",...gG}})}}let O=await w.text(),D=X?.redactRepoDirUnlessDesktop&&Q.kind!=="user-desktop"?S86(O):O,L=w.headers.get("content-type")??"application/json";return new Response(D,{status:w.status,headers:{"content-type":L,...gG}})};try{if(N){let w=U();return w.catch(()=>{}),await Promise.race([w,new Promise((D,L)=>{if(N.aborted)return L(N.reason);N.addEventListener("abort",()=>L(N.reason),{once:!0})})])}return await U()}catch(w){let O=w instanceof Error?w.message:String(w);return $.json({error:`Daemon unreachable: ${O}`},502)}}function S86($){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 Dj0($,Z,X,Q="GET",G){let Y=await $.proxyDaemonRequest(Z,X,{method:Q,headers:new Headers,body:null});if(Y.status===404&&G){try{await Y.body?.cancel()}catch{}if(await $.adoptLiveClaim?.(G,Z))Y=await $.proxyDaemonRequest(Z,X,{method:Q,headers:new Headers,body:null})}if(Y.status===404){try{await Y.body?.cancel()}catch{}throw Error("SANDBOX_GONE")}let J=await Y.text();if(!Y.ok)try{let W=JSON.parse(J);throw Error(W.error??`Daemon error (${Y.status})`)}catch(W){if(W instanceof Error&&W.message!==J)throw W;throw Error(`Daemon error (${Y.status})`)}return JSON.parse(J)}function V86($){return o_$.includes($)}var R86,p_$=524288,q86=65536,M86=1e4,t_$=2000,k86,Bj0,gG,o_$,r_$=()=>{let $=new B1;return $.use("/:virtualMcpId/:branch/*",k86),$.post("/:virtualMcpId/:branch/write",(Z)=>fZ(Z,"/_sandbox/write",{forwardJsonBody:!0,signal:cC(Z)})),$.post("/:virtualMcpId/:branch/unlink",(Z)=>fZ(Z,"/_sandbox/unlink",{forwardJsonBody:!0,signal:cC(Z)})),$.post("/:virtualMcpId/:branch/mkdir",(Z)=>fZ(Z,"/_sandbox/mkdir",{forwardJsonBody:!0,signal:cC(Z)})),$.post("/:virtualMcpId/:branch/rename",(Z)=>fZ(Z,"/_sandbox/rename",{forwardJsonBody:!0,signal:cC(Z)})),$.post("/:virtualMcpId/:branch/read",(Z)=>fZ(Z,"/_sandbox/read",{forwardJsonBody:!0,signal:cC(Z)})),$.post("/:virtualMcpId/:branch/glob",(Z)=>fZ(Z,"/_sandbox/glob",{forwardJsonBody:!0,signal:cC(Z)})),$.post("/:virtualMcpId/:branch/grep",(Z)=>fZ(Z,"/_sandbox/grep",{forwardJsonBody:!0,signal:cC(Z)})),$.post("/:virtualMcpId/:branch/exec/:script",async(Z)=>{let X=Z.req.param("script");if(!X)return Z.json({error:"missing script name"},400);return fZ(Z,`/_sandbox/exec/${encodeURIComponent(X)}`)}),$.post("/:virtualMcpId/:branch/exec/:script/kill",async(Z)=>{let X=Z.req.param("script");if(!X)return Z.json({error:"missing script name"},400);return fZ(Z,`/_sandbox/exec/${encodeURIComponent(X)}/kill`)}),$.get("/:virtualMcpId/:branch/config",(Z)=>fZ(Z,"/_sandbox/config",{method:"GET",map404to410:!0,redactRepoDirUnlessDesktop:!0})),$.put("/:virtualMcpId/:branch/config",(Z)=>fZ(Z,"/_sandbox/config",{method:"PUT",forwardJsonBody:!0,map404to410:!0})),$.post("/:virtualMcpId/:branch/setup/:step",async(Z)=>{let X=Z.req.param("step");if(!X||!V86(X))return Z.json({error:`step must be one of: ${o_$.join(", ")}`},400);if(X==="start"){let Q=Z.get("vmClaim");if(Q.runner){let G=o(Z.var.studioContext),Y=mF0(Q.virtualMcpMetadata);try{await nF0({ctx:Z.var.studioContext,runner:Q.runner,handle:Q.claimName,orgId:G.id,userId:Q.callerUserId,entries:Y})}catch(J){let W=J instanceof Error?J.message:String(J);return Z.json({error:`Failed to push env to daemon: ${W}`},502)}}}return fZ(Z,`/_sandbox/setup/${X}`,{signal:Z.req.raw.signal,map404to410:!0})}),$.get("/:virtualMcpId/:branch/events",(Z)=>{let X=Z.get("vmClaim");if(!X.runner)return XF(Z,async(Q)=>{await Q.writeSSE({event:"phase",data:JSON.stringify({kind:"failed",reason:"unknown",message:"No sandbox runner configured on this studio instance."})})});return __$(Z,{ctx:Z.var.studioContext,claimName:X.claimName,runner:X.runner,virtualMcpId:X.virtualMcpId,branch:X.branch,userId:X.userId,projectRef:X.projectRef,virtualMcpMetadata:X.virtualMcpMetadata})}),$.get("/:virtualMcpId/:branch/git/status",(Z)=>fZ(Z,"/_sandbox/git/status",{method:"GET",map404to410:!0,signal:AbortSignal.any([Z.req.raw.signal,AbortSignal.timeout(t_$)])})),$.post("/:virtualMcpId/:branch/git/status",(Z)=>fZ(Z,"/_sandbox/git/status",{map404to410:!0,signal:AbortSignal.any([Z.req.raw.signal,AbortSignal.timeout(t_$)])})),$.post("/:virtualMcpId/:branch/git/diff",(Z)=>fZ(Z,"/_sandbox/git/diff",{forwardJsonBody:!0,map404to410:!0})),$.post("/:virtualMcpId/:branch/git/publish",async(Z)=>{let X=lC(Z);if(X instanceof Response)return X;let{claimName:Q,virtualMcpMetadata:G,connectionIds:Y}=Z.get("vmClaim"),J=Z.var.studioContext;return a81(Q,async()=>{try{await l81(J,X,Q);let W=m_$(G,Y);if(W)await i_$(J,X,Q,W)}catch(W){if(W instanceof mg)return Z.json({error:W.message},403,gG);let K=W instanceof Error?W.message:String(W);return Z.json({error:K},502,gG)}return fZ(Z,"/_sandbox/git/publish",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/discard",(Z)=>{let{claimName:X}=Z.get("vmClaim");return a81(X,()=>fZ(Z,"/_sandbox/git/discard",{forwardJsonBody:!0,map404to410:!0}))}),$.post("/:virtualMcpId/:branch/git/rebase",async(Z)=>{let X=lC(Z);if(X instanceof Response)return X;let{claimName:Q}=Z.get("vmClaim"),G=Z.var.studioContext;return a81(Q,async()=>{try{await l81(G,X,Q)}catch(Y){let J=Y instanceof Error?Y.message:String(Y);return Z.json({error:J},502,gG)}return fZ(Z,"/_sandbox/git/rebase",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/suggest-commit",HZ({maxSize:p_$,onError:(Z)=>Z.json({error:"Payload too large"},413,gG)}),async(Z)=>{let X=lC(Z);if(X instanceof Response)return X;let{claimName:Q,userId:G,projectRef:Y}=Z.get("vmClaim"),J=Z.var.studioContext;try{let W=await Z.req.json().catch(()=>({})),K=W.status,H=W.diff,N=H!=null&&typeof H.diffs==="object"&&H.diffs!==null,[F,U]=i81(K)&&N?[K,H]:await Promise.all([Dj0(X,Q,"/_sandbox/git/status","GET",{userId:G,projectRef:Y}),Dj0(X,Q,"/_sandbox/git/diff","GET",{userId:G,projectRef:Y})]),w=await y_$(J,F,U);return Z.json(w,200,gG)}catch(W){let K=W instanceof Error?W.message:String(W);if(K==="SANDBOX_GONE")return Z.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,gG);return Z.json({error:K},502,gG)}}),$.post("/:virtualMcpId/:branch/git/judge-review",HZ({maxSize:p_$,onError:(Z)=>Z.json({error:"Payload too large"},413,gG)}),async(Z)=>{let X=lC(Z);if(X instanceof Response)return X;let{claimName:Q,userId:G,projectRef:Y}=Z.get("vmClaim"),J=Z.var.studioContext;try{let W=await Z.req.json().catch(()=>({})),K=W.status,H=W.diff,N=H!=null&&typeof H.diffs==="object"&&H.diffs!==null,[F,U]=i81(K)&&N?[K,H]:await Promise.all([Dj0(X,Q,"/_sandbox/git/status","GET",{userId:G,projectRef:Y}),Dj0(X,Q,"/_sandbox/git/diff","GET",{userId:G,projectRef:Y})]),w=await h_$(J,F,U,typeof W.language==="string"?W.language:void 0);return Z.json(w,200,gG)}catch(W){let K=W instanceof Error?W.message:String(W);if(K==="SANDBOX_GONE")return Z.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,gG);return Z.json({error:K},502,gG)}}),$.get("/:virtualMcpId/:branch/preview-fetch",async(Z)=>{let X=lC(Z);if(X instanceof Response)return X;let{claimName:Q}=Z.get("vmClaim"),G=Z.req.query("path");if(!G||!G.startsWith("/")||G.startsWith("//")||G.includes("..")||G.includes("\\"))return Z.json({error:"Path not allowed"},403);let Y;try{Y=await X.getPreviewUrl(Q)}catch{return Z.json({error:"Preview not available"},502)}if(!Y)return Z.json({error:"Preview not available"},502);let J=Y.replace(/\/+$/,""),W=r81(`${J}${G}`),K;try{K=await fetch(W?.url??`${J}${G}`,{...W?{headers:{host:W.hostHeader}}:{}})}catch{return Z.json({error:"Preview unreachable"},502)}let H;try{H=await K.text()}catch{return Z.json({error:"Preview unreachable"},502)}return new Response(H,{status:K.status,headers:{"content-type":K.headers.get("content-type")??"application/json"}})}),$.post("/:virtualMcpId/:branch/preview-invoke",HZ({maxSize:q86,onError:(Z)=>Z.json({error:"Payload too large"},413)}),async(Z)=>{let X=lC(Z);if(X instanceof Response)return X;let{claimName:Q}=Z.get("vmClaim"),G;try{G=await X.getPreviewUrl(Q)}catch{return Z.json({error:"Preview not available"},502)}if(!G)return Z.json({error:"Preview not available"},502);let Y;try{Y=await Z.req.json()}catch{return Z.json({error:"Invalid JSON body"},400)}if(!Y||typeof Y!=="object"||Array.isArray(Y))return Z.json({error:"Invalid JSON body"},400);let J=c_$(Y);if(!J)return Z.json({error:"Invalid or missing __resolveType"},400);let W=l_$(G,J.resolveType),K=r81(W),H;try{H=await fetch(K?.url??W,{method:"POST",headers:{"content-type":"application/json",...K?{host:K.hostHeader}:{}},body:JSON.stringify(J.payload),signal:AbortSignal.timeout(30000)})}catch{return Z.json({error:"Preview unreachable"},502)}let N;try{N=await H.text()}catch{return Z.json({error:"Preview unreachable"},502)}return new Response(N,{status:H.status,headers:{"content-type":H.headers.get("content-type")??"application/json"}})}),$};var a_$=B(()=>{y8();lO();dg();k_$();QN();V_$();B3();yw();C_$();v_$();Id0();Si();t81();u_$();d_$();n_$();R86=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;k86=M_$(async($,Z)=>{let X=$.var.studioContext;try{$0(X)}catch{return $.json({error:"Unauthorized"},401)}let Q=W1(X);if(!Q)return $.json({error:"Unauthorized"},401);let G;try{G=o(X)}catch{return $.json({error:"Organization scope required"},403)}let Y=$.req.param("virtualMcpId"),J=$.req.param("branch");if(!Y||!J)return $.json({error:"virtualMcpId and branch are required"},400);try{I86(J)}catch(w){let O=w instanceof Error?w.message:String(w);return $.json({error:O},400)}let W=await X.storage.virtualMcps.findById(Y);if(!W||W.organization_id!==G.id)return $.json({error:"Virtual MCP not found"},404);let K=rm({orgId:G.id,virtualMcpId:Y,branch:J}),H=await wN(X,J,Q),N=S_$({userId:H,projectRef:K}),F=W.metadata??null,U;try{U=(await hX(X,{userId:H,branch:J,virtualMcpMetadata:F})).provider}catch{U=null}if(!U)return $.json({error:"No sandbox runner found"},404);return $.set("vmClaim",{claimName:N,callerUserId:Q,runner:U,virtualMcpId:Y,branch:J,userId:H,projectRef:K,virtualMcpMetadata:F,connectionIds:W.connections?.map((w)=>w.connection_id)??[]}),Z()});Bj0=new Map;gG={"Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache"};o_$=["clone","install","start"]});var s_$=($)=>{let Z=new B1;if(Z.use("*",_C),Z.route("/",CE0()),Z.route("/",FS$()),Z.route("/",O_$()),Z.route("/",F_$()),Z.route("/",Fj0()),Z.route("/tools",P_$()),Z.route("/",E_$()),Z.route("/",pC$({kvStorage:$.kvStorage})),Z.route("/",iC$()),Z.route("/fs",G_$({getConnection:$.getNatsConnection})),Z.route("/sandbox",r_$()),Z.route("/",K_$()),Z.route("/deco-sites",vE0()),Z.route("/sso",RE0()),Z.route("/",Uj0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",QS$()),$.mountDevAssets)Z.route("/dev-assets",bE0({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("/",sq$()),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",J_$()),Z.route("/mcp",pw0()),Z.route("/mcp/self",Nj0()),Z.route("/mcp",rw0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var e_$=B(()=>{y8();K$1();GS$();w$1();fE0();Yo();J$1();nC$();tC$();Y_$();Ln();a11();aw0();b81();W_$();H_$();U_$();B_$();j_$();x81();A_$();y81();tw0();a_$()});function _86($){return $.filter((Z)=>Z.vendors?.alias).map((Z)=>({name:Z.name,title:Z.title,description:Z.description,logo:Z.logo,category:Z.category,vendor:{alias:Z.vendors.alias,url:Z.vendors.url}}))}async function v86($,Z){let X=await fetch(`${$}/rest/v1/apps?select=name,title,description,logo,category,vendors(alias,url)`,{headers:{apikey:Z,Authorization:`Bearer ${Z}`,Accept:"application/json"},signal:AbortSignal.timeout(C86)});if(!X.ok){let Q=await X.text().catch(()=>X.statusText);throw console.error(`[deco-apps] Supabase error (${X.status}): ${Q.slice(0,200)}`),Error(`External service error (${X.status})`)}return await X.json()}var C86=1e4,b86=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},$v$=()=>{let $=new B1;return $.use("*",b86),$.get("/",async(Z)=>{let X=c0(),Q=X.decoSupabaseUrl,G=X.decoSupabaseServiceKey;if(!Q||!G)return Z.json({apps:[]});try{let Y=await v86(Q,G);return Z.json({apps:_86(Y)})}catch(Y){return console.error("[deco-apps] GET error:",Y),Z.json({error:"Failed to fetch apps"},502)}}),$};var Zv$=B(()=>{y8();S$()});import{z as M1}from"zod";function gK($,Z="invalid_request_error",X=null,Q=null){return{error:{message:$,type:Z,param:X,code:Q}}}function m86($){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 i86($,Z,X){try{return JSON.parse($)}catch{throw new Gv$(`Invalid JSON in tool call arguments for function '${X}' (tool_call_id: ${Z}): ${$}`)}}function n86($){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((G)=>{if(G.type==="text")return{type:"text",text:G.text};return{type:"image",image:G.image_url.url}})};case"assistant":if(X.tool_calls&&X.tool_calls.length>0)return{role:"assistant",content:X.tool_calls.map((G)=>({type:"tool-call",toolCallId:G.id,toolName:G.function.name,input:i86(G.function.arguments,G.id,G.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 p86($){let Z=$.map((X)=>{let Q=X.function.parameters?EG(X.function.parameters):EG({type:"object",properties:{}});return[X.function.name,_$({description:X.function.description,inputSchema:Q})]});return Object.fromEntries(Z)}function t86($){if(!$)return;return{openai:{response_format:$}}}function o86(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function Xv$($,Z,X,Q,G,Y){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:Y};return G?{...J,providerOptions:G}:J}function Qv$($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var f86=256,x86,y86,g86,h86,u86,c86,l86,d86,Gv$,Yv$,Jv$;var Wv$=B(()=>{k4();y8();dg();fN();x86=M1.object({type:M1.literal("function"),function:M1.object({name:M1.string(),description:M1.string().optional(),parameters:M1.record(M1.string(),M1.unknown()).optional()})}),y86=M1.object({id:M1.string(),type:M1.literal("function"),function:M1.object({name:M1.string(),arguments:M1.string()})}),g86=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(y86).optional()}),M1.object({role:M1.literal("tool"),content:M1.string(),tool_call_id:M1.string()})]),h86=M1.object({type:M1.literal("text")}),u86=M1.object({type:M1.literal("json_object")}),c86=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()})}),l86=M1.union([h86,u86,c86]),d86=M1.object({model:M1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:M1.array(g86),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(x86).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:l86.optional(),user:M1.string().optional()});Gv$=class Gv$ extends Error{constructor($){super($);this.name="MessageConversionError"}};Yv$=new B1;Yv$.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),X=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(gK("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(gK("Organization context is required. Ensure your API key has organization metadata.","invalid_request_error","organization"),400);if((Z.organization.slug??Z.organization.id)!==X)return $.json(gK("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Q=await $.req.json(),G=d86.safeParse(Q);if(!G.success){let L=G.error.issues[0]??{message:"Invalid request",path:[]};return $.json(gK(`Invalid request: ${L.message}`,"invalid_request_error",L.path.length>0?L.path.join("."):null),400)}let Y=G.data,J=m86(Y.model);if(!J)return $.json(gK("Invalid model format. Expected 'model_id' or 'credential_id:model_id' (e.g., 'claude-sonnet-4-6' or 'key_abc123:claude-sonnet-4-6')","invalid_request_error","model"),400);let{credentialId:W}=J,{modelId:K}=J;if(!W){let E=(await Z.storage.aiProviderKeys.list({organizationId:Z.organization.id})).find((j)=>ZD(j.providerId));if(!E)return $.json(gK("No AI provider credentials configured for this organization. Add a credential in settings or specify one explicitly via 'credential_id:model_id'.","invalid_request_error","model"),400);W=E.id}let H;try{H=await Z.aiProviders.activate(W,Z.organization.id)}catch{return $.json(gK(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let N=H.aiSdk.languageModel(K),F=n86(Y.messages),U=Y.tools?p86(Y.tools):void 0,w=t86(Y.response_format),O=o86(),D=Math.floor(Date.now()/1000);if(Y.stream)return XF($,async(L)=>{let E=Xv$(N,F,U,Y,w,$.req.raw.signal);try{let j=Pw(E),z=!1,A=0,P="",M=async()=>{if(P.length===0)return;let k=P;P="",await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:D,model:Y.model,choices:[{index:0,delta:{content:k},finish_reason:null}]})})};for await(let k of j.fullStream){if(!z&&(k.type==="text-delta"||k.type==="tool-call"))await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:D,model:Y.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),z=!0;if(k.type==="text-delta"){if(P+=k.text,P.length>=f86)await M()}else if(k.type==="tool-call"){await M();let q=A++;await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:D,model:Y.model,choices:[{index:0,delta:{tool_calls:[{index:q,id:k.toolCallId,type:"function",function:{name:k.toolName,arguments:JSON.stringify(k.input)}}]},finish_reason:null}]})})}else if(k.type==="finish")await M(),await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:D,model:Y.model,choices:[{index:0,delta:{},finish_reason:Qv$(k.finishReason)}],usage:k.totalUsage?{prompt_tokens:k.totalUsage.inputTokens??0,completion_tokens:k.totalUsage.outputTokens??0,total_tokens:k.totalUsage.totalTokens??0}:void 0})})}await M(),await L.writeSSE({data:"[DONE]"})}catch(j){let z=j;console.error("[openai-compat:stream] Error:",z.message),await L.writeSSE({data:JSON.stringify({error:{message:z.message,type:"server_error"}})})}});else{let L=Xv$(N,F,U,Y,w,$.req.raw.signal),E=await jw(L),j={role:"assistant",content:E.text||null};if(E.toolCalls&&E.toolCalls.length>0)j.tool_calls=E.toolCalls.map((z)=>({id:z.toolCallId,type:"function",function:{name:z.toolName,arguments:JSON.stringify("input"in z?z.input:{})}})),j.content=null;return $.json({id:O,object:"chat.completion",created:D,model:Y.model,choices:[{index:0,message:j,finish_reason:Qv$(E.finishReason)}],usage:{prompt_tokens:E.usage?.inputTokens??0,completion_tokens:E.usage?.outputTokens??0,total_tokens:E.usage?.totalTokens??0}})}}catch(Q){let G=Q;if(G.name==="AbortError")return $.json(gK("Request aborted","invalid_request_error"),400);if(G.name==="MessageConversionError")return $.json(gK(G.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",G.message,G.stack),$.json(gK(G.message,"server_error"),500)}});Jv$=Yv$});var Hv$;var Kv$=B(()=>{Hv$={name:"decocms",version:"4.197.10",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@nats-io/jwt":"0.0.10-5","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});function s86(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??a86}}var Nv$,a86="https://ph.studio.decocms.com",Fv$;var Uv$=B(()=>{y8();vx0();IV();jZ();S$();n11();Kv$();Nv$=new B1;Nv$.get("/",($)=>{let Z={version:Hv$.version,theme:rh1(),...iD().logo&&{logo:iD().logo},...KK()&&{internalUrl:Rq1()},...c0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!c0().firecrawlApiKey,auth:Ek$(),posthog:s86(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:!KK()&&c0().sandboxProviderKind==="agent-sandbox"}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});Fv$=Nv$});function ig($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function s81($){return(ig($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((X)=>X.charAt(0).toUpperCase()+X.slice(1)).join(" ")}function Ov$($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(ig($))}&sz=${Z}`}function wv$($,Z){let X=$.trim();if(X.length<=Z)return X;let Q=X.slice(0,Z-1),G=Q.lastIndexOf(" ");return`${(G>Z*0.6?Q.slice(0,G):Q).trimEnd()}\u2026`}function Bv$($){let{brand:Z,domain:X,score:Q,verdict:G}=$,Y=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=G?.trim()?wv$(`${G.trim().replace(/\s+/g," ")} \u2014 ${J}`,200):wv$(`How does ${X} really perform? ${J}`,200);return{title:Y,description:W}}import{z as l0}from"zod";var dC,e86,$46,Z46,X46,Dv$;var Lv$=B(()=>{dC=l0.enum(["good","bad","neutral"]),e86=l0.preprocess(($)=>{if(Array.isArray($))return{kind:"text",value:$.find((X)=>X!==null&&typeof X!=="object")??""};return $!==null&&typeof $==="object"?$:{kind:"text",value:$}},l0.object({kind:l0.enum(["text","number","sparkline","badge","score"]).catch("text"),value:l0.coerce.string().optional(),tone:dC.optional(),muted:l0.boolean().optional(),delta:l0.coerce.string().optional(),deltaDir:l0.enum(["up","down","neutral"]).optional(),points:l0.array(l0.coerce.number()).optional(),label:l0.coerce.string().optional()}).transform(($)=>{if($.kind==="badge"&&$.label==null)$.label=$.value??"";if($.kind==="score"){let Z=Number($.value);if(Number.isNaN(Z))return{...$,kind:"text"}}return $})),$46=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(e86)),Z46={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()},X46=l0.discriminatedUnion("template",[l0.object({template:l0.literal("cover"),score:l0.object({value:l0.coerce.number(),max:l0.coerce.number().optional(),grade:l0.coerce.string().optional(),label:l0.coerce.string().optional()}).optional(),brandImage:l0.coerce.string().optional(),screenshot:l0.coerce.string().optional(),mobileScreenshot:l0.coerce.string().optional()}),l0.object({template:l0.literal("cta"),ctaUrl:l0.coerce.string().optional(),ctaLabel:l0.coerce.string().optional(),bullets:l0.array(l0.coerce.string()).optional()}),l0.object({template:l0.literal("series"),points:l0.array(l0.coerce.number()).min(2),xLabels:l0.array(l0.coerce.string()).min(1),unit:l0.coerce.string().optional(),callout:l0.object({index:l0.coerce.number(),value:l0.coerce.string(),tone:dC.optional()})}),l0.object({template:l0.literal("threshold"),value:l0.coerce.string().default(""),metricLabel:l0.coerce.string().optional(),ratio:l0.coerce.number(),thresholdRatio:l0.coerce.number().optional(),thresholdLabel:l0.coerce.string().default(""),tone:dC.optional()}),l0.object({template:l0.literal("stats"),stats:l0.array(l0.object({value:l0.coerce.string(),label:l0.coerce.string(),tone:dC.optional()})).min(1)}),l0.object({template:l0.literal("bars"),items:l0.array(l0.object({value:l0.coerce.string(),label:l0.coerce.string(),ratio:l0.coerce.number(),tone:dC.optional()})).min(1)}),l0.object({template:l0.literal("gauges"),gauges:l0.array(l0.object({label:l0.coerce.string(),value:l0.coerce.string(),status:l0.enum(["good","warn","bad"]).catch("warn"),caption:l0.coerce.string().optional(),ratio:l0.coerce.number().optional()})).min(1)}),l0.object({template:l0.literal("checklist"),checks:l0.array(l0.object({label:l0.coerce.string(),status:l0.enum(["pass","fail","warn"]).catch("fail"),value:l0.coerce.string().optional()})).min(1)}),l0.object({template:l0.literal("table"),columns:l0.array(l0.object({label:l0.coerce.string(),align:l0.enum(["left","right"]).optional()})).min(1),rows:l0.array($46).min(1),highlightRow:l0.coerce.number().optional()}),l0.object({template:l0.literal("products"),products:l0.array(l0.object({name:l0.coerce.string(),price:l0.coerce.string().optional(),image:l0.coerce.string().optional(),url:l0.coerce.string().optional()})).min(1)}),l0.object({template:l0.literal("list"),entries:l0.array(l0.object({label:l0.coerce.string(),severity:l0.enum(["error","warning","notice"]).catch("notice")})).min(1),moreCount:l0.coerce.number().optional()}),l0.object({template:l0.literal("keywords"),volumeLabel:l0.coerce.string().optional(),keywords:l0.array(l0.object({term:l0.coerce.string(),volume:l0.coerce.string(),position:l0.coerce.number().catch(0)})).min(1)}),l0.object({template:l0.literal("competitor"),metricLabel:l0.coerce.string().optional(),competitors:l0.array(l0.object({name:l0.coerce.string(),value:l0.coerce.string(),tone:dC.optional(),isYou:l0.boolean().optional()})).min(1)}),l0.object({template:l0.literal("scorecard"),rivalLabel:l0.coerce.string().optional(),dimensions:l0.array(l0.object({label:l0.coerce.string(),you:l0.coerce.string(),rival:l0.coerce.string().optional(),rivalName:l0.coerce.string().optional(),tone:dC.optional()})).min(1)})]),Dv$=l0.object({...Z46,template:X46})});function Lj0($){let Z=[],X=[...$.sections].sort((G,Y)=>G.position-Y.position).map((G)=>{let Y=Dv$.safeParse(G.props);if(Y.success)return Y.data;let J=Y.error.issues[0];return Z.push({section_type:G.section_type,position:G.position,reason:J?`${J.path.join(".")||"(root)"}: ${J.message}`:"contract violation"}),null}).filter((G)=>G!==null),Q=X.filter((G)=>G.template.template!=="cover"&&G.template.template!=="cta").map((G)=>({key:G.key,title:G.title}));return{deck:{meta:{...$.meta,scores:$.summary?.scores,scannedAt:$.scanned_at,toc:Q},slides:X},drops:Z}}var e81=B(()=>{Lv$()});import{join as Ev$}from"path";async function G46($){try{let Z=await fetch(`${_W({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(Q46)});if(!Z.ok)return null;let X=await Z.json(),{deck:Q}=Lj0(X);if(!Q.slides.length)return null;let G=Q.slides.find((W)=>W.template.template==="cover"),Y=G?.template,J=Y&&Y.template==="cover"?Y:void 0;return{brand:Q.meta.brand?.trim()||s81($),score:Q.meta.scores?.cover??J?.score?.value,verdict:G?.annotation?.trim()||G?.headline?.trim()||void 0}}catch{return null}}function hG($){return $.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;")}function Y46($,Z){let X=ig($),Q=Z?.brand?.trim()||s81(X),G=Ov$(X,128),J=`${(c0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(X)}`,{title:W,description:K}=Bv$({brand:Q,domain:X,score:Z?.score,verdict:Z?.verdict}),H=`${J}/og.png`,N=`${Q} commerce report by decocms`;return[`<title>${hG(W)}</title>`,`<meta name="description" content="${hG(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="${hG(W)}" />`,`<meta property="og:description" content="${hG(K)}" />`,`<meta property="og:url" content="${hG(J)}" />`,`<meta property="og:image" content="${hG(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${hG(N)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${hG(W)}" />`,`<meta name="twitter:description" content="${hG(K)}" />`,`<meta name="twitter:image" content="${hG(H)}" />`,`<meta name="twitter:image:alt" content="${hG(N)}" />`,`<link rel="canonical" href="${hG(J)}" />`,`<link rel="icon" href="${hG(G)}" sizes="any" />`].join(`
2730
2730
  `)}function J46($,Z){return $.replace(/<title>[\s\S]*?<\/title>\s*/i,"").replace(/<meta\s+name="(?:description|twitter:[^"]*)"[^>]*>\s*/gi,"").replace(/<meta\s+property="og:[^"]*"[^>]*>\s*/gi,"").replace(/<link\s+rel="icon"[^>]*>\s*/gi,"").replace("</head>",` ${Z}
2731
2731
  </head>`)}function jv$($){let Z=new B1;return Z.get("/:domain/og.png",async(X)=>{let Q=ig(X.req.param("domain")),G=async()=>{let Y=$?Bun.file(Ev$($,"report-og-fallback.png")):null;if(!Y||!await Y.exists())return X.notFound();return X.body(new Uint8Array(await Y.arrayBuffer()),200,{"Content-Type":"image/png","Cache-Control":"public, max-age=0, s-maxage=3600"})};try{let Y=await fetch(`${_W({})}/api/v2/public/diagnostics/${encodeURIComponent(Q)}/og.png`,{signal:AbortSignal.timeout(W46)}),J=Y.headers.get("content-type")??"";if(!Y.ok||!J.startsWith("image/")||!Y.body)return G();return X.body(Y.body,200,{"Content-Type":J,"Cache-Control":"public, max-age=0, s-maxage=604800"})}catch{return G()}}),Z.get("/:domain",async(X)=>{let Q=X.req.param("domain"),G=$?Ev$($,"index.html"):null,Y=G?Bun.file(G):null;if(!Y||!await Y.exists())return X.notFound();let J=await Y.text();try{let W=await G46(ig(Q)),K=Y46(Q,W);return X.html(J46(J,K),200,{"Cache-Control":"public, max-age=0, s-maxage=300"})}catch{return X.html(J)}}),Z}var Q46=2500,W46=1e4;var zv$=B(()=>{y8();e81();YL();S$()});function _o($,Z){return fetch(`${_W({})}${$}`,Z)}async function K46($,Z,X){let Q=new URLSearchParams;if(Z)Q.set("pw",Z);if(X)Q.set("lang",X);let G=Q.toString()?`?${Q.toString()}`:"",Y=await _o(`/api/v2/public/diagnostics/${encodeURIComponent($)}${G}`,{headers:{Accept:"application/json"}});if(Y.status===404)return{status:"not_found",deck:null,scanned_at:null,drops:[]};if(!Y.ok)throw Error(`report read HTTP ${Y.status}`);let J=await Y.json(),{deck:W,drops:K}=Lj0(J);return{status:W.slides.length?"ready":"empty",deck:W,scanned_at:J.scanned_at,drops:K}}var H46,c3,Ej0=async($,Z)=>{if(!$.get("reportUser"))return $.json({error:"Authentication required"},401);await Z();return},Pv$;var Av$=B(()=>{y8();PY();YL();e81();H46=new Set(["complete","errored","terminated","unknown"]),c3=new B1;c3.use("*",async($,Z)=>{let X=await j8.api.getSession({headers:$.req.raw.headers});$.set("reportUser",X?.user?.id?{email:X.user.email}:void 0),await Z(),$.header("Cache-Control","private, no-store"),$.header("Vary","Cookie");return});c3.use("/run",Ej0);c3.use("/status",Ej0);c3.use("/link-token/*",Ej0);c3.use("/suggest",Ej0);c3.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,G=$.req.query("lang")?.trim()||void 0;try{let Y=await K46(Z,Q,G);if($.header("Cache-Control","private, no-store"),X||!Y.deck)return $.json(Y);return $.json({...Y,deck:{...Y.deck,slides:Y.deck.slides.slice(0,1)},truncated:Y.status==="ready"})}catch{return $.json({error:"report read failed"},502)}});c3.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 G=Z.email,Y=typeof X.distinctId==="string"&&X.distinctId.trim()&&X.distinctId.length<=200?X.distinctId.trim():void 0;try{let J=await _o("/api/v2/diagnostics/run",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${GL({})}`},body:JSON.stringify({url:Q,email:G,distinct_id:Y})});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)}});c3.get("/status",async($)=>{let Z=$.req.query("id");if(!Z)return $.json({error:"id is required"},400);try{let X=await _o(`/api/v2/diagnostics/status?id=${encodeURIComponent(Z)}`,{headers:{Authorization:`Bearer ${GL({})}`}});if(!X.ok)return $.json({error:`status HTTP ${X.status}`},502);let G=(await X.json()).status??"unknown",Y={done:H46.has(G),status:G};return $.json(Y)}catch{return $.json({error:"status failed"},502)}});c3.get("/link-token/:id",async($)=>{let Z=$.req.param("id");try{let X=await _o(`/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)}});c3.get("/suggest",async($)=>{let Z=($.req.query("q")??"").trim().slice(0,64);if(Z.length<2)return $.json({suggestions:[]});try{let X=await _o(`/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:[]})}});Pv$=c3});import{createHmac as N46,timingSafeEqual as F46}from"crypto";function Rv$($,Z,X,Q=Date.now()){if(!Z||!X)return!1;let G,Y=[];for(let H of Z.split(",")){let N=H.indexOf("=");if(N<=0)continue;let F=H.slice(0,N).trim(),U=H.slice(N+1).trim();if(F==="t")G=U;else if(F==="v1")Y.push(U)}if(!G||Y.length===0)return!1;let J=Number(G);if(!Number.isFinite(J)||Math.abs(Q/1000-J)>U46)return!1;let W=N46("sha256",X).update(`${G}.${$}`).digest("hex"),K=Buffer.from(W,"hex");return Y.some((H)=>{let N=Buffer.from(H,"hex");return K.length===N.length&&F46(K,N)})}function Iv$($){let Z;try{Z=JSON.parse($)}catch{return null}let X=eY(Z),Q=eY(eY(X?.data)?.object);if(!X||typeof X.type!=="string"||!Q)return null;return{id:hK(X.id),type:X.type,created:typeof X.created==="number"?X.created:void 0,livemode:typeof X.livemode==="boolean"?X.livemode:void 0,data:{object:Q}}}function qv$($){switch($){case"active":case"trialing":return"active";case"past_due":return"past_due";default:return"canceled"}}function hK($){return typeof $==="string"?$:void 0}function eY($){return typeof $==="object"&&$!==null?$:void 0}function jj0($){return typeof $==="number"?new Date($*1000):null}function X41($){return hK($)??hK(eY($)?.id)}function w46($){return X41($.subscription)??hK(eY(eY($.parent)?.subscription_details)?.subscription)}function O46($){let Z=jj0($.current_period_end);if(Z)return Z;let X=eY($.items)?.data;if(!Array.isArray(X))return null;let Q=0;for(let G of X){let Y=eY(G)?.current_period_end;if(typeof Y==="number"&&Y>Q)Q=Y}return Q>0?new Date(Q*1000):null}function $41($,Z){let X=jj0($.created);return!!X&&!!Z.lastStripeEventAt&&X<Z.lastStripeEventAt}function Z41($,Z){let X=jj0($.created);if(!X)return;return Z.lastStripeEventAt&&Z.lastStripeEventAt>X?void 0:X}async function B46($,Z){let X=Z.data.object;switch(Z.type){case"checkout.session.completed":case"checkout.session.async_payment_succeeded":{let Q=hK(eY(X.metadata)?.orgId);if(!Q)return{handled:!1,reason:"no orgId"};if(hK(eY(X.metadata)?.kind)==="topup"){if(X.mode!=="payment")return{handled:!1,reason:"topup with wrong mode"};if(hK(X.payment_status)!=="paid")return{handled:!1,reason:"payment not confirmed"};let J=hK(X.id);if(!J)return console.error("stripe webhook: topup session without id",{eventId:Z.id,organizationId:Q}),{handled:!1,reason:"topup session without id"};let W=Number(eY(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:eY(X.metadata)?.creditCents}),{handled:!1,reason:"bad topup metadata"};return{handled:!0,organizationId:Q,topUp:{creditCents:W,referenceId:`stripe-topup:${J}`}}}if(X.mode!=="subscription")return{handled:!1,reason:"not a subscription checkout"};if(hK(X.payment_status)!=="paid")return{handled:!1,reason:"payment not confirmed"};let G=await $.getBilling(Q);if(!G)return{handled:!1,reason:"unknown org"};let Y=X41(X.subscription);if(G.stripeSubscriptionId&&Y&&G.stripeSubscriptionId!==Y)return console.error("stripe webhook: refused checkout rebind",{organizationId:Q,eventId:Z.id}),{handled:!1,reason:"org already bound to another subscription",orphanSubscriptionId:Y};if($41(Z,G))return{handled:!1,reason:"stale event"};return await $.updateStripeState(Q,{stripeCustomerId:X41(X.customer),stripeSubscriptionId:Y,status:"active",lastStripeEventAt:Z41(Z,G)}),{handled:!0,organizationId:Q}}case"customer.subscription.updated":case"customer.subscription.deleted":{let Q=hK(X.id);if(!Q)return{handled:!1,reason:"no sub id"};let G=await $.getBillingByStripeSubscriptionId(Q);if(!G)return{handled:!1,reason:"unknown subscription"};let Y=Z.type==="customer.subscription.deleted";if(!Y&&$41(Z,G))return{handled:!1,reason:"stale event"};let J=Y?"canceled":qv$(X.status);return await $.updateStripeState(G.organizationId,{status:J,currentPeriodEnd:O46(X),...Y&&{stripeSubscriptionId:null},lastStripeEventAt:Z41(Z,G)}),{handled:!0,organizationId:G.organizationId}}case"invoice.paid":{let Q=w46(X);if(!Q)return{handled:!1,reason:"no sub id"};let G=await $.getBillingByStripeSubscriptionId(Q);if(!G)return{handled:!1,reason:"unknown subscription"};if($41(Z,G))return{handled:!1,reason:"stale event"};return await $.updateStripeState(G.organizationId,{status:"active",currentPeriodEnd:jj0(X.period_end),lastStripeEventAt:Z41(Z,G)}),{handled:!0,organizationId:G.organizationId}}default:return{handled:!1,reason:`unhandled event ${Z.type}`}}}function D46($,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:qv$(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 Tv$($,Z){let X=D46($,Z);if(!X)return;hH({event:X.name,organizationId:X.organizationId,...$.id?{uuid:Gl1(`stripe:${$.id}:${X.name}`)}:{},...$.created?{timestamp:new Date($.created*1000)}:{},properties:X.properties})}async function Mv$($){let Z=new kW(m8().db),X=await B46(Z,$);if(!(X.handled&&X.topUp))Tv$($,X);if(X.handled&&X.topUp)await QF$({organizationId:X.organizationId,amountCents:X.topUp.creditCents,referenceId:X.topUp.referenceId}),Tv$($,X);if(!X.handled&&X.orphanSubscriptionId)try{await Lt1(X.orphanSubscriptionId),console.error("stripe webhook: canceled orphan subscription",{subscriptionId:X.orphanSubscriptionId,eventId:$.id})}catch(Q){if(!(Q instanceof eJ&&(Q.status===400||Q.status===404)))throw Q}return X}var U46=300;var kv$=B(()=>{wY();h4();qm();co0()});var L46=1048576,Q41;var Sv$=B(()=>{y8();lO();S$();kv$();Q41=new B1;Q41.post("/webhook",HZ({maxSize:L46,onError:($)=>$.json({error:"payload too large"},413)}),async($)=>{let Z=c0().stripeWebhookSecret;if(!Z)return $.json({error:"stripe billing not configured"},503);let X=await $.req.text();if(!Rv$(X,$.req.header("stripe-signature"),Z))return $.json({error:"invalid signature"},400);let G=Iv$(X);if(!G)return $.json({error:"invalid payload"},400);let Y=await Mv$(G);return console.log("stripe webhook",{eventId:G.id,type:G.type,livemode:G.livemode,...Y}),$.json({received:!0})})});import{timingSafeEqual as E46}from"crypto";function z46($,Z,X){if(!Z?.startsWith("sha256="))return!1;let Q=new Bun.CryptoHasher("sha256",X).update($).digest("hex"),G=Z.slice(7);if(G.length!==Q.length)return!1;return E46(Buffer.from(G),Buffer.from(Q))}var j46=5242880,G41;var Vv$=B(()=>{y8();lO();qi();G41=new B1;G41.post("/webhook",HZ({maxSize:j46,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(!z46(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 G=Q.ref,Y=Q.repository?.full_name;if(!G||!Y)return $.json({ok:!0,ignored:"shape"});let W=(await jd0())?.markTenantPoolsDirty(Y,G)??[];return $.json({ok:!0,pools:W})})});function Cv$($,Z){if(Z.startsWith("text/html")||Z.startsWith("image/svg"))$.set("Content-Security-Policy","sandbox allow-scripts allow-modals allow-same-origin")}var _v$,P46,A46,vv$;var bv$=B(()=>{y8();dJ();Ix();kf();_v$=new B1,P46=["range","if-none-match","if-modified-since"],A46=["content-type","content-length","content-range","accept-ranges","etag","last-modified"];_v$.get("/:org/files/*",async($)=>{let Z=$.get("studioContext"),X=Z.organization?.id;if(!Z.auth?.user?.id){if(Rg($))return $.redirect(`/login?next=${encodeURIComponent($.req.path)}`,302);throw new Q$(401,{message:"Authentication required"})}if(!X)throw new Q$(401,{message:"Organization context required"});let Q=$.req.path.replace(/^.*\/files\//,"");if(!Q)throw new Q$(400,{message:"Missing file key"});let G=await Xn(Q,Z);if(!G)throw new Q$(503,{message:"Object storage not configured"});if(G.startsWith("data:")&&tJ()){let K=G.match(/^data:([^;]+);base64,(.+)$/s);if(!K)throw new Q$(500,{message:"Invalid data URL from storage"});let[,H,N]=K,F=Buffer.from(N,"base64"),U=new Headers({"Content-Type":H,"Cache-Control":"private, max-age=86400"});return Cv$(U,H),new Response(F,{status:200,headers:U})}let Y=new Headers;for(let K of P46){let H=$.req.header(K);if(H)Y.set(K,H)}let J=await fetch(G,{headers:Y});if(J.status===403||J.status===404)throw new Q$(404,{message:"File not found"});if(!J.ok&&J.status!==304&&J.status!==416)throw console.error(`[files] upstream storage error ${J.status} for key:`,Q),new Q$(502,{message:"Upstream storage error"});let W=new Headers;for(let K of A46){let H=J.headers.get(K);if(H)W.set(K,H)}return W.set("Cache-Control","private, max-age=86400"),Cv$(W,W.get("content-type")??""),new Response(J.body,{status:J.status,headers:W})});vv$=_v$});var vo=C((mC)=>{var T46=mC&&mC.__createBinding||(Object.create?function($,Z,X,Q){if(Q===void 0)Q=X;var G=Object.getOwnPropertyDescriptor(Z,X);if(!G||("get"in G?!Z.__esModule:G.writable||G.configurable))G={enumerable:!0,get:function(){return Z[X]}};Object.defineProperty($,Q,G)}:function($,Z,X,Q){if(Q===void 0)Q=X;$[Q]=Z[X]}),R46=mC&&mC.__exportStar||function($,Z){for(var X in $)if(X!=="default"&&!Object.prototype.hasOwnProperty.call(Z,X))T46(Z,$,X)};Object.defineProperty(mC,"__esModule",{value:!0});R46(aQ(),mC)});var yv$=C((fv$)=>{Object.defineProperty(fv$,"__esModule",{value:!0});fv$.version=void 0;fv$.version="3.4.0"});var uv$=C((uK)=>{var I46=uK&&uK.__importDefault||function($){return $&&$.__esModule?$:{default:$}};Object.defineProperty(uK,"__esModule",{value:!0});uK.NodeTransport=uK.VERSION=void 0;uK.nodeResolveHost=C46;var d6=vo(),q46=z0("net"),Y41=z0("tls"),M46=z0("path"),gv$=z0("fs"),k46=I46(z0("dns")),S46=yv$();uK.VERSION=S46.version;var V46="nats.js";class hv${socket;version;lang;yields=[];signal=(0,d6.deferred)();closedNotification=(0,d6.deferred)();options;connected=!1;tlsName="";done=!1;closeError;constructor(){this.lang=V46,this.version=uK.VERSION}async connect($,Z){this.tlsName=$.tlsName,this.options=Z;let{tls:X}=this.options,{handshakeFirst:Q}=X||{};try{if(Q===!0)this.socket=await this.tlsFirst($);else this.socket=await this.dial($);if(this.done)this.socket?.destroy();let G=await this.peekInfo();(0,d6.checkOptions)(G,Z);let{tls_required:Y,tls_available:J}=G,W=J===!0&&Z.tls!==null;if(!Q&&(Y||W))this.socket=await this.startTLS();if(this.done)this.socket?.destroy();if(Y&&this.socket.encrypted!==!0)throw d6.errors.InvalidArgumentError.format("tls","is not available on this server");return this.connected=!0,this.setupHandlers(),this.signal.resolve(),Promise.resolve()}catch(G){let Y=G;if(!Y)Y=new d6.errors.ConnectionError("error connecting - node provided an undefined error");let{code:J}=Y,W=J==="ECONNREFUSED"?new d6.errors.ConnectionError("connection refused",{cause:Y}):Y;throw this.socket?.destroy(),W}}dial($){let Z=(0,d6.deferred)(),X,Q=(0,q46.createConnection)($.port,$.hostname,()=>{Z.resolve(Q),Q.removeAllListeners()});return Q.on("error",(G)=>{X=G}),Q.on("close",()=>{Q.removeAllListeners(),Z.reject(X)}),Q.setNoDelay(!0),Z}get isClosed(){return this.done}close($){return this._closed($,!1)}peekInfo(){let $=(0,d6.deferred)(),Z;return this.socket.on("data",(X)=>{this.yields.push(X);let Q=d6.DataBuffer.concat(...this.yields),G=(0,d6.extractProtocolMessage)(Q);if(G!=="")try{let Y=d6.INFO.exec(G);if(!Y)throw Error("unexpected response from server");let J=JSON.parse(Y[1]);$.resolve(J)}catch(Y){$.reject(Y)}finally{this.socket.removeAllListeners()}}),this.socket.on("error",(X)=>{Z=X}),this.socket.on("close",()=>{this.socket.removeAllListeners(),$.reject(Z)}),$}loadFile($){if(!$)return Promise.resolve();let Z=(0,d6.deferred)();try{if($=(0,M46.resolve)($),!(0,gv$.existsSync)($))Z.reject(Error(`${$} doesn't exist`));(0,gv$.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:G,keyFile:Y,key:J}=this.options.tls;try{if(Z){let W=await this.loadFile(Z);if(W)$.cert=W}else if(X)$.cert=X;if(Y){let W=await this.loadFile(Y);if(W)$.key=W}else if(J)$.key=J;if(Q){let W=await this.loadFile(Q);if(W)$.ca=[W]}else if(G)$.ca=G;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 G=await this.loadClientCerts()||{};X=(0,d6.extend)(X,this.options.tls,G)}catch(G){return Promise.reject(new d6.errors.ConnectionError(G.message,{cause:G}))}let Q=(0,d6.deferred)();try{let G=(0,Y41.connect)($.port,$.hostname,X,()=>{G.removeAllListeners(),Q.resolve(G)});G.on("error",(Y)=>{Z=Y}),G.on("secureConnect",()=>{if(X.rejectUnauthorized===!1)return;if(!G.authorized)throw G.authorizationError}),G.on("close",()=>{Q.reject(Z),G.removeAllListeners()}),G.setNoDelay(!0)}catch(G){Q.reject(new d6.errors.ConnectionError(G.message,{cause:G}))}return Q}async startTLS(){let $,Z={socket:this.socket,servername:this.tlsName,rejectUnauthorized:!0};if(typeof this.options.tls==="object")try{let Q=await this.loadClientCerts()||{};Z=(0,d6.extend)(Z,this.options.tls,Q)}catch(Q){return Promise.reject(new d6.errors.ConnectionError(Q.message,{cause:Q}))}let X=(0,d6.deferred)();try{let Q=(0,Y41.connect)(Z,()=>{Q.removeAllListeners(),X.resolve(Q)});Q.on("error",(G)=>{$=G}),Q.on("secureConnect",()=>{if(Z.rejectUnauthorized===!1)return;if(!Q.authorized)throw Q.authorizationError}),Q.on("close",()=>{X.reject($),Q.removeAllListeners()})}catch(Q){X.reject(new d6.errors.ConnectionError(Q.message,{cause:Q}))}return X}setupHandlers(){let $;this.socket.on("data",(Z)=>{return this.yields.push(Z),this.signal.resolve()}),this.socket.on("error",(Z)=>{$=Z}),this.socket.on("end",()=>{if(this.socket?.destroyed)return;this.socket?.write(new Uint8Array(0),()=>{this.socket?.end()})}),this.socket.on("close",()=>{this._closed($,!1)})}[Symbol.asyncIterator](){return this.iterate()}async*iterate(){while(!0){if(this.yields.length===0)await this.signal;let $=this.yields;this.yields=[];for(let Z=0;Z<$.length;Z++){if(this.options.debug)console.info(`> ${(0,d6.render)($[Z])}`);yield $[Z]}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,d6.deferred)()}}discard(){if(this.done=!0,this.socket)try{this.socket.removeAllListeners(),this.socket.destroy()}catch{}}disconnect(){this._closed(void 0,!0).then().catch()}isEncrypted(){return this.socket instanceof Y41.TLSSocket}_send($){if(this.isClosed||this.socket===void 0)return Promise.resolve();if(this.options.debug)console.info(`< ${(0,d6.render)($)}`);let Z=(0,d6.deferred)();try{this.socket.write($,(X)=>{if(X){if(this.options.debug)console.error(`!!! ${(0,d6.render)($)}: ${X}`);return Z.reject(X)}return Z.resolve()})}catch(X){if(this.options.debug)console.error(`!!! ${(0,d6.render)($)}: ${X}`);Z.reject(X)}return Z}send($){this._send($).catch((X)=>{})}async _closed($,Z=!0){if(!this.connected)return;if(this.done){this.socket?.destroy();return}if(this.closeError=$,!$&&this.socket&&Z)try{await this._send(new TextEncoder().encode(""))}catch(X){if(this.options.debug)console.log("transport close terminated with an error",X)}try{if(this.socket)this.socket.removeAllListeners(),this.socket?.destroy(),this.socket=void 0}catch(X){console.log(X)}this.done=!0,this.closedNotification.resolve(this.closeError)}closed(){return this.closedNotification}}uK.NodeTransport=hv$;function C46($){let Z=(0,d6.deferred)();return k46.default.lookup($,{all:!0},(X,Q)=>{if(X){Z.reject(X);return}let G=[];for(let Y of Q)G.push(Y.address);if(G.length===0)G.push($);Z.resolve(G)}),Z}});var iv$=C((mv$)=>{Object.defineProperty(mv$,"__esModule",{value:!0});mv$.connect=_46;var cv$=uv$(),lv$=vo(),dv$=vo();function _46($={}){if((0,dv$.hasWsProtocol)($))return Promise.reject(dv$.errors.InvalidArgumentError.format("servers","node client doesn't support websockets, use the 'wsconnect' function instead"));return(0,lv$.setTransportFactory)({factory:()=>{return new cv$.NodeTransport},dnsResolveFn:cv$.nodeResolveHost}),lv$.NatsConnectionImpl.connect($)}});var nv$=C((QF)=>{var b46=QF&&QF.__createBinding||(Object.create?function($,Z,X,Q){if(Q===void 0)Q=X;var G=Object.getOwnPropertyDescriptor(Z,X);if(!G||("get"in G?!Z.__esModule:G.writable||G.configurable))G={enumerable:!0,get:function(){return Z[X]}};Object.defineProperty($,Q,G)}:function($,Z,X,Q){if(Q===void 0)Q=X;$[Q]=Z[X]}),f46=QF&&QF.__exportStar||function($,Z){for(var X in $)if(X!=="default"&&!Object.prototype.hasOwnProperty.call(Z,X))b46(Z,$,X)};Object.defineProperty(QF,"__esModule",{value:!0});QF.connect=void 0;var x46=iv$();Object.defineProperty(QF,"connect",{enumerable:!0,get:function(){return x46.connect}});f46(vo(),QF)});function rv$($){let Z=$?.connectFn??u46,X=null,Q=null,G=!1,Y=!1,J=!1,W=[];function K(){return X!==null&&!X.isClosed()&&!X.isDraining()&&!J}function H(){console.log(`[NatsProvider] fireReady: ${W.length} callbacks`);for(let U of W)try{U()}catch{}}function N(U){(async()=>{for await(let w of U.status())if(w.type==="disconnect")console.log("[NatsProvider] Disconnected"),J=!0;else if(w.type==="reconnect")console.log("[NatsProvider] Reconnected, re-firing ready callbacks"),J=!1,Q=null,H()})().catch(()=>{})}async function F(U,w){let O=0;while(!Y)try{X=await Z({servers:U,timeout:h46,reconnect:!0,maxReconnectAttempts:-1,...w?{authenticator:w}:{}}),console.log(`[NatsProvider] Connected to ${X.getServer()} after ${O} attempt(s)`),Q=null,J=!1,N(X),H();return}catch{O++;let D=KX(g46,y46,O-1,2,0.5);await y$(D)}}return{init(U,w){if(G)return;G=!0,Y=!1;let O=w?.creds?pv$.credsAuthenticator(new TextEncoder().encode(w.creds)):void 0;F(U,O).catch(()=>{})},isConnected(){return K()},getConnection(){return K()?X:null},getJetStream(){if(!K())return null;if(!Q)Q=ov$.jetstream(X);return Q},onReady(U){if(W.push(U),K())try{U()}catch{}},async drain(){if(Y=!0,G=!1,Q=null,J=!1,X){let U=X;X=null,await U.drain().catch(()=>{})}}}}function u46($){return tv$.connect($)}var pv$,tv$,ov$,y46=100,g46=3000,h46=3000;var av$=B(()=>{E6();pv$=S(Lh(),1),tv$=S(nv$(),1),ov$=S(HB(),1)});function J41($,Z){return`${$}.${Z}`}class W41{cache;constructor($){this.cache=Ng({ttlMs:$?.ttlMs??c46,maxSize:$?.maxSize??l46})}async get($,Z){return this.cache.get(J41($,Z))??null}async set($,Z,X){this.cache.set(J41($,Z),X)}async invalidate($,Z){this.cache.delete(J41($,Z))}teardown(){this.cache.clear()}}var c46=600000,l46=5000;var sv$=()=>{};function zj0($,Z){return`${$}:${Z}`}function K41($){let Z=Ng({ttlMs:$?.ttlMs??d46,maxSize:$?.maxSize??m46}),X=$?.getConnection,Q=crypto.randomUUID(),G=new TextEncoder,Y=new TextDecoder,J=null;function W(K,H){let N=X?.();if(!N)return;try{N.publish(ev$,G.encode(JSON.stringify({organizationId:K,keyId:H,originId:Q})))}catch(F){console.warn("[ProviderKeyCache] Publish failed (non-critical):",F)}}return{get(K,H){return Z.get(zj0(K,H))},set(K,H,N){Z.set(zj0(K,H),N)},invalidate(K,H){Z.delete(zj0(K,H)),W(K,H)},start(){if(J)return;let K=X?.();if(!K)return;J=K.subscribe(ev$),(async()=>{for await(let H of J)try{let N=JSON.parse(Y.decode(H.data));if(N.originId===Q)continue;Z.delete(zj0(N.organizationId,N.keyId))}catch{}})().catch(console.error)},teardown(){J?.unsubscribe(),J=null,Z.clear()}}}var ev$="studio.ai-provider-keys.invalidate",d46=30000,m46=5000;var $b$=()=>{};class H41{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=Zb$.map((Q)=>Z.subscribe(Q));for(let Q of this.subscriptions)(async()=>{for await(let G of Q)try{let Y=JSON.parse(X.decode(G.data));if(Y.originId===this.originId)continue;if(Y.messageId&&this.hasSeen(Y.messageId))continue;this.onCancel?.(Y.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 Zb$)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 Zb$;var Xb$=B(()=>{Zb$=["studio.decopilot.cancel","mesh.decopilot.cancel"]});var Qb$=($)=>{let Z;return()=>Z??=$()},N41,F41;var Gb$=B(()=>{U5();N41=Qb$(()=>K8.createHistogram("decopilot.stream.encode_ms",{description:"Per-chunk JSON.stringify+encode time for decopilot stream",unit:"ms"})),F41=Qb$(()=>K8.createCounter("decopilot.stream.published_chunks",{description:"Logical decopilot stream chunks published to JetStream",unit:"{chunks}"}))});function a46(){return{name:RN,subjects:[`${Dw0}.>`],storage:l3.StorageType.File,max_age:p46,max_bytes:o46,max_msgs_per_subject:r46,discard:l3.DiscardPolicy.Old,retention:l3.RetentionPolicy.Limits,duplicate_window:t46,num_replicas:1}}class Wb${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 Yb$($){let Z=Jb$.headers();for(let[X,Q]of Object.entries($))Z.set(X,Q);return Z}function Z66($,Z){let X=0;return{publish(Q,G,Y,J){Q.publish(G,Y,J?{headers:J}:void 0).catch((W)=>{if(X++,n46().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 X66($){if(!($ instanceof Error))return!1;if($.name==="TimeoutError")return!0;return/timeout|no responders|503/i.test($.message)}class U41{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=a46(),X=await gZ(async()=>{let Q=this.options.getJetStreamManager?await this.options.getJetStreamManager():await l3.jetstreamManager($);try{await Q.streams.info(RN),await Q.streams.update(RN,Z)}catch(G){if(G instanceof Error&&G.message.includes("stream not found"))await Q.streams.add(Z);else if(G instanceof Error&&/can ?not change.*storage|storage type/i.test(G.message))await Q.streams.delete(RN),await Q.streams.add(Z);else throw G}return Q},{maxAttempts:5,minTimeout:250,maxTimeout:4000,jitter:0.5,isRetriable:X66});this.js=this.options.getJetStream(),this.jsm=X,console.log(`[Decopilot] StreamBuffer.init ${this.js?"ready":"degraded (js=null)"}`)}pump($,Z,X,Q){let G=this.js;if(!G)return console.warn(`[Decopilot] pump: JetStream client unavailable for thread ${Z}; chunks NOT published to NATS`),Promise.resolve();let Y=Z66(Z,Q),J=!1,W=()=>{if(J)return;J=!0;let H=nJ$(Z);G.publish(H.subject,H.data).catch(()=>{})};X.addEventListener("abort",W,{once:!0});let K=(H)=>{let N=performance.now(),F=ui0(H,{runId:Z}),U=performance.now()-N;if(N41().record(U),F41().add(1,{"org.id":Q??"unknown"}),$66?.record(U,F.reduce((w,O)=>w+O.data.length,0)),F.length===0){console.warn(`[Decopilot] dropping oversized stream chunk for thread ${Z}`);return}for(let w of F)Y.publish(G,w.subject,w.data,w.headers?Yb$(w.headers):void 0)};return(async()=>{let H=$.getReader(),N=0,F=0,U;try{while(!0){let{done:w,value:O}=await H.read();if(w)break;if(K(O),F++,++N>=64)N=0,await new Promise((D)=>setImmediate(D))}}catch(w){U=w,console.warn(`[Decopilot] stream pump error for thread ${Z}:`,w?.message??w)}finally{if(H.releaseLock(),W(),e46)console.warn(JSON.stringify({msg:"decopilot-stream-diag",event:"pump-done",taskId:Z,publishedChunks:F,publishErrors:Y.errorCount}))}if(U!==void 0)throw U})()}async publishRawChunk($,Z,X){let Q=this.js;if(!Q)return!1;let G=performance.now(),Y=ui0(Z,{runId:$,dedup:X});if(N41().record(performance.now()-G),F41().add(1),Y.length===0)return console.warn(`[Decopilot] dropping oversized raw chunk for thread ${$} (> MAX_CHUNKED_BYTES)`),!0;for(let J of Y)await Q.publish(J.subject,J.data,{...J.headers?{headers:Yb$(J.headers)}:{},...J.msgId?{msgID:J.msgId}:{}});return!0}async publishDone($,Z,X){let Q=this.js;if(!Q)return!1;let G=iJ$({runId:$,fenceToken:Z,finalSeq:X});return await Q.publish(G.subject,G.data,{msgID:G.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 G=X?.deliverPolicy==="new"?l3.DeliverPolicy.New:l3.DeliverPolicy.All,Y=X?.closeOnDone??!1,J=XO($),W;try{W=await(await Q.consumers.get(RN,{filter_subjects:J,deliver_policy:G})).consume()}catch(D){return console.warn("[Decopilot] JetStream tail unavailable (non-critical):",D?.message??D),null}let N=Pw0({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(Lw0()).pipeThrough(Ew0()).getReader(),F=!1,U=()=>{if(F)return;F=!0;try{N.releaseLock()}catch{}},w=!1,O=()=>{if(w)return;w=!0,W.stop(),N.cancel().catch(()=>{}),U()};return Z?.addEventListener("abort",O,{once:!0}),new ReadableStream({async pull(D){for(;;){let{done:L,value:E}=await N.read();if(L){O(),D.close();return}let j=E;if(j.kind==="done"){if(Y){O(),D.close();return}continue}D.enqueue(j.chunk);return}},cancel(){O()}})}purge($){if(!this.jsm)return;this.jsm.streams.purge(RN,{filter:XO($)}).catch(()=>{})}teardown(){this.js=null,this.jsm=null}}var l3,Jb$,i46=($)=>{let Z;return()=>Z??=$()},n46,p46=86400000000000,t46=120000000000,o46=4294967296,r46=500000,s46,e46,$66;var Kb$=B(()=>{E6();ci0();Aw0();jw0();U5();Gb$();l3=S(HB(),1),Jb$=S(Lh(),1),n46=i46(()=>K8.createCounter("decopilot.stream.publish_errors",{description:"Number of JetStream publish failures for decopilot stream chunks",unit:"{errors}"}));s46=process.env.STREAM_ENCODE_TRACE==="1",e46=process.env.DECOPILOT_STREAM_TRACE==="1";$66=s46?new Wb$:null});function Pj0($,Z,X,Q){if(!Q)return!1;return $.emit(Z,FW(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 Hb$=B(()=>{L8()});class w41{storage;options;timer=null;constructor($,Z={}){this.storage=$;this.options=Z}start(){if(this.timer)return;let $=this.options.intervalMs??300000;this.timer=setInterval(()=>{this.runOnce()},$)}async runOnce(){let $=this.options.staleAfterMs??3600000;try{let Z=await this.storage.sweepAbandoned($);if(Z>0)console.log(`[async-research-sweeper] marked ${Z} stale jobs as abandoned`);return Z}catch(Z){return console.error("[async-research-sweeper] sweep failed",Z),0}}dispose(){if(this.timer)clearInterval(this.timer),this.timer=null}}class O41{taskBoard;contextFactory;options;timer=null;running=!1;cursor=null;constructor($,Z,X={}){this.taskBoard=$;this.contextFactory=Z;this.options=X}start(){if(this.timer)return;let $=this.options.intervalMs??Q66;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??Y66,X=this.options.itemIntervalMs??G66,Q=await this.taskBoard.listItemsPendingReview(Z,this.cursor,new Date(Date.now()-X)),G=Q.at(-1);this.cursor=Q.length===Z&&G?{updatedAt:G.updatedAt,id:G.id}:null;for(let{id:Y,organizationId:J}of Q)try{if(await this.reconcileItem(Y,J))$++}catch(W){console.error(`[task-board-review-sweeper] ${Y} failed`,W)}await this.reapNeverStartedThreads(Z),$+=await this.dispatchDueRetries(Z),await this.reactToUnhandledFailures(Z)}catch(Z){console.error("[task-board-review-sweeper] sweep failed",Z)}finally{this.running=!1}return $}async reapNeverStartedThreads($){try{let Z=await this.taskBoard.failNeverStartedLinkedThreads($,new Date(Date.now()-dG$),An0);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()-W66));for(let{id:X,organizationId:Q,threadId:G}of Z)try{console.warn(`[task-board-review-sweeper] reacting to an unhandled failure on ${X}`),await Fi0(this.taskBoard,G,Q)}catch(Y){console.error(`[task-board-review-sweeper] unhandled-failure reaction for ${X} failed`,Y)}}async dispatchDueRetries($){let Z=0,X=await this.taskBoard.listItemsDueForRetry($,new Date);for(let{id:Q,organizationId:G,attempts:Y}of X)try{if(!await this.taskBoard.claimDueRetry(Q,G,new Date))continue;let J=await this.taskBoard.getById(Q,G);if(!J||J.status!=="in_progress"||J.assigneeId!==o4)continue;let W=await this.contextFactory(G,J.assignedBy??J.createdBy);if(!W)continue;await IN(W,J,{runClass:"retry"}),Z++,console.warn(`[task-board-review-sweeper] re-dispatched ${Q} after a failure (attempt ${Y})`)}catch(J){console.error(`[task-board-review-sweeper] retry dispatch for ${Q} failed`,J),await this.taskBoard.scheduleRunRetry(Q,G,Y,new Date(Date.now()+J66)).catch((W)=>console.error(`[task-board-review-sweeper] re-arming ${Q} failed`,W))}return Z}async reconcileItem($,Z){let X=await this.taskBoard.getById($,Z);if(!X)return!1;if(X.status!=="in_review"||X.assigneeId!==o4)return!1;await this.taskBoard.markSwept($,Z);let Q=await this.taskBoard.listPrs($,Z);if(Q.length===0)return!1;let G=await this.contextFactory(Z,X.assignedBy??X.createdBy);if(!G)return!1;if(await o3$(G,X))return!0;let Y=await Promise.all(Q.map(async(J)=>({...J,...await jn0(G,Z,J)})));if(Y.every((J)=>J.state===null))console.warn(`[task-board-review-sweeper] ${$}: no live PR state from GitHub (${Y.length} PR(s)) \u2014 proceeding on unknown`);if(!En0(Y))return!1;return await kw0(G,X),!0}dispose(){if(this.timer)clearInterval(this.timer),this.timer=null}}var Q66=60000,G66=300000,Y66=50,J66=60000,W66=120000;var Nb$=B(()=>{qZ();Fn0();QO();bw0();e9();Tn0();xx()});import{readdir as K66,rm as Aj0}from"fs/promises";import{join as Tj0}from"path";async function Rj0($){let Z=new Date;Z.setUTCDate(Z.getUTCDate()-H66),Z.setUTCHours(0,0,0,0);let X=0;try{let Q=await iC($);for(let G of Q)if(/^\d{4}$/.test(G))X+=await Fb$($,G,Z);else if(!G.startsWith(".")){let Y=Tj0($,G),J=await iC(Y);for(let K of J){if(!/^\d{4}$/.test(K))continue;X+=await Fb$(Y,K,Z)}if((await iC(Y)).length===0)await Aj0(Y,{recursive:!0,force:!0})}}catch(Q){console.warn("monitoring retention cleanup failed:",Q)}return X}async function Fb$($,Z,X){let Q=0,G=Tj0($,Z),Y=await iC(G);for(let W of Y){if(!/^\d{2}$/.test(W))continue;let K=Tj0(G,W),H=await iC(K);for(let F of H){if(!/^\d{2}$/.test(F))continue;let U=new Date(`${Z}-${W}-${F}T00:00:00Z`);if(isNaN(U.getTime()))continue;if(U<X){let w=Tj0(K,F);await Aj0(w,{recursive:!0,force:!0}),Q++}}if((await iC(K)).length===0)await Aj0(K,{recursive:!0,force:!0})}if((await iC(G)).length===0)await Aj0(G,{recursive:!0,force:!0});return Q}async function iC($){try{return(await K66($)).filter((X)=>!X.startsWith("."))}catch{return[]}}var H66=30;var B41=()=>{};import{DBOS as D41,SchedulerMode as N66}from"@dbos-inc/dbos-sdk";async function U66(){let $=[GJ(),nC(),lK()],Z=0;for(let X of $)try{Z+=await Rj0(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 w66($,Z){await D41.runStep(()=>U66(),{name:"monitoringRetention"})}function wb$(){if(Ub$)return;Ub$=!0;let $=D41.registerWorkflow(w66,{name:"monitoringRetentionWorkflow"});D41.registerScheduled($,{name:"monitoringRetentionWorkflow",crontab:F66,mode:N66.ExactlyOncePerIntervalWhenActive})}var F66="23 4 * * *",Ub$=!1;var Ob$=B(()=>{pQ();B41()});function Bb$($){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 G=await _K.create();G.auth.user={id:X,role:Q.role},G.organization={id:Q.orgId,slug:Q.orgSlug,name:Q.orgName};let Y=await v11($.db,Z,Q.role);return G.boundAuth=_11({auth:G.authInstance,headers:new Headers,role:Q.role,permissions:Y,userId:X}),G.access=new cD(X,void 0,G.boundAuth,Q.role,"self"),Ag(G,{id:Q.orgId,slug:Q.orgSlug}),G}}var Db$=B(()=>{lD();Bg()});function O66(){return{services:[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}],migrationsStatus:"pending",serverUrl:null,logs:[]}}function D66(){for(let $ of B66)$()}function Lb$($){let Z=[...L41.logs,$];L41={...L41,logs:Z.length>500?Z.slice(-500):Z},D66()}function E41(){return L66}var L41,B66,L66=!1;var j41=B(()=>{L41=O66(),B66=new Set});import{EventEmitter as E66}from"events";var z41;var Eb$=B(()=>{j41();z41=new E66;z41.on("request",($)=>{Lb$($)})});function jb$(){return async($,Z)=>{let X=Date.now(),Q=$.req.method,G=$.req.path;if(G==="/api/auth/get-session"||G.includes("favicon")){await Z();return}let Y="",J=!1;if(G.startsWith("/mcp")&&Q==="POST"){J=!0;try{if($.req.header("Content-Type")?.includes("application/json")){let U=await $.req.raw.clone().json();if(U.method==="tools/call"&&U.params?.name){let w=ng(U.params.name),O=U.params.arguments||{},D=Object.keys(O).map((E)=>ng(E)),L=D.length>0?D.slice(0,3).join(",")+(D.length>3?"\u2026":""):"";Y=`${e6.tool}${w}${e6.dim}(${L})${e6.reset}`}else if(U.method)Y=`${e6.dim}${ng(U.method)}${e6.reset}`}}catch{}}let W=ng(G);if(G.startsWith("/mcp/conn_")){let N=G.split("/")[2]??"";W=`/mcp/${e6.mcp}${ng(N.slice(0,12))}\u2026${e6.reset}`}else if(G==="/mcp")W=`${e6.mcp}/mcp${e6.reset}`;else if(G==="/mcp/registry")W=`${e6.mcp}/mcp/registry${e6.reset}`;let K=z66(Q),H=J?"\u25C0":"\u2190";if(!E41())console.log(`${e6.dim}${H}${e6.reset} ${K}${Q}${e6.reset} ${W}${Y?` ${Y}`:""}`);try{await Z()}finally{let N=Date.now()-X,F=$.res.status,U=j66(F),w=N<1000?`${N}ms`:`${(N/1000).toFixed(1)}s`,O=J?"\u25B6":"\u2192";if(!E41())console.log(`${e6.dim}${O}${e6.reset} ${K}${Q}${e6.reset} ${W}${Y?` ${Y}`:""} ${U}${F}${e6.reset} ${e6.duration}${w}${e6.reset}`);z41.emit("request",{method:Q,path:ng(G),status:F,duration:N,timestamp:new Date})}}}var e6,j66=($)=>{if($>=500)return e6.serverError;if($>=400)return e6.clientError;if($>=300)return e6.redirect;return e6.ok},z66=($)=>{return e6[$]||e6.reset},ng=($)=>{return $.replace(/\r/g,"").replace(/\n/g,"").replace(/\x1b\[[0-9;]*m/g,"").replace(/[\x00-\x1f\x7f-\x9f]/g,"")};var zb$=B(()=>{j41();Eb$();e6={reset:"\x1B[0m",dim:"\x1B[2m",bold:"\x1B[1m",GET:"\x1B[36m",POST:"\x1B[33m",PUT:"\x1B[35m",DELETE:"\x1B[31m",ok:"\x1B[32m",redirect:"\x1B[36m",clientError:"\x1B[33m",serverError:"\x1B[31m",mcp:"\x1B[35m",tool:"\x1B[96m",duration:"\x1B[90m"}});import{createHmac as Rb$}from"crypto";import{mkdir as P66,readdir as A66,rm as Pb$,stat as Ib$}from"fs/promises";import{join as A41,relative as T66}from"path";import{z as L$}from"zod";function Mb$($){let Z=$.replace(/[^a-zA-Z0-9_-]/g,"_");return A41(R66,Z)}function kb$($){return $.replace(/^\/+/,"").replace(/\.\./g,"")}function P41($,Z){let X=Mb$($),Q=kb$(Z);return A41(X,Q)}function I66($,Z,X,Q){let G=c0().encryptionKey||"dev-secret",Y=`${$}:${Z}:${X}:${Q}`;return Rb$("sha256",G).update(Y).digest("hex")}function Tb$($,Z,X,Q,G){let Y=Math.floor(Date.now()/1000)+Q,J=I66(Z,X,Y,G),W=new URL(`/api/dev-assets/${Z}/${kb$(X)}`,$);return W.searchParams.set("expires",Y.toString()),W.searchParams.set("signature",J),W.searchParams.set("method",G),W.toString()}function Sb$($,Z,X){let Q=`${$}:${Z.getTime()}:${X}`;return`"${Rb$("md5","etag").update(Q).digest("hex")}"`}async function Vb$($,Z,X,Q,G){try{let Y=await A66($,{withFileTypes:!0});for(let J of Y){let W=A41($,J.name),H=T66(Z,W).replace(/\\/g,"/");if(X&&!H.startsWith(X))continue;if(J.isDirectory())if(Q){let N=H+"/";if(!X||N.startsWith(X)){if(!(X?H.slice(X.length):H).includes("/"))G.commonPrefixes.add(N)}}else await Vb$(W,Z,X,Q,G);else if(J.isFile()){if(Q&&X){let N=H.slice(X.length);if(N.includes(Q)){let F=N.indexOf(Q),U=X+N.slice(0,F+1);G.commonPrefixes.add(U);continue}}try{let N=await Ib$(W);G.objects.push({key:H,size:N.size,lastModified:N.mtime.toISOString(),etag:Sb$(W,N.mtime,N.size)})}catch{}}}}catch{}}function Cb$($,Z){let Q=o($).id;return[{name:"LIST_OBJECTS",description:"List objects in the local assets directory with pagination support",inputSchema:L$.object({prefix:L$.string().optional(),maxKeys:L$.number().optional().default(1000),continuationToken:L$.string().optional(),delimiter:L$.string().optional()}),outputSchema:L$.object({objects:L$.array(L$.object({key:L$.string(),size:L$.number(),lastModified:L$.string(),etag:L$.string()})),nextContinuationToken:L$.string().optional(),isTruncated:L$.boolean(),commonPrefixes:L$.array(L$.string()).optional()}),handler:async(G)=>{let Y=G,J=Y.prefix||"",W=Y.maxKeys??1000,K=Y.delimiter,H=Y.continuationToken,N=Mb$(Q);await P66(N,{recursive:!0});let F={objects:[],commonPrefixes:new Set};await Vb$(N,N,J,K,F),F.objects.sort((L,E)=>L.key.localeCompare(E.key));let U=0;if(H){if(U=F.objects.findIndex((L)=>L.key>H),U===-1)U=F.objects.length}let w=F.objects.slice(U,U+W),O=U+W<F.objects.length,D=O?w[w.length-1]?.key:void 0;return{objects:w,isTruncated:O,nextContinuationToken:D,commonPrefixes:Array.from(F.commonPrefixes).sort()}}},{name:"GET_OBJECT_METADATA",description:"Get metadata for a file in the local assets directory",inputSchema:L$.object({key:L$.string()}),outputSchema:L$.object({contentType:L$.string().optional(),contentLength:L$.number(),lastModified:L$.string(),etag:L$.string(),metadata:L$.record(L$.string(),L$.string()).optional()}),handler:async(G)=>{let Y=G,J=P41(Q,Y.key),W=await Ib$(J);return{contentType:B$1(Y.key),contentLength:W.size,lastModified:W.mtime.toISOString(),etag:Sb$(J,W.mtime,W.size)}}},{name:"GET_PRESIGNED_URL",description:"Generate a presigned URL for downloading a file from local storage",inputSchema:L$.object({key:L$.string(),expiresIn:L$.number().optional()}),outputSchema:L$.object({url:L$.string(),expiresIn:L$.number()}),handler:async(G)=>{let Y=G,J=Y.expiresIn??Ab$;return{url:Tb$(Z,Q,Y.key,J,"GET"),expiresIn:J}}},{name:"PUT_PRESIGNED_URL",description:"Generate a presigned URL for uploading a file to local storage",inputSchema:L$.object({key:L$.string(),expiresIn:L$.number().optional(),contentType:L$.string().optional()}),outputSchema:L$.object({url:L$.string(),expiresIn:L$.number()}),handler:async(G)=>{let Y=G,J=Y.expiresIn??Ab$;return{url:Tb$(Z,Q,Y.key,J,"PUT"),expiresIn:J}}},{name:"DELETE_OBJECT",description:"Delete a single file from local storage",inputSchema:L$.object({key:L$.string()}),outputSchema:L$.object({success:L$.boolean(),key:L$.string()}),handler:async(G)=>{let Y=G,J=P41(Q,Y.key);try{return await Pb$(J),{success:!0,key:Y.key}}catch{return{success:!1,key:Y.key}}}},{name:"DELETE_OBJECTS",description:"Delete multiple files from local storage",inputSchema:L$.object({keys:L$.array(L$.string()).max(1000)}),outputSchema:L$.object({deleted:L$.array(L$.string()),errors:L$.array(L$.object({key:L$.string(),message:L$.string()}))}),handler:async(G)=>{let Y=G,J=[],W=[];return await Promise.all(Y.keys.map(async(K)=>{let H=P41(Q,K);try{await Pb$(H),J.push(K)}catch(N){W.push({key:K,message:N instanceof Error?N.message:"Unknown error"})}})),{deleted:J,errors:W}}}]}async function T41($,Z,X){let Q=Cb$(Z,X),G=new EW({name:"dev-assets-mcp",version:"1.0.0"},{capabilities:{tools:{}},jsonSchemaValidator:G5});for(let J of Q){let W="shape"in J.inputSchema?J.inputSchema.shape:L$.object({}).shape,K=J.outputSchema&&"shape"in J.outputSchema?J.outputSchema.shape:L$.object({}).shape;G.registerTool(J.name,{description:J.description??"",inputSchema:W,outputSchema:K,annotations:J.annotations,_meta:J._meta},async(H)=>{try{let N=await J.handler(H);return{content:[{type:"text",text:JSON.stringify(N)}],structuredContent:N}}catch(N){return{content:[{type:"text",text:`Error: ${N.message}`}],isError:!0}}})}let Y=new cX({enableJsonResponse:$.headers.get("Accept")?.includes("application/json")??!1});return await G.connect(Y),hY(G,Y,$,"mcp:dev-assets")}async function _b$($,Z,X,Q){let Y=Cb$(X,Q).find((J)=>J.name===$);if(!Y)return{content:[{type:"text",text:`Tool not found: ${$}`}],isError:!0};try{let J=await Y.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 R66="./data/assets",Ab$=3600,qb$,vb$;var bb$=B(()=>{S$();cx();y8();lc();vV();TX();fE0();qb$=new B1;qb$.all("/",async($)=>{let Z=$.get("studioContext"),X=new URL($.req.url),Q=`${X.protocol}//${X.host}`;return T41($.req.raw,Z,Q)});vb$=qb$});var fb$={};N4(fb$,{mountDevRoutes:()=>q66});function q66($,Z){$.all("/mcp/:connectionId{.*_dev-assets$}",Z,async(Q)=>{let G=Q.get("studioContext"),Y=new URL(Q.req.url),J=`${Y.protocol}//${Y.host}`;return T41(Q.req.raw,G,J)}),$.all("/mcp/:connectionId{.*_dev-assets$}/call-tool/:toolName",Z,async(Q)=>{let G=Q.get("studioContext"),Y=new URL(Q.req.url),J=`${Y.protocol}//${Y.host}`,W=Q.req.param("toolName");if(!W)return Q.json({error:"Missing tool name"},400);let K=await Q.req.json(),H=await _b$(W,K,G,J);if(H.isError)return Q.json(H.content,500);return Q.json(H.content)}),$.use("/mcp/dev-assets",Z),$.route("/mcp/dev-assets",vb$);let X=new B1;X.use("*",h3({mountPath:"/api/dev-assets"})),X.route("/",bE0({orgFromPath:!1})),$.route("/api/dev-assets",X)}var xb$=B(()=>{y8();W$1();fE0();bb$()});import{sql as M66}from"kysely";import{randomUUID as yb$}from"crypto";import{z as k66}from"zod";async function V66($){let Z=new Date().toISOString(),X=yb$(),Q=y4.SELF($.organizationId),G="registry.publish_request.created",Y={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(Y),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:yb$(),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 M66`SELECT
2732
2732
  pg_notify('studio_events', ${X}),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "decocms",
3
- "version": "4.197.9",
3
+ "version": "4.197.10",
4
4
  "description": "Deco CMS — Self-hostable MCP Gateway for managing AI connections and tools",
5
5
  "author": "Deco team",
6
6
  "repository": {