decocms 4.367.7 → 4.368.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (371) hide show
  1. package/dist/client/assets/{AlertCircle-CMdkAjxQ.js → AlertCircle-BKchbppf.js} +1 -1
  2. package/dist/client/assets/{AreaChart-jIv2Q0sS.js → AreaChart-y2C6FBRO.js} +1 -1
  3. package/dist/client/assets/{ArrowLeft-DGJWLWaL.js → ArrowLeft-BxcCVSsO.js} +1 -1
  4. package/dist/client/assets/{ArrowRight-D_1DZN2N.js → ArrowRight-M0oFo16p.js} +1 -1
  5. package/dist/client/assets/{ArrowUp-Bx3jqyJU.js → ArrowUp-DPPS6QAz.js} +1 -1
  6. package/dist/client/assets/{Check-HvrCGvlV.js → Check-ZxK4xe7F.js} +1 -1
  7. package/dist/client/assets/{CheckCircle-CQTpywHl.js → CheckCircle-CXCmqtXe.js} +1 -1
  8. package/dist/client/assets/{ChevronRight-dkkIYuGe.js → ChevronRight-B1q4aRdE.js} +1 -1
  9. package/dist/client/assets/{ChevronUp-BANcOZ09.js → ChevronUp-Lw2r8wDj.js} +1 -1
  10. package/dist/client/assets/{Copy01-D4tr9F1r.js → Copy01-BdfG_e2R.js} +1 -1
  11. package/dist/client/assets/{CreditCard01-CX8hLF54.js → CreditCard01-C0eii6cH.js} +1 -1
  12. package/dist/client/assets/{Database01-C6v3VKBC.js → Database01-D9xiMFRQ.js} +1 -1
  13. package/dist/client/assets/{DotsVertical-DEpQR8Rs.js → DotsVertical-BHpLZzPU.js} +1 -1
  14. package/dist/client/assets/{Download01-G8ZhNqF3.js → Download01-DAPCTBrh.js} +1 -1
  15. package/dist/client/assets/{ErrorBarContext-DNwZJRAX.js → ErrorBarContext-B7gfjXfw.js} +1 -1
  16. package/dist/client/assets/{Eye-wRiP-IKY.js → Eye-Bwli19bO.js} +1 -1
  17. package/dist/client/assets/{File02-C5Axd7Wg.js → File02-Bk1dmRy_.js} +1 -1
  18. package/dist/client/assets/{GitBranch01-xiI7ahmy.js → GitBranch01-fGQefizx.js} +1 -1
  19. package/dist/client/assets/{Globe01-BJfrzyV2.js → Globe01-B4gNbsCg.js} +1 -1
  20. package/dist/client/assets/{HardDrive-BtlNN50l.js → HardDrive-D_aROQkn.js} +1 -1
  21. package/dist/client/assets/{Image01-ZQpSr40Q.js → Image01-DTFvmUXj.js} +1 -1
  22. package/dist/client/assets/{Key01-TUQZiePT.js → Key01-CVWwYajp.js} +1 -1
  23. package/dist/client/assets/{Link01-Dubdh0XV.js → Link01-CZbhj0_0.js} +1 -1
  24. package/dist/client/assets/{LinkExternal01-DsoIvXMf.js → LinkExternal01-BKxoqAo_.js} +1 -1
  25. package/dist/client/assets/{MessageCircle01-DrVOv17x.js → MessageCircle01-bLbPG2BY.js} +1 -1
  26. package/dist/client/assets/{Monitor01-8akol8yD.js → Monitor01-BPvejB1C.js} +1 -1
  27. package/dist/client/assets/{Package-6pCyxdj-.js → Package-aFD4MTA7.js} +1 -1
  28. package/dist/client/assets/{Palette-8_jSprTt.js → Palette-CPUNhPQw.js} +1 -1
  29. package/dist/client/assets/{Play-B2WDpGm-.js → Play-CIReceJE.js} +1 -1
  30. package/dist/client/assets/{Plus-B6iViyXP.js → Plus-7oGWv8-d.js} +1 -1
  31. package/dist/client/assets/{Printer-1AF1IGx9.js → Printer-DhW8UOTN.js} +1 -1
  32. package/dist/client/assets/{SearchLg-o3jjSP_H.js → SearchLg-gMgT6qJL.js} +1 -1
  33. package/dist/client/assets/{SearchMd-BFooCWLz.js → SearchMd-DBxEPxbW.js} +1 -1
  34. package/dist/client/assets/{Sector-D27lvJUl.js → Sector-BObjIYQg.js} +1 -1
  35. package/dist/client/assets/{Settings02-11lXkxuh.js → Settings02-2akNrypo.js} +1 -1
  36. package/dist/client/assets/{Share07-2izyqHpD.js → Share07-Bl1oEFtE.js} +1 -1
  37. package/dist/client/assets/{Shield01-C_NSoVzs.js → Shield01-D26ePB5X.js} +1 -1
  38. package/dist/client/assets/{Stars01-dQ6_BPZ3.js → Stars01-Dja9PZ8p.js} +1 -1
  39. package/dist/client/assets/{Sun-DqCbyuBS.js → Sun-49v3fDGt.js} +1 -1
  40. package/dist/client/assets/{SwitchHorizontal01-Chrl4_cZ.js → SwitchHorizontal01-1bzMkj1j.js} +1 -1
  41. package/dist/client/assets/{Tool01-DekOr9OW.js → Tool01-DXg-697p.js} +1 -1
  42. package/dist/client/assets/{Tool02-CgXadMFZ.js → Tool02-BZbYKRFW.js} +1 -1
  43. package/dist/client/assets/{Trash01-DwLqZ5iv.js → Trash01-BUixXtcj.js} +1 -1
  44. package/dist/client/assets/{TrendUp01-BJ6ZxGib.js → TrendUp01-WeYCREkX.js} +1 -1
  45. package/dist/client/assets/{Upload01-zIaNWjGg.js → Upload01-51uW4MtH.js} +1 -1
  46. package/dist/client/assets/{User01-Cuc8TQ2e.js → User01-B4JBmtbe.js} +1 -1
  47. package/dist/client/assets/{UserSquare-DO483pcO.js → UserSquare-DXP9QUC0.js} +1 -1
  48. package/dist/client/assets/{Users01-C_FX7NZW.js → Users01-DxH5OmOp.js} +1 -1
  49. package/dist/client/assets/{Users03-CBIUviMz.js → Users03-BNcMDmHT.js} +1 -1
  50. package/dist/client/assets/{X-BbEHf0ox.js → X-BdugDRJ_.js} +1 -1
  51. package/dist/client/assets/{XCircle-CIpucXWN.js → XCircle-frgB9vHw.js} +1 -1
  52. package/dist/client/assets/{XClose-D9lEUPrO.js → XClose-DdmRkPdn.js} +1 -1
  53. package/dist/client/assets/{Zap-FJBBk1lb.js → Zap-BOBZbKzr.js} +1 -1
  54. package/dist/client/assets/{ZoomOut-DR5p3Py1.js → ZoomOut-CG3Sk2c2.js} +1 -1
  55. package/dist/client/assets/{access-gate-BGLq5_fD.js → access-gate-u19iYegA.js} +1 -1
  56. package/dist/client/assets/{add-connection-dialog-CP-mB4l0.js → add-connection-dialog-BMRrs0Iv.js} +1 -1
  57. package/dist/client/assets/{agent-analytics-CwkHNxxG.js → agent-analytics-x1RXtEfy.js} +1 -1
  58. package/dist/client/assets/agent-app-DmoPEJGX.js +1 -0
  59. package/dist/client/assets/agent-assets-BZB74Oo0.js +1 -0
  60. package/dist/client/assets/agent-automation-CLUkoEJi.js +20 -0
  61. package/dist/client/assets/{agent-automations-BUDch-j3.js → agent-automations-S_NNW-G8.js} +1 -1
  62. package/dist/client/assets/{agent-connect-sources-LY53id1I.js → agent-connect-sources-FrFq6kgZ.js} +1 -1
  63. package/dist/client/assets/agent-deck-CmrG0VVN.js +1 -0
  64. package/dist/client/assets/{agent-e2e-CnVObhl4.js → agent-e2e-BftBTu-r.js} +1 -1
  65. package/dist/client/assets/agent-file-C9BmMguw.js +1 -0
  66. package/dist/client/assets/{agent-git-C-KtJQOB.js → agent-git-CUfmHf_3.js} +2 -2
  67. package/dist/client/assets/{agent-hosting-Dr-g2CXP.js → agent-hosting-DYMDraLb.js} +1 -1
  68. package/dist/client/assets/{agent-icon-CL_nl9mo.js → agent-icon-CJ74PZ5u.js} +1 -1
  69. package/dist/client/assets/agent-library-file-BoVX_vwF.js +1 -0
  70. package/dist/client/assets/{agent-monitor-SvCw0nUy.js → agent-monitor-BWVjQWIl.js} +1 -1
  71. package/dist/client/assets/{agent-overview-lLErih75.js → agent-overview-DnPnksSV.js} +1 -1
  72. package/dist/client/assets/agent-settings-B_cAMSa0.js +1 -0
  73. package/dist/client/assets/{agent-site-editor-BukowFNy.js → agent-site-editor-BnZTwUPY.js} +2 -2
  74. package/dist/client/assets/agent-site-editor-code-Dzl6qE-Z.js +2 -0
  75. package/dist/client/assets/{agent-site-editor-content-DtzkoDLB.js → agent-site-editor-content-_eLWfu3Q.js} +2 -2
  76. package/dist/client/assets/{agent-site-editor-preview-DX7U6V5V.js → agent-site-editor-preview-DLXhmiWT.js} +3 -3
  77. package/dist/client/assets/agent-view-Xhiyf05f.js +1 -0
  78. package/dist/client/assets/{agent-view-guard-BMN6ThUt.js → agent-view-guard-CUaQwEO2.js} +1 -1
  79. package/dist/client/assets/{agents-list-C6ZSW07I.js → agents-list-BXNTO5vo.js} +1 -1
  80. package/dist/client/assets/{ai-providers-D2C1qlv0.js → ai-providers-DbzV8bxo.js} +2 -2
  81. package/dist/client/assets/{alert-0Lc8v4N7.js → alert-DXUzroby.js} +1 -1
  82. package/dist/client/assets/{alert-dialog-BcLnZa7A.js → alert-dialog-92GutrH9.js} +1 -1
  83. package/dist/client/assets/{api-keys-Cf6bK86U.js → api-keys-B2Xef8ny.js} +1 -1
  84. package/dist/client/assets/api-keys-Cb3SKZFn.js +1 -0
  85. package/dist/client/assets/app-editor-xKEqzK0v.js +1 -0
  86. package/dist/client/assets/{asset-utils-DIsXFmtL.js → asset-utils-B5fY-BSK.js} +1 -1
  87. package/dist/client/assets/{auth-DqeCOVzg.js → auth-BrGex7FY.js} +1 -1
  88. package/dist/client/assets/{auth-catchall-BNIBQ_XR.js → auth-catchall-BIV239MQ.js} +1 -1
  89. package/dist/client/assets/{auth-entry-Bq32N4lt.js → auth-entry-CFDXzmrD.js} +1 -1
  90. package/dist/client/assets/{auth-split-layout-DliwYz65.js → auth-split-layout-CBVOXOwN.js} +1 -1
  91. package/dist/client/assets/{authenticate-and-persist-oauth-Eoth2qMz.js → authenticate-and-persist-oauth-CUN-wLn1.js} +1 -1
  92. package/dist/client/assets/{automation-list-row-CpdfZzhf.js → automation-list-row-Co6ffDdp.js} +1 -1
  93. package/dist/client/assets/{automation-runs-DIEXu2AA.js → automation-runs-BNk-ou9m.js} +1 -1
  94. package/dist/client/assets/{automations-BpBth9hu.js → automations-COrNd8f4.js} +1 -1
  95. package/dist/client/assets/{autosend-2Y4HgA_T.js → autosend-mHJRckjC.js} +1 -1
  96. package/dist/client/assets/{avatar-YOwDvuCo.js → avatar-ubLaXORO.js} +1 -1
  97. package/dist/client/assets/{badge-CKy1DnEV.js → badge-DyIAknWc.js} +1 -1
  98. package/dist/client/assets/{block-document-aP19FM_M.js → block-document-WjNTO6O1.js} +1 -1
  99. package/dist/client/assets/{blocks-preview-workspace-context-DP5_u2Xp.js → blocks-preview-workspace-context-XPDRiBEY.js} +1 -1
  100. package/dist/client/assets/{breadcrumb-BY8W5NfH.js → breadcrumb-D0FcEht9.js} +1 -1
  101. package/dist/client/assets/{buckets-Bhe2phyM.js → buckets-D4XExOV7.js} +1 -1
  102. package/dist/client/assets/{build-improve-prompt-doc-DVZMfB_k.js → build-improve-prompt-doc-BmggPsYr.js} +1 -1
  103. package/dist/client/assets/{bulk-category-panel-dbBPINFu.js → bulk-category-panel-D_4Fv25D.js} +1 -1
  104. package/dist/client/assets/{calendar-O0niDXgD.js → calendar-B1_9FUxA.js} +1 -1
  105. package/dist/client/assets/{capability-load-error-JtYpAIDC.js → capability-load-error-CfjThErO.js} +1 -1
  106. package/dist/client/assets/{cards-CljnVFGF.js → cards-DzbRsseW.js} +1 -1
  107. package/dist/client/assets/category-editor-DkUyXLbS.js +1 -0
  108. package/dist/client/assets/{chart-DjxuH9z1.js → chart-Ei5Re4Wl.js} +1 -1
  109. package/dist/client/assets/{chat-context-DT13Ns9e.js → chat-context-CwBa4iNq.js} +1 -1
  110. package/dist/client/assets/{chat-draft-Bp7WKsio.js → chat-draft-DNmqFUGc.js} +1 -1
  111. package/dist/client/assets/{checkbox-BAc6ON84.js → checkbox-BzsCo22G.js} +1 -1
  112. package/dist/client/assets/{choose-editor-Db-m1tPL.js → choose-editor-GkG7SXyC.js} +1 -1
  113. package/dist/client/assets/{cli-auth-success-ORnUB4EZ.js → cli-auth-success-CMF0dFZs.js} +1 -1
  114. package/dist/client/assets/{client-icons-DH-s5V8p.js → client-icons-BwjZD78C.js} +1 -1
  115. package/dist/client/assets/{collapsible-Cfc5GOq6.js → collapsible-C1favzij.js} +1 -1
  116. package/dist/client/assets/{collection-detail-tLNt3mFd.js → collection-detail-BqWAJ7EW.js} +1 -1
  117. package/dist/client/assets/{collection-display-button-Q83lUSRW.js → collection-display-button-BJZ15cTd.js} +1 -1
  118. package/dist/client/assets/{collection-search-DOotlcr-.js → collection-search-aDCUzq7X.js} +1 -1
  119. package/dist/client/assets/{collection-table-wrapper-L7fq3Ewq.js → collection-table-wrapper-B8I7NupJ.js} +1 -1
  120. package/dist/client/assets/{collection-tabs-77YTqRx_.js → collection-tabs-CCTSLIp7.js} +1 -1
  121. package/dist/client/assets/{command-BbfSNpjK.js → command-Bp6cp4pI.js} +1 -1
  122. package/dist/client/assets/{command-palette-store-CDXRiKfb.js → command-palette-store-DOa5piDf.js} +1 -1
  123. package/dist/client/assets/{companion-mcps-section-B3OT3fvW.js → companion-mcps-section-DEio5Adg.js} +1 -1
  124. package/dist/client/assets/{connect-DYMJSd71.js → connect-BY6uXdow.js} +2 -2
  125. package/dist/client/assets/{connect-layout-Cb-8wVa_.js → connect-layout-CP69O37i.js} +1 -1
  126. package/dist/client/assets/{connection-C0h_riCe.js → connection-BZn_3MEZ.js} +1 -1
  127. package/dist/client/assets/{connection-card-BnHVqPYb.js → connection-card-COXej074.js} +1 -1
  128. package/dist/client/assets/{connection-detail-BukOET2K.js → connection-detail-DHx2IRY4.js} +1 -1
  129. package/dist/client/assets/{connection-form-helpers-BGarejHH.js → connection-form-helpers-bnj5C_pO.js} +1 -1
  130. package/dist/client/assets/{connections-C94wvfI_.js → connections-H2nz3ZOT.js} +1 -1
  131. package/dist/client/assets/{create-organization-dialog-BeMHfEec.js → create-organization-dialog-Dhjwuvqa.js} +1 -1
  132. package/dist/client/assets/{decofile-api-D5P6O-Yb.js → decofile-api-BEtZILgN.js} +1 -1
  133. package/dist/client/assets/{decopilot-DEim_pMB.js → decopilot-B6xCVEQX.js} +1 -1
  134. package/dist/client/assets/{dialog-DIO2BT5L.js → dialog-BCc5hlgI.js} +1 -1
  135. package/dist/client/assets/{discover-zXR45UVE.js → discover-Djoq-knv.js} +1 -1
  136. package/dist/client/assets/{domain-settings-CoxAhG8y.js → domain-settings-B68OapeG.js} +1 -1
  137. package/dist/client/assets/{download-app-dialog-B-5SSg-B.js → download-app-dialog-CS9xCo3l.js} +1 -1
  138. package/dist/client/assets/{drawer-Dp27hT9C.js → drawer-CQ6YvWyB.js} +1 -1
  139. package/dist/client/assets/{dropdown-menu-BzAnwSL0.js → dropdown-menu-tx6OX4aA.js} +1 -1
  140. package/dist/client/assets/{editor-Dm21YC6a.js → editor-BpQ5Scxi.js} +3 -3
  141. package/dist/client/assets/{empty-state-CvrLm3VU.js → empty-state-BTjMWx5H.js} +1 -1
  142. package/dist/client/assets/{empty-state-F709JYnF.js → empty-state-ClkrHYmJ.js} +1 -1
  143. package/dist/client/assets/{extract-connection-data-Cfd0L2y0.js → extract-connection-data-QX25cgiT.js} +1 -1
  144. package/dist/client/assets/{feature-gate-CSQct_zD.js → feature-gate-DqjkAi9M.js} +1 -1
  145. package/dist/client/assets/{feature-paywall-Cd5ZGlWk.js → feature-paywall-b3qZoNCL.js} +1 -1
  146. package/dist/client/assets/{file-explorer-B6MMR_br.js → file-explorer-vmaCniEv.js} +1 -1
  147. package/dist/client/assets/{file-preview-B3un6Sja.js → file-preview-9280F33a.js} +1 -1
  148. package/dist/client/assets/{file-share-button-BXZcNnFk.js → file-share-button-Cqn5Q-hj.js} +1 -1
  149. package/dist/client/assets/{file-type-icon-CzM4dKXx.js → file-type-icon-Dxp-Ok2P.js} +1 -1
  150. package/dist/client/assets/{folder-icon-Bjs4wWQI.js → folder-icon-DfnI9Lc8.js} +1 -1
  151. package/dist/client/assets/{form-DGoweIp4.js → form-CCEoicAR.js} +1 -1
  152. package/dist/client/assets/{gateway-client-BKFdOqFV.js → gateway-client-CgyUBlgw.js} +1 -1
  153. package/dist/client/assets/{general-BER62NBk.js → general-BlaLbOSk.js} +1 -1
  154. package/dist/client/assets/{github-icon-D5mzGkJ1.js → github-icon-BWfLdLT4.js} +1 -1
  155. package/dist/client/assets/home-sj-ZTRkz.js +1 -0
  156. package/dist/client/assets/{hooks-DOi6gVdi.js → hooks-BsQ1zp8y.js} +2 -2
  157. package/dist/client/assets/{hooks-DW28Wv6W.js → hooks-CBQzxxCh.js} +1 -1
  158. package/dist/client/assets/{index-kzbDuxts.js → index-CUJMnria.js} +1 -1
  159. package/dist/client/assets/{index-C7nGODiq.js → index-CYsKkgvq.js} +1 -1
  160. package/dist/client/assets/{index-DDHop146.js → index-CZJ5G35_.js} +1 -1
  161. package/dist/client/assets/{index-DX88U1Fe.js → index-C_lmrR_C.js} +2 -2
  162. package/dist/client/assets/{index-BKjzqVX4.js → index-CalU-CTh.js} +1 -1
  163. package/dist/client/assets/{index-BqEX4CxD.js → index-CuNhd5EW.js} +1 -1
  164. package/dist/client/assets/{index-D3hBrAe3.js → index-Cw7IXwLo.js} +1 -1
  165. package/dist/client/assets/{index-BiIMwVbK.js → index-Cze73w-G.js} +1 -1
  166. package/dist/client/assets/{index-D9Pa20nR.js → index-D4pBLhg9.js} +1 -1
  167. package/dist/client/assets/{index-C9jQATHx.js → index-D9SZCEna.js} +5 -5
  168. package/dist/client/assets/{index-ebCjSNwh.js → index-DXfPYL8S.js} +39 -39
  169. package/dist/client/assets/{index-CLBWHxV4.js → index-DaYZAl9-.js} +1 -1
  170. package/dist/client/assets/{index-Ch3pSh1a.js → index-nvVwQgfX.js} +1 -1
  171. package/dist/client/assets/{index-26VXD9YQ.js → index-p-pFkjAj.js} +1 -1
  172. package/dist/client/assets/{index-redirect-bdPeOdFP.js → index-redirect-CPyK66Hq.js} +1 -1
  173. package/dist/client/assets/{index-BVdPTogP.js → index-unCC-6KL.js} +1 -1
  174. package/dist/client/assets/{infiniteQueryObserver-CrlFqUXS.js → infiniteQueryObserver-D3qec4tz.js} +1 -1
  175. package/dist/client/assets/{infra-billing-DBRnO5Xv.js → infra-billing-B8nXBSDz.js} +1 -1
  176. package/dist/client/assets/{input-BfoQkl5k.js → input-5SO3LEdl.js} +1 -1
  177. package/dist/client/assets/{input-DxpPAL6X.js → input-AeTUfj6S.js} +2 -2
  178. package/dist/client/assets/{input-DCAbperr.js → input-DMN2ylja.js} +1 -1
  179. package/dist/client/assets/{integration-icon-DLbXRirx.js → integration-icon-B1sz4SeY.js} +1 -1
  180. package/dist/client/assets/{label-BZvBRfsC.js → label-Dh9EjnVS.js} +1 -1
  181. package/dist/client/assets/{last-preview-page-DgNuT4mN.js → last-preview-page-D52M-8kD.js} +1 -1
  182. package/dist/client/assets/{layout-D_2jgeSQ.js → layout-DSbF9Fai.js} +1 -1
  183. package/dist/client/assets/{legacy-agents-deep-D9-8wOwe.js → legacy-agents-deep-CO4Cj3Kz.js} +1 -1
  184. package/dist/client/assets/{legacy-main-redirect-U48xVXg3.js → legacy-main-redirect-DyjtdITZ.js} +1 -1
  185. package/dist/client/assets/{library-DCHuYHcg.js → library-rJr5R-_-.js} +2 -2
  186. package/dist/client/assets/{login-DLU4Kv--.js → login-ByroOa_7.js} +1 -1
  187. package/dist/client/assets/{markdown-BxIxTFHX.js → markdown-08bGGv35.js} +33 -33
  188. package/dist/client/assets/{mcp-app-renderer-C5_SSFlp.js → mcp-app-renderer-BrDqPGAT.js} +1 -1
  189. package/dist/client/assets/{mcp-oauth-Cj16tOMc.js → mcp-oauth-DssHToM4.js} +1 -1
  190. package/dist/client/assets/{members-B8ghL5vq.js → members-1ss87Nz0.js} +1 -1
  191. package/dist/client/assets/{message-templates-C0k0djOm.js → message-templates-BTVMJzpL.js} +1 -1
  192. package/dist/client/assets/{mini-report-page-DPr8miDS.js → mini-report-page-CX7HMNh4.js} +1 -1
  193. package/dist/client/assets/{mock-board-CLCjiMWY.js → mock-board-jgxOM55G.js} +3 -3
  194. package/dist/client/assets/{monaco-editor-D7KtEG80.js → monaco-editor-DJxPzejh.js} +1 -1
  195. package/dist/client/assets/{monitoring-stats-row-C8qE8vIX.js → monitoring-stats-row-wjNhJJbD.js} +1 -1
  196. package/dist/client/assets/{multi-select-PUmjNPLo.js → multi-select-7rs5llE7.js} +1 -1
  197. package/dist/client/assets/{mustache-DoPKkDOt.js → mustache-vWrD4L5A.js} +1 -1
  198. package/dist/client/assets/{oauth-callback-yzNiiBZS.js → oauth-callback-Dh7kJbIE.js} +1 -1
  199. package/dist/client/assets/{oauth-callback-ai-provider-BkPGppSA.js → oauth-callback-ai-provider-BR4KOwpH.js} +1 -1
  200. package/dist/client/assets/{onboarding-DNDx-VJt.js → onboarding-NaMysfKu.js} +1 -1
  201. package/dist/client/assets/{optimistic-project-sidebar-views-DQAcmOUC.js → optimistic-project-sidebar-views-CnXa40yZ.js} +1 -1
  202. package/dist/client/assets/org-file-open-context-GfBe4Lpi.js +1 -0
  203. package/dist/client/assets/{organization-choice-X5fcp7VC.js → organization-choice-BKxMxoJn.js} +1 -1
  204. package/dist/client/assets/{orgs-C71bHZfS.js → orgs-BvzvadNE.js} +1 -1
  205. package/dist/client/assets/{page-seo-form-CJ5C4DO5.js → page-seo-form-D3Ps7cZw.js} +1 -1
  206. package/dist/client/assets/{pair-D4JmcK-t.js → pair-kWiwbnho.js} +1 -1
  207. package/dist/client/assets/{plan-ladder-CQ1a44li.js → plan-ladder-CY-Z8Ivq.js} +1 -1
  208. package/dist/client/assets/{popover-cYfVOF_J.js → popover-BGd36YgB.js} +1 -1
  209. package/dist/client/assets/post-calendar-DYYzvYLc.js +1 -0
  210. package/dist/client/assets/post-editor-CaCmWj6J.js +1 -0
  211. package/dist/client/assets/{preview-content-DlgGWAMY.js → preview-content-Boo_eVop.js} +1 -1
  212. package/dist/client/assets/{preview-dialog-DMVdVz_V.js → preview-dialog-DHXJPLGL.js} +1 -1
  213. package/dist/client/assets/{primitives-7Kw_jkKz.js → primitives-CKaN1rNH.js} +1 -1
  214. package/dist/client/assets/{profile-fIXgfLVj.js → profile-N__YV02p.js} +1 -1
  215. package/dist/client/assets/{project-app-view-DpkzCjxR.js → project-app-view-DNS5eCSn.js} +1 -1
  216. package/dist/client/assets/{project-feed-D1Rnls8q.js → project-feed-5BgkxnYg.js} +1 -1
  217. package/dist/client/assets/{project-icon-CWg_rHTZ.js → project-icon-DQkQSxZw.js} +1 -1
  218. package/dist/client/assets/project-reports-CqxK4fWT.js +1 -0
  219. package/dist/client/assets/project-tasks-IgbELLeD.js +1 -0
  220. package/dist/client/assets/{prompts-D1i8e1V8.js → prompts-Dl4z55pl.js} +1 -1
  221. package/dist/client/assets/record-editor-DsEcUGgo.js +1 -0
  222. package/dist/client/assets/redirect-editor-kShoD3Wd.js +1 -0
  223. package/dist/client/assets/{registry-layout-r2D039nl.js → registry-layout-DI-hF5m1.js} +1 -1
  224. package/dist/client/assets/registry-yh_1oSSj.js +2 -0
  225. package/dist/client/assets/reports-C1ta3Pms.js +1 -0
  226. package/dist/client/assets/{reports-TdOY4KuN.js → reports-gEiYrZM5.js} +1 -1
  227. package/dist/client/assets/{reports-onboarding-s05s2vjv.js → reports-onboarding-DHaOLYgm.js} +1 -1
  228. package/dist/client/assets/{reports-tab-D0Xwzbct.js → reports-tab-Cz8M-Vq9.js} +2 -2
  229. package/dist/client/assets/{repositories-JDvNAhI8.js → repositories-B1iivH6M.js} +1 -1
  230. package/dist/client/assets/{repository-import-picker-BNluAY2V.js → repository-import-picker-JrKf0rR5.js} +1 -1
  231. package/dist/client/assets/{repository-picker-D9agNhNi.js → repository-picker-CV4V7DF8.js} +1 -1
  232. package/dist/client/assets/{require-capability-DjYcyxbJ.js → require-capability-Td9HSP5v.js} +1 -1
  233. package/dist/client/assets/{required-auth-layout-C3o3t9X1.js → required-auth-layout-O-2fosqz.js} +1 -1
  234. package/dist/client/assets/{reset-password-DOQza5N6.js → reset-password-DMz0UAEt.js} +1 -1
  235. package/dist/client/assets/{resizable-BHYHfZY5.js → resizable-hHcftR57.js} +1 -1
  236. package/dist/client/assets/{review-settings-zUGfHLOe.js → review-settings-CkVsqJxm.js} +1 -1
  237. package/dist/client/assets/{rich-text-link-control-BMZBKHAS.js → rich-text-link-control-xyc77eAl.js} +1 -1
  238. package/dist/client/assets/{roles-CbYdUx8a.js → roles-DRF0sXxE.js} +1 -1
  239. package/dist/client/assets/{route--XOZLXQj.js → route-CG8hkNwT.js} +1 -1
  240. package/dist/client/assets/{route-BMqM-gRN.js → route-Cy-w3Fp7.js} +1 -1
  241. package/dist/client/assets/route-DOgOyrYA.js +1 -0
  242. package/dist/client/assets/{runnable-block-editor-eIl1ZAUD.js → runnable-block-editor-Db5dXcSl.js} +1 -1
  243. package/dist/client/assets/{sandbox-lifecycle-context-dIh2VE9T.js → sandbox-lifecycle-context-YzrdyqTe.js} +1 -1
  244. package/dist/client/assets/{schema-DLCqAhaO.js → schema-DobnB1YS.js} +1 -1
  245. package/dist/client/assets/{scroll-area-B6yfQzTQ.js → scroll-area-lKTlOT_0.js} +1 -1
  246. package/dist/client/assets/{search-input-B9FxoKon.js → search-input-BsvR49ic.js} +1 -1
  247. package/dist/client/assets/{secrets-Ckg8Rd0M.js → secrets-CvmXb4jS.js} +1 -1
  248. package/dist/client/assets/{sections-editor-DfusxW9l.js → sections-editor-BL8f9i5C.js} +2 -2
  249. package/dist/client/assets/{select-BemZ3-RS.js → select-D8neBfTB.js} +1 -1
  250. package/dist/client/assets/{select-model-Dt_mcRLi.js → select-model-Ckl_Fui7.js} +1 -1
  251. package/dist/client/assets/seo-editor-kdZ3qtF5.js +1 -0
  252. package/dist/client/assets/{settings-tab-W9gLVP9Y.js → settings-tab-DHNqjcoa.js} +1 -1
  253. package/dist/client/assets/{sheet-CAYJdNnO.js → sheet-CgrtO55N.js} +1 -1
  254. package/dist/client/assets/{shell-layout-BZ9RU057.js → shell-layout-BJKVf96_.js} +1 -1
  255. package/dist/client/assets/{sidebar-kfvz7bzl.js → sidebar-CiHAL8Wu.js} +1 -1
  256. package/dist/client/assets/{skill-preview-DKoageod.js → skill-preview-mcEHLHpL.js} +1 -1
  257. package/dist/client/assets/skills-DqE-vPtp.js +1 -0
  258. package/dist/client/assets/{sso-aIkFrBYs.js → sso-CMeXDyDr.js} +1 -1
  259. package/dist/client/assets/{store-PyPRbE--.js → store-BjgehfaI.js} +1 -1
  260. package/dist/client/assets/store-registry-W_KtCEiD.js +2 -0
  261. package/dist/client/assets/{switch-CwYc17c1.js → switch-fMRKTd8o.js} +1 -1
  262. package/dist/client/assets/{synced-repos-LBwJXWce.js → synced-repos-D08q7iIK.js} +1 -1
  263. package/dist/client/assets/{table-Dk8JamWN.js → table-Clh8UGCw.js} +1 -1
  264. package/dist/client/assets/{tabs-CScSsCn-.js → tabs-BSBLIBXv.js} +1 -1
  265. package/dist/client/assets/{task-board-WxptS5oC.js → task-board-Cw7pQ9f8.js} +1 -1
  266. package/dist/client/assets/{task-route-CgUDYaF5.js → task-route-BcG-Y9vh.js} +1 -1
  267. package/dist/client/assets/{task-status-DYV2rHq2.js → task-status-BVBWAfWD.js} +1 -1
  268. package/dist/client/assets/tasks-CrfaMYqW.js +1 -0
  269. package/dist/client/assets/{tasks-Dyp4w1ZL.js → tasks-x1afrsv8.js} +4 -4
  270. package/dist/client/assets/{textarea-C-rDHIo4.js → textarea-DRjwrMCJ.js} +1 -1
  271. package/dist/client/assets/{thread-intent-Dqbb6tX6.js → thread-intent-CC6uL69b.js} +1 -1
  272. package/dist/client/assets/{thread-route-B7ApJPMo.js → thread-route-BGLKWWbA.js} +1 -1
  273. package/dist/client/assets/{thread-route-DGpNj7En.js → thread-route-DvFwa34h.js} +1 -1
  274. package/dist/client/assets/{thread-sheet-body-CXERmuvO.js → thread-sheet-body-DtBk50q_.js} +1 -1
  275. package/dist/client/assets/{toggle-group-BwAc-516.js → toggle-group-CFBKi1GU.js} +1 -1
  276. package/dist/client/assets/{toolbar-icon-button-D5CIjxUn.js → toolbar-icon-button-C8vKnpxW.js} +1 -1
  277. package/dist/client/assets/{tooltip-D5dIOzcQ.js → tooltip-BM4MyYtx.js} +1 -1
  278. package/dist/client/assets/{track-CfasnexS.js → track-BnjuU_Aa.js} +1 -1
  279. package/dist/client/assets/{types-BKgDxdgt.js → types-OTmzvENk.js} +1 -1
  280. package/dist/client/assets/{usage-stats-CzjkHtFz.js → usage-stats-BtXxJtjV.js} +1 -1
  281. package/dist/client/assets/{use-ai-providers-DHpBr525.js → use-ai-providers-D3pmon60.js} +1 -1
  282. package/dist/client/assets/{use-automations-D8fUWM0i.js → use-automations-DToyPFV1.js} +1 -1
  283. package/dist/client/assets/{use-autosave-BcXFrygg.js → use-autosave-BU_qHXev.js} +1 -1
  284. package/dist/client/assets/{use-connect-companion-BI8_ITvf.js → use-connect-companion-BpCoDO4S.js} +1 -1
  285. package/dist/client/assets/{use-connection-1DEAzFaJ.js → use-connection-B3V4uZfg.js} +1 -1
  286. package/dist/client/assets/{use-copy-CrTQ1bFc.js → use-copy-KnHqebR6.js} +1 -1
  287. package/dist/client/assets/{use-create-virtual-mcp-6onzYx_V.js → use-create-virtual-mcp-2UYwG6y3.js} +1 -1
  288. package/dist/client/assets/{use-date-fns-locale-CKJk6bHw.js → use-date-fns-locale-BWw8dghC.js} +1 -1
  289. package/dist/client/assets/{use-debounced-autosave-CscEX7LB.js → use-debounced-autosave-BHeNLff-.js} +1 -1
  290. package/dist/client/assets/{use-debounced-value-Cd1Twr6w.js → use-debounced-value-BGWej6mZ.js} +1 -1
  291. package/dist/client/assets/{use-deco-credits-DXbh8RF9.js → use-deco-credits-D-Neva26.js} +1 -1
  292. package/dist/client/assets/{use-decopilot-events-BorkAE1x.js → use-decopilot-events-DkwYxfvc.js} +1 -1
  293. package/dist/client/assets/{use-delete-connection-D14lo6hH.js → use-delete-connection-CzgqXCsw.js} +1 -1
  294. package/dist/client/assets/{use-deployment-admin-CnWMkexv.js → use-deployment-admin-BD8J4rzi.js} +1 -1
  295. package/dist/client/assets/{use-entitlements-CW1G9reZ.js → use-entitlements-TTRAg4gu.js} +1 -1
  296. package/dist/client/assets/{use-fast-preview-draft-url-C6GlSiLC.js → use-fast-preview-draft-url-CiAYOF7M.js} +1 -1
  297. package/dist/client/assets/{use-file-configs-CIuxe_Ni.js → use-file-configs-Ckmsn28x.js} +1 -1
  298. package/dist/client/assets/{use-infinite-scroll-C3V6bChR.js → use-infinite-scroll-gZkFm8Rv.js} +1 -1
  299. package/dist/client/assets/{use-join-requests-D9RxS7KW.js → use-join-requests-FhpmlLIv.js} +1 -1
  300. package/dist/client/assets/{use-main-panel-tabs-DXkaeHMV.js → use-main-panel-tabs-IpsUP9Wl.js} +1 -1
  301. package/dist/client/assets/{use-mcp-auth-status-BH9IDFQ1.js → use-mcp-auth-status-C9YFSjt7.js} +1 -1
  302. package/dist/client/assets/{use-mcp-client-2uEIRhaM.js → use-mcp-client-DSGHqAYD.js} +1 -1
  303. package/dist/client/assets/{use-mcp-prompts-CoIIHF5C.js → use-mcp-prompts-Dne6CipL.js} +1 -1
  304. package/dist/client/assets/{use-mcp-tools-BEXh2Dal.js → use-mcp-tools-5LthbFq_.js} +1 -1
  305. package/dist/client/assets/{use-members-B9Bp6K2N.js → use-members-vJs6czuz.js} +1 -1
  306. package/dist/client/assets/{use-mobile-CpN-x3jP.js → use-mobile-C5k18fP1.js} +1 -1
  307. package/dist/client/assets/{use-navigate-to-agent-D91bju80.js → use-navigate-to-agent-qRyehLE-.js} +1 -1
  308. package/dist/client/assets/{use-open-billing-url-BerGO0rw.js → use-open-billing-url-Bn4c7bA3.js} +1 -1
  309. package/dist/client/assets/{use-org-auth-client-r5wiYH2P.js → use-org-auth-client-BfT_gcIU.js} +1 -1
  310. package/dist/client/assets/{use-org-fs-Bts9OSaP.js → use-org-fs-CY3ClF__.js} +1 -1
  311. package/dist/client/assets/{use-org-notice-CoJcS75H.js → use-org-notice-DXInzY6B.js} +1 -1
  312. package/dist/client/assets/{use-org-sso-dhAsVLFb.js → use-org-sso-D6OOHL4I.js} +1 -1
  313. package/dist/client/assets/{use-organization-roles-kAP23ZDQ.js → use-organization-roles-C6CqS3Hl.js} +1 -1
  314. package/dist/client/assets/{use-organization-settings-OP1vKLQc.js → use-organization-settings-H5G4XpWU.js} +1 -1
  315. package/dist/client/assets/{use-panel-navigate-DArr9jKh.js → use-panel-navigate-EBQ6GmN1.js} +1 -1
  316. package/dist/client/assets/{use-project-native-view-presence-7Bqoz-C1.js → use-project-native-view-presence-DY4DPkNa.js} +1 -1
  317. package/dist/client/assets/{use-project-scope-DUmb12wa.js → use-project-scope-De26TkyD.js} +1 -1
  318. package/dist/client/assets/{use-registry-connections-T5KGR_Hv.js → use-registry-connections-DOOOhGq6.js} +1 -1
  319. package/dist/client/assets/{use-releases-C3yM6r03.js → use-releases-Cd85Ra1l.js} +1 -1
  320. package/dist/client/assets/{use-reports-diagnostic-vTs5yUh0.js → use-reports-diagnostic-C3Z-hnHf.js} +1 -1
  321. package/dist/client/assets/{use-route-default-main-D6cfsdMd.js → use-route-default-main-CwM8UwOB.js} +1 -1
  322. package/dist/client/assets/{use-secrets-CVFKBXHe.js → use-secrets-B7F5FjB9.js} +1 -1
  323. package/dist/client/assets/{use-section-preview-base-YyD8NP1s.js → use-section-preview-base-CMoIrJO-.js} +1 -1
  324. package/dist/client/assets/{use-session-runtime-Dg7Dw6FF.js → use-session-runtime-aoBCs__S.js} +1 -1
  325. package/dist/client/assets/{use-tags-yE947YEK.js → use-tags-pjxdPmb5.js} +1 -1
  326. package/dist/client/assets/{use-task-metadata-Cxd6otqh.js → use-task-metadata-mJK-YnBs.js} +1 -1
  327. package/dist/client/assets/{use-thread-outputs-HjlkcFr2.js → use-thread-outputs-B9W8oYCz.js} +1 -1
  328. package/dist/client/assets/{use-view-mode-BsvAwGGR.js → use-view-mode-BA4qSq0B.js} +1 -1
  329. package/dist/client/assets/{use-virtual-mcp-De5-1hZU.js → use-virtual-mcp-Dr5NTd9r.js} +1 -1
  330. package/dist/client/assets/useInfiniteQuery-n-cIQ6QW.js +1 -0
  331. package/dist/client/assets/{useQueries-Dg8jJOK1.js → useQueries-Dg4q1uaA.js} +1 -1
  332. package/dist/client/assets/useSuspenseInfiniteQuery-BwUl7I8i.js +1 -0
  333. package/dist/client/assets/{users-DmBfcg5F.js → users-CGIgpUaK.js} +1 -1
  334. package/dist/client/assets/{utils-Bx7x03n7.js → utils-BS6roSoG.js} +1 -1
  335. package/dist/client/assets/variant-calendar-Mc1lG7f-.js +1 -0
  336. package/dist/client/assets/{variant-matcher-override-DyHDH8Wv.js → variant-matcher-override-D3DFoTTd.js} +1 -1
  337. package/dist/client/assets/{view-mode-toggle-Cr1ou40b.js → view-mode-toggle-DE0VcNBJ.js} +1 -1
  338. package/dist/client/assets/{virtual-mcp-BvoWP1mU.js → virtual-mcp-B9qKMF6v.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-DOZj_KNh.js +0 -1
  344. package/dist/client/assets/agent-assets-COVC5lPr.js +0 -1
  345. package/dist/client/assets/agent-automation-BWSPNjim.js +0 -20
  346. package/dist/client/assets/agent-deck-Ci4o3-Qm.js +0 -1
  347. package/dist/client/assets/agent-file-cFbD0OqV.js +0 -1
  348. package/dist/client/assets/agent-library-file-DXMpRwGw.js +0 -1
  349. package/dist/client/assets/agent-settings-BDT_wIMj.js +0 -1
  350. package/dist/client/assets/agent-site-editor-code-CaFMcCwi.js +0 -2
  351. package/dist/client/assets/agent-view-BOmW_Ep_.js +0 -1
  352. package/dist/client/assets/api-keys-C2lfrWiE.js +0 -1
  353. package/dist/client/assets/app-editor-Cbs0w-F0.js +0 -1
  354. package/dist/client/assets/category-editor-B984VME1.js +0 -1
  355. package/dist/client/assets/home-9LhFhaJr.js +0 -1
  356. package/dist/client/assets/post-calendar-DW1nVDLh.js +0 -1
  357. package/dist/client/assets/post-editor-C5j6zvkW.js +0 -1
  358. package/dist/client/assets/project-reports-BcpuMQY2.js +0 -1
  359. package/dist/client/assets/project-tasks-Cbu0gYbc.js +0 -1
  360. package/dist/client/assets/record-editor-CQeidmi2.js +0 -1
  361. package/dist/client/assets/redirect-editor-BL101gtT.js +0 -1
  362. package/dist/client/assets/registry-Dkgi61cL.js +0 -2
  363. package/dist/client/assets/reports-StG6MJZE.js +0 -1
  364. package/dist/client/assets/route-DJ7DRiHo.js +0 -1
  365. package/dist/client/assets/seo-editor-BEgFLCyp.js +0 -1
  366. package/dist/client/assets/skills-DZXynXjf.js +0 -1
  367. package/dist/client/assets/store-registry-mk4k386L.js +0 -2
  368. package/dist/client/assets/tasks-CwnRPaEK.js +0 -1
  369. package/dist/client/assets/useInfiniteQuery-TmIWCfQ-.js +0 -1
  370. package/dist/client/assets/useSuspenseInfiniteQuery-C8wrcyHJ.js +0 -1
  371. package/dist/client/assets/variant-calendar-DPR_CnEY.js +0 -1
@@ -2076,7 +2076,7 @@ Usage: deco services <up|down|status>`),process.exit(1)}}var Ce1=D(()=>{jg()});f
2076
2076
  `.execute($);if(Number(W.rows[0]?.cnt)===0){console.warn(`Failed to migrate ${G}/${K}, keeping in old table`);continue}}await dh`
2077
2077
  DELETE FROM kysely_migration WHERE name = ${Q}
2078
2078
  `.execute($)}}async function e4$($){await NQ4($),await BQ4($);let Z=new a4$({db:$,provider:{getMigrations:()=>Promise.resolve(oa0)}}),{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 OQ4($){let{keepOpen:Z=!1,database:Q,skipBetterAuth:X=!1}=$??{},Y="skipped";if(!X&&!Q)Y=await Dn0();let J=Q??l$(),G=async()=>{if(!Z&&!Q)await ID(J).catch((K)=>{console.warn("Warning: Error closing database:",K)})};try{let K=await e4$(J.db);return await G(),{betterAuth:Y,kysely:K}}catch(K){throw await G(),K}}async function DQ4(){let $=l$(),Z=new a4$({db:$.db,provider:{getMigrations:()=>Promise.resolve(oa0)}}),{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 Z6$=D(()=>{r4$();Ln0();bQ()});async function iY0($){let Z={...process.env},Q=f50($,Z);console.log(v21(Q.settings.encryptionKey));let X=Q.settings.betterAuthSecret||(Q.settings.localMode?H1$(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(() => (Ln0(),U1$));await W(J.databaseUrl);let{createDatabase:H}=await Promise.resolve().then(() => (bQ(),I0$)),{migrateToLatest:F}=await Promise.resolve().then(() => (Z6$(),$6$)),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 _e1(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 ra0=D(()=>{jg();F1$();Z$()});var J6$={};e(J6$,{updateService:()=>Sz,subscribeCliState:()=>ea0,setTuiConsoleIntercepted:()=>pY0,setServerUrl:()=>Xo,setMigrationsDone:()=>Qo,setDevMode:()=>wQ4,resetCliStateForTests:()=>LQ4,isTuiConsoleIntercepted:()=>nY0,getCliState:()=>sa0,addLogEntry:()=>vD});function Q6$(){return[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}]}function X6$(){return{services:Q6$(),migrationsStatus:"pending",serverUrl:null,logs:[]}}function LQ4(){qY=X6$()}function Zo(){for(let $ of aa0)$()}function sa0(){return qY}function ea0($){return aa0.add($),()=>aa0.delete($)}function Sz($){qY={...qY,services:qY.services.map((Z)=>Z.name===$.name?$:Z)},Zo()}function Qo(){qY={...qY,migrationsStatus:"done"},Zo()}function Xo($){qY={...qY,serverUrl:$},Zo()}function vD($){let Z=[...qY.logs,$];qY={...qY,logs:Z.length>500?Z.slice(-500):Z},Zo()}function wQ4(){qY={...qY,services:[...Q6$(),{name:"API",status:"pending",port:0},{name:"Vite",status:"pending",port:0}]},Zo()}function pY0($){Y6$=$}function nY0(){return Y6$}var qY,aa0,Y6$=!1;var Cz=D(()=>{qY=X6$();aa0=new Set});import{createServer as G6$}from"net";function jQ4($){return new Promise((Z)=>{let Q=G6$();Q.once("error",()=>Z(!1)),Q.listen($,"0.0.0.0",()=>{Q.close(()=>Z(!0))})})}async function Yo($){if(await jQ4($))return $;let Z=await new Promise((Q,X)=>{let Y=G6$();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 $s0=()=>{};var Qs0={};e(Qs0,{startDevServer:()=>zQ4,pipeToLogStore:()=>Zs0});import{join as EQ4}from"path";function Zs0($){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;vD({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)vD({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:J})}})()}async function zQ4($){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 Yo(Number(Y)+1):await Yo(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});Qo();let F=EQ4(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)Zs0(N.stdout),Zs0(N.stderr);Xo(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 Xs0=D(()=>{ra0();Cz();$s0()});var tY0;var Ys0=D(()=>{tY0={name:"decocms",version:"4.367.7",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 AQ4,Text as K6$}from"ink";import{jsx as TQ4,jsxs as W6$}from"react/jsx-runtime";function H6$({version:$}){return W6$(AQ4,{flexDirection:"column",marginTop:1,children:[LY0.map((Z,Q)=>TQ4(K6$,{color:wY0[Q],children:Z},Q)),W6$(K6$,{dimColor:!0,children:[" v",$]})]})}var F6$=D(()=>{lt()});import{Box as _z,Text as xD}from"ink";import{Spinner as RQ4}from"@inkjs/ui";import{jsx as dJ,jsxs as ih}from"react/jsx-runtime";function U6$({status:$}){if($==="pending")return dJ(RQ4,{label:""});return dJ(xD,{color:"green",children:"\u2713"})}function qQ4($){return`${$.name}: ${$.port||"...."}`}function N6$({services:$,migrationsStatus:Z,home:Q,serverUrl:X}){return ih(_z,{flexDirection:"column",paddingBottom:1,children:[dJ(H6$,{version:tY0.version}),dJ(_z,{marginBottom:1,children:dJ(xD,{dimColor:!0,children:"\u2500".repeat(80)})}),dJ(_z,{children:ih(xD,{dimColor:!0,children:["Home: ",Q]})}),ih(_z,{gap:2,children:[$.map((Y)=>ih(_z,{gap:1,children:[dJ(xD,{children:qQ4(Y)}),dJ(U6$,{status:Y.status})]},Y.name)),ih(_z,{gap:1,children:[dJ(xD,{children:"Migrations"}),dJ(U6$,{status:Z})]})]}),dJ(_z,{children:X?ih(xD,{children:["Open in browser: ",dJ(xD,{color:"cyan",children:X})]}):dJ(xD,{dimColor:!0,children:"Starting..."})})]})}var B6$=D(()=>{Ys0();F6$()});import{Box as MQ4,Text as Jo}from"ink";import{jsx as Js0,jsxs as Gs0}from"react/jsx-runtime";function IQ4($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function O6$({logs:$}){return Js0(MQ4,{flexDirection:"column",children:$.map((Z,Q)=>{if(Z.rawLine)return Js0(Jo,{dimColor:!0,children:Z.rawLine},Q);let X=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return Gs0(Jo,{children:[Gs0(Jo,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),Js0(Jo,{color:IQ4(Z.status),children:Z.status}),Gs0(Jo,{dimColor:!0,children:[" ",X.padStart(8)]})]},Q)})})}var D6$=()=>{};var Ks0={};e(Ks0,{App:()=>SQ4});import{Box as VQ4}from"ink";import{useSyncExternalStore as kQ4}from"react";import{jsx as L6$,jsxs as CQ4}from"react/jsx-runtime";function SQ4({home:$}){let Z=kQ4(ea0,sa0);return CQ4(VQ4,{flexDirection:"column",children:[L6$(N6$,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),L6$(O6$,{logs:Z.logs})]})}var Ws0=D(()=>{B6$();D6$();Cz()});var LG="thread-gate",VN="decopilot-hosted-harness",kN="decopilot-hosted-harness-sandboxed",wG="automations",fD="background-tools",vz="task-board-github-reads";var w6$="11";function j6$($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:w6$,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var E6$=()=>{};import _Q4 from"pg";async function P6$($,Z){let{databaseUrl:Q,lockTimeoutMs:X=vQ4}=$,Y=$.log??((W)=>console.log(W)),J=new _Q4.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",[z6$.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$(xQ4)}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)",[z6$.toString()])}catch{}await J.end().catch(()=>{})}}var z6$=8314027461559302n,vQ4=600000,xQ4=500;var A6$=D(()=>{i$()});function fQ4(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function Hs0($,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 T6$(){let $=fQ4();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:Hs0($,"--cpu-prof-dir")??process.cwd(),name:Hs0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(Hs0($,"--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 R6$(){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 q6$=()=>{};import*as bQ4 from"bun:jsc";function M6$(){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{yQ4()}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=gQ4()?.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 yQ4,gQ4;var I6$=D(()=>{({startSamplingProfiler:yQ4,samplingProfilerStackTraces:gQ4}=bQ4)});function V6$(){T6$();let $=[R6$(),E0$(),M6$()];return()=>{for(let Z of $)Z()}}var k6$=D(()=>{Kn0();q6$();I6$()});var xz=v((S6$)=>{Object.defineProperty(S6$,"__esModule",{value:!0});S6$.RepublishHeaders=S6$.DirectMsgHeaders=S6$.JsHeaders=S6$.AdvisoryKind=void 0;S6$.isOrderedPushConsumerOptions=hQ4;S6$.isPullConsumer=uQ4;S6$.isPushConsumer=lQ4;S6$.isBoundPushConsumerOptions=cQ4;function hQ4($){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 uQ4($){return $.isPullConsumer()}function lQ4($){return $.isPushConsumer()}function cQ4($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}S6$.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"};S6$.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"};S6$.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};S6$.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var iJ=v((_6$)=>{Object.defineProperty(_6$,"__esModule",{value:!0});_6$.TD=_6$.TE=_6$.Empty=void 0;_6$.encode=aQ4;_6$.decode=sQ4;_6$.Empty=new Uint8Array(0);_6$.TE=new TextEncoder;_6$.TD=new TextDecoder;function rQ4(...$){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 aQ4(...$){let Z=[];for(let Q=0;Q<$.length;Q++)Z.push(_6$.TE.encode($[Q]));if(Z.length===0)return _6$.Empty;if(Z.length===1)return Z[0];return rQ4(...Z)}function sQ4($){if(!$||$.length===0)return"";return _6$.TD.decode($)}});var pJ=v((f6$)=>{Object.defineProperty(f6$,"__esModule",{value:!0});f6$.errors=f6$.PermissionViolationError=f6$.NoRespondersError=f6$.TimeoutError=f6$.RequestError=f6$.ProtocolError=f6$.ConnectionError=f6$.DrainingConnectionError=f6$.ClosedConnectionError=f6$.AuthorizationError=f6$.UserAuthenticationExpiredError=f6$.InvalidOperationError=f6$.InvalidArgumentError=f6$.InvalidSubjectError=void 0;class Us0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}f6$.InvalidSubjectError=Us0;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)}}f6$.InvalidArgumentError=rY0;class Ns0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}f6$.InvalidOperationError=Ns0;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}}f6$.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}}f6$.AuthorizationError=sY0;class Bs0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}f6$.ClosedConnectionError=Bs0;class Os0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}f6$.DrainingConnectionError=Os0;class Ds0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}f6$.ConnectionError=Ds0;class Ls0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}f6$.ProtocolError=Ls0;class ws0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof eY0}}f6$.RequestError=ws0;class js0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}f6$.TimeoutError=js0;class eY0 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}f6$.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)}}f6$.PermissionViolationError=$J0;f6$.errors={AuthorizationError:sY0,ClosedConnectionError:Bs0,ConnectionError:Ds0,DrainingConnectionError:Os0,InvalidArgumentError:rY0,InvalidOperationError:Ns0,InvalidSubjectError:Us0,NoRespondersError:eY0,PermissionViolationError:$J0,ProtocolError:Ls0,RequestError:ws0,TimeoutError:js0,UserAuthenticationExpiredError:aY0}});var pK=v((u6$)=>{Object.defineProperty(u6$,"__esModule",{value:!0});u6$.SimpleMutex=u6$.Perf=void 0;u6$.extend=DX4;u6$.render=LX4;u6$.timeout=wX4;u6$.delay=jX4;u6$.deadline=EX4;u6$.deferred=zs0;u6$.debugDeferred=zX4;u6$.shuffle=PX4;u6$.collect=AX4;u6$.jitter=h6$;u6$.backoff=TX4;u6$.nanos=RX4;u6$.millis=qX4;u6$.randomToken=VX4;var OX4=iJ(),Es0=pJ();function DX4($,...Z){for(let Q=0;Q<Z.length;Q++){let X=Z[Q];Object.keys(X).forEach(function(Y){$[Y]=X[Y]})}return $}function LX4($){return OX4.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function wX4($,Z=!0){let Q=Z?new Es0.TimeoutError:null,X,Y,J=new Promise((G,K)=>{X={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(Q===null)K(new Es0.TimeoutError);else K(Q)},$)});return Object.assign(J,X)}function jX4($=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 EX4($,Z=1000){let Q=zs0(),X=setTimeout(()=>{Q.reject(new Es0.TimeoutError)},Z);try{return await Promise.race([$,Q])}finally{clearTimeout(X)}}function zs0(){let $={},Z=new Promise((Q,X)=>{$={resolve:Q,reject:X}});return Object.assign(Z,$)}function zX4(){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 PX4($){for(let Z=$.length-1;Z>0;Z--){let Q=Math.floor(Math.random()*(Z+1));[$[Z],$[Q]]=[$[Q],$[Z]]}return $}async function AX4($){let Z=[];for await(let Q of $)Z.push(Q);return Z}class y6${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})}),$}}u6$.Perf=y6$;class g6${max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=zs0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}u6$.SimpleMutex=g6$;function h6$($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function TX4($=[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 h6$(Q>Z?$[Z]:$[Q])}}}function RX4($){return $*1e6}function qX4($){return Math.floor($/1e6)}var MX4="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",SN=new Uint8Array(62);for(let $=0;$<62;$++)SN[$]=MX4.charCodeAt($);var IX4=218340105584896;function VX4(){let $=Math.floor(Math.random()*IX4),Z=$%62,Q=SN[Z];$=($-Z)/62,Z=$%62;let X=SN[Z];$=($-Z)/62,Z=$%62;let Y=SN[Z];$=($-Z)/62,Z=$%62;let J=SN[Z];$=($-Z)/62,Z=$%62;let G=SN[Z];$=($-Z)/62,Z=$%62;let K=SN[Z];$=($-Z)/62,Z=$%62;let W=SN[Z];$=($-Z)/62;let H=SN[$];return String.fromCharCode(Q,X,Y,J,G,K,W,H)}});var t6$=v((p6$)=>{Object.defineProperty(p6$,"__esModule",{value:!0});p6$.nuid=p6$.NuidImpl=void 0;var dX4="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",bD=62,QJ0=12,d6$=10,c6$=33,iX4=333,m6$=QJ0+d6$,As0=new Uint8Array(bD);for(let $=0;$<bD;$++)As0[$]=dX4.charCodeAt($);var ZJ0=4294967296,i6$=BigInt(bD)**BigInt(d6$),Go=Number(i6$/(1n<<32n)),Ps0=Number(i6$%(1n<<32n));function pX4($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function nX4($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else pX4($)}class Ts0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(m6$),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()*(Go+1)),this.seqLo=Math.floor(Math.random()*ZJ0);while($++<8&&this.seqHi===Go&&this.seqLo>=Ps0);if(this.seqHi===Go&&this.seqLo>=Ps0)this.seqLo=0;this.inc=Math.random()*(iX4-c6$)+c6$|0}setPre(){nX4(this.cbuf);for(let $=0;$<QJ0;$++)this.buf[$]=As0[this.cbuf[$]%bD]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let Q=m6$-1;Q>=QJ0;Q--){let X=Math.floor($/bD),J=($-X*bD)*ZJ0+Z,G=Math.floor(J/bD),K=J-G*bD;this.buf[Q]=As0[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>Go||this.seqHi===Go&&this.seqLo>=Ps0)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()}}p6$.NuidImpl=Ts0;p6$.nuid=new Ts0});var s6$=v((r6$)=>{Object.defineProperty(r6$,"__esModule",{value:!0});r6$.nuid=r6$.Nuid=void 0;var o6$=t6$();r6$.Nuid=o6$.NuidImpl;r6$.nuid=o6$.nuid});var YJ0=v((XJ0)=>{Object.defineProperty(XJ0,"__esModule",{value:!0});XJ0.nuid=XJ0.Nuid=void 0;var e6$=s6$();Object.defineProperty(XJ0,"Nuid",{enumerable:!0,get:function(){return e6$.Nuid}});Object.defineProperty(XJ0,"nuid",{enumerable:!0,get:function(){return e6$.nuid}})});var yD=v(($5$)=>{Object.defineProperty($5$,"__esModule",{value:!0});$5$.DEFAULT_HOST=$5$.DEFAULT_PORT=$5$.Match=void 0;$5$.syncIterator=eX4;$5$.createInbox=$Y4;var aX4=YJ0(),sX4=pJ();$5$.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function eX4($){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 $Y4($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw sX4.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${aX4.nuid.next()}`}$5$.DEFAULT_PORT=4222;$5$.DEFAULT_HOST="127.0.0.1"});var Ko=v((Y5$)=>{Object.defineProperty(Y5$,"__esModule",{value:!0});Y5$.DataBuffer=void 0;var Q5$=iJ();class X5${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 Q5$.TE.encode($)}static toAscii($){return Q5$.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}}Y5$.DataBuffer=X5$});var fz=v((K5$)=>{Object.defineProperty(K5$,"__esModule",{value:!0});K5$.LF=K5$.CR=K5$.CRLF=K5$.CR_LF_LEN=K5$.CR_LF=void 0;K5$.setTransportFactory=WY4;K5$.defaultPort=HY4;K5$.getUrlParseFn=FY4;K5$.newTransport=UY4;K5$.getResolveFn=NY4;K5$.protoLen=G5$;K5$.extractProtocolMessage=BY4;var JY4=iJ(),GY4=yD(),KY4=Ko(),nJ;function WY4($){nJ=$}function HY4(){return nJ!==void 0&&nJ.defaultPort!==void 0?nJ.defaultPort:GY4.DEFAULT_PORT}function FY4(){return nJ!==void 0&&nJ.urlParseFn?nJ.urlParseFn:void 0}function UY4(){if(!nJ||typeof nJ.factory!=="function")throw Error("transport fn is not set");return nJ.factory()}function NY4(){return nJ!==void 0&&nJ.dnsResolveFn?nJ.dnsResolveFn:void 0}K5$.CR_LF=`\r
2079
+ `);X=J.pop()??"";for(let G of J){let K=Bun.stripANSI(G).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;vD({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)vD({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:J})}})()}async function zQ4($){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 Yo(Number(Y)+1):await Yo(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});Qo();let F=EQ4(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)Zs0(N.stdout),Zs0(N.stderr);Xo(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 Xs0=D(()=>{ra0();Cz();$s0()});var tY0;var Ys0=D(()=>{tY0={name:"decocms",version:"4.368.0",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","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 AQ4,Text as K6$}from"ink";import{jsx as TQ4,jsxs as W6$}from"react/jsx-runtime";function H6$({version:$}){return W6$(AQ4,{flexDirection:"column",marginTop:1,children:[LY0.map((Z,Q)=>TQ4(K6$,{color:wY0[Q],children:Z},Q)),W6$(K6$,{dimColor:!0,children:[" v",$]})]})}var F6$=D(()=>{lt()});import{Box as _z,Text as xD}from"ink";import{Spinner as RQ4}from"@inkjs/ui";import{jsx as dJ,jsxs as ih}from"react/jsx-runtime";function U6$({status:$}){if($==="pending")return dJ(RQ4,{label:""});return dJ(xD,{color:"green",children:"\u2713"})}function qQ4($){return`${$.name}: ${$.port||"...."}`}function N6$({services:$,migrationsStatus:Z,home:Q,serverUrl:X}){return ih(_z,{flexDirection:"column",paddingBottom:1,children:[dJ(H6$,{version:tY0.version}),dJ(_z,{marginBottom:1,children:dJ(xD,{dimColor:!0,children:"\u2500".repeat(80)})}),dJ(_z,{children:ih(xD,{dimColor:!0,children:["Home: ",Q]})}),ih(_z,{gap:2,children:[$.map((Y)=>ih(_z,{gap:1,children:[dJ(xD,{children:qQ4(Y)}),dJ(U6$,{status:Y.status})]},Y.name)),ih(_z,{gap:1,children:[dJ(xD,{children:"Migrations"}),dJ(U6$,{status:Z})]})]}),dJ(_z,{children:X?ih(xD,{children:["Open in browser: ",dJ(xD,{color:"cyan",children:X})]}):dJ(xD,{dimColor:!0,children:"Starting..."})})]})}var B6$=D(()=>{Ys0();F6$()});import{Box as MQ4,Text as Jo}from"ink";import{jsx as Js0,jsxs as Gs0}from"react/jsx-runtime";function IQ4($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function O6$({logs:$}){return Js0(MQ4,{flexDirection:"column",children:$.map((Z,Q)=>{if(Z.rawLine)return Js0(Jo,{dimColor:!0,children:Z.rawLine},Q);let X=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return Gs0(Jo,{children:[Gs0(Jo,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),Js0(Jo,{color:IQ4(Z.status),children:Z.status}),Gs0(Jo,{dimColor:!0,children:[" ",X.padStart(8)]})]},Q)})})}var D6$=()=>{};var Ks0={};e(Ks0,{App:()=>SQ4});import{Box as VQ4}from"ink";import{useSyncExternalStore as kQ4}from"react";import{jsx as L6$,jsxs as CQ4}from"react/jsx-runtime";function SQ4({home:$}){let Z=kQ4(ea0,sa0);return CQ4(VQ4,{flexDirection:"column",children:[L6$(N6$,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),L6$(O6$,{logs:Z.logs})]})}var Ws0=D(()=>{B6$();D6$();Cz()});var LG="thread-gate",VN="decopilot-hosted-harness",kN="decopilot-hosted-harness-sandboxed",wG="automations",fD="background-tools",vz="task-board-github-reads";var w6$="11";function j6$($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:w6$,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var E6$=()=>{};import _Q4 from"pg";async function P6$($,Z){let{databaseUrl:Q,lockTimeoutMs:X=vQ4}=$,Y=$.log??((W)=>console.log(W)),J=new _Q4.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",[z6$.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$(xQ4)}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)",[z6$.toString()])}catch{}await J.end().catch(()=>{})}}var z6$=8314027461559302n,vQ4=600000,xQ4=500;var A6$=D(()=>{i$()});function fQ4(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function Hs0($,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 T6$(){let $=fQ4();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:Hs0($,"--cpu-prof-dir")??process.cwd(),name:Hs0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(Hs0($,"--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 R6$(){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 q6$=()=>{};import*as bQ4 from"bun:jsc";function M6$(){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{yQ4()}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=gQ4()?.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 yQ4,gQ4;var I6$=D(()=>{({startSamplingProfiler:yQ4,samplingProfilerStackTraces:gQ4}=bQ4)});function V6$(){T6$();let $=[R6$(),E0$(),M6$()];return()=>{for(let Z of $)Z()}}var k6$=D(()=>{Kn0();q6$();I6$()});var xz=v((S6$)=>{Object.defineProperty(S6$,"__esModule",{value:!0});S6$.RepublishHeaders=S6$.DirectMsgHeaders=S6$.JsHeaders=S6$.AdvisoryKind=void 0;S6$.isOrderedPushConsumerOptions=hQ4;S6$.isPullConsumer=uQ4;S6$.isPushConsumer=lQ4;S6$.isBoundPushConsumerOptions=cQ4;function hQ4($){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 uQ4($){return $.isPullConsumer()}function lQ4($){return $.isPushConsumer()}function cQ4($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}S6$.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"};S6$.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"};S6$.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};S6$.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var iJ=v((_6$)=>{Object.defineProperty(_6$,"__esModule",{value:!0});_6$.TD=_6$.TE=_6$.Empty=void 0;_6$.encode=aQ4;_6$.decode=sQ4;_6$.Empty=new Uint8Array(0);_6$.TE=new TextEncoder;_6$.TD=new TextDecoder;function rQ4(...$){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 aQ4(...$){let Z=[];for(let Q=0;Q<$.length;Q++)Z.push(_6$.TE.encode($[Q]));if(Z.length===0)return _6$.Empty;if(Z.length===1)return Z[0];return rQ4(...Z)}function sQ4($){if(!$||$.length===0)return"";return _6$.TD.decode($)}});var pJ=v((f6$)=>{Object.defineProperty(f6$,"__esModule",{value:!0});f6$.errors=f6$.PermissionViolationError=f6$.NoRespondersError=f6$.TimeoutError=f6$.RequestError=f6$.ProtocolError=f6$.ConnectionError=f6$.DrainingConnectionError=f6$.ClosedConnectionError=f6$.AuthorizationError=f6$.UserAuthenticationExpiredError=f6$.InvalidOperationError=f6$.InvalidArgumentError=f6$.InvalidSubjectError=void 0;class Us0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}f6$.InvalidSubjectError=Us0;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)}}f6$.InvalidArgumentError=rY0;class Ns0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}f6$.InvalidOperationError=Ns0;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}}f6$.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}}f6$.AuthorizationError=sY0;class Bs0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}f6$.ClosedConnectionError=Bs0;class Os0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}f6$.DrainingConnectionError=Os0;class Ds0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}f6$.ConnectionError=Ds0;class Ls0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}f6$.ProtocolError=Ls0;class ws0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof eY0}}f6$.RequestError=ws0;class js0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}f6$.TimeoutError=js0;class eY0 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}f6$.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)}}f6$.PermissionViolationError=$J0;f6$.errors={AuthorizationError:sY0,ClosedConnectionError:Bs0,ConnectionError:Ds0,DrainingConnectionError:Os0,InvalidArgumentError:rY0,InvalidOperationError:Ns0,InvalidSubjectError:Us0,NoRespondersError:eY0,PermissionViolationError:$J0,ProtocolError:Ls0,RequestError:ws0,TimeoutError:js0,UserAuthenticationExpiredError:aY0}});var pK=v((u6$)=>{Object.defineProperty(u6$,"__esModule",{value:!0});u6$.SimpleMutex=u6$.Perf=void 0;u6$.extend=DX4;u6$.render=LX4;u6$.timeout=wX4;u6$.delay=jX4;u6$.deadline=EX4;u6$.deferred=zs0;u6$.debugDeferred=zX4;u6$.shuffle=PX4;u6$.collect=AX4;u6$.jitter=h6$;u6$.backoff=TX4;u6$.nanos=RX4;u6$.millis=qX4;u6$.randomToken=VX4;var OX4=iJ(),Es0=pJ();function DX4($,...Z){for(let Q=0;Q<Z.length;Q++){let X=Z[Q];Object.keys(X).forEach(function(Y){$[Y]=X[Y]})}return $}function LX4($){return OX4.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function wX4($,Z=!0){let Q=Z?new Es0.TimeoutError:null,X,Y,J=new Promise((G,K)=>{X={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(Q===null)K(new Es0.TimeoutError);else K(Q)},$)});return Object.assign(J,X)}function jX4($=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 EX4($,Z=1000){let Q=zs0(),X=setTimeout(()=>{Q.reject(new Es0.TimeoutError)},Z);try{return await Promise.race([$,Q])}finally{clearTimeout(X)}}function zs0(){let $={},Z=new Promise((Q,X)=>{$={resolve:Q,reject:X}});return Object.assign(Z,$)}function zX4(){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 PX4($){for(let Z=$.length-1;Z>0;Z--){let Q=Math.floor(Math.random()*(Z+1));[$[Z],$[Q]]=[$[Q],$[Z]]}return $}async function AX4($){let Z=[];for await(let Q of $)Z.push(Q);return Z}class y6${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})}),$}}u6$.Perf=y6$;class g6${max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=zs0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}u6$.SimpleMutex=g6$;function h6$($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function TX4($=[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 h6$(Q>Z?$[Z]:$[Q])}}}function RX4($){return $*1e6}function qX4($){return Math.floor($/1e6)}var MX4="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",SN=new Uint8Array(62);for(let $=0;$<62;$++)SN[$]=MX4.charCodeAt($);var IX4=218340105584896;function VX4(){let $=Math.floor(Math.random()*IX4),Z=$%62,Q=SN[Z];$=($-Z)/62,Z=$%62;let X=SN[Z];$=($-Z)/62,Z=$%62;let Y=SN[Z];$=($-Z)/62,Z=$%62;let J=SN[Z];$=($-Z)/62,Z=$%62;let G=SN[Z];$=($-Z)/62,Z=$%62;let K=SN[Z];$=($-Z)/62,Z=$%62;let W=SN[Z];$=($-Z)/62;let H=SN[$];return String.fromCharCode(Q,X,Y,J,G,K,W,H)}});var t6$=v((p6$)=>{Object.defineProperty(p6$,"__esModule",{value:!0});p6$.nuid=p6$.NuidImpl=void 0;var dX4="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",bD=62,QJ0=12,d6$=10,c6$=33,iX4=333,m6$=QJ0+d6$,As0=new Uint8Array(bD);for(let $=0;$<bD;$++)As0[$]=dX4.charCodeAt($);var ZJ0=4294967296,i6$=BigInt(bD)**BigInt(d6$),Go=Number(i6$/(1n<<32n)),Ps0=Number(i6$%(1n<<32n));function pX4($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function nX4($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else pX4($)}class Ts0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(m6$),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()*(Go+1)),this.seqLo=Math.floor(Math.random()*ZJ0);while($++<8&&this.seqHi===Go&&this.seqLo>=Ps0);if(this.seqHi===Go&&this.seqLo>=Ps0)this.seqLo=0;this.inc=Math.random()*(iX4-c6$)+c6$|0}setPre(){nX4(this.cbuf);for(let $=0;$<QJ0;$++)this.buf[$]=As0[this.cbuf[$]%bD]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let Q=m6$-1;Q>=QJ0;Q--){let X=Math.floor($/bD),J=($-X*bD)*ZJ0+Z,G=Math.floor(J/bD),K=J-G*bD;this.buf[Q]=As0[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>Go||this.seqHi===Go&&this.seqLo>=Ps0)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()}}p6$.NuidImpl=Ts0;p6$.nuid=new Ts0});var s6$=v((r6$)=>{Object.defineProperty(r6$,"__esModule",{value:!0});r6$.nuid=r6$.Nuid=void 0;var o6$=t6$();r6$.Nuid=o6$.NuidImpl;r6$.nuid=o6$.nuid});var YJ0=v((XJ0)=>{Object.defineProperty(XJ0,"__esModule",{value:!0});XJ0.nuid=XJ0.Nuid=void 0;var e6$=s6$();Object.defineProperty(XJ0,"Nuid",{enumerable:!0,get:function(){return e6$.Nuid}});Object.defineProperty(XJ0,"nuid",{enumerable:!0,get:function(){return e6$.nuid}})});var yD=v(($5$)=>{Object.defineProperty($5$,"__esModule",{value:!0});$5$.DEFAULT_HOST=$5$.DEFAULT_PORT=$5$.Match=void 0;$5$.syncIterator=eX4;$5$.createInbox=$Y4;var aX4=YJ0(),sX4=pJ();$5$.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function eX4($){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 $Y4($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw sX4.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${aX4.nuid.next()}`}$5$.DEFAULT_PORT=4222;$5$.DEFAULT_HOST="127.0.0.1"});var Ko=v((Y5$)=>{Object.defineProperty(Y5$,"__esModule",{value:!0});Y5$.DataBuffer=void 0;var Q5$=iJ();class X5${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 Q5$.TE.encode($)}static toAscii($){return Q5$.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}}Y5$.DataBuffer=X5$});var fz=v((K5$)=>{Object.defineProperty(K5$,"__esModule",{value:!0});K5$.LF=K5$.CR=K5$.CRLF=K5$.CR_LF_LEN=K5$.CR_LF=void 0;K5$.setTransportFactory=WY4;K5$.defaultPort=HY4;K5$.getUrlParseFn=FY4;K5$.newTransport=UY4;K5$.getResolveFn=NY4;K5$.protoLen=G5$;K5$.extractProtocolMessage=BY4;var JY4=iJ(),GY4=yD(),KY4=Ko(),nJ;function WY4($){nJ=$}function HY4(){return nJ!==void 0&&nJ.defaultPort!==void 0?nJ.defaultPort:GY4.DEFAULT_PORT}function FY4(){return nJ!==void 0&&nJ.urlParseFn?nJ.urlParseFn:void 0}function UY4(){if(!nJ||typeof nJ.factory!=="function")throw Error("transport fn is not set");return nJ.factory()}function NY4(){return nJ!==void 0&&nJ.dnsResolveFn?nJ.dnsResolveFn:void 0}K5$.CR_LF=`\r
2080
2080
  `;K5$.CR_LF_LEN=K5$.CR_LF.length;K5$.CRLF=KY4.DataBuffer.fromAscii(K5$.CR_LF);K5$.CR=new Uint8Array(K5$.CRLF)[0];K5$.LF=new Uint8Array(K5$.CRLF)[1];function G5$($){for(let Z=0;Z<$.length;Z++){let Q=Z+1;if($.byteLength>Q&&$[Z]===K5$.CR&&$[Q]===K5$.LF)return Q+1}return 0}function BY4($){let Z=G5$($);if(Z>0){let X=new Uint8Array($).slice(0,Z);return JY4.TD.decode(X)}return""}});var Vs0=v((D5$)=>{Object.defineProperty(D5$,"__esModule",{value:!0});D5$.ipV4=N5$;D5$.isIP=RY4;D5$.parseIP=B5$;var Wo=4,bz=16,JJ0=48,U5$=57,H5$=65,AY4=70,F5$=97,TY4=102,Is0=16777215;function N5$($,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 RY4($){return B5$($)!==void 0}function B5$($){for(let Z=0;Z<$.length;Z++)switch($[Z]){case".":return O5$($);case":":return qY4($)}return}function O5$($){let Z=new Uint8Array(Wo);for(let Q=0;Q<Wo;Q++){if($.length===0)return;if(Q>0){if($[0]!==".")return;$=$.substring(1)}let{n:X,c:Y,ok:J}=MY4($);if(!J||X>255)return;$=$.substring(Y),Z[Q]=X}return N5$(Z[0],Z[1],Z[2],Z[3])}function qY4($){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}=IY4($);if(!G||Y>65535)return;if(J<$.length&&$[J]==="."){if(Q<0&&X!=bz-Wo)return;if(X+Wo>bz)return;let K=O5$($);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+=Wo;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 MY4($){let Z=0,Q=0;for(Z=0;Z<$.length&&JJ0<=$.charCodeAt(Z)&&$.charCodeAt(Z)<=U5$;Z++)if(Q=Q*10+($.charCodeAt(Z)-JJ0),Q>=Is0)return{n:Is0,c:Z,ok:!1};if(Z===0)return{n:0,c:0,ok:!1};return{n:Q,c:Z,ok:!0}}function IY4($){let Z=0,Q=0;for(Q=0;Q<$.length;Q++){if(JJ0<=$.charCodeAt(Q)&&$.charCodeAt(Q)<=U5$)Z*=16,Z+=$.charCodeAt(Q)-JJ0;else if(F5$<=$.charCodeAt(Q)&&$.charCodeAt(Q)<=TY4)Z*=16,Z+=$.charCodeAt(Q)-F5$+10;else if(H5$<=$.charCodeAt(Q)&&$.charCodeAt(Q)<=AY4)Z*=16,Z+=$.charCodeAt(Q)-H5$+10;else break;if(Z>=Is0)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 xs0=v((w5$)=>{Object.defineProperty(w5$,"__esModule",{value:!0});w5$.Servers=w5$.ServerImpl=void 0;w5$.isIPV4OrHostname=L5$;w5$.hostPort=vs0;var ks0=fz(),Ss0=pK(),Cs0=Vs0(),CY4=yD(),_Y4=pJ();function L5$($){if($.indexOf("[")!==-1||$.indexOf("::")!==-1)return!1;if($.indexOf(".")!==-1)return!0;if($.split(":").length<=2)return!0;return!1}function _s0($){return!L5$($)}function vY4($){let Q=$.toUpperCase().indexOf("::FFFF:");if(Q!==-1&&$.indexOf(".")!==-1){let X=$.substring(Q+7);return X=X.replace("[",""),X.replace("]","")}return $}function vs0($){if($=$.trim(),$.match(/^(.*:\/\/)(.*)/m))$=$.replace(/^(.*:\/\/)(.*)/gm,"$2");if($=vY4($),_s0($)&&$.indexOf("[")===-1)$=`[${$}]`;let Z=_s0($)?$.match(/(]:)(\d+)/):$.match(/(:)(\d+)/),Q=Z&&Z.length===3&&Z[1]&&Z[2]?parseInt(Z[2]):CY4.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 ph{src;listen;hostname;port;didConnect;reconnects;lastConnect;gossiped;tlsName;resolves;constructor($,Z=!1){this.src=$,this.tlsName="";let Q=vs0($);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,Cs0.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}://${_s0(X)?"["+X+"]":X}`);J.port=`${this.port}`;let G=new ph(J.host,!1);G.tlsName=this.hostname,Z.push(G)}}if($.randomize)(0,Ss0.shuffle)(Z);return this.resolves=Z,Z}}w5$.ServerImpl=ph;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 _Y4.InvalidArgumentError.format("servers","cannot be empty");let Z=(0,ks0.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}=vs0(Y),G=Q.get(J);if(G)G.gossiped=!1,X.push(G);else X.push(new ph(Y))}if(this.randomize)(0,Ss0.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,Cs0.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,ks0.getUrlParseFn)();$=Q?Q($):$;let X=new ph($,Z);if((0,Cs0.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,ks0.getUrlParseFn)(),J=new Map;if($.connect_urls&&$.connect_urls.length>0)$.connect_urls.forEach((K)=>{K=Y?Y(K,Z):K;let W=new ph(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,Ss0.shuffle)(W),this.servers=K?[K,...W]:W}return{added:Q,deleted:X}}}w5$.Servers=GJ0});var KJ0=v((P5$)=>{Object.defineProperty(P5$,"__esModule",{value:!0});P5$.QueuedIteratorImpl=void 0;var fs0=pK(),E5$=pJ();class z5${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,fs0.deferred)(),this.yields=[],this.iterClosed=(0,fs0.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 E5$.InvalidOperationError("iterator cannot be used when a callback is registered");if(this.yielding)throw new E5$.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,fs0.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}}P5$.QueuedIteratorImpl=z5$});var bs0=v((q5$)=>{Object.defineProperty(q5$,"__esModule",{value:!0});q5$.MuxSubscription=void 0;var yY4=yD(),T5$=pJ();class R5${baseInbox;reqs;constructor(){this.reqs=new Map}size(){return this.reqs.size}init($){return this.baseInbox=`${(0,yY4.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 T5$.NoRespondersError(X.requestSubject):null;X.resolver($,Z)}}}}close(){let $=new T5$.RequestError("connection closed");this.reqs.forEach((Z)=>{Z.resolver($,{})})}}q5$.MuxSubscription=R5$});var ys0=v((V5$)=>{Object.defineProperty(V5$,"__esModule",{value:!0});V5$.Heartbeat=void 0;var gY4=pK();class I5${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,gY4.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})}}V5$.Heartbeat=I5$});var us0=v((v5$)=>{Object.defineProperty(v5$,"__esModule",{value:!0});v5$.DenoBuffer=v5$.MAX_SIZE=v5$.AssertionError=void 0;v5$.assert=C5$;v5$.concat=_5$;v5$.append=uY4;v5$.readAll=lY4;v5$.writeAll=cY4;var hY4=iJ();class gs0 extends Error{constructor($){super($);this.name="AssertionError"}}v5$.AssertionError=gs0;function C5$($,Z="Assertion failed."){if(!$)throw new gs0(Z)}var S5$=32768;v5$.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 _5$($,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 uY4($,Z){return _5$($,Uint8Array.of(Z))}class hs0{_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($){C5$($<=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(hY4.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+$>v5$.MAX_SIZE)throw Error("The buffer cannot be grown beyond the maximum size.");else{let Y=new Uint8Array(Math.min(2*X+$,v5$.MAX_SIZE));WJ0(this._buf.subarray(this._off),Y),this._buf=Y}return this._off=0,this._reslice(Math.min(Z+$,v5$.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(S5$);while(!0){let X=this.capacity-this.length<S5$,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}}}v5$.DenoBuffer=hs0;function lY4($){let Z=new hs0;return Z.readFrom($),Z.bytes()}function cY4($,Z){let Q=0;while(Q<Z.length)Q+=$.write(Z.subarray(Q))}});var ms0=v((g5$)=>{Object.defineProperty(g5$,"__esModule",{value:!0});g5$.cc=g5$.State=g5$.Parser=g5$.Kind=void 0;g5$.describe=oY4;var ls0=us0(),cs0=iJ();g5$.Kind={OK:0,ERR:1,MSG:2,INFO:3,PING:4,PONG:5};function oY4($){let Z,Q="";switch($.kind){case g5$.Kind.MSG:Z="MSG";break;case g5$.Kind.OK:Z="OK";break;case g5$.Kind.ERR:Z="ERR",Q=cs0.TD.decode($.data);break;case g5$.Kind.PING:Z="PING";break;case g5$.Kind.PONG:Z="PONG";break;case g5$.Kind.INFO:Z="INFO",Q=cs0.TD.decode($.data)}return`${Z}: ${Q}`}function f5$(){let $={};return $.sid=-1,$.hdr=-1,$.size=-1,$}var b5$=48,rY4=57,nh=67108864;class y5${dispatcher;state;as;drop;hdr;ma;argBuf;msgBuf;constructor($){this.dispatcher=$,this.state=g5$.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 g5$.State.OP_START:switch(Q){case g5$.cc.M:case g5$.cc.m:this.state=g5$.State.OP_M,this.hdr=-1,this.ma=f5$();break;case g5$.cc.H:case g5$.cc.h:this.state=g5$.State.OP_H,this.hdr=0,this.ma=f5$();break;case g5$.cc.P:case g5$.cc.p:this.state=g5$.State.OP_P;break;case g5$.cc.PLUS:this.state=g5$.State.OP_PLUS;break;case g5$.cc.MINUS:this.state=g5$.State.OP_MINUS;break;case g5$.cc.I:case g5$.cc.i:this.state=g5$.State.OP_I;break;default:throw this.fail($.subarray(Z))}break;case g5$.State.OP_H:switch(Q){case g5$.cc.M:case g5$.cc.m:this.state=g5$.State.OP_M;break;default:throw this.fail($.subarray(Z))}break;case g5$.State.OP_M:switch(Q){case g5$.cc.S:case g5$.cc.s:this.state=g5$.State.OP_MS;break;default:throw this.fail($.subarray(Z))}break;case g5$.State.OP_MS:switch(Q){case g5$.cc.G:case g5$.cc.g:this.state=g5$.State.OP_MSG;break;default:throw this.fail($.subarray(Z))}break;case g5$.State.OP_MSG:switch(Q){case g5$.cc.SPACE:case g5$.cc.TAB:this.state=g5$.State.OP_MSG_SPC;break;default:throw this.fail($.subarray(Z))}break;case g5$.State.OP_MSG_SPC:switch(Q){case g5$.cc.SPACE:case g5$.cc.TAB:continue;default:this.state=g5$.State.MSG_ARG,this.as=Z}break;case g5$.State.MSG_ARG:switch(Q){case g5$.cc.CR:this.drop=1;break;case g5$.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=g5$.State.MSG_PAYLOAD,Z=this.as+this.ma.size-1;break}default:if(this.argBuf)this.argBuf.writeByte(Q)}break;case g5$.State.MSG_PAYLOAD:if(this.msgBuf)if(this.msgBuf.length>=this.ma.size){let X=this.msgBuf.bytes({copy:!1});this.dispatcher.push({kind:g5$.Kind.MSG,msg:this.ma,data:X}),this.argBuf=void 0,this.msgBuf=void 0,this.state=g5$.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:g5$.Kind.MSG,msg:this.ma,data:$.subarray(this.as,Z)}),this.argBuf=void 0,this.msgBuf=void 0,this.state=g5$.State.MSG_END;break;case g5$.State.MSG_END:switch(Q){case g5$.cc.NL:this.drop=0,this.as=Z+1,this.state=g5$.State.OP_START;break;default:continue}break;case g5$.State.OP_PLUS:switch(Q){case g5$.cc.O:case g5$.cc.o:this.state=g5$.State.OP_PLUS_O;break;default:throw this.fail($.subarray(Z))}break;case g5$.State.OP_PLUS_O:switch(Q){case g5$.cc.K:case g5$.cc.k:this.state=g5$.State.OP_PLUS_OK;break;default:throw this.fail($.subarray(Z))}break;case g5$.State.OP_PLUS_OK:switch(Q){case g5$.cc.NL:this.dispatcher.push({kind:g5$.Kind.OK}),this.drop=0,this.state=g5$.State.OP_START;break}break;case g5$.State.OP_MINUS:switch(Q){case g5$.cc.E:case g5$.cc.e:this.state=g5$.State.OP_MINUS_E;break;default:throw this.fail($.subarray(Z))}break;case g5$.State.OP_MINUS_E:switch(Q){case g5$.cc.R:case g5$.cc.r:this.state=g5$.State.OP_MINUS_ER;break;default:throw this.fail($.subarray(Z))}break;case g5$.State.OP_MINUS_ER:switch(Q){case g5$.cc.R:case g5$.cc.r:this.state=g5$.State.OP_MINUS_ERR;break;default:throw this.fail($.subarray(Z))}break;case g5$.State.OP_MINUS_ERR:switch(Q){case g5$.cc.SPACE:case g5$.cc.TAB:this.state=g5$.State.OP_MINUS_ERR_SPC;break;default:throw this.fail($.subarray(Z))}break;case g5$.State.OP_MINUS_ERR_SPC:switch(Q){case g5$.cc.SPACE:case g5$.cc.TAB:continue;default:this.state=g5$.State.MINUS_ERR_ARG,this.as=Z}break;case g5$.State.MINUS_ERR_ARG:switch(Q){case g5$.cc.CR:this.drop=1;break;case g5$.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:g5$.Kind.ERR,data:X}),this.drop=0,this.as=Z+1,this.state=g5$.State.OP_START;break}default:if(this.argBuf)this.argBuf.write(Uint8Array.of(Q))}break;case g5$.State.OP_P:switch(Q){case g5$.cc.I:case g5$.cc.i:this.state=g5$.State.OP_PI;break;case g5$.cc.O:case g5$.cc.o:this.state=g5$.State.OP_PO;break;default:throw this.fail($.subarray(Z))}break;case g5$.State.OP_PO:switch(Q){case g5$.cc.N:case g5$.cc.n:this.state=g5$.State.OP_PON;break;default:throw this.fail($.subarray(Z))}break;case g5$.State.OP_PON:switch(Q){case g5$.cc.G:case g5$.cc.g:this.state=g5$.State.OP_PONG;break;default:throw this.fail($.subarray(Z))}break;case g5$.State.OP_PONG:switch(Q){case g5$.cc.NL:this.dispatcher.push({kind:g5$.Kind.PONG}),this.drop=0,this.state=g5$.State.OP_START;break}break;case g5$.State.OP_PI:switch(Q){case g5$.cc.N:case g5$.cc.n:this.state=g5$.State.OP_PIN;break;default:throw this.fail($.subarray(Z))}break;case g5$.State.OP_PIN:switch(Q){case g5$.cc.G:case g5$.cc.g:this.state=g5$.State.OP_PING;break;default:throw this.fail($.subarray(Z))}break;case g5$.State.OP_PING:switch(Q){case g5$.cc.NL:this.dispatcher.push({kind:g5$.Kind.PING}),this.drop=0,this.state=g5$.State.OP_START;break}break;case g5$.State.OP_I:switch(Q){case g5$.cc.N:case g5$.cc.n:this.state=g5$.State.OP_IN;break;default:throw this.fail($.subarray(Z))}break;case g5$.State.OP_IN:switch(Q){case g5$.cc.F:case g5$.cc.f:this.state=g5$.State.OP_INF;break;default:throw this.fail($.subarray(Z))}break;case g5$.State.OP_INF:switch(Q){case g5$.cc.O:case g5$.cc.o:this.state=g5$.State.OP_INFO;break;default:throw this.fail($.subarray(Z))}break;case g5$.State.OP_INFO:switch(Q){case g5$.cc.SPACE:case g5$.cc.TAB:this.state=g5$.State.OP_INFO_SPC;break;default:throw this.fail($.subarray(Z))}break;case g5$.State.OP_INFO_SPC:switch(Q){case g5$.cc.SPACE:case g5$.cc.TAB:continue;default:this.state=g5$.State.INFO_ARG,this.as=Z}break;case g5$.State.INFO_ARG:switch(Q){case g5$.cc.CR:this.drop=1;break;case g5$.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:g5$.Kind.INFO,data:X}),this.drop=0,this.as=Z+1,this.state=g5$.State.OP_START;break}default:if(this.argBuf)this.argBuf.writeByte(Q)}break;default:throw this.fail($.subarray(Z))}}if((this.state===g5$.State.MSG_ARG||this.state===g5$.State.MINUS_ERR_ARG||this.state===g5$.State.INFO_ARG)&&!this.argBuf)this.argBuf=new ls0.DenoBuffer($.subarray(this.as,Z-this.drop));if(this.state===g5$.State.MSG_PAYLOAD&&!this.msgBuf){if(!this.argBuf)this.cloneMsgArg();this.msgBuf=new ls0.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 ls0.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 g5$.cc.SPACE:case g5$.cc.TAB:case g5$.cc.CR:case g5$.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],nh);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],nh);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}: ${cs0.TD.decode($)}`)}processHeaderMsgArgs($){let Z=[],Q=-1;for(let X=0;X<$.length;X++)switch($[X]){case g5$.cc.SPACE:case g5$.cc.TAB:case g5$.cc.CR:case g5$.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],nh),this.ma.size=this.protoParseInt(Z[3],nh);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],nh),this.ma.size=this.protoParseInt(Z[4],nh);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]<b5$||$[X]>rY4)return-1;Q=Q*10+($[X]-b5$)}return Z!==void 0&&Q>Z?-1:Q}}g5$.Parser=y5$;g5$.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};g5$.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((u5$)=>{Object.defineProperty(u5$,"__esModule",{value:!0});u5$.MsgHdrsImpl=void 0;u5$.canonicalMIMEHeaderKey=is0;u5$.headers=eY4;var h5$=iJ(),nK=yD(),FJ0=pJ();function is0($){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 eY4($=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 th($,Z)}var ds0="NATS/1.0";class th{_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 th,X=h5$.TD.decode($).split(`\r
2081
2081
  `),Y=X[0];if(Y!==ds0){let J=Y.replace(ds0,"").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 $=ds0;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 Fq6($){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 ls$=200,$q6=12,Qq6,Xq6=300,VM0=3;var MG1=O(()=>{gZ();u$();IM0();Qq6={aheadBy:0,behindBy:0,files:[]}});function Nq6($){if(!$||$.includes(".."))return!1;return Uq6.test($)}function ds$($){let Z=typeof $.__resolveType==="string"?$.__resolveType:null;if(!Z||!Nq6(Z))return null;let{__resolveType:Q,...Y}=$;return{resolveType:Z,payload:Y}}function ms$($,Z){return`${$.replace(/\/+$/,"")}/deco/invoke/${Z}`}var Uq6;var is$=O(()=>{Uq6=/^[\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 ns$($,Z,Q,Y){let X=$.organization?.id;if(!X)throw new _w(yZ);let J=await jL($.storage,X,Y);if(J&&await BN($.storage,J)){let F=await lH($,J,{forceRefresh:!0}).catch((U)=>{throw new _w(U instanceof Error?U.message:yZ)});await ps$($,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 Su({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 cH(G,Y.owner,Y.name,$.db,$.vault).catch((F)=>{let{code:U,message:N}=E3$(F instanceof Error?F.message:String(F));throw U?new _w(N):F});await ps$($,Z,Q,{cloneUrl:W,gitUserName:K,gitUserEmail:H})}async function ps$($,Z,Q,Y){let{cloneUrl:X,gitUserName:J,gitUserEmail:G}=Y,W=Ed($),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,Bq6).catch(()=>K.statusText);throw Error(`Failed to refresh sandbox git credentials (${K.status}): ${H}`)}}var Bq6=10485760,_w;var IG1=O(()=>{KG();jM0();wa();hJ0();Bs();gZ();_w=class _w extends Error{constructor($){super($);this.name="GitPushAuthError"}}});function Oq6($){let Z=$.startsWith("thread:")?$.slice(7):$;if(!Z||Z.length>255||Z.includes("..")||Z.startsWith("/")||Z.endsWith("/")||Z.endsWith(".lock")||!Dq6.test(Z))throw Error(`Invalid branch name: ${$}`)}function fb($){return AbortSignal.any([$.req.raw.signal,AbortSignal.timeout(wq6)])}async function Eq6($,Z){let Q=$.var.studioContext,Y=rH(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=$f(G?.metadata?.runtime);if(W)return W;let K=Az0(Z.virtualMcpMetadata),H=K==="cms"?await GG1(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 zq6($){let Z=$.get("vmClaim");if(Z.runner)return Z.runner;try{return await gY($.var.studioContext)}catch{return null}}function bb($){let{runner:Z}=$.get("vmClaim");if(!Z)return $.json({error:"No sandbox runner configured"},503);return Z}async function Rd($){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 Vu(Y,J.id,X)}function VG1($,Z){let Q=Z instanceof Error?Z.message:String(Z),Y=nX$(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=UG(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 rs$($,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 ss$($){try{let Z=await Rd($),Q=await kM0(Z,$.get("vmClaim").branch);return $.json(Q,200,E5)}catch(Z){return VG1($,Z)}}function C10($,Z){let Y=(_M0.get($)??Promise.resolve()).catch(()=>{}).then(Z),X=Y.catch(()=>{});return _M0.set($,X),X.finally(()=>{if(_M0.get($)===X)_M0.delete($)}),Y}async function z7($,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??bb($);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?Pq6(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 Pq6($){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 vM0($,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 Aq6($){return as$.includes($)}var Dq6,ts$=524288,Lq6=65536,wq6=1e4,os$=2000,jq6,_M0,E5,as$,es$=()=>{let $=new e0;$.use("/:virtualMcpId/:branch/*",jq6),$.post("/:virtualMcpId/:branch/write",(Q)=>z7(Q,"/_sandbox/write",{forwardJsonBody:!0,signal:fb(Q)})),$.post("/:virtualMcpId/:branch/unlink",(Q)=>z7(Q,"/_sandbox/unlink",{forwardJsonBody:!0,signal:fb(Q)})),$.post("/:virtualMcpId/:branch/mkdir",(Q)=>z7(Q,"/_sandbox/mkdir",{forwardJsonBody:!0,signal:fb(Q)})),$.post("/:virtualMcpId/:branch/rename",(Q)=>z7(Q,"/_sandbox/rename",{forwardJsonBody:!0,signal:fb(Q)})),$.post("/:virtualMcpId/:branch/read",(Q)=>z7(Q,"/_sandbox/read",{forwardJsonBody:!0,signal:fb(Q)})),$.post("/:virtualMcpId/:branch/glob",(Q)=>z7(Q,"/_sandbox/glob",{forwardJsonBody:!0,signal:fb(Q)})),$.post("/:virtualMcpId/:branch/grep",(Q)=>z7(Q,"/_sandbox/grep",{forwardJsonBody:!0,signal:fb(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 z7(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 z7(Q,`/_sandbox/exec/${encodeURIComponent(Y)}/kill`)}),$.get("/:virtualMcpId/:branch/config",(Q)=>z7(Q,"/_sandbox/config",{method:"GET",map404to410:!0,redactRepoDir:!0})),$.put("/:virtualMcpId/:branch/config",(Q)=>z7(Q,"/_sandbox/config",{method:"PUT",forwardJsonBody:!0,map404to410:!0})),$.post("/:virtualMcpId/:branch/setup/:step",async(Q)=>{let Y=Q.req.param("step");if(!Y||!Aq6(Y))return Q.json({error:`step must be one of: ${as$.join(", ")}`},400);let X=Q.get("vmClaim"),J=await GG1(Q.var.studioContext,{claimName:X.claimName})==="gone"?null:await zq6(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=Kl(X.virtualMcpMetadata);try{await jz0({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 z7(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 UB(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 ar$(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 ss$(Q);return Z(Q)});let Z=(Q)=>z7(Q,"/_sandbox/git/status",{method:"GET",map404to410:!0,signal:AbortSignal.any([Q.req.raw.signal,AbortSignal.timeout(os$)])});return $.post("/:virtualMcpId/:branch/git/status",(Q)=>{if(Q.get("vmClaim").runtime==="cms")return ss$(Q);return z7(Q,"/_sandbox/git/status",{map404to410:!0,signal:AbortSignal.any([Q.req.raw.signal,AbortSignal.timeout(os$)])})}),$.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 Rd(Q),G=await SM0(J,Y.branch,X.base);return Q.json(G,200,E5)}catch(X){return VG1(Q,X)}return z7(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=bb(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 WG1(W,Y,X);let K=S10(J,G);if(K)await ns$(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 z7(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 Rd(Q);return await cs$(G,Y.branch,J),Q.json({ok:!0},200,E5)}catch(G){let W=UG(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,()=>z7(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 Rd(Q),H=W.base??await K.getDefaultBranch();return await CM0(K,Y.branch,H),Q.json({ok:!0},200,E5)}catch(W){return VG1(Q,W)}});let X=bb(Q);if(X instanceof Response)return X;let{claimName:J}=Q.get("vmClaim"),G=Q.var.studioContext;return C10(J,async()=>{try{await WG1(G,X,J)}catch(W){let K=W instanceof Error?W.message:String(W);return Q.json({error:K},502,E5)}return z7(Q,"/_sandbox/git/rebase",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/suggest-commit",x5({maxSize:ts$,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=bb(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]=FG1(F)&&N?[F,U]:X?await Promise.all([vM0(X,J,"/_sandbox/git/status","GET",{userId:G,projectRef:W}),vM0(X,J,"/_sandbox/git/diff","GET",{userId:G,projectRef:W})]):await(async()=>{let w=await Rd(Q);return Promise.all([kM0(w,Y.branch),SM0(w,Y.branch)])})();await EW(K,i(K).id,"suggesting a commit message");let L=await Ys$(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:ts$,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=bb(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]=FG1(F)&&N?[F,U]:X?await Promise.all([vM0(X,J,"/_sandbox/git/status","GET",{userId:G,projectRef:W}),vM0(X,J,"/_sandbox/git/diff","GET",{userId:G,projectRef:W})]):await(async()=>{let w=await Rd(Q);return Promise.all([kM0(w,Y.branch),SM0(w,Y.branch)])})();await EW(K,i(K).id,"judging whether a change needs review");let L=await Js$(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=bb(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 rs$(Q,`${W}${J}`)}),$.post("/:virtualMcpId/:branch/preview-invoke",x5({maxSize:Lq6,onError:(Q)=>Q.json({error:"Payload too large"},413)}),async(Q)=>{let Y=bb(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=ds$(G);if(!W)return Q.json({error:"Invalid or missing __resolveType"},400);let K=ms$(J,W.resolveType);return rs$(Q,K,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(W.payload),signal:AbortSignal.timeout(30000)})}),$};var $a$=O(()=>{y$();PK();jd();JG1();Ba();or$();LG();Hl();rr$();sW();WH();sr$();er$();Q$1();Oa();BG1();Gs$();gZ();h6();MG1();is$();IG1();Dq6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;jq6=wM0(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{Oq6(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 f01(Q,G),F=b01(H,Y),U=tr$({userId:F,projectRef:K}),N=W.metadata??null,B=await Eq6($,{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 gY(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()});_M0=new Map;E5={"Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache"};as$=["clone","install","start"]});function Za$($,Z,Q){let Y=kG1.get($);if(!Y)Y={pending:null,running:!1},kG1.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)Rq6($,Y);return J}async function Rq6($,Z){Z.running=!0;try{while(Z.pending){let Q=Z.pending;Z.pending=null;try{let Y=await qq6(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)kG1.delete($)}}async function qq6($){let{client:Z,branch:Q,packagePath:Y}=$.deps,X=new Map;for(let J=0;;J++){let G=await Td(Z,Q),W=await Z.listDecofileEntries(G,Y),K=TG1(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=RG1(K,N),L=`${JSON.stringify(B,null,2)}
2993
- `;await ys$(Z.repo,L);let w=D[0]??`${MM0(Y)}/${LG1(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 RG1(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 gs$(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:yW(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:Mq6($),expectedHead:G,changes:H});return N}catch(N){if(!(N instanceof j6)||J>=Tq6-1)throw N;await P$(T7(2000,200,J,2,0.5))}}}function Mq6($){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 W01(Y,$.deps.coAuthor)}var Tq6=3,kG1;var Qa$=O(()=>{NE0();zM0();Q6();u$();gZ();IM0();kG1=new Map});import{createHmac as Ya$,randomBytes as Iq6,timingSafeEqual as Vq6}from"crypto";function Xa$(){if(fM0)return fM0;let $;try{let Z=O0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return fM0=$?Buffer.from($):Iq6(32),fM0}function SG1($){let Z=$.nowMs??Date.now(),Q={o:$.organizationId,m:$.virtualMcpId,b:$.branch,e:Math.floor((Z+kq6)/1000)},Y=Buffer.from(JSON.stringify(Q)).toString("base64url"),X=Ya$("sha256",Xa$()).update(Y).digest("base64url");return`${Y}.${X}`}function Ja$($,Z){let Q=$.indexOf(".");if(Q<0)return!1;let Y=$.slice(0,Q),X=Buffer.from($.slice(Q+1)),J=Buffer.from(Ya$("sha256",Xa$()).update(Y).digest("base64url"));if(X.length!==J.length||!Vq6(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 kq6=21600000,fM0=null;var Ga$=O(()=>{Z$()});import{z as qd}from"zod";function Cq6($){return $.length>0&&$.length<=255&&!$.includes("..")&&!$.endsWith("/")&&!$.endsWith(".lock")&&Sq6.test($)}function Ua$($){return $.req.header("x-forwarded-host")??new URL($.req.url).host}async function _10($){let Z=$.get("decofileScope");return Vu($.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=UG(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 Na$(){let $=new e0;return $.use("/:virtualMcpId/:branch",Fa$),$.use("/:virtualMcpId/:branch/*",Fa$),$.get("/:virtualMcpId/:branch",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await _10(Z),X=await hs$(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=SG1({organizationId:Q.organizationId,virtualMcpId:Q.virtualMcpId,branch:Q.branch});return Z.body(`{"version":${JSON.stringify(X.sha)},"token":${JSON.stringify(G)},"apiHost":${JSON.stringify(Ua$(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",vq6,async(Z)=>{let Q=Z.get("decofileScope"),Y=Z.var.studioContext,X=fq6.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{EM0(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(OG1(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 Za$(`${Q.organizationId}/${Q.virtualMcpId}/${Q.branch}`,{client:G,branch:Q.branch,packagePath:Q.packagePath,coAuthor:Ed(Y)},J),K=SG1({organizationId:Q.organizationId,virtualMcpId:Q.virtualMcpId,branch:Q.branch});return Z.json({version:W,token:K,apiHost:Ua$(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(UG(W)!==409)throw W;await CM0(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(UG(G)===409)return Z.json({error:"merge-conflict"},409);if(UG(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(UG(J)===404)return Z.json({baseBranch:X,aheadBy:0,behindBy:0,lastCommitAt:null});throw J}}catch(Y){return v10(Z,Y)}}),$}var Sq6,Wa$=500,Ka$=1048576,Ha$=1024,_q6=8388608,vq6,fq6,Fa$;var Ba$=O(()=>{Y$1();zM0();y$();PK();JG1();jM0();IG1();gZ();Qa$();Ga$();MG1();IM0();WH();Sq6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;vq6=x5({maxSize:_q6,onError:($)=>$.json({error:"Payload too large"},413)}),fq6=qd.object({set:qd.record(qd.string(),qd.unknown()).optional(),delete:qd.array(qd.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)<=Wa$,{message:`Patch cannot touch more than ${Wa$} blocks`}).refine(($)=>Object.values($.set??{}).every((Z)=>JSON.stringify(Z).length<=Ka$),{message:`Each block must be at most ${Ka$} bytes`}).refine(($)=>[...Object.keys($.set??{}),...$.delete??[]].every((Z)=>Z.length<=Ha$),{message:`Each block key must be at most ${Ha$} characters`}),Fa$=wM0(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(!Cq6(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||!Ja$(B,{organizationId:Y.id,virtualMcpId:X,branch:J}))return $.json({error:"Unauthorized"},401)}if(!await m3(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(!Pz0(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 Da$=($)=>{let Z=new e0;if(Z.use("*",rc),Z.use("*",dp$),Z.route("/",Iq0()),Z.route("/",qn$()),Z.route("/",Un$()),Z.route("/",br$()),Z.route("/",Mr$()),Z.route("/",_r$()),Z.route("/",Vr$()),Z.route("/",DM0()),Z.route("/tools",cr$()),Z.route("/",hr$()),Z.route("/",Xr$({kvStorage:$.kvStorage})),Z.route("/",Qr$()),Z.route("/fs",wr$({getConnection:$.getNatsConnection})),Z.route("/sandbox",es$()),Z.route("/decofile",Na$()),Z.route("/",Tr$()),Z.route("/",Er$()),Z.route("/deco-sites",kq0()),Z.route("/hosting",$n$()),Z.route("/monitor",Wn$()),Z.route("/sso",Aq0()),Z.route("/",OM0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",op$()),$.mountDevAssets)Z.route("/dev-assets",vq0({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("/",ed$()),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",Pr$()),Z.route("/mcp",OA0()),Z.route("/mcp/self",UM0()),Z.route("/mcp",jA0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var Oa$=O(()=>{y$();mp$();Uq0();rp$();MJ1();Zn$();Kn$();fq0();Ab();PJ1();CJ1();Yr$();Jr$();jr$();zr$();Fe();OJ1();EA0();r31();Ar$();Rr$();Ir$();kr$();e31();xr$();ur$();$G1();dr$();ZG1();LA0();$a$();Ba$()});function bq6($){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 xq6=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},La$=()=>{let $=new e0;return $.use("*",xq6),$.get("/",async(Z)=>{let Q=O0(),Y=Q.decoSupabaseUrl,X=Q.decoSupabaseServiceKey;if(!Y||!X)return Z.json({apps:[]});try{let J=await eX(Y,X,"apps?select=name,title,description,logo,category,vendors(alias,url)");return Z.json({apps:bq6(J)})}catch(J){return console.error("[deco-apps] GET error:",J),Z.json({error:"Failed to fetch apps"},502)}}),$};var wa$=O(()=>{y$();Z$();BR0()});import{z as V1}from"zod";function xF($,Z="invalid_request_error",Q=null,Y=null){return{error:{message:$,type:Z,param:Q,code:Y}}}function pq6($){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 nq6($,Z,Q){try{return JSON.parse($)}catch{throw new za$(`Invalid JSON in tool call arguments for function '${Q}' (tool_call_id: ${Z}): ${$}`)}}function tq6($){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:nq6(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 oq6($){let Z=$.map((Q)=>{let Y=Q.function.parameters?TJ(Q.function.parameters):TJ({type:"object",properties:{}});return[Q.function.name,X$({description:Q.function.description,inputSchema:Y})]});return Object.fromEntries(Z)}function rq6($){if(!$)return;return{openai:{response_format:$}}}function sq6(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function ja$($,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 Ea$($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var yq6=256,gq6,hq6,uq6,lq6,cq6,dq6,mq6,iq6,za$,Pa$,Aa$;var Ta$=O(()=>{v4();y$();jd();HK();gq6=V1.object({type:V1.literal("function"),function:V1.object({name:V1.string(),description:V1.string().optional(),parameters:V1.record(V1.string(),V1.unknown()).optional()})}),hq6=V1.object({id:V1.string(),type:V1.literal("function"),function:V1.object({name:V1.string(),arguments:V1.string()})}),uq6=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(hq6).optional()}),V1.object({role:V1.literal("tool"),content:V1.string(),tool_call_id:V1.string()})]),lq6=V1.object({type:V1.literal("text")}),cq6=V1.object({type:V1.literal("json_object")}),dq6=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()})}),mq6=V1.union([lq6,cq6,dq6]),iq6=V1.object({model:V1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:V1.array(uq6),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(gq6).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:mq6.optional(),user:V1.string().optional()});za$=class za$ extends Error{constructor($){super($);this.name="MessageConversionError"}};Pa$=new e0;Pa$.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),Q=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(xF("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(xF("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(xF("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Y=await $.req.json(),X=iq6.safeParse(Y);if(!X.success){let w=X.error.issues[0]??{message:"Invalid request",path:[]};return $.json(xF(`Invalid request: ${w.message}`,"invalid_request_error",w.path.length>0?w.path.join("."):null),400)}let J=X.data,G=pq6(J.model);if(!G)return $.json(xF("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(xF("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(xF(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(K),U=tq6(J.messages),N=J.tools?oq6(J.tools):void 0,B=rq6(J.response_format),D=sq6(),L=Math.floor(Date.now()/1000);if(J.stream)return UB($,async(w)=>{let j=ja$(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>=yq6)await q()}else if(k.type==="tool-call"){await q();let M=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:M,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:Ea$(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=ja$(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:Ea$(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(xF("Request aborted","invalid_request_error"),400);if(X.name==="MessageConversionError")return $.json(xF(X.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",X.message,X.stack),$.json(xF(X.message,"server_error"),500)}});Aa$=Pa$});function aq6($){if(typeof $!=="object"||$===null)return!1;let Q=$.githubRepo?.url;return typeof Q==="string"&&Q.length>0}function Ra$(){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(!p7(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(kY$(U)!==J)continue;if(!aq6(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 qa$=O(()=>{y$();fH()});var Ia$;var Ma$=O(()=>{Ia$={name:"decocms",version:"4.367.7",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 ZM6(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??$M6}}var Va$,$M6="https://ph.studio.decocms.com",ka$;var Sa$=O(()=>{y$();ho();Rf();R5();Z$();ZJ1();Ma$();Va$=new e0;Va$.get("/",($)=>{let Z={version:Ia$.version,theme:q6$(),...bW().logo&&{logo:bW().logo},...yN()&&{internalUrl:Wg1()},...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:mi$(),posthog:ZM6(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:wB()}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});ka$=Va$});function Md($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function CG1($){return(Md($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((Q)=>Q.charAt(0).toUpperCase()+Q.slice(1)).join(" ")}function _a$($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(Md($))}&sz=${Z}`}function Ca$($,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 va$($){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()?Ca$(`${X.trim().replace(/\s+/g," ")} \u2014 ${G}`,200):Ca$(`How does ${Q} really perform? ${G}`,200);return{title:J,description:W}}import{z as m0}from"zod";var xb,QM6,YM6,XM6,JM6,fa$;var ba$=O(()=>{xb=m0.enum(["good","bad","neutral"]),QM6=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:xb.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 $})),YM6=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(QM6)),XM6={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()},JM6=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:xb.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:xb.optional()}),m0.object({template:m0.literal("stats"),stats:m0.array(m0.object({value:m0.coerce.string(),label:m0.coerce.string(),tone:xb.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:xb.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(YM6).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:xb.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:xb.optional()})).min(1)})]),fa$=m0.object({...XM6,template:JM6})});function bM0($){let Z=[],Q=[...$.sections].sort((X,J)=>X.position-J.position).map((X)=>{let J=fa$.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 _G1=O(()=>{ba$()});import{join as xa$}from"path";async function WM6($){try{let Z=await fetch(`${RH({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(GM6)});if(!Z.ok)return null;let Q=await Z.json(),{deck:Y}=bM0(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()||CG1($),score:Y.meta.scores?.cover??G?.score?.value,verdict:X?.annotation?.trim()||X?.headline?.trim()||void 0}}catch{return null}}function N3($){return $.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;")}function KM6($,Z){let Q=Md($),Y=Z?.brand?.trim()||CG1(Q),X=_a$(Q,128),G=`${(O0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(Q)}`,{title:W,description:K}=va$({brand:Y,domain:Q,score:Z?.score,verdict:Z?.verdict}),H=`${G}/og.png`,F=`${Y} commerce report by decocms`;return[`<title>${N3(W)}</title>`,`<meta name="description" content="${N3(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="${N3(W)}" />`,`<meta property="og:description" content="${N3(K)}" />`,`<meta property="og:url" content="${N3(G)}" />`,`<meta property="og:image" content="${N3(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${N3(F)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${N3(W)}" />`,`<meta name="twitter:description" content="${N3(K)}" />`,`<meta name="twitter:image" content="${N3(H)}" />`,`<meta name="twitter:image:alt" content="${N3(F)}" />`,`<link rel="canonical" href="${N3(G)}" />`,`<link rel="icon" href="${N3(X)}" sizes="any" />`].join(`
2993
+ `;await ys$(Z.repo,L);let w=D[0]??`${MM0(Y)}/${LG1(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 RG1(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 gs$(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:yW(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:Mq6($),expectedHead:G,changes:H});return N}catch(N){if(!(N instanceof j6)||J>=Tq6-1)throw N;await P$(T7(2000,200,J,2,0.5))}}}function Mq6($){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 W01(Y,$.deps.coAuthor)}var Tq6=3,kG1;var Qa$=O(()=>{NE0();zM0();Q6();u$();gZ();IM0();kG1=new Map});import{createHmac as Ya$,randomBytes as Iq6,timingSafeEqual as Vq6}from"crypto";function Xa$(){if(fM0)return fM0;let $;try{let Z=O0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return fM0=$?Buffer.from($):Iq6(32),fM0}function SG1($){let Z=$.nowMs??Date.now(),Q={o:$.organizationId,m:$.virtualMcpId,b:$.branch,e:Math.floor((Z+kq6)/1000)},Y=Buffer.from(JSON.stringify(Q)).toString("base64url"),X=Ya$("sha256",Xa$()).update(Y).digest("base64url");return`${Y}.${X}`}function Ja$($,Z){let Q=$.indexOf(".");if(Q<0)return!1;let Y=$.slice(0,Q),X=Buffer.from($.slice(Q+1)),J=Buffer.from(Ya$("sha256",Xa$()).update(Y).digest("base64url"));if(X.length!==J.length||!Vq6(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 kq6=21600000,fM0=null;var Ga$=O(()=>{Z$()});import{z as qd}from"zod";function Cq6($){return $.length>0&&$.length<=255&&!$.includes("..")&&!$.endsWith("/")&&!$.endsWith(".lock")&&Sq6.test($)}function Ua$($){return $.req.header("x-forwarded-host")??new URL($.req.url).host}async function _10($){let Z=$.get("decofileScope");return Vu($.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=UG(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 Na$(){let $=new e0;return $.use("/:virtualMcpId/:branch",Fa$),$.use("/:virtualMcpId/:branch/*",Fa$),$.get("/:virtualMcpId/:branch",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await _10(Z),X=await hs$(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=SG1({organizationId:Q.organizationId,virtualMcpId:Q.virtualMcpId,branch:Q.branch});return Z.body(`{"version":${JSON.stringify(X.sha)},"token":${JSON.stringify(G)},"apiHost":${JSON.stringify(Ua$(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",vq6,async(Z)=>{let Q=Z.get("decofileScope"),Y=Z.var.studioContext,X=fq6.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{EM0(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(OG1(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 Za$(`${Q.organizationId}/${Q.virtualMcpId}/${Q.branch}`,{client:G,branch:Q.branch,packagePath:Q.packagePath,coAuthor:Ed(Y)},J),K=SG1({organizationId:Q.organizationId,virtualMcpId:Q.virtualMcpId,branch:Q.branch});return Z.json({version:W,token:K,apiHost:Ua$(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(UG(W)!==409)throw W;await CM0(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(UG(G)===409)return Z.json({error:"merge-conflict"},409);if(UG(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(UG(J)===404)return Z.json({baseBranch:X,aheadBy:0,behindBy:0,lastCommitAt:null});throw J}}catch(Y){return v10(Z,Y)}}),$}var Sq6,Wa$=500,Ka$=1048576,Ha$=1024,_q6=8388608,vq6,fq6,Fa$;var Ba$=O(()=>{Y$1();zM0();y$();PK();JG1();jM0();IG1();gZ();Qa$();Ga$();MG1();IM0();WH();Sq6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;vq6=x5({maxSize:_q6,onError:($)=>$.json({error:"Payload too large"},413)}),fq6=qd.object({set:qd.record(qd.string(),qd.unknown()).optional(),delete:qd.array(qd.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)<=Wa$,{message:`Patch cannot touch more than ${Wa$} blocks`}).refine(($)=>Object.values($.set??{}).every((Z)=>JSON.stringify(Z).length<=Ka$),{message:`Each block must be at most ${Ka$} bytes`}).refine(($)=>[...Object.keys($.set??{}),...$.delete??[]].every((Z)=>Z.length<=Ha$),{message:`Each block key must be at most ${Ha$} characters`}),Fa$=wM0(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(!Cq6(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||!Ja$(B,{organizationId:Y.id,virtualMcpId:X,branch:J}))return $.json({error:"Unauthorized"},401)}if(!await m3(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(!Pz0(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 Da$=($)=>{let Z=new e0;if(Z.use("*",rc),Z.use("*",dp$),Z.route("/",Iq0()),Z.route("/",qn$()),Z.route("/",Un$()),Z.route("/",br$()),Z.route("/",Mr$()),Z.route("/",_r$()),Z.route("/",Vr$()),Z.route("/",DM0()),Z.route("/tools",cr$()),Z.route("/",hr$()),Z.route("/",Xr$({kvStorage:$.kvStorage})),Z.route("/",Qr$()),Z.route("/fs",wr$({getConnection:$.getNatsConnection})),Z.route("/sandbox",es$()),Z.route("/decofile",Na$()),Z.route("/",Tr$()),Z.route("/",Er$()),Z.route("/deco-sites",kq0()),Z.route("/hosting",$n$()),Z.route("/monitor",Wn$()),Z.route("/sso",Aq0()),Z.route("/",OM0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",op$()),$.mountDevAssets)Z.route("/dev-assets",vq0({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("/",ed$()),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",Pr$()),Z.route("/mcp",OA0()),Z.route("/mcp/self",UM0()),Z.route("/mcp",jA0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var Oa$=O(()=>{y$();mp$();Uq0();rp$();MJ1();Zn$();Kn$();fq0();Ab();PJ1();CJ1();Yr$();Jr$();jr$();zr$();Fe();OJ1();EA0();r31();Ar$();Rr$();Ir$();kr$();e31();xr$();ur$();$G1();dr$();ZG1();LA0();$a$();Ba$()});function bq6($){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 xq6=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},La$=()=>{let $=new e0;return $.use("*",xq6),$.get("/",async(Z)=>{let Q=O0(),Y=Q.decoSupabaseUrl,X=Q.decoSupabaseServiceKey;if(!Y||!X)return Z.json({apps:[]});try{let J=await eX(Y,X,"apps?select=name,title,description,logo,category,vendors(alias,url)");return Z.json({apps:bq6(J)})}catch(J){return console.error("[deco-apps] GET error:",J),Z.json({error:"Failed to fetch apps"},502)}}),$};var wa$=O(()=>{y$();Z$();BR0()});import{z as V1}from"zod";function xF($,Z="invalid_request_error",Q=null,Y=null){return{error:{message:$,type:Z,param:Q,code:Y}}}function pq6($){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 nq6($,Z,Q){try{return JSON.parse($)}catch{throw new za$(`Invalid JSON in tool call arguments for function '${Q}' (tool_call_id: ${Z}): ${$}`)}}function tq6($){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:nq6(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 oq6($){let Z=$.map((Q)=>{let Y=Q.function.parameters?TJ(Q.function.parameters):TJ({type:"object",properties:{}});return[Q.function.name,X$({description:Q.function.description,inputSchema:Y})]});return Object.fromEntries(Z)}function rq6($){if(!$)return;return{openai:{response_format:$}}}function sq6(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function ja$($,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 Ea$($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var yq6=256,gq6,hq6,uq6,lq6,cq6,dq6,mq6,iq6,za$,Pa$,Aa$;var Ta$=O(()=>{v4();y$();jd();HK();gq6=V1.object({type:V1.literal("function"),function:V1.object({name:V1.string(),description:V1.string().optional(),parameters:V1.record(V1.string(),V1.unknown()).optional()})}),hq6=V1.object({id:V1.string(),type:V1.literal("function"),function:V1.object({name:V1.string(),arguments:V1.string()})}),uq6=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(hq6).optional()}),V1.object({role:V1.literal("tool"),content:V1.string(),tool_call_id:V1.string()})]),lq6=V1.object({type:V1.literal("text")}),cq6=V1.object({type:V1.literal("json_object")}),dq6=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()})}),mq6=V1.union([lq6,cq6,dq6]),iq6=V1.object({model:V1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:V1.array(uq6),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(gq6).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:mq6.optional(),user:V1.string().optional()});za$=class za$ extends Error{constructor($){super($);this.name="MessageConversionError"}};Pa$=new e0;Pa$.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),Q=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(xF("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(xF("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(xF("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Y=await $.req.json(),X=iq6.safeParse(Y);if(!X.success){let w=X.error.issues[0]??{message:"Invalid request",path:[]};return $.json(xF(`Invalid request: ${w.message}`,"invalid_request_error",w.path.length>0?w.path.join("."):null),400)}let J=X.data,G=pq6(J.model);if(!G)return $.json(xF("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(xF("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(xF(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(K),U=tq6(J.messages),N=J.tools?oq6(J.tools):void 0,B=rq6(J.response_format),D=sq6(),L=Math.floor(Date.now()/1000);if(J.stream)return UB($,async(w)=>{let j=ja$(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>=yq6)await q()}else if(k.type==="tool-call"){await q();let M=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:M,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:Ea$(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=ja$(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:Ea$(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(xF("Request aborted","invalid_request_error"),400);if(X.name==="MessageConversionError")return $.json(xF(X.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",X.message,X.stack),$.json(xF(X.message,"server_error"),500)}});Aa$=Pa$});function aq6($){if(typeof $!=="object"||$===null)return!1;let Q=$.githubRepo?.url;return typeof Q==="string"&&Q.length>0}function Ra$(){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(!p7(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(kY$(U)!==J)continue;if(!aq6(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 qa$=O(()=>{y$();fH()});var Ia$;var Ma$=O(()=>{Ia$={name:"decocms",version:"4.368.0",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","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 ZM6(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??$M6}}var Va$,$M6="https://ph.studio.decocms.com",ka$;var Sa$=O(()=>{y$();ho();Rf();R5();Z$();ZJ1();Ma$();Va$=new e0;Va$.get("/",($)=>{let Z={version:Ia$.version,theme:q6$(),...bW().logo&&{logo:bW().logo},...yN()&&{internalUrl:Wg1()},...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:mi$(),posthog:ZM6(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:wB()}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});ka$=Va$});function Md($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function CG1($){return(Md($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((Q)=>Q.charAt(0).toUpperCase()+Q.slice(1)).join(" ")}function _a$($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(Md($))}&sz=${Z}`}function Ca$($,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 va$($){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()?Ca$(`${X.trim().replace(/\s+/g," ")} \u2014 ${G}`,200):Ca$(`How does ${Q} really perform? ${G}`,200);return{title:J,description:W}}import{z as m0}from"zod";var xb,QM6,YM6,XM6,JM6,fa$;var ba$=O(()=>{xb=m0.enum(["good","bad","neutral"]),QM6=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:xb.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 $})),YM6=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(QM6)),XM6={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()},JM6=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:xb.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:xb.optional()}),m0.object({template:m0.literal("stats"),stats:m0.array(m0.object({value:m0.coerce.string(),label:m0.coerce.string(),tone:xb.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:xb.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(YM6).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:xb.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:xb.optional()})).min(1)})]),fa$=m0.object({...XM6,template:JM6})});function bM0($){let Z=[],Q=[...$.sections].sort((X,J)=>X.position-J.position).map((X)=>{let J=fa$.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 _G1=O(()=>{ba$()});import{join as xa$}from"path";async function WM6($){try{let Z=await fetch(`${RH({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(GM6)});if(!Z.ok)return null;let Q=await Z.json(),{deck:Y}=bM0(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()||CG1($),score:Y.meta.scores?.cover??G?.score?.value,verdict:X?.annotation?.trim()||X?.headline?.trim()||void 0}}catch{return null}}function N3($){return $.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;")}function KM6($,Z){let Q=Md($),Y=Z?.brand?.trim()||CG1(Q),X=_a$(Q,128),G=`${(O0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(Q)}`,{title:W,description:K}=va$({brand:Y,domain:Q,score:Z?.score,verdict:Z?.verdict}),H=`${G}/og.png`,F=`${Y} commerce report by decocms`;return[`<title>${N3(W)}</title>`,`<meta name="description" content="${N3(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="${N3(W)}" />`,`<meta property="og:description" content="${N3(K)}" />`,`<meta property="og:url" content="${N3(G)}" />`,`<meta property="og:image" content="${N3(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${N3(F)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${N3(W)}" />`,`<meta name="twitter:description" content="${N3(K)}" />`,`<meta name="twitter:image" content="${N3(H)}" />`,`<meta name="twitter:image:alt" content="${N3(F)}" />`,`<link rel="canonical" href="${N3(G)}" />`,`<link rel="icon" href="${N3(X)}" sizes="any" />`].join(`
2994
2994
  `)}function HM6($,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 ya$($){let Z=new e0;return Z.get("/:domain/og.png",async(Q)=>{let Y=Md(Q.req.param("domain")),X=async()=>{let J=$?Bun.file(xa$($,"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(FM6)}),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=$?xa$($,"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 WM6(Md(Y)),K=KM6(Y,W);return Q.html(HM6(G,K),200,{"Cache-Control":"public, max-age=0, s-maxage=300"})}catch{return Q.html(G)}}),Z}var GM6=2500,FM6=1e4;var ga$=O(()=>{y$();_G1();kz();Z$()});function f10($,Z){return fetch(`${RH({})}${$}`,Z)}async function UM6($,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}=bM0(G);return{status:W.slides.length?"ready":"empty",deck:W,scanned_at:G.scanned_at,drops:K}}var NM6,BB,ha$=async($,Z)=>{if(!$.get("reportUser"))return $.json({error:"Authentication required"},401);await Z();return},ua$;var la$=O(()=>{y$();cJ();kz();_G1();NM6=new Set(["complete","errored","terminated","unknown"]),BB=new e0;BB.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});BB.use("/link-token/*",ha$);BB.use("/suggest",ha$);BB.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 UM6(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)}});BB.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)}});BB.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:NM6.has(X),status:X};return $.json(J)}catch{return $.json({error:"status failed"},502)}});BB.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)}});BB.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:[]})}});ua$=BB});var BM6=1048576,vG1;var ca$=O(()=>{y$();PK();Z$();uX1();vG1=new e0;vG1.post("/webhook",x5({maxSize:BM6,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(!Qi$(Q,$.req.header("stripe-signature"),Z))return $.json({error:"invalid signature"},400);let X=Yi$(Q);if(!X)return $.json({error:"invalid payload"},400);let J=await Xi$(X);return console.log("stripe webhook",{eventId:X.id,type:X.type,livemode:X.livemode,...J}),$.json({received:!0})})});import{timingSafeEqual as DM6}from"crypto";function wM6($,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 DM6(Buffer.from(X),Buffer.from(Y))}function jM6($,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 da$($){let Z=new e0;return Z.post("/webhook",x5({maxSize:OM6,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(!wM6(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"&&!LM6.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 C01())?.markTenantPoolsDirty(F,H)??[];return Q.json({ok:!0,pools:N})}let W=jM6(J??"",G);if(W.length===0)return Q.json({ok:!0,ignored:"no-pr"});let K=await EM6($,W);return Q.json({ok:!0,refreshed:K})}),Z}async function EM6($,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 uP$(K,G.organizationId,G.taskBoardItemId)!==null)Q++}catch(W){console.error(`[github-webhook] pr card refresh failed for ${G.taskBoardItemId}:`,W)}}return Q}var OM6=5242880,LM6;var ma$=O(()=>{y$();PK();sW();cZ();LM6=new Set(["check_suite","issue_comment"])});function ia$($){let Z=new ZB($.db,new OY($.encryptionKey)),Q=new e0;return Q.get("/attachments/:token",async(Y)=>{let X=Wz$(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 Z3(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 pa$=O(()=>{y$();XD();k$1();Kf()});function na$($){let Z=new ZB($.db,new OY($.encryptionKey));async function Q(X,J){let G=bg$(J);if(!G)return;let W=await Z.getByWebhookSecret(X);if(!W?.enabled)return;let K=await KF($.db,W.organizationId);if(!K)return;if(await OR0(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:zM6}),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 zM6=1048576;var ta$=O(()=>{y$();PK();XD();LR0();Pl()});import{DBOS as xM0,SchedulerMode as PM6}from"@dbos-inc/dbos-sdk";function ra$($){bG1=$}function sa$(){if(!bG1)throw Error("[jira-trigger] runtime not initialized \u2014 setJiraTriggerSweepRuntime() must run before the workflow fires");return bG1}function aa$(){let $=sa$();return new ZB($.db,new OY($.encryptionKey))}async function RM6($,Z){try{let Q=await aa$().getById($);if(!Q?.enabled||!Q.boardId)return{integrationId:$,started:0};let Y=await KF(sa$().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 Z3(Q.siteUrl,Q.email,Q.apiToken),W=`(${await J.getBoardScopeJql(Q.boardId)}) AND status CHANGED AFTER "-${oa$}m"`,K=0,H;for(let F=0;F<TM6;F++){let U=await J.searchIssues({jql:W,nextPageToken:H,expandChangelog:!0});for(let N of U.issues){let B=xg$(N,N.changelog?.histories??[],Z);for(let D of B)if(await OR0(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 qM6($,Z){let Q=new Date($.getTime()-oa$*60000),Y=await xM0.runStep(()=>aa$().listEnabledIds(),{name:"loadJiraIntegrations"});if(Y.length===0)return;let X=await Promise.all(Y.map((J)=>xM0.runStep(()=>RM6(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 ea$(){if(fG1)return;fG1=xM0.registerWorkflow(qM6,{name:"jiraTriggerSweepWorkflow"}),xM0.registerScheduled(fG1,{name:"jiraTriggerSweepWorkflow",crontab:AM6,mode:PM6.ExactlyOncePerIntervalWhenActive})}var AM6="7-59/10 * * * *",oa$=15,TM6=5,bG1=null,fG1=null;var $e$=O(()=>{XD();Pl();Kf();LR0()});function Ze$($,Z){if(Z.startsWith("text/html")||Z.startsWith("image/svg"))$.set("Content-Security-Policy","sandbox allow-scripts allow-modals allow-same-origin")}var Qe$,MM6,IM6,Ye$;var Xe$=O(()=>{y$();fW();ql();yz();Qe$=new e0,MM6=["range","if-none-match","if-modified-since"],IM6=["content-type","content-length","content-range","accept-ranges","etag","last-modified"];Qe$.get("/:org/files/*",async($)=>{let Z=$.get("studioContext"),Q=Z.organization?.id;if(!Z.auth?.user?.id){if(oc($))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:")&&qX()){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 Ze$(N,H),new Response(U,{status:200,headers:N})}let J=new Headers;for(let K of MM6){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 IM6){let H=G.headers.get(K);if(H)W.set(K,H)}return W.set("Cache-Control","private, max-age=86400"),Ze$(W,W.get("content-type")??""),new Response(G.body,{status:G.status,headers:W})});Ye$=Qe$});var b10=_((yb)=>{var VM6=yb&&yb.__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]}),kM6=yb&&yb.__exportStar||function($,Z){for(var Q in $)if(Q!=="default"&&!Object.prototype.hasOwnProperty.call(Z,Q))VM6(Z,$,Q)};Object.defineProperty(yb,"__esModule",{value:!0});kM6(KJ(),yb)});var We$=_((Je$)=>{Object.defineProperty(Je$,"__esModule",{value:!0});Je$.version=void 0;Je$.version="3.4.0"});var Fe$=_((yF)=>{var SM6=yF&&yF.__importDefault||function($){return $&&$.__esModule?$:{default:$}};Object.defineProperty(yF,"__esModule",{value:!0});yF.NodeTransport=yF.VERSION=void 0;yF.nodeResolveHost=xM6;var U5=b10(),CM6=P0("net"),xG1=P0("tls"),_M6=P0("path"),Ke$=P0("fs"),vM6=SM6(P0("dns")),fM6=We$();yF.VERSION=fM6.version;var bM6="nats.js";class He${socket;version;lang;yields=[];signal=(0,U5.deferred)();closedNotification=(0,U5.deferred)();options;connected=!1;tlsName="";done=!1;closeError;constructor(){this.lang=bM6,this.version=yF.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,CM6.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,_M6.resolve)($),!(0,Ke$.existsSync)($))Z.reject(Error(`${$} doesn't exist`));(0,Ke$.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,xG1.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,xG1.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 xG1.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}}yF.NodeTransport=He$;function xM6($){let Z=(0,U5.deferred)();return vM6.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 Oe$=_((De$)=>{Object.defineProperty(De$,"__esModule",{value:!0});De$.connect=yM6;var Ue$=Fe$(),Ne$=b10(),Be$=b10();function yM6($={}){if((0,Be$.hasWsProtocol)($))return Promise.reject(Be$.errors.InvalidArgumentError.format("servers","node client doesn't support websockets, use the 'wsconnect' function instead"));return(0,Ne$.setTransportFactory)({factory:()=>{return new Ue$.NodeTransport},dnsResolveFn:Ue$.nodeResolveHost}),Ne$.NatsConnectionImpl.connect($)}});var Le$=_((DB)=>{var hM6=DB&&DB.__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]}),uM6=DB&&DB.__exportStar||function($,Z){for(var Q in $)if(Q!=="default"&&!Object.prototype.hasOwnProperty.call(Z,Q))hM6(Z,$,Q)};Object.defineProperty(DB,"__esModule",{value:!0});DB.connect=void 0;var lM6=Oe$();Object.defineProperty(DB,"connect",{enumerable:!0,get:function(){return lM6.connect}});uM6(b10(),DB)});function ze$($){let Z=$?.connectFn??iM6,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:mM6,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=T7(dM6,cM6,D-1,2,0.5);await P$(L)}}return{init(N,B){if(X)return;X=!0,J=!1;let D=B?.creds?we$.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=Ee$.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 iM6($){return je$.connect($)}var we$,je$,Ee$,cM6=100,dM6=3000,mM6=3000;var Pe$=O(()=>{u$();we$=V(sd(),1),je$=V(Le$(),1),Ee$=V(nF(),1)});function yG1($,Z){return`${$}.${Z}`}class gG1{cache;constructor($){this.cache=gc({ttlMs:$?.ttlMs??pM6,maxSize:$?.maxSize??nM6})}async get($,Z){return this.cache.get(yG1($,Z))??null}async set($,Z,Q){this.cache.set(yG1($,Z),Q)}async invalidate($,Z){this.cache.delete(yG1($,Z))}teardown(){this.cache.clear()}}var pM6=600000,nM6=5000;var Ae$=()=>{};function yM0($,Z){return`${$}:${Z}`}function hG1($){let Z=gc({ttlMs:$?.ttlMs??tM6,maxSize:$?.maxSize??oM6}),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(Te$,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(yM0(K,H))},set(K,H,F){Z.set(yM0(K,H),F)},invalidate(K,H){Z.delete(yM0(K,H)),W(K,H)},start(){if(G)return;let K=Q?.();if(!K)return;G=K.subscribe(Te$),(async()=>{for await(let H of G)try{let F=JSON.parse(J.decode(H.data));if(F.originId===Y)continue;Z.delete(yM0(F.organizationId,F.keyId))}catch{}})().catch(console.error)},teardown(){G?.unsubscribe(),G=null,Z.clear()}}}var Te$="studio.ai-provider-keys.invalidate",tM6=30000,oM6=5000;var Re$=()=>{};class uG1{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 qe$=($)=>{let Z;return()=>Z??=$()},lG1,cG1;var Me$=O(()=>{J6();lG1=qe$(()=>Q$.createHistogram("decopilot.stream.encode_ms",{description:"Per-chunk JSON.stringify+encode time for decopilot stream",unit:"ms"})),cG1=qe$(()=>Q$.createCounter("decopilot.stream.published_chunks",{description:"Logical decopilot stream chunks published to JetStream",unit:"{chunks}"}))});function QI6($=ke$){return{name:FF,subjects:[`${q41}.>`],storage:RK.StorageType.File,max_age:aM6,max_bytes:$I6,max_msgs_per_subject:ZI6,discard:RK.DiscardPolicy.Old,retention:RK.RetentionPolicy.Limits,duplicate_window:eM6,num_replicas:$}}class Se${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 Ie$($){let Z=Ve$.headers();for(let[Q,Y]of Object.entries($))Z.set(Q,Y);return Z}function GI6($,Z){let Q=0;return{publish(Y,X,J,G){Y.publish(X,J,G?{headers:G}:void 0).catch((W)=>{if(Q++,sM6().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 WI6($,Z){return $.info?.cluster?Z:1}function KI6($){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 dG1{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=QI6(X);try{await Y.streams.info(FF),await Y.streams.update(FF,J)}catch(G){if(G instanceof Error&&G.message.includes("stream not found"))await Y.streams.add(J),await Y.streams.update(FF,J);else if(G instanceof Error&&/can ?not change.*storage|storage type/i.test(G.message))await Y.streams.delete(FF),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=WI6($,ke$);try{await Z(Y,X)}catch(J){if(X<=1||!KI6(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:bl});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=GI6(Z,Y),G=!1,W=()=>{if(G)return;G=!0;let H=AT$(Z);X.publish(H.subject,H.data).catch(()=>{})};Q.addEventListener("abort",W,{once:!0});let K=(H)=>{let F=performance.now(),U=I41(H,{runId:Z}),N=performance.now()-F;lG1().record(N),cG1().add(1,{"org.id":Y??"unknown"}),JI6?.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?Ie$(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(),XI6)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:Ie$(Z.headers)}:{},...Z.msgId?{msgID:Z.msgId}:{}}),{maxAttempts:6,minTimeout:250,maxTimeout:5000,jitter:0.5,isRetriable:bl}),!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=I41(Z,{runId:$,dedup:Q});lG1().record(performance.now()-X),cG1().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=PT$({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(FF,{filter_subjects:G,deliver_policy:X})).consume()},{maxAttempts:6,minTimeout:250,maxTimeout:5000,jitter:0.5,isRetriable:bl})}catch(L){return console.warn("[Decopilot] JetStream tail unavailable (non-critical):",L?.message??L),null}let F=oP0({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(iP0()).pipeThrough(pP0()).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(FF,{filter:eL($)}).catch(()=>{})}teardown(){this.js=null,this.jsm=null}}var RK,Ve$,rM6=($)=>{let Z;return()=>Z??=$()},sM6,aM6=86400000000000,eM6=120000000000,$I6=4294967296,ke$,ZI6=500000,YI6,XI6,JI6;var Ce$=O(()=>{u$();V41();rP0();nP0();J6();Me$();RK=V(nF(),1),Ve$=V(sd(),1),sM6=rM6(()=>Q$.createCounter("decopilot.stream.publish_errors",{description:"Number of JetStream publish failures for decopilot stream chunks",unit:"{errors}"})),ke$=Math.max(1,Number(process.env.DECOPILOT_STREAM_REPLICAS??3)||3);YI6=process.env.STREAM_ENCODE_TRACE==="1",XI6=process.env.DECOPILOT_STREAM_TRACE==="1";JI6=YI6?new Se$:null});function gM0($,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 _e$=O(()=>{T8()});class mG1{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 HI6($,Z){let Q=$.startsWith("thread:")?aW($):$;return[...new Set([Z,Q].filter((Y)=>!!Y))]}async function ve$($,Z){let Q=Z.organizationId;try{let Y=await $.storage.taskBoard.linkedThreadIds(Z.id,Q);for(let X of Y){let J=await sH($,X);if(!J?.owner||!J?.name)continue;let G=await $.storage.threads.get(X),W=await nu($,{threadId:X,runBranch:G?.branch}),K=HI6(W,await PE0($,X)),H=await Hs($,Q,Ja0(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 PG(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 fe$=O(()=>{gZ();LG();cZ()});async function be$($,Z,Q){let Y=Z.organizationId;if(!dX(Z))return!1;if(!Df(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 xe$=O(()=>{z4();nQ();El();JK();K9()});function LI6($){return $ instanceof SY}function wI6($,Z){return Z-$>=DI6}class iG1{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??FI6;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??NI6,Q=this.options.itemIntervalMs??UI6,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()-T$1),b81);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()-OI6));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 _81(this.taskBoard,X,Y),await v81(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),LI6(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()+BI6)).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(!wI6(JN(Q,Z.reviewCycleStartedAt),Date.now()))return;await GF($,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(!dX(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 ve$(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 Al(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 be$(G,Y,W))return!0;if(await NR$(G,Y))return!0;if(await this.resolveConflictFromSweep(G,Y,W))return!0;if(!X)return!1;if(!V81(W))return!1;return await KP0(G,Y,{previewMatchesHead:k81(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 FI6=60000,UI6=300000,NI6=50,BI6=60000,DI6=900000,OI6=120000;var ye$=O(()=>{z4();L81();fe$();WF();Qe();JK();xe$();K9();FG();x81();cZ();la();zl()});import{readdir as jI6,rm as hM0}from"fs/promises";import{join as uM0}from"path";async function lM0($){let Z=new Date;Z.setUTCDate(Z.getUTCDate()-EI6),Z.setUTCHours(0,0,0,0);let Q=0;try{let Y=await gb($);for(let X of Y)if(/^\d{4}$/.test(X))Q+=await ge$($,X,Z);else if(!X.startsWith(".")){let J=uM0($,X),G=await gb(J);for(let K of G){if(!/^\d{4}$/.test(K))continue;Q+=await ge$(J,K,Z)}if((await gb(J)).length===0)await hM0(J,{recursive:!0,force:!0})}}catch(Y){console.warn("monitoring retention cleanup failed:",Y)}return Q}async function ge$($,Z,Q){let Y=0,X=uM0($,Z),J=await gb(X);for(let W of J){if(!/^\d{2}$/.test(W))continue;let K=uM0(X,W),H=await gb(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=uM0(K,U);await hM0(B,{recursive:!0,force:!0}),Y++}}if((await gb(K)).length===0)await hM0(K,{recursive:!0,force:!0})}if((await gb(X)).length===0)await hM0(X,{recursive:!0,force:!0});return Y}async function gb($){try{return(await jI6($)).filter((Q)=>!Q.startsWith("."))}catch{return[]}}var EI6=30;var pG1=()=>{};import{DBOS as nG1,SchedulerMode as zI6}from"@dbos-inc/dbos-sdk";async function AI6(){let $=[yG(),hb(),uF()],Z=0;for(let Q of $)try{Z+=await lM0(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 TI6($,Z){await nG1.runStep(()=>AI6(),{name:"monitoringRetention"})}function ue$(){if(he$)return;he$=!0;let $=nG1.registerWorkflow(TI6,{name:"monitoringRetentionWorkflow"});nG1.registerScheduled($,{name:"monitoringRetentionWorkflow",crontab:PI6,mode:zI6.ExactlyOncePerIntervalWhenActive})}var PI6="23 4 * * *",he$=!1;var le$=O(()=>{w3();pG1()});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 s7.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=_X1({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 de$=O(()=>{JW();vH()});function RI6(){return[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}]}function qI6(){return{services:RI6(),migrationsStatus:"pending",serverUrl:null,logs:[]}}function II6(){for(let $ of MI6)$()}function me$($){let Z=[...tG1.logs,$];tG1={...tG1,logs:Z.length>500?Z.slice(-500):Z},II6()}function oG1(){return VI6}var tG1,MI6,VI6=!1;var rG1=O(()=>{tG1=qI6(),MI6=new Set});import{EventEmitter as kI6}from"events";var sG1;var ie$=O(()=>{rG1();sG1=new kI6;sG1.on("request",($)=>{me$($)})});function pe$(){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=CI6(Y),H=G?"\u25C0":"\u2190";if(!oG1())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=SI6(U),B=F<1000?`${F}ms`:`${(F/1000).toFixed(1)}s`,D=G?"\u25B6":"\u2192";if(!oG1())console.log(`${z5.dim}${D}${z5.reset} ${K}${Y}${z5.reset} ${W}${J?` ${J}`:""} ${N}${U}${z5.reset} ${z5.duration}${B}${z5.reset}`);sG1.emit("request",{method:Y,path:Id(X),status:U,duration:F,timestamp:new Date})}}}var z5,SI6=($)=>{if($>=500)return z5.serverError;if($>=400)return z5.clientError;if($>=300)return z5.redirect;return z5.ok},CI6=($)=>{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 ne$=O(()=>{rG1();ie$();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 se$}from"crypto";import{mkdir as _I6,readdir as vI6,rm as te$,stat as ae$}from"fs/promises";import{join as eG1,relative as fI6}from"path";import{z as V$}from"zod";function $08($){let Z=$.replace(/[^a-zA-Z0-9_-]/g,"_");return eG1(bI6,Z)}function Z08($){return $.replace(/^\/+/,"").replace(/\.\./g,"")}function aG1($,Z){let Q=$08($),Y=Z08(Z);return eG1(Q,Y)}function xI6($,Z,Q,Y){let X=O0().encryptionKey||"dev-secret",J=`${$}:${Z}:${Q}:${Y}`;return se$("sha256",X).update(J).digest("hex")}function re$($,Z,Q,Y,X){let J=Math.floor(Date.now()/1000)+Y,G=xI6(Z,Q,J,X),W=new URL(`/api/dev-assets/${Z}/${Z08(Q)}`,$);return W.searchParams.set("expires",J.toString()),W.searchParams.set("signature",G),W.searchParams.set("method",X),W.toString()}function Q08($,Z,Q){let Y=`${$}:${Z.getTime()}:${Q}`;return`"${se$("md5","etag").update(Y).digest("hex")}"`}async function Y08($,Z,Q,Y,X){try{let J=await vI6($,{withFileTypes:!0});for(let G of J){let W=eG1($,G.name),H=fI6(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 Y08(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 ae$(W);X.objects.push({key:H,size:F.size,lastModified:F.mtime.toISOString(),etag:Q08(W,F.mtime,F.size)})}catch{}}}}catch{}}function X08($,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=$08(Y);await _I6(F,{recursive:!0});let U={objects:[],commonPrefixes:new Set};await Y08(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=aG1(Y,J.key),W=await ae$(G);return{contentType:kJ1(J.key),contentLength:W.size,lastModified:W.mtime.toISOString(),etag:Q08(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??oe$;return{url:re$(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??oe$;return{url:re$(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=aG1(Y,J.key);try{return await te$(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=aG1(Y,K);try{await te$(H),G.push(K)}catch(F){W.push({key:K,message:F instanceof Error?F.message:"Unknown error"})}})),{deleted:G,errors:W}}}]}async function $W1($,Z,Q){let Y=X08(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 uY({enableJsonResponse:$.headers.get("Accept")?.includes("application/json")??!1});return await X.connect(J),MG(X,J,$,"mcp:dev-assets")}async function J08($,Z,Q,Y){let J=X08(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 bI6="./data/assets",oe$=3600,ee$,G08;var W08=O(()=>{Z$();ul();y$();Qt();ff();CQ();fq0();ee$=new e0;ee$.all("/",async($)=>{let Z=$.get("studioContext"),Q=new URL($.req.url),Y=`${Q.protocol}//${Q.host}`;return $W1($.req.raw,Z,Y)});G08=ee$});var K08={};T4(K08,{mountDevRoutes:()=>yI6});function yI6($,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 $W1(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 J08(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",G08);let Q=new e0;Q.use("*",AK({mountPath:"/api/dev-assets"})),Q.route("/",vq0({orgFromPath:!1})),$.route("/api/dev-assets",Q)}var H08=O(()=>{y$();AJ1();fq0();W08()});import{sql as gI6}from"kysely";import{randomUUID as F08}from"crypto";import{z as hI6}from"zod";async function lI6($){let Z=new Date().toISOString(),Q=F08(),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:F08(),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 gI6`SELECT
2996
2996
  pg_notify('studio_events', ${Q}),