decocms 4.200.2 → 4.200.3

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 (227) hide show
  1. package/dist/client/assets/{AlertCircle-WwYKI5Qb.js → AlertCircle-DhpblL7N.js} +1 -1
  2. package/dist/client/assets/{AreaChart-DF9gicSk.js → AreaChart-CDHupPpv.js} +1 -1
  3. package/dist/client/assets/{ArrowLeft-aA-FzaCr.js → ArrowLeft-Dt8bSAaq.js} +1 -1
  4. package/dist/client/assets/{ArrowUp-Dl3cQVzC.js → ArrowUp-sGqewAUu.js} +1 -1
  5. package/dist/client/assets/{ArrowUpRight-BZW220i4.js → ArrowUpRight-CQxp5nKh.js} +1 -1
  6. package/dist/client/assets/{Check-CQsEmdtb.js → Check-H_fOlTAn.js} +1 -1
  7. package/dist/client/assets/{CheckCircle-DR3Li8PK.js → CheckCircle-BdFzS0CF.js} +1 -1
  8. package/dist/client/assets/{ChevronDown-l4iG0p-P.js → ChevronDown-CmMgj-uI.js} +1 -1
  9. package/dist/client/assets/{ChevronRight-BgMlkNeC.js → ChevronRight-CU9Cn1d1.js} +1 -1
  10. package/dist/client/assets/{ChevronUp-DOlZYOVw.js → ChevronUp-C_Gvf48i.js} +1 -1
  11. package/dist/client/assets/{Copy01-CKF7O5eT.js → Copy01-OGK0GIeE.js} +1 -1
  12. package/dist/client/assets/{CpuChip01-rrqN9f4p.js → CpuChip01-DoWEFJBB.js} +1 -1
  13. package/dist/client/assets/{CreditCard01-DD6aW3wk.js → CreditCard01-Orq_D0lo.js} +1 -1
  14. package/dist/client/assets/{DotsVertical-CowCWATW.js → DotsVertical-DYOn5v-n.js} +1 -1
  15. package/dist/client/assets/{Eye-DoysLbE1.js → Eye-Dv99xZTv.js} +1 -1
  16. package/dist/client/assets/{FilterLines-CXcCTqQu.js → FilterLines-X9LtG-Z6.js} +1 -1
  17. package/dist/client/assets/{Globe01-Bl9pBdBK.js → Globe01-at7A3LsT.js} +1 -1
  18. package/dist/client/assets/{Globe04-Ccsw_B8c.js → Globe04-BiPJ5EGO.js} +1 -1
  19. package/dist/client/assets/{HardDrive-D30Gjyo8.js → HardDrive-BSYYlr1S.js} +1 -1
  20. package/dist/client/assets/{Key01-Ch_IQKvS.js → Key01-DO-0etoJ.js} +1 -1
  21. package/dist/client/assets/{LayoutLeft-CV2T0vO3.js → LayoutLeft-00uRs8WP.js} +1 -1
  22. package/dist/client/assets/{LinkExternal01-DLPXVHWD.js → LinkExternal01-BkpiiFBE.js} +1 -1
  23. package/dist/client/assets/{LogOut01-BtWQrKvN.js → LogOut01-CkfKnqyV.js} +1 -1
  24. package/dist/client/assets/{Monitor01-BT8u7fos.js → Monitor01-RQs45iWe.js} +1 -1
  25. package/dist/client/assets/{Palette-CZ3inffY.js → Palette-DwWswBTh.js} +1 -1
  26. package/dist/client/assets/{Play-D7O034DB.js → Play-Bbnh5cpZ.js} +1 -1
  27. package/dist/client/assets/{Plus-tOluSbOt.js → Plus-ClgX5bGG.js} +1 -1
  28. package/dist/client/assets/{SearchLg-C67h3xK8.js → SearchLg-x9zHkcn9.js} +1 -1
  29. package/dist/client/assets/{SearchMd-P-qGR4xa.js → SearchMd-ClEubi0a.js} +1 -1
  30. package/dist/client/assets/{Settings02-DrpZgC_J.js → Settings02-yMhwqJbY.js} +1 -1
  31. package/dist/client/assets/{Share07-DGsuXOEY.js → Share07-BP47mXbv.js} +1 -1
  32. package/dist/client/assets/{Shield01-DVvWyA23.js → Shield01-xl6XHFc6.js} +1 -1
  33. package/dist/client/assets/{Star01-BYdY-DAR.js → Star01-B6cqIp66.js} +1 -1
  34. package/dist/client/assets/{Stars01-DsD31Ln0.js → Stars01-BnnYZClU.js} +1 -1
  35. package/dist/client/assets/{Stars02-CV1jiWYO.js → Stars02-Bk2cDXoV.js} +1 -1
  36. package/dist/client/assets/{Sun-C9UnoqJl.js → Sun-C1CHWxDb.js} +1 -1
  37. package/dist/client/assets/{SwitchHorizontal01-44Mb4crN.js → SwitchHorizontal01-ChIZRIY5.js} +1 -1
  38. package/dist/client/assets/{Tool01-Dc3mraKQ.js → Tool01-DZiVtoOy.js} +1 -1
  39. package/dist/client/assets/{Tool02-Br6dtRR1.js → Tool02-xlrkVS37.js} +1 -1
  40. package/dist/client/assets/{Trash01-CCc2xaoD.js → Trash01-1ofZ8BXF.js} +1 -1
  41. package/dist/client/assets/{TrendUp01-Drrs9no-.js → TrendUp01-BcIjbymp.js} +1 -1
  42. package/dist/client/assets/{Upload01-pkxuOolK.js → Upload01-DoA7LTjd.js} +1 -1
  43. package/dist/client/assets/{User01-DQvk8cF7.js → User01-BOpvJbhT.js} +1 -1
  44. package/dist/client/assets/{Users01-BTeOoP3Y.js → Users01-Cd7F79Qr.js} +1 -1
  45. package/dist/client/assets/{Users03-BJlJhI3u.js → Users03-CZX_Q9YQ.js} +1 -1
  46. package/dist/client/assets/{X-Db6CXFPy.js → X-ma03Jfbq.js} +1 -1
  47. package/dist/client/assets/{XCircle-u_MUCjn5.js → XCircle-De-YUKlE.js} +1 -1
  48. package/dist/client/assets/{XClose-C0MPTyCv.js → XClose-BC4HX_WL.js} +1 -1
  49. package/dist/client/assets/{Zap-DW4Pf0JH.js → Zap-Dj-Of5Gm.js} +1 -1
  50. package/dist/client/assets/{ZapSquare-CATFBr1V.js → ZapSquare-_RhzYtka.js} +1 -1
  51. package/dist/client/assets/{access-gate-CVnQdqcu.js → access-gate-B-Ii3W9s.js} +1 -1
  52. package/dist/client/assets/{agent-icon-BHmHLR-n.js → agent-icon-CW_NqEx8.js} +1 -1
  53. package/dist/client/assets/{agents-list-D9pwGkMm.js → agents-list-DiGUm6BJ.js} +1 -1
  54. package/dist/client/assets/{ai-providers-CDX8gwKf.js → ai-providers-CH_rkadR.js} +1 -1
  55. package/dist/client/assets/{alert-NZgy_rHY.js → alert-DAaI3H55.js} +1 -1
  56. package/dist/client/assets/{alert-dialog-6X4VWLwP.js → alert-dialog-DHY_WIJI.js} +1 -1
  57. package/dist/client/assets/{app-editor-DtRvevzC.js → app-editor-CL6s-c4e.js} +1 -1
  58. package/dist/client/assets/{auth-CHfV0PAM.js → auth-Dd-6i05j.js} +1 -1
  59. package/dist/client/assets/{auth-catchall-BHKlxCjP.js → auth-catchall-SwHBt3QZ.js} +1 -1
  60. package/dist/client/assets/{auth-entry-CCsrgRKl.js → auth-entry-C_7qCmQQ.js} +1 -1
  61. package/dist/client/assets/{auth-split-layout-D3I9GWqu.js → auth-split-layout-fX1msgNE.js} +1 -1
  62. package/dist/client/assets/{authenticate-and-persist-oauth-2C0xJmA1.js → authenticate-and-persist-oauth-BCqjEU0S.js} +1 -1
  63. package/dist/client/assets/{automation-list-row-CRYE-69o.js → automation-list-row-gAb22xF1.js} +1 -1
  64. package/dist/client/assets/{automation-runs-BPvY5e0p.js → automation-runs-BEbeXfdL.js} +2 -2
  65. package/dist/client/assets/{automations-h9Z-3w97.js → automations-DUdmMoc3.js} +1 -1
  66. package/dist/client/assets/{avatar-z-df-Tey.js → avatar-Mqv-Widc.js} +1 -1
  67. package/dist/client/assets/{badge-CSetiRsF.js → badge-rkuGky44.js} +1 -1
  68. package/dist/client/assets/{billing-D0B10PsD.js → billing-DW3O_2Qn.js} +1 -1
  69. package/dist/client/assets/{block-document-PFKgUD2p.js → block-document-BW5dbaNG.js} +1 -1
  70. package/dist/client/assets/{brand-context-BRvh-5Aa.js → brand-context-C_TLpmp8.js} +1 -1
  71. package/dist/client/assets/{buckets-CJ_17CzK.js → buckets-mBbJksET.js} +1 -1
  72. package/dist/client/assets/{bulk-category-panel-C-sv_cyv.js → bulk-category-panel-CR3qC9t3.js} +1 -1
  73. package/dist/client/assets/{capability-load-error-CxtjMYLj.js → capability-load-error-CIpqRh4y.js} +1 -1
  74. package/dist/client/assets/{card-BvQeGTaA.js → card-CRT5k5Gn.js} +1 -1
  75. package/dist/client/assets/{cards-DM50BBl9.js → cards-B_zmvQ1v.js} +1 -1
  76. package/dist/client/assets/{category-editor-oTeE4PRw.js → category-editor-CjlYJLpX.js} +1 -1
  77. package/dist/client/assets/{chat-context-WBuSodUL.js → chat-context-BN16aLyC.js} +1 -1
  78. package/dist/client/assets/{checkbox-CHPu3dI7.js → checkbox-CYuJWoTJ.js} +1 -1
  79. package/dist/client/assets/{cli-auth-success-CS9cPK3T.js → cli-auth-success-DiQY1nFx.js} +1 -1
  80. package/dist/client/assets/{collection-detail-D6slJdD_.js → collection-detail-CHtAxvHT.js} +1 -1
  81. package/dist/client/assets/{collection-display-button-CqSLKnip.js → collection-display-button-C3HwJdqZ.js} +1 -1
  82. package/dist/client/assets/{collection-search-TJMJz_8d.js → collection-search-D4oHJjbX.js} +1 -1
  83. package/dist/client/assets/{collection-table-wrapper-C9Ckz61d.js → collection-table-wrapper-CQYiqJS4.js} +1 -1
  84. package/dist/client/assets/{collection-tabs-DOWoAX_i.js → collection-tabs-C2HGn-tH.js} +1 -1
  85. package/dist/client/assets/{command-B1gQ3Abx.js → command-CZIHHgvM.js} +1 -1
  86. package/dist/client/assets/{commerce-onboarding-Dd6p5vHW.js → commerce-onboarding-D3viMHj6.js} +1 -1
  87. package/dist/client/assets/{connect-D3GOYcEb.js → connect-BPe-uNQe.js} +1 -1
  88. package/dist/client/assets/{connection-Rt2sx7Mg.js → connection-CaB-am1G.js} +1 -1
  89. package/dist/client/assets/{connection-card-Cetubrum.js → connection-card-Bg_wTD36.js} +1 -1
  90. package/dist/client/assets/{connection-detail-CTqRZboh.js → connection-detail-D9pckhSL.js} +1 -1
  91. package/dist/client/assets/{connection-form-helpers-BVEb50_K.js → connection-form-helpers-BXZQtPFN.js} +1 -1
  92. package/dist/client/assets/{connections-4kZSQ3Gu.js → connections-Chx3s6na.js} +1 -1
  93. package/dist/client/assets/{decopilot-sse-pool-DEYtntVd.js → decopilot-sse-pool-D-UTTV7r.js} +1 -1
  94. package/dist/client/assets/{dialog-dwIz7L83.js → dialog-BZN3kr_G.js} +1 -1
  95. package/dist/client/assets/{domain-settings-D3Jm6_73.js → domain-settings-DtFbzrnF.js} +1 -1
  96. package/dist/client/assets/{drawer-CgKwyvsH.js → drawer-DSvmsh_2.js} +1 -1
  97. package/dist/client/assets/{dropdown-menu-DBTeEfEp.js → dropdown-menu-CG82Bbhy.js} +1 -1
  98. package/dist/client/assets/{empty-state-DIZU59YF.js → empty-state-BSl5IwKo.js} +1 -1
  99. package/dist/client/assets/{extract-connection-data-CW-wL2c1.js → extract-connection-data-Cix65ooh.js} +1 -1
  100. package/dist/client/assets/{file-explorer-BbbNchTa.js → file-explorer-B1fgM_Ek.js} +1 -1
  101. package/dist/client/assets/{file-type-icon-BkqsbMIs.js → file-type-icon-CueCmYEU.js} +1 -1
  102. package/dist/client/assets/{form-Z85glc_u.js → form-BNtRllZb.js} +1 -1
  103. package/dist/client/assets/{general-B3H0CGgb.js → general-C3FLhoC1.js} +1 -1
  104. package/dist/client/assets/{github-repo-picker-CgqrZDpc.js → github-repo-picker-Df7lQD--.js} +1 -1
  105. package/dist/client/assets/{hooks-C786cEpP.js → hooks-M-msYFMY.js} +1 -1
  106. package/dist/client/assets/{index-BHdTRFZE.js → index-8awK_Pkk.js} +1 -1
  107. package/dist/client/assets/index-BEdBSIIA.css +1 -0
  108. package/dist/client/assets/{index-BWnlSPNF.js → index-Bm2QpGsx.js} +1 -1
  109. package/dist/client/assets/index-C9AEcN03.js +5 -0
  110. package/dist/client/assets/{index-DrMtZH3n.js → index-CPGWBXg3.js} +3 -3
  111. package/dist/client/assets/{index-Dk3Vbw6f.js → index-C_z6ydBO.js} +1 -1
  112. package/dist/client/assets/{index-DBCVpCmb.js → index-DPQz051W.js} +1 -1
  113. package/dist/client/assets/{index-DrnLfJO7.js → index-DTqLtI90.js} +1 -1
  114. package/dist/client/assets/{index-D6mIw648.js → index-De9-L_p2.js} +1 -1
  115. package/dist/client/assets/{index-5uJTtKF7.js → index-DluylfIG.js} +5 -5
  116. package/dist/client/assets/{index-cjWVUbYe.js → index-DofuNnC2.js} +1 -1
  117. package/dist/client/assets/{index-redirect-BJZztwOf.js → index-redirect-wJeeVEEb.js} +1 -1
  118. package/dist/client/assets/{input-B8CuwYhS.js → input-BAUetD1Q.js} +1 -1
  119. package/dist/client/assets/{integration-icon-CyGR5k8y.js → integration-icon-C8pNDKpg.js} +1 -1
  120. package/dist/client/assets/{invite-member-dialog-Cs9yQPe7.js → invite-member-dialog-J9_SgB0A.js} +1 -1
  121. package/dist/client/assets/{label-mbqBY0TT.js → label-CtAjMlh2.js} +1 -1
  122. package/dist/client/assets/{layout-CRcIcX3z.js → layout-Ckfa3Znt.js} +1 -1
  123. package/dist/client/assets/{login-B3BCqwfk.js → login-CSj1ur6c.js} +1 -1
  124. package/dist/client/assets/{mcp-oauth-Bh4D_1yr.js → mcp-oauth-DLwTPMl7.js} +1 -1
  125. package/dist/client/assets/{members-Bt4tVUpE.js → members-DtE3DTsg.js} +1 -1
  126. package/dist/client/assets/{monaco-editor-BEE54e2X.js → monaco-editor-CwjTD1KI.js} +1 -1
  127. package/dist/client/assets/{monitoring-stats-row-CZBQe1J_.js → monitoring-stats-row-ffGayrv6.js} +1 -1
  128. package/dist/client/assets/{multi-select-5v4y46yQ.js → multi-select-WJMXAZcr.js} +1 -1
  129. package/dist/client/assets/{oauth-callback-C8tO2ViQ.js → oauth-callback-B9XH974I.js} +1 -1
  130. package/dist/client/assets/{oauth-callback-ai-provider-BlyuICqa.js → oauth-callback-ai-provider-BdtjioQB.js} +1 -1
  131. package/dist/client/assets/{onboarding-C_77UeCV.js → onboarding-BCQl-1rX.js} +1 -1
  132. package/dist/client/assets/{org-layout-tSw8Hzo6.js → org-layout-C401ygbs.js} +1 -1
  133. package/dist/client/assets/{organization-choice-ClTFwbDy.js → organization-choice-TMwHOPB4.js} +1 -1
  134. package/dist/client/assets/{orgs-B5Bbgmvk.js → orgs-DyGYDgpb.js} +1 -1
  135. package/dist/client/assets/{page-seo-form-CoUiXlS_.js → page-seo-form-D1dfDV-j.js} +1 -1
  136. package/dist/client/assets/{popover-jpJstolX.js → popover-W0z_j-pA.js} +1 -1
  137. package/dist/client/assets/{post-editor-Ddr_6Fac.js → post-editor-Cw_YEmxP.js} +1 -1
  138. package/dist/client/assets/{primitives-FhnYAl6u.js → primitives-ehlMhUGS.js} +1 -1
  139. package/dist/client/assets/{profile-BZc7LzYW.js → profile-DYUQBAC_.js} +1 -1
  140. package/dist/client/assets/{project-app-view-DzeT8LJu.js → project-app-view-DQJcgHEK.js} +1 -1
  141. package/dist/client/assets/record-editor-DGARDA6H.js +1 -0
  142. package/dist/client/assets/{redirect-editor-DKvHrWmX.js → redirect-editor-yoWMdTEY.js} +1 -1
  143. package/dist/client/assets/registry-DW13us64.js +2 -0
  144. package/dist/client/assets/{registry-layout-Bmt_KMV2.js → registry-layout-B9TPmkhJ.js} +1 -1
  145. package/dist/client/assets/{reports-BvAVG37q.js → reports-htYpEl4-.js} +1 -1
  146. package/dist/client/assets/{require-capability-DOx9AETn.js → require-capability-CROlpdHD.js} +1 -1
  147. package/dist/client/assets/{required-auth-layout-088Qrhua.js → required-auth-layout-DzlZDCxV.js} +1 -1
  148. package/dist/client/assets/{reset-password-DMec7zHu.js → reset-password-B4ax-nJL.js} +1 -1
  149. package/dist/client/assets/{roles-DfRoUUPR.js → roles-uz6pOcts.js} +1 -1
  150. package/dist/client/assets/{search-input-yzjarZOy.js → search-input-DIktERHE.js} +1 -1
  151. package/dist/client/assets/{secrets-EaPte9tu.js → secrets-Btfx1wDR.js} +1 -1
  152. package/dist/client/assets/{sections-editor-CPtZM9nP.js → sections-editor-A6XK9eb_.js} +1 -1
  153. package/dist/client/assets/{select-DwoG3i35.js → select-BHlgybIJ.js} +1 -1
  154. package/dist/client/assets/{select-model-BJcNU1LC.js → select-model-B8FZhJ8e.js} +1 -1
  155. package/dist/client/assets/{self-tool-result-BIcvrUov.js → self-tool-result-CrtbUI9B.js} +1 -1
  156. package/dist/client/assets/{seo-editor-BCBdG81E.js → seo-editor-CfO8zYe5.js} +1 -1
  157. package/dist/client/assets/{settings-layout-D5Vqc4xw.js → settings-layout-CfXbmrrO.js} +1 -1
  158. package/dist/client/assets/{settings-section-BaQE1wG9.js → settings-section-utiCbOiF.js} +1 -1
  159. package/dist/client/assets/{shell-controls-CBnHbN6H.js → shell-controls-CBXMdWKE.js} +1 -1
  160. package/dist/client/assets/{shell-layout-B5fO0Zra.js → shell-layout-B8KqkTCq.js} +1 -1
  161. package/dist/client/assets/{sidebar-DgQgb5sn.js → sidebar-mvup0_0f.js} +1 -1
  162. package/dist/client/assets/{skeleton-BAWjjFCN.js → skeleton-BKzfTFqY.js} +1 -1
  163. package/dist/client/assets/{spinner-DGBqgXCx.js → spinner-CbH9Gl_b.js} +1 -1
  164. package/dist/client/assets/{sso-ZyfgZDXz.js → sso-CWR034fQ.js} +1 -1
  165. package/dist/client/assets/store-registry-AI6i2R6r.js +2 -0
  166. package/dist/client/assets/{store-CDmxLg6b.js → store-viSFftz5.js} +1 -1
  167. package/dist/client/assets/{studio-tools-Cl_MnIvi.js → studio-tools-DxHoNJi5.js} +1 -1
  168. package/dist/client/assets/{switch-BkAM2D0l.js → switch-CWT2vYX4.js} +1 -1
  169. package/dist/client/assets/{synced-repos-DEOggDSZ.js → synced-repos-DXfGw3bs.js} +1 -1
  170. package/dist/client/assets/{tab-id-Bxlhy6J5.js → tab-id-Fy3Headx.js} +1 -1
  171. package/dist/client/assets/{table-wkh9heo2.js → table-BADzR4Mt.js} +1 -1
  172. package/dist/client/assets/{tabs-CEYHI8Md.js → tabs-RLr9BdOc.js} +1 -1
  173. package/dist/client/assets/{textarea-1wjTSY40.js → textarea-jLqdEROd.js} +1 -1
  174. package/dist/client/assets/{toggle-group-2FXdfAeH.js → toggle-group-am2CuXv1.js} +1 -1
  175. package/dist/client/assets/{toolbar-DJeYjzbm.js → toolbar-B__v3xFK.js} +1 -1
  176. package/dist/client/assets/{tooltip-H0fhJGAw.js → tooltip-D9BHiSYA.js} +1 -1
  177. package/dist/client/assets/{use-ai-providers-BHJZGUc0.js → use-ai-providers-lOiOojrZ.js} +1 -1
  178. package/dist/client/assets/{use-automations-CUmyAWfM.js → use-automations-DdXDDgVG.js} +1 -1
  179. package/dist/client/assets/{use-autosave-DlIf0aXm.js → use-autosave-SCiVVw8F.js} +1 -1
  180. package/dist/client/assets/{use-capability-wtjHty-j.js → use-capability-NCSm-Y3M.js} +1 -1
  181. package/dist/client/assets/{use-clock-tick-CxYlu2Gq.js → use-clock-tick-DaFpbid4.js} +1 -1
  182. package/dist/client/assets/{use-connection-C06aQf36.js → use-connection-BtGz9tXp.js} +1 -1
  183. package/dist/client/assets/{use-copy-gW0QHo8P.js → use-copy-qshZlaUc.js} +1 -1
  184. package/dist/client/assets/{use-create-virtual-mcp-f_SJloId.js → use-create-virtual-mcp-iLg_07AZ.js} +1 -1
  185. package/dist/client/assets/{use-debounced-autosave-JjCfq5kj.js → use-debounced-autosave-BYmePdTY.js} +1 -1
  186. package/dist/client/assets/{use-debounced-value-Dp6sftMR.js → use-debounced-value-COC1nTkV.js} +1 -1
  187. package/dist/client/assets/{use-deco-credits-g0IlK0Pn.js → use-deco-credits-Cb3IJnpy.js} +1 -1
  188. package/dist/client/assets/{use-decopilot-events-a7Wk8Vas.js → use-decopilot-events-Ci0r0fvW.js} +1 -1
  189. package/dist/client/assets/{use-delete-connection-gv8RXinn.js → use-delete-connection-B0EFlEZn.js} +1 -1
  190. package/dist/client/assets/{use-deployment-admin-BNsEQ5Jb.js → use-deployment-admin-B9lA0Peq.js} +1 -1
  191. package/dist/client/assets/{use-file-configs-BXAOsCuo.js → use-file-configs-C3BMYZZg.js} +1 -1
  192. package/dist/client/assets/{use-infinite-scroll-CbzOsGKa.js → use-infinite-scroll-DQ5xBL3V.js} +1 -1
  193. package/dist/client/assets/{use-join-requests-BihL-Sex.js → use-join-requests-qM5CPvaa.js} +1 -1
  194. package/dist/client/assets/{use-mcp-client-BYQZ09jw.js → use-mcp-client-DN-53Ka1.js} +1 -1
  195. package/dist/client/assets/{use-mcp-tools-1zzjIAwR.js → use-mcp-tools-DAM_i1F4.js} +1 -1
  196. package/dist/client/assets/{use-members-hO-mw4Hb.js → use-members-Kg_F1XeH.js} +1 -1
  197. package/dist/client/assets/{use-mobile-BpvQFpHJ.js → use-mobile-B6CF2Gm2.js} +1 -1
  198. package/dist/client/assets/{use-navigate-to-agent-BqIzfs1W.js → use-navigate-to-agent-0htFQ_Ks.js} +1 -1
  199. package/dist/client/assets/{use-open-billing-url-DhJWA6Ab.js → use-open-billing-url-CJkdLnwW.js} +1 -1
  200. package/dist/client/assets/{use-org-auth-client-BemR7rGU.js → use-org-auth-client-DxhbqIKL.js} +1 -1
  201. package/dist/client/assets/{use-org-sso-BCOboyXc.js → use-org-sso-CQPZrsYn.js} +1 -1
  202. package/dist/client/assets/{use-organization-roles-KuqucuwR.js → use-organization-roles-B6tvxklr.js} +1 -1
  203. package/dist/client/assets/{use-organization-settings-DO-5TCG5.js → use-organization-settings-Cd2QftZi.js} +1 -1
  204. package/dist/client/assets/{use-registry-connections-DAUYDjwC.js → use-registry-connections-B105emjY.js} +1 -1
  205. package/dist/client/assets/{use-secrets-DbAKuIqf.js → use-secrets-CEIX7aTp.js} +1 -1
  206. package/dist/client/assets/{use-section-preview-base-DadVPpps.js → use-section-preview-base-LpcaIV1-.js} +1 -1
  207. package/dist/client/assets/{use-status-sounds-B7jzN0nF.js → use-status-sounds-CtqIgXzk.js} +1 -1
  208. package/dist/client/assets/{use-tags-C70JhIII.js → use-tags-Cd0D1lyl.js} +1 -1
  209. package/dist/client/assets/{use-view-mode-E1cNgKEH.js → use-view-mode-Cw9aYFCQ.js} +1 -1
  210. package/dist/client/assets/{use-virtual-mcp-Cfa_s6xG.js → use-virtual-mcp-BMykymui.js} +1 -1
  211. package/dist/client/assets/useInfiniteQuery-C-Dl-yqx.js +1 -0
  212. package/dist/client/assets/{useRouterState-dnxSkJ3B.js → useRouterState--qo3fXs4.js} +1 -1
  213. package/dist/client/assets/useSuspenseInfiniteQuery-BjngpjKj.js +1 -0
  214. package/dist/client/assets/{users-DC66nhJN.js → users-CJAHxmFM.js} +1 -1
  215. package/dist/client/assets/{variant-calendar-HycG7TtG.js → variant-calendar-Btagf6Ai.js} +1 -1
  216. package/dist/client/assets/{view-mode-toggle-BqYvPkBg.js → view-mode-toggle-BaTV9j9j.js} +1 -1
  217. package/dist/client/index.html +2 -2
  218. package/dist/server/cli.js +1 -1
  219. package/dist/server/server.js +1 -1
  220. package/package.json +1 -1
  221. package/dist/client/assets/index-9SfcAKRH.css +0 -1
  222. package/dist/client/assets/index-BTa_wQw_.js +0 -5
  223. package/dist/client/assets/record-editor-pWAfV-bV.js +0 -1
  224. package/dist/client/assets/registry-6xLfaylj.js +0 -2
  225. package/dist/client/assets/store-registry-1BNfPgeY.js +0 -2
  226. package/dist/client/assets/useInfiniteQuery-BSP--nFF.js +0 -1
  227. package/dist/client/assets/useSuspenseInfiniteQuery-CrU4YP2H.js +0 -1
@@ -1332,7 +1332,7 @@ Usage: deco services <up|down|status>`),process.exit(1)}}var yc1=O(()=>{Vx()});f
1332
1332
  `.execute($);if(Number(W.rows[0]?.cnt)===0){console.warn(`Failed to migrate ${J}/${K}, keeping in old table`);continue}}await Qb`
1333
1333
  DELETE FROM kysely_migration WHERE name = ${X}
1334
1334
  `.execute($)}}async function Zn1($){await vc6($),await xc6($);let Z=new ei1({db:$,provider:{getMigrations:()=>Promise.resolve(ml0)}}),{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 fc6($){let{keepOpen:Z=!1,database:X,skipBetterAuth:Q=!1}=$??{},Y="skipped";if(!Q&&!X)Y=await Oh0();let G=X??N6(),J=async()=>{if(!Z&&!X)await Ow(G).catch((K)=>{console.warn("Warning: Error closing database:",K)})};try{let K=await Zn1(G.db);return await J(),{betterAuth:Y,kysely:K}}catch(K){throw await J(),K}}async function bc6(){let $=N6(),Z=new ei1({db:$.db,provider:{getMigrations:()=>Promise.resolve(ml0)}}),{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 Qn1=O(()=>{si1();Lh0();o7()});async function t50($){let Z={...process.env},X=c00($,Z);console.log(DF1(X.settings.encryptionKey));let Q=X.settings.betterAuthSecret||(X.settings.localMode?Bd1(X.settings.dataDir):""),{ensureServices:Y}=await Promise.resolve().then(() => (Y50(),Q50)),{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(() => (Lh0(),Ld1));await W(G.databaseUrl);let{createDatabase:H}=await Promise.resolve().then(() => (o7(),_l1)),{migrateToLatest:N}=await Promise.resolve().then(() => (Qn1(),Xn1)),U=H(G.databaseUrl);await N({keepOpen:!0,database:U,skipBetterAuth:!0})}let K={...X.settings,betterAuthSecret:Q,databaseUrl:G.databaseUrl,natsUrls:G.natsUrls,...G.s3?{s3Endpoint:G.s3.endpoint,s3Bucket:G.s3.bucket,s3AccessKeyId:G.s3.accessKeyId,s3SecretAccessKey:G.s3.secretAccessKey,s3ForcePathStyle:G.s3.forcePathStyle}:{},...G.natsTunnel?{natsPublicUrl:G.natsTunnel.publicUrl,natsAccountJwt:G.natsTunnel.accountJwt,natsAccountSigningKey:G.natsTunnel.accountSigningKey,natsOperatorJwt:G.natsTunnel.operatorJwt,natsTunnelPublicEnabled:!0,natsCredsPath:G.natsTunnel.credsPath}:{}};return gc1(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 il0=O(()=>{Vx();Od1();b8()});var Jn1={};w0(Jn1,{updateService:()=>tD,subscribeCliState:()=>tl0,setTuiConsoleIntercepted:()=>o50,setServerUrl:()=>Vm,setMigrationsDone:()=>km,setDevMode:()=>hc6,resetCliStateForTests:()=>yc6,isTuiConsoleIntercepted:()=>r50,getCliState:()=>pl0,addLogEntry:()=>jw});function Yn1(){return{services:[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}],migrationsStatus:"pending",serverUrl:null,logs:[]}}function yc6(){_Q=Yn1()}function gc6(){return[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}]}function Mm(){for(let $ of nl0)$()}function pl0(){return _Q}function tl0($){return nl0.add($),()=>nl0.delete($)}function tD($){_Q={..._Q,services:_Q.services.map((Z)=>Z.name===$.name?$:Z)},Mm()}function km(){_Q={..._Q,migrationsStatus:"done"},Mm()}function Vm($){_Q={..._Q,serverUrl:$},Mm()}function jw($){let Z=[..._Q.logs,$];_Q={..._Q,logs:Z.length>500?Z.slice(-500):Z},Mm()}function hc6(){_Q={..._Q,services:[...gc6(),{name:"API",status:"pending",port:0},{name:"Vite",status:"pending",port:0}]},Mm()}function o50($){Gn1=$}function r50(){return Gn1}var _Q,nl0,Gn1=!1;var oD=O(()=>{_Q=Yn1();nl0=new Set});import{createServer as Kn1}from"net";function uc6($){return new Promise((Z)=>{let X=Kn1();X.once("error",()=>Z(!1)),X.listen($,"0.0.0.0",()=>{X.close(()=>Z(!0))})})}async function Sm($){if(await uc6($))return $;let Z=await new Promise((X,Q)=>{let Y=Kn1();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 ol0=()=>{};function Cm($){return $.replace(/\x1b\[[0-9;]*m/g,"")}var rl0={};w0(rl0,{startDevServer:()=>lc6});import{join as cc6}from"path";function Wn1($){let Z=$.getReader(),X=new TextDecoder,Q="";function Y(){let G=Q.split(`
1335
- `);Q=G.pop()??"";for(let J of G){let K=Cm(J).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;jw({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=Cm(Q).replace(/^\[\d+\]\s*/,"").trim();if(G)jw({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:G})}})()}async function lc6($){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 Sm(Number(Y)+1):await Sm(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await t50({port:String(J),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let L of W)tD({name:L.name,status:"ready",port:L.port});km();let N=cc6(import.meta.dir,"..","..","..","..",".."),U=X===!0,F=Bun.spawn(["bun","run","dev:servers"],{cwd:N,env:{...process.env,PORT:String(K.port),VITE_PORT:String(Y),DATABASE_URL:K.databaseUrl,NATS_URL:K.natsUrls.join(","),NODE_ENV:K.nodeEnv,BASE_URL:G,DECOCMS_LOCAL_MODE:String(K.localMode),DECOCMS_HOME:K.dataDir,DATA_DIR:K.dataDir,DECO_CLI:"1",...K.betterAuthSecret?{BETTER_AUTH_SECRET:K.betterAuthSecret}:{},...K.s3Endpoint?{S3_ENDPOINT:K.s3Endpoint,S3_BUCKET:K.s3Bucket??"",S3_ACCESS_KEY_ID:K.s3AccessKeyId??"",S3_SECRET_ACCESS_KEY:K.s3SecretAccessKey??"",S3_FORCE_PATH_STYLE:String(K.s3ForcePathStyle)}:{},...K.natsPublicUrl&&K.natsAccountJwt&&K.natsAccountSigningKey?{NATS_PUBLIC_URL:K.natsPublicUrl,NATS_ACCOUNT_JWT:K.natsAccountJwt,NATS_ACCOUNT_SIGNING_KEY:K.natsAccountSigningKey,NATS_OPERATOR_JWT:K.natsOperatorJwt??"",NATS_TUNNEL_PUBLIC_ENABLED:"true",...K.natsCredsPath?{NATS_CREDS:K.natsCredsPath}:{}}:{}},stdio:["inherit",U?"inherit":"pipe",U?"inherit":"pipe"]});if(!U)Wn1(F.stdout),Wn1(F.stderr);Vm(G),tD({name:"Vite",status:"ready",port:Number(Y)}),tD({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(() => (Y50(),Q50));await D(K.dataDir)}};return process.on("SIGINT",()=>B("SIGINT")),process.on("SIGTERM",()=>B("SIGTERM")),{port:Number(Y),process:F}}var al0=O(()=>{il0();oD();ol0()});var a50;var sl0=O(()=>{a50={name:"decocms",version:"4.200.2",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@nats-io/jwt":"0.0.10-5","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});import{Box as mc6,Text as Hn1}from"ink";import{jsx as ic6,jsxs as Nn1}from"react/jsx-runtime";function Un1({version:$}){return Nn1(mc6,{flexDirection:"column",marginTop:1,children:[I50.map((Z,X)=>ic6(Hn1,{color:q50[X],children:Z},X)),Nn1(Hn1,{dimColor:!0,children:[" v",$]})]})}var Fn1=O(()=>{Lm()});import{Box as rD,Text as Pw}from"ink";import{Spinner as nc6}from"@inkjs/ui";import{jsx as cY,jsxs as Yb}from"react/jsx-runtime";function wn1({status:$}){if($==="pending")return cY(nc6,{label:""});return cY(Pw,{color:"green",children:"\u2713"})}function pc6($){return`${$.name}: ${$.port||"...."}`}function Bn1({services:$,migrationsStatus:Z,home:X,serverUrl:Q}){return Yb(rD,{flexDirection:"column",paddingBottom:1,children:[cY(Un1,{version:a50.version}),cY(rD,{marginBottom:1,children:cY(Pw,{dimColor:!0,children:"\u2500".repeat(80)})}),cY(rD,{children:Yb(Pw,{dimColor:!0,children:["Home: ",X]})}),Yb(rD,{gap:2,children:[$.map((Y)=>Yb(rD,{gap:1,children:[cY(Pw,{children:pc6(Y)}),cY(wn1,{status:Y.status})]},Y.name)),Yb(rD,{gap:1,children:[cY(Pw,{children:"Migrations"}),cY(wn1,{status:Z})]})]}),cY(rD,{children:Q?Yb(Pw,{children:["Open in browser: ",cY(Pw,{color:"cyan",children:Q})]}):cY(Pw,{dimColor:!0,children:"Starting..."})})]})}var On1=O(()=>{sl0();Fn1()});import{Box as tc6,Text as _m}from"ink";import{jsx as el0,jsxs as $d0}from"react/jsx-runtime";function oc6($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function Ln1({logs:$}){return el0(tc6,{flexDirection:"column",children:$.map((Z,X)=>{if(Z.rawLine)return el0(_m,{dimColor:!0,children:Z.rawLine},X);let Q=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return $d0(_m,{children:[$d0(_m,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),el0(_m,{color:oc6(Z.status),children:Z.status}),$d0(_m,{dimColor:!0,children:[" ",Q.padStart(8)]})]},X)})})}var Dn1=()=>{};var Zd0={};w0(Zd0,{App:()=>sc6});import{Box as rc6}from"ink";import{useSyncExternalStore as ac6}from"react";import{jsx as En1,jsxs as ec6}from"react/jsx-runtime";function sc6({home:$}){let Z=ac6(tl0,pl0);return ec6(rc6,{flexDirection:"column",children:[En1(Bn1,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),En1(Ln1,{logs:Z.logs})]})}var Xd0=O(()=>{On1();Dn1();oD()});var BJ="thread-gate",vN="decopilot-hosted-harness",pG="automations",Aw="background-tools";var zn1="7";function jn1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:zn1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var Pn1=()=>{};function $l6(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function Qd0($,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 An1(){let $=$l6();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:Qd0($,"--cpu-prof-dir")??process.cwd(),name:Qd0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(Qd0($,"--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 Tn1(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let X=mD();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(()=>{}),s50=setInterval(()=>void Z().catch(()=>{}),$),s50.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(s50)clearInterval(s50)}}var s50;var Rn1=()=>{};import*as Zl6 from"bun:jsc";function In1(){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{Xl6()}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=Ql6()?.traces??[]}catch{}if(J>$&&K.length>0){let W=new Map;for(let N of K){let U=N.frames.find((B)=>B.sourceURL&&!/Unknown Executable/.test(B.category??""))??N.frames[0];if(!U)continue;let F=(U.sourceURL??"?").replace(/^.*\/node_modules\//,"node_modules/"),w=`${U.name??"?"} @ ${F}:${U.line??"?"}`;W.set(w,(W.get(w)??0)+1)}let H=[...W.entries()].sort((N,U)=>U[1]-N[1]).slice(0,8).map(([N,U])=>({frame:N,count:U}));console.warn(JSON.stringify({msg:"stall-stack",ts:new Date().toISOString(),lagMs:Math.round(J),samplesInWindow:K.length,top:H}))}X=setTimeout(Y,Z),X.unref?.()};return X=setTimeout(Y,Z),X.unref?.(),()=>{if(X)clearTimeout(X)}}var Xl6,Ql6;var qn1=O(()=>{({startSamplingProfiler:Xl6,samplingProfilerStackTraces:Ql6}=Zl6)});function Mn1(){An1();let $=[Tn1(),Rl1(),In1()];return()=>{for(let Z of $)Z()}}var kn1=O(()=>{Gh0();Rn1();qn1()});var aD=_((Vn1)=>{Object.defineProperty(Vn1,"__esModule",{value:!0});Vn1.RepublishHeaders=Vn1.DirectMsgHeaders=Vn1.JsHeaders=Vn1.AdvisoryKind=void 0;Vn1.isOrderedPushConsumerOptions=Yl6;Vn1.isPullConsumer=Gl6;Vn1.isPushConsumer=Jl6;Vn1.isBoundPushConsumerOptions=Kl6;function Yl6($){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 Gl6($){return $.isPullConsumer()}function Jl6($){return $.isPushConsumer()}function Kl6($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}Vn1.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"};Vn1.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"};Vn1.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};Vn1.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var lY=_((Cn1)=>{Object.defineProperty(Cn1,"__esModule",{value:!0});Cn1.TD=Cn1.TE=Cn1.Empty=void 0;Cn1.encode=Ll6;Cn1.decode=Dl6;Cn1.Empty=new Uint8Array(0);Cn1.TE=new TextEncoder;Cn1.TD=new TextDecoder;function Ol6(...$){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 Ll6(...$){let Z=[];for(let X=0;X<$.length;X++)Z.push(Cn1.TE.encode($[X]));if(Z.length===0)return Cn1.Empty;if(Z.length===1)return Z[0];return Ol6(...Z)}function Dl6($){if(!$||$.length===0)return"";return Cn1.TD.decode($)}});var dY=_((xn1)=>{Object.defineProperty(xn1,"__esModule",{value:!0});xn1.errors=xn1.PermissionViolationError=xn1.NoRespondersError=xn1.TimeoutError=xn1.RequestError=xn1.ProtocolError=xn1.ConnectionError=xn1.DrainingConnectionError=xn1.ClosedConnectionError=xn1.AuthorizationError=xn1.UserAuthenticationExpiredError=xn1.InvalidOperationError=xn1.InvalidArgumentError=xn1.InvalidSubjectError=void 0;class Gd0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}xn1.InvalidSubjectError=Gd0;class e50 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 e50(`${$} ${Z}`,X)}}xn1.InvalidArgumentError=e50;class Jd0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}xn1.InvalidOperationError=Jd0;class $90 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new $90($);return null}}xn1.UserAuthenticationExpiredError=$90;class Z90 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 Z90($);return null}}xn1.AuthorizationError=Z90;class Kd0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}xn1.ClosedConnectionError=Kd0;class Wd0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}xn1.DrainingConnectionError=Wd0;class Hd0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}xn1.ConnectionError=Hd0;class Nd0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}xn1.ProtocolError=Nd0;class Ud0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof X90}}xn1.RequestError=Ud0;class Fd0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}xn1.TimeoutError=Fd0;class X90 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}xn1.NoRespondersError=X90;class Q90 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 Q90($,X,Q,Y)}}xn1.PermissionViolationError=Q90;xn1.errors={AuthorizationError:Z90,ClosedConnectionError:Kd0,ConnectionError:Hd0,DrainingConnectionError:Wd0,InvalidArgumentError:e50,InvalidOperationError:Jd0,InvalidSubjectError:Gd0,NoRespondersError:X90,PermissionViolationError:Q90,ProtocolError:Nd0,RequestError:Ud0,TimeoutError:Fd0,UserAuthenticationExpiredError:$90}});var OJ=_((hn1)=>{Object.defineProperty(hn1,"__esModule",{value:!0});hn1.SimpleMutex=hn1.Perf=void 0;hn1.extend=xl6;hn1.render=fl6;hn1.timeout=bl6;hn1.delay=yl6;hn1.deadline=gl6;hn1.deferred=Bd0;hn1.debugDeferred=hl6;hn1.shuffle=ul6;hn1.collect=cl6;hn1.jitter=gn1;hn1.backoff=ll6;hn1.nanos=dl6;hn1.millis=ml6;hn1.randomToken=pl6;var vl6=lY(),wd0=dY();function xl6($,...Z){for(let X=0;X<Z.length;X++){let Q=Z[X];Object.keys(Q).forEach(function(Y){$[Y]=Q[Y]})}return $}function fl6($){return vl6.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function bl6($,Z=!0){let X=Z?new wd0.TimeoutError:null,Q,Y,G=new Promise((J,K)=>{Q={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(X===null)K(new wd0.TimeoutError);else K(X)},$)});return Object.assign(G,Q)}function yl6($=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 gl6($,Z=1000){let X=Bd0(),Q=setTimeout(()=>{X.reject(new wd0.TimeoutError)},Z);try{return await Promise.race([$,X])}finally{clearTimeout(Q)}}function Bd0(){let $={},Z=new Promise((X,Q)=>{$={resolve:X,reject:Q}});return Object.assign(Z,$)}function hl6(){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 ul6($){for(let Z=$.length-1;Z>0;Z--){let X=Math.floor(Math.random()*(Z+1));[$[Z],$[X]]=[$[X],$[Z]]}return $}async function cl6($){let Z=[];for await(let X of $)Z.push(X);return Z}class bn1{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})}),$}}hn1.Perf=bn1;class yn1{max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=Bd0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}hn1.SimpleMutex=yn1;function gn1($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function ll6($=[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 gn1(X>Z?$[Z]:$[X])}}}function dl6($){return $*1e6}function ml6($){return Math.floor($/1e6)}var il6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",xN=new Uint8Array(62);for(let $=0;$<62;$++)xN[$]=il6.charCodeAt($);var nl6=218340105584896;function pl6(){let $=Math.floor(Math.random()*nl6),Z=$%62,X=xN[Z];$=($-Z)/62,Z=$%62;let Q=xN[Z];$=($-Z)/62,Z=$%62;let Y=xN[Z];$=($-Z)/62,Z=$%62;let G=xN[Z];$=($-Z)/62,Z=$%62;let J=xN[Z];$=($-Z)/62,Z=$%62;let K=xN[Z];$=($-Z)/62,Z=$%62;let W=xN[Z];$=($-Z)/62;let H=xN[$];return String.fromCharCode(X,Q,Y,G,J,K,W,H)}});var pn1=_((in1)=>{Object.defineProperty(in1,"__esModule",{value:!0});in1.nuid=in1.NuidImpl=void 0;var Hd6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",Tw=62,G90=12,dn1=10,cn1=33,Nd6=333,ln1=G90+dn1,Ld0=new Uint8Array(Tw);for(let $=0;$<Tw;$++)Ld0[$]=Hd6.charCodeAt($);var Y90=4294967296,mn1=BigInt(Tw)**BigInt(dn1),vm=Number(mn1/(1n<<32n)),Od0=Number(mn1%(1n<<32n));function Ud6($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function Fd6($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else Ud6($)}class Dd0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(ln1),this.cbuf=new Uint8Array(G90),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(vm+1)),this.seqLo=Math.floor(Math.random()*Y90);while($++<8&&this.seqHi===vm&&this.seqLo>=Od0);if(this.seqHi===vm&&this.seqLo>=Od0)this.seqLo=0;this.inc=Math.random()*(Nd6-cn1)+cn1|0}setPre(){Fd6(this.cbuf);for(let $=0;$<G90;$++)this.buf[$]=Ld0[this.cbuf[$]%Tw]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let X=ln1-1;X>=G90;X--){let Q=Math.floor($/Tw),G=($-Q*Tw)*Y90+Z,J=Math.floor(G/Tw),K=G-J*Tw;this.buf[X]=Ld0[K],$=Q,Z=J}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=Y90)this.seqLo-=Y90,this.seqHi+=1;if(this.seqHi>vm||this.seqHi===vm&&this.seqLo>=Od0)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()}}in1.NuidImpl=Dd0;in1.nuid=new Dd0});var an1=_((on1)=>{Object.defineProperty(on1,"__esModule",{value:!0});on1.nuid=on1.Nuid=void 0;var tn1=pn1();on1.Nuid=tn1.NuidImpl;on1.nuid=tn1.nuid});var K90=_((J90)=>{Object.defineProperty(J90,"__esModule",{value:!0});J90.nuid=J90.Nuid=void 0;var sn1=an1();Object.defineProperty(J90,"Nuid",{enumerable:!0,get:function(){return sn1.Nuid}});Object.defineProperty(J90,"nuid",{enumerable:!0,get:function(){return sn1.nuid}})});var Rw=_((en1)=>{Object.defineProperty(en1,"__esModule",{value:!0});en1.DEFAULT_HOST=en1.DEFAULT_PORT=en1.Match=void 0;en1.syncIterator=Ed6;en1.createInbox=zd6;var Ld6=K90(),Dd6=dY();en1.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function Ed6($){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 zd6($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw Dd6.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${Ld6.nuid.next()}`}en1.DEFAULT_PORT=4222;en1.DEFAULT_HOST="127.0.0.1"});var xm=_((Qp1)=>{Object.defineProperty(Qp1,"__esModule",{value:!0});Qp1.DataBuffer=void 0;var Zp1=lY();class Xp1{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 Zp1.TE.encode($)}static toAscii($){return Zp1.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}}Qp1.DataBuffer=Xp1});var sD=_((Jp1)=>{Object.defineProperty(Jp1,"__esModule",{value:!0});Jp1.LF=Jp1.CR=Jp1.CRLF=Jp1.CR_LF_LEN=Jp1.CR_LF=void 0;Jp1.setTransportFactory=Md6;Jp1.defaultPort=kd6;Jp1.getUrlParseFn=Vd6;Jp1.newTransport=Sd6;Jp1.getResolveFn=Cd6;Jp1.protoLen=Gp1;Jp1.extractProtocolMessage=_d6;var Rd6=lY(),Id6=Rw(),qd6=xm(),mY;function Md6($){mY=$}function kd6(){return mY!==void 0&&mY.defaultPort!==void 0?mY.defaultPort:Id6.DEFAULT_PORT}function Vd6(){return mY!==void 0&&mY.urlParseFn?mY.urlParseFn:void 0}function Sd6(){if(!mY||typeof mY.factory!=="function")throw Error("transport fn is not set");return mY.factory()}function Cd6(){return mY!==void 0&&mY.dnsResolveFn?mY.dnsResolveFn:void 0}Jp1.CR_LF=`\r
1335
+ `);Q=G.pop()??"";for(let J of G){let K=Cm(J).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;jw({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=Cm(Q).replace(/^\[\d+\]\s*/,"").trim();if(G)jw({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:G})}})()}async function lc6($){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 Sm(Number(Y)+1):await Sm(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await t50({port:String(J),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let L of W)tD({name:L.name,status:"ready",port:L.port});km();let N=cc6(import.meta.dir,"..","..","..","..",".."),U=X===!0,F=Bun.spawn(["bun","run","dev:servers"],{cwd:N,env:{...process.env,PORT:String(K.port),VITE_PORT:String(Y),DATABASE_URL:K.databaseUrl,NATS_URL:K.natsUrls.join(","),NODE_ENV:K.nodeEnv,BASE_URL:G,DECOCMS_LOCAL_MODE:String(K.localMode),DECOCMS_HOME:K.dataDir,DATA_DIR:K.dataDir,DECO_CLI:"1",...K.betterAuthSecret?{BETTER_AUTH_SECRET:K.betterAuthSecret}:{},...K.s3Endpoint?{S3_ENDPOINT:K.s3Endpoint,S3_BUCKET:K.s3Bucket??"",S3_ACCESS_KEY_ID:K.s3AccessKeyId??"",S3_SECRET_ACCESS_KEY:K.s3SecretAccessKey??"",S3_FORCE_PATH_STYLE:String(K.s3ForcePathStyle)}:{},...K.natsPublicUrl&&K.natsAccountJwt&&K.natsAccountSigningKey?{NATS_PUBLIC_URL:K.natsPublicUrl,NATS_ACCOUNT_JWT:K.natsAccountJwt,NATS_ACCOUNT_SIGNING_KEY:K.natsAccountSigningKey,NATS_OPERATOR_JWT:K.natsOperatorJwt??"",NATS_TUNNEL_PUBLIC_ENABLED:"true",...K.natsCredsPath?{NATS_CREDS:K.natsCredsPath}:{}}:{}},stdio:["inherit",U?"inherit":"pipe",U?"inherit":"pipe"]});if(!U)Wn1(F.stdout),Wn1(F.stderr);Vm(G),tD({name:"Vite",status:"ready",port:Number(Y)}),tD({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(() => (Y50(),Q50));await D(K.dataDir)}};return process.on("SIGINT",()=>B("SIGINT")),process.on("SIGTERM",()=>B("SIGTERM")),{port:Number(Y),process:F}}var al0=O(()=>{il0();oD();ol0()});var a50;var sl0=O(()=>{a50={name:"decocms",version:"4.200.3",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 mc6,Text as Hn1}from"ink";import{jsx as ic6,jsxs as Nn1}from"react/jsx-runtime";function Un1({version:$}){return Nn1(mc6,{flexDirection:"column",marginTop:1,children:[I50.map((Z,X)=>ic6(Hn1,{color:q50[X],children:Z},X)),Nn1(Hn1,{dimColor:!0,children:[" v",$]})]})}var Fn1=O(()=>{Lm()});import{Box as rD,Text as Pw}from"ink";import{Spinner as nc6}from"@inkjs/ui";import{jsx as cY,jsxs as Yb}from"react/jsx-runtime";function wn1({status:$}){if($==="pending")return cY(nc6,{label:""});return cY(Pw,{color:"green",children:"\u2713"})}function pc6($){return`${$.name}: ${$.port||"...."}`}function Bn1({services:$,migrationsStatus:Z,home:X,serverUrl:Q}){return Yb(rD,{flexDirection:"column",paddingBottom:1,children:[cY(Un1,{version:a50.version}),cY(rD,{marginBottom:1,children:cY(Pw,{dimColor:!0,children:"\u2500".repeat(80)})}),cY(rD,{children:Yb(Pw,{dimColor:!0,children:["Home: ",X]})}),Yb(rD,{gap:2,children:[$.map((Y)=>Yb(rD,{gap:1,children:[cY(Pw,{children:pc6(Y)}),cY(wn1,{status:Y.status})]},Y.name)),Yb(rD,{gap:1,children:[cY(Pw,{children:"Migrations"}),cY(wn1,{status:Z})]})]}),cY(rD,{children:Q?Yb(Pw,{children:["Open in browser: ",cY(Pw,{color:"cyan",children:Q})]}):cY(Pw,{dimColor:!0,children:"Starting..."})})]})}var On1=O(()=>{sl0();Fn1()});import{Box as tc6,Text as _m}from"ink";import{jsx as el0,jsxs as $d0}from"react/jsx-runtime";function oc6($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function Ln1({logs:$}){return el0(tc6,{flexDirection:"column",children:$.map((Z,X)=>{if(Z.rawLine)return el0(_m,{dimColor:!0,children:Z.rawLine},X);let Q=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return $d0(_m,{children:[$d0(_m,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),el0(_m,{color:oc6(Z.status),children:Z.status}),$d0(_m,{dimColor:!0,children:[" ",Q.padStart(8)]})]},X)})})}var Dn1=()=>{};var Zd0={};w0(Zd0,{App:()=>sc6});import{Box as rc6}from"ink";import{useSyncExternalStore as ac6}from"react";import{jsx as En1,jsxs as ec6}from"react/jsx-runtime";function sc6({home:$}){let Z=ac6(tl0,pl0);return ec6(rc6,{flexDirection:"column",children:[En1(Bn1,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),En1(Ln1,{logs:Z.logs})]})}var Xd0=O(()=>{On1();Dn1();oD()});var BJ="thread-gate",vN="decopilot-hosted-harness",pG="automations",Aw="background-tools";var zn1="7";function jn1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:zn1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var Pn1=()=>{};function $l6(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function Qd0($,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 An1(){let $=$l6();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:Qd0($,"--cpu-prof-dir")??process.cwd(),name:Qd0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(Qd0($,"--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 Tn1(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let X=mD();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(()=>{}),s50=setInterval(()=>void Z().catch(()=>{}),$),s50.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(s50)clearInterval(s50)}}var s50;var Rn1=()=>{};import*as Zl6 from"bun:jsc";function In1(){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{Xl6()}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=Ql6()?.traces??[]}catch{}if(J>$&&K.length>0){let W=new Map;for(let N of K){let U=N.frames.find((B)=>B.sourceURL&&!/Unknown Executable/.test(B.category??""))??N.frames[0];if(!U)continue;let F=(U.sourceURL??"?").replace(/^.*\/node_modules\//,"node_modules/"),w=`${U.name??"?"} @ ${F}:${U.line??"?"}`;W.set(w,(W.get(w)??0)+1)}let H=[...W.entries()].sort((N,U)=>U[1]-N[1]).slice(0,8).map(([N,U])=>({frame:N,count:U}));console.warn(JSON.stringify({msg:"stall-stack",ts:new Date().toISOString(),lagMs:Math.round(J),samplesInWindow:K.length,top:H}))}X=setTimeout(Y,Z),X.unref?.()};return X=setTimeout(Y,Z),X.unref?.(),()=>{if(X)clearTimeout(X)}}var Xl6,Ql6;var qn1=O(()=>{({startSamplingProfiler:Xl6,samplingProfilerStackTraces:Ql6}=Zl6)});function Mn1(){An1();let $=[Tn1(),Rl1(),In1()];return()=>{for(let Z of $)Z()}}var kn1=O(()=>{Gh0();Rn1();qn1()});var aD=_((Vn1)=>{Object.defineProperty(Vn1,"__esModule",{value:!0});Vn1.RepublishHeaders=Vn1.DirectMsgHeaders=Vn1.JsHeaders=Vn1.AdvisoryKind=void 0;Vn1.isOrderedPushConsumerOptions=Yl6;Vn1.isPullConsumer=Gl6;Vn1.isPushConsumer=Jl6;Vn1.isBoundPushConsumerOptions=Kl6;function Yl6($){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 Gl6($){return $.isPullConsumer()}function Jl6($){return $.isPushConsumer()}function Kl6($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}Vn1.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"};Vn1.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"};Vn1.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};Vn1.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var lY=_((Cn1)=>{Object.defineProperty(Cn1,"__esModule",{value:!0});Cn1.TD=Cn1.TE=Cn1.Empty=void 0;Cn1.encode=Ll6;Cn1.decode=Dl6;Cn1.Empty=new Uint8Array(0);Cn1.TE=new TextEncoder;Cn1.TD=new TextDecoder;function Ol6(...$){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 Ll6(...$){let Z=[];for(let X=0;X<$.length;X++)Z.push(Cn1.TE.encode($[X]));if(Z.length===0)return Cn1.Empty;if(Z.length===1)return Z[0];return Ol6(...Z)}function Dl6($){if(!$||$.length===0)return"";return Cn1.TD.decode($)}});var dY=_((xn1)=>{Object.defineProperty(xn1,"__esModule",{value:!0});xn1.errors=xn1.PermissionViolationError=xn1.NoRespondersError=xn1.TimeoutError=xn1.RequestError=xn1.ProtocolError=xn1.ConnectionError=xn1.DrainingConnectionError=xn1.ClosedConnectionError=xn1.AuthorizationError=xn1.UserAuthenticationExpiredError=xn1.InvalidOperationError=xn1.InvalidArgumentError=xn1.InvalidSubjectError=void 0;class Gd0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}xn1.InvalidSubjectError=Gd0;class e50 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 e50(`${$} ${Z}`,X)}}xn1.InvalidArgumentError=e50;class Jd0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}xn1.InvalidOperationError=Jd0;class $90 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new $90($);return null}}xn1.UserAuthenticationExpiredError=$90;class Z90 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 Z90($);return null}}xn1.AuthorizationError=Z90;class Kd0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}xn1.ClosedConnectionError=Kd0;class Wd0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}xn1.DrainingConnectionError=Wd0;class Hd0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}xn1.ConnectionError=Hd0;class Nd0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}xn1.ProtocolError=Nd0;class Ud0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof X90}}xn1.RequestError=Ud0;class Fd0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}xn1.TimeoutError=Fd0;class X90 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}xn1.NoRespondersError=X90;class Q90 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 Q90($,X,Q,Y)}}xn1.PermissionViolationError=Q90;xn1.errors={AuthorizationError:Z90,ClosedConnectionError:Kd0,ConnectionError:Hd0,DrainingConnectionError:Wd0,InvalidArgumentError:e50,InvalidOperationError:Jd0,InvalidSubjectError:Gd0,NoRespondersError:X90,PermissionViolationError:Q90,ProtocolError:Nd0,RequestError:Ud0,TimeoutError:Fd0,UserAuthenticationExpiredError:$90}});var OJ=_((hn1)=>{Object.defineProperty(hn1,"__esModule",{value:!0});hn1.SimpleMutex=hn1.Perf=void 0;hn1.extend=xl6;hn1.render=fl6;hn1.timeout=bl6;hn1.delay=yl6;hn1.deadline=gl6;hn1.deferred=Bd0;hn1.debugDeferred=hl6;hn1.shuffle=ul6;hn1.collect=cl6;hn1.jitter=gn1;hn1.backoff=ll6;hn1.nanos=dl6;hn1.millis=ml6;hn1.randomToken=pl6;var vl6=lY(),wd0=dY();function xl6($,...Z){for(let X=0;X<Z.length;X++){let Q=Z[X];Object.keys(Q).forEach(function(Y){$[Y]=Q[Y]})}return $}function fl6($){return vl6.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function bl6($,Z=!0){let X=Z?new wd0.TimeoutError:null,Q,Y,G=new Promise((J,K)=>{Q={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(X===null)K(new wd0.TimeoutError);else K(X)},$)});return Object.assign(G,Q)}function yl6($=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 gl6($,Z=1000){let X=Bd0(),Q=setTimeout(()=>{X.reject(new wd0.TimeoutError)},Z);try{return await Promise.race([$,X])}finally{clearTimeout(Q)}}function Bd0(){let $={},Z=new Promise((X,Q)=>{$={resolve:X,reject:Q}});return Object.assign(Z,$)}function hl6(){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 ul6($){for(let Z=$.length-1;Z>0;Z--){let X=Math.floor(Math.random()*(Z+1));[$[Z],$[X]]=[$[X],$[Z]]}return $}async function cl6($){let Z=[];for await(let X of $)Z.push(X);return Z}class bn1{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})}),$}}hn1.Perf=bn1;class yn1{max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=Bd0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}hn1.SimpleMutex=yn1;function gn1($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function ll6($=[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 gn1(X>Z?$[Z]:$[X])}}}function dl6($){return $*1e6}function ml6($){return Math.floor($/1e6)}var il6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",xN=new Uint8Array(62);for(let $=0;$<62;$++)xN[$]=il6.charCodeAt($);var nl6=218340105584896;function pl6(){let $=Math.floor(Math.random()*nl6),Z=$%62,X=xN[Z];$=($-Z)/62,Z=$%62;let Q=xN[Z];$=($-Z)/62,Z=$%62;let Y=xN[Z];$=($-Z)/62,Z=$%62;let G=xN[Z];$=($-Z)/62,Z=$%62;let J=xN[Z];$=($-Z)/62,Z=$%62;let K=xN[Z];$=($-Z)/62,Z=$%62;let W=xN[Z];$=($-Z)/62;let H=xN[$];return String.fromCharCode(X,Q,Y,G,J,K,W,H)}});var pn1=_((in1)=>{Object.defineProperty(in1,"__esModule",{value:!0});in1.nuid=in1.NuidImpl=void 0;var Hd6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",Tw=62,G90=12,dn1=10,cn1=33,Nd6=333,ln1=G90+dn1,Ld0=new Uint8Array(Tw);for(let $=0;$<Tw;$++)Ld0[$]=Hd6.charCodeAt($);var Y90=4294967296,mn1=BigInt(Tw)**BigInt(dn1),vm=Number(mn1/(1n<<32n)),Od0=Number(mn1%(1n<<32n));function Ud6($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function Fd6($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else Ud6($)}class Dd0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(ln1),this.cbuf=new Uint8Array(G90),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(vm+1)),this.seqLo=Math.floor(Math.random()*Y90);while($++<8&&this.seqHi===vm&&this.seqLo>=Od0);if(this.seqHi===vm&&this.seqLo>=Od0)this.seqLo=0;this.inc=Math.random()*(Nd6-cn1)+cn1|0}setPre(){Fd6(this.cbuf);for(let $=0;$<G90;$++)this.buf[$]=Ld0[this.cbuf[$]%Tw]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let X=ln1-1;X>=G90;X--){let Q=Math.floor($/Tw),G=($-Q*Tw)*Y90+Z,J=Math.floor(G/Tw),K=G-J*Tw;this.buf[X]=Ld0[K],$=Q,Z=J}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=Y90)this.seqLo-=Y90,this.seqHi+=1;if(this.seqHi>vm||this.seqHi===vm&&this.seqLo>=Od0)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()}}in1.NuidImpl=Dd0;in1.nuid=new Dd0});var an1=_((on1)=>{Object.defineProperty(on1,"__esModule",{value:!0});on1.nuid=on1.Nuid=void 0;var tn1=pn1();on1.Nuid=tn1.NuidImpl;on1.nuid=tn1.nuid});var K90=_((J90)=>{Object.defineProperty(J90,"__esModule",{value:!0});J90.nuid=J90.Nuid=void 0;var sn1=an1();Object.defineProperty(J90,"Nuid",{enumerable:!0,get:function(){return sn1.Nuid}});Object.defineProperty(J90,"nuid",{enumerable:!0,get:function(){return sn1.nuid}})});var Rw=_((en1)=>{Object.defineProperty(en1,"__esModule",{value:!0});en1.DEFAULT_HOST=en1.DEFAULT_PORT=en1.Match=void 0;en1.syncIterator=Ed6;en1.createInbox=zd6;var Ld6=K90(),Dd6=dY();en1.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function Ed6($){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 zd6($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw Dd6.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${Ld6.nuid.next()}`}en1.DEFAULT_PORT=4222;en1.DEFAULT_HOST="127.0.0.1"});var xm=_((Qp1)=>{Object.defineProperty(Qp1,"__esModule",{value:!0});Qp1.DataBuffer=void 0;var Zp1=lY();class Xp1{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 Zp1.TE.encode($)}static toAscii($){return Zp1.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}}Qp1.DataBuffer=Xp1});var sD=_((Jp1)=>{Object.defineProperty(Jp1,"__esModule",{value:!0});Jp1.LF=Jp1.CR=Jp1.CRLF=Jp1.CR_LF_LEN=Jp1.CR_LF=void 0;Jp1.setTransportFactory=Md6;Jp1.defaultPort=kd6;Jp1.getUrlParseFn=Vd6;Jp1.newTransport=Sd6;Jp1.getResolveFn=Cd6;Jp1.protoLen=Gp1;Jp1.extractProtocolMessage=_d6;var Rd6=lY(),Id6=Rw(),qd6=xm(),mY;function Md6($){mY=$}function kd6(){return mY!==void 0&&mY.defaultPort!==void 0?mY.defaultPort:Id6.DEFAULT_PORT}function Vd6(){return mY!==void 0&&mY.urlParseFn?mY.urlParseFn:void 0}function Sd6(){if(!mY||typeof mY.factory!=="function")throw Error("transport fn is not set");return mY.factory()}function Cd6(){return mY!==void 0&&mY.dnsResolveFn?mY.dnsResolveFn:void 0}Jp1.CR_LF=`\r
1336
1336
  `;Jp1.CR_LF_LEN=Jp1.CR_LF.length;Jp1.CRLF=qd6.DataBuffer.fromAscii(Jp1.CR_LF);Jp1.CR=new Uint8Array(Jp1.CRLF)[0];Jp1.LF=new Uint8Array(Jp1.CRLF)[1];function Gp1($){for(let Z=0;Z<$.length;Z++){let X=Z+1;if($.byteLength>X&&$[Z]===Jp1.CR&&$[X]===Jp1.LF)return X+1}return 0}function _d6($){let Z=Gp1($);if(Z>0){let Q=new Uint8Array($).slice(0,Z);return Rd6.TD.decode(Q)}return""}});var Ad0=_((Bp1)=>{Object.defineProperty(Bp1,"__esModule",{value:!0});Bp1.ipV4=Up1;Bp1.isIP=dd6;Bp1.parseIP=Fp1;var fm=4,eD=16,W90=48,Np1=57,Wp1=65,cd6=70,Hp1=97,ld6=102,Pd0=16777215;function Up1($,Z,X,Q){let Y=new Uint8Array(eD);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 dd6($){return Fp1($)!==void 0}function Fp1($){for(let Z=0;Z<$.length;Z++)switch($[Z]){case".":return wp1($);case":":return md6($)}return}function wp1($){let Z=new Uint8Array(fm);for(let X=0;X<fm;X++){if($.length===0)return;if(X>0){if($[0]!==".")return;$=$.substring(1)}let{n:Q,c:Y,ok:G}=id6($);if(!G||Q>255)return;$=$.substring(Y),Z[X]=Q}return Up1(Z[0],Z[1],Z[2],Z[3])}function md6($){let Z=new Uint8Array(eD),X=-1;if($.length>=2&&$[0]===":"&&$[1]===":"){if(X=0,$=$.substring(2),$.length===0)return Z}let Q=0;while(Q<eD){let{n:Y,c:G,ok:J}=nd6($);if(!J||Y>65535)return;if(G<$.length&&$[G]==="."){if(X<0&&Q!=eD-fm)return;if(Q+fm>eD)return;let K=wp1($);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+=fm;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<eD){if(X<0)return;let Y=eD-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 id6($){let Z=0,X=0;for(Z=0;Z<$.length&&W90<=$.charCodeAt(Z)&&$.charCodeAt(Z)<=Np1;Z++)if(X=X*10+($.charCodeAt(Z)-W90),X>=Pd0)return{n:Pd0,c:Z,ok:!1};if(Z===0)return{n:0,c:0,ok:!1};return{n:X,c:Z,ok:!0}}function nd6($){let Z=0,X=0;for(X=0;X<$.length;X++){if(W90<=$.charCodeAt(X)&&$.charCodeAt(X)<=Np1)Z*=16,Z+=$.charCodeAt(X)-W90;else if(Hp1<=$.charCodeAt(X)&&$.charCodeAt(X)<=ld6)Z*=16,Z+=$.charCodeAt(X)-Hp1+10;else if(Wp1<=$.charCodeAt(X)&&$.charCodeAt(X)<=cd6)Z*=16,Z+=$.charCodeAt(X)-Wp1+10;else break;if(Z>=Pd0)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 kd0=_((Lp1)=>{Object.defineProperty(Lp1,"__esModule",{value:!0});Lp1.Servers=Lp1.ServerImpl=void 0;Lp1.isIPV4OrHostname=Op1;Lp1.hostPort=Md0;var Td0=sD(),Rd0=OJ(),Id0=Ad0(),rd6=Rw(),ad6=dY();function Op1($){if($.indexOf("[")!==-1||$.indexOf("::")!==-1)return!1;if($.indexOf(".")!==-1)return!0;if($.split(":").length<=2)return!0;return!1}function qd0($){return!Op1($)}function sd6($){let X=$.toUpperCase().indexOf("::FFFF:");if(X!==-1&&$.indexOf(".")!==-1){let Q=$.substring(X+7);return Q=Q.replace("[",""),Q.replace("]","")}return $}function Md0($){if($=$.trim(),$.match(/^(.*:\/\/)(.*)/m))$=$.replace(/^(.*:\/\/)(.*)/gm,"$2");if($=sd6($),qd0($)&&$.indexOf("[")===-1)$=`[${$}]`;let Z=qd0($)?$.match(/(]:)(\d+)/):$.match(/(:)(\d+)/),X=Z&&Z.length===3&&Z[1]&&Z[2]?parseInt(Z[2]):rd6.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 Gb{src;listen;hostname;port;didConnect;reconnects;lastConnect;gossiped;tlsName;resolves;constructor($,Z=!1){this.src=$,this.tlsName="";let X=Md0($);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,Id0.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}://${qd0(Q)?"["+Q+"]":Q}`);G.port=`${this.port}`;let J=new Gb(G.host,!1);J.tlsName=this.hostname,Z.push(J)}}if($.randomize)(0,Rd0.shuffle)(Z);return this.resolves=Z,Z}}Lp1.ServerImpl=Gb;class H90{firstSelect;servers;currentServer;tlsName;randomize;constructor($={}){this.firstSelect=!0,this.servers=[],this.tlsName="",this.randomize=$.randomize||!1}setServers($){if(!Array.isArray($)||$.length===0)throw ad6.InvalidArgumentError.format("servers","cannot be empty");let Z=(0,Td0.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}=Md0(Y),J=X.get(G);if(J)J.gossiped=!1,Q.push(J);else Q.push(new Gb(Y))}if(this.randomize)(0,Rd0.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,Id0.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,Td0.getUrlParseFn)();$=X?X($):$;let Q=new Gb($,Z);if((0,Id0.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 H90.freezeAll(this.servers)}snapshotForHandler(){let $=this.currentServer;if(!$)return this.snapshot();let Z=this.servers.indexOf($);if(Z<=0)return this.snapshot();return H90.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,Td0.getUrlParseFn)(),G=new Map;if($.connect_urls&&$.connect_urls.length>0)$.connect_urls.forEach((K)=>{K=Y?Y(K,Z):K;let W=new Gb(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,Rd0.shuffle)(W),this.servers=K?[K,...W]:W}return{added:X,deleted:Q}}}Lp1.Servers=H90});var N90=_((jp1)=>{Object.defineProperty(jp1,"__esModule",{value:!0});jp1.QueuedIteratorImpl=void 0;var Vd0=OJ(),Ep1=dY();class zp1{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,Vd0.deferred)(),this.yields=[],this.iterClosed=(0,Vd0.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 Ep1.InvalidOperationError("iterator cannot be used when a callback is registered");if(this.yielding)throw new Ep1.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,Vd0.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}}jp1.QueuedIteratorImpl=zp1});var Sd0=_((Rp1)=>{Object.defineProperty(Rp1,"__esModule",{value:!0});Rp1.MuxSubscription=void 0;var Xm6=Rw(),Ap1=dY();class Tp1{baseInbox;reqs;constructor(){this.reqs=new Map}size(){return this.reqs.size}init($){return this.baseInbox=`${(0,Xm6.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 Ap1.NoRespondersError(Q.requestSubject):null;Q.resolver($,Z)}}}}close(){let $=new Ap1.RequestError("connection closed");this.reqs.forEach((Z)=>{Z.resolver($,{})})}}Rp1.MuxSubscription=Tp1});var Cd0=_((Mp1)=>{Object.defineProperty(Mp1,"__esModule",{value:!0});Mp1.Heartbeat=void 0;var Qm6=OJ();class qp1{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,Qm6.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})}}Mp1.Heartbeat=qp1});var xd0=_((_p1)=>{Object.defineProperty(_p1,"__esModule",{value:!0});_p1.DenoBuffer=_p1.MAX_SIZE=_p1.AssertionError=void 0;_p1.assert=Sp1;_p1.concat=Cp1;_p1.append=Gm6;_p1.readAll=Jm6;_p1.writeAll=Km6;var Ym6=lY();class _d0 extends Error{constructor($){super($);this.name="AssertionError"}}_p1.AssertionError=_d0;function Sp1($,Z="Assertion failed."){if(!$)throw new _d0(Z)}var Vp1=32768;_p1.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 Cp1($,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 Gm6($,Z){return Cp1($,Uint8Array.of(Z))}class vd0{_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($){Sp1($<=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(Ym6.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+$>_p1.MAX_SIZE)throw Error("The buffer cannot be grown beyond the maximum size.");else{let Y=new Uint8Array(Math.min(2*Q+$,_p1.MAX_SIZE));U90(this._buf.subarray(this._off),Y),this._buf=Y}return this._off=0,this._reslice(Math.min(Z+$,_p1.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(Vp1);while(!0){let Q=this.capacity-this.length<Vp1,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}}}_p1.DenoBuffer=vd0;function Jm6($){let Z=new vd0;return Z.readFrom($),Z.bytes()}function Km6($,Z){let X=0;while(X<Z.length)X+=$.write(Z.subarray(X))}});var yd0=_((yp1)=>{Object.defineProperty(yp1,"__esModule",{value:!0});yp1.cc=yp1.State=yp1.Parser=yp1.Kind=void 0;yp1.describe=Bm6;var fd0=xd0(),bd0=lY();yp1.Kind={OK:0,ERR:1,MSG:2,INFO:3,PING:4,PONG:5};function Bm6($){let Z,X="";switch($.kind){case yp1.Kind.MSG:Z="MSG";break;case yp1.Kind.OK:Z="OK";break;case yp1.Kind.ERR:Z="ERR",X=bd0.TD.decode($.data);break;case yp1.Kind.PING:Z="PING";break;case yp1.Kind.PONG:Z="PONG";break;case yp1.Kind.INFO:Z="INFO",X=bd0.TD.decode($.data)}return`${Z}: ${X}`}function xp1(){let $={};return $.sid=-1,$.hdr=-1,$.size=-1,$}var fp1=48,Om6=57,Jb=67108864;class bp1{dispatcher;state;as;drop;hdr;ma;argBuf;msgBuf;constructor($){this.dispatcher=$,this.state=yp1.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 yp1.State.OP_START:switch(X){case yp1.cc.M:case yp1.cc.m:this.state=yp1.State.OP_M,this.hdr=-1,this.ma=xp1();break;case yp1.cc.H:case yp1.cc.h:this.state=yp1.State.OP_H,this.hdr=0,this.ma=xp1();break;case yp1.cc.P:case yp1.cc.p:this.state=yp1.State.OP_P;break;case yp1.cc.PLUS:this.state=yp1.State.OP_PLUS;break;case yp1.cc.MINUS:this.state=yp1.State.OP_MINUS;break;case yp1.cc.I:case yp1.cc.i:this.state=yp1.State.OP_I;break;default:throw this.fail($.subarray(Z))}break;case yp1.State.OP_H:switch(X){case yp1.cc.M:case yp1.cc.m:this.state=yp1.State.OP_M;break;default:throw this.fail($.subarray(Z))}break;case yp1.State.OP_M:switch(X){case yp1.cc.S:case yp1.cc.s:this.state=yp1.State.OP_MS;break;default:throw this.fail($.subarray(Z))}break;case yp1.State.OP_MS:switch(X){case yp1.cc.G:case yp1.cc.g:this.state=yp1.State.OP_MSG;break;default:throw this.fail($.subarray(Z))}break;case yp1.State.OP_MSG:switch(X){case yp1.cc.SPACE:case yp1.cc.TAB:this.state=yp1.State.OP_MSG_SPC;break;default:throw this.fail($.subarray(Z))}break;case yp1.State.OP_MSG_SPC:switch(X){case yp1.cc.SPACE:case yp1.cc.TAB:continue;default:this.state=yp1.State.MSG_ARG,this.as=Z}break;case yp1.State.MSG_ARG:switch(X){case yp1.cc.CR:this.drop=1;break;case yp1.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=yp1.State.MSG_PAYLOAD,Z=this.as+this.ma.size-1;break}default:if(this.argBuf)this.argBuf.writeByte(X)}break;case yp1.State.MSG_PAYLOAD:if(this.msgBuf)if(this.msgBuf.length>=this.ma.size){let Q=this.msgBuf.bytes({copy:!1});this.dispatcher.push({kind:yp1.Kind.MSG,msg:this.ma,data:Q}),this.argBuf=void 0,this.msgBuf=void 0,this.state=yp1.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:yp1.Kind.MSG,msg:this.ma,data:$.subarray(this.as,Z)}),this.argBuf=void 0,this.msgBuf=void 0,this.state=yp1.State.MSG_END;break;case yp1.State.MSG_END:switch(X){case yp1.cc.NL:this.drop=0,this.as=Z+1,this.state=yp1.State.OP_START;break;default:continue}break;case yp1.State.OP_PLUS:switch(X){case yp1.cc.O:case yp1.cc.o:this.state=yp1.State.OP_PLUS_O;break;default:throw this.fail($.subarray(Z))}break;case yp1.State.OP_PLUS_O:switch(X){case yp1.cc.K:case yp1.cc.k:this.state=yp1.State.OP_PLUS_OK;break;default:throw this.fail($.subarray(Z))}break;case yp1.State.OP_PLUS_OK:switch(X){case yp1.cc.NL:this.dispatcher.push({kind:yp1.Kind.OK}),this.drop=0,this.state=yp1.State.OP_START;break}break;case yp1.State.OP_MINUS:switch(X){case yp1.cc.E:case yp1.cc.e:this.state=yp1.State.OP_MINUS_E;break;default:throw this.fail($.subarray(Z))}break;case yp1.State.OP_MINUS_E:switch(X){case yp1.cc.R:case yp1.cc.r:this.state=yp1.State.OP_MINUS_ER;break;default:throw this.fail($.subarray(Z))}break;case yp1.State.OP_MINUS_ER:switch(X){case yp1.cc.R:case yp1.cc.r:this.state=yp1.State.OP_MINUS_ERR;break;default:throw this.fail($.subarray(Z))}break;case yp1.State.OP_MINUS_ERR:switch(X){case yp1.cc.SPACE:case yp1.cc.TAB:this.state=yp1.State.OP_MINUS_ERR_SPC;break;default:throw this.fail($.subarray(Z))}break;case yp1.State.OP_MINUS_ERR_SPC:switch(X){case yp1.cc.SPACE:case yp1.cc.TAB:continue;default:this.state=yp1.State.MINUS_ERR_ARG,this.as=Z}break;case yp1.State.MINUS_ERR_ARG:switch(X){case yp1.cc.CR:this.drop=1;break;case yp1.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:yp1.Kind.ERR,data:Q}),this.drop=0,this.as=Z+1,this.state=yp1.State.OP_START;break}default:if(this.argBuf)this.argBuf.write(Uint8Array.of(X))}break;case yp1.State.OP_P:switch(X){case yp1.cc.I:case yp1.cc.i:this.state=yp1.State.OP_PI;break;case yp1.cc.O:case yp1.cc.o:this.state=yp1.State.OP_PO;break;default:throw this.fail($.subarray(Z))}break;case yp1.State.OP_PO:switch(X){case yp1.cc.N:case yp1.cc.n:this.state=yp1.State.OP_PON;break;default:throw this.fail($.subarray(Z))}break;case yp1.State.OP_PON:switch(X){case yp1.cc.G:case yp1.cc.g:this.state=yp1.State.OP_PONG;break;default:throw this.fail($.subarray(Z))}break;case yp1.State.OP_PONG:switch(X){case yp1.cc.NL:this.dispatcher.push({kind:yp1.Kind.PONG}),this.drop=0,this.state=yp1.State.OP_START;break}break;case yp1.State.OP_PI:switch(X){case yp1.cc.N:case yp1.cc.n:this.state=yp1.State.OP_PIN;break;default:throw this.fail($.subarray(Z))}break;case yp1.State.OP_PIN:switch(X){case yp1.cc.G:case yp1.cc.g:this.state=yp1.State.OP_PING;break;default:throw this.fail($.subarray(Z))}break;case yp1.State.OP_PING:switch(X){case yp1.cc.NL:this.dispatcher.push({kind:yp1.Kind.PING}),this.drop=0,this.state=yp1.State.OP_START;break}break;case yp1.State.OP_I:switch(X){case yp1.cc.N:case yp1.cc.n:this.state=yp1.State.OP_IN;break;default:throw this.fail($.subarray(Z))}break;case yp1.State.OP_IN:switch(X){case yp1.cc.F:case yp1.cc.f:this.state=yp1.State.OP_INF;break;default:throw this.fail($.subarray(Z))}break;case yp1.State.OP_INF:switch(X){case yp1.cc.O:case yp1.cc.o:this.state=yp1.State.OP_INFO;break;default:throw this.fail($.subarray(Z))}break;case yp1.State.OP_INFO:switch(X){case yp1.cc.SPACE:case yp1.cc.TAB:this.state=yp1.State.OP_INFO_SPC;break;default:throw this.fail($.subarray(Z))}break;case yp1.State.OP_INFO_SPC:switch(X){case yp1.cc.SPACE:case yp1.cc.TAB:continue;default:this.state=yp1.State.INFO_ARG,this.as=Z}break;case yp1.State.INFO_ARG:switch(X){case yp1.cc.CR:this.drop=1;break;case yp1.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:yp1.Kind.INFO,data:Q}),this.drop=0,this.as=Z+1,this.state=yp1.State.OP_START;break}default:if(this.argBuf)this.argBuf.writeByte(X)}break;default:throw this.fail($.subarray(Z))}}if((this.state===yp1.State.MSG_ARG||this.state===yp1.State.MINUS_ERR_ARG||this.state===yp1.State.INFO_ARG)&&!this.argBuf)this.argBuf=new fd0.DenoBuffer($.subarray(this.as,Z-this.drop));if(this.state===yp1.State.MSG_PAYLOAD&&!this.msgBuf){if(!this.argBuf)this.cloneMsgArg();this.msgBuf=new fd0.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 fd0.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 yp1.cc.SPACE:case yp1.cc.TAB:case yp1.cc.CR:case yp1.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],Jb);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],Jb);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}: ${bd0.TD.decode($)}`)}processHeaderMsgArgs($){let Z=[],X=-1;for(let Q=0;Q<$.length;Q++)switch($[Q]){case yp1.cc.SPACE:case yp1.cc.TAB:case yp1.cc.CR:case yp1.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],Jb),this.ma.size=this.protoParseInt(Z[3],Jb);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],Jb),this.ma.size=this.protoParseInt(Z[4],Jb);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]<fp1||$[Q]>Om6)return-1;X=X*10+($[Q]-fp1)}return Z!==void 0&&X>Z?-1:X}}yp1.Parser=bp1;yp1.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};yp1.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 B90=_((hp1)=>{Object.defineProperty(hp1,"__esModule",{value:!0});hp1.MsgHdrsImpl=void 0;hp1.canonicalMIMEHeaderKey=hd0;hp1.headers=Em6;var gp1=lY(),LJ=Rw(),w90=dY();function hd0($){let N=!0,U=Array($.length);for(let F=0;F<$.length;F++){let w=$.charCodeAt(F);if(w===58||w<33||w>126)throw w90.InvalidArgumentError.format("header",`'${$[F]}' is not a valid character in a header name`);if(N&&97<=w&&w<=122)w-=32;else if(!N&&65<=w&&w<=90)w+=32;U[F]=w,N=w==45}return String.fromCharCode(...U)}function Em6($=0,Z=""){if($===0&&Z!=="")throw w90.InvalidArgumentError.format("code","is required");else if($>0&&Z==="")throw w90.InvalidArgumentError.format("description","is required");return new Kb($,Z)}var gd0="NATS/1.0";class Kb{_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 Kb,Q=gp1.TD.decode($).split(`\r
1337
1337
  `),Y=Q[0];if(Y!==gd0){let G=Y.replace(gd0,"").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 $=gd0;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.`,l_$;var m_$=B(()=>{k4();mw();r81();R86=a81.object({requiresReview:a81.boolean().describe("true if the changes should go through pull-request review"),reason:a81.string().describe("One short sentence explaining the decision (max ~120 chars)")});l_$={requiresReview:!1,reason:""}});function k86($){if(!$||$.includes(".."))return!1;return M86.test($)}function i_$($){let Z=typeof $.__resolveType==="string"?$.__resolveType:null;if(!Z||!k86(Z))return null;let{__resolveType:X,...Q}=$;return{resolveType:Z,payload:Q}}function n_$($,Z){return`${$.replace(/\/+$/,"")}/deco/invoke/${Z}`}var M86;var p_$=B(()=>{M86=/^[\w./@-]+$/});function s81($){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 t_$($,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 o_$($,Z,X,Q){if(!Q.connectionId)throw new ig("Push requires a connected GitHub account. Connect mcp-github for this project and restart the sandbox.");let G=$.organization?.id;if(!G)throw new ig(d7);await Rw({ctx:$,connectionId:Q.connectionId,organizationId:G,forceRefresh:!0,onLegacyMintError:(N)=>{let F=N instanceof Error?N.message:d7;throw new ig(F)}});let{cloneUrl:Y,gitUserName:J,gitUserEmail:W}=await Iw(Q.connectionId,Q.owner,Q.name,$.db,$.vault),K=Bj0($),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 lw(H,S86).catch(()=>H.statusText);throw Error(`Failed to refresh sandbox git credentials (${H.status}): ${N}`)}}var S86=10485760,ig;var r_$=B(()=>{YN();d81();_i();rf();ig=class ig extends Error{constructor($){super($);this.name="GitPushAuthError"}}});function C86($){let Z=$.startsWith("thread:")?$.slice(7):$;if(!Z||Z.length>255||Z.includes("..")||Z.startsWith("/")||Z.endsWith("/")||Z.endsWith(".lock")||!V86.test(Z))throw Error(`Invalid branch name: ${$}`)}function lC($){return AbortSignal.any([$.req.raw.signal,AbortSignal.timeout(v86)])}function dC($){let{runner:Z}=$.get("vmClaim");if(!Z)return $.json({error:"No sandbox runner configured"},503);return Z}function e81($,Z){let Q=(Dj0.get($)??Promise.resolve()).catch(()=>{}).then(Z),G=Q.catch(()=>{});return Dj0.set($,G),G.finally(()=>{if(Dj0.get($)===G)Dj0.delete($)}),Q}async function fZ($,Z,X){let Q=dC($);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",...uG}})}}let O=await w.text(),D=X?.redactRepoDirUnlessDesktop&&Q.kind!=="user-desktop"?f86(O):O,L=w.headers.get("content-type")??"application/json";return new Response(D,{status:w.status,headers:{"content-type":L,...uG}})};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 f86($){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 Lj0($,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){let W=`Daemon error (${Y.status})`;try{W=JSON.parse(J).error??W}catch{}throw Error(W)}return JSON.parse(J)}function x86($){return e_$.includes($)}var V86,a_$=524288,_86=65536,v86=1e4,s_$=2000,b86,Dj0,uG,e_$,$v$=()=>{let $=new B1;return $.use("/:virtualMcpId/:branch/*",b86),$.post("/:virtualMcpId/:branch/write",(Z)=>fZ(Z,"/_sandbox/write",{forwardJsonBody:!0,signal:lC(Z)})),$.post("/:virtualMcpId/:branch/unlink",(Z)=>fZ(Z,"/_sandbox/unlink",{forwardJsonBody:!0,signal:lC(Z)})),$.post("/:virtualMcpId/:branch/mkdir",(Z)=>fZ(Z,"/_sandbox/mkdir",{forwardJsonBody:!0,signal:lC(Z)})),$.post("/:virtualMcpId/:branch/rename",(Z)=>fZ(Z,"/_sandbox/rename",{forwardJsonBody:!0,signal:lC(Z)})),$.post("/:virtualMcpId/:branch/read",(Z)=>fZ(Z,"/_sandbox/read",{forwardJsonBody:!0,signal:lC(Z)})),$.post("/:virtualMcpId/:branch/glob",(Z)=>fZ(Z,"/_sandbox/glob",{forwardJsonBody:!0,signal:lC(Z)})),$.post("/:virtualMcpId/:branch/grep",(Z)=>fZ(Z,"/_sandbox/grep",{forwardJsonBody:!0,signal:lC(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||!x86(X))return Z.json({error:`step must be one of: ${e_$.join(", ")}`},400);if(X==="start"){let Q=Z.get("vmClaim");if(Q.runner){let G=t(Z.var.studioContext),Y=iF0(Q.virtualMcpMetadata);try{await pF0({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 QF(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 x_$(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(s_$)])})),$.post("/:virtualMcpId/:branch/git/status",(Z)=>fZ(Z,"/_sandbox/git/status",{map404to410:!0,signal:AbortSignal.any([Z.req.raw.signal,AbortSignal.timeout(s_$)])})),$.post("/:virtualMcpId/:branch/git/diff",(Z)=>fZ(Z,"/_sandbox/git/diff",{forwardJsonBody:!0,map404to410:!0})),$.post("/:virtualMcpId/:branch/git/publish",async(Z)=>{let X=dC(Z);if(X instanceof Response)return X;let{claimName:Q,virtualMcpMetadata:G,connectionIds:Y}=Z.get("vmClaim"),J=Z.var.studioContext;return e81(Q,async()=>{try{await m81(J,X,Q);let W=t_$(G,Y);if(W)await o_$(J,X,Q,W)}catch(W){if(W instanceof ig)return Z.json({error:W.message},403,uG);let K=W instanceof Error?W.message:String(W);return Z.json({error:K},502,uG)}return fZ(Z,"/_sandbox/git/publish",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/discard",(Z)=>{let{claimName:X}=Z.get("vmClaim");return e81(X,()=>fZ(Z,"/_sandbox/git/discard",{forwardJsonBody:!0,map404to410:!0}))}),$.post("/:virtualMcpId/:branch/git/rebase",async(Z)=>{let X=dC(Z);if(X instanceof Response)return X;let{claimName:Q}=Z.get("vmClaim"),G=Z.var.studioContext;return e81(Q,async()=>{try{await m81(G,X,Q)}catch(Y){let J=Y instanceof Error?Y.message:String(Y);return Z.json({error:J},502,uG)}return fZ(Z,"/_sandbox/git/rebase",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/suggest-commit",HZ({maxSize:a_$,onError:(Z)=>Z.json({error:"Payload too large"},413,uG)}),async(Z)=>{let X=dC(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]=p81(K)&&N?[K,H]:await Promise.all([Lj0(X,Q,"/_sandbox/git/status","GET",{userId:G,projectRef:Y}),Lj0(X,Q,"/_sandbox/git/diff","GET",{userId:G,projectRef:Y})]),w=await c_$(J,F,U);return Z.json(w,200,uG)}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,uG);return Z.json({error:K},502,uG)}}),$.post("/:virtualMcpId/:branch/git/judge-review",HZ({maxSize:a_$,onError:(Z)=>Z.json({error:"Payload too large"},413,uG)}),async(Z)=>{let X=dC(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]=p81(K)&&N?[K,H]:await Promise.all([Lj0(X,Q,"/_sandbox/git/status","GET",{userId:G,projectRef:Y}),Lj0(X,Q,"/_sandbox/git/diff","GET",{userId:G,projectRef:Y})]),w=await d_$(J,F,U,typeof W.language==="string"?W.language:void 0);return Z.json(w,200,uG)}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,uG);return Z.json({error:K},502,uG)}}),$.get("/:virtualMcpId/:branch/preview-fetch",async(Z)=>{let X=dC(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=s81(`${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:_86,onError:(Z)=>Z.json({error:"Payload too large"},413)}),async(Z)=>{let X=dC(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=i_$(Y);if(!J)return Z.json({error:"Invalid or missing __resolveType"},400);let W=n_$(G,J.resolveType),K=s81(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 Zv$=B(()=>{y8();dO();mg();__$();GN();b_$();D3();gw();f_$();y_$();Md0();Vi();r81();m_$();p_$();r_$();V86=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;b86=C_$(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=t(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{C86(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=am({orgId:G.id,virtualMcpId:Y,branch:J}),H=await ON(X,J,Q),N=v_$({userId:H,projectRef:K}),F=W.metadata??null,U;try{U=(await uX(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()});Dj0=new Map;uG={"Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache"};e_$=["clone","install","start"]});var Xv$=($)=>{let Z=new B1;if(Z.use("*",vC),Z.route("/",_E0()),Z.route("/",BS$()),Z.route("/",E_$()),Z.route("/",B_$()),Z.route("/",Uj0()),Z.route("/tools",I_$()),Z.route("/",A_$()),Z.route("/",aC$({kvStorage:$.kvStorage})),Z.route("/",oC$()),Z.route("/fs",K_$({getConnection:$.getNatsConnection})),Z.route("/sandbox",$v$()),Z.route("/",U_$()),Z.route("/deco-sites",bE0()),Z.route("/sso",IE0()),Z.route("/",wj0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",WS$()),$.mountDevAssets)Z.route("/dev-assets",fE0({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("/",XM$()),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",N_$()),Z.route("/mcp",tw0()),Z.route("/mcp/self",Fj0()),Z.route("/mcp",aw0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var Qv$=B(()=>{y8();N$1();KS$();B$1();xE0();Jo();K$1();rC$();sC$();H_$();En();e11();sw0();x81();F_$();w_$();D_$();j_$();T_$();g81();q_$();h81();ow0();Zv$()});function g86($){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 h86($,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(y86)});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 y86=1e4,u86=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},Gv$=()=>{let $=new B1;return $.use("*",u86),$.get("/",async(Z)=>{let X=c0(),Q=X.decoSupabaseUrl,G=X.decoSupabaseServiceKey;if(!Q||!G)return Z.json({apps:[]});try{let Y=await h86(Q,G);return Z.json({apps:g86(Y)})}catch(Y){return console.error("[deco-apps] GET error:",Y),Z.json({error:"Failed to fetch apps"},502)}}),$};var Yv$=B(()=>{y8();S$()});import{z as M1}from"zod";function hK($,Z="invalid_request_error",X=null,Q=null){return{error:{message:$,type:Z,param:X,code:Q}}}function r86($){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 a86($,Z,X){try{return JSON.parse($)}catch{throw new Kv$(`Invalid JSON in tool call arguments for function '${X}' (tool_call_id: ${Z}): ${$}`)}}function s86($){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:a86(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 e86($){let Z=$.map((X)=>{let Q=X.function.parameters?zG(X.function.parameters):zG({type:"object",properties:{}});return[X.function.name,_$({description:X.function.description,inputSchema:Q})]});return Object.fromEntries(Z)}function $46($){if(!$)return;return{openai:{response_format:$}}}function Z46(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function Jv$($,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 Wv$($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var c86=256,l86,d86,m86,i86,n86,p86,t86,o86,Kv$,Hv$,Nv$;var Fv$=B(()=>{k4();y8();mg();xN();l86=M1.object({type:M1.literal("function"),function:M1.object({name:M1.string(),description:M1.string().optional(),parameters:M1.record(M1.string(),M1.unknown()).optional()})}),d86=M1.object({id:M1.string(),type:M1.literal("function"),function:M1.object({name:M1.string(),arguments:M1.string()})}),m86=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(d86).optional()}),M1.object({role:M1.literal("tool"),content:M1.string(),tool_call_id:M1.string()})]),i86=M1.object({type:M1.literal("text")}),n86=M1.object({type:M1.literal("json_object")}),p86=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()})}),t86=M1.union([i86,n86,p86]),o86=M1.object({model:M1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:M1.array(m86),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(l86).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:t86.optional(),user:M1.string().optional()});Kv$=class Kv$ extends Error{constructor($){super($);this.name="MessageConversionError"}};Hv$=new B1;Hv$.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),X=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(hK("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(hK("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(hK("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Q=await $.req.json(),G=o86.safeParse(Q);if(!G.success){let L=G.error.issues[0]??{message:"Invalid request",path:[]};return $.json(hK(`Invalid request: ${L.message}`,"invalid_request_error",L.path.length>0?L.path.join("."):null),400)}let Y=G.data,J=r86(Y.model);if(!J)return $.json(hK("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)=>XD(j.providerId));if(!E)return $.json(hK("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(hK(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let N=H.aiSdk.languageModel(K),F=s86(Y.messages),U=Y.tools?e86(Y.tools):void 0,w=$46(Y.response_format),O=Z46(),D=Math.floor(Date.now()/1000);if(Y.stream)return QF($,async(L)=>{let E=Jv$(N,F,U,Y,w,$.req.raw.signal);try{let j=Aw(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>=c86)await M()}else if(k.type==="tool-call"){await M();let q=A++;await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:D,model: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:Wv$(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=Jv$(N,F,U,Y,w,$.req.raw.signal),E=await zw(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:Wv$(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(hK("Request aborted","invalid_request_error"),400);if(G.name==="MessageConversionError")return $.json(hK(G.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",G.message,G.stack),$.json(hK(G.message,"server_error"),500)}});Nv$=Hv$});var wv$;var Uv$=B(()=>{wv$={name:"decocms",version:"4.200.2",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@nats-io/jwt":"0.0.10-5","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});function G46(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??Q46}}var Ov$,Q46="https://ph.studio.decocms.com",Bv$;var Dv$=B(()=>{y8();bx0();qV();jZ();S$();t11();Uv$();Ov$=new B1;Ov$.get("/",($)=>{let Z={version:wv$.version,theme:sh1(),...nD().logo&&{logo:nD().logo},...HK()&&{internalUrl:qq1()},...c0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!c0().firecrawlApiKey,auth:Ak$(),posthog:G46(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:!HK()&&c0().sandboxProviderKind==="agent-sandbox"}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});Bv$=Ov$});function ng($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function $41($){return(ng($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((X)=>X.charAt(0).toUpperCase()+X.slice(1)).join(" ")}function Ev$($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(ng($))}&sz=${Z}`}function Lv$($,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 jv$($){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()?Lv$(`${G.trim().replace(/\s+/g," ")} \u2014 ${J}`,200):Lv$(`How does ${X} really perform? ${J}`,200);return{title:Y,description:W}}import{z as l0}from"zod";var mC,Y46,J46,W46,K46,zv$;var Pv$=B(()=>{mC=l0.enum(["good","bad","neutral"]),Y46=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:mC.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 $})),J46=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(Y46)),W46={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()},K46=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:mC.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:mC.optional()}),l0.object({template:l0.literal("stats"),stats:l0.array(l0.object({value:l0.coerce.string(),label:l0.coerce.string(),tone:mC.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:mC.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(J46).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:mC.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:mC.optional()})).min(1)})]),zv$=l0.object({...W46,template:K46})});function Ej0($){let Z=[],X=[...$.sections].sort((G,Y)=>G.position-Y.position).map((G)=>{let Y=zv$.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 Z41=B(()=>{Pv$()});import{join as Av$}from"path";async function N46($){try{let Z=await fetch(`${vW({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(H46)});if(!Z.ok)return null;let X=await Z.json(),{deck:Q}=Ej0(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()||$41($),score:Q.meta.scores?.cover??J?.score?.value,verdict:G?.annotation?.trim()||G?.headline?.trim()||void 0}}catch{return null}}function cG($){return $.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;")}function F46($,Z){let X=ng($),Q=Z?.brand?.trim()||$41(X),G=Ev$(X,128),J=`${(c0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(X)}`,{title:W,description:K}=jv$({brand:Q,domain:X,score:Z?.score,verdict:Z?.verdict}),H=`${J}/og.png`,N=`${Q} commerce report by decocms`;return[`<title>${cG(W)}</title>`,`<meta name="description" content="${cG(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="${cG(W)}" />`,`<meta property="og:description" content="${cG(K)}" />`,`<meta property="og:url" content="${cG(J)}" />`,`<meta property="og:image" content="${cG(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${cG(N)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${cG(W)}" />`,`<meta name="twitter:description" content="${cG(K)}" />`,`<meta name="twitter:image" content="${cG(H)}" />`,`<meta name="twitter:image:alt" content="${cG(N)}" />`,`<link rel="canonical" href="${cG(J)}" />`,`<link rel="icon" href="${cG(G)}" sizes="any" />`].join(`
2729
+ Respond with the structured verdict and a short reason.`,l_$;var m_$=B(()=>{k4();mw();r81();R86=a81.object({requiresReview:a81.boolean().describe("true if the changes should go through pull-request review"),reason:a81.string().describe("One short sentence explaining the decision (max ~120 chars)")});l_$={requiresReview:!1,reason:""}});function k86($){if(!$||$.includes(".."))return!1;return M86.test($)}function i_$($){let Z=typeof $.__resolveType==="string"?$.__resolveType:null;if(!Z||!k86(Z))return null;let{__resolveType:X,...Q}=$;return{resolveType:Z,payload:Q}}function n_$($,Z){return`${$.replace(/\/+$/,"")}/deco/invoke/${Z}`}var M86;var p_$=B(()=>{M86=/^[\w./@-]+$/});function s81($){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 t_$($,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 o_$($,Z,X,Q){if(!Q.connectionId)throw new ig("Push requires a connected GitHub account. Connect mcp-github for this project and restart the sandbox.");let G=$.organization?.id;if(!G)throw new ig(d7);await Rw({ctx:$,connectionId:Q.connectionId,organizationId:G,forceRefresh:!0,onLegacyMintError:(N)=>{let F=N instanceof Error?N.message:d7;throw new ig(F)}});let{cloneUrl:Y,gitUserName:J,gitUserEmail:W}=await Iw(Q.connectionId,Q.owner,Q.name,$.db,$.vault),K=Bj0($),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 lw(H,S86).catch(()=>H.statusText);throw Error(`Failed to refresh sandbox git credentials (${H.status}): ${N}`)}}var S86=10485760,ig;var r_$=B(()=>{YN();d81();_i();rf();ig=class ig extends Error{constructor($){super($);this.name="GitPushAuthError"}}});function C86($){let Z=$.startsWith("thread:")?$.slice(7):$;if(!Z||Z.length>255||Z.includes("..")||Z.startsWith("/")||Z.endsWith("/")||Z.endsWith(".lock")||!V86.test(Z))throw Error(`Invalid branch name: ${$}`)}function lC($){return AbortSignal.any([$.req.raw.signal,AbortSignal.timeout(v86)])}function dC($){let{runner:Z}=$.get("vmClaim");if(!Z)return $.json({error:"No sandbox runner configured"},503);return Z}function e81($,Z){let Q=(Dj0.get($)??Promise.resolve()).catch(()=>{}).then(Z),G=Q.catch(()=>{});return Dj0.set($,G),G.finally(()=>{if(Dj0.get($)===G)Dj0.delete($)}),Q}async function fZ($,Z,X){let Q=dC($);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",...uG}})}}let O=await w.text(),D=X?.redactRepoDirUnlessDesktop&&Q.kind!=="user-desktop"?f86(O):O,L=w.headers.get("content-type")??"application/json";return new Response(D,{status:w.status,headers:{"content-type":L,...uG}})};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 f86($){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 Lj0($,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){let W=`Daemon error (${Y.status})`;try{W=JSON.parse(J).error??W}catch{}throw Error(W)}return JSON.parse(J)}function x86($){return e_$.includes($)}var V86,a_$=524288,_86=65536,v86=1e4,s_$=2000,b86,Dj0,uG,e_$,$v$=()=>{let $=new B1;return $.use("/:virtualMcpId/:branch/*",b86),$.post("/:virtualMcpId/:branch/write",(Z)=>fZ(Z,"/_sandbox/write",{forwardJsonBody:!0,signal:lC(Z)})),$.post("/:virtualMcpId/:branch/unlink",(Z)=>fZ(Z,"/_sandbox/unlink",{forwardJsonBody:!0,signal:lC(Z)})),$.post("/:virtualMcpId/:branch/mkdir",(Z)=>fZ(Z,"/_sandbox/mkdir",{forwardJsonBody:!0,signal:lC(Z)})),$.post("/:virtualMcpId/:branch/rename",(Z)=>fZ(Z,"/_sandbox/rename",{forwardJsonBody:!0,signal:lC(Z)})),$.post("/:virtualMcpId/:branch/read",(Z)=>fZ(Z,"/_sandbox/read",{forwardJsonBody:!0,signal:lC(Z)})),$.post("/:virtualMcpId/:branch/glob",(Z)=>fZ(Z,"/_sandbox/glob",{forwardJsonBody:!0,signal:lC(Z)})),$.post("/:virtualMcpId/:branch/grep",(Z)=>fZ(Z,"/_sandbox/grep",{forwardJsonBody:!0,signal:lC(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||!x86(X))return Z.json({error:`step must be one of: ${e_$.join(", ")}`},400);if(X==="start"){let Q=Z.get("vmClaim");if(Q.runner){let G=t(Z.var.studioContext),Y=iF0(Q.virtualMcpMetadata);try{await pF0({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 QF(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 x_$(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(s_$)])})),$.post("/:virtualMcpId/:branch/git/status",(Z)=>fZ(Z,"/_sandbox/git/status",{map404to410:!0,signal:AbortSignal.any([Z.req.raw.signal,AbortSignal.timeout(s_$)])})),$.post("/:virtualMcpId/:branch/git/diff",(Z)=>fZ(Z,"/_sandbox/git/diff",{forwardJsonBody:!0,map404to410:!0})),$.post("/:virtualMcpId/:branch/git/publish",async(Z)=>{let X=dC(Z);if(X instanceof Response)return X;let{claimName:Q,virtualMcpMetadata:G,connectionIds:Y}=Z.get("vmClaim"),J=Z.var.studioContext;return e81(Q,async()=>{try{await m81(J,X,Q);let W=t_$(G,Y);if(W)await o_$(J,X,Q,W)}catch(W){if(W instanceof ig)return Z.json({error:W.message},403,uG);let K=W instanceof Error?W.message:String(W);return Z.json({error:K},502,uG)}return fZ(Z,"/_sandbox/git/publish",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/discard",(Z)=>{let{claimName:X}=Z.get("vmClaim");return e81(X,()=>fZ(Z,"/_sandbox/git/discard",{forwardJsonBody:!0,map404to410:!0}))}),$.post("/:virtualMcpId/:branch/git/rebase",async(Z)=>{let X=dC(Z);if(X instanceof Response)return X;let{claimName:Q}=Z.get("vmClaim"),G=Z.var.studioContext;return e81(Q,async()=>{try{await m81(G,X,Q)}catch(Y){let J=Y instanceof Error?Y.message:String(Y);return Z.json({error:J},502,uG)}return fZ(Z,"/_sandbox/git/rebase",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/suggest-commit",HZ({maxSize:a_$,onError:(Z)=>Z.json({error:"Payload too large"},413,uG)}),async(Z)=>{let X=dC(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]=p81(K)&&N?[K,H]:await Promise.all([Lj0(X,Q,"/_sandbox/git/status","GET",{userId:G,projectRef:Y}),Lj0(X,Q,"/_sandbox/git/diff","GET",{userId:G,projectRef:Y})]),w=await c_$(J,F,U);return Z.json(w,200,uG)}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,uG);return Z.json({error:K},502,uG)}}),$.post("/:virtualMcpId/:branch/git/judge-review",HZ({maxSize:a_$,onError:(Z)=>Z.json({error:"Payload too large"},413,uG)}),async(Z)=>{let X=dC(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]=p81(K)&&N?[K,H]:await Promise.all([Lj0(X,Q,"/_sandbox/git/status","GET",{userId:G,projectRef:Y}),Lj0(X,Q,"/_sandbox/git/diff","GET",{userId:G,projectRef:Y})]),w=await d_$(J,F,U,typeof W.language==="string"?W.language:void 0);return Z.json(w,200,uG)}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,uG);return Z.json({error:K},502,uG)}}),$.get("/:virtualMcpId/:branch/preview-fetch",async(Z)=>{let X=dC(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=s81(`${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:_86,onError:(Z)=>Z.json({error:"Payload too large"},413)}),async(Z)=>{let X=dC(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=i_$(Y);if(!J)return Z.json({error:"Invalid or missing __resolveType"},400);let W=n_$(G,J.resolveType),K=s81(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 Zv$=B(()=>{y8();dO();mg();__$();GN();b_$();D3();gw();f_$();y_$();Md0();Vi();r81();m_$();p_$();r_$();V86=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;b86=C_$(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=t(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{C86(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=am({orgId:G.id,virtualMcpId:Y,branch:J}),H=await ON(X,J,Q),N=v_$({userId:H,projectRef:K}),F=W.metadata??null,U;try{U=(await uX(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()});Dj0=new Map;uG={"Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache"};e_$=["clone","install","start"]});var Xv$=($)=>{let Z=new B1;if(Z.use("*",vC),Z.route("/",_E0()),Z.route("/",BS$()),Z.route("/",E_$()),Z.route("/",B_$()),Z.route("/",Uj0()),Z.route("/tools",I_$()),Z.route("/",A_$()),Z.route("/",aC$({kvStorage:$.kvStorage})),Z.route("/",oC$()),Z.route("/fs",K_$({getConnection:$.getNatsConnection})),Z.route("/sandbox",$v$()),Z.route("/",U_$()),Z.route("/deco-sites",bE0()),Z.route("/sso",IE0()),Z.route("/",wj0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",WS$()),$.mountDevAssets)Z.route("/dev-assets",fE0({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("/",XM$()),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",N_$()),Z.route("/mcp",tw0()),Z.route("/mcp/self",Fj0()),Z.route("/mcp",aw0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var Qv$=B(()=>{y8();N$1();KS$();B$1();xE0();Jo();K$1();rC$();sC$();H_$();En();e11();sw0();x81();F_$();w_$();D_$();j_$();T_$();g81();q_$();h81();ow0();Zv$()});function g86($){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 h86($,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(y86)});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 y86=1e4,u86=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},Gv$=()=>{let $=new B1;return $.use("*",u86),$.get("/",async(Z)=>{let X=c0(),Q=X.decoSupabaseUrl,G=X.decoSupabaseServiceKey;if(!Q||!G)return Z.json({apps:[]});try{let Y=await h86(Q,G);return Z.json({apps:g86(Y)})}catch(Y){return console.error("[deco-apps] GET error:",Y),Z.json({error:"Failed to fetch apps"},502)}}),$};var Yv$=B(()=>{y8();S$()});import{z as M1}from"zod";function hK($,Z="invalid_request_error",X=null,Q=null){return{error:{message:$,type:Z,param:X,code:Q}}}function r86($){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 a86($,Z,X){try{return JSON.parse($)}catch{throw new Kv$(`Invalid JSON in tool call arguments for function '${X}' (tool_call_id: ${Z}): ${$}`)}}function s86($){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:a86(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 e86($){let Z=$.map((X)=>{let Q=X.function.parameters?zG(X.function.parameters):zG({type:"object",properties:{}});return[X.function.name,_$({description:X.function.description,inputSchema:Q})]});return Object.fromEntries(Z)}function $46($){if(!$)return;return{openai:{response_format:$}}}function Z46(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function Jv$($,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 Wv$($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var c86=256,l86,d86,m86,i86,n86,p86,t86,o86,Kv$,Hv$,Nv$;var Fv$=B(()=>{k4();y8();mg();xN();l86=M1.object({type:M1.literal("function"),function:M1.object({name:M1.string(),description:M1.string().optional(),parameters:M1.record(M1.string(),M1.unknown()).optional()})}),d86=M1.object({id:M1.string(),type:M1.literal("function"),function:M1.object({name:M1.string(),arguments:M1.string()})}),m86=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(d86).optional()}),M1.object({role:M1.literal("tool"),content:M1.string(),tool_call_id:M1.string()})]),i86=M1.object({type:M1.literal("text")}),n86=M1.object({type:M1.literal("json_object")}),p86=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()})}),t86=M1.union([i86,n86,p86]),o86=M1.object({model:M1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:M1.array(m86),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(l86).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:t86.optional(),user:M1.string().optional()});Kv$=class Kv$ extends Error{constructor($){super($);this.name="MessageConversionError"}};Hv$=new B1;Hv$.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),X=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(hK("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(hK("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(hK("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Q=await $.req.json(),G=o86.safeParse(Q);if(!G.success){let L=G.error.issues[0]??{message:"Invalid request",path:[]};return $.json(hK(`Invalid request: ${L.message}`,"invalid_request_error",L.path.length>0?L.path.join("."):null),400)}let Y=G.data,J=r86(Y.model);if(!J)return $.json(hK("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)=>XD(j.providerId));if(!E)return $.json(hK("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(hK(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let N=H.aiSdk.languageModel(K),F=s86(Y.messages),U=Y.tools?e86(Y.tools):void 0,w=$46(Y.response_format),O=Z46(),D=Math.floor(Date.now()/1000);if(Y.stream)return QF($,async(L)=>{let E=Jv$(N,F,U,Y,w,$.req.raw.signal);try{let j=Aw(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>=c86)await M()}else if(k.type==="tool-call"){await M();let q=A++;await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:D,model: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:Wv$(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=Jv$(N,F,U,Y,w,$.req.raw.signal),E=await zw(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:Wv$(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(hK("Request aborted","invalid_request_error"),400);if(G.name==="MessageConversionError")return $.json(hK(G.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",G.message,G.stack),$.json(hK(G.message,"server_error"),500)}});Nv$=Hv$});var wv$;var Uv$=B(()=>{wv$={name:"decocms",version:"4.200.3",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 G46(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??Q46}}var Ov$,Q46="https://ph.studio.decocms.com",Bv$;var Dv$=B(()=>{y8();bx0();qV();jZ();S$();t11();Uv$();Ov$=new B1;Ov$.get("/",($)=>{let Z={version:wv$.version,theme:sh1(),...nD().logo&&{logo:nD().logo},...HK()&&{internalUrl:qq1()},...c0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!c0().firecrawlApiKey,auth:Ak$(),posthog:G46(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:!HK()&&c0().sandboxProviderKind==="agent-sandbox"}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});Bv$=Ov$});function ng($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function $41($){return(ng($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((X)=>X.charAt(0).toUpperCase()+X.slice(1)).join(" ")}function Ev$($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(ng($))}&sz=${Z}`}function Lv$($,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 jv$($){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()?Lv$(`${G.trim().replace(/\s+/g," ")} \u2014 ${J}`,200):Lv$(`How does ${X} really perform? ${J}`,200);return{title:Y,description:W}}import{z as l0}from"zod";var mC,Y46,J46,W46,K46,zv$;var Pv$=B(()=>{mC=l0.enum(["good","bad","neutral"]),Y46=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:mC.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 $})),J46=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(Y46)),W46={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()},K46=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:mC.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:mC.optional()}),l0.object({template:l0.literal("stats"),stats:l0.array(l0.object({value:l0.coerce.string(),label:l0.coerce.string(),tone:mC.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:mC.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(J46).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:mC.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:mC.optional()})).min(1)})]),zv$=l0.object({...W46,template:K46})});function Ej0($){let Z=[],X=[...$.sections].sort((G,Y)=>G.position-Y.position).map((G)=>{let Y=zv$.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 Z41=B(()=>{Pv$()});import{join as Av$}from"path";async function N46($){try{let Z=await fetch(`${vW({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(H46)});if(!Z.ok)return null;let X=await Z.json(),{deck:Q}=Ej0(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()||$41($),score:Q.meta.scores?.cover??J?.score?.value,verdict:G?.annotation?.trim()||G?.headline?.trim()||void 0}}catch{return null}}function cG($){return $.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;")}function F46($,Z){let X=ng($),Q=Z?.brand?.trim()||$41(X),G=Ev$(X,128),J=`${(c0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(X)}`,{title:W,description:K}=jv$({brand:Q,domain:X,score:Z?.score,verdict:Z?.verdict}),H=`${J}/og.png`,N=`${Q} commerce report by decocms`;return[`<title>${cG(W)}</title>`,`<meta name="description" content="${cG(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="${cG(W)}" />`,`<meta property="og:description" content="${cG(K)}" />`,`<meta property="og:url" content="${cG(J)}" />`,`<meta property="og:image" content="${cG(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${cG(N)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${cG(W)}" />`,`<meta name="twitter:description" content="${cG(K)}" />`,`<meta name="twitter:image" content="${cG(H)}" />`,`<meta name="twitter:image:alt" content="${cG(N)}" />`,`<link rel="canonical" href="${cG(J)}" />`,`<link rel="icon" href="${cG(G)}" sizes="any" />`].join(`
2730
2730
  `)}function U46($,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 Tv$($){let Z=new B1;return Z.get("/:domain/og.png",async(X)=>{let Q=ng(X.req.param("domain")),G=async()=>{let Y=$?Bun.file(Av$($,"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(`${vW({})}/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=$?Av$($,"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 N46(ng(Q)),K=F46(Q,W);return X.html(U46(J,K),200,{"Cache-Control":"public, max-age=0, s-maxage=300"})}catch{return X.html(J)}}),Z}var H46=2500,w46=1e4;var Rv$=B(()=>{y8();Z41();JL();S$()});function vo($,Z){return fetch(`${vW({})}${$}`,Z)}async function O46($,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 vo(`/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}=Ej0(J);return{status:W.slides.length?"ready":"empty",deck:W,scanned_at:J.scanned_at,drops:K}}var B46,l3,jj0=async($,Z)=>{if(!$.get("reportUser"))return $.json({error:"Authentication required"},401);await Z();return},Iv$;var qv$=B(()=>{y8();RY();JL();Z41();B46=new Set(["complete","errored","terminated","unknown"]),l3=new B1;l3.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});l3.use("/run",jj0);l3.use("/status",jj0);l3.use("/link-token/*",jj0);l3.use("/suggest",jj0);l3.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 O46(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)}});l3.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 vo("/api/v2/diagnostics/run",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${YL({})}`},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)}});l3.get("/status",async($)=>{let Z=$.req.query("id");if(!Z)return $.json({error:"id is required"},400);try{let X=await vo(`/api/v2/diagnostics/status?id=${encodeURIComponent(Z)}`,{headers:{Authorization:`Bearer ${YL({})}`}});if(!X.ok)return $.json({error:`status HTTP ${X.status}`},502);let G=(await X.json()).status??"unknown",Y={done:B46.has(G),status:G};return $.json(Y)}catch{return $.json({error:"status failed"},502)}});l3.get("/link-token/:id",async($)=>{let Z=$.req.param("id");try{let X=await vo(`/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)}});l3.get("/suggest",async($)=>{let Z=($.req.query("q")??"").trim().slice(0,64);if(Z.length<2)return $.json({suggestions:[]});try{let X=await vo(`/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:[]})}});Iv$=l3});import{createHmac as D46,timingSafeEqual as L46}from"crypto";function kv$($,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)>E46)return!1;let W=D46("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&&L46(K,N)})}function Sv$($){let Z;try{Z=JSON.parse($)}catch{return null}let X=XJ(Z),Q=XJ(XJ(X?.data)?.object);if(!X||typeof X.type!=="string"||!Q)return null;return{id:uK(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 Vv$($){switch($){case"active":case"trialing":return"active";case"past_due":return"past_due";default:return"canceled"}}function uK($){return typeof $==="string"?$:void 0}function XJ($){return typeof $==="object"&&$!==null?$:void 0}function zj0($){return typeof $==="number"?new Date($*1000):null}function G41($){return uK($)??uK(XJ($)?.id)}function j46($){return G41($.subscription)??uK(XJ(XJ($.parent)?.subscription_details)?.subscription)}function z46($){let Z=zj0($.current_period_end);if(Z)return Z;let X=XJ($.items)?.data;if(!Array.isArray(X))return null;let Q=0;for(let G of X){let Y=XJ(G)?.current_period_end;if(typeof Y==="number"&&Y>Q)Q=Y}return Q>0?new Date(Q*1000):null}function X41($,Z){let X=zj0($.created);return!!X&&!!Z.lastStripeEventAt&&X<Z.lastStripeEventAt}function Q41($,Z){let X=zj0($.created);if(!X)return;return Z.lastStripeEventAt&&Z.lastStripeEventAt>X?void 0:X}async function P46($,Z){let X=Z.data.object;switch(Z.type){case"checkout.session.completed":case"checkout.session.async_payment_succeeded":{let Q=uK(XJ(X.metadata)?.orgId);if(!Q)return{handled:!1,reason:"no orgId"};if(uK(XJ(X.metadata)?.kind)==="topup"){if(X.mode!=="payment")return{handled:!1,reason:"topup with wrong mode"};if(uK(X.payment_status)!=="paid")return{handled:!1,reason:"payment not confirmed"};let J=uK(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(XJ(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:XJ(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(uK(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=G41(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(X41(Z,G))return{handled:!1,reason:"stale event"};return await $.updateStripeState(Q,{stripeCustomerId:G41(X.customer),stripeSubscriptionId:Y,status:"active",lastStripeEventAt:Q41(Z,G)}),{handled:!0,organizationId:Q}}case"customer.subscription.updated":case"customer.subscription.deleted":{let Q=uK(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&&X41(Z,G))return{handled:!1,reason:"stale event"};let J=Y?"canceled":Vv$(X.status);return await $.updateStripeState(G.organizationId,{status:J,currentPeriodEnd:z46(X),...Y&&{stripeSubscriptionId:null},lastStripeEventAt:Q41(Z,G)}),{handled:!0,organizationId:G.organizationId}}case"invoice.paid":{let Q=j46(X);if(!Q)return{handled:!1,reason:"no sub id"};let G=await $.getBillingByStripeSubscriptionId(Q);if(!G)return{handled:!1,reason:"unknown subscription"};if(X41(Z,G))return{handled:!1,reason:"stale event"};return await $.updateStripeState(G.organizationId,{status:"active",currentPeriodEnd:zj0(X.period_end),lastStripeEventAt:Q41(Z,G)}),{handled:!0,organizationId:G.organizationId}}default:return{handled:!1,reason:`unhandled event ${Z.type}`}}}function A46($,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:Vv$(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 Mv$($,Z){let X=A46($,Z);if(!X)return;uH({event:X.name,organizationId:X.organizationId,...$.id?{uuid:Jl1(`stripe:${$.id}:${X.name}`)}:{},...$.created?{timestamp:new Date($.created*1000)}:{},properties:X.properties})}async function Cv$($){let Z=new SW(m8().db),X=await P46(Z,$);if(!(X.handled&&X.topUp))Mv$($,X);if(X.handled&&X.topUp)await WF$({organizationId:X.organizationId,amountCents:X.topUp.creditCents,referenceId:X.topUp.referenceId}),Mv$($,X);if(!X.handled&&X.orphanSubscriptionId)try{await zt1(X.orphanSubscriptionId),console.error("stripe webhook: canceled orphan subscription",{subscriptionId:X.orphanSubscriptionId,eventId:$.id})}catch(Q){if(!(Q instanceof $3&&(Q.status===400||Q.status===404)))throw Q}return X}var E46=300;var _v$=B(()=>{DY();h4();Mm();do0()});var T46=1048576,Y41;var vv$=B(()=>{y8();dO();S$();_v$();Y41=new B1;Y41.post("/webhook",HZ({maxSize:T46,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(!kv$(X,$.req.header("stripe-signature"),Z))return $.json({error:"invalid signature"},400);let G=Sv$(X);if(!G)return $.json({error:"invalid payload"},400);let Y=await Cv$(G);return console.log("stripe webhook",{eventId:G.id,type:G.type,livemode:G.livemode,...Y}),$.json({received:!0})})});import{timingSafeEqual as R46}from"crypto";function q46($,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 R46(Buffer.from(G),Buffer.from(Q))}var I46=5242880,J41;var bv$=B(()=>{y8();dO();Mi();J41=new B1;J41.post("/webhook",HZ({maxSize:I46,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(!q46(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 Pd0())?.markTenantPoolsDirty(Y,G)??[];return $.json({ok:!0,pools:W})})});function fv$($,Z){if(Z.startsWith("text/html")||Z.startsWith("image/svg"))$.set("Content-Security-Policy","sandbox allow-scripts allow-modals allow-same-origin")}var xv$,M46,k46,yv$;var gv$=B(()=>{y8();mJ();qx();Sf();xv$=new B1,M46=["range","if-none-match","if-modified-since"],k46=["content-type","content-length","content-range","accept-ranges","etag","last-modified"];xv$.get("/:org/files/*",async($)=>{let Z=$.get("studioContext"),X=Z.organization?.id;if(!Z.auth?.user?.id){if(Ig($))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 Qn(Q,Z);if(!G)throw new Q$(503,{message:"Object storage not configured"});if(G.startsWith("data:")&&oJ()){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 fv$(U,H),new Response(F,{status:200,headers:U})}let Y=new Headers;for(let K of M46){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 k46){let H=J.headers.get(K);if(H)W.set(K,H)}return W.set("Cache-Control","private, max-age=86400"),fv$(W,W.get("content-type")??""),new Response(J.body,{status:J.status,headers:W})});yv$=xv$});var bo=C((iC)=>{var S46=iC&&iC.__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]}),V46=iC&&iC.__exportStar||function($,Z){for(var X in $)if(X!=="default"&&!Object.prototype.hasOwnProperty.call(Z,X))S46(Z,$,X)};Object.defineProperty(iC,"__esModule",{value:!0});V46(eQ(),iC)});var cv$=C((hv$)=>{Object.defineProperty(hv$,"__esModule",{value:!0});hv$.version=void 0;hv$.version="3.4.0"});var mv$=C((cK)=>{var C46=cK&&cK.__importDefault||function($){return $&&$.__esModule?$:{default:$}};Object.defineProperty(cK,"__esModule",{value:!0});cK.NodeTransport=cK.VERSION=void 0;cK.nodeResolveHost=y46;var d6=bo(),_46=z0("net"),W41=z0("tls"),v46=z0("path"),lv$=z0("fs"),b46=C46(z0("dns")),f46=cv$();cK.VERSION=f46.version;var x46="nats.js";class dv${socket;version;lang;yields=[];signal=(0,d6.deferred)();closedNotification=(0,d6.deferred)();options;connected=!1;tlsName="";done=!1;closeError;constructor(){this.lang=x46,this.version=cK.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,_46.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,v46.resolve)($),!(0,lv$.existsSync)($))Z.reject(Error(`${$} doesn't exist`));(0,lv$.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,W41.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,W41.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 W41.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}}cK.NodeTransport=dv$;function y46($){let Z=(0,d6.deferred)();return b46.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 ov$=C((tv$)=>{Object.defineProperty(tv$,"__esModule",{value:!0});tv$.connect=g46;var iv$=mv$(),nv$=bo(),pv$=bo();function g46($={}){if((0,pv$.hasWsProtocol)($))return Promise.reject(pv$.errors.InvalidArgumentError.format("servers","node client doesn't support websockets, use the 'wsconnect' function instead"));return(0,nv$.setTransportFactory)({factory:()=>{return new iv$.NodeTransport},dnsResolveFn:iv$.nodeResolveHost}),nv$.NatsConnectionImpl.connect($)}});var rv$=C((GF)=>{var u46=GF&&GF.__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]}),c46=GF&&GF.__exportStar||function($,Z){for(var X in $)if(X!=="default"&&!Object.prototype.hasOwnProperty.call(Z,X))u46(Z,$,X)};Object.defineProperty(GF,"__esModule",{value:!0});GF.connect=void 0;var l46=ov$();Object.defineProperty(GF,"connect",{enumerable:!0,get:function(){return l46.connect}});c46(bo(),GF)});function $b$($){let Z=$?.connectFn??n46,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:i46,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=HX(m46,d46,O-1,2,0.5);await y$(D)}}return{init(U,w){if(G)return;G=!0,Y=!1;let O=w?.creds?av$.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=ev$.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 n46($){return sv$.connect($)}var av$,sv$,ev$,d46=100,m46=3000,i46=3000;var Zb$=B(()=>{E6();av$=S(Eh(),1),sv$=S(rv$(),1),ev$=S(NB(),1)});function K41($,Z){return`${$}.${Z}`}class H41{cache;constructor($){this.cache=Fg({ttlMs:$?.ttlMs??p46,maxSize:$?.maxSize??t46})}async get($,Z){return this.cache.get(K41($,Z))??null}async set($,Z,X){this.cache.set(K41($,Z),X)}async invalidate($,Z){this.cache.delete(K41($,Z))}teardown(){this.cache.clear()}}var p46=600000,t46=5000;var Xb$=()=>{};function Pj0($,Z){return`${$}:${Z}`}function N41($){let Z=Fg({ttlMs:$?.ttlMs??o46,maxSize:$?.maxSize??r46}),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(Qb$,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(Pj0(K,H))},set(K,H,N){Z.set(Pj0(K,H),N)},invalidate(K,H){Z.delete(Pj0(K,H)),W(K,H)},start(){if(J)return;let K=X?.();if(!K)return;J=K.subscribe(Qb$),(async()=>{for await(let H of J)try{let N=JSON.parse(Y.decode(H.data));if(N.originId===Q)continue;Z.delete(Pj0(N.organizationId,N.keyId))}catch{}})().catch(console.error)},teardown(){J?.unsubscribe(),J=null,Z.clear()}}}var Qb$="studio.ai-provider-keys.invalidate",o46=30000,r46=5000;var Gb$=()=>{};class F41{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=Yb$.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 Yb$)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 Yb$;var Jb$=B(()=>{Yb$=["studio.decopilot.cancel","mesh.decopilot.cancel"]});var Wb$=($)=>{let Z;return()=>Z??=$()},U41,w41;var Kb$=B(()=>{Z5();U41=Wb$(()=>K8.createHistogram("decopilot.stream.encode_ms",{description:"Per-chunk JSON.stringify+encode time for decopilot stream",unit:"ms"})),w41=Wb$(()=>K8.createCounter("decopilot.stream.published_chunks",{description:"Logical decopilot stream chunks published to JetStream",unit:"{chunks}"}))});function Q66(){return{name:IN,subjects:[`${Lw0}.>`],storage:d3.StorageType.File,max_age:e46,max_bytes:Z66,max_msgs_per_subject:X66,discard:d3.DiscardPolicy.Old,retention:d3.RetentionPolicy.Limits,duplicate_window:$66,num_replicas:1}}class Fb${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 Hb$($){let Z=Nb$.headers();for(let[X,Q]of Object.entries($))Z.set(X,Q);return Z}function W66($,Z){let X=0;return{publish(Q,G,Y,J){Q.publish(G,Y,J?{headers:J}:void 0).catch((W)=>{if(X++,s46().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 K66($){if(!($ instanceof Error))return!1;if($.name==="TimeoutError")return!0;return/timeout|no responders|503/i.test($.message)}class O41{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=Q66(),X=await gZ(async()=>{let Q=this.options.getJetStreamManager?await this.options.getJetStreamManager():await d3.jetstreamManager($);try{await Q.streams.info(IN),await Q.streams.update(IN,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(IN),await Q.streams.add(Z);else throw G}return Q},{maxAttempts:5,minTimeout:250,maxTimeout:4000,jitter:0.5,isRetriable:K66});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=W66(Z,Q),J=!1,W=()=>{if(J)return;J=!0;let H=rJ$(Z);G.publish(H.subject,H.data).catch(()=>{})};X.addEventListener("abort",W,{once:!0});let K=(H)=>{let N=performance.now(),F=li0(H,{runId:Z}),U=performance.now()-N;if(U41().record(U),w41().add(1,{"org.id":Q??"unknown"}),J66?.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?Hb$(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(),Y66)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=li0(Z,{runId:$,dedup:X});if(U41().record(performance.now()-G),w41().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:Hb$(J.headers)}:{},...J.msgId?{msgID:J.msgId}:{}});return!0}async publishDone($,Z,X){let Q=this.js;if(!Q)return!1;let G=oJ$({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"?d3.DeliverPolicy.New:d3.DeliverPolicy.All,Y=X?.closeOnDone??!1,J=QO($),W;try{W=await(await Q.consumers.get(IN,{filter_subjects:J,deliver_policy:G})).consume()}catch(D){return console.warn("[Decopilot] JetStream tail unavailable (non-critical):",D?.message??D),null}let N=Aw0({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(Ew0()).pipeThrough(jw0()).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(IN,{filter:QO($)}).catch(()=>{})}teardown(){this.js=null,this.jsm=null}}var d3,Nb$,a46=($)=>{let Z;return()=>Z??=$()},s46,e46=86400000000000,$66=120000000000,Z66=4294967296,X66=500000,G66,Y66,J66;var Ub$=B(()=>{E6();di0();Tw0();zw0();Z5();Kb$();d3=S(NB(),1),Nb$=S(Eh(),1),s46=a46(()=>K8.createCounter("decopilot.stream.publish_errors",{description:"Number of JetStream publish failures for decopilot stream chunks",unit:"{errors}"}));G66=process.env.STREAM_ENCODE_TRACE==="1",Y66=process.env.DECOPILOT_STREAM_TRACE==="1";J66=G66?new Fb$:null});function Aj0($,Z,X,Q){if(!Q)return!1;return $.emit(Z,UW(X,Q.status,{title:Q.title??void 0,virtualMcpId:Q.virtual_mcp_id??void 0,createdBy:Q.created_by??void 0,triggerId:Q.trigger_id??null,branch:Q.branch??null,harnessId:Q.harness_id??void 0,createdAt:Q.created_at,updatedAt:Q.updated_at})),!0}var wb$=B(()=>{L8()});class B41{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 D41{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??H66;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??F66,X=this.options.itemIntervalMs??N66,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()-pG$),Rn0);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 wi0(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 qN(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()+U66)).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 e3$(G,X))return!0;let Y=await Promise.all(Q.map(async(J)=>({...J,...await Pn0(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(!zn0(Y))return!1;return await Sw0(G,X),!0}dispose(){if(this.timer)clearInterval(this.timer),this.timer=null}}var H66=60000,N66=300000,F66=50,U66=60000,w66=120000;var Ob$=B(()=>{qZ();wn0();GO();fw0();e9();In0();yx()});import{readdir as O66,rm as Tj0}from"fs/promises";import{join as Rj0}from"path";async function Ij0($){let Z=new Date;Z.setUTCDate(Z.getUTCDate()-B66),Z.setUTCHours(0,0,0,0);let X=0;try{let Q=await nC($);for(let G of Q)if(/^\d{4}$/.test(G))X+=await Bb$($,G,Z);else if(!G.startsWith(".")){let Y=Rj0($,G),J=await nC(Y);for(let K of J){if(!/^\d{4}$/.test(K))continue;X+=await Bb$(Y,K,Z)}if((await nC(Y)).length===0)await Tj0(Y,{recursive:!0,force:!0})}}catch(Q){console.warn("monitoring retention cleanup failed:",Q)}return X}async function Bb$($,Z,X){let Q=0,G=Rj0($,Z),Y=await nC(G);for(let W of Y){if(!/^\d{2}$/.test(W))continue;let K=Rj0(G,W),H=await nC(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=Rj0(K,F);await Tj0(w,{recursive:!0,force:!0}),Q++}}if((await nC(K)).length===0)await Tj0(K,{recursive:!0,force:!0})}if((await nC(G)).length===0)await Tj0(G,{recursive:!0,force:!0});return Q}async function nC($){try{return(await O66($)).filter((X)=>!X.startsWith("."))}catch{return[]}}var B66=30;var L41=()=>{};import{DBOS as E41,SchedulerMode as D66}from"@dbos-inc/dbos-sdk";async function E66(){let $=[WJ(),pC(),dK()],Z=0;for(let X of $)try{Z+=await Ij0(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 j66($,Z){await E41.runStep(()=>E66(),{name:"monitoringRetention"})}function Lb$(){if(Db$)return;Db$=!0;let $=E41.registerWorkflow(j66,{name:"monitoringRetentionWorkflow"});E41.registerScheduled($,{name:"monitoringRetentionWorkflow",crontab:L66,mode:D66.ExactlyOncePerIntervalWhenActive})}var L66="23 4 * * *",Db$=!1;var Eb$=B(()=>{oQ();L41()});function jb$($){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 vK.create();G.auth.user={id:X,role:Q.role},G.organization={id:Q.orgId,slug:Q.orgSlug,name:Q.orgName};let Y=await f11($.db,Z,Q.role);return G.boundAuth=b11({auth:G.authInstance,headers:new Headers,role:Q.role,permissions:Y,userId:X}),G.access=new lD(X,void 0,G.boundAuth,Q.role,"self"),Tg(G,{id:Q.orgId,slug:Q.orgSlug}),G}}var zb$=B(()=>{dD();Dg()});function z66(){return{services:[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}],migrationsStatus:"pending",serverUrl:null,logs:[]}}function A66(){for(let $ of P66)$()}function Pb$($){let Z=[...j41.logs,$];j41={...j41,logs:Z.length>500?Z.slice(-500):Z},A66()}function z41(){return T66}var j41,P66,T66=!1;var P41=B(()=>{j41=z66(),P66=new Set});import{EventEmitter as R66}from"events";var A41;var Ab$=B(()=>{P41();A41=new R66;A41.on("request",($)=>{Pb$($)})});function Tb$(){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=pg(U.params.name),O=U.params.arguments||{},D=Object.keys(O).map((E)=>pg(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}${pg(U.method)}${e6.reset}`}}catch{}}let W=pg(G);if(G.startsWith("/mcp/conn_")){let N=G.split("/")[2]??"";W=`/mcp/${e6.mcp}${pg(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=q66(Q),H=J?"\u25C0":"\u2190";if(!z41())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=I66(F),w=N<1000?`${N}ms`:`${(N/1000).toFixed(1)}s`,O=J?"\u25B6":"\u2192";if(!z41())console.log(`${e6.dim}${O}${e6.reset} ${K}${Q}${e6.reset} ${W}${Y?` ${Y}`:""} ${U}${F}${e6.reset} ${e6.duration}${w}${e6.reset}`);A41.emit("request",{method:Q,path:pg(G),status:F,duration:N,timestamp:new Date})}}}var e6,I66=($)=>{if($>=500)return e6.serverError;if($>=400)return e6.clientError;if($>=300)return e6.redirect;return e6.ok},q66=($)=>{return e6[$]||e6.reset},pg=($)=>{return $.replace(/\r/g,"").replace(/\n/g,"").replace(/\x1b\[[0-9;]*m/g,"").replace(/[\x00-\x1f\x7f-\x9f]/g,"")};var Rb$=B(()=>{P41();Ab$();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 kb$}from"crypto";import{mkdir as M66,readdir as k66,rm as Ib$,stat as Sb$}from"fs/promises";import{join as R41,relative as S66}from"path";import{z as E$}from"zod";function Cb$($){let Z=$.replace(/[^a-zA-Z0-9_-]/g,"_");return R41(V66,Z)}function _b$($){return $.replace(/^\/+/,"").replace(/\.\./g,"")}function T41($,Z){let X=Cb$($),Q=_b$(Z);return R41(X,Q)}function C66($,Z,X,Q){let G=c0().encryptionKey||"dev-secret",Y=`${$}:${Z}:${X}:${Q}`;return kb$("sha256",G).update(Y).digest("hex")}function Mb$($,Z,X,Q,G){let Y=Math.floor(Date.now()/1000)+Q,J=C66(Z,X,Y,G),W=new URL(`/api/dev-assets/${Z}/${_b$(X)}`,$);return W.searchParams.set("expires",Y.toString()),W.searchParams.set("signature",J),W.searchParams.set("method",G),W.toString()}function vb$($,Z,X){let Q=`${$}:${Z.getTime()}:${X}`;return`"${kb$("md5","etag").update(Q).digest("hex")}"`}async function bb$($,Z,X,Q,G){try{let Y=await k66($,{withFileTypes:!0});for(let J of Y){let W=R41($,J.name),H=S66(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 bb$(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 Sb$(W);G.objects.push({key:H,size:N.size,lastModified:N.mtime.toISOString(),etag:vb$(W,N.mtime,N.size)})}catch{}}}}catch{}}function fb$($,Z){let Q=t($).id;return[{name:"LIST_OBJECTS",description:"List objects in the local assets directory with pagination support",inputSchema:E$.object({prefix:E$.string().optional(),maxKeys:E$.number().optional().default(1000),continuationToken:E$.string().optional(),delimiter:E$.string().optional()}),outputSchema:E$.object({objects:E$.array(E$.object({key:E$.string(),size:E$.number(),lastModified:E$.string(),etag:E$.string()})),nextContinuationToken:E$.string().optional(),isTruncated:E$.boolean(),commonPrefixes:E$.array(E$.string()).optional()}),handler:async(G)=>{let Y=G,J=Y.prefix||"",W=Y.maxKeys??1000,K=Y.delimiter,H=Y.continuationToken,N=Cb$(Q);await M66(N,{recursive:!0});let F={objects:[],commonPrefixes:new Set};await bb$(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:E$.object({key:E$.string()}),outputSchema:E$.object({contentType:E$.string().optional(),contentLength:E$.number(),lastModified:E$.string(),etag:E$.string(),metadata:E$.record(E$.string(),E$.string()).optional()}),handler:async(G)=>{let Y=G,J=T41(Q,Y.key),W=await Sb$(J);return{contentType:L$1(Y.key),contentLength:W.size,lastModified:W.mtime.toISOString(),etag:vb$(J,W.mtime,W.size)}}},{name:"GET_PRESIGNED_URL",description:"Generate a presigned URL for downloading a file from local storage",inputSchema:E$.object({key:E$.string(),expiresIn:E$.number().optional()}),outputSchema:E$.object({url:E$.string(),expiresIn:E$.number()}),handler:async(G)=>{let Y=G,J=Y.expiresIn??qb$;return{url:Mb$(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:E$.object({key:E$.string(),expiresIn:E$.number().optional(),contentType:E$.string().optional()}),outputSchema:E$.object({url:E$.string(),expiresIn:E$.number()}),handler:async(G)=>{let Y=G,J=Y.expiresIn??qb$;return{url:Mb$(Z,Q,Y.key,J,"PUT"),expiresIn:J}}},{name:"DELETE_OBJECT",description:"Delete a single file from local storage",inputSchema:E$.object({key:E$.string()}),outputSchema:E$.object({success:E$.boolean(),key:E$.string()}),handler:async(G)=>{let Y=G,J=T41(Q,Y.key);try{return await Ib$(J),{success:!0,key:Y.key}}catch{return{success:!1,key:Y.key}}}},{name:"DELETE_OBJECTS",description:"Delete multiple files from local storage",inputSchema:E$.object({keys:E$.array(E$.string()).max(1000)}),outputSchema:E$.object({deleted:E$.array(E$.string()),errors:E$.array(E$.object({key:E$.string(),message:E$.string()}))}),handler:async(G)=>{let Y=G,J=[],W=[];return await Promise.all(Y.keys.map(async(K)=>{let H=T41(Q,K);try{await Ib$(H),J.push(K)}catch(N){W.push({key:K,message:N instanceof Error?N.message:"Unknown error"})}})),{deleted:J,errors:W}}}]}async function I41($,Z,X){let Q=fb$(Z,X),G=new jW({name:"dev-assets-mcp",version:"1.0.0"},{capabilities:{tools:{}},jsonSchemaValidator:Y5});for(let J of Q){let W="shape"in J.inputSchema?J.inputSchema.shape:E$.object({}).shape,K=J.outputSchema&&"shape"in J.outputSchema?J.outputSchema.shape:E$.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 lX({enableJsonResponse:$.headers.get("Accept")?.includes("application/json")??!1});return await G.connect(Y),lY(G,Y,$,"mcp:dev-assets")}async function xb$($,Z,X,Q){let Y=fb$(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 V66="./data/assets",qb$=3600,Vb$,yb$;var gb$=B(()=>{S$();lx();y8();dc();bV();RX();xE0();Vb$=new B1;Vb$.all("/",async($)=>{let Z=$.get("studioContext"),X=new URL($.req.url),Q=`${X.protocol}//${X.host}`;return I41($.req.raw,Z,Q)});yb$=Vb$});var hb$={};N4(hb$,{mountDevRoutes:()=>_66});function _66($,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 I41(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 xb$(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",yb$);let X=new B1;X.use("*",u3({mountPath:"/api/dev-assets"})),X.route("/",fE0({orgFromPath:!1})),$.route("/api/dev-assets",X)}var ub$=B(()=>{y8();H$1();xE0();gb$()});import{sql as v66}from"kysely";import{randomUUID as cb$}from"crypto";import{z as b66}from"zod";async function x66($){let Z=new Date().toISOString(),X=cb$(),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:cb$(),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 v66`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.200.2",
3
+ "version": "4.200.3",
4
4
  "description": "Deco CMS — Self-hostable MCP Gateway for managing AI connections and tools",
5
5
  "author": "Deco team",
6
6
  "repository": {