decocms 4.199.0 → 4.200.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (224) hide show
  1. package/dist/client/assets/{AlertCircle-1FZS3v-O.js → AlertCircle-BhTmyCSl.js} +1 -1
  2. package/dist/client/assets/{AreaChart-6BJhVF5T.js → AreaChart-DqYpROMz.js} +1 -1
  3. package/dist/client/assets/{ArrowLeft-CR4vxoJp.js → ArrowLeft-Bq9n7Efz.js} +1 -1
  4. package/dist/client/assets/{ArrowUp-CC_mbqe1.js → ArrowUp-CJjoIW27.js} +1 -1
  5. package/dist/client/assets/{ArrowUpRight-CbCF70v1.js → ArrowUpRight-CZmrNYVx.js} +1 -1
  6. package/dist/client/assets/{Check-COUqEm5U.js → Check-B4LOIpbl.js} +1 -1
  7. package/dist/client/assets/{CheckCircle-OafhoQfB.js → CheckCircle-DQFLwOWQ.js} +1 -1
  8. package/dist/client/assets/{ChevronDown-BQOZpawT.js → ChevronDown-C81FB2jE.js} +1 -1
  9. package/dist/client/assets/{ChevronRight-cIZXph7r.js → ChevronRight-C9eKOq0X.js} +1 -1
  10. package/dist/client/assets/{ChevronUp-1zullNEp.js → ChevronUp-cJfYTCxQ.js} +1 -1
  11. package/dist/client/assets/{Copy01-DOQujw91.js → Copy01-BpNFyIG3.js} +1 -1
  12. package/dist/client/assets/{CpuChip01-DP6ksU24.js → CpuChip01-rTuau8eN.js} +1 -1
  13. package/dist/client/assets/{CreditCard01-CufFLIFI.js → CreditCard01-Cf-ySZQT.js} +1 -1
  14. package/dist/client/assets/{DotsVertical-wivS0onw.js → DotsVertical-Bbp1-coS.js} +1 -1
  15. package/dist/client/assets/{Eye-DrB86SUu.js → Eye-DtwuX3ku.js} +1 -1
  16. package/dist/client/assets/{FilterLines-D-22jIZj.js → FilterLines-DPwS2mtG.js} +1 -1
  17. package/dist/client/assets/{Globe01-4yOmtvQc.js → Globe01-Beeg7i6H.js} +1 -1
  18. package/dist/client/assets/{Globe04-m8WcbUjt.js → Globe04-BoZqB90q.js} +1 -1
  19. package/dist/client/assets/{HardDrive-DZ-Roc4G.js → HardDrive-In2g3p0Z.js} +1 -1
  20. package/dist/client/assets/{Key01-Dkj1imoI.js → Key01-CLHAzL7F.js} +1 -1
  21. package/dist/client/assets/{LayoutLeft-qMb6nkLN.js → LayoutLeft-DR8c8hnJ.js} +1 -1
  22. package/dist/client/assets/{LinkExternal01-B8ehDauF.js → LinkExternal01-CNImbqg3.js} +1 -1
  23. package/dist/client/assets/{LogOut01-oc8d9SJs.js → LogOut01-NI4Wq6aw.js} +1 -1
  24. package/dist/client/assets/{Monitor01-BOSd8wQ1.js → Monitor01-9QoEPqUv.js} +1 -1
  25. package/dist/client/assets/{Palette-CSOJeVFB.js → Palette-p9tdsPsg.js} +1 -1
  26. package/dist/client/assets/{Play-H-b9CdPO.js → Play-Cp-aLemZ.js} +1 -1
  27. package/dist/client/assets/{Plus-DJU_4kbx.js → Plus-Cwv15u7s.js} +1 -1
  28. package/dist/client/assets/{SearchLg-BQmUG7S4.js → SearchLg-BXZX1tBU.js} +1 -1
  29. package/dist/client/assets/{SearchMd-SbBW-oPu.js → SearchMd-CsNRvfxl.js} +1 -1
  30. package/dist/client/assets/{Settings02-CtYuLrf4.js → Settings02-CzZC6jVc.js} +1 -1
  31. package/dist/client/assets/{Share07-CT2dyret.js → Share07-Du0N_OSs.js} +1 -1
  32. package/dist/client/assets/{Shield01-W_oC4KLS.js → Shield01-Blw1BuT9.js} +1 -1
  33. package/dist/client/assets/{Star01-COyWVOwH.js → Star01-Cbyy_2q5.js} +1 -1
  34. package/dist/client/assets/{Stars01-B9M6VkZj.js → Stars01-Y6d8diQo.js} +1 -1
  35. package/dist/client/assets/{Stars02-l4Bi009V.js → Stars02-CBOFG88z.js} +1 -1
  36. package/dist/client/assets/{Sun-BgLBLrAR.js → Sun-CGpN6OdI.js} +1 -1
  37. package/dist/client/assets/{SwitchHorizontal01-D3zKTM_Y.js → SwitchHorizontal01-BJ2cUUYd.js} +1 -1
  38. package/dist/client/assets/{Tool01-C-9oM8hx.js → Tool01-BXaInnyc.js} +1 -1
  39. package/dist/client/assets/{Tool02-CWP-2wPJ.js → Tool02-DDeZjMbB.js} +1 -1
  40. package/dist/client/assets/{Trash01-DUPlExuW.js → Trash01-CBneMLfw.js} +1 -1
  41. package/dist/client/assets/{TrendUp01-9IbbL3_o.js → TrendUp01-DXNscdhz.js} +1 -1
  42. package/dist/client/assets/{Upload01-CykCKPTH.js → Upload01-D-P5DVmm.js} +1 -1
  43. package/dist/client/assets/{User01-DdCsns_p.js → User01-CTlj9SP6.js} +1 -1
  44. package/dist/client/assets/{Users01-DddX3P2e.js → Users01-BNWPHd9j.js} +1 -1
  45. package/dist/client/assets/{Users03-Bx6UOYkE.js → Users03-BIN8pPX1.js} +1 -1
  46. package/dist/client/assets/{X-B3ybq5w2.js → X-CppbNEBj.js} +1 -1
  47. package/dist/client/assets/{XCircle-C4ggJi18.js → XCircle-DjkH-NeO.js} +1 -1
  48. package/dist/client/assets/{XClose-DAaNDUux.js → XClose-CWav5Bs0.js} +1 -1
  49. package/dist/client/assets/{Zap-Bo7ywofH.js → Zap-DxNsssjv.js} +1 -1
  50. package/dist/client/assets/{ZapSquare-Bg5_XykS.js → ZapSquare-cMorGdb3.js} +1 -1
  51. package/dist/client/assets/{access-gate-CM__cLeC.js → access-gate-3COGdZ6x.js} +1 -1
  52. package/dist/client/assets/{agent-icon-ChlSj_zC.js → agent-icon-knTyUztN.js} +1 -1
  53. package/dist/client/assets/{agents-list-FKXfmE0I.js → agents-list-RQcEjsom.js} +1 -1
  54. package/dist/client/assets/{ai-providers-BFIskFbw.js → ai-providers-BBRRAt9_.js} +1 -1
  55. package/dist/client/assets/{alert-CYsDgWPP.js → alert-BYm8pziW.js} +1 -1
  56. package/dist/client/assets/{alert-dialog-CEWyrZ_Z.js → alert-dialog-D7bG9VS8.js} +1 -1
  57. package/dist/client/assets/{app-editor-BhYIbVrX.js → app-editor-jhQkwOdT.js} +1 -1
  58. package/dist/client/assets/{auth-v89NYv9q.js → auth-FhyDTaG2.js} +1 -1
  59. package/dist/client/assets/{auth-catchall-cwMYBp3y.js → auth-catchall-BH9KfHin.js} +1 -1
  60. package/dist/client/assets/{auth-entry-utz1nSNV.js → auth-entry-DFaNxdCk.js} +1 -1
  61. package/dist/client/assets/{auth-split-layout-CSD4ZOjw.js → auth-split-layout-BVjfixy9.js} +1 -1
  62. package/dist/client/assets/{authenticate-and-persist-oauth-Bx2wnD4m.js → authenticate-and-persist-oauth-CaRjws-6.js} +1 -1
  63. package/dist/client/assets/{automation-list-row-CtwPJ_qi.js → automation-list-row-CSLdG3If.js} +1 -1
  64. package/dist/client/assets/{automation-runs-jWstZftP.js → automation-runs-BKejGsqr.js} +1 -1
  65. package/dist/client/assets/{automations-DYLWv316.js → automations-BjVn0pFp.js} +1 -1
  66. package/dist/client/assets/{avatar-BpypxYS_.js → avatar-Cn_cfHGA.js} +1 -1
  67. package/dist/client/assets/{badge-D7AIZASF.js → badge-CW4ZMO4g.js} +1 -1
  68. package/dist/client/assets/{billing-DvQB5EP4.js → billing-DRMtm778.js} +1 -1
  69. package/dist/client/assets/{block-document-BieiLkD8.js → block-document-CxjtlCeJ.js} +1 -1
  70. package/dist/client/assets/{brand-context-CyT0dJvx.js → brand-context-DrCOz3m0.js} +1 -1
  71. package/dist/client/assets/{buckets-CEQI-s6s.js → buckets-CxpQAB_H.js} +1 -1
  72. package/dist/client/assets/{bulk-category-panel-DGtK7V8c.js → bulk-category-panel-D2ewpG1-.js} +1 -1
  73. package/dist/client/assets/{capability-load-error-BL2lrddy.js → capability-load-error-CCvckHSr.js} +1 -1
  74. package/dist/client/assets/{card-CoBKo1D2.js → card-B2EDCCFN.js} +1 -1
  75. package/dist/client/assets/{cards-OWxF4nj0.js → cards-CUVVpcx3.js} +1 -1
  76. package/dist/client/assets/{category-editor-Dn0rz6Sk.js → category-editor-C06FFZWk.js} +1 -1
  77. package/dist/client/assets/{chat-context-C5IpUGyL.js → chat-context-D1hHjljq.js} +1 -1
  78. package/dist/client/assets/{checkbox-B_axFhC0.js → checkbox-BvF7FLqX.js} +1 -1
  79. package/dist/client/assets/{cli-auth-success-D_b0jLm-.js → cli-auth-success-C6kPXgTm.js} +1 -1
  80. package/dist/client/assets/{collection-detail-BaUxPBtg.js → collection-detail-C7KPbdWQ.js} +1 -1
  81. package/dist/client/assets/{collection-display-button-TeFEpehu.js → collection-display-button-CGFku8H2.js} +1 -1
  82. package/dist/client/assets/{collection-search-jgJieFUU.js → collection-search-BbbZFsDw.js} +1 -1
  83. package/dist/client/assets/{collection-table-wrapper-VyWx7MWu.js → collection-table-wrapper-XtXe_NfX.js} +1 -1
  84. package/dist/client/assets/{collection-tabs-D8Hgew32.js → collection-tabs-DFCSXuwj.js} +1 -1
  85. package/dist/client/assets/{command-mz5vaCyb.js → command-DgU61_uI.js} +1 -1
  86. package/dist/client/assets/{commerce-onboarding-oCzW05oi.js → commerce-onboarding-DOzm3kFA.js} +1 -1
  87. package/dist/client/assets/{connect-B55TAI-T.js → connect-BpViFsjh.js} +1 -1
  88. package/dist/client/assets/{connection-DKRnbF5j.js → connection-QWvntNYv.js} +1 -1
  89. package/dist/client/assets/{connection-card-BBnyhURe.js → connection-card-DpGYVhzk.js} +1 -1
  90. package/dist/client/assets/{connection-detail-jFa2SZOI.js → connection-detail-DUCYK0cA.js} +1 -1
  91. package/dist/client/assets/{connection-form-helpers-DmMFoW_E.js → connection-form-helpers-CW2bYf7J.js} +1 -1
  92. package/dist/client/assets/{connections-B2phlZuI.js → connections-BeQ4r4sw.js} +1 -1
  93. package/dist/client/assets/{decopilot-sse-pool-D6eFDIhm.js → decopilot-sse-pool-Cz6gVRJI.js} +1 -1
  94. package/dist/client/assets/{dialog-CFILfZOA.js → dialog-BPktFZO9.js} +1 -1
  95. package/dist/client/assets/{domain-settings-Dz8mlaOV.js → domain-settings-C5J6O_DD.js} +1 -1
  96. package/dist/client/assets/{drawer-CUdV6oxw.js → drawer-D93LI7Qt.js} +1 -1
  97. package/dist/client/assets/{dropdown-menu-CvmqCZWH.js → dropdown-menu-BY8Ei2Jg.js} +1 -1
  98. package/dist/client/assets/{empty-state-B-59kVV9.js → empty-state-C9teIPP9.js} +1 -1
  99. package/dist/client/assets/{extract-connection-data-DXrSXKT4.js → extract-connection-data-MTzBJg6Q.js} +1 -1
  100. package/dist/client/assets/{file-explorer-DKr1xc8P.js → file-explorer-CqYivDNf.js} +1 -1
  101. package/dist/client/assets/{file-type-icon-ClrRx9NG.js → file-type-icon-DfYdiqAr.js} +1 -1
  102. package/dist/client/assets/{form-BjBdY0X7.js → form-7RapfGCk.js} +1 -1
  103. package/dist/client/assets/{general-ATn8tjRI.js → general-kjGl_mNB.js} +1 -1
  104. package/dist/client/assets/{github-repo-picker-D-sEtEsJ.js → github-repo-picker-KXEX9iEU.js} +1 -1
  105. package/dist/client/assets/{hooks-CdOH0sr_.js → hooks-DUprjtEp.js} +1 -1
  106. package/dist/client/assets/{index-HpF4ydE2.js → index-BCOFg6RR.js} +29 -29
  107. package/dist/client/assets/{index-kMw37nKO.js → index-BSDOLxA4.js} +1 -1
  108. package/dist/client/assets/{index-CFJJgkw9.js → index-BxjoDs_e.js} +1 -1
  109. package/dist/client/assets/{index-COzRe4rY.js → index-CDCA8iRv.js} +1 -1
  110. package/dist/client/assets/{index-D1wTzn4-.js → index-CdagCr_p.js} +1 -1
  111. package/dist/client/assets/{index-DoiZIymS.js → index-DRgMZx0N.js} +51 -51
  112. package/dist/client/assets/{index--OjyTwFQ.js → index-DWBnU4AF.js} +1 -1
  113. package/dist/client/assets/{index-BHRSTVbm.js → index-DZV1qR1n.js} +1 -1
  114. package/dist/client/assets/{index-BPPqwJmq.js → index-Dh-VUVpi.js} +1 -1
  115. package/dist/client/assets/{index-BzRGcU66.js → index-iL6E9shn.js} +1 -1
  116. package/dist/client/assets/{index-redirect-B8Hgwnpy.js → index-redirect-CJoGlj2p.js} +1 -1
  117. package/dist/client/assets/{input-Dw4GelAn.js → input-DynJkM4w.js} +1 -1
  118. package/dist/client/assets/{integration-icon-Cyu5omdT.js → integration-icon-B3VP8Vuf.js} +1 -1
  119. package/dist/client/assets/{invite-member-dialog-B7Q8c3nD.js → invite-member-dialog-awv41y4U.js} +1 -1
  120. package/dist/client/assets/{label-CJtuYe4Q.js → label-B5e9MV8R.js} +1 -1
  121. package/dist/client/assets/{layout-LadKSCFh.js → layout-C3Jok0pl.js} +1 -1
  122. package/dist/client/assets/{login-k6W7OWLC.js → login-BDVrAM_E.js} +1 -1
  123. package/dist/client/assets/{mcp-oauth-JmfL6YDg.js → mcp-oauth-Cu9rcPuH.js} +1 -1
  124. package/dist/client/assets/{members-Cax5phLv.js → members-DIDF1VZA.js} +1 -1
  125. package/dist/client/assets/{monaco-editor-DsEoV7tZ.js → monaco-editor-ug-7VP_3.js} +1 -1
  126. package/dist/client/assets/{monitoring-stats-row-hSnWEB1g.js → monitoring-stats-row-CDM6sVBv.js} +1 -1
  127. package/dist/client/assets/{multi-select-C_9JXCXf.js → multi-select-BBGXBdHt.js} +1 -1
  128. package/dist/client/assets/{oauth-callback-CbwDrfNN.js → oauth-callback-CYt8Jc_0.js} +1 -1
  129. package/dist/client/assets/{oauth-callback-ai-provider-bqe7WxPA.js → oauth-callback-ai-provider-KHwtGj9y.js} +1 -1
  130. package/dist/client/assets/{onboarding-BMg-CQb8.js → onboarding-j_5kSV-K.js} +1 -1
  131. package/dist/client/assets/{org-layout-BPZhd6ha.js → org-layout-DNkTN9-F.js} +1 -1
  132. package/dist/client/assets/{organization-choice-DQcCIgDf.js → organization-choice-BsZ9p2GY.js} +1 -1
  133. package/dist/client/assets/{orgs-C5W9WsQP.js → orgs-tAO31F7D.js} +1 -1
  134. package/dist/client/assets/{page-seo-form-C7E_eneh.js → page-seo-form-D2u-W8pE.js} +1 -1
  135. package/dist/client/assets/{popover-DCriArZo.js → popover-CQIvDsu5.js} +1 -1
  136. package/dist/client/assets/{post-editor-CmqSuVDD.js → post-editor-Dv87YYzu.js} +1 -1
  137. package/dist/client/assets/{primitives-Dt6-h_k5.js → primitives-Catfroxl.js} +1 -1
  138. package/dist/client/assets/{profile-Dqn8oDYU.js → profile-VWwDRQv6.js} +1 -1
  139. package/dist/client/assets/{project-app-view-B6KrZpsP.js → project-app-view-DrK6imN3.js} +1 -1
  140. package/dist/client/assets/record-editor-CzBj8pSk.js +1 -0
  141. package/dist/client/assets/{redirect-editor-toR3MzGX.js → redirect-editor-BDiM7fCT.js} +1 -1
  142. package/dist/client/assets/registry-CA_UOJOf.js +2 -0
  143. package/dist/client/assets/{registry-layout-Crop-FRo.js → registry-layout-B7g8iz7o.js} +1 -1
  144. package/dist/client/assets/{reports-Cd0v7eMn.js → reports-C7i-yVkw.js} +1 -1
  145. package/dist/client/assets/{require-capability--L_GlXpd.js → require-capability-BpVkdwRE.js} +1 -1
  146. package/dist/client/assets/{required-auth-layout-BAhPwscS.js → required-auth-layout-DQG05tnV.js} +1 -1
  147. package/dist/client/assets/{reset-password-CNmC6-k_.js → reset-password-3jKWzhbX.js} +1 -1
  148. package/dist/client/assets/{roles-DWnvl1bF.js → roles-aQHKRju5.js} +1 -1
  149. package/dist/client/assets/{search-input-BnJDFRMl.js → search-input-nxpaPcsb.js} +1 -1
  150. package/dist/client/assets/{secrets-DJInY_nu.js → secrets-BxUvfBk6.js} +1 -1
  151. package/dist/client/assets/{sections-editor-DCBUfbWr.js → sections-editor-DfQt0wyR.js} +1 -1
  152. package/dist/client/assets/{select--icxBUQG.js → select-EgLG1EKM.js} +1 -1
  153. package/dist/client/assets/{select-model-CoTowZP9.js → select-model-CLY1E8wS.js} +1 -1
  154. package/dist/client/assets/{self-tool-result-CZm-aTd6.js → self-tool-result-BBS2nzm_.js} +1 -1
  155. package/dist/client/assets/{seo-editor-D4CFsGBp.js → seo-editor-GIOQx3s7.js} +1 -1
  156. package/dist/client/assets/{settings-layout-468cimaL.js → settings-layout-BfAzZ72c.js} +1 -1
  157. package/dist/client/assets/{settings-section-B3ifPXpy.js → settings-section-DvQhtNEG.js} +1 -1
  158. package/dist/client/assets/{shell-controls-okLnfuDR.js → shell-controls-CD-YH3fI.js} +1 -1
  159. package/dist/client/assets/{shell-layout-B2-xnSYQ.js → shell-layout-BfiNrBJX.js} +1 -1
  160. package/dist/client/assets/{sidebar-CY8kI7Hv.js → sidebar-BaLGoFDF.js} +1 -1
  161. package/dist/client/assets/{skeleton-BzHO_UZ_.js → skeleton-DoO-nB6X.js} +1 -1
  162. package/dist/client/assets/{spinner-CR38v4SM.js → spinner-Cor6YY38.js} +1 -1
  163. package/dist/client/assets/{sso-DaxZcPHF.js → sso-BoFoPHqg.js} +1 -1
  164. package/dist/client/assets/{store-DmtY-Ut9.js → store-DSYCznHO.js} +1 -1
  165. package/dist/client/assets/store-registry-DYR98Yc6.js +2 -0
  166. package/dist/client/assets/{studio-tools-B9uOZhNU.js → studio-tools-3X0V3Vei.js} +1 -1
  167. package/dist/client/assets/{switch-CicvP6tN.js → switch-aOd9gI9d.js} +1 -1
  168. package/dist/client/assets/{synced-repos-1QYY_o14.js → synced-repos-Cxszn23q.js} +1 -1
  169. package/dist/client/assets/{tab-id-D78T7QdF.js → tab-id-BUVTfMe4.js} +1 -1
  170. package/dist/client/assets/{table-Cmvfib2K.js → table-CCKAXnj7.js} +1 -1
  171. package/dist/client/assets/{tabs-BBQmojOt.js → tabs-DuggrjNV.js} +1 -1
  172. package/dist/client/assets/{textarea-D_MBsxxq.js → textarea-Cf4za7Px.js} +1 -1
  173. package/dist/client/assets/{toggle-group-D7E7rM45.js → toggle-group-C26OTILz.js} +1 -1
  174. package/dist/client/assets/{toolbar-DavdshhZ.js → toolbar-5e911Uyo.js} +1 -1
  175. package/dist/client/assets/{tooltip-ZrjhT2HZ.js → tooltip-DxH-MYdg.js} +1 -1
  176. package/dist/client/assets/{use-ai-providers-jug9WjpB.js → use-ai-providers-DST8sNdX.js} +1 -1
  177. package/dist/client/assets/{use-automations-CSTZ3886.js → use-automations-C2ysAyrO.js} +1 -1
  178. package/dist/client/assets/{use-autosave-ChvE0G33.js → use-autosave-BSdlQ9tX.js} +1 -1
  179. package/dist/client/assets/{use-capability-CD2_oMAe.js → use-capability-C82jTcLf.js} +1 -1
  180. package/dist/client/assets/{use-clock-tick-5wPqFXoc.js → use-clock-tick-Bz2SIgpi.js} +1 -1
  181. package/dist/client/assets/{use-connection-Cq-TmGuZ.js → use-connection-C-iimwi0.js} +1 -1
  182. package/dist/client/assets/{use-copy-qVFT-iwH.js → use-copy-Bih3Ulgs.js} +1 -1
  183. package/dist/client/assets/{use-create-virtual-mcp-BKePGkVk.js → use-create-virtual-mcp-DW-tKF1t.js} +1 -1
  184. package/dist/client/assets/{use-debounced-autosave-BD5uwc1n.js → use-debounced-autosave-C8sCoUXV.js} +1 -1
  185. package/dist/client/assets/{use-debounced-value-ZcGR3H0U.js → use-debounced-value-CSHvljUe.js} +1 -1
  186. package/dist/client/assets/{use-deco-credits-DZXadVhu.js → use-deco-credits-DQF09jtU.js} +1 -1
  187. package/dist/client/assets/{use-decopilot-events-Da84Mplm.js → use-decopilot-events-CZz7EP6I.js} +1 -1
  188. package/dist/client/assets/{use-delete-connection-CUI5WjpR.js → use-delete-connection-N_7zhSek.js} +1 -1
  189. package/dist/client/assets/{use-deployment-admin-BXpDgUni.js → use-deployment-admin-DHMthFkN.js} +1 -1
  190. package/dist/client/assets/{use-file-configs-Cr6Dl2n3.js → use-file-configs-BpvcCKcO.js} +1 -1
  191. package/dist/client/assets/{use-infinite-scroll-Cuq5t_LZ.js → use-infinite-scroll-D5mqA4-x.js} +1 -1
  192. package/dist/client/assets/{use-join-requests-B-BwVS7j.js → use-join-requests-DAPHcq81.js} +1 -1
  193. package/dist/client/assets/{use-mcp-client-DguMnEWc.js → use-mcp-client-D5Rbw5dI.js} +1 -1
  194. package/dist/client/assets/{use-mcp-tools-Bc0RjdGq.js → use-mcp-tools-DngF_iAy.js} +1 -1
  195. package/dist/client/assets/{use-members-BSnfTEP4.js → use-members-2o8Gxqbn.js} +1 -1
  196. package/dist/client/assets/{use-mobile-DMf3bWCn.js → use-mobile-DugqbWjg.js} +1 -1
  197. package/dist/client/assets/{use-navigate-to-agent-BpKSuM9c.js → use-navigate-to-agent-ZWgxCnRr.js} +1 -1
  198. package/dist/client/assets/{use-open-billing-url-COnZPFfP.js → use-open-billing-url-Dm9u7tbJ.js} +1 -1
  199. package/dist/client/assets/{use-org-auth-client-Bvzf-tUx.js → use-org-auth-client-C8OxPPbL.js} +1 -1
  200. package/dist/client/assets/{use-org-sso-CPuDLMAO.js → use-org-sso-B0i1HeKG.js} +1 -1
  201. package/dist/client/assets/{use-organization-roles-CGLPno6a.js → use-organization-roles-CdkMQuAz.js} +1 -1
  202. package/dist/client/assets/{use-organization-settings-BVocOGaq.js → use-organization-settings-BxHr3eus.js} +1 -1
  203. package/dist/client/assets/{use-registry-connections-C0HsNyAs.js → use-registry-connections-D65ohflM.js} +1 -1
  204. package/dist/client/assets/{use-secrets-BP-H3C8p.js → use-secrets-CHEFJnYH.js} +1 -1
  205. package/dist/client/assets/{use-section-preview-base-DowNDHjh.js → use-section-preview-base-B0E5dBDg.js} +1 -1
  206. package/dist/client/assets/{use-status-sounds-CjmrYixb.js → use-status-sounds-Y9MyUkDg.js} +1 -1
  207. package/dist/client/assets/{use-tags-Cg8znnEF.js → use-tags-HFzyvfU5.js} +1 -1
  208. package/dist/client/assets/{use-view-mode-2Cvl7LGq.js → use-view-mode-DpQvU5MR.js} +1 -1
  209. package/dist/client/assets/{use-virtual-mcp-DnVlCNEk.js → use-virtual-mcp-Cle7QmJl.js} +1 -1
  210. package/dist/client/assets/useInfiniteQuery-CF2tT9a6.js +1 -0
  211. package/dist/client/assets/{useRouterState-ClmonZrX.js → useRouterState-USgV2KX2.js} +1 -1
  212. package/dist/client/assets/useSuspenseInfiniteQuery-EFPZAelQ.js +1 -0
  213. package/dist/client/assets/{users-CGfdaZgy.js → users-D3IeFAsW.js} +1 -1
  214. package/dist/client/assets/{variant-calendar-Djt_WQR_.js → variant-calendar-C6_o8q_2.js} +1 -1
  215. package/dist/client/assets/{view-mode-toggle-DOCvJ3u_.js → view-mode-toggle-DLbNFE7y.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-CP7nR48h.js +0 -1
  221. package/dist/client/assets/registry-CgsXhhHY.js +0 -2
  222. package/dist/client/assets/store-registry-cv-3taNw.js +0 -2
  223. package/dist/client/assets/useInfiniteQuery-DJ3TPFA7.js +0 -1
  224. package/dist/client/assets/useSuspenseInfiniteQuery-BKyBbyvL.js +0 -1
@@ -1332,7 +1332,7 @@ Usage: deco services <up|down|status>`),process.exit(1)}}var yc1=O(()=>{Vx()});f
1332
1332
  `.execute($);if(Number(W.rows[0]?.cnt)===0){console.warn(`Failed to migrate ${J}/${K}, keeping in old table`);continue}}await Qb`
1333
1333
  DELETE FROM kysely_migration WHERE name = ${X}
1334
1334
  `.execute($)}}async function Zn1($){await _c6($),await vc6($);let Z=new ei1({db:$,provider:{getMigrations:()=>Promise.resolve(ml0)}}),{error:X,results:Q}=await Z.migrateToLatest(),Y=0;if(Q?.forEach((G)=>{if(G.status==="Success")Y++;else if(G.status==="Error")console.error(`Failed to execute migration "${G.migrationName}"`)}),X)throw console.error("Failed to migrate"),console.error(X),X;return Y}async function xc6($){let{keepOpen:Z=!1,database:X,skipBetterAuth:Q=!1}=$??{},Y="skipped";if(!Q&&!X)Y=await Oh0();let G=X??N6(),J=async()=>{if(!Z&&!X)await Ow(G).catch((K)=>{console.warn("Warning: Error closing database:",K)})};try{let K=await Zn1(G.db);return await J(),{betterAuth:Y,kysely:K}}catch(K){throw await J(),K}}async function fc6(){let $=N6(),Z=new ei1({db:$.db,provider:{getMigrations:()=>Promise.resolve(ml0)}}),{error:X,results:Q}=await Z.migrateDown();if(Q?.forEach((Y)=>{if(Y.status==="Success")console.log(`\u2705 Migration "${Y.migrationName}" rolled back successfully`);else if(Y.status==="Error")console.error(`\u274C Failed to rollback migration "${Y.migrationName}"`)}),X)throw console.error("Failed to rollback migration"),console.error(X),X}var Qn1=O(()=>{si1();Lh0();o7()});async function t50($){let Z={...process.env},X=c00($,Z);console.log(DF1(X.settings.encryptionKey));let Q=X.settings.betterAuthSecret||(X.settings.localMode?Bd1(X.settings.dataDir):""),{ensureServices:Y}=await Promise.resolve().then(() => (Y50(),Q50)),{outputs:G,services:J}=await Y({home:X.settings.dataDir,externalDatabaseUrl:X.externalDatabaseUrl,externalNatsUrl:X.externalNatsUrl});if(!X.skipMigrations){let{migrateBetterAuth:W}=await Promise.resolve().then(() => (Lh0(),Ld1));await W(G.databaseUrl);let{createDatabase:H}=await Promise.resolve().then(() => (o7(),_l1)),{migrateToLatest:N}=await Promise.resolve().then(() => (Qn1(),Xn1)),U=H(G.databaseUrl);await N({keepOpen:!0,database:U,skipBetterAuth:!0})}let K={...X.settings,betterAuthSecret:Q,databaseUrl:G.databaseUrl,natsUrls:G.natsUrls,...G.s3?{s3Endpoint:G.s3.endpoint,s3Bucket:G.s3.bucket,s3AccessKeyId:G.s3.accessKeyId,s3SecretAccessKey:G.s3.secretAccessKey,s3ForcePathStyle:G.s3.forcePathStyle}:{},...G.natsTunnel?{natsPublicUrl:G.natsTunnel.publicUrl,natsAccountJwt:G.natsTunnel.accountJwt,natsAccountSigningKey:G.natsTunnel.accountSigningKey,natsOperatorJwt:G.natsTunnel.operatorJwt,natsTunnelPublicEnabled:!0,natsCredsPath:G.natsTunnel.credsPath}:{}};return gc1(K),{settings:K,services:J.map((W)=>({name:W.name==="PostgreSQL"?"Postgres":W.name,port:W.port})),managedServiceNames:J.filter((W)=>W.owner==="managed").map((W)=>W.name)}}var il0=O(()=>{Vx();Od1();b8()});var Jn1={};w0(Jn1,{updateService:()=>tD,subscribeCliState:()=>tl0,setTuiConsoleIntercepted:()=>o50,setServerUrl:()=>Vm,setMigrationsDone:()=>km,setDevMode:()=>gc6,resetCliStateForTests:()=>bc6,isTuiConsoleIntercepted:()=>r50,getCliState:()=>pl0,addLogEntry:()=>jw});function Yn1(){return{services:[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}],migrationsStatus:"pending",serverUrl:null,logs:[]}}function bc6(){_Q=Yn1()}function yc6(){return[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}]}function Mm(){for(let $ of nl0)$()}function pl0(){return _Q}function tl0($){return nl0.add($),()=>nl0.delete($)}function tD($){_Q={..._Q,services:_Q.services.map((Z)=>Z.name===$.name?$:Z)},Mm()}function km(){_Q={..._Q,migrationsStatus:"done"},Mm()}function Vm($){_Q={..._Q,serverUrl:$},Mm()}function jw($){let Z=[..._Q.logs,$];_Q={..._Q,logs:Z.length>500?Z.slice(-500):Z},Mm()}function gc6(){_Q={..._Q,services:[...yc6(),{name:"API",status:"pending",port:0},{name:"Vite",status:"pending",port:0}]},Mm()}function o50($){Gn1=$}function r50(){return Gn1}var _Q,nl0,Gn1=!1;var oD=O(()=>{_Q=Yn1();nl0=new Set});import{createServer as Kn1}from"net";function hc6($){return new Promise((Z)=>{let X=Kn1();X.once("error",()=>Z(!1)),X.listen($,"0.0.0.0",()=>{X.close(()=>Z(!0))})})}async function Sm($){if(await hc6($))return $;let Z=await new Promise((X,Q)=>{let Y=Kn1();Y.once("error",Q),Y.listen(0,"0.0.0.0",()=>{let G=Y.address(),J=typeof G==="object"&&G?G.port:0;Y.close(()=>X(J))})});return console.warn(`Port ${$} is in use, using port ${Z} instead.`),Z}var ol0=()=>{};function Cm($){return $.replace(/\x1b\[[0-9;]*m/g,"")}var rl0={};w0(rl0,{startDevServer:()=>cc6});import{join as uc6}from"path";function Wn1($){let Z=$.getReader(),X=new TextDecoder,Q="";function Y(){let G=Q.split(`
1335
- `);Q=G.pop()??"";for(let J of G){let K=Cm(J).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;jw({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:K})}}(async()=>{for(;;){let{done:G,value:J}=await Z.read();if(G)break;Q+=X.decode(J,{stream:!0}),Y()}if(Q.trim()){let G=Cm(Q).replace(/^\[\d+\]\s*/,"").trim();if(G)jw({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:G})}})()}async function cc6($){let{baseUrl:Z,noTui:X}=$,Q=process.env.HOST==="0.0.0.0"&&Boolean(process.env.PORT),Y=Q?process.env.PORT:$.vitePort,G=Z||`http://localhost:${Y}`,J=Q?await Sm(Number(Y)+1):await Sm(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await t50({port:String(J),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let L of W)tD({name:L.name,status:"ready",port:L.port});km();let N=uc6(import.meta.dir,"..","..","..","..",".."),U=X===!0,F=Bun.spawn(["bun","run","dev:servers"],{cwd:N,env:{...process.env,PORT:String(K.port),VITE_PORT:String(Y),DATABASE_URL:K.databaseUrl,NATS_URL:K.natsUrls.join(","),NODE_ENV:K.nodeEnv,BASE_URL:G,DECOCMS_LOCAL_MODE:String(K.localMode),DECOCMS_HOME:K.dataDir,DATA_DIR:K.dataDir,DECO_CLI:"1",...K.betterAuthSecret?{BETTER_AUTH_SECRET:K.betterAuthSecret}:{},...K.s3Endpoint?{S3_ENDPOINT:K.s3Endpoint,S3_BUCKET:K.s3Bucket??"",S3_ACCESS_KEY_ID:K.s3AccessKeyId??"",S3_SECRET_ACCESS_KEY:K.s3SecretAccessKey??"",S3_FORCE_PATH_STYLE:String(K.s3ForcePathStyle)}:{},...K.natsPublicUrl&&K.natsAccountJwt&&K.natsAccountSigningKey?{NATS_PUBLIC_URL:K.natsPublicUrl,NATS_ACCOUNT_JWT:K.natsAccountJwt,NATS_ACCOUNT_SIGNING_KEY:K.natsAccountSigningKey,NATS_OPERATOR_JWT:K.natsOperatorJwt??"",NATS_TUNNEL_PUBLIC_ENABLED:"true",...K.natsCredsPath?{NATS_CREDS:K.natsCredsPath}:{}}:{}},stdio:["inherit",U?"inherit":"pipe",U?"inherit":"pipe"]});if(!U)Wn1(F.stdout),Wn1(F.stderr);Vm(G),tD({name:"Vite",status:"ready",port:Number(Y)}),tD({name:"API",status:"ready",port:Number(K.port)});let B=async(L)=>{if(F.kill(L),await F.exited,H.length>0){let{stopServices:D}=await Promise.resolve().then(() => (Y50(),Q50));await D(K.dataDir)}};return process.on("SIGINT",()=>B("SIGINT")),process.on("SIGTERM",()=>B("SIGTERM")),{port:Number(Y),process:F}}var al0=O(()=>{il0();oD();ol0()});var a50;var sl0=O(()=>{a50={name:"decocms",version:"4.199.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 dc6,Text as Hn1}from"ink";import{jsx as mc6,jsxs as Nn1}from"react/jsx-runtime";function Un1({version:$}){return Nn1(dc6,{flexDirection:"column",marginTop:1,children:[I50.map((Z,X)=>mc6(Hn1,{color:q50[X],children:Z},X)),Nn1(Hn1,{dimColor:!0,children:[" v",$]})]})}var Fn1=O(()=>{Lm()});import{Box as rD,Text as Pw}from"ink";import{Spinner as ic6}from"@inkjs/ui";import{jsx as cY,jsxs as Yb}from"react/jsx-runtime";function wn1({status:$}){if($==="pending")return cY(ic6,{label:""});return cY(Pw,{color:"green",children:"\u2713"})}function nc6($){return`${$.name}: ${$.port||"...."}`}function Bn1({services:$,migrationsStatus:Z,home:X,serverUrl:Q}){return Yb(rD,{flexDirection:"column",paddingBottom:1,children:[cY(Un1,{version:a50.version}),cY(rD,{marginBottom:1,children:cY(Pw,{dimColor:!0,children:"\u2500".repeat(80)})}),cY(rD,{children:Yb(Pw,{dimColor:!0,children:["Home: ",X]})}),Yb(rD,{gap:2,children:[$.map((Y)=>Yb(rD,{gap:1,children:[cY(Pw,{children:nc6(Y)}),cY(wn1,{status:Y.status})]},Y.name)),Yb(rD,{gap:1,children:[cY(Pw,{children:"Migrations"}),cY(wn1,{status:Z})]})]}),cY(rD,{children:Q?Yb(Pw,{children:["Open in browser: ",cY(Pw,{color:"cyan",children:Q})]}):cY(Pw,{dimColor:!0,children:"Starting..."})})]})}var On1=O(()=>{sl0();Fn1()});import{Box as pc6,Text as _m}from"ink";import{jsx as el0,jsxs as $d0}from"react/jsx-runtime";function tc6($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function Ln1({logs:$}){return el0(pc6,{flexDirection:"column",children:$.map((Z,X)=>{if(Z.rawLine)return el0(_m,{dimColor:!0,children:Z.rawLine},X);let Q=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return $d0(_m,{children:[$d0(_m,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),el0(_m,{color:tc6(Z.status),children:Z.status}),$d0(_m,{dimColor:!0,children:[" ",Q.padStart(8)]})]},X)})})}var Dn1=()=>{};var Zd0={};w0(Zd0,{App:()=>ac6});import{Box as oc6}from"ink";import{useSyncExternalStore as rc6}from"react";import{jsx as En1,jsxs as sc6}from"react/jsx-runtime";function ac6({home:$}){let Z=rc6(tl0,pl0);return sc6(oc6,{flexDirection:"column",children:[En1(Bn1,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),En1(Ln1,{logs:Z.logs})]})}var Xd0=O(()=>{On1();Dn1();oD()});var BJ="thread-gate",vN="decopilot-hosted-harness",pG="automations",Aw="background-tools";var zn1="7";function jn1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:zn1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var Pn1=()=>{};function ec6(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function Qd0($,Z){for(let X=0;X<$.length;X++){let Q=$[X];if(Q===void 0)continue;if(Q===Z)return $[X+1];if(Q.startsWith(`${Z}=`))return Q.slice(Z.length+1)}return}function An1(){let $=ec6();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:Qd0($,"--cpu-prof-dir")??process.cwd(),name:Qd0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(Qd0($,"--cpu-prof-interval")??1000),note:"profile is written on process exit"}));return}if(process.env.CPU_PROFILE)console.warn(JSON.stringify({msg:"cpu-profiling-requested-but-inactive",hint:'CPU profiling is a Bun launch flag. Set BUN_OPTIONS="--cpu-prof --cpu-prof-md --cpu-prof-dir=/tmp" before starting the process.'}))}function Tn1(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let X=mD();if(!X)return;let Q={};try{let{heapStats:Y}=await import("bun:jsc"),G=Y(),J=Object.entries(G.objectTypeCounts).sort((K,W)=>W[1]-K[1]).slice(0,20);Q={objectCount:G.objectCount,heapSize:G.heapSize,top:Object.fromEntries(J)}}catch{}console.log(JSON.stringify({msg:"heap-watch",ts:new Date().toISOString(),uptimeS:Math.round(process.uptime()),rss:X.rss,heapUsed:X.heapUsed,heapTotal:X.heapTotal,external:X.external,arrayBuffers:X.arrayBuffers,...Q}))};return Z().catch(()=>{}),s50=setInterval(()=>void Z().catch(()=>{}),$),s50.unref?.(),process.on("SIGUSR2",()=>{try{let X=Bun.generateHeapSnapshot("v8"),Q=typeof X==="string"?X:JSON.stringify(X),Y=`/tmp/heap-${process.pid}-${Date.now()}.heapsnapshot`;Bun.write(Y,Q),console.log(JSON.stringify({msg:"heap-snapshot-written",path:Y}))}catch(X){console.error("[heap-watch] snapshot failed:",X)}}),()=>{if(s50)clearInterval(s50)}}var s50;var Rn1=()=>{};import*as $l6 from"bun:jsc";function In1(){if(process.env.STALL_WATCHDOG!=="1")return()=>{};let $=Number(process.env.STALL_WATCHDOG_MS??100),Z=Number(process.env.STALL_WATCHDOG_TICK_MS??50);try{Zl6()}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=Xl6()?.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 Zl6,Xl6;var qn1=O(()=>{({startSamplingProfiler:Zl6,samplingProfilerStackTraces:Xl6}=$l6)});function Mn1(){An1();let $=[Tn1(),Rl1(),In1()];return()=>{for(let Z of $)Z()}}var kn1=O(()=>{Gh0();Rn1();qn1()});var aD=_((Vn1)=>{Object.defineProperty(Vn1,"__esModule",{value:!0});Vn1.RepublishHeaders=Vn1.DirectMsgHeaders=Vn1.JsHeaders=Vn1.AdvisoryKind=void 0;Vn1.isOrderedPushConsumerOptions=Ql6;Vn1.isPullConsumer=Yl6;Vn1.isPushConsumer=Gl6;Vn1.isBoundPushConsumerOptions=Jl6;function Ql6($){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 Yl6($){return $.isPullConsumer()}function Gl6($){return $.isPushConsumer()}function Jl6($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}Vn1.AdvisoryKind={API:"api_audit",StreamAction:"stream_action",ConsumerAction:"consumer_action",SnapshotCreate:"snapshot_create",SnapshotComplete:"snapshot_complete",RestoreCreate:"restore_create",RestoreComplete:"restore_complete",MaxDeliver:"max_deliver",Terminated:"terminated",Ack:"consumer_ack",StreamLeaderElected:"stream_leader_elected",StreamQuorumLost:"stream_quorum_lost",ConsumerLeaderElected:"consumer_leader_elected",ConsumerQuorumLost:"consumer_quorum_lost"};Vn1.JsHeaders={StreamSourceHdr:"Nats-Stream-Source",LastConsumerSeqHdr:"Nats-Last-Consumer",LastStreamSeqHdr:"Nats-Last-Stream",ConsumerStalledHdr:"Nats-Consumer-Stalled",MessageSizeHdr:"Nats-Msg-Size",RollupHdr:"Nats-Rollup",RollupValueSubject:"sub",RollupValueAll:"all",PendingMessagesHdr:"Nats-Pending-Messages",PendingBytesHdr:"Nats-Pending-Bytes",RequiredApiLevel:"Nats-Required-Api-Level"};Vn1.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};Vn1.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var lY=_((Cn1)=>{Object.defineProperty(Cn1,"__esModule",{value:!0});Cn1.TD=Cn1.TE=Cn1.Empty=void 0;Cn1.encode=Ol6;Cn1.decode=Ll6;Cn1.Empty=new Uint8Array(0);Cn1.TE=new TextEncoder;Cn1.TD=new TextDecoder;function Bl6(...$){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 Ol6(...$){let Z=[];for(let X=0;X<$.length;X++)Z.push(Cn1.TE.encode($[X]));if(Z.length===0)return Cn1.Empty;if(Z.length===1)return Z[0];return Bl6(...Z)}function Ll6($){if(!$||$.length===0)return"";return Cn1.TD.decode($)}});var dY=_((xn1)=>{Object.defineProperty(xn1,"__esModule",{value:!0});xn1.errors=xn1.PermissionViolationError=xn1.NoRespondersError=xn1.TimeoutError=xn1.RequestError=xn1.ProtocolError=xn1.ConnectionError=xn1.DrainingConnectionError=xn1.ClosedConnectionError=xn1.AuthorizationError=xn1.UserAuthenticationExpiredError=xn1.InvalidOperationError=xn1.InvalidArgumentError=xn1.InvalidSubjectError=void 0;class Gd0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}xn1.InvalidSubjectError=Gd0;class e50 extends Error{constructor($,Z){super($,Z);this.name="InvalidArgumentError"}static format($,Z,X){if(Array.isArray(Z)&&Z.length>1)Z=Z[0];if(Array.isArray($))$=$.map((Q)=>`'${Q}'`),$=$.join(",");else $=`'${$}'`;return new e50(`${$} ${Z}`,X)}}xn1.InvalidArgumentError=e50;class Jd0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}xn1.InvalidOperationError=Jd0;class $90 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new $90($);return null}}xn1.UserAuthenticationExpiredError=$90;class Z90 extends Error{constructor($,Z){super($,Z);this.name="AuthorizationError"}static parse($){let Z=["authorization violation","account authentication expired","authentication timeout"],X=$.toLowerCase();for(let Q=0;Q<Z.length;Q++)if(X.indexOf(Z[Q])!==-1)return new Z90($);return null}}xn1.AuthorizationError=Z90;class Kd0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}xn1.ClosedConnectionError=Kd0;class Wd0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}xn1.DrainingConnectionError=Wd0;class Hd0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}xn1.ConnectionError=Hd0;class Nd0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}xn1.ProtocolError=Nd0;class Ud0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof X90}}xn1.RequestError=Ud0;class Fd0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}xn1.TimeoutError=Fd0;class X90 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}xn1.NoRespondersError=X90;class Q90 extends Error{operation;subject;queue;constructor($,Z,X,Q,Y){super($,Y);this.name="PermissionViolationError",this.operation=Z,this.subject=X,this.queue=Q}static parse($){if(($?$.toLowerCase():"").indexOf("permissions violation")===-1)return null;let X="publish",Q="",Y=void 0,G=$.match(/(Publish|Subscription) to "(\S+)"/);if(G){if(X=G[1].toLowerCase(),Q=G[2],X==="subscription"){let J=$.match(/using queue "(\S+)"/);if(J)Y=J[1]}}return new Q90($,X,Q,Y)}}xn1.PermissionViolationError=Q90;xn1.errors={AuthorizationError:Z90,ClosedConnectionError:Kd0,ConnectionError:Hd0,DrainingConnectionError:Wd0,InvalidArgumentError:e50,InvalidOperationError:Jd0,InvalidSubjectError:Gd0,NoRespondersError:X90,PermissionViolationError:Q90,ProtocolError:Nd0,RequestError:Ud0,TimeoutError:Fd0,UserAuthenticationExpiredError:$90}});var OJ=_((hn1)=>{Object.defineProperty(hn1,"__esModule",{value:!0});hn1.SimpleMutex=hn1.Perf=void 0;hn1.extend=vl6;hn1.render=xl6;hn1.timeout=fl6;hn1.delay=bl6;hn1.deadline=yl6;hn1.deferred=Bd0;hn1.debugDeferred=gl6;hn1.shuffle=hl6;hn1.collect=ul6;hn1.jitter=gn1;hn1.backoff=cl6;hn1.nanos=ll6;hn1.millis=dl6;hn1.randomToken=nl6;var _l6=lY(),wd0=dY();function vl6($,...Z){for(let X=0;X<Z.length;X++){let Q=Z[X];Object.keys(Q).forEach(function(Y){$[Y]=Q[Y]})}return $}function xl6($){return _l6.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function fl6($,Z=!0){let X=Z?new wd0.TimeoutError:null,Q,Y,G=new Promise((J,K)=>{Q={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(X===null)K(new wd0.TimeoutError);else K(X)},$)});return Object.assign(G,Q)}function bl6($=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 yl6($,Z=1000){let X=Bd0(),Q=setTimeout(()=>{X.reject(new wd0.TimeoutError)},Z);try{return await Promise.race([$,X])}finally{clearTimeout(Q)}}function Bd0(){let $={},Z=new Promise((X,Q)=>{$={resolve:X,reject:Q}});return Object.assign(Z,$)}function gl6(){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 hl6($){for(let Z=$.length-1;Z>0;Z--){let X=Math.floor(Math.random()*(Z+1));[$[Z],$[X]]=[$[X],$[Z]]}return $}async function ul6($){let Z=[];for await(let X of $)Z.push(X);return Z}class bn1{timers;measures;constructor(){this.timers=new Map,this.measures=new Map}mark($){this.timers.set($,performance.now())}measure($,Z,X){let Q=this.timers.get(Z);if(Q===void 0)throw Error(`${Z} is not defined`);let Y=this.timers.get(X);if(Y===void 0)throw Error(`${X} is not defined`);this.measures.set($,Y-Q)}getEntries(){let $=[];return this.measures.forEach((Z,X)=>{$.push({name:X,duration:Z})}),$}}hn1.Perf=bn1;class yn1{max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=Bd0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}hn1.SimpleMutex=yn1;function gn1($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function cl6($=[0,250,250,500,500,3000,5000]){if(!Array.isArray($))$=[0,250,250,500,500,3000,5000];let Z=$.length-1;return{backoff(X){return gn1(X>Z?$[Z]:$[X])}}}function ll6($){return $*1e6}function dl6($){return Math.floor($/1e6)}var ml6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",xN=new Uint8Array(62);for(let $=0;$<62;$++)xN[$]=ml6.charCodeAt($);var il6=218340105584896;function nl6(){let $=Math.floor(Math.random()*il6),Z=$%62,X=xN[Z];$=($-Z)/62,Z=$%62;let Q=xN[Z];$=($-Z)/62,Z=$%62;let Y=xN[Z];$=($-Z)/62,Z=$%62;let G=xN[Z];$=($-Z)/62,Z=$%62;let J=xN[Z];$=($-Z)/62,Z=$%62;let K=xN[Z];$=($-Z)/62,Z=$%62;let W=xN[Z];$=($-Z)/62;let H=xN[$];return String.fromCharCode(X,Q,Y,G,J,K,W,H)}});var pn1=_((in1)=>{Object.defineProperty(in1,"__esModule",{value:!0});in1.nuid=in1.NuidImpl=void 0;var Wd6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",Tw=62,G90=12,dn1=10,cn1=33,Hd6=333,ln1=G90+dn1,Ld0=new Uint8Array(Tw);for(let $=0;$<Tw;$++)Ld0[$]=Wd6.charCodeAt($);var Y90=4294967296,mn1=BigInt(Tw)**BigInt(dn1),vm=Number(mn1/(1n<<32n)),Od0=Number(mn1%(1n<<32n));function Nd6($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function Ud6($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else Nd6($)}class Dd0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(ln1),this.cbuf=new Uint8Array(G90),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(vm+1)),this.seqLo=Math.floor(Math.random()*Y90);while($++<8&&this.seqHi===vm&&this.seqLo>=Od0);if(this.seqHi===vm&&this.seqLo>=Od0)this.seqLo=0;this.inc=Math.random()*(Hd6-cn1)+cn1|0}setPre(){Ud6(this.cbuf);for(let $=0;$<G90;$++)this.buf[$]=Ld0[this.cbuf[$]%Tw]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let X=ln1-1;X>=G90;X--){let Q=Math.floor($/Tw),G=($-Q*Tw)*Y90+Z,J=Math.floor(G/Tw),K=G-J*Tw;this.buf[X]=Ld0[K],$=Q,Z=J}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=Y90)this.seqLo-=Y90,this.seqHi+=1;if(this.seqHi>vm||this.seqHi===vm&&this.seqLo>=Od0)this.setPre(),this.initSeqAndInc();this.fillSeq();let $=this.buf;return String.fromCharCode($[0],$[1],$[2],$[3],$[4],$[5],$[6],$[7],$[8],$[9],$[10],$[11],$[12],$[13],$[14],$[15],$[16],$[17],$[18],$[19],$[20],$[21])}reset(){this.init()}}in1.NuidImpl=Dd0;in1.nuid=new Dd0});var an1=_((on1)=>{Object.defineProperty(on1,"__esModule",{value:!0});on1.nuid=on1.Nuid=void 0;var tn1=pn1();on1.Nuid=tn1.NuidImpl;on1.nuid=tn1.nuid});var K90=_((J90)=>{Object.defineProperty(J90,"__esModule",{value:!0});J90.nuid=J90.Nuid=void 0;var sn1=an1();Object.defineProperty(J90,"Nuid",{enumerable:!0,get:function(){return sn1.Nuid}});Object.defineProperty(J90,"nuid",{enumerable:!0,get:function(){return sn1.nuid}})});var Rw=_((en1)=>{Object.defineProperty(en1,"__esModule",{value:!0});en1.DEFAULT_HOST=en1.DEFAULT_PORT=en1.Match=void 0;en1.syncIterator=Dd6;en1.createInbox=Ed6;var Od6=K90(),Ld6=dY();en1.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function Dd6($){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 Ed6($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw Ld6.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${Od6.nuid.next()}`}en1.DEFAULT_PORT=4222;en1.DEFAULT_HOST="127.0.0.1"});var xm=_((Qp1)=>{Object.defineProperty(Qp1,"__esModule",{value:!0});Qp1.DataBuffer=void 0;var Zp1=lY();class Xp1{buffers;byteLength;constructor(){this.buffers=[],this.byteLength=0}static concat(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let X=new Uint8Array(Z),Q=0;for(let Y=0;Y<$.length;Y++)X.set($[Y],Q),Q+=$[Y].length;return X}static fromAscii($){if(!$)$="";return Zp1.TE.encode($)}static toAscii($){return Zp1.TD.decode($)}reset(){this.buffers.length=0,this.byteLength=0}pack(){if(this.buffers.length>1){let $=new Uint8Array(this.byteLength),Z=0;for(let X=0;X<this.buffers.length;X++)$.set(this.buffers[X],Z),Z+=this.buffers[X].length;this.buffers.length=0,this.buffers.push($)}}shift(){if(this.buffers.length){let $=this.buffers.shift();if($)return this.byteLength-=$.length,$}return new Uint8Array(0)}drain($){if(this.buffers.length){this.pack();let Z=this.buffers.pop();if(Z){let X=this.byteLength;if($===void 0||$>X)$=X;let Q=Z.subarray(0,$);if(X>$)this.buffers.push(Z.subarray($));return this.byteLength=X-$,Q}}return new Uint8Array(0)}fill($,...Z){if($)this.buffers.push($),this.byteLength+=$.length;for(let X=0;X<Z.length;X++)if(Z[X]&&Z[X].length)this.buffers.push(Z[X]),this.byteLength+=Z[X].length}peek(){if(this.buffers.length)return this.pack(),this.buffers[0];return new Uint8Array(0)}size(){return this.byteLength}length(){return this.buffers.length}}Qp1.DataBuffer=Xp1});var sD=_((Jp1)=>{Object.defineProperty(Jp1,"__esModule",{value:!0});Jp1.LF=Jp1.CR=Jp1.CRLF=Jp1.CR_LF_LEN=Jp1.CR_LF=void 0;Jp1.setTransportFactory=qd6;Jp1.defaultPort=Md6;Jp1.getUrlParseFn=kd6;Jp1.newTransport=Vd6;Jp1.getResolveFn=Sd6;Jp1.protoLen=Gp1;Jp1.extractProtocolMessage=Cd6;var Td6=lY(),Rd6=Rw(),Id6=xm(),mY;function qd6($){mY=$}function Md6(){return mY!==void 0&&mY.defaultPort!==void 0?mY.defaultPort:Rd6.DEFAULT_PORT}function kd6(){return mY!==void 0&&mY.urlParseFn?mY.urlParseFn:void 0}function Vd6(){if(!mY||typeof mY.factory!=="function")throw Error("transport fn is not set");return mY.factory()}function Sd6(){return mY!==void 0&&mY.dnsResolveFn?mY.dnsResolveFn:void 0}Jp1.CR_LF=`\r
1335
+ `);Q=G.pop()??"";for(let J of G){let K=Cm(J).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;jw({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:K})}}(async()=>{for(;;){let{done:G,value:J}=await Z.read();if(G)break;Q+=X.decode(J,{stream:!0}),Y()}if(Q.trim()){let G=Cm(Q).replace(/^\[\d+\]\s*/,"").trim();if(G)jw({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:G})}})()}async function cc6($){let{baseUrl:Z,noTui:X}=$,Q=process.env.HOST==="0.0.0.0"&&Boolean(process.env.PORT),Y=Q?process.env.PORT:$.vitePort,G=Z||`http://localhost:${Y}`,J=Q?await Sm(Number(Y)+1):await Sm(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await t50({port:String(J),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let L of W)tD({name:L.name,status:"ready",port:L.port});km();let N=uc6(import.meta.dir,"..","..","..","..",".."),U=X===!0,F=Bun.spawn(["bun","run","dev:servers"],{cwd:N,env:{...process.env,PORT:String(K.port),VITE_PORT:String(Y),DATABASE_URL:K.databaseUrl,NATS_URL:K.natsUrls.join(","),NODE_ENV:K.nodeEnv,BASE_URL:G,DECOCMS_LOCAL_MODE:String(K.localMode),DECOCMS_HOME:K.dataDir,DATA_DIR:K.dataDir,DECO_CLI:"1",...K.betterAuthSecret?{BETTER_AUTH_SECRET:K.betterAuthSecret}:{},...K.s3Endpoint?{S3_ENDPOINT:K.s3Endpoint,S3_BUCKET:K.s3Bucket??"",S3_ACCESS_KEY_ID:K.s3AccessKeyId??"",S3_SECRET_ACCESS_KEY:K.s3SecretAccessKey??"",S3_FORCE_PATH_STYLE:String(K.s3ForcePathStyle)}:{},...K.natsPublicUrl&&K.natsAccountJwt&&K.natsAccountSigningKey?{NATS_PUBLIC_URL:K.natsPublicUrl,NATS_ACCOUNT_JWT:K.natsAccountJwt,NATS_ACCOUNT_SIGNING_KEY:K.natsAccountSigningKey,NATS_OPERATOR_JWT:K.natsOperatorJwt??"",NATS_TUNNEL_PUBLIC_ENABLED:"true",...K.natsCredsPath?{NATS_CREDS:K.natsCredsPath}:{}}:{}},stdio:["inherit",U?"inherit":"pipe",U?"inherit":"pipe"]});if(!U)Wn1(F.stdout),Wn1(F.stderr);Vm(G),tD({name:"Vite",status:"ready",port:Number(Y)}),tD({name:"API",status:"ready",port:Number(K.port)});let B=async(L)=>{if(F.kill(L),await F.exited,H.length>0){let{stopServices:D}=await Promise.resolve().then(() => (Y50(),Q50));await D(K.dataDir)}};return process.on("SIGINT",()=>B("SIGINT")),process.on("SIGTERM",()=>B("SIGTERM")),{port:Number(Y),process:F}}var al0=O(()=>{il0();oD();ol0()});var a50;var sl0=O(()=>{a50={name:"decocms",version:"4.200.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 dc6,Text as Hn1}from"ink";import{jsx as mc6,jsxs as Nn1}from"react/jsx-runtime";function Un1({version:$}){return Nn1(dc6,{flexDirection:"column",marginTop:1,children:[I50.map((Z,X)=>mc6(Hn1,{color:q50[X],children:Z},X)),Nn1(Hn1,{dimColor:!0,children:[" v",$]})]})}var Fn1=O(()=>{Lm()});import{Box as rD,Text as Pw}from"ink";import{Spinner as ic6}from"@inkjs/ui";import{jsx as cY,jsxs as Yb}from"react/jsx-runtime";function wn1({status:$}){if($==="pending")return cY(ic6,{label:""});return cY(Pw,{color:"green",children:"\u2713"})}function nc6($){return`${$.name}: ${$.port||"...."}`}function Bn1({services:$,migrationsStatus:Z,home:X,serverUrl:Q}){return Yb(rD,{flexDirection:"column",paddingBottom:1,children:[cY(Un1,{version:a50.version}),cY(rD,{marginBottom:1,children:cY(Pw,{dimColor:!0,children:"\u2500".repeat(80)})}),cY(rD,{children:Yb(Pw,{dimColor:!0,children:["Home: ",X]})}),Yb(rD,{gap:2,children:[$.map((Y)=>Yb(rD,{gap:1,children:[cY(Pw,{children:nc6(Y)}),cY(wn1,{status:Y.status})]},Y.name)),Yb(rD,{gap:1,children:[cY(Pw,{children:"Migrations"}),cY(wn1,{status:Z})]})]}),cY(rD,{children:Q?Yb(Pw,{children:["Open in browser: ",cY(Pw,{color:"cyan",children:Q})]}):cY(Pw,{dimColor:!0,children:"Starting..."})})]})}var On1=O(()=>{sl0();Fn1()});import{Box as pc6,Text as _m}from"ink";import{jsx as el0,jsxs as $d0}from"react/jsx-runtime";function tc6($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function Ln1({logs:$}){return el0(pc6,{flexDirection:"column",children:$.map((Z,X)=>{if(Z.rawLine)return el0(_m,{dimColor:!0,children:Z.rawLine},X);let Q=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return $d0(_m,{children:[$d0(_m,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),el0(_m,{color:tc6(Z.status),children:Z.status}),$d0(_m,{dimColor:!0,children:[" ",Q.padStart(8)]})]},X)})})}var Dn1=()=>{};var Zd0={};w0(Zd0,{App:()=>ac6});import{Box as oc6}from"ink";import{useSyncExternalStore as rc6}from"react";import{jsx as En1,jsxs as sc6}from"react/jsx-runtime";function ac6({home:$}){let Z=rc6(tl0,pl0);return sc6(oc6,{flexDirection:"column",children:[En1(Bn1,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),En1(Ln1,{logs:Z.logs})]})}var Xd0=O(()=>{On1();Dn1();oD()});var BJ="thread-gate",vN="decopilot-hosted-harness",pG="automations",Aw="background-tools";var zn1="7";function jn1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:zn1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var Pn1=()=>{};function ec6(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function Qd0($,Z){for(let X=0;X<$.length;X++){let Q=$[X];if(Q===void 0)continue;if(Q===Z)return $[X+1];if(Q.startsWith(`${Z}=`))return Q.slice(Z.length+1)}return}function An1(){let $=ec6();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:Qd0($,"--cpu-prof-dir")??process.cwd(),name:Qd0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(Qd0($,"--cpu-prof-interval")??1000),note:"profile is written on process exit"}));return}if(process.env.CPU_PROFILE)console.warn(JSON.stringify({msg:"cpu-profiling-requested-but-inactive",hint:'CPU profiling is a Bun launch flag. Set BUN_OPTIONS="--cpu-prof --cpu-prof-md --cpu-prof-dir=/tmp" before starting the process.'}))}function Tn1(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let X=mD();if(!X)return;let Q={};try{let{heapStats:Y}=await import("bun:jsc"),G=Y(),J=Object.entries(G.objectTypeCounts).sort((K,W)=>W[1]-K[1]).slice(0,20);Q={objectCount:G.objectCount,heapSize:G.heapSize,top:Object.fromEntries(J)}}catch{}console.log(JSON.stringify({msg:"heap-watch",ts:new Date().toISOString(),uptimeS:Math.round(process.uptime()),rss:X.rss,heapUsed:X.heapUsed,heapTotal:X.heapTotal,external:X.external,arrayBuffers:X.arrayBuffers,...Q}))};return Z().catch(()=>{}),s50=setInterval(()=>void Z().catch(()=>{}),$),s50.unref?.(),process.on("SIGUSR2",()=>{try{let X=Bun.generateHeapSnapshot("v8"),Q=typeof X==="string"?X:JSON.stringify(X),Y=`/tmp/heap-${process.pid}-${Date.now()}.heapsnapshot`;Bun.write(Y,Q),console.log(JSON.stringify({msg:"heap-snapshot-written",path:Y}))}catch(X){console.error("[heap-watch] snapshot failed:",X)}}),()=>{if(s50)clearInterval(s50)}}var s50;var Rn1=()=>{};import*as $l6 from"bun:jsc";function In1(){if(process.env.STALL_WATCHDOG!=="1")return()=>{};let $=Number(process.env.STALL_WATCHDOG_MS??100),Z=Number(process.env.STALL_WATCHDOG_TICK_MS??50);try{Zl6()}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=Xl6()?.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 Zl6,Xl6;var qn1=O(()=>{({startSamplingProfiler:Zl6,samplingProfilerStackTraces:Xl6}=$l6)});function Mn1(){An1();let $=[Tn1(),Rl1(),In1()];return()=>{for(let Z of $)Z()}}var kn1=O(()=>{Gh0();Rn1();qn1()});var aD=_((Vn1)=>{Object.defineProperty(Vn1,"__esModule",{value:!0});Vn1.RepublishHeaders=Vn1.DirectMsgHeaders=Vn1.JsHeaders=Vn1.AdvisoryKind=void 0;Vn1.isOrderedPushConsumerOptions=Ql6;Vn1.isPullConsumer=Yl6;Vn1.isPushConsumer=Gl6;Vn1.isBoundPushConsumerOptions=Jl6;function Ql6($){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 Yl6($){return $.isPullConsumer()}function Gl6($){return $.isPushConsumer()}function Jl6($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}Vn1.AdvisoryKind={API:"api_audit",StreamAction:"stream_action",ConsumerAction:"consumer_action",SnapshotCreate:"snapshot_create",SnapshotComplete:"snapshot_complete",RestoreCreate:"restore_create",RestoreComplete:"restore_complete",MaxDeliver:"max_deliver",Terminated:"terminated",Ack:"consumer_ack",StreamLeaderElected:"stream_leader_elected",StreamQuorumLost:"stream_quorum_lost",ConsumerLeaderElected:"consumer_leader_elected",ConsumerQuorumLost:"consumer_quorum_lost"};Vn1.JsHeaders={StreamSourceHdr:"Nats-Stream-Source",LastConsumerSeqHdr:"Nats-Last-Consumer",LastStreamSeqHdr:"Nats-Last-Stream",ConsumerStalledHdr:"Nats-Consumer-Stalled",MessageSizeHdr:"Nats-Msg-Size",RollupHdr:"Nats-Rollup",RollupValueSubject:"sub",RollupValueAll:"all",PendingMessagesHdr:"Nats-Pending-Messages",PendingBytesHdr:"Nats-Pending-Bytes",RequiredApiLevel:"Nats-Required-Api-Level"};Vn1.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};Vn1.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var lY=_((Cn1)=>{Object.defineProperty(Cn1,"__esModule",{value:!0});Cn1.TD=Cn1.TE=Cn1.Empty=void 0;Cn1.encode=Ol6;Cn1.decode=Ll6;Cn1.Empty=new Uint8Array(0);Cn1.TE=new TextEncoder;Cn1.TD=new TextDecoder;function Bl6(...$){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 Ol6(...$){let Z=[];for(let X=0;X<$.length;X++)Z.push(Cn1.TE.encode($[X]));if(Z.length===0)return Cn1.Empty;if(Z.length===1)return Z[0];return Bl6(...Z)}function Ll6($){if(!$||$.length===0)return"";return Cn1.TD.decode($)}});var dY=_((xn1)=>{Object.defineProperty(xn1,"__esModule",{value:!0});xn1.errors=xn1.PermissionViolationError=xn1.NoRespondersError=xn1.TimeoutError=xn1.RequestError=xn1.ProtocolError=xn1.ConnectionError=xn1.DrainingConnectionError=xn1.ClosedConnectionError=xn1.AuthorizationError=xn1.UserAuthenticationExpiredError=xn1.InvalidOperationError=xn1.InvalidArgumentError=xn1.InvalidSubjectError=void 0;class Gd0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}xn1.InvalidSubjectError=Gd0;class e50 extends Error{constructor($,Z){super($,Z);this.name="InvalidArgumentError"}static format($,Z,X){if(Array.isArray(Z)&&Z.length>1)Z=Z[0];if(Array.isArray($))$=$.map((Q)=>`'${Q}'`),$=$.join(",");else $=`'${$}'`;return new e50(`${$} ${Z}`,X)}}xn1.InvalidArgumentError=e50;class Jd0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}xn1.InvalidOperationError=Jd0;class $90 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new $90($);return null}}xn1.UserAuthenticationExpiredError=$90;class Z90 extends Error{constructor($,Z){super($,Z);this.name="AuthorizationError"}static parse($){let Z=["authorization violation","account authentication expired","authentication timeout"],X=$.toLowerCase();for(let Q=0;Q<Z.length;Q++)if(X.indexOf(Z[Q])!==-1)return new Z90($);return null}}xn1.AuthorizationError=Z90;class Kd0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}xn1.ClosedConnectionError=Kd0;class Wd0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}xn1.DrainingConnectionError=Wd0;class Hd0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}xn1.ConnectionError=Hd0;class Nd0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}xn1.ProtocolError=Nd0;class Ud0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof X90}}xn1.RequestError=Ud0;class Fd0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}xn1.TimeoutError=Fd0;class X90 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}xn1.NoRespondersError=X90;class Q90 extends Error{operation;subject;queue;constructor($,Z,X,Q,Y){super($,Y);this.name="PermissionViolationError",this.operation=Z,this.subject=X,this.queue=Q}static parse($){if(($?$.toLowerCase():"").indexOf("permissions violation")===-1)return null;let X="publish",Q="",Y=void 0,G=$.match(/(Publish|Subscription) to "(\S+)"/);if(G){if(X=G[1].toLowerCase(),Q=G[2],X==="subscription"){let J=$.match(/using queue "(\S+)"/);if(J)Y=J[1]}}return new Q90($,X,Q,Y)}}xn1.PermissionViolationError=Q90;xn1.errors={AuthorizationError:Z90,ClosedConnectionError:Kd0,ConnectionError:Hd0,DrainingConnectionError:Wd0,InvalidArgumentError:e50,InvalidOperationError:Jd0,InvalidSubjectError:Gd0,NoRespondersError:X90,PermissionViolationError:Q90,ProtocolError:Nd0,RequestError:Ud0,TimeoutError:Fd0,UserAuthenticationExpiredError:$90}});var OJ=_((hn1)=>{Object.defineProperty(hn1,"__esModule",{value:!0});hn1.SimpleMutex=hn1.Perf=void 0;hn1.extend=vl6;hn1.render=xl6;hn1.timeout=fl6;hn1.delay=bl6;hn1.deadline=yl6;hn1.deferred=Bd0;hn1.debugDeferred=gl6;hn1.shuffle=hl6;hn1.collect=ul6;hn1.jitter=gn1;hn1.backoff=cl6;hn1.nanos=ll6;hn1.millis=dl6;hn1.randomToken=nl6;var _l6=lY(),wd0=dY();function vl6($,...Z){for(let X=0;X<Z.length;X++){let Q=Z[X];Object.keys(Q).forEach(function(Y){$[Y]=Q[Y]})}return $}function xl6($){return _l6.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function fl6($,Z=!0){let X=Z?new wd0.TimeoutError:null,Q,Y,G=new Promise((J,K)=>{Q={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(X===null)K(new wd0.TimeoutError);else K(X)},$)});return Object.assign(G,Q)}function bl6($=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 yl6($,Z=1000){let X=Bd0(),Q=setTimeout(()=>{X.reject(new wd0.TimeoutError)},Z);try{return await Promise.race([$,X])}finally{clearTimeout(Q)}}function Bd0(){let $={},Z=new Promise((X,Q)=>{$={resolve:X,reject:Q}});return Object.assign(Z,$)}function gl6(){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 hl6($){for(let Z=$.length-1;Z>0;Z--){let X=Math.floor(Math.random()*(Z+1));[$[Z],$[X]]=[$[X],$[Z]]}return $}async function ul6($){let Z=[];for await(let X of $)Z.push(X);return Z}class bn1{timers;measures;constructor(){this.timers=new Map,this.measures=new Map}mark($){this.timers.set($,performance.now())}measure($,Z,X){let Q=this.timers.get(Z);if(Q===void 0)throw Error(`${Z} is not defined`);let Y=this.timers.get(X);if(Y===void 0)throw Error(`${X} is not defined`);this.measures.set($,Y-Q)}getEntries(){let $=[];return this.measures.forEach((Z,X)=>{$.push({name:X,duration:Z})}),$}}hn1.Perf=bn1;class yn1{max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=Bd0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}hn1.SimpleMutex=yn1;function gn1($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function cl6($=[0,250,250,500,500,3000,5000]){if(!Array.isArray($))$=[0,250,250,500,500,3000,5000];let Z=$.length-1;return{backoff(X){return gn1(X>Z?$[Z]:$[X])}}}function ll6($){return $*1e6}function dl6($){return Math.floor($/1e6)}var ml6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",xN=new Uint8Array(62);for(let $=0;$<62;$++)xN[$]=ml6.charCodeAt($);var il6=218340105584896;function nl6(){let $=Math.floor(Math.random()*il6),Z=$%62,X=xN[Z];$=($-Z)/62,Z=$%62;let Q=xN[Z];$=($-Z)/62,Z=$%62;let Y=xN[Z];$=($-Z)/62,Z=$%62;let G=xN[Z];$=($-Z)/62,Z=$%62;let J=xN[Z];$=($-Z)/62,Z=$%62;let K=xN[Z];$=($-Z)/62,Z=$%62;let W=xN[Z];$=($-Z)/62;let H=xN[$];return String.fromCharCode(X,Q,Y,G,J,K,W,H)}});var pn1=_((in1)=>{Object.defineProperty(in1,"__esModule",{value:!0});in1.nuid=in1.NuidImpl=void 0;var Wd6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",Tw=62,G90=12,dn1=10,cn1=33,Hd6=333,ln1=G90+dn1,Ld0=new Uint8Array(Tw);for(let $=0;$<Tw;$++)Ld0[$]=Wd6.charCodeAt($);var Y90=4294967296,mn1=BigInt(Tw)**BigInt(dn1),vm=Number(mn1/(1n<<32n)),Od0=Number(mn1%(1n<<32n));function Nd6($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function Ud6($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else Nd6($)}class Dd0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(ln1),this.cbuf=new Uint8Array(G90),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(vm+1)),this.seqLo=Math.floor(Math.random()*Y90);while($++<8&&this.seqHi===vm&&this.seqLo>=Od0);if(this.seqHi===vm&&this.seqLo>=Od0)this.seqLo=0;this.inc=Math.random()*(Hd6-cn1)+cn1|0}setPre(){Ud6(this.cbuf);for(let $=0;$<G90;$++)this.buf[$]=Ld0[this.cbuf[$]%Tw]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let X=ln1-1;X>=G90;X--){let Q=Math.floor($/Tw),G=($-Q*Tw)*Y90+Z,J=Math.floor(G/Tw),K=G-J*Tw;this.buf[X]=Ld0[K],$=Q,Z=J}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=Y90)this.seqLo-=Y90,this.seqHi+=1;if(this.seqHi>vm||this.seqHi===vm&&this.seqLo>=Od0)this.setPre(),this.initSeqAndInc();this.fillSeq();let $=this.buf;return String.fromCharCode($[0],$[1],$[2],$[3],$[4],$[5],$[6],$[7],$[8],$[9],$[10],$[11],$[12],$[13],$[14],$[15],$[16],$[17],$[18],$[19],$[20],$[21])}reset(){this.init()}}in1.NuidImpl=Dd0;in1.nuid=new Dd0});var an1=_((on1)=>{Object.defineProperty(on1,"__esModule",{value:!0});on1.nuid=on1.Nuid=void 0;var tn1=pn1();on1.Nuid=tn1.NuidImpl;on1.nuid=tn1.nuid});var K90=_((J90)=>{Object.defineProperty(J90,"__esModule",{value:!0});J90.nuid=J90.Nuid=void 0;var sn1=an1();Object.defineProperty(J90,"Nuid",{enumerable:!0,get:function(){return sn1.Nuid}});Object.defineProperty(J90,"nuid",{enumerable:!0,get:function(){return sn1.nuid}})});var Rw=_((en1)=>{Object.defineProperty(en1,"__esModule",{value:!0});en1.DEFAULT_HOST=en1.DEFAULT_PORT=en1.Match=void 0;en1.syncIterator=Dd6;en1.createInbox=Ed6;var Od6=K90(),Ld6=dY();en1.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function Dd6($){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 Ed6($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw Ld6.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${Od6.nuid.next()}`}en1.DEFAULT_PORT=4222;en1.DEFAULT_HOST="127.0.0.1"});var xm=_((Qp1)=>{Object.defineProperty(Qp1,"__esModule",{value:!0});Qp1.DataBuffer=void 0;var Zp1=lY();class Xp1{buffers;byteLength;constructor(){this.buffers=[],this.byteLength=0}static concat(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let X=new Uint8Array(Z),Q=0;for(let Y=0;Y<$.length;Y++)X.set($[Y],Q),Q+=$[Y].length;return X}static fromAscii($){if(!$)$="";return Zp1.TE.encode($)}static toAscii($){return Zp1.TD.decode($)}reset(){this.buffers.length=0,this.byteLength=0}pack(){if(this.buffers.length>1){let $=new Uint8Array(this.byteLength),Z=0;for(let X=0;X<this.buffers.length;X++)$.set(this.buffers[X],Z),Z+=this.buffers[X].length;this.buffers.length=0,this.buffers.push($)}}shift(){if(this.buffers.length){let $=this.buffers.shift();if($)return this.byteLength-=$.length,$}return new Uint8Array(0)}drain($){if(this.buffers.length){this.pack();let Z=this.buffers.pop();if(Z){let X=this.byteLength;if($===void 0||$>X)$=X;let Q=Z.subarray(0,$);if(X>$)this.buffers.push(Z.subarray($));return this.byteLength=X-$,Q}}return new Uint8Array(0)}fill($,...Z){if($)this.buffers.push($),this.byteLength+=$.length;for(let X=0;X<Z.length;X++)if(Z[X]&&Z[X].length)this.buffers.push(Z[X]),this.byteLength+=Z[X].length}peek(){if(this.buffers.length)return this.pack(),this.buffers[0];return new Uint8Array(0)}size(){return this.byteLength}length(){return this.buffers.length}}Qp1.DataBuffer=Xp1});var sD=_((Jp1)=>{Object.defineProperty(Jp1,"__esModule",{value:!0});Jp1.LF=Jp1.CR=Jp1.CRLF=Jp1.CR_LF_LEN=Jp1.CR_LF=void 0;Jp1.setTransportFactory=qd6;Jp1.defaultPort=Md6;Jp1.getUrlParseFn=kd6;Jp1.newTransport=Vd6;Jp1.getResolveFn=Sd6;Jp1.protoLen=Gp1;Jp1.extractProtocolMessage=Cd6;var Td6=lY(),Rd6=Rw(),Id6=xm(),mY;function qd6($){mY=$}function Md6(){return mY!==void 0&&mY.defaultPort!==void 0?mY.defaultPort:Rd6.DEFAULT_PORT}function kd6(){return mY!==void 0&&mY.urlParseFn?mY.urlParseFn:void 0}function Vd6(){if(!mY||typeof mY.factory!=="function")throw Error("transport fn is not set");return mY.factory()}function Sd6(){return mY!==void 0&&mY.dnsResolveFn?mY.dnsResolveFn:void 0}Jp1.CR_LF=`\r
1336
1336
  `;Jp1.CR_LF_LEN=Jp1.CR_LF.length;Jp1.CRLF=Id6.DataBuffer.fromAscii(Jp1.CR_LF);Jp1.CR=new Uint8Array(Jp1.CRLF)[0];Jp1.LF=new Uint8Array(Jp1.CRLF)[1];function Gp1($){for(let Z=0;Z<$.length;Z++){let X=Z+1;if($.byteLength>X&&$[Z]===Jp1.CR&&$[X]===Jp1.LF)return X+1}return 0}function Cd6($){let Z=Gp1($);if(Z>0){let Q=new Uint8Array($).slice(0,Z);return Td6.TD.decode(Q)}return""}});var Ad0=_((Bp1)=>{Object.defineProperty(Bp1,"__esModule",{value:!0});Bp1.ipV4=Up1;Bp1.isIP=ld6;Bp1.parseIP=Fp1;var fm=4,eD=16,W90=48,Np1=57,Wp1=65,ud6=70,Hp1=97,cd6=102,Pd0=16777215;function Up1($,Z,X,Q){let Y=new Uint8Array(eD);return[0,0,0,0,0,0,0,0,0,0,255,255].forEach((J,K)=>{Y[K]=J}),Y[12]=$,Y[13]=Z,Y[14]=X,Y[15]=Q,Y}function ld6($){return Fp1($)!==void 0}function Fp1($){for(let Z=0;Z<$.length;Z++)switch($[Z]){case".":return wp1($);case":":return dd6($)}return}function wp1($){let Z=new Uint8Array(fm);for(let X=0;X<fm;X++){if($.length===0)return;if(X>0){if($[0]!==".")return;$=$.substring(1)}let{n:Q,c:Y,ok:G}=md6($);if(!G||Q>255)return;$=$.substring(Y),Z[X]=Q}return Up1(Z[0],Z[1],Z[2],Z[3])}function dd6($){let Z=new Uint8Array(eD),X=-1;if($.length>=2&&$[0]===":"&&$[1]===":"){if(X=0,$=$.substring(2),$.length===0)return Z}let Q=0;while(Q<eD){let{n:Y,c:G,ok:J}=id6($);if(!J||Y>65535)return;if(G<$.length&&$[G]==="."){if(X<0&&Q!=eD-fm)return;if(Q+fm>eD)return;let K=wp1($);if(K===void 0)return;Z[Q]=K[12],Z[Q+1]=K[13],Z[Q+2]=K[14],Z[Q+3]=K[15],$="",Q+=fm;break}if(Z[Q]=Y>>8,Z[Q+1]=Y,Q+=2,$=$.substring(G),$.length===0)break;if($[0]!==":"||$.length==1)return;if($=$.substring(1),$[0]===":"){if(X>=0)return;if(X=Q,$=$.substring(1),$.length===0)break}}if($.length!==0)return;if(Q<eD){if(X<0)return;let Y=eD-Q;for(let G=Q-1;G>=X;G--)Z[G+Y]=Z[G];for(let G=X+Y-1;G>=X;G--)Z[G]=0}else if(X>=0)return;return Z}function md6($){let Z=0,X=0;for(Z=0;Z<$.length&&W90<=$.charCodeAt(Z)&&$.charCodeAt(Z)<=Np1;Z++)if(X=X*10+($.charCodeAt(Z)-W90),X>=Pd0)return{n:Pd0,c:Z,ok:!1};if(Z===0)return{n:0,c:0,ok:!1};return{n:X,c:Z,ok:!0}}function id6($){let Z=0,X=0;for(X=0;X<$.length;X++){if(W90<=$.charCodeAt(X)&&$.charCodeAt(X)<=Np1)Z*=16,Z+=$.charCodeAt(X)-W90;else if(Hp1<=$.charCodeAt(X)&&$.charCodeAt(X)<=cd6)Z*=16,Z+=$.charCodeAt(X)-Hp1+10;else if(Wp1<=$.charCodeAt(X)&&$.charCodeAt(X)<=ud6)Z*=16,Z+=$.charCodeAt(X)-Wp1+10;else break;if(Z>=Pd0)return{n:0,c:X,ok:!1}}if(X===0)return{n:0,c:X,ok:!1};return{n:Z,c:X,ok:!0}}});var kd0=_((Lp1)=>{Object.defineProperty(Lp1,"__esModule",{value:!0});Lp1.Servers=Lp1.ServerImpl=void 0;Lp1.isIPV4OrHostname=Op1;Lp1.hostPort=Md0;var Td0=sD(),Rd0=OJ(),Id0=Ad0(),od6=Rw(),rd6=dY();function Op1($){if($.indexOf("[")!==-1||$.indexOf("::")!==-1)return!1;if($.indexOf(".")!==-1)return!0;if($.split(":").length<=2)return!0;return!1}function qd0($){return!Op1($)}function ad6($){let X=$.toUpperCase().indexOf("::FFFF:");if(X!==-1&&$.indexOf(".")!==-1){let Q=$.substring(X+7);return Q=Q.replace("[",""),Q.replace("]","")}return $}function Md0($){if($=$.trim(),$.match(/^(.*:\/\/)(.*)/m))$=$.replace(/^(.*:\/\/)(.*)/gm,"$2");if($=ad6($),qd0($)&&$.indexOf("[")===-1)$=`[${$}]`;let Z=qd0($)?$.match(/(]:)(\d+)/):$.match(/(:)(\d+)/),X=Z&&Z.length===3&&Z[1]&&Z[2]?parseInt(Z[2]):od6.DEFAULT_PORT,Y=new URL(`${X===80?"https":"http"}://${$}`);Y.port=`${X}`;let G=Y.hostname;if(G.charAt(0)==="[")G=G.substring(1,G.length-1);return{listen:Y.host,hostname:G,port:X}}class Gb{src;listen;hostname;port;didConnect;reconnects;lastConnect;gossiped;tlsName;resolves;constructor($,Z=!1){this.src=$,this.tlsName="";let X=Md0($);this.listen=X.listen,this.hostname=X.hostname,this.port=X.port,this.didConnect=!1,this.reconnects=0,this.lastConnect=0,this.gossiped=Z}toString(){return this.listen}async resolve($){if(!$.fn||$.resolve===!1)return[this];let Z=[];if((0,Id0.isIP)(this.hostname))return[this];else{let X=await $.fn(this.hostname);if($.debug)console.log(`resolve ${this.hostname} = ${X.join(",")}`);for(let Q of X){let Y=this.port===80?"https":"http",G=new URL(`${Y}://${qd0(Q)?"["+Q+"]":Q}`);G.port=`${this.port}`;let J=new Gb(G.host,!1);J.tlsName=this.hostname,Z.push(J)}}if($.randomize)(0,Rd0.shuffle)(Z);return this.resolves=Z,Z}}Lp1.ServerImpl=Gb;class H90{firstSelect;servers;currentServer;tlsName;randomize;constructor($={}){this.firstSelect=!0,this.servers=[],this.tlsName="",this.randomize=$.randomize||!1}setServers($){if(!Array.isArray($)||$.length===0)throw rd6.InvalidArgumentError.format("servers","cannot be empty");let Z=(0,Td0.getUrlParseFn)(),X=new Map;for(let Y of this.servers)X.set(Y.listen,Y);let Q=[];for(let Y of $){Y=Z?Z(Y):Y;let{listen:G}=Md0(Y),J=X.get(G);if(J)J.gossiped=!1,Q.push(J);else Q.push(new Gb(Y))}if(this.randomize)(0,Rd0.shuffle)(Q);if(this.servers=Q,this.currentServer===void 0||!Q.includes(this.currentServer))this.currentServer=Q[0],this.firstSelect=!0}clear(){this.servers.length=0}updateTLSName(){let $=this.getCurrentServer();if(!(0,Id0.isIP)($.hostname))this.tlsName=$.hostname,this.servers.forEach((Z)=>{if(Z.gossiped)Z.tlsName=this.tlsName})}getCurrentServer(){return this.currentServer}addServer($,Z=!1){let X=(0,Td0.getUrlParseFn)();$=X?X($):$;let Q=new Gb($,Z);if((0,Id0.isIP)(Q.hostname))Q.tlsName=this.tlsName;this.servers.push(Q)}selectServer(){if(this.firstSelect)return this.firstSelect=!1,this.currentServer;let $=this.servers.shift();if($)this.servers.push($),this.currentServer=$;return $}removeCurrentServer(){this.removeServer(this.currentServer)}removeServer($){if($){let Z=this.servers.indexOf($);this.servers.splice(Z,1)}}snapshot(){return H90.freezeAll(this.servers)}snapshotForHandler(){let $=this.currentServer;if(!$)return this.snapshot();let Z=this.servers.indexOf($);if(Z<=0)return this.snapshot();return H90.freezeAll([$,...this.servers.slice(0,Z),...this.servers.slice(Z+1)])}static freezeAll($){return $.map((Z)=>Object.freeze({hostname:Z.hostname,port:Z.port,listen:Z.listen,src:Z.src,tlsName:Z.tlsName,reconnects:Z.reconnects,lastConnect:Z.lastConnect,gossiped:Z.gossiped,didConnect:Z.didConnect}))}find($){return this.servers.find((Z)=>Z.listen===$.listen)}setCurrent($){this.currentServer=$}length(){return this.servers.length}next(){return this.servers.length?this.servers[0]:void 0}getServers(){return this.servers}update($,Z){let X=[],Q=[],Y=(0,Td0.getUrlParseFn)(),G=new Map;if($.connect_urls&&$.connect_urls.length>0)$.connect_urls.forEach((K)=>{K=Y?Y(K,Z):K;let W=new Gb(K,!0);G.set(K,W)});let J=[];if(this.servers.forEach((K,W)=>{let H=K.listen;if(K.gossiped&&this.currentServer.listen!==H&&G.get(H)===void 0)J.push(W);G.delete(H)}),J.reverse(),J.forEach((K)=>{let W=this.servers.splice(K,1);Q=Q.concat(W[0].listen)}),G.forEach((K,W)=>{this.servers.push(K),X.push(W)}),this.randomize&&X.length>0){let K=this.currentServer,W=this.servers.filter((H)=>H!==K);(0,Rd0.shuffle)(W),this.servers=K?[K,...W]:W}return{added:X,deleted:Q}}}Lp1.Servers=H90});var N90=_((jp1)=>{Object.defineProperty(jp1,"__esModule",{value:!0});jp1.QueuedIteratorImpl=void 0;var Vd0=OJ(),Ep1=dY();class zp1{inflight;processed;received;noIterator;iterClosed;done;signal;yields;filtered;pendingFiltered;ctx;_data;err;time;profile;yielding;didBreak;constructor(){this.inflight=0,this.filtered=0,this.pendingFiltered=0,this.processed=0,this.received=0,this.noIterator=!1,this.done=!1,this.signal=(0,Vd0.deferred)(),this.yields=[],this.iterClosed=(0,Vd0.deferred)(),this.time=0,this.yielding=!1,this.didBreak=!1,this.profile=!1}[Symbol.asyncIterator](){return this.iterate()}push($){if(this.done)return;if(this.didBreak){if(typeof $==="function"){let Z=$;try{Z()}catch(X){}}return}if(typeof $==="function")this.pendingFiltered++;this.yields.push($),this.signal.resolve()}async*iterate(){if(this.noIterator)throw new Ep1.InvalidOperationError("iterator cannot be used when a callback is registered");if(this.yielding)throw new Ep1.InvalidOperationError("iterator is already yielding");this.yielding=!0;try{while(!0){if(this.yields.length===0)await this.signal;if(this.err)throw this.err;let $=this.yields;this.inflight=$.length,this.yields=[];for(let Z=0;Z<$.length;Z++){if(typeof $[Z]==="function"){this.pendingFiltered--;let Q=$[Z];try{Q()}catch(Y){throw Y}if(this.err)throw this.err;continue}this.processed++,this.inflight--;let X=this.profile?Date.now():0;yield $[Z],this.time=this.profile?Date.now()-X:0}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,Vd0.deferred)()}}finally{this.didBreak=!0,this.stop()}}stop($){if(this.done)return;this.err=$,this.done=!0,this.signal.resolve(),this.iterClosed.resolve($)}getProcessed(){return this.noIterator?this.received:this.processed}getPending(){return this.yields.length+this.inflight-this.pendingFiltered}getReceived(){return this.received-this.filtered}}jp1.QueuedIteratorImpl=zp1});var Sd0=_((Rp1)=>{Object.defineProperty(Rp1,"__esModule",{value:!0});Rp1.MuxSubscription=void 0;var Zm6=Rw(),Ap1=dY();class Tp1{baseInbox;reqs;constructor(){this.reqs=new Map}size(){return this.reqs.size}init($){return this.baseInbox=`${(0,Zm6.createInbox)($)}.`,this.baseInbox}add($){if(!isNaN($.received))$.received=0;this.reqs.set($.token,$)}get($){return this.reqs.get($)}cancel($){this.reqs.delete($.token)}getToken($){let Z=$.subject||"";if(Z.indexOf(this.baseInbox)===0)return Z.substring(this.baseInbox.length);return null}all(){return Array.from(this.reqs.values())}handleError($,Z){if($)return this.all().forEach((X)=>{X.resolver(Z,{})}),!0;if(Z.operation==="publish"){let X=this.all().find((Q)=>{return Q.requestSubject===Z.subject});if(X)return X.resolver(Z,{}),!0}return!1}dispatcher(){return($,Z)=>{let X=this.getToken(Z);if(X){let Q=this.get(X);if(Q){if($===null)$=Z?.data?.length===0&&Z.headers?.code===503?new Ap1.NoRespondersError(Q.requestSubject):null;Q.resolver($,Z)}}}}close(){let $=new Ap1.RequestError("connection closed");this.reqs.forEach((Z)=>{Z.resolver($,{})})}}Rp1.MuxSubscription=Tp1});var Cd0=_((Mp1)=>{Object.defineProperty(Mp1,"__esModule",{value:!0});Mp1.Heartbeat=void 0;var Xm6=OJ();class qp1{ph;interval;maxOut;timer;pendings;constructor($,Z,X){this.ph=$,this.interval=Z,this.maxOut=X,this.pendings=[]}start(){this.cancel(),this._schedule()}cancel($){if(this.timer)clearTimeout(this.timer),this.timer=void 0;if(this._reset(),$)this.ph.disconnect()}_schedule(){this.timer=setTimeout(()=>{if(this.ph.dispatchStatus({type:"ping",pendingPings:this.pendings.length+1}),this.pendings.length===this.maxOut){this.cancel(!0);return}let $=(0,Xm6.deferred)();this.ph.flush($).then(()=>{this._reset()}).catch(()=>{this.cancel()}),this.pendings.push($),this._schedule()},this.interval)}_reset(){this.pendings=this.pendings.filter(($)=>{return $.resolve(),!1})}}Mp1.Heartbeat=qp1});var xd0=_((_p1)=>{Object.defineProperty(_p1,"__esModule",{value:!0});_p1.DenoBuffer=_p1.MAX_SIZE=_p1.AssertionError=void 0;_p1.assert=Sp1;_p1.concat=Cp1;_p1.append=Ym6;_p1.readAll=Gm6;_p1.writeAll=Jm6;var Qm6=lY();class _d0 extends Error{constructor($){super($);this.name="AssertionError"}}_p1.AssertionError=_d0;function Sp1($,Z="Assertion failed."){if(!$)throw new _d0(Z)}var Vp1=32768;_p1.MAX_SIZE=4294967294;function U90($,Z,X=0){let Q=Z.byteLength-X;if($.byteLength>Q)$=$.subarray(0,Q);return Z.set($,X),$.byteLength}function Cp1($,Z){if($===void 0&&Z===void 0)return new Uint8Array(0);if($===void 0)return Z;if(Z===void 0)return $;let X=new Uint8Array($.length+Z.length);return X.set($,0),X.set(Z,$.length),X}function Ym6($,Z){return Cp1($,Uint8Array.of(Z))}class vd0{_buf;_off;constructor($){if(this._off=0,$==null){this._buf=new Uint8Array(0);return}this._buf=new Uint8Array($)}bytes($={copy:!0}){if($.copy===!1)return this._buf.subarray(this._off);return this._buf.slice(this._off)}empty(){return this._buf.byteLength<=this._off}get length(){return this._buf.byteLength-this._off}get capacity(){return this._buf.buffer.byteLength}truncate($){if($===0){this.reset();return}if($<0||$>this.length)throw Error("bytes.Buffer: truncation out of range");this._reslice(this._off+$)}reset(){this._reslice(0),this._off=0}_tryGrowByReslice($){let Z=this._buf.byteLength;if($<=this.capacity-Z)return this._reslice(Z+$),Z;return-1}_reslice($){Sp1($<=this._buf.buffer.byteLength),this._buf=new Uint8Array(this._buf.buffer,0,$)}readByte(){let $=new Uint8Array(1);if(this.read($))return $[0];return null}read($){if(this.empty()){if(this.reset(),$.byteLength===0)return 0;return null}let Z=U90(this._buf.subarray(this._off),$);return this._off+=Z,Z}writeByte($){return this.write(Uint8Array.of($))}writeString($){return this.write(Qm6.TE.encode($))}write($){let Z=this._grow($.byteLength);return U90($,this._buf,Z)}_grow($){let Z=this.length;if(Z===0&&this._off!==0)this.reset();let X=this._tryGrowByReslice($);if(X>=0)return X;let Q=this.capacity;if($<=Math.floor(Q/2)-Z)U90(this._buf.subarray(this._off),this._buf);else if(Q+$>_p1.MAX_SIZE)throw Error("The buffer cannot be grown beyond the maximum size.");else{let Y=new Uint8Array(Math.min(2*Q+$,_p1.MAX_SIZE));U90(this._buf.subarray(this._off),Y),this._buf=Y}return this._off=0,this._reslice(Math.min(Z+$,_p1.MAX_SIZE)),Z}grow($){if($<0)throw Error("Buffer._grow: negative count");let Z=this._grow($);this._reslice(Z)}readFrom($){let Z=0,X=new Uint8Array(Vp1);while(!0){let Q=this.capacity-this.length<Vp1,Y=Q?X:new Uint8Array(this._buf.buffer,this.length),G=$.read(Y);if(G===null)return Z;if(Q)this.write(Y.subarray(0,G));else this._reslice(this.length+G);Z+=G}}}_p1.DenoBuffer=vd0;function Gm6($){let Z=new vd0;return Z.readFrom($),Z.bytes()}function Jm6($,Z){let X=0;while(X<Z.length)X+=$.write(Z.subarray(X))}});var yd0=_((yp1)=>{Object.defineProperty(yp1,"__esModule",{value:!0});yp1.cc=yp1.State=yp1.Parser=yp1.Kind=void 0;yp1.describe=wm6;var fd0=xd0(),bd0=lY();yp1.Kind={OK:0,ERR:1,MSG:2,INFO:3,PING:4,PONG:5};function wm6($){let Z,X="";switch($.kind){case yp1.Kind.MSG:Z="MSG";break;case yp1.Kind.OK:Z="OK";break;case yp1.Kind.ERR:Z="ERR",X=bd0.TD.decode($.data);break;case yp1.Kind.PING:Z="PING";break;case yp1.Kind.PONG:Z="PONG";break;case yp1.Kind.INFO:Z="INFO",X=bd0.TD.decode($.data)}return`${Z}: ${X}`}function xp1(){let $={};return $.sid=-1,$.hdr=-1,$.size=-1,$}var fp1=48,Bm6=57,Jb=67108864;class bp1{dispatcher;state;as;drop;hdr;ma;argBuf;msgBuf;constructor($){this.dispatcher=$,this.state=yp1.State.OP_START,this.as=0,this.drop=0,this.hdr=0}parse($){let Z;for(Z=0;Z<$.length;Z++){let X=$[Z];switch(this.state){case yp1.State.OP_START:switch(X){case yp1.cc.M:case yp1.cc.m:this.state=yp1.State.OP_M,this.hdr=-1,this.ma=xp1();break;case yp1.cc.H:case yp1.cc.h:this.state=yp1.State.OP_H,this.hdr=0,this.ma=xp1();break;case yp1.cc.P:case yp1.cc.p:this.state=yp1.State.OP_P;break;case yp1.cc.PLUS:this.state=yp1.State.OP_PLUS;break;case yp1.cc.MINUS:this.state=yp1.State.OP_MINUS;break;case yp1.cc.I:case yp1.cc.i:this.state=yp1.State.OP_I;break;default:throw this.fail($.subarray(Z))}break;case yp1.State.OP_H:switch(X){case yp1.cc.M:case yp1.cc.m:this.state=yp1.State.OP_M;break;default:throw this.fail($.subarray(Z))}break;case yp1.State.OP_M:switch(X){case yp1.cc.S:case yp1.cc.s:this.state=yp1.State.OP_MS;break;default:throw this.fail($.subarray(Z))}break;case yp1.State.OP_MS:switch(X){case yp1.cc.G:case yp1.cc.g:this.state=yp1.State.OP_MSG;break;default:throw this.fail($.subarray(Z))}break;case yp1.State.OP_MSG:switch(X){case yp1.cc.SPACE:case yp1.cc.TAB:this.state=yp1.State.OP_MSG_SPC;break;default:throw this.fail($.subarray(Z))}break;case yp1.State.OP_MSG_SPC:switch(X){case yp1.cc.SPACE:case yp1.cc.TAB:continue;default:this.state=yp1.State.MSG_ARG,this.as=Z}break;case yp1.State.MSG_ARG:switch(X){case yp1.cc.CR:this.drop=1;break;case yp1.cc.NL:{let Q=this.argBuf?this.argBuf.bytes():$.subarray(this.as,Z-this.drop);this.processMsgArgs(Q),this.drop=0,this.as=Z+1,this.state=yp1.State.MSG_PAYLOAD,Z=this.as+this.ma.size-1;break}default:if(this.argBuf)this.argBuf.writeByte(X)}break;case yp1.State.MSG_PAYLOAD:if(this.msgBuf)if(this.msgBuf.length>=this.ma.size){let Q=this.msgBuf.bytes({copy:!1});this.dispatcher.push({kind:yp1.Kind.MSG,msg:this.ma,data:Q}),this.argBuf=void 0,this.msgBuf=void 0,this.state=yp1.State.MSG_END}else{let Q=this.ma.size-this.msgBuf.length,Y=$.length-Z;if(Y<Q)Q=Y;if(Q>0)this.msgBuf.write($.subarray(Z,Z+Q)),Z=Z+Q-1;else this.msgBuf.writeByte(X)}else if(Z-this.as>=this.ma.size)this.dispatcher.push({kind:yp1.Kind.MSG,msg:this.ma,data:$.subarray(this.as,Z)}),this.argBuf=void 0,this.msgBuf=void 0,this.state=yp1.State.MSG_END;break;case yp1.State.MSG_END:switch(X){case yp1.cc.NL:this.drop=0,this.as=Z+1,this.state=yp1.State.OP_START;break;default:continue}break;case yp1.State.OP_PLUS:switch(X){case yp1.cc.O:case yp1.cc.o:this.state=yp1.State.OP_PLUS_O;break;default:throw this.fail($.subarray(Z))}break;case yp1.State.OP_PLUS_O:switch(X){case yp1.cc.K:case yp1.cc.k:this.state=yp1.State.OP_PLUS_OK;break;default:throw this.fail($.subarray(Z))}break;case yp1.State.OP_PLUS_OK:switch(X){case yp1.cc.NL:this.dispatcher.push({kind:yp1.Kind.OK}),this.drop=0,this.state=yp1.State.OP_START;break}break;case yp1.State.OP_MINUS:switch(X){case yp1.cc.E:case yp1.cc.e:this.state=yp1.State.OP_MINUS_E;break;default:throw this.fail($.subarray(Z))}break;case yp1.State.OP_MINUS_E:switch(X){case yp1.cc.R:case yp1.cc.r:this.state=yp1.State.OP_MINUS_ER;break;default:throw this.fail($.subarray(Z))}break;case yp1.State.OP_MINUS_ER:switch(X){case yp1.cc.R:case yp1.cc.r:this.state=yp1.State.OP_MINUS_ERR;break;default:throw this.fail($.subarray(Z))}break;case yp1.State.OP_MINUS_ERR:switch(X){case yp1.cc.SPACE:case yp1.cc.TAB:this.state=yp1.State.OP_MINUS_ERR_SPC;break;default:throw this.fail($.subarray(Z))}break;case yp1.State.OP_MINUS_ERR_SPC:switch(X){case yp1.cc.SPACE:case yp1.cc.TAB:continue;default:this.state=yp1.State.MINUS_ERR_ARG,this.as=Z}break;case yp1.State.MINUS_ERR_ARG:switch(X){case yp1.cc.CR:this.drop=1;break;case yp1.cc.NL:{let Q;if(this.argBuf)Q=this.argBuf.bytes(),this.argBuf=void 0;else Q=$.subarray(this.as,Z-this.drop);this.dispatcher.push({kind:yp1.Kind.ERR,data:Q}),this.drop=0,this.as=Z+1,this.state=yp1.State.OP_START;break}default:if(this.argBuf)this.argBuf.write(Uint8Array.of(X))}break;case yp1.State.OP_P:switch(X){case yp1.cc.I:case yp1.cc.i:this.state=yp1.State.OP_PI;break;case yp1.cc.O:case yp1.cc.o:this.state=yp1.State.OP_PO;break;default:throw this.fail($.subarray(Z))}break;case yp1.State.OP_PO:switch(X){case yp1.cc.N:case yp1.cc.n:this.state=yp1.State.OP_PON;break;default:throw this.fail($.subarray(Z))}break;case yp1.State.OP_PON:switch(X){case yp1.cc.G:case yp1.cc.g:this.state=yp1.State.OP_PONG;break;default:throw this.fail($.subarray(Z))}break;case yp1.State.OP_PONG:switch(X){case yp1.cc.NL:this.dispatcher.push({kind:yp1.Kind.PONG}),this.drop=0,this.state=yp1.State.OP_START;break}break;case yp1.State.OP_PI:switch(X){case yp1.cc.N:case yp1.cc.n:this.state=yp1.State.OP_PIN;break;default:throw this.fail($.subarray(Z))}break;case yp1.State.OP_PIN:switch(X){case yp1.cc.G:case yp1.cc.g:this.state=yp1.State.OP_PING;break;default:throw this.fail($.subarray(Z))}break;case yp1.State.OP_PING:switch(X){case yp1.cc.NL:this.dispatcher.push({kind:yp1.Kind.PING}),this.drop=0,this.state=yp1.State.OP_START;break}break;case yp1.State.OP_I:switch(X){case yp1.cc.N:case yp1.cc.n:this.state=yp1.State.OP_IN;break;default:throw this.fail($.subarray(Z))}break;case yp1.State.OP_IN:switch(X){case yp1.cc.F:case yp1.cc.f:this.state=yp1.State.OP_INF;break;default:throw this.fail($.subarray(Z))}break;case yp1.State.OP_INF:switch(X){case yp1.cc.O:case yp1.cc.o:this.state=yp1.State.OP_INFO;break;default:throw this.fail($.subarray(Z))}break;case yp1.State.OP_INFO:switch(X){case yp1.cc.SPACE:case yp1.cc.TAB:this.state=yp1.State.OP_INFO_SPC;break;default:throw this.fail($.subarray(Z))}break;case yp1.State.OP_INFO_SPC:switch(X){case yp1.cc.SPACE:case yp1.cc.TAB:continue;default:this.state=yp1.State.INFO_ARG,this.as=Z}break;case yp1.State.INFO_ARG:switch(X){case yp1.cc.CR:this.drop=1;break;case yp1.cc.NL:{let Q;if(this.argBuf)Q=this.argBuf.bytes(),this.argBuf=void 0;else Q=$.subarray(this.as,Z-this.drop);this.dispatcher.push({kind:yp1.Kind.INFO,data:Q}),this.drop=0,this.as=Z+1,this.state=yp1.State.OP_START;break}default:if(this.argBuf)this.argBuf.writeByte(X)}break;default:throw this.fail($.subarray(Z))}}if((this.state===yp1.State.MSG_ARG||this.state===yp1.State.MINUS_ERR_ARG||this.state===yp1.State.INFO_ARG)&&!this.argBuf)this.argBuf=new fd0.DenoBuffer($.subarray(this.as,Z-this.drop));if(this.state===yp1.State.MSG_PAYLOAD&&!this.msgBuf){if(!this.argBuf)this.cloneMsgArg();this.msgBuf=new fd0.DenoBuffer($.subarray(this.as))}}cloneMsgArg(){let $=this.ma.subject.length,Z=this.ma.reply?this.ma.reply.length:0,X=new Uint8Array($+Z);if(X.set(this.ma.subject),this.ma.reply)X.set(this.ma.reply,$);if(this.argBuf=new fd0.DenoBuffer(X),this.ma.subject=X.subarray(0,$),this.ma.reply)this.ma.reply=X.subarray($)}processMsgArgs($){if(this.hdr>=0)return this.processHeaderMsgArgs($);let Z=[],X=-1;for(let Q=0;Q<$.length;Q++)switch($[Q]){case yp1.cc.SPACE:case yp1.cc.TAB:case yp1.cc.CR:case yp1.cc.NL:if(X>=0)Z.push($.subarray(X,Q)),X=-1;break;default:if(X<0)X=Q}if(X>=0)Z.push($.subarray(X));switch(Z.length){case 3:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=void 0,this.ma.size=this.protoParseInt(Z[2],Jb);break;case 4:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=Z[2],this.ma.size=this.protoParseInt(Z[3],Jb);break;default:throw this.fail($,"processMsgArgs Parse Error")}if(this.ma.sid<0)throw this.fail($,"processMsgArgs Bad or Missing Sid Error");if(this.ma.size<0)throw this.fail($,"processMsgArgs Bad or Missing Size Error")}fail($,Z=""){if(!Z)Z=`parse error [${this.state}]`;else Z=`${Z} [${this.state}]`;return Error(`${Z}: ${bd0.TD.decode($)}`)}processHeaderMsgArgs($){let Z=[],X=-1;for(let Q=0;Q<$.length;Q++)switch($[Q]){case yp1.cc.SPACE:case yp1.cc.TAB:case yp1.cc.CR:case yp1.cc.NL:if(X>=0)Z.push($.subarray(X,Q)),X=-1;break;default:if(X<0)X=Q}if(X>=0)Z.push($.subarray(X));switch(Z.length){case 4:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=void 0,this.ma.hdr=this.protoParseInt(Z[2],Jb),this.ma.size=this.protoParseInt(Z[3],Jb);break;case 5:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=Z[2],this.ma.hdr=this.protoParseInt(Z[3],Jb),this.ma.size=this.protoParseInt(Z[4],Jb);break;default:throw this.fail($,"processHeaderMsgArgs Parse Error")}if(this.ma.sid<0)throw this.fail($,"processHeaderMsgArgs Bad or Missing Sid Error");if(this.ma.hdr<0||this.ma.hdr>this.ma.size)throw this.fail($,"processHeaderMsgArgs Bad or Missing Header Size Error");if(this.ma.size<0)throw this.fail($,"processHeaderMsgArgs Bad or Missing Size Error")}protoParseInt($,Z){if($.length===0||$.length>15)return-1;let X=0;for(let Q=0;Q<$.length;Q++){if($[Q]<fp1||$[Q]>Bm6)return-1;X=X*10+($[Q]-fp1)}return Z!==void 0&&X>Z?-1:X}}yp1.Parser=bp1;yp1.State={OP_START:0,OP_PLUS:1,OP_PLUS_O:2,OP_PLUS_OK:3,OP_MINUS:4,OP_MINUS_E:5,OP_MINUS_ER:6,OP_MINUS_ERR:7,OP_MINUS_ERR_SPC:8,MINUS_ERR_ARG:9,OP_M:10,OP_MS:11,OP_MSG:12,OP_MSG_SPC:13,MSG_ARG:14,MSG_PAYLOAD:15,MSG_END:16,OP_H:17,OP_P:18,OP_PI:19,OP_PIN:20,OP_PING:21,OP_PO:22,OP_PON:23,OP_PONG:24,OP_I:25,OP_IN:26,OP_INF:27,OP_INFO:28,OP_INFO_SPC:29,INFO_ARG:30};yp1.cc={CR:13,E:69,e:101,F:70,f:102,G:71,g:103,H:72,h:104,I:73,i:105,K:75,k:107,M:77,m:109,MINUS:45,N:78,n:110,NL:10,O:79,o:111,P:80,p:112,PLUS:43,R:82,r:114,S:83,s:115,SPACE:32,TAB:9}});var B90=_((hp1)=>{Object.defineProperty(hp1,"__esModule",{value:!0});hp1.MsgHdrsImpl=void 0;hp1.canonicalMIMEHeaderKey=hd0;hp1.headers=Dm6;var gp1=lY(),LJ=Rw(),w90=dY();function hd0($){let N=!0,U=Array($.length);for(let F=0;F<$.length;F++){let w=$.charCodeAt(F);if(w===58||w<33||w>126)throw w90.InvalidArgumentError.format("header",`'${$[F]}' is not a valid character in a header name`);if(N&&97<=w&&w<=122)w-=32;else if(!N&&65<=w&&w<=90)w+=32;U[F]=w,N=w==45}return String.fromCharCode(...U)}function Dm6($=0,Z=""){if($===0&&Z!=="")throw w90.InvalidArgumentError.format("code","is required");else if($>0&&Z==="")throw w90.InvalidArgumentError.format("description","is required");return new Kb($,Z)}var gd0="NATS/1.0";class Kb{_code;headers;_description;constructor($=0,Z=""){this._code=$,this._description=Z,this.headers=new Map}[Symbol.iterator](){return this.headers.entries()}size(){return this.headers.size}equals($){if($&&this.headers.size===$.headers.size&&this._code===$._code){for(let[Z,X]of this.headers){let Q=$.values(Z);if(X.length!==Q.length)return!1;let Y=[...X].sort(),G=[...Q].sort();for(let J=0;J<Y.length;J++)if(Y[J]!==G[J])return!1}return!0}return!1}static decode($){let Z=new Kb,Q=gp1.TD.decode($).split(`\r
1337
1337
  `),Y=Q[0];if(Y!==gd0){let G=Y.replace(gd0,"").trim();if(G.length>0){if(Z._code=parseInt(G,10),isNaN(Z._code))Z._code=0;let J=Z._code.toString();G=G.replace(J,""),Z._description=G.trim()}}if(Q.length>=1)Q.slice(1).map((G)=>{if(G){let J=G.indexOf(":");if(J>-1){let K=G.slice(0,J),W=G.slice(J+1).trim();Z.append(K,W)}}});return Z}toString(){if(this.headers.size===0&&this._code===0)return"";let $=gd0;if(this._code>0&&this._description!=="")$+=` ${this._code} ${this._description}`;for(let[Z,X]of this.headers)for(let Q=0;Q<X.length;Q++)$=`${$}\r
1338
1338
  ${Z}: ${X[Q]}`;return`${$}\r
@@ -2726,7 +2726,7 @@ Do NOT require review (requiresReview = false) when the changes are low-risk, su
2726
2726
 
2727
2727
  When unsure between the two, lean toward NOT requiring review for small frontend-only diffs, and toward requiring it for anything backend or large.
2728
2728
 
2729
- Respond with the structured verdict and a short reason.`,c_$;var d_$=B(()=>{k4();mw();r81();T86=a81.object({requiresReview:a81.boolean().describe("true if the changes should go through pull-request review"),reason:a81.string().describe("One short sentence explaining the decision (max ~120 chars)")});c_$={requiresReview:!1,reason:""}});function M86($){if(!$||$.includes(".."))return!1;return q86.test($)}function m_$($){let Z=typeof $.__resolveType==="string"?$.__resolveType:null;if(!Z||!M86(Z))return null;let{__resolveType:X,...Q}=$;return{resolveType:Z,payload:Q}}function i_$($,Z){return`${$.replace(/\/+$/,"")}/deco/invoke/${Z}`}var q86;var n_$=B(()=>{q86=/^[\w./@-]+$/});function s81($){let Z;try{Z=new URL($)}catch{return null}if(!Z.hostname.endsWith(".localhost"))return null;let X=Z.host;return Z.hostname="127.0.0.1",{url:Z.toString(),hostHeader:X}}function p_$($,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 t_$($,Z,X,Q){if(!Q.connectionId)throw new ig("Push requires a connected GitHub account. Connect mcp-github for this project and restart the sandbox.");let G=$.organization?.id;if(!G)throw new ig(d7);await Rw({ctx:$,connectionId:Q.connectionId,organizationId:G,forceRefresh:!0,onLegacyMintError:(N)=>{let F=N instanceof Error?N.message:d7;throw new ig(F)}});let{cloneUrl:Y,gitUserName:J,gitUserEmail:W}=await Iw(Q.connectionId,Q.owner,Q.name,$.db,$.vault),K=Bj0($),H=await Z.proxyDaemonRequest(X,"/_sandbox/config",{method:"PUT",headers:new Headers({"content-type":"application/json"}),body:JSON.stringify({git:{repository:{cloneUrl:Y},identity:{userName:J,userEmail:W}},...K?{operator:K}:{}})});if(!H.ok){let N=await lw(H,k86).catch(()=>H.statusText);throw Error(`Failed to refresh sandbox git credentials (${H.status}): ${N}`)}}var k86=10485760,ig;var o_$=B(()=>{YN();d81();_i();rf();ig=class ig extends Error{constructor($){super($);this.name="GitPushAuthError"}}});function V86($){let Z=$.startsWith("thread:")?$.slice(7):$;if(!Z||Z.length>255||Z.includes("..")||Z.startsWith("/")||Z.endsWith("/")||Z.endsWith(".lock")||!S86.test(Z))throw Error(`Invalid branch name: ${$}`)}function lC($){return AbortSignal.any([$.req.raw.signal,AbortSignal.timeout(_86)])}function dC($){let{runner:Z}=$.get("vmClaim");if(!Z)return $.json({error:"No sandbox runner configured"},503);return Z}function e81($,Z){let Q=(Dj0.get($)??Promise.resolve()).catch(()=>{}).then(Z),G=Q.catch(()=>{});return Dj0.set($,G),G.finally(()=>{if(Dj0.get($)===G)Dj0.delete($)}),Q}async function fZ($,Z,X){let Q=dC($);if(Q instanceof Response)return Q;let{claimName:G,userId:Y,projectRef:J}=$.get("vmClaim"),W=X?.method??"POST",K=null,H=new Headers;if(X?.jsonBody!==void 0)K=X.jsonBody,H.set("content-type","application/json");else if(X?.forwardJsonBody)K=await $.req.text(),H.set("content-type","application/json");let N=X?.signal,F={method:W,headers:H,body:K,...N?{signal:N}:{}},U=async()=>{let w=await Q.proxyDaemonRequest(G,Z,F);if(X?.map404to410&&w.status===404){try{await w.body?.cancel()}catch{}if(await Q.adoptLiveClaim?.({userId:Y,projectRef:J},G))w=await Q.proxyDaemonRequest(G,Z,F);if(w.status===404){try{await w.body?.cancel()}catch{}return new Response(JSON.stringify({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."}),{status:410,headers:{"content-type":"application/json",...uG}})}}let O=await w.text(),D=X?.redactRepoDirUnlessDesktop&&Q.kind!=="user-desktop"?b86(O):O,L=w.headers.get("content-type")??"application/json";return new Response(D,{status:w.status,headers:{"content-type":L,...uG}})};try{if(N){let w=U();return w.catch(()=>{}),await Promise.race([w,new Promise((D,L)=>{if(N.aborted)return L(N.reason);N.addEventListener("abort",()=>L(N.reason),{once:!0})})])}return await U()}catch(w){let O=w instanceof Error?w.message:String(w);return $.json({error:`Daemon unreachable: ${O}`},502)}}function b86($){try{let Z=JSON.parse($);if(Z&&typeof Z==="object"&&!Array.isArray(Z)&&"repoDir"in Z)return JSON.stringify({...Z,repoDir:null})}catch{}return $}async function Lj0($,Z,X,Q="GET",G){let Y=await $.proxyDaemonRequest(Z,X,{method:Q,headers:new Headers,body:null});if(Y.status===404&&G){try{await Y.body?.cancel()}catch{}if(await $.adoptLiveClaim?.(G,Z))Y=await $.proxyDaemonRequest(Z,X,{method:Q,headers:new Headers,body:null})}if(Y.status===404){try{await Y.body?.cancel()}catch{}throw Error("SANDBOX_GONE")}let J=await Y.text();if(!Y.ok){let W=`Daemon error (${Y.status})`;try{W=JSON.parse(J).error??W}catch{}throw Error(W)}return JSON.parse(J)}function f86($){return s_$.includes($)}var S86,r_$=524288,C86=65536,_86=1e4,a_$=2000,v86,Dj0,uG,s_$,e_$=()=>{let $=new B1;return $.use("/:virtualMcpId/:branch/*",v86),$.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||!f86(X))return Z.json({error:`step must be one of: ${s_$.join(", ")}`},400);if(X==="start"){let Q=Z.get("vmClaim");if(Q.runner){let G=t(Z.var.studioContext),Y=iF0(Q.virtualMcpMetadata);try{await pF0({ctx:Z.var.studioContext,runner:Q.runner,handle:Q.claimName,orgId:G.id,userId:Q.callerUserId,entries:Y})}catch(J){let W=J instanceof Error?J.message:String(J);return Z.json({error:`Failed to push env to daemon: ${W}`},502)}}}return fZ(Z,`/_sandbox/setup/${X}`,{signal:Z.req.raw.signal,map404to410:!0})}),$.get("/:virtualMcpId/:branch/events",(Z)=>{let X=Z.get("vmClaim");if(!X.runner)return QF(Z,async(Q)=>{await Q.writeSSE({event:"phase",data:JSON.stringify({kind:"failed",reason:"unknown",message:"No sandbox runner configured on this studio instance."})})});return f_$(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(a_$)])})),$.post("/:virtualMcpId/:branch/git/status",(Z)=>fZ(Z,"/_sandbox/git/status",{map404to410:!0,signal:AbortSignal.any([Z.req.raw.signal,AbortSignal.timeout(a_$)])})),$.post("/:virtualMcpId/:branch/git/diff",(Z)=>fZ(Z,"/_sandbox/git/diff",{forwardJsonBody:!0,map404to410:!0})),$.post("/:virtualMcpId/:branch/git/publish",async(Z)=>{let X=dC(Z);if(X instanceof Response)return X;let{claimName:Q,virtualMcpMetadata:G,connectionIds:Y}=Z.get("vmClaim"),J=Z.var.studioContext;return e81(Q,async()=>{try{await m81(J,X,Q);let W=p_$(G,Y);if(W)await t_$(J,X,Q,W)}catch(W){if(W instanceof ig)return Z.json({error:W.message},403,uG);let K=W instanceof Error?W.message:String(W);return Z.json({error:K},502,uG)}return fZ(Z,"/_sandbox/git/publish",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/discard",(Z)=>{let{claimName:X}=Z.get("vmClaim");return e81(X,()=>fZ(Z,"/_sandbox/git/discard",{forwardJsonBody:!0,map404to410:!0}))}),$.post("/:virtualMcpId/:branch/git/rebase",async(Z)=>{let X=dC(Z);if(X instanceof Response)return X;let{claimName:Q}=Z.get("vmClaim"),G=Z.var.studioContext;return e81(Q,async()=>{try{await m81(G,X,Q)}catch(Y){let J=Y instanceof Error?Y.message:String(Y);return Z.json({error:J},502,uG)}return fZ(Z,"/_sandbox/git/rebase",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/suggest-commit",HZ({maxSize:r_$,onError:(Z)=>Z.json({error:"Payload too large"},413,uG)}),async(Z)=>{let X=dC(Z);if(X instanceof Response)return X;let{claimName:Q,userId:G,projectRef:Y}=Z.get("vmClaim"),J=Z.var.studioContext;try{let W=await Z.req.json().catch(()=>({})),K=W.status,H=W.diff,N=H!=null&&typeof H.diffs==="object"&&H.diffs!==null,[F,U]=p81(K)&&N?[K,H]:await Promise.all([Lj0(X,Q,"/_sandbox/git/status","GET",{userId:G,projectRef:Y}),Lj0(X,Q,"/_sandbox/git/diff","GET",{userId:G,projectRef:Y})]),w=await u_$(J,F,U);return Z.json(w,200,uG)}catch(W){let K=W instanceof Error?W.message:String(W);if(K==="SANDBOX_GONE")return Z.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,uG);return Z.json({error:K},502,uG)}}),$.post("/:virtualMcpId/:branch/git/judge-review",HZ({maxSize:r_$,onError:(Z)=>Z.json({error:"Payload too large"},413,uG)}),async(Z)=>{let X=dC(Z);if(X instanceof Response)return X;let{claimName:Q,userId:G,projectRef:Y}=Z.get("vmClaim"),J=Z.var.studioContext;try{let W=await Z.req.json().catch(()=>({})),K=W.status,H=W.diff,N=H!=null&&typeof H.diffs==="object"&&H.diffs!==null,[F,U]=p81(K)&&N?[K,H]:await Promise.all([Lj0(X,Q,"/_sandbox/git/status","GET",{userId:G,projectRef:Y}),Lj0(X,Q,"/_sandbox/git/diff","GET",{userId:G,projectRef:Y})]),w=await l_$(J,F,U,typeof W.language==="string"?W.language:void 0);return Z.json(w,200,uG)}catch(W){let K=W instanceof Error?W.message:String(W);if(K==="SANDBOX_GONE")return Z.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,uG);return Z.json({error:K},502,uG)}}),$.get("/:virtualMcpId/:branch/preview-fetch",async(Z)=>{let X=dC(Z);if(X instanceof Response)return X;let{claimName:Q}=Z.get("vmClaim"),G=Z.req.query("path");if(!G||!G.startsWith("/")||G.startsWith("//")||G.includes("..")||G.includes("\\"))return Z.json({error:"Path not allowed"},403);let Y;try{Y=await X.getPreviewUrl(Q)}catch{return Z.json({error:"Preview not available"},502)}if(!Y)return Z.json({error:"Preview not available"},502);let J=Y.replace(/\/+$/,""),W=s81(`${J}${G}`),K;try{K=await fetch(W?.url??`${J}${G}`,{...W?{headers:{host:W.hostHeader}}:{}})}catch{return Z.json({error:"Preview unreachable"},502)}let H;try{H=await K.text()}catch{return Z.json({error:"Preview unreachable"},502)}return new Response(H,{status:K.status,headers:{"content-type":K.headers.get("content-type")??"application/json"}})}),$.post("/:virtualMcpId/:branch/preview-invoke",HZ({maxSize:C86,onError:(Z)=>Z.json({error:"Payload too large"},413)}),async(Z)=>{let X=dC(Z);if(X instanceof Response)return X;let{claimName:Q}=Z.get("vmClaim"),G;try{G=await X.getPreviewUrl(Q)}catch{return Z.json({error:"Preview not available"},502)}if(!G)return Z.json({error:"Preview not available"},502);let Y;try{Y=await Z.req.json()}catch{return Z.json({error:"Invalid JSON body"},400)}if(!Y||typeof Y!=="object"||Array.isArray(Y))return Z.json({error:"Invalid JSON body"},400);let J=m_$(Y);if(!J)return Z.json({error:"Invalid or missing __resolveType"},400);let W=i_$(G,J.resolveType),K=s81(W),H;try{H=await fetch(K?.url??W,{method:"POST",headers:{"content-type":"application/json",...K?{host:K.hostHeader}:{}},body:JSON.stringify(J.payload),signal:AbortSignal.timeout(30000)})}catch{return Z.json({error:"Preview unreachable"},502)}let N;try{N=await H.text()}catch{return Z.json({error:"Preview unreachable"},502)}return new Response(N,{status:H.status,headers:{"content-type":H.headers.get("content-type")??"application/json"}})}),$};var $v$=B(()=>{y8();dO();mg();C_$();GN();v_$();D3();gw();b_$();x_$();Md0();Vi();r81();d_$();n_$();o_$();S86=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;v86=V_$(async($,Z)=>{let X=$.var.studioContext;try{$0(X)}catch{return $.json({error:"Unauthorized"},401)}let Q=W1(X);if(!Q)return $.json({error:"Unauthorized"},401);let G;try{G=t(X)}catch{return $.json({error:"Organization scope required"},403)}let Y=$.req.param("virtualMcpId"),J=$.req.param("branch");if(!Y||!J)return $.json({error:"virtualMcpId and branch are required"},400);try{V86(J)}catch(w){let O=w instanceof Error?w.message:String(w);return $.json({error:O},400)}let W=await X.storage.virtualMcps.findById(Y);if(!W||W.organization_id!==G.id)return $.json({error:"Virtual MCP not found"},404);let K=am({orgId:G.id,virtualMcpId:Y,branch:J}),H=await ON(X,J,Q),N=__$({userId:H,projectRef:K}),F=W.metadata??null,U;try{U=(await uX(X,{userId:H,branch:J,virtualMcpMetadata:F})).provider}catch{U=null}if(!U)return $.json({error:"No sandbox runner found"},404);return $.set("vmClaim",{claimName:N,callerUserId:Q,runner:U,virtualMcpId:Y,branch:J,userId:H,projectRef:K,virtualMcpMetadata:F,connectionIds:W.connections?.map((w)=>w.connection_id)??[]}),Z()});Dj0=new Map;uG={"Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache"};s_$=["clone","install","start"]});var Zv$=($)=>{let Z=new B1;if(Z.use("*",vC),Z.route("/",_E0()),Z.route("/",OS$()),Z.route("/",L_$()),Z.route("/",O_$()),Z.route("/",Uj0()),Z.route("/tools",R_$()),Z.route("/",P_$()),Z.route("/",rC$({kvStorage:$.kvStorage})),Z.route("/",tC$()),Z.route("/fs",W_$({getConnection:$.getNatsConnection})),Z.route("/sandbox",e_$()),Z.route("/",F_$()),Z.route("/deco-sites",bE0()),Z.route("/sso",IE0()),Z.route("/",wj0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",JS$()),$.mountDevAssets)Z.route("/dev-assets",fE0({orgFromPath:!0}));return Z.use("/mcp/:connectionId?",$.mcpAuth),Z.use("/mcp/:connectionId/ui-resource",$.mcpAuth),Z.use("/mcp/gateway/:virtualMcpId?",$.mcpAuth),Z.use("/mcp/virtual-mcp/:virtualMcpId?",$.mcpAuth),Z.use("/mcp/self",$.mcpAuth),Z.use("/mcp/task-run/:threadId",$.mcpAuth),Z.route("/",ZM$()),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",H_$()),Z.route("/mcp",tw0()),Z.route("/mcp/self",Fj0()),Z.route("/mcp",aw0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var Xv$=B(()=>{y8();N$1();WS$();B$1();xE0();Jo();K$1();oC$();aC$();K_$();En();e11();sw0();x81();N_$();U_$();B_$();E_$();A_$();g81();I_$();h81();ow0();$v$()});function y86($){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 g86($,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(x86)});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 x86=1e4,h86=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},Qv$=()=>{let $=new B1;return $.use("*",h86),$.get("/",async(Z)=>{let X=c0(),Q=X.decoSupabaseUrl,G=X.decoSupabaseServiceKey;if(!Q||!G)return Z.json({apps:[]});try{let Y=await g86(Q,G);return Z.json({apps:y86(Y)})}catch(Y){return console.error("[deco-apps] GET error:",Y),Z.json({error:"Failed to fetch apps"},502)}}),$};var Gv$=B(()=>{y8();S$()});import{z as M1}from"zod";function hK($,Z="invalid_request_error",X=null,Q=null){return{error:{message:$,type:Z,param:X,code:Q}}}function o86($){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 r86($,Z,X){try{return JSON.parse($)}catch{throw new Wv$(`Invalid JSON in tool call arguments for function '${X}' (tool_call_id: ${Z}): ${$}`)}}function a86($){let Z={};for(let X of $)if(X.role==="assistant"&&X.tool_calls)for(let Q of X.tool_calls)Z[Q.id]=Q.function.name;return $.map((X)=>{switch(X.role){case"system":return{role:"system",content:X.content};case"user":if(typeof X.content==="string")return{role:"user",content:X.content};return{role:"user",content:X.content.map((G)=>{if(G.type==="text")return{type:"text",text:G.text};return{type:"image",image:G.image_url.url}})};case"assistant":if(X.tool_calls&&X.tool_calls.length>0)return{role:"assistant",content:X.tool_calls.map((G)=>({type:"tool-call",toolCallId:G.id,toolName:G.function.name,input:r86(G.function.arguments,G.id,G.function.name)}))};return{role:"assistant",content:X.content??""};case"tool":let Q=Z[X.tool_call_id]??"unknown";return{role:"tool",content:[{type:"tool-result",toolCallId:X.tool_call_id,toolName:Q,output:{type:"text",value:X.content}}]}}})}function s86($){let Z=$.map((X)=>{let Q=X.function.parameters?zG(X.function.parameters):zG({type:"object",properties:{}});return[X.function.name,_$({description:X.function.description,inputSchema:Q})]});return Object.fromEntries(Z)}function e86($){if(!$)return;return{openai:{response_format:$}}}function $46(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function Yv$($,Z,X,Q,G,Y){let J={model:$,messages:Z,tools:X,temperature:Q.temperature,maxTokens:Q.max_tokens,topP:Q.top_p,frequencyPenalty:Q.frequency_penalty,presencePenalty:Q.presence_penalty,stopSequences:Q.stop?Array.isArray(Q.stop)?Q.stop:[Q.stop]:void 0,abortSignal:Y};return G?{...J,providerOptions:G}:J}function Jv$($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var u86=256,c86,l86,d86,m86,i86,n86,p86,t86,Wv$,Kv$,Hv$;var Nv$=B(()=>{k4();y8();mg();xN();c86=M1.object({type:M1.literal("function"),function:M1.object({name:M1.string(),description:M1.string().optional(),parameters:M1.record(M1.string(),M1.unknown()).optional()})}),l86=M1.object({id:M1.string(),type:M1.literal("function"),function:M1.object({name:M1.string(),arguments:M1.string()})}),d86=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(l86).optional()}),M1.object({role:M1.literal("tool"),content:M1.string(),tool_call_id:M1.string()})]),m86=M1.object({type:M1.literal("text")}),i86=M1.object({type:M1.literal("json_object")}),n86=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()})}),p86=M1.union([m86,i86,n86]),t86=M1.object({model:M1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:M1.array(d86),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(c86).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:p86.optional(),user:M1.string().optional()});Wv$=class Wv$ extends Error{constructor($){super($);this.name="MessageConversionError"}};Kv$=new B1;Kv$.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),X=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(hK("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(hK("Organization context is required. Ensure your API key has organization metadata.","invalid_request_error","organization"),400);if((Z.organization.slug??Z.organization.id)!==X)return $.json(hK("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Q=await $.req.json(),G=t86.safeParse(Q);if(!G.success){let L=G.error.issues[0]??{message:"Invalid request",path:[]};return $.json(hK(`Invalid request: ${L.message}`,"invalid_request_error",L.path.length>0?L.path.join("."):null),400)}let Y=G.data,J=o86(Y.model);if(!J)return $.json(hK("Invalid model format. Expected 'model_id' or 'credential_id:model_id' (e.g., 'claude-sonnet-4-6' or 'key_abc123:claude-sonnet-4-6')","invalid_request_error","model"),400);let{credentialId:W}=J,{modelId:K}=J;if(!W){let E=(await Z.storage.aiProviderKeys.list({organizationId:Z.organization.id})).find((j)=>XD(j.providerId));if(!E)return $.json(hK("No AI provider credentials configured for this organization. Add a credential in settings or specify one explicitly via 'credential_id:model_id'.","invalid_request_error","model"),400);W=E.id}let H;try{H=await Z.aiProviders.activate(W,Z.organization.id)}catch{return $.json(hK(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let N=H.aiSdk.languageModel(K),F=a86(Y.messages),U=Y.tools?s86(Y.tools):void 0,w=e86(Y.response_format),O=$46(),D=Math.floor(Date.now()/1000);if(Y.stream)return QF($,async(L)=>{let E=Yv$(N,F,U,Y,w,$.req.raw.signal);try{let j=Aw(E),z=!1,A=0,P="",M=async()=>{if(P.length===0)return;let k=P;P="",await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:D,model:Y.model,choices:[{index:0,delta:{content:k},finish_reason:null}]})})};for await(let k of j.fullStream){if(!z&&(k.type==="text-delta"||k.type==="tool-call"))await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:D,model:Y.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),z=!0;if(k.type==="text-delta"){if(P+=k.text,P.length>=u86)await M()}else if(k.type==="tool-call"){await M();let q=A++;await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:D,model:Y.model,choices:[{index:0,delta:{tool_calls:[{index:q,id:k.toolCallId,type:"function",function:{name:k.toolName,arguments:JSON.stringify(k.input)}}]},finish_reason:null}]})})}else if(k.type==="finish")await M(),await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:D,model:Y.model,choices:[{index:0,delta:{},finish_reason:Jv$(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=Yv$(N,F,U,Y,w,$.req.raw.signal),E=await zw(L),j={role:"assistant",content:E.text||null};if(E.toolCalls&&E.toolCalls.length>0)j.tool_calls=E.toolCalls.map((z)=>({id:z.toolCallId,type:"function",function:{name:z.toolName,arguments:JSON.stringify("input"in z?z.input:{})}})),j.content=null;return $.json({id:O,object:"chat.completion",created:D,model:Y.model,choices:[{index:0,message:j,finish_reason:Jv$(E.finishReason)}],usage:{prompt_tokens:E.usage?.inputTokens??0,completion_tokens:E.usage?.outputTokens??0,total_tokens:E.usage?.totalTokens??0}})}}catch(Q){let G=Q;if(G.name==="AbortError")return $.json(hK("Request aborted","invalid_request_error"),400);if(G.name==="MessageConversionError")return $.json(hK(G.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",G.message,G.stack),$.json(hK(G.message,"server_error"),500)}});Hv$=Kv$});var Uv$;var Fv$=B(()=>{Uv$={name:"decocms",version:"4.199.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 Q46(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??X46}}var wv$,X46="https://ph.studio.decocms.com",Ov$;var Bv$=B(()=>{y8();bx0();qV();jZ();S$();t11();Fv$();wv$=new B1;wv$.get("/",($)=>{let Z={version:Uv$.version,theme:sh1(),...nD().logo&&{logo:nD().logo},...HK()&&{internalUrl:qq1()},...c0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!c0().firecrawlApiKey,auth:Pk$(),posthog:Q46(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:!HK()&&c0().sandboxProviderKind==="agent-sandbox"}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});Ov$=wv$});function ng($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function $41($){return(ng($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((X)=>X.charAt(0).toUpperCase()+X.slice(1)).join(" ")}function Lv$($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(ng($))}&sz=${Z}`}function Dv$($,Z){let X=$.trim();if(X.length<=Z)return X;let Q=X.slice(0,Z-1),G=Q.lastIndexOf(" ");return`${(G>Z*0.6?Q.slice(0,G):Q).trimEnd()}\u2026`}function Ev$($){let{brand:Z,domain:X,score:Q,verdict:G}=$,Y=typeof Q==="number"?`${Z} commerce report \u2014 ${Math.round(Q)}/100 \xB7 decocms`:`${Z} commerce report \xB7 decocms`,J=`See the full ${Z} scorecard \u2014 SEO, performance, conversion & AEO signals scored by decocms.`,W=G?.trim()?Dv$(`${G.trim().replace(/\s+/g," ")} \u2014 ${J}`,200):Dv$(`How does ${X} really perform? ${J}`,200);return{title:Y,description:W}}import{z as l0}from"zod";var mC,G46,Y46,J46,W46,jv$;var zv$=B(()=>{mC=l0.enum(["good","bad","neutral"]),G46=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 $})),Y46=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(G46)),J46={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()},W46=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(Y46).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)})]),jv$=l0.object({...J46,template:W46})});function Ej0($){let Z=[],X=[...$.sections].sort((G,Y)=>G.position-Y.position).map((G)=>{let Y=jv$.safeParse(G.props);if(Y.success)return Y.data;let J=Y.error.issues[0];return Z.push({section_type:G.section_type,position:G.position,reason:J?`${J.path.join(".")||"(root)"}: ${J.message}`:"contract violation"}),null}).filter((G)=>G!==null),Q=X.filter((G)=>G.template.template!=="cover"&&G.template.template!=="cta").map((G)=>({key:G.key,title:G.title}));return{deck:{meta:{...$.meta,scores:$.summary?.scores,scannedAt:$.scanned_at,toc:Q},slides:X},drops:Z}}var Z41=B(()=>{zv$()});import{join as Pv$}from"path";async function H46($){try{let Z=await fetch(`${vW({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(K46)});if(!Z.ok)return null;let X=await Z.json(),{deck:Q}=Ej0(X);if(!Q.slides.length)return null;let G=Q.slides.find((W)=>W.template.template==="cover"),Y=G?.template,J=Y&&Y.template==="cover"?Y:void 0;return{brand:Q.meta.brand?.trim()||$41($),score:Q.meta.scores?.cover??J?.score?.value,verdict:G?.annotation?.trim()||G?.headline?.trim()||void 0}}catch{return null}}function cG($){return $.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;")}function N46($,Z){let X=ng($),Q=Z?.brand?.trim()||$41(X),G=Lv$(X,128),J=`${(c0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(X)}`,{title:W,description:K}=Ev$({brand:Q,domain:X,score:Z?.score,verdict:Z?.verdict}),H=`${J}/og.png`,N=`${Q} commerce report by decocms`;return[`<title>${cG(W)}</title>`,`<meta name="description" content="${cG(K)}" />`,'<meta name="robots" content="noindex, follow" />','<meta property="og:type" content="website" />','<meta property="og:site_name" content="decocms" />',`<meta property="og:title" content="${cG(W)}" />`,`<meta property="og:description" content="${cG(K)}" />`,`<meta property="og:url" content="${cG(J)}" />`,`<meta property="og:image" content="${cG(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${cG(N)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${cG(W)}" />`,`<meta name="twitter:description" content="${cG(K)}" />`,`<meta name="twitter:image" content="${cG(H)}" />`,`<meta name="twitter:image:alt" content="${cG(N)}" />`,`<link rel="canonical" href="${cG(J)}" />`,`<link rel="icon" href="${cG(G)}" sizes="any" />`].join(`
2729
+ Respond with the structured verdict and a short reason.`,c_$;var d_$=B(()=>{k4();mw();r81();T86=a81.object({requiresReview:a81.boolean().describe("true if the changes should go through pull-request review"),reason:a81.string().describe("One short sentence explaining the decision (max ~120 chars)")});c_$={requiresReview:!1,reason:""}});function M86($){if(!$||$.includes(".."))return!1;return q86.test($)}function m_$($){let Z=typeof $.__resolveType==="string"?$.__resolveType:null;if(!Z||!M86(Z))return null;let{__resolveType:X,...Q}=$;return{resolveType:Z,payload:Q}}function i_$($,Z){return`${$.replace(/\/+$/,"")}/deco/invoke/${Z}`}var q86;var n_$=B(()=>{q86=/^[\w./@-]+$/});function s81($){let Z;try{Z=new URL($)}catch{return null}if(!Z.hostname.endsWith(".localhost"))return null;let X=Z.host;return Z.hostname="127.0.0.1",{url:Z.toString(),hostHeader:X}}function p_$($,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 t_$($,Z,X,Q){if(!Q.connectionId)throw new ig("Push requires a connected GitHub account. Connect mcp-github for this project and restart the sandbox.");let G=$.organization?.id;if(!G)throw new ig(d7);await Rw({ctx:$,connectionId:Q.connectionId,organizationId:G,forceRefresh:!0,onLegacyMintError:(N)=>{let F=N instanceof Error?N.message:d7;throw new ig(F)}});let{cloneUrl:Y,gitUserName:J,gitUserEmail:W}=await Iw(Q.connectionId,Q.owner,Q.name,$.db,$.vault),K=Bj0($),H=await Z.proxyDaemonRequest(X,"/_sandbox/config",{method:"PUT",headers:new Headers({"content-type":"application/json"}),body:JSON.stringify({git:{repository:{cloneUrl:Y},identity:{userName:J,userEmail:W}},...K?{operator:K}:{}})});if(!H.ok){let N=await lw(H,k86).catch(()=>H.statusText);throw Error(`Failed to refresh sandbox git credentials (${H.status}): ${N}`)}}var k86=10485760,ig;var o_$=B(()=>{YN();d81();_i();rf();ig=class ig extends Error{constructor($){super($);this.name="GitPushAuthError"}}});function V86($){let Z=$.startsWith("thread:")?$.slice(7):$;if(!Z||Z.length>255||Z.includes("..")||Z.startsWith("/")||Z.endsWith("/")||Z.endsWith(".lock")||!S86.test(Z))throw Error(`Invalid branch name: ${$}`)}function lC($){return AbortSignal.any([$.req.raw.signal,AbortSignal.timeout(_86)])}function dC($){let{runner:Z}=$.get("vmClaim");if(!Z)return $.json({error:"No sandbox runner configured"},503);return Z}function e81($,Z){let Q=(Dj0.get($)??Promise.resolve()).catch(()=>{}).then(Z),G=Q.catch(()=>{});return Dj0.set($,G),G.finally(()=>{if(Dj0.get($)===G)Dj0.delete($)}),Q}async function fZ($,Z,X){let Q=dC($);if(Q instanceof Response)return Q;let{claimName:G,userId:Y,projectRef:J}=$.get("vmClaim"),W=X?.method??"POST",K=null,H=new Headers;if(X?.jsonBody!==void 0)K=X.jsonBody,H.set("content-type","application/json");else if(X?.forwardJsonBody)K=await $.req.text(),H.set("content-type","application/json");let N=X?.signal,F={method:W,headers:H,body:K,...N?{signal:N}:{}},U=async()=>{let w=await Q.proxyDaemonRequest(G,Z,F);if(X?.map404to410&&w.status===404){try{await w.body?.cancel()}catch{}if(await Q.adoptLiveClaim?.({userId:Y,projectRef:J},G))w=await Q.proxyDaemonRequest(G,Z,F);if(w.status===404){try{await w.body?.cancel()}catch{}return new Response(JSON.stringify({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."}),{status:410,headers:{"content-type":"application/json",...uG}})}}let O=await w.text(),D=X?.redactRepoDirUnlessDesktop&&Q.kind!=="user-desktop"?b86(O):O,L=w.headers.get("content-type")??"application/json";return new Response(D,{status:w.status,headers:{"content-type":L,...uG}})};try{if(N){let w=U();return w.catch(()=>{}),await Promise.race([w,new Promise((D,L)=>{if(N.aborted)return L(N.reason);N.addEventListener("abort",()=>L(N.reason),{once:!0})})])}return await U()}catch(w){let O=w instanceof Error?w.message:String(w);return $.json({error:`Daemon unreachable: ${O}`},502)}}function b86($){try{let Z=JSON.parse($);if(Z&&typeof Z==="object"&&!Array.isArray(Z)&&"repoDir"in Z)return JSON.stringify({...Z,repoDir:null})}catch{}return $}async function Lj0($,Z,X,Q="GET",G){let Y=await $.proxyDaemonRequest(Z,X,{method:Q,headers:new Headers,body:null});if(Y.status===404&&G){try{await Y.body?.cancel()}catch{}if(await $.adoptLiveClaim?.(G,Z))Y=await $.proxyDaemonRequest(Z,X,{method:Q,headers:new Headers,body:null})}if(Y.status===404){try{await Y.body?.cancel()}catch{}throw Error("SANDBOX_GONE")}let J=await Y.text();if(!Y.ok){let W=`Daemon error (${Y.status})`;try{W=JSON.parse(J).error??W}catch{}throw Error(W)}return JSON.parse(J)}function f86($){return s_$.includes($)}var S86,r_$=524288,C86=65536,_86=1e4,a_$=2000,v86,Dj0,uG,s_$,e_$=()=>{let $=new B1;return $.use("/:virtualMcpId/:branch/*",v86),$.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||!f86(X))return Z.json({error:`step must be one of: ${s_$.join(", ")}`},400);if(X==="start"){let Q=Z.get("vmClaim");if(Q.runner){let G=t(Z.var.studioContext),Y=iF0(Q.virtualMcpMetadata);try{await pF0({ctx:Z.var.studioContext,runner:Q.runner,handle:Q.claimName,orgId:G.id,userId:Q.callerUserId,entries:Y})}catch(J){let W=J instanceof Error?J.message:String(J);return Z.json({error:`Failed to push env to daemon: ${W}`},502)}}}return fZ(Z,`/_sandbox/setup/${X}`,{signal:Z.req.raw.signal,map404to410:!0})}),$.get("/:virtualMcpId/:branch/events",(Z)=>{let X=Z.get("vmClaim");if(!X.runner)return QF(Z,async(Q)=>{await Q.writeSSE({event:"phase",data:JSON.stringify({kind:"failed",reason:"unknown",message:"No sandbox runner configured on this studio instance."})})});return f_$(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(a_$)])})),$.post("/:virtualMcpId/:branch/git/status",(Z)=>fZ(Z,"/_sandbox/git/status",{map404to410:!0,signal:AbortSignal.any([Z.req.raw.signal,AbortSignal.timeout(a_$)])})),$.post("/:virtualMcpId/:branch/git/diff",(Z)=>fZ(Z,"/_sandbox/git/diff",{forwardJsonBody:!0,map404to410:!0})),$.post("/:virtualMcpId/:branch/git/publish",async(Z)=>{let X=dC(Z);if(X instanceof Response)return X;let{claimName:Q,virtualMcpMetadata:G,connectionIds:Y}=Z.get("vmClaim"),J=Z.var.studioContext;return e81(Q,async()=>{try{await m81(J,X,Q);let W=p_$(G,Y);if(W)await t_$(J,X,Q,W)}catch(W){if(W instanceof ig)return Z.json({error:W.message},403,uG);let K=W instanceof Error?W.message:String(W);return Z.json({error:K},502,uG)}return fZ(Z,"/_sandbox/git/publish",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/discard",(Z)=>{let{claimName:X}=Z.get("vmClaim");return e81(X,()=>fZ(Z,"/_sandbox/git/discard",{forwardJsonBody:!0,map404to410:!0}))}),$.post("/:virtualMcpId/:branch/git/rebase",async(Z)=>{let X=dC(Z);if(X instanceof Response)return X;let{claimName:Q}=Z.get("vmClaim"),G=Z.var.studioContext;return e81(Q,async()=>{try{await m81(G,X,Q)}catch(Y){let J=Y instanceof Error?Y.message:String(Y);return Z.json({error:J},502,uG)}return fZ(Z,"/_sandbox/git/rebase",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/suggest-commit",HZ({maxSize:r_$,onError:(Z)=>Z.json({error:"Payload too large"},413,uG)}),async(Z)=>{let X=dC(Z);if(X instanceof Response)return X;let{claimName:Q,userId:G,projectRef:Y}=Z.get("vmClaim"),J=Z.var.studioContext;try{let W=await Z.req.json().catch(()=>({})),K=W.status,H=W.diff,N=H!=null&&typeof H.diffs==="object"&&H.diffs!==null,[F,U]=p81(K)&&N?[K,H]:await Promise.all([Lj0(X,Q,"/_sandbox/git/status","GET",{userId:G,projectRef:Y}),Lj0(X,Q,"/_sandbox/git/diff","GET",{userId:G,projectRef:Y})]),w=await u_$(J,F,U);return Z.json(w,200,uG)}catch(W){let K=W instanceof Error?W.message:String(W);if(K==="SANDBOX_GONE")return Z.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,uG);return Z.json({error:K},502,uG)}}),$.post("/:virtualMcpId/:branch/git/judge-review",HZ({maxSize:r_$,onError:(Z)=>Z.json({error:"Payload too large"},413,uG)}),async(Z)=>{let X=dC(Z);if(X instanceof Response)return X;let{claimName:Q,userId:G,projectRef:Y}=Z.get("vmClaim"),J=Z.var.studioContext;try{let W=await Z.req.json().catch(()=>({})),K=W.status,H=W.diff,N=H!=null&&typeof H.diffs==="object"&&H.diffs!==null,[F,U]=p81(K)&&N?[K,H]:await Promise.all([Lj0(X,Q,"/_sandbox/git/status","GET",{userId:G,projectRef:Y}),Lj0(X,Q,"/_sandbox/git/diff","GET",{userId:G,projectRef:Y})]),w=await l_$(J,F,U,typeof W.language==="string"?W.language:void 0);return Z.json(w,200,uG)}catch(W){let K=W instanceof Error?W.message:String(W);if(K==="SANDBOX_GONE")return Z.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,uG);return Z.json({error:K},502,uG)}}),$.get("/:virtualMcpId/:branch/preview-fetch",async(Z)=>{let X=dC(Z);if(X instanceof Response)return X;let{claimName:Q}=Z.get("vmClaim"),G=Z.req.query("path");if(!G||!G.startsWith("/")||G.startsWith("//")||G.includes("..")||G.includes("\\"))return Z.json({error:"Path not allowed"},403);let Y;try{Y=await X.getPreviewUrl(Q)}catch{return Z.json({error:"Preview not available"},502)}if(!Y)return Z.json({error:"Preview not available"},502);let J=Y.replace(/\/+$/,""),W=s81(`${J}${G}`),K;try{K=await fetch(W?.url??`${J}${G}`,{...W?{headers:{host:W.hostHeader}}:{}})}catch{return Z.json({error:"Preview unreachable"},502)}let H;try{H=await K.text()}catch{return Z.json({error:"Preview unreachable"},502)}return new Response(H,{status:K.status,headers:{"content-type":K.headers.get("content-type")??"application/json"}})}),$.post("/:virtualMcpId/:branch/preview-invoke",HZ({maxSize:C86,onError:(Z)=>Z.json({error:"Payload too large"},413)}),async(Z)=>{let X=dC(Z);if(X instanceof Response)return X;let{claimName:Q}=Z.get("vmClaim"),G;try{G=await X.getPreviewUrl(Q)}catch{return Z.json({error:"Preview not available"},502)}if(!G)return Z.json({error:"Preview not available"},502);let Y;try{Y=await Z.req.json()}catch{return Z.json({error:"Invalid JSON body"},400)}if(!Y||typeof Y!=="object"||Array.isArray(Y))return Z.json({error:"Invalid JSON body"},400);let J=m_$(Y);if(!J)return Z.json({error:"Invalid or missing __resolveType"},400);let W=i_$(G,J.resolveType),K=s81(W),H;try{H=await fetch(K?.url??W,{method:"POST",headers:{"content-type":"application/json",...K?{host:K.hostHeader}:{}},body:JSON.stringify(J.payload),signal:AbortSignal.timeout(30000)})}catch{return Z.json({error:"Preview unreachable"},502)}let N;try{N=await H.text()}catch{return Z.json({error:"Preview unreachable"},502)}return new Response(N,{status:H.status,headers:{"content-type":H.headers.get("content-type")??"application/json"}})}),$};var $v$=B(()=>{y8();dO();mg();C_$();GN();v_$();D3();gw();b_$();x_$();Md0();Vi();r81();d_$();n_$();o_$();S86=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;v86=V_$(async($,Z)=>{let X=$.var.studioContext;try{$0(X)}catch{return $.json({error:"Unauthorized"},401)}let Q=W1(X);if(!Q)return $.json({error:"Unauthorized"},401);let G;try{G=t(X)}catch{return $.json({error:"Organization scope required"},403)}let Y=$.req.param("virtualMcpId"),J=$.req.param("branch");if(!Y||!J)return $.json({error:"virtualMcpId and branch are required"},400);try{V86(J)}catch(w){let O=w instanceof Error?w.message:String(w);return $.json({error:O},400)}let W=await X.storage.virtualMcps.findById(Y);if(!W||W.organization_id!==G.id)return $.json({error:"Virtual MCP not found"},404);let K=am({orgId:G.id,virtualMcpId:Y,branch:J}),H=await ON(X,J,Q),N=__$({userId:H,projectRef:K}),F=W.metadata??null,U;try{U=(await uX(X,{userId:H,branch:J,virtualMcpMetadata:F})).provider}catch{U=null}if(!U)return $.json({error:"No sandbox runner found"},404);return $.set("vmClaim",{claimName:N,callerUserId:Q,runner:U,virtualMcpId:Y,branch:J,userId:H,projectRef:K,virtualMcpMetadata:F,connectionIds:W.connections?.map((w)=>w.connection_id)??[]}),Z()});Dj0=new Map;uG={"Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache"};s_$=["clone","install","start"]});var Zv$=($)=>{let Z=new B1;if(Z.use("*",vC),Z.route("/",_E0()),Z.route("/",OS$()),Z.route("/",L_$()),Z.route("/",O_$()),Z.route("/",Uj0()),Z.route("/tools",R_$()),Z.route("/",P_$()),Z.route("/",rC$({kvStorage:$.kvStorage})),Z.route("/",tC$()),Z.route("/fs",W_$({getConnection:$.getNatsConnection})),Z.route("/sandbox",e_$()),Z.route("/",F_$()),Z.route("/deco-sites",bE0()),Z.route("/sso",IE0()),Z.route("/",wj0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",JS$()),$.mountDevAssets)Z.route("/dev-assets",fE0({orgFromPath:!0}));return Z.use("/mcp/:connectionId?",$.mcpAuth),Z.use("/mcp/:connectionId/ui-resource",$.mcpAuth),Z.use("/mcp/gateway/:virtualMcpId?",$.mcpAuth),Z.use("/mcp/virtual-mcp/:virtualMcpId?",$.mcpAuth),Z.use("/mcp/self",$.mcpAuth),Z.use("/mcp/task-run/:threadId",$.mcpAuth),Z.route("/",ZM$()),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",H_$()),Z.route("/mcp",tw0()),Z.route("/mcp/self",Fj0()),Z.route("/mcp",aw0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var Xv$=B(()=>{y8();N$1();WS$();B$1();xE0();Jo();K$1();oC$();aC$();K_$();En();e11();sw0();x81();N_$();U_$();B_$();E_$();A_$();g81();I_$();h81();ow0();$v$()});function y86($){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 g86($,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(x86)});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 x86=1e4,h86=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},Qv$=()=>{let $=new B1;return $.use("*",h86),$.get("/",async(Z)=>{let X=c0(),Q=X.decoSupabaseUrl,G=X.decoSupabaseServiceKey;if(!Q||!G)return Z.json({apps:[]});try{let Y=await g86(Q,G);return Z.json({apps:y86(Y)})}catch(Y){return console.error("[deco-apps] GET error:",Y),Z.json({error:"Failed to fetch apps"},502)}}),$};var Gv$=B(()=>{y8();S$()});import{z as M1}from"zod";function hK($,Z="invalid_request_error",X=null,Q=null){return{error:{message:$,type:Z,param:X,code:Q}}}function o86($){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 r86($,Z,X){try{return JSON.parse($)}catch{throw new Wv$(`Invalid JSON in tool call arguments for function '${X}' (tool_call_id: ${Z}): ${$}`)}}function a86($){let Z={};for(let X of $)if(X.role==="assistant"&&X.tool_calls)for(let Q of X.tool_calls)Z[Q.id]=Q.function.name;return $.map((X)=>{switch(X.role){case"system":return{role:"system",content:X.content};case"user":if(typeof X.content==="string")return{role:"user",content:X.content};return{role:"user",content:X.content.map((G)=>{if(G.type==="text")return{type:"text",text:G.text};return{type:"image",image:G.image_url.url}})};case"assistant":if(X.tool_calls&&X.tool_calls.length>0)return{role:"assistant",content:X.tool_calls.map((G)=>({type:"tool-call",toolCallId:G.id,toolName:G.function.name,input:r86(G.function.arguments,G.id,G.function.name)}))};return{role:"assistant",content:X.content??""};case"tool":let Q=Z[X.tool_call_id]??"unknown";return{role:"tool",content:[{type:"tool-result",toolCallId:X.tool_call_id,toolName:Q,output:{type:"text",value:X.content}}]}}})}function s86($){let Z=$.map((X)=>{let Q=X.function.parameters?zG(X.function.parameters):zG({type:"object",properties:{}});return[X.function.name,_$({description:X.function.description,inputSchema:Q})]});return Object.fromEntries(Z)}function e86($){if(!$)return;return{openai:{response_format:$}}}function $46(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function Yv$($,Z,X,Q,G,Y){let J={model:$,messages:Z,tools:X,temperature:Q.temperature,maxTokens:Q.max_tokens,topP:Q.top_p,frequencyPenalty:Q.frequency_penalty,presencePenalty:Q.presence_penalty,stopSequences:Q.stop?Array.isArray(Q.stop)?Q.stop:[Q.stop]:void 0,abortSignal:Y};return G?{...J,providerOptions:G}:J}function Jv$($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var u86=256,c86,l86,d86,m86,i86,n86,p86,t86,Wv$,Kv$,Hv$;var Nv$=B(()=>{k4();y8();mg();xN();c86=M1.object({type:M1.literal("function"),function:M1.object({name:M1.string(),description:M1.string().optional(),parameters:M1.record(M1.string(),M1.unknown()).optional()})}),l86=M1.object({id:M1.string(),type:M1.literal("function"),function:M1.object({name:M1.string(),arguments:M1.string()})}),d86=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(l86).optional()}),M1.object({role:M1.literal("tool"),content:M1.string(),tool_call_id:M1.string()})]),m86=M1.object({type:M1.literal("text")}),i86=M1.object({type:M1.literal("json_object")}),n86=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()})}),p86=M1.union([m86,i86,n86]),t86=M1.object({model:M1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:M1.array(d86),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(c86).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:p86.optional(),user:M1.string().optional()});Wv$=class Wv$ extends Error{constructor($){super($);this.name="MessageConversionError"}};Kv$=new B1;Kv$.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),X=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(hK("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(hK("Organization context is required. Ensure your API key has organization metadata.","invalid_request_error","organization"),400);if((Z.organization.slug??Z.organization.id)!==X)return $.json(hK("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Q=await $.req.json(),G=t86.safeParse(Q);if(!G.success){let L=G.error.issues[0]??{message:"Invalid request",path:[]};return $.json(hK(`Invalid request: ${L.message}`,"invalid_request_error",L.path.length>0?L.path.join("."):null),400)}let Y=G.data,J=o86(Y.model);if(!J)return $.json(hK("Invalid model format. Expected 'model_id' or 'credential_id:model_id' (e.g., 'claude-sonnet-4-6' or 'key_abc123:claude-sonnet-4-6')","invalid_request_error","model"),400);let{credentialId:W}=J,{modelId:K}=J;if(!W){let E=(await Z.storage.aiProviderKeys.list({organizationId:Z.organization.id})).find((j)=>XD(j.providerId));if(!E)return $.json(hK("No AI provider credentials configured for this organization. Add a credential in settings or specify one explicitly via 'credential_id:model_id'.","invalid_request_error","model"),400);W=E.id}let H;try{H=await Z.aiProviders.activate(W,Z.organization.id)}catch{return $.json(hK(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let N=H.aiSdk.languageModel(K),F=a86(Y.messages),U=Y.tools?s86(Y.tools):void 0,w=e86(Y.response_format),O=$46(),D=Math.floor(Date.now()/1000);if(Y.stream)return QF($,async(L)=>{let E=Yv$(N,F,U,Y,w,$.req.raw.signal);try{let j=Aw(E),z=!1,A=0,P="",M=async()=>{if(P.length===0)return;let k=P;P="",await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:D,model:Y.model,choices:[{index:0,delta:{content:k},finish_reason:null}]})})};for await(let k of j.fullStream){if(!z&&(k.type==="text-delta"||k.type==="tool-call"))await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:D,model:Y.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),z=!0;if(k.type==="text-delta"){if(P+=k.text,P.length>=u86)await M()}else if(k.type==="tool-call"){await M();let q=A++;await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:D,model:Y.model,choices:[{index:0,delta:{tool_calls:[{index:q,id:k.toolCallId,type:"function",function:{name:k.toolName,arguments:JSON.stringify(k.input)}}]},finish_reason:null}]})})}else if(k.type==="finish")await M(),await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:D,model:Y.model,choices:[{index:0,delta:{},finish_reason:Jv$(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=Yv$(N,F,U,Y,w,$.req.raw.signal),E=await zw(L),j={role:"assistant",content:E.text||null};if(E.toolCalls&&E.toolCalls.length>0)j.tool_calls=E.toolCalls.map((z)=>({id:z.toolCallId,type:"function",function:{name:z.toolName,arguments:JSON.stringify("input"in z?z.input:{})}})),j.content=null;return $.json({id:O,object:"chat.completion",created:D,model:Y.model,choices:[{index:0,message:j,finish_reason:Jv$(E.finishReason)}],usage:{prompt_tokens:E.usage?.inputTokens??0,completion_tokens:E.usage?.outputTokens??0,total_tokens:E.usage?.totalTokens??0}})}}catch(Q){let G=Q;if(G.name==="AbortError")return $.json(hK("Request aborted","invalid_request_error"),400);if(G.name==="MessageConversionError")return $.json(hK(G.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",G.message,G.stack),$.json(hK(G.message,"server_error"),500)}});Hv$=Kv$});var Uv$;var Fv$=B(()=>{Uv$={name:"decocms",version:"4.200.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 Q46(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??X46}}var wv$,X46="https://ph.studio.decocms.com",Ov$;var Bv$=B(()=>{y8();bx0();qV();jZ();S$();t11();Fv$();wv$=new B1;wv$.get("/",($)=>{let Z={version:Uv$.version,theme:sh1(),...nD().logo&&{logo:nD().logo},...HK()&&{internalUrl:qq1()},...c0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!c0().firecrawlApiKey,auth:Pk$(),posthog:Q46(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:!HK()&&c0().sandboxProviderKind==="agent-sandbox"}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});Ov$=wv$});function ng($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function $41($){return(ng($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((X)=>X.charAt(0).toUpperCase()+X.slice(1)).join(" ")}function Lv$($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(ng($))}&sz=${Z}`}function Dv$($,Z){let X=$.trim();if(X.length<=Z)return X;let Q=X.slice(0,Z-1),G=Q.lastIndexOf(" ");return`${(G>Z*0.6?Q.slice(0,G):Q).trimEnd()}\u2026`}function Ev$($){let{brand:Z,domain:X,score:Q,verdict:G}=$,Y=typeof Q==="number"?`${Z} commerce report \u2014 ${Math.round(Q)}/100 \xB7 decocms`:`${Z} commerce report \xB7 decocms`,J=`See the full ${Z} scorecard \u2014 SEO, performance, conversion & AEO signals scored by decocms.`,W=G?.trim()?Dv$(`${G.trim().replace(/\s+/g," ")} \u2014 ${J}`,200):Dv$(`How does ${X} really perform? ${J}`,200);return{title:Y,description:W}}import{z as l0}from"zod";var mC,G46,Y46,J46,W46,jv$;var zv$=B(()=>{mC=l0.enum(["good","bad","neutral"]),G46=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 $})),Y46=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(G46)),J46={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()},W46=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(Y46).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)})]),jv$=l0.object({...J46,template:W46})});function Ej0($){let Z=[],X=[...$.sections].sort((G,Y)=>G.position-Y.position).map((G)=>{let Y=jv$.safeParse(G.props);if(Y.success)return Y.data;let J=Y.error.issues[0];return Z.push({section_type:G.section_type,position:G.position,reason:J?`${J.path.join(".")||"(root)"}: ${J.message}`:"contract violation"}),null}).filter((G)=>G!==null),Q=X.filter((G)=>G.template.template!=="cover"&&G.template.template!=="cta").map((G)=>({key:G.key,title:G.title}));return{deck:{meta:{...$.meta,scores:$.summary?.scores,scannedAt:$.scanned_at,toc:Q},slides:X},drops:Z}}var Z41=B(()=>{zv$()});import{join as Pv$}from"path";async function H46($){try{let Z=await fetch(`${vW({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(K46)});if(!Z.ok)return null;let X=await Z.json(),{deck:Q}=Ej0(X);if(!Q.slides.length)return null;let G=Q.slides.find((W)=>W.template.template==="cover"),Y=G?.template,J=Y&&Y.template==="cover"?Y:void 0;return{brand:Q.meta.brand?.trim()||$41($),score:Q.meta.scores?.cover??J?.score?.value,verdict:G?.annotation?.trim()||G?.headline?.trim()||void 0}}catch{return null}}function cG($){return $.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;")}function N46($,Z){let X=ng($),Q=Z?.brand?.trim()||$41(X),G=Lv$(X,128),J=`${(c0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(X)}`,{title:W,description:K}=Ev$({brand:Q,domain:X,score:Z?.score,verdict:Z?.verdict}),H=`${J}/og.png`,N=`${Q} commerce report by decocms`;return[`<title>${cG(W)}</title>`,`<meta name="description" content="${cG(K)}" />`,'<meta name="robots" content="noindex, follow" />','<meta property="og:type" content="website" />','<meta property="og:site_name" content="decocms" />',`<meta property="og:title" content="${cG(W)}" />`,`<meta property="og:description" content="${cG(K)}" />`,`<meta property="og:url" content="${cG(J)}" />`,`<meta property="og:image" content="${cG(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${cG(N)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${cG(W)}" />`,`<meta name="twitter:description" content="${cG(K)}" />`,`<meta name="twitter:image" content="${cG(H)}" />`,`<meta name="twitter:image:alt" content="${cG(N)}" />`,`<link rel="canonical" href="${cG(J)}" />`,`<link rel="icon" href="${cG(G)}" sizes="any" />`].join(`
2730
2730
  `)}function F46($,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 Av$($){let Z=new B1;return Z.get("/:domain/og.png",async(X)=>{let Q=ng(X.req.param("domain")),G=async()=>{let Y=$?Bun.file(Pv$($,"report-og-fallback.png")):null;if(!Y||!await Y.exists())return X.notFound();return X.body(new Uint8Array(await Y.arrayBuffer()),200,{"Content-Type":"image/png","Cache-Control":"public, max-age=0, s-maxage=3600"})};try{let Y=await fetch(`${vW({})}/api/v2/public/diagnostics/${encodeURIComponent(Q)}/og.png`,{signal:AbortSignal.timeout(U46)}),J=Y.headers.get("content-type")??"";if(!Y.ok||!J.startsWith("image/")||!Y.body)return G();return X.body(Y.body,200,{"Content-Type":J,"Cache-Control":"public, max-age=0, s-maxage=604800"})}catch{return G()}}),Z.get("/:domain",async(X)=>{let Q=X.req.param("domain"),G=$?Pv$($,"index.html"):null,Y=G?Bun.file(G):null;if(!Y||!await Y.exists())return X.notFound();let J=await Y.text();try{let W=await H46(ng(Q)),K=N46(Q,W);return X.html(F46(J,K),200,{"Cache-Control":"public, max-age=0, s-maxage=300"})}catch{return X.html(J)}}),Z}var K46=2500,U46=1e4;var Tv$=B(()=>{y8();Z41();JL();S$()});function vo($,Z){return fetch(`${vW({})}${$}`,Z)}async function w46($,Z,X){let Q=new URLSearchParams;if(Z)Q.set("pw",Z);if(X)Q.set("lang",X);let G=Q.toString()?`?${Q.toString()}`:"",Y=await vo(`/api/v2/public/diagnostics/${encodeURIComponent($)}${G}`,{headers:{Accept:"application/json"}});if(Y.status===404)return{status:"not_found",deck:null,scanned_at:null,drops:[]};if(!Y.ok)throw Error(`report read HTTP ${Y.status}`);let J=await Y.json(),{deck:W,drops:K}=Ej0(J);return{status:W.slides.length?"ready":"empty",deck:W,scanned_at:J.scanned_at,drops:K}}var O46,l3,jj0=async($,Z)=>{if(!$.get("reportUser"))return $.json({error:"Authentication required"},401);await Z();return},Rv$;var Iv$=B(()=>{y8();RY();JL();Z41();O46=new Set(["complete","errored","terminated","unknown"]),l3=new B1;l3.use("*",async($,Z)=>{let X=await j8.api.getSession({headers:$.req.raw.headers});$.set("reportUser",X?.user?.id?{email:X.user.email}:void 0),await Z(),$.header("Cache-Control","private, no-store"),$.header("Vary","Cookie");return});l3.use("/run",jj0);l3.use("/status",jj0);l3.use("/link-token/*",jj0);l3.use("/suggest",jj0);l3.get("/site/:domain",async($)=>{let Z=$.req.param("domain").trim();if(!Z)return $.json({error:"domain is required"},400);let X=$.get("reportUser"),Q=$.req.query("key")?.trim()||void 0,G=$.req.query("lang")?.trim()||void 0;try{let Y=await w46(Z,Q,G);if($.header("Cache-Control","private, no-store"),X||!Y.deck)return $.json(Y);return $.json({...Y,deck:{...Y.deck,slides:Y.deck.slides.slice(0,1)},truncated:Y.status==="ready"})}catch{return $.json({error:"report read failed"},502)}});l3.post("/run",async($)=>{let Z=$.get("reportUser"),X;try{X=await $.req.json()}catch{return $.json({error:"invalid JSON"},400)}let Q=typeof X.domain==="string"?X.domain.trim():"";if(!Q)return $.json({error:"domain is required"},400);let G=Z.email,Y=typeof X.distinctId==="string"&&X.distinctId.trim()&&X.distinctId.length<=200?X.distinctId.trim():void 0;try{let J=await vo("/api/v2/diagnostics/run",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${YL({})}`},body:JSON.stringify({url:Q,email:G,distinct_id:Y})});if(!J.ok)return $.json({error:`run HTTP ${J.status}`},502);let W=await J.json(),K=W.blocked?{state:"blocked"}:W.status==="fresh"?{state:"fresh"}:W.mode==="sync"?{state:"sync"}:{state:"running",id:W.id??null};return $.json(K)}catch{return $.json({error:"run failed"},502)}});l3.get("/status",async($)=>{let Z=$.req.query("id");if(!Z)return $.json({error:"id is required"},400);try{let X=await vo(`/api/v2/diagnostics/status?id=${encodeURIComponent(Z)}`,{headers:{Authorization:`Bearer ${YL({})}`}});if(!X.ok)return $.json({error:`status HTTP ${X.status}`},502);let G=(await X.json()).status??"unknown",Y={done:O46.has(G),status:G};return $.json(Y)}catch{return $.json({error:"status failed"},502)}});l3.get("/link-token/:id",async($)=>{let Z=$.req.param("id");try{let X=await vo(`/api/v2/public/link-tokens/${encodeURIComponent(Z)}`,{headers:{Accept:"application/json"}});if(X.status===404)return $.json(null);if(!X.ok)return $.json({error:`link token HTTP ${X.status}`},502);return $.json(await X.json())}catch{return $.json({error:"link token resolve failed"},502)}});l3.get("/suggest",async($)=>{let Z=($.req.query("q")??"").trim().slice(0,64);if(Z.length<2)return $.json({suggestions:[]});try{let X=await vo(`/api/v2/public/suggest?q=${encodeURIComponent(Z)}`,{headers:{Accept:"application/json"}});if(!X.ok)return $.json({suggestions:[]});let Q=await X.json();return $.json({suggestions:Array.isArray(Q.suggestions)?Q.suggestions:[]})}catch{return $.json({suggestions:[]})}});Rv$=l3});import{createHmac as B46,timingSafeEqual as D46}from"crypto";function Mv$($,Z,X,Q=Date.now()){if(!Z||!X)return!1;let G,Y=[];for(let H of Z.split(",")){let N=H.indexOf("=");if(N<=0)continue;let F=H.slice(0,N).trim(),U=H.slice(N+1).trim();if(F==="t")G=U;else if(F==="v1")Y.push(U)}if(!G||Y.length===0)return!1;let J=Number(G);if(!Number.isFinite(J)||Math.abs(Q/1000-J)>L46)return!1;let W=B46("sha256",X).update(`${G}.${$}`).digest("hex"),K=Buffer.from(W,"hex");return Y.some((H)=>{let N=Buffer.from(H,"hex");return K.length===N.length&&D46(K,N)})}function kv$($){let Z;try{Z=JSON.parse($)}catch{return null}let X=XJ(Z),Q=XJ(XJ(X?.data)?.object);if(!X||typeof X.type!=="string"||!Q)return null;return{id:uK(X.id),type:X.type,created:typeof X.created==="number"?X.created:void 0,livemode:typeof X.livemode==="boolean"?X.livemode:void 0,data:{object:Q}}}function Sv$($){switch($){case"active":case"trialing":return"active";case"past_due":return"past_due";default:return"canceled"}}function uK($){return typeof $==="string"?$:void 0}function XJ($){return typeof $==="object"&&$!==null?$:void 0}function zj0($){return typeof $==="number"?new Date($*1000):null}function G41($){return uK($)??uK(XJ($)?.id)}function E46($){return G41($.subscription)??uK(XJ(XJ($.parent)?.subscription_details)?.subscription)}function j46($){let Z=zj0($.current_period_end);if(Z)return Z;let X=XJ($.items)?.data;if(!Array.isArray(X))return null;let Q=0;for(let G of X){let Y=XJ(G)?.current_period_end;if(typeof Y==="number"&&Y>Q)Q=Y}return Q>0?new Date(Q*1000):null}function X41($,Z){let X=zj0($.created);return!!X&&!!Z.lastStripeEventAt&&X<Z.lastStripeEventAt}function Q41($,Z){let X=zj0($.created);if(!X)return;return Z.lastStripeEventAt&&Z.lastStripeEventAt>X?void 0:X}async function z46($,Z){let X=Z.data.object;switch(Z.type){case"checkout.session.completed":case"checkout.session.async_payment_succeeded":{let Q=uK(XJ(X.metadata)?.orgId);if(!Q)return{handled:!1,reason:"no orgId"};if(uK(XJ(X.metadata)?.kind)==="topup"){if(X.mode!=="payment")return{handled:!1,reason:"topup with wrong mode"};if(uK(X.payment_status)!=="paid")return{handled:!1,reason:"payment not confirmed"};let J=uK(X.id);if(!J)return console.error("stripe webhook: topup session without id",{eventId:Z.id,organizationId:Q}),{handled:!1,reason:"topup session without id"};let W=Number(XJ(X.metadata)?.creditCents);if(!Number.isInteger(W)||W<=0)return console.error("stripe webhook: paid topup with bad metadata \u2014 credit NOT applied",{eventId:Z.id,organizationId:Q,creditCents:XJ(X.metadata)?.creditCents}),{handled:!1,reason:"bad topup metadata"};return{handled:!0,organizationId:Q,topUp:{creditCents:W,referenceId:`stripe-topup:${J}`}}}if(X.mode!=="subscription")return{handled:!1,reason:"not a subscription checkout"};if(uK(X.payment_status)!=="paid")return{handled:!1,reason:"payment not confirmed"};let G=await $.getBilling(Q);if(!G)return{handled:!1,reason:"unknown org"};let Y=G41(X.subscription);if(G.stripeSubscriptionId&&Y&&G.stripeSubscriptionId!==Y)return console.error("stripe webhook: refused checkout rebind",{organizationId:Q,eventId:Z.id}),{handled:!1,reason:"org already bound to another subscription",orphanSubscriptionId:Y};if(X41(Z,G))return{handled:!1,reason:"stale event"};return await $.updateStripeState(Q,{stripeCustomerId:G41(X.customer),stripeSubscriptionId:Y,status:"active",lastStripeEventAt:Q41(Z,G)}),{handled:!0,organizationId:Q}}case"customer.subscription.updated":case"customer.subscription.deleted":{let Q=uK(X.id);if(!Q)return{handled:!1,reason:"no sub id"};let G=await $.getBillingByStripeSubscriptionId(Q);if(!G)return{handled:!1,reason:"unknown subscription"};let Y=Z.type==="customer.subscription.deleted";if(!Y&&X41(Z,G))return{handled:!1,reason:"stale event"};let J=Y?"canceled":Sv$(X.status);return await $.updateStripeState(G.organizationId,{status:J,currentPeriodEnd:j46(X),...Y&&{stripeSubscriptionId:null},lastStripeEventAt:Q41(Z,G)}),{handled:!0,organizationId:G.organizationId}}case"invoice.paid":{let Q=E46(X);if(!Q)return{handled:!1,reason:"no sub id"};let G=await $.getBillingByStripeSubscriptionId(Q);if(!G)return{handled:!1,reason:"unknown subscription"};if(X41(Z,G))return{handled:!1,reason:"stale event"};return await $.updateStripeState(G.organizationId,{status:"active",currentPeriodEnd:zj0(X.period_end),lastStripeEventAt:Q41(Z,G)}),{handled:!0,organizationId:G.organizationId}}default:return{handled:!1,reason:`unhandled event ${Z.type}`}}}function P46($,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:Sv$(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 qv$($,Z){let X=P46($,Z);if(!X)return;uH({event:X.name,organizationId:X.organizationId,...$.id?{uuid:Jl1(`stripe:${$.id}:${X.name}`)}:{},...$.created?{timestamp:new Date($.created*1000)}:{},properties:X.properties})}async function Vv$($){let Z=new SW(m8().db),X=await z46(Z,$);if(!(X.handled&&X.topUp))qv$($,X);if(X.handled&&X.topUp)await JF$({organizationId:X.organizationId,amountCents:X.topUp.creditCents,referenceId:X.topUp.referenceId}),qv$($,X);if(!X.handled&&X.orphanSubscriptionId)try{await zt1(X.orphanSubscriptionId),console.error("stripe webhook: canceled orphan subscription",{subscriptionId:X.orphanSubscriptionId,eventId:$.id})}catch(Q){if(!(Q instanceof $3&&(Q.status===400||Q.status===404)))throw Q}return X}var L46=300;var Cv$=B(()=>{DY();h4();Mm();do0()});var A46=1048576,Y41;var _v$=B(()=>{y8();dO();S$();Cv$();Y41=new B1;Y41.post("/webhook",HZ({maxSize:A46,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(!Mv$(X,$.req.header("stripe-signature"),Z))return $.json({error:"invalid signature"},400);let G=kv$(X);if(!G)return $.json({error:"invalid payload"},400);let Y=await Vv$(G);return console.log("stripe webhook",{eventId:G.id,type:G.type,livemode:G.livemode,...Y}),$.json({received:!0})})});import{timingSafeEqual as T46}from"crypto";function I46($,Z,X){if(!Z?.startsWith("sha256="))return!1;let Q=new Bun.CryptoHasher("sha256",X).update($).digest("hex"),G=Z.slice(7);if(G.length!==Q.length)return!1;return T46(Buffer.from(G),Buffer.from(Q))}var R46=5242880,J41;var vv$=B(()=>{y8();dO();Mi();J41=new B1;J41.post("/webhook",HZ({maxSize:R46,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(!I46(X,$.req.header("x-hub-signature-256"),Z))return $.json({error:"invalid signature"},400);if($.req.header("x-github-event")!=="push")return $.json({ok:!0,ignored:"event"});let Q;try{Q=JSON.parse(X)}catch{return $.json({error:"invalid payload"},400)}let G=Q.ref,Y=Q.repository?.full_name;if(!G||!Y)return $.json({ok:!0,ignored:"shape"});let W=(await Pd0())?.markTenantPoolsDirty(Y,G)??[];return $.json({ok:!0,pools:W})})});function bv$($,Z){if(Z.startsWith("text/html")||Z.startsWith("image/svg"))$.set("Content-Security-Policy","sandbox allow-scripts allow-modals allow-same-origin")}var fv$,q46,M46,xv$;var yv$=B(()=>{y8();mJ();qx();Sf();fv$=new B1,q46=["range","if-none-match","if-modified-since"],M46=["content-type","content-length","content-range","accept-ranges","etag","last-modified"];fv$.get("/:org/files/*",async($)=>{let Z=$.get("studioContext"),X=Z.organization?.id;if(!Z.auth?.user?.id){if(Ig($))return $.redirect(`/login?next=${encodeURIComponent($.req.path)}`,302);throw new Q$(401,{message:"Authentication required"})}if(!X)throw new Q$(401,{message:"Organization context required"});let Q=$.req.path.replace(/^.*\/files\//,"");if(!Q)throw new Q$(400,{message:"Missing file key"});let G=await Qn(Q,Z);if(!G)throw new Q$(503,{message:"Object storage not configured"});if(G.startsWith("data:")&&oJ()){let K=G.match(/^data:([^;]+);base64,(.+)$/s);if(!K)throw new Q$(500,{message:"Invalid data URL from storage"});let[,H,N]=K,F=Buffer.from(N,"base64"),U=new Headers({"Content-Type":H,"Cache-Control":"private, max-age=86400"});return bv$(U,H),new Response(F,{status:200,headers:U})}let Y=new Headers;for(let K of q46){let H=$.req.header(K);if(H)Y.set(K,H)}let J=await fetch(G,{headers:Y});if(J.status===403||J.status===404)throw new Q$(404,{message:"File not found"});if(!J.ok&&J.status!==304&&J.status!==416)throw console.error(`[files] upstream storage error ${J.status} for key:`,Q),new Q$(502,{message:"Upstream storage error"});let W=new Headers;for(let K of M46){let H=J.headers.get(K);if(H)W.set(K,H)}return W.set("Cache-Control","private, max-age=86400"),bv$(W,W.get("content-type")??""),new Response(J.body,{status:J.status,headers:W})});xv$=fv$});var bo=C((iC)=>{var k46=iC&&iC.__createBinding||(Object.create?function($,Z,X,Q){if(Q===void 0)Q=X;var G=Object.getOwnPropertyDescriptor(Z,X);if(!G||("get"in G?!Z.__esModule:G.writable||G.configurable))G={enumerable:!0,get:function(){return Z[X]}};Object.defineProperty($,Q,G)}:function($,Z,X,Q){if(Q===void 0)Q=X;$[Q]=Z[X]}),S46=iC&&iC.__exportStar||function($,Z){for(var X in $)if(X!=="default"&&!Object.prototype.hasOwnProperty.call(Z,X))k46(Z,$,X)};Object.defineProperty(iC,"__esModule",{value:!0});S46(eQ(),iC)});var uv$=C((gv$)=>{Object.defineProperty(gv$,"__esModule",{value:!0});gv$.version=void 0;gv$.version="3.4.0"});var dv$=C((cK)=>{var V46=cK&&cK.__importDefault||function($){return $&&$.__esModule?$:{default:$}};Object.defineProperty(cK,"__esModule",{value:!0});cK.NodeTransport=cK.VERSION=void 0;cK.nodeResolveHost=x46;var d6=bo(),C46=z0("net"),W41=z0("tls"),_46=z0("path"),cv$=z0("fs"),v46=V46(z0("dns")),b46=uv$();cK.VERSION=b46.version;var f46="nats.js";class lv${socket;version;lang;yields=[];signal=(0,d6.deferred)();closedNotification=(0,d6.deferred)();options;connected=!1;tlsName="";done=!1;closeError;constructor(){this.lang=f46,this.version=cK.VERSION}async connect($,Z){this.tlsName=$.tlsName,this.options=Z;let{tls:X}=this.options,{handshakeFirst:Q}=X||{};try{if(Q===!0)this.socket=await this.tlsFirst($);else this.socket=await this.dial($);if(this.done)this.socket?.destroy();let G=await this.peekInfo();(0,d6.checkOptions)(G,Z);let{tls_required:Y,tls_available:J}=G,W=J===!0&&Z.tls!==null;if(!Q&&(Y||W))this.socket=await this.startTLS();if(this.done)this.socket?.destroy();if(Y&&this.socket.encrypted!==!0)throw d6.errors.InvalidArgumentError.format("tls","is not available on this server");return this.connected=!0,this.setupHandlers(),this.signal.resolve(),Promise.resolve()}catch(G){let Y=G;if(!Y)Y=new d6.errors.ConnectionError("error connecting - node provided an undefined error");let{code:J}=Y,W=J==="ECONNREFUSED"?new d6.errors.ConnectionError("connection refused",{cause:Y}):Y;throw this.socket?.destroy(),W}}dial($){let Z=(0,d6.deferred)(),X,Q=(0,C46.createConnection)($.port,$.hostname,()=>{Z.resolve(Q),Q.removeAllListeners()});return Q.on("error",(G)=>{X=G}),Q.on("close",()=>{Q.removeAllListeners(),Z.reject(X)}),Q.setNoDelay(!0),Z}get isClosed(){return this.done}close($){return this._closed($,!1)}peekInfo(){let $=(0,d6.deferred)(),Z;return this.socket.on("data",(X)=>{this.yields.push(X);let Q=d6.DataBuffer.concat(...this.yields),G=(0,d6.extractProtocolMessage)(Q);if(G!=="")try{let Y=d6.INFO.exec(G);if(!Y)throw Error("unexpected response from server");let J=JSON.parse(Y[1]);$.resolve(J)}catch(Y){$.reject(Y)}finally{this.socket.removeAllListeners()}}),this.socket.on("error",(X)=>{Z=X}),this.socket.on("close",()=>{this.socket.removeAllListeners(),$.reject(Z)}),$}loadFile($){if(!$)return Promise.resolve();let Z=(0,d6.deferred)();try{if($=(0,_46.resolve)($),!(0,cv$.existsSync)($))Z.reject(Error(`${$} doesn't exist`));(0,cv$.readFile)($,(X,Q)=>{if(X)return Z.reject(X);Z.resolve(Q)})}catch(X){Z.reject(X)}return Z}async loadClientCerts(){let $={},{certFile:Z,cert:X,caFile:Q,ca:G,keyFile:Y,key:J}=this.options.tls;try{if(Z){let W=await this.loadFile(Z);if(W)$.cert=W}else if(X)$.cert=X;if(Y){let W=await this.loadFile(Y);if(W)$.key=W}else if(J)$.key=J;if(Q){let W=await this.loadFile(Q);if(W)$.ca=[W]}else if(G)$.ca=G;return Promise.resolve($)}catch(W){return Promise.reject(W)}}async tlsFirst($){let Z,X={servername:this.tlsName,rejectUnauthorized:!0};if(this.socket)X.socket=this.socket;if(typeof this.options.tls==="object")try{let G=await this.loadClientCerts()||{};X=(0,d6.extend)(X,this.options.tls,G)}catch(G){return Promise.reject(new d6.errors.ConnectionError(G.message,{cause:G}))}let Q=(0,d6.deferred)();try{let G=(0,W41.connect)($.port,$.hostname,X,()=>{G.removeAllListeners(),Q.resolve(G)});G.on("error",(Y)=>{Z=Y}),G.on("secureConnect",()=>{if(X.rejectUnauthorized===!1)return;if(!G.authorized)throw G.authorizationError}),G.on("close",()=>{Q.reject(Z),G.removeAllListeners()}),G.setNoDelay(!0)}catch(G){Q.reject(new d6.errors.ConnectionError(G.message,{cause:G}))}return Q}async startTLS(){let $,Z={socket:this.socket,servername:this.tlsName,rejectUnauthorized:!0};if(typeof this.options.tls==="object")try{let Q=await this.loadClientCerts()||{};Z=(0,d6.extend)(Z,this.options.tls,Q)}catch(Q){return Promise.reject(new d6.errors.ConnectionError(Q.message,{cause:Q}))}let X=(0,d6.deferred)();try{let Q=(0,W41.connect)(Z,()=>{Q.removeAllListeners(),X.resolve(Q)});Q.on("error",(G)=>{$=G}),Q.on("secureConnect",()=>{if(Z.rejectUnauthorized===!1)return;if(!Q.authorized)throw Q.authorizationError}),Q.on("close",()=>{X.reject($),Q.removeAllListeners()})}catch(Q){X.reject(new d6.errors.ConnectionError(Q.message,{cause:Q}))}return X}setupHandlers(){let $;this.socket.on("data",(Z)=>{return this.yields.push(Z),this.signal.resolve()}),this.socket.on("error",(Z)=>{$=Z}),this.socket.on("end",()=>{if(this.socket?.destroyed)return;this.socket?.write(new Uint8Array(0),()=>{this.socket?.end()})}),this.socket.on("close",()=>{this._closed($,!1)})}[Symbol.asyncIterator](){return this.iterate()}async*iterate(){while(!0){if(this.yields.length===0)await this.signal;let $=this.yields;this.yields=[];for(let Z=0;Z<$.length;Z++){if(this.options.debug)console.info(`> ${(0,d6.render)($[Z])}`);yield $[Z]}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,d6.deferred)()}}discard(){if(this.done=!0,this.socket)try{this.socket.removeAllListeners(),this.socket.destroy()}catch{}}disconnect(){this._closed(void 0,!0).then().catch()}isEncrypted(){return this.socket instanceof W41.TLSSocket}_send($){if(this.isClosed||this.socket===void 0)return Promise.resolve();if(this.options.debug)console.info(`< ${(0,d6.render)($)}`);let Z=(0,d6.deferred)();try{this.socket.write($,(X)=>{if(X){if(this.options.debug)console.error(`!!! ${(0,d6.render)($)}: ${X}`);return Z.reject(X)}return Z.resolve()})}catch(X){if(this.options.debug)console.error(`!!! ${(0,d6.render)($)}: ${X}`);Z.reject(X)}return Z}send($){this._send($).catch((X)=>{})}async _closed($,Z=!0){if(!this.connected)return;if(this.done){this.socket?.destroy();return}if(this.closeError=$,!$&&this.socket&&Z)try{await this._send(new TextEncoder().encode(""))}catch(X){if(this.options.debug)console.log("transport close terminated with an error",X)}try{if(this.socket)this.socket.removeAllListeners(),this.socket?.destroy(),this.socket=void 0}catch(X){console.log(X)}this.done=!0,this.closedNotification.resolve(this.closeError)}closed(){return this.closedNotification}}cK.NodeTransport=lv$;function x46($){let Z=(0,d6.deferred)();return v46.default.lookup($,{all:!0},(X,Q)=>{if(X){Z.reject(X);return}let G=[];for(let Y of Q)G.push(Y.address);if(G.length===0)G.push($);Z.resolve(G)}),Z}});var tv$=C((pv$)=>{Object.defineProperty(pv$,"__esModule",{value:!0});pv$.connect=y46;var mv$=dv$(),iv$=bo(),nv$=bo();function y46($={}){if((0,nv$.hasWsProtocol)($))return Promise.reject(nv$.errors.InvalidArgumentError.format("servers","node client doesn't support websockets, use the 'wsconnect' function instead"));return(0,iv$.setTransportFactory)({factory:()=>{return new mv$.NodeTransport},dnsResolveFn:mv$.nodeResolveHost}),iv$.NatsConnectionImpl.connect($)}});var ov$=C((GF)=>{var h46=GF&&GF.__createBinding||(Object.create?function($,Z,X,Q){if(Q===void 0)Q=X;var G=Object.getOwnPropertyDescriptor(Z,X);if(!G||("get"in G?!Z.__esModule:G.writable||G.configurable))G={enumerable:!0,get:function(){return Z[X]}};Object.defineProperty($,Q,G)}:function($,Z,X,Q){if(Q===void 0)Q=X;$[Q]=Z[X]}),u46=GF&&GF.__exportStar||function($,Z){for(var X in $)if(X!=="default"&&!Object.prototype.hasOwnProperty.call(Z,X))h46(Z,$,X)};Object.defineProperty(GF,"__esModule",{value:!0});GF.connect=void 0;var c46=tv$();Object.defineProperty(GF,"connect",{enumerable:!0,get:function(){return c46.connect}});u46(bo(),GF)});function ev$($){let Z=$?.connectFn??i46,X=null,Q=null,G=!1,Y=!1,J=!1,W=[];function K(){return X!==null&&!X.isClosed()&&!X.isDraining()&&!J}function H(){console.log(`[NatsProvider] fireReady: ${W.length} callbacks`);for(let U of W)try{U()}catch{}}function N(U){(async()=>{for await(let w of U.status())if(w.type==="disconnect")console.log("[NatsProvider] Disconnected"),J=!0;else if(w.type==="reconnect")console.log("[NatsProvider] Reconnected, re-firing ready callbacks"),J=!1,Q=null,H()})().catch(()=>{})}async function F(U,w){let O=0;while(!Y)try{X=await Z({servers:U,timeout:m46,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(d46,l46,O-1,2,0.5);await y$(D)}}return{init(U,w){if(G)return;G=!0,Y=!1;let O=w?.creds?rv$.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=sv$.jetstream(X);return Q},onReady(U){if(W.push(U),K())try{U()}catch{}},async drain(){if(Y=!0,G=!1,Q=null,J=!1,X){let U=X;X=null,await U.drain().catch(()=>{})}}}}function i46($){return av$.connect($)}var rv$,av$,sv$,l46=100,d46=3000,m46=3000;var $b$=B(()=>{E6();rv$=S(Eh(),1),av$=S(ov$(),1),sv$=S(NB(),1)});function K41($,Z){return`${$}.${Z}`}class H41{cache;constructor($){this.cache=Fg({ttlMs:$?.ttlMs??n46,maxSize:$?.maxSize??p46})}async get($,Z){return this.cache.get(K41($,Z))??null}async set($,Z,X){this.cache.set(K41($,Z),X)}async invalidate($,Z){this.cache.delete(K41($,Z))}teardown(){this.cache.clear()}}var n46=600000,p46=5000;var Zb$=()=>{};function Pj0($,Z){return`${$}:${Z}`}function N41($){let Z=Fg({ttlMs:$?.ttlMs??t46,maxSize:$?.maxSize??o46}),X=$?.getConnection,Q=crypto.randomUUID(),G=new TextEncoder,Y=new TextDecoder,J=null;function W(K,H){let N=X?.();if(!N)return;try{N.publish(Xb$,G.encode(JSON.stringify({organizationId:K,keyId:H,originId:Q})))}catch(F){console.warn("[ProviderKeyCache] Publish failed (non-critical):",F)}}return{get(K,H){return Z.get(Pj0(K,H))},set(K,H,N){Z.set(Pj0(K,H),N)},invalidate(K,H){Z.delete(Pj0(K,H)),W(K,H)},start(){if(J)return;let K=X?.();if(!K)return;J=K.subscribe(Xb$),(async()=>{for await(let H of J)try{let N=JSON.parse(Y.decode(H.data));if(N.originId===Q)continue;Z.delete(Pj0(N.organizationId,N.keyId))}catch{}})().catch(console.error)},teardown(){J?.unsubscribe(),J=null,Z.clear()}}}var Xb$="studio.ai-provider-keys.invalidate",t46=30000,o46=5000;var Qb$=()=>{};class F41{options;subscriptions=[];onCancel=null;encoder=new TextEncoder;originId=crypto.randomUUID();seenMessageIds=new Set;constructor($){this.options=$}async start($){if($)this.onCancel=$;if(this.subscriptions.length>0)return;if(!this.onCancel)return;let Z=this.options.getConnection();if(!Z)return;let X=new TextDecoder;this.subscriptions=Gb$.map((Q)=>Z.subscribe(Q));for(let Q of this.subscriptions)(async()=>{for await(let G of Q)try{let Y=JSON.parse(X.decode(G.data));if(Y.originId===this.originId)continue;if(Y.messageId&&this.hasSeen(Y.messageId))continue;this.onCancel?.(Y.taskId)}catch{}})().catch(console.error)}broadcast($){if(/[.*>\s]/.test($)){console.warn("[NatsCancelBroadcast] Invalid threadId, skipping broadcast");return}this.onCancel?.($);try{let Z=this.options.getConnection();if(!Z)return;let X=this.encoder.encode(JSON.stringify({taskId:$,originId:this.originId,messageId:crypto.randomUUID()}));for(let Q of Gb$)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 Gb$;var Yb$=B(()=>{Gb$=["studio.decopilot.cancel","mesh.decopilot.cancel"]});var Jb$=($)=>{let Z;return()=>Z??=$()},U41,w41;var Wb$=B(()=>{Z5();U41=Jb$(()=>K8.createHistogram("decopilot.stream.encode_ms",{description:"Per-chunk JSON.stringify+encode time for decopilot stream",unit:"ms"})),w41=Jb$(()=>K8.createCounter("decopilot.stream.published_chunks",{description:"Logical decopilot stream chunks published to JetStream",unit:"{chunks}"}))});function X66(){return{name:IN,subjects:[`${Lw0}.>`],storage:d3.StorageType.File,max_age:s46,max_bytes:$66,max_msgs_per_subject:Z66,discard:d3.DiscardPolicy.Old,retention:d3.RetentionPolicy.Limits,duplicate_window:e46,num_replicas:1}}class Nb${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 Kb$($){let Z=Hb$.headers();for(let[X,Q]of Object.entries($))Z.set(X,Q);return Z}function J66($,Z){let X=0;return{publish(Q,G,Y,J){Q.publish(G,Y,J?{headers:J}:void 0).catch((W)=>{if(X++,a46().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 W66($){if(!($ instanceof Error))return!1;if($.name==="TimeoutError")return!0;return/timeout|no responders|503/i.test($.message)}class O41{options;js=null;jsm=null;constructor($){this.options=$}async init(){let $=this.options.getConnection();if(!$){console.log("[Decopilot] StreamBuffer.init skipped: NATS not connected yet");return}let Z=X66(),X=await gZ(async()=>{let Q=this.options.getJetStreamManager?await this.options.getJetStreamManager():await d3.jetstreamManager($);try{await Q.streams.info(IN),await Q.streams.update(IN,Z)}catch(G){if(G instanceof Error&&G.message.includes("stream not found"))await Q.streams.add(Z);else if(G instanceof Error&&/can ?not change.*storage|storage type/i.test(G.message))await Q.streams.delete(IN),await Q.streams.add(Z);else throw G}return Q},{maxAttempts:5,minTimeout:250,maxTimeout:4000,jitter:0.5,isRetriable:W66});this.js=this.options.getJetStream(),this.jsm=X,console.log(`[Decopilot] StreamBuffer.init ${this.js?"ready":"degraded (js=null)"}`)}pump($,Z,X,Q){let G=this.js;if(!G)return console.warn(`[Decopilot] pump: JetStream client unavailable for thread ${Z}; chunks NOT published to NATS`),Promise.resolve();let Y=J66(Z,Q),J=!1,W=()=>{if(J)return;J=!0;let H=oJ$(Z);G.publish(H.subject,H.data).catch(()=>{})};X.addEventListener("abort",W,{once:!0});let K=(H)=>{let N=performance.now(),F=li0(H,{runId:Z}),U=performance.now()-N;if(U41().record(U),w41().add(1,{"org.id":Q??"unknown"}),Y66?.record(U,F.reduce((w,O)=>w+O.data.length,0)),F.length===0){console.warn(`[Decopilot] dropping oversized stream chunk for thread ${Z}`);return}for(let w of F)Y.publish(G,w.subject,w.data,w.headers?Kb$(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(),G66)console.warn(JSON.stringify({msg:"decopilot-stream-diag",event:"pump-done",taskId:Z,publishedChunks:F,publishErrors:Y.errorCount}))}if(U!==void 0)throw U})()}async publishRawChunk($,Z,X){let Q=this.js;if(!Q)return!1;let G=performance.now(),Y=li0(Z,{runId:$,dedup:X});if(U41().record(performance.now()-G),w41().add(1),Y.length===0)return console.warn(`[Decopilot] dropping oversized raw chunk for thread ${$} (> MAX_CHUNKED_BYTES)`),!0;for(let J of Y)await Q.publish(J.subject,J.data,{...J.headers?{headers:Kb$(J.headers)}:{},...J.msgId?{msgID:J.msgId}:{}});return!0}async publishDone($,Z,X){let Q=this.js;if(!Q)return!1;let G=tJ$({runId:$,fenceToken:Z,finalSeq:X});return await Q.publish(G.subject,G.data,{msgID:G.msgId}),!0}async createTailStream($,Z,X){let Q=this.js;if(!Q)return console.warn(`[Decopilot] createTailStream: JetStream client unavailable for thread ${$}; no live tail`),null;let G=X?.deliverPolicy==="new"?d3.DeliverPolicy.New:d3.DeliverPolicy.All,Y=X?.closeOnDone??!1,J=QO($),W;try{W=await(await Q.consumers.get(IN,{filter_subjects:J,deliver_policy:G})).consume()}catch(D){return console.warn("[Decopilot] JetStream tail unavailable (non-critical):",D?.message??D),null}let N=Aw0({messages:async function*(){try{for await(let D of W)yield{subject:D.subject,data:D.data,headers:D.headers}}finally{W.stop()}}(),onCancel:()=>W.stop()}).pipeThrough(Ew0()).pipeThrough(jw0()).getReader(),F=!1,U=()=>{if(F)return;F=!0;try{N.releaseLock()}catch{}},w=!1,O=()=>{if(w)return;w=!0,W.stop(),N.cancel().catch(()=>{}),U()};return Z?.addEventListener("abort",O,{once:!0}),new ReadableStream({async pull(D){for(;;){let{done:L,value:E}=await N.read();if(L){O(),D.close();return}let j=E;if(j.kind==="done"){if(Y){O(),D.close();return}continue}D.enqueue(j.chunk);return}},cancel(){O()}})}purge($){if(!this.jsm)return;this.jsm.streams.purge(IN,{filter:QO($)}).catch(()=>{})}teardown(){this.js=null,this.jsm=null}}var d3,Hb$,r46=($)=>{let Z;return()=>Z??=$()},a46,s46=86400000000000,e46=120000000000,$66=4294967296,Z66=500000,Q66,G66,Y66;var Fb$=B(()=>{E6();di0();Tw0();zw0();Z5();Wb$();d3=S(NB(),1),Hb$=S(Eh(),1),a46=r46(()=>K8.createCounter("decopilot.stream.publish_errors",{description:"Number of JetStream publish failures for decopilot stream chunks",unit:"{errors}"}));Q66=process.env.STREAM_ENCODE_TRACE==="1",G66=process.env.DECOPILOT_STREAM_TRACE==="1";Y66=Q66?new Nb$:null});function Aj0($,Z,X,Q){if(!Q)return!1;return $.emit(Z,UW(X,Q.status,{title:Q.title??void 0,virtualMcpId:Q.virtual_mcp_id??void 0,createdBy:Q.created_by??void 0,triggerId:Q.trigger_id??null,branch:Q.branch??null,harnessId:Q.harness_id??void 0,createdAt:Q.created_at,updatedAt:Q.updated_at})),!0}var Ub$=B(()=>{L8()});class B41{storage;options;timer=null;constructor($,Z={}){this.storage=$;this.options=Z}start(){if(this.timer)return;let $=this.options.intervalMs??300000;this.timer=setInterval(()=>{this.runOnce()},$)}async runOnce(){let $=this.options.staleAfterMs??3600000;try{let Z=await this.storage.sweepAbandoned($);if(Z>0)console.log(`[async-research-sweeper] marked ${Z} stale jobs as abandoned`);return Z}catch(Z){return console.error("[async-research-sweeper] sweep failed",Z),0}}dispose(){if(this.timer)clearInterval(this.timer),this.timer=null}}class D41{taskBoard;contextFactory;options;timer=null;running=!1;cursor=null;constructor($,Z,X={}){this.taskBoard=$;this.contextFactory=Z;this.options=X}start(){if(this.timer)return;let $=this.options.intervalMs??K66;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??N66,X=this.options.itemIntervalMs??H66,Q=await this.taskBoard.listItemsPendingReview(Z,this.cursor,new Date(Date.now()-X)),G=Q.at(-1);this.cursor=Q.length===Z&&G?{updatedAt:G.updatedAt,id:G.id}:null;for(let{id:Y,organizationId:J}of Q)try{if(await this.reconcileItem(Y,J))$++}catch(W){console.error(`[task-board-review-sweeper] ${Y} failed`,W)}await this.reapNeverStartedThreads(Z),$+=await this.dispatchDueRetries(Z),await this.reactToUnhandledFailures(Z)}catch(Z){console.error("[task-board-review-sweeper] sweep failed",Z)}finally{this.running=!1}return $}async reapNeverStartedThreads($){try{let Z=await this.taskBoard.failNeverStartedLinkedThreads($,new Date(Date.now()-nG$),Rn0);for(let X of Z)console.warn(`[task-board-review-sweeper] failed never-started thread ${X.threadId} on ${X.itemId}`)}catch(Z){console.error("[task-board-review-sweeper] reaping failed",Z)}}async reactToUnhandledFailures($){let Z=await this.taskBoard.listItemsStuckAfterFailure($,new Date(Date.now()-U66));for(let{id:X,organizationId:Q,threadId:G}of Z)try{console.warn(`[task-board-review-sweeper] reacting to an unhandled failure on ${X}`),await wi0(this.taskBoard,G,Q)}catch(Y){console.error(`[task-board-review-sweeper] unhandled-failure reaction for ${X} failed`,Y)}}async dispatchDueRetries($){let Z=0,X=await this.taskBoard.listItemsDueForRetry($,new Date);for(let{id:Q,organizationId:G,attempts:Y}of X)try{if(!await this.taskBoard.claimDueRetry(Q,G,new Date))continue;let J=await this.taskBoard.getById(Q,G);if(!J||J.status!=="in_progress"||J.assigneeId!==o4)continue;let W=await this.contextFactory(G,J.assignedBy??J.createdBy);if(!W)continue;await qN(W,J,{runClass:"retry"}),Z++,console.warn(`[task-board-review-sweeper] re-dispatched ${Q} after a failure (attempt ${Y})`)}catch(J){console.error(`[task-board-review-sweeper] retry dispatch for ${Q} failed`,J),await this.taskBoard.scheduleRunRetry(Q,G,Y,new Date(Date.now()+F66)).catch((W)=>console.error(`[task-board-review-sweeper] re-arming ${Q} failed`,W))}return Z}async reconcileItem($,Z){let X=await this.taskBoard.getById($,Z);if(!X)return!1;if(X.status!=="in_review"||X.assigneeId!==o4)return!1;await this.taskBoard.markSwept($,Z);let Q=await this.taskBoard.listPrs($,Z);if(Q.length===0)return!1;let G=await this.contextFactory(Z,X.assignedBy??X.createdBy);if(!G)return!1;if(await s3$(G,X))return!0;let Y=await Promise.all(Q.map(async(J)=>({...J,...await Pn0(G,Z,J)})));if(Y.every((J)=>J.state===null))console.warn(`[task-board-review-sweeper] ${$}: no live PR state from GitHub (${Y.length} PR(s)) \u2014 proceeding on unknown`);if(!zn0(Y))return!1;return await Sw0(G,X),!0}dispose(){if(this.timer)clearInterval(this.timer),this.timer=null}}var K66=60000,H66=300000,N66=50,F66=60000,U66=120000;var wb$=B(()=>{qZ();wn0();GO();fw0();e9();In0();yx()});import{readdir as w66,rm as Tj0}from"fs/promises";import{join as Rj0}from"path";async function Ij0($){let Z=new Date;Z.setUTCDate(Z.getUTCDate()-O66),Z.setUTCHours(0,0,0,0);let X=0;try{let Q=await nC($);for(let G of Q)if(/^\d{4}$/.test(G))X+=await Ob$($,G,Z);else if(!G.startsWith(".")){let Y=Rj0($,G),J=await nC(Y);for(let K of J){if(!/^\d{4}$/.test(K))continue;X+=await Ob$(Y,K,Z)}if((await nC(Y)).length===0)await Tj0(Y,{recursive:!0,force:!0})}}catch(Q){console.warn("monitoring retention cleanup failed:",Q)}return X}async function Ob$($,Z,X){let Q=0,G=Rj0($,Z),Y=await nC(G);for(let W of Y){if(!/^\d{2}$/.test(W))continue;let K=Rj0(G,W),H=await nC(K);for(let F of H){if(!/^\d{2}$/.test(F))continue;let U=new Date(`${Z}-${W}-${F}T00:00:00Z`);if(isNaN(U.getTime()))continue;if(U<X){let w=Rj0(K,F);await Tj0(w,{recursive:!0,force:!0}),Q++}}if((await nC(K)).length===0)await Tj0(K,{recursive:!0,force:!0})}if((await nC(G)).length===0)await Tj0(G,{recursive:!0,force:!0});return Q}async function nC($){try{return(await w66($)).filter((X)=>!X.startsWith("."))}catch{return[]}}var O66=30;var L41=()=>{};import{DBOS as E41,SchedulerMode as B66}from"@dbos-inc/dbos-sdk";async function L66(){let $=[WJ(),pC(),dK()],Z=0;for(let X of $)try{Z+=await Ij0(X)}catch(Q){console.error("[monitoring-retention] cleanup failed:",Q)}return console.log(`[monitoring-retention] deleted ${Z} day-dir(s) across ${$.length} signal dir(s)`),{deleted:Z,dirs:$.length}}async function E66($,Z){await E41.runStep(()=>L66(),{name:"monitoringRetention"})}function Db$(){if(Bb$)return;Bb$=!0;let $=E41.registerWorkflow(E66,{name:"monitoringRetentionWorkflow"});E41.registerScheduled($,{name:"monitoringRetentionWorkflow",crontab:D66,mode:B66.ExactlyOncePerIntervalWhenActive})}var D66="23 4 * * *",Bb$=!1;var Lb$=B(()=>{oQ();L41()});function Eb$($){return async(Z,X)=>{let Q=await $.db.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["member.role","organization.id as orgId","organization.slug as orgSlug","organization.name as orgName"]).where("member.userId","=",X).where("member.organizationId","=",Z).executeTakeFirst();if(!Q)return console.warn(`[automationContextFactory] User ${X} not found in org ${Z} \u2014 returning null`),null;let G=await vK.create();G.auth.user={id:X,role:Q.role},G.organization={id:Q.orgId,slug:Q.orgSlug,name:Q.orgName};let Y=await f11($.db,Z,Q.role);return G.boundAuth=b11({auth:G.authInstance,headers:new Headers,role:Q.role,permissions:Y,userId:X}),G.access=new lD(X,void 0,G.boundAuth,Q.role,"self"),Tg(G,{id:Q.orgId,slug:Q.orgSlug}),G}}var jb$=B(()=>{dD();Dg()});function j66(){return{services:[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}],migrationsStatus:"pending",serverUrl:null,logs:[]}}function P66(){for(let $ of z66)$()}function zb$($){let Z=[...j41.logs,$];j41={...j41,logs:Z.length>500?Z.slice(-500):Z},P66()}function z41(){return A66}var j41,z66,A66=!1;var P41=B(()=>{j41=j66(),z66=new Set});import{EventEmitter as T66}from"events";var A41;var Pb$=B(()=>{P41();A41=new T66;A41.on("request",($)=>{zb$($)})});function Ab$(){return async($,Z)=>{let X=Date.now(),Q=$.req.method,G=$.req.path;if(G==="/api/auth/get-session"||G.includes("favicon")){await Z();return}let Y="",J=!1;if(G.startsWith("/mcp")&&Q==="POST"){J=!0;try{if($.req.header("Content-Type")?.includes("application/json")){let U=await $.req.raw.clone().json();if(U.method==="tools/call"&&U.params?.name){let w=pg(U.params.name),O=U.params.arguments||{},D=Object.keys(O).map((E)=>pg(E)),L=D.length>0?D.slice(0,3).join(",")+(D.length>3?"\u2026":""):"";Y=`${e6.tool}${w}${e6.dim}(${L})${e6.reset}`}else if(U.method)Y=`${e6.dim}${pg(U.method)}${e6.reset}`}}catch{}}let W=pg(G);if(G.startsWith("/mcp/conn_")){let N=G.split("/")[2]??"";W=`/mcp/${e6.mcp}${pg(N.slice(0,12))}\u2026${e6.reset}`}else if(G==="/mcp")W=`${e6.mcp}/mcp${e6.reset}`;else if(G==="/mcp/registry")W=`${e6.mcp}/mcp/registry${e6.reset}`;let K=I66(Q),H=J?"\u25C0":"\u2190";if(!z41())console.log(`${e6.dim}${H}${e6.reset} ${K}${Q}${e6.reset} ${W}${Y?` ${Y}`:""}`);try{await Z()}finally{let N=Date.now()-X,F=$.res.status,U=R66(F),w=N<1000?`${N}ms`:`${(N/1000).toFixed(1)}s`,O=J?"\u25B6":"\u2192";if(!z41())console.log(`${e6.dim}${O}${e6.reset} ${K}${Q}${e6.reset} ${W}${Y?` ${Y}`:""} ${U}${F}${e6.reset} ${e6.duration}${w}${e6.reset}`);A41.emit("request",{method:Q,path:pg(G),status:F,duration:N,timestamp:new Date})}}}var e6,R66=($)=>{if($>=500)return e6.serverError;if($>=400)return e6.clientError;if($>=300)return e6.redirect;return e6.ok},I66=($)=>{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 Tb$=B(()=>{P41();Pb$();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 Mb$}from"crypto";import{mkdir as q66,readdir as M66,rm as Rb$,stat as kb$}from"fs/promises";import{join as R41,relative as k66}from"path";import{z as E$}from"zod";function Vb$($){let Z=$.replace(/[^a-zA-Z0-9_-]/g,"_");return R41(S66,Z)}function Cb$($){return $.replace(/^\/+/,"").replace(/\.\./g,"")}function T41($,Z){let X=Vb$($),Q=Cb$(Z);return R41(X,Q)}function V66($,Z,X,Q){let G=c0().encryptionKey||"dev-secret",Y=`${$}:${Z}:${X}:${Q}`;return Mb$("sha256",G).update(Y).digest("hex")}function qb$($,Z,X,Q,G){let Y=Math.floor(Date.now()/1000)+Q,J=V66(Z,X,Y,G),W=new URL(`/api/dev-assets/${Z}/${Cb$(X)}`,$);return W.searchParams.set("expires",Y.toString()),W.searchParams.set("signature",J),W.searchParams.set("method",G),W.toString()}function _b$($,Z,X){let Q=`${$}:${Z.getTime()}:${X}`;return`"${Mb$("md5","etag").update(Q).digest("hex")}"`}async function vb$($,Z,X,Q,G){try{let Y=await M66($,{withFileTypes:!0});for(let J of Y){let W=R41($,J.name),H=k66(Z,W).replace(/\\/g,"/");if(X&&!H.startsWith(X))continue;if(J.isDirectory())if(Q){let N=H+"/";if(!X||N.startsWith(X)){if(!(X?H.slice(X.length):H).includes("/"))G.commonPrefixes.add(N)}}else await vb$(W,Z,X,Q,G);else if(J.isFile()){if(Q&&X){let N=H.slice(X.length);if(N.includes(Q)){let F=N.indexOf(Q),U=X+N.slice(0,F+1);G.commonPrefixes.add(U);continue}}try{let N=await kb$(W);G.objects.push({key:H,size:N.size,lastModified:N.mtime.toISOString(),etag:_b$(W,N.mtime,N.size)})}catch{}}}}catch{}}function bb$($,Z){let Q=t($).id;return[{name:"LIST_OBJECTS",description:"List objects in the local assets directory with pagination support",inputSchema:E$.object({prefix:E$.string().optional(),maxKeys:E$.number().optional().default(1000),continuationToken:E$.string().optional(),delimiter:E$.string().optional()}),outputSchema:E$.object({objects:E$.array(E$.object({key:E$.string(),size:E$.number(),lastModified:E$.string(),etag:E$.string()})),nextContinuationToken:E$.string().optional(),isTruncated:E$.boolean(),commonPrefixes:E$.array(E$.string()).optional()}),handler:async(G)=>{let Y=G,J=Y.prefix||"",W=Y.maxKeys??1000,K=Y.delimiter,H=Y.continuationToken,N=Vb$(Q);await q66(N,{recursive:!0});let F={objects:[],commonPrefixes:new Set};await vb$(N,N,J,K,F),F.objects.sort((L,E)=>L.key.localeCompare(E.key));let U=0;if(H){if(U=F.objects.findIndex((L)=>L.key>H),U===-1)U=F.objects.length}let w=F.objects.slice(U,U+W),O=U+W<F.objects.length,D=O?w[w.length-1]?.key:void 0;return{objects:w,isTruncated:O,nextContinuationToken:D,commonPrefixes:Array.from(F.commonPrefixes).sort()}}},{name:"GET_OBJECT_METADATA",description:"Get metadata for a file in the local assets directory",inputSchema:E$.object({key:E$.string()}),outputSchema:E$.object({contentType:E$.string().optional(),contentLength:E$.number(),lastModified:E$.string(),etag:E$.string(),metadata:E$.record(E$.string(),E$.string()).optional()}),handler:async(G)=>{let Y=G,J=T41(Q,Y.key),W=await kb$(J);return{contentType:L$1(Y.key),contentLength:W.size,lastModified:W.mtime.toISOString(),etag:_b$(J,W.mtime,W.size)}}},{name:"GET_PRESIGNED_URL",description:"Generate a presigned URL for downloading a file from local storage",inputSchema:E$.object({key:E$.string(),expiresIn:E$.number().optional()}),outputSchema:E$.object({url:E$.string(),expiresIn:E$.number()}),handler:async(G)=>{let Y=G,J=Y.expiresIn??Ib$;return{url:qb$(Z,Q,Y.key,J,"GET"),expiresIn:J}}},{name:"PUT_PRESIGNED_URL",description:"Generate a presigned URL for uploading a file to local storage",inputSchema:E$.object({key:E$.string(),expiresIn:E$.number().optional(),contentType:E$.string().optional()}),outputSchema:E$.object({url:E$.string(),expiresIn:E$.number()}),handler:async(G)=>{let Y=G,J=Y.expiresIn??Ib$;return{url:qb$(Z,Q,Y.key,J,"PUT"),expiresIn:J}}},{name:"DELETE_OBJECT",description:"Delete a single file from local storage",inputSchema:E$.object({key:E$.string()}),outputSchema:E$.object({success:E$.boolean(),key:E$.string()}),handler:async(G)=>{let Y=G,J=T41(Q,Y.key);try{return await Rb$(J),{success:!0,key:Y.key}}catch{return{success:!1,key:Y.key}}}},{name:"DELETE_OBJECTS",description:"Delete multiple files from local storage",inputSchema:E$.object({keys:E$.array(E$.string()).max(1000)}),outputSchema:E$.object({deleted:E$.array(E$.string()),errors:E$.array(E$.object({key:E$.string(),message:E$.string()}))}),handler:async(G)=>{let Y=G,J=[],W=[];return await Promise.all(Y.keys.map(async(K)=>{let H=T41(Q,K);try{await Rb$(H),J.push(K)}catch(N){W.push({key:K,message:N instanceof Error?N.message:"Unknown error"})}})),{deleted:J,errors:W}}}]}async function I41($,Z,X){let Q=bb$(Z,X),G=new jW({name:"dev-assets-mcp",version:"1.0.0"},{capabilities:{tools:{}},jsonSchemaValidator:Y5});for(let J of Q){let W="shape"in J.inputSchema?J.inputSchema.shape:E$.object({}).shape,K=J.outputSchema&&"shape"in J.outputSchema?J.outputSchema.shape:E$.object({}).shape;G.registerTool(J.name,{description:J.description??"",inputSchema:W,outputSchema:K,annotations:J.annotations,_meta:J._meta},async(H)=>{try{let N=await J.handler(H);return{content:[{type:"text",text:JSON.stringify(N)}],structuredContent:N}}catch(N){return{content:[{type:"text",text:`Error: ${N.message}`}],isError:!0}}})}let Y=new lX({enableJsonResponse:$.headers.get("Accept")?.includes("application/json")??!1});return await G.connect(Y),lY(G,Y,$,"mcp:dev-assets")}async function fb$($,Z,X,Q){let Y=bb$(X,Q).find((J)=>J.name===$);if(!Y)return{content:[{type:"text",text:`Tool not found: ${$}`}],isError:!0};try{let J=await Y.handler(Z);return{content:[{type:"text",text:JSON.stringify(J)}]}}catch(J){return{content:[{type:"text",text:J instanceof Error?J.message:String(J)}],isError:!0}}}var S66="./data/assets",Ib$=3600,Sb$,xb$;var yb$=B(()=>{S$();lx();y8();dc();bV();RX();xE0();Sb$=new B1;Sb$.all("/",async($)=>{let Z=$.get("studioContext"),X=new URL($.req.url),Q=`${X.protocol}//${X.host}`;return I41($.req.raw,Z,Q)});xb$=Sb$});var gb$={};N4(gb$,{mountDevRoutes:()=>C66});function C66($,Z){$.all("/mcp/:connectionId{.*_dev-assets$}",Z,async(Q)=>{let G=Q.get("studioContext"),Y=new URL(Q.req.url),J=`${Y.protocol}//${Y.host}`;return I41(Q.req.raw,G,J)}),$.all("/mcp/:connectionId{.*_dev-assets$}/call-tool/:toolName",Z,async(Q)=>{let G=Q.get("studioContext"),Y=new URL(Q.req.url),J=`${Y.protocol}//${Y.host}`,W=Q.req.param("toolName");if(!W)return Q.json({error:"Missing tool name"},400);let K=await Q.req.json(),H=await fb$(W,K,G,J);if(H.isError)return Q.json(H.content,500);return Q.json(H.content)}),$.use("/mcp/dev-assets",Z),$.route("/mcp/dev-assets",xb$);let X=new B1;X.use("*",u3({mountPath:"/api/dev-assets"})),X.route("/",fE0({orgFromPath:!1})),$.route("/api/dev-assets",X)}var hb$=B(()=>{y8();H$1();xE0();yb$()});import{sql as _66}from"kysely";import{randomUUID as ub$}from"crypto";import{z as v66}from"zod";async function f66($){let Z=new Date().toISOString(),X=ub$(),Q=y4.SELF($.organizationId),G="registry.publish_request.created",Y={requestId:$.request.id,requestedId:$.request.requested_id,title:$.request.title,status:$.request.status,createdAt:$.request.created_at,requester:{name:$.request.requester_name,email:$.request.requester_email}};await $.db.insertInto("events").values({id:X,organization_id:$.organizationId,type:"registry.publish_request.created",source:Q,specversion:"1.0",subject:$.request.id,time:Z,datacontenttype:"application/json",dataschema:null,data:JSON.stringify(Y),cron:null,status:"pending",attempts:0,last_error:null,next_retry_at:null,created_at:Z,updated_at:Z}).execute();let J=await $.db.selectFrom("event_subscriptions").select(["id"]).where("organization_id","=",$.organizationId).where("enabled","=",1).where("event_type","=","registry.publish_request.created").where((W)=>W.or([W("publisher","is",null),W("publisher","=",Q)])).execute();if(J.length>0)await $.db.insertInto("event_deliveries").values(J.map((W)=>({id:ub$(),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 _66`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.199.0",
3
+ "version": "4.200.0",
4
4
  "description": "Deco CMS — Self-hostable MCP Gateway for managing AI connections and tools",
5
5
  "author": "Deco team",
6
6
  "repository": {