decocms 4.204.0 → 4.204.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (225) hide show
  1. package/dist/client/assets/{AlertCircle-aOidjqvT.js → AlertCircle-Dvi1k5cn.js} +1 -1
  2. package/dist/client/assets/{AreaChart-DhlgcMqi.js → AreaChart-CndFxvIo.js} +1 -1
  3. package/dist/client/assets/{ArrowLeft-B75Lamri.js → ArrowLeft-Ent8iR6x.js} +1 -1
  4. package/dist/client/assets/{ArrowUp-DrYxkigj.js → ArrowUp-BB36Bdlh.js} +1 -1
  5. package/dist/client/assets/{ArrowUpRight-DViLhVSI.js → ArrowUpRight-BhRRZUzX.js} +1 -1
  6. package/dist/client/assets/{Check-Dx-4HUEo.js → Check-C_JGadkZ.js} +1 -1
  7. package/dist/client/assets/{CheckCircle-Bn_vBNFy.js → CheckCircle-CfMS5-8U.js} +1 -1
  8. package/dist/client/assets/{ChevronDown-JRTCHhvr.js → ChevronDown-pjtec-xe.js} +1 -1
  9. package/dist/client/assets/{ChevronRight-BEmZD6vD.js → ChevronRight-EZoEfiBP.js} +1 -1
  10. package/dist/client/assets/{ChevronUp-C5AupxBz.js → ChevronUp-CCmZkWFs.js} +1 -1
  11. package/dist/client/assets/{Copy01-C-nHXXWU.js → Copy01-3zRGTDeQ.js} +1 -1
  12. package/dist/client/assets/{CpuChip01-Bo3zJKjM.js → CpuChip01-Dnu2MbJR.js} +1 -1
  13. package/dist/client/assets/{CreditCard01-Dh_t5bkX.js → CreditCard01-DqPcU1mb.js} +1 -1
  14. package/dist/client/assets/{DotsVertical-loouiV0t.js → DotsVertical-C5y4Pnp5.js} +1 -1
  15. package/dist/client/assets/{Eye-5nLs5Hvl.js → Eye-BLs6tnei.js} +1 -1
  16. package/dist/client/assets/{FilterLines-Bv1NZQv4.js → FilterLines-DqxEG8PY.js} +1 -1
  17. package/dist/client/assets/{Globe01-B54JZBFD.js → Globe01-BsZ_32nV.js} +1 -1
  18. package/dist/client/assets/{Globe04-BJ0M5tPH.js → Globe04-VlVzop2v.js} +1 -1
  19. package/dist/client/assets/{HardDrive-DY4V5XN0.js → HardDrive-TH5m1Z7o.js} +1 -1
  20. package/dist/client/assets/{Key01-CRbalBhy.js → Key01-hdAZ7qcN.js} +1 -1
  21. package/dist/client/assets/{LayoutLeft-imuYF97o.js → LayoutLeft-BZJRnjD8.js} +1 -1
  22. package/dist/client/assets/{LinkExternal01-DpBurIUH.js → LinkExternal01-BgjMEXLY.js} +1 -1
  23. package/dist/client/assets/{LogOut01-BfG0GXaG.js → LogOut01-CkqHTgGA.js} +1 -1
  24. package/dist/client/assets/{Monitor01-CvcqYp4W.js → Monitor01-B_jt2_OR.js} +1 -1
  25. package/dist/client/assets/{Palette-DQESctRo.js → Palette-CpQiwtZ1.js} +1 -1
  26. package/dist/client/assets/{Play-BbZQD697.js → Play-WM1USKmL.js} +1 -1
  27. package/dist/client/assets/{Plus-BMXBf3l6.js → Plus-CXd7PZXs.js} +1 -1
  28. package/dist/client/assets/{SearchLg-BSoKDKGM.js → SearchLg-Cdaw6dcQ.js} +1 -1
  29. package/dist/client/assets/{SearchMd-DYIQSyA0.js → SearchMd-DLZKrl0d.js} +1 -1
  30. package/dist/client/assets/{Settings02-BTfVHkK7.js → Settings02-ClcFomqr.js} +1 -1
  31. package/dist/client/assets/{Share07-D0gmP-5W.js → Share07-CKnq1pwo.js} +1 -1
  32. package/dist/client/assets/{Shield01-CzM3eIKy.js → Shield01-BHrGfuES.js} +1 -1
  33. package/dist/client/assets/{Star01-QiZ1RG77.js → Star01-11MAgZ9T.js} +1 -1
  34. package/dist/client/assets/{Stars01-uVD9VW2u.js → Stars01-Bc7pOhlB.js} +1 -1
  35. package/dist/client/assets/{Stars02-BMKoPVMZ.js → Stars02-C-UrCZnt.js} +1 -1
  36. package/dist/client/assets/{Sun-D5jb6SEL.js → Sun-6SeD2sez.js} +1 -1
  37. package/dist/client/assets/{SwitchHorizontal01-D6iKkjDf.js → SwitchHorizontal01-Bes_0lU-.js} +1 -1
  38. package/dist/client/assets/{Tool01-DCUx1m_2.js → Tool01-tHzVB4HP.js} +1 -1
  39. package/dist/client/assets/{Tool02-CiBt8qeE.js → Tool02-Qken4U3T.js} +1 -1
  40. package/dist/client/assets/{Trash01-CkvycJBp.js → Trash01-BeizWm5n.js} +1 -1
  41. package/dist/client/assets/{TrendUp01-61jUkayc.js → TrendUp01-f__iwSOx.js} +1 -1
  42. package/dist/client/assets/{Upload01-B8mvKr_w.js → Upload01-BDaL0KVV.js} +1 -1
  43. package/dist/client/assets/{User01-Bh73V9Wb.js → User01-Db4pRmiC.js} +1 -1
  44. package/dist/client/assets/{Users01-DPdfOTlJ.js → Users01-Cuf-Hz02.js} +1 -1
  45. package/dist/client/assets/{Users03-DFt9F3jC.js → Users03-tcm10YB7.js} +1 -1
  46. package/dist/client/assets/{X-BDolklLb.js → X-vVVLaEHg.js} +1 -1
  47. package/dist/client/assets/{XCircle-Cedk5oAW.js → XCircle-BpOpdAqm.js} +1 -1
  48. package/dist/client/assets/{XClose-CwEsNeOG.js → XClose-BCb-hWNQ.js} +1 -1
  49. package/dist/client/assets/{Zap-BulQ-wUS.js → Zap-BmrfAzJZ.js} +1 -1
  50. package/dist/client/assets/{ZapSquare-C-b0Epcw.js → ZapSquare-DJAk8IQj.js} +1 -1
  51. package/dist/client/assets/{access-gate-Ba1Ptbc3.js → access-gate-B8trsumA.js} +1 -1
  52. package/dist/client/assets/{agent-icon-BfLH4bjn.js → agent-icon-ccKEJMPF.js} +1 -1
  53. package/dist/client/assets/{agents-list-DIjxgsMj.js → agents-list-BZfjoEPb.js} +1 -1
  54. package/dist/client/assets/{ai-providers-v901PhRr.js → ai-providers-DhWGDyPr.js} +1 -1
  55. package/dist/client/assets/{alert-j6AIE-aT.js → alert-BFqYopRA.js} +1 -1
  56. package/dist/client/assets/{alert-dialog-DO8HokZ1.js → alert-dialog-BLVdfah0.js} +1 -1
  57. package/dist/client/assets/{app-editor-B_ctY0W8.js → app-editor-DoLoWamE.js} +1 -1
  58. package/dist/client/assets/{auth-D7Fz4chI.js → auth-D8wV7o7j.js} +1 -1
  59. package/dist/client/assets/{auth-catchall-DkIY9L-Y.js → auth-catchall-CmtX4UfQ.js} +1 -1
  60. package/dist/client/assets/{auth-entry-TY-04IOE.js → auth-entry-Cqq_buv2.js} +1 -1
  61. package/dist/client/assets/{auth-split-layout-CYgtglUd.js → auth-split-layout-C3FvXcyA.js} +1 -1
  62. package/dist/client/assets/{authenticate-and-persist-oauth-Dm1PHKBd.js → authenticate-and-persist-oauth-CnP8b3sw.js} +1 -1
  63. package/dist/client/assets/{automation-list-row-DP-NJftm.js → automation-list-row-BkUJ2ET4.js} +1 -1
  64. package/dist/client/assets/{automation-runs-CZrEWNgn.js → automation-runs-DA9X_MEC.js} +1 -1
  65. package/dist/client/assets/{automations-DFhondbT.js → automations-CDTXWLOw.js} +1 -1
  66. package/dist/client/assets/{avatar-6hvPldfY.js → avatar-DNY4OgMb.js} +1 -1
  67. package/dist/client/assets/{badge-Dz8OuFCR.js → badge-4lOTF_m5.js} +1 -1
  68. package/dist/client/assets/{billing-BLCXdYWO.js → billing-Cw01R7ct.js} +1 -1
  69. package/dist/client/assets/{block-document-CBv7FiVx.js → block-document-DUn-U8y5.js} +1 -1
  70. package/dist/client/assets/{brand-context-Oc-S0TZu.js → brand-context-DSDT2DRK.js} +1 -1
  71. package/dist/client/assets/{buckets-DgIMATKn.js → buckets-BVr4I05q.js} +1 -1
  72. package/dist/client/assets/{bulk-category-panel-BXFrSMyg.js → bulk-category-panel-DRTnGEsc.js} +1 -1
  73. package/dist/client/assets/{capability-load-error-BmyPT20N.js → capability-load-error-DMtJ9CUf.js} +1 -1
  74. package/dist/client/assets/{card-7QSUKxf2.js → card-BlNsXwmB.js} +1 -1
  75. package/dist/client/assets/{cards-CzFnf54y.js → cards-CNSd-DjB.js} +1 -1
  76. package/dist/client/assets/{category-editor-BIgNxtn-.js → category-editor-tE1h7IUC.js} +1 -1
  77. package/dist/client/assets/{chat-context-2M6oc7QJ.js → chat-context-D6avQC12.js} +1 -1
  78. package/dist/client/assets/{checkbox-Bz2ch0aq.js → checkbox-D_tBjzWE.js} +1 -1
  79. package/dist/client/assets/{cli-auth-success-D7DKAoJU.js → cli-auth-success-C6ZcXbQD.js} +1 -1
  80. package/dist/client/assets/{collection-detail-C71NnA6g.js → collection-detail-BL536I7a.js} +1 -1
  81. package/dist/client/assets/{collection-display-button-Ck7WQnU9.js → collection-display-button-BEJU17Ui.js} +1 -1
  82. package/dist/client/assets/{collection-search-SDeQkDQi.js → collection-search-ClPMaQYs.js} +1 -1
  83. package/dist/client/assets/{collection-table-wrapper-BzW6IJM4.js → collection-table-wrapper-DXktbrPI.js} +1 -1
  84. package/dist/client/assets/{collection-tabs-oDsWQber.js → collection-tabs-DKkFDS-A.js} +1 -1
  85. package/dist/client/assets/{command-DPmNVSl9.js → command-jjpmGOm_.js} +1 -1
  86. package/dist/client/assets/{commerce-onboarding-u6LDKwri.js → commerce-onboarding-Bzn59Zz3.js} +1 -1
  87. package/dist/client/assets/{connect-Cbz92grF.js → connect-3OALFKWa.js} +1 -1
  88. package/dist/client/assets/{connection-CgC8i9WR.js → connection-KlVIBqwe.js} +1 -1
  89. package/dist/client/assets/{connection-card-BFsIJd5n.js → connection-card-rNFP4aQW.js} +1 -1
  90. package/dist/client/assets/{connection-detail-DfbwL7Bf.js → connection-detail-BYkNaIez.js} +1 -1
  91. package/dist/client/assets/{connection-form-helpers-DR_KMHPb.js → connection-form-helpers-DoenWKiE.js} +1 -1
  92. package/dist/client/assets/{connections-CgAUHydd.js → connections-DKyyOPxn.js} +1 -1
  93. package/dist/client/assets/{decopilot-sse-pool-BFs-SH0_.js → decopilot-sse-pool-CQj1A1m0.js} +1 -1
  94. package/dist/client/assets/{dialog-CnsKJ4XS.js → dialog-D0XmFvwy.js} +1 -1
  95. package/dist/client/assets/{domain-settings-Bx7CJaj2.js → domain-settings-BNOU5bWJ.js} +1 -1
  96. package/dist/client/assets/{drawer-BeDNXxoT.js → drawer-2-RcK2eN.js} +1 -1
  97. package/dist/client/assets/{dropdown-menu-rlmS2woE.js → dropdown-menu-ktTeb92V.js} +1 -1
  98. package/dist/client/assets/{empty-state-BdPr9i4J.js → empty-state-D06lbQAg.js} +1 -1
  99. package/dist/client/assets/{extract-connection-data-CIbNaxR4.js → extract-connection-data-60VxImy-.js} +1 -1
  100. package/dist/client/assets/{file-explorer-CqYQN3mT.js → file-explorer-D0vyjnLD.js} +1 -1
  101. package/dist/client/assets/{file-type-icon-Cj7E9OWU.js → file-type-icon-D9ViA8l1.js} +1 -1
  102. package/dist/client/assets/{form-52Ne-88n.js → form-DhkfpDnn.js} +1 -1
  103. package/dist/client/assets/{general-DXtaTpna.js → general-DlNDbeh6.js} +1 -1
  104. package/dist/client/assets/{github-repo-picker-CwPFj7dA.js → github-repo-picker-Dglj8ihi.js} +1 -1
  105. package/dist/client/assets/{hooks-DlP_xAJH.js → hooks-3NsxKnAm.js} +1 -1
  106. package/dist/client/assets/{index-CPr46uJq.js → index--3TZFBch.js} +1 -1
  107. package/dist/client/assets/{index-Cd7ImlZn.js → index-B3ox4h-M.js} +5 -5
  108. package/dist/client/assets/{index-9APmX5bw.js → index-BB7AjniC.js} +1 -1
  109. package/dist/client/assets/{index-DEPqNRvO.js → index-BOCCjDoR.js} +1 -1
  110. package/dist/client/assets/{index-DEpEe4q-.js → index-BfnLly6x.js} +5 -5
  111. package/dist/client/assets/{index-L3EDbLB4.js → index-BhCUIllL.js} +1 -1
  112. package/dist/client/assets/{index-k-sVFH0h.js → index-BvGZqbiV.js} +1 -1
  113. package/dist/client/assets/{index-2TqE-Au3.js → index-DL8upMg6.js} +1 -1
  114. package/dist/client/assets/{index-C3IDT9Mf.js → index-Df_w5LHi.js} +1 -1
  115. package/dist/client/assets/{index-CFnhKOfk.js → index-TgeMi6H_.js} +1 -1
  116. package/dist/client/assets/{index-redirect-DWRIN8hS.js → index-redirect-C18Un53_.js} +1 -1
  117. package/dist/client/assets/{input-zrZUAZiG.js → input-B3O1LD5g.js} +1 -1
  118. package/dist/client/assets/{integration-icon-BMIRMQW1.js → integration-icon-CQ5JlCKc.js} +1 -1
  119. package/dist/client/assets/{invite-member-dialog-BPb7fjDg.js → invite-member-dialog-DtX6wKbN.js} +1 -1
  120. package/dist/client/assets/{label-Biv3DlJq.js → label-vhwuIOtE.js} +1 -1
  121. package/dist/client/assets/{layout-DM0AMssY.js → layout-CY-2zPim.js} +1 -1
  122. package/dist/client/assets/{login-Cb2Srpdo.js → login-iPO7Yc38.js} +1 -1
  123. package/dist/client/assets/{mcp-oauth-BvER8ITi.js → mcp-oauth-Bu7cXC-N.js} +1 -1
  124. package/dist/client/assets/{members-_gaSXQm8.js → members-DnsZ4pAw.js} +1 -1
  125. package/dist/client/assets/{monaco-editor-D-JEkm2C.js → monaco-editor-B_JApexZ.js} +1 -1
  126. package/dist/client/assets/{monitoring-stats-row-CoB3IUlu.js → monitoring-stats-row-BrBxaE4Y.js} +1 -1
  127. package/dist/client/assets/{multi-select-BcUm9boe.js → multi-select-DFeSg1NP.js} +1 -1
  128. package/dist/client/assets/{oauth-callback-CjJCNrMo.js → oauth-callback-D6_sQFC_.js} +1 -1
  129. package/dist/client/assets/{oauth-callback-ai-provider-BRsRTwVv.js → oauth-callback-ai-provider-CV1aemmG.js} +1 -1
  130. package/dist/client/assets/{onboarding-BnfwrFzt.js → onboarding-DqO8Rm5B.js} +1 -1
  131. package/dist/client/assets/{org-layout-Bhw_xjPK.js → org-layout-B4taLp4t.js} +1 -1
  132. package/dist/client/assets/{organization-choice-BTo434bl.js → organization-choice-BLLrYafp.js} +1 -1
  133. package/dist/client/assets/{orgs-BGGdhFTY.js → orgs-SfTh-3Zt.js} +1 -1
  134. package/dist/client/assets/{page-seo-form-SqsJT8Ac.js → page-seo-form-DILJ2hQ5.js} +1 -1
  135. package/dist/client/assets/{popover-Cb70GKE2.js → popover-CnuSqmth.js} +1 -1
  136. package/dist/client/assets/{post-editor-BTtQ-x8C.js → post-editor-BwudRQhS.js} +1 -1
  137. package/dist/client/assets/{primitives-Gtp7Pf-m.js → primitives-DBJOgfbx.js} +1 -1
  138. package/dist/client/assets/{profile-Dr7LPacL.js → profile-QKSun4zF.js} +1 -1
  139. package/dist/client/assets/{project-app-view-CByYOD5Z.js → project-app-view-Cv3q6q4M.js} +1 -1
  140. package/dist/client/assets/record-editor-C5UQgsIx.js +1 -0
  141. package/dist/client/assets/{redirect-editor-BJt9I56D.js → redirect-editor-DFb06Ov_.js} +1 -1
  142. package/dist/client/assets/registry-CN6EeD7o.js +2 -0
  143. package/dist/client/assets/{registry-layout-39QoePJF.js → registry-layout-DIay4wCd.js} +1 -1
  144. package/dist/client/assets/{reports-CdVsYqCs.js → reports-eg0dTaeE.js} +2 -2
  145. package/dist/client/assets/{require-capability-vPM9ojao.js → require-capability-YJOfPqF8.js} +1 -1
  146. package/dist/client/assets/{required-auth-layout-B0-fnnpX.js → required-auth-layout-DT7lerOS.js} +1 -1
  147. package/dist/client/assets/{reset-password-D6vZdpvq.js → reset-password-1CzPdKHE.js} +1 -1
  148. package/dist/client/assets/{roles-BBHuDVTR.js → roles-C11A21iv.js} +1 -1
  149. package/dist/client/assets/{search-input-CjKFfke1.js → search-input-D2RwfNXw.js} +1 -1
  150. package/dist/client/assets/{secrets-Bjp3Ny4T.js → secrets-BoBw_UVY.js} +1 -1
  151. package/dist/client/assets/sections-editor-XnhvlMkB.js +2 -0
  152. package/dist/client/assets/{select-CDhKZB8e.js → select-Bzk-wakL.js} +1 -1
  153. package/dist/client/assets/{select-model-BEwJ6x6F.js → select-model-BZLtIxQF.js} +1 -1
  154. package/dist/client/assets/{self-tool-result-C7MBhQze.js → self-tool-result-CDBZiaIw.js} +1 -1
  155. package/dist/client/assets/{seo-editor-BF9b8-xU.js → seo-editor-B1nAIwLn.js} +1 -1
  156. package/dist/client/assets/{settings-layout-5ooTBQpc.js → settings-layout-BSAQjcwu.js} +1 -1
  157. package/dist/client/assets/{settings-section-CXrma9rU.js → settings-section-CAPU8-8e.js} +1 -1
  158. package/dist/client/assets/{shell-controls-Bh_CpwnW.js → shell-controls-Blju68Rs.js} +1 -1
  159. package/dist/client/assets/{shell-layout-BN_umvta.js → shell-layout-dKq00SYl.js} +1 -1
  160. package/dist/client/assets/{sidebar-RUbPN908.js → sidebar-CvGOAxuW.js} +1 -1
  161. package/dist/client/assets/{skeleton-DS3OSh5_.js → skeleton-Dwp0Y-Z5.js} +1 -1
  162. package/dist/client/assets/{spinner-NNRHh_E-.js → spinner-Dhw_a2i3.js} +1 -1
  163. package/dist/client/assets/{sso-DsFOo_H0.js → sso-CBXNr-xd.js} +1 -1
  164. package/dist/client/assets/{store-Bp8uDjes.js → store-BeCxyxqE.js} +1 -1
  165. package/dist/client/assets/store-registry-BMCpK1O5.js +2 -0
  166. package/dist/client/assets/{studio-tools-JKrn9JOe.js → studio-tools-Bm6Bdldj.js} +1 -1
  167. package/dist/client/assets/{switch-BJPAHFJE.js → switch-BlAcG5cP.js} +1 -1
  168. package/dist/client/assets/{synced-repos-CTZyY4WA.js → synced-repos-C3N7q-D3.js} +1 -1
  169. package/dist/client/assets/{tab-id-B0K1Rwjt.js → tab-id-C3qVK2pu.js} +1 -1
  170. package/dist/client/assets/{table-CdLLcRfU.js → table-CV9MM-eC.js} +1 -1
  171. package/dist/client/assets/{tabs-BpdKKZCJ.js → tabs-BCh_NjNz.js} +1 -1
  172. package/dist/client/assets/{textarea-B6_XVzip.js → textarea-btTfmKOm.js} +1 -1
  173. package/dist/client/assets/{toggle-group-CwlmdjBY.js → toggle-group-B-6k7nps.js} +1 -1
  174. package/dist/client/assets/{toolbar-YSDwUh5f.js → toolbar-Bp98tVBt.js} +1 -1
  175. package/dist/client/assets/{tooltip-CDKJbBi0.js → tooltip-BaIB14Nh.js} +1 -1
  176. package/dist/client/assets/{use-ai-providers-IL8QzB9I.js → use-ai-providers-CrMNt7EO.js} +1 -1
  177. package/dist/client/assets/{use-automations-BCNS6TuJ.js → use-automations-COu6E8ML.js} +1 -1
  178. package/dist/client/assets/{use-autosave-CRIeylnN.js → use-autosave-YdjmZ5mA.js} +1 -1
  179. package/dist/client/assets/{use-capability-DiYIjwqM.js → use-capability-DkfEDI2S.js} +1 -1
  180. package/dist/client/assets/{use-clock-tick-BZBQkA9i.js → use-clock-tick-CT9NimTB.js} +1 -1
  181. package/dist/client/assets/{use-connection-CqI346XJ.js → use-connection-DYei0Fbb.js} +1 -1
  182. package/dist/client/assets/{use-copy-CPzfqp89.js → use-copy-Dnt1OHM7.js} +1 -1
  183. package/dist/client/assets/{use-create-virtual-mcp-6SS-W9Cz.js → use-create-virtual-mcp-CHKFgANU.js} +1 -1
  184. package/dist/client/assets/{use-debounced-autosave-DwbXpD7Q.js → use-debounced-autosave-C3ZK_z9k.js} +1 -1
  185. package/dist/client/assets/{use-debounced-value-Bww2cW3r.js → use-debounced-value-seAIOKeD.js} +1 -1
  186. package/dist/client/assets/{use-deco-credits-CpFkclRC.js → use-deco-credits-Dk-Fws42.js} +1 -1
  187. package/dist/client/assets/{use-decopilot-events-CZky27eB.js → use-decopilot-events-7yWQfl6W.js} +1 -1
  188. package/dist/client/assets/{use-delete-connection-BnXepcbn.js → use-delete-connection-B-FoNtHD.js} +1 -1
  189. package/dist/client/assets/{use-deployment-admin-BnlDMhXQ.js → use-deployment-admin-afzOHWds.js} +1 -1
  190. package/dist/client/assets/{use-file-configs-CMtQ8Ude.js → use-file-configs-DJOLOtA4.js} +1 -1
  191. package/dist/client/assets/{use-infinite-scroll-BQdv-Z2F.js → use-infinite-scroll-tZORgQaO.js} +1 -1
  192. package/dist/client/assets/{use-join-requests-CW9gMEOW.js → use-join-requests-BOU5eK2G.js} +1 -1
  193. package/dist/client/assets/{use-mcp-client-omwH710V.js → use-mcp-client-DsczaGyn.js} +1 -1
  194. package/dist/client/assets/{use-mcp-tools-CtGBOWHg.js → use-mcp-tools-BLWx-Pl5.js} +1 -1
  195. package/dist/client/assets/{use-members-X5452kjt.js → use-members-Cqf8CmaV.js} +1 -1
  196. package/dist/client/assets/{use-mobile-Wto5-uq3.js → use-mobile-Bv8LWkaB.js} +1 -1
  197. package/dist/client/assets/{use-navigate-to-agent-X_HSTSU-.js → use-navigate-to-agent-DU7hqQBC.js} +1 -1
  198. package/dist/client/assets/{use-open-billing-url-BZaSYrMb.js → use-open-billing-url-C_NlLF0X.js} +1 -1
  199. package/dist/client/assets/{use-org-auth-client-D9z89DQw.js → use-org-auth-client-CbZIjjqc.js} +1 -1
  200. package/dist/client/assets/{use-org-sso-BhCewyhm.js → use-org-sso-6gijGsGw.js} +1 -1
  201. package/dist/client/assets/{use-organization-roles-B9CMHdKM.js → use-organization-roles-8Q0M1osF.js} +1 -1
  202. package/dist/client/assets/{use-organization-settings-BZCDAWGL.js → use-organization-settings-Bd3GU4bn.js} +1 -1
  203. package/dist/client/assets/{use-registry-connections-CJTYfSxR.js → use-registry-connections-BtFbwSL5.js} +1 -1
  204. package/dist/client/assets/{use-secrets-BKH6DKDA.js → use-secrets-BmqSS90P.js} +1 -1
  205. package/dist/client/assets/{use-section-preview-base-DJQYqKD8.js → use-section-preview-base-v6IaT3Sv.js} +1 -1
  206. package/dist/client/assets/{use-status-sounds-CN3t7bB_.js → use-status-sounds-COmLo-Ug.js} +1 -1
  207. package/dist/client/assets/{use-tags-CAcDQQYY.js → use-tags-BUlm2YXF.js} +1 -1
  208. package/dist/client/assets/{use-view-mode-BqOg6L7c.js → use-view-mode-C8t3sYfu.js} +1 -1
  209. package/dist/client/assets/{use-virtual-mcp-H33bo8qX.js → use-virtual-mcp-B8AOs5Nq.js} +1 -1
  210. package/dist/client/assets/useInfiniteQuery-CJn_wQPu.js +1 -0
  211. package/dist/client/assets/{useRouterState-DZGUIUCl.js → useRouterState-1KcBylII.js} +1 -1
  212. package/dist/client/assets/useSuspenseInfiniteQuery-BMOve1t3.js +1 -0
  213. package/dist/client/assets/{users-BG64rNTh.js → users-Qrk9slwB.js} +1 -1
  214. package/dist/client/assets/{variant-calendar-BmVgnwB6.js → variant-calendar-CnE6Ihu4.js} +1 -1
  215. package/dist/client/assets/{view-mode-toggle-B151C9kh.js → view-mode-toggle-BDd5pZQe.js} +1 -1
  216. package/dist/client/index.html +1 -1
  217. package/dist/server/cli.js +1 -1
  218. package/dist/server/server.js +1 -1
  219. package/package.json +1 -1
  220. package/dist/client/assets/record-editor-43CnkrgG.js +0 -1
  221. package/dist/client/assets/registry-Bi58rPH1.js +0 -2
  222. package/dist/client/assets/sections-editor-DnnpiKor.js +0 -2
  223. package/dist/client/assets/store-registry-D8mmqkcn.js +0 -2
  224. package/dist/client/assets/useInfiniteQuery-F_jw9PUx.js +0 -1
  225. package/dist/client/assets/useSuspenseInfiniteQuery-Q6fusjYJ.js +0 -1
@@ -1332,7 +1332,7 @@ Usage: deco services <up|down|status>`),process.exit(1)}}var cc1=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 Gn1($){await gc6($),await hc6($);let Z=new Qn1({db:$,provider:{getMigrations:()=>Promise.resolve(pl0)}}),{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 uc6($){let{keepOpen:Z=!1,database:X,skipBetterAuth:Q=!1}=$??{},Y="skipped";if(!Q&&!X)Y=await Eh0();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 Gn1(G.db);return await J(),{betterAuth:Y,kysely:K}}catch(K){throw await J(),K}}async function cc6(){let $=N6(),Z=new Qn1({db:$.db,provider:{getMigrations:()=>Promise.resolve(pl0)}}),{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 Kn1=O(()=>{Xn1();zh0();o7()});async function r50($){let Z={...process.env},X=d00($,Z);console.log(PF1(X.settings.encryptionKey));let Q=X.settings.betterAuthSecret||(X.settings.localMode?Ed1(X.settings.dataDir):""),{ensureServices:Y}=await Promise.resolve().then(() => (J50(),G50)),{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(() => (zh0(),jd1));await W(G.databaseUrl);let{createDatabase:H}=await Promise.resolve().then(() => (o7(),bl1)),{migrateToLatest:N}=await Promise.resolve().then(() => (Kn1(),Jn1)),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 lc1(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 tl0=O(()=>{Vx();zd1();b8()});var Nn1={};B0(Nn1,{updateService:()=>oD,subscribeCliState:()=>al0,setTuiConsoleIntercepted:()=>a50,setServerUrl:()=>Vm,setMigrationsDone:()=>km,setDevMode:()=>mc6,resetCliStateForTests:()=>lc6,isTuiConsoleIntercepted:()=>s50,getCliState:()=>rl0,addLogEntry:()=>jw});function Wn1(){return{services:[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}],migrationsStatus:"pending",serverUrl:null,logs:[]}}function lc6(){_Q=Wn1()}function dc6(){return[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}]}function Mm(){for(let $ of ol0)$()}function rl0(){return _Q}function al0($){return ol0.add($),()=>ol0.delete($)}function oD($){_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 mc6(){_Q={..._Q,services:[...dc6(),{name:"API",status:"pending",port:0},{name:"Vite",status:"pending",port:0}]},Mm()}function a50($){Hn1=$}function s50(){return Hn1}var _Q,ol0,Hn1=!1;var rD=O(()=>{_Q=Wn1();ol0=new Set});import{createServer as Un1}from"net";function ic6($){return new Promise((Z)=>{let X=Un1();X.once("error",()=>Z(!1)),X.listen($,"0.0.0.0",()=>{X.close(()=>Z(!0))})})}async function Sm($){if(await ic6($))return $;let Z=await new Promise((X,Q)=>{let Y=Un1();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 sl0=()=>{};function Cm($){return $.replace(/\x1b\[[0-9;]*m/g,"")}var el0={};B0(el0,{startDevServer:()=>pc6});import{join as nc6}from"path";function Fn1($){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 pc6($){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 r50({port:String(J),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let L of W)oD({name:L.name,status:"ready",port:L.port});km();let N=nc6(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)Fn1(F.stdout),Fn1(F.stderr);Vm(G),oD({name:"Vite",status:"ready",port:Number(Y)}),oD({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(() => (J50(),G50));await D(K.dataDir)}};return process.on("SIGINT",()=>B("SIGINT")),process.on("SIGTERM",()=>B("SIGTERM")),{port:Number(Y),process:F}}var $d0=O(()=>{tl0();rD();sl0()});var e50;var Zd0=O(()=>{e50={name:"decocms",version:"4.204.0",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@nats-io/jwt":"0.0.10-5","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});import{Box as oc6,Text as wn1}from"ink";import{jsx as rc6,jsxs as Bn1}from"react/jsx-runtime";function On1({version:$}){return Bn1(oc6,{flexDirection:"column",marginTop:1,children:[M50.map((Z,X)=>rc6(wn1,{color:k50[X],children:Z},X)),Bn1(wn1,{dimColor:!0,children:[" v",$]})]})}var Ln1=O(()=>{Lm()});import{Box as aD,Text as Pw}from"ink";import{Spinner as ac6}from"@inkjs/ui";import{jsx as cY,jsxs as Yb}from"react/jsx-runtime";function Dn1({status:$}){if($==="pending")return cY(ac6,{label:""});return cY(Pw,{color:"green",children:"\u2713"})}function sc6($){return`${$.name}: ${$.port||"...."}`}function En1({services:$,migrationsStatus:Z,home:X,serverUrl:Q}){return Yb(aD,{flexDirection:"column",paddingBottom:1,children:[cY(On1,{version:e50.version}),cY(aD,{marginBottom:1,children:cY(Pw,{dimColor:!0,children:"\u2500".repeat(80)})}),cY(aD,{children:Yb(Pw,{dimColor:!0,children:["Home: ",X]})}),Yb(aD,{gap:2,children:[$.map((Y)=>Yb(aD,{gap:1,children:[cY(Pw,{children:sc6(Y)}),cY(Dn1,{status:Y.status})]},Y.name)),Yb(aD,{gap:1,children:[cY(Pw,{children:"Migrations"}),cY(Dn1,{status:Z})]})]}),cY(aD,{children:Q?Yb(Pw,{children:["Open in browser: ",cY(Pw,{color:"cyan",children:Q})]}):cY(Pw,{dimColor:!0,children:"Starting..."})})]})}var zn1=O(()=>{Zd0();Ln1()});import{Box as ec6,Text as _m}from"ink";import{jsx as Xd0,jsxs as Qd0}from"react/jsx-runtime";function $l6($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function jn1({logs:$}){return Xd0(ec6,{flexDirection:"column",children:$.map((Z,X)=>{if(Z.rawLine)return Xd0(_m,{dimColor:!0,children:Z.rawLine},X);let Q=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return Qd0(_m,{children:[Qd0(_m,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),Xd0(_m,{color:$l6(Z.status),children:Z.status}),Qd0(_m,{dimColor:!0,children:[" ",Q.padStart(8)]})]},X)})})}var Pn1=()=>{};var Yd0={};B0(Yd0,{App:()=>Ql6});import{Box as Zl6}from"ink";import{useSyncExternalStore as Xl6}from"react";import{jsx as An1,jsxs as Yl6}from"react/jsx-runtime";function Ql6({home:$}){let Z=Xl6(al0,rl0);return Yl6(Zl6,{flexDirection:"column",children:[An1(En1,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),An1(jn1,{logs:Z.logs})]})}var Gd0=O(()=>{zn1();Pn1();rD()});var OJ="thread-gate",xN="decopilot-hosted-harness",pG="automations",Aw="background-tools";var Tn1="7";function Rn1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:Tn1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var In1=()=>{};function Gl6(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function Jd0($,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 qn1(){let $=Gl6();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:Jd0($,"--cpu-prof-dir")??process.cwd(),name:Jd0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(Jd0($,"--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 Mn1(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let X=iD();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(()=>{}),$90=setInterval(()=>void Z().catch(()=>{}),$),$90.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($90)clearInterval($90)}}var $90;var kn1=()=>{};import*as Jl6 from"bun:jsc";function Vn1(){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{Kl6()}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=Wl6()?.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 Kl6,Wl6;var Sn1=O(()=>{({startSamplingProfiler:Kl6,samplingProfilerStackTraces:Wl6}=Jl6)});function Cn1(){qn1();let $=[Mn1(),kl1(),Vn1()];return()=>{for(let Z of $)Z()}}var _n1=O(()=>{Wh0();kn1();Sn1()});var sD=_((vn1)=>{Object.defineProperty(vn1,"__esModule",{value:!0});vn1.RepublishHeaders=vn1.DirectMsgHeaders=vn1.JsHeaders=vn1.AdvisoryKind=void 0;vn1.isOrderedPushConsumerOptions=Hl6;vn1.isPullConsumer=Nl6;vn1.isPushConsumer=Ul6;vn1.isBoundPushConsumerOptions=Fl6;function Hl6($){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 Nl6($){return $.isPullConsumer()}function Ul6($){return $.isPushConsumer()}function Fl6($){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=_((fn1)=>{Object.defineProperty(fn1,"__esModule",{value:!0});fn1.TD=fn1.TE=fn1.Empty=void 0;fn1.encode=Pl6;fn1.decode=Al6;fn1.Empty=new Uint8Array(0);fn1.TE=new TextEncoder;fn1.TD=new TextDecoder;function jl6(...$){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 Pl6(...$){let Z=[];for(let X=0;X<$.length;X++)Z.push(fn1.TE.encode($[X]));if(Z.length===0)return fn1.Empty;if(Z.length===1)return Z[0];return jl6(...Z)}function Al6($){if(!$||$.length===0)return"";return fn1.TD.decode($)}});var dY=_((gn1)=>{Object.defineProperty(gn1,"__esModule",{value:!0});gn1.errors=gn1.PermissionViolationError=gn1.NoRespondersError=gn1.TimeoutError=gn1.RequestError=gn1.ProtocolError=gn1.ConnectionError=gn1.DrainingConnectionError=gn1.ClosedConnectionError=gn1.AuthorizationError=gn1.UserAuthenticationExpiredError=gn1.InvalidOperationError=gn1.InvalidArgumentError=gn1.InvalidSubjectError=void 0;class Wd0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}gn1.InvalidSubjectError=Wd0;class Z90 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 Z90(`${$} ${Z}`,X)}}gn1.InvalidArgumentError=Z90;class Hd0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}gn1.InvalidOperationError=Hd0;class X90 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new X90($);return null}}gn1.UserAuthenticationExpiredError=X90;class Q90 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 Q90($);return null}}gn1.AuthorizationError=Q90;class Nd0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}gn1.ClosedConnectionError=Nd0;class Ud0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}gn1.DrainingConnectionError=Ud0;class Fd0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}gn1.ConnectionError=Fd0;class wd0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}gn1.ProtocolError=wd0;class Bd0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof Y90}}gn1.RequestError=Bd0;class Od0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}gn1.TimeoutError=Od0;class Y90 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}gn1.NoRespondersError=Y90;class G90 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 G90($,X,Q,Y)}}gn1.PermissionViolationError=G90;gn1.errors={AuthorizationError:Q90,ClosedConnectionError:Nd0,ConnectionError:Fd0,DrainingConnectionError:Ud0,InvalidArgumentError:Z90,InvalidOperationError:Hd0,InvalidSubjectError:Wd0,NoRespondersError:Y90,PermissionViolationError:G90,ProtocolError:wd0,RequestError:Bd0,TimeoutError:Od0,UserAuthenticationExpiredError:X90}});var LJ=_((dn1)=>{Object.defineProperty(dn1,"__esModule",{value:!0});dn1.SimpleMutex=dn1.Perf=void 0;dn1.extend=hl6;dn1.render=ul6;dn1.timeout=cl6;dn1.delay=ll6;dn1.deadline=dl6;dn1.deferred=Dd0;dn1.debugDeferred=ml6;dn1.shuffle=il6;dn1.collect=nl6;dn1.jitter=ln1;dn1.backoff=pl6;dn1.nanos=tl6;dn1.millis=ol6;dn1.randomToken=sl6;var gl6=lY(),Ld0=dY();function hl6($,...Z){for(let X=0;X<Z.length;X++){let Q=Z[X];Object.keys(Q).forEach(function(Y){$[Y]=Q[Y]})}return $}function ul6($){return gl6.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function cl6($,Z=!0){let X=Z?new Ld0.TimeoutError:null,Q,Y,G=new Promise((J,K)=>{Q={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(X===null)K(new Ld0.TimeoutError);else K(X)},$)});return Object.assign(G,Q)}function ll6($=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 dl6($,Z=1000){let X=Dd0(),Q=setTimeout(()=>{X.reject(new Ld0.TimeoutError)},Z);try{return await Promise.race([$,X])}finally{clearTimeout(Q)}}function Dd0(){let $={},Z=new Promise((X,Q)=>{$={resolve:X,reject:Q}});return Object.assign(Z,$)}function ml6(){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 il6($){for(let Z=$.length-1;Z>0;Z--){let X=Math.floor(Math.random()*(Z+1));[$[Z],$[X]]=[$[X],$[Z]]}return $}async function nl6($){let Z=[];for await(let X of $)Z.push(X);return Z}class un1{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})}),$}}dn1.Perf=un1;class cn1{max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=Dd0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}dn1.SimpleMutex=cn1;function ln1($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function pl6($=[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 ln1(X>Z?$[Z]:$[X])}}}function tl6($){return $*1e6}function ol6($){return Math.floor($/1e6)}var rl6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",fN=new Uint8Array(62);for(let $=0;$<62;$++)fN[$]=rl6.charCodeAt($);var al6=218340105584896;function sl6(){let $=Math.floor(Math.random()*al6),Z=$%62,X=fN[Z];$=($-Z)/62,Z=$%62;let Q=fN[Z];$=($-Z)/62,Z=$%62;let Y=fN[Z];$=($-Z)/62,Z=$%62;let G=fN[Z];$=($-Z)/62,Z=$%62;let J=fN[Z];$=($-Z)/62,Z=$%62;let K=fN[Z];$=($-Z)/62,Z=$%62;let W=fN[Z];$=($-Z)/62;let H=fN[$];return String.fromCharCode(X,Q,Y,G,J,K,W,H)}});var an1=_((on1)=>{Object.defineProperty(on1,"__esModule",{value:!0});on1.nuid=on1.NuidImpl=void 0;var Bd6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",Tw=62,K90=12,pn1=10,in1=33,Od6=333,nn1=K90+pn1,zd0=new Uint8Array(Tw);for(let $=0;$<Tw;$++)zd0[$]=Bd6.charCodeAt($);var J90=4294967296,tn1=BigInt(Tw)**BigInt(pn1),vm=Number(tn1/(1n<<32n)),Ed0=Number(tn1%(1n<<32n));function Ld6($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function Dd6($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else Ld6($)}class jd0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(nn1),this.cbuf=new Uint8Array(K90),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()*J90);while($++<8&&this.seqHi===vm&&this.seqLo>=Ed0);if(this.seqHi===vm&&this.seqLo>=Ed0)this.seqLo=0;this.inc=Math.random()*(Od6-in1)+in1|0}setPre(){Dd6(this.cbuf);for(let $=0;$<K90;$++)this.buf[$]=zd0[this.cbuf[$]%Tw]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let X=nn1-1;X>=K90;X--){let Q=Math.floor($/Tw),G=($-Q*Tw)*J90+Z,J=Math.floor(G/Tw),K=G-J*Tw;this.buf[X]=zd0[K],$=Q,Z=J}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=J90)this.seqLo-=J90,this.seqHi+=1;if(this.seqHi>vm||this.seqHi===vm&&this.seqLo>=Ed0)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()}}on1.NuidImpl=jd0;on1.nuid=new jd0});var Zp1=_((en1)=>{Object.defineProperty(en1,"__esModule",{value:!0});en1.nuid=en1.Nuid=void 0;var sn1=an1();en1.Nuid=sn1.NuidImpl;en1.nuid=sn1.nuid});var H90=_((W90)=>{Object.defineProperty(W90,"__esModule",{value:!0});W90.nuid=W90.Nuid=void 0;var Xp1=Zp1();Object.defineProperty(W90,"Nuid",{enumerable:!0,get:function(){return Xp1.Nuid}});Object.defineProperty(W90,"nuid",{enumerable:!0,get:function(){return Xp1.nuid}})});var Rw=_((Qp1)=>{Object.defineProperty(Qp1,"__esModule",{value:!0});Qp1.DEFAULT_HOST=Qp1.DEFAULT_PORT=Qp1.Match=void 0;Qp1.syncIterator=Td6;Qp1.createInbox=Rd6;var Pd6=H90(),Ad6=dY();Qp1.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function Td6($){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 Rd6($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw Ad6.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${Pd6.nuid.next()}`}Qp1.DEFAULT_PORT=4222;Qp1.DEFAULT_HOST="127.0.0.1"});var xm=_((Kp1)=>{Object.defineProperty(Kp1,"__esModule",{value:!0});Kp1.DataBuffer=void 0;var Gp1=lY();class Jp1{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 Gp1.TE.encode($)}static toAscii($){return Gp1.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}}Kp1.DataBuffer=Jp1});var eD=_((Np1)=>{Object.defineProperty(Np1,"__esModule",{value:!0});Np1.LF=Np1.CR=Np1.CRLF=Np1.CR_LF_LEN=Np1.CR_LF=void 0;Np1.setTransportFactory=_d6;Np1.defaultPort=vd6;Np1.getUrlParseFn=xd6;Np1.newTransport=fd6;Np1.getResolveFn=bd6;Np1.protoLen=Hp1;Np1.extractProtocolMessage=yd6;var Vd6=lY(),Sd6=Rw(),Cd6=xm(),mY;function _d6($){mY=$}function vd6(){return mY!==void 0&&mY.defaultPort!==void 0?mY.defaultPort:Sd6.DEFAULT_PORT}function xd6(){return mY!==void 0&&mY.urlParseFn?mY.urlParseFn:void 0}function fd6(){if(!mY||typeof mY.factory!=="function")throw Error("transport fn is not set");return mY.factory()}function bd6(){return mY!==void 0&&mY.dnsResolveFn?mY.dnsResolveFn:void 0}Np1.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 pc6($){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 r50({port:String(J),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let L of W)oD({name:L.name,status:"ready",port:L.port});km();let N=nc6(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)Fn1(F.stdout),Fn1(F.stderr);Vm(G),oD({name:"Vite",status:"ready",port:Number(Y)}),oD({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(() => (J50(),G50));await D(K.dataDir)}};return process.on("SIGINT",()=>B("SIGINT")),process.on("SIGTERM",()=>B("SIGTERM")),{port:Number(Y),process:F}}var $d0=O(()=>{tl0();rD();sl0()});var e50;var Zd0=O(()=>{e50={name:"decocms",version:"4.204.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 oc6,Text as wn1}from"ink";import{jsx as rc6,jsxs as Bn1}from"react/jsx-runtime";function On1({version:$}){return Bn1(oc6,{flexDirection:"column",marginTop:1,children:[M50.map((Z,X)=>rc6(wn1,{color:k50[X],children:Z},X)),Bn1(wn1,{dimColor:!0,children:[" v",$]})]})}var Ln1=O(()=>{Lm()});import{Box as aD,Text as Pw}from"ink";import{Spinner as ac6}from"@inkjs/ui";import{jsx as cY,jsxs as Yb}from"react/jsx-runtime";function Dn1({status:$}){if($==="pending")return cY(ac6,{label:""});return cY(Pw,{color:"green",children:"\u2713"})}function sc6($){return`${$.name}: ${$.port||"...."}`}function En1({services:$,migrationsStatus:Z,home:X,serverUrl:Q}){return Yb(aD,{flexDirection:"column",paddingBottom:1,children:[cY(On1,{version:e50.version}),cY(aD,{marginBottom:1,children:cY(Pw,{dimColor:!0,children:"\u2500".repeat(80)})}),cY(aD,{children:Yb(Pw,{dimColor:!0,children:["Home: ",X]})}),Yb(aD,{gap:2,children:[$.map((Y)=>Yb(aD,{gap:1,children:[cY(Pw,{children:sc6(Y)}),cY(Dn1,{status:Y.status})]},Y.name)),Yb(aD,{gap:1,children:[cY(Pw,{children:"Migrations"}),cY(Dn1,{status:Z})]})]}),cY(aD,{children:Q?Yb(Pw,{children:["Open in browser: ",cY(Pw,{color:"cyan",children:Q})]}):cY(Pw,{dimColor:!0,children:"Starting..."})})]})}var zn1=O(()=>{Zd0();Ln1()});import{Box as ec6,Text as _m}from"ink";import{jsx as Xd0,jsxs as Qd0}from"react/jsx-runtime";function $l6($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function jn1({logs:$}){return Xd0(ec6,{flexDirection:"column",children:$.map((Z,X)=>{if(Z.rawLine)return Xd0(_m,{dimColor:!0,children:Z.rawLine},X);let Q=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return Qd0(_m,{children:[Qd0(_m,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),Xd0(_m,{color:$l6(Z.status),children:Z.status}),Qd0(_m,{dimColor:!0,children:[" ",Q.padStart(8)]})]},X)})})}var Pn1=()=>{};var Yd0={};B0(Yd0,{App:()=>Ql6});import{Box as Zl6}from"ink";import{useSyncExternalStore as Xl6}from"react";import{jsx as An1,jsxs as Yl6}from"react/jsx-runtime";function Ql6({home:$}){let Z=Xl6(al0,rl0);return Yl6(Zl6,{flexDirection:"column",children:[An1(En1,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),An1(jn1,{logs:Z.logs})]})}var Gd0=O(()=>{zn1();Pn1();rD()});var OJ="thread-gate",xN="decopilot-hosted-harness",pG="automations",Aw="background-tools";var Tn1="7";function Rn1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:Tn1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var In1=()=>{};function Gl6(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function Jd0($,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 qn1(){let $=Gl6();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:Jd0($,"--cpu-prof-dir")??process.cwd(),name:Jd0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(Jd0($,"--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 Mn1(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let X=iD();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(()=>{}),$90=setInterval(()=>void Z().catch(()=>{}),$),$90.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($90)clearInterval($90)}}var $90;var kn1=()=>{};import*as Jl6 from"bun:jsc";function Vn1(){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{Kl6()}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=Wl6()?.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 Kl6,Wl6;var Sn1=O(()=>{({startSamplingProfiler:Kl6,samplingProfilerStackTraces:Wl6}=Jl6)});function Cn1(){qn1();let $=[Mn1(),kl1(),Vn1()];return()=>{for(let Z of $)Z()}}var _n1=O(()=>{Wh0();kn1();Sn1()});var sD=_((vn1)=>{Object.defineProperty(vn1,"__esModule",{value:!0});vn1.RepublishHeaders=vn1.DirectMsgHeaders=vn1.JsHeaders=vn1.AdvisoryKind=void 0;vn1.isOrderedPushConsumerOptions=Hl6;vn1.isPullConsumer=Nl6;vn1.isPushConsumer=Ul6;vn1.isBoundPushConsumerOptions=Fl6;function Hl6($){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 Nl6($){return $.isPullConsumer()}function Ul6($){return $.isPushConsumer()}function Fl6($){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=_((fn1)=>{Object.defineProperty(fn1,"__esModule",{value:!0});fn1.TD=fn1.TE=fn1.Empty=void 0;fn1.encode=Pl6;fn1.decode=Al6;fn1.Empty=new Uint8Array(0);fn1.TE=new TextEncoder;fn1.TD=new TextDecoder;function jl6(...$){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 Pl6(...$){let Z=[];for(let X=0;X<$.length;X++)Z.push(fn1.TE.encode($[X]));if(Z.length===0)return fn1.Empty;if(Z.length===1)return Z[0];return jl6(...Z)}function Al6($){if(!$||$.length===0)return"";return fn1.TD.decode($)}});var dY=_((gn1)=>{Object.defineProperty(gn1,"__esModule",{value:!0});gn1.errors=gn1.PermissionViolationError=gn1.NoRespondersError=gn1.TimeoutError=gn1.RequestError=gn1.ProtocolError=gn1.ConnectionError=gn1.DrainingConnectionError=gn1.ClosedConnectionError=gn1.AuthorizationError=gn1.UserAuthenticationExpiredError=gn1.InvalidOperationError=gn1.InvalidArgumentError=gn1.InvalidSubjectError=void 0;class Wd0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}gn1.InvalidSubjectError=Wd0;class Z90 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 Z90(`${$} ${Z}`,X)}}gn1.InvalidArgumentError=Z90;class Hd0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}gn1.InvalidOperationError=Hd0;class X90 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new X90($);return null}}gn1.UserAuthenticationExpiredError=X90;class Q90 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 Q90($);return null}}gn1.AuthorizationError=Q90;class Nd0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}gn1.ClosedConnectionError=Nd0;class Ud0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}gn1.DrainingConnectionError=Ud0;class Fd0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}gn1.ConnectionError=Fd0;class wd0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}gn1.ProtocolError=wd0;class Bd0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof Y90}}gn1.RequestError=Bd0;class Od0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}gn1.TimeoutError=Od0;class Y90 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}gn1.NoRespondersError=Y90;class G90 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 G90($,X,Q,Y)}}gn1.PermissionViolationError=G90;gn1.errors={AuthorizationError:Q90,ClosedConnectionError:Nd0,ConnectionError:Fd0,DrainingConnectionError:Ud0,InvalidArgumentError:Z90,InvalidOperationError:Hd0,InvalidSubjectError:Wd0,NoRespondersError:Y90,PermissionViolationError:G90,ProtocolError:wd0,RequestError:Bd0,TimeoutError:Od0,UserAuthenticationExpiredError:X90}});var LJ=_((dn1)=>{Object.defineProperty(dn1,"__esModule",{value:!0});dn1.SimpleMutex=dn1.Perf=void 0;dn1.extend=hl6;dn1.render=ul6;dn1.timeout=cl6;dn1.delay=ll6;dn1.deadline=dl6;dn1.deferred=Dd0;dn1.debugDeferred=ml6;dn1.shuffle=il6;dn1.collect=nl6;dn1.jitter=ln1;dn1.backoff=pl6;dn1.nanos=tl6;dn1.millis=ol6;dn1.randomToken=sl6;var gl6=lY(),Ld0=dY();function hl6($,...Z){for(let X=0;X<Z.length;X++){let Q=Z[X];Object.keys(Q).forEach(function(Y){$[Y]=Q[Y]})}return $}function ul6($){return gl6.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function cl6($,Z=!0){let X=Z?new Ld0.TimeoutError:null,Q,Y,G=new Promise((J,K)=>{Q={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(X===null)K(new Ld0.TimeoutError);else K(X)},$)});return Object.assign(G,Q)}function ll6($=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 dl6($,Z=1000){let X=Dd0(),Q=setTimeout(()=>{X.reject(new Ld0.TimeoutError)},Z);try{return await Promise.race([$,X])}finally{clearTimeout(Q)}}function Dd0(){let $={},Z=new Promise((X,Q)=>{$={resolve:X,reject:Q}});return Object.assign(Z,$)}function ml6(){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 il6($){for(let Z=$.length-1;Z>0;Z--){let X=Math.floor(Math.random()*(Z+1));[$[Z],$[X]]=[$[X],$[Z]]}return $}async function nl6($){let Z=[];for await(let X of $)Z.push(X);return Z}class un1{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})}),$}}dn1.Perf=un1;class cn1{max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=Dd0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}dn1.SimpleMutex=cn1;function ln1($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function pl6($=[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 ln1(X>Z?$[Z]:$[X])}}}function tl6($){return $*1e6}function ol6($){return Math.floor($/1e6)}var rl6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",fN=new Uint8Array(62);for(let $=0;$<62;$++)fN[$]=rl6.charCodeAt($);var al6=218340105584896;function sl6(){let $=Math.floor(Math.random()*al6),Z=$%62,X=fN[Z];$=($-Z)/62,Z=$%62;let Q=fN[Z];$=($-Z)/62,Z=$%62;let Y=fN[Z];$=($-Z)/62,Z=$%62;let G=fN[Z];$=($-Z)/62,Z=$%62;let J=fN[Z];$=($-Z)/62,Z=$%62;let K=fN[Z];$=($-Z)/62,Z=$%62;let W=fN[Z];$=($-Z)/62;let H=fN[$];return String.fromCharCode(X,Q,Y,G,J,K,W,H)}});var an1=_((on1)=>{Object.defineProperty(on1,"__esModule",{value:!0});on1.nuid=on1.NuidImpl=void 0;var Bd6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",Tw=62,K90=12,pn1=10,in1=33,Od6=333,nn1=K90+pn1,zd0=new Uint8Array(Tw);for(let $=0;$<Tw;$++)zd0[$]=Bd6.charCodeAt($);var J90=4294967296,tn1=BigInt(Tw)**BigInt(pn1),vm=Number(tn1/(1n<<32n)),Ed0=Number(tn1%(1n<<32n));function Ld6($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function Dd6($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else Ld6($)}class jd0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(nn1),this.cbuf=new Uint8Array(K90),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()*J90);while($++<8&&this.seqHi===vm&&this.seqLo>=Ed0);if(this.seqHi===vm&&this.seqLo>=Ed0)this.seqLo=0;this.inc=Math.random()*(Od6-in1)+in1|0}setPre(){Dd6(this.cbuf);for(let $=0;$<K90;$++)this.buf[$]=zd0[this.cbuf[$]%Tw]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let X=nn1-1;X>=K90;X--){let Q=Math.floor($/Tw),G=($-Q*Tw)*J90+Z,J=Math.floor(G/Tw),K=G-J*Tw;this.buf[X]=zd0[K],$=Q,Z=J}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=J90)this.seqLo-=J90,this.seqHi+=1;if(this.seqHi>vm||this.seqHi===vm&&this.seqLo>=Ed0)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()}}on1.NuidImpl=jd0;on1.nuid=new jd0});var Zp1=_((en1)=>{Object.defineProperty(en1,"__esModule",{value:!0});en1.nuid=en1.Nuid=void 0;var sn1=an1();en1.Nuid=sn1.NuidImpl;en1.nuid=sn1.nuid});var H90=_((W90)=>{Object.defineProperty(W90,"__esModule",{value:!0});W90.nuid=W90.Nuid=void 0;var Xp1=Zp1();Object.defineProperty(W90,"Nuid",{enumerable:!0,get:function(){return Xp1.Nuid}});Object.defineProperty(W90,"nuid",{enumerable:!0,get:function(){return Xp1.nuid}})});var Rw=_((Qp1)=>{Object.defineProperty(Qp1,"__esModule",{value:!0});Qp1.DEFAULT_HOST=Qp1.DEFAULT_PORT=Qp1.Match=void 0;Qp1.syncIterator=Td6;Qp1.createInbox=Rd6;var Pd6=H90(),Ad6=dY();Qp1.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function Td6($){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 Rd6($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw Ad6.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${Pd6.nuid.next()}`}Qp1.DEFAULT_PORT=4222;Qp1.DEFAULT_HOST="127.0.0.1"});var xm=_((Kp1)=>{Object.defineProperty(Kp1,"__esModule",{value:!0});Kp1.DataBuffer=void 0;var Gp1=lY();class Jp1{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 Gp1.TE.encode($)}static toAscii($){return Gp1.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}}Kp1.DataBuffer=Jp1});var eD=_((Np1)=>{Object.defineProperty(Np1,"__esModule",{value:!0});Np1.LF=Np1.CR=Np1.CRLF=Np1.CR_LF_LEN=Np1.CR_LF=void 0;Np1.setTransportFactory=_d6;Np1.defaultPort=vd6;Np1.getUrlParseFn=xd6;Np1.newTransport=fd6;Np1.getResolveFn=bd6;Np1.protoLen=Hp1;Np1.extractProtocolMessage=yd6;var Vd6=lY(),Sd6=Rw(),Cd6=xm(),mY;function _d6($){mY=$}function vd6(){return mY!==void 0&&mY.defaultPort!==void 0?mY.defaultPort:Sd6.DEFAULT_PORT}function xd6(){return mY!==void 0&&mY.urlParseFn?mY.urlParseFn:void 0}function fd6(){if(!mY||typeof mY.factory!=="function")throw Error("transport fn is not set");return mY.factory()}function bd6(){return mY!==void 0&&mY.dnsResolveFn?mY.dnsResolveFn:void 0}Np1.CR_LF=`\r
1336
1336
  `;Np1.CR_LF_LEN=Np1.CR_LF.length;Np1.CRLF=Cd6.DataBuffer.fromAscii(Np1.CR_LF);Np1.CR=new Uint8Array(Np1.CRLF)[0];Np1.LF=new Uint8Array(Np1.CRLF)[1];function Hp1($){for(let Z=0;Z<$.length;Z++){let X=Z+1;if($.byteLength>X&&$[Z]===Np1.CR&&$[X]===Np1.LF)return X+1}return 0}function yd6($){let Z=Hp1($);if(Z>0){let Q=new Uint8Array($).slice(0,Z);return Vd6.TD.decode(Q)}return""}});var Id0=_((Ep1)=>{Object.defineProperty(Ep1,"__esModule",{value:!0});Ep1.ipV4=Op1;Ep1.isIP=td6;Ep1.parseIP=Lp1;var fm=4,$E=16,N90=48,Bp1=57,Fp1=65,nd6=70,wp1=97,pd6=102,Rd0=16777215;function Op1($,Z,X,Q){let Y=new Uint8Array($E);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 td6($){return Lp1($)!==void 0}function Lp1($){for(let Z=0;Z<$.length;Z++)switch($[Z]){case".":return Dp1($);case":":return od6($)}return}function Dp1($){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}=rd6($);if(!G||Q>255)return;$=$.substring(Y),Z[X]=Q}return Op1(Z[0],Z[1],Z[2],Z[3])}function od6($){let Z=new Uint8Array($E),X=-1;if($.length>=2&&$[0]===":"&&$[1]===":"){if(X=0,$=$.substring(2),$.length===0)return Z}let Q=0;while(Q<$E){let{n:Y,c:G,ok:J}=ad6($);if(!J||Y>65535)return;if(G<$.length&&$[G]==="."){if(X<0&&Q!=$E-fm)return;if(Q+fm>$E)return;let K=Dp1($);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<$E){if(X<0)return;let Y=$E-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 rd6($){let Z=0,X=0;for(Z=0;Z<$.length&&N90<=$.charCodeAt(Z)&&$.charCodeAt(Z)<=Bp1;Z++)if(X=X*10+($.charCodeAt(Z)-N90),X>=Rd0)return{n:Rd0,c:Z,ok:!1};if(Z===0)return{n:0,c:0,ok:!1};return{n:X,c:Z,ok:!0}}function ad6($){let Z=0,X=0;for(X=0;X<$.length;X++){if(N90<=$.charCodeAt(X)&&$.charCodeAt(X)<=Bp1)Z*=16,Z+=$.charCodeAt(X)-N90;else if(wp1<=$.charCodeAt(X)&&$.charCodeAt(X)<=pd6)Z*=16,Z+=$.charCodeAt(X)-wp1+10;else if(Fp1<=$.charCodeAt(X)&&$.charCodeAt(X)<=nd6)Z*=16,Z+=$.charCodeAt(X)-Fp1+10;else break;if(Z>=Rd0)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 Cd0=_((jp1)=>{Object.defineProperty(jp1,"__esModule",{value:!0});jp1.Servers=jp1.ServerImpl=void 0;jp1.isIPV4OrHostname=zp1;jp1.hostPort=Sd0;var qd0=eD(),Md0=LJ(),kd0=Id0(),Zm6=Rw(),Xm6=dY();function zp1($){if($.indexOf("[")!==-1||$.indexOf("::")!==-1)return!1;if($.indexOf(".")!==-1)return!0;if($.split(":").length<=2)return!0;return!1}function Vd0($){return!zp1($)}function Qm6($){let X=$.toUpperCase().indexOf("::FFFF:");if(X!==-1&&$.indexOf(".")!==-1){let Q=$.substring(X+7);return Q=Q.replace("[",""),Q.replace("]","")}return $}function Sd0($){if($=$.trim(),$.match(/^(.*:\/\/)(.*)/m))$=$.replace(/^(.*:\/\/)(.*)/gm,"$2");if($=Qm6($),Vd0($)&&$.indexOf("[")===-1)$=`[${$}]`;let Z=Vd0($)?$.match(/(]:)(\d+)/):$.match(/(:)(\d+)/),X=Z&&Z.length===3&&Z[1]&&Z[2]?parseInt(Z[2]):Zm6.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=Sd0($);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,kd0.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}://${Vd0(Q)?"["+Q+"]":Q}`);G.port=`${this.port}`;let J=new Gb(G.host,!1);J.tlsName=this.hostname,Z.push(J)}}if($.randomize)(0,Md0.shuffle)(Z);return this.resolves=Z,Z}}jp1.ServerImpl=Gb;class U90{firstSelect;servers;currentServer;tlsName;randomize;constructor($={}){this.firstSelect=!0,this.servers=[],this.tlsName="",this.randomize=$.randomize||!1}setServers($){if(!Array.isArray($)||$.length===0)throw Xm6.InvalidArgumentError.format("servers","cannot be empty");let Z=(0,qd0.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}=Sd0(Y),J=X.get(G);if(J)J.gossiped=!1,Q.push(J);else Q.push(new Gb(Y))}if(this.randomize)(0,Md0.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,kd0.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,qd0.getUrlParseFn)();$=X?X($):$;let Q=new Gb($,Z);if((0,kd0.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 U90.freezeAll(this.servers)}snapshotForHandler(){let $=this.currentServer;if(!$)return this.snapshot();let Z=this.servers.indexOf($);if(Z<=0)return this.snapshot();return U90.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,qd0.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,Md0.shuffle)(W),this.servers=K?[K,...W]:W}return{added:X,deleted:Q}}}jp1.Servers=U90});var F90=_((Rp1)=>{Object.defineProperty(Rp1,"__esModule",{value:!0});Rp1.QueuedIteratorImpl=void 0;var _d0=LJ(),Ap1=dY();class Tp1{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,_d0.deferred)(),this.yields=[],this.iterClosed=(0,_d0.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 Ap1.InvalidOperationError("iterator cannot be used when a callback is registered");if(this.yielding)throw new Ap1.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,_d0.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}}Rp1.QueuedIteratorImpl=Tp1});var vd0=_((kp1)=>{Object.defineProperty(kp1,"__esModule",{value:!0});kp1.MuxSubscription=void 0;var Km6=Rw(),qp1=dY();class Mp1{baseInbox;reqs;constructor(){this.reqs=new Map}size(){return this.reqs.size}init($){return this.baseInbox=`${(0,Km6.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 qp1.NoRespondersError(Q.requestSubject):null;Q.resolver($,Z)}}}}close(){let $=new qp1.RequestError("connection closed");this.reqs.forEach((Z)=>{Z.resolver($,{})})}}kp1.MuxSubscription=Mp1});var xd0=_((Cp1)=>{Object.defineProperty(Cp1,"__esModule",{value:!0});Cp1.Heartbeat=void 0;var Wm6=LJ();class Sp1{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,Wm6.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})}}Cp1.Heartbeat=Sp1});var yd0=_((bp1)=>{Object.defineProperty(bp1,"__esModule",{value:!0});bp1.DenoBuffer=bp1.MAX_SIZE=bp1.AssertionError=void 0;bp1.assert=xp1;bp1.concat=fp1;bp1.append=Nm6;bp1.readAll=Um6;bp1.writeAll=Fm6;var Hm6=lY();class fd0 extends Error{constructor($){super($);this.name="AssertionError"}}bp1.AssertionError=fd0;function xp1($,Z="Assertion failed."){if(!$)throw new fd0(Z)}var vp1=32768;bp1.MAX_SIZE=4294967294;function w90($,Z,X=0){let Q=Z.byteLength-X;if($.byteLength>Q)$=$.subarray(0,Q);return Z.set($,X),$.byteLength}function fp1($,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 Nm6($,Z){return fp1($,Uint8Array.of(Z))}class bd0{_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($){xp1($<=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=w90(this._buf.subarray(this._off),$);return this._off+=Z,Z}writeByte($){return this.write(Uint8Array.of($))}writeString($){return this.write(Hm6.TE.encode($))}write($){let Z=this._grow($.byteLength);return w90($,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)w90(this._buf.subarray(this._off),this._buf);else if(Q+$>bp1.MAX_SIZE)throw Error("The buffer cannot be grown beyond the maximum size.");else{let Y=new Uint8Array(Math.min(2*Q+$,bp1.MAX_SIZE));w90(this._buf.subarray(this._off),Y),this._buf=Y}return this._off=0,this._reslice(Math.min(Z+$,bp1.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}}}bp1.DenoBuffer=bd0;function Um6($){let Z=new bd0;return Z.readFrom($),Z.bytes()}function Fm6($,Z){let X=0;while(X<Z.length)X+=$.write(Z.subarray(X))}});var ud0=_((cp1)=>{Object.defineProperty(cp1,"__esModule",{value:!0});cp1.cc=cp1.State=cp1.Parser=cp1.Kind=void 0;cp1.describe=zm6;var gd0=yd0(),hd0=lY();cp1.Kind={OK:0,ERR:1,MSG:2,INFO:3,PING:4,PONG:5};function zm6($){let Z,X="";switch($.kind){case cp1.Kind.MSG:Z="MSG";break;case cp1.Kind.OK:Z="OK";break;case cp1.Kind.ERR:Z="ERR",X=hd0.TD.decode($.data);break;case cp1.Kind.PING:Z="PING";break;case cp1.Kind.PONG:Z="PONG";break;case cp1.Kind.INFO:Z="INFO",X=hd0.TD.decode($.data)}return`${Z}: ${X}`}function gp1(){let $={};return $.sid=-1,$.hdr=-1,$.size=-1,$}var hp1=48,jm6=57,Jb=67108864;class up1{dispatcher;state;as;drop;hdr;ma;argBuf;msgBuf;constructor($){this.dispatcher=$,this.state=cp1.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 cp1.State.OP_START:switch(X){case cp1.cc.M:case cp1.cc.m:this.state=cp1.State.OP_M,this.hdr=-1,this.ma=gp1();break;case cp1.cc.H:case cp1.cc.h:this.state=cp1.State.OP_H,this.hdr=0,this.ma=gp1();break;case cp1.cc.P:case cp1.cc.p:this.state=cp1.State.OP_P;break;case cp1.cc.PLUS:this.state=cp1.State.OP_PLUS;break;case cp1.cc.MINUS:this.state=cp1.State.OP_MINUS;break;case cp1.cc.I:case cp1.cc.i:this.state=cp1.State.OP_I;break;default:throw this.fail($.subarray(Z))}break;case cp1.State.OP_H:switch(X){case cp1.cc.M:case cp1.cc.m:this.state=cp1.State.OP_M;break;default:throw this.fail($.subarray(Z))}break;case cp1.State.OP_M:switch(X){case cp1.cc.S:case cp1.cc.s:this.state=cp1.State.OP_MS;break;default:throw this.fail($.subarray(Z))}break;case cp1.State.OP_MS:switch(X){case cp1.cc.G:case cp1.cc.g:this.state=cp1.State.OP_MSG;break;default:throw this.fail($.subarray(Z))}break;case cp1.State.OP_MSG:switch(X){case cp1.cc.SPACE:case cp1.cc.TAB:this.state=cp1.State.OP_MSG_SPC;break;default:throw this.fail($.subarray(Z))}break;case cp1.State.OP_MSG_SPC:switch(X){case cp1.cc.SPACE:case cp1.cc.TAB:continue;default:this.state=cp1.State.MSG_ARG,this.as=Z}break;case cp1.State.MSG_ARG:switch(X){case cp1.cc.CR:this.drop=1;break;case cp1.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=cp1.State.MSG_PAYLOAD,Z=this.as+this.ma.size-1;break}default:if(this.argBuf)this.argBuf.writeByte(X)}break;case cp1.State.MSG_PAYLOAD:if(this.msgBuf)if(this.msgBuf.length>=this.ma.size){let Q=this.msgBuf.bytes({copy:!1});this.dispatcher.push({kind:cp1.Kind.MSG,msg:this.ma,data:Q}),this.argBuf=void 0,this.msgBuf=void 0,this.state=cp1.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:cp1.Kind.MSG,msg:this.ma,data:$.subarray(this.as,Z)}),this.argBuf=void 0,this.msgBuf=void 0,this.state=cp1.State.MSG_END;break;case cp1.State.MSG_END:switch(X){case cp1.cc.NL:this.drop=0,this.as=Z+1,this.state=cp1.State.OP_START;break;default:continue}break;case cp1.State.OP_PLUS:switch(X){case cp1.cc.O:case cp1.cc.o:this.state=cp1.State.OP_PLUS_O;break;default:throw this.fail($.subarray(Z))}break;case cp1.State.OP_PLUS_O:switch(X){case cp1.cc.K:case cp1.cc.k:this.state=cp1.State.OP_PLUS_OK;break;default:throw this.fail($.subarray(Z))}break;case cp1.State.OP_PLUS_OK:switch(X){case cp1.cc.NL:this.dispatcher.push({kind:cp1.Kind.OK}),this.drop=0,this.state=cp1.State.OP_START;break}break;case cp1.State.OP_MINUS:switch(X){case cp1.cc.E:case cp1.cc.e:this.state=cp1.State.OP_MINUS_E;break;default:throw this.fail($.subarray(Z))}break;case cp1.State.OP_MINUS_E:switch(X){case cp1.cc.R:case cp1.cc.r:this.state=cp1.State.OP_MINUS_ER;break;default:throw this.fail($.subarray(Z))}break;case cp1.State.OP_MINUS_ER:switch(X){case cp1.cc.R:case cp1.cc.r:this.state=cp1.State.OP_MINUS_ERR;break;default:throw this.fail($.subarray(Z))}break;case cp1.State.OP_MINUS_ERR:switch(X){case cp1.cc.SPACE:case cp1.cc.TAB:this.state=cp1.State.OP_MINUS_ERR_SPC;break;default:throw this.fail($.subarray(Z))}break;case cp1.State.OP_MINUS_ERR_SPC:switch(X){case cp1.cc.SPACE:case cp1.cc.TAB:continue;default:this.state=cp1.State.MINUS_ERR_ARG,this.as=Z}break;case cp1.State.MINUS_ERR_ARG:switch(X){case cp1.cc.CR:this.drop=1;break;case cp1.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:cp1.Kind.ERR,data:Q}),this.drop=0,this.as=Z+1,this.state=cp1.State.OP_START;break}default:if(this.argBuf)this.argBuf.write(Uint8Array.of(X))}break;case cp1.State.OP_P:switch(X){case cp1.cc.I:case cp1.cc.i:this.state=cp1.State.OP_PI;break;case cp1.cc.O:case cp1.cc.o:this.state=cp1.State.OP_PO;break;default:throw this.fail($.subarray(Z))}break;case cp1.State.OP_PO:switch(X){case cp1.cc.N:case cp1.cc.n:this.state=cp1.State.OP_PON;break;default:throw this.fail($.subarray(Z))}break;case cp1.State.OP_PON:switch(X){case cp1.cc.G:case cp1.cc.g:this.state=cp1.State.OP_PONG;break;default:throw this.fail($.subarray(Z))}break;case cp1.State.OP_PONG:switch(X){case cp1.cc.NL:this.dispatcher.push({kind:cp1.Kind.PONG}),this.drop=0,this.state=cp1.State.OP_START;break}break;case cp1.State.OP_PI:switch(X){case cp1.cc.N:case cp1.cc.n:this.state=cp1.State.OP_PIN;break;default:throw this.fail($.subarray(Z))}break;case cp1.State.OP_PIN:switch(X){case cp1.cc.G:case cp1.cc.g:this.state=cp1.State.OP_PING;break;default:throw this.fail($.subarray(Z))}break;case cp1.State.OP_PING:switch(X){case cp1.cc.NL:this.dispatcher.push({kind:cp1.Kind.PING}),this.drop=0,this.state=cp1.State.OP_START;break}break;case cp1.State.OP_I:switch(X){case cp1.cc.N:case cp1.cc.n:this.state=cp1.State.OP_IN;break;default:throw this.fail($.subarray(Z))}break;case cp1.State.OP_IN:switch(X){case cp1.cc.F:case cp1.cc.f:this.state=cp1.State.OP_INF;break;default:throw this.fail($.subarray(Z))}break;case cp1.State.OP_INF:switch(X){case cp1.cc.O:case cp1.cc.o:this.state=cp1.State.OP_INFO;break;default:throw this.fail($.subarray(Z))}break;case cp1.State.OP_INFO:switch(X){case cp1.cc.SPACE:case cp1.cc.TAB:this.state=cp1.State.OP_INFO_SPC;break;default:throw this.fail($.subarray(Z))}break;case cp1.State.OP_INFO_SPC:switch(X){case cp1.cc.SPACE:case cp1.cc.TAB:continue;default:this.state=cp1.State.INFO_ARG,this.as=Z}break;case cp1.State.INFO_ARG:switch(X){case cp1.cc.CR:this.drop=1;break;case cp1.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:cp1.Kind.INFO,data:Q}),this.drop=0,this.as=Z+1,this.state=cp1.State.OP_START;break}default:if(this.argBuf)this.argBuf.writeByte(X)}break;default:throw this.fail($.subarray(Z))}}if((this.state===cp1.State.MSG_ARG||this.state===cp1.State.MINUS_ERR_ARG||this.state===cp1.State.INFO_ARG)&&!this.argBuf)this.argBuf=new gd0.DenoBuffer($.subarray(this.as,Z-this.drop));if(this.state===cp1.State.MSG_PAYLOAD&&!this.msgBuf){if(!this.argBuf)this.cloneMsgArg();this.msgBuf=new gd0.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 gd0.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 cp1.cc.SPACE:case cp1.cc.TAB:case cp1.cc.CR:case cp1.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}: ${hd0.TD.decode($)}`)}processHeaderMsgArgs($){let Z=[],X=-1;for(let Q=0;Q<$.length;Q++)switch($[Q]){case cp1.cc.SPACE:case cp1.cc.TAB:case cp1.cc.CR:case cp1.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]<hp1||$[Q]>jm6)return-1;X=X*10+($[Q]-hp1)}return Z!==void 0&&X>Z?-1:X}}cp1.Parser=up1;cp1.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};cp1.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 L90=_((dp1)=>{Object.defineProperty(dp1,"__esModule",{value:!0});dp1.MsgHdrsImpl=void 0;dp1.canonicalMIMEHeaderKey=ld0;dp1.headers=Tm6;var lp1=lY(),DJ=Rw(),O90=dY();function ld0($){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 O90.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 Tm6($=0,Z=""){if($===0&&Z!=="")throw O90.InvalidArgumentError.format("code","is required");else if($>0&&Z==="")throw O90.InvalidArgumentError.format("description","is required");return new Kb($,Z)}var cd0="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=lp1.TD.decode($).split(`\r
1337
1337
  `),Y=Q[0];if(Y!==cd0){let G=Y.replace(cd0,"").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 $=cd0;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.`,p_$;var o_$=B(()=>{k4();mw();$41();_86=Z41.object({requiresReview:Z41.boolean().describe("true if the changes should go through pull-request review"),reason:Z41.string().describe("One short sentence explaining the decision (max ~120 chars)")});p_$={requiresReview:!1,reason:""}});function x86($){if(!$||$.includes(".."))return!1;return f86.test($)}function r_$($){let Z=typeof $.__resolveType==="string"?$.__resolveType:null;if(!Z||!x86(Z))return null;let{__resolveType:X,...Q}=$;return{resolveType:Z,payload:Q}}function a_$($,Z){return`${$.replace(/\/+$/,"")}/deco/invoke/${Z}`}var f86;var s_$=B(()=>{f86=/^[\w./@-]+$/});function X41($){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 e_$($,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 $v$($,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 Y=$.organization?.id;if(!Y)throw new ig(d7);await Rw({ctx:$,connectionId:Q.connectionId,organizationId:Y,forceRefresh:!0,onLegacyMintError:(N)=>{let F=N instanceof Error?N.message:d7;throw new ig(F)}});let{cloneUrl:G,gitUserName:J,gitUserEmail:W}=await Iw(Q.connectionId,Q.owner,Q.name,$.db,$.vault),K=Ej0($),H=await Z.proxyDaemonRequest(X,"/_sandbox/config",{method:"PUT",headers:new Headers({"content-type":"application/json"}),body:JSON.stringify({git:{repository:{cloneUrl:G},identity:{userName:J,userEmail:W}},...K?{operator:K}:{}})});if(!H.ok){let N=await lw(H,y86).catch(()=>H.statusText);throw Error(`Failed to refresh sandbox git credentials (${H.status}): ${N}`)}}var y86=10485760,ig;var Zv$=B(()=>{GN();p81();vi();rf();ig=class ig extends Error{constructor($){super($);this.name="GitPushAuthError"}}});function h86($){let Z=$.startsWith("thread:")?$.slice(7):$;if(!Z||Z.length>255||Z.includes("..")||Z.startsWith("/")||Z.endsWith("/")||Z.endsWith(".lock")||!g86.test(Z))throw Error(`Invalid branch name: ${$}`)}function lC($){return AbortSignal.any([$.req.raw.signal,AbortSignal.timeout(c86)])}function dC($){let{runner:Z}=$.get("vmClaim");if(!Z)return $.json({error:"No sandbox runner configured"},503);return Z}function Q41($,Z){let Q=(jj0.get($)??Promise.resolve()).catch(()=>{}).then(Z),Y=Q.catch(()=>{});return jj0.set($,Y),Y.finally(()=>{if(jj0.get($)===Y)jj0.delete($)}),Q}async function fZ($,Z,X){let Q=dC($);if(Q instanceof Response)return Q;let{claimName:Y,userId:G,projectRef:J}=$.get("vmClaim"),W=X?.method??"POST",K=null,H=new Headers;if(X?.jsonBody!==void 0)K=X.jsonBody,H.set("content-type","application/json");else if(X?.forwardJsonBody)K=await $.req.text(),H.set("content-type","application/json");let N=X?.signal,F={method:W,headers:H,body:K,...N?{signal:N}:{}},U=async()=>{let w=await Q.proxyDaemonRequest(Y,Z,F);if(X?.map404to410&&w.status===404){try{await w.body?.cancel()}catch{}if(await Q.adoptLiveClaim?.({userId:G,projectRef:J},Y))w=await Q.proxyDaemonRequest(Y,Z,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",...uY}})}}let O=await w.text(),D=X?.redactRepoDirUnlessDesktop&&Q.kind!=="user-desktop"?d86(O):O,L=w.headers.get("content-type")??"application/json";return new Response(D,{status:w.status,headers:{"content-type":L,...uY}})};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 d86($){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 zj0($,Z,X,Q="GET",Y){let G=await $.proxyDaemonRequest(Z,X,{method:Q,headers:new Headers,body:null});if(G.status===404&&Y){try{await G.body?.cancel()}catch{}if(await $.adoptLiveClaim?.(Y,Z))G=await $.proxyDaemonRequest(Z,X,{method:Q,headers:new Headers,body:null})}if(G.status===404){try{await G.body?.cancel()}catch{}throw Error("SANDBOX_GONE")}let J=await G.text();if(!G.ok){let W=`Daemon error (${G.status})`;try{W=JSON.parse(J).error??W}catch{}throw Error(W)}return JSON.parse(J)}function m86($){return Yv$.includes($)}var g86,Xv$=524288,u86=65536,c86=1e4,Qv$=2000,l86,jj0,uY,Yv$,Gv$=()=>{let $=new B1;return $.use("/:virtualMcpId/:branch/*",l86),$.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||!m86(X))return Z.json({error:`step must be one of: ${Yv$.join(", ")}`},400);if(X==="start"){let Q=Z.get("vmClaim");if(Q.runner){let Y=r(Z.var.studioContext),G=pF0(Q.virtualMcpMetadata);try{await oF0({ctx:Z.var.studioContext,runner:Q.runner,handle:Q.claimName,orgId:Y.id,userId:Q.callerUserId,entries:G})}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 c_$(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(Qv$)])})),$.post("/:virtualMcpId/:branch/git/status",(Z)=>fZ(Z,"/_sandbox/git/status",{map404to410:!0,signal:AbortSignal.any([Z.req.raw.signal,AbortSignal.timeout(Qv$)])})),$.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:Y,connectionIds:G}=Z.get("vmClaim"),J=Z.var.studioContext;return Q41(Q,async()=>{try{await t81(J,X,Q);let W=e_$(Y,G);if(W)await $v$(J,X,Q,W)}catch(W){if(W instanceof ig)return Z.json({error:W.message},403,uY);let K=W instanceof Error?W.message:String(W);return Z.json({error:K},502,uY)}return fZ(Z,"/_sandbox/git/publish",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/discard",(Z)=>{let{claimName:X}=Z.get("vmClaim");return Q41(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"),Y=Z.var.studioContext;return Q41(Q,async()=>{try{await t81(Y,X,Q)}catch(G){let J=G instanceof Error?G.message:String(G);return Z.json({error:J},502,uY)}return fZ(Z,"/_sandbox/git/rebase",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/suggest-commit",HZ({maxSize:Xv$,onError:(Z)=>Z.json({error:"Payload too large"},413,uY)}),async(Z)=>{let X=dC(Z);if(X instanceof Response)return X;let{claimName:Q,userId:Y,projectRef:G}=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]=a81(K)&&N?[K,H]:await Promise.all([zj0(X,Q,"/_sandbox/git/status","GET",{userId:Y,projectRef:G}),zj0(X,Q,"/_sandbox/git/diff","GET",{userId:Y,projectRef:G})]),w=await n_$(J,F,U);return Z.json(w,200,uY)}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,uY);return Z.json({error:K},502,uY)}}),$.post("/:virtualMcpId/:branch/git/judge-review",HZ({maxSize:Xv$,onError:(Z)=>Z.json({error:"Payload too large"},413,uY)}),async(Z)=>{let X=dC(Z);if(X instanceof Response)return X;let{claimName:Q,userId:Y,projectRef:G}=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]=a81(K)&&N?[K,H]:await Promise.all([zj0(X,Q,"/_sandbox/git/status","GET",{userId:Y,projectRef:G}),zj0(X,Q,"/_sandbox/git/diff","GET",{userId:Y,projectRef:G})]),w=await t_$(J,F,U,typeof W.language==="string"?W.language:void 0);return Z.json(w,200,uY)}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,uY);return Z.json({error:K},502,uY)}}),$.get("/:virtualMcpId/:branch/preview-fetch",async(Z)=>{let X=dC(Z);if(X instanceof Response)return X;let{claimName:Q}=Z.get("vmClaim"),Y=Z.req.query("path");if(!Y||!Y.startsWith("/")||Y.startsWith("//")||Y.includes("..")||Y.includes("\\"))return Z.json({error:"Path not allowed"},403);let G;try{G=await X.getPreviewUrl(Q)}catch{return Z.json({error:"Preview not available"},502)}if(!G)return Z.json({error:"Preview not available"},502);let J=G.replace(/\/+$/,""),W=X41(`${J}${Y}`),K;try{K=await fetch(W?.url??`${J}${Y}`,{...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:u86,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"),Y;try{Y=await X.getPreviewUrl(Q)}catch{return Z.json({error:"Preview not available"},502)}if(!Y)return Z.json({error:"Preview not available"},502);let G;try{G=await Z.req.json()}catch{return Z.json({error:"Invalid JSON body"},400)}if(!G||typeof G!=="object"||Array.isArray(G))return Z.json({error:"Invalid JSON body"},400);let J=r_$(G);if(!J)return Z.json({error:"Invalid or missing __resolveType"},400);let W=a_$(Y,J.resolveType),K=X41(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 Jv$=B(()=>{y8();mO();mg();y_$();YN();h_$();E3();gw();u_$();l_$();Cd0();Ci();$41();o_$();s_$();Zv$();g86=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;l86=x_$(async($,Z)=>{let X=$.var.studioContext;try{Z0(X)}catch{return $.json({error:"Unauthorized"},401)}let Q=W1(X);if(!Q)return $.json({error:"Unauthorized"},401);let Y;try{Y=r(X)}catch{return $.json({error:"Organization scope required"},403)}let G=$.req.param("virtualMcpId"),J=$.req.param("branch");if(!G||!J)return $.json({error:"virtualMcpId and branch are required"},400);try{h86(J)}catch(w){let O=w instanceof Error?w.message:String(w);return $.json({error:O},400)}let W=await X.storage.virtualMcps.findById(G);if(!W||W.organization_id!==Y.id)return $.json({error:"Virtual MCP not found"},404);let K=sm({orgId:Y.id,virtualMcpId:G,branch:J}),H=await ON(X,J,Q),N=g_$({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:G,branch:J,userId:H,projectRef:K,virtualMcpMetadata:F,connectionIds:W.connections?.map((w)=>w.connection_id)??[]}),Z()});jj0=new Map;uY={"Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache"};Yv$=["clone","install","start"]});var Wv$=($)=>{let Z=new B1;if(Z.use("*",vC),Z.route("/",fE0()),Z.route("/",zS$()),Z.route("/",T_$()),Z.route("/",z_$()),Z.route("/",Bj0()),Z.route("/tools",V_$()),Z.route("/",M_$()),Z.route("/",X_$({kvStorage:$.kvStorage})),Z.route("/",$_$()),Z.route("/fs",w_$({getConnection:$.getNatsConnection})),Z.route("/sandbox",Gv$()),Z.route("/",L_$()),Z.route("/deco-sites",yE0()),Z.route("/sso",SE0()),Z.route("/",Dj0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",US$()),$.mountDevAssets)Z.route("/dev-assets",gE0({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("/",NM$()),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",B_$()),Z.route("/mcp",sw0()),Z.route("/mcp/self",Oj0()),Z.route("/mcp",ZO0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var Kv$=B(()=>{y8();O$1();wS$();j$1();hE0();Ko();U$1();Z_$();Q_$();O_$();zn();Y$1();XO0();u81();D_$();E_$();P_$();R_$();k_$();l81();C_$();d81();ew0();Jv$()});function n86($){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 p86($,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(i86)});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 i86=1e4,t86=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},Hv$=()=>{let $=new B1;return $.use("*",t86),$.get("/",async(Z)=>{let X=c0(),Q=X.decoSupabaseUrl,Y=X.decoSupabaseServiceKey;if(!Q||!Y)return Z.json({apps:[]});try{let G=await p86(Q,Y);return Z.json({apps:n86(G)})}catch(G){return console.error("[deco-apps] GET error:",G),Z.json({error:"Failed to fetch apps"},502)}}),$};var Nv$=B(()=>{y8();S$()});import{z as M1}from"zod";function uK($,Z="invalid_request_error",X=null,Q=null){return{error:{message:$,type:Z,param:X,code:Q}}}function Y46($){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 G46($,Z,X){try{return JSON.parse($)}catch{throw new wv$(`Invalid JSON in tool call arguments for function '${X}' (tool_call_id: ${Z}): ${$}`)}}function J46($){let Z={};for(let X of $)if(X.role==="assistant"&&X.tool_calls)for(let Q of X.tool_calls)Z[Q.id]=Q.function.name;return $.map((X)=>{switch(X.role){case"system":return{role:"system",content:X.content};case"user":if(typeof X.content==="string")return{role:"user",content:X.content};return{role:"user",content:X.content.map((Y)=>{if(Y.type==="text")return{type:"text",text:Y.text};return{type:"image",image:Y.image_url.url}})};case"assistant":if(X.tool_calls&&X.tool_calls.length>0)return{role:"assistant",content:X.tool_calls.map((Y)=>({type:"tool-call",toolCallId:Y.id,toolName:Y.function.name,input:G46(Y.function.arguments,Y.id,Y.function.name)}))};return{role:"assistant",content:X.content??""};case"tool":let Q=Z[X.tool_call_id]??"unknown";return{role:"tool",content:[{type:"tool-result",toolCallId:X.tool_call_id,toolName:Q,output:{type:"text",value:X.content}}]}}})}function W46($){let Z=$.map((X)=>{let Q=X.function.parameters?zY(X.function.parameters):zY({type:"object",properties:{}});return[X.function.name,_$({description:X.function.description,inputSchema:Q})]});return Object.fromEntries(Z)}function K46($){if(!$)return;return{openai:{response_format:$}}}function H46(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function Fv$($,Z,X,Q,Y,G){let J={model:$,messages:Z,tools:X,temperature:Q.temperature,maxTokens:Q.max_tokens,topP:Q.top_p,frequencyPenalty:Q.frequency_penalty,presencePenalty:Q.presence_penalty,stopSequences:Q.stop?Array.isArray(Q.stop)?Q.stop:[Q.stop]:void 0,abortSignal:G};return Y?{...J,providerOptions:Y}:J}function Uv$($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var o86=256,r86,a86,s86,e86,$46,Z46,X46,Q46,wv$,Ov$,Bv$;var Dv$=B(()=>{k4();y8();mg();xN();r86=M1.object({type:M1.literal("function"),function:M1.object({name:M1.string(),description:M1.string().optional(),parameters:M1.record(M1.string(),M1.unknown()).optional()})}),a86=M1.object({id:M1.string(),type:M1.literal("function"),function:M1.object({name:M1.string(),arguments:M1.string()})}),s86=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(a86).optional()}),M1.object({role:M1.literal("tool"),content:M1.string(),tool_call_id:M1.string()})]),e86=M1.object({type:M1.literal("text")}),$46=M1.object({type:M1.literal("json_object")}),Z46=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()})}),X46=M1.union([e86,$46,Z46]),Q46=M1.object({model:M1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:M1.array(s86),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(r86).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:X46.optional(),user:M1.string().optional()});wv$=class wv$ extends Error{constructor($){super($);this.name="MessageConversionError"}};Ov$=new B1;Ov$.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),X=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(uK("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(uK("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(uK("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Q=await $.req.json(),Y=Q46.safeParse(Q);if(!Y.success){let L=Y.error.issues[0]??{message:"Invalid request",path:[]};return $.json(uK(`Invalid request: ${L.message}`,"invalid_request_error",L.path.length>0?L.path.join("."):null),400)}let G=Y.data,J=Y46(G.model);if(!J)return $.json(uK("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)=>QD(j.providerId));if(!E)return $.json(uK("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(uK(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let N=H.aiSdk.languageModel(K),F=J46(G.messages),U=G.tools?W46(G.tools):void 0,w=K46(G.response_format),O=H46(),D=Math.floor(Date.now()/1000);if(G.stream)return QF($,async(L)=>{let E=Fv$(N,F,U,G,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:G.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:G.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),z=!0;if(k.type==="text-delta"){if(P+=k.text,P.length>=o86)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:G.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:G.model,choices:[{index:0,delta:{},finish_reason:Uv$(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=Fv$(N,F,U,G,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:G.model,choices:[{index:0,message:j,finish_reason:Uv$(E.finishReason)}],usage:{prompt_tokens:E.usage?.inputTokens??0,completion_tokens:E.usage?.outputTokens??0,total_tokens:E.usage?.totalTokens??0}})}}catch(Q){let Y=Q;if(Y.name==="AbortError")return $.json(uK("Request aborted","invalid_request_error"),400);if(Y.name==="MessageConversionError")return $.json(uK(Y.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",Y.message,Y.stack),$.json(uK(Y.message,"server_error"),500)}});Bv$=Ov$});var Ev$;var Lv$=B(()=>{Ev$={name:"decocms",version:"4.204.0",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@nats-io/jwt":"0.0.10-5","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});function U46(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??F46}}var jv$,F46="https://ph.studio.decocms.com",zv$;var Pv$=B(()=>{y8();yx0();MV();jZ();S$();e11();Lv$();jv$=new B1;jv$.get("/",($)=>{let Z={version:Ev$.version,theme:Zu1(),...pD().logo&&{logo:pD().logo},...FK()&&{internalUrl:Vq1()},...c0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!c0().firecrawlApiKey,auth:Vk$(),posthog:U46(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:!FK()&&c0().sandboxProviderKind==="agent-sandbox"}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});zv$=jv$});function ng($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function Y41($){return(ng($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((X)=>X.charAt(0).toUpperCase()+X.slice(1)).join(" ")}function Tv$($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(ng($))}&sz=${Z}`}function Av$($,Z){let X=$.trim();if(X.length<=Z)return X;let Q=X.slice(0,Z-1),Y=Q.lastIndexOf(" ");return`${(Y>Z*0.6?Q.slice(0,Y):Q).trimEnd()}\u2026`}function Rv$($){let{brand:Z,domain:X,score:Q,verdict:Y}=$,G=typeof Q==="number"?`${Z} commerce report \u2014 ${Math.round(Q)}/100 \xB7 decocms`:`${Z} commerce report \xB7 decocms`,J=`See the full ${Z} scorecard \u2014 SEO, performance, conversion & AEO signals scored by decocms.`,W=Y?.trim()?Av$(`${Y.trim().replace(/\s+/g," ")} \u2014 ${J}`,200):Av$(`How does ${X} really perform? ${J}`,200);return{title:G,description:W}}import{z as l0}from"zod";var mC,w46,O46,B46,D46,Iv$;var qv$=B(()=>{mC=l0.enum(["good","bad","neutral"]),w46=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 $})),O46=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(w46)),B46={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()},D46=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(O46).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)})]),Iv$=l0.object({...B46,template:D46})});function Pj0($){let Z=[],X=[...$.sections].sort((Y,G)=>Y.position-G.position).map((Y)=>{let G=Iv$.safeParse(Y.props);if(G.success)return G.data;let J=G.error.issues[0];return Z.push({section_type:Y.section_type,position:Y.position,reason:J?`${J.path.join(".")||"(root)"}: ${J.message}`:"contract violation"}),null}).filter((Y)=>Y!==null),Q=X.filter((Y)=>Y.template.template!=="cover"&&Y.template.template!=="cta").map((Y)=>({key:Y.key,title:Y.title}));return{deck:{meta:{...$.meta,scores:$.summary?.scores,scannedAt:$.scanned_at,toc:Q},slides:X},drops:Z}}var G41=B(()=>{qv$()});import{join as Mv$}from"path";async function E46($){try{let Z=await fetch(`${fW({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(L46)});if(!Z.ok)return null;let X=await Z.json(),{deck:Q}=Pj0(X);if(!Q.slides.length)return null;let Y=Q.slides.find((W)=>W.template.template==="cover"),G=Y?.template,J=G&&G.template==="cover"?G:void 0;return{brand:Q.meta.brand?.trim()||Y41($),score:Q.meta.scores?.cover??J?.score?.value,verdict:Y?.annotation?.trim()||Y?.headline?.trim()||void 0}}catch{return null}}function cY($){return $.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;")}function j46($,Z){let X=ng($),Q=Z?.brand?.trim()||Y41(X),Y=Tv$(X,128),J=`${(c0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(X)}`,{title:W,description:K}=Rv$({brand:Q,domain:X,score:Z?.score,verdict:Z?.verdict}),H=`${J}/og.png`,N=`${Q} commerce report by decocms`;return[`<title>${cY(W)}</title>`,`<meta name="description" content="${cY(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="${cY(W)}" />`,`<meta property="og:description" content="${cY(K)}" />`,`<meta property="og:url" content="${cY(J)}" />`,`<meta property="og:image" content="${cY(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${cY(N)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${cY(W)}" />`,`<meta name="twitter:description" content="${cY(K)}" />`,`<meta name="twitter:image" content="${cY(H)}" />`,`<meta name="twitter:image:alt" content="${cY(N)}" />`,`<link rel="canonical" href="${cY(J)}" />`,`<link rel="icon" href="${cY(Y)}" sizes="any" />`].join(`
2729
+ Respond with the structured verdict and a short reason.`,p_$;var o_$=B(()=>{k4();mw();$41();_86=Z41.object({requiresReview:Z41.boolean().describe("true if the changes should go through pull-request review"),reason:Z41.string().describe("One short sentence explaining the decision (max ~120 chars)")});p_$={requiresReview:!1,reason:""}});function x86($){if(!$||$.includes(".."))return!1;return f86.test($)}function r_$($){let Z=typeof $.__resolveType==="string"?$.__resolveType:null;if(!Z||!x86(Z))return null;let{__resolveType:X,...Q}=$;return{resolveType:Z,payload:Q}}function a_$($,Z){return`${$.replace(/\/+$/,"")}/deco/invoke/${Z}`}var f86;var s_$=B(()=>{f86=/^[\w./@-]+$/});function X41($){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 e_$($,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 $v$($,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 Y=$.organization?.id;if(!Y)throw new ig(d7);await Rw({ctx:$,connectionId:Q.connectionId,organizationId:Y,forceRefresh:!0,onLegacyMintError:(N)=>{let F=N instanceof Error?N.message:d7;throw new ig(F)}});let{cloneUrl:G,gitUserName:J,gitUserEmail:W}=await Iw(Q.connectionId,Q.owner,Q.name,$.db,$.vault),K=Ej0($),H=await Z.proxyDaemonRequest(X,"/_sandbox/config",{method:"PUT",headers:new Headers({"content-type":"application/json"}),body:JSON.stringify({git:{repository:{cloneUrl:G},identity:{userName:J,userEmail:W}},...K?{operator:K}:{}})});if(!H.ok){let N=await lw(H,y86).catch(()=>H.statusText);throw Error(`Failed to refresh sandbox git credentials (${H.status}): ${N}`)}}var y86=10485760,ig;var Zv$=B(()=>{GN();p81();vi();rf();ig=class ig extends Error{constructor($){super($);this.name="GitPushAuthError"}}});function h86($){let Z=$.startsWith("thread:")?$.slice(7):$;if(!Z||Z.length>255||Z.includes("..")||Z.startsWith("/")||Z.endsWith("/")||Z.endsWith(".lock")||!g86.test(Z))throw Error(`Invalid branch name: ${$}`)}function lC($){return AbortSignal.any([$.req.raw.signal,AbortSignal.timeout(c86)])}function dC($){let{runner:Z}=$.get("vmClaim");if(!Z)return $.json({error:"No sandbox runner configured"},503);return Z}function Q41($,Z){let Q=(jj0.get($)??Promise.resolve()).catch(()=>{}).then(Z),Y=Q.catch(()=>{});return jj0.set($,Y),Y.finally(()=>{if(jj0.get($)===Y)jj0.delete($)}),Q}async function fZ($,Z,X){let Q=dC($);if(Q instanceof Response)return Q;let{claimName:Y,userId:G,projectRef:J}=$.get("vmClaim"),W=X?.method??"POST",K=null,H=new Headers;if(X?.jsonBody!==void 0)K=X.jsonBody,H.set("content-type","application/json");else if(X?.forwardJsonBody)K=await $.req.text(),H.set("content-type","application/json");let N=X?.signal,F={method:W,headers:H,body:K,...N?{signal:N}:{}},U=async()=>{let w=await Q.proxyDaemonRequest(Y,Z,F);if(X?.map404to410&&w.status===404){try{await w.body?.cancel()}catch{}if(await Q.adoptLiveClaim?.({userId:G,projectRef:J},Y))w=await Q.proxyDaemonRequest(Y,Z,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",...uY}})}}let O=await w.text(),D=X?.redactRepoDirUnlessDesktop&&Q.kind!=="user-desktop"?d86(O):O,L=w.headers.get("content-type")??"application/json";return new Response(D,{status:w.status,headers:{"content-type":L,...uY}})};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 d86($){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 zj0($,Z,X,Q="GET",Y){let G=await $.proxyDaemonRequest(Z,X,{method:Q,headers:new Headers,body:null});if(G.status===404&&Y){try{await G.body?.cancel()}catch{}if(await $.adoptLiveClaim?.(Y,Z))G=await $.proxyDaemonRequest(Z,X,{method:Q,headers:new Headers,body:null})}if(G.status===404){try{await G.body?.cancel()}catch{}throw Error("SANDBOX_GONE")}let J=await G.text();if(!G.ok){let W=`Daemon error (${G.status})`;try{W=JSON.parse(J).error??W}catch{}throw Error(W)}return JSON.parse(J)}function m86($){return Yv$.includes($)}var g86,Xv$=524288,u86=65536,c86=1e4,Qv$=2000,l86,jj0,uY,Yv$,Gv$=()=>{let $=new B1;return $.use("/:virtualMcpId/:branch/*",l86),$.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||!m86(X))return Z.json({error:`step must be one of: ${Yv$.join(", ")}`},400);if(X==="start"){let Q=Z.get("vmClaim");if(Q.runner){let Y=r(Z.var.studioContext),G=pF0(Q.virtualMcpMetadata);try{await oF0({ctx:Z.var.studioContext,runner:Q.runner,handle:Q.claimName,orgId:Y.id,userId:Q.callerUserId,entries:G})}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 c_$(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(Qv$)])})),$.post("/:virtualMcpId/:branch/git/status",(Z)=>fZ(Z,"/_sandbox/git/status",{map404to410:!0,signal:AbortSignal.any([Z.req.raw.signal,AbortSignal.timeout(Qv$)])})),$.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:Y,connectionIds:G}=Z.get("vmClaim"),J=Z.var.studioContext;return Q41(Q,async()=>{try{await t81(J,X,Q);let W=e_$(Y,G);if(W)await $v$(J,X,Q,W)}catch(W){if(W instanceof ig)return Z.json({error:W.message},403,uY);let K=W instanceof Error?W.message:String(W);return Z.json({error:K},502,uY)}return fZ(Z,"/_sandbox/git/publish",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/discard",(Z)=>{let{claimName:X}=Z.get("vmClaim");return Q41(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"),Y=Z.var.studioContext;return Q41(Q,async()=>{try{await t81(Y,X,Q)}catch(G){let J=G instanceof Error?G.message:String(G);return Z.json({error:J},502,uY)}return fZ(Z,"/_sandbox/git/rebase",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/suggest-commit",HZ({maxSize:Xv$,onError:(Z)=>Z.json({error:"Payload too large"},413,uY)}),async(Z)=>{let X=dC(Z);if(X instanceof Response)return X;let{claimName:Q,userId:Y,projectRef:G}=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]=a81(K)&&N?[K,H]:await Promise.all([zj0(X,Q,"/_sandbox/git/status","GET",{userId:Y,projectRef:G}),zj0(X,Q,"/_sandbox/git/diff","GET",{userId:Y,projectRef:G})]),w=await n_$(J,F,U);return Z.json(w,200,uY)}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,uY);return Z.json({error:K},502,uY)}}),$.post("/:virtualMcpId/:branch/git/judge-review",HZ({maxSize:Xv$,onError:(Z)=>Z.json({error:"Payload too large"},413,uY)}),async(Z)=>{let X=dC(Z);if(X instanceof Response)return X;let{claimName:Q,userId:Y,projectRef:G}=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]=a81(K)&&N?[K,H]:await Promise.all([zj0(X,Q,"/_sandbox/git/status","GET",{userId:Y,projectRef:G}),zj0(X,Q,"/_sandbox/git/diff","GET",{userId:Y,projectRef:G})]),w=await t_$(J,F,U,typeof W.language==="string"?W.language:void 0);return Z.json(w,200,uY)}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,uY);return Z.json({error:K},502,uY)}}),$.get("/:virtualMcpId/:branch/preview-fetch",async(Z)=>{let X=dC(Z);if(X instanceof Response)return X;let{claimName:Q}=Z.get("vmClaim"),Y=Z.req.query("path");if(!Y||!Y.startsWith("/")||Y.startsWith("//")||Y.includes("..")||Y.includes("\\"))return Z.json({error:"Path not allowed"},403);let G;try{G=await X.getPreviewUrl(Q)}catch{return Z.json({error:"Preview not available"},502)}if(!G)return Z.json({error:"Preview not available"},502);let J=G.replace(/\/+$/,""),W=X41(`${J}${Y}`),K;try{K=await fetch(W?.url??`${J}${Y}`,{...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:u86,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"),Y;try{Y=await X.getPreviewUrl(Q)}catch{return Z.json({error:"Preview not available"},502)}if(!Y)return Z.json({error:"Preview not available"},502);let G;try{G=await Z.req.json()}catch{return Z.json({error:"Invalid JSON body"},400)}if(!G||typeof G!=="object"||Array.isArray(G))return Z.json({error:"Invalid JSON body"},400);let J=r_$(G);if(!J)return Z.json({error:"Invalid or missing __resolveType"},400);let W=a_$(Y,J.resolveType),K=X41(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 Jv$=B(()=>{y8();mO();mg();y_$();YN();h_$();E3();gw();u_$();l_$();Cd0();Ci();$41();o_$();s_$();Zv$();g86=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;l86=x_$(async($,Z)=>{let X=$.var.studioContext;try{Z0(X)}catch{return $.json({error:"Unauthorized"},401)}let Q=W1(X);if(!Q)return $.json({error:"Unauthorized"},401);let Y;try{Y=r(X)}catch{return $.json({error:"Organization scope required"},403)}let G=$.req.param("virtualMcpId"),J=$.req.param("branch");if(!G||!J)return $.json({error:"virtualMcpId and branch are required"},400);try{h86(J)}catch(w){let O=w instanceof Error?w.message:String(w);return $.json({error:O},400)}let W=await X.storage.virtualMcps.findById(G);if(!W||W.organization_id!==Y.id)return $.json({error:"Virtual MCP not found"},404);let K=sm({orgId:Y.id,virtualMcpId:G,branch:J}),H=await ON(X,J,Q),N=g_$({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:G,branch:J,userId:H,projectRef:K,virtualMcpMetadata:F,connectionIds:W.connections?.map((w)=>w.connection_id)??[]}),Z()});jj0=new Map;uY={"Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache"};Yv$=["clone","install","start"]});var Wv$=($)=>{let Z=new B1;if(Z.use("*",vC),Z.route("/",fE0()),Z.route("/",zS$()),Z.route("/",T_$()),Z.route("/",z_$()),Z.route("/",Bj0()),Z.route("/tools",V_$()),Z.route("/",M_$()),Z.route("/",X_$({kvStorage:$.kvStorage})),Z.route("/",$_$()),Z.route("/fs",w_$({getConnection:$.getNatsConnection})),Z.route("/sandbox",Gv$()),Z.route("/",L_$()),Z.route("/deco-sites",yE0()),Z.route("/sso",SE0()),Z.route("/",Dj0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",US$()),$.mountDevAssets)Z.route("/dev-assets",gE0({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("/",NM$()),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",B_$()),Z.route("/mcp",sw0()),Z.route("/mcp/self",Oj0()),Z.route("/mcp",ZO0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var Kv$=B(()=>{y8();O$1();wS$();j$1();hE0();Ko();U$1();Z_$();Q_$();O_$();zn();Y$1();XO0();u81();D_$();E_$();P_$();R_$();k_$();l81();C_$();d81();ew0();Jv$()});function n86($){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 p86($,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(i86)});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 i86=1e4,t86=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},Hv$=()=>{let $=new B1;return $.use("*",t86),$.get("/",async(Z)=>{let X=c0(),Q=X.decoSupabaseUrl,Y=X.decoSupabaseServiceKey;if(!Q||!Y)return Z.json({apps:[]});try{let G=await p86(Q,Y);return Z.json({apps:n86(G)})}catch(G){return console.error("[deco-apps] GET error:",G),Z.json({error:"Failed to fetch apps"},502)}}),$};var Nv$=B(()=>{y8();S$()});import{z as M1}from"zod";function uK($,Z="invalid_request_error",X=null,Q=null){return{error:{message:$,type:Z,param:X,code:Q}}}function Y46($){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 G46($,Z,X){try{return JSON.parse($)}catch{throw new wv$(`Invalid JSON in tool call arguments for function '${X}' (tool_call_id: ${Z}): ${$}`)}}function J46($){let Z={};for(let X of $)if(X.role==="assistant"&&X.tool_calls)for(let Q of X.tool_calls)Z[Q.id]=Q.function.name;return $.map((X)=>{switch(X.role){case"system":return{role:"system",content:X.content};case"user":if(typeof X.content==="string")return{role:"user",content:X.content};return{role:"user",content:X.content.map((Y)=>{if(Y.type==="text")return{type:"text",text:Y.text};return{type:"image",image:Y.image_url.url}})};case"assistant":if(X.tool_calls&&X.tool_calls.length>0)return{role:"assistant",content:X.tool_calls.map((Y)=>({type:"tool-call",toolCallId:Y.id,toolName:Y.function.name,input:G46(Y.function.arguments,Y.id,Y.function.name)}))};return{role:"assistant",content:X.content??""};case"tool":let Q=Z[X.tool_call_id]??"unknown";return{role:"tool",content:[{type:"tool-result",toolCallId:X.tool_call_id,toolName:Q,output:{type:"text",value:X.content}}]}}})}function W46($){let Z=$.map((X)=>{let Q=X.function.parameters?zY(X.function.parameters):zY({type:"object",properties:{}});return[X.function.name,_$({description:X.function.description,inputSchema:Q})]});return Object.fromEntries(Z)}function K46($){if(!$)return;return{openai:{response_format:$}}}function H46(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function Fv$($,Z,X,Q,Y,G){let J={model:$,messages:Z,tools:X,temperature:Q.temperature,maxTokens:Q.max_tokens,topP:Q.top_p,frequencyPenalty:Q.frequency_penalty,presencePenalty:Q.presence_penalty,stopSequences:Q.stop?Array.isArray(Q.stop)?Q.stop:[Q.stop]:void 0,abortSignal:G};return Y?{...J,providerOptions:Y}:J}function Uv$($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var o86=256,r86,a86,s86,e86,$46,Z46,X46,Q46,wv$,Ov$,Bv$;var Dv$=B(()=>{k4();y8();mg();xN();r86=M1.object({type:M1.literal("function"),function:M1.object({name:M1.string(),description:M1.string().optional(),parameters:M1.record(M1.string(),M1.unknown()).optional()})}),a86=M1.object({id:M1.string(),type:M1.literal("function"),function:M1.object({name:M1.string(),arguments:M1.string()})}),s86=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(a86).optional()}),M1.object({role:M1.literal("tool"),content:M1.string(),tool_call_id:M1.string()})]),e86=M1.object({type:M1.literal("text")}),$46=M1.object({type:M1.literal("json_object")}),Z46=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()})}),X46=M1.union([e86,$46,Z46]),Q46=M1.object({model:M1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:M1.array(s86),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(r86).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:X46.optional(),user:M1.string().optional()});wv$=class wv$ extends Error{constructor($){super($);this.name="MessageConversionError"}};Ov$=new B1;Ov$.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),X=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(uK("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(uK("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(uK("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Q=await $.req.json(),Y=Q46.safeParse(Q);if(!Y.success){let L=Y.error.issues[0]??{message:"Invalid request",path:[]};return $.json(uK(`Invalid request: ${L.message}`,"invalid_request_error",L.path.length>0?L.path.join("."):null),400)}let G=Y.data,J=Y46(G.model);if(!J)return $.json(uK("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)=>QD(j.providerId));if(!E)return $.json(uK("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(uK(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let N=H.aiSdk.languageModel(K),F=J46(G.messages),U=G.tools?W46(G.tools):void 0,w=K46(G.response_format),O=H46(),D=Math.floor(Date.now()/1000);if(G.stream)return QF($,async(L)=>{let E=Fv$(N,F,U,G,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:G.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:G.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),z=!0;if(k.type==="text-delta"){if(P+=k.text,P.length>=o86)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:G.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:G.model,choices:[{index:0,delta:{},finish_reason:Uv$(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=Fv$(N,F,U,G,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:G.model,choices:[{index:0,message:j,finish_reason:Uv$(E.finishReason)}],usage:{prompt_tokens:E.usage?.inputTokens??0,completion_tokens:E.usage?.outputTokens??0,total_tokens:E.usage?.totalTokens??0}})}}catch(Q){let Y=Q;if(Y.name==="AbortError")return $.json(uK("Request aborted","invalid_request_error"),400);if(Y.name==="MessageConversionError")return $.json(uK(Y.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",Y.message,Y.stack),$.json(uK(Y.message,"server_error"),500)}});Bv$=Ov$});var Ev$;var Lv$=B(()=>{Ev$={name:"decocms",version:"4.204.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 U46(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??F46}}var jv$,F46="https://ph.studio.decocms.com",zv$;var Pv$=B(()=>{y8();yx0();MV();jZ();S$();e11();Lv$();jv$=new B1;jv$.get("/",($)=>{let Z={version:Ev$.version,theme:Zu1(),...pD().logo&&{logo:pD().logo},...FK()&&{internalUrl:Vq1()},...c0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!c0().firecrawlApiKey,auth:Vk$(),posthog:U46(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:!FK()&&c0().sandboxProviderKind==="agent-sandbox"}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});zv$=jv$});function ng($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function Y41($){return(ng($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((X)=>X.charAt(0).toUpperCase()+X.slice(1)).join(" ")}function Tv$($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(ng($))}&sz=${Z}`}function Av$($,Z){let X=$.trim();if(X.length<=Z)return X;let Q=X.slice(0,Z-1),Y=Q.lastIndexOf(" ");return`${(Y>Z*0.6?Q.slice(0,Y):Q).trimEnd()}\u2026`}function Rv$($){let{brand:Z,domain:X,score:Q,verdict:Y}=$,G=typeof Q==="number"?`${Z} commerce report \u2014 ${Math.round(Q)}/100 \xB7 decocms`:`${Z} commerce report \xB7 decocms`,J=`See the full ${Z} scorecard \u2014 SEO, performance, conversion & AEO signals scored by decocms.`,W=Y?.trim()?Av$(`${Y.trim().replace(/\s+/g," ")} \u2014 ${J}`,200):Av$(`How does ${X} really perform? ${J}`,200);return{title:G,description:W}}import{z as l0}from"zod";var mC,w46,O46,B46,D46,Iv$;var qv$=B(()=>{mC=l0.enum(["good","bad","neutral"]),w46=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 $})),O46=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(w46)),B46={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()},D46=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(O46).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)})]),Iv$=l0.object({...B46,template:D46})});function Pj0($){let Z=[],X=[...$.sections].sort((Y,G)=>Y.position-G.position).map((Y)=>{let G=Iv$.safeParse(Y.props);if(G.success)return G.data;let J=G.error.issues[0];return Z.push({section_type:Y.section_type,position:Y.position,reason:J?`${J.path.join(".")||"(root)"}: ${J.message}`:"contract violation"}),null}).filter((Y)=>Y!==null),Q=X.filter((Y)=>Y.template.template!=="cover"&&Y.template.template!=="cta").map((Y)=>({key:Y.key,title:Y.title}));return{deck:{meta:{...$.meta,scores:$.summary?.scores,scannedAt:$.scanned_at,toc:Q},slides:X},drops:Z}}var G41=B(()=>{qv$()});import{join as Mv$}from"path";async function E46($){try{let Z=await fetch(`${fW({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(L46)});if(!Z.ok)return null;let X=await Z.json(),{deck:Q}=Pj0(X);if(!Q.slides.length)return null;let Y=Q.slides.find((W)=>W.template.template==="cover"),G=Y?.template,J=G&&G.template==="cover"?G:void 0;return{brand:Q.meta.brand?.trim()||Y41($),score:Q.meta.scores?.cover??J?.score?.value,verdict:Y?.annotation?.trim()||Y?.headline?.trim()||void 0}}catch{return null}}function cY($){return $.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;")}function j46($,Z){let X=ng($),Q=Z?.brand?.trim()||Y41(X),Y=Tv$(X,128),J=`${(c0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(X)}`,{title:W,description:K}=Rv$({brand:Q,domain:X,score:Z?.score,verdict:Z?.verdict}),H=`${J}/og.png`,N=`${Q} commerce report by decocms`;return[`<title>${cY(W)}</title>`,`<meta name="description" content="${cY(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="${cY(W)}" />`,`<meta property="og:description" content="${cY(K)}" />`,`<meta property="og:url" content="${cY(J)}" />`,`<meta property="og:image" content="${cY(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${cY(N)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${cY(W)}" />`,`<meta name="twitter:description" content="${cY(K)}" />`,`<meta name="twitter:image" content="${cY(H)}" />`,`<meta name="twitter:image:alt" content="${cY(N)}" />`,`<link rel="canonical" href="${cY(J)}" />`,`<link rel="icon" href="${cY(Y)}" sizes="any" />`].join(`
2730
2730
  `)}function z46($,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 kv$($){let Z=new B1;return Z.get("/:domain/og.png",async(X)=>{let Q=ng(X.req.param("domain")),Y=async()=>{let G=$?Bun.file(Mv$($,"report-og-fallback.png")):null;if(!G||!await G.exists())return X.notFound();return X.body(new Uint8Array(await G.arrayBuffer()),200,{"Content-Type":"image/png","Cache-Control":"public, max-age=0, s-maxage=3600"})};try{let G=await fetch(`${fW({})}/api/v2/public/diagnostics/${encodeURIComponent(Q)}/og.png`,{signal:AbortSignal.timeout(P46)}),J=G.headers.get("content-type")??"";if(!G.ok||!J.startsWith("image/")||!G.body)return Y();return X.body(G.body,200,{"Content-Type":J,"Cache-Control":"public, max-age=0, s-maxage=604800"})}catch{return Y()}}),Z.get("/:domain",async(X)=>{let Q=X.req.param("domain"),Y=$?Mv$($,"index.html"):null,G=Y?Bun.file(Y):null;if(!G||!await G.exists())return X.notFound();let J=await G.text();try{let W=await E46(ng(Q)),K=j46(Q,W);return X.html(z46(J,K),200,{"Cache-Control":"public, max-age=0, s-maxage=300"})}catch{return X.html(J)}}),Z}var L46=2500,P46=1e4;var Sv$=B(()=>{y8();G41();WL();S$()});function fo($,Z){return fetch(`${fW({})}${$}`,Z)}async function A46($,Z,X){let Q=new URLSearchParams;if(Z)Q.set("pw",Z);if(X)Q.set("lang",X);let Y=Q.toString()?`?${Q.toString()}`:"",G=await fo(`/api/v2/public/diagnostics/${encodeURIComponent($)}${Y}`,{headers:{Accept:"application/json"}});if(G.status===404)return{status:"not_found",deck:null,scanned_at:null,drops:[]};if(!G.ok)throw Error(`report read HTTP ${G.status}`);let J=await G.json(),{deck:W,drops:K}=Pj0(J);return{status:W.slides.length?"ready":"empty",deck:W,scanned_at:J.scanned_at,drops:K}}var T46,m3,Aj0=async($,Z)=>{if(!$.get("reportUser"))return $.json({error:"Authentication required"},401);await Z();return},Vv$;var Cv$=B(()=>{y8();RG();WL();G41();T46=new Set(["complete","errored","terminated","unknown"]),m3=new B1;m3.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});m3.use("/run",Aj0);m3.use("/status",Aj0);m3.use("/link-token/*",Aj0);m3.use("/suggest",Aj0);m3.get("/site/:domain",async($)=>{let Z=$.req.param("domain").trim();if(!Z)return $.json({error:"domain is required"},400);let X=$.get("reportUser"),Q=$.req.query("key")?.trim()||void 0,Y=$.req.query("lang")?.trim()||void 0;try{let G=await A46(Z,Q,Y);if($.header("Cache-Control","private, no-store"),X||!G.deck)return $.json(G);return $.json({...G,deck:{...G.deck,slides:G.deck.slides.slice(0,1)},truncated:G.status==="ready"})}catch{return $.json({error:"report read failed"},502)}});m3.post("/run",async($)=>{let Z=$.get("reportUser"),X;try{X=await $.req.json()}catch{return $.json({error:"invalid JSON"},400)}let Q=typeof X.domain==="string"?X.domain.trim():"";if(!Q)return $.json({error:"domain is required"},400);let Y=Z.email,G=typeof X.distinctId==="string"&&X.distinctId.trim()&&X.distinctId.length<=200?X.distinctId.trim():void 0;try{let J=await fo("/api/v2/diagnostics/run",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${JL({})}`},body:JSON.stringify({url:Q,email:Y,distinct_id:G})});if(!J.ok)return $.json({error:`run HTTP ${J.status}`},502);let W=await J.json(),K=W.blocked?{state:"blocked"}:W.status==="fresh"?{state:"fresh"}:W.mode==="sync"?{state:"sync"}:{state:"running",id:W.id??null};return $.json(K)}catch{return $.json({error:"run failed"},502)}});m3.get("/status",async($)=>{let Z=$.req.query("id");if(!Z)return $.json({error:"id is required"},400);try{let X=await fo(`/api/v2/diagnostics/status?id=${encodeURIComponent(Z)}`,{headers:{Authorization:`Bearer ${JL({})}`}});if(!X.ok)return $.json({error:`status HTTP ${X.status}`},502);let Y=(await X.json()).status??"unknown",G={done:T46.has(Y),status:Y};return $.json(G)}catch{return $.json({error:"status failed"},502)}});m3.get("/link-token/:id",async($)=>{let Z=$.req.param("id");try{let X=await fo(`/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)}});m3.get("/suggest",async($)=>{let Z=($.req.query("q")??"").trim().slice(0,64);if(Z.length<2)return $.json({suggestions:[]});try{let X=await fo(`/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:[]})}});Vv$=m3});import{createHmac as R46,timingSafeEqual as I46}from"crypto";function vv$($,Z,X,Q=Date.now()){if(!Z||!X)return!1;let Y,G=[];for(let H of Z.split(",")){let N=H.indexOf("=");if(N<=0)continue;let F=H.slice(0,N).trim(),U=H.slice(N+1).trim();if(F==="t")Y=U;else if(F==="v1")G.push(U)}if(!Y||G.length===0)return!1;let J=Number(Y);if(!Number.isFinite(J)||Math.abs(Q/1000-J)>q46)return!1;let W=R46("sha256",X).update(`${Y}.${$}`).digest("hex"),K=Buffer.from(W,"hex");return G.some((H)=>{let N=Buffer.from(H,"hex");return K.length===N.length&&I46(K,N)})}function bv$($){let Z;try{Z=JSON.parse($)}catch{return null}let X=QJ(Z),Q=QJ(QJ(X?.data)?.object);if(!X||typeof X.type!=="string"||!Q)return null;return{id:cK(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 fv$($){switch($){case"active":case"trialing":return"active";case"past_due":return"past_due";default:return"canceled"}}function cK($){return typeof $==="string"?$:void 0}function QJ($){return typeof $==="object"&&$!==null?$:void 0}function Tj0($){return typeof $==="number"?new Date($*1000):null}function K41($){return cK($)??cK(QJ($)?.id)}function M46($){return K41($.subscription)??cK(QJ(QJ($.parent)?.subscription_details)?.subscription)}function k46($){let Z=Tj0($.current_period_end);if(Z)return Z;let X=QJ($.items)?.data;if(!Array.isArray(X))return null;let Q=0;for(let Y of X){let G=QJ(Y)?.current_period_end;if(typeof G==="number"&&G>Q)Q=G}return Q>0?new Date(Q*1000):null}function J41($,Z){let X=Tj0($.created);return!!X&&!!Z.lastStripeEventAt&&X<Z.lastStripeEventAt}function W41($,Z){let X=Tj0($.created);if(!X)return;return Z.lastStripeEventAt&&Z.lastStripeEventAt>X?void 0:X}async function S46($,Z){let X=Z.data.object;switch(Z.type){case"checkout.session.completed":case"checkout.session.async_payment_succeeded":{let Q=cK(QJ(X.metadata)?.orgId);if(!Q)return{handled:!1,reason:"no orgId"};if(cK(QJ(X.metadata)?.kind)==="topup"){if(X.mode!=="payment")return{handled:!1,reason:"topup with wrong mode"};if(cK(X.payment_status)!=="paid")return{handled:!1,reason:"payment not confirmed"};let J=cK(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(QJ(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:QJ(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(cK(X.payment_status)!=="paid")return{handled:!1,reason:"payment not confirmed"};let Y=await $.getBilling(Q);if(!Y)return{handled:!1,reason:"unknown org"};let G=K41(X.subscription);if(Y.stripeSubscriptionId&&G&&Y.stripeSubscriptionId!==G)return console.error("stripe webhook: refused checkout rebind",{organizationId:Q,eventId:Z.id}),{handled:!1,reason:"org already bound to another subscription",orphanSubscriptionId:G};if(J41(Z,Y))return{handled:!1,reason:"stale event"};return await $.updateStripeState(Q,{stripeCustomerId:K41(X.customer),stripeSubscriptionId:G,status:"active",lastStripeEventAt:W41(Z,Y)}),{handled:!0,organizationId:Q}}case"customer.subscription.updated":case"customer.subscription.deleted":{let Q=cK(X.id);if(!Q)return{handled:!1,reason:"no sub id"};let Y=await $.getBillingByStripeSubscriptionId(Q);if(!Y)return{handled:!1,reason:"unknown subscription"};let G=Z.type==="customer.subscription.deleted";if(!G&&J41(Z,Y))return{handled:!1,reason:"stale event"};let J=G?"canceled":fv$(X.status);return await $.updateStripeState(Y.organizationId,{status:J,currentPeriodEnd:k46(X),...G&&{stripeSubscriptionId:null},lastStripeEventAt:W41(Z,Y)}),{handled:!0,organizationId:Y.organizationId}}case"invoice.paid":{let Q=M46(X);if(!Q)return{handled:!1,reason:"no sub id"};let Y=await $.getBillingByStripeSubscriptionId(Q);if(!Y)return{handled:!1,reason:"unknown subscription"};if(J41(Z,Y))return{handled:!1,reason:"stale event"};return await $.updateStripeState(Y.organizationId,{status:"active",currentPeriodEnd:Tj0(X.period_end),lastStripeEventAt:W41(Z,Y)}),{handled:!0,organizationId:Y.organizationId}}default:return{handled:!1,reason:`unhandled event ${Z.type}`}}}function V46($,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:fv$(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 _v$($,Z){let X=V46($,Z);if(!X)return;nJ({event:X.name,organizationId:X.organizationId,...$.id?{uuid:Hl1(`stripe:${$.id}:${X.name}`)}:{},...$.created?{timestamp:new Date($.created*1000)}:{},properties:X.properties})}async function xv$($){let Z=new CW(m8().db),X=await S46(Z,$);if(!(X.handled&&X.topUp))_v$($,X);if(X.handled&&X.topUp)await BF$({organizationId:X.organizationId,amountCents:X.topUp.creditCents,referenceId:X.topUp.referenceId}),_v$($,X);if(!X.handled&&X.orphanSubscriptionId)try{await Tt1(X.orphanSubscriptionId),console.error("stripe webhook: canceled orphan subscription",{subscriptionId:X.orphanSubscriptionId,eventId:$.id})}catch(Q){if(!(Q instanceof X3&&(Q.status===400||Q.status===404)))throw Q}return X}var q46=300;var yv$=B(()=>{DG();f4();km();to0()});var C46=1048576,H41;var gv$=B(()=>{y8();mO();S$();yv$();H41=new B1;H41.post("/webhook",HZ({maxSize:C46,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(!vv$(X,$.req.header("stripe-signature"),Z))return $.json({error:"invalid signature"},400);let Y=bv$(X);if(!Y)return $.json({error:"invalid payload"},400);let G=await xv$(Y);return console.log("stripe webhook",{eventId:Y.id,type:Y.type,livemode:Y.livemode,...G}),$.json({received:!0})})});import{timingSafeEqual as _46}from"crypto";function b46($,Z,X){if(!Z?.startsWith("sha256="))return!1;let Q=new Bun.CryptoHasher("sha256",X).update($).digest("hex"),Y=Z.slice(7);if(Y.length!==Q.length)return!1;return _46(Buffer.from(Y),Buffer.from(Q))}var v46=5242880,N41;var hv$=B(()=>{y8();mO();ki();N41=new B1;N41.post("/webhook",HZ({maxSize:v46,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(!b46(X,$.req.header("x-hub-signature-256"),Z))return $.json({error:"invalid signature"},400);if($.req.header("x-github-event")!=="push")return $.json({ok:!0,ignored:"event"});let Q;try{Q=JSON.parse(X)}catch{return $.json({error:"invalid payload"},400)}let Y=Q.ref,G=Q.repository?.full_name;if(!Y||!G)return $.json({ok:!0,ignored:"shape"});let W=(await Id0())?.markTenantPoolsDirty(G,Y)??[];return $.json({ok:!0,pools:W})})});function uv$($,Z){if(Z.startsWith("text/html")||Z.startsWith("image/svg"))$.set("Content-Security-Policy","sandbox allow-scripts allow-modals allow-same-origin")}var cv$,f46,x46,lv$;var dv$=B(()=>{y8();iJ();qx();Sf();cv$=new B1,f46=["range","if-none-match","if-modified-since"],x46=["content-type","content-length","content-range","accept-ranges","etag","last-modified"];cv$.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 Y=await Yn(Q,Z);if(!Y)throw new Q$(503,{message:"Object storage not configured"});if(Y.startsWith("data:")&&aJ()){let K=Y.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 uv$(U,H),new Response(F,{status:200,headers:U})}let G=new Headers;for(let K of f46){let H=$.req.header(K);if(H)G.set(K,H)}let J=await fetch(Y,{headers:G});if(J.status===403||J.status===404)throw new 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 x46){let H=J.headers.get(K);if(H)W.set(K,H)}return W.set("Cache-Control","private, max-age=86400"),uv$(W,W.get("content-type")??""),new Response(J.body,{status:J.status,headers:W})});lv$=cv$});var xo=C((iC)=>{var y46=iC&&iC.__createBinding||(Object.create?function($,Z,X,Q){if(Q===void 0)Q=X;var Y=Object.getOwnPropertyDescriptor(Z,X);if(!Y||("get"in Y?!Z.__esModule:Y.writable||Y.configurable))Y={enumerable:!0,get:function(){return Z[X]}};Object.defineProperty($,Q,Y)}:function($,Z,X,Q){if(Q===void 0)Q=X;$[Q]=Z[X]}),g46=iC&&iC.__exportStar||function($,Z){for(var X in $)if(X!=="default"&&!Object.prototype.hasOwnProperty.call(Z,X))y46(Z,$,X)};Object.defineProperty(iC,"__esModule",{value:!0});g46(eQ(),iC)});var nv$=C((mv$)=>{Object.defineProperty(mv$,"__esModule",{value:!0});mv$.version=void 0;mv$.version="3.4.0"});var ov$=C((lK)=>{var h46=lK&&lK.__importDefault||function($){return $&&$.__esModule?$:{default:$}};Object.defineProperty(lK,"__esModule",{value:!0});lK.NodeTransport=lK.VERSION=void 0;lK.nodeResolveHost=i46;var d6=xo(),u46=z0("net"),F41=z0("tls"),c46=z0("path"),pv$=z0("fs"),l46=h46(z0("dns")),d46=nv$();lK.VERSION=d46.version;var m46="nats.js";class tv${socket;version;lang;yields=[];signal=(0,d6.deferred)();closedNotification=(0,d6.deferred)();options;connected=!1;tlsName="";done=!1;closeError;constructor(){this.lang=m46,this.version=lK.VERSION}async connect($,Z){this.tlsName=$.tlsName,this.options=Z;let{tls:X}=this.options,{handshakeFirst:Q}=X||{};try{if(Q===!0)this.socket=await this.tlsFirst($);else this.socket=await this.dial($);if(this.done)this.socket?.destroy();let Y=await this.peekInfo();(0,d6.checkOptions)(Y,Z);let{tls_required:G,tls_available:J}=Y,W=J===!0&&Z.tls!==null;if(!Q&&(G||W))this.socket=await this.startTLS();if(this.done)this.socket?.destroy();if(G&&this.socket.encrypted!==!0)throw d6.errors.InvalidArgumentError.format("tls","is not available on this server");return this.connected=!0,this.setupHandlers(),this.signal.resolve(),Promise.resolve()}catch(Y){let G=Y;if(!G)G=new d6.errors.ConnectionError("error connecting - node provided an undefined error");let{code:J}=G,W=J==="ECONNREFUSED"?new d6.errors.ConnectionError("connection refused",{cause:G}):G;throw this.socket?.destroy(),W}}dial($){let Z=(0,d6.deferred)(),X,Q=(0,u46.createConnection)($.port,$.hostname,()=>{Z.resolve(Q),Q.removeAllListeners()});return Q.on("error",(Y)=>{X=Y}),Q.on("close",()=>{Q.removeAllListeners(),Z.reject(X)}),Q.setNoDelay(!0),Z}get isClosed(){return this.done}close($){return this._closed($,!1)}peekInfo(){let $=(0,d6.deferred)(),Z;return this.socket.on("data",(X)=>{this.yields.push(X);let Q=d6.DataBuffer.concat(...this.yields),Y=(0,d6.extractProtocolMessage)(Q);if(Y!=="")try{let G=d6.INFO.exec(Y);if(!G)throw Error("unexpected response from server");let J=JSON.parse(G[1]);$.resolve(J)}catch(G){$.reject(G)}finally{this.socket.removeAllListeners()}}),this.socket.on("error",(X)=>{Z=X}),this.socket.on("close",()=>{this.socket.removeAllListeners(),$.reject(Z)}),$}loadFile($){if(!$)return Promise.resolve();let Z=(0,d6.deferred)();try{if($=(0,c46.resolve)($),!(0,pv$.existsSync)($))Z.reject(Error(`${$} doesn't exist`));(0,pv$.readFile)($,(X,Q)=>{if(X)return Z.reject(X);Z.resolve(Q)})}catch(X){Z.reject(X)}return Z}async loadClientCerts(){let $={},{certFile:Z,cert:X,caFile:Q,ca:Y,keyFile:G,key:J}=this.options.tls;try{if(Z){let W=await this.loadFile(Z);if(W)$.cert=W}else if(X)$.cert=X;if(G){let W=await this.loadFile(G);if(W)$.key=W}else if(J)$.key=J;if(Q){let W=await this.loadFile(Q);if(W)$.ca=[W]}else if(Y)$.ca=Y;return Promise.resolve($)}catch(W){return Promise.reject(W)}}async tlsFirst($){let Z,X={servername:this.tlsName,rejectUnauthorized:!0};if(this.socket)X.socket=this.socket;if(typeof this.options.tls==="object")try{let Y=await this.loadClientCerts()||{};X=(0,d6.extend)(X,this.options.tls,Y)}catch(Y){return Promise.reject(new d6.errors.ConnectionError(Y.message,{cause:Y}))}let Q=(0,d6.deferred)();try{let Y=(0,F41.connect)($.port,$.hostname,X,()=>{Y.removeAllListeners(),Q.resolve(Y)});Y.on("error",(G)=>{Z=G}),Y.on("secureConnect",()=>{if(X.rejectUnauthorized===!1)return;if(!Y.authorized)throw Y.authorizationError}),Y.on("close",()=>{Q.reject(Z),Y.removeAllListeners()}),Y.setNoDelay(!0)}catch(Y){Q.reject(new d6.errors.ConnectionError(Y.message,{cause:Y}))}return Q}async startTLS(){let $,Z={socket:this.socket,servername:this.tlsName,rejectUnauthorized:!0};if(typeof this.options.tls==="object")try{let Q=await this.loadClientCerts()||{};Z=(0,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,F41.connect)(Z,()=>{Q.removeAllListeners(),X.resolve(Q)});Q.on("error",(Y)=>{$=Y}),Q.on("secureConnect",()=>{if(Z.rejectUnauthorized===!1)return;if(!Q.authorized)throw Q.authorizationError}),Q.on("close",()=>{X.reject($),Q.removeAllListeners()})}catch(Q){X.reject(new 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 F41.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}}lK.NodeTransport=tv$;function i46($){let Z=(0,d6.deferred)();return l46.default.lookup($,{all:!0},(X,Q)=>{if(X){Z.reject(X);return}let Y=[];for(let G of Q)Y.push(G.address);if(Y.length===0)Y.push($);Z.resolve(Y)}),Z}});var $b$=C((ev$)=>{Object.defineProperty(ev$,"__esModule",{value:!0});ev$.connect=n46;var rv$=ov$(),av$=xo(),sv$=xo();function n46($={}){if((0,sv$.hasWsProtocol)($))return Promise.reject(sv$.errors.InvalidArgumentError.format("servers","node client doesn't support websockets, use the 'wsconnect' function instead"));return(0,av$.setTransportFactory)({factory:()=>{return new rv$.NodeTransport},dnsResolveFn:rv$.nodeResolveHost}),av$.NatsConnectionImpl.connect($)}});var Zb$=C((YF)=>{var t46=YF&&YF.__createBinding||(Object.create?function($,Z,X,Q){if(Q===void 0)Q=X;var Y=Object.getOwnPropertyDescriptor(Z,X);if(!Y||("get"in Y?!Z.__esModule:Y.writable||Y.configurable))Y={enumerable:!0,get:function(){return Z[X]}};Object.defineProperty($,Q,Y)}:function($,Z,X,Q){if(Q===void 0)Q=X;$[Q]=Z[X]}),o46=YF&&YF.__exportStar||function($,Z){for(var X in $)if(X!=="default"&&!Object.prototype.hasOwnProperty.call(Z,X))t46(Z,$,X)};Object.defineProperty(YF,"__esModule",{value:!0});YF.connect=void 0;var r46=$b$();Object.defineProperty(YF,"connect",{enumerable:!0,get:function(){return r46.connect}});o46(xo(),YF)});function Gb$($){let Z=$?.connectFn??$66,X=null,Q=null,Y=!1,G=!1,J=!1,W=[];function K(){return X!==null&&!X.isClosed()&&!X.isDraining()&&!J}function H(){console.log(`[NatsProvider] fireReady: ${W.length} callbacks`);for(let U of W)try{U()}catch{}}function N(U){(async()=>{for await(let 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(!G)try{X=await Z({servers:U,timeout:e46,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(s46,a46,O-1,2,0.5);await y$(D)}}return{init(U,w){if(Y)return;Y=!0,G=!1;let O=w?.creds?Xb$.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=Yb$.jetstream(X);return Q},onReady(U){if(W.push(U),K())try{U()}catch{}},async drain(){if(G=!0,Y=!1,Q=null,J=!1,X){let U=X;X=null,await U.drain().catch(()=>{})}}}}function $66($){return Qb$.connect($)}var Xb$,Qb$,Yb$,a46=100,s46=3000,e46=3000;var Jb$=B(()=>{E6();Xb$=S(Eh(),1),Qb$=S(Zb$(),1),Yb$=S(FB(),1)});function U41($,Z){return`${$}.${Z}`}class w41{cache;constructor($){this.cache=Fg({ttlMs:$?.ttlMs??Z66,maxSize:$?.maxSize??X66})}async get($,Z){return this.cache.get(U41($,Z))??null}async set($,Z,X){this.cache.set(U41($,Z),X)}async invalidate($,Z){this.cache.delete(U41($,Z))}teardown(){this.cache.clear()}}var Z66=600000,X66=5000;var Wb$=()=>{};function Rj0($,Z){return`${$}:${Z}`}function O41($){let Z=Fg({ttlMs:$?.ttlMs??Q66,maxSize:$?.maxSize??Y66}),X=$?.getConnection,Q=crypto.randomUUID(),Y=new TextEncoder,G=new TextDecoder,J=null;function W(K,H){let N=X?.();if(!N)return;try{N.publish(Kb$,Y.encode(JSON.stringify({organizationId:K,keyId:H,originId:Q})))}catch(F){console.warn("[ProviderKeyCache] Publish failed (non-critical):",F)}}return{get(K,H){return Z.get(Rj0(K,H))},set(K,H,N){Z.set(Rj0(K,H),N)},invalidate(K,H){Z.delete(Rj0(K,H)),W(K,H)},start(){if(J)return;let K=X?.();if(!K)return;J=K.subscribe(Kb$),(async()=>{for await(let H of J)try{let N=JSON.parse(G.decode(H.data));if(N.originId===Q)continue;Z.delete(Rj0(N.organizationId,N.keyId))}catch{}})().catch(console.error)},teardown(){J?.unsubscribe(),J=null,Z.clear()}}}var Kb$="studio.ai-provider-keys.invalidate",Q66=30000,Y66=5000;var Hb$=()=>{};class B41{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=Nb$.map((Q)=>Z.subscribe(Q));for(let Q of this.subscriptions)(async()=>{for await(let Y of Q)try{let G=JSON.parse(X.decode(Y.data));if(G.originId===this.originId)continue;if(G.messageId&&this.hasSeen(G.messageId))continue;this.onCancel?.(G.taskId)}catch{}})().catch(console.error)}broadcast($){if(/[.*>\s]/.test($)){console.warn("[NatsCancelBroadcast] Invalid threadId, skipping broadcast");return}this.onCancel?.($);try{let Z=this.options.getConnection();if(!Z)return;let X=this.encoder.encode(JSON.stringify({taskId:$,originId:this.originId,messageId:crypto.randomUUID()}));for(let Q of Nb$)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 Nb$;var Fb$=B(()=>{Nb$=["studio.decopilot.cancel","mesh.decopilot.cancel"]});var Ub$=($)=>{let Z;return()=>Z??=$()},D41,L41;var wb$=B(()=>{Z5();D41=Ub$(()=>K8.createHistogram("decopilot.stream.encode_ms",{description:"Per-chunk JSON.stringify+encode time for decopilot stream",unit:"ms"})),L41=Ub$(()=>K8.createCounter("decopilot.stream.published_chunks",{description:"Logical decopilot stream chunks published to JetStream",unit:"{chunks}"}))});function F66(){return{name:IN,subjects:[`${jw0}.>`],storage:i3.StorageType.File,max_age:W66,max_bytes:H66,max_msgs_per_subject:N66,discard:i3.DiscardPolicy.Old,retention:i3.RetentionPolicy.Limits,duplicate_window:K66,num_replicas:1}}class Db${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 Ob$($){let Z=Bb$.headers();for(let[X,Q]of Object.entries($))Z.set(X,Q);return Z}function B66($,Z){let X=0;return{publish(Q,Y,G,J){Q.publish(Y,G,J?{headers:J}:void 0).catch((W)=>{if(X++,J66().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 D66($){if(!($ instanceof Error))return!1;if($.name==="TimeoutError")return!0;return/timeout|no responders|503/i.test($.message)}class E41{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=F66(),X=await gZ(async()=>{let Q=this.options.getJetStreamManager?await this.options.getJetStreamManager():await i3.jetstreamManager($);try{await Q.streams.info(IN),await Q.streams.update(IN,Z)}catch(Y){if(Y instanceof Error&&Y.message.includes("stream not found"))await Q.streams.add(Z);else if(Y instanceof Error&&/can ?not change.*storage|storage type/i.test(Y.message))await Q.streams.delete(IN),await Q.streams.add(Z);else throw Y}return Q},{maxAttempts:5,minTimeout:250,maxTimeout:4000,jitter:0.5,isRetriable:D66});this.js=this.options.getJetStream(),this.jsm=X,console.log(`[Decopilot] StreamBuffer.init ${this.js?"ready":"degraded (js=null)"}`)}pump($,Z,X,Q){let Y=this.js;if(!Y)return console.warn(`[Decopilot] pump: JetStream client unavailable for thread ${Z}; chunks NOT published to NATS`),Promise.resolve();let G=B66(Z,Q),J=!1,W=()=>{if(J)return;J=!0;let H=$3$(Z);Y.publish(H.subject,H.data).catch(()=>{})};X.addEventListener("abort",W,{once:!0});let K=(H)=>{let N=performance.now(),F=ni0(H,{runId:Z}),U=performance.now()-N;if(D41().record(U),L41().add(1,{"org.id":Q??"unknown"}),O66?.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)G.publish(Y,w.subject,w.data,w.headers?Ob$(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(),w66)console.warn(JSON.stringify({msg:"decopilot-stream-diag",event:"pump-done",taskId:Z,publishedChunks:F,publishErrors:G.errorCount}))}if(U!==void 0)throw U})()}async publishRawChunk($,Z,X){let Q=this.js;if(!Q)return!1;let Y=performance.now(),G=ni0(Z,{runId:$,dedup:X});if(D41().record(performance.now()-Y),L41().add(1),G.length===0)return console.warn(`[Decopilot] dropping oversized raw chunk for thread ${$} (> MAX_CHUNKED_BYTES)`),!0;for(let J of G)await Q.publish(J.subject,J.data,{...J.headers?{headers:Ob$(J.headers)}:{},...J.msgId?{msgID:J.msgId}:{}});return!0}async publishDone($,Z,X){let Q=this.js;if(!Q)return!1;let Y=eJ$({runId:$,fenceToken:Z,finalSeq:X});return await Q.publish(Y.subject,Y.data,{msgID:Y.msgId}),!0}async createTailStream($,Z,X){let Q=this.js;if(!Q)return console.warn(`[Decopilot] createTailStream: JetStream client unavailable for thread ${$}; no live tail`),null;let Y=X?.deliverPolicy==="new"?i3.DeliverPolicy.New:i3.DeliverPolicy.All,G=X?.closeOnDone??!1,J=YO($),W;try{W=await(await Q.consumers.get(IN,{filter_subjects:J,deliver_policy:Y})).consume()}catch(D){return console.warn("[Decopilot] JetStream tail unavailable (non-critical):",D?.message??D),null}let N=Rw0({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(zw0()).pipeThrough(Pw0()).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(G){O(),D.close();return}continue}D.enqueue(j.chunk);return}},cancel(){O()}})}purge($){if(!this.jsm)return;this.jsm.streams.purge(IN,{filter:YO($)}).catch(()=>{})}teardown(){this.js=null,this.jsm=null}}var i3,Bb$,G66=($)=>{let Z;return()=>Z??=$()},J66,W66=86400000000000,K66=120000000000,H66=4294967296,N66=500000,U66,w66,O66;var Lb$=B(()=>{E6();pi0();Iw0();Aw0();Z5();wb$();i3=S(FB(),1),Bb$=S(Eh(),1),J66=G66(()=>K8.createCounter("decopilot.stream.publish_errors",{description:"Number of JetStream publish failures for decopilot stream chunks",unit:"{errors}"}));U66=process.env.STREAM_ENCODE_TRACE==="1",w66=process.env.DECOPILOT_STREAM_TRACE==="1";O66=U66?new Db$:null});function Ij0($,Z,X,Q){if(!Q)return!1;return $.emit(Z,OW(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 Eb$=B(()=>{L8()});class j41{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 z41{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??L66;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??j66,X=this.options.itemIntervalMs??E66,Q=await this.taskBoard.listItemsPendingReview(Z,this.cursor,new Date(Date.now()-X)),Y=Q.at(-1);this.cursor=Q.length===Z&&Y?{updatedAt:Y.updatedAt,id:Y.id}:null;for(let{id:G,organizationId:J}of Q)try{if(await this.reconcileItem(G,J))$++}catch(W){console.error(`[task-board-review-sweeper] ${G} failed`,W)}await this.reapNeverStartedThreads(Z),$+=await this.dispatchDueRetries(Z),await this.reactToUnhandledFailures(Z)}catch(Z){console.error("[task-board-review-sweeper] sweep failed",Z)}finally{this.running=!1}return $}async reapNeverStartedThreads($){try{let Z=await this.taskBoard.failNeverStartedLinkedThreads($,new Date(Date.now()-aY$),Mn0);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()-P66));for(let{id:X,organizationId:Q,threadId:Y}of Z)try{console.warn(`[task-board-review-sweeper] reacting to an unhandled failure on ${X}`),await Li0(this.taskBoard,Y,Q)}catch(G){console.error(`[task-board-review-sweeper] unhandled-failure reaction for ${X} failed`,G)}}async dispatchDueRetries($){let Z=0,X=await this.taskBoard.listItemsDueForRetry($,new Date);for(let{id:Q,organizationId:Y,attempts:G}of X)try{if(!await this.taskBoard.claimDueRetry(Q,Y,new Date))continue;let J=await this.taskBoard.getById(Q,Y);if(!J||J.status!=="in_progress"||J.assigneeId!==l4)continue;let W=await this.contextFactory(Y,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 ${G})`)}catch(J){console.error(`[task-board-review-sweeper] retry dispatch for ${Q} failed`,J),await this.taskBoard.scheduleRunRetry(Q,Y,G,new Date(Date.now()+z66)).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!==l4)return!1;await this.taskBoard.markSwept($,Z);let Q=await this.taskBoard.listPrs($,Z);if(Q.length===0)return!1;let Y=await this.contextFactory(Z,X.assignedBy??X.createdBy);if(!Y)return!1;if(await WW$(Y,X))return!0;let G=await Promise.all(Q.map(async(J)=>({...J,...await Rn0(Y,Z,J)})));if(G.every((J)=>J.state===null))console.warn(`[task-board-review-sweeper] ${$}: no live PR state from GitHub (${G.length} PR(s)) \u2014 proceeding on unknown`);if(!Tn0(G))return!1;return await Cw0(Y,X),!0}dispose(){if(this.timer)clearInterval(this.timer),this.timer=null}}var L66=60000,E66=300000,j66=50,z66=60000,P66=120000;var jb$=B(()=>{qZ();Dn0();GO();hw0();e9();kn0();yx()});import{readdir as A66,rm as qj0}from"fs/promises";import{join as Mj0}from"path";async function kj0($){let Z=new Date;Z.setUTCDate(Z.getUTCDate()-T66),Z.setUTCHours(0,0,0,0);let X=0;try{let Q=await nC($);for(let Y of Q)if(/^\d{4}$/.test(Y))X+=await zb$($,Y,Z);else if(!Y.startsWith(".")){let G=Mj0($,Y),J=await nC(G);for(let K of J){if(!/^\d{4}$/.test(K))continue;X+=await zb$(G,K,Z)}if((await nC(G)).length===0)await qj0(G,{recursive:!0,force:!0})}}catch(Q){console.warn("monitoring retention cleanup failed:",Q)}return X}async function zb$($,Z,X){let Q=0,Y=Mj0($,Z),G=await nC(Y);for(let W of G){if(!/^\d{2}$/.test(W))continue;let K=Mj0(Y,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=Mj0(K,F);await qj0(w,{recursive:!0,force:!0}),Q++}}if((await nC(K)).length===0)await qj0(K,{recursive:!0,force:!0})}if((await nC(Y)).length===0)await qj0(Y,{recursive:!0,force:!0});return Q}async function nC($){try{return(await A66($)).filter((X)=>!X.startsWith("."))}catch{return[]}}var T66=30;var P41=()=>{};import{DBOS as A41,SchedulerMode as R66}from"@dbos-inc/dbos-sdk";async function q66(){let $=[KJ(),pC(),mK()],Z=0;for(let X of $)try{Z+=await kj0(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 M66($,Z){await A41.runStep(()=>q66(),{name:"monitoringRetention"})}function Ab$(){if(Pb$)return;Pb$=!0;let $=A41.registerWorkflow(M66,{name:"monitoringRetentionWorkflow"});A41.registerScheduled($,{name:"monitoringRetentionWorkflow",crontab:I66,mode:R66.ExactlyOncePerIntervalWhenActive})}var I66="23 4 * * *",Pb$=!1;var Tb$=B(()=>{oQ();P41()});function Rb$($){return async(Z,X)=>{let Q=await $.db.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["member.role","organization.id as orgId","organization.slug as orgSlug","organization.name as orgName"]).where("member.userId","=",X).where("member.organizationId","=",Z).executeTakeFirst();if(!Q)return console.warn(`[automationContextFactory] User ${X} not found in org ${Z} \u2014 returning null`),null;let Y=await fK.create();Y.auth.user={id:X,role:Q.role},Y.organization={id:Q.orgId,slug:Q.orgSlug,name:Q.orgName};let G=await u11($.db,Z,Q.role);return Y.boundAuth=h11({auth:Y.authInstance,headers:new Headers,role:Q.role,permissions:G,userId:X}),Y.access=new dD(X,void 0,Y.boundAuth,Q.role,"self"),Tg(Y,{id:Q.orgId,slug:Q.orgSlug}),Y}}var Ib$=B(()=>{mD();Dg()});function k66(){return{services:[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}],migrationsStatus:"pending",serverUrl:null,logs:[]}}function V66(){for(let $ of S66)$()}function qb$($){let Z=[...T41.logs,$];T41={...T41,logs:Z.length>500?Z.slice(-500):Z},V66()}function R41(){return C66}var T41,S66,C66=!1;var I41=B(()=>{T41=k66(),S66=new Set});import{EventEmitter as _66}from"events";var q41;var Mb$=B(()=>{I41();q41=new _66;q41.on("request",($)=>{qb$($)})});function kb$(){return async($,Z)=>{let X=Date.now(),Q=$.req.method,Y=$.req.path;if(Y==="/api/auth/get-session"||Y.includes("favicon")){await Z();return}let G="",J=!1;if(Y.startsWith("/mcp")&&Q==="POST"){J=!0;try{if($.req.header("Content-Type")?.includes("application/json")){let U=await $.req.raw.clone().json();if(U.method==="tools/call"&&U.params?.name){let 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":""):"";G=`${e6.tool}${w}${e6.dim}(${L})${e6.reset}`}else if(U.method)G=`${e6.dim}${pg(U.method)}${e6.reset}`}}catch{}}let W=pg(Y);if(Y.startsWith("/mcp/conn_")){let N=Y.split("/")[2]??"";W=`/mcp/${e6.mcp}${pg(N.slice(0,12))}\u2026${e6.reset}`}else if(Y==="/mcp")W=`${e6.mcp}/mcp${e6.reset}`;else if(Y==="/mcp/registry")W=`${e6.mcp}/mcp/registry${e6.reset}`;let K=b66(Q),H=J?"\u25C0":"\u2190";if(!R41())console.log(`${e6.dim}${H}${e6.reset} ${K}${Q}${e6.reset} ${W}${G?` ${G}`:""}`);try{await Z()}finally{let N=Date.now()-X,F=$.res.status,U=v66(F),w=N<1000?`${N}ms`:`${(N/1000).toFixed(1)}s`,O=J?"\u25B6":"\u2192";if(!R41())console.log(`${e6.dim}${O}${e6.reset} ${K}${Q}${e6.reset} ${W}${G?` ${G}`:""} ${U}${F}${e6.reset} ${e6.duration}${w}${e6.reset}`);q41.emit("request",{method:Q,path:pg(Y),status:F,duration:N,timestamp:new Date})}}}var e6,v66=($)=>{if($>=500)return e6.serverError;if($>=400)return e6.clientError;if($>=300)return e6.redirect;return e6.ok},b66=($)=>{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 Sb$=B(()=>{I41();Mb$();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 vb$}from"crypto";import{mkdir as f66,readdir as x66,rm as Vb$,stat as bb$}from"fs/promises";import{join as k41,relative as y66}from"path";import{z as E$}from"zod";function xb$($){let Z=$.replace(/[^a-zA-Z0-9_-]/g,"_");return k41(g66,Z)}function yb$($){return $.replace(/^\/+/,"").replace(/\.\./g,"")}function M41($,Z){let X=xb$($),Q=yb$(Z);return k41(X,Q)}function h66($,Z,X,Q){let Y=c0().encryptionKey||"dev-secret",G=`${$}:${Z}:${X}:${Q}`;return vb$("sha256",Y).update(G).digest("hex")}function _b$($,Z,X,Q,Y){let G=Math.floor(Date.now()/1000)+Q,J=h66(Z,X,G,Y),W=new URL(`/api/dev-assets/${Z}/${yb$(X)}`,$);return W.searchParams.set("expires",G.toString()),W.searchParams.set("signature",J),W.searchParams.set("method",Y),W.toString()}function gb$($,Z,X){let Q=`${$}:${Z.getTime()}:${X}`;return`"${vb$("md5","etag").update(Q).digest("hex")}"`}async function hb$($,Z,X,Q,Y){try{let G=await x66($,{withFileTypes:!0});for(let J of G){let W=k41($,J.name),H=y66(Z,W).replace(/\\/g,"/");if(X&&!H.startsWith(X))continue;if(J.isDirectory())if(Q){let N=H+"/";if(!X||N.startsWith(X)){if(!(X?H.slice(X.length):H).includes("/"))Y.commonPrefixes.add(N)}}else await hb$(W,Z,X,Q,Y);else if(J.isFile()){if(Q&&X){let N=H.slice(X.length);if(N.includes(Q)){let F=N.indexOf(Q),U=X+N.slice(0,F+1);Y.commonPrefixes.add(U);continue}}try{let N=await bb$(W);Y.objects.push({key:H,size:N.size,lastModified:N.mtime.toISOString(),etag:gb$(W,N.mtime,N.size)})}catch{}}}}catch{}}function ub$($,Z){let Q=r($).id;return[{name:"LIST_OBJECTS",description:"List objects in the local assets directory with pagination support",inputSchema:E$.object({prefix:E$.string().optional(),maxKeys:E$.number().optional().default(1000),continuationToken:E$.string().optional(),delimiter:E$.string().optional()}),outputSchema:E$.object({objects:E$.array(E$.object({key:E$.string(),size:E$.number(),lastModified:E$.string(),etag:E$.string()})),nextContinuationToken:E$.string().optional(),isTruncated:E$.boolean(),commonPrefixes:E$.array(E$.string()).optional()}),handler:async(Y)=>{let G=Y,J=G.prefix||"",W=G.maxKeys??1000,K=G.delimiter,H=G.continuationToken,N=xb$(Q);await f66(N,{recursive:!0});let F={objects:[],commonPrefixes:new Set};await hb$(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(Y)=>{let G=Y,J=M41(Q,G.key),W=await bb$(J);return{contentType:P$1(G.key),contentLength:W.size,lastModified:W.mtime.toISOString(),etag:gb$(J,W.mtime,W.size)}}},{name:"GET_PRESIGNED_URL",description:"Generate a presigned URL for downloading a file from local storage",inputSchema:E$.object({key:E$.string(),expiresIn:E$.number().optional()}),outputSchema:E$.object({url:E$.string(),expiresIn:E$.number()}),handler:async(Y)=>{let G=Y,J=G.expiresIn??Cb$;return{url:_b$(Z,Q,G.key,J,"GET"),expiresIn:J}}},{name:"PUT_PRESIGNED_URL",description:"Generate a presigned URL for uploading a file to local storage",inputSchema:E$.object({key:E$.string(),expiresIn:E$.number().optional(),contentType:E$.string().optional()}),outputSchema:E$.object({url:E$.string(),expiresIn:E$.number()}),handler:async(Y)=>{let G=Y,J=G.expiresIn??Cb$;return{url:_b$(Z,Q,G.key,J,"PUT"),expiresIn:J}}},{name:"DELETE_OBJECT",description:"Delete a single file from local storage",inputSchema:E$.object({key:E$.string()}),outputSchema:E$.object({success:E$.boolean(),key:E$.string()}),handler:async(Y)=>{let G=Y,J=M41(Q,G.key);try{return await Vb$(J),{success:!0,key:G.key}}catch{return{success:!1,key:G.key}}}},{name:"DELETE_OBJECTS",description:"Delete multiple files from local storage",inputSchema:E$.object({keys:E$.array(E$.string()).max(1000)}),outputSchema:E$.object({deleted:E$.array(E$.string()),errors:E$.array(E$.object({key:E$.string(),message:E$.string()}))}),handler:async(Y)=>{let G=Y,J=[],W=[];return await Promise.all(G.keys.map(async(K)=>{let H=M41(Q,K);try{await Vb$(H),J.push(K)}catch(N){W.push({key:K,message:N instanceof Error?N.message:"Unknown error"})}})),{deleted:J,errors:W}}}]}async function S41($,Z,X){let Q=ub$(Z,X),Y=new PW({name:"dev-assets-mcp",version:"1.0.0"},{capabilities:{tools:{}},jsonSchemaValidator:G5});for(let J of Q){let W="shape"in J.inputSchema?J.inputSchema.shape:E$.object({}).shape,K=J.outputSchema&&"shape"in J.outputSchema?J.outputSchema.shape:E$.object({}).shape;Y.registerTool(J.name,{description:J.description??"",inputSchema:W,outputSchema:K,annotations:J.annotations,_meta:J._meta},async(H)=>{try{let N=await J.handler(H);return{content:[{type:"text",text:JSON.stringify(N)}],structuredContent:N}}catch(N){return{content:[{type:"text",text:`Error: ${N.message}`}],isError:!0}}})}let G=new lX({enableJsonResponse:$.headers.get("Accept")?.includes("application/json")??!1});return await Y.connect(G),lG(Y,G,$,"mcp:dev-assets")}async function cb$($,Z,X,Q){let G=ub$(X,Q).find((J)=>J.name===$);if(!G)return{content:[{type:"text",text:`Tool not found: ${$}`}],isError:!0};try{let J=await G.handler(Z);return{content:[{type:"text",text:JSON.stringify(J)}]}}catch(J){return{content:[{type:"text",text:J instanceof Error?J.message:String(J)}],isError:!0}}}var g66="./data/assets",Cb$=3600,fb$,lb$;var db$=B(()=>{S$();lx();y8();dc();bV();RX();hE0();fb$=new B1;fb$.all("/",async($)=>{let Z=$.get("studioContext"),X=new URL($.req.url),Q=`${X.protocol}//${X.host}`;return S41($.req.raw,Z,Q)});lb$=fb$});var mb$={};N4(mb$,{mountDevRoutes:()=>u66});function u66($,Z){$.all("/mcp/:connectionId{.*_dev-assets$}",Z,async(Q)=>{let Y=Q.get("studioContext"),G=new URL(Q.req.url),J=`${G.protocol}//${G.host}`;return S41(Q.req.raw,Y,J)}),$.all("/mcp/:connectionId{.*_dev-assets$}/call-tool/:toolName",Z,async(Q)=>{let Y=Q.get("studioContext"),G=new URL(Q.req.url),J=`${G.protocol}//${G.host}`,W=Q.req.param("toolName");if(!W)return Q.json({error:"Missing tool name"},400);let K=await Q.req.json(),H=await cb$(W,K,Y,J);if(H.isError)return Q.json(H.content,500);return Q.json(H.content)}),$.use("/mcp/dev-assets",Z),$.route("/mcp/dev-assets",lb$);let X=new B1;X.use("*",l3({mountPath:"/api/dev-assets"})),X.route("/",gE0({orgFromPath:!1})),$.route("/api/dev-assets",X)}var ib$=B(()=>{y8();w$1();hE0();db$()});import{sql as c66}from"kysely";import{randomUUID as nb$}from"crypto";import{z as l66}from"zod";async function m66($){let Z=new Date().toISOString(),X=nb$(),Q=g4.SELF($.organizationId),Y="registry.publish_request.created",G={requestId:$.request.id,requestedId:$.request.requested_id,title:$.request.title,status:$.request.status,createdAt:$.request.created_at,requester:{name:$.request.requester_name,email:$.request.requester_email}};await $.db.insertInto("events").values({id:X,organization_id:$.organizationId,type:"registry.publish_request.created",source:Q,specversion:"1.0",subject:$.request.id,time:Z,datacontenttype:"application/json",dataschema:null,data:JSON.stringify(G),cron:null,status:"pending",attempts:0,last_error:null,next_retry_at:null,created_at:Z,updated_at:Z}).execute();let J=await $.db.selectFrom("event_subscriptions").select(["id"]).where("organization_id","=",$.organizationId).where("enabled","=",1).where("event_type","=","registry.publish_request.created").where((W)=>W.or([W("publisher","is",null),W("publisher","=",Q)])).execute();if(J.length>0)await $.db.insertInto("event_deliveries").values(J.map((W)=>({id:nb$(),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 c66`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.204.0",
3
+ "version": "4.204.2",
4
4
  "description": "Deco CMS — Self-hostable MCP Gateway for managing AI connections and tools",
5
5
  "author": "Deco team",
6
6
  "repository": {