decocms 4.383.1 → 4.383.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (361) hide show
  1. package/dist/client/assets/{AlertCircle-LJkM8Umc.js → AlertCircle-3NjmS2Me.js} +1 -1
  2. package/dist/client/assets/{AreaChart-CjJaUtwC.js → AreaChart-BK98ay_e.js} +1 -1
  3. package/dist/client/assets/{ArrowLeft-CGkn-m8f.js → ArrowLeft-BDJocc-E.js} +1 -1
  4. package/dist/client/assets/{ArrowRight-BX2App8Z.js → ArrowRight-7HllOSKn.js} +1 -1
  5. package/dist/client/assets/{ArrowUp-BAUR8mSe.js → ArrowUp-hZF6_Dg8.js} +1 -1
  6. package/dist/client/assets/{CartesianChart-vw1yMsWr.js → CartesianChart-B3ONOnv3.js} +1 -1
  7. package/dist/client/assets/{CheckCircle-BpX5Mb8t.js → CheckCircle-CHH7PvQv.js} +1 -1
  8. package/dist/client/assets/{ChevronUp-DsbltOpN.js → ChevronUp-K_DSezIa.js} +1 -1
  9. package/dist/client/assets/{Copy01-0jm4SeRe.js → Copy01-BD66Qy1p.js} +1 -1
  10. package/dist/client/assets/{CreditCard01-73-vkmvl.js → CreditCard01-Bh3w7Hgk.js} +1 -1
  11. package/dist/client/assets/{DotsVertical-CSfkrc8O.js → DotsVertical-DMXzeMxu.js} +1 -1
  12. package/dist/client/assets/{Download01-xiBeRwHN.js → Download01-CZiiid2z.js} +1 -1
  13. package/dist/client/assets/{ErrorBarContext--VCU3oBZ.js → ErrorBarContext-BzVNZ25-.js} +1 -1
  14. package/dist/client/assets/{Eye-Bigici17.js → Eye-oxb_RsMQ.js} +1 -1
  15. package/dist/client/assets/{Globe01-Cna45P6a.js → Globe01-BGyzTJzS.js} +1 -1
  16. package/dist/client/assets/{Globe04-Dg8SD1vo.js → Globe04-BKLGp0-t.js} +1 -1
  17. package/dist/client/assets/{Image01-C2MdYCtR.js → Image01-CABBJzvK.js} +1 -1
  18. package/dist/client/assets/{Key01-DffQxPlE.js → Key01-DP1rdVgR.js} +1 -1
  19. package/dist/client/assets/{LayoutLeft-BfYzK4mo.js → LayoutLeft-DlOBiWF7.js} +1 -1
  20. package/dist/client/assets/{Line-ClkAgrJb.js → Line-BoY-_HRo.js} +1 -1
  21. package/dist/client/assets/{Link01-CynYhkLr.js → Link01-IxSW8a5k.js} +1 -1
  22. package/dist/client/assets/{LinkExternal01-nQSknRCR.js → LinkExternal01-BJ0NvAtL.js} +1 -1
  23. package/dist/client/assets/{Monitor01-CDfch8oz.js → Monitor01-C8HMQtDc.js} +1 -1
  24. package/dist/client/assets/{Package-3ZLy52FE.js → Package-DbqCrAqt.js} +1 -1
  25. package/dist/client/assets/{Palette-CMZu59LK.js → Palette-D2CzWakp.js} +1 -1
  26. package/dist/client/assets/{Play-D_Dr-HEG.js → Play-C375qAFd.js} +1 -1
  27. package/dist/client/assets/{Plus-C1CKVAFo.js → Plus-KuC07360.js} +1 -1
  28. package/dist/client/assets/{SearchLg-B6NToYZC.js → SearchLg-CnAwayoV.js} +1 -1
  29. package/dist/client/assets/{SearchMd-zePyurMS.js → SearchMd-Db_7ZS_U.js} +1 -1
  30. package/dist/client/assets/{Sector-E8uUdeHk.js → Sector-C1hdz8Rd.js} +1 -1
  31. package/dist/client/assets/{Settings02-DMaVDtfM.js → Settings02-2SBOLpFQ.js} +1 -1
  32. package/dist/client/assets/{Share07-BSfD4Af0.js → Share07-BE4JtC9a.js} +1 -1
  33. package/dist/client/assets/{Stars01-CXObStKI.js → Stars01-DLpAYXhL.js} +1 -1
  34. package/dist/client/assets/{Sun-BQGS4Y0R.js → Sun-CwUe69CG.js} +1 -1
  35. package/dist/client/assets/{Tool01-DZu8RUzZ.js → Tool01-C8yYoxGr.js} +1 -1
  36. package/dist/client/assets/{Tool02-C7BRTm2R.js → Tool02-B6NEJ959.js} +1 -1
  37. package/dist/client/assets/{Trash01-CacMXriS.js → Trash01-sdbYLhwG.js} +1 -1
  38. package/dist/client/assets/{TrendUp01-C3boeLIB.js → TrendUp01-C0ETH40N.js} +1 -1
  39. package/dist/client/assets/{Upload01-B5kYxzoc.js → Upload01-B4XZygwf.js} +1 -1
  40. package/dist/client/assets/{User01-Ba34kYTP.js → User01-BUAGbw_8.js} +1 -1
  41. package/dist/client/assets/{UserSquare-PE4kARaY.js → UserSquare-CI-Lmxvt.js} +1 -1
  42. package/dist/client/assets/{Users01-CgytyhS2.js → Users01-DFi4f9KY.js} +1 -1
  43. package/dist/client/assets/{X-DfPrIb4m.js → X-ByVEErG0.js} +1 -1
  44. package/dist/client/assets/{XCircle-BRTsqRTs.js → XCircle-CNDaDHqM.js} +1 -1
  45. package/dist/client/assets/{XClose-DtruhyLM.js → XClose-fZr02TyX.js} +1 -1
  46. package/dist/client/assets/{Zap-FPirisgg.js → Zap-CcN1LA-b.js} +1 -1
  47. package/dist/client/assets/{ZoomOut-CW6c9gjM.js → ZoomOut-Cm9QeblW.js} +1 -1
  48. package/dist/client/assets/{access-gate-BzYSaxi9.js → access-gate-B7Hr_Vyu.js} +1 -1
  49. package/dist/client/assets/{add-connection-dialog-CNPkccVn.js → add-connection-dialog-B8LN3H0I.js} +1 -1
  50. package/dist/client/assets/{agent-analytics-CQAuAwQm.js → agent-analytics-DjxFq_6k.js} +1 -1
  51. package/dist/client/assets/agent-app-Be-jZ6Z_.js +1 -0
  52. package/dist/client/assets/{agent-assets-CSDWDAzC.js → agent-assets-B-5Linet.js} +1 -1
  53. package/dist/client/assets/{agent-automation-DlwOjUyC.js → agent-automation-DjCegdGk.js} +1 -1
  54. package/dist/client/assets/{agent-automations-Ck5Z78ep.js → agent-automations-BYFtuh6D.js} +1 -1
  55. package/dist/client/assets/{agent-connect-sources-B0nJ5Jnx.js → agent-connect-sources-fzMxZVXi.js} +1 -1
  56. package/dist/client/assets/agent-deck-CttdAsKv.js +1 -0
  57. package/dist/client/assets/{agent-e2e-W_xfJoJ5.js → agent-e2e-BVjNlxp7.js} +1 -1
  58. package/dist/client/assets/{agent-experiments-C17LBhzf.js → agent-experiments-bIaPEubL.js} +1 -1
  59. package/dist/client/assets/agent-file-Cg7gDgXE.js +1 -0
  60. package/dist/client/assets/{agent-git-CucerCdW.js → agent-git-xlLroAsu.js} +1 -1
  61. package/dist/client/assets/{agent-hosting-BC5wIkhQ.js → agent-hosting-CpBNlKk6.js} +1 -1
  62. package/dist/client/assets/{agent-icon-Bo-J8xeh.js → agent-icon-Db2N7oq5.js} +1 -1
  63. package/dist/client/assets/agent-library-file-iYf02uq5.js +1 -0
  64. package/dist/client/assets/{agent-monitor-X5R8xXZE.js → agent-monitor-DwSdgE9U.js} +1 -1
  65. package/dist/client/assets/{agent-overview-BkNGszRe.js → agent-overview--PnZQbiS.js} +1 -1
  66. package/dist/client/assets/agent-settings-AuePgxNE.js +1 -0
  67. package/dist/client/assets/{agent-site-editor-CEhI3_3Z.js → agent-site-editor-Dzbd_nwj.js} +1 -1
  68. package/dist/client/assets/agent-site-editor-code-BQ2qIFBp.js +2 -0
  69. package/dist/client/assets/{agent-site-editor-content-CDfpLYm0.js → agent-site-editor-content-I4ul7yAQ.js} +2 -2
  70. package/dist/client/assets/{agent-site-editor-preview-WNAkww5C.js → agent-site-editor-preview-ChZS3PJI.js} +3 -3
  71. package/dist/client/assets/agent-view-BHHzTuyV.js +1 -0
  72. package/dist/client/assets/{agent-view-guard-DvQUI0V1.js → agent-view-guard-w0jt9Xeo.js} +1 -1
  73. package/dist/client/assets/{agents-list-CObp6lJb.js → agents-list-Br_biSiG.js} +1 -1
  74. package/dist/client/assets/{ai-providers-D3ERn1aD.js → ai-providers-D_cdmhC4.js} +1 -1
  75. package/dist/client/assets/{alert-dialog-Cp2DKCaA.js → alert-dialog-C3aY_yJw.js} +1 -1
  76. package/dist/client/assets/{alert-Clqdl7aR.js → alert-yBQ4R7_-.js} +1 -1
  77. package/dist/client/assets/{api-keys-DaFJqFvy.js → api-keys-CPtf4pK1.js} +1 -1
  78. package/dist/client/assets/api-keys-DduoJLke.js +1 -0
  79. package/dist/client/assets/app-editor-hUN-DTW_.js +1 -0
  80. package/dist/client/assets/{asset-utils-PfPLdECv.js → asset-utils-aI3pZanR.js} +1 -1
  81. package/dist/client/assets/{auth-BrLmBihg.js → auth-DJ59GovO.js} +1 -1
  82. package/dist/client/assets/{auth-catchall-Cl7oTkwa.js → auth-catchall-gaeaQgzD.js} +1 -1
  83. package/dist/client/assets/{auth-entry-CNGgF6Ba.js → auth-entry-BBtIvObS.js} +1 -1
  84. package/dist/client/assets/{auth-split-layout-DQwh8CIC.js → auth-split-layout-CUD4rmtG.js} +1 -1
  85. package/dist/client/assets/{authenticate-and-persist-oauth-B2zy35Vj.js → authenticate-and-persist-oauth-DZROLLbx.js} +1 -1
  86. package/dist/client/assets/{automation-list-row-CjcXeXwE.js → automation-list-row-1hBZHliW.js} +1 -1
  87. package/dist/client/assets/{automation-runs-BD5ZIGkp.js → automation-runs-evvol08d.js} +1 -1
  88. package/dist/client/assets/{automations-CS1mUqQ5.js → automations-BgspSKqV.js} +1 -1
  89. package/dist/client/assets/{autosend-gR5Q16Ik.js → autosend-0RKjkzJ3.js} +1 -1
  90. package/dist/client/assets/{avatar-DT4l4CGp.js → avatar-TzyTAv0e.js} +1 -1
  91. package/dist/client/assets/{badge-DkEJ8U-u.js → badge-CBvHT4W2.js} +1 -1
  92. package/dist/client/assets/{block-document-D8KCO97C.js → block-document-BxYHh7_L.js} +1 -1
  93. package/dist/client/assets/{blocks-preview-workspace-context-Cqex6ZSI.js → blocks-preview-workspace-context--TaVDJ6X.js} +1 -1
  94. package/dist/client/assets/{breadcrumb-BWA-hs-k.js → breadcrumb-DxgRqy9o.js} +1 -1
  95. package/dist/client/assets/{buckets-B_1NDeu-.js → buckets-BuCbJiAZ.js} +1 -1
  96. package/dist/client/assets/{build-improve-prompt-doc-Dgee_BLo.js → build-improve-prompt-doc-B3Yght0d.js} +1 -1
  97. package/dist/client/assets/{bulk-category-panel-CNsJoPO6.js → bulk-category-panel-BYEmvtdM.js} +1 -1
  98. package/dist/client/assets/{calendar-DifXWLQ2.js → calendar-DhHcogG2.js} +1 -1
  99. package/dist/client/assets/{capability-load-error-wP3oA9Nb.js → capability-load-error-D24jurVu.js} +1 -1
  100. package/dist/client/assets/category-editor-RYWEbSCN.js +1 -0
  101. package/dist/client/assets/{chart-B4o0da4o.js → chart-CKJrzaz-.js} +1 -1
  102. package/dist/client/assets/{chat-context-ChL7WN2U.js → chat-context-CDFEG_L-.js} +1 -1
  103. package/dist/client/assets/{chat-draft-C8cjqBXv.js → chat-draft-bNjBsvCn.js} +1 -1
  104. package/dist/client/assets/{checkbox-DPYd0GE1.js → checkbox-CFNy5ggI.js} +1 -1
  105. package/dist/client/assets/{choose-editor-jaVFOS3r.js → choose-editor-BCMBTGxZ.js} +1 -1
  106. package/dist/client/assets/{cli-auth-success-BuHD5-Ma.js → cli-auth-success-CLVV3kIA.js} +1 -1
  107. package/dist/client/assets/{client-icons-DbAlWXgF.js → client-icons-CEwmj9O8.js} +1 -1
  108. package/dist/client/assets/{collapsible-Dy8o0xUs.js → collapsible-BNufaH68.js} +1 -1
  109. package/dist/client/assets/{collection-detail-BeYuiuss.js → collection-detail-BTb2x4MW.js} +1 -1
  110. package/dist/client/assets/{collection-display-button-ByLd5rVn.js → collection-display-button-tz9JsEZx.js} +1 -1
  111. package/dist/client/assets/{collection-search-CuWCjS6d.js → collection-search-C2RG2e5J.js} +1 -1
  112. package/dist/client/assets/{collection-table-wrapper-BrX4iG6f.js → collection-table-wrapper-yV9vdeMr.js} +1 -1
  113. package/dist/client/assets/{collection-tabs-sbmCBX8D.js → collection-tabs-CA-gB6LT.js} +1 -1
  114. package/dist/client/assets/{combobox-B-tcdQh6.js → combobox-BNKKrbgQ.js} +1 -1
  115. package/dist/client/assets/{command-DavQMzl4.js → command-CBz2JIJh.js} +1 -1
  116. package/dist/client/assets/{companion-mcps-section-BoaiIO2s.js → companion-mcps-section-ARCn5F6_.js} +1 -1
  117. package/dist/client/assets/{connect-fIpSHD9U.js → connect-LIoq5BO0.js} +1 -1
  118. package/dist/client/assets/{connect-layout-wd1v6Pwi.js → connect-layout-D-vfRaoG.js} +1 -1
  119. package/dist/client/assets/{connection-BbOsKsIS.js → connection-BJjKfm3v.js} +1 -1
  120. package/dist/client/assets/{connection-card-rmPhqAiw.js → connection-card-TT_MwfFx.js} +1 -1
  121. package/dist/client/assets/{connection-detail-OuprsHor.js → connection-detail-GtAfvYCe.js} +1 -1
  122. package/dist/client/assets/{connection-form-helpers-xq1JVrlH.js → connection-form-helpers-Bg70Jvku.js} +1 -1
  123. package/dist/client/assets/{connections-BNmysMRu.js → connections-CEA8JdbO.js} +1 -1
  124. package/dist/client/assets/{create-organization-dialog-CZ3KvKHK.js → create-organization-dialog-BMknOnpY.js} +1 -1
  125. package/dist/client/assets/{decofile-api-B-ltS0w-.js → decofile-api-C_AZXr3X.js} +1 -1
  126. package/dist/client/assets/{decopilot-Gurm5JcG.js → decopilot-DZ3ibpY_.js} +1 -1
  127. package/dist/client/assets/{dialog-C--_G9bM.js → dialog-lfdH0lhI.js} +1 -1
  128. package/dist/client/assets/{discover-DaVcoHow.js → discover-DJv1U60H.js} +1 -1
  129. package/dist/client/assets/{domain-settings-DMLNW66S.js → domain-settings-DNjlHce_.js} +1 -1
  130. package/dist/client/assets/{download-app-dialog-BEPIC2WD.js → download-app-dialog-Cpkyx2ph.js} +1 -1
  131. package/dist/client/assets/{drawer-CZUY_VVA.js → drawer-CDjyI_Jg.js} +1 -1
  132. package/dist/client/assets/{editor-1m8LO4yq.js → editor-CxCZwxPG.js} +1 -1
  133. package/dist/client/assets/{empty-state-DULFVqUb.js → empty-state-CRwclXBM.js} +1 -1
  134. package/dist/client/assets/{empty-state-CE_mQRYC.js → empty-state-CnzoHD25.js} +1 -1
  135. package/dist/client/assets/{extract-connection-data-Dt8HdsMK.js → extract-connection-data-B5VokLhW.js} +1 -1
  136. package/dist/client/assets/{feature-gate-K-34Dfx0.js → feature-gate--43iJYr4.js} +1 -1
  137. package/dist/client/assets/{feature-paywall-D81N--IK.js → feature-paywall-BpCcxWM5.js} +1 -1
  138. package/dist/client/assets/{file-explorer-DkvAGvo_.js → file-explorer-gOjI5bwl.js} +1 -1
  139. package/dist/client/assets/{file-preview-9riFcqVE.js → file-preview-Do5Q3f1c.js} +1 -1
  140. package/dist/client/assets/{file-share-button-CxSyaqG1.js → file-share-button-DIj22Ecz.js} +1 -1
  141. package/dist/client/assets/{file-type-icon-BEvHZV8X.js → file-type-icon-BSsIsHaI.js} +1 -1
  142. package/dist/client/assets/{folder-icon-BppDSJES.js → folder-icon-BA4vqw44.js} +1 -1
  143. package/dist/client/assets/{form-BBJYOW9S.js → form-Dx6ZBu4I.js} +1 -1
  144. package/dist/client/assets/{gateway-client-BwsPUN8V.js → gateway-client-CRExBxKg.js} +1 -1
  145. package/dist/client/assets/{general-BZBOXoTC.js → general-_6WM8Zra.js} +1 -1
  146. package/dist/client/assets/{github-icon-CMPb9KoS.js → github-icon-BJK5yOYO.js} +1 -1
  147. package/dist/client/assets/{home-XMANan_t.js → home-C2oIZ78H.js} +1 -1
  148. package/dist/client/assets/{hooks-BT7beeUw.js → hooks-BwYFpgJq.js} +1 -1
  149. package/dist/client/assets/{hooks-B578kLR9.js → hooks-mgPEmVyE.js} +1 -1
  150. package/dist/client/assets/{icon-button-B5fNLlz3.js → icon-button-70-sYY4G.js} +1 -1
  151. package/dist/client/assets/{index-D0SVmTgB.js → index-B0zSNJbI.js} +1 -1
  152. package/dist/client/assets/{index-BO5Kkf0J.js → index-B3ftKcNC.js} +1 -1
  153. package/dist/client/assets/{index-BmK9sOLy.js → index-BD2EmVnh.js} +1 -1
  154. package/dist/client/assets/{index-DwbqeRvp.js → index-BepxzUTL.js} +1 -1
  155. package/dist/client/assets/{index-29FPmOVD.js → index-BfRdTBn9.js} +1 -1
  156. package/dist/client/assets/{index-DK-m4zyI.js → index-BuXlZ7Xk.js} +1 -1
  157. package/dist/client/assets/{index-B96PBdkB.js → index-C7OHOxwl.js} +1 -1
  158. package/dist/client/assets/{index-DXNGe5Ja.js → index-CBwjcqc7.js} +1 -1
  159. package/dist/client/assets/{index-DondjAWZ.js → index-CJdWCH17.js} +1 -1
  160. package/dist/client/assets/{index-DuN9g6_W.js → index-CWNSMfD0.js} +1 -1
  161. package/dist/client/assets/{index-fmzc-5YR.js → index-D5GfY9ep.js} +2 -2
  162. package/dist/client/assets/{index-sY3wVVMd.js → index-Dfk55oii.js} +1 -1
  163. package/dist/client/assets/{index-CEG_XSgp.js → index-K7AY71Ty.js} +1 -1
  164. package/dist/client/assets/{index-BHJ4Cdqa.js → index-pVhbfkhf.js} +1 -1
  165. package/dist/client/assets/{index-redirect-BINM_u22.js → index-redirect-Dc85XyrD.js} +1 -1
  166. package/dist/client/assets/{infiniteQueryObserver-C8r1uJuJ.js → infiniteQueryObserver-8LFHG5jD.js} +1 -1
  167. package/dist/client/assets/{infra-billing-Cf7vNa5x.js → infra-billing-md-WcFQk.js} +1 -1
  168. package/dist/client/assets/{input-0m53gxPF.js → input--eOKSICy.js} +1 -1
  169. package/dist/client/assets/{input-DnuTI592.js → input-BFIZ4TYm.js} +1 -1
  170. package/dist/client/assets/{input-Cd4zhIdI.js → input-i_Y4EUYe.js} +1 -1
  171. package/dist/client/assets/{integration-icon-BK2IoSQO.js → integration-icon-BKsmKoE7.js} +1 -1
  172. package/dist/client/assets/{label-DGWQJyZd.js → label-DwreXpUN.js} +1 -1
  173. package/dist/client/assets/{last-preview-page-CNeddLx4.js → last-preview-page-i7VIjFLQ.js} +1 -1
  174. package/dist/client/assets/{layout-BczTtTyQ.js → layout-MShO-PcN.js} +1 -1
  175. package/dist/client/assets/{legacy-agents-deep-B_KvmQGx.js → legacy-agents-deep-DEkE_Ifm.js} +1 -1
  176. package/dist/client/assets/{legacy-main-redirect-BTufX_Ez.js → legacy-main-redirect-5YTSB2tk.js} +1 -1
  177. package/dist/client/assets/{library-BiwfkQAe.js → library-CdCM9J8p.js} +1 -1
  178. package/dist/client/assets/{login-C2OMCq-b.js → login-Bwh4jMgb.js} +1 -1
  179. package/dist/client/assets/{markdown-CcgXCeWS.js → markdown-WJDeiHFM.js} +1 -1
  180. package/dist/client/assets/{mcp-app-renderer-qUU136mr.js → mcp-app-renderer-DY6yKadW.js} +1 -1
  181. package/dist/client/assets/{mcp-oauth-C5fzXDUg.js → mcp-oauth-C6Sgd7FV.js} +1 -1
  182. package/dist/client/assets/{members-TO4zbHgb.js → members-Bmk2EDKN.js} +1 -1
  183. package/dist/client/assets/{message-templates-BS1amKSu.js → message-templates-CrgEJOAj.js} +1 -1
  184. package/dist/client/assets/{mini-report-page-D-dwO5gS.js → mini-report-page-LtzYPO_i.js} +1 -1
  185. package/dist/client/assets/{mock-board-wUKFGvu9.js → mock-board-zZsRfmrF.js} +3 -3
  186. package/dist/client/assets/{monaco-editor-ZdKL9FIJ.js → monaco-editor-Do8S48ks.js} +1 -1
  187. package/dist/client/assets/{monitoring-stats-row-Bs007IMN.js → monitoring-stats-row-Bx4cWgra.js} +1 -1
  188. package/dist/client/assets/{multi-select-DaeS8uML.js → multi-select-D469W8sD.js} +1 -1
  189. package/dist/client/assets/{mustache-BtYFB6VI.js → mustache-CmNRGKWY.js} +1 -1
  190. package/dist/client/assets/{oauth-callback-BHFlZWOH.js → oauth-callback-CxtrbO-9.js} +1 -1
  191. package/dist/client/assets/{oauth-callback-ai-provider-qukMAzP9.js → oauth-callback-ai-provider-DcCeNsRI.js} +1 -1
  192. package/dist/client/assets/{onboarding-r4Ej3daV.js → onboarding-DRSUQvyY.js} +1 -1
  193. package/dist/client/assets/{optimistic-project-sidebar-views-IS3aIvG3.js → optimistic-project-sidebar-views-DFzGWNsL.js} +1 -1
  194. package/dist/client/assets/{org-file-open-context-CsLVzm0L.js → org-file-open-context-CVN97RZc.js} +1 -1
  195. package/dist/client/assets/{organization-choice-B8Jprsi2.js → organization-choice-wdWQxrHa.js} +1 -1
  196. package/dist/client/assets/{orgs-7TtpxkU6.js → orgs-QoXHYZri.js} +1 -1
  197. package/dist/client/assets/{page-seo-form-BA31O6yp.js → page-seo-form-cedG3AU7.js} +1 -1
  198. package/dist/client/assets/{pair-Ax9qD1ST.js → pair-CniwTMo1.js} +1 -1
  199. package/dist/client/assets/{plan-ladder-V8GNYGA4.js → plan-ladder-B8UbPvkZ.js} +1 -1
  200. package/dist/client/assets/{popover-DjiStQSG.js → popover-B9xJOTEM.js} +1 -1
  201. package/dist/client/assets/{post-calendar-CB4Ut6FT.js → post-calendar-CFNb_x36.js} +1 -1
  202. package/dist/client/assets/{post-editor-D2tKW_xB.js → post-editor-DJPJ_7wF.js} +1 -1
  203. package/dist/client/assets/{preview-content-C6BpJMpN.js → preview-content-Djz6zUXX.js} +1 -1
  204. package/dist/client/assets/{preview-dialog-C5Pqo3dG.js → preview-dialog-BhpyTFJl.js} +1 -1
  205. package/dist/client/assets/{primitives-BAd94TKT.js → primitives-Jinax-v_.js} +1 -1
  206. package/dist/client/assets/{profile-Bqnl1vMp.js → profile-CgTpTnu4.js} +1 -1
  207. package/dist/client/assets/{project-app-view-CD9Zdt9k.js → project-app-view-DVhZbG_O.js} +1 -1
  208. package/dist/client/assets/{project-feed-DDSjygkw.js → project-feed-BtJsqM4V.js} +1 -1
  209. package/dist/client/assets/{project-icon-Bb8n1f1c.js → project-icon-9U2WquDG.js} +1 -1
  210. package/dist/client/assets/project-reports-CxHRzGXg.js +1 -0
  211. package/dist/client/assets/project-tasks-BbRhvRR0.js +1 -0
  212. package/dist/client/assets/{prompts-KM7eCzO-.js → prompts-B6m8lARO.js} +1 -1
  213. package/dist/client/assets/record-editor-BdXa2XHA.js +1 -0
  214. package/dist/client/assets/{redirect-editor-DRxzpjvy.js → redirect-editor-CH8vgP-f.js} +1 -1
  215. package/dist/client/assets/registry-D9E3wLoC.js +2 -0
  216. package/dist/client/assets/{registry-layout-BZ34q9_g.js → registry-layout-DsDx2i4p.js} +1 -1
  217. package/dist/client/assets/{reports-DVYraJFa.js → reports-DoC4qpNt.js} +1 -1
  218. package/dist/client/assets/{reports-onboarding-qyjOlUrU.js → reports-onboarding-BmQpXMqt.js} +1 -1
  219. package/dist/client/assets/reports-qsBAApcr.js +1 -0
  220. package/dist/client/assets/{reports-tab-CvviuXSm.js → reports-tab-CurzU_Px.js} +2 -2
  221. package/dist/client/assets/{repositories-Cr9zCxlF.js → repositories-hx9ULw-X.js} +1 -1
  222. package/dist/client/assets/{repository-import-picker-f-9x5_dE.js → repository-import-picker-D6aVqpVy.js} +1 -1
  223. package/dist/client/assets/{repository-picker-BUcKVsp1.js → repository-picker-DnXw9RPW.js} +1 -1
  224. package/dist/client/assets/{require-capability-DIAZVIUA.js → require-capability-Me9T92M_.js} +1 -1
  225. package/dist/client/assets/{required-auth-layout-C6uKGAkK.js → required-auth-layout-CQKtej-F.js} +1 -1
  226. package/dist/client/assets/{reset-password-B9Kytu_p.js → reset-password-Csx-qFuK.js} +1 -1
  227. package/dist/client/assets/{resizable-BCEp9Elx.js → resizable-SGt69Yx0.js} +1 -1
  228. package/dist/client/assets/{review-settings-qXj6dD0l.js → review-settings-qJuTO7en.js} +1 -1
  229. package/dist/client/assets/{rich-text-link-control-BrmBB2j2.js → rich-text-link-control-BcTvBRHf.js} +1 -1
  230. package/dist/client/assets/{roles-D6erruW_.js → roles-By0QS5jD.js} +1 -1
  231. package/dist/client/assets/{route-CmZQ1AQ0.js → route-ArFb8NKa.js} +1 -1
  232. package/dist/client/assets/{route-tyO-k881.js → route-ChYtCcTU.js} +1 -1
  233. package/dist/client/assets/{route-M1-d0G6M.js → route-DRvCh4mQ.js} +1 -1
  234. package/dist/client/assets/{route-page-header-BUr3e-ra.js → route-page-header-BYdDlPxf.js} +1 -1
  235. package/dist/client/assets/runnable-block-editor-DXLcjI9M.js +16 -0
  236. package/dist/client/assets/{sandbox-lifecycle-context-CZpPS0j1.js → sandbox-lifecycle-context-KqllpPFh.js} +1 -1
  237. package/dist/client/assets/{schema-CHL8_jWB.js → schema-B8zTDh4T.js} +1 -1
  238. package/dist/client/assets/{scroll-area-CXTYyDBj.js → scroll-area-CLDYN-1F.js} +1 -1
  239. package/dist/client/assets/{search-input-OeEY_aWb.js → search-input-Jjxs_ylZ.js} +1 -1
  240. package/dist/client/assets/{search-toggle-B4GHPbD5.js → search-toggle-BMo4jYM9.js} +1 -1
  241. package/dist/client/assets/{secrets-DpBLF-Q6.js → secrets-hLdRHQSc.js} +1 -1
  242. package/dist/client/assets/{sections-editor-DN84ShBs.js → sections-editor-C4Zrjgg_.js} +1 -1
  243. package/dist/client/assets/{select-model-CmLziz3K.js → select-model-CHXHQ2_o.js} +1 -1
  244. package/dist/client/assets/{select-D0baifrN.js → select-rsdXMOmu.js} +1 -1
  245. package/dist/client/assets/{seo-editor-CZ2WoqrW.js → seo-editor-D8h7PsFd.js} +1 -1
  246. package/dist/client/assets/{separator-BjkdR6rZ.js → separator-BOJFx7BB.js} +1 -1
  247. package/dist/client/assets/{settings-tab-C0QSOJCY.js → settings-tab-D3sm6hYV.js} +1 -1
  248. package/dist/client/assets/{sheet-5ssYXkXq.js → sheet-B6sXHBfO.js} +1 -1
  249. package/dist/client/assets/{shell-layout-Dv1BAQBH.js → shell-layout-CPue6FpY.js} +1 -1
  250. package/dist/client/assets/{sidebar-DIKvlDwY.js → sidebar-BY7OkUYu.js} +1 -1
  251. package/dist/client/assets/{skill-preview-DaL0R4QE.js → skill-preview-Ca4rmhYB.js} +1 -1
  252. package/dist/client/assets/{skills-oEqOsX33.js → skills-IyoOyuaB.js} +1 -1
  253. package/dist/client/assets/{sso-C2KqzLvQ.js → sso-BAwCy2Jc.js} +1 -1
  254. package/dist/client/assets/{store-DU14BrMb.js → store-DOxioaPl.js} +1 -1
  255. package/dist/client/assets/store-registry-PuCzRjMU.js +2 -0
  256. package/dist/client/assets/{switch-C6Il1ZWh.js → switch-3_30Hq56.js} +1 -1
  257. package/dist/client/assets/{synced-repos-_SV0wn-k.js → synced-repos-CNR5qFdz.js} +1 -1
  258. package/dist/client/assets/{table-CTz-n2bW.js → table-BcLHZANQ.js} +1 -1
  259. package/dist/client/assets/{tabs-DSWYIolk.js → tabs-Bj4_8GUh.js} +1 -1
  260. package/dist/client/assets/{task-board-DKe3wdiq.js → task-board-CslA-FwT.js} +1 -1
  261. package/dist/client/assets/{task-route-DBh2fSaQ.js → task-route-BNtI9f6O.js} +1 -1
  262. package/dist/client/assets/{task-status-BNxu2J3_.js → task-status-Drhs7Fwh.js} +1 -1
  263. package/dist/client/assets/{taskboard-analytics-D-F7-GoP.js → taskboard-analytics-D5zjpsdj.js} +1 -1
  264. package/dist/client/assets/tasks-D2FpMcF2.js +1 -0
  265. package/dist/client/assets/{tasks-D4I3SBXQ.js → tasks-DdqceGp0.js} +1 -1
  266. package/dist/client/assets/{textarea-CaQxICAV.js → textarea-D8cpAa8h.js} +1 -1
  267. package/dist/client/assets/{thread-button-CfjjFhjy.js → thread-button-DGZyQ1E_.js} +1 -1
  268. package/dist/client/assets/{thread-intent-Cb9GZZN5.js → thread-intent-CwhSEEGz.js} +1 -1
  269. package/dist/client/assets/{thread-route-DsBIhxCv.js → thread-route-BiPK2LUJ.js} +1 -1
  270. package/dist/client/assets/{thread-route-Du4cHT2w.js → thread-route-i4MDHqFd.js} +1 -1
  271. package/dist/client/assets/{thread-sheet-body-_30HS_im.js → thread-sheet-body-b02tBO2e.js} +1 -1
  272. package/dist/client/assets/{toggle-group-tppf_gd5.js → toggle-group-DPMwuwMR.js} +1 -1
  273. package/dist/client/assets/{toolbar-icon-button-DA2hOIxm.js → toolbar-icon-button-DvBSEsXy.js} +1 -1
  274. package/dist/client/assets/{tooltip-zizb--cq.js → tooltip-OTJWd5I_.js} +1 -1
  275. package/dist/client/assets/{track-CnM6YABU.js → track-CVuEE-Ja.js} +1 -1
  276. package/dist/client/assets/{types-D5VCiqQr.js → types-D_sN4rB-.js} +1 -1
  277. package/dist/client/assets/{usage-stats-1eJOdcXv.js → usage-stats-Dg30HMJj.js} +1 -1
  278. package/dist/client/assets/{use-ai-providers-COtUB3xq.js → use-ai-providers-BPI8963x.js} +1 -1
  279. package/dist/client/assets/{use-automations-BUrDWVbs.js → use-automations-CRWusD_x.js} +1 -1
  280. package/dist/client/assets/{use-autosave-qlFdTnRf.js → use-autosave-j39rI6vk.js} +1 -1
  281. package/dist/client/assets/{use-connect-companion-BGRDt-7V.js → use-connect-companion-B5z-NExP.js} +1 -1
  282. package/dist/client/assets/{use-connection-B6mAxHy2.js → use-connection-uV-VP0gX.js} +1 -1
  283. package/dist/client/assets/{use-copy-CkPsgpMc.js → use-copy-FLJ5XV9J.js} +1 -1
  284. package/dist/client/assets/{use-create-virtual-mcp-CvGsbVkj.js → use-create-virtual-mcp-P1B33NrF.js} +1 -1
  285. package/dist/client/assets/{use-date-fns-locale-BzqONKX7.js → use-date-fns-locale-BuofAadj.js} +1 -1
  286. package/dist/client/assets/{use-debounced-autosave-0Vkdi2aW.js → use-debounced-autosave-CF81qzvu.js} +1 -1
  287. package/dist/client/assets/{use-debounced-value-DrvAsscn.js → use-debounced-value-CrGSRGNy.js} +1 -1
  288. package/dist/client/assets/{use-deco-credits-DMSGgIrA.js → use-deco-credits-z8utUejJ.js} +1 -1
  289. package/dist/client/assets/{use-decopilot-events-D-Dz9w48.js → use-decopilot-events-DjboVZiO.js} +1 -1
  290. package/dist/client/assets/{use-delete-connection-C5Gjl97D.js → use-delete-connection-B_xNjAKC.js} +1 -1
  291. package/dist/client/assets/{use-deployment-admin-BjSD_HI7.js → use-deployment-admin-Co5-jiSO.js} +1 -1
  292. package/dist/client/assets/{use-entitlements-BJ2fU3xk.js → use-entitlements-BqqEvjPg.js} +1 -1
  293. package/dist/client/assets/{use-fast-preview-draft-url-q4MoMELy.js → use-fast-preview-draft-url-B_fFA7zf.js} +1 -1
  294. package/dist/client/assets/{use-file-configs-B9J96Cm2.js → use-file-configs-B1pr8ET8.js} +1 -1
  295. package/dist/client/assets/{use-in-settings-CmHVpB2J.js → use-in-settings-C-Qktb6a.js} +1 -1
  296. package/dist/client/assets/{use-infinite-scroll-CAlJFrTh.js → use-infinite-scroll-D7ftQyZ1.js} +1 -1
  297. package/dist/client/assets/{use-join-requests-DRcItn4u.js → use-join-requests-UXS5L54E.js} +1 -1
  298. package/dist/client/assets/{use-main-panel-tabs-YYCWz3ix.js → use-main-panel-tabs-Q8s4YRRz.js} +1 -1
  299. package/dist/client/assets/{use-mcp-auth-status-BOuLM5gU.js → use-mcp-auth-status-DsC-McEq.js} +1 -1
  300. package/dist/client/assets/{use-mcp-client-CxqTiuzZ.js → use-mcp-client-DucDZTqc.js} +1 -1
  301. package/dist/client/assets/{use-mcp-prompts-iHzcvLJ6.js → use-mcp-prompts-C7O_WXgf.js} +1 -1
  302. package/dist/client/assets/{use-mcp-tools-TV22SR83.js → use-mcp-tools-Dar25Qt8.js} +1 -1
  303. package/dist/client/assets/{use-members-BFcRJRUN.js → use-members-Cz23u8UI.js} +1 -1
  304. package/dist/client/assets/{use-mobile-BUhktowg.js → use-mobile-CLWKkyXU.js} +1 -1
  305. package/dist/client/assets/{use-navigate-to-agent-BBKSnPWE.js → use-navigate-to-agent-DkyDtkl9.js} +1 -1
  306. package/dist/client/assets/{use-open-billing-url-pkL0KGK6.js → use-open-billing-url-CwIiL2GE.js} +1 -1
  307. package/dist/client/assets/{use-org-auth-client-D8SU0dQC.js → use-org-auth-client-BlcnnSM0.js} +1 -1
  308. package/dist/client/assets/{use-org-fs-v5nOxtD0.js → use-org-fs-UwG8j-Jn.js} +1 -1
  309. package/dist/client/assets/{use-org-repo-syncs-Bo1SAH6u.js → use-org-repo-syncs-CGumLqpP.js} +1 -1
  310. package/dist/client/assets/{use-org-sso-RpMHawvG.js → use-org-sso-Z0-UYTzJ.js} +1 -1
  311. package/dist/client/assets/{use-organization-roles-B_FlXSsl.js → use-organization-roles-DIOxh3px.js} +1 -1
  312. package/dist/client/assets/{use-organization-settings-f8Kb8g_i.js → use-organization-settings-8Qf5CO0q.js} +1 -1
  313. package/dist/client/assets/{use-panel-navigate-BxPg1yeZ.js → use-panel-navigate-JtzJfijF.js} +1 -1
  314. package/dist/client/assets/{use-project-native-view-presence-D4PcfZz_.js → use-project-native-view-presence-zLKQQ3F3.js} +1 -1
  315. package/dist/client/assets/{use-project-scope-CjIHPrZt.js → use-project-scope-ooe9AxCw.js} +1 -1
  316. package/dist/client/assets/{use-registry-connections-BhzX8XJt.js → use-registry-connections-BfqOdrxb.js} +1 -1
  317. package/dist/client/assets/{use-releases-BbtuIcVh.js → use-releases-BmxVYWob.js} +1 -1
  318. package/dist/client/assets/{use-reports-diagnostic-BqU_lr8I.js → use-reports-diagnostic-Ctc-6YjU.js} +1 -1
  319. package/dist/client/assets/{use-route-default-main-Cv1ggVfc.js → use-route-default-main-BSPrYjfJ.js} +1 -1
  320. package/dist/client/assets/{use-secrets-brlU-7jS.js → use-secrets-xjZ491Gh.js} +1 -1
  321. package/dist/client/assets/{use-section-preview-base-Efm1fB5a.js → use-section-preview-base-B8wYavun.js} +1 -1
  322. package/dist/client/assets/{use-session-runtime-N5BeCPEE.js → use-session-runtime-CmBpc3xW.js} +1 -1
  323. package/dist/client/assets/{use-tags-C9WZJKFW.js → use-tags-BGbYsMTn.js} +1 -1
  324. package/dist/client/assets/{use-task-board-analytics-BKjmCR55.js → use-task-board-analytics-K0YzQxvj.js} +1 -1
  325. package/dist/client/assets/{use-task-metadata-BX8DOL0g.js → use-task-metadata-BLKvYi7z.js} +1 -1
  326. package/dist/client/assets/{use-thread-outputs-Cyl9wrzu.js → use-thread-outputs-BiZSgJdo.js} +1 -1
  327. package/dist/client/assets/{use-view-mode-BxRB1gja.js → use-view-mode-BcKnCYw2.js} +1 -1
  328. package/dist/client/assets/{use-virtual-mcp-DJlu-91-.js → use-virtual-mcp-DtPQZrM3.js} +1 -1
  329. package/dist/client/assets/useInfiniteQuery-Ukl_Kss8.js +1 -0
  330. package/dist/client/assets/{useQueries-jWWqJE84.js → useQueries-BZJlFP8l.js} +1 -1
  331. package/dist/client/assets/useSuspenseInfiniteQuery-BHNhmGMF.js +1 -0
  332. package/dist/client/assets/{users-FxfWAMqM.js → users-CJ2f925J.js} +1 -1
  333. package/dist/client/assets/{utils-Ho1uEbeL.js → utils-C9aDXnK4.js} +1 -1
  334. package/dist/client/assets/{variant-calendar-BGruXdFw.js → variant-calendar-MSXSWdKs.js} +1 -1
  335. package/dist/client/assets/{variant-matcher-override-Bq6VeSQ8.js → variant-matcher-override-ChtiN8zH.js} +1 -1
  336. package/dist/client/assets/{view-mode-toggle-BHtFEfW-.js → view-mode-toggle-Dcb2ZdjF.js} +1 -1
  337. package/dist/client/assets/{virtual-mcp-mb0zKoMr.js → virtual-mcp-BEHAGFsi.js} +1 -1
  338. package/dist/client/index.html +1 -1
  339. package/dist/server/cli.js +1 -1
  340. package/dist/server/server.js +1 -1
  341. package/package.json +1 -1
  342. package/dist/client/assets/agent-app-Din-9LnG.js +0 -1
  343. package/dist/client/assets/agent-deck-CXES1XUt.js +0 -1
  344. package/dist/client/assets/agent-file-BA3EHF-e.js +0 -1
  345. package/dist/client/assets/agent-library-file-N4jZXvcS.js +0 -1
  346. package/dist/client/assets/agent-settings-BATbyIjT.js +0 -1
  347. package/dist/client/assets/agent-site-editor-code-7-NVo0xn.js +0 -2
  348. package/dist/client/assets/agent-view-SZrC183A.js +0 -1
  349. package/dist/client/assets/api-keys-Bv6qak-q.js +0 -1
  350. package/dist/client/assets/app-editor-GK1LWSuy.js +0 -1
  351. package/dist/client/assets/category-editor-B4_X4ad1.js +0 -1
  352. package/dist/client/assets/project-reports-DJxSltW7.js +0 -1
  353. package/dist/client/assets/project-tasks-BOvk6C5p.js +0 -1
  354. package/dist/client/assets/record-editor-DDVq3M39.js +0 -1
  355. package/dist/client/assets/registry-BOkJLVB2.js +0 -2
  356. package/dist/client/assets/reports-D1_eGgks.js +0 -1
  357. package/dist/client/assets/runnable-block-editor-nGBfZiGl.js +0 -16
  358. package/dist/client/assets/store-registry-C-Xpsd9_.js +0 -2
  359. package/dist/client/assets/tasks-DFMbWCSN.js +0 -1
  360. package/dist/client/assets/useInfiniteQuery-DrRYdT6d.js +0 -1
  361. package/dist/client/assets/useSuspenseInfiniteQuery-pDODlTU-.js +0 -1
@@ -2076,7 +2076,7 @@ Usage: deco services <up|down|status>`),process.exit(1)}}var W1$=O(()=>{fg()});f
2076
2076
  `.execute($);if(Number(W.rows[0]?.cnt)===0){console.warn(`Failed to migrate ${G}/${K}, keeping in old table`);continue}}await Ku`
2077
2077
  DELETE FROM kysely_migration WHERE name = ${Q}
2078
2078
  `.execute($)}}async function x5$($){await yY4($),await gY4($);let Z=new _5$({db:$,provider:{getMigrations:()=>Promise.resolve(Ue0)}}),{error:Q,results:X}=await Z.migrateToLatest(),Y=0;if(X?.forEach((J)=>{if(J.status==="Success")Y++;else if(J.status==="Error")console.error(`Failed to execute migration "${J.migrationName}"`)}),Q)throw console.error("Failed to migrate"),console.error(Q),Q;return Y}async function hY4($){let{keepOpen:Z=!1,database:Q,skipBetterAuth:X=!1}=$??{},Y="skipped";if(!X&&!Q)Y=await Mt0();let J=Q??l$(),G=async()=>{if(!Z&&!Q)await cO(J).catch((K)=>{console.warn("Warning: Error closing database:",K)})};try{let K=await x5$(J.db);return await G(),{betterAuth:Y,kysely:K}}catch(K){throw await G(),K}}async function uY4(){let $=l$(),Z=new _5$({db:$.db,provider:{getMigrations:()=>Promise.resolve(Ue0)}}),{error:Q,results:X}=await Z.migrateDown();if(X?.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}"`)}),Q)throw console.error("Failed to rollback migration"),console.error(Q),Q}var b5$=O(()=>{C5$();It0();iQ()});async function bJ0($){let Z={...process.env},Q=q90($,Z);console.log(Fq1(Q.settings.encryptionKey));let X=Q.settings.betterAuthSecret||(Q.settings.localMode?u$$(Q.settings.dataDir):""),{ensureServices:Y}=await Promise.resolve().then(() => (yY0(),bY0)),{outputs:J,services:G}=await Y({home:Q.settings.dataDir,externalDatabaseUrl:Q.externalDatabaseUrl,externalNatsUrl:Q.externalNatsUrl});if(!Q.skipMigrations){let{migrateBetterAuth:W}=await Promise.resolve().then(() => (It0(),m$$));await W(J.databaseUrl);let{createDatabase:H}=await Promise.resolve().then(() => (iQ(),Y$$)),{migrateToLatest:F}=await Promise.resolve().then(() => (b5$(),f5$)),U=H(J.databaseUrl);await F({keepOpen:!0,database:U,skipBetterAuth:!0})}let K={...Q.settings,betterAuthSecret:X,databaseUrl:J.databaseUrl,natsUrls:J.natsUrls,...J.s3?{s3Endpoint:J.s3.endpoint,s3Bucket:J.s3.bucket,s3AccessKeyId:J.s3.accessKeyId,s3SecretAccessKey:J.s3.secretAccessKey,s3ForcePathStyle:J.s3.forcePathStyle}:{}};return H1$(K),{settings:K,services:G.map((W)=>({name:W.name==="PostgreSQL"?"Postgres":W.name,port:W.port})),managedServiceNames:G.filter((W)=>W.owner==="managed").map((W)=>W.name)}}var Ne0=O(()=>{fg();l$$();t1()});var u5$={};e(u5$,{updateService:()=>oz,subscribeCliState:()=>Oe0,setTuiConsoleIntercepted:()=>yJ0,setServerUrl:()=>vo,setMigrationsDone:()=>_o,setDevMode:()=>mY4,resetCliStateForTests:()=>lY4,isTuiConsoleIntercepted:()=>gJ0,getCliState:()=>Le0,addLogEntry:()=>oO});function y5$(){return[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}]}function g5$(){return{services:y5$(),migrationsStatus:"pending",serverUrl:null,logs:[]}}function lY4(){bY=g5$()}function Co(){for(let $ of Be0)$()}function Le0(){return bY}function Oe0($){return Be0.add($),()=>Be0.delete($)}function oz($){bY={...bY,services:bY.services.map((Z)=>Z.name===$.name?$:Z)},Co()}function _o(){bY={...bY,migrationsStatus:"done"},Co()}function vo($){bY={...bY,serverUrl:$},Co()}function oO($){let Z=[...bY.logs,$];bY={...bY,logs:Z.length>500?Z.slice(-500):Z},Co()}function mY4(){bY={...bY,services:[...y5$(),{name:"API",status:"pending",port:0},{name:"Vite",status:"pending",port:0}]},Co()}function yJ0($){h5$=$}function gJ0(){return h5$}var bY,Be0,h5$=!1;var rz=O(()=>{bY=g5$();Be0=new Set});import{createServer as l5$}from"net";function cY4($){return new Promise((Z)=>{let Q=l5$();Q.once("error",()=>Z(!1)),Q.listen($,"0.0.0.0",()=>{Q.close(()=>Z(!0))})})}async function xo($){if(await cY4($))return $;let Z=await new Promise((Q,X)=>{let Y=l5$();Y.once("error",X),Y.listen(0,"0.0.0.0",()=>{let J=Y.address(),G=typeof J==="object"&&J?J.port:0;Y.close(()=>Q(G))})});return console.warn(`Port ${$} is in use, using port ${Z} instead.`),Z}var De0=()=>{};var je0={};e(je0,{startDevServer:()=>iY4,pipeToLogStore:()=>we0});import{join as dY4}from"path";function we0($){let Z=$.getReader(),Q=new TextDecoder,X="";function Y(){let J=X.split(`
2079
- `);X=J.pop()??"";for(let G of J){let K=Bun.stripANSI(G).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;oO({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:K})}}(async()=>{try{for(;;){let{done:J,value:G}=await Z.read();if(J)break;X+=Q.decode(G,{stream:!0}),Y()}}catch{}if(X.trim()){let J=Bun.stripANSI(X).replace(/^\[\d+\]\s*/,"").trim();if(J)oO({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:J})}})()}async function iY4($){let{baseUrl:Z,noTui:Q}=$,X=process.env.HOST==="0.0.0.0"&&Boolean(process.env.PORT),Y=X?process.env.PORT:$.vitePort,J=Z||`http://localhost:${Y}`,G=X?await xo(Number(Y)+1):await xo(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await bJ0({port:String(G),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let D of W)oz({name:D.name,status:"ready",port:D.port});_o();let F=dY4(import.meta.dir,"..","..","..","..",".."),U=Q===!0,N=Bun.spawn(["bun","run","dev:servers"],{cwd:F,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:J,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.natsCredsPath?{NATS_CREDS:K.natsCredsPath}:{}},stdio:["inherit",U?"inherit":"pipe",U?"inherit":"pipe"]});if(!U)we0(N.stdout),we0(N.stderr);vo(J),oz({name:"Vite",status:"ready",port:Number(Y)}),oz({name:"API",status:"ready",port:Number(K.port)});let L=async(D)=>{if(N.kill(D),await N.exited,H.length>0){let{stopServices:w}=await Promise.resolve().then(() => (yY0(),bY0));await w(K.dataDir)}};return process.on("SIGINT",()=>L("SIGINT")),process.on("SIGTERM",()=>L("SIGTERM")),{port:Number(Y),process:N}}var Ee0=O(()=>{Ne0();rz();De0()});var hJ0;var ze0=O(()=>{hJ0={name:"decocms",version:"4.383.1",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@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 nY4,Text as m5$}from"ink";import{jsx as tY4,jsxs as c5$}from"react/jsx-runtime";function d5$({version:$}){return c5$(nY4,{flexDirection:"column",marginTop:1,children:[GJ0.map((Z,Q)=>tY4(m5$,{color:KJ0[Q],children:Z},Q)),c5$(m5$,{dimColor:!0,children:[" v",$]})]})}var i5$=O(()=>{Do()});import{Box as az,Text as rO}from"ink";import{Spinner as oY4}from"@inkjs/ui";import{jsx as Z3,jsxs as Wu}from"react/jsx-runtime";function p5$({status:$}){if($==="pending")return Z3(oY4,{label:""});return Z3(rO,{color:"green",children:"\u2713"})}function rY4($){return`${$.name}: ${$.port||"...."}`}function n5$({services:$,migrationsStatus:Z,home:Q,serverUrl:X}){return Wu(az,{flexDirection:"column",paddingBottom:1,children:[Z3(d5$,{version:hJ0.version}),Z3(az,{marginBottom:1,children:Z3(rO,{dimColor:!0,children:"\u2500".repeat(80)})}),Z3(az,{children:Wu(rO,{dimColor:!0,children:["Home: ",Q]})}),Wu(az,{gap:2,children:[$.map((Y)=>Wu(az,{gap:1,children:[Z3(rO,{children:rY4(Y)}),Z3(p5$,{status:Y.status})]},Y.name)),Wu(az,{gap:1,children:[Z3(rO,{children:"Migrations"}),Z3(p5$,{status:Z})]})]}),Z3(az,{children:X?Wu(rO,{children:["Open in browser: ",Z3(rO,{color:"cyan",children:X})]}):Z3(rO,{dimColor:!0,children:"Starting..."})})]})}var t5$=O(()=>{ze0();i5$()});import{Box as aY4,Text as fo}from"ink";import{jsx as Pe0,jsxs as Ae0}from"react/jsx-runtime";function sY4($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function o5$({logs:$}){return Pe0(aY4,{flexDirection:"column",children:$.map((Z,Q)=>{if(Z.rawLine)return Pe0(fo,{dimColor:!0,children:Z.rawLine},Q);let X=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return Ae0(fo,{children:[Ae0(fo,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),Pe0(fo,{color:sY4(Z.status),children:Z.status}),Ae0(fo,{dimColor:!0,children:[" ",X.padStart(8)]})]},Q)})})}var r5$=()=>{};var Te0={};e(Te0,{App:()=>ZJ4});import{Box as eY4}from"ink";import{useSyncExternalStore as $J4}from"react";import{jsx as a5$,jsxs as QJ4}from"react/jsx-runtime";function ZJ4({home:$}){let Z=$J4(Oe0,Le0);return QJ4(eY4,{flexDirection:"column",children:[a5$(n5$,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),a5$(o5$,{logs:Z.logs})]})}var Re0=O(()=>{t5$();r5$();rz()});var kG="thread-gate",pN="decopilot-hosted-harness",nN="decopilot-hosted-harness-sandboxed",SG="automations",aO="background-tools",sz="task-board-github-reads";var s5$="13";function e5$($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:s5$,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var $9$=()=>{};import XJ4 from"pg";async function Q9$($,Z){let{databaseUrl:Q,lockTimeoutMs:X=YJ4}=$,Y=$.log??((W)=>console.log(W)),J=new XJ4.Client({connectionString:Q});await J.connect();let G=Date.now(),K=!1;try{while(!K){if(K=(await J.query("SELECT pg_try_advisory_lock($1) AS locked",[Z9$.toString()])).rows[0]?.locked===!0,K)break;if(Date.now()-G>=X)throw Error(`Timed out after ${X}ms waiting for the DBOS migration lock. Another process is still migrating the dbos schema; this pod will restart and retry.`);await B$(JJ4)}let W=Date.now()-G;if(W>1000)Y(`[dbos] waited ${W}ms for the migration lock; another process migrated first`);return await Z()}finally{if(K)try{await J.query("SELECT pg_advisory_unlock($1)",[Z9$.toString()])}catch{}await J.end().catch(()=>{})}}var Z9$=8314027461559302n,YJ4=600000,JJ4=500;var X9$=O(()=>{i$()});function GJ4(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function qe0($,Z){for(let Q=0;Q<$.length;Q++){let X=$[Q];if(X===void 0)continue;if(X===Z)return $[Q+1];if(X.startsWith(`${Z}=`))return X.slice(Z.length+1)}return}function Y9$(){let $=GJ4();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:qe0($,"--cpu-prof-dir")??process.cwd(),name:qe0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(qe0($,"--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 J9$(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let Q=iz();if(!Q)return;let X={};try{let{heapStats:Y}=await import("bun:jsc"),J=Y(),G=Object.entries(J.objectTypeCounts).sort((K,W)=>W[1]-K[1]).slice(0,20);X={objectCount:J.objectCount,heapSize:J.heapSize,top:Object.fromEntries(G)}}catch{}console.log(JSON.stringify({msg:"heap-watch",ts:new Date().toISOString(),uptimeS:Math.round(process.uptime()),rss:Q.rss,heapUsed:Q.heapUsed,heapTotal:Q.heapTotal,external:Q.external,arrayBuffers:Q.arrayBuffers,...X}))};return Z().catch(()=>{}),uJ0=setInterval(()=>void Z().catch(()=>{}),$),uJ0.unref?.(),process.on("SIGUSR2",()=>{try{let Q=Bun.generateHeapSnapshot("v8"),X=typeof Q==="string"?Q:JSON.stringify(Q),Y=`/tmp/heap-${process.pid}-${Date.now()}.heapsnapshot`;Bun.write(Y,X),console.log(JSON.stringify({msg:"heap-snapshot-written",path:Y}))}catch(Q){console.error("[heap-watch] snapshot failed:",Q)}}),()=>{if(uJ0)clearInterval(uJ0)}}var uJ0;var G9$=()=>{};import*as KJ4 from"bun:jsc";function K9$(){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{WJ4()}catch(J){return console.error("[stall-watchdog] failed to start sampling profiler:",J),()=>{}}let Q,X=performance.now()+Z,Y=()=>{let J=performance.now(),G=J-X;X=J+Z;let K=[];try{K=HJ4()?.traces??[]}catch{}if(G>$&&K.length>0){let W=new Map;for(let F of K){let U=F.frames.find((L)=>L.sourceURL&&!/Unknown Executable/.test(L.category??""))??F.frames[0];if(!U)continue;let N=(U.sourceURL??"?").replace(/^.*\/node_modules\//,"node_modules/"),B=`${U.name??"?"} @ ${N}:${U.line??"?"}`;W.set(B,(W.get(B)??0)+1)}let H=[...W.entries()].sort((F,U)=>U[1]-F[1]).slice(0,8).map(([F,U])=>({frame:F,count:U}));console.warn(JSON.stringify({msg:"stall-stack",ts:new Date().toISOString(),lagMs:Math.round(G),samplesInWindow:K.length,top:H}))}Q=setTimeout(Y,Z),Q.unref?.()};return Q=setTimeout(Y,Z),Q.unref?.(),()=>{if(Q)clearTimeout(Q)}}var WJ4,HJ4;var W9$=O(()=>{({startSamplingProfiler:WJ4,samplingProfilerStackTraces:HJ4}=KJ4)});function H9$(){Y9$();let $=[J9$(),r1$(),K9$()];return()=>{for(let Z of $)Z()}}var F9$=O(()=>{jt0();G9$();W9$()});var ez=v((U9$)=>{Object.defineProperty(U9$,"__esModule",{value:!0});U9$.RepublishHeaders=U9$.DirectMsgHeaders=U9$.JsHeaders=U9$.AdvisoryKind=void 0;U9$.isOrderedPushConsumerOptions=FJ4;U9$.isPullConsumer=UJ4;U9$.isPushConsumer=NJ4;U9$.isBoundPushConsumerOptions=BJ4;function FJ4($){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 UJ4($){return $.isPullConsumer()}function NJ4($){return $.isPushConsumer()}function BJ4($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}U9$.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"};U9$.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"};U9$.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};U9$.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var Q3=v((B9$)=>{Object.defineProperty(B9$,"__esModule",{value:!0});B9$.TD=B9$.TE=B9$.Empty=void 0;B9$.encode=AJ4;B9$.decode=TJ4;B9$.Empty=new Uint8Array(0);B9$.TE=new TextEncoder;B9$.TD=new TextDecoder;function PJ4(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let Q=new Uint8Array(Z),X=0;for(let Y=0;Y<$.length;Y++)Q.set($[Y],X),X+=$[Y].length;return Q}function AJ4(...$){let Z=[];for(let Q=0;Q<$.length;Q++)Z.push(B9$.TE.encode($[Q]));if(Z.length===0)return B9$.Empty;if(Z.length===1)return Z[0];return PJ4(...Z)}function TJ4($){if(!$||$.length===0)return"";return B9$.TD.decode($)}});var X3=v((D9$)=>{Object.defineProperty(D9$,"__esModule",{value:!0});D9$.errors=D9$.PermissionViolationError=D9$.NoRespondersError=D9$.TimeoutError=D9$.RequestError=D9$.ProtocolError=D9$.ConnectionError=D9$.DrainingConnectionError=D9$.ClosedConnectionError=D9$.AuthorizationError=D9$.UserAuthenticationExpiredError=D9$.InvalidOperationError=D9$.InvalidArgumentError=D9$.InvalidSubjectError=void 0;class Ie0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}D9$.InvalidSubjectError=Ie0;class lJ0 extends Error{constructor($,Z){super($,Z);this.name="InvalidArgumentError"}static format($,Z,Q){if(Array.isArray(Z)&&Z.length>1)Z=Z[0];if(Array.isArray($))$=$.map((X)=>`'${X}'`),$=$.join(",");else $=`'${$}'`;return new lJ0(`${$} ${Z}`,Q)}}D9$.InvalidArgumentError=lJ0;class Ve0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}D9$.InvalidOperationError=Ve0;class mJ0 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new mJ0($);return null}}D9$.UserAuthenticationExpiredError=mJ0;class cJ0 extends Error{constructor($,Z){super($,Z);this.name="AuthorizationError"}static parse($){let Z=["authorization violation","account authentication expired","authentication timeout"],Q=$.toLowerCase();for(let X=0;X<Z.length;X++)if(Q.indexOf(Z[X])!==-1)return new cJ0($);return null}}D9$.AuthorizationError=cJ0;class ke0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}D9$.ClosedConnectionError=ke0;class Se0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}D9$.DrainingConnectionError=Se0;class Ce0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}D9$.ConnectionError=Ce0;class _e0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}D9$.ProtocolError=_e0;class ve0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof dJ0}}D9$.RequestError=ve0;class xe0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}D9$.TimeoutError=xe0;class dJ0 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}D9$.NoRespondersError=dJ0;class iJ0 extends Error{operation;subject;queue;constructor($,Z,Q,X,Y){super($,Y);this.name="PermissionViolationError",this.operation=Z,this.subject=Q,this.queue=X}static parse($){if(($?$.toLowerCase():"").indexOf("permissions violation")===-1)return null;let Q="publish",X="",Y=void 0,J=$.match(/(Publish|Subscription) to "(\S+)"/);if(J){if(Q=J[1].toLowerCase(),X=J[2],Q==="subscription"){let G=$.match(/using queue "(\S+)"/);if(G)Y=G[1]}}return new iJ0($,Q,X,Y)}}D9$.PermissionViolationError=iJ0;D9$.errors={AuthorizationError:cJ0,ClosedConnectionError:ke0,ConnectionError:Ce0,DrainingConnectionError:Se0,InvalidArgumentError:lJ0,InvalidOperationError:Ve0,InvalidSubjectError:Ie0,NoRespondersError:dJ0,PermissionViolationError:iJ0,ProtocolError:_e0,RequestError:ve0,TimeoutError:xe0,UserAuthenticationExpiredError:mJ0}});var WW=v((P9$)=>{Object.defineProperty(P9$,"__esModule",{value:!0});P9$.SimpleMutex=P9$.Perf=void 0;P9$.extend=uJ4;P9$.render=lJ4;P9$.timeout=mJ4;P9$.delay=cJ4;P9$.deadline=dJ4;P9$.deferred=be0;P9$.debugDeferred=iJ4;P9$.shuffle=pJ4;P9$.collect=nJ4;P9$.jitter=z9$;P9$.backoff=tJ4;P9$.nanos=oJ4;P9$.millis=rJ4;P9$.randomToken=eJ4;var hJ4=Q3(),fe0=X3();function uJ4($,...Z){for(let Q=0;Q<Z.length;Q++){let X=Z[Q];Object.keys(X).forEach(function(Y){$[Y]=X[Y]})}return $}function lJ4($){return hJ4.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function mJ4($,Z=!0){let Q=Z?new fe0.TimeoutError:null,X,Y,J=new Promise((G,K)=>{X={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(Q===null)K(new fe0.TimeoutError);else K(Q)},$)});return Object.assign(J,X)}function cJ4($=0){let Z,Q=new Promise((X)=>{let Y=setTimeout(()=>{X()},$);Z={cancel:()=>{if(Y)clearTimeout(Y),X()}}});return Object.assign(Q,Z)}async function dJ4($,Z=1000){let Q=be0(),X=setTimeout(()=>{Q.reject(new fe0.TimeoutError)},Z);try{return await Promise.race([$,Q])}finally{clearTimeout(X)}}function be0(){let $={},Z=new Promise((Q,X)=>{$={resolve:Q,reject:X}});return Object.assign(Z,$)}function iJ4(){let $={},Z=new Promise((Q,X)=>{$={resolve:(Y)=>{console.trace("resolve",Y),Q(Y)},reject:(Y)=>{console.trace("reject"),X(Y)}}});return Object.assign(Z,$)}function pJ4($){for(let Z=$.length-1;Z>0;Z--){let Q=Math.floor(Math.random()*(Z+1));[$[Z],$[Q]]=[$[Q],$[Z]]}return $}async function nJ4($){let Z=[];for await(let Q of $)Z.push(Q);return Z}class j9${timers;measures;constructor(){this.timers=new Map,this.measures=new Map}mark($){this.timers.set($,performance.now())}measure($,Z,Q){let X=this.timers.get(Z);if(X===void 0)throw Error(`${Z} is not defined`);let Y=this.timers.get(Q);if(Y===void 0)throw Error(`${Q} is not defined`);this.measures.set($,Y-X)}getEntries(){let $=[];return this.measures.forEach((Z,Q)=>{$.push({name:Q,duration:Z})}),$}}P9$.Perf=j9$;class E9${max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=be0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}P9$.SimpleMutex=E9$;function z9$($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function tJ4($=[0,250,250,500,500,3000,5000]){if(!Array.isArray($))$=[0,250,250,500,500,3000,5000];let Z=$.length-1;return{backoff(Q){return z9$(Q>Z?$[Z]:$[Q])}}}function oJ4($){return $*1e6}function rJ4($){return Math.floor($/1e6)}var aJ4="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",tN=new Uint8Array(62);for(let $=0;$<62;$++)tN[$]=aJ4.charCodeAt($);var sJ4=218340105584896;function eJ4(){let $=Math.floor(Math.random()*sJ4),Z=$%62,Q=tN[Z];$=($-Z)/62,Z=$%62;let X=tN[Z];$=($-Z)/62,Z=$%62;let Y=tN[Z];$=($-Z)/62,Z=$%62;let J=tN[Z];$=($-Z)/62,Z=$%62;let G=tN[Z];$=($-Z)/62,Z=$%62;let K=tN[Z];$=($-Z)/62,Z=$%62;let W=tN[Z];$=($-Z)/62;let H=tN[$];return String.fromCharCode(Q,X,Y,J,G,K,W,H)}});var k9$=v((I9$)=>{Object.defineProperty(I9$,"__esModule",{value:!0});I9$.nuid=I9$.NuidImpl=void 0;var O34="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",sO=62,nJ0=12,q9$=10,T9$=33,D34=333,R9$=nJ0+q9$,ge0=new Uint8Array(sO);for(let $=0;$<sO;$++)ge0[$]=O34.charCodeAt($);var pJ0=4294967296,M9$=BigInt(sO)**BigInt(q9$),bo=Number(M9$/(1n<<32n)),ye0=Number(M9$%(1n<<32n));function w34($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function j34($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else w34($)}class he0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(R9$),this.cbuf=new Uint8Array(nJ0),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(bo+1)),this.seqLo=Math.floor(Math.random()*pJ0);while($++<8&&this.seqHi===bo&&this.seqLo>=ye0);if(this.seqHi===bo&&this.seqLo>=ye0)this.seqLo=0;this.inc=Math.random()*(D34-T9$)+T9$|0}setPre(){j34(this.cbuf);for(let $=0;$<nJ0;$++)this.buf[$]=ge0[this.cbuf[$]%sO]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let Q=R9$-1;Q>=nJ0;Q--){let X=Math.floor($/sO),J=($-X*sO)*pJ0+Z,G=Math.floor(J/sO),K=J-G*sO;this.buf[Q]=ge0[K],$=X,Z=G}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=pJ0)this.seqLo-=pJ0,this.seqHi+=1;if(this.seqHi>bo||this.seqHi===bo&&this.seqLo>=ye0)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()}}I9$.NuidImpl=he0;I9$.nuid=new he0});var v9$=v((C9$)=>{Object.defineProperty(C9$,"__esModule",{value:!0});C9$.nuid=C9$.Nuid=void 0;var S9$=k9$();C9$.Nuid=S9$.NuidImpl;C9$.nuid=S9$.nuid});var oJ0=v((tJ0)=>{Object.defineProperty(tJ0,"__esModule",{value:!0});tJ0.nuid=tJ0.Nuid=void 0;var x9$=v9$();Object.defineProperty(tJ0,"Nuid",{enumerable:!0,get:function(){return x9$.Nuid}});Object.defineProperty(tJ0,"nuid",{enumerable:!0,get:function(){return x9$.nuid}})});var eO=v((f9$)=>{Object.defineProperty(f9$,"__esModule",{value:!0});f9$.DEFAULT_HOST=f9$.DEFAULT_PORT=f9$.Match=void 0;f9$.syncIterator=R34;f9$.createInbox=q34;var A34=oJ0(),T34=X3();f9$.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function R34($){let Z=$[Symbol.asyncIterator]();return{async next(){let Q=await Z.next();if(Q.done)return Promise.resolve(null);return Promise.resolve(Q.value)}}}function q34($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw T34.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${A34.nuid.next()}`}f9$.DEFAULT_PORT=4222;f9$.DEFAULT_HOST="127.0.0.1"});var yo=v((h9$)=>{Object.defineProperty(h9$,"__esModule",{value:!0});h9$.DataBuffer=void 0;var y9$=Q3();class g9${buffers;byteLength;constructor(){this.buffers=[],this.byteLength=0}static concat(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let Q=new Uint8Array(Z),X=0;for(let Y=0;Y<$.length;Y++)Q.set($[Y],X),X+=$[Y].length;return Q}static fromAscii($){if(!$)$="";return y9$.TE.encode($)}static toAscii($){return y9$.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 Q=0;Q<this.buffers.length;Q++)$.set(this.buffers[Q],Z),Z+=this.buffers[Q].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 Q=this.byteLength;if($===void 0||$>Q)$=Q;let X=Z.subarray(0,$);if(Q>$)this.buffers.push(Z.subarray($));return this.byteLength=Q-$,X}}return new Uint8Array(0)}fill($,...Z){if($)this.buffers.push($),this.byteLength+=$.length;for(let Q=0;Q<Z.length;Q++)if(Z[Q]&&Z[Q].length)this.buffers.push(Z[Q]),this.byteLength+=Z[Q].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}}h9$.DataBuffer=g9$});var $P=v((m9$)=>{Object.defineProperty(m9$,"__esModule",{value:!0});m9$.LF=m9$.CR=m9$.CRLF=m9$.CR_LF_LEN=m9$.CR_LF=void 0;m9$.setTransportFactory=v34;m9$.defaultPort=x34;m9$.getUrlParseFn=f34;m9$.newTransport=b34;m9$.getResolveFn=y34;m9$.protoLen=l9$;m9$.extractProtocolMessage=g34;var S34=Q3(),C34=eO(),_34=yo(),Y3;function v34($){Y3=$}function x34(){return Y3!==void 0&&Y3.defaultPort!==void 0?Y3.defaultPort:C34.DEFAULT_PORT}function f34(){return Y3!==void 0&&Y3.urlParseFn?Y3.urlParseFn:void 0}function b34(){if(!Y3||typeof Y3.factory!=="function")throw Error("transport fn is not set");return Y3.factory()}function y34(){return Y3!==void 0&&Y3.dnsResolveFn?Y3.dnsResolveFn:void 0}m9$.CR_LF=`\r
2079
+ `);X=J.pop()??"";for(let G of J){let K=Bun.stripANSI(G).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;oO({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:K})}}(async()=>{try{for(;;){let{done:J,value:G}=await Z.read();if(J)break;X+=Q.decode(G,{stream:!0}),Y()}}catch{}if(X.trim()){let J=Bun.stripANSI(X).replace(/^\[\d+\]\s*/,"").trim();if(J)oO({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:J})}})()}async function iY4($){let{baseUrl:Z,noTui:Q}=$,X=process.env.HOST==="0.0.0.0"&&Boolean(process.env.PORT),Y=X?process.env.PORT:$.vitePort,J=Z||`http://localhost:${Y}`,G=X?await xo(Number(Y)+1):await xo(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await bJ0({port:String(G),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let D of W)oz({name:D.name,status:"ready",port:D.port});_o();let F=dY4(import.meta.dir,"..","..","..","..",".."),U=Q===!0,N=Bun.spawn(["bun","run","dev:servers"],{cwd:F,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:J,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.natsCredsPath?{NATS_CREDS:K.natsCredsPath}:{}},stdio:["inherit",U?"inherit":"pipe",U?"inherit":"pipe"]});if(!U)we0(N.stdout),we0(N.stderr);vo(J),oz({name:"Vite",status:"ready",port:Number(Y)}),oz({name:"API",status:"ready",port:Number(K.port)});let L=async(D)=>{if(N.kill(D),await N.exited,H.length>0){let{stopServices:w}=await Promise.resolve().then(() => (yY0(),bY0));await w(K.dataDir)}};return process.on("SIGINT",()=>L("SIGINT")),process.on("SIGTERM",()=>L("SIGTERM")),{port:Number(Y),process:N}}var Ee0=O(()=>{Ne0();rz();De0()});var hJ0;var ze0=O(()=>{hJ0={name:"decocms",version:"4.383.2",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@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 nY4,Text as m5$}from"ink";import{jsx as tY4,jsxs as c5$}from"react/jsx-runtime";function d5$({version:$}){return c5$(nY4,{flexDirection:"column",marginTop:1,children:[GJ0.map((Z,Q)=>tY4(m5$,{color:KJ0[Q],children:Z},Q)),c5$(m5$,{dimColor:!0,children:[" v",$]})]})}var i5$=O(()=>{Do()});import{Box as az,Text as rO}from"ink";import{Spinner as oY4}from"@inkjs/ui";import{jsx as Z3,jsxs as Wu}from"react/jsx-runtime";function p5$({status:$}){if($==="pending")return Z3(oY4,{label:""});return Z3(rO,{color:"green",children:"\u2713"})}function rY4($){return`${$.name}: ${$.port||"...."}`}function n5$({services:$,migrationsStatus:Z,home:Q,serverUrl:X}){return Wu(az,{flexDirection:"column",paddingBottom:1,children:[Z3(d5$,{version:hJ0.version}),Z3(az,{marginBottom:1,children:Z3(rO,{dimColor:!0,children:"\u2500".repeat(80)})}),Z3(az,{children:Wu(rO,{dimColor:!0,children:["Home: ",Q]})}),Wu(az,{gap:2,children:[$.map((Y)=>Wu(az,{gap:1,children:[Z3(rO,{children:rY4(Y)}),Z3(p5$,{status:Y.status})]},Y.name)),Wu(az,{gap:1,children:[Z3(rO,{children:"Migrations"}),Z3(p5$,{status:Z})]})]}),Z3(az,{children:X?Wu(rO,{children:["Open in browser: ",Z3(rO,{color:"cyan",children:X})]}):Z3(rO,{dimColor:!0,children:"Starting..."})})]})}var t5$=O(()=>{ze0();i5$()});import{Box as aY4,Text as fo}from"ink";import{jsx as Pe0,jsxs as Ae0}from"react/jsx-runtime";function sY4($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function o5$({logs:$}){return Pe0(aY4,{flexDirection:"column",children:$.map((Z,Q)=>{if(Z.rawLine)return Pe0(fo,{dimColor:!0,children:Z.rawLine},Q);let X=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return Ae0(fo,{children:[Ae0(fo,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),Pe0(fo,{color:sY4(Z.status),children:Z.status}),Ae0(fo,{dimColor:!0,children:[" ",X.padStart(8)]})]},Q)})})}var r5$=()=>{};var Te0={};e(Te0,{App:()=>ZJ4});import{Box as eY4}from"ink";import{useSyncExternalStore as $J4}from"react";import{jsx as a5$,jsxs as QJ4}from"react/jsx-runtime";function ZJ4({home:$}){let Z=$J4(Oe0,Le0);return QJ4(eY4,{flexDirection:"column",children:[a5$(n5$,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),a5$(o5$,{logs:Z.logs})]})}var Re0=O(()=>{t5$();r5$();rz()});var kG="thread-gate",pN="decopilot-hosted-harness",nN="decopilot-hosted-harness-sandboxed",SG="automations",aO="background-tools",sz="task-board-github-reads";var s5$="13";function e5$($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:s5$,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var $9$=()=>{};import XJ4 from"pg";async function Q9$($,Z){let{databaseUrl:Q,lockTimeoutMs:X=YJ4}=$,Y=$.log??((W)=>console.log(W)),J=new XJ4.Client({connectionString:Q});await J.connect();let G=Date.now(),K=!1;try{while(!K){if(K=(await J.query("SELECT pg_try_advisory_lock($1) AS locked",[Z9$.toString()])).rows[0]?.locked===!0,K)break;if(Date.now()-G>=X)throw Error(`Timed out after ${X}ms waiting for the DBOS migration lock. Another process is still migrating the dbos schema; this pod will restart and retry.`);await B$(JJ4)}let W=Date.now()-G;if(W>1000)Y(`[dbos] waited ${W}ms for the migration lock; another process migrated first`);return await Z()}finally{if(K)try{await J.query("SELECT pg_advisory_unlock($1)",[Z9$.toString()])}catch{}await J.end().catch(()=>{})}}var Z9$=8314027461559302n,YJ4=600000,JJ4=500;var X9$=O(()=>{i$()});function GJ4(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function qe0($,Z){for(let Q=0;Q<$.length;Q++){let X=$[Q];if(X===void 0)continue;if(X===Z)return $[Q+1];if(X.startsWith(`${Z}=`))return X.slice(Z.length+1)}return}function Y9$(){let $=GJ4();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:qe0($,"--cpu-prof-dir")??process.cwd(),name:qe0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(qe0($,"--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 J9$(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let Q=iz();if(!Q)return;let X={};try{let{heapStats:Y}=await import("bun:jsc"),J=Y(),G=Object.entries(J.objectTypeCounts).sort((K,W)=>W[1]-K[1]).slice(0,20);X={objectCount:J.objectCount,heapSize:J.heapSize,top:Object.fromEntries(G)}}catch{}console.log(JSON.stringify({msg:"heap-watch",ts:new Date().toISOString(),uptimeS:Math.round(process.uptime()),rss:Q.rss,heapUsed:Q.heapUsed,heapTotal:Q.heapTotal,external:Q.external,arrayBuffers:Q.arrayBuffers,...X}))};return Z().catch(()=>{}),uJ0=setInterval(()=>void Z().catch(()=>{}),$),uJ0.unref?.(),process.on("SIGUSR2",()=>{try{let Q=Bun.generateHeapSnapshot("v8"),X=typeof Q==="string"?Q:JSON.stringify(Q),Y=`/tmp/heap-${process.pid}-${Date.now()}.heapsnapshot`;Bun.write(Y,X),console.log(JSON.stringify({msg:"heap-snapshot-written",path:Y}))}catch(Q){console.error("[heap-watch] snapshot failed:",Q)}}),()=>{if(uJ0)clearInterval(uJ0)}}var uJ0;var G9$=()=>{};import*as KJ4 from"bun:jsc";function K9$(){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{WJ4()}catch(J){return console.error("[stall-watchdog] failed to start sampling profiler:",J),()=>{}}let Q,X=performance.now()+Z,Y=()=>{let J=performance.now(),G=J-X;X=J+Z;let K=[];try{K=HJ4()?.traces??[]}catch{}if(G>$&&K.length>0){let W=new Map;for(let F of K){let U=F.frames.find((L)=>L.sourceURL&&!/Unknown Executable/.test(L.category??""))??F.frames[0];if(!U)continue;let N=(U.sourceURL??"?").replace(/^.*\/node_modules\//,"node_modules/"),B=`${U.name??"?"} @ ${N}:${U.line??"?"}`;W.set(B,(W.get(B)??0)+1)}let H=[...W.entries()].sort((F,U)=>U[1]-F[1]).slice(0,8).map(([F,U])=>({frame:F,count:U}));console.warn(JSON.stringify({msg:"stall-stack",ts:new Date().toISOString(),lagMs:Math.round(G),samplesInWindow:K.length,top:H}))}Q=setTimeout(Y,Z),Q.unref?.()};return Q=setTimeout(Y,Z),Q.unref?.(),()=>{if(Q)clearTimeout(Q)}}var WJ4,HJ4;var W9$=O(()=>{({startSamplingProfiler:WJ4,samplingProfilerStackTraces:HJ4}=KJ4)});function H9$(){Y9$();let $=[J9$(),r1$(),K9$()];return()=>{for(let Z of $)Z()}}var F9$=O(()=>{jt0();G9$();W9$()});var ez=v((U9$)=>{Object.defineProperty(U9$,"__esModule",{value:!0});U9$.RepublishHeaders=U9$.DirectMsgHeaders=U9$.JsHeaders=U9$.AdvisoryKind=void 0;U9$.isOrderedPushConsumerOptions=FJ4;U9$.isPullConsumer=UJ4;U9$.isPushConsumer=NJ4;U9$.isBoundPushConsumerOptions=BJ4;function FJ4($){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 UJ4($){return $.isPullConsumer()}function NJ4($){return $.isPushConsumer()}function BJ4($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}U9$.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"};U9$.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"};U9$.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};U9$.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var Q3=v((B9$)=>{Object.defineProperty(B9$,"__esModule",{value:!0});B9$.TD=B9$.TE=B9$.Empty=void 0;B9$.encode=AJ4;B9$.decode=TJ4;B9$.Empty=new Uint8Array(0);B9$.TE=new TextEncoder;B9$.TD=new TextDecoder;function PJ4(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let Q=new Uint8Array(Z),X=0;for(let Y=0;Y<$.length;Y++)Q.set($[Y],X),X+=$[Y].length;return Q}function AJ4(...$){let Z=[];for(let Q=0;Q<$.length;Q++)Z.push(B9$.TE.encode($[Q]));if(Z.length===0)return B9$.Empty;if(Z.length===1)return Z[0];return PJ4(...Z)}function TJ4($){if(!$||$.length===0)return"";return B9$.TD.decode($)}});var X3=v((D9$)=>{Object.defineProperty(D9$,"__esModule",{value:!0});D9$.errors=D9$.PermissionViolationError=D9$.NoRespondersError=D9$.TimeoutError=D9$.RequestError=D9$.ProtocolError=D9$.ConnectionError=D9$.DrainingConnectionError=D9$.ClosedConnectionError=D9$.AuthorizationError=D9$.UserAuthenticationExpiredError=D9$.InvalidOperationError=D9$.InvalidArgumentError=D9$.InvalidSubjectError=void 0;class Ie0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}D9$.InvalidSubjectError=Ie0;class lJ0 extends Error{constructor($,Z){super($,Z);this.name="InvalidArgumentError"}static format($,Z,Q){if(Array.isArray(Z)&&Z.length>1)Z=Z[0];if(Array.isArray($))$=$.map((X)=>`'${X}'`),$=$.join(",");else $=`'${$}'`;return new lJ0(`${$} ${Z}`,Q)}}D9$.InvalidArgumentError=lJ0;class Ve0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}D9$.InvalidOperationError=Ve0;class mJ0 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new mJ0($);return null}}D9$.UserAuthenticationExpiredError=mJ0;class cJ0 extends Error{constructor($,Z){super($,Z);this.name="AuthorizationError"}static parse($){let Z=["authorization violation","account authentication expired","authentication timeout"],Q=$.toLowerCase();for(let X=0;X<Z.length;X++)if(Q.indexOf(Z[X])!==-1)return new cJ0($);return null}}D9$.AuthorizationError=cJ0;class ke0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}D9$.ClosedConnectionError=ke0;class Se0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}D9$.DrainingConnectionError=Se0;class Ce0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}D9$.ConnectionError=Ce0;class _e0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}D9$.ProtocolError=_e0;class ve0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof dJ0}}D9$.RequestError=ve0;class xe0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}D9$.TimeoutError=xe0;class dJ0 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}D9$.NoRespondersError=dJ0;class iJ0 extends Error{operation;subject;queue;constructor($,Z,Q,X,Y){super($,Y);this.name="PermissionViolationError",this.operation=Z,this.subject=Q,this.queue=X}static parse($){if(($?$.toLowerCase():"").indexOf("permissions violation")===-1)return null;let Q="publish",X="",Y=void 0,J=$.match(/(Publish|Subscription) to "(\S+)"/);if(J){if(Q=J[1].toLowerCase(),X=J[2],Q==="subscription"){let G=$.match(/using queue "(\S+)"/);if(G)Y=G[1]}}return new iJ0($,Q,X,Y)}}D9$.PermissionViolationError=iJ0;D9$.errors={AuthorizationError:cJ0,ClosedConnectionError:ke0,ConnectionError:Ce0,DrainingConnectionError:Se0,InvalidArgumentError:lJ0,InvalidOperationError:Ve0,InvalidSubjectError:Ie0,NoRespondersError:dJ0,PermissionViolationError:iJ0,ProtocolError:_e0,RequestError:ve0,TimeoutError:xe0,UserAuthenticationExpiredError:mJ0}});var WW=v((P9$)=>{Object.defineProperty(P9$,"__esModule",{value:!0});P9$.SimpleMutex=P9$.Perf=void 0;P9$.extend=uJ4;P9$.render=lJ4;P9$.timeout=mJ4;P9$.delay=cJ4;P9$.deadline=dJ4;P9$.deferred=be0;P9$.debugDeferred=iJ4;P9$.shuffle=pJ4;P9$.collect=nJ4;P9$.jitter=z9$;P9$.backoff=tJ4;P9$.nanos=oJ4;P9$.millis=rJ4;P9$.randomToken=eJ4;var hJ4=Q3(),fe0=X3();function uJ4($,...Z){for(let Q=0;Q<Z.length;Q++){let X=Z[Q];Object.keys(X).forEach(function(Y){$[Y]=X[Y]})}return $}function lJ4($){return hJ4.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function mJ4($,Z=!0){let Q=Z?new fe0.TimeoutError:null,X,Y,J=new Promise((G,K)=>{X={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(Q===null)K(new fe0.TimeoutError);else K(Q)},$)});return Object.assign(J,X)}function cJ4($=0){let Z,Q=new Promise((X)=>{let Y=setTimeout(()=>{X()},$);Z={cancel:()=>{if(Y)clearTimeout(Y),X()}}});return Object.assign(Q,Z)}async function dJ4($,Z=1000){let Q=be0(),X=setTimeout(()=>{Q.reject(new fe0.TimeoutError)},Z);try{return await Promise.race([$,Q])}finally{clearTimeout(X)}}function be0(){let $={},Z=new Promise((Q,X)=>{$={resolve:Q,reject:X}});return Object.assign(Z,$)}function iJ4(){let $={},Z=new Promise((Q,X)=>{$={resolve:(Y)=>{console.trace("resolve",Y),Q(Y)},reject:(Y)=>{console.trace("reject"),X(Y)}}});return Object.assign(Z,$)}function pJ4($){for(let Z=$.length-1;Z>0;Z--){let Q=Math.floor(Math.random()*(Z+1));[$[Z],$[Q]]=[$[Q],$[Z]]}return $}async function nJ4($){let Z=[];for await(let Q of $)Z.push(Q);return Z}class j9${timers;measures;constructor(){this.timers=new Map,this.measures=new Map}mark($){this.timers.set($,performance.now())}measure($,Z,Q){let X=this.timers.get(Z);if(X===void 0)throw Error(`${Z} is not defined`);let Y=this.timers.get(Q);if(Y===void 0)throw Error(`${Q} is not defined`);this.measures.set($,Y-X)}getEntries(){let $=[];return this.measures.forEach((Z,Q)=>{$.push({name:Q,duration:Z})}),$}}P9$.Perf=j9$;class E9${max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=be0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}P9$.SimpleMutex=E9$;function z9$($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function tJ4($=[0,250,250,500,500,3000,5000]){if(!Array.isArray($))$=[0,250,250,500,500,3000,5000];let Z=$.length-1;return{backoff(Q){return z9$(Q>Z?$[Z]:$[Q])}}}function oJ4($){return $*1e6}function rJ4($){return Math.floor($/1e6)}var aJ4="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",tN=new Uint8Array(62);for(let $=0;$<62;$++)tN[$]=aJ4.charCodeAt($);var sJ4=218340105584896;function eJ4(){let $=Math.floor(Math.random()*sJ4),Z=$%62,Q=tN[Z];$=($-Z)/62,Z=$%62;let X=tN[Z];$=($-Z)/62,Z=$%62;let Y=tN[Z];$=($-Z)/62,Z=$%62;let J=tN[Z];$=($-Z)/62,Z=$%62;let G=tN[Z];$=($-Z)/62,Z=$%62;let K=tN[Z];$=($-Z)/62,Z=$%62;let W=tN[Z];$=($-Z)/62;let H=tN[$];return String.fromCharCode(Q,X,Y,J,G,K,W,H)}});var k9$=v((I9$)=>{Object.defineProperty(I9$,"__esModule",{value:!0});I9$.nuid=I9$.NuidImpl=void 0;var O34="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",sO=62,nJ0=12,q9$=10,T9$=33,D34=333,R9$=nJ0+q9$,ge0=new Uint8Array(sO);for(let $=0;$<sO;$++)ge0[$]=O34.charCodeAt($);var pJ0=4294967296,M9$=BigInt(sO)**BigInt(q9$),bo=Number(M9$/(1n<<32n)),ye0=Number(M9$%(1n<<32n));function w34($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function j34($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else w34($)}class he0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(R9$),this.cbuf=new Uint8Array(nJ0),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(bo+1)),this.seqLo=Math.floor(Math.random()*pJ0);while($++<8&&this.seqHi===bo&&this.seqLo>=ye0);if(this.seqHi===bo&&this.seqLo>=ye0)this.seqLo=0;this.inc=Math.random()*(D34-T9$)+T9$|0}setPre(){j34(this.cbuf);for(let $=0;$<nJ0;$++)this.buf[$]=ge0[this.cbuf[$]%sO]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let Q=R9$-1;Q>=nJ0;Q--){let X=Math.floor($/sO),J=($-X*sO)*pJ0+Z,G=Math.floor(J/sO),K=J-G*sO;this.buf[Q]=ge0[K],$=X,Z=G}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=pJ0)this.seqLo-=pJ0,this.seqHi+=1;if(this.seqHi>bo||this.seqHi===bo&&this.seqLo>=ye0)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()}}I9$.NuidImpl=he0;I9$.nuid=new he0});var v9$=v((C9$)=>{Object.defineProperty(C9$,"__esModule",{value:!0});C9$.nuid=C9$.Nuid=void 0;var S9$=k9$();C9$.Nuid=S9$.NuidImpl;C9$.nuid=S9$.nuid});var oJ0=v((tJ0)=>{Object.defineProperty(tJ0,"__esModule",{value:!0});tJ0.nuid=tJ0.Nuid=void 0;var x9$=v9$();Object.defineProperty(tJ0,"Nuid",{enumerable:!0,get:function(){return x9$.Nuid}});Object.defineProperty(tJ0,"nuid",{enumerable:!0,get:function(){return x9$.nuid}})});var eO=v((f9$)=>{Object.defineProperty(f9$,"__esModule",{value:!0});f9$.DEFAULT_HOST=f9$.DEFAULT_PORT=f9$.Match=void 0;f9$.syncIterator=R34;f9$.createInbox=q34;var A34=oJ0(),T34=X3();f9$.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function R34($){let Z=$[Symbol.asyncIterator]();return{async next(){let Q=await Z.next();if(Q.done)return Promise.resolve(null);return Promise.resolve(Q.value)}}}function q34($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw T34.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${A34.nuid.next()}`}f9$.DEFAULT_PORT=4222;f9$.DEFAULT_HOST="127.0.0.1"});var yo=v((h9$)=>{Object.defineProperty(h9$,"__esModule",{value:!0});h9$.DataBuffer=void 0;var y9$=Q3();class g9${buffers;byteLength;constructor(){this.buffers=[],this.byteLength=0}static concat(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let Q=new Uint8Array(Z),X=0;for(let Y=0;Y<$.length;Y++)Q.set($[Y],X),X+=$[Y].length;return Q}static fromAscii($){if(!$)$="";return y9$.TE.encode($)}static toAscii($){return y9$.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 Q=0;Q<this.buffers.length;Q++)$.set(this.buffers[Q],Z),Z+=this.buffers[Q].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 Q=this.byteLength;if($===void 0||$>Q)$=Q;let X=Z.subarray(0,$);if(Q>$)this.buffers.push(Z.subarray($));return this.byteLength=Q-$,X}}return new Uint8Array(0)}fill($,...Z){if($)this.buffers.push($),this.byteLength+=$.length;for(let Q=0;Q<Z.length;Q++)if(Z[Q]&&Z[Q].length)this.buffers.push(Z[Q]),this.byteLength+=Z[Q].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}}h9$.DataBuffer=g9$});var $P=v((m9$)=>{Object.defineProperty(m9$,"__esModule",{value:!0});m9$.LF=m9$.CR=m9$.CRLF=m9$.CR_LF_LEN=m9$.CR_LF=void 0;m9$.setTransportFactory=v34;m9$.defaultPort=x34;m9$.getUrlParseFn=f34;m9$.newTransport=b34;m9$.getResolveFn=y34;m9$.protoLen=l9$;m9$.extractProtocolMessage=g34;var S34=Q3(),C34=eO(),_34=yo(),Y3;function v34($){Y3=$}function x34(){return Y3!==void 0&&Y3.defaultPort!==void 0?Y3.defaultPort:C34.DEFAULT_PORT}function f34(){return Y3!==void 0&&Y3.urlParseFn?Y3.urlParseFn:void 0}function b34(){if(!Y3||typeof Y3.factory!=="function")throw Error("transport fn is not set");return Y3.factory()}function y34(){return Y3!==void 0&&Y3.dnsResolveFn?Y3.dnsResolveFn:void 0}m9$.CR_LF=`\r
2080
2080
  `;m9$.CR_LF_LEN=m9$.CR_LF.length;m9$.CRLF=_34.DataBuffer.fromAscii(m9$.CR_LF);m9$.CR=new Uint8Array(m9$.CRLF)[0];m9$.LF=new Uint8Array(m9$.CRLF)[1];function l9$($){for(let Z=0;Z<$.length;Z++){let Q=Z+1;if($.byteLength>Q&&$[Z]===m9$.CR&&$[Q]===m9$.LF)return Q+1}return 0}function g34($){let Z=l9$($);if(Z>0){let X=new Uint8Array($).slice(0,Z);return S34.TD.decode(X)}return""}});var de0=v((r9$)=>{Object.defineProperty(r9$,"__esModule",{value:!0});r9$.ipV4=n9$;r9$.isIP=o34;r9$.parseIP=t9$;var go=4,ZP=16,rJ0=48,p9$=57,d9$=65,n34=70,i9$=97,t34=102,ce0=16777215;function n9$($,Z,Q,X){let Y=new Uint8Array(ZP);return[0,0,0,0,0,0,0,0,0,0,255,255].forEach((G,K)=>{Y[K]=G}),Y[12]=$,Y[13]=Z,Y[14]=Q,Y[15]=X,Y}function o34($){return t9$($)!==void 0}function t9$($){for(let Z=0;Z<$.length;Z++)switch($[Z]){case".":return o9$($);case":":return r34($)}return}function o9$($){let Z=new Uint8Array(go);for(let Q=0;Q<go;Q++){if($.length===0)return;if(Q>0){if($[0]!==".")return;$=$.substring(1)}let{n:X,c:Y,ok:J}=a34($);if(!J||X>255)return;$=$.substring(Y),Z[Q]=X}return n9$(Z[0],Z[1],Z[2],Z[3])}function r34($){let Z=new Uint8Array(ZP),Q=-1;if($.length>=2&&$[0]===":"&&$[1]===":"){if(Q=0,$=$.substring(2),$.length===0)return Z}let X=0;while(X<ZP){let{n:Y,c:J,ok:G}=s34($);if(!G||Y>65535)return;if(J<$.length&&$[J]==="."){if(Q<0&&X!=ZP-go)return;if(X+go>ZP)return;let K=o9$($);if(K===void 0)return;Z[X]=K[12],Z[X+1]=K[13],Z[X+2]=K[14],Z[X+3]=K[15],$="",X+=go;break}if(Z[X]=Y>>8,Z[X+1]=Y,X+=2,$=$.substring(J),$.length===0)break;if($[0]!==":"||$.length==1)return;if($=$.substring(1),$[0]===":"){if(Q>=0)return;if(Q=X,$=$.substring(1),$.length===0)break}}if($.length!==0)return;if(X<ZP){if(Q<0)return;let Y=ZP-X;for(let J=X-1;J>=Q;J--)Z[J+Y]=Z[J];for(let J=Q+Y-1;J>=Q;J--)Z[J]=0}else if(Q>=0)return;return Z}function a34($){let Z=0,Q=0;for(Z=0;Z<$.length&&rJ0<=$.charCodeAt(Z)&&$.charCodeAt(Z)<=p9$;Z++)if(Q=Q*10+($.charCodeAt(Z)-rJ0),Q>=ce0)return{n:ce0,c:Z,ok:!1};if(Z===0)return{n:0,c:0,ok:!1};return{n:Q,c:Z,ok:!0}}function s34($){let Z=0,Q=0;for(Q=0;Q<$.length;Q++){if(rJ0<=$.charCodeAt(Q)&&$.charCodeAt(Q)<=p9$)Z*=16,Z+=$.charCodeAt(Q)-rJ0;else if(i9$<=$.charCodeAt(Q)&&$.charCodeAt(Q)<=t34)Z*=16,Z+=$.charCodeAt(Q)-i9$+10;else if(d9$<=$.charCodeAt(Q)&&$.charCodeAt(Q)<=n34)Z*=16,Z+=$.charCodeAt(Q)-d9$+10;else break;if(Z>=ce0)return{n:0,c:Q,ok:!1}}if(Q===0)return{n:0,c:Q,ok:!1};return{n:Z,c:Q,ok:!0}}});var re0=v((s9$)=>{Object.defineProperty(s9$,"__esModule",{value:!0});s9$.Servers=s9$.ServerImpl=void 0;s9$.isIPV4OrHostname=a9$;s9$.hostPort=oe0;var ie0=$P(),pe0=WW(),ne0=de0(),QG4=eO(),XG4=X3();function a9$($){if($.indexOf("[")!==-1||$.indexOf("::")!==-1)return!1;if($.indexOf(".")!==-1)return!0;if($.split(":").length<=2)return!0;return!1}function te0($){return!a9$($)}function YG4($){let Q=$.toUpperCase().indexOf("::FFFF:");if(Q!==-1&&$.indexOf(".")!==-1){let X=$.substring(Q+7);return X=X.replace("[",""),X.replace("]","")}return $}function oe0($){if($=$.trim(),$.match(/^(.*:\/\/)(.*)/m))$=$.replace(/^(.*:\/\/)(.*)/gm,"$2");if($=YG4($),te0($)&&$.indexOf("[")===-1)$=`[${$}]`;let Z=te0($)?$.match(/(]:)(\d+)/):$.match(/(:)(\d+)/),Q=Z&&Z.length===3&&Z[1]&&Z[2]?parseInt(Z[2]):QG4.DEFAULT_PORT,Y=new URL(`${Q===80?"https":"http"}://${$}`);Y.port=`${Q}`;let J=Y.hostname;if(J.charAt(0)==="[")J=J.substring(1,J.length-1);return{listen:Y.host,hostname:J,port:Q}}class Hu{src;listen;hostname;port;didConnect;reconnects;lastConnect;gossiped;tlsName;resolves;constructor($,Z=!1){this.src=$,this.tlsName="";let Q=oe0($);this.listen=Q.listen,this.hostname=Q.hostname,this.port=Q.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,ne0.isIP)(this.hostname))return[this];else{let Q=await $.fn(this.hostname);if($.debug)console.log(`resolve ${this.hostname} = ${Q.join(",")}`);for(let X of Q){let Y=this.port===80?"https":"http",J=new URL(`${Y}://${te0(X)?"["+X+"]":X}`);J.port=`${this.port}`;let G=new Hu(J.host,!1);G.tlsName=this.hostname,Z.push(G)}}if($.randomize)(0,pe0.shuffle)(Z);return this.resolves=Z,Z}}s9$.ServerImpl=Hu;class aJ0{firstSelect;servers;currentServer;tlsName;randomize;constructor($={}){this.firstSelect=!0,this.servers=[],this.tlsName="",this.randomize=$.randomize||!1}setServers($){if(!Array.isArray($)||$.length===0)throw XG4.InvalidArgumentError.format("servers","cannot be empty");let Z=(0,ie0.getUrlParseFn)(),Q=new Map;for(let Y of this.servers)Q.set(Y.listen,Y);let X=[];for(let Y of $){Y=Z?Z(Y):Y;let{listen:J}=oe0(Y),G=Q.get(J);if(G)G.gossiped=!1,X.push(G);else X.push(new Hu(Y))}if(this.randomize)(0,pe0.shuffle)(X);if(this.servers=X,this.currentServer===void 0||!X.includes(this.currentServer))this.currentServer=X[0],this.firstSelect=!0}clear(){this.servers.length=0}updateTLSName(){let $=this.getCurrentServer();if(!(0,ne0.isIP)($.hostname))this.tlsName=$.hostname,this.servers.forEach((Z)=>{if(Z.gossiped)Z.tlsName=this.tlsName})}getCurrentServer(){return this.currentServer}addServer($,Z=!1){let Q=(0,ie0.getUrlParseFn)();$=Q?Q($):$;let X=new Hu($,Z);if((0,ne0.isIP)(X.hostname))X.tlsName=this.tlsName;this.servers.push(X)}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 aJ0.freezeAll(this.servers)}snapshotForHandler(){let $=this.currentServer;if(!$)return this.snapshot();let Z=this.servers.indexOf($);if(Z<=0)return this.snapshot();return aJ0.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 Q=[],X=[],Y=(0,ie0.getUrlParseFn)(),J=new Map;if($.connect_urls&&$.connect_urls.length>0)$.connect_urls.forEach((K)=>{K=Y?Y(K,Z):K;let W=new Hu(K,!0);J.set(K,W)});let G=[];if(this.servers.forEach((K,W)=>{let H=K.listen;if(K.gossiped&&this.currentServer.listen!==H&&J.get(H)===void 0)G.push(W);J.delete(H)}),G.reverse(),G.forEach((K)=>{let W=this.servers.splice(K,1);X=X.concat(W[0].listen)}),J.forEach((K,W)=>{this.servers.push(K),Q.push(W)}),this.randomize&&Q.length>0){let K=this.currentServer,W=this.servers.filter((H)=>H!==K);(0,pe0.shuffle)(W),this.servers=K?[K,...W]:W}return{added:Q,deleted:X}}}s9$.Servers=aJ0});var sJ0=v((QZ$)=>{Object.defineProperty(QZ$,"__esModule",{value:!0});QZ$.QueuedIteratorImpl=void 0;var ae0=WW(),$Z$=X3();class ZZ${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,ae0.deferred)(),this.yields=[],this.iterClosed=(0,ae0.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(Q){}}return}if(typeof $==="function")this.pendingFiltered++;this.yields.push($),this.signal.resolve()}async*iterate(){if(this.noIterator)throw new $Z$.InvalidOperationError("iterator cannot be used when a callback is registered");if(this.yielding)throw new $Z$.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 X=$[Z];try{X()}catch(Y){throw Y}if(this.err)throw this.err;continue}this.processed++,this.inflight--;let Q=this.profile?Date.now():0;yield $[Z],this.time=this.profile?Date.now()-Q:0}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,ae0.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}}QZ$.QueuedIteratorImpl=ZZ$});var se0=v((GZ$)=>{Object.defineProperty(GZ$,"__esModule",{value:!0});GZ$.MuxSubscription=void 0;var WG4=eO(),YZ$=X3();class JZ${baseInbox;reqs;constructor(){this.reqs=new Map}size(){return this.reqs.size}init($){return this.baseInbox=`${(0,WG4.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((Q)=>{Q.resolver(Z,{})}),!0;if(Z.operation==="publish"){let Q=this.all().find((X)=>{return X.requestSubject===Z.subject});if(Q)return Q.resolver(Z,{}),!0}return!1}dispatcher(){return($,Z)=>{let Q=this.getToken(Z);if(Q){let X=this.get(Q);if(X){if($===null)$=Z?.data?.length===0&&Z.headers?.code===503?new YZ$.NoRespondersError(X.requestSubject):null;X.resolver($,Z)}}}}close(){let $=new YZ$.RequestError("connection closed");this.reqs.forEach((Z)=>{Z.resolver($,{})})}}GZ$.MuxSubscription=JZ$});var ee0=v((HZ$)=>{Object.defineProperty(HZ$,"__esModule",{value:!0});HZ$.Heartbeat=void 0;var HG4=WW();class WZ${ph;interval;maxOut;timer;pendings;constructor($,Z,Q){this.ph=$,this.interval=Z,this.maxOut=Q,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,HG4.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})}}HZ$.Heartbeat=WZ$});var Q01=v((LZ$)=>{Object.defineProperty(LZ$,"__esModule",{value:!0});LZ$.DenoBuffer=LZ$.MAX_SIZE=LZ$.AssertionError=void 0;LZ$.assert=NZ$;LZ$.concat=BZ$;LZ$.append=UG4;LZ$.readAll=NG4;LZ$.writeAll=BG4;var FG4=Q3();class $01 extends Error{constructor($){super($);this.name="AssertionError"}}LZ$.AssertionError=$01;function NZ$($,Z="Assertion failed."){if(!$)throw new $01(Z)}var UZ$=32768;LZ$.MAX_SIZE=4294967294;function eJ0($,Z,Q=0){let X=Z.byteLength-Q;if($.byteLength>X)$=$.subarray(0,X);return Z.set($,Q),$.byteLength}function BZ$($,Z){if($===void 0&&Z===void 0)return new Uint8Array(0);if($===void 0)return Z;if(Z===void 0)return $;let Q=new Uint8Array($.length+Z.length);return Q.set($,0),Q.set(Z,$.length),Q}function UG4($,Z){return BZ$($,Uint8Array.of(Z))}class Z01{_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($){NZ$($<=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=eJ0(this._buf.subarray(this._off),$);return this._off+=Z,Z}writeByte($){return this.write(Uint8Array.of($))}writeString($){return this.write(FG4.TE.encode($))}write($){let Z=this._grow($.byteLength);return eJ0($,this._buf,Z)}_grow($){let Z=this.length;if(Z===0&&this._off!==0)this.reset();let Q=this._tryGrowByReslice($);if(Q>=0)return Q;let X=this.capacity;if($<=Math.floor(X/2)-Z)eJ0(this._buf.subarray(this._off),this._buf);else if(X+$>LZ$.MAX_SIZE)throw Error("The buffer cannot be grown beyond the maximum size.");else{let Y=new Uint8Array(Math.min(2*X+$,LZ$.MAX_SIZE));eJ0(this._buf.subarray(this._off),Y),this._buf=Y}return this._off=0,this._reslice(Math.min(Z+$,LZ$.MAX_SIZE)),Z}grow($){if($<0)throw Error("Buffer._grow: negative count");let Z=this._grow($);this._reslice(Z)}readFrom($){let Z=0,Q=new Uint8Array(UZ$);while(!0){let X=this.capacity-this.length<UZ$,Y=X?Q:new Uint8Array(this._buf.buffer,this.length),J=$.read(Y);if(J===null)return Z;if(X)this.write(Y.subarray(0,J));else this._reslice(this.length+J);Z+=J}}}LZ$.DenoBuffer=Z01;function NG4($){let Z=new Z01;return Z.readFrom($),Z.bytes()}function BG4($,Z){let Q=0;while(Q<Z.length)Q+=$.write(Z.subarray(Q))}});var J01=v((EZ$)=>{Object.defineProperty(EZ$,"__esModule",{value:!0});EZ$.cc=EZ$.State=EZ$.Parser=EZ$.Kind=void 0;EZ$.describe=zG4;var X01=Q01(),Y01=Q3();EZ$.Kind={OK:0,ERR:1,MSG:2,INFO:3,PING:4,PONG:5};function zG4($){let Z,Q="";switch($.kind){case EZ$.Kind.MSG:Z="MSG";break;case EZ$.Kind.OK:Z="OK";break;case EZ$.Kind.ERR:Z="ERR",Q=Y01.TD.decode($.data);break;case EZ$.Kind.PING:Z="PING";break;case EZ$.Kind.PONG:Z="PONG";break;case EZ$.Kind.INFO:Z="INFO",Q=Y01.TD.decode($.data)}return`${Z}: ${Q}`}function DZ$(){let $={};return $.sid=-1,$.hdr=-1,$.size=-1,$}var wZ$=48,PG4=57,Fu=67108864;class jZ${dispatcher;state;as;drop;hdr;ma;argBuf;msgBuf;constructor($){this.dispatcher=$,this.state=EZ$.State.OP_START,this.as=0,this.drop=0,this.hdr=0}parse($){let Z;for(Z=0;Z<$.length;Z++){let Q=$[Z];switch(this.state){case EZ$.State.OP_START:switch(Q){case EZ$.cc.M:case EZ$.cc.m:this.state=EZ$.State.OP_M,this.hdr=-1,this.ma=DZ$();break;case EZ$.cc.H:case EZ$.cc.h:this.state=EZ$.State.OP_H,this.hdr=0,this.ma=DZ$();break;case EZ$.cc.P:case EZ$.cc.p:this.state=EZ$.State.OP_P;break;case EZ$.cc.PLUS:this.state=EZ$.State.OP_PLUS;break;case EZ$.cc.MINUS:this.state=EZ$.State.OP_MINUS;break;case EZ$.cc.I:case EZ$.cc.i:this.state=EZ$.State.OP_I;break;default:throw this.fail($.subarray(Z))}break;case EZ$.State.OP_H:switch(Q){case EZ$.cc.M:case EZ$.cc.m:this.state=EZ$.State.OP_M;break;default:throw this.fail($.subarray(Z))}break;case EZ$.State.OP_M:switch(Q){case EZ$.cc.S:case EZ$.cc.s:this.state=EZ$.State.OP_MS;break;default:throw this.fail($.subarray(Z))}break;case EZ$.State.OP_MS:switch(Q){case EZ$.cc.G:case EZ$.cc.g:this.state=EZ$.State.OP_MSG;break;default:throw this.fail($.subarray(Z))}break;case EZ$.State.OP_MSG:switch(Q){case EZ$.cc.SPACE:case EZ$.cc.TAB:this.state=EZ$.State.OP_MSG_SPC;break;default:throw this.fail($.subarray(Z))}break;case EZ$.State.OP_MSG_SPC:switch(Q){case EZ$.cc.SPACE:case EZ$.cc.TAB:continue;default:this.state=EZ$.State.MSG_ARG,this.as=Z}break;case EZ$.State.MSG_ARG:switch(Q){case EZ$.cc.CR:this.drop=1;break;case EZ$.cc.NL:{let X=this.argBuf?this.argBuf.bytes():$.subarray(this.as,Z-this.drop);this.processMsgArgs(X),this.drop=0,this.as=Z+1,this.state=EZ$.State.MSG_PAYLOAD,Z=this.as+this.ma.size-1;break}default:if(this.argBuf)this.argBuf.writeByte(Q)}break;case EZ$.State.MSG_PAYLOAD:if(this.msgBuf)if(this.msgBuf.length>=this.ma.size){let X=this.msgBuf.bytes({copy:!1});this.dispatcher.push({kind:EZ$.Kind.MSG,msg:this.ma,data:X}),this.argBuf=void 0,this.msgBuf=void 0,this.state=EZ$.State.MSG_END}else{let X=this.ma.size-this.msgBuf.length,Y=$.length-Z;if(Y<X)X=Y;if(X>0)this.msgBuf.write($.subarray(Z,Z+X)),Z=Z+X-1;else this.msgBuf.writeByte(Q)}else if(Z-this.as>=this.ma.size)this.dispatcher.push({kind:EZ$.Kind.MSG,msg:this.ma,data:$.subarray(this.as,Z)}),this.argBuf=void 0,this.msgBuf=void 0,this.state=EZ$.State.MSG_END;break;case EZ$.State.MSG_END:switch(Q){case EZ$.cc.NL:this.drop=0,this.as=Z+1,this.state=EZ$.State.OP_START;break;default:continue}break;case EZ$.State.OP_PLUS:switch(Q){case EZ$.cc.O:case EZ$.cc.o:this.state=EZ$.State.OP_PLUS_O;break;default:throw this.fail($.subarray(Z))}break;case EZ$.State.OP_PLUS_O:switch(Q){case EZ$.cc.K:case EZ$.cc.k:this.state=EZ$.State.OP_PLUS_OK;break;default:throw this.fail($.subarray(Z))}break;case EZ$.State.OP_PLUS_OK:switch(Q){case EZ$.cc.NL:this.dispatcher.push({kind:EZ$.Kind.OK}),this.drop=0,this.state=EZ$.State.OP_START;break}break;case EZ$.State.OP_MINUS:switch(Q){case EZ$.cc.E:case EZ$.cc.e:this.state=EZ$.State.OP_MINUS_E;break;default:throw this.fail($.subarray(Z))}break;case EZ$.State.OP_MINUS_E:switch(Q){case EZ$.cc.R:case EZ$.cc.r:this.state=EZ$.State.OP_MINUS_ER;break;default:throw this.fail($.subarray(Z))}break;case EZ$.State.OP_MINUS_ER:switch(Q){case EZ$.cc.R:case EZ$.cc.r:this.state=EZ$.State.OP_MINUS_ERR;break;default:throw this.fail($.subarray(Z))}break;case EZ$.State.OP_MINUS_ERR:switch(Q){case EZ$.cc.SPACE:case EZ$.cc.TAB:this.state=EZ$.State.OP_MINUS_ERR_SPC;break;default:throw this.fail($.subarray(Z))}break;case EZ$.State.OP_MINUS_ERR_SPC:switch(Q){case EZ$.cc.SPACE:case EZ$.cc.TAB:continue;default:this.state=EZ$.State.MINUS_ERR_ARG,this.as=Z}break;case EZ$.State.MINUS_ERR_ARG:switch(Q){case EZ$.cc.CR:this.drop=1;break;case EZ$.cc.NL:{let X;if(this.argBuf)X=this.argBuf.bytes(),this.argBuf=void 0;else X=$.subarray(this.as,Z-this.drop);this.dispatcher.push({kind:EZ$.Kind.ERR,data:X}),this.drop=0,this.as=Z+1,this.state=EZ$.State.OP_START;break}default:if(this.argBuf)this.argBuf.write(Uint8Array.of(Q))}break;case EZ$.State.OP_P:switch(Q){case EZ$.cc.I:case EZ$.cc.i:this.state=EZ$.State.OP_PI;break;case EZ$.cc.O:case EZ$.cc.o:this.state=EZ$.State.OP_PO;break;default:throw this.fail($.subarray(Z))}break;case EZ$.State.OP_PO:switch(Q){case EZ$.cc.N:case EZ$.cc.n:this.state=EZ$.State.OP_PON;break;default:throw this.fail($.subarray(Z))}break;case EZ$.State.OP_PON:switch(Q){case EZ$.cc.G:case EZ$.cc.g:this.state=EZ$.State.OP_PONG;break;default:throw this.fail($.subarray(Z))}break;case EZ$.State.OP_PONG:switch(Q){case EZ$.cc.NL:this.dispatcher.push({kind:EZ$.Kind.PONG}),this.drop=0,this.state=EZ$.State.OP_START;break}break;case EZ$.State.OP_PI:switch(Q){case EZ$.cc.N:case EZ$.cc.n:this.state=EZ$.State.OP_PIN;break;default:throw this.fail($.subarray(Z))}break;case EZ$.State.OP_PIN:switch(Q){case EZ$.cc.G:case EZ$.cc.g:this.state=EZ$.State.OP_PING;break;default:throw this.fail($.subarray(Z))}break;case EZ$.State.OP_PING:switch(Q){case EZ$.cc.NL:this.dispatcher.push({kind:EZ$.Kind.PING}),this.drop=0,this.state=EZ$.State.OP_START;break}break;case EZ$.State.OP_I:switch(Q){case EZ$.cc.N:case EZ$.cc.n:this.state=EZ$.State.OP_IN;break;default:throw this.fail($.subarray(Z))}break;case EZ$.State.OP_IN:switch(Q){case EZ$.cc.F:case EZ$.cc.f:this.state=EZ$.State.OP_INF;break;default:throw this.fail($.subarray(Z))}break;case EZ$.State.OP_INF:switch(Q){case EZ$.cc.O:case EZ$.cc.o:this.state=EZ$.State.OP_INFO;break;default:throw this.fail($.subarray(Z))}break;case EZ$.State.OP_INFO:switch(Q){case EZ$.cc.SPACE:case EZ$.cc.TAB:this.state=EZ$.State.OP_INFO_SPC;break;default:throw this.fail($.subarray(Z))}break;case EZ$.State.OP_INFO_SPC:switch(Q){case EZ$.cc.SPACE:case EZ$.cc.TAB:continue;default:this.state=EZ$.State.INFO_ARG,this.as=Z}break;case EZ$.State.INFO_ARG:switch(Q){case EZ$.cc.CR:this.drop=1;break;case EZ$.cc.NL:{let X;if(this.argBuf)X=this.argBuf.bytes(),this.argBuf=void 0;else X=$.subarray(this.as,Z-this.drop);this.dispatcher.push({kind:EZ$.Kind.INFO,data:X}),this.drop=0,this.as=Z+1,this.state=EZ$.State.OP_START;break}default:if(this.argBuf)this.argBuf.writeByte(Q)}break;default:throw this.fail($.subarray(Z))}}if((this.state===EZ$.State.MSG_ARG||this.state===EZ$.State.MINUS_ERR_ARG||this.state===EZ$.State.INFO_ARG)&&!this.argBuf)this.argBuf=new X01.DenoBuffer($.subarray(this.as,Z-this.drop));if(this.state===EZ$.State.MSG_PAYLOAD&&!this.msgBuf){if(!this.argBuf)this.cloneMsgArg();this.msgBuf=new X01.DenoBuffer($.subarray(this.as))}}cloneMsgArg(){let $=this.ma.subject.length,Z=this.ma.reply?this.ma.reply.length:0,Q=new Uint8Array($+Z);if(Q.set(this.ma.subject),this.ma.reply)Q.set(this.ma.reply,$);if(this.argBuf=new X01.DenoBuffer(Q),this.ma.subject=Q.subarray(0,$),this.ma.reply)this.ma.reply=Q.subarray($)}processMsgArgs($){if(this.hdr>=0)return this.processHeaderMsgArgs($);let Z=[],Q=-1;for(let X=0;X<$.length;X++)switch($[X]){case EZ$.cc.SPACE:case EZ$.cc.TAB:case EZ$.cc.CR:case EZ$.cc.NL:if(Q>=0)Z.push($.subarray(Q,X)),Q=-1;break;default:if(Q<0)Q=X}if(Q>=0)Z.push($.subarray(Q));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],Fu);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],Fu);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}: ${Y01.TD.decode($)}`)}processHeaderMsgArgs($){let Z=[],Q=-1;for(let X=0;X<$.length;X++)switch($[X]){case EZ$.cc.SPACE:case EZ$.cc.TAB:case EZ$.cc.CR:case EZ$.cc.NL:if(Q>=0)Z.push($.subarray(Q,X)),Q=-1;break;default:if(Q<0)Q=X}if(Q>=0)Z.push($.subarray(Q));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],Fu),this.ma.size=this.protoParseInt(Z[3],Fu);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],Fu),this.ma.size=this.protoParseInt(Z[4],Fu);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 Q=0;for(let X=0;X<$.length;X++){if($[X]<wZ$||$[X]>PG4)return-1;Q=Q*10+($[X]-wZ$)}return Z!==void 0&&Q>Z?-1:Q}}EZ$.Parser=jZ$;EZ$.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};EZ$.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 Q30=v((PZ$)=>{Object.defineProperty(PZ$,"__esModule",{value:!0});PZ$.MsgHdrsImpl=void 0;PZ$.canonicalMIMEHeaderKey=K01;PZ$.headers=RG4;var zZ$=Q3(),HW=eO(),Z30=X3();function K01($){let F=!0,U=Array($.length);for(let N=0;N<$.length;N++){let B=$.charCodeAt(N);if(B===58||B<33||B>126)throw Z30.InvalidArgumentError.format("header",`'${$[N]}' is not a valid character in a header name`);if(F&&97<=B&&B<=122)B-=32;else if(!F&&65<=B&&B<=90)B+=32;U[N]=B,F=B==45}return String.fromCharCode(...U)}function RG4($=0,Z=""){if($===0&&Z!=="")throw Z30.InvalidArgumentError.format("code","is required");else if($>0&&Z==="")throw Z30.InvalidArgumentError.format("description","is required");return new Uu($,Z)}var G01="NATS/1.0";class Uu{_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,Q]of this.headers){let X=$.values(Z);if(Q.length!==X.length)return!1;let Y=[...Q].sort(),J=[...X].sort();for(let G=0;G<Y.length;G++)if(Y[G]!==J[G])return!1}return!0}return!1}static decode($){let Z=new Uu,X=zZ$.TD.decode($).split(`\r
2081
2081
  `),Y=X[0];if(Y!==G01){let J=Y.replace(G01,"").trim();if(J.length>0){if(Z._code=parseInt(J,10),isNaN(Z._code))Z._code=0;let G=Z._code.toString();J=J.replace(G,""),Z._description=J.trim()}}if(X.length>=1)X.slice(1).map((J)=>{if(J){let G=J.indexOf(":");if(G>-1){let K=J.slice(0,G),W=J.slice(G+1).trim();Z.append(K,W)}}});return Z}toString(){if(this.headers.size===0&&this._code===0)return"";let $=G01;if(this._code>0&&this._description!=="")$+=` ${this._code} ${this._description}`;for(let[Z,Q]of this.headers)for(let X=0;X<Q.length;X++)$=`${$}\r
2082
2082
  ${Z}: ${Q[X]}`;return`${$}\r
@@ -3423,7 +3423,7 @@ Respond with ONLY a JSON object of this shape, and nothing else:
3423
3423
  ${J.join(`
3424
3424
  `)}`:X}function HV6($){let Z=new Set;for(let Q of $)for(let Y of Q.split(`
3425
3425
  `)){let X=Y.trim();if(/^Co-authored-by:\s/i.test(X))Z.add(X)}return[...Z]}var ie$=200,eI6=12,ZV6,YV6=300,yI0=3;var rW1=O(()=>{OZ();m$();xI0();ZV6={aheadBy:0,behindBy:0,files:[]}});function UV6($){if(!$||$.includes(".."))return!1;return FV6.test($)}function ne$($){let Z=typeof $.__resolveType==="string"?$.__resolveType:null;if(!Z||!UV6(Z))return null;let{__resolveType:Q,...Y}=$;return{resolveType:Z,payload:Y}}function te$($,Z){return`${$.replace(/\/+$/,"")}/deco/invoke/${Z}`}var FV6;var oe$=O(()=>{FV6=/^[\w./@-]+$/});function E$0($,Z){let Q=$?.githubRepo;if(!Q?.owner||!Q?.name)return null;if(!Q.connectionId)return Q;if(!Z.includes(Q.connectionId))return null;return Q}async function se$($,Z,Q,Y){let X=$.organization?.id;if(!X)throw new sw(nZ);let J=await bL($.storage,X,Y);if(J&&await _N($.storage,J)){let F=await XF($,J,{forceRefresh:!0}).catch((U)=>{throw new sw(U instanceof Error?U.message:nZ)});await re$($,Z,Q,F);return}let G=Y.connectionId??J?.legacyConnectionId;if(!G)throw new sw("Push requires a connected git account. Connect the repository's provider for this project and restart the sandbox.");await eu({ctx:$,connectionId:G,organizationId:X,forceRefresh:!0,onLegacyMintError:(F)=>{let U=F instanceof Error?F.message:nZ;throw new sw(U)}});let{cloneUrl:W,gitUserName:K,gitUserEmail:H}=await JF(G,Y.owner,Y.name,$.db,$.vault).catch((F)=>{let{code:U,message:N}=mG$(F instanceof Error?F.message:String(F));throw U?new sw(N):F});await re$($,Z,Q,{cloneUrl:W,gitUserName:K,gitUserEmail:H})}async function re$($,Z,Q,Y){let{cloneUrl:X,gitUserName:J,gitUserEmail:G}=Y,W=td($),K=await Z.proxyDaemonRequest(Q,"/_sandbox/config",{method:"PUT",headers:new Headers({"content-type":"application/json"}),body:JSON.stringify({git:{repository:{cloneUrl:X},identity:{userName:J,userEmail:G}},...W?{operator:W}:{}})});if(!K.ok){let H=await Xw(K,NV6).catch(()=>K.statusText);throw Error(`Failed to refresh sandbox git credentials (${K.status}): ${H}`)}}var NV6=10485760,sw;var sW1=O(()=>{PG();II0();ca();f30();hs();OZ();sw=class sw extends Error{constructor($){super($);this.name="GitPushAuthError"}}});function DV6($){let Z=$.startsWith("thread:")?$.slice(7):$;if(!Z||Z.length>255||Z.includes("..")||Z.startsWith("/")||Z.endsWith("/")||Z.endsWith(".lock")||!BV6.test(Z))throw Error(`Invalid branch name: ${$}`)}function sb($){return AbortSignal.any([$.req.raw.signal,AbortSignal.timeout(LV6)])}async function jV6($,Z){let Q=$.var.studioContext,Y=BF(Z.branch),X=$.req.query("thread")??Y,J=X&&X===Y?Z.branchThread:X?await Q.storage.threads.get(X).catch(()=>null):null,G=J?.virtual_mcp_id===Z.virtualMcpId?J:null,W=Ef(G?.metadata?.runtime);if(W)return W;let K=wP0(Z.virtualMcpMetadata),H=K==="cms"?await SW1(Q,{claimName:Z.claimName}):"alive",F=K==="cms"&&H!=="alive"?"cms":"sandbox",U=!!G&&(H==="gone"||H==="alive"&&K==="cms");if(U&&G)da(Q,G.id,F);if(K==="cms")console.log("sandbox proxy: no runtime stamp",{route:$.req.path,method:$.req.method,reason:G?"unstamped":"threadless",liveness:H,resolved:F,stamped:U});return F}async function EV6($){let Z=$.get("vmClaim");if(Z.runner)return Z.runner;try{return await tY($.var.studioContext)}catch{return null}}function ab($){let{runner:Z}=$.get("vmClaim");if(!Z)return $.json({error:"No sandbox runner configured"},503);return Z}async function ed($){let{virtualMcpMetadata:Z,connectionIds:Q}=$.get("vmClaim"),Y=$.var.studioContext,X=E$0(Z,Q);if(!X)throw new f0({provider:"github",status:404,message:"Project has no GitHub repository"});let J=p(Y);return ru(Y,J.id,X)}function aW1($,Z){let Q=Z instanceof Error?Z.message:String(Z),Y=j3$(Z);if(Y!==void 0)return $.json({error:Q},429,{...R5,...Y===null?{}:{"Retry-After":String(Math.ceil(Y/1000))}});if(Z instanceof P6)return $.json({error:Q},409,R5);let X=MG(Z);if(X!==null){let J=X===404?404:X===409||X===422?409:502;return $.json({error:Q},J,R5)}return $.json({error:Q},502,R5)}async function $08($,Z,Q){let Y;try{Y=await fetch(Z,Q)}catch{return $.json({error:"Preview unreachable"},502)}let X;try{X=await Y.text()}catch{return $.json({error:"Preview unreachable"},502)}return new Response(X,{status:Y.status,headers:{"content-type":Y.headers.get("content-type")??"application/json"}})}async function Z08($){try{let Z=await ed($),Q=await gI0(Z,$.get("vmClaim").branch);return $.json(Q,200,R5)}catch(Z){return aW1($,Z)}}function z$0($,Z){let Y=(lI0.get($)??Promise.resolve()).catch(()=>{}).then(Z),X=Y.catch(()=>{});return lI0.set($,X),X.finally(()=>{if(lI0.get($)===X)lI0.delete($)}),Y}async function k7($,Z,Q){if(!Q?.runner&&$.get("vmClaim").runtime==="cms")return $.json({error:"sandbox not found: this session is sandbox-less"},404,R5);let Y=Q?.runner??ab($);if(Y instanceof Response)return Y;let{claimName:X,userId:J,projectRef:G}=$.get("vmClaim"),W=Q?.method??"POST",K=null,H=new Headers;if(Q?.jsonBody!==void 0)K=Q.jsonBody,H.set("content-type","application/json");else if(Q?.forwardJsonBody)K=await $.req.text(),H.set("content-type","application/json");let F=Q?.signal,U={method:W,headers:H,body:K,...F?{signal:F}:{}},N=async()=>{let B=await Y.proxyDaemonRequest(X,Z,U);if(Q?.map404to410&&B.status===404){try{await B.body?.cancel()}catch{}if(await Y.adoptLiveClaim({userId:J,projectRef:G},X))B=await Y.proxyDaemonRequest(X,Z,U);if(B.status===404){try{await B.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",...R5}})}}let D=await B.text(),L=Q?.redactRepoDir?zV6(D):D,w=B.headers.get("content-type")??"application/json";return new Response(L,{status:B.status,headers:{"content-type":w,...R5}})};try{if(F){let B=N();return B.catch(()=>{}),await Promise.race([B,new Promise((L,w)=>{if(F.aborted)return w(F.reason);F.addEventListener("abort",()=>w(F.reason),{once:!0})})])}return await N()}catch(B){let D=B instanceof Error?B.message:String(B);return $.json({error:`Daemon unreachable: ${D}`},502)}}function zV6($){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 cI0($,Z,Q,Y="GET",X){let J=await $.proxyDaemonRequest(Z,Q,{method:Y,headers:new Headers,body:null});if(J.status===404&&X){try{await J.body?.cancel()}catch{}if(await $.adoptLiveClaim(X,Z))J=await $.proxyDaemonRequest(Z,Q,{method:Y,headers:new Headers,body:null})}if(J.status===404){try{await J.body?.cancel()}catch{}throw Error("SANDBOX_GONE")}let G=await J.text();if(!J.ok){let W=`Daemon error (${J.status})`;try{W=JSON.parse(G).error??W}catch{}throw Error(W)}return JSON.parse(G)}function PV6($){return Q08.includes($)}var BV6,ae$=524288,OV6=65536,LV6=1e4,ee$=2000,wV6,lI0,R5,Q08,Y08=()=>{let $=new e0;$.use("/:virtualMcpId/:branch/*",wV6),$.post("/:virtualMcpId/:branch/write",(Q)=>k7(Q,"/_sandbox/write",{forwardJsonBody:!0,signal:sb(Q)})),$.post("/:virtualMcpId/:branch/unlink",(Q)=>k7(Q,"/_sandbox/unlink",{forwardJsonBody:!0,signal:sb(Q)})),$.post("/:virtualMcpId/:branch/mkdir",(Q)=>k7(Q,"/_sandbox/mkdir",{forwardJsonBody:!0,signal:sb(Q)})),$.post("/:virtualMcpId/:branch/rename",(Q)=>k7(Q,"/_sandbox/rename",{forwardJsonBody:!0,signal:sb(Q)})),$.post("/:virtualMcpId/:branch/read",(Q)=>k7(Q,"/_sandbox/read",{forwardJsonBody:!0,signal:sb(Q)})),$.post("/:virtualMcpId/:branch/glob",(Q)=>k7(Q,"/_sandbox/glob",{forwardJsonBody:!0,signal:sb(Q)})),$.post("/:virtualMcpId/:branch/grep",(Q)=>k7(Q,"/_sandbox/grep",{forwardJsonBody:!0,signal:sb(Q)})),$.post("/:virtualMcpId/:branch/exec/:script",async(Q)=>{let Y=Q.req.param("script");if(!Y)return Q.json({error:"missing script name"},400);return k7(Q,`/_sandbox/exec/${encodeURIComponent(Y)}`)}),$.post("/:virtualMcpId/:branch/exec/:script/kill",async(Q)=>{let Y=Q.req.param("script");if(!Y)return Q.json({error:"missing script name"},400);return k7(Q,`/_sandbox/exec/${encodeURIComponent(Y)}/kill`)}),$.get("/:virtualMcpId/:branch/config",(Q)=>k7(Q,"/_sandbox/config",{method:"GET",map404to410:!0,redactRepoDir:!0})),$.put("/:virtualMcpId/:branch/config",(Q)=>k7(Q,"/_sandbox/config",{method:"PUT",forwardJsonBody:!0,map404to410:!0})),$.post("/:virtualMcpId/:branch/setup/:step",async(Q)=>{let Y=Q.req.param("step");if(!Y||!PV6(Y))return Q.json({error:`step must be one of: ${Q08.join(", ")}`},400);let X=Q.get("vmClaim"),J=await SW1(Q.var.studioContext,{claimName:X.claimName})==="gone"?null:await EV6(Q);if(!J)return Q.json({error:"sandbox not found: nothing is running at this ref"},404,R5);if(Y==="start"){let G=p(Q.var.studioContext),W=vl(X.virtualMcpMetadata);try{await BP0({ctx:Q.var.studioContext,runner:J,handle:X.claimName,orgId:G.id,userId:X.callerUserId,entries:W})}catch(K){let H=K instanceof Error?K.message:String(K);return Q.json({error:`Failed to push env to daemon: ${H}`},502)}}return k7(Q,`/_sandbox/setup/${Y}`,{signal:Q.req.raw.signal,map404to410:!0,runner:J})}),$.get("/:virtualMcpId/:branch/events",(Q)=>{let Y=Q.get("vmClaim");if(!Y.runner)return IB(Q,async(X)=>{await X.writeSSE({event:"phase",data:JSON.stringify({kind:"failed",reason:"unknown",message:"No sandbox runner configured on this studio instance."})})});return Qe$(Q,{ctx:Q.var.studioContext,claimName:Y.claimName,runner:Y.runner,virtualMcpId:Y.virtualMcpId,branch:Y.branch,userId:Y.userId,projectRef:Y.projectRef,virtualMcpMetadata:Y.virtualMcpMetadata})}),$.get("/:virtualMcpId/:branch/git/status",(Q)=>{if(Q.get("vmClaim").runtime==="cms")return Z08(Q);return Z(Q)});let Z=(Q)=>k7(Q,"/_sandbox/git/status",{method:"GET",map404to410:!0,signal:AbortSignal.any([Q.req.raw.signal,AbortSignal.timeout(ee$)])});return $.post("/:virtualMcpId/:branch/git/status",(Q)=>{if(Q.get("vmClaim").runtime==="cms")return Z08(Q);return k7(Q,"/_sandbox/git/status",{map404to410:!0,signal:AbortSignal.any([Q.req.raw.signal,AbortSignal.timeout(ee$)])})}),$.post("/:virtualMcpId/:branch/git/diff",async(Q)=>{let Y=Q.get("vmClaim");if(Y.runtime==="cms")try{let X=await Q.req.json().catch(()=>({})),J=await ed(Q),G=await hI0(J,Y.branch,X.base);return Q.json(G,200,R5)}catch(X){return aW1(Q,X)}return k7(Q,"/_sandbox/git/diff",{forwardJsonBody:!0,map404to410:!0})}),$.post("/:virtualMcpId/:branch/git/publish",async(Q)=>{if(Q.get("vmClaim").runtime==="cms")return Q.json({ok:!0},200,R5);let Y=ab(Q);if(Y instanceof Response)return Y;let{claimName:X,virtualMcpMetadata:J,connectionIds:G}=Q.get("vmClaim"),W=Q.var.studioContext;return z$0(X,async()=>{try{await CW1(W,Y,X);let K=E$0(J,G);if(K)await se$(W,Y,X,K)}catch(K){if(K instanceof sw)return Q.json({error:K.message},403,R5);let H=K instanceof Error?K.message:String(K);return Q.json({error:H},502,R5)}return k7(Q,"/_sandbox/git/publish",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/discard",async(Q)=>{let Y=Q.get("vmClaim");if(Y.runtime==="cms")return z$0(Y.claimName,async()=>{let X=await Q.req.json().catch(()=>({})),J=Array.isArray(X.filepaths)?X.filepaths.filter((G)=>typeof G==="string"):[];if(J.length===0)return Q.json({error:"filepaths is required"},400,R5);try{let G=await ed(Q);return await pe$(G,Y.branch,J),Q.json({ok:!0},200,R5)}catch(G){let W=MG(G)===409||G instanceof P6?409:502,K=G instanceof Error?G.message:String(G);return Q.json({error:K},W,R5)}});return z$0(Y.claimName,()=>k7(Q,"/_sandbox/git/discard",{forwardJsonBody:!0,map404to410:!0}))}),$.post("/:virtualMcpId/:branch/git/rebase",async(Q)=>{let Y=Q.get("vmClaim");if(Y.runtime==="cms")return z$0(Y.claimName,async()=>{try{let W=await Q.req.json().catch(()=>({})),K=await ed(Q),H=W.base??await K.getDefaultBranch();return await uI0(K,Y.branch,H),Q.json({ok:!0},200,R5)}catch(W){return aW1(Q,W)}});let X=ab(Q);if(X instanceof Response)return X;let{claimName:J}=Q.get("vmClaim"),G=Q.var.studioContext;return z$0(J,async()=>{try{await CW1(G,X,J)}catch(W){let K=W instanceof Error?W.message:String(W);return Q.json({error:K},502,R5)}return k7(Q,"/_sandbox/git/rebase",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/suggest-commit",l5({maxSize:ae$,onError:(Q)=>Q.json({error:"Payload too large"},413,R5)}),async(Q)=>{let Y=Q.get("vmClaim"),X=null;if(Y.runtime!=="cms"){let H=ab(Q);if(H instanceof Response)return H;X=H}let{claimName:J,userId:G,projectRef:W}=Y,K=Q.var.studioContext;try{let H=await Q.req.json().catch(()=>({})),F=H.status,U=H.diff,N=U!=null&&typeof U.diffs==="object"&&U.diffs!==null,[B,D]=fW1(F)&&N?[F,U]:X?await Promise.all([cI0(X,J,"/_sandbox/git/status","GET",{userId:G,projectRef:W}),cI0(X,J,"/_sandbox/git/diff","GET",{userId:G,projectRef:W})]):await(async()=>{let w=await ed(Q);return Promise.all([gI0(w,Y.branch),hI0(w,Y.branch)])})();await bW(K,p(K).id,"suggesting a commit message");let L=await We$(K,B,D);return Q.json(L,200,R5)}catch(H){let F=H instanceof Error?H.message:String(H);if(F==="SANDBOX_GONE")return Q.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,R5);return Q.json({error:F},502,R5)}}),$.post("/:virtualMcpId/:branch/git/judge-review",l5({maxSize:ae$,onError:(Q)=>Q.json({error:"Payload too large"},413,R5)}),async(Q)=>{let Y=Q.get("vmClaim"),X=null;if(Y.runtime!=="cms"){let H=ab(Q);if(H instanceof Response)return H;X=H}let{claimName:J,userId:G,projectRef:W}=Y,K=Q.var.studioContext;try{let H=await Q.req.json().catch(()=>({})),F=H.status,U=H.diff,N=U!=null&&typeof U.diffs==="object"&&U.diffs!==null,[B,D]=fW1(F)&&N?[F,U]:X?await Promise.all([cI0(X,J,"/_sandbox/git/status","GET",{userId:G,projectRef:W}),cI0(X,J,"/_sandbox/git/diff","GET",{userId:G,projectRef:W})]):await(async()=>{let w=await ed(Q);return Promise.all([gI0(w,Y.branch),hI0(w,Y.branch)])})();await bW(K,p(K).id,"judging whether a change needs review");let L=await He$(K,B,D,typeof H.language==="string"?H.language:void 0);return Q.json(L,200,R5)}catch(H){let F=H instanceof Error?H.message:String(H);if(F==="SANDBOX_GONE")return Q.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,R5);return Q.json({error:F},502,R5)}}),$.get("/:virtualMcpId/:branch/preview-fetch",async(Q)=>{let Y=ab(Q);if(Y instanceof Response)return Y;let{claimName:X}=Q.get("vmClaim"),J=Q.req.query("path");if(!J||!J.startsWith("/")||J.startsWith("//")||J.includes("..")||J.includes("\\"))return Q.json({error:"Path not allowed"},403);let G;try{G=await Y.getPreviewUrl(X)}catch{return Q.json({error:"Preview not available"},502)}if(!G)return Q.json({error:"Preview not available"},502);let W=G.replace(/\/+$/,"");return $08(Q,`${W}${J}`)}),$.post("/:virtualMcpId/:branch/preview-invoke",l5({maxSize:OV6,onError:(Q)=>Q.json({error:"Payload too large"},413)}),async(Q)=>{let Y=ab(Q);if(Y instanceof Response)return Y;let{claimName:X}=Q.get("vmClaim"),J;try{J=await Y.getPreviewUrl(X)}catch{return Q.json({error:"Preview not available"},502)}if(!J)return Q.json({error:"Preview not available"},502);let G;try{G=await Q.req.json()}catch{return Q.json({error:"Invalid JSON body"},400)}if(!G||typeof G!=="object"||Array.isArray(G))return Q.json({error:"Invalid JSON body"},400);let W=ne$(G);if(!W)return Q.json({error:"Invalid or missing __resolveType"},400);let K=te$(J,W.resolveType);return $08(Q,K,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(W.payload),signal:AbortSignal.timeout(30000)})}),$};var X08=O(()=>{y$();hK();nd();kW1();ga();ea$();CG();fl();$e$();BK();qH();Ze$();Ye$();N81();ua();yW1();Fe$();OZ();c6();rW1();oe$();sW1();BV6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;wV6=MI0(async($,Z)=>{let Q=$.var.studioContext;try{n(Q)}catch{return $.json({error:"Unauthorized"},401)}let Y=l0(Q);if(!Y)return $.json({error:"Unauthorized"},401);let X;try{X=p(Q)}catch{return $.json({error:"Organization scope required"},403)}let J=$.req.param("virtualMcpId"),G=$.req.param("branch");if(!J||!G)return $.json({error:"virtualMcpId and branch are required"},400);try{DV6(G)}catch(L){let w=L instanceof Error?L.message:String(L);return $.json({error:w},400)}let W=await Q.storage.virtualMcps.findById(J);if(!W||W.organization_id!==X.id)return $.json({error:"Virtual MCP not found"},404);let K=Fa({orgId:X.id,virtualMcpId:J,branch:G}),H=await m11(Q,G),F=i11(H,Y),U=aa$({userId:F,projectRef:K}),N=W.metadata??null,B=await jV6($,{claimName:U,branch:G,virtualMcpId:J,sandboxUserId:F,virtualMcpMetadata:N,branchThread:H});if(B==="cms")return $.set("vmClaim",{claimName:U,callerUserId:Y,runner:null,virtualMcpId:J,branch:G,userId:F,projectRef:K,virtualMcpMetadata:N,connectionIds:W.connections?.map((L)=>L.connection_id)??[],runtime:B}),Z();let D;try{D=await tY(Q)}catch{D=null}if(!D)return $.json({error:"No sandbox runner found"},404);return $.set("vmClaim",{claimName:U,callerUserId:Y,runner:D,virtualMcpId:J,branch:G,userId:F,projectRef:K,virtualMcpMetadata:N,connectionIds:W.connections?.map((L)=>L.connection_id)??[],runtime:B}),Z()});lI0=new Map;R5={"Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache"};Q08=["clone","install","start"]});function J08($,Z,Q){let Y=eW1.get($);if(!Y)Y={pending:null,running:!1},eW1.set($,Y);if(!Y.pending)Y.pending={set:new Map,del:new Set,deps:Z,resolvers:[],rejecters:[]};let X=Y.pending;X.deps=Z;for(let[G,W]of Object.entries(Q.set??{}))X.set.set(G,W),X.del.delete(G);for(let G of Q.delete??[])X.del.add(G),X.set.delete(G);let J=new Promise((G,W)=>{X.resolvers.push(G),X.rejecters.push(W)});if(!Y.running)TV6($,Y);return J}async function TV6($,Z){Z.running=!0;try{while(Z.pending){let Q=Z.pending;Z.pending=null;try{let Y=await RV6(Q);for(let X of Q.resolvers)X(Y)}catch(Y){for(let X of Q.rejecters)X(Y)}}}finally{if(Z.running=!1,!Z.pending)eW1.delete($)}}async function RV6($){let{client:Z,branch:Q,packagePath:Y}=$.deps,X=new Map;for(let J=0;;J++){let G=await ad(Z,Q),W=await Z.listDecofileEntries(G,Y),K=nW1(W,Y),H=[],F=new Map(K.map((N)=>[N.path,{stem:N.stem,sha:N.sha}]));for(let[N,B]of $.set){let D=tW1(K,N),L=`${JSON.stringify(B,null,2)}
3426
- `;await le$(Z.repo,L);let w=D[0]??`${bI0(Y)}/${uW1(N)}.json`;H.push({path:w,content:L});let j=w.slice(w.lastIndexOf("/")+1,-5);F.set(w,{stem:j,content:L});for(let E of D.slice(1))H.push({path:E,deleted:!0}),F.delete(E)}for(let N of $.del)for(let B of tW1(K,N))H.push({path:B,deleted:!0}),F.delete(B);if(H.length===0)return G;let U=Y?`${Y}/.deco/blocks.gen.json`:".deco/blocks.gen.json";if(W.some((N)=>N.type==="blob"&&N.path===U)){let N=await ce$(Z,F.values(),X),{decofile:B,skipped:D}=D$0(N);if(D.length>0)console.warn("decofile gen: dropped blocks that were not valid JSON",{repo:eW(Z.repo),branch:Q,packagePath:Y,blocks:D.map((L)=>L.key)});H.push({path:U,content:B})}try{let{sha:N}=await Z.commitFiles({branch:Q,message:qV6($),expectedHead:G,changes:H});return N}catch(N){if(!(N instanceof P6)||J>=AV6-1)throw N;await T$(_7(2000,200,J,2,0.5))}}}function qV6($){let Z=(X)=>{let J=X.slice(0,3).join(", ");return X.length>3?`${J} (+${X.length-3} more)`:J},Q=[];if($.set.size>0)Q.push(`update ${Z([...$.set.keys()])}`);if($.del.size>0)Q.push(`delete ${Z([...$.del])}`);let Y=`chore(decofile): ${Q.join("; ")}`;return w11(Y,$.deps.coAuthor)}var AV6=3,eW1;var G08=O(()=>{Wz0();kI0();X6();m$();OZ();xI0();eW1=new Map});import{createHmac as W08,randomBytes as MV6,timingSafeEqual as IV6}from"crypto";function K08(){if(dI0)return dI0;let $;try{let Z=L0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return dI0=$?Buffer.from($):MV6(32),dI0}function $K1($){let Z=$.nowMs??Date.now(),Q={o:$.organizationId,m:$.virtualMcpId,b:$.branch,e:Math.floor((Z+VV6)/1000)},Y=Buffer.from(JSON.stringify(Q)).toString("base64url"),X=W08("sha256",K08()).update(Y).digest("base64url");return`${Y}.${X}`}function H08($,Z){let Q=$.indexOf(".");if(Q<0)return!1;let Y=$.slice(0,Q),X=Buffer.from($.slice(Q+1)),J=Buffer.from(W08("sha256",K08()).update(Y).digest("base64url"));if(X.length!==J.length||!IV6(X,J))return!1;let G;try{G=JSON.parse(Buffer.from(Y,"base64url").toString())}catch{return!1}let W=Math.floor((Z.nowMs??Date.now())/1000);return G.o===Z.organizationId&&G.m===Z.virtualMcpId&&G.b===Z.branch&&typeof G.e==="number"&&G.e>=W}var VV6=21600000,dI0=null;var F08=O(()=>{t1()});import{z as $m}from"zod";function SV6($){return $.length>0&&$.length<=255&&!$.includes("..")&&!$.endsWith("/")&&!$.endsWith(".lock")&&kV6.test($)}function O08($){return $.req.header("x-forwarded-host")??new URL($.req.url).host}async function P$0($){let Z=$.get("decofileScope");return ru($.var.studioContext,Z.organizationId,Z.githubRepo)}function A$0($,Z){let Q=Z instanceof Error?Z.message:String(Z);if(Z instanceof P6)return $.json({error:Q},409);let Y=MG(Z);if(Y!==null){let X=Y===404?404:Y===409||Y===422?409:502;return $.json({error:Q},X)}return $.json({error:Q},500)}function L08(){let $=new e0;return $.use("/:virtualMcpId/:branch",D08),$.use("/:virtualMcpId/:branch/*",D08),$.get("/:virtualMcpId/:branch",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await P$0(Z),X=await de$(Y,Q.branch,Q.packagePath,{createBranchIfMissing:!!Q.userId}),J={ETag:`"${X.sha}"`,"Cache-Control":"no-store","Access-Control-Allow-Origin":"*"};if(Z.req.header("if-none-match")===`"${X.sha}"`)return Z.body(null,304,J);if(!Q.userId)return Z.body(X.decofile,200,{...J,"content-type":"application/json"});let G=$K1({organizationId:Q.organizationId,virtualMcpId:Q.virtualMcpId,branch:Q.branch});return Z.body(`{"version":${JSON.stringify(X.sha)},"token":${JSON.stringify(G)},"apiHost":${JSON.stringify(O08(Z))},"decofile":${X.decofile}}`,200,{...J,"content-type":"application/json"})}catch(Y){return A$0(Z,Y)}}),$.get("/:virtualMcpId/:branch/meta",async(Z)=>{let Q=Z.get("decofileScope"),Y=Q.packagePath?`${Q.packagePath}/.deco/meta.gen.json`:".deco/meta.gen.json";try{let X=await P$0(Z),J=await X.readFileAtRef(Q.branch,Y);if(J===null){let G=await X.getDefaultBranch();if(G!==Q.branch)J=await X.readFileAtRef(G,Y)}if(J===null)return Z.json({error:"meta.gen.json not committed"},404);return Z.body(J,200,{"content-type":"application/json","Cache-Control":"no-store","Access-Control-Allow-Origin":"*"})}catch(X){return A$0(Z,X)}}),$.patch("/:virtualMcpId/:branch",_V6,async(Z)=>{let Q=Z.get("decofileScope"),Y=Z.var.studioContext,X=vV6.safeParse(await Z.req.json().catch(()=>null));if(!X.success)return Z.json({error:"Invalid body",details:X.error.issues},400);let J=X.data;for(let G of[...Object.keys(J.set??{}),...J.delete??[]])try{VI0(G)}catch(W){let K=W instanceof Error?W.message:String(W);return Z.json({error:K},400)}for(let[G,W]of Object.entries(J.set??{})){if(typeof W!=="object"||W===null||Array.isArray(W))return Z.json({error:`Block "${G}" must be a JSON object`},400);if(hW1(G))return Z.json({error:`Block key "${G}" collides with a framework resolver module and cannot be written`},400)}try{let G=await P$0(Z),W=await J08(`${Q.organizationId}/${Q.virtualMcpId}/${Q.branch}`,{client:G,branch:Q.branch,packagePath:Q.packagePath,coAuthor:td(Y)},J),K=$K1({organizationId:Q.organizationId,virtualMcpId:Q.virtualMcpId,branch:Q.branch});return Z.json({version:W,token:K,apiHost:O08(Z)})}catch(G){return A$0(Z,G)}}),$.post("/:virtualMcpId/:branch/publish",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await P$0(Z),X=await Y.getDefaultBranch();if(X===Q.branch)return Z.json({error:"Branch is already the default branch"},400);let J=`chore(decofile): publish ${Q.branch}`;try{let G;try{G=await Y.mergeBranches(X,Q.branch,J)}catch(W){if(MG(W)!==409)throw W;await uI0(Y,Q.branch,X),G=await Y.mergeBranches(X,Q.branch,J)}return G?Z.json({result:"merged",sha:G}):Z.json({result:"up-to-date"})}catch(G){if(MG(G)===409)return Z.json({error:"merge-conflict"},409);if(MG(G)===405){let K=await Y.findOpenChangeRequest(X,Q.branch)??await Y.createChangeRequest({base:X,head:Q.branch,title:`Publish ${Q.branch}`});return Z.json({result:"pull-request",number:K.number,url:K.url})}throw G}}catch(Y){return A$0(Z,Y)}}),$.get("/:virtualMcpId/:branch/status",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await P$0(Z),X=await Y.getDefaultBranch();if(X===Q.branch)return Z.json({baseBranch:X,aheadBy:0,behindBy:0,lastCommitAt:null});try{let[{aheadBy:J,behindBy:G},W]=await Promise.all([Y.compare(X,Q.branch),Y.getBranch(Q.branch)]);return Z.json({baseBranch:X,aheadBy:J,behindBy:G,lastCommitAt:W?.committedAt??null})}catch(J){if(MG(J)===404)return Z.json({baseBranch:X,aheadBy:0,behindBy:0,lastCommitAt:null});throw J}}catch(Y){return A$0(Z,Y)}}),$}var kV6,U08=500,N08=1048576,B08=1024,CV6=8388608,_V6,vV6,D08;var w08=O(()=>{B81();kI0();y$();hK();kW1();II0();sW1();OZ();G08();F08();rW1();xI0();qH();kV6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;_V6=l5({maxSize:CV6,onError:($)=>$.json({error:"Payload too large"},413)}),vV6=$m.object({set:$m.record($m.string(),$m.unknown()).optional(),delete:$m.array($m.string()).optional()}).refine(($)=>Object.keys($.set??{}).length>0||($.delete?.length??0)>0,{message:"Patch must set or delete at least one block"}).refine(($)=>Object.keys($.set??{}).length+($.delete?.length??0)<=U08,{message:`Patch cannot touch more than ${U08} blocks`}).refine(($)=>Object.values($.set??{}).every((Z)=>JSON.stringify(Z).length<=N08),{message:`Each block must be at most ${N08} bytes`}).refine(($)=>[...Object.keys($.set??{}),...$.delete??[]].every((Z)=>Z.length<=B08),{message:`Each block key must be at most ${B08} characters`}),D08=MI0(async($,Z)=>{let Q=$.var.studioContext,Y=Q.organization;if(!Y)return $.json({error:"Organization scope required"},500);let X=$.req.param("virtualMcpId"),J=$.req.param("branch");if(!X||!J)return $.json({error:"virtualMcpId and branch are required"},400);if(!SV6(J))return $.json({error:`Invalid branch name: ${J}`},400);let G=Q.auth?.user?.id??null;if(!G){let B=$.req.query("token");if(!($.req.method==="GET"&&!$.req.path.match(/\/(publish|status)$/)))return $.json({error:"Unauthorized"},401);if(!B||!H08(B,{organizationId:Y.id,virtualMcpId:X,branch:J}))return $.json({error:"Unauthorized"},401)}if(!await YG(Q,Y.id,"cms"))return $.json({error:"This organization's plan does not include the CMS",code:"feature_not_in_plan"},403);let W=await Q.storage.virtualMcps.findById(X);if(!W||W.organization_id!==Y.id)return $.json({error:"Virtual MCP not found"},404);let K=W.metadata??null;if(!LP0(K))return $.json({error:"Project has no preview server configured"},404);let F=W.connections?.map((B)=>B.connection_id)??[],U=E$0(K,F);if(!U)return $.json({error:"Project has no GitHub repository"},404);let N=K?.runtime;return $.set("decofileScope",{organizationId:Y.id,virtualMcpId:X,branch:J,packagePath:N?.path?.replace(/^\/+|\/+$/g,"")||null,githubRepo:U,userId:G}),Z()})});var j08=($)=>{let Z=new e0;if(Z.use("*",qd),Z.use("*",tt$),Z.route("/",bM0()),Z.route("/",So$()),Z.route("/",Lo$()),Z.route("/",ha$()),Z.route("/",Ca$()),Z.route("/",ya$()),Z.route("/",va$()),Z.route("/",TI0()),Z.route("/tools",pa$()),Z.route("/",da$()),Z.route("/",Ha$({kvStorage:$.kvStorage})),Z.route("/",Wa$()),Z.route("/fs",Aa$({getConnection:$.getNatsConnection})),Z.route("/sandbox",Y08()),Z.route("/decofile",L08()),Z.route("/",Va$()),Z.route("/",Ra$()),Z.route("/deco-sites",yM0()),Z.route("/hosting",Jo$()),Z.route("/monitor",No$()),Z.route("/sso",SM0()),Z.route("/",RI0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",$o$()),$.mountDevAssets)Z.route("/dev-assets",lM0({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("/",Yp$()),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",Ma$()),Z.route("/mcp",T20()),Z.route("/mcp/self",EI0()),Z.route("/mcp",M20()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var E08=O(()=>{y$();ot$();EM0();Zo$();r31();Go$();Bo$();cM0();hb();i31();ZG1();Ka$();Fa$();Ta$();qa$();ae();h31();I20();zW1();Ia$();ka$();_a$();fa$();TW1();ua$();ma$();RW1();na$();qW1();R20();X08();w08()});function fV6($){return $.filter((Z)=>Z.vendors?.alias).map((Z)=>({name:Z.name,title:Z.title,description:Z.description,logo:Z.logo,category:Z.category,vendor:{alias:Z.vendors.alias,url:Z.vendors.url}}))}var bV6=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},z08=()=>{let $=new e0;return $.use("*",bV6),$.get("/",async(Z)=>{let Q=L0(),Y=Q.decoSupabaseUrl,X=Q.decoSupabaseServiceKey;if(!Y||!X)return Z.json({apps:[]});try{let J=await UJ(Y,X,"apps?select=name,title,description,logo,category,vendors(alias,url)");return Z.json({apps:fV6(J)})}catch(J){return console.error("[deco-apps] GET error:",J),Z.json({error:"Failed to fetch apps"},502)}}),$};var P08=O(()=>{y$();t1();Eq0()});import{z as V1}from"zod";function $U($,Z="invalid_request_error",Q=null,Y=null){return{error:{message:$,type:Z,param:Q,code:Y}}}function iV6($){if(!$)return null;let Z=$.indexOf(":");if(Z===-1)return{credentialId:null,modelId:$};let Q=$.substring(0,Z),Y=$.substring(Z+1);if(!Q||!Y)return null;return{credentialId:Q,modelId:Y}}function pV6($,Z,Q){try{return JSON.parse($)}catch{throw new R08(`Invalid JSON in tool call arguments for function '${Q}' (tool_call_id: ${Z}): ${$}`)}}function nV6($){let Z={};for(let Q of $)if(Q.role==="assistant"&&Q.tool_calls)for(let Y of Q.tool_calls)Z[Y.id]=Y.function.name;return $.map((Q)=>{switch(Q.role){case"system":return{role:"system",content:Q.content};case"user":if(typeof Q.content==="string")return{role:"user",content:Q.content};return{role:"user",content:Q.content.map((X)=>{if(X.type==="text")return{type:"text",text:X.text};return{type:"image",image:X.image_url.url}})};case"assistant":if(Q.tool_calls&&Q.tool_calls.length>0)return{role:"assistant",content:Q.tool_calls.map((X)=>({type:"tool-call",toolCallId:X.id,toolName:X.function.name,input:pV6(X.function.arguments,X.id,X.function.name)}))};return{role:"assistant",content:Q.content??""};case"tool":let Y=Z[Q.tool_call_id]??"unknown";return{role:"tool",content:[{type:"tool-result",toolCallId:Q.tool_call_id,toolName:Y,output:{type:"text",value:Q.content}}]}}})}function tV6($){let Z=$.map((Q)=>{let Y=Q.function.parameters?fJ(Q.function.parameters):fJ({type:"object",properties:{}});return[Q.function.name,U$({description:Q.function.description,inputSchema:Y})]});return Object.fromEntries(Z)}function oV6($){if(!$)return;return{openai:{response_format:$}}}function rV6(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function A08($,Z,Q,Y,X,J){let G={model:$,messages:Z,tools:Q,temperature:Y.temperature,maxTokens:Y.max_tokens,topP:Y.top_p,frequencyPenalty:Y.frequency_penalty,presencePenalty:Y.presence_penalty,stopSequences:Y.stop?Array.isArray(Y.stop)?Y.stop:[Y.stop]:void 0,abortSignal:J};return X?{...G,providerOptions:X}:G}function T08($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var xV6=256,yV6,gV6,hV6,uV6,lV6,cV6,dV6,mV6,R08,q08,M08;var I08=O(()=>{O4();y$();nd();MK();yV6=V1.object({type:V1.literal("function"),function:V1.object({name:V1.string(),description:V1.string().optional(),parameters:V1.record(V1.string(),V1.unknown()).optional()})}),gV6=V1.object({id:V1.string(),type:V1.literal("function"),function:V1.object({name:V1.string(),arguments:V1.string()})}),hV6=V1.discriminatedUnion("role",[V1.object({role:V1.literal("system"),content:V1.string(),name:V1.string().optional()}),V1.object({role:V1.literal("user"),content:V1.union([V1.string(),V1.array(V1.union([V1.object({type:V1.literal("text"),text:V1.string()}),V1.object({type:V1.literal("image_url"),image_url:V1.object({url:V1.string(),detail:V1.string().optional()})})]))]),name:V1.string().optional()}),V1.object({role:V1.literal("assistant"),content:V1.string().nullable().optional(),name:V1.string().optional(),tool_calls:V1.array(gV6).optional()}),V1.object({role:V1.literal("tool"),content:V1.string(),tool_call_id:V1.string()})]),uV6=V1.object({type:V1.literal("text")}),lV6=V1.object({type:V1.literal("json_object")}),cV6=V1.object({type:V1.literal("json_schema"),json_schema:V1.object({name:V1.string(),description:V1.string().optional(),schema:V1.record(V1.string(),V1.unknown()),strict:V1.boolean().optional()})}),dV6=V1.union([uV6,lV6,cV6]),mV6=V1.object({model:V1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:V1.array(hV6),stream:V1.boolean().optional().default(!1),temperature:V1.number().min(0).max(2).optional(),max_tokens:V1.number().positive().optional(),top_p:V1.number().min(0).max(1).optional(),frequency_penalty:V1.number().min(-2).max(2).optional(),presence_penalty:V1.number().min(-2).max(2).optional(),stop:V1.union([V1.string(),V1.array(V1.string())]).optional(),tools:V1.array(yV6).optional(),tool_choice:V1.union([V1.literal("auto"),V1.literal("none"),V1.literal("required"),V1.object({type:V1.literal("function"),function:V1.object({name:V1.string()})})]).optional(),response_format:dV6.optional(),user:V1.string().optional()});R08=class R08 extends Error{constructor($){super($);this.name="MessageConversionError"}};q08=new e0;q08.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),Q=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json($U("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json($U("Organization context is required. Ensure your API key has organization metadata.","invalid_request_error","organization"),400);if((Z.organization.slug??Z.organization.id)!==Q)return $.json($U("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Y=await $.req.json(),X=mV6.safeParse(Y);if(!X.success){let w=X.error.issues[0]??{message:"Invalid request",path:[]};return $.json($U(`Invalid request: ${w.message}`,"invalid_request_error",w.path.length>0?w.path.join("."):null),400)}let J=X.data,G=iV6(J.model);if(!G)return $.json($U("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}=G,{modelId:K}=G;if(!W){let j=(await Z.storage.aiProviderKeys.list({organizationId:Z.organization.id})).find((E)=>WE(E.providerId));if(!j)return $.json($U("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=j.id}let H;try{H=await Z.aiProviders.activate(W,Z.organization.id)}catch{return $.json($U(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(K),U=nV6(J.messages),N=J.tools?tV6(J.tools):void 0,B=oV6(J.response_format),D=rV6(),L=Math.floor(Date.now()/1000);if(J.stream)return IB($,async(w)=>{let j=A08(F,U,N,J,B,$.req.raw.signal);try{let E=Zw(j),z=!1,P=0,A="",q=async()=>{if(A.length===0)return;let V=A;A="",await w.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{content:V},finish_reason:null}]})})};for await(let V of E.fullStream){if(!z&&(V.type==="text-delta"||V.type==="tool-call"))await w.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),z=!0;if(V.type==="text-delta"){if(A+=V.text,A.length>=xV6)await q()}else if(V.type==="tool-call"){await q();let I=P++;await w.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{tool_calls:[{index:I,id:V.toolCallId,type:"function",function:{name:V.toolName,arguments:JSON.stringify(V.input)}}]},finish_reason:null}]})})}else if(V.type==="finish")await q(),await w.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{},finish_reason:T08(V.finishReason)}],usage:V.totalUsage?{prompt_tokens:V.totalUsage.inputTokens??0,completion_tokens:V.totalUsage.outputTokens??0,total_tokens:V.totalUsage.totalTokens??0}:void 0})})}await q(),await w.writeSSE({data:"[DONE]"})}catch(E){let z=E;console.error("[openai-compat:stream] Error:",z.message),await w.writeSSE({data:JSON.stringify({error:{message:z.message,type:"server_error"}})})}});else{let w=A08(F,U,N,J,B,$.req.raw.signal),j=await PF(w),E={role:"assistant",content:j.text||null};if(j.toolCalls&&j.toolCalls.length>0)E.tool_calls=j.toolCalls.map((z)=>({id:z.toolCallId,type:"function",function:{name:z.toolName,arguments:JSON.stringify("input"in z?z.input:{})}})),E.content=null;return $.json({id:D,object:"chat.completion",created:L,model:J.model,choices:[{index:0,message:E,finish_reason:T08(j.finishReason)}],usage:{prompt_tokens:j.usage?.inputTokens??0,completion_tokens:j.usage?.outputTokens??0,total_tokens:j.usage?.totalTokens??0}})}}catch(Y){let X=Y;if(X.name==="AbortError")return $.json($U("Request aborted","invalid_request_error"),400);if(X.name==="MessageConversionError")return $.json($U(X.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",X.message,X.stack),$.json($U(X.message,"server_error"),500)}});M08=q08});function sV6($){if(typeof $!=="object"||$===null)return!1;let Q=$.githubRepo?.url;return typeof Q==="string"&&Q.length>0}function V08(){let $=new e0;return $.use("*",async(Z,Q)=>{await Q(),Z.header("Cache-Control","private, no-store"),Z.header("Vary","Cookie")}),$.get("/",async(Z)=>{let Q=Z.get("studioContext"),Y=l0(Q);if(!Y)return Z.json({error:"Authentication required"},401);let J=(Z.req.query("site")??"").trim().toLowerCase();if(!pZ(J))return Z.json({error:"Invalid site slug"},400);let G=await Q.db.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["organization.id as id","organization.slug as slug","organization.name as name","organization.metadata as metadata"]).where("member.userId","=",Y).execute(),W=[];for(let H of G){if(!H.slug||r5(H))continue;let F=await Q.storage.virtualMcps.list(H.id);for(let U of F){if(pJ0(U)!==J)continue;if(!sV6(U.metadata))continue;W.push({orgSlug:H.slug,orgName:H.name??H.slug,project:{id:U.id,title:U.title,icon:U.icon??null}})}}let K={matches:W};return Z.json(K)}),$}var k08=O(()=>{y$();AG()});var C08;var S08=O(()=>{C08={name:"decocms",version:"4.383.1",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@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 $k6(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??eV6}}var _08,eV6="https://ph.studio.decocms.com",v08;var f08=O(()=>{y$();Dr();hf();k5();t1();q31();S08();_08=new e0;_08.get("/",($)=>{let Z={version:C08.version,theme:r5$(),...sW().logo&&{logo:sW().logo},...eN()&&{internalUrl:Ch1()},...L0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!L0().firecrawlApiKey,hostingEnabled:!!L0().controlplaneRestUrl&&!!L0().controlplaneServiceToken,hostingControlPlaneGa:L0().hostingControlPlaneGa,monitorEnabled:!!L0().clickhouseAnalyticsUrl&&!!L0().clickhouseAnalyticsPassword,monitorGa:L0().monitorGa,plansEnabled:L0().plansEnabled,auth:on$(),posthog:$k6(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:vB()}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});v08=_08});function Zm($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function ZK1($){return(Zm($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((Q)=>Q.charAt(0).toUpperCase()+Q.slice(1)).join(" ")}function x08($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(Zm($))}&sz=${Z}`}function b08($,Z){let Q=$.trim();if(Q.length<=Z)return Q;let Y=Q.slice(0,Z-1),X=Y.lastIndexOf(" ");return`${(X>Z*0.6?Y.slice(0,X):Y).trimEnd()}\u2026`}function y08($){let{brand:Z,domain:Q,score:Y,verdict:X}=$,J=typeof Y==="number"?`${Z} commerce report \u2014 ${Math.round(Y)}/100 \xB7 decocms`:`${Z} commerce report \xB7 decocms`,G=`See the full ${Z} scorecard \u2014 SEO, performance, conversion & AEO signals scored by decocms.`,W=X?.trim()?b08(`${X.trim().replace(/\s+/g," ")} \u2014 ${G}`,200):b08(`How does ${Q} really perform? ${G}`,200);return{title:J,description:W}}import{z as m0}from"zod";var eb,Zk6,Qk6,Yk6,Xk6,g08;var h08=O(()=>{eb=m0.enum(["good","bad","neutral"]),Zk6=m0.preprocess(($)=>{if(Array.isArray($))return{kind:"text",value:$.find((Q)=>Q!==null&&typeof Q!=="object")??""};return $!==null&&typeof $==="object"?$:{kind:"text",value:$}},m0.object({kind:m0.enum(["text","number","sparkline","badge","score"]).catch("text"),value:m0.coerce.string().optional(),tone:eb.optional(),muted:m0.boolean().optional(),delta:m0.coerce.string().optional(),deltaDir:m0.enum(["up","down","neutral"]).optional(),points:m0.array(m0.coerce.number()).optional(),label:m0.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 $})),Qk6=m0.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},m0.array(Zk6)),Yk6={key:m0.coerce.string(),title:m0.coerce.string(),eyebrow:m0.coerce.string().optional(),headline:m0.coerce.string(),annotation:m0.coerce.string().optional(),methodology:m0.coerce.string().optional(),sources:m0.array(m0.object({name:m0.coerce.string(),logoUrl:m0.coerce.string()})).optional()},Xk6=m0.discriminatedUnion("template",[m0.object({template:m0.literal("cover"),score:m0.object({value:m0.coerce.number(),max:m0.coerce.number().optional(),grade:m0.coerce.string().optional(),label:m0.coerce.string().optional()}).optional(),brandImage:m0.coerce.string().optional(),screenshot:m0.coerce.string().optional(),mobileScreenshot:m0.coerce.string().optional()}),m0.object({template:m0.literal("cta"),ctaUrl:m0.coerce.string().optional(),ctaLabel:m0.coerce.string().optional(),bullets:m0.array(m0.coerce.string()).optional()}),m0.object({template:m0.literal("series"),points:m0.array(m0.coerce.number()).min(2),xLabels:m0.array(m0.coerce.string()).min(1),unit:m0.coerce.string().optional(),callout:m0.object({index:m0.coerce.number(),value:m0.coerce.string(),tone:eb.optional()})}),m0.object({template:m0.literal("threshold"),value:m0.coerce.string().default(""),metricLabel:m0.coerce.string().optional(),ratio:m0.coerce.number(),thresholdRatio:m0.coerce.number().optional(),thresholdLabel:m0.coerce.string().default(""),tone:eb.optional()}),m0.object({template:m0.literal("stats"),stats:m0.array(m0.object({value:m0.coerce.string(),label:m0.coerce.string(),tone:eb.optional()})).min(1)}),m0.object({template:m0.literal("bars"),items:m0.array(m0.object({value:m0.coerce.string(),label:m0.coerce.string(),ratio:m0.coerce.number(),tone:eb.optional()})).min(1)}),m0.object({template:m0.literal("gauges"),gauges:m0.array(m0.object({label:m0.coerce.string(),value:m0.coerce.string(),status:m0.enum(["good","warn","bad"]).catch("warn"),caption:m0.coerce.string().optional(),ratio:m0.coerce.number().optional()})).min(1)}),m0.object({template:m0.literal("checklist"),checks:m0.array(m0.object({label:m0.coerce.string(),status:m0.enum(["pass","fail","warn"]).catch("fail"),value:m0.coerce.string().optional()})).min(1)}),m0.object({template:m0.literal("table"),columns:m0.array(m0.object({label:m0.coerce.string(),align:m0.enum(["left","right"]).optional()})).min(1),rows:m0.array(Qk6).min(1),highlightRow:m0.coerce.number().optional()}),m0.object({template:m0.literal("products"),products:m0.array(m0.object({name:m0.coerce.string(),price:m0.coerce.string().optional(),image:m0.coerce.string().optional(),url:m0.coerce.string().optional()})).min(1)}),m0.object({template:m0.literal("list"),entries:m0.array(m0.object({label:m0.coerce.string(),severity:m0.enum(["error","warning","notice"]).catch("notice")})).min(1),moreCount:m0.coerce.number().optional()}),m0.object({template:m0.literal("keywords"),volumeLabel:m0.coerce.string().optional(),keywords:m0.array(m0.object({term:m0.coerce.string(),volume:m0.coerce.string(),position:m0.coerce.number().catch(0)})).min(1)}),m0.object({template:m0.literal("competitor"),metricLabel:m0.coerce.string().optional(),competitors:m0.array(m0.object({name:m0.coerce.string(),value:m0.coerce.string(),tone:eb.optional(),isYou:m0.boolean().optional()})).min(1)}),m0.object({template:m0.literal("scorecard"),rivalLabel:m0.coerce.string().optional(),dimensions:m0.array(m0.object({label:m0.coerce.string(),you:m0.coerce.string(),rival:m0.coerce.string().optional(),rivalName:m0.coerce.string().optional(),tone:eb.optional()})).min(1)})]),g08=m0.object({...Yk6,template:Xk6})});function mI0($){let Z=[],Q=[...$.sections].sort((X,J)=>X.position-J.position).map((X)=>{let J=g08.safeParse(X.props);if(J.success)return J.data;let G=J.error.issues[0];return Z.push({section_type:X.section_type,position:X.position,reason:G?`${G.path.join(".")||"(root)"}: ${G.message}`:"contract violation"}),null}).filter((X)=>X!==null),Y=Q.filter((X)=>X.template.template!=="cover"&&X.template.template!=="cta").map((X)=>({key:X.key,title:X.title}));return{deck:{meta:{...$.meta,scores:$.summary?.scores,scannedAt:$.scanned_at,toc:Y},slides:Q},drops:Z}}var QK1=O(()=>{h08()});import{join as u08}from"path";async function Gk6($){try{let Z=await fetch(`${cH({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(Jk6)});if(!Z.ok)return null;let Q=await Z.json(),{deck:Y}=mI0(Q);if(!Y.slides.length)return null;let X=Y.slides.find((W)=>W.template.template==="cover"),J=X?.template,G=J&&J.template==="cover"?J:void 0;return{brand:Y.meta.brand?.trim()||ZK1($),score:Y.meta.scores?.cover??G?.score?.value,verdict:X?.annotation?.trim()||X?.headline?.trim()||void 0}}catch{return null}}function q3($){return $.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;")}function Wk6($,Z){let Q=Zm($),Y=Z?.brand?.trim()||ZK1(Q),X=x08(Q,128),G=`${(L0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(Q)}`,{title:W,description:K}=y08({brand:Y,domain:Q,score:Z?.score,verdict:Z?.verdict}),H=`${G}/og.png`,F=`${Y} commerce report by decocms`;return[`<title>${q3(W)}</title>`,`<meta name="description" content="${q3(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="${q3(W)}" />`,`<meta property="og:description" content="${q3(K)}" />`,`<meta property="og:url" content="${q3(G)}" />`,`<meta property="og:image" content="${q3(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${q3(F)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${q3(W)}" />`,`<meta name="twitter:description" content="${q3(K)}" />`,`<meta name="twitter:image" content="${q3(H)}" />`,`<meta name="twitter:image:alt" content="${q3(F)}" />`,`<link rel="canonical" href="${q3(G)}" />`,`<link rel="icon" href="${q3(X)}" sizes="any" />`].join(`
3426
+ `;await le$(Z.repo,L);let w=D[0]??`${bI0(Y)}/${uW1(N)}.json`;H.push({path:w,content:L});let j=w.slice(w.lastIndexOf("/")+1,-5);F.set(w,{stem:j,content:L});for(let E of D.slice(1))H.push({path:E,deleted:!0}),F.delete(E)}for(let N of $.del)for(let B of tW1(K,N))H.push({path:B,deleted:!0}),F.delete(B);if(H.length===0)return G;let U=Y?`${Y}/.deco/blocks.gen.json`:".deco/blocks.gen.json";if(W.some((N)=>N.type==="blob"&&N.path===U)){let N=await ce$(Z,F.values(),X),{decofile:B,skipped:D}=D$0(N);if(D.length>0)console.warn("decofile gen: dropped blocks that were not valid JSON",{repo:eW(Z.repo),branch:Q,packagePath:Y,blocks:D.map((L)=>L.key)});H.push({path:U,content:B})}try{let{sha:N}=await Z.commitFiles({branch:Q,message:qV6($),expectedHead:G,changes:H});return N}catch(N){if(!(N instanceof P6)||J>=AV6-1)throw N;await T$(_7(2000,200,J,2,0.5))}}}function qV6($){let Z=(X)=>{let J=X.slice(0,3).join(", ");return X.length>3?`${J} (+${X.length-3} more)`:J},Q=[];if($.set.size>0)Q.push(`update ${Z([...$.set.keys()])}`);if($.del.size>0)Q.push(`delete ${Z([...$.del])}`);let Y=`chore(decofile): ${Q.join("; ")}`;return w11(Y,$.deps.coAuthor)}var AV6=3,eW1;var G08=O(()=>{Wz0();kI0();X6();m$();OZ();xI0();eW1=new Map});import{createHmac as W08,randomBytes as MV6,timingSafeEqual as IV6}from"crypto";function K08(){if(dI0)return dI0;let $;try{let Z=L0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return dI0=$?Buffer.from($):MV6(32),dI0}function $K1($){let Z=$.nowMs??Date.now(),Q={o:$.organizationId,m:$.virtualMcpId,b:$.branch,e:Math.floor((Z+VV6)/1000)},Y=Buffer.from(JSON.stringify(Q)).toString("base64url"),X=W08("sha256",K08()).update(Y).digest("base64url");return`${Y}.${X}`}function H08($,Z){let Q=$.indexOf(".");if(Q<0)return!1;let Y=$.slice(0,Q),X=Buffer.from($.slice(Q+1)),J=Buffer.from(W08("sha256",K08()).update(Y).digest("base64url"));if(X.length!==J.length||!IV6(X,J))return!1;let G;try{G=JSON.parse(Buffer.from(Y,"base64url").toString())}catch{return!1}let W=Math.floor((Z.nowMs??Date.now())/1000);return G.o===Z.organizationId&&G.m===Z.virtualMcpId&&G.b===Z.branch&&typeof G.e==="number"&&G.e>=W}var VV6=21600000,dI0=null;var F08=O(()=>{t1()});import{z as $m}from"zod";function SV6($){return $.length>0&&$.length<=255&&!$.includes("..")&&!$.endsWith("/")&&!$.endsWith(".lock")&&kV6.test($)}function O08($){return $.req.header("x-forwarded-host")??new URL($.req.url).host}async function P$0($){let Z=$.get("decofileScope");return ru($.var.studioContext,Z.organizationId,Z.githubRepo)}function A$0($,Z){let Q=Z instanceof Error?Z.message:String(Z);if(Z instanceof P6)return $.json({error:Q},409);let Y=MG(Z);if(Y!==null){let X=Y===404?404:Y===409||Y===422?409:502;return $.json({error:Q},X)}return $.json({error:Q},500)}function L08(){let $=new e0;return $.use("/:virtualMcpId/:branch",D08),$.use("/:virtualMcpId/:branch/*",D08),$.get("/:virtualMcpId/:branch",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await P$0(Z),X=await de$(Y,Q.branch,Q.packagePath,{createBranchIfMissing:!!Q.userId}),J={ETag:`"${X.sha}"`,"Cache-Control":"no-store","Access-Control-Allow-Origin":"*"};if(Z.req.header("if-none-match")===`"${X.sha}"`)return Z.body(null,304,J);if(!Q.userId)return Z.body(X.decofile,200,{...J,"content-type":"application/json"});let G=$K1({organizationId:Q.organizationId,virtualMcpId:Q.virtualMcpId,branch:Q.branch});return Z.body(`{"version":${JSON.stringify(X.sha)},"token":${JSON.stringify(G)},"apiHost":${JSON.stringify(O08(Z))},"decofile":${X.decofile}}`,200,{...J,"content-type":"application/json"})}catch(Y){return A$0(Z,Y)}}),$.get("/:virtualMcpId/:branch/meta",async(Z)=>{let Q=Z.get("decofileScope"),Y=Q.packagePath?`${Q.packagePath}/.deco/meta.gen.json`:".deco/meta.gen.json";try{let X=await P$0(Z),J=await X.readFileAtRef(Q.branch,Y);if(J===null){let G=await X.getDefaultBranch();if(G!==Q.branch)J=await X.readFileAtRef(G,Y)}if(J===null)return Z.json({error:"meta.gen.json not committed"},404);return Z.body(J,200,{"content-type":"application/json","Cache-Control":"no-store","Access-Control-Allow-Origin":"*"})}catch(X){return A$0(Z,X)}}),$.patch("/:virtualMcpId/:branch",_V6,async(Z)=>{let Q=Z.get("decofileScope"),Y=Z.var.studioContext,X=vV6.safeParse(await Z.req.json().catch(()=>null));if(!X.success)return Z.json({error:"Invalid body",details:X.error.issues},400);let J=X.data;for(let G of[...Object.keys(J.set??{}),...J.delete??[]])try{VI0(G)}catch(W){let K=W instanceof Error?W.message:String(W);return Z.json({error:K},400)}for(let[G,W]of Object.entries(J.set??{})){if(typeof W!=="object"||W===null||Array.isArray(W))return Z.json({error:`Block "${G}" must be a JSON object`},400);if(hW1(G))return Z.json({error:`Block key "${G}" collides with a framework resolver module and cannot be written`},400)}try{let G=await P$0(Z),W=await J08(`${Q.organizationId}/${Q.virtualMcpId}/${Q.branch}`,{client:G,branch:Q.branch,packagePath:Q.packagePath,coAuthor:td(Y)},J),K=$K1({organizationId:Q.organizationId,virtualMcpId:Q.virtualMcpId,branch:Q.branch});return Z.json({version:W,token:K,apiHost:O08(Z)})}catch(G){return A$0(Z,G)}}),$.post("/:virtualMcpId/:branch/publish",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await P$0(Z),X=await Y.getDefaultBranch();if(X===Q.branch)return Z.json({error:"Branch is already the default branch"},400);let J=`chore(decofile): publish ${Q.branch}`;try{let G;try{G=await Y.mergeBranches(X,Q.branch,J)}catch(W){if(MG(W)!==409)throw W;await uI0(Y,Q.branch,X),G=await Y.mergeBranches(X,Q.branch,J)}return G?Z.json({result:"merged",sha:G}):Z.json({result:"up-to-date"})}catch(G){if(MG(G)===409)return Z.json({error:"merge-conflict"},409);if(MG(G)===405){let K=await Y.findOpenChangeRequest(X,Q.branch)??await Y.createChangeRequest({base:X,head:Q.branch,title:`Publish ${Q.branch}`});return Z.json({result:"pull-request",number:K.number,url:K.url})}throw G}}catch(Y){return A$0(Z,Y)}}),$.get("/:virtualMcpId/:branch/status",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await P$0(Z),X=await Y.getDefaultBranch();if(X===Q.branch)return Z.json({baseBranch:X,aheadBy:0,behindBy:0,lastCommitAt:null});try{let[{aheadBy:J,behindBy:G},W]=await Promise.all([Y.compare(X,Q.branch),Y.getBranch(Q.branch)]);return Z.json({baseBranch:X,aheadBy:J,behindBy:G,lastCommitAt:W?.committedAt??null})}catch(J){if(MG(J)===404)return Z.json({baseBranch:X,aheadBy:0,behindBy:0,lastCommitAt:null});throw J}}catch(Y){return A$0(Z,Y)}}),$}var kV6,U08=500,N08=1048576,B08=1024,CV6=8388608,_V6,vV6,D08;var w08=O(()=>{B81();kI0();y$();hK();kW1();II0();sW1();OZ();G08();F08();rW1();xI0();qH();kV6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;_V6=l5({maxSize:CV6,onError:($)=>$.json({error:"Payload too large"},413)}),vV6=$m.object({set:$m.record($m.string(),$m.unknown()).optional(),delete:$m.array($m.string()).optional()}).refine(($)=>Object.keys($.set??{}).length>0||($.delete?.length??0)>0,{message:"Patch must set or delete at least one block"}).refine(($)=>Object.keys($.set??{}).length+($.delete?.length??0)<=U08,{message:`Patch cannot touch more than ${U08} blocks`}).refine(($)=>Object.values($.set??{}).every((Z)=>JSON.stringify(Z).length<=N08),{message:`Each block must be at most ${N08} bytes`}).refine(($)=>[...Object.keys($.set??{}),...$.delete??[]].every((Z)=>Z.length<=B08),{message:`Each block key must be at most ${B08} characters`}),D08=MI0(async($,Z)=>{let Q=$.var.studioContext,Y=Q.organization;if(!Y)return $.json({error:"Organization scope required"},500);let X=$.req.param("virtualMcpId"),J=$.req.param("branch");if(!X||!J)return $.json({error:"virtualMcpId and branch are required"},400);if(!SV6(J))return $.json({error:`Invalid branch name: ${J}`},400);let G=Q.auth?.user?.id??null;if(!G){let B=$.req.query("token");if(!($.req.method==="GET"&&!$.req.path.match(/\/(publish|status)$/)))return $.json({error:"Unauthorized"},401);if(!B||!H08(B,{organizationId:Y.id,virtualMcpId:X,branch:J}))return $.json({error:"Unauthorized"},401)}if(!await YG(Q,Y.id,"cms"))return $.json({error:"This organization's plan does not include the CMS",code:"feature_not_in_plan"},403);let W=await Q.storage.virtualMcps.findById(X);if(!W||W.organization_id!==Y.id)return $.json({error:"Virtual MCP not found"},404);let K=W.metadata??null;if(!LP0(K))return $.json({error:"Project has no preview server configured"},404);let F=W.connections?.map((B)=>B.connection_id)??[],U=E$0(K,F);if(!U)return $.json({error:"Project has no GitHub repository"},404);let N=K?.runtime;return $.set("decofileScope",{organizationId:Y.id,virtualMcpId:X,branch:J,packagePath:N?.path?.replace(/^\/+|\/+$/g,"")||null,githubRepo:U,userId:G}),Z()})});var j08=($)=>{let Z=new e0;if(Z.use("*",qd),Z.use("*",tt$),Z.route("/",bM0()),Z.route("/",So$()),Z.route("/",Lo$()),Z.route("/",ha$()),Z.route("/",Ca$()),Z.route("/",ya$()),Z.route("/",va$()),Z.route("/",TI0()),Z.route("/tools",pa$()),Z.route("/",da$()),Z.route("/",Ha$({kvStorage:$.kvStorage})),Z.route("/",Wa$()),Z.route("/fs",Aa$({getConnection:$.getNatsConnection})),Z.route("/sandbox",Y08()),Z.route("/decofile",L08()),Z.route("/",Va$()),Z.route("/",Ra$()),Z.route("/deco-sites",yM0()),Z.route("/hosting",Jo$()),Z.route("/monitor",No$()),Z.route("/sso",SM0()),Z.route("/",RI0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",$o$()),$.mountDevAssets)Z.route("/dev-assets",lM0({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("/",Yp$()),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",Ma$()),Z.route("/mcp",T20()),Z.route("/mcp/self",EI0()),Z.route("/mcp",M20()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var E08=O(()=>{y$();ot$();EM0();Zo$();r31();Go$();Bo$();cM0();hb();i31();ZG1();Ka$();Fa$();Ta$();qa$();ae();h31();I20();zW1();Ia$();ka$();_a$();fa$();TW1();ua$();ma$();RW1();na$();qW1();R20();X08();w08()});function fV6($){return $.filter((Z)=>Z.vendors?.alias).map((Z)=>({name:Z.name,title:Z.title,description:Z.description,logo:Z.logo,category:Z.category,vendor:{alias:Z.vendors.alias,url:Z.vendors.url}}))}var bV6=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},z08=()=>{let $=new e0;return $.use("*",bV6),$.get("/",async(Z)=>{let Q=L0(),Y=Q.decoSupabaseUrl,X=Q.decoSupabaseServiceKey;if(!Y||!X)return Z.json({apps:[]});try{let J=await UJ(Y,X,"apps?select=name,title,description,logo,category,vendors(alias,url)");return Z.json({apps:fV6(J)})}catch(J){return console.error("[deco-apps] GET error:",J),Z.json({error:"Failed to fetch apps"},502)}}),$};var P08=O(()=>{y$();t1();Eq0()});import{z as V1}from"zod";function $U($,Z="invalid_request_error",Q=null,Y=null){return{error:{message:$,type:Z,param:Q,code:Y}}}function iV6($){if(!$)return null;let Z=$.indexOf(":");if(Z===-1)return{credentialId:null,modelId:$};let Q=$.substring(0,Z),Y=$.substring(Z+1);if(!Q||!Y)return null;return{credentialId:Q,modelId:Y}}function pV6($,Z,Q){try{return JSON.parse($)}catch{throw new R08(`Invalid JSON in tool call arguments for function '${Q}' (tool_call_id: ${Z}): ${$}`)}}function nV6($){let Z={};for(let Q of $)if(Q.role==="assistant"&&Q.tool_calls)for(let Y of Q.tool_calls)Z[Y.id]=Y.function.name;return $.map((Q)=>{switch(Q.role){case"system":return{role:"system",content:Q.content};case"user":if(typeof Q.content==="string")return{role:"user",content:Q.content};return{role:"user",content:Q.content.map((X)=>{if(X.type==="text")return{type:"text",text:X.text};return{type:"image",image:X.image_url.url}})};case"assistant":if(Q.tool_calls&&Q.tool_calls.length>0)return{role:"assistant",content:Q.tool_calls.map((X)=>({type:"tool-call",toolCallId:X.id,toolName:X.function.name,input:pV6(X.function.arguments,X.id,X.function.name)}))};return{role:"assistant",content:Q.content??""};case"tool":let Y=Z[Q.tool_call_id]??"unknown";return{role:"tool",content:[{type:"tool-result",toolCallId:Q.tool_call_id,toolName:Y,output:{type:"text",value:Q.content}}]}}})}function tV6($){let Z=$.map((Q)=>{let Y=Q.function.parameters?fJ(Q.function.parameters):fJ({type:"object",properties:{}});return[Q.function.name,U$({description:Q.function.description,inputSchema:Y})]});return Object.fromEntries(Z)}function oV6($){if(!$)return;return{openai:{response_format:$}}}function rV6(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function A08($,Z,Q,Y,X,J){let G={model:$,messages:Z,tools:Q,temperature:Y.temperature,maxTokens:Y.max_tokens,topP:Y.top_p,frequencyPenalty:Y.frequency_penalty,presencePenalty:Y.presence_penalty,stopSequences:Y.stop?Array.isArray(Y.stop)?Y.stop:[Y.stop]:void 0,abortSignal:J};return X?{...G,providerOptions:X}:G}function T08($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var xV6=256,yV6,gV6,hV6,uV6,lV6,cV6,dV6,mV6,R08,q08,M08;var I08=O(()=>{O4();y$();nd();MK();yV6=V1.object({type:V1.literal("function"),function:V1.object({name:V1.string(),description:V1.string().optional(),parameters:V1.record(V1.string(),V1.unknown()).optional()})}),gV6=V1.object({id:V1.string(),type:V1.literal("function"),function:V1.object({name:V1.string(),arguments:V1.string()})}),hV6=V1.discriminatedUnion("role",[V1.object({role:V1.literal("system"),content:V1.string(),name:V1.string().optional()}),V1.object({role:V1.literal("user"),content:V1.union([V1.string(),V1.array(V1.union([V1.object({type:V1.literal("text"),text:V1.string()}),V1.object({type:V1.literal("image_url"),image_url:V1.object({url:V1.string(),detail:V1.string().optional()})})]))]),name:V1.string().optional()}),V1.object({role:V1.literal("assistant"),content:V1.string().nullable().optional(),name:V1.string().optional(),tool_calls:V1.array(gV6).optional()}),V1.object({role:V1.literal("tool"),content:V1.string(),tool_call_id:V1.string()})]),uV6=V1.object({type:V1.literal("text")}),lV6=V1.object({type:V1.literal("json_object")}),cV6=V1.object({type:V1.literal("json_schema"),json_schema:V1.object({name:V1.string(),description:V1.string().optional(),schema:V1.record(V1.string(),V1.unknown()),strict:V1.boolean().optional()})}),dV6=V1.union([uV6,lV6,cV6]),mV6=V1.object({model:V1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:V1.array(hV6),stream:V1.boolean().optional().default(!1),temperature:V1.number().min(0).max(2).optional(),max_tokens:V1.number().positive().optional(),top_p:V1.number().min(0).max(1).optional(),frequency_penalty:V1.number().min(-2).max(2).optional(),presence_penalty:V1.number().min(-2).max(2).optional(),stop:V1.union([V1.string(),V1.array(V1.string())]).optional(),tools:V1.array(yV6).optional(),tool_choice:V1.union([V1.literal("auto"),V1.literal("none"),V1.literal("required"),V1.object({type:V1.literal("function"),function:V1.object({name:V1.string()})})]).optional(),response_format:dV6.optional(),user:V1.string().optional()});R08=class R08 extends Error{constructor($){super($);this.name="MessageConversionError"}};q08=new e0;q08.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),Q=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json($U("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json($U("Organization context is required. Ensure your API key has organization metadata.","invalid_request_error","organization"),400);if((Z.organization.slug??Z.organization.id)!==Q)return $.json($U("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Y=await $.req.json(),X=mV6.safeParse(Y);if(!X.success){let w=X.error.issues[0]??{message:"Invalid request",path:[]};return $.json($U(`Invalid request: ${w.message}`,"invalid_request_error",w.path.length>0?w.path.join("."):null),400)}let J=X.data,G=iV6(J.model);if(!G)return $.json($U("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}=G,{modelId:K}=G;if(!W){let j=(await Z.storage.aiProviderKeys.list({organizationId:Z.organization.id})).find((E)=>WE(E.providerId));if(!j)return $.json($U("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=j.id}let H;try{H=await Z.aiProviders.activate(W,Z.organization.id)}catch{return $.json($U(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(K),U=nV6(J.messages),N=J.tools?tV6(J.tools):void 0,B=oV6(J.response_format),D=rV6(),L=Math.floor(Date.now()/1000);if(J.stream)return IB($,async(w)=>{let j=A08(F,U,N,J,B,$.req.raw.signal);try{let E=Zw(j),z=!1,P=0,A="",q=async()=>{if(A.length===0)return;let V=A;A="",await w.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{content:V},finish_reason:null}]})})};for await(let V of E.fullStream){if(!z&&(V.type==="text-delta"||V.type==="tool-call"))await w.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),z=!0;if(V.type==="text-delta"){if(A+=V.text,A.length>=xV6)await q()}else if(V.type==="tool-call"){await q();let I=P++;await w.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{tool_calls:[{index:I,id:V.toolCallId,type:"function",function:{name:V.toolName,arguments:JSON.stringify(V.input)}}]},finish_reason:null}]})})}else if(V.type==="finish")await q(),await w.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{},finish_reason:T08(V.finishReason)}],usage:V.totalUsage?{prompt_tokens:V.totalUsage.inputTokens??0,completion_tokens:V.totalUsage.outputTokens??0,total_tokens:V.totalUsage.totalTokens??0}:void 0})})}await q(),await w.writeSSE({data:"[DONE]"})}catch(E){let z=E;console.error("[openai-compat:stream] Error:",z.message),await w.writeSSE({data:JSON.stringify({error:{message:z.message,type:"server_error"}})})}});else{let w=A08(F,U,N,J,B,$.req.raw.signal),j=await PF(w),E={role:"assistant",content:j.text||null};if(j.toolCalls&&j.toolCalls.length>0)E.tool_calls=j.toolCalls.map((z)=>({id:z.toolCallId,type:"function",function:{name:z.toolName,arguments:JSON.stringify("input"in z?z.input:{})}})),E.content=null;return $.json({id:D,object:"chat.completion",created:L,model:J.model,choices:[{index:0,message:E,finish_reason:T08(j.finishReason)}],usage:{prompt_tokens:j.usage?.inputTokens??0,completion_tokens:j.usage?.outputTokens??0,total_tokens:j.usage?.totalTokens??0}})}}catch(Y){let X=Y;if(X.name==="AbortError")return $.json($U("Request aborted","invalid_request_error"),400);if(X.name==="MessageConversionError")return $.json($U(X.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",X.message,X.stack),$.json($U(X.message,"server_error"),500)}});M08=q08});function sV6($){if(typeof $!=="object"||$===null)return!1;let Q=$.githubRepo?.url;return typeof Q==="string"&&Q.length>0}function V08(){let $=new e0;return $.use("*",async(Z,Q)=>{await Q(),Z.header("Cache-Control","private, no-store"),Z.header("Vary","Cookie")}),$.get("/",async(Z)=>{let Q=Z.get("studioContext"),Y=l0(Q);if(!Y)return Z.json({error:"Authentication required"},401);let J=(Z.req.query("site")??"").trim().toLowerCase();if(!pZ(J))return Z.json({error:"Invalid site slug"},400);let G=await Q.db.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["organization.id as id","organization.slug as slug","organization.name as name","organization.metadata as metadata"]).where("member.userId","=",Y).execute(),W=[];for(let H of G){if(!H.slug||r5(H))continue;let F=await Q.storage.virtualMcps.list(H.id);for(let U of F){if(pJ0(U)!==J)continue;if(!sV6(U.metadata))continue;W.push({orgSlug:H.slug,orgName:H.name??H.slug,project:{id:U.id,title:U.title,icon:U.icon??null}})}}let K={matches:W};return Z.json(K)}),$}var k08=O(()=>{y$();AG()});var C08;var S08=O(()=>{C08={name:"decocms",version:"4.383.2",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@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 $k6(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??eV6}}var _08,eV6="https://ph.studio.decocms.com",v08;var f08=O(()=>{y$();Dr();hf();k5();t1();q31();S08();_08=new e0;_08.get("/",($)=>{let Z={version:C08.version,theme:r5$(),...sW().logo&&{logo:sW().logo},...eN()&&{internalUrl:Ch1()},...L0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!L0().firecrawlApiKey,hostingEnabled:!!L0().controlplaneRestUrl&&!!L0().controlplaneServiceToken,hostingControlPlaneGa:L0().hostingControlPlaneGa,monitorEnabled:!!L0().clickhouseAnalyticsUrl&&!!L0().clickhouseAnalyticsPassword,monitorGa:L0().monitorGa,plansEnabled:L0().plansEnabled,auth:on$(),posthog:$k6(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:vB()}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});v08=_08});function Zm($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function ZK1($){return(Zm($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((Q)=>Q.charAt(0).toUpperCase()+Q.slice(1)).join(" ")}function x08($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(Zm($))}&sz=${Z}`}function b08($,Z){let Q=$.trim();if(Q.length<=Z)return Q;let Y=Q.slice(0,Z-1),X=Y.lastIndexOf(" ");return`${(X>Z*0.6?Y.slice(0,X):Y).trimEnd()}\u2026`}function y08($){let{brand:Z,domain:Q,score:Y,verdict:X}=$,J=typeof Y==="number"?`${Z} commerce report \u2014 ${Math.round(Y)}/100 \xB7 decocms`:`${Z} commerce report \xB7 decocms`,G=`See the full ${Z} scorecard \u2014 SEO, performance, conversion & AEO signals scored by decocms.`,W=X?.trim()?b08(`${X.trim().replace(/\s+/g," ")} \u2014 ${G}`,200):b08(`How does ${Q} really perform? ${G}`,200);return{title:J,description:W}}import{z as m0}from"zod";var eb,Zk6,Qk6,Yk6,Xk6,g08;var h08=O(()=>{eb=m0.enum(["good","bad","neutral"]),Zk6=m0.preprocess(($)=>{if(Array.isArray($))return{kind:"text",value:$.find((Q)=>Q!==null&&typeof Q!=="object")??""};return $!==null&&typeof $==="object"?$:{kind:"text",value:$}},m0.object({kind:m0.enum(["text","number","sparkline","badge","score"]).catch("text"),value:m0.coerce.string().optional(),tone:eb.optional(),muted:m0.boolean().optional(),delta:m0.coerce.string().optional(),deltaDir:m0.enum(["up","down","neutral"]).optional(),points:m0.array(m0.coerce.number()).optional(),label:m0.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 $})),Qk6=m0.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},m0.array(Zk6)),Yk6={key:m0.coerce.string(),title:m0.coerce.string(),eyebrow:m0.coerce.string().optional(),headline:m0.coerce.string(),annotation:m0.coerce.string().optional(),methodology:m0.coerce.string().optional(),sources:m0.array(m0.object({name:m0.coerce.string(),logoUrl:m0.coerce.string()})).optional()},Xk6=m0.discriminatedUnion("template",[m0.object({template:m0.literal("cover"),score:m0.object({value:m0.coerce.number(),max:m0.coerce.number().optional(),grade:m0.coerce.string().optional(),label:m0.coerce.string().optional()}).optional(),brandImage:m0.coerce.string().optional(),screenshot:m0.coerce.string().optional(),mobileScreenshot:m0.coerce.string().optional()}),m0.object({template:m0.literal("cta"),ctaUrl:m0.coerce.string().optional(),ctaLabel:m0.coerce.string().optional(),bullets:m0.array(m0.coerce.string()).optional()}),m0.object({template:m0.literal("series"),points:m0.array(m0.coerce.number()).min(2),xLabels:m0.array(m0.coerce.string()).min(1),unit:m0.coerce.string().optional(),callout:m0.object({index:m0.coerce.number(),value:m0.coerce.string(),tone:eb.optional()})}),m0.object({template:m0.literal("threshold"),value:m0.coerce.string().default(""),metricLabel:m0.coerce.string().optional(),ratio:m0.coerce.number(),thresholdRatio:m0.coerce.number().optional(),thresholdLabel:m0.coerce.string().default(""),tone:eb.optional()}),m0.object({template:m0.literal("stats"),stats:m0.array(m0.object({value:m0.coerce.string(),label:m0.coerce.string(),tone:eb.optional()})).min(1)}),m0.object({template:m0.literal("bars"),items:m0.array(m0.object({value:m0.coerce.string(),label:m0.coerce.string(),ratio:m0.coerce.number(),tone:eb.optional()})).min(1)}),m0.object({template:m0.literal("gauges"),gauges:m0.array(m0.object({label:m0.coerce.string(),value:m0.coerce.string(),status:m0.enum(["good","warn","bad"]).catch("warn"),caption:m0.coerce.string().optional(),ratio:m0.coerce.number().optional()})).min(1)}),m0.object({template:m0.literal("checklist"),checks:m0.array(m0.object({label:m0.coerce.string(),status:m0.enum(["pass","fail","warn"]).catch("fail"),value:m0.coerce.string().optional()})).min(1)}),m0.object({template:m0.literal("table"),columns:m0.array(m0.object({label:m0.coerce.string(),align:m0.enum(["left","right"]).optional()})).min(1),rows:m0.array(Qk6).min(1),highlightRow:m0.coerce.number().optional()}),m0.object({template:m0.literal("products"),products:m0.array(m0.object({name:m0.coerce.string(),price:m0.coerce.string().optional(),image:m0.coerce.string().optional(),url:m0.coerce.string().optional()})).min(1)}),m0.object({template:m0.literal("list"),entries:m0.array(m0.object({label:m0.coerce.string(),severity:m0.enum(["error","warning","notice"]).catch("notice")})).min(1),moreCount:m0.coerce.number().optional()}),m0.object({template:m0.literal("keywords"),volumeLabel:m0.coerce.string().optional(),keywords:m0.array(m0.object({term:m0.coerce.string(),volume:m0.coerce.string(),position:m0.coerce.number().catch(0)})).min(1)}),m0.object({template:m0.literal("competitor"),metricLabel:m0.coerce.string().optional(),competitors:m0.array(m0.object({name:m0.coerce.string(),value:m0.coerce.string(),tone:eb.optional(),isYou:m0.boolean().optional()})).min(1)}),m0.object({template:m0.literal("scorecard"),rivalLabel:m0.coerce.string().optional(),dimensions:m0.array(m0.object({label:m0.coerce.string(),you:m0.coerce.string(),rival:m0.coerce.string().optional(),rivalName:m0.coerce.string().optional(),tone:eb.optional()})).min(1)})]),g08=m0.object({...Yk6,template:Xk6})});function mI0($){let Z=[],Q=[...$.sections].sort((X,J)=>X.position-J.position).map((X)=>{let J=g08.safeParse(X.props);if(J.success)return J.data;let G=J.error.issues[0];return Z.push({section_type:X.section_type,position:X.position,reason:G?`${G.path.join(".")||"(root)"}: ${G.message}`:"contract violation"}),null}).filter((X)=>X!==null),Y=Q.filter((X)=>X.template.template!=="cover"&&X.template.template!=="cta").map((X)=>({key:X.key,title:X.title}));return{deck:{meta:{...$.meta,scores:$.summary?.scores,scannedAt:$.scanned_at,toc:Y},slides:Q},drops:Z}}var QK1=O(()=>{h08()});import{join as u08}from"path";async function Gk6($){try{let Z=await fetch(`${cH({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(Jk6)});if(!Z.ok)return null;let Q=await Z.json(),{deck:Y}=mI0(Q);if(!Y.slides.length)return null;let X=Y.slides.find((W)=>W.template.template==="cover"),J=X?.template,G=J&&J.template==="cover"?J:void 0;return{brand:Y.meta.brand?.trim()||ZK1($),score:Y.meta.scores?.cover??G?.score?.value,verdict:X?.annotation?.trim()||X?.headline?.trim()||void 0}}catch{return null}}function q3($){return $.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;")}function Wk6($,Z){let Q=Zm($),Y=Z?.brand?.trim()||ZK1(Q),X=x08(Q,128),G=`${(L0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(Q)}`,{title:W,description:K}=y08({brand:Y,domain:Q,score:Z?.score,verdict:Z?.verdict}),H=`${G}/og.png`,F=`${Y} commerce report by decocms`;return[`<title>${q3(W)}</title>`,`<meta name="description" content="${q3(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="${q3(W)}" />`,`<meta property="og:description" content="${q3(K)}" />`,`<meta property="og:url" content="${q3(G)}" />`,`<meta property="og:image" content="${q3(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${q3(F)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${q3(W)}" />`,`<meta name="twitter:description" content="${q3(K)}" />`,`<meta name="twitter:image" content="${q3(H)}" />`,`<meta name="twitter:image:alt" content="${q3(F)}" />`,`<link rel="canonical" href="${q3(G)}" />`,`<link rel="icon" href="${q3(X)}" sizes="any" />`].join(`
3427
3427
  `)}function Kk6($,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}
3428
3428
  </head>`)}function l08($){let Z=new e0;return Z.get("/:domain/og.png",async(Q)=>{let Y=Zm(Q.req.param("domain")),X=async()=>{let J=$?Bun.file(u08($,"report-og-fallback.png")):null;if(!J||!await J.exists())return Q.notFound();return Q.body(new Uint8Array(await J.arrayBuffer()),200,{"Content-Type":"image/png","Cache-Control":"public, max-age=0, s-maxage=3600"})};try{let J=await fetch(`${cH({})}/api/v2/public/diagnostics/${encodeURIComponent(Y)}/og.png`,{signal:AbortSignal.timeout(Hk6)}),G=J.headers.get("content-type")??"";if(!J.ok||!G.startsWith("image/")||!J.body)return X();return Q.body(J.body,200,{"Content-Type":G,"Cache-Control":"public, max-age=0, s-maxage=604800"})}catch{return X()}}),Z.get("/:domain",async(Q)=>{let Y=Q.req.param("domain"),X=$?u08($,"index.html"):null,J=X?Bun.file(X):null;if(!J||!await J.exists())return Q.notFound();let G=await J.text();try{let W=await Gk6(Zm(Y)),K=Wk6(Y,W);return Q.html(Kk6(G,K),200,{"Cache-Control":"public, max-age=0, s-maxage=300"})}catch{return Q.html(G)}}),Z}var Jk6=2500,Hk6=1e4;var c08=O(()=>{y$();QK1();tz();t1()});function T$0($,Z){return fetch(`${cH({})}${$}`,Z)}async function Fk6($,Z,Q){let Y=new URLSearchParams;if(Z)Y.set("pw",Z);if(Q)Y.set("lang",Q);let X=Y.toString()?`?${Y.toString()}`:"",J=await T$0(`/api/v2/public/diagnostics/${encodeURIComponent($)}${X}`,{headers:{Accept:"application/json"}});if(J.status===404)return{status:"not_found",deck:null,scanned_at:null,drops:[]};if(!J.ok)throw Error(`report read HTTP ${J.status}`);let G=await J.json(),{deck:W,drops:K}=mI0(G);return{status:W.slides.length?"ready":"empty",deck:W,scanned_at:G.scanned_at,drops:K}}var Uk6,kB,d08=async($,Z)=>{if(!$.get("reportUser"))return $.json({error:"Authentication required"},401);await Z();return},m08;var i08=O(()=>{y$();Z3();tz();QK1();Uk6=new Set(["complete","errored","terminated","unknown"]),kB=new e0;kB.use("*",async($,Z)=>{let Q=await W8.api.getSession({headers:$.req.raw.headers});$.set("reportUser",Q?.user?.id?{email:Q.user.email}:void 0),await Z(),$.header("Cache-Control","private, no-store"),$.header("Vary","Cookie");return});kB.use("/link-token/*",d08);kB.use("/suggest",d08);kB.get("/site/:domain",async($)=>{let Z=$.req.param("domain").trim();if(!Z)return $.json({error:"domain is required"},400);let Q=$.get("reportUser"),Y=$.req.query("key")?.trim()||void 0,X=$.req.query("lang")?.trim()||void 0;try{let J=await Fk6(Z,Y,X);if($.header("Cache-Control","private, no-store"),Q||!J.deck)return $.json(J);return $.json({...J,deck:{...J.deck,slides:J.deck.slides.slice(0,1)},truncated:J.status==="ready"})}catch{return $.json({error:"report read failed"},502)}});kB.post("/run",async($)=>{let Z=$.get("reportUser"),Q;try{Q=await $.req.json()}catch{return $.json({error:"invalid JSON"},400)}let Y=typeof Q.domain==="string"?Q.domain.trim():"";if(!Y)return $.json({error:"domain is required"},400);let X=Z?.email,J=typeof Q.distinctId==="string"&&Q.distinctId.trim()&&Q.distinctId.length<=200?Q.distinctId.trim():void 0;try{let G=await T$0("/api/v2/diagnostics/run",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${nz({})}`},body:JSON.stringify({url:Y,...X?{email:X}:{},distinct_id:J})});if(!G.ok)return $.json({error:`run HTTP ${G.status}`},502);let W=await G.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)}});kB.get("/status",async($)=>{let Z=$.req.query("id");if(!Z)return $.json({error:"id is required"},400);try{let Q=await T$0(`/api/v2/diagnostics/status?id=${encodeURIComponent(Z)}`,{headers:{Authorization:`Bearer ${nz({})}`}});if(!Q.ok)return $.json({error:`status HTTP ${Q.status}`},502);let X=(await Q.json()).status??"unknown",J={done:Uk6.has(X),status:X};return $.json(J)}catch{return $.json({error:"status failed"},502)}});kB.get("/link-token/:id",async($)=>{let Z=$.req.param("id");try{let Q=await T$0(`/api/v2/public/link-tokens/${encodeURIComponent(Z)}`,{headers:{Accept:"application/json"}});if(Q.status===404)return $.json(null);if(!Q.ok)return $.json({error:`link token HTTP ${Q.status}`},502);return $.json(await Q.json())}catch{return $.json({error:"link token resolve failed"},502)}});kB.get("/suggest",async($)=>{let Z=($.req.query("q")??"").trim().slice(0,64);if(Z.length<2)return $.json({suggestions:[]});try{let Q=await T$0(`/api/v2/public/suggest?q=${encodeURIComponent(Z)}`,{headers:{Accept:"application/json"}});if(!Q.ok)return $.json({suggestions:[]});let Y=await Q.json();return $.json({suggestions:Array.isArray(Y.suggestions)?Y.suggestions:[]})}catch{return $.json({suggestions:[]})}});m08=kB});var Nk6=1048576,YK1;var p08=O(()=>{y$();hK();t1();F31();YK1=new e0;YK1.post("/webhook",l5({maxSize:Nk6,onError:($)=>$.json({error:"payload too large"},413)}),async($)=>{let Z=L0().stripeWebhookSecret;if(!Z)return $.json({error:"stripe billing not configured"},503);let Q=await $.req.text();if(!Wn$(Q,$.req.header("stripe-signature"),Z))return $.json({error:"invalid signature"},400);let X=Kn$(Q);if(!X)return $.json({error:"invalid payload"},400);let J=await Hn$(X);return console.log("stripe webhook",{eventId:X.id,type:X.type,livemode:X.livemode,...J}),$.json({received:!0})})});import{timingSafeEqual as Bk6}from"crypto";function Lk6($,Z,Q){if(!Z?.startsWith("sha256="))return!1;let Y=new Bun.CryptoHasher("sha256",Q).update($).digest("hex"),X=Z.slice(7);if(X.length!==Y.length)return!1;return Bk6(Buffer.from(X),Buffer.from(Y))}function wk6($,Z){let Q=Z,Y=Q?.repository?.name,X=Q?.repository?.owner?.login;if(typeof Y!=="string"||typeof X!=="string")return[];let J=[];if($==="check_suite"){if(Q.action!=="completed")return[];let G=Q.check_suite?.pull_requests;for(let W of Array.isArray(G)?G:[]){let K=W?.number;if(typeof K==="number")J.push(K)}}else if($==="issue_comment"&&Q.issue?.pull_request){let G=Q.issue.number;if(typeof G==="number")J.push(G)}return[...new Set(J)].map((G)=>({repoOwner:X,repoName:Y,number:G}))}function n08($){let Z=new e0;return Z.post("/webhook",l5({maxSize:Dk6,onError:(Q)=>Q.json({error:"payload too large"},413)}),async(Q)=>{let Y=process.env.GITHUB_WEBHOOK_SECRET;if(!Y)return Q.json({error:"github webhook not configured"},503);let X=await Q.req.text();if(!Lk6(X,Q.req.header("x-hub-signature-256"),Y))return Q.json({error:"invalid signature"},400);let J=Q.req.header("x-github-event");if(J!=="push"&&!Ok6.has(J??""))return Q.json({ok:!0,ignored:"event"});let G;try{G=JSON.parse(X)}catch{return Q.json({error:"invalid payload"},400)}if(J==="push"){let H=G.ref,F=G.repository?.full_name;if(!H||!F)return Q.json({ok:!0,ignored:"shape"});let N=(await l11())?.markTenantPoolsDirty(F,H)??[];return Q.json({ok:!0,pools:N})}let W=wk6(J??"",G);if(W.length===0)return Q.json({ok:!0,ignored:"no-pr"});let K=await jk6($,W);return Q.json({ok:!0,refreshed:K})}),Z}async function jk6($,Z){let Q=0;for(let Y of Z){let X=$.taskBoard(),J;try{J=await X.findPrLinks(Y)}catch(G){console.error("[github-webhook] pr link lookup failed:",G);continue}for(let G of J)try{let W=await X.getById(G.taskBoardItemId,G.organizationId),K=W?await $.contextFactory()(G.organizationId,W.assignedBy??W.createdBy):null;if(!K)continue;if(await D2$(K,G.organizationId,G.taskBoardItemId)!==null)Q++}catch(W){console.error(`[github-webhook] pr card refresh failed for ${G.taskBoardItemId}:`,W)}}return Q}var Dk6=5242880,Ok6;var t08=O(()=>{y$();hK();BK();sZ();Ok6=new Set(["check_suite","issue_comment"])});function o08($){let Z=new wB($.db,new RY($.encryptionKey)),Q=new e0;return Q.get("/attachments/:token",async(Y)=>{let X=_P$(Y.req.param("token"));if(!X)return Y.json({error:"Invalid or expired link"},404);let J=await Z.getByOrg(X.organizationId);if(!J)return Y.json({error:"Jira is not connected"},404);let W=await new oY(J.siteUrl,J.email,J.apiToken).downloadAttachment(X.attachmentId);if(!W.ok||!W.body)return Y.json({error:"Jira refused the download"},502);let K=new Headers;for(let H of["content-type","content-length","content-disposition"]){let F=W.headers.get(H);if(F)K.set(H,F)}return K.set("cache-control","no-store"),new Response(W.body,{status:200,headers:K})}),Q}var r08=O(()=>{y$();zD();h81();Kw()});function s08($){let Z=new wB($.db,new RY($.encryptionKey));async function Q(X,J){let G=gu$(J);if(!G)return;let W=await Z.getByWebhookSecret(X);if(!W?.enabled)return;let K=await xG($.db,W.organizationId);if(!K)return;if(await Aq0(K,W,G)==="started")console.log(`[jira-webhook] started a run for ${G.issueKey} entering "${G.toStatus}"`)}let Y=new e0;return Y.post("/webhook/:secret",l5({maxSize:Ek6}),async(X)=>{let J=X.req.param("secret");if(!await Z.getByWebhookSecret(J))return X.json({error:"Unknown webhook"},404);let W;try{W=await X.req.json()}catch{return X.json({error:"Body must be JSON"},400)}return Q(J,W).catch((K)=>{console.error("[jira-webhook] trigger failed",K)}),X.body(null,202)}),Y}var Ek6=1048576;var a08=O(()=>{y$();hK();zD();Tq0();vf()});import{DBOS as iI0,SchedulerMode as zk6}from"@dbos-inc/dbos-sdk";function $18($){JK1=$}function Z18(){if(!JK1)throw Error("[jira-trigger] runtime not initialized \u2014 setJiraTriggerSweepRuntime() must run before the workflow fires");return JK1}function Q18(){let $=Z18();return new wB($.db,new RY($.encryptionKey))}async function Tk6($,Z){try{let Q=await Q18().getById($);if(!Q?.enabled||!Q.boardId)return{integrationId:$,started:0};let Y=await xG(Z18().db,Q.organizationId);if(!Y)return{integrationId:$,started:0};if((await Y.storage.jiraIntegrations.listAutomations(Q.organizationId)).length===0)return{integrationId:$,started:0};let J=new oY(Q.siteUrl,Q.email,Q.apiToken),W=`(${await J.getBoardScopeJql(Q.boardId)}) AND status CHANGED AFTER "-${e08}m"`,K=0,H;for(let F=0;F<Ak6;F++){let U=await J.searchIssues({jql:W,nextPageToken:H,expandChangelog:!0});for(let N of U.issues){let B=hu$(N,N.changelog?.histories??[],Z);for(let D of B)if(await Aq0(Y,Q,D)==="started")K++}if(H=U.nextPageToken??void 0,!H)break}return{integrationId:$,started:K}}catch(Q){return{integrationId:$,started:0,error:Q instanceof Error?Q.message:String(Q)}}}async function Rk6($,Z){let Q=new Date($.getTime()-e08*60000),Y=await iI0.runStep(()=>Q18().listEnabledIds(),{name:"loadJiraIntegrations"});if(Y.length===0)return;let X=await Promise.all(Y.map((J)=>iI0.runStep(()=>Tk6(J,Q),{name:`sweepJira:${J}`})));for(let J of X)if(J.error)console.warn(`[jira-trigger] integration ${J.integrationId} failed: ${J.error}`);else if(J.started>0)console.log(`[jira-trigger] integration ${J.integrationId} started ${J.started} run(s) the webhook missed`)}function Y18(){if(XK1)return;XK1=iI0.registerWorkflow(Rk6,{name:"jiraTriggerSweepWorkflow"}),iI0.registerScheduled(XK1,{name:"jiraTriggerSweepWorkflow",crontab:Pk6,mode:zk6.ExactlyOncePerIntervalWhenActive})}var Pk6="7-59/10 * * * *",e08=15,Ak6=5,JK1=null,XK1=null;var X18=O(()=>{zD();vf();Kw();Tq0()});function J18($,Z){if(Z.startsWith("text/html")||Z.startsWith("image/svg"))$.set("Content-Security-Policy","sandbox allow-scripts allow-modals allow-same-origin")}var G18,qk6,Mk6,W18;var K18=O(()=>{y$();rW();el();ZP();G18=new e0,qk6=["range","if-none-match","if-modified-since"],Mk6=["content-type","content-length","content-range","accept-ranges","etag","last-modified"];G18.get("/:org/files/*",async($)=>{let Z=$.get("studioContext"),Q=Z.organization?.id;if(!Z.auth?.user?.id){if(Rd($))return $.redirect(`/login?next=${encodeURIComponent($.req.path)}`,302);throw new X$(401,{message:"Authentication required"})}if(!Q)throw new X$(401,{message:"Organization context required"});let Y=$.req.path.replace(/^.*\/files\//,"");if(!Y)throw new X$(400,{message:"Missing file key"});let X=await Ce(Y,Z);if(!X)throw new X$(503,{message:"Object storage not configured"});if(X.startsWith("data:")&&xX()){let K=X.match(/^data:([^;]+);base64,(.+)$/s);if(!K)throw new X$(500,{message:"Invalid data URL from storage"});let[,H,F]=K,U=Buffer.from(F,"base64"),N=new Headers({"Content-Type":H,"Cache-Control":"private, max-age=86400"});return J18(N,H),new Response(U,{status:200,headers:N})}let J=new Headers;for(let K of qk6){let H=$.req.header(K);if(H)J.set(K,H)}let G=await fetch(X,{headers:J});if(G.status===403||G.status===404)throw new X$(404,{message:"File not found"});if(!G.ok&&G.status!==304&&G.status!==416)throw console.error(`[files] upstream storage error ${G.status} for key:`,Y),new X$(502,{message:"Upstream storage error"});let W=new Headers;for(let K of Mk6){let H=G.headers.get(K);if(H)W.set(K,H)}return W.set("Cache-Control","private, max-age=86400"),J18(W,W.get("content-type")??""),new Response(G.body,{status:G.status,headers:W})});W18=G18});var R$0=_(($x)=>{var Ik6=$x&&$x.__createBinding||(Object.create?function($,Z,Q,Y){if(Y===void 0)Y=Q;var X=Object.getOwnPropertyDescriptor(Z,Q);if(!X||("get"in X?!Z.__esModule:X.writable||X.configurable))X={enumerable:!0,get:function(){return Z[Q]}};Object.defineProperty($,Y,X)}:function($,Z,Q,Y){if(Y===void 0)Y=Q;$[Y]=Z[Q]}),Vk6=$x&&$x.__exportStar||function($,Z){for(var Q in $)if(Q!=="default"&&!Object.prototype.hasOwnProperty.call(Z,Q))Ik6(Z,$,Q)};Object.defineProperty($x,"__esModule",{value:!0});Vk6(EJ(),$x)});var U18=_((H18)=>{Object.defineProperty(H18,"__esModule",{value:!0});H18.version=void 0;H18.version="3.4.0"});var D18=_((ZU)=>{var kk6=ZU&&ZU.__importDefault||function($){return $&&$.__esModule?$:{default:$}};Object.defineProperty(ZU,"__esModule",{value:!0});ZU.NodeTransport=ZU.VERSION=void 0;ZU.nodeResolveHost=bk6;var O5=R$0(),Sk6=T0("net"),GK1=T0("tls"),Ck6=T0("path"),N18=T0("fs"),_k6=kk6(T0("dns")),vk6=U18();ZU.VERSION=vk6.version;var fk6="nats.js";class B18{socket;version;lang;yields=[];signal=(0,O5.deferred)();closedNotification=(0,O5.deferred)();options;connected=!1;tlsName="";done=!1;closeError;constructor(){this.lang=fk6,this.version=ZU.VERSION}async connect($,Z){this.tlsName=$.tlsName,this.options=Z;let{tls:Q}=this.options,{handshakeFirst:Y}=Q||{};try{if(Y===!0)this.socket=await this.tlsFirst($);else this.socket=await this.dial($);if(this.done)this.socket?.destroy();let X=await this.peekInfo();(0,O5.checkOptions)(X,Z);let{tls_required:J,tls_available:G}=X,W=G===!0&&Z.tls!==null;if(!Y&&(J||W))this.socket=await this.startTLS();if(this.done)this.socket?.destroy();if(J&&this.socket.encrypted!==!0)throw O5.errors.InvalidArgumentError.format("tls","is not available on this server");return this.connected=!0,this.setupHandlers(),this.signal.resolve(),Promise.resolve()}catch(X){let J=X;if(!J)J=new O5.errors.ConnectionError("error connecting - node provided an undefined error");let{code:G}=J,W=G==="ECONNREFUSED"?new O5.errors.ConnectionError("connection refused",{cause:J}):J;throw this.socket?.destroy(),W}}dial($){let Z=(0,O5.deferred)(),Q,Y=(0,Sk6.createConnection)($.port,$.hostname,()=>{Z.resolve(Y),Y.removeAllListeners()});return Y.on("error",(X)=>{Q=X}),Y.on("close",()=>{Y.removeAllListeners(),Z.reject(Q)}),Y.setNoDelay(!0),Z}get isClosed(){return this.done}close($){return this._closed($,!1)}peekInfo(){let $=(0,O5.deferred)(),Z;return this.socket.on("data",(Q)=>{this.yields.push(Q);let Y=O5.DataBuffer.concat(...this.yields),X=(0,O5.extractProtocolMessage)(Y);if(X!=="")try{let J=O5.INFO.exec(X);if(!J)throw Error("unexpected response from server");let G=JSON.parse(J[1]);$.resolve(G)}catch(J){$.reject(J)}finally{this.socket.removeAllListeners()}}),this.socket.on("error",(Q)=>{Z=Q}),this.socket.on("close",()=>{this.socket.removeAllListeners(),$.reject(Z)}),$}loadFile($){if(!$)return Promise.resolve();let Z=(0,O5.deferred)();try{if($=(0,Ck6.resolve)($),!(0,N18.existsSync)($))Z.reject(Error(`${$} doesn't exist`));(0,N18.readFile)($,(Q,Y)=>{if(Q)return Z.reject(Q);Z.resolve(Y)})}catch(Q){Z.reject(Q)}return Z}async loadClientCerts(){let $={},{certFile:Z,cert:Q,caFile:Y,ca:X,keyFile:J,key:G}=this.options.tls;try{if(Z){let W=await this.loadFile(Z);if(W)$.cert=W}else if(Q)$.cert=Q;if(J){let W=await this.loadFile(J);if(W)$.key=W}else if(G)$.key=G;if(Y){let W=await this.loadFile(Y);if(W)$.ca=[W]}else if(X)$.ca=X;return Promise.resolve($)}catch(W){return Promise.reject(W)}}async tlsFirst($){let Z,Q={servername:this.tlsName,rejectUnauthorized:!0};if(this.socket)Q.socket=this.socket;if(typeof this.options.tls==="object")try{let X=await this.loadClientCerts()||{};Q=(0,O5.extend)(Q,this.options.tls,X)}catch(X){return Promise.reject(new O5.errors.ConnectionError(X.message,{cause:X}))}let Y=(0,O5.deferred)();try{let X=(0,GK1.connect)($.port,$.hostname,Q,()=>{X.removeAllListeners(),Y.resolve(X)});X.on("error",(J)=>{Z=J}),X.on("secureConnect",()=>{if(Q.rejectUnauthorized===!1)return;if(!X.authorized)throw X.authorizationError}),X.on("close",()=>{Y.reject(Z),X.removeAllListeners()}),X.setNoDelay(!0)}catch(X){Y.reject(new O5.errors.ConnectionError(X.message,{cause:X}))}return Y}async startTLS(){let $,Z={socket:this.socket,servername:this.tlsName,rejectUnauthorized:!0};if(typeof this.options.tls==="object")try{let Y=await this.loadClientCerts()||{};Z=(0,O5.extend)(Z,this.options.tls,Y)}catch(Y){return Promise.reject(new O5.errors.ConnectionError(Y.message,{cause:Y}))}let Q=(0,O5.deferred)();try{let Y=(0,GK1.connect)(Z,()=>{Y.removeAllListeners(),Q.resolve(Y)});Y.on("error",(X)=>{$=X}),Y.on("secureConnect",()=>{if(Z.rejectUnauthorized===!1)return;if(!Y.authorized)throw Y.authorizationError}),Y.on("close",()=>{Q.reject($),Y.removeAllListeners()})}catch(Y){Q.reject(new O5.errors.ConnectionError(Y.message,{cause:Y}))}return Q}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,O5.render)($[Z])}`);yield $[Z]}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,O5.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 GK1.TLSSocket}_send($){if(this.isClosed||this.socket===void 0)return Promise.resolve();if(this.options.debug)console.info(`< ${(0,O5.render)($)}`);let Z=(0,O5.deferred)();try{this.socket.write($,(Q)=>{if(Q){if(this.options.debug)console.error(`!!! ${(0,O5.render)($)}: ${Q}`);return Z.reject(Q)}return Z.resolve()})}catch(Q){if(this.options.debug)console.error(`!!! ${(0,O5.render)($)}: ${Q}`);Z.reject(Q)}return Z}send($){this._send($).catch((Q)=>{})}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(Q){if(this.options.debug)console.log("transport close terminated with an error",Q)}try{if(this.socket)this.socket.removeAllListeners(),this.socket?.destroy(),this.socket=void 0}catch(Q){console.log(Q)}this.done=!0,this.closedNotification.resolve(this.closeError)}closed(){return this.closedNotification}}ZU.NodeTransport=B18;function bk6($){let Z=(0,O5.deferred)();return _k6.default.lookup($,{all:!0},(Q,Y)=>{if(Q){Z.reject(Q);return}let X=[];for(let J of Y)X.push(J.address);if(X.length===0)X.push($);Z.resolve(X)}),Z}});var E18=_((j18)=>{Object.defineProperty(j18,"__esModule",{value:!0});j18.connect=xk6;var O18=D18(),L18=R$0(),w18=R$0();function xk6($={}){if((0,w18.hasWsProtocol)($))return Promise.reject(w18.errors.InvalidArgumentError.format("servers","node client doesn't support websockets, use the 'wsconnect' function instead"));return(0,L18.setTransportFactory)({factory:()=>{return new O18.NodeTransport},dnsResolveFn:O18.nodeResolveHost}),L18.NatsConnectionImpl.connect($)}});var z18=_((SB)=>{var gk6=SB&&SB.__createBinding||(Object.create?function($,Z,Q,Y){if(Y===void 0)Y=Q;var X=Object.getOwnPropertyDescriptor(Z,Q);if(!X||("get"in X?!Z.__esModule:X.writable||X.configurable))X={enumerable:!0,get:function(){return Z[Q]}};Object.defineProperty($,Y,X)}:function($,Z,Q,Y){if(Y===void 0)Y=Q;$[Y]=Z[Q]}),hk6=SB&&SB.__exportStar||function($,Z){for(var Q in $)if(Q!=="default"&&!Object.prototype.hasOwnProperty.call(Z,Q))gk6(Z,$,Q)};Object.defineProperty(SB,"__esModule",{value:!0});SB.connect=void 0;var uk6=E18();Object.defineProperty(SB,"connect",{enumerable:!0,get:function(){return uk6.connect}});hk6(R$0(),SB)});function R18($){let Z=$?.connectFn??mk6,Q=null,Y=null,X=!1,J=!1,G=!1,W=[];function K(){return Q!==null&&!Q.isClosed()&&!Q.isDraining()&&!G}function H(){console.log(`[NatsProvider] fireReady: ${W.length} callbacks`);for(let N of W)try{N()}catch{}}function F(N){(async()=>{for await(let B of N.status())if(B.type==="disconnect")console.log("[NatsProvider] Disconnected"),G=!0;else if(B.type==="reconnect")console.log("[NatsProvider] Reconnected, re-firing ready callbacks"),G=!1,Y=null,H()})().catch(()=>{})}async function U(N,B){let D=0;while(!J)try{Q=await Z({servers:N,timeout:dk6,reconnect:!0,maxReconnectAttempts:-1,...B?{authenticator:B}:{}}),console.log(`[NatsProvider] Connected to ${Q.getServer()} after ${D} attempt(s)`),Y=null,G=!1,F(Q),H();return}catch{D++;let L=_7(ck6,lk6,D-1,2,0.5);await T$(L)}}return{init(N,B){if(X)return;X=!0,J=!1;let D=B?.creds?P18.credsAuthenticator(new TextEncoder().encode(B.creds)):void 0;U(N,D).catch(()=>{})},isConnected(){return K()},getConnection(){return K()?Q:null},getJetStream(){if(!K())return null;if(!Y)Y=T18.jetstream(Q);return Y},onReady(N){if(W.push(N),K())try{N()}catch{}},async drain(){if(J=!0,X=!1,Y=null,G=!1,Q){let N=Q;Q=null,await N.drain().catch(()=>{})}}}}function mk6($){return A18.connect($)}var P18,A18,T18,lk6=100,ck6=3000,dk6=3000;var q18=O(()=>{m$();P18=k(Mm(),1),A18=k(z18(),1),T18=k(UU(),1)});function WK1($,Z){return`${$}.${Z}`}class KK1{cache;constructor($){this.cache=Bd({ttlMs:$?.ttlMs??ik6,maxSize:$?.maxSize??pk6})}async get($,Z){return this.cache.get(WK1($,Z))??null}async set($,Z,Q){this.cache.set(WK1($,Z),Q)}async invalidate($,Z){this.cache.delete(WK1($,Z))}teardown(){this.cache.clear()}}var ik6=600000,pk6=5000;var M18=()=>{};function pI0($,Z){return`${$}:${Z}`}function HK1($){let Z=Bd({ttlMs:$?.ttlMs??nk6,maxSize:$?.maxSize??tk6}),Q=$?.getConnection,Y=crypto.randomUUID(),X=new TextEncoder,J=new TextDecoder,G=null;function W(K,H){let F=Q?.();if(!F)return;try{F.publish(I18,X.encode(JSON.stringify({organizationId:K,keyId:H,originId:Y})))}catch(U){console.warn("[ProviderKeyCache] Publish failed (non-critical):",U)}}return{get(K,H){return Z.get(pI0(K,H))},set(K,H,F){Z.set(pI0(K,H),F)},invalidate(K,H){Z.delete(pI0(K,H)),W(K,H)},start(){if(G)return;let K=Q?.();if(!K)return;G=K.subscribe(I18),(async()=>{for await(let H of G)try{let F=JSON.parse(J.decode(H.data));if(F.originId===Y)continue;Z.delete(pI0(F.organizationId,F.keyId))}catch{}})().catch(console.error)},teardown(){G?.unsubscribe(),G=null,Z.clear()}}}var I18="studio.ai-provider-keys.invalidate",nk6=30000,tk6=5000;var V18=()=>{};class FK1{options;subscription=null;onCancel=null;encoder=new TextEncoder;originId=crypto.randomUUID();constructor($){this.options=$}async start($){if($)this.onCancel=$;if(this.subscription)return;if(!this.onCancel)return;let Z=this.options.getConnection();if(!Z)return;let Q=new TextDecoder,Y=Z.subscribe("studio.decopilot.cancel");this.subscription=Y,(async()=>{for await(let X of Y)try{let J=JSON.parse(Q.decode(X.data));if(J.originId===this.originId)continue;this.onCancel?.(J.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 Q=this.encoder.encode(JSON.stringify({taskId:$,originId:this.originId}));Z.publish("studio.decopilot.cancel",Q)}catch(Z){console.warn("[NatsCancelBroadcast] Publish failed (non-critical):",Z)}}async stop(){this.subscription?.unsubscribe(),this.subscription=null,this.onCancel=null}}var k18=($)=>{let Z;return()=>Z??=$()},UK1,NK1;var S18=O(()=>{W6();UK1=k18(()=>Q$.createHistogram("decopilot.stream.encode_ms",{description:"Per-chunk JSON.stringify+encode time for decopilot stream",unit:"ms"})),NK1=k18(()=>Q$.createCounter("decopilot.stream.published_chunks",{description:"Logical decopilot stream chunks published to JetStream",unit:"{chunks}"}))});function ZS6($=v18){return{name:kF,subjects:[`${y61}.>`],storage:cK.StorageType.File,max_age:sk6,max_bytes:ek6,max_msgs_per_subject:$S6,discard:cK.DiscardPolicy.Old,retention:cK.RetentionPolicy.Limits,duplicate_window:ak6,num_replicas:$}}class f18{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 C18($){let Z=_18.headers();for(let[Q,Y]of Object.entries($))Z.set(Q,Y);return Z}function JS6($,Z){let Q=0;return{publish(Y,X,J,G){Y.publish(X,J,G?{headers:G}:void 0).catch((W)=>{if(Q++,rk6().add(1,{"org.id":Z??"unknown"}),Q===1||Q%100===0)console.warn(`[Decopilot] JetStream publish failed for thread ${$} (${Q} total):`,W)})},get errorCount(){return Q}}}function GS6($,Z){return $.info?.cluster?Z:1}function WS6($){if(!($ instanceof Error))return!1;if(/non-clustered/i.test($.message))return!0;return/replicas?\b/i.test($.message)&&/not supported|can ?not|exceed|insufficient|greater than/i.test($.message)}class BK1{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=async(Y,X)=>{let J=ZS6(X);try{await Y.streams.info(kF),await Y.streams.update(kF,J)}catch(G){if(G instanceof Error&&G.message.includes("stream not found"))await Y.streams.add(J),await Y.streams.update(kF,J);else if(G instanceof Error&&/can ?not change.*storage|storage type/i.test(G.message))await Y.streams.delete(kF),await Y.streams.add(J);else throw G}},Q=await A8(async()=>{let Y=this.options.getJetStreamManager?await this.options.getJetStreamManager():await cK.jetstreamManager($),X=GS6($,v18);try{await Z(Y,X)}catch(J){if(X<=1||!WS6(J))throw J;console.warn(`[Decopilot] StreamBuffer: NATS rejected num_replicas=${X} (${J.message}); falling back to an unreplicated stream`),await Z(Y,1)}return Y},{maxAttempts:5,minTimeout:250,maxTimeout:4000,jitter:0.5,isRetriable:Hc});this.js=this.options.getJetStream(),this.jsm=Q,console.log(`[Decopilot] StreamBuffer.init ${this.js?"ready":"degraded (js=null)"}`)}pump($,Z,Q,Y){let X=this.js;if(!X)return console.warn(`[Decopilot] pump: JetStream client unavailable for thread ${Z}; chunks NOT published to NATS`),Promise.resolve();let J=JS6(Z,Y),G=!1,W=()=>{if(G)return;G=!0;let H=aR$(Z);X.publish(H.subject,H.data).catch(()=>{})};Q.addEventListener("abort",W,{once:!0});let K=(H)=>{let F=performance.now(),U=h61(H,{runId:Z}),N=performance.now()-F;UK1().record(N),NK1().add(1,{"org.id":Y??"unknown"}),XS6?.record(N,U.reduce((B,D)=>B+D.data.length,0));for(let B of U)J.publish(X,B.subject,B.data,B.headers?C18(B.headers):void 0)};return(async()=>{let H=$.getReader(),F=0,U=0,N;try{while(!0){let{done:B,value:D}=await H.read();if(B)break;if(K(D),U++,++F>=64)F=0,await new Promise((L)=>setImmediate(L))}}catch(B){N=B,console.warn(`[Decopilot] stream pump error for thread ${Z}:`,B?.message??B)}finally{if(H.releaseLock(),W(),YS6)console.warn(JSON.stringify({msg:"decopilot-stream-diag",event:"pump-done",taskId:Z,publishedChunks:U,publishErrors:J.errorCount}))}if(N!==void 0)throw N})()}async publishSerialized($,Z){try{return await A8(()=>$.publish(Z.subject,Z.data,{...Z.headers?{headers:C18(Z.headers)}:{},...Z.msgId?{msgID:Z.msgId}:{}}),{maxAttempts:6,minTimeout:250,maxTimeout:5000,jitter:0.5,isRetriable:Hc}),!0}catch(Q){return console.error(`[Decopilot] publish failed after retries subject=${Z.subject}`,Q),!1}}async publishRawChunk($,Z,Q){let Y=this.js;if(!Y)return!1;let X=performance.now(),J=h61(Z,{runId:$,dedup:Q});UK1().record(performance.now()-X),NK1().add(1);for(let G of J)if(!await this.publishSerialized(Y,G))return!1;return!0}async publishDone($,Z,Q){let Y=this.js;if(!Y)return!1;let X=sR$({runId:$,fenceToken:Z,finalSeq:Q});return await this.publishSerialized(Y,X)}async createTailStream($,Z,Q){let Y=this.js;if(!Y)return console.warn(`[Decopilot] createTailStream: JetStream client unavailable for thread ${$}; no live tail`),null;let X=Q?.deliverPolicy==="new"?cK.DeliverPolicy.New:cK.DeliverPolicy.All,J=Q?.closeOnDone??!1,G=Lw($),W;try{W=await A8(async()=>{return(await Y.consumers.get(kF,{filter_subjects:G,deliver_policy:X})).consume()},{maxAttempts:6,minTimeout:250,maxTimeout:5000,jitter:0.5,isRetriable:Hc})}catch(L){return console.warn("[Decopilot] JetStream tail unavailable (non-critical):",L?.message??L),null}let F=nA0({messages:async function*(){try{for await(let L of W)yield{subject:L.subject,data:L.data,headers:L.headers}}finally{W.stop()}}(),onCancel:()=>W.stop()}).pipeThrough(dA0()).pipeThrough(mA0()).getReader(),U=!1,N=()=>{if(U)return;U=!0;try{F.releaseLock()}catch{}},B=!1,D=()=>{if(B)return;B=!0,W.stop(),F.cancel().catch(()=>{}),N()};return Z?.addEventListener("abort",D,{once:!0}),new ReadableStream({async pull(L){for(;;){let{done:w,value:j}=await F.read();if(w){D(),L.close();return}let E=j;if(E.kind==="done"){if(J){D(),L.close();return}continue}L.enqueue(E.chunk);return}},cancel(){D()}})}purge($){if(!this.jsm)return;this.jsm.streams.purge(kF,{filter:Lw($)}).catch(()=>{})}teardown(){this.js=null,this.jsm=null}}var cK,_18,ok6=($)=>{let Z;return()=>Z??=$()},rk6,sk6=86400000000000,ak6=120000000000,ek6=4294967296,v18,$S6=500000,QS6,YS6,XS6;var b18=O(()=>{m$();u61();tA0();iA0();W6();S18();cK=k(UU(),1),_18=k(Mm(),1),rk6=ok6(()=>Q$.createCounter("decopilot.stream.publish_errors",{description:"Number of JetStream publish failures for decopilot stream chunks",unit:"{errors}"})),v18=Math.max(1,Number(process.env.DECOPILOT_STREAM_REPLICAS??3)||3);QS6=process.env.STREAM_ENCODE_TRACE==="1",YS6=process.env.DECOPILOT_STREAM_TRACE==="1";XS6=QS6?new f18:null});function nI0($,Z,Q,Y){if(!Y)return!1;return $.emit(Z,WH(Q,Y.status,{title:Y.title??void 0,virtualMcpId:Y.virtual_mcp_id??void 0,createdBy:Y.created_by??void 0,triggerId:Y.trigger_id??null,branch:Y.branch??null,harnessId:Y.harness_id??void 0,createdAt:Y.created_at,updatedAt:Y.updated_at})),!0}var x18=O(()=>{q8()});class DK1{storage;options;timer=null;constructor($,Z={}){this.storage=$;this.options=Z}start(){if(this.timer)return;let $=this.options.intervalMs??300000;this.timer=setInterval(()=>{this.runOnce()},$)}async runOnce(){let $=this.options.staleAfterMs??3600000;try{let Z=await this.storage.sweepAbandoned($);if(Z>0)console.log(`[async-research-sweeper] marked ${Z} stale jobs as abandoned`);return Z}catch(Z){return console.error("[async-research-sweeper] sweep failed",Z),0}}dispose(){if(this.timer)clearInterval(this.timer),this.timer=null}}function KS6($,Z){let Q=$.startsWith("thread:")?DK($):$;return[...new Set([Z,Q].filter((Y)=>!!Y))]}async function y18($,Z){let Q=Z.organizationId;try{let Y=await $.storage.taskBoard.linkedThreadIds(Z.id,Q);for(let X of Y){let J=await DF($,X);if(!J?.owner||!J?.name)continue;let G=await $.storage.threads.get(X),W=await Ll($,{threadId:X,runBranch:G?.branch}),K=KS6(W,await Lz0($,X)),H=await bs($,Q,Oe0(J)).catch(()=>null);if(!H){console.warn(`[task-board] no credential for ${J.owner}/${J.name} \u2014 `+`cannot look up ${Z.id}'s change request by branch`);continue}for(let F of K){let U=await H.readForBranch(F).catch(()=>null);if(!U)continue;return await $.storage.taskBoard.linkPr({taskBoardItemId:Z.id,organizationId:Q,url:U.url,prNumber:U.number,repo:H.repo}),await $.storage.taskBoard.openReviewCycleIfInProgress(Z.id,Q),await O3(Q).catch(()=>{}),console.log(`[task-board] ${Z.id}: linked ${U.url} found on branch ${F}`),!0}}}catch(Y){console.error("[task-board] PR lookup by branch failed",Y)}return!1}var g18=O(()=>{OZ();CG();sZ()});async function h18($,Z,Q){let Y=Z.organizationId;if(!$J(Z))return!1;if(!ff(Q))return!1;if(await $.storage.taskBoard.hasHumanRejectedDone(Z.id,Y))return!1;let X=await $.storage.organizationSettings.get(Y),J=ZF(X?.flags),G=await $.storage.taskBoard.update(Z.id,Y,{status:J},Z.updatedBy);return await A6($,{taskBoardItemId:Z.id,action:"status_changed",actorId:null,data:{from:Z.status,to:J,reason:"pr_merged"}}),p$(Y,G),console.log(`[task-board-review-sweeper] ${Z.id}: linked PR already merged \u2014 moved to ${J}`),!0}var u18=O(()=>{G4();ZY();pl();PK();$9()});function OS6($){return $ instanceof uY}function LS6($,Z){return Z-$>=BS6}class OK1{taskBoard;contextFactory;billing;options;timer=null;running=!1;cursor=null;constructor($,Z,Q,Y={}){this.taskBoard=$;this.contextFactory=Z;this.billing=Q;this.options=Y}start(){if(this.timer)return;let $=this.options.intervalMs??HS6;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??US6,Q=this.options.itemIntervalMs??FS6,Y=new Date(Date.now()-Q),X=await this.taskBoard.listItemsPendingReview(Z,this.cursor,Y),J=X.at(-1);this.cursor=X.length===Z&&J?{updatedAt:J.updatedAt,id:J.id}:null;for(let{id:G,organizationId:W}of X)try{if(await this.reconcileItem(G,W,Y))$++}catch(K){console.error(`[task-board-review-sweeper] ${G} failed`,K)}await this.reapNeverStartedThreads(Z),$+=await this.dispatchDueRetries(Z),await this.reactToUnhandledFailures(Z)}catch(Z){console.error("[task-board-review-sweeper] sweep failed",Z)}finally{this.running=!1}return $}async reapNeverStartedThreads($){try{let Z=await this.taskBoard.failNeverStartedLinkedThreads($,new Date(Date.now()-v81),p41);for(let Q of Z)console.warn(`[task-board-review-sweeper] failed never-started thread ${Q.threadId} on ${Q.itemId}`)}catch(Z){console.error("[task-board-review-sweeper] reaping failed",Z)}}async reactToUnhandledFailures($){let Z=await this.taskBoard.listItemsStuckAfterFailure($,new Date(Date.now()-DS6));for(let{id:Q,organizationId:Y,threadId:X}of Z)try{console.warn(`[task-board-review-sweeper] reacting to an unhandled failure on ${Q}`),await d41(this.taskBoard,X,Y),await m41(this.taskBoard,this.billing,X,Y)}catch(J){console.error(`[task-board-review-sweeper] unhandled-failure reaction for ${Q} failed`,J)}}async dispatchDueRetries($){let Z=0,Q=await this.taskBoard.listItemsDueForRetry($,new Date);for(let{id:Y,organizationId:X,attempts:J}of Q)try{if(!await this.taskBoard.claimDueRetry(Y,X,new Date))continue;let G=await this.taskBoard.getById(Y,X);if(!G||G.status!==L$.progress||G.assigneeId!==r$)continue;let W=await this.contextFactory(X,G.assignedBy??G.createdBy);if(!W)continue;await AK(W,G,{runClass:"retry"}),Z++,console.warn(`[task-board-review-sweeper] re-dispatched ${Y} after a failure (attempt ${J})`)}catch(G){if(console.error(`[task-board-review-sweeper] retry dispatch for ${Y} failed`,G),OS6(G)){await this.returnToTodo(Y,X,G instanceof Error?G.message:String(G));continue}await this.taskBoard.scheduleRunRetry(Y,X,J,new Date(Date.now()+NS6)).catch((W)=>console.error(`[task-board-review-sweeper] re-arming ${Y} failed`,W))}return Z}async returnToTodo($,Z,Q){try{let Y=await this.taskBoard.getById($,Z);if(!Y||Y.status!==L$.progress)return;let X=await this.taskBoard.returnToTodoAfterFailure($,Z,Y.updatedBy);if(!X)return;await this.taskBoard.recordActivity({taskBoardItemId:$,action:"status_changed",actorId:null,data:{from:"in_progress",to:"todo",reason:Q}}).catch(()=>{}),p$(Z,X)}catch(Y){console.error(`[task-board-review-sweeper] returning ${$} to todo failed`,Y)}}async handOffReviewWithoutPr($,Z){let Q=await this.taskBoard.listActivity(Z.id,Z.organizationId);if(!LS6(RN(Q,Z.reviewCycleStartedAt),Date.now()))return;await MF($,Z,"no pull request is linked to this task \u2014 there is nothing for a "+"reviewer to review")}async reconcileItem($,Z,Q){if(!await this.taskBoard.claimSweep($,Z,Q))return!1;let Y=await this.taskBoard.getById($,Z);if(!Y)return!1;if(!$J(Y))return!1;let X=Y.assigneeId===r$,J=await this.taskBoard.listPrs($,Z),G=await this.contextFactory(Z,Y.assignedBy??Y.createdBy);if(!G)return!1;if(J.length===0){if(await y18(G,Y))J=await this.taskBoard.listPrs($,Z);if(J.length===0){if(X)await this.handOffReviewWithoutPr(G,Y);return!1}}let W=await Promise.all(J.map(async(K)=>({...K,...await ol(Z,K)})));if(W.every((K)=>K.state===null))console.warn(`[task-board-review-sweeper] ${$}: no live PR state from GitHub (${W.length} PR(s)) \u2014 proceeding on unknown`);if(await h18(G,Y,W))return!0;if(await oq$(G,Y))return!0;if(await this.resolveConflictFromSweep(G,Y,W))return!0;if(!X)return!1;if(!h41(W))return!1;return await nl(G,Y,{previewMatchesHead:u41(W)}),!0}async resolveConflictFromSweep($,Z,Q){let Y=Q.find((X)=>X.state!=="closed"&&X.conflict===!0);if(!Y)return!1;return await Nw($,Z.organizationId,Z,{pr:{number:Y.number,url:Y.url},conflict:!0}).catch((X)=>{return console.error("[task-board-review-sweeper] conflict resolve failed",X),!1})}dispose(){if(this.timer)clearInterval(this.timer),this.timer=null}}var HS6=60000,FS6=300000,US6=50,NS6=60000,BS6=900000,DS6=120000;var l18=O(()=>{G4();GA0();g18();IF();ce();PK();u18();$9();qG();n41();sZ();De();tl()});import{readdir as wS6,rm as tI0}from"fs/promises";import{join as oI0}from"path";async function rI0($){let Z=new Date;Z.setUTCDate(Z.getUTCDate()-jS6),Z.setUTCHours(0,0,0,0);let Q=0;try{let Y=await Zx($);for(let X of Y)if(/^\d{4}$/.test(X))Q+=await c18($,X,Z);else if(!X.startsWith(".")){let J=oI0($,X),G=await Zx(J);for(let K of G){if(!/^\d{4}$/.test(K))continue;Q+=await c18(J,K,Z)}if((await Zx(J)).length===0)await tI0(J,{recursive:!0,force:!0})}}catch(Y){console.warn("monitoring retention cleanup failed:",Y)}return Q}async function c18($,Z,Q){let Y=0,X=oI0($,Z),J=await Zx(X);for(let W of J){if(!/^\d{2}$/.test(W))continue;let K=oI0(X,W),H=await Zx(K);for(let U of H){if(!/^\d{2}$/.test(U))continue;let N=new Date(`${Z}-${W}-${U}T00:00:00Z`);if(isNaN(N.getTime()))continue;if(N<Q){let B=oI0(K,U);await tI0(B,{recursive:!0,force:!0}),Y++}}if((await Zx(K)).length===0)await tI0(K,{recursive:!0,force:!0})}if((await Zx(X)).length===0)await tI0(X,{recursive:!0,force:!0});return Y}async function Zx($){try{return(await wS6($)).filter((Q)=>!Q.startsWith("."))}catch{return[]}}var jS6=30;var LK1=()=>{};import{DBOS as wK1,SchedulerMode as ES6}from"@dbos-inc/dbos-sdk";async function PS6(){let $=[eG(),Qx(),XU()],Z=0;for(let Q of $)try{Z+=await rI0(Q)}catch(Y){console.error("[monitoring-retention] cleanup failed:",Y)}return console.log(`[monitoring-retention] deleted ${Z} day-dir(s) across ${$.length} signal dir(s)`),{deleted:Z,dirs:$.length}}async function AS6($,Z){await wK1.runStep(()=>PS6(),{name:"monitoringRetention"})}function m18(){if(d18)return;d18=!0;let $=wK1.registerWorkflow(AS6,{name:"monitoringRetentionWorkflow"});wK1.registerScheduled($,{name:"monitoringRetentionWorkflow",crontab:zS6,mode:ES6.ExactlyOncePerIntervalWhenActive})}var zS6="23 4 * * *",d18=!1;var i18=O(()=>{S3();LK1()});function p18($){return async(Z,Q)=>{let Y=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","=",Q).where("member.organizationId","=",Z).executeTakeFirst();if(!Y)return console.warn(`[automationContextFactory] User ${Q} not found in org ${Z} \u2014 returning null`),null;let X=await GQ.create();X.auth.user={id:Q,role:Y.role},X.organization={id:Y.orgId,slug:Y.orgSlug,name:Y.orgName};let J=await GP($.db,Z,Y.role);return X.boundAuth=Q31({auth:X.authInstance,headers:new Headers,role:Y.role,permissions:J,userId:Q}),X.access=new HE(Q,void 0,X.boundAuth,Y.role,"self"),Uw(X,{id:Y.orgId,slug:Y.orgSlug}),X}}var n18=O(()=>{PW();sH()});function TS6(){return[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}]}function RS6(){return{services:TS6(),migrationsStatus:"pending",serverUrl:null,logs:[]}}function MS6(){for(let $ of qS6)$()}function t18($){let Z=[...jK1.logs,$];jK1={...jK1,logs:Z.length>500?Z.slice(-500):Z},MS6()}function EK1(){return IS6}var jK1,qS6,IS6=!1;var zK1=O(()=>{jK1=RS6(),qS6=new Set});import{EventEmitter as VS6}from"events";var PK1;var o18=O(()=>{zK1();PK1=new VS6;PK1.on("request",($)=>{t18($)})});function r18(){return async($,Z)=>{let Q=Date.now(),Y=$.req.method,X=$.req.path;if(X==="/api/auth/get-session"||X.includes("favicon")){await Z();return}let J="",G=!1;if(X.startsWith("/mcp")&&Y==="POST"){G=!0;try{if($.req.header("Content-Type")?.includes("application/json")){let N=await $.req.raw.clone().json();if(N.method==="tools/call"&&N.params?.name){let B=Qm(N.params.name),D=N.params.arguments||{},L=Object.keys(D).map((j)=>Qm(j)),w=L.length>0?L.slice(0,3).join(",")+(L.length>3?"\u2026":""):"";J=`${q5.tool}${B}${q5.dim}(${w})${q5.reset}`}else if(N.method)J=`${q5.dim}${Qm(N.method)}${q5.reset}`}}catch{}}let W=Qm(X);if(X.startsWith("/mcp/conn_")){let F=X.split("/")[2]??"";W=`/mcp/${q5.mcp}${Qm(F.slice(0,12))}\u2026${q5.reset}`}else if(X==="/mcp")W=`${q5.mcp}/mcp${q5.reset}`;else if(X==="/mcp/registry")W=`${q5.mcp}/mcp/registry${q5.reset}`;let K=SS6(Y),H=G?"\u25C0":"\u2190";if(!EK1())console.log(`${q5.dim}${H}${q5.reset} ${K}${Y}${q5.reset} ${W}${J?` ${J}`:""}`);try{await Z()}finally{let F=Date.now()-Q,U=$.res.status,N=kS6(U),B=F<1000?`${F}ms`:`${(F/1000).toFixed(1)}s`,D=G?"\u25B6":"\u2192";if(!EK1())console.log(`${q5.dim}${D}${q5.reset} ${K}${Y}${q5.reset} ${W}${J?` ${J}`:""} ${N}${U}${q5.reset} ${q5.duration}${B}${q5.reset}`);PK1.emit("request",{method:Y,path:Qm(X),status:U,duration:F,timestamp:new Date})}}}var q5,kS6=($)=>{if($>=500)return q5.serverError;if($>=400)return q5.clientError;if($>=300)return q5.redirect;return q5.ok},SS6=($)=>{return q5[$]||q5.reset},Qm=($)=>{return $.replace(/\r/g,"").replace(/\n/g,"").replace(/\x1b\[[0-9;]*m/g,"").replace(/[\x00-\x1f\x7f-\x9f]/g,"")};var s18=O(()=>{zK1();o18();q5={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 Z$8}from"crypto";import{mkdir as CS6,readdir as _S6,rm as a18,stat as Q$8}from"fs/promises";import{join as TK1,relative as vS6}from"path";import{z as V$}from"zod";function X$8($){let Z=$.replace(/[^a-zA-Z0-9_-]/g,"_");return TK1(fS6,Z)}function J$8($){return $.replace(/^\/+/,"").replace(/\.\./g,"")}function AK1($,Z){let Q=X$8($),Y=J$8(Z);return TK1(Q,Y)}function bS6($,Z,Q,Y){let X=L0().encryptionKey||"dev-secret",J=`${$}:${Z}:${Q}:${Y}`;return Z$8("sha256",X).update(J).digest("hex")}function $$8($,Z,Q,Y,X){let J=Math.floor(Date.now()/1000)+Y,G=bS6(Z,Q,J,X),W=new URL(`/api/dev-assets/${Z}/${J$8(Q)}`,$);return W.searchParams.set("expires",J.toString()),W.searchParams.set("signature",G),W.searchParams.set("method",X),W.toString()}function G$8($,Z,Q){let Y=`${$}:${Z.getTime()}:${Q}`;return`"${Z$8("md5","etag").update(Y).digest("hex")}"`}async function W$8($,Z,Q,Y,X){try{let J=await _S6($,{withFileTypes:!0});for(let G of J){let W=TK1($,G.name),H=vS6(Z,W).replace(/\\/g,"/");if(Q&&!H.startsWith(Q))continue;if(G.isDirectory())if(Y){let F=H+"/";if(!Q||F.startsWith(Q)){if(!(Q?H.slice(Q.length):H).includes("/"))X.commonPrefixes.add(F)}}else await W$8(W,Z,Q,Y,X);else if(G.isFile()){if(Y&&Q){let F=H.slice(Q.length);if(F.includes(Y)){let U=F.indexOf(Y),N=Q+F.slice(0,U+1);X.commonPrefixes.add(N);continue}}try{let F=await Q$8(W);X.objects.push({key:H,size:F.size,lastModified:F.mtime.toISOString(),etag:G$8(W,F.mtime,F.size)})}catch{}}}}catch{}}function K$8($,Z){let Y=p($).id;return[{name:"LIST_OBJECTS",description:"List objects in the local assets directory with pagination support",inputSchema:V$.object({prefix:V$.string().optional(),maxKeys:V$.number().optional().default(1000),continuationToken:V$.string().optional(),delimiter:V$.string().optional()}),outputSchema:V$.object({objects:V$.array(V$.object({key:V$.string(),size:V$.number(),lastModified:V$.string(),etag:V$.string()})),nextContinuationToken:V$.string().optional(),isTruncated:V$.boolean(),commonPrefixes:V$.array(V$.string()).optional()}),handler:async(X)=>{let J=X,G=J.prefix||"",W=J.maxKeys??1000,K=J.delimiter,H=J.continuationToken,F=X$8(Y);await CS6(F,{recursive:!0});let U={objects:[],commonPrefixes:new Set};await W$8(F,F,G,K,U),U.objects.sort((w,j)=>w.key.localeCompare(j.key));let N=0;if(H){if(N=U.objects.findIndex((w)=>w.key>H),N===-1)N=U.objects.length}let B=U.objects.slice(N,N+W),D=N+W<U.objects.length,L=D?B[B.length-1]?.key:void 0;return{objects:B,isTruncated:D,nextContinuationToken:L,commonPrefixes:Array.from(U.commonPrefixes).sort()}}},{name:"GET_OBJECT_METADATA",description:"Get metadata for a file in the local assets directory",inputSchema:V$.object({key:V$.string()}),outputSchema:V$.object({contentType:V$.string().optional(),contentLength:V$.number(),lastModified:V$.string(),etag:V$.string(),metadata:V$.record(V$.string(),V$.string()).optional()}),handler:async(X)=>{let J=X,G=AK1(Y,J.key),W=await Q$8(G);return{contentType:e31(J.key),contentLength:W.size,lastModified:W.mtime.toISOString(),etag:G$8(G,W.mtime,W.size)}}},{name:"GET_PRESIGNED_URL",description:"Generate a presigned URL for downloading a file from local storage",inputSchema:V$.object({key:V$.string(),expiresIn:V$.number().optional()}),outputSchema:V$.object({url:V$.string(),expiresIn:V$.number()}),handler:async(X)=>{let J=X,G=J.expiresIn??e18;return{url:$$8(Z,Y,J.key,G,"GET"),expiresIn:G}}},{name:"PUT_PRESIGNED_URL",description:"Generate a presigned URL for uploading a file to local storage",inputSchema:V$.object({key:V$.string(),expiresIn:V$.number().optional(),contentType:V$.string().optional()}),outputSchema:V$.object({url:V$.string(),expiresIn:V$.number()}),handler:async(X)=>{let J=X,G=J.expiresIn??e18;return{url:$$8(Z,Y,J.key,G,"PUT"),expiresIn:G}}},{name:"DELETE_OBJECT",description:"Delete a single file from local storage",inputSchema:V$.object({key:V$.string()}),outputSchema:V$.object({success:V$.boolean(),key:V$.string()}),handler:async(X)=>{let J=X,G=AK1(Y,J.key);try{return await a18(G),{success:!0,key:J.key}}catch{return{success:!1,key:J.key}}}},{name:"DELETE_OBJECTS",description:"Delete multiple files from local storage",inputSchema:V$.object({keys:V$.array(V$.string()).max(1000)}),outputSchema:V$.object({deleted:V$.array(V$.string()),errors:V$.array(V$.object({key:V$.string(),message:V$.string()}))}),handler:async(X)=>{let J=X,G=[],W=[];return await Promise.all(J.keys.map(async(K)=>{let H=AK1(Y,K);try{await a18(H),G.push(K)}catch(F){W.push({key:K,message:F instanceof Error?F.message:"Unknown error"})}})),{deleted:G,errors:W}}}]}async function RK1($,Z,Q){let Y=K$8(Z,Q),X=new CH({name:"dev-assets-mcp",version:"1.0.0"},{capabilities:{tools:{}},jsonSchemaValidator:f5});for(let G of Y){let W="shape"in G.inputSchema?G.inputSchema.shape:V$.object({}).shape,K=G.outputSchema&&"shape"in G.outputSchema?G.outputSchema.shape:V$.object({}).shape;X.registerTool(G.name,{description:G.description??"",inputSchema:W,outputSchema:K,annotations:G.annotations,_meta:G._meta},async(H)=>{try{let F=await G.handler(H);return{content:[{type:"text",text:JSON.stringify(F)}],structuredContent:F}}catch(F){return{content:[{type:"text",text:`Error: ${F.message}`}],isError:!0}}})}let J=new sY({enableJsonResponse:$.headers.get("Accept")?.includes("application/json")??!1});return await X.connect(J),cG(X,J,$,"mcp:dev-assets")}async function H$8($,Z,Q,Y){let J=K$8(Q,Y).find((G)=>G.name===$);if(!J)return{content:[{type:"text",text:`Tool not found: ${$}`}],isError:!0};try{let G=await J.handler(Z);return{content:[{type:"text",text:JSON.stringify(G)}]}}catch(G){return{content:[{type:"text",text:G instanceof Error?G.message:String(G)}],isError:!0}}}var fS6="./data/assets",e18=3600,Y$8,F$8;var U$8=O(()=>{t1();Oc();y$();St();ef();uQ();cM0();Y$8=new e0;Y$8.all("/",async($)=>{let Z=$.get("studioContext"),Q=new URL($.req.url),Y=`${Q.protocol}//${Q.host}`;return RK1($.req.raw,Z,Y)});F$8=Y$8});var N$8={};M4(N$8,{mountDevRoutes:()=>xS6});function xS6($,Z){$.all("/mcp/:connectionId{.*_dev-assets$}",Z,async(Y)=>{let X=Y.get("studioContext"),J=new URL(Y.req.url),G=`${J.protocol}//${J.host}`;return RK1(Y.req.raw,X,G)}),$.all("/mcp/:connectionId{.*_dev-assets$}/call-tool/:toolName",Z,async(Y)=>{let X=Y.get("studioContext"),J=new URL(Y.req.url),G=`${J.protocol}//${J.host}`,W=Y.req.param("toolName");if(!W)return Y.json({error:"Missing tool name"},400);let K=await Y.req.json(),H=await H$8(W,K,X,G);if(H.isError)return Y.json(H.content,500);return Y.json(H.content)}),$.use("/mcp/dev-assets",Z),$.route("/mcp/dev-assets",F$8);let Q=new e0;Q.use("*",uK({mountPath:"/api/dev-assets"})),Q.route("/",lM0({orgFromPath:!1})),$.route("/api/dev-assets",Q)}var B$8=O(()=>{y$();p31();cM0();U$8()});import{sql as yS6}from"kysely";import{randomUUID as D$8}from"crypto";import{z as gS6}from"zod";async function uS6($){let Z=new Date().toISOString(),Q=D$8(),Y=R8.SELF($.organizationId),X="registry.publish_request.created",J={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:Q,organization_id:$.organizationId,type:"registry.publish_request.created",source:Y,specversion:"1.0",subject:$.request.id,time:Z,datacontenttype:"application/json",dataschema:null,data:JSON.stringify(J),cron:null,status:"pending",attempts:0,last_error:null,next_retry_at:null,created_at:Z,updated_at:Z}).execute();let G=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","=",Y)])).execute();if(G.length>0)await $.db.insertInto("event_deliveries").values(G.map((W)=>({id:D$8(),event_id:Q,subscription_id:W.id,status:"pending",attempts:0,last_error:null,delivered_at:null,next_retry_at:null,created_at:Z}))).execute();try{await yS6`SELECT
3429
3429
  pg_notify('studio_events', ${Q}),