decocms 4.379.1 → 4.380.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 (360) hide show
  1. package/dist/client/assets/{AlertCircle-C87sj3M1.js → AlertCircle-DiFFwnXn.js} +1 -1
  2. package/dist/client/assets/{AreaChart-BVzsaK04.js → AreaChart-BDoo3URx.js} +1 -1
  3. package/dist/client/assets/{ArrowLeft-DcRfjdzH.js → ArrowLeft-DBsIg0tM.js} +1 -1
  4. package/dist/client/assets/{ArrowRight-DRvEX1Dk.js → ArrowRight-DAyoDk3L.js} +1 -1
  5. package/dist/client/assets/{ArrowUp-i0zpRWOM.js → ArrowUp-BlMnl5Fe.js} +1 -1
  6. package/dist/client/assets/{CartesianChart-BQLomIKw.js → CartesianChart-DBj_6lI8.js} +1 -1
  7. package/dist/client/assets/{CheckCircle-B2CHnXqJ.js → CheckCircle-CeKBIghf.js} +1 -1
  8. package/dist/client/assets/{ChevronUp-CSjvmYTv.js → ChevronUp-CgAKIOEA.js} +1 -1
  9. package/dist/client/assets/{Copy01-CriwoF0k.js → Copy01-DH-b-DEp.js} +1 -1
  10. package/dist/client/assets/{CreditCard01-f8lzMHAg.js → CreditCard01-DOq4VYVm.js} +1 -1
  11. package/dist/client/assets/{DotsVertical-6BqEEQ1l.js → DotsVertical-lJDK2pti.js} +1 -1
  12. package/dist/client/assets/{Download01-4J9JncCK.js → Download01-Do3BZNKR.js} +1 -1
  13. package/dist/client/assets/{ErrorBarContext-DKasdvNi.js → ErrorBarContext-kaDG2aTw.js} +1 -1
  14. package/dist/client/assets/{Eye-BPUNoUEY.js → Eye-A3tl5Wzy.js} +1 -1
  15. package/dist/client/assets/{Globe01-BzAfdnbf.js → Globe01-DtK2maUY.js} +1 -1
  16. package/dist/client/assets/{Globe04-DAWiaB6e.js → Globe04-BmvhB0Gt.js} +1 -1
  17. package/dist/client/assets/{Image01-Bo-4cwxs.js → Image01-mLa5V9Ru.js} +1 -1
  18. package/dist/client/assets/{Key01-D-065J4h.js → Key01-xkO9bwBT.js} +1 -1
  19. package/dist/client/assets/{LayoutLeft-0CTDjucv.js → LayoutLeft-C8RwYoPV.js} +1 -1
  20. package/dist/client/assets/{Line-DoWV7AEO.js → Line-CxPM7nuh.js} +1 -1
  21. package/dist/client/assets/{Link01-E2qV1d9X.js → Link01-DJpHg526.js} +1 -1
  22. package/dist/client/assets/{LinkExternal01-Dd1e_ext.js → LinkExternal01-D92xZRHr.js} +1 -1
  23. package/dist/client/assets/{Monitor01-BiT_rUMD.js → Monitor01-h5IvVPhq.js} +1 -1
  24. package/dist/client/assets/{Package-ClObpNUB.js → Package-tkZ6dx50.js} +1 -1
  25. package/dist/client/assets/{Palette-CsIdvIUM.js → Palette-CTqPeiU2.js} +1 -1
  26. package/dist/client/assets/{Play-DZ8c5r_U.js → Play-DHVeBlQM.js} +1 -1
  27. package/dist/client/assets/{Plus-TtQQC0uB.js → Plus-CVN0z8nz.js} +1 -1
  28. package/dist/client/assets/{SearchLg-BOC6W0cP.js → SearchLg-DGWpAE2t.js} +1 -1
  29. package/dist/client/assets/{SearchMd-BTVk1-TJ.js → SearchMd-yDG5dnrV.js} +1 -1
  30. package/dist/client/assets/{Sector-DXAKzK2a.js → Sector-BRiWGOyA.js} +1 -1
  31. package/dist/client/assets/{Settings02-BDt3nPze.js → Settings02-DZlGO72q.js} +1 -1
  32. package/dist/client/assets/{Share07-Dg_TG3U0.js → Share07-AYmj_4-u.js} +1 -1
  33. package/dist/client/assets/{Stars01-CGhMSaCY.js → Stars01-42gximKe.js} +1 -1
  34. package/dist/client/assets/{Sun-DDh4aDEB.js → Sun-ESwNzqLw.js} +1 -1
  35. package/dist/client/assets/{Tool01-Cb62PjuR.js → Tool01-BPkGCn0Q.js} +1 -1
  36. package/dist/client/assets/{Tool02-Ci1FuSgZ.js → Tool02-BLTB0Mu5.js} +1 -1
  37. package/dist/client/assets/{Trash01-DlJW7dC6.js → Trash01-ByQC7g6l.js} +1 -1
  38. package/dist/client/assets/{TrendUp01-FTNHP6GB.js → TrendUp01-C79-zHMj.js} +1 -1
  39. package/dist/client/assets/{Upload01-DIwLuZJP.js → Upload01-Bor4hbpq.js} +1 -1
  40. package/dist/client/assets/{User01-D2yVfaWn.js → User01-D7HcCt9Q.js} +1 -1
  41. package/dist/client/assets/{UserSquare-DGpMussG.js → UserSquare-KXseyaU2.js} +1 -1
  42. package/dist/client/assets/{Users01-DV6wBIs9.js → Users01-DtJ1EO6i.js} +1 -1
  43. package/dist/client/assets/{X-CbQ5l53y.js → X-FTMZhNl_.js} +1 -1
  44. package/dist/client/assets/{XCircle-CcT3GC3V.js → XCircle-BrT4uSvp.js} +1 -1
  45. package/dist/client/assets/{XClose-DH0cUn-t.js → XClose-B-rnNFcm.js} +1 -1
  46. package/dist/client/assets/{Zap-CV_Iqtrv.js → Zap-DigiqRTQ.js} +1 -1
  47. package/dist/client/assets/{ZoomOut-5MwfddRj.js → ZoomOut-BRgBObyK.js} +1 -1
  48. package/dist/client/assets/{access-gate-CHbN3svW.js → access-gate-wTSTsqMc.js} +1 -1
  49. package/dist/client/assets/{add-connection-dialog-CZToAiON.js → add-connection-dialog-BdllWDSk.js} +1 -1
  50. package/dist/client/assets/{agent-analytics-DehAyXJV.js → agent-analytics-DGsCfvbl.js} +1 -1
  51. package/dist/client/assets/agent-app-SrybpRP1.js +1 -0
  52. package/dist/client/assets/{agent-assets-Dl3k76qb.js → agent-assets-8owHfP5F.js} +1 -1
  53. package/dist/client/assets/{agent-automation-BfJh_2JN.js → agent-automation-Bz0S-16F.js} +1 -1
  54. package/dist/client/assets/{agent-automations-Cgod1g_C.js → agent-automations-wd9h-Tht.js} +1 -1
  55. package/dist/client/assets/{agent-connect-sources-B9Xoh6yW.js → agent-connect-sources-Dy8ZjfQr.js} +1 -1
  56. package/dist/client/assets/agent-deck-DC1HfpFF.js +1 -0
  57. package/dist/client/assets/{agent-e2e-DD4s46Q5.js → agent-e2e-CuvK9cXo.js} +1 -1
  58. package/dist/client/assets/{agent-experiments-Ch67vt8d.js → agent-experiments-ClpSebT8.js} +1 -1
  59. package/dist/client/assets/agent-file-CZxInd8z.js +1 -0
  60. package/dist/client/assets/{agent-git-CU7BYXgz.js → agent-git-AqNtUeWd.js} +1 -1
  61. package/dist/client/assets/{agent-hosting-BqH1Ud0d.js → agent-hosting-Dt2l50QO.js} +1 -1
  62. package/dist/client/assets/{agent-icon-B8B_2-u8.js → agent-icon-D7_DgLeg.js} +1 -1
  63. package/dist/client/assets/agent-library-file-BRFNvj1-.js +1 -0
  64. package/dist/client/assets/{agent-monitor-CwkF8Dt9.js → agent-monitor-BBFSF-ja.js} +1 -1
  65. package/dist/client/assets/{agent-overview-DdvNA16g.js → agent-overview-Bv0_xqlK.js} +1 -1
  66. package/dist/client/assets/agent-settings-DJ9iDT7J.js +1 -0
  67. package/dist/client/assets/agent-site-editor-code-6rjr4RZ0.js +2 -0
  68. package/dist/client/assets/{agent-site-editor-content-DUFre-Jq.js → agent-site-editor-content-DUUKv9bZ.js} +2 -2
  69. package/dist/client/assets/{agent-site-editor-DnsCFUr9.js → agent-site-editor-nd_s2WPG.js} +1 -1
  70. package/dist/client/assets/{agent-site-editor-preview-DPrrh83X.js → agent-site-editor-preview-DzXJz0uy.js} +3 -3
  71. package/dist/client/assets/agent-view-B2auQi0S.js +1 -0
  72. package/dist/client/assets/{agent-view-guard-205jWYiY.js → agent-view-guard-BRybrHV3.js} +1 -1
  73. package/dist/client/assets/{agents-list-C85O28AC.js → agents-list-D8J1wfGM.js} +1 -1
  74. package/dist/client/assets/{ai-providers-Cohm9nbn.js → ai-providers-pKZ30Kec.js} +1 -1
  75. package/dist/client/assets/{alert-C8UKgkyz.js → alert-DH9D3aPG.js} +1 -1
  76. package/dist/client/assets/{alert-dialog-BbHjJzgy.js → alert-dialog-6ugQOVnp.js} +1 -1
  77. package/dist/client/assets/api-keys-BYpAQK8B.js +1 -0
  78. package/dist/client/assets/{api-keys-De38jy9d.js → api-keys-rUO23RwI.js} +1 -1
  79. package/dist/client/assets/app-editor-DRHO2WYZ.js +1 -0
  80. package/dist/client/assets/{asset-utils-C-ayug9C.js → asset-utils-BoKJ5PK8.js} +1 -1
  81. package/dist/client/assets/{auth-D_W9Aa81.js → auth-DmDOm64q.js} +1 -1
  82. package/dist/client/assets/{auth-catchall-BVfjorWu.js → auth-catchall-C5ga_-pN.js} +1 -1
  83. package/dist/client/assets/{auth-entry-CkKzRCgH.js → auth-entry-C2_omLzg.js} +1 -1
  84. package/dist/client/assets/{auth-split-layout-DBnNHVVb.js → auth-split-layout-BUUa6qGa.js} +1 -1
  85. package/dist/client/assets/{authenticate-and-persist-oauth-BRYH17cH.js → authenticate-and-persist-oauth-6-SdIk-G.js} +1 -1
  86. package/dist/client/assets/{automation-list-row-C1s3DwoW.js → automation-list-row-xkRsARJ4.js} +1 -1
  87. package/dist/client/assets/{automation-runs-Zg_px6So.js → automation-runs-BPNUctbe.js} +1 -1
  88. package/dist/client/assets/{automations-B2ApaTX-.js → automations-C86GtJ-1.js} +1 -1
  89. package/dist/client/assets/{autosend-DNFl2oTx.js → autosend-BF2ntRTS.js} +1 -1
  90. package/dist/client/assets/{avatar-BmVUjYYH.js → avatar-DIbfdIaJ.js} +1 -1
  91. package/dist/client/assets/{badge-DdeVW9no.js → badge-BuhJVk0d.js} +1 -1
  92. package/dist/client/assets/{block-document-DG5_xmvr.js → block-document-CNdBZYlH.js} +1 -1
  93. package/dist/client/assets/{blocks-preview-workspace-context-C8SE6VDD.js → blocks-preview-workspace-context-Do59qFA-.js} +1 -1
  94. package/dist/client/assets/{breadcrumb-B5IvhN-p.js → breadcrumb-Bn6Qxv6I.js} +1 -1
  95. package/dist/client/assets/{buckets-Dgm101hJ.js → buckets-MyVzU5Wd.js} +1 -1
  96. package/dist/client/assets/{build-improve-prompt-doc-B8O_ymCe.js → build-improve-prompt-doc-3AB_pLqo.js} +1 -1
  97. package/dist/client/assets/{bulk-category-panel-DiHrxGqs.js → bulk-category-panel-BmJPTlrj.js} +1 -1
  98. package/dist/client/assets/{calendar-C9n1f8xN.js → calendar-Bz-pgKJK.js} +1 -1
  99. package/dist/client/assets/{capability-load-error-BHm-sz5p.js → capability-load-error-BkDt31rX.js} +1 -1
  100. package/dist/client/assets/category-editor-DWsxrZD0.js +1 -0
  101. package/dist/client/assets/{chart-Dd0cV2ZE.js → chart-BPdzcfAa.js} +1 -1
  102. package/dist/client/assets/{chat-context-Za_k-N1M.js → chat-context-CDAlulfA.js} +1 -1
  103. package/dist/client/assets/{chat-draft-DjHORFFK.js → chat-draft-ox07yWju.js} +1 -1
  104. package/dist/client/assets/{checkbox-DIMXLwQ5.js → checkbox-CCyUpxZx.js} +1 -1
  105. package/dist/client/assets/{choose-editor-CNI5YxiS.js → choose-editor-CNRYJEr8.js} +1 -1
  106. package/dist/client/assets/{cli-auth-success-D3_GUKAy.js → cli-auth-success-Cg7F0V5P.js} +1 -1
  107. package/dist/client/assets/{client-icons-CuFvHI9b.js → client-icons-DkY0axzR.js} +1 -1
  108. package/dist/client/assets/{collapsible-2AD_IkiW.js → collapsible-CS4VRXD_.js} +1 -1
  109. package/dist/client/assets/{collection-detail-BSqBroDQ.js → collection-detail-eW0NUZdX.js} +1 -1
  110. package/dist/client/assets/{collection-display-button-Dvz3Rgkm.js → collection-display-button-Bc-ifoPd.js} +1 -1
  111. package/dist/client/assets/{collection-search-DM4YpwRV.js → collection-search-Cf3xxp2D.js} +1 -1
  112. package/dist/client/assets/{collection-table-wrapper-CXAfBFnU.js → collection-table-wrapper-DmsWQn0S.js} +1 -1
  113. package/dist/client/assets/{collection-tabs-DD5rq8h3.js → collection-tabs-CKge2GXF.js} +1 -1
  114. package/dist/client/assets/{combobox-C5WU0qvl.js → combobox-BWRBQog_.js} +1 -1
  115. package/dist/client/assets/{command-Miuy1GDx.js → command-D92Vc8wZ.js} +1 -1
  116. package/dist/client/assets/{companion-mcps-section-Duj1Jat5.js → companion-mcps-section-BiC5HEIS.js} +1 -1
  117. package/dist/client/assets/{connect-wUrFlr7M.js → connect-BHkghewJ.js} +1 -1
  118. package/dist/client/assets/{connect-layout-erQml2aG.js → connect-layout-B6zbLjpp.js} +1 -1
  119. package/dist/client/assets/{connection-CbULtnS2.js → connection-DINB-U7F.js} +1 -1
  120. package/dist/client/assets/{connection-card-LduJQ7lI.js → connection-card-B1l82vpD.js} +1 -1
  121. package/dist/client/assets/{connection-detail-CDqJFLEY.js → connection-detail-W9a_OVyK.js} +1 -1
  122. package/dist/client/assets/{connection-form-helpers-kQbyKD0d.js → connection-form-helpers-iyzO-C-U.js} +1 -1
  123. package/dist/client/assets/{connections-ZvWGoXmF.js → connections-DqSoTmKR.js} +1 -1
  124. package/dist/client/assets/{create-organization-dialog-p9L4Mwkm.js → create-organization-dialog-BEfUGIPB.js} +1 -1
  125. package/dist/client/assets/{decofile-api-CX0K6j92.js → decofile-api-CjA5VsH3.js} +1 -1
  126. package/dist/client/assets/{decopilot-DnYIWQkK.js → decopilot-CcmhDMq8.js} +1 -1
  127. package/dist/client/assets/{dialog-DzYuga2F.js → dialog-BGeIGaOQ.js} +1 -1
  128. package/dist/client/assets/{discover-Djhi0yxB.js → discover-Qpp5-Lwt.js} +1 -1
  129. package/dist/client/assets/{domain-settings-CuObe2yT.js → domain-settings-BYjmJ-_9.js} +1 -1
  130. package/dist/client/assets/{download-app-dialog-BWfYZk6R.js → download-app-dialog-tB-sFfox.js} +1 -1
  131. package/dist/client/assets/{drawer-QFst6EjD.js → drawer-CW_I7YDU.js} +1 -1
  132. package/dist/client/assets/{editor-C-FihdXL.js → editor-DG3GAwjz.js} +1 -1
  133. package/dist/client/assets/{empty-state-DCVXiSFm.js → empty-state-BxuGfxi2.js} +1 -1
  134. package/dist/client/assets/{empty-state-DXrxDsu2.js → empty-state-CC1gKASp.js} +1 -1
  135. package/dist/client/assets/{extract-connection-data-9pRsmjJ4.js → extract-connection-data-BrGvh19v.js} +1 -1
  136. package/dist/client/assets/{feature-gate-ZIDAH_Oy.js → feature-gate-C98Y_ieW.js} +1 -1
  137. package/dist/client/assets/{feature-paywall-DmACkaQg.js → feature-paywall-CMPQ2H8B.js} +1 -1
  138. package/dist/client/assets/{file-explorer-C8neb8IY.js → file-explorer-BkeCo0w5.js} +1 -1
  139. package/dist/client/assets/{file-preview-Bheeysxh.js → file-preview-E6rw-EuT.js} +1 -1
  140. package/dist/client/assets/{file-share-button-ClStp_TI.js → file-share-button-B1vZE_M4.js} +1 -1
  141. package/dist/client/assets/{file-type-icon-D-FhC1f0.js → file-type-icon-B1y9alSP.js} +1 -1
  142. package/dist/client/assets/{folder-icon-D4SoqI2R.js → folder-icon-BtshgjPb.js} +1 -1
  143. package/dist/client/assets/{form-BII_LIyA.js → form-BRcoMCQk.js} +1 -1
  144. package/dist/client/assets/{gateway-client-Bal3c2uP.js → gateway-client-D1O6ejnK.js} +1 -1
  145. package/dist/client/assets/{general-B4m7pXkS.js → general-BOoOjY19.js} +1 -1
  146. package/dist/client/assets/{github-icon-C8yRXstg.js → github-icon-C3pcNerU.js} +1 -1
  147. package/dist/client/assets/{home-KA-tytFL.js → home-bhScUN9z.js} +1 -1
  148. package/dist/client/assets/{hooks-BNcImt6Y.js → hooks-4Ot6kWFv.js} +1 -1
  149. package/dist/client/assets/{hooks-BTZicdGg.js → hooks-CGvBDr23.js} +1 -1
  150. package/dist/client/assets/{icon-button-r7ijDvta.js → icon-button-B293RRtv.js} +1 -1
  151. package/dist/client/assets/{index-Do_Tv0wI.js → index-26qOHGKB.js} +1 -1
  152. package/dist/client/assets/{index-BTs0PSaM.js → index-4eUstHLE.js} +1 -1
  153. package/dist/client/assets/{index-e0sZjNfP.js → index-BlwlTJtx.js} +1 -1
  154. package/dist/client/assets/{index-7IFgUg2g.js → index-Bnz61WBS.js} +1 -1
  155. package/dist/client/assets/{index-CWebOMIO.js → index-Bpy9PU2z.js} +1 -1
  156. package/dist/client/assets/{index-D6X0rBu0.js → index-CWaAUsIH.js} +1 -1
  157. package/dist/client/assets/{index-8b0soMJn.js → index-CqivxnmP.js} +1 -1
  158. package/dist/client/assets/{index-BokpZsi2.js → index-CzNCoaYS.js} +1 -1
  159. package/dist/client/assets/{index-BXMtmUiH.js → index-DM-wOMU-.js} +1 -1
  160. package/dist/client/assets/{index-DFwNqRut.js → index-DUYXZx_q.js} +1 -1
  161. package/dist/client/assets/{index-DtSGOkcH.js → index-DZmLHQw7.js} +1 -1
  162. package/dist/client/assets/{index-CWWcV2ic.js → index-Dx7v6J2e.js} +1 -1
  163. package/dist/client/assets/{index-CBh3etGH.js → index-KNPlu-mw.js} +2 -2
  164. package/dist/client/assets/{index-C0cgHLMr.js → index-oypwdcf2.js} +1 -1
  165. package/dist/client/assets/{index-redirect-DQzbFu3B.js → index-redirect-CkLeqvOA.js} +1 -1
  166. package/dist/client/assets/{infiniteQueryObserver-DKHdRAlp.js → infiniteQueryObserver-BZK90Cxs.js} +1 -1
  167. package/dist/client/assets/{infra-billing-JwEF2PpT.js → infra-billing-CEhwSjdZ.js} +1 -1
  168. package/dist/client/assets/{input-ESXtCO_j.js → input-DOrXBQ2N.js} +1 -1
  169. package/dist/client/assets/{input-8ZDVdCNm.js → input-DjkopZxD.js} +1 -1
  170. package/dist/client/assets/{input-BADA8vzo.js → input-G3Dl_oju.js} +1 -1
  171. package/dist/client/assets/{integration-icon-qS2fz1yP.js → integration-icon-BJ-L2RLP.js} +1 -1
  172. package/dist/client/assets/{label-DumbdmqC.js → label-BNPzApUK.js} +1 -1
  173. package/dist/client/assets/{last-preview-page-Whxz4MqW.js → last-preview-page-C_BiYWEQ.js} +1 -1
  174. package/dist/client/assets/{layout-Cc7PMBhb.js → layout-DkVA_1ZE.js} +1 -1
  175. package/dist/client/assets/{legacy-agents-deep-Krvaw2qi.js → legacy-agents-deep-BC6rxEUp.js} +1 -1
  176. package/dist/client/assets/{legacy-main-redirect-BrO5M9QA.js → legacy-main-redirect-BNDQG9mN.js} +1 -1
  177. package/dist/client/assets/{library-C8ERDufW.js → library-BLff67UU.js} +1 -1
  178. package/dist/client/assets/{login-FVTyqqZ3.js → login-CSMeXlfe.js} +1 -1
  179. package/dist/client/assets/{markdown-D6eb4XhI.js → markdown-C8T5ITiF.js} +1 -1
  180. package/dist/client/assets/{mcp-app-renderer-Cf9MuM-c.js → mcp-app-renderer-CMzraocc.js} +1 -1
  181. package/dist/client/assets/{mcp-oauth-gbmIBHwE.js → mcp-oauth-Dwgx5guo.js} +1 -1
  182. package/dist/client/assets/{members-BZ1KDhPh.js → members-DzWhX5uD.js} +1 -1
  183. package/dist/client/assets/{message-templates-Bx2qO7je.js → message-templates-BVo4ZI-W.js} +1 -1
  184. package/dist/client/assets/{mini-report-page-C4uZwAzP.js → mini-report-page-Erf27AS0.js} +1 -1
  185. package/dist/client/assets/{mock-board-C4Z07Eln.js → mock-board-CExGmBZQ.js} +3 -3
  186. package/dist/client/assets/{monaco-editor-D9AWeX9G.js → monaco-editor-Ccpjx5-K.js} +1 -1
  187. package/dist/client/assets/{monitoring-stats-row-DDAtg3Tj.js → monitoring-stats-row-ol2vQzvk.js} +1 -1
  188. package/dist/client/assets/{multi-select-DXzipcff.js → multi-select-ck6tvIBS.js} +1 -1
  189. package/dist/client/assets/{mustache-9HWEdnHX.js → mustache-BuJC9i7P.js} +1 -1
  190. package/dist/client/assets/{oauth-callback-oMZdTE5c.js → oauth-callback-Br33YNZk.js} +1 -1
  191. package/dist/client/assets/{oauth-callback-ai-provider-PMduKk3m.js → oauth-callback-ai-provider-Bc7GNP8T.js} +1 -1
  192. package/dist/client/assets/{onboarding-DR-mDSRq.js → onboarding-Dn4ZbQh-.js} +1 -1
  193. package/dist/client/assets/{optimistic-project-sidebar-views-DuHEKHXm.js → optimistic-project-sidebar-views-B5nMpWQk.js} +1 -1
  194. package/dist/client/assets/{org-file-open-context-DHtN-Bkp.js → org-file-open-context-utbnY1tD.js} +1 -1
  195. package/dist/client/assets/{organization-choice-4CFptvtb.js → organization-choice-B00-ogHL.js} +1 -1
  196. package/dist/client/assets/{orgs-K7lFlow3.js → orgs-BmIFwz6f.js} +1 -1
  197. package/dist/client/assets/{page-seo-form-BPiDeAcN.js → page-seo-form-CTsl5oez.js} +1 -1
  198. package/dist/client/assets/{pair-Ccjm59cB.js → pair-BtIrWjTl.js} +1 -1
  199. package/dist/client/assets/{plan-ladder-B3U53pHd.js → plan-ladder-SJELPXMo.js} +1 -1
  200. package/dist/client/assets/{popover-B5_34Grs.js → popover-dCy-7dpE.js} +1 -1
  201. package/dist/client/assets/{post-calendar-HM3aWfTI.js → post-calendar-7Z8CrNzs.js} +1 -1
  202. package/dist/client/assets/{post-editor-D3Ao8Cjo.js → post-editor-SR_NBmM2.js} +1 -1
  203. package/dist/client/assets/{preview-content-s4RGEJw3.js → preview-content-N6itSIXn.js} +1 -1
  204. package/dist/client/assets/{preview-dialog-BlDPx_VU.js → preview-dialog-B5LMzCtj.js} +1 -1
  205. package/dist/client/assets/{primitives-C_y_khtv.js → primitives-BTIInGe8.js} +1 -1
  206. package/dist/client/assets/{profile-DQpWfFDq.js → profile-HfhNtjYj.js} +1 -1
  207. package/dist/client/assets/{project-app-view-CQsCUC5y.js → project-app-view-Bzzo3THn.js} +1 -1
  208. package/dist/client/assets/{project-feed-B76H20SV.js → project-feed-DqYxfGlw.js} +1 -1
  209. package/dist/client/assets/{project-icon-7mxspBuW.js → project-icon-ble1qRVZ.js} +1 -1
  210. package/dist/client/assets/project-reports-BnF1p0_p.js +1 -0
  211. package/dist/client/assets/project-tasks-CtH35uDO.js +1 -0
  212. package/dist/client/assets/{prompts-BvFufyp1.js → prompts-1PHuUnvr.js} +1 -1
  213. package/dist/client/assets/record-editor-C1uQSW5J.js +1 -0
  214. package/dist/client/assets/{redirect-editor-SoW3jgiA.js → redirect-editor-5DSn8iED.js} +1 -1
  215. package/dist/client/assets/registry-Byv2lHYM.js +2 -0
  216. package/dist/client/assets/{registry-layout-TtDTHPjK.js → registry-layout-CfHzR3q0.js} +1 -1
  217. package/dist/client/assets/reports-CaEHck5d.js +1 -0
  218. package/dist/client/assets/{reports-BuNugKLW.js → reports-gonIp6j-.js} +1 -1
  219. package/dist/client/assets/{reports-onboarding-CI_S_ebV.js → reports-onboarding-DJytBMSN.js} +1 -1
  220. package/dist/client/assets/{reports-tab-CPFar5bX.js → reports-tab-RQ6xFPYf.js} +2 -2
  221. package/dist/client/assets/{repositories-C3nMK9Lo.js → repositories-Doc5GKmt.js} +1 -1
  222. package/dist/client/assets/{repository-import-picker-BFlZ5JhQ.js → repository-import-picker-oikqMepd.js} +1 -1
  223. package/dist/client/assets/{repository-picker-Cp4NTrsG.js → repository-picker-BbQ9GWzI.js} +1 -1
  224. package/dist/client/assets/{require-capability-CBZ9Fem8.js → require-capability-CWlzsbP1.js} +1 -1
  225. package/dist/client/assets/{required-auth-layout-AcyYXBWs.js → required-auth-layout-tnG7yvfo.js} +1 -1
  226. package/dist/client/assets/{reset-password-_UvfrZwE.js → reset-password-Dv9Sm-TM.js} +1 -1
  227. package/dist/client/assets/{resizable-BYC_nNkX.js → resizable-CLWvSa8l.js} +1 -1
  228. package/dist/client/assets/{review-settings-Scx0pwkb.js → review-settings-CqPPZdUH.js} +1 -1
  229. package/dist/client/assets/{rich-text-link-control-CSTqV0J5.js → rich-text-link-control-DktDEZvw.js} +1 -1
  230. package/dist/client/assets/{roles-BN5KbKsy.js → roles-BX-6nyqV.js} +1 -1
  231. package/dist/client/assets/{route-BRc7JmKd.js → route-B17vf220.js} +1 -1
  232. package/dist/client/assets/{route-CbtGpp91.js → route-Cc6xSIHm.js} +1 -1
  233. package/dist/client/assets/{route-BWr2GQj5.js → route-CrW6LD3i.js} +1 -1
  234. package/dist/client/assets/{route-page-header-Cnu4oVuS.js → route-page-header-q5ywKM-B.js} +1 -1
  235. package/dist/client/assets/{runnable-block-editor-CId6iYyP.js → runnable-block-editor-Bx0_mYjr.js} +1 -1
  236. package/dist/client/assets/{sandbox-lifecycle-context-YT2PqdVj.js → sandbox-lifecycle-context-CTwoR9w6.js} +1 -1
  237. package/dist/client/assets/{schema-BoqvY4w5.js → schema-BYcOOzAH.js} +1 -1
  238. package/dist/client/assets/{scroll-area-VagzCDJ8.js → scroll-area-CdvrDMMb.js} +1 -1
  239. package/dist/client/assets/{search-input-ChtCABdQ.js → search-input-C9yfeCwz.js} +1 -1
  240. package/dist/client/assets/{search-toggle-RZOMP0pr.js → search-toggle-Bk4rVG35.js} +1 -1
  241. package/dist/client/assets/{secrets-CUMRbVNW.js → secrets-DPNbUb00.js} +1 -1
  242. package/dist/client/assets/{sections-editor-FOY7cRs_.js → sections-editor-sY9S19M_.js} +1 -1
  243. package/dist/client/assets/{select-CBeinvGR.js → select-DyXGk9B4.js} +1 -1
  244. package/dist/client/assets/{select-model-Cx0rVIwy.js → select-model-CWkmZhPO.js} +1 -1
  245. package/dist/client/assets/{seo-editor-C_Vji93-.js → seo-editor-vD4a5QRa.js} +1 -1
  246. package/dist/client/assets/{separator-CE0UP9ib.js → separator-DULnL_Lr.js} +1 -1
  247. package/dist/client/assets/{settings-tab-BQ6eN4vv.js → settings-tab-D8ZRyTJD.js} +1 -1
  248. package/dist/client/assets/{sheet-B_Sc1nXS.js → sheet-CY7dL-f7.js} +1 -1
  249. package/dist/client/assets/{shell-layout-DCRTfCCr.js → shell-layout-b9tZGlO9.js} +1 -1
  250. package/dist/client/assets/{sidebar-D-Sc2ldE.js → sidebar-oesDPvHN.js} +1 -1
  251. package/dist/client/assets/{skill-preview-DcPxBGmm.js → skill-preview-Cqk_qZk7.js} +1 -1
  252. package/dist/client/assets/{skills-BwDo_tWb.js → skills-D4iqqvg0.js} +1 -1
  253. package/dist/client/assets/{sso-Cy7NoZty.js → sso--sqekILC.js} +1 -1
  254. package/dist/client/assets/{store-rxcVnmGJ.js → store-B4n1tIh8.js} +1 -1
  255. package/dist/client/assets/store-registry-DVhCfkop.js +2 -0
  256. package/dist/client/assets/{switch-5YSkqKs3.js → switch-Cj3JbezF.js} +1 -1
  257. package/dist/client/assets/{synced-repos-BfTUhInB.js → synced-repos-BppMvTdd.js} +1 -1
  258. package/dist/client/assets/{table-gU34iXL1.js → table-DuYwpMSZ.js} +1 -1
  259. package/dist/client/assets/{tabs-C9njD3gL.js → tabs-AYKphigN.js} +1 -1
  260. package/dist/client/assets/{task-board-e9i2xroT.js → task-board-BJKHiKMb.js} +1 -1
  261. package/dist/client/assets/{task-route-CXxXACoR.js → task-route-BUhSFrl8.js} +1 -1
  262. package/dist/client/assets/{task-status-CdtqiMMF.js → task-status-CDRALfAE.js} +1 -1
  263. package/dist/client/assets/{taskboard-analytics-Cv6qVttQ.js → taskboard-analytics-OI4dYuZ5.js} +1 -1
  264. package/dist/client/assets/{tasks-CO4NwRvB.js → tasks-DlTKKD4m.js} +1 -1
  265. package/dist/client/assets/tasks-DzgNEDWV.js +1 -0
  266. package/dist/client/assets/{textarea-CvLyMnq1.js → textarea-BSGNz7Jp.js} +1 -1
  267. package/dist/client/assets/{thread-button-CG-31Hn0.js → thread-button-Cd01lRtU.js} +1 -1
  268. package/dist/client/assets/{thread-intent-zcGCeBGJ.js → thread-intent-C0i7ITMJ.js} +1 -1
  269. package/dist/client/assets/{thread-route-DqDsMa4z.js → thread-route-6CnywxO1.js} +1 -1
  270. package/dist/client/assets/{thread-route-62DFtTgD.js → thread-route-DVEbK22y.js} +1 -1
  271. package/dist/client/assets/{thread-sheet-body-B2iNOi2x.js → thread-sheet-body-q2p0tLoV.js} +1 -1
  272. package/dist/client/assets/{toggle-group-BSVaC4tT.js → toggle-group-D03c7W4C.js} +1 -1
  273. package/dist/client/assets/{toolbar-icon-button-C746aCEt.js → toolbar-icon-button-BB-RYDbU.js} +1 -1
  274. package/dist/client/assets/{tooltip-Zr-ZjGTB.js → tooltip-6YWTYe8Z.js} +1 -1
  275. package/dist/client/assets/{track-UuxH2kov.js → track-B5_ADi8n.js} +1 -1
  276. package/dist/client/assets/{types-BiTFh_ZV.js → types-OwCEy2wn.js} +1 -1
  277. package/dist/client/assets/{usage-stats-Dhe6xaYG.js → usage-stats-BQjc_u1o.js} +1 -1
  278. package/dist/client/assets/{use-ai-providers-Dwh3yKnq.js → use-ai-providers-CkZuKbv6.js} +1 -1
  279. package/dist/client/assets/{use-automations-B02z8RCd.js → use-automations-Q_CO2GvT.js} +1 -1
  280. package/dist/client/assets/{use-autosave-DjAUdDYx.js → use-autosave-DnT7v4ff.js} +1 -1
  281. package/dist/client/assets/{use-connect-companion-IbhwZRoE.js → use-connect-companion-DFWku9NL.js} +1 -1
  282. package/dist/client/assets/{use-connection-XAZmaqbM.js → use-connection-Z5_xgR0n.js} +1 -1
  283. package/dist/client/assets/{use-copy-DXK3Yqwb.js → use-copy-Du2OqzJD.js} +1 -1
  284. package/dist/client/assets/{use-create-virtual-mcp-ChccE022.js → use-create-virtual-mcp-DFwp9L_l.js} +1 -1
  285. package/dist/client/assets/{use-date-fns-locale-CRmiCtwR.js → use-date-fns-locale-Ce9kSBH6.js} +1 -1
  286. package/dist/client/assets/{use-debounced-autosave-rd3csGsf.js → use-debounced-autosave-CAzJuChS.js} +1 -1
  287. package/dist/client/assets/{use-debounced-value-B4qNBMYI.js → use-debounced-value-Jwy4Op50.js} +1 -1
  288. package/dist/client/assets/{use-deco-credits-BbnyisCe.js → use-deco-credits-bCsf8wb-.js} +1 -1
  289. package/dist/client/assets/{use-decopilot-events-DYQfKcml.js → use-decopilot-events-B2WyR_4j.js} +1 -1
  290. package/dist/client/assets/{use-delete-connection-BNnLybu4.js → use-delete-connection-Dbm-NAPN.js} +1 -1
  291. package/dist/client/assets/{use-deployment-admin-PrLmnv3s.js → use-deployment-admin-tYT6ayL8.js} +1 -1
  292. package/dist/client/assets/{use-entitlements-D2PM1VE3.js → use-entitlements-16736vo7.js} +1 -1
  293. package/dist/client/assets/{use-fast-preview-draft-url-Bq7QDCiJ.js → use-fast-preview-draft-url-Cf2HoPdQ.js} +1 -1
  294. package/dist/client/assets/{use-file-configs-3wOmsr9_.js → use-file-configs-jr-AKsZr.js} +1 -1
  295. package/dist/client/assets/{use-in-settings-GXMYCyBm.js → use-in-settings-BXgFOjEv.js} +1 -1
  296. package/dist/client/assets/{use-infinite-scroll-Dwc1z7Lz.js → use-infinite-scroll-BBN20wyF.js} +1 -1
  297. package/dist/client/assets/{use-join-requests-B5z3rfbS.js → use-join-requests-CADNjxk_.js} +1 -1
  298. package/dist/client/assets/{use-main-panel-tabs-Bd7Jtmlq.js → use-main-panel-tabs-D3DK53Jg.js} +1 -1
  299. package/dist/client/assets/{use-mcp-auth-status-DEVkeVeN.js → use-mcp-auth-status-CkFg4uDS.js} +1 -1
  300. package/dist/client/assets/{use-mcp-client-v8nBK518.js → use-mcp-client-D8sgAyd7.js} +1 -1
  301. package/dist/client/assets/{use-mcp-prompts-CPOCBKPj.js → use-mcp-prompts-qJI6NP5I.js} +1 -1
  302. package/dist/client/assets/{use-mcp-tools-D0NrXAZ7.js → use-mcp-tools-LnuBfZxX.js} +1 -1
  303. package/dist/client/assets/{use-members-Df92LdRN.js → use-members-DMybc-jf.js} +1 -1
  304. package/dist/client/assets/{use-mobile-B1Xph53X.js → use-mobile-CJNxNPMt.js} +1 -1
  305. package/dist/client/assets/{use-navigate-to-agent-CkCyM-Na.js → use-navigate-to-agent-Btd4glDa.js} +1 -1
  306. package/dist/client/assets/{use-open-billing-url-Dh1Xzn0k.js → use-open-billing-url-oyN5rwDH.js} +1 -1
  307. package/dist/client/assets/{use-org-auth-client-DbxdYocZ.js → use-org-auth-client-BgCrq60T.js} +1 -1
  308. package/dist/client/assets/{use-org-fs-To2UVLG6.js → use-org-fs-DNivrKYm.js} +1 -1
  309. package/dist/client/assets/{use-org-repo-syncs-CNUpn16g.js → use-org-repo-syncs-BqG-Ct4U.js} +1 -1
  310. package/dist/client/assets/{use-org-sso-DiIM_Zer.js → use-org-sso-aX2n03MK.js} +1 -1
  311. package/dist/client/assets/{use-organization-roles-CHQu6jYI.js → use-organization-roles-SL4NCyLF.js} +1 -1
  312. package/dist/client/assets/{use-organization-settings-DeIHFoSh.js → use-organization-settings-d11qialw.js} +1 -1
  313. package/dist/client/assets/{use-panel-navigate-Bc6IDsx9.js → use-panel-navigate-BhNw8w3-.js} +1 -1
  314. package/dist/client/assets/{use-project-native-view-presence-BGM-V0j-.js → use-project-native-view-presence-BIllRCZd.js} +1 -1
  315. package/dist/client/assets/{use-project-scope-CuIqNdJp.js → use-project-scope-Bqrah9gL.js} +1 -1
  316. package/dist/client/assets/{use-registry-connections-0xTlecw6.js → use-registry-connections-DJjqdm_N.js} +1 -1
  317. package/dist/client/assets/{use-releases-DQjGpyIF.js → use-releases-cI15edZo.js} +1 -1
  318. package/dist/client/assets/{use-reports-diagnostic-B8TrVSPw.js → use-reports-diagnostic-Dls9CIPR.js} +1 -1
  319. package/dist/client/assets/{use-route-default-main-B9j7Ms-y.js → use-route-default-main-61CcsYHa.js} +1 -1
  320. package/dist/client/assets/{use-secrets-DyiQzk8T.js → use-secrets-_aQ4eduQ.js} +1 -1
  321. package/dist/client/assets/{use-section-preview-base-BV4uHbtl.js → use-section-preview-base-TCHkeVlX.js} +1 -1
  322. package/dist/client/assets/{use-session-runtime-BrL7GTFF.js → use-session-runtime-CF7nbb0R.js} +1 -1
  323. package/dist/client/assets/{use-tags-BB7Rtqic.js → use-tags-Da6Vtqtg.js} +1 -1
  324. package/dist/client/assets/{use-task-board-analytics-DDxBe_ev.js → use-task-board-analytics-DIW8PS7P.js} +1 -1
  325. package/dist/client/assets/{use-task-metadata-C8D0243M.js → use-task-metadata-DgSd05Xp.js} +1 -1
  326. package/dist/client/assets/{use-thread-outputs-DnttpaXh.js → use-thread-outputs-Bud7gKP9.js} +1 -1
  327. package/dist/client/assets/{use-view-mode-CCZqzshN.js → use-view-mode-34R7b13C.js} +1 -1
  328. package/dist/client/assets/{use-virtual-mcp-BabMP64s.js → use-virtual-mcp-DbDHdgfs.js} +1 -1
  329. package/dist/client/assets/useInfiniteQuery-CvudKG90.js +1 -0
  330. package/dist/client/assets/{useQueries-CsyLjwsr.js → useQueries-CqKcrUhq.js} +1 -1
  331. package/dist/client/assets/useSuspenseInfiniteQuery-gwkPIfeQ.js +1 -0
  332. package/dist/client/assets/{users-CbBXEB-a.js → users-BllbljO6.js} +1 -1
  333. package/dist/client/assets/{utils-Dq-FPhYU.js → utils-Bs6K3de2.js} +1 -1
  334. package/dist/client/assets/{variant-calendar-DIdkIy39.js → variant-calendar-DazMtkTu.js} +1 -1
  335. package/dist/client/assets/{variant-matcher-override-DiKhF4Iv.js → variant-matcher-override-BhkorglB.js} +1 -1
  336. package/dist/client/assets/{view-mode-toggle-CM0Kj4LE.js → view-mode-toggle-BTaPLgCL.js} +1 -1
  337. package/dist/client/assets/{virtual-mcp-COomAdHg.js → virtual-mcp-xuV5EK37.js} +1 -1
  338. package/dist/client/index.html +1 -1
  339. package/dist/server/cli.js +1 -1
  340. package/dist/server/server.js +1 -1
  341. package/package.json +1 -1
  342. package/dist/client/assets/agent-app-CWrM5ubH.js +0 -1
  343. package/dist/client/assets/agent-deck-BqvTJJVT.js +0 -1
  344. package/dist/client/assets/agent-file-CPEDlMZI.js +0 -1
  345. package/dist/client/assets/agent-library-file-BNWS6Rgi.js +0 -1
  346. package/dist/client/assets/agent-settings-WAnkWyy5.js +0 -1
  347. package/dist/client/assets/agent-site-editor-code-BbaWDaGd.js +0 -2
  348. package/dist/client/assets/agent-view-D4--lOWD.js +0 -1
  349. package/dist/client/assets/api-keys-C13kVUcT.js +0 -1
  350. package/dist/client/assets/app-editor-zOGvO7iN.js +0 -1
  351. package/dist/client/assets/category-editor-D0TkUbhg.js +0 -1
  352. package/dist/client/assets/project-reports-CXjIWn6u.js +0 -1
  353. package/dist/client/assets/project-tasks-BCr9D2GI.js +0 -1
  354. package/dist/client/assets/record-editor-KjQ9vSw6.js +0 -1
  355. package/dist/client/assets/registry-BQHCIx0z.js +0 -2
  356. package/dist/client/assets/reports-DmDVwWW0.js +0 -1
  357. package/dist/client/assets/store-registry-S66LUTXD.js +0 -2
  358. package/dist/client/assets/tasks-vit-y3kp.js +0 -1
  359. package/dist/client/assets/useInfiniteQuery-e6Ahat4J.js +0 -1
  360. package/dist/client/assets/useSuspenseInfiniteQuery-Dz22cL5g.js +0 -1
@@ -2076,7 +2076,7 @@ Usage: deco services <up|down|status>`),process.exit(1)}}var $1$=D(()=>{fg()});f
2076
2076
  `.execute($);if(Number(W.rows[0]?.cnt)===0){console.warn(`Failed to migrate ${G}/${K}, keeping in old table`);continue}}await Ku`
2077
2077
  DELETE FROM kysely_migration WHERE name = ${Q}
2078
2078
  `.execute($)}}async function M5$($){await qY4($),await MY4($);let Z=new R5$({db:$,provider:{getMigrations:()=>Promise.resolve(Je0)}}),{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 IY4($){let{keepOpen:Z=!1,database:Q,skipBetterAuth:X=!1}=$??{},Y="skipped";if(!X&&!Q)Y=await Pt0();let J=Q??l$(),G=async()=>{if(!Z&&!Q)await cD(J).catch((K)=>{console.warn("Warning: Error closing database:",K)})};try{let K=await M5$(J.db);return await G(),{betterAuth:Y,kysely:K}}catch(K){throw await G(),K}}async function VY4(){let $=l$(),Z=new R5$({db:$.db,provider:{getMigrations:()=>Promise.resolve(Je0)}}),{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 V5$=D(()=>{T5$();At0();dQ()});async function _J0($){let Z={...process.env},Q=P90($,Z);console.log(Qq1(Q.settings.encryptionKey));let X=Q.settings.betterAuthSecret||(Q.settings.localMode?_$$(Q.settings.dataDir):""),{ensureServices:Y}=await Promise.resolve().then(() => (vY0(),_Y0)),{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(() => (At0(),x$$));await W(J.databaseUrl);let{createDatabase:H}=await Promise.resolve().then(() => (dQ(),r1$)),{migrateToLatest:F}=await Promise.resolve().then(() => (V5$(),I5$)),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 Z1$(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 Ge0=D(()=>{fg();v$$();t1()});var _5$={};e(_5$,{updateService:()=>rz,subscribeCliState:()=>He0,setTuiConsoleIntercepted:()=>vJ0,setServerUrl:()=>So,setMigrationsDone:()=>ko,setDevMode:()=>SY4,resetCliStateForTests:()=>kY4,isTuiConsoleIntercepted:()=>xJ0,getCliState:()=>We0,addLogEntry:()=>oD});function k5$(){return[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}]}function S5$(){return{services:k5$(),migrationsStatus:"pending",serverUrl:null,logs:[]}}function kY4(){fY=S5$()}function Vo(){for(let $ of Ke0)$()}function We0(){return fY}function He0($){return Ke0.add($),()=>Ke0.delete($)}function rz($){fY={...fY,services:fY.services.map((Z)=>Z.name===$.name?$:Z)},Vo()}function ko(){fY={...fY,migrationsStatus:"done"},Vo()}function So($){fY={...fY,serverUrl:$},Vo()}function oD($){let Z=[...fY.logs,$];fY={...fY,logs:Z.length>500?Z.slice(-500):Z},Vo()}function SY4(){fY={...fY,services:[...k5$(),{name:"API",status:"pending",port:0},{name:"Vite",status:"pending",port:0}]},Vo()}function vJ0($){C5$=$}function xJ0(){return C5$}var fY,Ke0,C5$=!1;var az=D(()=>{fY=S5$();Ke0=new Set});import{createServer as v5$}from"net";function CY4($){return new Promise((Z)=>{let Q=v5$();Q.once("error",()=>Z(!1)),Q.listen($,"0.0.0.0",()=>{Q.close(()=>Z(!0))})})}async function Co($){if(await CY4($))return $;let Z=await new Promise((Q,X)=>{let Y=v5$();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 Fe0=()=>{};var Ne0={};e(Ne0,{startDevServer:()=>vY4,pipeToLogStore:()=>Ue0});import{join as _Y4}from"path";function Ue0($){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;oD({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)oD({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:J})}})()}async function vY4($){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 Co(Number(Y)+1):await Co(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await _J0({port:String(G),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let O of W)rz({name:O.name,status:"ready",port:O.port});ko();let F=_Y4(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)Ue0(N.stdout),Ue0(N.stderr);So(J),rz({name:"Vite",status:"ready",port:Number(Y)}),rz({name:"API",status:"ready",port:Number(K.port)});let L=async(O)=>{if(N.kill(O),await N.exited,H.length>0){let{stopServices:w}=await Promise.resolve().then(() => (vY0(),_Y0));await w(K.dataDir)}};return process.on("SIGINT",()=>L("SIGINT")),process.on("SIGTERM",()=>L("SIGTERM")),{port:Number(Y),process:N}}var Be0=D(()=>{Ge0();az();Fe0()});var fJ0;var Le0=D(()=>{fJ0={name:"decocms",version:"4.379.1",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});import{Box as fY4,Text as x5$}from"ink";import{jsx as bY4,jsxs as f5$}from"react/jsx-runtime";function b5$({version:$}){return f5$(fY4,{flexDirection:"column",marginTop:1,children:[QJ0.map((Z,Q)=>bY4(x5$,{color:XJ0[Q],children:Z},Q)),f5$(x5$,{dimColor:!0,children:[" v",$]})]})}var y5$=D(()=>{Bo()});import{Box as sz,Text as rD}from"ink";import{Spinner as yY4}from"@inkjs/ui";import{jsx as eJ,jsxs as Wu}from"react/jsx-runtime";function g5$({status:$}){if($==="pending")return eJ(yY4,{label:""});return eJ(rD,{color:"green",children:"\u2713"})}function gY4($){return`${$.name}: ${$.port||"...."}`}function h5$({services:$,migrationsStatus:Z,home:Q,serverUrl:X}){return Wu(sz,{flexDirection:"column",paddingBottom:1,children:[eJ(b5$,{version:fJ0.version}),eJ(sz,{marginBottom:1,children:eJ(rD,{dimColor:!0,children:"\u2500".repeat(80)})}),eJ(sz,{children:Wu(rD,{dimColor:!0,children:["Home: ",Q]})}),Wu(sz,{gap:2,children:[$.map((Y)=>Wu(sz,{gap:1,children:[eJ(rD,{children:gY4(Y)}),eJ(g5$,{status:Y.status})]},Y.name)),Wu(sz,{gap:1,children:[eJ(rD,{children:"Migrations"}),eJ(g5$,{status:Z})]})]}),eJ(sz,{children:X?Wu(rD,{children:["Open in browser: ",eJ(rD,{color:"cyan",children:X})]}):eJ(rD,{dimColor:!0,children:"Starting..."})})]})}var u5$=D(()=>{Le0();y5$()});import{Box as hY4,Text as _o}from"ink";import{jsx as De0,jsxs as Oe0}from"react/jsx-runtime";function uY4($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function l5$({logs:$}){return De0(hY4,{flexDirection:"column",children:$.map((Z,Q)=>{if(Z.rawLine)return De0(_o,{dimColor:!0,children:Z.rawLine},Q);let X=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return Oe0(_o,{children:[Oe0(_o,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),De0(_o,{color:uY4(Z.status),children:Z.status}),Oe0(_o,{dimColor:!0,children:[" ",X.padStart(8)]})]},Q)})})}var m5$=()=>{};var we0={};e(we0,{App:()=>cY4});import{Box as lY4}from"ink";import{useSyncExternalStore as mY4}from"react";import{jsx as c5$,jsxs as dY4}from"react/jsx-runtime";function cY4({home:$}){let Z=mY4(He0,We0);return dY4(lY4,{flexDirection:"column",children:[c5$(h5$,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),c5$(l5$,{logs:Z.logs})]})}var je0=D(()=>{u5$();m5$();az()});var kG="thread-gate",iN="decopilot-hosted-harness",pN="decopilot-hosted-harness-sandboxed",SG="automations",aD="background-tools",ez="task-board-github-reads";var d5$="13";function i5$($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:d5$,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var p5$=()=>{};import iY4 from"pg";async function t5$($,Z){let{databaseUrl:Q,lockTimeoutMs:X=pY4}=$,Y=$.log??((W)=>console.log(W)),J=new iY4.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",[n5$.toString()])).rows[0]?.locked===!0,K)break;if(Date.now()-G>=X)throw Error(`Timed out after ${X}ms waiting for the DBOS migration lock. Another process is still migrating the dbos schema; this pod will restart and retry.`);await B$(nY4)}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)",[n5$.toString()])}catch{}await J.end().catch(()=>{})}}var n5$=8314027461559302n,pY4=600000,nY4=500;var o5$=D(()=>{i$()});function tY4(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function Ee0($,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 r5$(){let $=tY4();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:Ee0($,"--cpu-prof-dir")??process.cwd(),name:Ee0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(Ee0($,"--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 a5$(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let Q=pz();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(()=>{}),bJ0=setInterval(()=>void Z().catch(()=>{}),$),bJ0.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(bJ0)clearInterval(bJ0)}}var bJ0;var s5$=()=>{};import*as oY4 from"bun:jsc";function e5$(){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{rY4()}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=aY4()?.traces??[]}catch{}if(G>$&&K.length>0){let W=new Map;for(let F of K){let U=F.frames.find((L)=>L.sourceURL&&!/Unknown Executable/.test(L.category??""))??F.frames[0];if(!U)continue;let N=(U.sourceURL??"?").replace(/^.*\/node_modules\//,"node_modules/"),B=`${U.name??"?"} @ ${N}:${U.line??"?"}`;W.set(B,(W.get(B)??0)+1)}let H=[...W.entries()].sort((F,U)=>U[1]-F[1]).slice(0,8).map(([F,U])=>({frame:F,count:U}));console.warn(JSON.stringify({msg:"stall-stack",ts:new Date().toISOString(),lagMs:Math.round(G),samplesInWindow:K.length,top:H}))}Q=setTimeout(Y,Z),Q.unref?.()};return Q=setTimeout(Y,Z),Q.unref?.(),()=>{if(Q)clearTimeout(Q)}}var rY4,aY4;var $9$=D(()=>{({startSamplingProfiler:rY4,samplingProfilerStackTraces:aY4}=oY4)});function Z9$(){r5$();let $=[a5$(),m1$(),e5$()];return()=>{for(let Z of $)Z()}}var Q9$=D(()=>{Bt0();s5$();$9$()});var $P=v((X9$)=>{Object.defineProperty(X9$,"__esModule",{value:!0});X9$.RepublishHeaders=X9$.DirectMsgHeaders=X9$.JsHeaders=X9$.AdvisoryKind=void 0;X9$.isOrderedPushConsumerOptions=sY4;X9$.isPullConsumer=eY4;X9$.isPushConsumer=$J4;X9$.isBoundPushConsumerOptions=ZJ4;function sY4($){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 eY4($){return $.isPullConsumer()}function $J4($){return $.isPushConsumer()}function ZJ4($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}X9$.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"};X9$.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"};X9$.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};X9$.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var $3=v((J9$)=>{Object.defineProperty(J9$,"__esModule",{value:!0});J9$.TD=J9$.TE=J9$.Empty=void 0;J9$.encode=FJ4;J9$.decode=UJ4;J9$.Empty=new Uint8Array(0);J9$.TE=new TextEncoder;J9$.TD=new TextDecoder;function HJ4(...$){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 FJ4(...$){let Z=[];for(let Q=0;Q<$.length;Q++)Z.push(J9$.TE.encode($[Q]));if(Z.length===0)return J9$.Empty;if(Z.length===1)return Z[0];return HJ4(...Z)}function UJ4($){if(!$||$.length===0)return"";return J9$.TD.decode($)}});var Z3=v((W9$)=>{Object.defineProperty(W9$,"__esModule",{value:!0});W9$.errors=W9$.PermissionViolationError=W9$.NoRespondersError=W9$.TimeoutError=W9$.RequestError=W9$.ProtocolError=W9$.ConnectionError=W9$.DrainingConnectionError=W9$.ClosedConnectionError=W9$.AuthorizationError=W9$.UserAuthenticationExpiredError=W9$.InvalidOperationError=W9$.InvalidArgumentError=W9$.InvalidSubjectError=void 0;class Pe0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}W9$.InvalidSubjectError=Pe0;class yJ0 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 yJ0(`${$} ${Z}`,Q)}}W9$.InvalidArgumentError=yJ0;class Ae0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}W9$.InvalidOperationError=Ae0;class gJ0 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new gJ0($);return null}}W9$.UserAuthenticationExpiredError=gJ0;class hJ0 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 hJ0($);return null}}W9$.AuthorizationError=hJ0;class Te0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}W9$.ClosedConnectionError=Te0;class Re0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}W9$.DrainingConnectionError=Re0;class qe0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}W9$.ConnectionError=qe0;class Me0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}W9$.ProtocolError=Me0;class Ie0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof uJ0}}W9$.RequestError=Ie0;class Ve0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}W9$.TimeoutError=Ve0;class uJ0 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}W9$.NoRespondersError=uJ0;class lJ0 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 lJ0($,Q,X,Y)}}W9$.PermissionViolationError=lJ0;W9$.errors={AuthorizationError:hJ0,ClosedConnectionError:Te0,ConnectionError:qe0,DrainingConnectionError:Re0,InvalidArgumentError:yJ0,InvalidOperationError:Ae0,InvalidSubjectError:Pe0,NoRespondersError:uJ0,PermissionViolationError:lJ0,ProtocolError:Me0,RequestError:Ie0,TimeoutError:Ve0,UserAuthenticationExpiredError:gJ0}});var KW=v((B9$)=>{Object.defineProperty(B9$,"__esModule",{value:!0});B9$.SimpleMutex=B9$.Perf=void 0;B9$.extend=VJ4;B9$.render=kJ4;B9$.timeout=SJ4;B9$.delay=CJ4;B9$.deadline=_J4;B9$.deferred=Se0;B9$.debugDeferred=vJ4;B9$.shuffle=xJ4;B9$.collect=fJ4;B9$.jitter=N9$;B9$.backoff=bJ4;B9$.nanos=yJ4;B9$.millis=gJ4;B9$.randomToken=lJ4;var IJ4=$3(),ke0=Z3();function VJ4($,...Z){for(let Q=0;Q<Z.length;Q++){let X=Z[Q];Object.keys(X).forEach(function(Y){$[Y]=X[Y]})}return $}function kJ4($){return IJ4.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function SJ4($,Z=!0){let Q=Z?new ke0.TimeoutError:null,X,Y,J=new Promise((G,K)=>{X={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(Q===null)K(new ke0.TimeoutError);else K(Q)},$)});return Object.assign(J,X)}function CJ4($=0){let Z,Q=new Promise((X)=>{let Y=setTimeout(()=>{X()},$);Z={cancel:()=>{if(Y)clearTimeout(Y),X()}}});return Object.assign(Q,Z)}async function _J4($,Z=1000){let Q=Se0(),X=setTimeout(()=>{Q.reject(new ke0.TimeoutError)},Z);try{return await Promise.race([$,Q])}finally{clearTimeout(X)}}function Se0(){let $={},Z=new Promise((Q,X)=>{$={resolve:Q,reject:X}});return Object.assign(Z,$)}function vJ4(){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 xJ4($){for(let Z=$.length-1;Z>0;Z--){let Q=Math.floor(Math.random()*(Z+1));[$[Z],$[Q]]=[$[Q],$[Z]]}return $}async function fJ4($){let Z=[];for await(let Q of $)Z.push(Q);return Z}class F9${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})}),$}}B9$.Perf=F9$;class U9${max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=Se0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}B9$.SimpleMutex=U9$;function N9$($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function bJ4($=[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 N9$(Q>Z?$[Z]:$[Q])}}}function yJ4($){return $*1e6}function gJ4($){return Math.floor($/1e6)}var hJ4="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",nN=new Uint8Array(62);for(let $=0;$<62;$++)nN[$]=hJ4.charCodeAt($);var uJ4=218340105584896;function lJ4(){let $=Math.floor(Math.random()*uJ4),Z=$%62,Q=nN[Z];$=($-Z)/62,Z=$%62;let X=nN[Z];$=($-Z)/62,Z=$%62;let Y=nN[Z];$=($-Z)/62,Z=$%62;let J=nN[Z];$=($-Z)/62,Z=$%62;let G=nN[Z];$=($-Z)/62,Z=$%62;let K=nN[Z];$=($-Z)/62,Z=$%62;let W=nN[Z];$=($-Z)/62;let H=nN[$];return String.fromCharCode(Q,X,Y,J,G,K,W,H)}});var P9$=v((E9$)=>{Object.defineProperty(E9$,"__esModule",{value:!0});E9$.nuid=E9$.NuidImpl=void 0;var X34="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",sD=62,cJ0=12,w9$=10,D9$=33,Y34=333,O9$=cJ0+w9$,_e0=new Uint8Array(sD);for(let $=0;$<sD;$++)_e0[$]=X34.charCodeAt($);var mJ0=4294967296,j9$=BigInt(sD)**BigInt(w9$),vo=Number(j9$/(1n<<32n)),Ce0=Number(j9$%(1n<<32n));function J34($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function G34($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else J34($)}class ve0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(O9$),this.cbuf=new Uint8Array(cJ0),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(vo+1)),this.seqLo=Math.floor(Math.random()*mJ0);while($++<8&&this.seqHi===vo&&this.seqLo>=Ce0);if(this.seqHi===vo&&this.seqLo>=Ce0)this.seqLo=0;this.inc=Math.random()*(Y34-D9$)+D9$|0}setPre(){G34(this.cbuf);for(let $=0;$<cJ0;$++)this.buf[$]=_e0[this.cbuf[$]%sD]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let Q=O9$-1;Q>=cJ0;Q--){let X=Math.floor($/sD),J=($-X*sD)*mJ0+Z,G=Math.floor(J/sD),K=J-G*sD;this.buf[Q]=_e0[K],$=X,Z=G}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=mJ0)this.seqLo-=mJ0,this.seqHi+=1;if(this.seqHi>vo||this.seqHi===vo&&this.seqLo>=Ce0)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()}}E9$.NuidImpl=ve0;E9$.nuid=new ve0});var q9$=v((T9$)=>{Object.defineProperty(T9$,"__esModule",{value:!0});T9$.nuid=T9$.Nuid=void 0;var A9$=P9$();T9$.Nuid=A9$.NuidImpl;T9$.nuid=A9$.nuid});var iJ0=v((dJ0)=>{Object.defineProperty(dJ0,"__esModule",{value:!0});dJ0.nuid=dJ0.Nuid=void 0;var M9$=q9$();Object.defineProperty(dJ0,"Nuid",{enumerable:!0,get:function(){return M9$.Nuid}});Object.defineProperty(dJ0,"nuid",{enumerable:!0,get:function(){return M9$.nuid}})});var eD=v((I9$)=>{Object.defineProperty(I9$,"__esModule",{value:!0});I9$.DEFAULT_HOST=I9$.DEFAULT_PORT=I9$.Match=void 0;I9$.syncIterator=N34;I9$.createInbox=B34;var F34=iJ0(),U34=Z3();I9$.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function N34($){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 B34($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw U34.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${F34.nuid.next()}`}I9$.DEFAULT_PORT=4222;I9$.DEFAULT_HOST="127.0.0.1"});var xo=v((C9$)=>{Object.defineProperty(C9$,"__esModule",{value:!0});C9$.DataBuffer=void 0;var k9$=$3();class S9${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 k9$.TE.encode($)}static toAscii($){return k9$.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}}C9$.DataBuffer=S9$});var ZP=v((x9$)=>{Object.defineProperty(x9$,"__esModule",{value:!0});x9$.LF=x9$.CR=x9$.CRLF=x9$.CR_LF_LEN=x9$.CR_LF=void 0;x9$.setTransportFactory=P34;x9$.defaultPort=A34;x9$.getUrlParseFn=T34;x9$.newTransport=R34;x9$.getResolveFn=q34;x9$.protoLen=v9$;x9$.extractProtocolMessage=M34;var j34=$3(),E34=eD(),z34=xo(),Q3;function P34($){Q3=$}function A34(){return Q3!==void 0&&Q3.defaultPort!==void 0?Q3.defaultPort:E34.DEFAULT_PORT}function T34(){return Q3!==void 0&&Q3.urlParseFn?Q3.urlParseFn:void 0}function R34(){if(!Q3||typeof Q3.factory!=="function")throw Error("transport fn is not set");return Q3.factory()}function q34(){return Q3!==void 0&&Q3.dnsResolveFn?Q3.dnsResolveFn:void 0}x9$.CR_LF=`\r
2079
+ `);X=J.pop()??"";for(let G of J){let K=Bun.stripANSI(G).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;oD({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)oD({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:J})}})()}async function vY4($){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 Co(Number(Y)+1):await Co(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await _J0({port:String(G),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let O of W)rz({name:O.name,status:"ready",port:O.port});ko();let F=_Y4(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)Ue0(N.stdout),Ue0(N.stderr);So(J),rz({name:"Vite",status:"ready",port:Number(Y)}),rz({name:"API",status:"ready",port:Number(K.port)});let L=async(O)=>{if(N.kill(O),await N.exited,H.length>0){let{stopServices:w}=await Promise.resolve().then(() => (vY0(),_Y0));await w(K.dataDir)}};return process.on("SIGINT",()=>L("SIGINT")),process.on("SIGTERM",()=>L("SIGTERM")),{port:Number(Y),process:N}}var Be0=D(()=>{Ge0();az();Fe0()});var fJ0;var Le0=D(()=>{fJ0={name:"decocms",version:"4.380.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 fY4,Text as x5$}from"ink";import{jsx as bY4,jsxs as f5$}from"react/jsx-runtime";function b5$({version:$}){return f5$(fY4,{flexDirection:"column",marginTop:1,children:[QJ0.map((Z,Q)=>bY4(x5$,{color:XJ0[Q],children:Z},Q)),f5$(x5$,{dimColor:!0,children:[" v",$]})]})}var y5$=D(()=>{Bo()});import{Box as sz,Text as rD}from"ink";import{Spinner as yY4}from"@inkjs/ui";import{jsx as eJ,jsxs as Wu}from"react/jsx-runtime";function g5$({status:$}){if($==="pending")return eJ(yY4,{label:""});return eJ(rD,{color:"green",children:"\u2713"})}function gY4($){return`${$.name}: ${$.port||"...."}`}function h5$({services:$,migrationsStatus:Z,home:Q,serverUrl:X}){return Wu(sz,{flexDirection:"column",paddingBottom:1,children:[eJ(b5$,{version:fJ0.version}),eJ(sz,{marginBottom:1,children:eJ(rD,{dimColor:!0,children:"\u2500".repeat(80)})}),eJ(sz,{children:Wu(rD,{dimColor:!0,children:["Home: ",Q]})}),Wu(sz,{gap:2,children:[$.map((Y)=>Wu(sz,{gap:1,children:[eJ(rD,{children:gY4(Y)}),eJ(g5$,{status:Y.status})]},Y.name)),Wu(sz,{gap:1,children:[eJ(rD,{children:"Migrations"}),eJ(g5$,{status:Z})]})]}),eJ(sz,{children:X?Wu(rD,{children:["Open in browser: ",eJ(rD,{color:"cyan",children:X})]}):eJ(rD,{dimColor:!0,children:"Starting..."})})]})}var u5$=D(()=>{Le0();y5$()});import{Box as hY4,Text as _o}from"ink";import{jsx as De0,jsxs as Oe0}from"react/jsx-runtime";function uY4($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function l5$({logs:$}){return De0(hY4,{flexDirection:"column",children:$.map((Z,Q)=>{if(Z.rawLine)return De0(_o,{dimColor:!0,children:Z.rawLine},Q);let X=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return Oe0(_o,{children:[Oe0(_o,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),De0(_o,{color:uY4(Z.status),children:Z.status}),Oe0(_o,{dimColor:!0,children:[" ",X.padStart(8)]})]},Q)})})}var m5$=()=>{};var we0={};e(we0,{App:()=>cY4});import{Box as lY4}from"ink";import{useSyncExternalStore as mY4}from"react";import{jsx as c5$,jsxs as dY4}from"react/jsx-runtime";function cY4({home:$}){let Z=mY4(He0,We0);return dY4(lY4,{flexDirection:"column",children:[c5$(h5$,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),c5$(l5$,{logs:Z.logs})]})}var je0=D(()=>{u5$();m5$();az()});var kG="thread-gate",iN="decopilot-hosted-harness",pN="decopilot-hosted-harness-sandboxed",SG="automations",aD="background-tools",ez="task-board-github-reads";var d5$="13";function i5$($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:d5$,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var p5$=()=>{};import iY4 from"pg";async function t5$($,Z){let{databaseUrl:Q,lockTimeoutMs:X=pY4}=$,Y=$.log??((W)=>console.log(W)),J=new iY4.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",[n5$.toString()])).rows[0]?.locked===!0,K)break;if(Date.now()-G>=X)throw Error(`Timed out after ${X}ms waiting for the DBOS migration lock. Another process is still migrating the dbos schema; this pod will restart and retry.`);await B$(nY4)}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)",[n5$.toString()])}catch{}await J.end().catch(()=>{})}}var n5$=8314027461559302n,pY4=600000,nY4=500;var o5$=D(()=>{i$()});function tY4(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function Ee0($,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 r5$(){let $=tY4();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:Ee0($,"--cpu-prof-dir")??process.cwd(),name:Ee0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(Ee0($,"--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 a5$(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let Q=pz();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(()=>{}),bJ0=setInterval(()=>void Z().catch(()=>{}),$),bJ0.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(bJ0)clearInterval(bJ0)}}var bJ0;var s5$=()=>{};import*as oY4 from"bun:jsc";function e5$(){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{rY4()}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=aY4()?.traces??[]}catch{}if(G>$&&K.length>0){let W=new Map;for(let F of K){let U=F.frames.find((L)=>L.sourceURL&&!/Unknown Executable/.test(L.category??""))??F.frames[0];if(!U)continue;let N=(U.sourceURL??"?").replace(/^.*\/node_modules\//,"node_modules/"),B=`${U.name??"?"} @ ${N}:${U.line??"?"}`;W.set(B,(W.get(B)??0)+1)}let H=[...W.entries()].sort((F,U)=>U[1]-F[1]).slice(0,8).map(([F,U])=>({frame:F,count:U}));console.warn(JSON.stringify({msg:"stall-stack",ts:new Date().toISOString(),lagMs:Math.round(G),samplesInWindow:K.length,top:H}))}Q=setTimeout(Y,Z),Q.unref?.()};return Q=setTimeout(Y,Z),Q.unref?.(),()=>{if(Q)clearTimeout(Q)}}var rY4,aY4;var $9$=D(()=>{({startSamplingProfiler:rY4,samplingProfilerStackTraces:aY4}=oY4)});function Z9$(){r5$();let $=[a5$(),m1$(),e5$()];return()=>{for(let Z of $)Z()}}var Q9$=D(()=>{Bt0();s5$();$9$()});var $P=v((X9$)=>{Object.defineProperty(X9$,"__esModule",{value:!0});X9$.RepublishHeaders=X9$.DirectMsgHeaders=X9$.JsHeaders=X9$.AdvisoryKind=void 0;X9$.isOrderedPushConsumerOptions=sY4;X9$.isPullConsumer=eY4;X9$.isPushConsumer=$J4;X9$.isBoundPushConsumerOptions=ZJ4;function sY4($){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 eY4($){return $.isPullConsumer()}function $J4($){return $.isPushConsumer()}function ZJ4($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}X9$.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"};X9$.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"};X9$.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};X9$.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var $3=v((J9$)=>{Object.defineProperty(J9$,"__esModule",{value:!0});J9$.TD=J9$.TE=J9$.Empty=void 0;J9$.encode=FJ4;J9$.decode=UJ4;J9$.Empty=new Uint8Array(0);J9$.TE=new TextEncoder;J9$.TD=new TextDecoder;function HJ4(...$){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 FJ4(...$){let Z=[];for(let Q=0;Q<$.length;Q++)Z.push(J9$.TE.encode($[Q]));if(Z.length===0)return J9$.Empty;if(Z.length===1)return Z[0];return HJ4(...Z)}function UJ4($){if(!$||$.length===0)return"";return J9$.TD.decode($)}});var Z3=v((W9$)=>{Object.defineProperty(W9$,"__esModule",{value:!0});W9$.errors=W9$.PermissionViolationError=W9$.NoRespondersError=W9$.TimeoutError=W9$.RequestError=W9$.ProtocolError=W9$.ConnectionError=W9$.DrainingConnectionError=W9$.ClosedConnectionError=W9$.AuthorizationError=W9$.UserAuthenticationExpiredError=W9$.InvalidOperationError=W9$.InvalidArgumentError=W9$.InvalidSubjectError=void 0;class Pe0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}W9$.InvalidSubjectError=Pe0;class yJ0 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 yJ0(`${$} ${Z}`,Q)}}W9$.InvalidArgumentError=yJ0;class Ae0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}W9$.InvalidOperationError=Ae0;class gJ0 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new gJ0($);return null}}W9$.UserAuthenticationExpiredError=gJ0;class hJ0 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 hJ0($);return null}}W9$.AuthorizationError=hJ0;class Te0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}W9$.ClosedConnectionError=Te0;class Re0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}W9$.DrainingConnectionError=Re0;class qe0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}W9$.ConnectionError=qe0;class Me0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}W9$.ProtocolError=Me0;class Ie0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof uJ0}}W9$.RequestError=Ie0;class Ve0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}W9$.TimeoutError=Ve0;class uJ0 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}W9$.NoRespondersError=uJ0;class lJ0 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 lJ0($,Q,X,Y)}}W9$.PermissionViolationError=lJ0;W9$.errors={AuthorizationError:hJ0,ClosedConnectionError:Te0,ConnectionError:qe0,DrainingConnectionError:Re0,InvalidArgumentError:yJ0,InvalidOperationError:Ae0,InvalidSubjectError:Pe0,NoRespondersError:uJ0,PermissionViolationError:lJ0,ProtocolError:Me0,RequestError:Ie0,TimeoutError:Ve0,UserAuthenticationExpiredError:gJ0}});var KW=v((B9$)=>{Object.defineProperty(B9$,"__esModule",{value:!0});B9$.SimpleMutex=B9$.Perf=void 0;B9$.extend=VJ4;B9$.render=kJ4;B9$.timeout=SJ4;B9$.delay=CJ4;B9$.deadline=_J4;B9$.deferred=Se0;B9$.debugDeferred=vJ4;B9$.shuffle=xJ4;B9$.collect=fJ4;B9$.jitter=N9$;B9$.backoff=bJ4;B9$.nanos=yJ4;B9$.millis=gJ4;B9$.randomToken=lJ4;var IJ4=$3(),ke0=Z3();function VJ4($,...Z){for(let Q=0;Q<Z.length;Q++){let X=Z[Q];Object.keys(X).forEach(function(Y){$[Y]=X[Y]})}return $}function kJ4($){return IJ4.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function SJ4($,Z=!0){let Q=Z?new ke0.TimeoutError:null,X,Y,J=new Promise((G,K)=>{X={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(Q===null)K(new ke0.TimeoutError);else K(Q)},$)});return Object.assign(J,X)}function CJ4($=0){let Z,Q=new Promise((X)=>{let Y=setTimeout(()=>{X()},$);Z={cancel:()=>{if(Y)clearTimeout(Y),X()}}});return Object.assign(Q,Z)}async function _J4($,Z=1000){let Q=Se0(),X=setTimeout(()=>{Q.reject(new ke0.TimeoutError)},Z);try{return await Promise.race([$,Q])}finally{clearTimeout(X)}}function Se0(){let $={},Z=new Promise((Q,X)=>{$={resolve:Q,reject:X}});return Object.assign(Z,$)}function vJ4(){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 xJ4($){for(let Z=$.length-1;Z>0;Z--){let Q=Math.floor(Math.random()*(Z+1));[$[Z],$[Q]]=[$[Q],$[Z]]}return $}async function fJ4($){let Z=[];for await(let Q of $)Z.push(Q);return Z}class F9${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})}),$}}B9$.Perf=F9$;class U9${max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=Se0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}B9$.SimpleMutex=U9$;function N9$($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function bJ4($=[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 N9$(Q>Z?$[Z]:$[Q])}}}function yJ4($){return $*1e6}function gJ4($){return Math.floor($/1e6)}var hJ4="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",nN=new Uint8Array(62);for(let $=0;$<62;$++)nN[$]=hJ4.charCodeAt($);var uJ4=218340105584896;function lJ4(){let $=Math.floor(Math.random()*uJ4),Z=$%62,Q=nN[Z];$=($-Z)/62,Z=$%62;let X=nN[Z];$=($-Z)/62,Z=$%62;let Y=nN[Z];$=($-Z)/62,Z=$%62;let J=nN[Z];$=($-Z)/62,Z=$%62;let G=nN[Z];$=($-Z)/62,Z=$%62;let K=nN[Z];$=($-Z)/62,Z=$%62;let W=nN[Z];$=($-Z)/62;let H=nN[$];return String.fromCharCode(Q,X,Y,J,G,K,W,H)}});var P9$=v((E9$)=>{Object.defineProperty(E9$,"__esModule",{value:!0});E9$.nuid=E9$.NuidImpl=void 0;var X34="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",sD=62,cJ0=12,w9$=10,D9$=33,Y34=333,O9$=cJ0+w9$,_e0=new Uint8Array(sD);for(let $=0;$<sD;$++)_e0[$]=X34.charCodeAt($);var mJ0=4294967296,j9$=BigInt(sD)**BigInt(w9$),vo=Number(j9$/(1n<<32n)),Ce0=Number(j9$%(1n<<32n));function J34($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function G34($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else J34($)}class ve0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(O9$),this.cbuf=new Uint8Array(cJ0),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(vo+1)),this.seqLo=Math.floor(Math.random()*mJ0);while($++<8&&this.seqHi===vo&&this.seqLo>=Ce0);if(this.seqHi===vo&&this.seqLo>=Ce0)this.seqLo=0;this.inc=Math.random()*(Y34-D9$)+D9$|0}setPre(){G34(this.cbuf);for(let $=0;$<cJ0;$++)this.buf[$]=_e0[this.cbuf[$]%sD]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let Q=O9$-1;Q>=cJ0;Q--){let X=Math.floor($/sD),J=($-X*sD)*mJ0+Z,G=Math.floor(J/sD),K=J-G*sD;this.buf[Q]=_e0[K],$=X,Z=G}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=mJ0)this.seqLo-=mJ0,this.seqHi+=1;if(this.seqHi>vo||this.seqHi===vo&&this.seqLo>=Ce0)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()}}E9$.NuidImpl=ve0;E9$.nuid=new ve0});var q9$=v((T9$)=>{Object.defineProperty(T9$,"__esModule",{value:!0});T9$.nuid=T9$.Nuid=void 0;var A9$=P9$();T9$.Nuid=A9$.NuidImpl;T9$.nuid=A9$.nuid});var iJ0=v((dJ0)=>{Object.defineProperty(dJ0,"__esModule",{value:!0});dJ0.nuid=dJ0.Nuid=void 0;var M9$=q9$();Object.defineProperty(dJ0,"Nuid",{enumerable:!0,get:function(){return M9$.Nuid}});Object.defineProperty(dJ0,"nuid",{enumerable:!0,get:function(){return M9$.nuid}})});var eD=v((I9$)=>{Object.defineProperty(I9$,"__esModule",{value:!0});I9$.DEFAULT_HOST=I9$.DEFAULT_PORT=I9$.Match=void 0;I9$.syncIterator=N34;I9$.createInbox=B34;var F34=iJ0(),U34=Z3();I9$.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function N34($){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 B34($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw U34.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${F34.nuid.next()}`}I9$.DEFAULT_PORT=4222;I9$.DEFAULT_HOST="127.0.0.1"});var xo=v((C9$)=>{Object.defineProperty(C9$,"__esModule",{value:!0});C9$.DataBuffer=void 0;var k9$=$3();class S9${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 k9$.TE.encode($)}static toAscii($){return k9$.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}}C9$.DataBuffer=S9$});var ZP=v((x9$)=>{Object.defineProperty(x9$,"__esModule",{value:!0});x9$.LF=x9$.CR=x9$.CRLF=x9$.CR_LF_LEN=x9$.CR_LF=void 0;x9$.setTransportFactory=P34;x9$.defaultPort=A34;x9$.getUrlParseFn=T34;x9$.newTransport=R34;x9$.getResolveFn=q34;x9$.protoLen=v9$;x9$.extractProtocolMessage=M34;var j34=$3(),E34=eD(),z34=xo(),Q3;function P34($){Q3=$}function A34(){return Q3!==void 0&&Q3.defaultPort!==void 0?Q3.defaultPort:E34.DEFAULT_PORT}function T34(){return Q3!==void 0&&Q3.urlParseFn?Q3.urlParseFn:void 0}function R34(){if(!Q3||typeof Q3.factory!=="function")throw Error("transport fn is not set");return Q3.factory()}function q34(){return Q3!==void 0&&Q3.dnsResolveFn?Q3.dnsResolveFn:void 0}x9$.CR_LF=`\r
2080
2080
  `;x9$.CR_LF_LEN=x9$.CR_LF.length;x9$.CRLF=z34.DataBuffer.fromAscii(x9$.CR_LF);x9$.CR=new Uint8Array(x9$.CRLF)[0];x9$.LF=new Uint8Array(x9$.CRLF)[1];function v9$($){for(let Z=0;Z<$.length;Z++){let Q=Z+1;if($.byteLength>Q&&$[Z]===x9$.CR&&$[Q]===x9$.LF)return Q+1}return 0}function M34($){let Z=v9$($);if(Z>0){let X=new Uint8Array($).slice(0,Z);return j34.TD.decode(X)}return""}});var ge0=v((m9$)=>{Object.defineProperty(m9$,"__esModule",{value:!0});m9$.ipV4=h9$;m9$.isIP=y34;m9$.parseIP=u9$;var fo=4,QP=16,pJ0=48,g9$=57,b9$=65,f34=70,y9$=97,b34=102,ye0=16777215;function h9$($,Z,Q,X){let Y=new Uint8Array(QP);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 y34($){return u9$($)!==void 0}function u9$($){for(let Z=0;Z<$.length;Z++)switch($[Z]){case".":return l9$($);case":":return g34($)}return}function l9$($){let Z=new Uint8Array(fo);for(let Q=0;Q<fo;Q++){if($.length===0)return;if(Q>0){if($[0]!==".")return;$=$.substring(1)}let{n:X,c:Y,ok:J}=h34($);if(!J||X>255)return;$=$.substring(Y),Z[Q]=X}return h9$(Z[0],Z[1],Z[2],Z[3])}function g34($){let Z=new Uint8Array(QP),Q=-1;if($.length>=2&&$[0]===":"&&$[1]===":"){if(Q=0,$=$.substring(2),$.length===0)return Z}let X=0;while(X<QP){let{n:Y,c:J,ok:G}=u34($);if(!G||Y>65535)return;if(J<$.length&&$[J]==="."){if(Q<0&&X!=QP-fo)return;if(X+fo>QP)return;let K=l9$($);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+=fo;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<QP){if(Q<0)return;let Y=QP-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 h34($){let Z=0,Q=0;for(Z=0;Z<$.length&&pJ0<=$.charCodeAt(Z)&&$.charCodeAt(Z)<=g9$;Z++)if(Q=Q*10+($.charCodeAt(Z)-pJ0),Q>=ye0)return{n:ye0,c:Z,ok:!1};if(Z===0)return{n:0,c:0,ok:!1};return{n:Q,c:Z,ok:!0}}function u34($){let Z=0,Q=0;for(Q=0;Q<$.length;Q++){if(pJ0<=$.charCodeAt(Q)&&$.charCodeAt(Q)<=g9$)Z*=16,Z+=$.charCodeAt(Q)-pJ0;else if(y9$<=$.charCodeAt(Q)&&$.charCodeAt(Q)<=b34)Z*=16,Z+=$.charCodeAt(Q)-y9$+10;else if(b9$<=$.charCodeAt(Q)&&$.charCodeAt(Q)<=f34)Z*=16,Z+=$.charCodeAt(Q)-b9$+10;else break;if(Z>=ye0)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 de0=v((d9$)=>{Object.defineProperty(d9$,"__esModule",{value:!0});d9$.Servers=d9$.ServerImpl=void 0;d9$.isIPV4OrHostname=c9$;d9$.hostPort=ce0;var he0=ZP(),ue0=KW(),le0=ge0(),d34=eD(),i34=Z3();function c9$($){if($.indexOf("[")!==-1||$.indexOf("::")!==-1)return!1;if($.indexOf(".")!==-1)return!0;if($.split(":").length<=2)return!0;return!1}function me0($){return!c9$($)}function p34($){let Q=$.toUpperCase().indexOf("::FFFF:");if(Q!==-1&&$.indexOf(".")!==-1){let X=$.substring(Q+7);return X=X.replace("[",""),X.replace("]","")}return $}function ce0($){if($=$.trim(),$.match(/^(.*:\/\/)(.*)/m))$=$.replace(/^(.*:\/\/)(.*)/gm,"$2");if($=p34($),me0($)&&$.indexOf("[")===-1)$=`[${$}]`;let Z=me0($)?$.match(/(]:)(\d+)/):$.match(/(:)(\d+)/),Q=Z&&Z.length===3&&Z[1]&&Z[2]?parseInt(Z[2]):d34.DEFAULT_PORT,Y=new URL(`${Q===80?"https":"http"}://${$}`);Y.port=`${Q}`;let J=Y.hostname;if(J.charAt(0)==="[")J=J.substring(1,J.length-1);return{listen:Y.host,hostname:J,port:Q}}class Hu{src;listen;hostname;port;didConnect;reconnects;lastConnect;gossiped;tlsName;resolves;constructor($,Z=!1){this.src=$,this.tlsName="";let Q=ce0($);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,le0.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}://${me0(X)?"["+X+"]":X}`);J.port=`${this.port}`;let G=new Hu(J.host,!1);G.tlsName=this.hostname,Z.push(G)}}if($.randomize)(0,ue0.shuffle)(Z);return this.resolves=Z,Z}}d9$.ServerImpl=Hu;class nJ0{firstSelect;servers;currentServer;tlsName;randomize;constructor($={}){this.firstSelect=!0,this.servers=[],this.tlsName="",this.randomize=$.randomize||!1}setServers($){if(!Array.isArray($)||$.length===0)throw i34.InvalidArgumentError.format("servers","cannot be empty");let Z=(0,he0.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}=ce0(Y),G=Q.get(J);if(G)G.gossiped=!1,X.push(G);else X.push(new Hu(Y))}if(this.randomize)(0,ue0.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,le0.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,he0.getUrlParseFn)();$=Q?Q($):$;let X=new Hu($,Z);if((0,le0.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 nJ0.freezeAll(this.servers)}snapshotForHandler(){let $=this.currentServer;if(!$)return this.snapshot();let Z=this.servers.indexOf($);if(Z<=0)return this.snapshot();return nJ0.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,he0.getUrlParseFn)(),J=new Map;if($.connect_urls&&$.connect_urls.length>0)$.connect_urls.forEach((K)=>{K=Y?Y(K,Z):K;let W=new Hu(K,!0);J.set(K,W)});let G=[];if(this.servers.forEach((K,W)=>{let H=K.listen;if(K.gossiped&&this.currentServer.listen!==H&&J.get(H)===void 0)G.push(W);J.delete(H)}),G.reverse(),G.forEach((K)=>{let W=this.servers.splice(K,1);X=X.concat(W[0].listen)}),J.forEach((K,W)=>{this.servers.push(K),Q.push(W)}),this.randomize&&Q.length>0){let K=this.currentServer,W=this.servers.filter((H)=>H!==K);(0,ue0.shuffle)(W),this.servers=K?[K,...W]:W}return{added:Q,deleted:X}}}d9$.Servers=nJ0});var tJ0=v((t9$)=>{Object.defineProperty(t9$,"__esModule",{value:!0});t9$.QueuedIteratorImpl=void 0;var ie0=KW(),p9$=Z3();class n9${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,ie0.deferred)(),this.yields=[],this.iterClosed=(0,ie0.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 p9$.InvalidOperationError("iterator cannot be used when a callback is registered");if(this.yielding)throw new p9$.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,ie0.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}}t9$.QueuedIteratorImpl=n9$});var pe0=v((s9$)=>{Object.defineProperty(s9$,"__esModule",{value:!0});s9$.MuxSubscription=void 0;var r34=eD(),r9$=Z3();class a9${baseInbox;reqs;constructor(){this.reqs=new Map}size(){return this.reqs.size}init($){return this.baseInbox=`${(0,r34.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 r9$.NoRespondersError(X.requestSubject):null;X.resolver($,Z)}}}}close(){let $=new r9$.RequestError("connection closed");this.reqs.forEach((Z)=>{Z.resolver($,{})})}}s9$.MuxSubscription=a9$});var ne0=v((ZZ$)=>{Object.defineProperty(ZZ$,"__esModule",{value:!0});ZZ$.Heartbeat=void 0;var a34=KW();class $Z${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,a34.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})}}ZZ$.Heartbeat=$Z$});var re0=v((GZ$)=>{Object.defineProperty(GZ$,"__esModule",{value:!0});GZ$.DenoBuffer=GZ$.MAX_SIZE=GZ$.AssertionError=void 0;GZ$.assert=YZ$;GZ$.concat=JZ$;GZ$.append=e34;GZ$.readAll=$G4;GZ$.writeAll=ZG4;var s34=$3();class te0 extends Error{constructor($){super($);this.name="AssertionError"}}GZ$.AssertionError=te0;function YZ$($,Z="Assertion failed."){if(!$)throw new te0(Z)}var XZ$=32768;GZ$.MAX_SIZE=4294967294;function oJ0($,Z,Q=0){let X=Z.byteLength-Q;if($.byteLength>X)$=$.subarray(0,X);return Z.set($,Q),$.byteLength}function JZ$($,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 e34($,Z){return JZ$($,Uint8Array.of(Z))}class oe0{_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($){YZ$($<=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=oJ0(this._buf.subarray(this._off),$);return this._off+=Z,Z}writeByte($){return this.write(Uint8Array.of($))}writeString($){return this.write(s34.TE.encode($))}write($){let Z=this._grow($.byteLength);return oJ0($,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)oJ0(this._buf.subarray(this._off),this._buf);else if(X+$>GZ$.MAX_SIZE)throw Error("The buffer cannot be grown beyond the maximum size.");else{let Y=new Uint8Array(Math.min(2*X+$,GZ$.MAX_SIZE));oJ0(this._buf.subarray(this._off),Y),this._buf=Y}return this._off=0,this._reslice(Math.min(Z+$,GZ$.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(XZ$);while(!0){let X=this.capacity-this.length<XZ$,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}}}GZ$.DenoBuffer=oe0;function $G4($){let Z=new oe0;return Z.readFrom($),Z.bytes()}function ZG4($,Z){let Q=0;while(Q<Z.length)Q+=$.write(Z.subarray(Q))}});var ee0=v((UZ$)=>{Object.defineProperty(UZ$,"__esModule",{value:!0});UZ$.cc=UZ$.State=UZ$.Parser=UZ$.Kind=void 0;UZ$.describe=WG4;var ae0=re0(),se0=$3();UZ$.Kind={OK:0,ERR:1,MSG:2,INFO:3,PING:4,PONG:5};function WG4($){let Z,Q="";switch($.kind){case UZ$.Kind.MSG:Z="MSG";break;case UZ$.Kind.OK:Z="OK";break;case UZ$.Kind.ERR:Z="ERR",Q=se0.TD.decode($.data);break;case UZ$.Kind.PING:Z="PING";break;case UZ$.Kind.PONG:Z="PONG";break;case UZ$.Kind.INFO:Z="INFO",Q=se0.TD.decode($.data)}return`${Z}: ${Q}`}function WZ$(){let $={};return $.sid=-1,$.hdr=-1,$.size=-1,$}var HZ$=48,HG4=57,Fu=67108864;class FZ${dispatcher;state;as;drop;hdr;ma;argBuf;msgBuf;constructor($){this.dispatcher=$,this.state=UZ$.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 UZ$.State.OP_START:switch(Q){case UZ$.cc.M:case UZ$.cc.m:this.state=UZ$.State.OP_M,this.hdr=-1,this.ma=WZ$();break;case UZ$.cc.H:case UZ$.cc.h:this.state=UZ$.State.OP_H,this.hdr=0,this.ma=WZ$();break;case UZ$.cc.P:case UZ$.cc.p:this.state=UZ$.State.OP_P;break;case UZ$.cc.PLUS:this.state=UZ$.State.OP_PLUS;break;case UZ$.cc.MINUS:this.state=UZ$.State.OP_MINUS;break;case UZ$.cc.I:case UZ$.cc.i:this.state=UZ$.State.OP_I;break;default:throw this.fail($.subarray(Z))}break;case UZ$.State.OP_H:switch(Q){case UZ$.cc.M:case UZ$.cc.m:this.state=UZ$.State.OP_M;break;default:throw this.fail($.subarray(Z))}break;case UZ$.State.OP_M:switch(Q){case UZ$.cc.S:case UZ$.cc.s:this.state=UZ$.State.OP_MS;break;default:throw this.fail($.subarray(Z))}break;case UZ$.State.OP_MS:switch(Q){case UZ$.cc.G:case UZ$.cc.g:this.state=UZ$.State.OP_MSG;break;default:throw this.fail($.subarray(Z))}break;case UZ$.State.OP_MSG:switch(Q){case UZ$.cc.SPACE:case UZ$.cc.TAB:this.state=UZ$.State.OP_MSG_SPC;break;default:throw this.fail($.subarray(Z))}break;case UZ$.State.OP_MSG_SPC:switch(Q){case UZ$.cc.SPACE:case UZ$.cc.TAB:continue;default:this.state=UZ$.State.MSG_ARG,this.as=Z}break;case UZ$.State.MSG_ARG:switch(Q){case UZ$.cc.CR:this.drop=1;break;case UZ$.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=UZ$.State.MSG_PAYLOAD,Z=this.as+this.ma.size-1;break}default:if(this.argBuf)this.argBuf.writeByte(Q)}break;case UZ$.State.MSG_PAYLOAD:if(this.msgBuf)if(this.msgBuf.length>=this.ma.size){let X=this.msgBuf.bytes({copy:!1});this.dispatcher.push({kind:UZ$.Kind.MSG,msg:this.ma,data:X}),this.argBuf=void 0,this.msgBuf=void 0,this.state=UZ$.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:UZ$.Kind.MSG,msg:this.ma,data:$.subarray(this.as,Z)}),this.argBuf=void 0,this.msgBuf=void 0,this.state=UZ$.State.MSG_END;break;case UZ$.State.MSG_END:switch(Q){case UZ$.cc.NL:this.drop=0,this.as=Z+1,this.state=UZ$.State.OP_START;break;default:continue}break;case UZ$.State.OP_PLUS:switch(Q){case UZ$.cc.O:case UZ$.cc.o:this.state=UZ$.State.OP_PLUS_O;break;default:throw this.fail($.subarray(Z))}break;case UZ$.State.OP_PLUS_O:switch(Q){case UZ$.cc.K:case UZ$.cc.k:this.state=UZ$.State.OP_PLUS_OK;break;default:throw this.fail($.subarray(Z))}break;case UZ$.State.OP_PLUS_OK:switch(Q){case UZ$.cc.NL:this.dispatcher.push({kind:UZ$.Kind.OK}),this.drop=0,this.state=UZ$.State.OP_START;break}break;case UZ$.State.OP_MINUS:switch(Q){case UZ$.cc.E:case UZ$.cc.e:this.state=UZ$.State.OP_MINUS_E;break;default:throw this.fail($.subarray(Z))}break;case UZ$.State.OP_MINUS_E:switch(Q){case UZ$.cc.R:case UZ$.cc.r:this.state=UZ$.State.OP_MINUS_ER;break;default:throw this.fail($.subarray(Z))}break;case UZ$.State.OP_MINUS_ER:switch(Q){case UZ$.cc.R:case UZ$.cc.r:this.state=UZ$.State.OP_MINUS_ERR;break;default:throw this.fail($.subarray(Z))}break;case UZ$.State.OP_MINUS_ERR:switch(Q){case UZ$.cc.SPACE:case UZ$.cc.TAB:this.state=UZ$.State.OP_MINUS_ERR_SPC;break;default:throw this.fail($.subarray(Z))}break;case UZ$.State.OP_MINUS_ERR_SPC:switch(Q){case UZ$.cc.SPACE:case UZ$.cc.TAB:continue;default:this.state=UZ$.State.MINUS_ERR_ARG,this.as=Z}break;case UZ$.State.MINUS_ERR_ARG:switch(Q){case UZ$.cc.CR:this.drop=1;break;case UZ$.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:UZ$.Kind.ERR,data:X}),this.drop=0,this.as=Z+1,this.state=UZ$.State.OP_START;break}default:if(this.argBuf)this.argBuf.write(Uint8Array.of(Q))}break;case UZ$.State.OP_P:switch(Q){case UZ$.cc.I:case UZ$.cc.i:this.state=UZ$.State.OP_PI;break;case UZ$.cc.O:case UZ$.cc.o:this.state=UZ$.State.OP_PO;break;default:throw this.fail($.subarray(Z))}break;case UZ$.State.OP_PO:switch(Q){case UZ$.cc.N:case UZ$.cc.n:this.state=UZ$.State.OP_PON;break;default:throw this.fail($.subarray(Z))}break;case UZ$.State.OP_PON:switch(Q){case UZ$.cc.G:case UZ$.cc.g:this.state=UZ$.State.OP_PONG;break;default:throw this.fail($.subarray(Z))}break;case UZ$.State.OP_PONG:switch(Q){case UZ$.cc.NL:this.dispatcher.push({kind:UZ$.Kind.PONG}),this.drop=0,this.state=UZ$.State.OP_START;break}break;case UZ$.State.OP_PI:switch(Q){case UZ$.cc.N:case UZ$.cc.n:this.state=UZ$.State.OP_PIN;break;default:throw this.fail($.subarray(Z))}break;case UZ$.State.OP_PIN:switch(Q){case UZ$.cc.G:case UZ$.cc.g:this.state=UZ$.State.OP_PING;break;default:throw this.fail($.subarray(Z))}break;case UZ$.State.OP_PING:switch(Q){case UZ$.cc.NL:this.dispatcher.push({kind:UZ$.Kind.PING}),this.drop=0,this.state=UZ$.State.OP_START;break}break;case UZ$.State.OP_I:switch(Q){case UZ$.cc.N:case UZ$.cc.n:this.state=UZ$.State.OP_IN;break;default:throw this.fail($.subarray(Z))}break;case UZ$.State.OP_IN:switch(Q){case UZ$.cc.F:case UZ$.cc.f:this.state=UZ$.State.OP_INF;break;default:throw this.fail($.subarray(Z))}break;case UZ$.State.OP_INF:switch(Q){case UZ$.cc.O:case UZ$.cc.o:this.state=UZ$.State.OP_INFO;break;default:throw this.fail($.subarray(Z))}break;case UZ$.State.OP_INFO:switch(Q){case UZ$.cc.SPACE:case UZ$.cc.TAB:this.state=UZ$.State.OP_INFO_SPC;break;default:throw this.fail($.subarray(Z))}break;case UZ$.State.OP_INFO_SPC:switch(Q){case UZ$.cc.SPACE:case UZ$.cc.TAB:continue;default:this.state=UZ$.State.INFO_ARG,this.as=Z}break;case UZ$.State.INFO_ARG:switch(Q){case UZ$.cc.CR:this.drop=1;break;case UZ$.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:UZ$.Kind.INFO,data:X}),this.drop=0,this.as=Z+1,this.state=UZ$.State.OP_START;break}default:if(this.argBuf)this.argBuf.writeByte(Q)}break;default:throw this.fail($.subarray(Z))}}if((this.state===UZ$.State.MSG_ARG||this.state===UZ$.State.MINUS_ERR_ARG||this.state===UZ$.State.INFO_ARG)&&!this.argBuf)this.argBuf=new ae0.DenoBuffer($.subarray(this.as,Z-this.drop));if(this.state===UZ$.State.MSG_PAYLOAD&&!this.msgBuf){if(!this.argBuf)this.cloneMsgArg();this.msgBuf=new ae0.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 ae0.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 UZ$.cc.SPACE:case UZ$.cc.TAB:case UZ$.cc.CR:case UZ$.cc.NL:if(Q>=0)Z.push($.subarray(Q,X)),Q=-1;break;default:if(Q<0)Q=X}if(Q>=0)Z.push($.subarray(Q));switch(Z.length){case 3:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=void 0,this.ma.size=this.protoParseInt(Z[2],Fu);break;case 4:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=Z[2],this.ma.size=this.protoParseInt(Z[3],Fu);break;default:throw this.fail($,"processMsgArgs Parse Error")}if(this.ma.sid<0)throw this.fail($,"processMsgArgs Bad or Missing Sid Error");if(this.ma.size<0)throw this.fail($,"processMsgArgs Bad or Missing Size Error")}fail($,Z=""){if(!Z)Z=`parse error [${this.state}]`;else Z=`${Z} [${this.state}]`;return Error(`${Z}: ${se0.TD.decode($)}`)}processHeaderMsgArgs($){let Z=[],Q=-1;for(let X=0;X<$.length;X++)switch($[X]){case UZ$.cc.SPACE:case UZ$.cc.TAB:case UZ$.cc.CR:case UZ$.cc.NL:if(Q>=0)Z.push($.subarray(Q,X)),Q=-1;break;default:if(Q<0)Q=X}if(Q>=0)Z.push($.subarray(Q));switch(Z.length){case 4:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=void 0,this.ma.hdr=this.protoParseInt(Z[2],Fu),this.ma.size=this.protoParseInt(Z[3],Fu);break;case 5:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=Z[2],this.ma.hdr=this.protoParseInt(Z[3],Fu),this.ma.size=this.protoParseInt(Z[4],Fu);break;default:throw this.fail($,"processHeaderMsgArgs Parse Error")}if(this.ma.sid<0)throw this.fail($,"processHeaderMsgArgs Bad or Missing Sid Error");if(this.ma.hdr<0||this.ma.hdr>this.ma.size)throw this.fail($,"processHeaderMsgArgs Bad or Missing Header Size Error");if(this.ma.size<0)throw this.fail($,"processHeaderMsgArgs Bad or Missing Size Error")}protoParseInt($,Z){if($.length===0||$.length>15)return-1;let Q=0;for(let X=0;X<$.length;X++){if($[X]<HZ$||$[X]>HG4)return-1;Q=Q*10+($[X]-HZ$)}return Z!==void 0&&Q>Z?-1:Q}}UZ$.Parser=FZ$;UZ$.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};UZ$.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 sJ0=v((BZ$)=>{Object.defineProperty(BZ$,"__esModule",{value:!0});BZ$.MsgHdrsImpl=void 0;BZ$.canonicalMIMEHeaderKey=Z01;BZ$.headers=NG4;var NZ$=$3(),WW=eD(),aJ0=Z3();function Z01($){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 aJ0.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 NG4($=0,Z=""){if($===0&&Z!=="")throw aJ0.InvalidArgumentError.format("code","is required");else if($>0&&Z==="")throw aJ0.InvalidArgumentError.format("description","is required");return new Uu($,Z)}var $01="NATS/1.0";class Uu{_code;headers;_description;constructor($=0,Z=""){this._code=$,this._description=Z,this.headers=new Map}[Symbol.iterator](){return this.headers.entries()}size(){return this.headers.size}equals($){if($&&this.headers.size===$.headers.size&&this._code===$._code){for(let[Z,Q]of this.headers){let X=$.values(Z);if(Q.length!==X.length)return!1;let Y=[...Q].sort(),J=[...X].sort();for(let G=0;G<Y.length;G++)if(Y[G]!==J[G])return!1}return!0}return!1}static decode($){let Z=new Uu,X=NZ$.TD.decode($).split(`\r
2081
2081
  `),Y=X[0];if(Y!==$01){let J=Y.replace($01,"").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 $=$01;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
@@ -3419,7 +3419,7 @@ Respond with ONLY a JSON object of this shape, and nothing else:
3419
3419
  ${J.join(`
3420
3420
  `)}`:X}function sI6($){let Z=new Set;for(let Q of $)for(let Y of Q.split(`
3421
3421
  `)){let X=Y.trim();if(/^Co-authored-by:\s/i.test(X))Z.add(X)}return[...Z]}var xe$=200,lI6=12,dI6,iI6=300,_I0=3;var dW1=O(()=>{OZ();m$();CI0();dI6={aheadBy:0,behindBy:0,files:[]}});function eI6($){if(!$||$.includes(".."))return!1;return aI6.test($)}function ge$($){let Z=typeof $.__resolveType==="string"?$.__resolveType:null;if(!Z||!eI6(Z))return null;let{__resolveType:Q,...Y}=$;return{resolveType:Z,payload:Y}}function he$($,Z){return`${$.replace(/\/+$/,"")}/deco/invoke/${Z}`}var aI6;var ue$=O(()=>{aI6=/^[\w./@-]+$/});function O$0($,Z){let Q=$?.githubRepo;if(!Q?.owner||!Q?.name)return null;if(!Q.connectionId)return Q;if(!Z.includes(Q.connectionId))return null;return Q}async function ce$($,Z,Q,Y){let X=$.organization?.id;if(!X)throw new aw(nZ);let J=await bL($.storage,X,Y);if(J&&await CN($.storage,J)){let F=await XF($,J,{forceRefresh:!0}).catch((U)=>{throw new aw(U instanceof Error?U.message:nZ)});await le$($,Z,Q,F);return}let G=Y.connectionId??J?.legacyConnectionId;if(!G)throw new aw("Push requires a connected git account. Connect the repository's provider for this project and restart the sandbox.");await eu({ctx:$,connectionId:G,organizationId:X,forceRefresh:!0,onLegacyMintError:(F)=>{let U=F instanceof Error?F.message:nZ;throw new aw(U)}});let{cloneUrl:W,gitUserName:K,gitUserEmail:H}=await JF(G,Y.owner,Y.name,$.db,$.vault).catch((F)=>{let{code:U,message:N}=yG$(F instanceof Error?F.message:String(F));throw U?new aw(N):F});await le$($,Z,Q,{cloneUrl:W,gitUserName:K,gitUserEmail:H})}async function le$($,Z,Q,Y){let{cloneUrl:X,gitUserName:J,gitUserEmail:G}=Y,W=id($),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 Jw(K,$V6).catch(()=>K.statusText);throw Error(`Failed to refresh sandbox git credentials (${K.status}): ${H}`)}}var $V6=10485760,aw;var mW1=O(()=>{PG();AI0();ha();S30();xs();OZ();aw=class aw extends Error{constructor($){super($);this.name="GitPushAuthError"}}});function QV6($){let Z=$.startsWith("thread:")?$.slice(7):$;if(!Z||Z.length>255||Z.includes("..")||Z.startsWith("/")||Z.endsWith("/")||Z.endsWith(".lock")||!ZV6.test(Z))throw Error(`Invalid branch name: ${$}`)}function sb($){return AbortSignal.any([$.req.raw.signal,AbortSignal.timeout(XV6)])}async function GV6($,Z){let Q=$.var.studioContext,Y=BF(Z.branch),X=$.req.query("thread")??Y,J=X&&X===Y?Z.branchThread:X?await Q.storage.threads.get(X).catch(()=>null):null,G=J?.virtual_mcp_id===Z.virtualMcpId?J:null,W=Ef(G?.metadata?.runtime);if(W)return W;let K=OP0(Z.virtualMcpMetadata),H=K==="cms"?await TW1(Q,{claimName:Z.claimName}):"alive",F=K==="cms"&&H!=="alive"?"cms":"sandbox",U=!!G&&(H==="gone"||H==="alive"&&K==="cms");if(U&&G)ua(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 WV6($){let Z=$.get("vmClaim");if(Z.runner)return Z.runner;try{return await nY($.var.studioContext)}catch{return null}}function ab($){let{runner:Z}=$.get("vmClaim");if(!Z)return $.json({error:"No sandbox runner configured"},503);return Z}async function rd($){let{virtualMcpMetadata:Z,connectionIds:Q}=$.get("vmClaim"),Y=$.var.studioContext,X=O$0(Z,Q);if(!X)throw new b0({provider:"github",status:404,message:"Project has no GitHub repository"});let J=p(Y);return ru(Y,J.id,X)}function iW1($,Z){let Q=Z instanceof Error?Z.message:String(Z),Y=U3$(Z);if(Y!==void 0)return $.json({error:Q},429,{...R5,...Y===null?{}:{"Retry-After":String(Math.ceil(Y/1000))}});if(Z instanceof P6)return $.json({error:Q},409,R5);let X=qG(Z);if(X!==null){let J=X===404?404:X===409||X===422?409:502;return $.json({error:Q},J,R5)}return $.json({error:Q},502,R5)}async function ie$($,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 pe$($){try{let Z=await rd($),Q=await vI0(Z,$.get("vmClaim").branch);return $.json(Q,200,R5)}catch(Z){return iW1($,Z)}}function L$0($,Z){let Y=(xI0.get($)??Promise.resolve()).catch(()=>{}).then(Z),X=Y.catch(()=>{});return xI0.set($,X),X.finally(()=>{if(xI0.get($)===X)xI0.delete($)}),Y}async function k7($,Z,Q){if(!Q?.runner&&$.get("vmClaim").runtime==="cms")return $.json({error:"sandbox not found: this session is sandbox-less"},404,R5);let Y=Q?.runner??ab($);if(Y instanceof Response)return Y;let{claimName:X,userId:J,projectRef:G}=$.get("vmClaim"),W=Q?.method??"POST",K=null,H=new Headers;if(Q?.jsonBody!==void 0)K=Q.jsonBody,H.set("content-type","application/json");else if(Q?.forwardJsonBody)K=await $.req.text(),H.set("content-type","application/json");let F=Q?.signal,U={method:W,headers:H,body:K,...F?{signal:F}:{}},N=async()=>{let B=await Y.proxyDaemonRequest(X,Z,U);if(Q?.map404to410&&B.status===404){try{await B.body?.cancel()}catch{}if(await Y.adoptLiveClaim({userId:J,projectRef:G},X))B=await Y.proxyDaemonRequest(X,Z,U);if(B.status===404){try{await B.body?.cancel()}catch{}return new Response(JSON.stringify({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."}),{status:410,headers:{"content-type":"application/json",...R5}})}}let D=await B.text(),L=Q?.redactRepoDir?KV6(D):D,w=B.headers.get("content-type")??"application/json";return new Response(L,{status:B.status,headers:{"content-type":w,...R5}})};try{if(F){let B=N();return B.catch(()=>{}),await Promise.race([B,new Promise((L,w)=>{if(F.aborted)return w(F.reason);F.addEventListener("abort",()=>w(F.reason),{once:!0})})])}return await N()}catch(B){let D=B instanceof Error?B.message:String(B);return $.json({error:`Daemon unreachable: ${D}`},502)}}function KV6($){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 yI0($,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 HV6($){return ne$.includes($)}var ZV6,de$=524288,YV6=65536,XV6=1e4,me$=2000,JV6,xI0,R5,ne$,te$=()=>{let $=new e0;$.use("/:virtualMcpId/:branch/*",JV6),$.post("/:virtualMcpId/:branch/write",(Q)=>k7(Q,"/_sandbox/write",{forwardJsonBody:!0,signal:sb(Q)})),$.post("/:virtualMcpId/:branch/unlink",(Q)=>k7(Q,"/_sandbox/unlink",{forwardJsonBody:!0,signal:sb(Q)})),$.post("/:virtualMcpId/:branch/mkdir",(Q)=>k7(Q,"/_sandbox/mkdir",{forwardJsonBody:!0,signal:sb(Q)})),$.post("/:virtualMcpId/:branch/rename",(Q)=>k7(Q,"/_sandbox/rename",{forwardJsonBody:!0,signal:sb(Q)})),$.post("/:virtualMcpId/:branch/read",(Q)=>k7(Q,"/_sandbox/read",{forwardJsonBody:!0,signal:sb(Q)})),$.post("/:virtualMcpId/:branch/glob",(Q)=>k7(Q,"/_sandbox/glob",{forwardJsonBody:!0,signal:sb(Q)})),$.post("/:virtualMcpId/:branch/grep",(Q)=>k7(Q,"/_sandbox/grep",{forwardJsonBody:!0,signal:sb(Q)})),$.post("/:virtualMcpId/:branch/exec/:script",async(Q)=>{let Y=Q.req.param("script");if(!Y)return Q.json({error:"missing script name"},400);return k7(Q,`/_sandbox/exec/${encodeURIComponent(Y)}`)}),$.post("/:virtualMcpId/:branch/exec/:script/kill",async(Q)=>{let Y=Q.req.param("script");if(!Y)return Q.json({error:"missing script name"},400);return k7(Q,`/_sandbox/exec/${encodeURIComponent(Y)}/kill`)}),$.get("/:virtualMcpId/:branch/config",(Q)=>k7(Q,"/_sandbox/config",{method:"GET",map404to410:!0,redactRepoDir:!0})),$.put("/:virtualMcpId/:branch/config",(Q)=>k7(Q,"/_sandbox/config",{method:"PUT",forwardJsonBody:!0,map404to410:!0})),$.post("/:virtualMcpId/:branch/setup/:step",async(Q)=>{let Y=Q.req.param("step");if(!Y||!HV6(Y))return Q.json({error:`step must be one of: ${ne$.join(", ")}`},400);let X=Q.get("vmClaim"),J=await TW1(Q.var.studioContext,{claimName:X.claimName})==="gone"?null:await WV6(Q);if(!J)return Q.json({error:"sandbox not found: nothing is running at this ref"},404,R5);if(Y==="start"){let G=p(Q.var.studioContext),W=Cl(X.virtualMcpMetadata);try{await UP0({ctx:Q.var.studioContext,runner:J,handle:X.claimName,orgId:G.id,userId:X.callerUserId,entries:W})}catch(K){let H=K instanceof Error?K.message:String(K);return Q.json({error:`Failed to push env to daemon: ${H}`},502)}}return k7(Q,`/_sandbox/setup/${Y}`,{signal:Q.req.raw.signal,map404to410:!0,runner:J})}),$.get("/:virtualMcpId/:branch/events",(Q)=>{let Y=Q.get("vmClaim");if(!Y.runner)return IB(Q,async(X)=>{await X.writeSSE({event:"phase",data:JSON.stringify({kind:"failed",reason:"unknown",message:"No sandbox runner configured on this studio instance."})})});return na$(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 pe$(Q);return Z(Q)});let Z=(Q)=>k7(Q,"/_sandbox/git/status",{method:"GET",map404to410:!0,signal:AbortSignal.any([Q.req.raw.signal,AbortSignal.timeout(me$)])});return $.post("/:virtualMcpId/:branch/git/status",(Q)=>{if(Q.get("vmClaim").runtime==="cms")return pe$(Q);return k7(Q,"/_sandbox/git/status",{map404to410:!0,signal:AbortSignal.any([Q.req.raw.signal,AbortSignal.timeout(me$)])})}),$.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 fI0(J,Y.branch,X.base);return Q.json(G,200,R5)}catch(X){return iW1(Q,X)}return k7(Q,"/_sandbox/git/diff",{forwardJsonBody:!0,map404to410:!0})}),$.post("/:virtualMcpId/:branch/git/publish",async(Q)=>{if(Q.get("vmClaim").runtime==="cms")return Q.json({ok:!0},200,R5);let Y=ab(Q);if(Y instanceof Response)return Y;let{claimName:X,virtualMcpMetadata:J,connectionIds:G}=Q.get("vmClaim"),W=Q.var.studioContext;return L$0(X,async()=>{try{await RW1(W,Y,X);let K=O$0(J,G);if(K)await ce$(W,Y,X,K)}catch(K){if(K instanceof aw)return Q.json({error:K.message},403,R5);let H=K instanceof Error?K.message:String(K);return Q.json({error:H},502,R5)}return k7(Q,"/_sandbox/git/publish",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/discard",async(Q)=>{let Y=Q.get("vmClaim");if(Y.runtime==="cms")return L$0(Y.claimName,async()=>{let X=await Q.req.json().catch(()=>({})),J=Array.isArray(X.filepaths)?X.filepaths.filter((G)=>typeof G==="string"):[];if(J.length===0)return Q.json({error:"filepaths is required"},400,R5);try{let G=await rd(Q);return await ye$(G,Y.branch,J),Q.json({ok:!0},200,R5)}catch(G){let W=qG(G)===409||G instanceof P6?409:502,K=G instanceof Error?G.message:String(G);return Q.json({error:K},W,R5)}});return L$0(Y.claimName,()=>k7(Q,"/_sandbox/git/discard",{forwardJsonBody:!0,map404to410:!0}))}),$.post("/:virtualMcpId/:branch/git/rebase",async(Q)=>{let Y=Q.get("vmClaim");if(Y.runtime==="cms")return L$0(Y.claimName,async()=>{try{let W=await Q.req.json().catch(()=>({})),K=await rd(Q),H=W.base??await K.getDefaultBranch();return await bI0(K,Y.branch,H),Q.json({ok:!0},200,R5)}catch(W){return iW1(Q,W)}});let X=ab(Q);if(X instanceof Response)return X;let{claimName:J}=Q.get("vmClaim"),G=Q.var.studioContext;return L$0(J,async()=>{try{await RW1(G,X,J)}catch(W){let K=W instanceof Error?W.message:String(W);return Q.json({error:K},502,R5)}return k7(Q,"/_sandbox/git/rebase",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/suggest-commit",l5({maxSize:de$,onError:(Q)=>Q.json({error:"Payload too large"},413,R5)}),async(Q)=>{let Y=Q.get("vmClaim"),X=null;if(Y.runtime!=="cms"){let H=ab(Q);if(H instanceof Response)return H;X=H}let{claimName:J,userId:G,projectRef:W}=Y,K=Q.var.studioContext;try{let H=await Q.req.json().catch(()=>({})),F=H.status,U=H.diff,N=U!=null&&typeof U.diffs==="object"&&U.diffs!==null,[B,D]=IW1(F)&&N?[F,U]:X?await Promise.all([yI0(X,J,"/_sandbox/git/status","GET",{userId:G,projectRef:W}),yI0(X,J,"/_sandbox/git/diff","GET",{userId:G,projectRef:W})]):await(async()=>{let w=await rd(Q);return Promise.all([vI0(w,Y.branch),fI0(w,Y.branch)])})();await fW(K,p(K).id,"suggesting a commit message");let L=await aa$(K,B,D);return Q.json(L,200,R5)}catch(H){let F=H instanceof Error?H.message:String(H);if(F==="SANDBOX_GONE")return Q.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,R5);return Q.json({error:F},502,R5)}}),$.post("/:virtualMcpId/:branch/git/judge-review",l5({maxSize:de$,onError:(Q)=>Q.json({error:"Payload too large"},413,R5)}),async(Q)=>{let Y=Q.get("vmClaim"),X=null;if(Y.runtime!=="cms"){let H=ab(Q);if(H instanceof Response)return H;X=H}let{claimName:J,userId:G,projectRef:W}=Y,K=Q.var.studioContext;try{let H=await Q.req.json().catch(()=>({})),F=H.status,U=H.diff,N=U!=null&&typeof U.diffs==="object"&&U.diffs!==null,[B,D]=IW1(F)&&N?[F,U]:X?await Promise.all([yI0(X,J,"/_sandbox/git/status","GET",{userId:G,projectRef:W}),yI0(X,J,"/_sandbox/git/diff","GET",{userId:G,projectRef:W})]):await(async()=>{let w=await rd(Q);return Promise.all([vI0(w,Y.branch),fI0(w,Y.branch)])})();await fW(K,p(K).id,"judging whether a change needs review");let L=await $e$(K,B,D,typeof H.language==="string"?H.language:void 0);return Q.json(L,200,R5)}catch(H){let F=H instanceof Error?H.message:String(H);if(F==="SANDBOX_GONE")return Q.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,R5);return Q.json({error:F},502,R5)}}),$.get("/:virtualMcpId/:branch/preview-fetch",async(Q)=>{let Y=ab(Q);if(Y instanceof Response)return Y;let{claimName:X}=Q.get("vmClaim"),J=Q.req.query("path");if(!J||!J.startsWith("/")||J.startsWith("//")||J.includes("..")||J.includes("\\"))return Q.json({error:"Path not allowed"},403);let G;try{G=await Y.getPreviewUrl(X)}catch{return Q.json({error:"Preview not available"},502)}if(!G)return Q.json({error:"Preview not available"},502);let W=G.replace(/\/+$/,"");return ie$(Q,`${W}${J}`)}),$.post("/:virtualMcpId/:branch/preview-invoke",l5({maxSize:YV6,onError:(Q)=>Q.json({error:"Payload too large"},413)}),async(Q)=>{let Y=ab(Q);if(Y instanceof Response)return Y;let{claimName:X}=Q.get("vmClaim"),J;try{J=await Y.getPreviewUrl(X)}catch{return Q.json({error:"Preview not available"},502)}if(!J)return Q.json({error:"Preview not available"},502);let G;try{G=await Q.req.json()}catch{return Q.json({error:"Invalid JSON body"},400)}if(!G||typeof G!=="object"||Array.isArray(G))return Q.json({error:"Invalid JSON body"},400);let W=ge$(G);if(!W)return Q.json({error:"Invalid or missing __resolveType"},400);let K=he$(J,W.resolveType);return ie$(Q,K,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(W.payload),signal:AbortSignal.timeout(30000)})}),$};var oe$=O(()=>{y$();gK();md();AW1();ba();ma$();SG();_l();ia$();NK();RH();pa$();ta$();W81();ya();SW1();Ze$();OZ();c6();dW1();ue$();mW1();ZV6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;JV6=PI0(async($,Z)=>{let Q=$.var.studioContext;try{n(Q)}catch{return $.json({error:"Unauthorized"},401)}let Y=l0(Q);if(!Y)return $.json({error:"Unauthorized"},401);let X;try{X=p(Q)}catch{return $.json({error:"Organization scope required"},403)}let J=$.req.param("virtualMcpId"),G=$.req.param("branch");if(!J||!G)return $.json({error:"virtualMcpId and branch are required"},400);try{QV6(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=Wa({orgId:X.id,virtualMcpId:J,branch:G}),H=await h11(Q,G),F=u11(H,Y),U=da$({userId:F,projectRef:K}),N=W.metadata??null,B=await GV6($,{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 nY(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()});xI0=new Map;R5={"Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache"};ne$=["clone","install","start"]});function re$($,Z,Q){let Y=pW1.get($);if(!Y)Y={pending:null,running:!1},pW1.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)UV6($,Y);return J}async function UV6($,Z){Z.running=!0;try{while(Z.pending){let Q=Z.pending;Z.pending=null;try{let Y=await NV6(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)pW1.delete($)}}async function NV6($){let{client:Z,branch:Q,packagePath:Y}=$.deps,X=new Map;for(let J=0;;J++){let G=await od(Z,Q),W=await Z.listDecofileEntries(G,Y),K=uW1(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=lW1(K,N),L=`${JSON.stringify(B,null,2)}
3422
- `;await _e$(Z.repo,L);let w=D[0]??`${SI0(Y)}/${vW1(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 lW1(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 ve$(Z,F.values(),X),{decofile:B,skipped:D}=F$0(N);if(D.length>0)console.warn("decofile gen: dropped blocks that were not valid JSON",{repo:aW(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:BV6($),expectedHead:G,changes:H});return N}catch(N){if(!(N instanceof P6)||J>=FV6-1)throw N;await T$(_7(2000,200,J,2,0.5))}}}function BV6($){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 N11(Y,$.deps.coAuthor)}var FV6=3,pW1;var se$=O(()=>{Yz0();RI0();X6();m$();OZ();CI0();pW1=new Map});import{createHmac as ae$,randomBytes as DV6,timingSafeEqual as OV6}from"crypto";function ee$(){if(gI0)return gI0;let $;try{let Z=L0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return gI0=$?Buffer.from($):DV6(32),gI0}function nW1($){let Z=$.nowMs??Date.now(),Q={o:$.organizationId,m:$.virtualMcpId,b:$.branch,e:Math.floor((Z+LV6)/1000)},Y=Buffer.from(JSON.stringify(Q)).toString("base64url"),X=ae$("sha256",ee$()).update(Y).digest("base64url");return`${Y}.${X}`}function $08($,Z){let Q=$.indexOf(".");if(Q<0)return!1;let Y=$.slice(0,Q),X=Buffer.from($.slice(Q+1)),J=Buffer.from(ae$("sha256",ee$()).update(Y).digest("base64url"));if(X.length!==J.length||!OV6(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 LV6=21600000,gI0=null;var Z08=O(()=>{t1()});import{z as sd}from"zod";function jV6($){return $.length>0&&$.length<=255&&!$.includes("..")&&!$.endsWith("/")&&!$.endsWith(".lock")&&wV6.test($)}function G08($){return $.req.header("x-forwarded-host")??new URL($.req.url).host}async function w$0($){let Z=$.get("decofileScope");return ru($.var.studioContext,Z.organizationId,Z.githubRepo)}function j$0($,Z){let Q=Z instanceof Error?Z.message:String(Z);if(Z instanceof P6)return $.json({error:Q},409);let Y=qG(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 W08(){let $=new e0;return $.use("/:virtualMcpId/:branch",J08),$.use("/:virtualMcpId/:branch/*",J08),$.get("/:virtualMcpId/:branch",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await w$0(Z),X=await fe$(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=nW1({organizationId:Q.organizationId,virtualMcpId:Q.virtualMcpId,branch:Q.branch});return Z.body(`{"version":${JSON.stringify(X.sha)},"token":${JSON.stringify(G)},"apiHost":${JSON.stringify(G08(Z))},"decofile":${X.decofile}}`,200,{...J,"content-type":"application/json"})}catch(Y){return j$0(Z,Y)}}),$.get("/:virtualMcpId/:branch/meta",async(Z)=>{let Q=Z.get("decofileScope"),Y=Q.packagePath?`${Q.packagePath}/.deco/meta.gen.json`:".deco/meta.gen.json";try{let X=await w$0(Z),J=await X.readFileAtRef(Q.branch,Y);if(J===null){let G=await X.getDefaultBranch();if(G!==Q.branch)J=await X.readFileAtRef(G,Y)}if(J===null)return Z.json({error:"meta.gen.json not committed"},404);return Z.body(J,200,{"content-type":"application/json","Cache-Control":"no-store","Access-Control-Allow-Origin":"*"})}catch(X){return j$0(Z,X)}}),$.patch("/:virtualMcpId/:branch",zV6,async(Z)=>{let Q=Z.get("decofileScope"),Y=Z.var.studioContext,X=PV6.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{TI0(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(_W1(G))return Z.json({error:`Block key "${G}" collides with a framework resolver module and cannot be written`},400)}try{let G=await w$0(Z),W=await re$(`${Q.organizationId}/${Q.virtualMcpId}/${Q.branch}`,{client:G,branch:Q.branch,packagePath:Q.packagePath,coAuthor:id(Y)},J),K=nW1({organizationId:Q.organizationId,virtualMcpId:Q.virtualMcpId,branch:Q.branch});return Z.json({version:W,token:K,apiHost:G08(Z)})}catch(G){return j$0(Z,G)}}),$.post("/:virtualMcpId/:branch/publish",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await w$0(Z),X=await Y.getDefaultBranch();if(X===Q.branch)return Z.json({error:"Branch is already the default branch"},400);let J=`chore(decofile): publish ${Q.branch}`;try{let G;try{G=await Y.mergeBranches(X,Q.branch,J)}catch(W){if(qG(W)!==409)throw W;await bI0(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(qG(G)===409)return Z.json({error:"merge-conflict"},409);if(qG(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 j$0(Z,Y)}}),$.get("/:virtualMcpId/:branch/status",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await w$0(Z),X=await Y.getDefaultBranch();if(X===Q.branch)return Z.json({baseBranch:X,aheadBy:0,behindBy:0,lastCommitAt:null});try{let[{aheadBy:J,behindBy:G},W]=await Promise.all([Y.compare(X,Q.branch),Y.getBranch(Q.branch)]);return Z.json({baseBranch:X,aheadBy:J,behindBy:G,lastCommitAt:W?.committedAt??null})}catch(J){if(qG(J)===404)return Z.json({baseBranch:X,aheadBy:0,behindBy:0,lastCommitAt:null});throw J}}catch(Y){return j$0(Z,Y)}}),$}var wV6,Q08=500,Y08=1048576,X08=1024,EV6=8388608,zV6,PV6,J08;var K08=O(()=>{K81();RI0();y$();gK();AW1();AI0();mW1();OZ();se$();Z08();dW1();CI0();RH();wV6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;zV6=l5({maxSize:EV6,onError:($)=>$.json({error:"Payload too large"},413)}),PV6=sd.object({set:sd.record(sd.string(),sd.unknown()).optional(),delete:sd.array(sd.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)<=Q08,{message:`Patch cannot touch more than ${Q08} blocks`}).refine(($)=>Object.values($.set??{}).every((Z)=>JSON.stringify(Z).length<=Y08),{message:`Each block must be at most ${Y08} bytes`}).refine(($)=>[...Object.keys($.set??{}),...$.delete??[]].every((Z)=>Z.length<=X08),{message:`Each block key must be at most ${X08} characters`}),J08=PI0(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(!jV6(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||!$08(B,{organizationId:Y.id,virtualMcpId:X,branch:J}))return $.json({error:"Unauthorized"},401)}if(!await YG(Q,Y.id,"cms"))return $.json({error:"This organization's plan does not include the CMS",code:"feature_not_in_plan"},403);let W=await Q.storage.virtualMcps.findById(X);if(!W||W.organization_id!==Y.id)return $.json({error:"Virtual MCP not found"},404);let K=W.metadata??null;if(!DP0(K))return $.json({error:"Project has no preview server configured"},404);let F=W.connections?.map((B)=>B.connection_id)??[],U=O$0(K,F);if(!U)return $.json({error:"Project has no GitHub repository"},404);let N=K?.runtime;return $.set("decofileScope",{organizationId:Y.id,virtualMcpId:X,branch:J,packagePath:N?.path?.replace(/^\/+|\/+$/g,"")||null,githubRepo:U,userId:G}),Z()})});var H08=($)=>{let Z=new e0;if(Z.use("*",Ad),Z.use("*",ht$),Z.route("/",SM0()),Z.route("/",Po$()),Z.route("/",Wo$()),Z.route("/",Sa$()),Z.route("/",Aa$()),Z.route("/",Va$()),Z.route("/",Ra$()),Z.route("/",jI0()),Z.route("/tools",ya$()),Z.route("/",fa$()),Z.route("/",$a$({kvStorage:$.kvStorage})),Z.route("/",as$()),Z.route("/fs",Ba$({getConnection:$.getNatsConnection})),Z.route("/sandbox",te$()),Z.route("/decofile",W08()),Z.route("/",Ea$()),Z.route("/",Oa$()),Z.route("/deco-sites",_M0()),Z.route("/hosting",rt$()),Z.route("/monitor",Yo$()),Z.route("/sso",qM0()),Z.route("/",EI0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",it$()),$.mountDevAssets)Z.route("/dev-assets",xM0({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("/",oi$()),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",wa$()),Z.route("/mcp",E20()),Z.route("/mcp/self",DI0()),Z.route("/mcp",A20()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var F08=O(()=>{y$();ut$();DM0();pt$();d31();st$();Xo$();yM0();hb();g31();t31();es$();Za$();Da$();La$();te();_31();T20();BW1();ja$();za$();Ta$();qa$();LW1();Ca$();ba$();wW1();ga$();jW1();z20();oe$();K08()});function AV6($){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 TV6=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},U08=()=>{let $=new e0;return $.use("*",TV6),$.get("/",async(Z)=>{let Q=L0(),Y=Q.decoSupabaseUrl,X=Q.decoSupabaseServiceKey;if(!Y||!X)return Z.json({apps:[]});try{let J=await KJ(Y,X,"apps?select=name,title,description,logo,category,vendors(alias,url)");return Z.json({apps:AV6(J)})}catch(J){return console.error("[deco-apps] GET error:",J),Z.json({error:"Failed to fetch apps"},502)}}),$};var N08=O(()=>{y$();t1();Oq0()});import{z as V1}from"zod";function eF($,Z="invalid_request_error",Q=null,Y=null){return{error:{message:$,type:Z,param:Q,code:Y}}}function vV6($){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 fV6($,Z,Q){try{return JSON.parse($)}catch{throw new O08(`Invalid JSON in tool call arguments for function '${Q}' (tool_call_id: ${Z}): ${$}`)}}function bV6($){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:fV6(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 xV6($){let Z=$.map((Q)=>{let Y=Q.function.parameters?_J(Q.function.parameters):_J({type:"object",properties:{}});return[Q.function.name,D$({description:Q.function.description,inputSchema:Y})]});return Object.fromEntries(Z)}function yV6($){if(!$)return;return{openai:{response_format:$}}}function gV6(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function B08($,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 D08($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var RV6=256,qV6,MV6,IV6,VV6,kV6,SV6,CV6,_V6,O08,L08,w08;var j08=O(()=>{T4();y$();md();qK();qV6=V1.object({type:V1.literal("function"),function:V1.object({name:V1.string(),description:V1.string().optional(),parameters:V1.record(V1.string(),V1.unknown()).optional()})}),MV6=V1.object({id:V1.string(),type:V1.literal("function"),function:V1.object({name:V1.string(),arguments:V1.string()})}),IV6=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(MV6).optional()}),V1.object({role:V1.literal("tool"),content:V1.string(),tool_call_id:V1.string()})]),VV6=V1.object({type:V1.literal("text")}),kV6=V1.object({type:V1.literal("json_object")}),SV6=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()})}),CV6=V1.union([VV6,kV6,SV6]),_V6=V1.object({model:V1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:V1.array(IV6),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(qV6).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:CV6.optional(),user:V1.string().optional()});O08=class O08 extends Error{constructor($){super($);this.name="MessageConversionError"}};L08=new e0;L08.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),Q=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(eF("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(eF("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(eF("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Y=await $.req.json(),X=_V6.safeParse(Y);if(!X.success){let w=X.error.issues[0]??{message:"Invalid request",path:[]};return $.json(eF(`Invalid request: ${w.message}`,"invalid_request_error",w.path.length>0?w.path.join("."):null),400)}let J=X.data,G=vV6(J.model);if(!G)return $.json(eF("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)=>KE(E.providerId));if(!j)return $.json(eF("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(eF(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(K),U=bV6(J.messages),N=J.tools?xV6(J.tools):void 0,B=yV6(J.response_format),D=gV6(),L=Math.floor(Date.now()/1000);if(J.stream)return IB($,async(w)=>{let j=B08(F,U,N,J,B,$.req.raw.signal);try{let E=Qw(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>=RV6)await q()}else if(k.type==="tool-call"){await q();let I=P++;await w.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{tool_calls:[{index:I,id:k.toolCallId,type:"function",function:{name:k.toolName,arguments:JSON.stringify(k.input)}}]},finish_reason:null}]})})}else if(k.type==="finish")await q(),await w.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{},finish_reason:D08(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=B08(F,U,N,J,B,$.req.raw.signal),j=await $w(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:D08(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(eF("Request aborted","invalid_request_error"),400);if(X.name==="MessageConversionError")return $.json(eF(X.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",X.message,X.stack),$.json(eF(X.message,"server_error"),500)}});w08=L08});function hV6($){if(typeof $!=="object"||$===null)return!1;let Q=$.githubRepo?.url;return typeof Q==="string"&&Q.length>0}function E08(){let $=new e0;return $.use("*",async(Z,Q)=>{await Q(),Z.header("Cache-Control","private, no-store"),Z.header("Vary","Cookie")}),$.get("/",async(Z)=>{let Q=Z.get("studioContext"),Y=l0(Q);if(!Y)return Z.json({error:"Authentication required"},401);let J=(Z.req.query("site")??"").trim().toLowerCase();if(!pZ(J))return Z.json({error:"Invalid site slug"},400);let G=await Q.db.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["organization.id as id","organization.slug as slug","organization.name as name","organization.metadata as metadata"]).where("member.userId","=",Y).execute(),W=[];for(let H of G){if(!H.slug||r5(H))continue;let F=await Q.storage.virtualMcps.list(H.id);for(let U of F){if(cJ0(U)!==J)continue;if(!hV6(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 z08=O(()=>{y$();AG()});var A08;var P08=O(()=>{A08={name:"decocms",version:"4.379.1",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});function cV6(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??lV6}}var T08,lV6="https://ph.studio.decocms.com",R08;var q08=O(()=>{y$();Ur();hf();k5();t1();j31();P08();T08=new e0;T08.get("/",($)=>{let Z={version:A08.version,theme:d5$(),...rW().logo&&{logo:rW().logo},...eN()&&{internalUrl:Rh1()},...L0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!L0().firecrawlApiKey,hostingEnabled:!!L0().controlplaneRestUrl&&!!L0().controlplaneServiceToken,hostingControlPlaneGa:L0().hostingControlPlaneGa,monitorEnabled:!!L0().clickhouseAnalyticsUrl&&!!L0().clickhouseAnalyticsPassword,monitorGa:L0().monitorGa,plansEnabled:L0().plansEnabled,auth:un$(),posthog:cV6(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:vB()}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});R08=T08});function ad($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function tW1($){return(ad($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((Q)=>Q.charAt(0).toUpperCase()+Q.slice(1)).join(" ")}function I08($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(ad($))}&sz=${Z}`}function M08($,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 V08($){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()?M08(`${X.trim().replace(/\s+/g," ")} \u2014 ${G}`,200):M08(`How does ${Q} really perform? ${G}`,200);return{title:J,description:W}}import{z as m0}from"zod";var eb,dV6,mV6,iV6,pV6,k08;var S08=O(()=>{eb=m0.enum(["good","bad","neutral"]),dV6=m0.preprocess(($)=>{if(Array.isArray($))return{kind:"text",value:$.find((Q)=>Q!==null&&typeof Q!=="object")??""};return $!==null&&typeof $==="object"?$:{kind:"text",value:$}},m0.object({kind:m0.enum(["text","number","sparkline","badge","score"]).catch("text"),value:m0.coerce.string().optional(),tone:eb.optional(),muted:m0.boolean().optional(),delta:m0.coerce.string().optional(),deltaDir:m0.enum(["up","down","neutral"]).optional(),points:m0.array(m0.coerce.number()).optional(),label:m0.coerce.string().optional()}).transform(($)=>{if($.kind==="badge"&&$.label==null)$.label=$.value??"";if($.kind==="score"){let Z=Number($.value);if(Number.isNaN(Z))return{...$,kind:"text"}}return $})),mV6=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(dV6)),iV6={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()},pV6=m0.discriminatedUnion("template",[m0.object({template:m0.literal("cover"),score:m0.object({value:m0.coerce.number(),max:m0.coerce.number().optional(),grade:m0.coerce.string().optional(),label:m0.coerce.string().optional()}).optional(),brandImage:m0.coerce.string().optional(),screenshot:m0.coerce.string().optional(),mobileScreenshot:m0.coerce.string().optional()}),m0.object({template:m0.literal("cta"),ctaUrl:m0.coerce.string().optional(),ctaLabel:m0.coerce.string().optional(),bullets:m0.array(m0.coerce.string()).optional()}),m0.object({template:m0.literal("series"),points:m0.array(m0.coerce.number()).min(2),xLabels:m0.array(m0.coerce.string()).min(1),unit:m0.coerce.string().optional(),callout:m0.object({index:m0.coerce.number(),value:m0.coerce.string(),tone:eb.optional()})}),m0.object({template:m0.literal("threshold"),value:m0.coerce.string().default(""),metricLabel:m0.coerce.string().optional(),ratio:m0.coerce.number(),thresholdRatio:m0.coerce.number().optional(),thresholdLabel:m0.coerce.string().default(""),tone:eb.optional()}),m0.object({template:m0.literal("stats"),stats:m0.array(m0.object({value:m0.coerce.string(),label:m0.coerce.string(),tone:eb.optional()})).min(1)}),m0.object({template:m0.literal("bars"),items:m0.array(m0.object({value:m0.coerce.string(),label:m0.coerce.string(),ratio:m0.coerce.number(),tone:eb.optional()})).min(1)}),m0.object({template:m0.literal("gauges"),gauges:m0.array(m0.object({label:m0.coerce.string(),value:m0.coerce.string(),status:m0.enum(["good","warn","bad"]).catch("warn"),caption:m0.coerce.string().optional(),ratio:m0.coerce.number().optional()})).min(1)}),m0.object({template:m0.literal("checklist"),checks:m0.array(m0.object({label:m0.coerce.string(),status:m0.enum(["pass","fail","warn"]).catch("fail"),value:m0.coerce.string().optional()})).min(1)}),m0.object({template:m0.literal("table"),columns:m0.array(m0.object({label:m0.coerce.string(),align:m0.enum(["left","right"]).optional()})).min(1),rows:m0.array(mV6).min(1),highlightRow:m0.coerce.number().optional()}),m0.object({template:m0.literal("products"),products:m0.array(m0.object({name:m0.coerce.string(),price:m0.coerce.string().optional(),image:m0.coerce.string().optional(),url:m0.coerce.string().optional()})).min(1)}),m0.object({template:m0.literal("list"),entries:m0.array(m0.object({label:m0.coerce.string(),severity:m0.enum(["error","warning","notice"]).catch("notice")})).min(1),moreCount:m0.coerce.number().optional()}),m0.object({template:m0.literal("keywords"),volumeLabel:m0.coerce.string().optional(),keywords:m0.array(m0.object({term:m0.coerce.string(),volume:m0.coerce.string(),position:m0.coerce.number().catch(0)})).min(1)}),m0.object({template:m0.literal("competitor"),metricLabel:m0.coerce.string().optional(),competitors:m0.array(m0.object({name:m0.coerce.string(),value:m0.coerce.string(),tone:eb.optional(),isYou:m0.boolean().optional()})).min(1)}),m0.object({template:m0.literal("scorecard"),rivalLabel:m0.coerce.string().optional(),dimensions:m0.array(m0.object({label:m0.coerce.string(),you:m0.coerce.string(),rival:m0.coerce.string().optional(),rivalName:m0.coerce.string().optional(),tone:eb.optional()})).min(1)})]),k08=m0.object({...iV6,template:pV6})});function hI0($){let Z=[],Q=[...$.sections].sort((X,J)=>X.position-J.position).map((X)=>{let J=k08.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 oW1=O(()=>{S08()});import{join as C08}from"path";async function tV6($){try{let Z=await fetch(`${lH({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(nV6)});if(!Z.ok)return null;let Q=await Z.json(),{deck:Y}=hI0(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()||tW1($),score:Y.meta.scores?.cover??G?.score?.value,verdict:X?.annotation?.trim()||X?.headline?.trim()||void 0}}catch{return null}}function q3($){return $.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;")}function oV6($,Z){let Q=ad($),Y=Z?.brand?.trim()||tW1(Q),X=I08(Q,128),G=`${(L0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(Q)}`,{title:W,description:K}=V08({brand:Y,domain:Q,score:Z?.score,verdict:Z?.verdict}),H=`${G}/og.png`,F=`${Y} commerce report by decocms`;return[`<title>${q3(W)}</title>`,`<meta name="description" content="${q3(K)}" />`,'<meta name="robots" content="noindex, follow" />','<meta property="og:type" content="website" />','<meta property="og:site_name" content="decocms" />',`<meta property="og:title" content="${q3(W)}" />`,`<meta property="og:description" content="${q3(K)}" />`,`<meta property="og:url" content="${q3(G)}" />`,`<meta property="og:image" content="${q3(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${q3(F)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${q3(W)}" />`,`<meta name="twitter:description" content="${q3(K)}" />`,`<meta name="twitter:image" content="${q3(H)}" />`,`<meta name="twitter:image:alt" content="${q3(F)}" />`,`<link rel="canonical" href="${q3(G)}" />`,`<link rel="icon" href="${q3(X)}" sizes="any" />`].join(`
3422
+ `;await _e$(Z.repo,L);let w=D[0]??`${SI0(Y)}/${vW1(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 lW1(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 ve$(Z,F.values(),X),{decofile:B,skipped:D}=F$0(N);if(D.length>0)console.warn("decofile gen: dropped blocks that were not valid JSON",{repo:aW(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:BV6($),expectedHead:G,changes:H});return N}catch(N){if(!(N instanceof P6)||J>=FV6-1)throw N;await T$(_7(2000,200,J,2,0.5))}}}function BV6($){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 N11(Y,$.deps.coAuthor)}var FV6=3,pW1;var se$=O(()=>{Yz0();RI0();X6();m$();OZ();CI0();pW1=new Map});import{createHmac as ae$,randomBytes as DV6,timingSafeEqual as OV6}from"crypto";function ee$(){if(gI0)return gI0;let $;try{let Z=L0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return gI0=$?Buffer.from($):DV6(32),gI0}function nW1($){let Z=$.nowMs??Date.now(),Q={o:$.organizationId,m:$.virtualMcpId,b:$.branch,e:Math.floor((Z+LV6)/1000)},Y=Buffer.from(JSON.stringify(Q)).toString("base64url"),X=ae$("sha256",ee$()).update(Y).digest("base64url");return`${Y}.${X}`}function $08($,Z){let Q=$.indexOf(".");if(Q<0)return!1;let Y=$.slice(0,Q),X=Buffer.from($.slice(Q+1)),J=Buffer.from(ae$("sha256",ee$()).update(Y).digest("base64url"));if(X.length!==J.length||!OV6(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 LV6=21600000,gI0=null;var Z08=O(()=>{t1()});import{z as sd}from"zod";function jV6($){return $.length>0&&$.length<=255&&!$.includes("..")&&!$.endsWith("/")&&!$.endsWith(".lock")&&wV6.test($)}function G08($){return $.req.header("x-forwarded-host")??new URL($.req.url).host}async function w$0($){let Z=$.get("decofileScope");return ru($.var.studioContext,Z.organizationId,Z.githubRepo)}function j$0($,Z){let Q=Z instanceof Error?Z.message:String(Z);if(Z instanceof P6)return $.json({error:Q},409);let Y=qG(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 W08(){let $=new e0;return $.use("/:virtualMcpId/:branch",J08),$.use("/:virtualMcpId/:branch/*",J08),$.get("/:virtualMcpId/:branch",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await w$0(Z),X=await fe$(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=nW1({organizationId:Q.organizationId,virtualMcpId:Q.virtualMcpId,branch:Q.branch});return Z.body(`{"version":${JSON.stringify(X.sha)},"token":${JSON.stringify(G)},"apiHost":${JSON.stringify(G08(Z))},"decofile":${X.decofile}}`,200,{...J,"content-type":"application/json"})}catch(Y){return j$0(Z,Y)}}),$.get("/:virtualMcpId/:branch/meta",async(Z)=>{let Q=Z.get("decofileScope"),Y=Q.packagePath?`${Q.packagePath}/.deco/meta.gen.json`:".deco/meta.gen.json";try{let X=await w$0(Z),J=await X.readFileAtRef(Q.branch,Y);if(J===null){let G=await X.getDefaultBranch();if(G!==Q.branch)J=await X.readFileAtRef(G,Y)}if(J===null)return Z.json({error:"meta.gen.json not committed"},404);return Z.body(J,200,{"content-type":"application/json","Cache-Control":"no-store","Access-Control-Allow-Origin":"*"})}catch(X){return j$0(Z,X)}}),$.patch("/:virtualMcpId/:branch",zV6,async(Z)=>{let Q=Z.get("decofileScope"),Y=Z.var.studioContext,X=PV6.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{TI0(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(_W1(G))return Z.json({error:`Block key "${G}" collides with a framework resolver module and cannot be written`},400)}try{let G=await w$0(Z),W=await re$(`${Q.organizationId}/${Q.virtualMcpId}/${Q.branch}`,{client:G,branch:Q.branch,packagePath:Q.packagePath,coAuthor:id(Y)},J),K=nW1({organizationId:Q.organizationId,virtualMcpId:Q.virtualMcpId,branch:Q.branch});return Z.json({version:W,token:K,apiHost:G08(Z)})}catch(G){return j$0(Z,G)}}),$.post("/:virtualMcpId/:branch/publish",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await w$0(Z),X=await Y.getDefaultBranch();if(X===Q.branch)return Z.json({error:"Branch is already the default branch"},400);let J=`chore(decofile): publish ${Q.branch}`;try{let G;try{G=await Y.mergeBranches(X,Q.branch,J)}catch(W){if(qG(W)!==409)throw W;await bI0(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(qG(G)===409)return Z.json({error:"merge-conflict"},409);if(qG(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 j$0(Z,Y)}}),$.get("/:virtualMcpId/:branch/status",async(Z)=>{let Q=Z.get("decofileScope");try{let Y=await w$0(Z),X=await Y.getDefaultBranch();if(X===Q.branch)return Z.json({baseBranch:X,aheadBy:0,behindBy:0,lastCommitAt:null});try{let[{aheadBy:J,behindBy:G},W]=await Promise.all([Y.compare(X,Q.branch),Y.getBranch(Q.branch)]);return Z.json({baseBranch:X,aheadBy:J,behindBy:G,lastCommitAt:W?.committedAt??null})}catch(J){if(qG(J)===404)return Z.json({baseBranch:X,aheadBy:0,behindBy:0,lastCommitAt:null});throw J}}catch(Y){return j$0(Z,Y)}}),$}var wV6,Q08=500,Y08=1048576,X08=1024,EV6=8388608,zV6,PV6,J08;var K08=O(()=>{K81();RI0();y$();gK();AW1();AI0();mW1();OZ();se$();Z08();dW1();CI0();RH();wV6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;zV6=l5({maxSize:EV6,onError:($)=>$.json({error:"Payload too large"},413)}),PV6=sd.object({set:sd.record(sd.string(),sd.unknown()).optional(),delete:sd.array(sd.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)<=Q08,{message:`Patch cannot touch more than ${Q08} blocks`}).refine(($)=>Object.values($.set??{}).every((Z)=>JSON.stringify(Z).length<=Y08),{message:`Each block must be at most ${Y08} bytes`}).refine(($)=>[...Object.keys($.set??{}),...$.delete??[]].every((Z)=>Z.length<=X08),{message:`Each block key must be at most ${X08} characters`}),J08=PI0(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(!jV6(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||!$08(B,{organizationId:Y.id,virtualMcpId:X,branch:J}))return $.json({error:"Unauthorized"},401)}if(!await YG(Q,Y.id,"cms"))return $.json({error:"This organization's plan does not include the CMS",code:"feature_not_in_plan"},403);let W=await Q.storage.virtualMcps.findById(X);if(!W||W.organization_id!==Y.id)return $.json({error:"Virtual MCP not found"},404);let K=W.metadata??null;if(!DP0(K))return $.json({error:"Project has no preview server configured"},404);let F=W.connections?.map((B)=>B.connection_id)??[],U=O$0(K,F);if(!U)return $.json({error:"Project has no GitHub repository"},404);let N=K?.runtime;return $.set("decofileScope",{organizationId:Y.id,virtualMcpId:X,branch:J,packagePath:N?.path?.replace(/^\/+|\/+$/g,"")||null,githubRepo:U,userId:G}),Z()})});var H08=($)=>{let Z=new e0;if(Z.use("*",Ad),Z.use("*",ht$),Z.route("/",SM0()),Z.route("/",Po$()),Z.route("/",Wo$()),Z.route("/",Sa$()),Z.route("/",Aa$()),Z.route("/",Va$()),Z.route("/",Ra$()),Z.route("/",jI0()),Z.route("/tools",ya$()),Z.route("/",fa$()),Z.route("/",$a$({kvStorage:$.kvStorage})),Z.route("/",as$()),Z.route("/fs",Ba$({getConnection:$.getNatsConnection})),Z.route("/sandbox",te$()),Z.route("/decofile",W08()),Z.route("/",Ea$()),Z.route("/",Oa$()),Z.route("/deco-sites",_M0()),Z.route("/hosting",rt$()),Z.route("/monitor",Yo$()),Z.route("/sso",qM0()),Z.route("/",EI0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",it$()),$.mountDevAssets)Z.route("/dev-assets",xM0({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("/",oi$()),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",wa$()),Z.route("/mcp",E20()),Z.route("/mcp/self",DI0()),Z.route("/mcp",A20()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var F08=O(()=>{y$();ut$();DM0();pt$();d31();st$();Xo$();yM0();hb();g31();t31();es$();Za$();Da$();La$();te();_31();T20();BW1();ja$();za$();Ta$();qa$();LW1();Ca$();ba$();wW1();ga$();jW1();z20();oe$();K08()});function AV6($){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 TV6=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},U08=()=>{let $=new e0;return $.use("*",TV6),$.get("/",async(Z)=>{let Q=L0(),Y=Q.decoSupabaseUrl,X=Q.decoSupabaseServiceKey;if(!Y||!X)return Z.json({apps:[]});try{let J=await KJ(Y,X,"apps?select=name,title,description,logo,category,vendors(alias,url)");return Z.json({apps:AV6(J)})}catch(J){return console.error("[deco-apps] GET error:",J),Z.json({error:"Failed to fetch apps"},502)}}),$};var N08=O(()=>{y$();t1();Oq0()});import{z as V1}from"zod";function eF($,Z="invalid_request_error",Q=null,Y=null){return{error:{message:$,type:Z,param:Q,code:Y}}}function vV6($){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 fV6($,Z,Q){try{return JSON.parse($)}catch{throw new O08(`Invalid JSON in tool call arguments for function '${Q}' (tool_call_id: ${Z}): ${$}`)}}function bV6($){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:fV6(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 xV6($){let Z=$.map((Q)=>{let Y=Q.function.parameters?_J(Q.function.parameters):_J({type:"object",properties:{}});return[Q.function.name,D$({description:Q.function.description,inputSchema:Y})]});return Object.fromEntries(Z)}function yV6($){if(!$)return;return{openai:{response_format:$}}}function gV6(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function B08($,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 D08($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var RV6=256,qV6,MV6,IV6,VV6,kV6,SV6,CV6,_V6,O08,L08,w08;var j08=O(()=>{T4();y$();md();qK();qV6=V1.object({type:V1.literal("function"),function:V1.object({name:V1.string(),description:V1.string().optional(),parameters:V1.record(V1.string(),V1.unknown()).optional()})}),MV6=V1.object({id:V1.string(),type:V1.literal("function"),function:V1.object({name:V1.string(),arguments:V1.string()})}),IV6=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(MV6).optional()}),V1.object({role:V1.literal("tool"),content:V1.string(),tool_call_id:V1.string()})]),VV6=V1.object({type:V1.literal("text")}),kV6=V1.object({type:V1.literal("json_object")}),SV6=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()})}),CV6=V1.union([VV6,kV6,SV6]),_V6=V1.object({model:V1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:V1.array(IV6),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(qV6).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:CV6.optional(),user:V1.string().optional()});O08=class O08 extends Error{constructor($){super($);this.name="MessageConversionError"}};L08=new e0;L08.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),Q=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(eF("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(eF("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(eF("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Y=await $.req.json(),X=_V6.safeParse(Y);if(!X.success){let w=X.error.issues[0]??{message:"Invalid request",path:[]};return $.json(eF(`Invalid request: ${w.message}`,"invalid_request_error",w.path.length>0?w.path.join("."):null),400)}let J=X.data,G=vV6(J.model);if(!G)return $.json(eF("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)=>KE(E.providerId));if(!j)return $.json(eF("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(eF(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(K),U=bV6(J.messages),N=J.tools?xV6(J.tools):void 0,B=yV6(J.response_format),D=gV6(),L=Math.floor(Date.now()/1000);if(J.stream)return IB($,async(w)=>{let j=B08(F,U,N,J,B,$.req.raw.signal);try{let E=Qw(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>=RV6)await q()}else if(k.type==="tool-call"){await q();let I=P++;await w.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{tool_calls:[{index:I,id:k.toolCallId,type:"function",function:{name:k.toolName,arguments:JSON.stringify(k.input)}}]},finish_reason:null}]})})}else if(k.type==="finish")await q(),await w.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:L,model:J.model,choices:[{index:0,delta:{},finish_reason:D08(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=B08(F,U,N,J,B,$.req.raw.signal),j=await $w(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:D08(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(eF("Request aborted","invalid_request_error"),400);if(X.name==="MessageConversionError")return $.json(eF(X.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",X.message,X.stack),$.json(eF(X.message,"server_error"),500)}});w08=L08});function hV6($){if(typeof $!=="object"||$===null)return!1;let Q=$.githubRepo?.url;return typeof Q==="string"&&Q.length>0}function E08(){let $=new e0;return $.use("*",async(Z,Q)=>{await Q(),Z.header("Cache-Control","private, no-store"),Z.header("Vary","Cookie")}),$.get("/",async(Z)=>{let Q=Z.get("studioContext"),Y=l0(Q);if(!Y)return Z.json({error:"Authentication required"},401);let J=(Z.req.query("site")??"").trim().toLowerCase();if(!pZ(J))return Z.json({error:"Invalid site slug"},400);let G=await Q.db.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["organization.id as id","organization.slug as slug","organization.name as name","organization.metadata as metadata"]).where("member.userId","=",Y).execute(),W=[];for(let H of G){if(!H.slug||r5(H))continue;let F=await Q.storage.virtualMcps.list(H.id);for(let U of F){if(cJ0(U)!==J)continue;if(!hV6(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 z08=O(()=>{y$();AG()});var A08;var P08=O(()=>{A08={name:"decocms",version:"4.380.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 cV6(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??lV6}}var T08,lV6="https://ph.studio.decocms.com",R08;var q08=O(()=>{y$();Ur();hf();k5();t1();j31();P08();T08=new e0;T08.get("/",($)=>{let Z={version:A08.version,theme:d5$(),...rW().logo&&{logo:rW().logo},...eN()&&{internalUrl:Rh1()},...L0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!L0().firecrawlApiKey,hostingEnabled:!!L0().controlplaneRestUrl&&!!L0().controlplaneServiceToken,hostingControlPlaneGa:L0().hostingControlPlaneGa,monitorEnabled:!!L0().clickhouseAnalyticsUrl&&!!L0().clickhouseAnalyticsPassword,monitorGa:L0().monitorGa,plansEnabled:L0().plansEnabled,auth:un$(),posthog:cV6(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:vB()}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});R08=T08});function ad($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function tW1($){return(ad($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((Q)=>Q.charAt(0).toUpperCase()+Q.slice(1)).join(" ")}function I08($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(ad($))}&sz=${Z}`}function M08($,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 V08($){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()?M08(`${X.trim().replace(/\s+/g," ")} \u2014 ${G}`,200):M08(`How does ${Q} really perform? ${G}`,200);return{title:J,description:W}}import{z as m0}from"zod";var eb,dV6,mV6,iV6,pV6,k08;var S08=O(()=>{eb=m0.enum(["good","bad","neutral"]),dV6=m0.preprocess(($)=>{if(Array.isArray($))return{kind:"text",value:$.find((Q)=>Q!==null&&typeof Q!=="object")??""};return $!==null&&typeof $==="object"?$:{kind:"text",value:$}},m0.object({kind:m0.enum(["text","number","sparkline","badge","score"]).catch("text"),value:m0.coerce.string().optional(),tone:eb.optional(),muted:m0.boolean().optional(),delta:m0.coerce.string().optional(),deltaDir:m0.enum(["up","down","neutral"]).optional(),points:m0.array(m0.coerce.number()).optional(),label:m0.coerce.string().optional()}).transform(($)=>{if($.kind==="badge"&&$.label==null)$.label=$.value??"";if($.kind==="score"){let Z=Number($.value);if(Number.isNaN(Z))return{...$,kind:"text"}}return $})),mV6=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(dV6)),iV6={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()},pV6=m0.discriminatedUnion("template",[m0.object({template:m0.literal("cover"),score:m0.object({value:m0.coerce.number(),max:m0.coerce.number().optional(),grade:m0.coerce.string().optional(),label:m0.coerce.string().optional()}).optional(),brandImage:m0.coerce.string().optional(),screenshot:m0.coerce.string().optional(),mobileScreenshot:m0.coerce.string().optional()}),m0.object({template:m0.literal("cta"),ctaUrl:m0.coerce.string().optional(),ctaLabel:m0.coerce.string().optional(),bullets:m0.array(m0.coerce.string()).optional()}),m0.object({template:m0.literal("series"),points:m0.array(m0.coerce.number()).min(2),xLabels:m0.array(m0.coerce.string()).min(1),unit:m0.coerce.string().optional(),callout:m0.object({index:m0.coerce.number(),value:m0.coerce.string(),tone:eb.optional()})}),m0.object({template:m0.literal("threshold"),value:m0.coerce.string().default(""),metricLabel:m0.coerce.string().optional(),ratio:m0.coerce.number(),thresholdRatio:m0.coerce.number().optional(),thresholdLabel:m0.coerce.string().default(""),tone:eb.optional()}),m0.object({template:m0.literal("stats"),stats:m0.array(m0.object({value:m0.coerce.string(),label:m0.coerce.string(),tone:eb.optional()})).min(1)}),m0.object({template:m0.literal("bars"),items:m0.array(m0.object({value:m0.coerce.string(),label:m0.coerce.string(),ratio:m0.coerce.number(),tone:eb.optional()})).min(1)}),m0.object({template:m0.literal("gauges"),gauges:m0.array(m0.object({label:m0.coerce.string(),value:m0.coerce.string(),status:m0.enum(["good","warn","bad"]).catch("warn"),caption:m0.coerce.string().optional(),ratio:m0.coerce.number().optional()})).min(1)}),m0.object({template:m0.literal("checklist"),checks:m0.array(m0.object({label:m0.coerce.string(),status:m0.enum(["pass","fail","warn"]).catch("fail"),value:m0.coerce.string().optional()})).min(1)}),m0.object({template:m0.literal("table"),columns:m0.array(m0.object({label:m0.coerce.string(),align:m0.enum(["left","right"]).optional()})).min(1),rows:m0.array(mV6).min(1),highlightRow:m0.coerce.number().optional()}),m0.object({template:m0.literal("products"),products:m0.array(m0.object({name:m0.coerce.string(),price:m0.coerce.string().optional(),image:m0.coerce.string().optional(),url:m0.coerce.string().optional()})).min(1)}),m0.object({template:m0.literal("list"),entries:m0.array(m0.object({label:m0.coerce.string(),severity:m0.enum(["error","warning","notice"]).catch("notice")})).min(1),moreCount:m0.coerce.number().optional()}),m0.object({template:m0.literal("keywords"),volumeLabel:m0.coerce.string().optional(),keywords:m0.array(m0.object({term:m0.coerce.string(),volume:m0.coerce.string(),position:m0.coerce.number().catch(0)})).min(1)}),m0.object({template:m0.literal("competitor"),metricLabel:m0.coerce.string().optional(),competitors:m0.array(m0.object({name:m0.coerce.string(),value:m0.coerce.string(),tone:eb.optional(),isYou:m0.boolean().optional()})).min(1)}),m0.object({template:m0.literal("scorecard"),rivalLabel:m0.coerce.string().optional(),dimensions:m0.array(m0.object({label:m0.coerce.string(),you:m0.coerce.string(),rival:m0.coerce.string().optional(),rivalName:m0.coerce.string().optional(),tone:eb.optional()})).min(1)})]),k08=m0.object({...iV6,template:pV6})});function hI0($){let Z=[],Q=[...$.sections].sort((X,J)=>X.position-J.position).map((X)=>{let J=k08.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 oW1=O(()=>{S08()});import{join as C08}from"path";async function tV6($){try{let Z=await fetch(`${lH({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(nV6)});if(!Z.ok)return null;let Q=await Z.json(),{deck:Y}=hI0(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()||tW1($),score:Y.meta.scores?.cover??G?.score?.value,verdict:X?.annotation?.trim()||X?.headline?.trim()||void 0}}catch{return null}}function q3($){return $.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;")}function oV6($,Z){let Q=ad($),Y=Z?.brand?.trim()||tW1(Q),X=I08(Q,128),G=`${(L0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(Q)}`,{title:W,description:K}=V08({brand:Y,domain:Q,score:Z?.score,verdict:Z?.verdict}),H=`${G}/og.png`,F=`${Y} commerce report by decocms`;return[`<title>${q3(W)}</title>`,`<meta name="description" content="${q3(K)}" />`,'<meta name="robots" content="noindex, follow" />','<meta property="og:type" content="website" />','<meta property="og:site_name" content="decocms" />',`<meta property="og:title" content="${q3(W)}" />`,`<meta property="og:description" content="${q3(K)}" />`,`<meta property="og:url" content="${q3(G)}" />`,`<meta property="og:image" content="${q3(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${q3(F)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${q3(W)}" />`,`<meta name="twitter:description" content="${q3(K)}" />`,`<meta name="twitter:image" content="${q3(H)}" />`,`<meta name="twitter:image:alt" content="${q3(F)}" />`,`<link rel="canonical" href="${q3(G)}" />`,`<link rel="icon" href="${q3(X)}" sizes="any" />`].join(`
3423
3423
  `)}function rV6($,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}
3424
3424
  </head>`)}function _08($){let Z=new e0;return Z.get("/:domain/og.png",async(Q)=>{let Y=ad(Q.req.param("domain")),X=async()=>{let J=$?Bun.file(C08($,"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(`${lH({})}/api/v2/public/diagnostics/${encodeURIComponent(Y)}/og.png`,{signal:AbortSignal.timeout(sV6)}),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=$?C08($,"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 tV6(ad(Y)),K=oV6(Y,W);return Q.html(rV6(G,K),200,{"Cache-Control":"public, max-age=0, s-maxage=300"})}catch{return Q.html(G)}}),Z}var nV6=2500,sV6=1e4;var v08=O(()=>{y$();oW1();oz();t1()});function E$0($,Z){return fetch(`${lH({})}${$}`,Z)}async function aV6($,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 E$0(`/api/v2/public/diagnostics/${encodeURIComponent($)}${X}`,{headers:{Accept:"application/json"}});if(J.status===404)return{status:"not_found",deck:null,scanned_at:null,drops:[]};if(!J.ok)throw Error(`report read HTTP ${J.status}`);let G=await J.json(),{deck:W,drops:K}=hI0(G);return{status:W.slides.length?"ready":"empty",deck:W,scanned_at:G.scanned_at,drops:K}}var eV6,kB,f08=async($,Z)=>{if(!$.get("reportUser"))return $.json({error:"Authentication required"},401);await Z();return},b08;var x08=O(()=>{y$();eJ();oz();oW1();eV6=new Set(["complete","errored","terminated","unknown"]),kB=new e0;kB.use("*",async($,Z)=>{let Q=await W8.api.getSession({headers:$.req.raw.headers});$.set("reportUser",Q?.user?.id?{email:Q.user.email}:void 0),await Z(),$.header("Cache-Control","private, no-store"),$.header("Vary","Cookie");return});kB.use("/link-token/*",f08);kB.use("/suggest",f08);kB.get("/site/:domain",async($)=>{let Z=$.req.param("domain").trim();if(!Z)return $.json({error:"domain is required"},400);let Q=$.get("reportUser"),Y=$.req.query("key")?.trim()||void 0,X=$.req.query("lang")?.trim()||void 0;try{let J=await aV6(Z,Y,X);if($.header("Cache-Control","private, no-store"),Q||!J.deck)return $.json(J);return $.json({...J,deck:{...J.deck,slides:J.deck.slides.slice(0,1)},truncated:J.status==="ready"})}catch{return $.json({error:"report read failed"},502)}});kB.post("/run",async($)=>{let Z=$.get("reportUser"),Q;try{Q=await $.req.json()}catch{return $.json({error:"invalid JSON"},400)}let Y=typeof Q.domain==="string"?Q.domain.trim():"";if(!Y)return $.json({error:"domain is required"},400);let X=Z?.email,J=typeof Q.distinctId==="string"&&Q.distinctId.trim()&&Q.distinctId.length<=200?Q.distinctId.trim():void 0;try{let G=await E$0("/api/v2/diagnostics/run",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${tz({})}`},body:JSON.stringify({url:Y,...X?{email:X}:{},distinct_id:J})});if(!G.ok)return $.json({error:`run HTTP ${G.status}`},502);let W=await G.json(),K=W.blocked?{state:"blocked"}:W.status==="fresh"?{state:"fresh"}:W.mode==="sync"?{state:"sync"}:{state:"running",id:W.id??null};return $.json(K)}catch{return $.json({error:"run failed"},502)}});kB.get("/status",async($)=>{let Z=$.req.query("id");if(!Z)return $.json({error:"id is required"},400);try{let Q=await E$0(`/api/v2/diagnostics/status?id=${encodeURIComponent(Z)}`,{headers:{Authorization:`Bearer ${tz({})}`}});if(!Q.ok)return $.json({error:`status HTTP ${Q.status}`},502);let X=(await Q.json()).status??"unknown",J={done:eV6.has(X),status:X};return $.json(J)}catch{return $.json({error:"status failed"},502)}});kB.get("/link-token/:id",async($)=>{let Z=$.req.param("id");try{let Q=await E$0(`/api/v2/public/link-tokens/${encodeURIComponent(Z)}`,{headers:{Accept:"application/json"}});if(Q.status===404)return $.json(null);if(!Q.ok)return $.json({error:`link token HTTP ${Q.status}`},502);return $.json(await Q.json())}catch{return $.json({error:"link token resolve failed"},502)}});kB.get("/suggest",async($)=>{let Z=($.req.query("q")??"").trim().slice(0,64);if(Z.length<2)return $.json({suggestions:[]});try{let Q=await E$0(`/api/v2/public/suggest?q=${encodeURIComponent(Z)}`,{headers:{Accept:"application/json"}});if(!Q.ok)return $.json({suggestions:[]});let Y=await Q.json();return $.json({suggestions:Array.isArray(Y.suggestions)?Y.suggestions:[]})}catch{return $.json({suggestions:[]})}});b08=kB});var $k6=1048576,rW1;var y08=O(()=>{y$();gK();t1();Y31();rW1=new e0;rW1.post("/webhook",l5({maxSize:$k6,onError:($)=>$.json({error:"payload too large"},413)}),async($)=>{let Z=L0().stripeWebhookSecret;if(!Z)return $.json({error:"stripe billing not configured"},503);let Q=await $.req.text();if(!ap$(Q,$.req.header("stripe-signature"),Z))return $.json({error:"invalid signature"},400);let X=ep$(Q);if(!X)return $.json({error:"invalid payload"},400);let J=await $n$(X);return console.log("stripe webhook",{eventId:X.id,type:X.type,livemode:X.livemode,...J}),$.json({received:!0})})});import{timingSafeEqual as Zk6}from"crypto";function Xk6($,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 Zk6(Buffer.from(X),Buffer.from(Y))}function Jk6($,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 g08($){let Z=new e0;return Z.post("/webhook",l5({maxSize:Qk6,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(!Xk6(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"&&!Yk6.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 x11())?.markTenantPoolsDirty(F,H)??[];return Q.json({ok:!0,pools:N})}let W=Jk6(J??"",G);if(W.length===0)return Q.json({ok:!0,ignored:"no-pr"});let K=await Gk6($,W);return Q.json({ok:!0,refreshed:K})}),Z}async function Gk6($,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 W2$(K,G.organizationId,G.taskBoardItemId)!==null)Q++}catch(W){console.error(`[github-webhook] pr card refresh failed for ${G.taskBoardItemId}:`,W)}}return Q}var Qk6=5242880,Yk6;var h08=O(()=>{y$();gK();NK();sZ();Yk6=new Set(["check_suite","issue_comment"])});function u08($){let Z=new wB($.db,new TY($.encryptionKey)),Q=new e0;return Q.get("/attachments/:token",async(Y)=>{let X=qP$(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 tY(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 l08=O(()=>{y$();zD();f81();Hw()});function c08($){let Z=new wB($.db,new TY($.encryptionKey));async function Q(X,J){let G=Su$(J);if(!G)return;let W=await Z.getByWebhookSecret(X);if(!W?.enabled)return;let K=await bG($.db,W.organizationId);if(!K)return;if(await wq0(K,W,G)==="started")console.log(`[jira-webhook] started a run for ${G.issueKey} entering "${G.toStatus}"`)}let Y=new e0;return Y.post("/webhook/:secret",l5({maxSize:Wk6}),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 Wk6=1048576;var d08=O(()=>{y$();gK();zD();jq0();vf()});import{DBOS as uI0,SchedulerMode as Kk6}from"@dbos-inc/dbos-sdk";function i08($){aW1=$}function p08(){if(!aW1)throw Error("[jira-trigger] runtime not initialized \u2014 setJiraTriggerSweepRuntime() must run before the workflow fires");return aW1}function n08(){let $=p08();return new wB($.db,new TY($.encryptionKey))}async function Uk6($,Z){try{let Q=await n08().getById($);if(!Q?.enabled||!Q.boardId)return{integrationId:$,started:0};let Y=await bG(p08().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 tY(Q.siteUrl,Q.email,Q.apiToken),W=`(${await J.getBoardScopeJql(Q.boardId)}) AND status CHANGED AFTER "-${m08}m"`,K=0,H;for(let F=0;F<Fk6;F++){let U=await J.searchIssues({jql:W,nextPageToken:H,expandChangelog:!0});for(let N of U.issues){let B=Cu$(N,N.changelog?.histories??[],Z);for(let D of B)if(await wq0(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 Nk6($,Z){let Q=new Date($.getTime()-m08*60000),Y=await uI0.runStep(()=>n08().listEnabledIds(),{name:"loadJiraIntegrations"});if(Y.length===0)return;let X=await Promise.all(Y.map((J)=>uI0.runStep(()=>Uk6(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 t08(){if(sW1)return;sW1=uI0.registerWorkflow(Nk6,{name:"jiraTriggerSweepWorkflow"}),uI0.registerScheduled(sW1,{name:"jiraTriggerSweepWorkflow",crontab:Hk6,mode:Kk6.ExactlyOncePerIntervalWhenActive})}var Hk6="7-59/10 * * * *",m08=15,Fk6=5,aW1=null,sW1=null;var o08=O(()=>{zD();vf();Hw();jq0()});function r08($,Z){if(Z.startsWith("text/html")||Z.startsWith("image/svg"))$.set("Content-Security-Policy","sandbox allow-scripts allow-modals allow-same-origin")}var s08,Bk6,Dk6,a08;var e08=O(()=>{y$();oW();rl();QP();s08=new e0,Bk6=["range","if-none-match","if-modified-since"],Dk6=["content-type","content-length","content-range","accept-ranges","etag","last-modified"];s08.get("/:org/files/*",async($)=>{let Z=$.get("studioContext"),Q=Z.organization?.id;if(!Z.auth?.user?.id){if(Pd($))return $.redirect(`/login?next=${encodeURIComponent($.req.path)}`,302);throw new X$(401,{message:"Authentication required"})}if(!Q)throw new X$(401,{message:"Organization context required"});let Y=$.req.path.replace(/^.*\/files\//,"");if(!Y)throw new X$(400,{message:"Missing file key"});let X=await Ie(Y,Z);if(!X)throw new X$(503,{message:"Object storage not configured"});if(X.startsWith("data:")&&bX()){let K=X.match(/^data:([^;]+);base64,(.+)$/s);if(!K)throw new X$(500,{message:"Invalid data URL from storage"});let[,H,F]=K,U=Buffer.from(F,"base64"),N=new Headers({"Content-Type":H,"Cache-Control":"private, max-age=86400"});return r08(N,H),new Response(U,{status:200,headers:N})}let J=new Headers;for(let K of Bk6){let H=$.req.header(K);if(H)J.set(K,H)}let G=await fetch(X,{headers:J});if(G.status===403||G.status===404)throw new X$(404,{message:"File not found"});if(!G.ok&&G.status!==304&&G.status!==416)throw console.error(`[files] upstream storage error ${G.status} for key:`,Y),new X$(502,{message:"Upstream storage error"});let W=new Headers;for(let K of Dk6){let H=G.headers.get(K);if(H)W.set(K,H)}return W.set("Cache-Control","private, max-age=86400"),r08(W,W.get("content-type")??""),new Response(G.body,{status:G.status,headers:W})});a08=s08});var z$0=_(($x)=>{var Ok6=$x&&$x.__createBinding||(Object.create?function($,Z,Q,Y){if(Y===void 0)Y=Q;var X=Object.getOwnPropertyDescriptor(Z,Q);if(!X||("get"in X?!Z.__esModule:X.writable||X.configurable))X={enumerable:!0,get:function(){return Z[Q]}};Object.defineProperty($,Y,X)}:function($,Z,Q,Y){if(Y===void 0)Y=Q;$[Y]=Z[Q]}),Lk6=$x&&$x.__exportStar||function($,Z){for(var Q in $)if(Q!=="default"&&!Object.prototype.hasOwnProperty.call(Z,Q))Ok6(Z,$,Q)};Object.defineProperty($x,"__esModule",{value:!0});Lk6(wJ(),$x)});var Q18=_(($18)=>{Object.defineProperty($18,"__esModule",{value:!0});$18.version=void 0;$18.version="3.4.0"});var J18=_(($U)=>{var wk6=$U&&$U.__importDefault||function($){return $&&$.__esModule?$:{default:$}};Object.defineProperty($U,"__esModule",{value:!0});$U.NodeTransport=$U.VERSION=void 0;$U.nodeResolveHost=Tk6;var O5=z$0(),jk6=T0("net"),eW1=T0("tls"),Ek6=T0("path"),Y18=T0("fs"),zk6=wk6(T0("dns")),Pk6=Q18();$U.VERSION=Pk6.version;var Ak6="nats.js";class X18{socket;version;lang;yields=[];signal=(0,O5.deferred)();closedNotification=(0,O5.deferred)();options;connected=!1;tlsName="";done=!1;closeError;constructor(){this.lang=Ak6,this.version=$U.VERSION}async connect($,Z){this.tlsName=$.tlsName,this.options=Z;let{tls:Q}=this.options,{handshakeFirst:Y}=Q||{};try{if(Y===!0)this.socket=await this.tlsFirst($);else this.socket=await this.dial($);if(this.done)this.socket?.destroy();let X=await this.peekInfo();(0,O5.checkOptions)(X,Z);let{tls_required:J,tls_available:G}=X,W=G===!0&&Z.tls!==null;if(!Y&&(J||W))this.socket=await this.startTLS();if(this.done)this.socket?.destroy();if(J&&this.socket.encrypted!==!0)throw O5.errors.InvalidArgumentError.format("tls","is not available on this server");return this.connected=!0,this.setupHandlers(),this.signal.resolve(),Promise.resolve()}catch(X){let J=X;if(!J)J=new O5.errors.ConnectionError("error connecting - node provided an undefined error");let{code:G}=J,W=G==="ECONNREFUSED"?new O5.errors.ConnectionError("connection refused",{cause:J}):J;throw this.socket?.destroy(),W}}dial($){let Z=(0,O5.deferred)(),Q,Y=(0,jk6.createConnection)($.port,$.hostname,()=>{Z.resolve(Y),Y.removeAllListeners()});return Y.on("error",(X)=>{Q=X}),Y.on("close",()=>{Y.removeAllListeners(),Z.reject(Q)}),Y.setNoDelay(!0),Z}get isClosed(){return this.done}close($){return this._closed($,!1)}peekInfo(){let $=(0,O5.deferred)(),Z;return this.socket.on("data",(Q)=>{this.yields.push(Q);let Y=O5.DataBuffer.concat(...this.yields),X=(0,O5.extractProtocolMessage)(Y);if(X!=="")try{let J=O5.INFO.exec(X);if(!J)throw Error("unexpected response from server");let G=JSON.parse(J[1]);$.resolve(G)}catch(J){$.reject(J)}finally{this.socket.removeAllListeners()}}),this.socket.on("error",(Q)=>{Z=Q}),this.socket.on("close",()=>{this.socket.removeAllListeners(),$.reject(Z)}),$}loadFile($){if(!$)return Promise.resolve();let Z=(0,O5.deferred)();try{if($=(0,Ek6.resolve)($),!(0,Y18.existsSync)($))Z.reject(Error(`${$} doesn't exist`));(0,Y18.readFile)($,(Q,Y)=>{if(Q)return Z.reject(Q);Z.resolve(Y)})}catch(Q){Z.reject(Q)}return Z}async loadClientCerts(){let $={},{certFile:Z,cert:Q,caFile:Y,ca:X,keyFile:J,key:G}=this.options.tls;try{if(Z){let W=await this.loadFile(Z);if(W)$.cert=W}else if(Q)$.cert=Q;if(J){let W=await this.loadFile(J);if(W)$.key=W}else if(G)$.key=G;if(Y){let W=await this.loadFile(Y);if(W)$.ca=[W]}else if(X)$.ca=X;return Promise.resolve($)}catch(W){return Promise.reject(W)}}async tlsFirst($){let Z,Q={servername:this.tlsName,rejectUnauthorized:!0};if(this.socket)Q.socket=this.socket;if(typeof this.options.tls==="object")try{let X=await this.loadClientCerts()||{};Q=(0,O5.extend)(Q,this.options.tls,X)}catch(X){return Promise.reject(new O5.errors.ConnectionError(X.message,{cause:X}))}let Y=(0,O5.deferred)();try{let X=(0,eW1.connect)($.port,$.hostname,Q,()=>{X.removeAllListeners(),Y.resolve(X)});X.on("error",(J)=>{Z=J}),X.on("secureConnect",()=>{if(Q.rejectUnauthorized===!1)return;if(!X.authorized)throw X.authorizationError}),X.on("close",()=>{Y.reject(Z),X.removeAllListeners()}),X.setNoDelay(!0)}catch(X){Y.reject(new O5.errors.ConnectionError(X.message,{cause:X}))}return Y}async startTLS(){let $,Z={socket:this.socket,servername:this.tlsName,rejectUnauthorized:!0};if(typeof this.options.tls==="object")try{let Y=await this.loadClientCerts()||{};Z=(0,O5.extend)(Z,this.options.tls,Y)}catch(Y){return Promise.reject(new O5.errors.ConnectionError(Y.message,{cause:Y}))}let Q=(0,O5.deferred)();try{let Y=(0,eW1.connect)(Z,()=>{Y.removeAllListeners(),Q.resolve(Y)});Y.on("error",(X)=>{$=X}),Y.on("secureConnect",()=>{if(Z.rejectUnauthorized===!1)return;if(!Y.authorized)throw Y.authorizationError}),Y.on("close",()=>{Q.reject($),Y.removeAllListeners()})}catch(Y){Q.reject(new O5.errors.ConnectionError(Y.message,{cause:Y}))}return Q}setupHandlers(){let $;this.socket.on("data",(Z)=>{return this.yields.push(Z),this.signal.resolve()}),this.socket.on("error",(Z)=>{$=Z}),this.socket.on("end",()=>{if(this.socket?.destroyed)return;this.socket?.write(new Uint8Array(0),()=>{this.socket?.end()})}),this.socket.on("close",()=>{this._closed($,!1)})}[Symbol.asyncIterator](){return this.iterate()}async*iterate(){while(!0){if(this.yields.length===0)await this.signal;let $=this.yields;this.yields=[];for(let Z=0;Z<$.length;Z++){if(this.options.debug)console.info(`> ${(0,O5.render)($[Z])}`);yield $[Z]}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,O5.deferred)()}}discard(){if(this.done=!0,this.socket)try{this.socket.removeAllListeners(),this.socket.destroy()}catch{}}disconnect(){this._closed(void 0,!0).then().catch()}isEncrypted(){return this.socket instanceof eW1.TLSSocket}_send($){if(this.isClosed||this.socket===void 0)return Promise.resolve();if(this.options.debug)console.info(`< ${(0,O5.render)($)}`);let Z=(0,O5.deferred)();try{this.socket.write($,(Q)=>{if(Q){if(this.options.debug)console.error(`!!! ${(0,O5.render)($)}: ${Q}`);return Z.reject(Q)}return Z.resolve()})}catch(Q){if(this.options.debug)console.error(`!!! ${(0,O5.render)($)}: ${Q}`);Z.reject(Q)}return Z}send($){this._send($).catch((Q)=>{})}async _closed($,Z=!0){if(!this.connected)return;if(this.done){this.socket?.destroy();return}if(this.closeError=$,!$&&this.socket&&Z)try{await this._send(new TextEncoder().encode(""))}catch(Q){if(this.options.debug)console.log("transport close terminated with an error",Q)}try{if(this.socket)this.socket.removeAllListeners(),this.socket?.destroy(),this.socket=void 0}catch(Q){console.log(Q)}this.done=!0,this.closedNotification.resolve(this.closeError)}closed(){return this.closedNotification}}$U.NodeTransport=X18;function Tk6($){let Z=(0,O5.deferred)();return zk6.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 F18=_((H18)=>{Object.defineProperty(H18,"__esModule",{value:!0});H18.connect=Rk6;var G18=J18(),W18=z$0(),K18=z$0();function Rk6($={}){if((0,K18.hasWsProtocol)($))return Promise.reject(K18.errors.InvalidArgumentError.format("servers","node client doesn't support websockets, use the 'wsconnect' function instead"));return(0,W18.setTransportFactory)({factory:()=>{return new G18.NodeTransport},dnsResolveFn:G18.nodeResolveHost}),W18.NatsConnectionImpl.connect($)}});var U18=_((SB)=>{var Mk6=SB&&SB.__createBinding||(Object.create?function($,Z,Q,Y){if(Y===void 0)Y=Q;var X=Object.getOwnPropertyDescriptor(Z,Q);if(!X||("get"in X?!Z.__esModule:X.writable||X.configurable))X={enumerable:!0,get:function(){return Z[Q]}};Object.defineProperty($,Y,X)}:function($,Z,Q,Y){if(Y===void 0)Y=Q;$[Y]=Z[Q]}),Ik6=SB&&SB.__exportStar||function($,Z){for(var Q in $)if(Q!=="default"&&!Object.prototype.hasOwnProperty.call(Z,Q))Mk6(Z,$,Q)};Object.defineProperty(SB,"__esModule",{value:!0});SB.connect=void 0;var Vk6=F18();Object.defineProperty(SB,"connect",{enumerable:!0,get:function(){return Vk6.connect}});Ik6(z$0(),SB)});function O18($){let Z=$?.connectFn??_k6,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:Ck6,reconnect:!0,maxReconnectAttempts:-1,...B?{authenticator:B}:{}}),console.log(`[NatsProvider] Connected to ${Q.getServer()} after ${D} attempt(s)`),Y=null,G=!1,F(Q),H();return}catch{D++;let L=_7(Sk6,kk6,D-1,2,0.5);await T$(L)}}return{init(N,B){if(X)return;X=!0,J=!1;let D=B?.creds?N18.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=D18.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 _k6($){return B18.connect($)}var N18,B18,D18,kk6=100,Sk6=3000,Ck6=3000;var L18=O(()=>{m$();N18=V(Tm(),1),B18=V(U18(),1),D18=V(FU(),1)});function $K1($,Z){return`${$}.${Z}`}class ZK1{cache;constructor($){this.cache=Fd({ttlMs:$?.ttlMs??vk6,maxSize:$?.maxSize??fk6})}async get($,Z){return this.cache.get($K1($,Z))??null}async set($,Z,Q){this.cache.set($K1($,Z),Q)}async invalidate($,Z){this.cache.delete($K1($,Z))}teardown(){this.cache.clear()}}var vk6=600000,fk6=5000;var w18=()=>{};function lI0($,Z){return`${$}:${Z}`}function QK1($){let Z=Fd({ttlMs:$?.ttlMs??bk6,maxSize:$?.maxSize??xk6}),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(j18,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(lI0(K,H))},set(K,H,F){Z.set(lI0(K,H),F)},invalidate(K,H){Z.delete(lI0(K,H)),W(K,H)},start(){if(G)return;let K=Q?.();if(!K)return;G=K.subscribe(j18),(async()=>{for await(let H of G)try{let F=JSON.parse(J.decode(H.data));if(F.originId===Y)continue;Z.delete(lI0(F.organizationId,F.keyId))}catch{}})().catch(console.error)},teardown(){G?.unsubscribe(),G=null,Z.clear()}}}var j18="studio.ai-provider-keys.invalidate",bk6=30000,xk6=5000;var E18=()=>{};class YK1{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 z18=($)=>{let Z;return()=>Z??=$()},XK1,JK1;var P18=O(()=>{W6();XK1=z18(()=>Q$.createHistogram("decopilot.stream.encode_ms",{description:"Per-chunk JSON.stringify+encode time for decopilot stream",unit:"ms"})),JK1=z18(()=>Q$.createCounter("decopilot.stream.published_chunks",{description:"Logical decopilot stream chunks published to JetStream",unit:"{chunks}"}))});function dk6($=R18){return{name:VF,subjects:[`${_61}.>`],storage:lK.StorageType.File,max_age:hk6,max_bytes:lk6,max_msgs_per_subject:ck6,discard:lK.DiscardPolicy.Old,retention:lK.RetentionPolicy.Limits,duplicate_window:uk6,num_replicas:$}}class q18{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 A18($){let Z=T18.headers();for(let[Q,Y]of Object.entries($))Z.set(Q,Y);return Z}function nk6($,Z){let Q=0;return{publish(Y,X,J,G){Y.publish(X,J,G?{headers:G}:void 0).catch((W)=>{if(Q++,gk6().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 tk6($,Z){return $.info?.cluster?Z:1}function ok6($){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 GK1{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=dk6(X);try{await Y.streams.info(VF),await Y.streams.update(VF,J)}catch(G){if(G instanceof Error&&G.message.includes("stream not found"))await Y.streams.add(J),await Y.streams.update(VF,J);else if(G instanceof Error&&/can ?not change.*storage|storage type/i.test(G.message))await Y.streams.delete(VF),await Y.streams.add(J);else throw G}},Q=await A8(async()=>{let Y=this.options.getJetStreamManager?await this.options.getJetStreamManager():await lK.jetstreamManager($),X=tk6($,R18);try{await Z(Y,X)}catch(J){if(X<=1||!ok6(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:Gc});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=nk6(Z,Y),G=!1,W=()=>{if(G)return;G=!0;let H=dR$(Z);X.publish(H.subject,H.data).catch(()=>{})};Q.addEventListener("abort",W,{once:!0});let K=(H)=>{let F=performance.now(),U=f61(H,{runId:Z}),N=performance.now()-F;XK1().record(N),JK1().add(1,{"org.id":Y??"unknown"}),pk6?.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?A18(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(),ik6)console.warn(JSON.stringify({msg:"decopilot-stream-diag",event:"pump-done",taskId:Z,publishedChunks:U,publishErrors:J.errorCount}))}if(N!==void 0)throw N})()}async publishSerialized($,Z){try{return await A8(()=>$.publish(Z.subject,Z.data,{...Z.headers?{headers:A18(Z.headers)}:{},...Z.msgId?{msgID:Z.msgId}:{}}),{maxAttempts:6,minTimeout:250,maxTimeout:5000,jitter:0.5,isRetriable:Gc}),!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=f61(Z,{runId:$,dedup:Q});XK1().record(performance.now()-X),JK1().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=cR$({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"?lK.DeliverPolicy.New:lK.DeliverPolicy.All,J=Q?.closeOnDone??!1,G=ww($),W;try{W=await A8(async()=>{return(await Y.consumers.get(VF,{filter_subjects:G,deliver_policy:X})).consume()},{maxAttempts:6,minTimeout:250,maxTimeout:5000,jitter:0.5,isRetriable:Gc})}catch(L){return console.warn("[Decopilot] JetStream tail unavailable (non-critical):",L?.message??L),null}let F=mA0({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(uA0()).pipeThrough(lA0()).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(VF,{filter:ww($)}).catch(()=>{})}teardown(){this.js=null,this.jsm=null}}var lK,T18,yk6=($)=>{let Z;return()=>Z??=$()},gk6,hk6=86400000000000,uk6=120000000000,lk6=4294967296,R18,ck6=500000,mk6,ik6,pk6;var M18=O(()=>{m$();b61();iA0();cA0();W6();P18();lK=V(FU(),1),T18=V(Tm(),1),gk6=yk6(()=>Q$.createCounter("decopilot.stream.publish_errors",{description:"Number of JetStream publish failures for decopilot stream chunks",unit:"{errors}"})),R18=Math.max(1,Number(process.env.DECOPILOT_STREAM_REPLICAS??3)||3);mk6=process.env.STREAM_ENCODE_TRACE==="1",ik6=process.env.DECOPILOT_STREAM_TRACE==="1";pk6=mk6?new q18:null});function cI0($,Z,Q,Y){if(!Y)return!1;return $.emit(Z,GH(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 I18=O(()=>{q8()});class WK1{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 rk6($,Z){let Q=$.startsWith("thread:")?BK($):$;return[...new Set([Z,Q].filter((Y)=>!!Y))]}async function V18($,Z){let Q=Z.organizationId;try{let Y=await $.storage.taskBoard.linkedThreadIds(Z.id,Q);for(let X of Y){let J=await DF($,X);if(!J?.owner||!J?.name)continue;let G=await $.storage.threads.get(X),W=await Ll($,{threadId:X,runBranch:G?.branch}),K=rk6(W,await Nz0($,X)),H=await _s($,Q,Fe0(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 D3(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 k18=O(()=>{OZ();SG();sZ()});async function S18($,Z,Q){let Y=Z.organizationId;if(!aX(Z))return!1;if(!ff(Q))return!1;if(await $.storage.taskBoard.hasHumanRejectedDone(Z.id,Y))return!1;let X=await $.storage.organizationSettings.get(Y),J=ZF(X?.flags),G=await $.storage.taskBoard.update(Z.id,Y,{status:J},Z.updatedBy);return await A6($,{taskBoardItemId:Z.id,action:"status_changed",actorId:null,data:{from:Z.status,to:J,reason:"pr_merged"}}),p$(Y,G),console.log(`[task-board-review-sweeper] ${Z.id}: linked PR already merged \u2014 moved to ${J}`),!0}var C18=O(()=>{B4();ZY();ml();zK();$9()});function YS6($){return $ instanceof hY}function XS6($,Z){return Z-$>=ZS6}class KK1{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??sk6;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??ek6,Q=this.options.itemIntervalMs??ak6,Y=new Date(Date.now()-Q),X=await this.taskBoard.listItemsPendingReview(Z,this.cursor,Y),J=X.at(-1);this.cursor=X.length===Z&&J?{updatedAt:J.updatedAt,id:J.id}:null;for(let{id:G,organizationId:W}of X)try{if(await this.reconcileItem(G,W,Y))$++}catch(K){console.error(`[task-board-review-sweeper] ${G} failed`,K)}await this.reapNeverStartedThreads(Z),$+=await this.dispatchDueRetries(Z),await this.reactToUnhandledFailures(Z)}catch(Z){console.error("[task-board-review-sweeper] sweep failed",Z)}finally{this.running=!1}return $}async reapNeverStartedThreads($){try{let Z=await this.taskBoard.failNeverStartedLinkedThreads($,new Date(Date.now()-V81),l41);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()-QS6));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 g41(this.taskBoard,X,Y),await h41(this.taskBoard,this.billing,X,Y)}catch(J){console.error(`[task-board-review-sweeper] unhandled-failure reaction for ${Q} failed`,J)}}async dispatchDueRetries($){let Z=0,Q=await this.taskBoard.listItemsDueForRetry($,new Date);for(let{id:Y,organizationId:X,attempts:J}of Q)try{if(!await this.taskBoard.claimDueRetry(Y,X,new Date))continue;let G=await this.taskBoard.getById(Y,X);if(!G||G.status!==L$.progress||G.assigneeId!==r$)continue;let W=await this.contextFactory(X,G.assignedBy??G.createdBy);if(!W)continue;await PK(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),YS6(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()+$S6)).catch((W)=>console.error(`[task-board-review-sweeper] re-arming ${Y} failed`,W))}return Z}async returnToTodo($,Z,Q){try{let Y=await this.taskBoard.getById($,Z);if(!Y||Y.status!==L$.progress)return;let X=await this.taskBoard.returnToTodoAfterFailure($,Z,Y.updatedBy);if(!X)return;await this.taskBoard.recordActivity({taskBoardItemId:$,action:"status_changed",actorId:null,data:{from:"in_progress",to:"todo",reason:Q}}).catch(()=>{}),p$(Z,X)}catch(Y){console.error(`[task-board-review-sweeper] returning ${$} to todo failed`,Y)}}async handOffReviewWithoutPr($,Z){let Q=await this.taskBoard.listActivity(Z.id,Z.organizationId);if(!XS6(TN(Q,Z.reviewCycleStartedAt),Date.now()))return;await qF($,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(!aX(Y))return!1;let X=Y.assigneeId===r$,J=await this.taskBoard.listPrs($,Z),G=await this.contextFactory(Z,Y.assignedBy??Y.createdBy);if(!G)return!1;if(J.length===0){if(await V18(G,Y))J=await this.taskBoard.listPrs($,Z);if(J.length===0){if(X)await this.handOffReviewWithoutPr(G,Y);return!1}}let W=await Promise.all(J.map(async(K)=>({...K,...await pl(Z,K)})));if(W.every((K)=>K.state===null))console.warn(`[task-board-review-sweeper] ${$}: no live PR state from GitHub (${W.length} PR(s)) \u2014 proceeding on unknown`);if(await S18(G,Y,W))return!0;if(await uq$(G,Y))return!0;if(await this.resolveConflictFromSweep(G,Y,W))return!0;if(!X)return!1;if(!f41(W))return!1;return await YA0(G,Y,{previewMatchesHead:b41(W)}),!0}async resolveConflictFromSweep($,Z,Q){let Y=Q.find((X)=>X.state!=="closed"&&X.conflict===!0);if(!Y)return!1;return await Bw($,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 sk6=60000,ak6=300000,ek6=50,$S6=60000,ZS6=900000,QS6=120000;var _18=O(()=>{B4();A41();k18();MF();ge();zK();C18();$9();RG();c41();sZ();Ue();il()});import{readdir as JS6,rm as dI0}from"fs/promises";import{join as mI0}from"path";async function iI0($){let Z=new Date;Z.setUTCDate(Z.getUTCDate()-GS6),Z.setUTCHours(0,0,0,0);let Q=0;try{let Y=await Zx($);for(let X of Y)if(/^\d{4}$/.test(X))Q+=await v18($,X,Z);else if(!X.startsWith(".")){let J=mI0($,X),G=await Zx(J);for(let K of G){if(!/^\d{4}$/.test(K))continue;Q+=await v18(J,K,Z)}if((await Zx(J)).length===0)await dI0(J,{recursive:!0,force:!0})}}catch(Y){console.warn("monitoring retention cleanup failed:",Y)}return Q}async function v18($,Z,Q){let Y=0,X=mI0($,Z),J=await Zx(X);for(let W of J){if(!/^\d{2}$/.test(W))continue;let K=mI0(X,W),H=await Zx(K);for(let U of H){if(!/^\d{2}$/.test(U))continue;let N=new Date(`${Z}-${W}-${U}T00:00:00Z`);if(isNaN(N.getTime()))continue;if(N<Q){let B=mI0(K,U);await dI0(B,{recursive:!0,force:!0}),Y++}}if((await Zx(K)).length===0)await dI0(K,{recursive:!0,force:!0})}if((await Zx(X)).length===0)await dI0(X,{recursive:!0,force:!0});return Y}async function Zx($){try{return(await JS6($)).filter((Q)=>!Q.startsWith("."))}catch{return[]}}var GS6=30;var HK1=()=>{};import{DBOS as FK1,SchedulerMode as WS6}from"@dbos-inc/dbos-sdk";async function HS6(){let $=[aG(),Qx(),YU()],Z=0;for(let Q of $)try{Z+=await iI0(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 FS6($,Z){await FK1.runStep(()=>HS6(),{name:"monitoringRetention"})}function b18(){if(f18)return;f18=!0;let $=FK1.registerWorkflow(FS6,{name:"monitoringRetentionWorkflow"});FK1.registerScheduled($,{name:"monitoringRetentionWorkflow",crontab:KS6,mode:WS6.ExactlyOncePerIntervalWhenActive})}var KS6="23 4 * * *",f18=!1;var x18=O(()=>{S3();HK1()});function y18($){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 JQ.create();X.auth.user={id:Q,role:Y.role},X.organization={id:Y.orgId,slug:Y.orgSlug,name:Y.orgName};let J=await WP($.db,Z,Y.role);return X.boundAuth=oJ1({auth:X.authInstance,headers:new Headers,role:Y.role,permissions:J,userId:Q}),X.access=new FE(Q,void 0,X.boundAuth,Y.role,"self"),Nw(X,{id:Y.orgId,slug:Y.orgSlug}),X}}var g18=O(()=>{zW();rH()});function US6(){return[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}]}function NS6(){return{services:US6(),migrationsStatus:"pending",serverUrl:null,logs:[]}}function DS6(){for(let $ of BS6)$()}function h18($){let Z=[...UK1.logs,$];UK1={...UK1,logs:Z.length>500?Z.slice(-500):Z},DS6()}function NK1(){return OS6}var UK1,BS6,OS6=!1;var BK1=O(()=>{UK1=NS6(),BS6=new Set});import{EventEmitter as LS6}from"events";var DK1;var u18=O(()=>{BK1();DK1=new LS6;DK1.on("request",($)=>{h18($)})});function l18(){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=ed(N.params.name),D=N.params.arguments||{},L=Object.keys(D).map((j)=>ed(j)),w=L.length>0?L.slice(0,3).join(",")+(L.length>3?"\u2026":""):"";J=`${q5.tool}${B}${q5.dim}(${w})${q5.reset}`}else if(N.method)J=`${q5.dim}${ed(N.method)}${q5.reset}`}}catch{}}let W=ed(X);if(X.startsWith("/mcp/conn_")){let F=X.split("/")[2]??"";W=`/mcp/${q5.mcp}${ed(F.slice(0,12))}\u2026${q5.reset}`}else if(X==="/mcp")W=`${q5.mcp}/mcp${q5.reset}`;else if(X==="/mcp/registry")W=`${q5.mcp}/mcp/registry${q5.reset}`;let K=jS6(Y),H=G?"\u25C0":"\u2190";if(!NK1())console.log(`${q5.dim}${H}${q5.reset} ${K}${Y}${q5.reset} ${W}${J?` ${J}`:""}`);try{await Z()}finally{let F=Date.now()-Q,U=$.res.status,N=wS6(U),B=F<1000?`${F}ms`:`${(F/1000).toFixed(1)}s`,D=G?"\u25B6":"\u2192";if(!NK1())console.log(`${q5.dim}${D}${q5.reset} ${K}${Y}${q5.reset} ${W}${J?` ${J}`:""} ${N}${U}${q5.reset} ${q5.duration}${B}${q5.reset}`);DK1.emit("request",{method:Y,path:ed(X),status:U,duration:F,timestamp:new Date})}}}var q5,wS6=($)=>{if($>=500)return q5.serverError;if($>=400)return q5.clientError;if($>=300)return q5.redirect;return q5.ok},jS6=($)=>{return q5[$]||q5.reset},ed=($)=>{return $.replace(/\r/g,"").replace(/\n/g,"").replace(/\x1b\[[0-9;]*m/g,"").replace(/[\x00-\x1f\x7f-\x9f]/g,"")};var c18=O(()=>{BK1();u18();q5={reset:"\x1B[0m",dim:"\x1B[2m",bold:"\x1B[1m",GET:"\x1B[36m",POST:"\x1B[33m",PUT:"\x1B[35m",DELETE:"\x1B[31m",ok:"\x1B[32m",redirect:"\x1B[36m",clientError:"\x1B[33m",serverError:"\x1B[31m",mcp:"\x1B[35m",tool:"\x1B[96m",duration:"\x1B[90m"}});import{createHmac as p18}from"crypto";import{mkdir as ES6,readdir as zS6,rm as d18,stat as n18}from"fs/promises";import{join as LK1,relative as PS6}from"path";import{z as V$}from"zod";function o18($){let Z=$.replace(/[^a-zA-Z0-9_-]/g,"_");return LK1(AS6,Z)}function r18($){return $.replace(/^\/+/,"").replace(/\.\./g,"")}function OK1($,Z){let Q=o18($),Y=r18(Z);return LK1(Q,Y)}function TS6($,Z,Q,Y){let X=L0().encryptionKey||"dev-secret",J=`${$}:${Z}:${Q}:${Y}`;return p18("sha256",X).update(J).digest("hex")}function i18($,Z,Q,Y,X){let J=Math.floor(Date.now()/1000)+Y,G=TS6(Z,Q,J,X),W=new URL(`/api/dev-assets/${Z}/${r18(Q)}`,$);return W.searchParams.set("expires",J.toString()),W.searchParams.set("signature",G),W.searchParams.set("method",X),W.toString()}function s18($,Z,Q){let Y=`${$}:${Z.getTime()}:${Q}`;return`"${p18("md5","etag").update(Y).digest("hex")}"`}async function a18($,Z,Q,Y,X){try{let J=await zS6($,{withFileTypes:!0});for(let G of J){let W=LK1($,G.name),H=PS6(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 a18(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 n18(W);X.objects.push({key:H,size:F.size,lastModified:F.mtime.toISOString(),etag:s18(W,F.mtime,F.size)})}catch{}}}}catch{}}function e18($,Z){let Y=p($).id;return[{name:"LIST_OBJECTS",description:"List objects in the local assets directory with pagination support",inputSchema:V$.object({prefix:V$.string().optional(),maxKeys:V$.number().optional().default(1000),continuationToken:V$.string().optional(),delimiter:V$.string().optional()}),outputSchema:V$.object({objects:V$.array(V$.object({key:V$.string(),size:V$.number(),lastModified:V$.string(),etag:V$.string()})),nextContinuationToken:V$.string().optional(),isTruncated:V$.boolean(),commonPrefixes:V$.array(V$.string()).optional()}),handler:async(X)=>{let J=X,G=J.prefix||"",W=J.maxKeys??1000,K=J.delimiter,H=J.continuationToken,F=o18(Y);await ES6(F,{recursive:!0});let U={objects:[],commonPrefixes:new Set};await a18(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=OK1(Y,J.key),W=await n18(G);return{contentType:p31(J.key),contentLength:W.size,lastModified:W.mtime.toISOString(),etag:s18(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??m18;return{url:i18(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??m18;return{url:i18(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=OK1(Y,J.key);try{return await d18(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=OK1(Y,K);try{await d18(H),G.push(K)}catch(F){W.push({key:K,message:F instanceof Error?F.message:"Unknown error"})}})),{deleted:G,errors:W}}}]}async function wK1($,Z,Q){let Y=e18(Z,Q),X=new SH({name:"dev-assets-mcp",version:"1.0.0"},{capabilities:{tools:{}},jsonSchemaValidator:f5});for(let G of Y){let W="shape"in G.inputSchema?G.inputSchema.shape:V$.object({}).shape,K=G.outputSchema&&"shape"in G.outputSchema?G.outputSchema.shape:V$.object({}).shape;X.registerTool(G.name,{description:G.description??"",inputSchema:W,outputSchema:K,annotations:G.annotations,_meta:G._meta},async(H)=>{try{let F=await G.handler(H);return{content:[{type:"text",text:JSON.stringify(F)}],structuredContent:F}}catch(F){return{content:[{type:"text",text:`Error: ${F.message}`}],isError:!0}}})}let J=new rY({enableJsonResponse:$.headers.get("Accept")?.includes("application/json")??!1});return await X.connect(J),lG(X,J,$,"mcp:dev-assets")}async function $$8($,Z,Q,Y){let J=e18(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 AS6="./data/assets",m18=3600,t18,Z$8;var Q$8=O(()=>{t1();Nc();y$();It();ef();hQ();yM0();t18=new e0;t18.all("/",async($)=>{let Z=$.get("studioContext"),Q=new URL($.req.url),Y=`${Q.protocol}//${Q.host}`;return wK1($.req.raw,Z,Y)});Z$8=t18});var Y$8={};M4(Y$8,{mountDevRoutes:()=>RS6});function RS6($,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 wK1(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 $$8(W,K,X,G);if(H.isError)return Y.json(H.content,500);return Y.json(H.content)}),$.use("/mcp/dev-assets",Z),$.route("/mcp/dev-assets",Z$8);let Q=new e0;Q.use("*",hK({mountPath:"/api/dev-assets"})),Q.route("/",xM0({orgFromPath:!1})),$.route("/api/dev-assets",Q)}var X$8=O(()=>{y$();h31();yM0();Q$8()});import{sql as qS6}from"kysely";import{randomUUID as J$8}from"crypto";import{z as MS6}from"zod";async function VS6($){let Z=new Date().toISOString(),Q=J$8(),Y=R8.SELF($.organizationId),X="registry.publish_request.created",J={requestId:$.request.id,requestedId:$.request.requested_id,title:$.request.title,status:$.request.status,createdAt:$.request.created_at,requester:{name:$.request.requester_name,email:$.request.requester_email}};await $.db.insertInto("events").values({id:Q,organization_id:$.organizationId,type:"registry.publish_request.created",source:Y,specversion:"1.0",subject:$.request.id,time:Z,datacontenttype:"application/json",dataschema:null,data:JSON.stringify(J),cron:null,status:"pending",attempts:0,last_error:null,next_retry_at:null,created_at:Z,updated_at:Z}).execute();let G=await $.db.selectFrom("event_subscriptions").select(["id"]).where("organization_id","=",$.organizationId).where("enabled","=",1).where("event_type","=","registry.publish_request.created").where((W)=>W.or([W("publisher","is",null),W("publisher","=",Y)])).execute();if(G.length>0)await $.db.insertInto("event_deliveries").values(G.map((W)=>({id:J$8(),event_id:Q,subscription_id:W.id,status:"pending",attempts:0,last_error:null,delivered_at:null,next_retry_at:null,created_at:Z}))).execute();try{await qS6`SELECT
3425
3425
  pg_notify('studio_events', ${Q}),