decocms 4.367.1 → 4.367.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (372) hide show
  1. package/dist/client/assets/{AlertCircle-DdgoOwtf.js → AlertCircle-JAw4DKWg.js} +1 -1
  2. package/dist/client/assets/{AreaChart-BLqeL-Kr.js → AreaChart-BFPD44c-.js} +1 -1
  3. package/dist/client/assets/{ArrowLeft-BgfGskGd.js → ArrowLeft-C4ws2vta.js} +1 -1
  4. package/dist/client/assets/{ArrowRight-JlpBR4ak.js → ArrowRight-CGkzbTs-.js} +1 -1
  5. package/dist/client/assets/{ArrowUp-DjsVuNpG.js → ArrowUp-CW9s78t7.js} +1 -1
  6. package/dist/client/assets/{Check-BXALxZkV.js → Check-BnJHwdzA.js} +1 -1
  7. package/dist/client/assets/{CheckCircle-CYg2Tr69.js → CheckCircle-D72wsOXz.js} +1 -1
  8. package/dist/client/assets/{ChevronRight-Xore976n.js → ChevronRight-CIuRctG6.js} +1 -1
  9. package/dist/client/assets/{ChevronUp-doBmaKp2.js → ChevronUp-CUHmZknM.js} +1 -1
  10. package/dist/client/assets/{Copy01-CYJaDzON.js → Copy01-CAnIcRR7.js} +1 -1
  11. package/dist/client/assets/{CreditCard01-CKEZM-Nk.js → CreditCard01-Byf14Zko.js} +1 -1
  12. package/dist/client/assets/{Database01-Dy1ntHiO.js → Database01-DhxHwIba.js} +1 -1
  13. package/dist/client/assets/{DotsVertical-k3X_09Zf.js → DotsVertical-DZxfXATf.js} +1 -1
  14. package/dist/client/assets/{Download01-DKDz2dFy.js → Download01-BKhvQC2t.js} +1 -1
  15. package/dist/client/assets/{ErrorBarContext-BURHauSf.js → ErrorBarContext-IFeY1HCC.js} +1 -1
  16. package/dist/client/assets/{Eye-4t1Q1x_N.js → Eye-CeLsr2wK.js} +1 -1
  17. package/dist/client/assets/{File02-Cdpbi8-q.js → File02-Ic5DSfbF.js} +1 -1
  18. package/dist/client/assets/{GitBranch01-rv2uDVH5.js → GitBranch01-llYG9Xp9.js} +1 -1
  19. package/dist/client/assets/{Globe01-H_L1039P.js → Globe01-BxZcqfmG.js} +1 -1
  20. package/dist/client/assets/{HardDrive-Cxw5uymp.js → HardDrive-D8M2f43J.js} +1 -1
  21. package/dist/client/assets/{Image01-CXL1rUab.js → Image01-CAvGw-jw.js} +1 -1
  22. package/dist/client/assets/{Key01-Z_LVLfYi.js → Key01-MvLRbpTL.js} +1 -1
  23. package/dist/client/assets/{Link01-DKxJL9wE.js → Link01-BFGs7SHa.js} +1 -1
  24. package/dist/client/assets/{LinkExternal01-BaNEiZ-Z.js → LinkExternal01-_FElc0p1.js} +1 -1
  25. package/dist/client/assets/{MessageCircle01-nOnaif4r.js → MessageCircle01-BIIEDxFs.js} +1 -1
  26. package/dist/client/assets/{Monitor01-M9EpHieD.js → Monitor01-CgVSaEtw.js} +1 -1
  27. package/dist/client/assets/{Package-bors0uR9.js → Package-rfI0qNYd.js} +1 -1
  28. package/dist/client/assets/{Palette-BTRMSHWm.js → Palette-DWgPkj9P.js} +1 -1
  29. package/dist/client/assets/{Play-zxSLSkrU.js → Play-DkBjQzgn.js} +1 -1
  30. package/dist/client/assets/{Plus-DmIvdJjO.js → Plus-CWME9B9L.js} +1 -1
  31. package/dist/client/assets/{Printer-B-kmat8d.js → Printer-tuedaxzr.js} +1 -1
  32. package/dist/client/assets/{SearchLg-uwCH_Y0q.js → SearchLg-Dqhtv5dc.js} +1 -1
  33. package/dist/client/assets/{SearchMd-Cf2jyLeC.js → SearchMd-CZSs2LSf.js} +1 -1
  34. package/dist/client/assets/{Sector-DK0YvOHU.js → Sector-aLBxu6yc.js} +1 -1
  35. package/dist/client/assets/{Settings02-C3BFmQm6.js → Settings02-BhsH56Xz.js} +1 -1
  36. package/dist/client/assets/{Share07-amH04EUM.js → Share07-CzidgFZ5.js} +1 -1
  37. package/dist/client/assets/{Shield01-CoMwjqAo.js → Shield01-K4aGKNL2.js} +1 -1
  38. package/dist/client/assets/{Stars01-BJVFzy09.js → Stars01-C47JIet8.js} +1 -1
  39. package/dist/client/assets/{Sun-CG_-rnB-.js → Sun-CdOrW_VN.js} +1 -1
  40. package/dist/client/assets/{SwitchHorizontal01-G8wAJ_Hg.js → SwitchHorizontal01-Dqqx_KZP.js} +1 -1
  41. package/dist/client/assets/{Tool01-CzodsTwJ.js → Tool01-j5KBS7L_.js} +1 -1
  42. package/dist/client/assets/{Tool02-vcgsrI0t.js → Tool02-DJpbC_72.js} +1 -1
  43. package/dist/client/assets/{Trash01-DacQZEqw.js → Trash01-CrceRjD2.js} +1 -1
  44. package/dist/client/assets/{TrendUp01-D9hlSqa_.js → TrendUp01-DETtD9qe.js} +1 -1
  45. package/dist/client/assets/{Upload01-COWsdxp9.js → Upload01-B6QCJOOJ.js} +1 -1
  46. package/dist/client/assets/{User01-BvT7Fpbq.js → User01-DLqwauek.js} +1 -1
  47. package/dist/client/assets/{UserSquare-CXNLbwdE.js → UserSquare-CPabtqPY.js} +1 -1
  48. package/dist/client/assets/{Users01-DkoO6Vse.js → Users01-BFSgZvlS.js} +1 -1
  49. package/dist/client/assets/{Users03-1uHPeSQW.js → Users03-DdHJhs5B.js} +1 -1
  50. package/dist/client/assets/{X-BSqsmD1L.js → X-C_wX87Ke.js} +1 -1
  51. package/dist/client/assets/{XCircle-g7V7rkX9.js → XCircle-CHAGLbh6.js} +1 -1
  52. package/dist/client/assets/{XClose-DIddD6Et.js → XClose-wbQg8T5j.js} +1 -1
  53. package/dist/client/assets/{Zap-DLA4I1NQ.js → Zap-Blk6garZ.js} +1 -1
  54. package/dist/client/assets/{ZoomOut-DnzrRxMa.js → ZoomOut-B4s4anLX.js} +1 -1
  55. package/dist/client/assets/{access-gate-DF-Coy0Z.js → access-gate-64zcpMYD.js} +1 -1
  56. package/dist/client/assets/{add-connection-dialog-CXROHrx5.js → add-connection-dialog-BlgJR9S1.js} +1 -1
  57. package/dist/client/assets/{agent-analytics-DNpcK1Gm.js → agent-analytics-BzTuWP3y.js} +1 -1
  58. package/dist/client/assets/agent-app-C9zVa4ys.js +1 -0
  59. package/dist/client/assets/agent-assets-kaujtYut.js +1 -0
  60. package/dist/client/assets/{agent-automation-CHui58AS.js → agent-automation-B4K6SO5X.js} +1 -1
  61. package/dist/client/assets/{agent-automations-B_ep9dv9.js → agent-automations-C-1CPUHo.js} +1 -1
  62. package/dist/client/assets/{agent-connect-sources-TfQK-tl8.js → agent-connect-sources-D1cyYh2R.js} +1 -1
  63. package/dist/client/assets/agent-deck-BYn3-8ZT.js +1 -0
  64. package/dist/client/assets/{agent-e2e-1qCY8Ach.js → agent-e2e-TcP4h5N6.js} +1 -1
  65. package/dist/client/assets/agent-file-SY1u955u.js +1 -0
  66. package/dist/client/assets/{agent-git-Du4VEwxt.js → agent-git-BwwZtE0x.js} +2 -2
  67. package/dist/client/assets/{agent-hosting-DX0ovQKG.js → agent-hosting-CFYwXBfp.js} +1 -1
  68. package/dist/client/assets/{agent-icon-BNs8r1fO.js → agent-icon-CP4wb7Bx.js} +1 -1
  69. package/dist/client/assets/agent-library-file-CPAiSend.js +1 -0
  70. package/dist/client/assets/{agent-monitor-Dki9XKb-.js → agent-monitor-CPiRXYpW.js} +1 -1
  71. package/dist/client/assets/{agent-overview-Bxk83Bj1.js → agent-overview-qi-4gnij.js} +1 -1
  72. package/dist/client/assets/agent-settings-BMrZhBmd.js +1 -0
  73. package/dist/client/assets/agent-site-editor-code-SwjyZSI8.js +2 -0
  74. package/dist/client/assets/{agent-site-editor-content-B0MbcGKz.js → agent-site-editor-content-DHZEWqFy.js} +2 -2
  75. package/dist/client/assets/{agent-site-editor-preview-BXudlzau.js → agent-site-editor-preview-D4HUiy11.js} +3 -3
  76. package/dist/client/assets/{agent-site-editor-D_tYXiIA.js → agent-site-editor-wV3RTwJo.js} +2 -2
  77. package/dist/client/assets/agent-view-C28582_4.js +1 -0
  78. package/dist/client/assets/{agent-view-guard-BOalzzXB.js → agent-view-guard-B_GXgcjD.js} +1 -1
  79. package/dist/client/assets/{agents-list-BYAVvgSK.js → agents-list-88dH8d0e.js} +1 -1
  80. package/dist/client/assets/{ai-providers-Y5YFfgGF.js → ai-providers-BBzNm4vK.js} +1 -1
  81. package/dist/client/assets/{alert-clNuLo0b.js → alert-0hXqrFqy.js} +1 -1
  82. package/dist/client/assets/{alert-dialog-OOEFvLXD.js → alert-dialog-DJ3365Df.js} +1 -1
  83. package/dist/client/assets/{api-keys-D7YwTp1J.js → api-keys-C4z7q_7l.js} +1 -1
  84. package/dist/client/assets/api-keys-DVgRzadm.js +1 -0
  85. package/dist/client/assets/app-editor-ChHTI5Yo.js +1 -0
  86. package/dist/client/assets/{asset-utils-BVwTaEjS.js → asset-utils-Zi5dAmhU.js} +1 -1
  87. package/dist/client/assets/{auth-CvdEaJV2.js → auth-DiBJ6HTw.js} +1 -1
  88. package/dist/client/assets/{auth-catchall-915VHRoy.js → auth-catchall-C7kwTG_2.js} +1 -1
  89. package/dist/client/assets/{auth-entry-f4UNzctv.js → auth-entry-B_CmlfVr.js} +1 -1
  90. package/dist/client/assets/{auth-split-layout-DPITqUgY.js → auth-split-layout-Btl1AmCA.js} +1 -1
  91. package/dist/client/assets/{authenticate-and-persist-oauth-Bt5D1aJI.js → authenticate-and-persist-oauth-C-DK5QxU.js} +1 -1
  92. package/dist/client/assets/{automation-list-row-Btn-B-nL.js → automation-list-row-CUr8umQd.js} +1 -1
  93. package/dist/client/assets/{automation-runs-Bs_GJ0Mx.js → automation-runs-BEf7TmV5.js} +1 -1
  94. package/dist/client/assets/{automations-3-1PN8L4.js → automations-Bd5XDoWz.js} +1 -1
  95. package/dist/client/assets/{autosend-6z8b55g2.js → autosend-CbSGCC_z.js} +1 -1
  96. package/dist/client/assets/{avatar-Bh0VE7CU.js → avatar-D6EG4gpi.js} +1 -1
  97. package/dist/client/assets/{badge-mWPnqtIU.js → badge-CLjnzWV1.js} +1 -1
  98. package/dist/client/assets/{block-document-trAdhSx9.js → block-document-4SYSbn7x.js} +1 -1
  99. package/dist/client/assets/{blocks-preview-workspace-context-D0ptXqYk.js → blocks-preview-workspace-context-MvEJSPQ_.js} +1 -1
  100. package/dist/client/assets/{breadcrumb-_beni89t.js → breadcrumb-C6uIh2gx.js} +1 -1
  101. package/dist/client/assets/{buckets-BYBNe8ia.js → buckets-CySBr1l9.js} +1 -1
  102. package/dist/client/assets/{build-improve-prompt-doc-D-hybPI_.js → build-improve-prompt-doc-CAHrWdK8.js} +1 -1
  103. package/dist/client/assets/{bulk-category-panel-C-ReQn-t.js → bulk-category-panel-C7_VZQYs.js} +1 -1
  104. package/dist/client/assets/{calendar-B2gUskOO.js → calendar-D2NSI-Uo.js} +1 -1
  105. package/dist/client/assets/{capability-load-error-C0GnGW7-.js → capability-load-error-BUVFJ7FB.js} +1 -1
  106. package/dist/client/assets/{cards-CiAl_X__.js → cards-DvlbYgkR.js} +1 -1
  107. package/dist/client/assets/category-editor-DmycqfAD.js +1 -0
  108. package/dist/client/assets/{chart-B8YOBq-X.js → chart-DFnySnLX.js} +1 -1
  109. package/dist/client/assets/{chat-context-UOURpBqM.js → chat-context-BuaJtKiH.js} +1 -1
  110. package/dist/client/assets/{chat-draft-B5MSxR-_.js → chat-draft-jLiQk38U.js} +1 -1
  111. package/dist/client/assets/{checkbox-CEEHjhZX.js → checkbox-DhhXjWWn.js} +1 -1
  112. package/dist/client/assets/{choose-editor-DKIfo22i.js → choose-editor-DaIvuBND.js} +1 -1
  113. package/dist/client/assets/{cli-auth-success-Bpj9B3NE.js → cli-auth-success-qpJPzv7N.js} +1 -1
  114. package/dist/client/assets/{client-icons-ByqemS7h.js → client-icons-FMEp9w57.js} +1 -1
  115. package/dist/client/assets/{collapsible-BkZa6hsW.js → collapsible-BzgQJ9lm.js} +1 -1
  116. package/dist/client/assets/{collection-detail-BgNcj1ol.js → collection-detail-DUP3LeO6.js} +1 -1
  117. package/dist/client/assets/{collection-display-button-qKZaN8ZT.js → collection-display-button-D8RArnc4.js} +1 -1
  118. package/dist/client/assets/{collection-search-D8iv3eg2.js → collection-search-BTyqIFVo.js} +1 -1
  119. package/dist/client/assets/{collection-table-wrapper-aH-MdlHW.js → collection-table-wrapper-SNCTm6bL.js} +1 -1
  120. package/dist/client/assets/{collection-tabs-CVj5y6r4.js → collection-tabs-B2W6RR6x.js} +1 -1
  121. package/dist/client/assets/{command-B7C5C7Y5.js → command-Clfl-nd5.js} +1 -1
  122. package/dist/client/assets/{command-palette-store-CjxZ6IT4.js → command-palette-store-BbfrQfcx.js} +1 -1
  123. package/dist/client/assets/{commerce-onboarding-SbieDR3y.js → commerce-onboarding-CY49Pds0.js} +1 -1
  124. package/dist/client/assets/{companion-mcps-section-CLOb1jOm.js → companion-mcps-section-BdD0QBhg.js} +1 -1
  125. package/dist/client/assets/{connect-e-Zw7t6z.js → connect-CYMCRsXB.js} +1 -1
  126. package/dist/client/assets/{connect-layout-BqRPi9Iy.js → connect-layout-BiLm2_nf.js} +1 -1
  127. package/dist/client/assets/{connection-BqqlnV9S.js → connection-OBd7O6J-.js} +1 -1
  128. package/dist/client/assets/{connection-card-B7nNE-vi.js → connection-card-BHgG4WUC.js} +1 -1
  129. package/dist/client/assets/{connection-detail-CctjSUOt.js → connection-detail-CvIjBFuv.js} +1 -1
  130. package/dist/client/assets/{connection-form-helpers-CGZjLurm.js → connection-form-helpers-DBoRH_1_.js} +1 -1
  131. package/dist/client/assets/{connections-BGL4NLY3.js → connections-Dm8cSxb1.js} +1 -1
  132. package/dist/client/assets/{create-organization-dialog-Bhp8McTp.js → create-organization-dialog-CiG5KBv2.js} +1 -1
  133. package/dist/client/assets/{decofile-api-BN70hIQR.js → decofile-api-D0jjuK2s.js} +1 -1
  134. package/dist/client/assets/{decopilot-DcY6tZci.js → decopilot-BZgK_WKj.js} +1 -1
  135. package/dist/client/assets/{dialog-mUIvGRq9.js → dialog-T6SHF6tg.js} +1 -1
  136. package/dist/client/assets/{discover-BKUG1s4X.js → discover-DQrGBv1I.js} +1 -1
  137. package/dist/client/assets/{domain-settings-B10r9eIu.js → domain-settings-BZpnNB2z.js} +1 -1
  138. package/dist/client/assets/{download-app-dialog-DCvPoe1o.js → download-app-dialog-DgXSTIhm.js} +1 -1
  139. package/dist/client/assets/{drawer-Dx8RWA1y.js → drawer-CEwLHAjr.js} +1 -1
  140. package/dist/client/assets/{dropdown-menu-BREtR-L8.js → dropdown-menu-2R7EcIqz.js} +1 -1
  141. package/dist/client/assets/{editor-BOa0PPPC.js → editor-B-DDSBye.js} +1 -1
  142. package/dist/client/assets/{empty-state-D7Xnneh3.js → empty-state-B4vaZfVn.js} +1 -1
  143. package/dist/client/assets/{empty-state-DFwqUmKQ.js → empty-state-M-2HWd2b.js} +1 -1
  144. package/dist/client/assets/{extract-connection-data-BiMeraJX.js → extract-connection-data-C-i7_Byp.js} +1 -1
  145. package/dist/client/assets/{feature-gate-DMPPa5-x.js → feature-gate-BOpzUCGP.js} +1 -1
  146. package/dist/client/assets/{feature-paywall-DYwohGrL.js → feature-paywall-B6TDdJ96.js} +1 -1
  147. package/dist/client/assets/{file-explorer-CTzLtSY5.js → file-explorer-CQhq5b4s.js} +1 -1
  148. package/dist/client/assets/{file-preview-BFt64WsS.js → file-preview-B2vvETTL.js} +1 -1
  149. package/dist/client/assets/{file-share-button-BnNwXX5z.js → file-share-button-Zf8hU2Fg.js} +1 -1
  150. package/dist/client/assets/{file-type-icon-C1ZF3wAh.js → file-type-icon-CXd8pQq1.js} +1 -1
  151. package/dist/client/assets/{folder-icon-BOdYGMzM.js → folder-icon-2Jjh406i.js} +1 -1
  152. package/dist/client/assets/{form-DQ_IxFJc.js → form-DEQzyl-Z.js} +1 -1
  153. package/dist/client/assets/{gateway-client-TD7qk1zJ.js → gateway-client-DLNW7KMa.js} +1 -1
  154. package/dist/client/assets/{general-DHAVwBud.js → general-BWYX0eIc.js} +1 -1
  155. package/dist/client/assets/{github-icon-0MAxQvrZ.js → github-icon-CrJOrJCi.js} +1 -1
  156. package/dist/client/assets/{home-4CuixH7A.js → home-CokmjUfB.js} +1 -1
  157. package/dist/client/assets/{hooks-8z4xHskl.js → hooks-Cow3V6T6.js} +1 -1
  158. package/dist/client/assets/{hooks-_W3a7WUK.js → hooks-VIquBHyZ.js} +1 -1
  159. package/dist/client/assets/{index-GHrQksGb.js → index-B7kHFiyx.js} +1 -1
  160. package/dist/client/assets/{index-upEARtMg.js → index-BHUvdpQg.js} +1 -1
  161. package/dist/client/assets/{index-DWLxhElz.js → index-C7RTFckf.js} +1 -1
  162. package/dist/client/assets/{index-CGGT_6fr.js → index-CHMhjP76.js} +1 -1
  163. package/dist/client/assets/{index-CH2bkKoB.js → index-CJB5eESL.js} +1 -1
  164. package/dist/client/assets/{index-BOCVYrA7.js → index-CVKN3yqd.js} +1 -1
  165. package/dist/client/assets/{index-tJO3CeUw.js → index-CWvjApMn.js} +1 -1
  166. package/dist/client/assets/{index-BOl5mM-q.js → index-CZXQ4cPi.js} +1 -1
  167. package/dist/client/assets/{index-BzsHOaCZ.js → index-CtTWJzNy.js} +1 -1
  168. package/dist/client/assets/{index-BVY204en.js → index-D9F2hZ3H.js} +1 -1
  169. package/dist/client/assets/{index-DUTmqJR2.js → index-DTtAckpN.js} +1 -1
  170. package/dist/client/assets/{index-B4rsaStI.js → index-DgWiecJC.js} +1 -1
  171. package/dist/client/assets/{index-CFuvn2u8.js → index-DjqfD6aH.js} +1 -1
  172. package/dist/client/assets/{index-6zOcw-_z.js → index-Dsngyxdw.js} +1 -1
  173. package/dist/client/assets/{index-7tyXXYIG.js → index-LqGJKspm.js} +4 -4
  174. package/dist/client/assets/{index-redirect-CrNRrseY.js → index-redirect-cWZ6P9Fa.js} +1 -1
  175. package/dist/client/assets/{infiniteQueryObserver-Bd_Xe1TN.js → infiniteQueryObserver-D63coM0A.js} +1 -1
  176. package/dist/client/assets/{infra-billing-Bkdg0c4a.js → infra-billing-K0cnxhkq.js} +1 -1
  177. package/dist/client/assets/{input-B3Coacmv.js → input-BmnxcFX-.js} +1 -1
  178. package/dist/client/assets/{input-zuyzMVZz.js → input-CP1IqPwA.js} +1 -1
  179. package/dist/client/assets/{input-CdMnZiZ6.js → input-kaJnjge5.js} +1 -1
  180. package/dist/client/assets/{integration-icon-BQ1mVBw6.js → integration-icon-DWYnH6CS.js} +1 -1
  181. package/dist/client/assets/{label-CcvwjKY9.js → label-CycRXo8-.js} +1 -1
  182. package/dist/client/assets/{last-preview-page-DJUY91Ef.js → last-preview-page-CQ1xE-EE.js} +1 -1
  183. package/dist/client/assets/{layout-Bx-JxuJH.js → layout-UP0YxIJD.js} +1 -1
  184. package/dist/client/assets/{legacy-agents-deep-C_d7yysm.js → legacy-agents-deep-BJP4TvVX.js} +1 -1
  185. package/dist/client/assets/{legacy-main-redirect-hXwWhEx_.js → legacy-main-redirect-Dthqqfia.js} +1 -1
  186. package/dist/client/assets/{library-CmTD8FM5.js → library-BFRTDsFO.js} +1 -1
  187. package/dist/client/assets/{login-DZjafLYn.js → login-DnkqrrfW.js} +1 -1
  188. package/dist/client/assets/{markdown-D5lLIYiU.js → markdown-Dmz1YqdU.js} +1 -1
  189. package/dist/client/assets/{mcp-app-renderer-DMt9Mj45.js → mcp-app-renderer-msD9uif_.js} +1 -1
  190. package/dist/client/assets/{mcp-oauth-C2Ax-WHA.js → mcp-oauth-xX_w6J5G.js} +1 -1
  191. package/dist/client/assets/{members-CV2cvXXb.js → members-CJ3Mxxvl.js} +1 -1
  192. package/dist/client/assets/{message-templates-UcOvLxc0.js → message-templates-6cGt-pIL.js} +1 -1
  193. package/dist/client/assets/{mini-report-page-Dh9a9ind.js → mini-report-page-B4Ns89qY.js} +1 -1
  194. package/dist/client/assets/mock-board-DbDpPxx7.js +90 -0
  195. package/dist/client/assets/{monaco-editor-hMK6fFU_.js → monaco-editor-Bx15Pism.js} +1 -1
  196. package/dist/client/assets/{monitoring-stats-row-CVE13oo0.js → monitoring-stats-row-rYjMQ6mt.js} +1 -1
  197. package/dist/client/assets/{multi-select-tKtARyyq.js → multi-select-CYubUj6s.js} +1 -1
  198. package/dist/client/assets/{mustache-oMdVtXN4.js → mustache-D1E2hGFA.js} +1 -1
  199. package/dist/client/assets/{oauth-callback-DdIO8NT8.js → oauth-callback-Dw16VYyc.js} +1 -1
  200. package/dist/client/assets/{oauth-callback-ai-provider-TlGg4tOP.js → oauth-callback-ai-provider-fiDEFYgR.js} +1 -1
  201. package/dist/client/assets/{onboarding-Ub0zuBic.js → onboarding-CUFF9T7W.js} +1 -1
  202. package/dist/client/assets/{optimistic-project-sidebar-views-B-9sdXuu.js → optimistic-project-sidebar-views-D0-i9pGF.js} +1 -1
  203. package/dist/client/assets/{organization-choice-CzQIXa4P.js → organization-choice-K7nAtCuU.js} +1 -1
  204. package/dist/client/assets/{orgs-BRM3PteS.js → orgs-COtED4Mj.js} +1 -1
  205. package/dist/client/assets/{page-seo-form-r0j5X3EW.js → page-seo-form-CgDiqvps.js} +1 -1
  206. package/dist/client/assets/{pair-wB0pyGEY.js → pair-C9pBJLa3.js} +1 -1
  207. package/dist/client/assets/{plan-ladder-DcxOa_K9.js → plan-ladder-Fc9095b7.js} +1 -1
  208. package/dist/client/assets/{popover-B7n3n0Kr.js → popover-CqDWteKd.js} +1 -1
  209. package/dist/client/assets/post-calendar-Bf6TUCPx.js +1 -0
  210. package/dist/client/assets/post-editor-NhF6msAy.js +1 -0
  211. package/dist/client/assets/{preview-content-DXYNRyjB.js → preview-content-DpyA1UES.js} +1 -1
  212. package/dist/client/assets/{preview-dialog-CVBJYhZD.js → preview-dialog-D_2a7nng.js} +1 -1
  213. package/dist/client/assets/{primitives-B-BEySr2.js → primitives-xvmFW9M2.js} +1 -1
  214. package/dist/client/assets/{profile-CaMzH8op.js → profile-CYbA5Ac5.js} +1 -1
  215. package/dist/client/assets/project-app-view-B0AcfaAH.js +1 -0
  216. package/dist/client/assets/{project-feed-w-8IReEj.js → project-feed-DT93rByU.js} +1 -1
  217. package/dist/client/assets/{project-icon-BpNWgNmk.js → project-icon-4fy6jz5e.js} +1 -1
  218. package/dist/client/assets/project-reports-s0B4HdWk.js +1 -0
  219. package/dist/client/assets/project-tasks-DEqsfT_3.js +1 -0
  220. package/dist/client/assets/{prompts-DKbaoq3Z.js → prompts-BV9VgLKz.js} +1 -1
  221. package/dist/client/assets/record-editor-ClCzYt3f.js +1 -0
  222. package/dist/client/assets/redirect-editor-CDrKg3yi.js +1 -0
  223. package/dist/client/assets/registry-DmrsKU6X.js +2 -0
  224. package/dist/client/assets/{registry-layout-sSQ_Re_s.js → registry-layout-B4ymxlVH.js} +1 -1
  225. package/dist/client/assets/reports-B4ocqqeE.js +1 -0
  226. package/dist/client/assets/{reports-Bnp1xUWK.js → reports-BpsBbPeI.js} +1 -1
  227. package/dist/client/assets/reports-tab-BwNrhZ99.js +2 -0
  228. package/dist/client/assets/{repositories-B-B3nysE.js → repositories-B3Yj-p-O.js} +1 -1
  229. package/dist/client/assets/{repository-import-picker-C3le5Vbk.js → repository-import-picker-DJZT2bf1.js} +1 -1
  230. package/dist/client/assets/{repository-picker-AEJ-LXcd.js → repository-picker-ZWXqLUOz.js} +1 -1
  231. package/dist/client/assets/{require-capability-Cu6XAdHn.js → require-capability-D2ozGXMI.js} +1 -1
  232. package/dist/client/assets/{required-auth-layout-OWmh0cRB.js → required-auth-layout-AdYtaYp9.js} +1 -1
  233. package/dist/client/assets/{reset-password-Ch_88gpr.js → reset-password-9ciFm04R.js} +1 -1
  234. package/dist/client/assets/{resizable-YVuw9dmI.js → resizable-DdiAoyYr.js} +1 -1
  235. package/dist/client/assets/{review-settings-CyJPDt4q.js → review-settings-DKxd_W2B.js} +1 -1
  236. package/dist/client/assets/{rich-text-link-control-eNehg68D.js → rich-text-link-control-G1eIsiad.js} +1 -1
  237. package/dist/client/assets/{roles-D3F7v_9T.js → roles-CovnIYj9.js} +1 -1
  238. package/dist/client/assets/{route-DFUmVQUb.js → route-BE6U5YUg.js} +1 -1
  239. package/dist/client/assets/{route-vlLsUt2b.js → route-BVgwrj11.js} +1 -1
  240. package/dist/client/assets/route-DCN2VT7W.js +1 -0
  241. package/dist/client/assets/{runnable-block-editor-x1eaErrG.js → runnable-block-editor-BTuxOpmZ.js} +3 -3
  242. package/dist/client/assets/sandbox-lifecycle-context-DRuSe7YD.js +2 -0
  243. package/dist/client/assets/sandbox-start-errors-BK_aDCyt.js +1 -0
  244. package/dist/client/assets/{schema-DQWsrq7E.js → schema-Dn-PxCJQ.js} +1 -1
  245. package/dist/client/assets/{scroll-area-B9yM5Ryy.js → scroll-area-NimWyBPv.js} +1 -1
  246. package/dist/client/assets/{search-input-BhE4PfQC.js → search-input-DtAj9jJO.js} +1 -1
  247. package/dist/client/assets/{secrets-Cj1rvkY-.js → secrets-CJGI8AA1.js} +1 -1
  248. package/dist/client/assets/{sections-editor-BoHaugHP.js → sections-editor-BReV4_k0.js} +1 -1
  249. package/dist/client/assets/{select-DuiQIVh5.js → select-DTLRO2jP.js} +1 -1
  250. package/dist/client/assets/{select-model-C0XP2o1V.js → select-model-CiYu746H.js} +1 -1
  251. package/dist/client/assets/seo-editor-CBVXWrym.js +1 -0
  252. package/dist/client/assets/{settings-tab-CzbVS5Mz.js → settings-tab-D5ZWBgDS.js} +1 -1
  253. package/dist/client/assets/{sheet-c3fs301B.js → sheet-DcmUstYv.js} +1 -1
  254. package/dist/client/assets/{shell-layout-BXCDxtNa.js → shell-layout-C3r9cZwX.js} +1 -1
  255. package/dist/client/assets/{sidebar-MvEpPYgm.js → sidebar-CYiEz-wg.js} +1 -1
  256. package/dist/client/assets/{skill-preview-COsUucnC.js → skill-preview-B2dbgHoR.js} +1 -1
  257. package/dist/client/assets/{skills-CIZpxnix.js → skills-DZXROjVr.js} +1 -1
  258. package/dist/client/assets/{sso-N53Ugc3r.js → sso-BdkCoZP1.js} +1 -1
  259. package/dist/client/assets/{store-Bc9shtTF.js → store-UwmR5LPt.js} +1 -1
  260. package/dist/client/assets/store-registry-DP7bjXP_.js +2 -0
  261. package/dist/client/assets/{switch-XzCZqEVH.js → switch-DVOjL7QB.js} +1 -1
  262. package/dist/client/assets/{synced-repos-BUMAgO9J.js → synced-repos-n_6ncb-M.js} +1 -1
  263. package/dist/client/assets/{table-DIbp_l9d.js → table-y7Fq_8fL.js} +1 -1
  264. package/dist/client/assets/{tabs-a46RXUx5.js → tabs--SQ9MSoj.js} +1 -1
  265. package/dist/client/assets/{task-board-DgeGTQVc.js → task-board-CT88RfwA.js} +1 -1
  266. package/dist/client/assets/{task-route-zG_8Kz8w.js → task-route-DKkxhcBt.js} +1 -1
  267. package/dist/client/assets/{task-status-Dh1cVJUD.js → task-status-mkrsQtsp.js} +1 -1
  268. package/dist/client/assets/{tasks-CJoFG2AV.js → tasks-BoMO2gaD.js} +1 -1
  269. package/dist/client/assets/tasks-CBhZiB75.js +1 -0
  270. package/dist/client/assets/{textarea-CMbCiP_x.js → textarea-Ciqg70xj.js} +1 -1
  271. package/dist/client/assets/{thread-intent-BdvWnyh1.js → thread-intent-DczG93w-.js} +1 -1
  272. package/dist/client/assets/{thread-route-BMAI4jvc.js → thread-route-Csb0bQYU.js} +1 -1
  273. package/dist/client/assets/{thread-route-BYUOxJfV.js → thread-route-D9RjIb92.js} +1 -1
  274. package/dist/client/assets/{thread-sheet-body-DWIa1Psy.js → thread-sheet-body-BfsG-HPC.js} +1 -1
  275. package/dist/client/assets/{toggle-group-BpHZ2Rek.js → toggle-group-Cl0Nt_2b.js} +1 -1
  276. package/dist/client/assets/{toolbar-icon-button-CnZH_a-Q.js → toolbar-icon-button-CQM6O44g.js} +1 -1
  277. package/dist/client/assets/{tooltip-NOT5TvpW.js → tooltip-DsIeYtk8.js} +1 -1
  278. package/dist/client/assets/{track-B_vC-44V.js → track-Bmhzoq6y.js} +1 -1
  279. package/dist/client/assets/{types-D4bb4LPp.js → types-Uxwa5Ooo.js} +1 -1
  280. package/dist/client/assets/{usage-stats-CGQU1Ksj.js → usage-stats-BsX_MBqv.js} +1 -1
  281. package/dist/client/assets/{use-ai-providers-DZtU4a7C.js → use-ai-providers-CKFqZtob.js} +1 -1
  282. package/dist/client/assets/{use-automations-gpw6hXj-.js → use-automations-GlFDlb_o.js} +1 -1
  283. package/dist/client/assets/{use-autosave-CEQfTSV0.js → use-autosave-DT3tUP8x.js} +1 -1
  284. package/dist/client/assets/{use-commerce-diagnostic-Bm8pHB0W.js → use-commerce-diagnostic-D4lhjg3y.js} +1 -1
  285. package/dist/client/assets/{use-connect-companion-Bi6FmjC1.js → use-connect-companion-6hnymdU2.js} +1 -1
  286. package/dist/client/assets/{use-connection-CAG410NC.js → use-connection-71baAT9J.js} +1 -1
  287. package/dist/client/assets/{use-copy-BCCEejfm.js → use-copy-AldvBwzV.js} +1 -1
  288. package/dist/client/assets/{use-create-virtual-mcp-BJOm-ngO.js → use-create-virtual-mcp-Bkk62U-K.js} +1 -1
  289. package/dist/client/assets/{use-date-fns-locale-Beb2WcsD.js → use-date-fns-locale-7fNXmWDe.js} +1 -1
  290. package/dist/client/assets/{use-debounced-autosave-DKqaLPMf.js → use-debounced-autosave-DWpI7QzW.js} +1 -1
  291. package/dist/client/assets/{use-debounced-value-DW--CGi4.js → use-debounced-value-vcd9fBbq.js} +1 -1
  292. package/dist/client/assets/{use-deco-credits-Cr47M5pI.js → use-deco-credits-BCMPDE0p.js} +1 -1
  293. package/dist/client/assets/{use-decopilot-events-DFWXqRQJ.js → use-decopilot-events-y3CYynsq.js} +1 -1
  294. package/dist/client/assets/{use-delete-connection-CAzQMfwD.js → use-delete-connection-CNw_Su9n.js} +1 -1
  295. package/dist/client/assets/{use-deployment-admin-Cxul1bjy.js → use-deployment-admin-BVvdOjlP.js} +1 -1
  296. package/dist/client/assets/{use-entitlements-B5OCpL90.js → use-entitlements-CXdqFCsK.js} +1 -1
  297. package/dist/client/assets/{use-fast-preview-draft-url-5cYDDJXC.js → use-fast-preview-draft-url-C0fMLzwd.js} +1 -1
  298. package/dist/client/assets/{use-file-configs-KqSjwJ5Q.js → use-file-configs-Bv0ksYAm.js} +1 -1
  299. package/dist/client/assets/{use-infinite-scroll-DTu796P3.js → use-infinite-scroll-CaIDAWPs.js} +1 -1
  300. package/dist/client/assets/{use-join-requests-B-V3jp4-.js → use-join-requests-DqMwbPoZ.js} +1 -1
  301. package/dist/client/assets/{use-main-panel-tabs-DT1ewQsE.js → use-main-panel-tabs-Ctx_tfIw.js} +1 -1
  302. package/dist/client/assets/{use-mcp-auth-status-Dd2NLoP2.js → use-mcp-auth-status-BsIDowWZ.js} +1 -1
  303. package/dist/client/assets/{use-mcp-client-FKhTA-pP.js → use-mcp-client-D8jBM4Gn.js} +1 -1
  304. package/dist/client/assets/{use-mcp-prompts-BxcBhrg0.js → use-mcp-prompts-BI-W9BIZ.js} +1 -1
  305. package/dist/client/assets/{use-mcp-tools-B-mP6VIl.js → use-mcp-tools-BghY6B9H.js} +1 -1
  306. package/dist/client/assets/{use-members-uHE9_Ihn.js → use-members-CpAtdP1_.js} +1 -1
  307. package/dist/client/assets/{use-mobile-7gcXtaOp.js → use-mobile-Dqp4Jkm6.js} +1 -1
  308. package/dist/client/assets/{use-navigate-to-agent-C1krlEI1.js → use-navigate-to-agent-DckkpAZt.js} +1 -1
  309. package/dist/client/assets/{use-open-billing-url-bvxUc97O.js → use-open-billing-url-Casm2GPL.js} +1 -1
  310. package/dist/client/assets/{use-org-auth-client-CG0U5nVg.js → use-org-auth-client-C0d9QdYl.js} +1 -1
  311. package/dist/client/assets/{use-org-fs-Cu_kl9ub.js → use-org-fs-Dlw3vnpa.js} +1 -1
  312. package/dist/client/assets/{use-org-notice-CTR6LVO_.js → use-org-notice-oR0FnSz0.js} +1 -1
  313. package/dist/client/assets/{use-org-sso-pS2f0S9B.js → use-org-sso-6FHDtS1R.js} +1 -1
  314. package/dist/client/assets/{use-organization-roles-Btc3lo7d.js → use-organization-roles-BRfUGpr9.js} +1 -1
  315. package/dist/client/assets/{use-organization-settings-COYwjTmH.js → use-organization-settings-CR_gD2xz.js} +1 -1
  316. package/dist/client/assets/{use-panel-navigate-BJ__p2tn.js → use-panel-navigate-CPCeDjnd.js} +1 -1
  317. package/dist/client/assets/{use-project-native-view-presence-D84bfTQ8.js → use-project-native-view-presence-CHK-UQhq.js} +1 -1
  318. package/dist/client/assets/{use-project-scope-TUxrelMI.js → use-project-scope-OfDo_ODT.js} +1 -1
  319. package/dist/client/assets/{use-registry-connections-ClkWohn9.js → use-registry-connections-CNnDInfj.js} +1 -1
  320. package/dist/client/assets/{use-releases-r-llw2bS.js → use-releases-37cW1ZIN.js} +1 -1
  321. package/dist/client/assets/{use-route-default-main-B5V1SFYB.js → use-route-default-main-TI35rK7_.js} +1 -1
  322. package/dist/client/assets/{use-secrets-g7CJAYOM.js → use-secrets-DUfhij8R.js} +1 -1
  323. package/dist/client/assets/{use-section-preview-base-Dm9Y5bzG.js → use-section-preview-base-CwyR6gN7.js} +1 -1
  324. package/dist/client/assets/{use-session-runtime-C-KbNAJE.js → use-session-runtime-4Wsurepj.js} +1 -1
  325. package/dist/client/assets/{use-tags-Bn18lYbj.js → use-tags-D48vlCoY.js} +1 -1
  326. package/dist/client/assets/{use-task-metadata-DkqwNP5B.js → use-task-metadata-DWEBrPNn.js} +1 -1
  327. package/dist/client/assets/{use-thread-outputs-DX41qrVY.js → use-thread-outputs-DCO0QMln.js} +1 -1
  328. package/dist/client/assets/{use-view-mode-CJqE7xKq.js → use-view-mode-C2bFNRDM.js} +1 -1
  329. package/dist/client/assets/{use-virtual-mcp-BSZ-bXcO.js → use-virtual-mcp-Dpcooz6x.js} +1 -1
  330. package/dist/client/assets/useInfiniteQuery-D7Bn-Wtf.js +1 -0
  331. package/dist/client/assets/{useQueries-C3nFpV34.js → useQueries-CgbxQuEr.js} +1 -1
  332. package/dist/client/assets/useSuspenseInfiniteQuery-xIiKKe3g.js +1 -0
  333. package/dist/client/assets/{users-u-T0fIr0.js → users-BKXLASD6.js} +1 -1
  334. package/dist/client/assets/{utils-C15cMn2u.js → utils-BA5pzGOE.js} +1 -1
  335. package/dist/client/assets/variant-calendar-CMDBbmY-.js +1 -0
  336. package/dist/client/assets/{variant-matcher-override-BVtx6ImJ.js → variant-matcher-override-Cg0JbaMY.js} +1 -1
  337. package/dist/client/assets/{view-mode-toggle-BKffsaTK.js → view-mode-toggle-D0YJ2E_v.js} +1 -1
  338. package/dist/client/assets/{virtual-mcp-BmaMueuo.js → virtual-mcp-eG7E1rwY.js} +1 -1
  339. package/dist/client/index.html +1 -1
  340. package/dist/server/cli.js +1 -1
  341. package/dist/server/server.js +1 -1
  342. package/package.json +1 -1
  343. package/dist/client/assets/agent-app-Cw2C4r27.js +0 -1
  344. package/dist/client/assets/agent-assets-CIbYJxPo.js +0 -1
  345. package/dist/client/assets/agent-deck-DnZT949c.js +0 -1
  346. package/dist/client/assets/agent-file-D7NiOFwe.js +0 -1
  347. package/dist/client/assets/agent-library-file-DN5LWTop.js +0 -1
  348. package/dist/client/assets/agent-settings-DUNPZ5GO.js +0 -1
  349. package/dist/client/assets/agent-site-editor-code-B9IxiAD3.js +0 -2
  350. package/dist/client/assets/agent-view-2DQLRNXO.js +0 -1
  351. package/dist/client/assets/api-keys-C9cD8YKu.js +0 -1
  352. package/dist/client/assets/app-editor-xd8pnTu8.js +0 -1
  353. package/dist/client/assets/category-editor-BdieZfbz.js +0 -1
  354. package/dist/client/assets/mock-board-CVRQmzIM.js +0 -90
  355. package/dist/client/assets/post-calendar-D8zer4mS.js +0 -1
  356. package/dist/client/assets/post-editor-DISYwLg2.js +0 -1
  357. package/dist/client/assets/project-app-view-DRs3Sa2_.js +0 -1
  358. package/dist/client/assets/project-reports-V2QSEwY2.js +0 -1
  359. package/dist/client/assets/project-tasks-BEiifV6g.js +0 -1
  360. package/dist/client/assets/record-editor-SIb3whuJ.js +0 -1
  361. package/dist/client/assets/redirect-editor-0tJchwSd.js +0 -1
  362. package/dist/client/assets/registry-mYP4BRsJ.js +0 -2
  363. package/dist/client/assets/reports-CstMZYaF.js +0 -1
  364. package/dist/client/assets/reports-tab-nZawxQlD.js +0 -2
  365. package/dist/client/assets/route-DWh-Ygcx.js +0 -1
  366. package/dist/client/assets/sandbox-lifecycle-context-PuxU5FPA.js +0 -2
  367. package/dist/client/assets/seo-editor-Cj7-3t9Z.js +0 -1
  368. package/dist/client/assets/store-registry-Bv0M4LRp.js +0 -2
  369. package/dist/client/assets/tasks-IzIm8pv2.js +0 -1
  370. package/dist/client/assets/useInfiniteQuery-B50zYHZp.js +0 -1
  371. package/dist/client/assets/useSuspenseInfiniteQuery-DEvCQfg8.js +0 -1
  372. package/dist/client/assets/variant-calendar-wkFCgj1H.js +0 -1
@@ -2076,7 +2076,7 @@ Usage: deco services <up|down|status>`),process.exit(1)}}var qe1=D(()=>{wg()});f
2076
2076
  `.execute($);if(Number(W.rows[0]?.cnt)===0){console.warn(`Failed to migrate ${G}/${K}, keeping in old table`);continue}}await mh`
2077
2077
  DELETE FROM kysely_migration WHERE name = ${Q}
2078
2078
  `.execute($)}}async function n4$($){await ZQ4($),await QQ4($);let Z=new i4$({db:$,provider:{getMigrations:()=>Promise.resolve(ia0)}}),{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 XQ4($){let{keepOpen:Z=!1,database:Q,skipBetterAuth:X=!1}=$??{},Y="skipped";if(!X&&!Q)Y=await Un0();let J=Q??l$(),G=async()=>{if(!Z&&!Q)await VD(J).catch((K)=>{console.warn("Warning: Error closing database:",K)})};try{let K=await n4$(J.db);return await G(),{betterAuth:Y,kysely:K}}catch(K){throw await G(),K}}async function YQ4(){let $=l$(),Z=new i4$({db:$.db,provider:{getMigrations:()=>Promise.resolve(ia0)}}),{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 o4$=D(()=>{d4$();Nn0();yQ()});async function iY0($){let Z={...process.env},Q=f50($,Z);console.log(I21(Q.settings.encryptionKey));let X=Q.settings.betterAuthSecret||(Q.settings.localMode?X1$(Q.settings.dataDir):""),{ensureServices:Y}=await Promise.resolve().then(() => (nX0(),pX0)),{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(() => (Nn0(),J1$));await W(J.databaseUrl);let{createDatabase:H}=await Promise.resolve().then(() => (yQ(),P0$)),{migrateToLatest:F}=await Promise.resolve().then(() => (o4$(),t4$)),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 Me1(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 pa0=D(()=>{wg();Y1$();Z$()});var e4$={};e(e4$,{updateService:()=>Sz,subscribeCliState:()=>oa0,setTuiConsoleIntercepted:()=>pY0,setServerUrl:()=>Qo,setMigrationsDone:()=>Zo,setDevMode:()=>GQ4,resetCliStateForTests:()=>JQ4,isTuiConsoleIntercepted:()=>nY0,getCliState:()=>ta0,addLogEntry:()=>xD});function r4$(){return[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}]}function a4$(){return{services:r4$(),migrationsStatus:"pending",serverUrl:null,logs:[]}}function JQ4(){MY=a4$()}function $o(){for(let $ of na0)$()}function ta0(){return MY}function oa0($){return na0.add($),()=>na0.delete($)}function Sz($){MY={...MY,services:MY.services.map((Z)=>Z.name===$.name?$:Z)},$o()}function Zo(){MY={...MY,migrationsStatus:"done"},$o()}function Qo($){MY={...MY,serverUrl:$},$o()}function xD($){let Z=[...MY.logs,$];MY={...MY,logs:Z.length>500?Z.slice(-500):Z},$o()}function GQ4(){MY={...MY,services:[...r4$(),{name:"API",status:"pending",port:0},{name:"Vite",status:"pending",port:0}]},$o()}function pY0($){s4$=$}function nY0(){return s4$}var MY,na0,s4$=!1;var Cz=D(()=>{MY=a4$();na0=new Set});import{createServer as $6$}from"net";function KQ4($){return new Promise((Z)=>{let Q=$6$();Q.once("error",()=>Z(!1)),Q.listen($,"0.0.0.0",()=>{Q.close(()=>Z(!0))})})}async function Xo($){if(await KQ4($))return $;let Z=await new Promise((Q,X)=>{let Y=$6$();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 ra0=()=>{};var sa0={};e(sa0,{startDevServer:()=>HQ4,pipeToLogStore:()=>aa0});import{join as WQ4}from"path";function aa0($){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;xD({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)xD({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:J})}})()}async function HQ4($){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 iY0({port:String(G),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let L of W)Sz({name:L.name,status:"ready",port:L.port});Zo();let F=WQ4(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)aa0(N.stdout),aa0(N.stderr);Qo(J),Sz({name:"Vite",status:"ready",port:Number(Y)}),Sz({name:"API",status:"ready",port:Number(K.port)});let O=async(L)=>{if(N.kill(L),await N.exited,H.length>0){let{stopServices:w}=await Promise.resolve().then(() => (nX0(),pX0));await w(K.dataDir)}};return process.on("SIGINT",()=>O("SIGINT")),process.on("SIGTERM",()=>O("SIGTERM")),{port:Number(Y),process:N}}var ea0=D(()=>{pa0();Cz();ra0()});var tY0;var $s0=D(()=>{tY0={name:"decocms",version:"4.367.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 UQ4,Text as Z6$}from"ink";import{jsx as NQ4,jsxs as Q6$}from"react/jsx-runtime";function X6$({version:$}){return Q6$(UQ4,{flexDirection:"column",marginTop:1,children:[LY0.map((Z,Q)=>NQ4(Z6$,{color:wY0[Q],children:Z},Q)),Q6$(Z6$,{dimColor:!0,children:[" v",$]})]})}var Y6$=D(()=>{ut()});import{Box as _z,Text as fD}from"ink";import{Spinner as BQ4}from"@inkjs/ui";import{jsx as iJ,jsxs as dh}from"react/jsx-runtime";function J6$({status:$}){if($==="pending")return iJ(BQ4,{label:""});return iJ(fD,{color:"green",children:"\u2713"})}function OQ4($){return`${$.name}: ${$.port||"...."}`}function G6$({services:$,migrationsStatus:Z,home:Q,serverUrl:X}){return dh(_z,{flexDirection:"column",paddingBottom:1,children:[iJ(X6$,{version:tY0.version}),iJ(_z,{marginBottom:1,children:iJ(fD,{dimColor:!0,children:"\u2500".repeat(80)})}),iJ(_z,{children:dh(fD,{dimColor:!0,children:["Home: ",Q]})}),dh(_z,{gap:2,children:[$.map((Y)=>dh(_z,{gap:1,children:[iJ(fD,{children:OQ4(Y)}),iJ(J6$,{status:Y.status})]},Y.name)),dh(_z,{gap:1,children:[iJ(fD,{children:"Migrations"}),iJ(J6$,{status:Z})]})]}),iJ(_z,{children:X?dh(fD,{children:["Open in browser: ",iJ(fD,{color:"cyan",children:X})]}):iJ(fD,{dimColor:!0,children:"Starting..."})})]})}var K6$=D(()=>{$s0();Y6$()});import{Box as DQ4,Text as Yo}from"ink";import{jsx as Zs0,jsxs as Qs0}from"react/jsx-runtime";function LQ4($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function W6$({logs:$}){return Zs0(DQ4,{flexDirection:"column",children:$.map((Z,Q)=>{if(Z.rawLine)return Zs0(Yo,{dimColor:!0,children:Z.rawLine},Q);let X=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return Qs0(Yo,{children:[Qs0(Yo,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),Zs0(Yo,{color:LQ4(Z.status),children:Z.status}),Qs0(Yo,{dimColor:!0,children:[" ",X.padStart(8)]})]},Q)})})}var H6$=()=>{};var Xs0={};e(Xs0,{App:()=>EQ4});import{Box as wQ4}from"ink";import{useSyncExternalStore as jQ4}from"react";import{jsx as F6$,jsxs as zQ4}from"react/jsx-runtime";function EQ4({home:$}){let Z=jQ4(oa0,ta0);return zQ4(wQ4,{flexDirection:"column",children:[F6$(G6$,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),F6$(W6$,{logs:Z.logs})]})}var Ys0=D(()=>{K6$();H6$();Cz()});var wG="thread-gate",kN="decopilot-hosted-harness",SN="decopilot-hosted-harness-sandboxed",jG="automations",bD="background-tools",vz="task-board-github-reads";var U6$="11";function N6$($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:U6$,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var B6$=()=>{};import PQ4 from"pg";async function D6$($,Z){let{databaseUrl:Q,lockTimeoutMs:X=AQ4}=$,Y=$.log??((W)=>console.log(W)),J=new PQ4.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",[O6$.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 O$(TQ4)}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)",[O6$.toString()])}catch{}await J.end().catch(()=>{})}}var O6$=8314027461559302n,AQ4=600000,TQ4=500;var L6$=D(()=>{i$()});function RQ4(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function Js0($,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 w6$(){let $=RQ4();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:Js0($,"--cpu-prof-dir")??process.cwd(),name:Js0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(Js0($,"--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 j6$(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let Q=Mz();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(()=>{}),oY0=setInterval(()=>void Z().catch(()=>{}),$),oY0.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(oY0)clearInterval(oY0)}}var oY0;var E6$=()=>{};import*as qQ4 from"bun:jsc";function z6$(){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{MQ4()}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=IQ4()?.traces??[]}catch{}if(G>$&&K.length>0){let W=new Map;for(let F of K){let U=F.frames.find((O)=>O.sourceURL&&!/Unknown Executable/.test(O.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 MQ4,IQ4;var P6$=D(()=>{({startSamplingProfiler:MQ4,samplingProfilerStackTraces:IQ4}=qQ4)});function A6$(){w6$();let $=[j6$(),B0$(),z6$()];return()=>{for(let Z of $)Z()}}var T6$=D(()=>{Xn0();E6$();P6$()});var xz=v((R6$)=>{Object.defineProperty(R6$,"__esModule",{value:!0});R6$.RepublishHeaders=R6$.DirectMsgHeaders=R6$.JsHeaders=R6$.AdvisoryKind=void 0;R6$.isOrderedPushConsumerOptions=VQ4;R6$.isPullConsumer=kQ4;R6$.isPushConsumer=SQ4;R6$.isBoundPushConsumerOptions=CQ4;function VQ4($){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 kQ4($){return $.isPullConsumer()}function SQ4($){return $.isPushConsumer()}function CQ4($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}R6$.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"};R6$.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"};R6$.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};R6$.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var pJ=v((M6$)=>{Object.defineProperty(M6$,"__esModule",{value:!0});M6$.TD=M6$.TE=M6$.Empty=void 0;M6$.encode=uQ4;M6$.decode=lQ4;M6$.Empty=new Uint8Array(0);M6$.TE=new TextEncoder;M6$.TD=new TextDecoder;function hQ4(...$){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 uQ4(...$){let Z=[];for(let Q=0;Q<$.length;Q++)Z.push(M6$.TE.encode($[Q]));if(Z.length===0)return M6$.Empty;if(Z.length===1)return Z[0];return hQ4(...Z)}function lQ4($){if(!$||$.length===0)return"";return M6$.TD.decode($)}});var nJ=v((k6$)=>{Object.defineProperty(k6$,"__esModule",{value:!0});k6$.errors=k6$.PermissionViolationError=k6$.NoRespondersError=k6$.TimeoutError=k6$.RequestError=k6$.ProtocolError=k6$.ConnectionError=k6$.DrainingConnectionError=k6$.ClosedConnectionError=k6$.AuthorizationError=k6$.UserAuthenticationExpiredError=k6$.InvalidOperationError=k6$.InvalidArgumentError=k6$.InvalidSubjectError=void 0;class Ks0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}k6$.InvalidSubjectError=Ks0;class rY0 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 rY0(`${$} ${Z}`,Q)}}k6$.InvalidArgumentError=rY0;class Ws0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}k6$.InvalidOperationError=Ws0;class aY0 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new aY0($);return null}}k6$.UserAuthenticationExpiredError=aY0;class sY0 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 sY0($);return null}}k6$.AuthorizationError=sY0;class Hs0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}k6$.ClosedConnectionError=Hs0;class Fs0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}k6$.DrainingConnectionError=Fs0;class Us0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}k6$.ConnectionError=Us0;class Ns0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}k6$.ProtocolError=Ns0;class Bs0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof eY0}}k6$.RequestError=Bs0;class Os0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}k6$.TimeoutError=Os0;class eY0 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}k6$.NoRespondersError=eY0;class $J0 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 $J0($,Q,X,Y)}}k6$.PermissionViolationError=$J0;k6$.errors={AuthorizationError:sY0,ClosedConnectionError:Hs0,ConnectionError:Us0,DrainingConnectionError:Fs0,InvalidArgumentError:rY0,InvalidOperationError:Ws0,InvalidSubjectError:Ks0,NoRespondersError:eY0,PermissionViolationError:$J0,ProtocolError:Ns0,RequestError:Bs0,TimeoutError:Os0,UserAuthenticationExpiredError:aY0}});var nK=v((x6$)=>{Object.defineProperty(x6$,"__esModule",{value:!0});x6$.SimpleMutex=x6$.Perf=void 0;x6$.extend=YX4;x6$.render=JX4;x6$.timeout=GX4;x6$.delay=KX4;x6$.deadline=WX4;x6$.deferred=Ls0;x6$.debugDeferred=HX4;x6$.shuffle=FX4;x6$.collect=UX4;x6$.jitter=v6$;x6$.backoff=NX4;x6$.nanos=BX4;x6$.millis=OX4;x6$.randomToken=wX4;var XX4=pJ(),Ds0=nJ();function YX4($,...Z){for(let Q=0;Q<Z.length;Q++){let X=Z[Q];Object.keys(X).forEach(function(Y){$[Y]=X[Y]})}return $}function JX4($){return XX4.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function GX4($,Z=!0){let Q=Z?new Ds0.TimeoutError:null,X,Y,J=new Promise((G,K)=>{X={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(Q===null)K(new Ds0.TimeoutError);else K(Q)},$)});return Object.assign(J,X)}function KX4($=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 WX4($,Z=1000){let Q=Ls0(),X=setTimeout(()=>{Q.reject(new Ds0.TimeoutError)},Z);try{return await Promise.race([$,Q])}finally{clearTimeout(X)}}function Ls0(){let $={},Z=new Promise((Q,X)=>{$={resolve:Q,reject:X}});return Object.assign(Z,$)}function HX4(){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 FX4($){for(let Z=$.length-1;Z>0;Z--){let Q=Math.floor(Math.random()*(Z+1));[$[Z],$[Q]]=[$[Q],$[Z]]}return $}async function UX4($){let Z=[];for await(let Q of $)Z.push(Q);return Z}class C6${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})}),$}}x6$.Perf=C6$;class _6${max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=Ls0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}x6$.SimpleMutex=_6$;function v6$($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function NX4($=[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 v6$(Q>Z?$[Z]:$[Q])}}}function BX4($){return $*1e6}function OX4($){return Math.floor($/1e6)}var DX4="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",CN=new Uint8Array(62);for(let $=0;$<62;$++)CN[$]=DX4.charCodeAt($);var LX4=218340105584896;function wX4(){let $=Math.floor(Math.random()*LX4),Z=$%62,Q=CN[Z];$=($-Z)/62,Z=$%62;let X=CN[Z];$=($-Z)/62,Z=$%62;let Y=CN[Z];$=($-Z)/62,Z=$%62;let J=CN[Z];$=($-Z)/62,Z=$%62;let G=CN[Z];$=($-Z)/62,Z=$%62;let K=CN[Z];$=($-Z)/62,Z=$%62;let W=CN[Z];$=($-Z)/62;let H=CN[$];return String.fromCharCode(Q,X,Y,J,G,K,W,H)}});var c6$=v((u6$)=>{Object.defineProperty(u6$,"__esModule",{value:!0});u6$.nuid=u6$.NuidImpl=void 0;var vX4="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",yD=62,QJ0=12,g6$=10,b6$=33,xX4=333,y6$=QJ0+g6$,js0=new Uint8Array(yD);for(let $=0;$<yD;$++)js0[$]=vX4.charCodeAt($);var ZJ0=4294967296,h6$=BigInt(yD)**BigInt(g6$),Jo=Number(h6$/(1n<<32n)),ws0=Number(h6$%(1n<<32n));function fX4($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function bX4($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else fX4($)}class Es0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(y6$),this.cbuf=new Uint8Array(QJ0),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(Jo+1)),this.seqLo=Math.floor(Math.random()*ZJ0);while($++<8&&this.seqHi===Jo&&this.seqLo>=ws0);if(this.seqHi===Jo&&this.seqLo>=ws0)this.seqLo=0;this.inc=Math.random()*(xX4-b6$)+b6$|0}setPre(){bX4(this.cbuf);for(let $=0;$<QJ0;$++)this.buf[$]=js0[this.cbuf[$]%yD]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let Q=y6$-1;Q>=QJ0;Q--){let X=Math.floor($/yD),J=($-X*yD)*ZJ0+Z,G=Math.floor(J/yD),K=J-G*yD;this.buf[Q]=js0[K],$=X,Z=G}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=ZJ0)this.seqLo-=ZJ0,this.seqHi+=1;if(this.seqHi>Jo||this.seqHi===Jo&&this.seqLo>=ws0)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()}}u6$.NuidImpl=Es0;u6$.nuid=new Es0});var p6$=v((d6$)=>{Object.defineProperty(d6$,"__esModule",{value:!0});d6$.nuid=d6$.Nuid=void 0;var m6$=c6$();d6$.Nuid=m6$.NuidImpl;d6$.nuid=m6$.nuid});var YJ0=v((XJ0)=>{Object.defineProperty(XJ0,"__esModule",{value:!0});XJ0.nuid=XJ0.Nuid=void 0;var n6$=p6$();Object.defineProperty(XJ0,"Nuid",{enumerable:!0,get:function(){return n6$.Nuid}});Object.defineProperty(XJ0,"nuid",{enumerable:!0,get:function(){return n6$.nuid}})});var gD=v((t6$)=>{Object.defineProperty(t6$,"__esModule",{value:!0});t6$.DEFAULT_HOST=t6$.DEFAULT_PORT=t6$.Match=void 0;t6$.syncIterator=cX4;t6$.createInbox=mX4;var uX4=YJ0(),lX4=nJ();t6$.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function cX4($){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 mX4($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw lX4.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${uX4.nuid.next()}`}t6$.DEFAULT_PORT=4222;t6$.DEFAULT_HOST="127.0.0.1"});var Go=v((s6$)=>{Object.defineProperty(s6$,"__esModule",{value:!0});s6$.DataBuffer=void 0;var r6$=pJ();class a6${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 r6$.TE.encode($)}static toAscii($){return r6$.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}}s6$.DataBuffer=a6$});var fz=v((Z5$)=>{Object.defineProperty(Z5$,"__esModule",{value:!0});Z5$.LF=Z5$.CR=Z5$.CRLF=Z5$.CR_LF_LEN=Z5$.CR_LF=void 0;Z5$.setTransportFactory=aX4;Z5$.defaultPort=sX4;Z5$.getUrlParseFn=eX4;Z5$.newTransport=$Y4;Z5$.getResolveFn=ZY4;Z5$.protoLen=$5$;Z5$.extractProtocolMessage=QY4;var tX4=pJ(),oX4=gD(),rX4=Go(),tJ;function aX4($){tJ=$}function sX4(){return tJ!==void 0&&tJ.defaultPort!==void 0?tJ.defaultPort:oX4.DEFAULT_PORT}function eX4(){return tJ!==void 0&&tJ.urlParseFn?tJ.urlParseFn:void 0}function $Y4(){if(!tJ||typeof tJ.factory!=="function")throw Error("transport fn is not set");return tJ.factory()}function ZY4(){return tJ!==void 0&&tJ.dnsResolveFn?tJ.dnsResolveFn:void 0}Z5$.CR_LF=`\r
2079
+ `);X=J.pop()??"";for(let G of J){let K=Bun.stripANSI(G).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;xD({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)xD({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:J})}})()}async function HQ4($){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 iY0({port:String(G),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let L of W)Sz({name:L.name,status:"ready",port:L.port});Zo();let F=WQ4(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)aa0(N.stdout),aa0(N.stderr);Qo(J),Sz({name:"Vite",status:"ready",port:Number(Y)}),Sz({name:"API",status:"ready",port:Number(K.port)});let O=async(L)=>{if(N.kill(L),await N.exited,H.length>0){let{stopServices:w}=await Promise.resolve().then(() => (nX0(),pX0));await w(K.dataDir)}};return process.on("SIGINT",()=>O("SIGINT")),process.on("SIGTERM",()=>O("SIGTERM")),{port:Number(Y),process:N}}var ea0=D(()=>{pa0();Cz();ra0()});var tY0;var $s0=D(()=>{tY0={name:"decocms",version:"4.367.3",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","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 UQ4,Text as Z6$}from"ink";import{jsx as NQ4,jsxs as Q6$}from"react/jsx-runtime";function X6$({version:$}){return Q6$(UQ4,{flexDirection:"column",marginTop:1,children:[LY0.map((Z,Q)=>NQ4(Z6$,{color:wY0[Q],children:Z},Q)),Q6$(Z6$,{dimColor:!0,children:[" v",$]})]})}var Y6$=D(()=>{ut()});import{Box as _z,Text as fD}from"ink";import{Spinner as BQ4}from"@inkjs/ui";import{jsx as iJ,jsxs as dh}from"react/jsx-runtime";function J6$({status:$}){if($==="pending")return iJ(BQ4,{label:""});return iJ(fD,{color:"green",children:"\u2713"})}function OQ4($){return`${$.name}: ${$.port||"...."}`}function G6$({services:$,migrationsStatus:Z,home:Q,serverUrl:X}){return dh(_z,{flexDirection:"column",paddingBottom:1,children:[iJ(X6$,{version:tY0.version}),iJ(_z,{marginBottom:1,children:iJ(fD,{dimColor:!0,children:"\u2500".repeat(80)})}),iJ(_z,{children:dh(fD,{dimColor:!0,children:["Home: ",Q]})}),dh(_z,{gap:2,children:[$.map((Y)=>dh(_z,{gap:1,children:[iJ(fD,{children:OQ4(Y)}),iJ(J6$,{status:Y.status})]},Y.name)),dh(_z,{gap:1,children:[iJ(fD,{children:"Migrations"}),iJ(J6$,{status:Z})]})]}),iJ(_z,{children:X?dh(fD,{children:["Open in browser: ",iJ(fD,{color:"cyan",children:X})]}):iJ(fD,{dimColor:!0,children:"Starting..."})})]})}var K6$=D(()=>{$s0();Y6$()});import{Box as DQ4,Text as Yo}from"ink";import{jsx as Zs0,jsxs as Qs0}from"react/jsx-runtime";function LQ4($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function W6$({logs:$}){return Zs0(DQ4,{flexDirection:"column",children:$.map((Z,Q)=>{if(Z.rawLine)return Zs0(Yo,{dimColor:!0,children:Z.rawLine},Q);let X=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return Qs0(Yo,{children:[Qs0(Yo,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),Zs0(Yo,{color:LQ4(Z.status),children:Z.status}),Qs0(Yo,{dimColor:!0,children:[" ",X.padStart(8)]})]},Q)})})}var H6$=()=>{};var Xs0={};e(Xs0,{App:()=>EQ4});import{Box as wQ4}from"ink";import{useSyncExternalStore as jQ4}from"react";import{jsx as F6$,jsxs as zQ4}from"react/jsx-runtime";function EQ4({home:$}){let Z=jQ4(oa0,ta0);return zQ4(wQ4,{flexDirection:"column",children:[F6$(G6$,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),F6$(W6$,{logs:Z.logs})]})}var Ys0=D(()=>{K6$();H6$();Cz()});var wG="thread-gate",kN="decopilot-hosted-harness",SN="decopilot-hosted-harness-sandboxed",jG="automations",bD="background-tools",vz="task-board-github-reads";var U6$="11";function N6$($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:U6$,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var B6$=()=>{};import PQ4 from"pg";async function D6$($,Z){let{databaseUrl:Q,lockTimeoutMs:X=AQ4}=$,Y=$.log??((W)=>console.log(W)),J=new PQ4.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",[O6$.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 O$(TQ4)}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)",[O6$.toString()])}catch{}await J.end().catch(()=>{})}}var O6$=8314027461559302n,AQ4=600000,TQ4=500;var L6$=D(()=>{i$()});function RQ4(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function Js0($,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 w6$(){let $=RQ4();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:Js0($,"--cpu-prof-dir")??process.cwd(),name:Js0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(Js0($,"--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 j6$(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let Q=Mz();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(()=>{}),oY0=setInterval(()=>void Z().catch(()=>{}),$),oY0.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(oY0)clearInterval(oY0)}}var oY0;var E6$=()=>{};import*as qQ4 from"bun:jsc";function z6$(){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{MQ4()}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=IQ4()?.traces??[]}catch{}if(G>$&&K.length>0){let W=new Map;for(let F of K){let U=F.frames.find((O)=>O.sourceURL&&!/Unknown Executable/.test(O.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 MQ4,IQ4;var P6$=D(()=>{({startSamplingProfiler:MQ4,samplingProfilerStackTraces:IQ4}=qQ4)});function A6$(){w6$();let $=[j6$(),B0$(),z6$()];return()=>{for(let Z of $)Z()}}var T6$=D(()=>{Xn0();E6$();P6$()});var xz=v((R6$)=>{Object.defineProperty(R6$,"__esModule",{value:!0});R6$.RepublishHeaders=R6$.DirectMsgHeaders=R6$.JsHeaders=R6$.AdvisoryKind=void 0;R6$.isOrderedPushConsumerOptions=VQ4;R6$.isPullConsumer=kQ4;R6$.isPushConsumer=SQ4;R6$.isBoundPushConsumerOptions=CQ4;function VQ4($){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 kQ4($){return $.isPullConsumer()}function SQ4($){return $.isPushConsumer()}function CQ4($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}R6$.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"};R6$.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"};R6$.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};R6$.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var pJ=v((M6$)=>{Object.defineProperty(M6$,"__esModule",{value:!0});M6$.TD=M6$.TE=M6$.Empty=void 0;M6$.encode=uQ4;M6$.decode=lQ4;M6$.Empty=new Uint8Array(0);M6$.TE=new TextEncoder;M6$.TD=new TextDecoder;function hQ4(...$){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 uQ4(...$){let Z=[];for(let Q=0;Q<$.length;Q++)Z.push(M6$.TE.encode($[Q]));if(Z.length===0)return M6$.Empty;if(Z.length===1)return Z[0];return hQ4(...Z)}function lQ4($){if(!$||$.length===0)return"";return M6$.TD.decode($)}});var nJ=v((k6$)=>{Object.defineProperty(k6$,"__esModule",{value:!0});k6$.errors=k6$.PermissionViolationError=k6$.NoRespondersError=k6$.TimeoutError=k6$.RequestError=k6$.ProtocolError=k6$.ConnectionError=k6$.DrainingConnectionError=k6$.ClosedConnectionError=k6$.AuthorizationError=k6$.UserAuthenticationExpiredError=k6$.InvalidOperationError=k6$.InvalidArgumentError=k6$.InvalidSubjectError=void 0;class Ks0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}k6$.InvalidSubjectError=Ks0;class rY0 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 rY0(`${$} ${Z}`,Q)}}k6$.InvalidArgumentError=rY0;class Ws0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}k6$.InvalidOperationError=Ws0;class aY0 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new aY0($);return null}}k6$.UserAuthenticationExpiredError=aY0;class sY0 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 sY0($);return null}}k6$.AuthorizationError=sY0;class Hs0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}k6$.ClosedConnectionError=Hs0;class Fs0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}k6$.DrainingConnectionError=Fs0;class Us0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}k6$.ConnectionError=Us0;class Ns0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}k6$.ProtocolError=Ns0;class Bs0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof eY0}}k6$.RequestError=Bs0;class Os0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}k6$.TimeoutError=Os0;class eY0 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}k6$.NoRespondersError=eY0;class $J0 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 $J0($,Q,X,Y)}}k6$.PermissionViolationError=$J0;k6$.errors={AuthorizationError:sY0,ClosedConnectionError:Hs0,ConnectionError:Us0,DrainingConnectionError:Fs0,InvalidArgumentError:rY0,InvalidOperationError:Ws0,InvalidSubjectError:Ks0,NoRespondersError:eY0,PermissionViolationError:$J0,ProtocolError:Ns0,RequestError:Bs0,TimeoutError:Os0,UserAuthenticationExpiredError:aY0}});var nK=v((x6$)=>{Object.defineProperty(x6$,"__esModule",{value:!0});x6$.SimpleMutex=x6$.Perf=void 0;x6$.extend=YX4;x6$.render=JX4;x6$.timeout=GX4;x6$.delay=KX4;x6$.deadline=WX4;x6$.deferred=Ls0;x6$.debugDeferred=HX4;x6$.shuffle=FX4;x6$.collect=UX4;x6$.jitter=v6$;x6$.backoff=NX4;x6$.nanos=BX4;x6$.millis=OX4;x6$.randomToken=wX4;var XX4=pJ(),Ds0=nJ();function YX4($,...Z){for(let Q=0;Q<Z.length;Q++){let X=Z[Q];Object.keys(X).forEach(function(Y){$[Y]=X[Y]})}return $}function JX4($){return XX4.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function GX4($,Z=!0){let Q=Z?new Ds0.TimeoutError:null,X,Y,J=new Promise((G,K)=>{X={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(Q===null)K(new Ds0.TimeoutError);else K(Q)},$)});return Object.assign(J,X)}function KX4($=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 WX4($,Z=1000){let Q=Ls0(),X=setTimeout(()=>{Q.reject(new Ds0.TimeoutError)},Z);try{return await Promise.race([$,Q])}finally{clearTimeout(X)}}function Ls0(){let $={},Z=new Promise((Q,X)=>{$={resolve:Q,reject:X}});return Object.assign(Z,$)}function HX4(){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 FX4($){for(let Z=$.length-1;Z>0;Z--){let Q=Math.floor(Math.random()*(Z+1));[$[Z],$[Q]]=[$[Q],$[Z]]}return $}async function UX4($){let Z=[];for await(let Q of $)Z.push(Q);return Z}class C6${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})}),$}}x6$.Perf=C6$;class _6${max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=Ls0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}x6$.SimpleMutex=_6$;function v6$($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function NX4($=[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 v6$(Q>Z?$[Z]:$[Q])}}}function BX4($){return $*1e6}function OX4($){return Math.floor($/1e6)}var DX4="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",CN=new Uint8Array(62);for(let $=0;$<62;$++)CN[$]=DX4.charCodeAt($);var LX4=218340105584896;function wX4(){let $=Math.floor(Math.random()*LX4),Z=$%62,Q=CN[Z];$=($-Z)/62,Z=$%62;let X=CN[Z];$=($-Z)/62,Z=$%62;let Y=CN[Z];$=($-Z)/62,Z=$%62;let J=CN[Z];$=($-Z)/62,Z=$%62;let G=CN[Z];$=($-Z)/62,Z=$%62;let K=CN[Z];$=($-Z)/62,Z=$%62;let W=CN[Z];$=($-Z)/62;let H=CN[$];return String.fromCharCode(Q,X,Y,J,G,K,W,H)}});var c6$=v((u6$)=>{Object.defineProperty(u6$,"__esModule",{value:!0});u6$.nuid=u6$.NuidImpl=void 0;var vX4="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",yD=62,QJ0=12,g6$=10,b6$=33,xX4=333,y6$=QJ0+g6$,js0=new Uint8Array(yD);for(let $=0;$<yD;$++)js0[$]=vX4.charCodeAt($);var ZJ0=4294967296,h6$=BigInt(yD)**BigInt(g6$),Jo=Number(h6$/(1n<<32n)),ws0=Number(h6$%(1n<<32n));function fX4($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function bX4($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else fX4($)}class Es0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(y6$),this.cbuf=new Uint8Array(QJ0),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(Jo+1)),this.seqLo=Math.floor(Math.random()*ZJ0);while($++<8&&this.seqHi===Jo&&this.seqLo>=ws0);if(this.seqHi===Jo&&this.seqLo>=ws0)this.seqLo=0;this.inc=Math.random()*(xX4-b6$)+b6$|0}setPre(){bX4(this.cbuf);for(let $=0;$<QJ0;$++)this.buf[$]=js0[this.cbuf[$]%yD]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let Q=y6$-1;Q>=QJ0;Q--){let X=Math.floor($/yD),J=($-X*yD)*ZJ0+Z,G=Math.floor(J/yD),K=J-G*yD;this.buf[Q]=js0[K],$=X,Z=G}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=ZJ0)this.seqLo-=ZJ0,this.seqHi+=1;if(this.seqHi>Jo||this.seqHi===Jo&&this.seqLo>=ws0)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()}}u6$.NuidImpl=Es0;u6$.nuid=new Es0});var p6$=v((d6$)=>{Object.defineProperty(d6$,"__esModule",{value:!0});d6$.nuid=d6$.Nuid=void 0;var m6$=c6$();d6$.Nuid=m6$.NuidImpl;d6$.nuid=m6$.nuid});var YJ0=v((XJ0)=>{Object.defineProperty(XJ0,"__esModule",{value:!0});XJ0.nuid=XJ0.Nuid=void 0;var n6$=p6$();Object.defineProperty(XJ0,"Nuid",{enumerable:!0,get:function(){return n6$.Nuid}});Object.defineProperty(XJ0,"nuid",{enumerable:!0,get:function(){return n6$.nuid}})});var gD=v((t6$)=>{Object.defineProperty(t6$,"__esModule",{value:!0});t6$.DEFAULT_HOST=t6$.DEFAULT_PORT=t6$.Match=void 0;t6$.syncIterator=cX4;t6$.createInbox=mX4;var uX4=YJ0(),lX4=nJ();t6$.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function cX4($){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 mX4($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw lX4.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${uX4.nuid.next()}`}t6$.DEFAULT_PORT=4222;t6$.DEFAULT_HOST="127.0.0.1"});var Go=v((s6$)=>{Object.defineProperty(s6$,"__esModule",{value:!0});s6$.DataBuffer=void 0;var r6$=pJ();class a6${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 r6$.TE.encode($)}static toAscii($){return r6$.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}}s6$.DataBuffer=a6$});var fz=v((Z5$)=>{Object.defineProperty(Z5$,"__esModule",{value:!0});Z5$.LF=Z5$.CR=Z5$.CRLF=Z5$.CR_LF_LEN=Z5$.CR_LF=void 0;Z5$.setTransportFactory=aX4;Z5$.defaultPort=sX4;Z5$.getUrlParseFn=eX4;Z5$.newTransport=$Y4;Z5$.getResolveFn=ZY4;Z5$.protoLen=$5$;Z5$.extractProtocolMessage=QY4;var tX4=pJ(),oX4=gD(),rX4=Go(),tJ;function aX4($){tJ=$}function sX4(){return tJ!==void 0&&tJ.defaultPort!==void 0?tJ.defaultPort:oX4.DEFAULT_PORT}function eX4(){return tJ!==void 0&&tJ.urlParseFn?tJ.urlParseFn:void 0}function $Y4(){if(!tJ||typeof tJ.factory!=="function")throw Error("transport fn is not set");return tJ.factory()}function ZY4(){return tJ!==void 0&&tJ.dnsResolveFn?tJ.dnsResolveFn:void 0}Z5$.CR_LF=`\r
2080
2080
  `;Z5$.CR_LF_LEN=Z5$.CR_LF.length;Z5$.CRLF=rX4.DataBuffer.fromAscii(Z5$.CR_LF);Z5$.CR=new Uint8Array(Z5$.CRLF)[0];Z5$.LF=new Uint8Array(Z5$.CRLF)[1];function $5$($){for(let Z=0;Z<$.length;Z++){let Q=Z+1;if($.byteLength>Q&&$[Z]===Z5$.CR&&$[Q]===Z5$.LF)return Q+1}return 0}function QY4($){let Z=$5$($);if(Z>0){let X=new Uint8Array($).slice(0,Z);return tX4.TD.decode(X)}return""}});var Rs0=v((H5$)=>{Object.defineProperty(H5$,"__esModule",{value:!0});H5$.ipV4=G5$;H5$.isIP=BY4;H5$.parseIP=K5$;var Ko=4,bz=16,JJ0=48,J5$=57,X5$=65,UY4=70,Y5$=97,NY4=102,Ts0=16777215;function G5$($,Z,Q,X){let Y=new Uint8Array(bz);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 BY4($){return K5$($)!==void 0}function K5$($){for(let Z=0;Z<$.length;Z++)switch($[Z]){case".":return W5$($);case":":return OY4($)}return}function W5$($){let Z=new Uint8Array(Ko);for(let Q=0;Q<Ko;Q++){if($.length===0)return;if(Q>0){if($[0]!==".")return;$=$.substring(1)}let{n:X,c:Y,ok:J}=DY4($);if(!J||X>255)return;$=$.substring(Y),Z[Q]=X}return G5$(Z[0],Z[1],Z[2],Z[3])}function OY4($){let Z=new Uint8Array(bz),Q=-1;if($.length>=2&&$[0]===":"&&$[1]===":"){if(Q=0,$=$.substring(2),$.length===0)return Z}let X=0;while(X<bz){let{n:Y,c:J,ok:G}=LY4($);if(!G||Y>65535)return;if(J<$.length&&$[J]==="."){if(Q<0&&X!=bz-Ko)return;if(X+Ko>bz)return;let K=W5$($);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+=Ko;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<bz){if(Q<0)return;let Y=bz-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 DY4($){let Z=0,Q=0;for(Z=0;Z<$.length&&JJ0<=$.charCodeAt(Z)&&$.charCodeAt(Z)<=J5$;Z++)if(Q=Q*10+($.charCodeAt(Z)-JJ0),Q>=Ts0)return{n:Ts0,c:Z,ok:!1};if(Z===0)return{n:0,c:0,ok:!1};return{n:Q,c:Z,ok:!0}}function LY4($){let Z=0,Q=0;for(Q=0;Q<$.length;Q++){if(JJ0<=$.charCodeAt(Q)&&$.charCodeAt(Q)<=J5$)Z*=16,Z+=$.charCodeAt(Q)-JJ0;else if(Y5$<=$.charCodeAt(Q)&&$.charCodeAt(Q)<=NY4)Z*=16,Z+=$.charCodeAt(Q)-Y5$+10;else if(X5$<=$.charCodeAt(Q)&&$.charCodeAt(Q)<=UY4)Z*=16,Z+=$.charCodeAt(Q)-X5$+10;else break;if(Z>=Ts0)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 Ss0=v((U5$)=>{Object.defineProperty(U5$,"__esModule",{value:!0});U5$.Servers=U5$.ServerImpl=void 0;U5$.isIPV4OrHostname=F5$;U5$.hostPort=ks0;var qs0=fz(),Ms0=nK(),Is0=Rs0(),zY4=gD(),PY4=nJ();function F5$($){if($.indexOf("[")!==-1||$.indexOf("::")!==-1)return!1;if($.indexOf(".")!==-1)return!0;if($.split(":").length<=2)return!0;return!1}function Vs0($){return!F5$($)}function AY4($){let Q=$.toUpperCase().indexOf("::FFFF:");if(Q!==-1&&$.indexOf(".")!==-1){let X=$.substring(Q+7);return X=X.replace("[",""),X.replace("]","")}return $}function ks0($){if($=$.trim(),$.match(/^(.*:\/\/)(.*)/m))$=$.replace(/^(.*:\/\/)(.*)/gm,"$2");if($=AY4($),Vs0($)&&$.indexOf("[")===-1)$=`[${$}]`;let Z=Vs0($)?$.match(/(]:)(\d+)/):$.match(/(:)(\d+)/),Q=Z&&Z.length===3&&Z[1]&&Z[2]?parseInt(Z[2]):zY4.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 ih{src;listen;hostname;port;didConnect;reconnects;lastConnect;gossiped;tlsName;resolves;constructor($,Z=!1){this.src=$,this.tlsName="";let Q=ks0($);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,Is0.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}://${Vs0(X)?"["+X+"]":X}`);J.port=`${this.port}`;let G=new ih(J.host,!1);G.tlsName=this.hostname,Z.push(G)}}if($.randomize)(0,Ms0.shuffle)(Z);return this.resolves=Z,Z}}U5$.ServerImpl=ih;class GJ0{firstSelect;servers;currentServer;tlsName;randomize;constructor($={}){this.firstSelect=!0,this.servers=[],this.tlsName="",this.randomize=$.randomize||!1}setServers($){if(!Array.isArray($)||$.length===0)throw PY4.InvalidArgumentError.format("servers","cannot be empty");let Z=(0,qs0.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}=ks0(Y),G=Q.get(J);if(G)G.gossiped=!1,X.push(G);else X.push(new ih(Y))}if(this.randomize)(0,Ms0.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,Is0.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,qs0.getUrlParseFn)();$=Q?Q($):$;let X=new ih($,Z);if((0,Is0.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 GJ0.freezeAll(this.servers)}snapshotForHandler(){let $=this.currentServer;if(!$)return this.snapshot();let Z=this.servers.indexOf($);if(Z<=0)return this.snapshot();return GJ0.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,qs0.getUrlParseFn)(),J=new Map;if($.connect_urls&&$.connect_urls.length>0)$.connect_urls.forEach((K)=>{K=Y?Y(K,Z):K;let W=new ih(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,Ms0.shuffle)(W),this.servers=K?[K,...W]:W}return{added:Q,deleted:X}}}U5$.Servers=GJ0});var KJ0=v((D5$)=>{Object.defineProperty(D5$,"__esModule",{value:!0});D5$.QueuedIteratorImpl=void 0;var Cs0=nK(),B5$=nJ();class O5${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,Cs0.deferred)(),this.yields=[],this.iterClosed=(0,Cs0.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 B5$.InvalidOperationError("iterator cannot be used when a callback is registered");if(this.yielding)throw new B5$.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,Cs0.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}}D5$.QueuedIteratorImpl=O5$});var _s0=v((E5$)=>{Object.defineProperty(E5$,"__esModule",{value:!0});E5$.MuxSubscription=void 0;var MY4=gD(),w5$=nJ();class j5${baseInbox;reqs;constructor(){this.reqs=new Map}size(){return this.reqs.size}init($){return this.baseInbox=`${(0,MY4.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 w5$.NoRespondersError(X.requestSubject):null;X.resolver($,Z)}}}}close(){let $=new w5$.RequestError("connection closed");this.reqs.forEach((Z)=>{Z.resolver($,{})})}}E5$.MuxSubscription=j5$});var vs0=v((A5$)=>{Object.defineProperty(A5$,"__esModule",{value:!0});A5$.Heartbeat=void 0;var IY4=nK();class P5${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,IY4.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})}}A5$.Heartbeat=P5$});var bs0=v((I5$)=>{Object.defineProperty(I5$,"__esModule",{value:!0});I5$.DenoBuffer=I5$.MAX_SIZE=I5$.AssertionError=void 0;I5$.assert=q5$;I5$.concat=M5$;I5$.append=kY4;I5$.readAll=SY4;I5$.writeAll=CY4;var VY4=pJ();class xs0 extends Error{constructor($){super($);this.name="AssertionError"}}I5$.AssertionError=xs0;function q5$($,Z="Assertion failed."){if(!$)throw new xs0(Z)}var R5$=32768;I5$.MAX_SIZE=4294967294;function WJ0($,Z,Q=0){let X=Z.byteLength-Q;if($.byteLength>X)$=$.subarray(0,X);return Z.set($,Q),$.byteLength}function M5$($,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 kY4($,Z){return M5$($,Uint8Array.of(Z))}class fs0{_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($){q5$($<=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=WJ0(this._buf.subarray(this._off),$);return this._off+=Z,Z}writeByte($){return this.write(Uint8Array.of($))}writeString($){return this.write(VY4.TE.encode($))}write($){let Z=this._grow($.byteLength);return WJ0($,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)WJ0(this._buf.subarray(this._off),this._buf);else if(X+$>I5$.MAX_SIZE)throw Error("The buffer cannot be grown beyond the maximum size.");else{let Y=new Uint8Array(Math.min(2*X+$,I5$.MAX_SIZE));WJ0(this._buf.subarray(this._off),Y),this._buf=Y}return this._off=0,this._reslice(Math.min(Z+$,I5$.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(R5$);while(!0){let X=this.capacity-this.length<R5$,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}}}I5$.DenoBuffer=fs0;function SY4($){let Z=new fs0;return Z.readFrom($),Z.bytes()}function CY4($,Z){let Q=0;while(Q<Z.length)Q+=$.write(Z.subarray(Q))}});var hs0=v((_5$)=>{Object.defineProperty(_5$,"__esModule",{value:!0});_5$.cc=_5$.State=_5$.Parser=_5$.Kind=void 0;_5$.describe=gY4;var ys0=bs0(),gs0=pJ();_5$.Kind={OK:0,ERR:1,MSG:2,INFO:3,PING:4,PONG:5};function gY4($){let Z,Q="";switch($.kind){case _5$.Kind.MSG:Z="MSG";break;case _5$.Kind.OK:Z="OK";break;case _5$.Kind.ERR:Z="ERR",Q=gs0.TD.decode($.data);break;case _5$.Kind.PING:Z="PING";break;case _5$.Kind.PONG:Z="PONG";break;case _5$.Kind.INFO:Z="INFO",Q=gs0.TD.decode($.data)}return`${Z}: ${Q}`}function k5$(){let $={};return $.sid=-1,$.hdr=-1,$.size=-1,$}var S5$=48,hY4=57,ph=67108864;class C5${dispatcher;state;as;drop;hdr;ma;argBuf;msgBuf;constructor($){this.dispatcher=$,this.state=_5$.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 _5$.State.OP_START:switch(Q){case _5$.cc.M:case _5$.cc.m:this.state=_5$.State.OP_M,this.hdr=-1,this.ma=k5$();break;case _5$.cc.H:case _5$.cc.h:this.state=_5$.State.OP_H,this.hdr=0,this.ma=k5$();break;case _5$.cc.P:case _5$.cc.p:this.state=_5$.State.OP_P;break;case _5$.cc.PLUS:this.state=_5$.State.OP_PLUS;break;case _5$.cc.MINUS:this.state=_5$.State.OP_MINUS;break;case _5$.cc.I:case _5$.cc.i:this.state=_5$.State.OP_I;break;default:throw this.fail($.subarray(Z))}break;case _5$.State.OP_H:switch(Q){case _5$.cc.M:case _5$.cc.m:this.state=_5$.State.OP_M;break;default:throw this.fail($.subarray(Z))}break;case _5$.State.OP_M:switch(Q){case _5$.cc.S:case _5$.cc.s:this.state=_5$.State.OP_MS;break;default:throw this.fail($.subarray(Z))}break;case _5$.State.OP_MS:switch(Q){case _5$.cc.G:case _5$.cc.g:this.state=_5$.State.OP_MSG;break;default:throw this.fail($.subarray(Z))}break;case _5$.State.OP_MSG:switch(Q){case _5$.cc.SPACE:case _5$.cc.TAB:this.state=_5$.State.OP_MSG_SPC;break;default:throw this.fail($.subarray(Z))}break;case _5$.State.OP_MSG_SPC:switch(Q){case _5$.cc.SPACE:case _5$.cc.TAB:continue;default:this.state=_5$.State.MSG_ARG,this.as=Z}break;case _5$.State.MSG_ARG:switch(Q){case _5$.cc.CR:this.drop=1;break;case _5$.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=_5$.State.MSG_PAYLOAD,Z=this.as+this.ma.size-1;break}default:if(this.argBuf)this.argBuf.writeByte(Q)}break;case _5$.State.MSG_PAYLOAD:if(this.msgBuf)if(this.msgBuf.length>=this.ma.size){let X=this.msgBuf.bytes({copy:!1});this.dispatcher.push({kind:_5$.Kind.MSG,msg:this.ma,data:X}),this.argBuf=void 0,this.msgBuf=void 0,this.state=_5$.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:_5$.Kind.MSG,msg:this.ma,data:$.subarray(this.as,Z)}),this.argBuf=void 0,this.msgBuf=void 0,this.state=_5$.State.MSG_END;break;case _5$.State.MSG_END:switch(Q){case _5$.cc.NL:this.drop=0,this.as=Z+1,this.state=_5$.State.OP_START;break;default:continue}break;case _5$.State.OP_PLUS:switch(Q){case _5$.cc.O:case _5$.cc.o:this.state=_5$.State.OP_PLUS_O;break;default:throw this.fail($.subarray(Z))}break;case _5$.State.OP_PLUS_O:switch(Q){case _5$.cc.K:case _5$.cc.k:this.state=_5$.State.OP_PLUS_OK;break;default:throw this.fail($.subarray(Z))}break;case _5$.State.OP_PLUS_OK:switch(Q){case _5$.cc.NL:this.dispatcher.push({kind:_5$.Kind.OK}),this.drop=0,this.state=_5$.State.OP_START;break}break;case _5$.State.OP_MINUS:switch(Q){case _5$.cc.E:case _5$.cc.e:this.state=_5$.State.OP_MINUS_E;break;default:throw this.fail($.subarray(Z))}break;case _5$.State.OP_MINUS_E:switch(Q){case _5$.cc.R:case _5$.cc.r:this.state=_5$.State.OP_MINUS_ER;break;default:throw this.fail($.subarray(Z))}break;case _5$.State.OP_MINUS_ER:switch(Q){case _5$.cc.R:case _5$.cc.r:this.state=_5$.State.OP_MINUS_ERR;break;default:throw this.fail($.subarray(Z))}break;case _5$.State.OP_MINUS_ERR:switch(Q){case _5$.cc.SPACE:case _5$.cc.TAB:this.state=_5$.State.OP_MINUS_ERR_SPC;break;default:throw this.fail($.subarray(Z))}break;case _5$.State.OP_MINUS_ERR_SPC:switch(Q){case _5$.cc.SPACE:case _5$.cc.TAB:continue;default:this.state=_5$.State.MINUS_ERR_ARG,this.as=Z}break;case _5$.State.MINUS_ERR_ARG:switch(Q){case _5$.cc.CR:this.drop=1;break;case _5$.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:_5$.Kind.ERR,data:X}),this.drop=0,this.as=Z+1,this.state=_5$.State.OP_START;break}default:if(this.argBuf)this.argBuf.write(Uint8Array.of(Q))}break;case _5$.State.OP_P:switch(Q){case _5$.cc.I:case _5$.cc.i:this.state=_5$.State.OP_PI;break;case _5$.cc.O:case _5$.cc.o:this.state=_5$.State.OP_PO;break;default:throw this.fail($.subarray(Z))}break;case _5$.State.OP_PO:switch(Q){case _5$.cc.N:case _5$.cc.n:this.state=_5$.State.OP_PON;break;default:throw this.fail($.subarray(Z))}break;case _5$.State.OP_PON:switch(Q){case _5$.cc.G:case _5$.cc.g:this.state=_5$.State.OP_PONG;break;default:throw this.fail($.subarray(Z))}break;case _5$.State.OP_PONG:switch(Q){case _5$.cc.NL:this.dispatcher.push({kind:_5$.Kind.PONG}),this.drop=0,this.state=_5$.State.OP_START;break}break;case _5$.State.OP_PI:switch(Q){case _5$.cc.N:case _5$.cc.n:this.state=_5$.State.OP_PIN;break;default:throw this.fail($.subarray(Z))}break;case _5$.State.OP_PIN:switch(Q){case _5$.cc.G:case _5$.cc.g:this.state=_5$.State.OP_PING;break;default:throw this.fail($.subarray(Z))}break;case _5$.State.OP_PING:switch(Q){case _5$.cc.NL:this.dispatcher.push({kind:_5$.Kind.PING}),this.drop=0,this.state=_5$.State.OP_START;break}break;case _5$.State.OP_I:switch(Q){case _5$.cc.N:case _5$.cc.n:this.state=_5$.State.OP_IN;break;default:throw this.fail($.subarray(Z))}break;case _5$.State.OP_IN:switch(Q){case _5$.cc.F:case _5$.cc.f:this.state=_5$.State.OP_INF;break;default:throw this.fail($.subarray(Z))}break;case _5$.State.OP_INF:switch(Q){case _5$.cc.O:case _5$.cc.o:this.state=_5$.State.OP_INFO;break;default:throw this.fail($.subarray(Z))}break;case _5$.State.OP_INFO:switch(Q){case _5$.cc.SPACE:case _5$.cc.TAB:this.state=_5$.State.OP_INFO_SPC;break;default:throw this.fail($.subarray(Z))}break;case _5$.State.OP_INFO_SPC:switch(Q){case _5$.cc.SPACE:case _5$.cc.TAB:continue;default:this.state=_5$.State.INFO_ARG,this.as=Z}break;case _5$.State.INFO_ARG:switch(Q){case _5$.cc.CR:this.drop=1;break;case _5$.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:_5$.Kind.INFO,data:X}),this.drop=0,this.as=Z+1,this.state=_5$.State.OP_START;break}default:if(this.argBuf)this.argBuf.writeByte(Q)}break;default:throw this.fail($.subarray(Z))}}if((this.state===_5$.State.MSG_ARG||this.state===_5$.State.MINUS_ERR_ARG||this.state===_5$.State.INFO_ARG)&&!this.argBuf)this.argBuf=new ys0.DenoBuffer($.subarray(this.as,Z-this.drop));if(this.state===_5$.State.MSG_PAYLOAD&&!this.msgBuf){if(!this.argBuf)this.cloneMsgArg();this.msgBuf=new ys0.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 ys0.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 _5$.cc.SPACE:case _5$.cc.TAB:case _5$.cc.CR:case _5$.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],ph);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],ph);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}: ${gs0.TD.decode($)}`)}processHeaderMsgArgs($){let Z=[],Q=-1;for(let X=0;X<$.length;X++)switch($[X]){case _5$.cc.SPACE:case _5$.cc.TAB:case _5$.cc.CR:case _5$.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],ph),this.ma.size=this.protoParseInt(Z[3],ph);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],ph),this.ma.size=this.protoParseInt(Z[4],ph);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]<S5$||$[X]>hY4)return-1;Q=Q*10+($[X]-S5$)}return Z!==void 0&&Q>Z?-1:Q}}_5$.Parser=C5$;_5$.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};_5$.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 UJ0=v((x5$)=>{Object.defineProperty(x5$,"__esModule",{value:!0});x5$.MsgHdrsImpl=void 0;x5$.canonicalMIMEHeaderKey=ls0;x5$.headers=cY4;var v5$=pJ(),tK=gD(),FJ0=nJ();function ls0($){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 FJ0.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 cY4($=0,Z=""){if($===0&&Z!=="")throw FJ0.InvalidArgumentError.format("code","is required");else if($>0&&Z==="")throw FJ0.InvalidArgumentError.format("description","is required");return new nh($,Z)}var us0="NATS/1.0";class nh{_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 nh,X=v5$.TD.decode($).split(`\r
2081
2081
  `),Y=X[0];if(Y!==us0){let J=Y.replace(us0,"").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 $=us0;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
@@ -2990,7 +2990,7 @@ Respond with ONLY a JSON object of this shape, and nothing else:
2990
2990
  ${J.join(`
2991
2991
  `)}`:X}function aR6($){let Z=new Set;for(let Q of $)for(let Y of Q.split(`
2992
2992
  `)){let X=Y.trim();if(/^Co-authored-by:\s/i.test(X))Z.add(X)}return[...Z]}var Ss$=200,cR6=12,mR6,pR6=300,RI0=3;var zG1=O(()=>{gZ();u$();TI0();mR6={aheadBy:0,behindBy:0,files:[]}});function $q6($){if(!$||$.includes(".."))return!1;return eR6.test($)}function _s$($){let Z=typeof $.__resolveType==="string"?$.__resolveType:null;if(!Z||!$q6(Z))return null;let{__resolveType:Q,...Y}=$;return{resolveType:Z,payload:Y}}function vs$($,Z){return`${$.replace(/\/+$/,"")}/deco/invoke/${Z}`}var eR6;var fs$=O(()=>{eR6=/^[\w./@-]+$/});function S10($,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 xs$($,Z,Q,Y){let X=$.organization?.id;if(!X)throw new _w(yZ);let J=await jL($.storage,X,Y);if(J&&await DN($.storage,J)){let F=await cH($,J,{forceRefresh:!0}).catch((U)=>{throw new _w(U instanceof Error?U.message:yZ)});await bs$($,Z,Q,F);return}let G=Y.connectionId??J?.legacyConnectionId;if(!G)throw new _w("Push requires a connected git account. Connect the repository's provider for this project and restart the sandbox.");await ku({ctx:$,connectionId:G,organizationId:X,forceRefresh:!0,onLegacyMintError:(F)=>{let U=F instanceof Error?F.message:yZ;throw new _w(U)}});let{cloneUrl:W,gitUserName:K,gitUserEmail:H}=await dH(G,Y.owner,Y.name,$.db,$.vault).catch((F)=>{let{code:U,message:N}=K3$(F instanceof Error?F.message:String(F));throw U?new _w(N):F});await bs$($,Z,Q,{cloneUrl:W,gitUserName:K,gitUserEmail:H})}async function bs$($,Z,Q,Y){let{cloneUrl:X,gitUserName:J,gitUserEmail:G}=Y,W=jd($),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 cL(K,Zq6).catch(()=>K.statusText);throw Error(`Failed to refresh sandbox git credentials (${K.status}): ${H}`)}}var Zq6=10485760,_w;var PG1=O(()=>{HG();DI0();wa();xJ0();Bs();gZ();_w=class _w extends Error{constructor($){super($);this.name="GitPushAuthError"}}});function Yq6($){let Z=$.startsWith("thread:")?$.slice(7):$;if(!Z||Z.length>255||Z.includes("..")||Z.startsWith("/")||Z.endsWith("/")||Z.endsWith(".lock")||!Qq6.test(Z))throw Error(`Invalid branch name: ${$}`)}function vb($){return AbortSignal.any([$.req.raw.signal,AbortSignal.timeout(Jq6)])}async function Wq6($,Z){let Q=$.var.studioContext,Y=sH(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=ev(G?.metadata?.runtime);if(W)return W;let K=Ez0(Z.virtualMcpMetadata),H=K==="cms"?await $G1(Q,{claimName:Z.claimName}):"alive",F=K==="cms"&&H!=="alive"?"cms":"sandbox",U=!!G&&(H==="gone"||H==="alive"&&K==="cms");if(U&&G)ja(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 Kq6($){let Z=$.get("vmClaim");if(Z.runner)return Z.runner;try{return await hY($.var.studioContext)}catch{return null}}function fb($){let{runner:Z}=$.get("vmClaim");if(!Z)return $.json({error:"No sandbox runner configured"},503);return Z}async function Td($){let{virtualMcpMetadata:Z,connectionIds:Q}=$.get("vmClaim"),Y=$.var.studioContext,X=S10(Z,Q);if(!X)throw new f0({provider:"github",status:404,message:"Project has no GitHub repository"});let J=i(Y);return Mu(Y,J.id,X)}function AG1($,Z){let Q=Z instanceof Error?Z.message:String(Z),Y=lX$(Z);if(Y!==void 0)return $.json({error:Q},429,{...E5,...Y===null?{}:{"Retry-After":String(Math.ceil(Y/1000))}});if(Z instanceof j6)return $.json({error:Q},409,E5);let X=NG(Z);if(X!==null){let J=X===404?404:X===409||X===422?409:502;return $.json({error:Q},J,E5)}return $.json({error:Q},502,E5)}async function hs$($,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 us$($){try{let Z=await Td($),Q=await qI0(Z,$.get("vmClaim").branch);return $.json(Q,200,E5)}catch(Z){return AG1($,Z)}}function C10($,Z){let Y=(VI0.get($)??Promise.resolve()).catch(()=>{}).then(Z),X=Y.catch(()=>{});return VI0.set($,X),X.finally(()=>{if(VI0.get($)===X)VI0.delete($)}),Y}async function P7($,Z,Q){if(!Q?.runner&&$.get("vmClaim").runtime==="cms")return $.json({error:"sandbox not found: this session is sandbox-less"},404,E5);let Y=Q?.runner??fb($);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",...E5}})}}let D=await B.text(),L=Q?.redactRepoDir?Hq6(D):D,w=B.headers.get("content-type")??"application/json";return new Response(L,{status:B.status,headers:{"content-type":w,...E5}})};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 Hq6($){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 kI0($,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 Fq6($){return ls$.includes($)}var Qq6,ys$=524288,Xq6=65536,Jq6=1e4,gs$=2000,Gq6,VI0,E5,ls$,cs$=()=>{let $=new e0;$.use("/:virtualMcpId/:branch/*",Gq6),$.post("/:virtualMcpId/:branch/write",(Q)=>P7(Q,"/_sandbox/write",{forwardJsonBody:!0,signal:vb(Q)})),$.post("/:virtualMcpId/:branch/unlink",(Q)=>P7(Q,"/_sandbox/unlink",{forwardJsonBody:!0,signal:vb(Q)})),$.post("/:virtualMcpId/:branch/mkdir",(Q)=>P7(Q,"/_sandbox/mkdir",{forwardJsonBody:!0,signal:vb(Q)})),$.post("/:virtualMcpId/:branch/rename",(Q)=>P7(Q,"/_sandbox/rename",{forwardJsonBody:!0,signal:vb(Q)})),$.post("/:virtualMcpId/:branch/read",(Q)=>P7(Q,"/_sandbox/read",{forwardJsonBody:!0,signal:vb(Q)})),$.post("/:virtualMcpId/:branch/glob",(Q)=>P7(Q,"/_sandbox/glob",{forwardJsonBody:!0,signal:vb(Q)})),$.post("/:virtualMcpId/:branch/grep",(Q)=>P7(Q,"/_sandbox/grep",{forwardJsonBody:!0,signal:vb(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 P7(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 P7(Q,`/_sandbox/exec/${encodeURIComponent(Y)}/kill`)}),$.get("/:virtualMcpId/:branch/config",(Q)=>P7(Q,"/_sandbox/config",{method:"GET",map404to410:!0,redactRepoDir:!0})),$.put("/:virtualMcpId/:branch/config",(Q)=>P7(Q,"/_sandbox/config",{method:"PUT",forwardJsonBody:!0,map404to410:!0})),$.post("/:virtualMcpId/:branch/setup/:step",async(Q)=>{let Y=Q.req.param("step");if(!Y||!Fq6(Y))return Q.json({error:`step must be one of: ${ls$.join(", ")}`},400);let X=Q.get("vmClaim"),J=await $G1(Q.var.studioContext,{claimName:X.claimName})==="gone"?null:await Kq6(Q);if(!J)return Q.json({error:"sandbox not found: nothing is running at this ref"},404,E5);if(Y==="start"){let G=i(Q.var.studioContext),W=Wl(X.virtualMcpMetadata);try{await Oz0({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 P7(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 NB(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 lr$(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 us$(Q);return Z(Q)});let Z=(Q)=>P7(Q,"/_sandbox/git/status",{method:"GET",map404to410:!0,signal:AbortSignal.any([Q.req.raw.signal,AbortSignal.timeout(gs$)])});return $.post("/:virtualMcpId/:branch/git/status",(Q)=>{if(Q.get("vmClaim").runtime==="cms")return us$(Q);return P7(Q,"/_sandbox/git/status",{map404to410:!0,signal:AbortSignal.any([Q.req.raw.signal,AbortSignal.timeout(gs$)])})}),$.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 Td(Q),G=await II0(J,Y.branch,X.base);return Q.json(G,200,E5)}catch(X){return AG1(Q,X)}return P7(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,E5);let Y=fb(Q);if(Y instanceof Response)return Y;let{claimName:X,virtualMcpMetadata:J,connectionIds:G}=Q.get("vmClaim"),W=Q.var.studioContext;return C10(X,async()=>{try{await ZG1(W,Y,X);let K=S10(J,G);if(K)await xs$(W,Y,X,K)}catch(K){if(K instanceof _w)return Q.json({error:K.message},403,E5);let H=K instanceof Error?K.message:String(K);return Q.json({error:H},502,E5)}return P7(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 C10(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,E5);try{let G=await Td(Q);return await Cs$(G,Y.branch,J),Q.json({ok:!0},200,E5)}catch(G){let W=NG(G)===409||G instanceof j6?409:502,K=G instanceof Error?G.message:String(G);return Q.json({error:K},W,E5)}});return C10(Y.claimName,()=>P7(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 C10(Y.claimName,async()=>{try{let W=await Q.req.json().catch(()=>({})),K=await Td(Q),H=W.base??await K.getDefaultBranch();return await MI0(K,Y.branch,H),Q.json({ok:!0},200,E5)}catch(W){return AG1(Q,W)}});let X=fb(Q);if(X instanceof Response)return X;let{claimName:J}=Q.get("vmClaim"),G=Q.var.studioContext;return C10(J,async()=>{try{await ZG1(G,X,J)}catch(W){let K=W instanceof Error?W.message:String(W);return Q.json({error:K},502,E5)}return P7(Q,"/_sandbox/git/rebase",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/suggest-commit",x5({maxSize:ys$,onError:(Q)=>Q.json({error:"Payload too large"},413,E5)}),async(Q)=>{let Y=Q.get("vmClaim"),X=null;if(Y.runtime!=="cms"){let H=fb(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]=XG1(F)&&N?[F,U]:X?await Promise.all([kI0(X,J,"/_sandbox/git/status","GET",{userId:G,projectRef:W}),kI0(X,J,"/_sandbox/git/diff","GET",{userId:G,projectRef:W})]):await(async()=>{let w=await Td(Q);return Promise.all([qI0(w,Y.branch),II0(w,Y.branch)])})();await zW(K,i(K).id,"suggesting a commit message");let L=await pr$(K,B,D);return Q.json(L,200,E5)}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,E5);return Q.json({error:F},502,E5)}}),$.post("/:virtualMcpId/:branch/git/judge-review",x5({maxSize:ys$,onError:(Q)=>Q.json({error:"Payload too large"},413,E5)}),async(Q)=>{let Y=Q.get("vmClaim"),X=null;if(Y.runtime!=="cms"){let H=fb(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]=XG1(F)&&N?[F,U]:X?await Promise.all([kI0(X,J,"/_sandbox/git/status","GET",{userId:G,projectRef:W}),kI0(X,J,"/_sandbox/git/diff","GET",{userId:G,projectRef:W})]):await(async()=>{let w=await Td(Q);return Promise.all([qI0(w,Y.branch),II0(w,Y.branch)])})();await zW(K,i(K).id,"judging whether a change needs review");let L=await tr$(K,B,D,typeof H.language==="string"?H.language:void 0);return Q.json(L,200,E5)}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,E5);return Q.json({error:F},502,E5)}}),$.get("/:virtualMcpId/:branch/preview-fetch",async(Q)=>{let Y=fb(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 hs$(Q,`${W}${J}`)}),$.post("/:virtualMcpId/:branch/preview-invoke",x5({maxSize:Xq6,onError:(Q)=>Q.json({error:"Payload too large"},413)}),async(Q)=>{let Y=fb(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=_s$(G);if(!W)return Q.json({error:"Invalid or missing __resolveType"},400);let K=vs$(J,W.resolveType);return hs$(Q,K,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(W.payload),signal:AbortSignal.timeout(30000)})}),$};var ds$=O(()=>{y$();PK();wd();e31();Ba();gr$();wG();Kl();hr$();sW();WH();ur$();cr$();r11();Oa();WG1();or$();gZ();h6();zG1();fs$();PG1();Qq6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;Gq6=BI0(async($,Z)=>{let Q=$.var.studioContext;try{p(Q)}catch{return $.json({error:"Unauthorized"},401)}let Y=c0(Q);if(!Y)return $.json({error:"Unauthorized"},401);let X;try{X=i(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{Yq6(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=gs({orgId:X.id,virtualMcpId:J,branch:G}),H=await V01(Q,G),F=k01(H,Y),U=yr$({userId:F,projectRef:K}),N=W.metadata??null,B=await Wq6($,{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 hY(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()});VI0=new Map;E5={"Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache"};ls$=["clone","install","start"]});function ms$($,Z,Q){let Y=TG1.get($);if(!Y)Y={pending:null,running:!1},TG1.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)Nq6($,Y);return J}async function Nq6($,Z){Z.running=!0;try{while(Z.pending){let Q=Z.pending;Z.pending=null;try{let Y=await Bq6(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)TG1.delete($)}}async function Bq6($){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=wG1(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=jG1(K,N),L=`${JSON.stringify(B,null,2)}
2993
- `;await Is$(Z.repo,L);let w=D[0]??`${AI0(Y)}/${FG1(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 jG1(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 Ms$(Z,F.values(),X),{decofile:B,skipped:D}=q10(N);if(D.length>0)console.warn("decofile gen: dropped blocks that were not valid JSON",{repo:gW(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:Dq6($),expectedHead:G,changes:H});return N}catch(N){if(!(N instanceof j6)||J>=Uq6-1)throw N;await P$(R7(2000,200,J,2,0.5))}}}function Dq6($){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 Z01(Y,$.deps.coAuthor)}var Uq6=3,TG1;var is$=O(()=>{HE0();LI0();Q6();u$();gZ();TI0();TG1=new Map});import{createHmac as ps$,randomBytes as Oq6,timingSafeEqual as Lq6}from"crypto";function ns$(){if(SI0)return SI0;let $;try{let Z=O0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return SI0=$?Buffer.from($):Oq6(32),SI0}function RG1($){let Z=$.nowMs??Date.now(),Q={o:$.organizationId,m:$.virtualMcpId,b:$.branch,e:Math.floor((Z+wq6)/1000)},Y=Buffer.from(JSON.stringify(Q)).toString("base64url"),X=ps$("sha256",ns$()).update(Y).digest("base64url");return`${Y}.${X}`}function ts$($,Z){let Q=$.indexOf(".");if(Q<0)return!1;let Y=$.slice(0,Q),X=Buffer.from($.slice(Q+1)),J=Buffer.from(ps$("sha256",ns$()).update(Y).digest("base64url"));if(X.length!==J.length||!Lq6(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 wq6=21600000,SI0=null;var os$=O(()=>{Z$()});import{z as Rd}from"zod";function Eq6($){return $.length>0&&$.length<=255&&!$.includes("..")&&!$.endsWith("/")&&!$.endsWith(".lock")&&jq6.test($)}function $a$($){return $.req.header("x-forwarded-host")??new URL($.req.url).host}async function _10($){let Z=$.get("decofileScope");return Mu($.var.studioContext,Z.organizationId,Z.githubRepo)}function v10($,Z){let Q=Z instanceof Error?Z.message:String(Z);if(Z instanceof j6)return $.json({error:Q},409);let Y=NG(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 Za$(){let $=new e0;return $.use("/:virtualMcpId/:branch",es$),$.use("/:virtualMcpId/:branch/*",es$),$.get("/:virtualMcpId/:branch",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await _10(Z),X=await Vs$(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=RG1({organizationId:Q.organizationId,virtualMcpId:Q.virtualMcpId,branch:Q.branch});return Z.body(`{"version":${JSON.stringify(X.sha)},"token":${JSON.stringify(G)},"apiHost":${JSON.stringify($a$(Z))},"decofile":${X.decofile}}`,200,{...J,"content-type":"application/json"})}catch(Y){return v10(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 _10(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 v10(Z,X)}}),$.patch("/:virtualMcpId/:branch",Pq6,async(Z)=>{let Q=Z.get("decofileScope"),Y=Z.var.studioContext,X=Aq6.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{OI0(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(HG1(G))return Z.json({error:`Block key "${G}" collides with a framework resolver module and cannot be written`},400)}try{let G=await _10(Z),W=await ms$(`${Q.organizationId}/${Q.virtualMcpId}/${Q.branch}`,{client:G,branch:Q.branch,packagePath:Q.packagePath,coAuthor:jd(Y)},J),K=RG1({organizationId:Q.organizationId,virtualMcpId:Q.virtualMcpId,branch:Q.branch});return Z.json({version:W,token:K,apiHost:$a$(Z)})}catch(G){return v10(Z,G)}}),$.post("/:virtualMcpId/:branch/publish",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await _10(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(NG(W)!==409)throw W;await MI0(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(NG(G)===409)return Z.json({error:"merge-conflict"},409);if(NG(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 v10(Z,Y)}}),$.get("/:virtualMcpId/:branch/status",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await _10(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(NG(J)===404)return Z.json({baseBranch:X,aheadBy:0,behindBy:0,lastCommitAt:null});throw J}}catch(Y){return v10(Z,Y)}}),$}var jq6,rs$=500,ss$=1048576,as$=1024,zq6=8388608,Pq6,Aq6,es$;var Qa$=O(()=>{s11();LI0();y$();PK();e31();DI0();PG1();gZ();is$();os$();zG1();TI0();WH();jq6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;Pq6=x5({maxSize:zq6,onError:($)=>$.json({error:"Payload too large"},413)}),Aq6=Rd.object({set:Rd.record(Rd.string(),Rd.unknown()).optional(),delete:Rd.array(Rd.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)<=rs$,{message:`Patch cannot touch more than ${rs$} blocks`}).refine(($)=>Object.values($.set??{}).every((Z)=>JSON.stringify(Z).length<=ss$),{message:`Each block must be at most ${ss$} bytes`}).refine(($)=>[...Object.keys($.set??{}),...$.delete??[]].every((Z)=>Z.length<=as$),{message:`Each block key must be at most ${as$} characters`}),es$=BI0(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(!Eq6(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||!ts$(B,{organizationId:Y.id,virtualMcpId:X,branch:J}))return $.json({error:"Unauthorized"},401)}if(!await i3(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(!jz0(K))return $.json({error:"Project has no preview server configured"},404);let F=W.connections?.map((B)=>B.connection_id)??[],U=S10(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 Ya$=($)=>{let Z=new e0;if(Z.use("*",oc),Z.use("*",_p$),Z.route("/",Tq0()),Z.route("/",Dn$()),Z.route("/",$n$()),Z.route("/",Rr$()),Z.route("/",Or$()),Z.route("/",Pr$()),Z.route("/",wr$()),Z.route("/",FI0()),Z.route("/tools",Cr$()),Z.route("/",Vr$()),Z.route("/",no$({kvStorage:$.kvStorage})),Z.route("/",io$()),Z.route("/fs",Gr$({getConnection:$.getNatsConnection})),Z.route("/sandbox",cs$()),Z.route("/decofile",Za$()),Z.route("/",Nr$()),Z.route("/",Kr$()),Z.route("/deco-sites",qq0()),Z.route("/hosting",dp$()),Z.route("/monitor",rp$()),Z.route("/sso",jq0()),Z.route("/",UI0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",gp$()),$.mountDevAssets)Z.route("/dev-assets",kq0({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("/",cd$()),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",Fr$()),Z.route("/mcp",NA0()),Z.route("/mcp/self",WI0()),Z.route("/mcp",OA0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var Xa$=O(()=>{y$();vp$();Wq0();hp$();zJ1();mp$();sp$();Sq0();Pb();OJ1();qJ1();po$();to$();Wr$();Hr$();Fe();HJ1();LA0();m31();Ur$();Br$();Lr$();jr$();n31();qr$();kr$();t31();_r$();o31();BA0();ds$();Qa$()});function Tq6($){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 Rq6=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},Ja$=()=>{let $=new e0;return $.use("*",Rq6),$.get("/",async(Z)=>{let Q=O0(),Y=Q.decoSupabaseUrl,X=Q.decoSupabaseServiceKey;if(!Y||!X)return Z.json({apps:[]});try{let J=await $J(Y,X,"apps?select=name,title,description,logo,category,vendors(alias,url)");return Z.json({apps:Tq6(J)})}catch(J){return console.error("[deco-apps] GET error:",J),Z.json({error:"Failed to fetch apps"},502)}}),$};var Ga$=O(()=>{y$();Z$();FR0()});import{z as V1}from"zod";function yF($,Z="invalid_request_error",Q=null,Y=null){return{error:{message:$,type:Z,param:Q,code:Y}}}function fq6($){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 bq6($,Z,Q){try{return JSON.parse($)}catch{throw new Ha$(`Invalid JSON in tool call arguments for function '${Q}' (tool_call_id: ${Z}): ${$}`)}}function xq6($){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:bq6(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 yq6($){let Z=$.map((Q)=>{let Y=Q.function.parameters?RJ(Q.function.parameters):RJ({type:"object",properties:{}});return[Q.function.name,X$({description:Q.function.description,inputSchema:Y})]});return Object.fromEntries(Z)}function gq6($){if(!$)return;return{openai:{response_format:$}}}function hq6(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function Wa$($,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 Ka$($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var qq6=256,Iq6,Mq6,Vq6,kq6,Sq6,Cq6,_q6,vq6,Ha$,Fa$,Ua$;var Na$=O(()=>{v4();y$();wd();HK();Iq6=V1.object({type:V1.literal("function"),function:V1.object({name:V1.string(),description:V1.string().optional(),parameters:V1.record(V1.string(),V1.unknown()).optional()})}),Mq6=V1.object({id:V1.string(),type:V1.literal("function"),function:V1.object({name:V1.string(),arguments:V1.string()})}),Vq6=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(Mq6).optional()}),V1.object({role:V1.literal("tool"),content:V1.string(),tool_call_id:V1.string()})]),kq6=V1.object({type:V1.literal("text")}),Sq6=V1.object({type:V1.literal("json_object")}),Cq6=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()})}),_q6=V1.union([kq6,Sq6,Cq6]),vq6=V1.object({model:V1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:V1.array(Vq6),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(Iq6).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:_q6.optional(),user:V1.string().optional()});Ha$=class Ha$ extends Error{constructor($){super($);this.name="MessageConversionError"}};Fa$=new e0;Fa$.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),Q=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(yF("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(yF("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(yF("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Y=await $.req.json(),X=vq6.safeParse(Y);if(!X.success){let w=X.error.issues[0]??{message:"Invalid request",path:[]};return $.json(yF(`Invalid request: ${w.message}`,"invalid_request_error",w.path.length>0?w.path.join("."):null),400)}let J=X.data,G=fq6(J.model);if(!G)return $.json(yF("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)=>cj(E.providerId));if(!j)return $.json(yF("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(yF(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(K),U=xq6(J.messages),N=J.tools?yq6(J.tools):void 0,B=gq6(J.response_format),D=hq6(),L=Math.floor(Date.now()/1000);if(J.stream)return NB($,async(w)=>{let j=Wa$(F,U,N,J,B,$.req.raw.signal);try{let E=hL(j),z=!1,P=0,A="",q=async()=>{if(A.length===0)return;let k=A;A="",await w.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{content:k},finish_reason:null}]})})};for await(let k of E.fullStream){if(!z&&(k.type==="text-delta"||k.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(k.type==="text-delta"){if(A+=k.text,A.length>=qq6)await q()}else if(k.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:k.toolCallId,type:"function",function:{name:k.toolName,arguments:JSON.stringify(k.input)}}]},finish_reason:null}]})})}else if(k.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:Ka$(k.finishReason)}],usage:k.totalUsage?{prompt_tokens:k.totalUsage.inputTokens??0,completion_tokens:k.totalUsage.outputTokens??0,total_tokens:k.totalUsage.totalTokens??0}:void 0})})}await 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=Wa$(F,U,N,J,B,$.req.raw.signal),j=await yL(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:Ka$(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(yF("Request aborted","invalid_request_error"),400);if(X.name==="MessageConversionError")return $.json(yF(X.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",X.message,X.stack),$.json(yF(X.message,"server_error"),500)}});Ua$=Fa$});function uq6($){if(typeof $!=="object"||$===null)return!1;let Q=$.githubRepo?.url;return typeof Q==="string"&&Q.length>0}function Ba$(){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=c0(Q);if(!Y)return Z.json({error:"Authentication required"},401);let J=(Z.req.query("site")??"").trim().toLowerCase();if(!n7(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||i5(H))continue;let F=await Q.storage.virtualMcps.list(H.id);for(let U of F){if(TY$(U)!==J)continue;if(!uq6(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 Da$=O(()=>{y$();fH()});var La$;var Oa$=O(()=>{La$={name:"decocms",version:"4.367.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 dq6(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??cq6}}var wa$,cq6="https://ph.studio.decocms.com",ja$;var Ea$=O(()=>{y$();go();Tf();R5();Z$();oX1();Oa$();wa$=new e0;wa$.get("/",($)=>{let Z={version:La$.version,theme:E6$(),...xW().logo&&{logo:xW().logo},...gN()&&{internalUrl:Zg1()},...O0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!O0().firecrawlApiKey,hostingEnabled:!!O0().controlplaneRestUrl&&!!O0().controlplaneServiceToken,hostingControlPlaneGa:O0().hostingControlPlaneGa,monitorEnabled:!!O0().clickhouseAnalyticsUrl&&!!O0().clickhouseAnalyticsPassword,monitorGa:O0().monitorGa,plansEnabled:O0().plansEnabled,auth:vi$(),posthog:dq6(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:jB()}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});ja$=wa$});function qd($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function qG1($){return(qd($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((Q)=>Q.charAt(0).toUpperCase()+Q.slice(1)).join(" ")}function Pa$($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(qd($))}&sz=${Z}`}function za$($,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 Aa$($){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()?za$(`${X.trim().replace(/\s+/g," ")} \u2014 ${G}`,200):za$(`How does ${Q} really perform? ${G}`,200);return{title:J,description:W}}import{z as m0}from"zod";var bb,mq6,iq6,pq6,nq6,Ta$;var Ra$=O(()=>{bb=m0.enum(["good","bad","neutral"]),mq6=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:bb.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 $})),iq6=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(mq6)),pq6={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()},nq6=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:bb.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:bb.optional()}),m0.object({template:m0.literal("stats"),stats:m0.array(m0.object({value:m0.coerce.string(),label:m0.coerce.string(),tone:bb.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:bb.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(iq6).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:bb.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:bb.optional()})).min(1)})]),Ta$=m0.object({...pq6,template:nq6})});function CI0($){let Z=[],Q=[...$.sections].sort((X,J)=>X.position-J.position).map((X)=>{let J=Ta$.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 IG1=O(()=>{Ra$()});import{join as qa$}from"path";async function oq6($){try{let Z=await fetch(`${RH({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(tq6)});if(!Z.ok)return null;let Q=await Z.json(),{deck:Y}=CI0(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()||qG1($),score:Y.meta.scores?.cover??G?.score?.value,verdict:X?.annotation?.trim()||X?.headline?.trim()||void 0}}catch{return null}}function B3($){return $.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;")}function rq6($,Z){let Q=qd($),Y=Z?.brand?.trim()||qG1(Q),X=Pa$(Q,128),G=`${(O0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(Q)}`,{title:W,description:K}=Aa$({brand:Y,domain:Q,score:Z?.score,verdict:Z?.verdict}),H=`${G}/og.png`,F=`${Y} commerce report by decocms`;return[`<title>${B3(W)}</title>`,`<meta name="description" content="${B3(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="${B3(W)}" />`,`<meta property="og:description" content="${B3(K)}" />`,`<meta property="og:url" content="${B3(G)}" />`,`<meta property="og:image" content="${B3(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${B3(F)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${B3(W)}" />`,`<meta name="twitter:description" content="${B3(K)}" />`,`<meta name="twitter:image" content="${B3(H)}" />`,`<meta name="twitter:image:alt" content="${B3(F)}" />`,`<link rel="canonical" href="${B3(G)}" />`,`<link rel="icon" href="${B3(X)}" sizes="any" />`].join(`
2993
+ `;await Is$(Z.repo,L);let w=D[0]??`${AI0(Y)}/${FG1(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 jG1(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 Ms$(Z,F.values(),X),{decofile:B,skipped:D}=q10(N);if(D.length>0)console.warn("decofile gen: dropped blocks that were not valid JSON",{repo:gW(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:Dq6($),expectedHead:G,changes:H});return N}catch(N){if(!(N instanceof j6)||J>=Uq6-1)throw N;await P$(R7(2000,200,J,2,0.5))}}}function Dq6($){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 Z01(Y,$.deps.coAuthor)}var Uq6=3,TG1;var is$=O(()=>{HE0();LI0();Q6();u$();gZ();TI0();TG1=new Map});import{createHmac as ps$,randomBytes as Oq6,timingSafeEqual as Lq6}from"crypto";function ns$(){if(SI0)return SI0;let $;try{let Z=O0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return SI0=$?Buffer.from($):Oq6(32),SI0}function RG1($){let Z=$.nowMs??Date.now(),Q={o:$.organizationId,m:$.virtualMcpId,b:$.branch,e:Math.floor((Z+wq6)/1000)},Y=Buffer.from(JSON.stringify(Q)).toString("base64url"),X=ps$("sha256",ns$()).update(Y).digest("base64url");return`${Y}.${X}`}function ts$($,Z){let Q=$.indexOf(".");if(Q<0)return!1;let Y=$.slice(0,Q),X=Buffer.from($.slice(Q+1)),J=Buffer.from(ps$("sha256",ns$()).update(Y).digest("base64url"));if(X.length!==J.length||!Lq6(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 wq6=21600000,SI0=null;var os$=O(()=>{Z$()});import{z as Rd}from"zod";function Eq6($){return $.length>0&&$.length<=255&&!$.includes("..")&&!$.endsWith("/")&&!$.endsWith(".lock")&&jq6.test($)}function $a$($){return $.req.header("x-forwarded-host")??new URL($.req.url).host}async function _10($){let Z=$.get("decofileScope");return Mu($.var.studioContext,Z.organizationId,Z.githubRepo)}function v10($,Z){let Q=Z instanceof Error?Z.message:String(Z);if(Z instanceof j6)return $.json({error:Q},409);let Y=NG(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 Za$(){let $=new e0;return $.use("/:virtualMcpId/:branch",es$),$.use("/:virtualMcpId/:branch/*",es$),$.get("/:virtualMcpId/:branch",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await _10(Z),X=await Vs$(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=RG1({organizationId:Q.organizationId,virtualMcpId:Q.virtualMcpId,branch:Q.branch});return Z.body(`{"version":${JSON.stringify(X.sha)},"token":${JSON.stringify(G)},"apiHost":${JSON.stringify($a$(Z))},"decofile":${X.decofile}}`,200,{...J,"content-type":"application/json"})}catch(Y){return v10(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 _10(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 v10(Z,X)}}),$.patch("/:virtualMcpId/:branch",Pq6,async(Z)=>{let Q=Z.get("decofileScope"),Y=Z.var.studioContext,X=Aq6.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{OI0(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(HG1(G))return Z.json({error:`Block key "${G}" collides with a framework resolver module and cannot be written`},400)}try{let G=await _10(Z),W=await ms$(`${Q.organizationId}/${Q.virtualMcpId}/${Q.branch}`,{client:G,branch:Q.branch,packagePath:Q.packagePath,coAuthor:jd(Y)},J),K=RG1({organizationId:Q.organizationId,virtualMcpId:Q.virtualMcpId,branch:Q.branch});return Z.json({version:W,token:K,apiHost:$a$(Z)})}catch(G){return v10(Z,G)}}),$.post("/:virtualMcpId/:branch/publish",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await _10(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(NG(W)!==409)throw W;await MI0(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(NG(G)===409)return Z.json({error:"merge-conflict"},409);if(NG(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 v10(Z,Y)}}),$.get("/:virtualMcpId/:branch/status",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await _10(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(NG(J)===404)return Z.json({baseBranch:X,aheadBy:0,behindBy:0,lastCommitAt:null});throw J}}catch(Y){return v10(Z,Y)}}),$}var jq6,rs$=500,ss$=1048576,as$=1024,zq6=8388608,Pq6,Aq6,es$;var Qa$=O(()=>{s11();LI0();y$();PK();e31();DI0();PG1();gZ();is$();os$();zG1();TI0();WH();jq6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;Pq6=x5({maxSize:zq6,onError:($)=>$.json({error:"Payload too large"},413)}),Aq6=Rd.object({set:Rd.record(Rd.string(),Rd.unknown()).optional(),delete:Rd.array(Rd.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)<=rs$,{message:`Patch cannot touch more than ${rs$} blocks`}).refine(($)=>Object.values($.set??{}).every((Z)=>JSON.stringify(Z).length<=ss$),{message:`Each block must be at most ${ss$} bytes`}).refine(($)=>[...Object.keys($.set??{}),...$.delete??[]].every((Z)=>Z.length<=as$),{message:`Each block key must be at most ${as$} characters`}),es$=BI0(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(!Eq6(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||!ts$(B,{organizationId:Y.id,virtualMcpId:X,branch:J}))return $.json({error:"Unauthorized"},401)}if(!await i3(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(!jz0(K))return $.json({error:"Project has no preview server configured"},404);let F=W.connections?.map((B)=>B.connection_id)??[],U=S10(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 Ya$=($)=>{let Z=new e0;if(Z.use("*",oc),Z.use("*",_p$),Z.route("/",Tq0()),Z.route("/",Dn$()),Z.route("/",$n$()),Z.route("/",Rr$()),Z.route("/",Or$()),Z.route("/",Pr$()),Z.route("/",wr$()),Z.route("/",FI0()),Z.route("/tools",Cr$()),Z.route("/",Vr$()),Z.route("/",no$({kvStorage:$.kvStorage})),Z.route("/",io$()),Z.route("/fs",Gr$({getConnection:$.getNatsConnection})),Z.route("/sandbox",cs$()),Z.route("/decofile",Za$()),Z.route("/",Nr$()),Z.route("/",Kr$()),Z.route("/deco-sites",qq0()),Z.route("/hosting",dp$()),Z.route("/monitor",rp$()),Z.route("/sso",jq0()),Z.route("/",UI0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",gp$()),$.mountDevAssets)Z.route("/dev-assets",kq0({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("/",cd$()),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",Fr$()),Z.route("/mcp",NA0()),Z.route("/mcp/self",WI0()),Z.route("/mcp",OA0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var Xa$=O(()=>{y$();vp$();Wq0();hp$();zJ1();mp$();sp$();Sq0();Pb();OJ1();qJ1();po$();to$();Wr$();Hr$();Fe();HJ1();LA0();m31();Ur$();Br$();Lr$();jr$();n31();qr$();kr$();t31();_r$();o31();BA0();ds$();Qa$()});function Tq6($){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 Rq6=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},Ja$=()=>{let $=new e0;return $.use("*",Rq6),$.get("/",async(Z)=>{let Q=O0(),Y=Q.decoSupabaseUrl,X=Q.decoSupabaseServiceKey;if(!Y||!X)return Z.json({apps:[]});try{let J=await $J(Y,X,"apps?select=name,title,description,logo,category,vendors(alias,url)");return Z.json({apps:Tq6(J)})}catch(J){return console.error("[deco-apps] GET error:",J),Z.json({error:"Failed to fetch apps"},502)}}),$};var Ga$=O(()=>{y$();Z$();FR0()});import{z as V1}from"zod";function yF($,Z="invalid_request_error",Q=null,Y=null){return{error:{message:$,type:Z,param:Q,code:Y}}}function fq6($){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 bq6($,Z,Q){try{return JSON.parse($)}catch{throw new Ha$(`Invalid JSON in tool call arguments for function '${Q}' (tool_call_id: ${Z}): ${$}`)}}function xq6($){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:bq6(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 yq6($){let Z=$.map((Q)=>{let Y=Q.function.parameters?RJ(Q.function.parameters):RJ({type:"object",properties:{}});return[Q.function.name,X$({description:Q.function.description,inputSchema:Y})]});return Object.fromEntries(Z)}function gq6($){if(!$)return;return{openai:{response_format:$}}}function hq6(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function Wa$($,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 Ka$($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var qq6=256,Iq6,Mq6,Vq6,kq6,Sq6,Cq6,_q6,vq6,Ha$,Fa$,Ua$;var Na$=O(()=>{v4();y$();wd();HK();Iq6=V1.object({type:V1.literal("function"),function:V1.object({name:V1.string(),description:V1.string().optional(),parameters:V1.record(V1.string(),V1.unknown()).optional()})}),Mq6=V1.object({id:V1.string(),type:V1.literal("function"),function:V1.object({name:V1.string(),arguments:V1.string()})}),Vq6=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(Mq6).optional()}),V1.object({role:V1.literal("tool"),content:V1.string(),tool_call_id:V1.string()})]),kq6=V1.object({type:V1.literal("text")}),Sq6=V1.object({type:V1.literal("json_object")}),Cq6=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()})}),_q6=V1.union([kq6,Sq6,Cq6]),vq6=V1.object({model:V1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:V1.array(Vq6),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(Iq6).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:_q6.optional(),user:V1.string().optional()});Ha$=class Ha$ extends Error{constructor($){super($);this.name="MessageConversionError"}};Fa$=new e0;Fa$.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),Q=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(yF("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(yF("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(yF("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Y=await $.req.json(),X=vq6.safeParse(Y);if(!X.success){let w=X.error.issues[0]??{message:"Invalid request",path:[]};return $.json(yF(`Invalid request: ${w.message}`,"invalid_request_error",w.path.length>0?w.path.join("."):null),400)}let J=X.data,G=fq6(J.model);if(!G)return $.json(yF("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)=>cj(E.providerId));if(!j)return $.json(yF("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(yF(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(K),U=xq6(J.messages),N=J.tools?yq6(J.tools):void 0,B=gq6(J.response_format),D=hq6(),L=Math.floor(Date.now()/1000);if(J.stream)return NB($,async(w)=>{let j=Wa$(F,U,N,J,B,$.req.raw.signal);try{let E=hL(j),z=!1,P=0,A="",q=async()=>{if(A.length===0)return;let k=A;A="",await w.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{content:k},finish_reason:null}]})})};for await(let k of E.fullStream){if(!z&&(k.type==="text-delta"||k.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(k.type==="text-delta"){if(A+=k.text,A.length>=qq6)await q()}else if(k.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:k.toolCallId,type:"function",function:{name:k.toolName,arguments:JSON.stringify(k.input)}}]},finish_reason:null}]})})}else if(k.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:Ka$(k.finishReason)}],usage:k.totalUsage?{prompt_tokens:k.totalUsage.inputTokens??0,completion_tokens:k.totalUsage.outputTokens??0,total_tokens:k.totalUsage.totalTokens??0}:void 0})})}await 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=Wa$(F,U,N,J,B,$.req.raw.signal),j=await yL(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:Ka$(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(yF("Request aborted","invalid_request_error"),400);if(X.name==="MessageConversionError")return $.json(yF(X.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",X.message,X.stack),$.json(yF(X.message,"server_error"),500)}});Ua$=Fa$});function uq6($){if(typeof $!=="object"||$===null)return!1;let Q=$.githubRepo?.url;return typeof Q==="string"&&Q.length>0}function Ba$(){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=c0(Q);if(!Y)return Z.json({error:"Authentication required"},401);let J=(Z.req.query("site")??"").trim().toLowerCase();if(!n7(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||i5(H))continue;let F=await Q.storage.virtualMcps.list(H.id);for(let U of F){if(TY$(U)!==J)continue;if(!uq6(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 Da$=O(()=>{y$();fH()});var La$;var Oa$=O(()=>{La$={name:"decocms",version:"4.367.3",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","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 dq6(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??cq6}}var wa$,cq6="https://ph.studio.decocms.com",ja$;var Ea$=O(()=>{y$();go();Tf();R5();Z$();oX1();Oa$();wa$=new e0;wa$.get("/",($)=>{let Z={version:La$.version,theme:E6$(),...xW().logo&&{logo:xW().logo},...gN()&&{internalUrl:Zg1()},...O0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!O0().firecrawlApiKey,hostingEnabled:!!O0().controlplaneRestUrl&&!!O0().controlplaneServiceToken,hostingControlPlaneGa:O0().hostingControlPlaneGa,monitorEnabled:!!O0().clickhouseAnalyticsUrl&&!!O0().clickhouseAnalyticsPassword,monitorGa:O0().monitorGa,plansEnabled:O0().plansEnabled,auth:vi$(),posthog:dq6(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:jB()}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});ja$=wa$});function qd($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function qG1($){return(qd($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((Q)=>Q.charAt(0).toUpperCase()+Q.slice(1)).join(" ")}function Pa$($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(qd($))}&sz=${Z}`}function za$($,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 Aa$($){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()?za$(`${X.trim().replace(/\s+/g," ")} \u2014 ${G}`,200):za$(`How does ${Q} really perform? ${G}`,200);return{title:J,description:W}}import{z as m0}from"zod";var bb,mq6,iq6,pq6,nq6,Ta$;var Ra$=O(()=>{bb=m0.enum(["good","bad","neutral"]),mq6=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:bb.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 $})),iq6=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(mq6)),pq6={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()},nq6=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:bb.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:bb.optional()}),m0.object({template:m0.literal("stats"),stats:m0.array(m0.object({value:m0.coerce.string(),label:m0.coerce.string(),tone:bb.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:bb.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(iq6).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:bb.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:bb.optional()})).min(1)})]),Ta$=m0.object({...pq6,template:nq6})});function CI0($){let Z=[],Q=[...$.sections].sort((X,J)=>X.position-J.position).map((X)=>{let J=Ta$.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 IG1=O(()=>{Ra$()});import{join as qa$}from"path";async function oq6($){try{let Z=await fetch(`${RH({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(tq6)});if(!Z.ok)return null;let Q=await Z.json(),{deck:Y}=CI0(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()||qG1($),score:Y.meta.scores?.cover??G?.score?.value,verdict:X?.annotation?.trim()||X?.headline?.trim()||void 0}}catch{return null}}function B3($){return $.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;")}function rq6($,Z){let Q=qd($),Y=Z?.brand?.trim()||qG1(Q),X=Pa$(Q,128),G=`${(O0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(Q)}`,{title:W,description:K}=Aa$({brand:Y,domain:Q,score:Z?.score,verdict:Z?.verdict}),H=`${G}/og.png`,F=`${Y} commerce report by decocms`;return[`<title>${B3(W)}</title>`,`<meta name="description" content="${B3(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="${B3(W)}" />`,`<meta property="og:description" content="${B3(K)}" />`,`<meta property="og:url" content="${B3(G)}" />`,`<meta property="og:image" content="${B3(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${B3(F)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${B3(W)}" />`,`<meta name="twitter:description" content="${B3(K)}" />`,`<meta name="twitter:image" content="${B3(H)}" />`,`<meta name="twitter:image:alt" content="${B3(F)}" />`,`<link rel="canonical" href="${B3(G)}" />`,`<link rel="icon" href="${B3(X)}" sizes="any" />`].join(`
2994
2994
  `)}function sq6($,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}
2995
2995
  </head>`)}function Ia$($){let Z=new e0;return Z.get("/:domain/og.png",async(Q)=>{let Y=qd(Q.req.param("domain")),X=async()=>{let J=$?Bun.file(qa$($,"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(`${RH({})}/api/v2/public/diagnostics/${encodeURIComponent(Y)}/og.png`,{signal:AbortSignal.timeout(aq6)}),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=$?qa$($,"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 oq6(qd(Y)),K=rq6(Y,W);return Q.html(sq6(G,K),200,{"Cache-Control":"public, max-age=0, s-maxage=300"})}catch{return Q.html(G)}}),Z}var tq6=2500,aq6=1e4;var Ma$=O(()=>{y$();IG1();kz();Z$()});function f10($,Z){return fetch(`${RH({})}${$}`,Z)}async function eq6($,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 f10(`/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}=CI0(G);return{status:W.slides.length?"ready":"empty",deck:W,scanned_at:G.scanned_at,drops:K}}var $I6,DB,Va$=async($,Z)=>{if(!$.get("reportUser"))return $.json({error:"Authentication required"},401);await Z();return},ka$;var Sa$=O(()=>{y$();dJ();kz();IG1();$I6=new Set(["complete","errored","terminated","unknown"]),DB=new e0;DB.use("*",async($,Z)=>{let Q=await J8.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});DB.use("/link-token/*",Va$);DB.use("/suggest",Va$);DB.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 eq6(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)}});DB.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 f10("/api/v2/diagnostics/run",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${Vz({})}`},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)}});DB.get("/status",async($)=>{let Z=$.req.query("id");if(!Z)return $.json({error:"id is required"},400);try{let Q=await f10(`/api/v2/diagnostics/status?id=${encodeURIComponent(Z)}`,{headers:{Authorization:`Bearer ${Vz({})}`}});if(!Q.ok)return $.json({error:`status HTTP ${Q.status}`},502);let X=(await Q.json()).status??"unknown",J={done:$I6.has(X),status:X};return $.json(J)}catch{return $.json({error:"status failed"},502)}});DB.get("/link-token/:id",async($)=>{let Z=$.req.param("id");try{let Q=await f10(`/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)}});DB.get("/suggest",async($)=>{let Z=($.req.query("q")??"").trim().slice(0,64);if(Z.length<2)return $.json({suggestions:[]});try{let Q=await f10(`/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:[]})}});ka$=DB});var ZI6=1048576,MG1;var Ca$=O(()=>{y$();PK();Z$();fX1();MG1=new e0;MG1.post("/webhook",x5({maxSize:ZI6,onError:($)=>$.json({error:"payload too large"},413)}),async($)=>{let Z=O0().stripeWebhookSecret;if(!Z)return $.json({error:"stripe billing not configured"},503);let Q=await $.req.text();if(!im$(Q,$.req.header("stripe-signature"),Z))return $.json({error:"invalid signature"},400);let X=pm$(Q);if(!X)return $.json({error:"invalid payload"},400);let J=await nm$(X);return console.log("stripe webhook",{eventId:X.id,type:X.type,livemode:X.livemode,...J}),$.json({received:!0})})});import{timingSafeEqual as QI6}from"crypto";function JI6($,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 QI6(Buffer.from(X),Buffer.from(Y))}function GI6($,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 _a$($){let Z=new e0;return Z.post("/webhook",x5({maxSize:YI6,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(!JI6(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"&&!XI6.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 q01())?.markTenantPoolsDirty(F,H)??[];return Q.json({ok:!0,pools:N})}let W=GI6(J??"",G);if(W.length===0)return Q.json({ok:!0,ignored:"no-pr"});let K=await WI6($,W);return Q.json({ok:!0,refreshed:K})}),Z}async function WI6($,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 kP$(K,G.organizationId,G.taskBoardItemId)!==null)Q++}catch(W){console.error(`[github-webhook] pr card refresh failed for ${G.taskBoardItemId}:`,W)}}return Q}var YI6=5242880,XI6;var va$=O(()=>{y$();PK();sW();cZ();XI6=new Set(["check_suite","issue_comment"])});function fa$($){let Z=new QB($.db,new LY($.encryptionKey)),Q=new e0;return Q.get("/attachments/:token",async(Y)=>{let X=rE$(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 Q3(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 ba$=O(()=>{y$();JD();T$1();Wf()});function xa$($){let Z=new QB($.db,new LY($.encryptionKey));async function Q(X,J){let G=Rg$(J);if(!G)return;let W=await Z.getByWebhookSecret(X);if(!W?.enabled)return;let K=await HF($.db,W.organizationId);if(!K)return;if(await NR0(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",x5({maxSize:KI6}),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 KI6=1048576;var ya$=O(()=>{y$();PK();JD();BR0();zl()});import{DBOS as _I0,SchedulerMode as HI6}from"@dbos-inc/dbos-sdk";function ha$($){kG1=$}function ua$(){if(!kG1)throw Error("[jira-trigger] runtime not initialized \u2014 setJiraTriggerSweepRuntime() must run before the workflow fires");return kG1}function la$(){let $=ua$();return new QB($.db,new LY($.encryptionKey))}async function NI6($,Z){try{let Q=await la$().getById($);if(!Q?.enabled||!Q.boardId)return{integrationId:$,started:0};let Y=await HF(ua$().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 Q3(Q.siteUrl,Q.email,Q.apiToken),W=`(${await J.getBoardScopeJql(Q.boardId)}) AND status CHANGED AFTER "-${ga$}m"`,K=0,H;for(let F=0;F<UI6;F++){let U=await J.searchIssues({jql:W,nextPageToken:H,expandChangelog:!0});for(let N of U.issues){let B=qg$(N,N.changelog?.histories??[],Z);for(let D of B)if(await NR0(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 BI6($,Z){let Q=new Date($.getTime()-ga$*60000),Y=await _I0.runStep(()=>la$().listEnabledIds(),{name:"loadJiraIntegrations"});if(Y.length===0)return;let X=await Promise.all(Y.map((J)=>_I0.runStep(()=>NI6(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 ca$(){if(VG1)return;VG1=_I0.registerWorkflow(BI6,{name:"jiraTriggerSweepWorkflow"}),_I0.registerScheduled(VG1,{name:"jiraTriggerSweepWorkflow",crontab:FI6,mode:HI6.ExactlyOncePerIntervalWhenActive})}var FI6="7-59/10 * * * *",ga$=15,UI6=5,kG1=null,VG1=null;var da$=O(()=>{JD();zl();Wf();BR0()});function ma$($,Z){if(Z.startsWith("text/html")||Z.startsWith("image/svg"))$.set("Content-Security-Policy","sandbox allow-scripts allow-modals allow-same-origin")}var ia$,DI6,OI6,pa$;var na$=O(()=>{y$();bW();Rl();yz();ia$=new e0,DI6=["range","if-none-match","if-modified-since"],OI6=["content-type","content-length","content-range","accept-ranges","etag","last-modified"];ia$.get("/:org/files/*",async($)=>{let Z=$.get("studioContext"),Q=Z.organization?.id;if(!Z.auth?.user?.id){if(tc($))return $.redirect(`/login?next=${encodeURIComponent($.req.path)}`,302);throw new J$(401,{message:"Authentication required"})}if(!Q)throw new J$(401,{message:"Organization context required"});let Y=$.req.path.replace(/^.*\/files\//,"");if(!Y)throw new J$(400,{message:"Missing file key"});let X=await ia(Y,Z);if(!X)throw new J$(503,{message:"Object storage not configured"});if(X.startsWith("data:")&&IX()){let K=X.match(/^data:([^;]+);base64,(.+)$/s);if(!K)throw new J$(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 ma$(N,H),new Response(U,{status:200,headers:N})}let J=new Headers;for(let K of DI6){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 J$(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 J$(502,{message:"Upstream storage error"});let W=new Headers;for(let K of OI6){let H=G.headers.get(K);if(H)W.set(K,H)}return W.set("Cache-Control","private, max-age=86400"),ma$(W,W.get("content-type")??""),new Response(G.body,{status:G.status,headers:W})});pa$=ia$});var b10=_((xb)=>{var LI6=xb&&xb.__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]}),wI6=xb&&xb.__exportStar||function($,Z){for(var Q in $)if(Q!=="default"&&!Object.prototype.hasOwnProperty.call(Z,Q))LI6(Z,$,Q)};Object.defineProperty(xb,"__esModule",{value:!0});wI6(HJ(),xb)});var ra$=_((ta$)=>{Object.defineProperty(ta$,"__esModule",{value:!0});ta$.version=void 0;ta$.version="3.4.0"});var ea$=_((gF)=>{var jI6=gF&&gF.__importDefault||function($){return $&&$.__esModule?$:{default:$}};Object.defineProperty(gF,"__esModule",{value:!0});gF.NodeTransport=gF.VERSION=void 0;gF.nodeResolveHost=RI6;var U5=b10(),EI6=P0("net"),SG1=P0("tls"),zI6=P0("path"),sa$=P0("fs"),PI6=jI6(P0("dns")),AI6=ra$();gF.VERSION=AI6.version;var TI6="nats.js";class aa${socket;version;lang;yields=[];signal=(0,U5.deferred)();closedNotification=(0,U5.deferred)();options;connected=!1;tlsName="";done=!1;closeError;constructor(){this.lang=TI6,this.version=gF.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,U5.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 U5.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 U5.errors.ConnectionError("error connecting - node provided an undefined error");let{code:G}=J,W=G==="ECONNREFUSED"?new U5.errors.ConnectionError("connection refused",{cause:J}):J;throw this.socket?.destroy(),W}}dial($){let Z=(0,U5.deferred)(),Q,Y=(0,EI6.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,U5.deferred)(),Z;return this.socket.on("data",(Q)=>{this.yields.push(Q);let Y=U5.DataBuffer.concat(...this.yields),X=(0,U5.extractProtocolMessage)(Y);if(X!=="")try{let J=U5.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,U5.deferred)();try{if($=(0,zI6.resolve)($),!(0,sa$.existsSync)($))Z.reject(Error(`${$} doesn't exist`));(0,sa$.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,U5.extend)(Q,this.options.tls,X)}catch(X){return Promise.reject(new U5.errors.ConnectionError(X.message,{cause:X}))}let Y=(0,U5.deferred)();try{let X=(0,SG1.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 U5.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,U5.extend)(Z,this.options.tls,Y)}catch(Y){return Promise.reject(new U5.errors.ConnectionError(Y.message,{cause:Y}))}let Q=(0,U5.deferred)();try{let Y=(0,SG1.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 U5.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,U5.render)($[Z])}`);yield $[Z]}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,U5.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 SG1.TLSSocket}_send($){if(this.isClosed||this.socket===void 0)return Promise.resolve();if(this.options.debug)console.info(`< ${(0,U5.render)($)}`);let Z=(0,U5.deferred)();try{this.socket.write($,(Q)=>{if(Q){if(this.options.debug)console.error(`!!! ${(0,U5.render)($)}: ${Q}`);return Z.reject(Q)}return Z.resolve()})}catch(Q){if(this.options.debug)console.error(`!!! ${(0,U5.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}}gF.NodeTransport=aa$;function RI6($){let Z=(0,U5.deferred)();return PI6.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 Xe$=_((Ye$)=>{Object.defineProperty(Ye$,"__esModule",{value:!0});Ye$.connect=qI6;var $e$=ea$(),Ze$=b10(),Qe$=b10();function qI6($={}){if((0,Qe$.hasWsProtocol)($))return Promise.reject(Qe$.errors.InvalidArgumentError.format("servers","node client doesn't support websockets, use the 'wsconnect' function instead"));return(0,Ze$.setTransportFactory)({factory:()=>{return new $e$.NodeTransport},dnsResolveFn:$e$.nodeResolveHost}),Ze$.NatsConnectionImpl.connect($)}});var Je$=_((OB)=>{var MI6=OB&&OB.__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]}),VI6=OB&&OB.__exportStar||function($,Z){for(var Q in $)if(Q!=="default"&&!Object.prototype.hasOwnProperty.call(Z,Q))MI6(Z,$,Q)};Object.defineProperty(OB,"__esModule",{value:!0});OB.connect=void 0;var kI6=Xe$();Object.defineProperty(OB,"connect",{enumerable:!0,get:function(){return kI6.connect}});VI6(b10(),OB)});function He$($){let Z=$?.connectFn??vI6,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:_I6,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=R7(CI6,SI6,D-1,2,0.5);await P$(L)}}return{init(N,B){if(X)return;X=!0,J=!1;let D=B?.creds?Ge$.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=Ke$.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 vI6($){return We$.connect($)}var Ge$,We$,Ke$,SI6=100,CI6=3000,_I6=3000;var Fe$=O(()=>{u$();Ge$=V(rd(),1),We$=V(Je$(),1),Ke$=V(tF(),1)});function CG1($,Z){return`${$}.${Z}`}class _G1{cache;constructor($){this.cache=yc({ttlMs:$?.ttlMs??fI6,maxSize:$?.maxSize??bI6})}async get($,Z){return this.cache.get(CG1($,Z))??null}async set($,Z,Q){this.cache.set(CG1($,Z),Q)}async invalidate($,Z){this.cache.delete(CG1($,Z))}teardown(){this.cache.clear()}}var fI6=600000,bI6=5000;var Ue$=()=>{};function vI0($,Z){return`${$}:${Z}`}function vG1($){let Z=yc({ttlMs:$?.ttlMs??xI6,maxSize:$?.maxSize??yI6}),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(Ne$,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(vI0(K,H))},set(K,H,F){Z.set(vI0(K,H),F)},invalidate(K,H){Z.delete(vI0(K,H)),W(K,H)},start(){if(G)return;let K=Q?.();if(!K)return;G=K.subscribe(Ne$),(async()=>{for await(let H of G)try{let F=JSON.parse(J.decode(H.data));if(F.originId===Y)continue;Z.delete(vI0(F.organizationId,F.keyId))}catch{}})().catch(console.error)},teardown(){G?.unsubscribe(),G=null,Z.clear()}}}var Ne$="studio.ai-provider-keys.invalidate",xI6=30000,yI6=5000;var Be$=()=>{};class fG1{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 De$=($)=>{let Z;return()=>Z??=$()},bG1,xG1;var Oe$=O(()=>{J6();bG1=De$(()=>Q$.createHistogram("decopilot.stream.encode_ms",{description:"Per-chunk JSON.stringify+encode time for decopilot stream",unit:"ms"})),xG1=De$(()=>Q$.createCounter("decopilot.stream.published_chunks",{description:"Logical decopilot stream chunks published to JetStream",unit:"{chunks}"}))});function mI6($=je$){return{name:UF,subjects:[`${E41}.>`],storage:RK.StorageType.File,max_age:uI6,max_bytes:cI6,max_msgs_per_subject:dI6,discard:RK.DiscardPolicy.Old,retention:RK.RetentionPolicy.Limits,duplicate_window:lI6,num_replicas:$}}class Ee${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 Le$($){let Z=we$.headers();for(let[Q,Y]of Object.entries($))Z.set(Q,Y);return Z}function tI6($,Z){let Q=0;return{publish(Y,X,J,G){Y.publish(X,J,G?{headers:G}:void 0).catch((W)=>{if(Q++,hI6().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 oI6($,Z){return $.info?.cluster?Z:1}function rI6($){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 yG1{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=mI6(X);try{await Y.streams.info(UF),await Y.streams.update(UF,J)}catch(G){if(G instanceof Error&&G.message.includes("stream not found"))await Y.streams.add(J),await Y.streams.update(UF,J);else if(G instanceof Error&&/can ?not change.*storage|storage type/i.test(G.message))await Y.streams.delete(UF),await Y.streams.add(J);else throw G}},Q=await U8(async()=>{let Y=this.options.getJetStreamManager?await this.options.getJetStreamManager():await RK.jetstreamManager($),X=oI6($,je$);try{await Z(Y,X)}catch(J){if(X<=1||!rI6(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:fl});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=tI6(Z,Y),G=!1,W=()=>{if(G)return;G=!0;let H=UT$(Z);X.publish(H.subject,H.data).catch(()=>{})};Q.addEventListener("abort",W,{once:!0});let K=(H)=>{let F=performance.now(),U=P41(H,{runId:Z}),N=performance.now()-F;bG1().record(N),xG1().add(1,{"org.id":Y??"unknown"}),nI6?.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?Le$(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(),pI6)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 U8(()=>$.publish(Z.subject,Z.data,{...Z.headers?{headers:Le$(Z.headers)}:{},...Z.msgId?{msgID:Z.msgId}:{}}),{maxAttempts:6,minTimeout:250,maxTimeout:5000,jitter:0.5,isRetriable:fl}),!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=P41(Z,{runId:$,dedup:Q});bG1().record(performance.now()-X),xG1().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=FT$({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"?RK.DeliverPolicy.New:RK.DeliverPolicy.All,J=Q?.closeOnDone??!1,G=eL($),W;try{W=await U8(async()=>{return(await Y.consumers.get(UF,{filter_subjects:G,deliver_policy:X})).consume()},{maxAttempts:6,minTimeout:250,maxTimeout:5000,jitter:0.5,isRetriable:fl})}catch(L){return console.warn("[Decopilot] JetStream tail unavailable (non-critical):",L?.message??L),null}let F=pP0({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(cP0()).pipeThrough(dP0()).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(UF,{filter:eL($)}).catch(()=>{})}teardown(){this.js=null,this.jsm=null}}var RK,we$,gI6=($)=>{let Z;return()=>Z??=$()},hI6,uI6=86400000000000,lI6=120000000000,cI6=4294967296,je$,dI6=500000,iI6,pI6,nI6;var ze$=O(()=>{u$();A41();nP0();mP0();J6();Oe$();RK=V(tF(),1),we$=V(rd(),1),hI6=gI6(()=>Q$.createCounter("decopilot.stream.publish_errors",{description:"Number of JetStream publish failures for decopilot stream chunks",unit:"{errors}"})),je$=Math.max(1,Number(process.env.DECOPILOT_STREAM_REPLICAS??3)||3);iI6=process.env.STREAM_ENCODE_TRACE==="1",pI6=process.env.DECOPILOT_STREAM_TRACE==="1";nI6=iI6?new Ee$:null});function fI0($,Z,Q,Y){if(!Y)return!1;return $.emit(Z,dK(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 Pe$=O(()=>{T8()});class gG1{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 sI6($,Z){let Q=$.startsWith("thread:")?aW($):$;return[...new Set([Z,Q].filter((Y)=>!!Y))]}async function Ae$($,Z){let Q=Z.organizationId;try{let Y=await $.storage.taskBoard.linkedThreadIds(Z.id,Q);for(let X of Y){let J=await aH($,X);if(!J?.owner||!J?.name)continue;let G=await $.storage.threads.get(X),W=await pu($,{threadId:X,runBranch:G?.branch}),K=sI6(W,await jE0($,X)),H=await Hs($,Q,es0(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 AG(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 Te$=O(()=>{gZ();wG();cZ()});async function Re$($,Z,Q){let Y=Z.organizationId;if(!mX(Z))return!1;if(!Bf(Q))return!1;if(await $.storage.taskBoard.hasHumanRejectedDone(Z.id,Y))return!1;let X=await $.storage.organizationSettings.get(Y),J=gH(X?.flags),G=await $.storage.taskBoard.update(Z.id,Y,{status:J},Z.updatedBy);return await f6($,{taskBoardItemId:Z.id,action:"status_changed",actorId:null,data:{from:Z.status,to:J,reason:"pr_merged"}}),H8(Y,G),console.log(`[task-board-review-sweeper] ${Z.id}: linked PR already merged \u2014 moved to ${J}`),!0}var qe$=O(()=>{z4();tQ();jl();JK();K9()});function XM6($){return $ instanceof CY}function JM6($,Z){return Z-$>=QM6}class hG1{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??aI6;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??$M6,Q=this.options.itemIntervalMs??eI6,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()-w$1),k81);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()-YM6));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 I81(this.taskBoard,X,Y),await M81(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!==T$.progress||G.assigneeId!==t$)continue;let W=await this.contextFactory(X,G.assignedBy??G.createdBy);if(!W)continue;await GK(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),XM6(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()+ZM6)).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!==T$.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(()=>{}),H8(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(!JM6(GN(Q,Z.reviewCycleStartedAt),Date.now()))return;await WF($,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(!mX(Y))return!1;let X=Y.assigneeId===t$,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 Ae$(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 Pl(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 Re$(G,Y,W))return!0;if(await ZR$(G,Y))return!0;if(await this.resolveConflictFromSweep(G,Y,W))return!0;if(!X)return!1;if(!A81(W))return!1;return await JP0(G,Y,{previewMatchesHead:T81(W)}),!0}async resolveConflictFromSweep($,Z,Q){let Y=Q.find((X)=>X.state!=="closed"&&X.conflict===!0);if(!Y)return!1;return await tL($,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 aI6=60000,eI6=300000,$M6=50,ZM6=60000,QM6=900000,YM6=120000;var Ie$=O(()=>{z4();F81();Te$();KF();Qe();JK();qe$();K9();UG();S81();cZ();la();El()});import{readdir as GM6,rm as bI0}from"fs/promises";import{join as xI0}from"path";async function yI0($){let Z=new Date;Z.setUTCDate(Z.getUTCDate()-WM6),Z.setUTCHours(0,0,0,0);let Q=0;try{let Y=await yb($);for(let X of Y)if(/^\d{4}$/.test(X))Q+=await Me$($,X,Z);else if(!X.startsWith(".")){let J=xI0($,X),G=await yb(J);for(let K of G){if(!/^\d{4}$/.test(K))continue;Q+=await Me$(J,K,Z)}if((await yb(J)).length===0)await bI0(J,{recursive:!0,force:!0})}}catch(Y){console.warn("monitoring retention cleanup failed:",Y)}return Q}async function Me$($,Z,Q){let Y=0,X=xI0($,Z),J=await yb(X);for(let W of J){if(!/^\d{2}$/.test(W))continue;let K=xI0(X,W),H=await yb(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=xI0(K,U);await bI0(B,{recursive:!0,force:!0}),Y++}}if((await yb(K)).length===0)await bI0(K,{recursive:!0,force:!0})}if((await yb(X)).length===0)await bI0(X,{recursive:!0,force:!0});return Y}async function yb($){try{return(await GM6($)).filter((Q)=>!Q.startsWith("."))}catch{return[]}}var WM6=30;var uG1=()=>{};import{DBOS as lG1,SchedulerMode as KM6}from"@dbos-inc/dbos-sdk";async function FM6(){let $=[gG(),gb(),lF()],Z=0;for(let Q of $)try{Z+=await yI0(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 UM6($,Z){await lG1.runStep(()=>FM6(),{name:"monitoringRetention"})}function ke$(){if(Ve$)return;Ve$=!0;let $=lG1.registerWorkflow(UM6,{name:"monitoringRetentionWorkflow"});lG1.registerScheduled($,{name:"monitoringRetentionWorkflow",crontab:HM6,mode:KM6.ExactlyOncePerIntervalWhenActive})}var HM6="23 4 * * *",Ve$=!1;var Se$=O(()=>{j3();uG1()});function Ce$($){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 a7.create();X.auth.user={id:Q,role:Y.role},X.organization={id:Y.orgId,slug:Y.orgSlug,name:Y.orgName};let J=await cz($.db,Z,Y.role);return X.boundAuth=IX1({auth:X.authInstance,headers:new Headers,role:Y.role,permissions:J,userId:Q}),X.access=new mj(Q,void 0,X.boundAuth,Y.role,"self"),oL(X,{id:Y.orgId,slug:Y.orgSlug}),X}}var _e$=O(()=>{GW();vH()});function NM6(){return[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}]}function BM6(){return{services:NM6(),migrationsStatus:"pending",serverUrl:null,logs:[]}}function OM6(){for(let $ of DM6)$()}function ve$($){let Z=[...cG1.logs,$];cG1={...cG1,logs:Z.length>500?Z.slice(-500):Z},OM6()}function dG1(){return LM6}var cG1,DM6,LM6=!1;var mG1=O(()=>{cG1=BM6(),DM6=new Set});import{EventEmitter as wM6}from"events";var iG1;var fe$=O(()=>{mG1();iG1=new wM6;iG1.on("request",($)=>{ve$($)})});function be$(){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=Id(N.params.name),D=N.params.arguments||{},L=Object.keys(D).map((j)=>Id(j)),w=L.length>0?L.slice(0,3).join(",")+(L.length>3?"\u2026":""):"";J=`${z5.tool}${B}${z5.dim}(${w})${z5.reset}`}else if(N.method)J=`${z5.dim}${Id(N.method)}${z5.reset}`}}catch{}}let W=Id(X);if(X.startsWith("/mcp/conn_")){let F=X.split("/")[2]??"";W=`/mcp/${z5.mcp}${Id(F.slice(0,12))}\u2026${z5.reset}`}else if(X==="/mcp")W=`${z5.mcp}/mcp${z5.reset}`;else if(X==="/mcp/registry")W=`${z5.mcp}/mcp/registry${z5.reset}`;let K=EM6(Y),H=G?"\u25C0":"\u2190";if(!dG1())console.log(`${z5.dim}${H}${z5.reset} ${K}${Y}${z5.reset} ${W}${J?` ${J}`:""}`);try{await Z()}finally{let F=Date.now()-Q,U=$.res.status,N=jM6(U),B=F<1000?`${F}ms`:`${(F/1000).toFixed(1)}s`,D=G?"\u25B6":"\u2192";if(!dG1())console.log(`${z5.dim}${D}${z5.reset} ${K}${Y}${z5.reset} ${W}${J?` ${J}`:""} ${N}${U}${z5.reset} ${z5.duration}${B}${z5.reset}`);iG1.emit("request",{method:Y,path:Id(X),status:U,duration:F,timestamp:new Date})}}}var z5,jM6=($)=>{if($>=500)return z5.serverError;if($>=400)return z5.clientError;if($>=300)return z5.redirect;return z5.ok},EM6=($)=>{return z5[$]||z5.reset},Id=($)=>{return $.replace(/\r/g,"").replace(/\n/g,"").replace(/\x1b\[[0-9;]*m/g,"").replace(/[\x00-\x1f\x7f-\x9f]/g,"")};var xe$=O(()=>{mG1();fe$();z5={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 ue$}from"crypto";import{mkdir as zM6,readdir as PM6,rm as ye$,stat as le$}from"fs/promises";import{join as nG1,relative as AM6}from"path";import{z as V$}from"zod";function de$($){let Z=$.replace(/[^a-zA-Z0-9_-]/g,"_");return nG1(TM6,Z)}function me$($){return $.replace(/^\/+/,"").replace(/\.\./g,"")}function pG1($,Z){let Q=de$($),Y=me$(Z);return nG1(Q,Y)}function RM6($,Z,Q,Y){let X=O0().encryptionKey||"dev-secret",J=`${$}:${Z}:${Q}:${Y}`;return ue$("sha256",X).update(J).digest("hex")}function he$($,Z,Q,Y,X){let J=Math.floor(Date.now()/1000)+Y,G=RM6(Z,Q,J,X),W=new URL(`/api/dev-assets/${Z}/${me$(Q)}`,$);return W.searchParams.set("expires",J.toString()),W.searchParams.set("signature",G),W.searchParams.set("method",X),W.toString()}function ie$($,Z,Q){let Y=`${$}:${Z.getTime()}:${Q}`;return`"${ue$("md5","etag").update(Y).digest("hex")}"`}async function pe$($,Z,Q,Y,X){try{let J=await PM6($,{withFileTypes:!0});for(let G of J){let W=nG1($,G.name),H=AM6(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 pe$(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 le$(W);X.objects.push({key:H,size:F.size,lastModified:F.mtime.toISOString(),etag:ie$(W,F.mtime,F.size)})}catch{}}}}catch{}}function ne$($,Z){let Y=i($).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=de$(Y);await zM6(F,{recursive:!0});let U={objects:[],commonPrefixes:new Set};await pe$(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=pG1(Y,J.key),W=await le$(G);return{contentType:TJ1(J.key),contentLength:W.size,lastModified:W.mtime.toISOString(),etag:ie$(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??ge$;return{url:he$(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??ge$;return{url:he$(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=pG1(Y,J.key);try{return await ye$(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=pG1(Y,K);try{await ye$(H),G.push(K)}catch(F){W.push({key:K,message:F instanceof Error?F.message:"Unknown error"})}})),{deleted:G,errors:W}}}]}async function tG1($,Z,Q){let Y=ne$(Z,Q),X=new BH({name:"dev-assets-mcp",version:"1.0.0"},{capabilities:{tools:{}},jsonSchemaValidator:k5});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 lY({enableJsonResponse:$.headers.get("Accept")?.includes("application/json")??!1});return await X.connect(J),MG(X,J,$,"mcp:dev-assets")}async function te$($,Z,Q,Y){let J=ne$(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 TM6="./data/assets",ge$=3600,ce$,oe$;var re$=O(()=>{Z$();hl();y$();Zt();vf();_Q();Sq0();ce$=new e0;ce$.all("/",async($)=>{let Z=$.get("studioContext"),Q=new URL($.req.url),Y=`${Q.protocol}//${Q.host}`;return tG1($.req.raw,Z,Y)});oe$=ce$});var se$={};T4(se$,{mountDevRoutes:()=>qM6});function qM6($,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 tG1(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 te$(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",oe$);let Q=new e0;Q.use("*",AK({mountPath:"/api/dev-assets"})),Q.route("/",kq0({orgFromPath:!1})),$.route("/api/dev-assets",Q)}var ae$=O(()=>{y$();LJ1();Sq0();re$()});import{sql as IM6}from"kysely";import{randomUUID as ee$}from"crypto";import{z as MM6}from"zod";async function kM6($){let Z=new Date().toISOString(),Q=ee$(),Y=A8.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:ee$(),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 IM6`SELECT
2996
2996
  pg_notify('studio_events', ${Q}),