decocms 4.255.1 → 4.255.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (222) hide show
  1. package/dist/client/assets/{AlertCircle-A1T1xVMx.js → AlertCircle-BckADFTN.js} +1 -1
  2. package/dist/client/assets/{AreaChart-BG6vIGGB.js → AreaChart-D3FkaC6Z.js} +1 -1
  3. package/dist/client/assets/{ArrowLeft-COeaNaOw.js → ArrowLeft-CA4nZ19l.js} +1 -1
  4. package/dist/client/assets/{ArrowUp-BGOZI0Q9.js → ArrowUp-8tGgkrEO.js} +1 -1
  5. package/dist/client/assets/{Check-DI0FOWiW.js → Check-D4XLgaN4.js} +1 -1
  6. package/dist/client/assets/{CheckCircle-BJwdgUIM.js → CheckCircle-Dh96WJYX.js} +1 -1
  7. package/dist/client/assets/{ChevronDown-BvItwHip.js → ChevronDown-Dm6QJQj5.js} +1 -1
  8. package/dist/client/assets/{ChevronRight-CBoFzEK7.js → ChevronRight-Bbyr31or.js} +1 -1
  9. package/dist/client/assets/{ChevronSelectorVertical-Cehoqrik.js → ChevronSelectorVertical-BUgf0an-.js} +1 -1
  10. package/dist/client/assets/{ChevronUp-BC_WVdNl.js → ChevronUp-C7jPKNLf.js} +1 -1
  11. package/dist/client/assets/{Copy01-C3_wI5Q_.js → Copy01-BqCuDnjV.js} +1 -1
  12. package/dist/client/assets/{CreditCard01-DH-vaSkX.js → CreditCard01-CALthygT.js} +1 -1
  13. package/dist/client/assets/{DotsVertical-ORxQLXj7.js → DotsVertical-CYMbIa1_.js} +1 -1
  14. package/dist/client/assets/{Download01-B9oknS2-.js → Download01-C6mH6Z8f.js} +1 -1
  15. package/dist/client/assets/{Eye-DQ5lks0F.js → Eye-jMpQ7fBE.js} +1 -1
  16. package/dist/client/assets/{FilterLines-Vl4BGB45.js → FilterLines-4Qetm1ho.js} +1 -1
  17. package/dist/client/assets/{Globe01-BqRXvRJ2.js → Globe01-CkxIxFjV.js} +1 -1
  18. package/dist/client/assets/{Globe04-CaR88PwD.js → Globe04-CWbZ_xf0.js} +1 -1
  19. package/dist/client/assets/{HardDrive-l_l9q7wA.js → HardDrive-DqrbzOlI.js} +1 -1
  20. package/dist/client/assets/{Key01-Djpm0e-l.js → Key01-CzBg_w_E.js} +1 -1
  21. package/dist/client/assets/{LinkExternal01-Csb6OWFb.js → LinkExternal01-BYv4_-zq.js} +1 -1
  22. package/dist/client/assets/{LockUnlocked01-Cu12gon5.js → LockUnlocked01-BssaZtDy.js} +1 -1
  23. package/dist/client/assets/{LogOut01-CGdv7S-t.js → LogOut01-CE6p7Q73.js} +1 -1
  24. package/dist/client/assets/{Monitor01-vnROCUnU.js → Monitor01-DUnpXEZF.js} +1 -1
  25. package/dist/client/assets/{Palette-CWqWb0sw.js → Palette-zSvxc111.js} +1 -1
  26. package/dist/client/assets/{Play-DUaW9Jnc.js → Play-C9tlPC3I.js} +1 -1
  27. package/dist/client/assets/{Plus-CQta8KJn.js → Plus-BBdbmkEC.js} +1 -1
  28. package/dist/client/assets/{SearchLg-B3gS4kWN.js → SearchLg-Bg0bWoci.js} +1 -1
  29. package/dist/client/assets/{SearchMd-BZ1Y71i2.js → SearchMd-B5LTpCxn.js} +1 -1
  30. package/dist/client/assets/{Settings02-BcQyGyu9.js → Settings02-DQ6Qx_Qo.js} +1 -1
  31. package/dist/client/assets/{Share07-DIhxLNGx.js → Share07-Di11XO-1.js} +1 -1
  32. package/dist/client/assets/{Shield01-DB8XSVTV.js → Shield01-FnU_LRxr.js} +1 -1
  33. package/dist/client/assets/{Stars01-IzY6d8VU.js → Stars01-C8fjQPly.js} +1 -1
  34. package/dist/client/assets/{Stars02-Cz47eNz-.js → Stars02-BC82QMl0.js} +1 -1
  35. package/dist/client/assets/{Sun-CNYejWAL.js → Sun-CL5Lwimd.js} +1 -1
  36. package/dist/client/assets/{SwitchHorizontal01-bP1mes16.js → SwitchHorizontal01-DJAL0oew.js} +1 -1
  37. package/dist/client/assets/{Tool01-608qC2KR.js → Tool01-kIIhzZhw.js} +1 -1
  38. package/dist/client/assets/{Tool02-CImDf_cD.js → Tool02-xsTmH7TW.js} +1 -1
  39. package/dist/client/assets/{Trash01-B6-Mcx5n.js → Trash01-CISu7ukT.js} +1 -1
  40. package/dist/client/assets/{TrendUp01-DC_U3qAk.js → TrendUp01-D54j7eRb.js} +1 -1
  41. package/dist/client/assets/{Upload01-CcN81ZcJ.js → Upload01-BBFWsedg.js} +1 -1
  42. package/dist/client/assets/{User01-BNjbzZH7.js → User01-Da-P04pG.js} +1 -1
  43. package/dist/client/assets/{UserSquare-WXWFQ7Pu.js → UserSquare-DgUtDej9.js} +1 -1
  44. package/dist/client/assets/{Users01-Bzp2QqRe.js → Users01-CXfWV5oU.js} +1 -1
  45. package/dist/client/assets/{Users03-Ctus-7pc.js → Users03-BH_DGEIm.js} +1 -1
  46. package/dist/client/assets/{XCircle-B-WftZC1.js → XCircle-qOGRhnhp.js} +1 -1
  47. package/dist/client/assets/{XClose-BZHMN2Xh.js → XClose-DL2O4uTC.js} +1 -1
  48. package/dist/client/assets/{YAxis-BDOdDm_C.js → YAxis-DyE5fkIu.js} +1 -1
  49. package/dist/client/assets/{Zap-BjITv_Rj.js → Zap-DYtDBHNd.js} +1 -1
  50. package/dist/client/assets/{ZapSquare-DoayxDNO.js → ZapSquare-CGgQRKSq.js} +1 -1
  51. package/dist/client/assets/{access-gate-CZkUkxpk.js → access-gate-bxw6GJBM.js} +1 -1
  52. package/dist/client/assets/{agent-icon-BZlqEWCs.js → agent-icon-RO_lY7mQ.js} +1 -1
  53. package/dist/client/assets/{agents-list-B6guATwV.js → agents-list-DEVfy7bO.js} +1 -1
  54. package/dist/client/assets/{ai-providers-CWRcSIq0.js → ai-providers-_bAZfhEo.js} +1 -1
  55. package/dist/client/assets/{alert-Dl1cHjd8.js → alert-DS_4c1g8.js} +1 -1
  56. package/dist/client/assets/{alert-dialog-DieVyFvy.js → alert-dialog-B3eneGBp.js} +1 -1
  57. package/dist/client/assets/{api-keys-Bg2hh3Rv.js → api-keys-Cn1MTRia.js} +1 -1
  58. package/dist/client/assets/{app-editor-BPtjctOL.js → app-editor-CwurZ13A.js} +1 -1
  59. package/dist/client/assets/{auth-l2vFbToH.js → auth-DeQHSbj0.js} +1 -1
  60. package/dist/client/assets/{auth-catchall-CCvMLLHF.js → auth-catchall-BWmr3lOz.js} +1 -1
  61. package/dist/client/assets/{auth-entry-B1nKUQFx.js → auth-entry-B3nspDeT.js} +1 -1
  62. package/dist/client/assets/{auth-split-layout-o92RsRKM.js → auth-split-layout-DH603Yyd.js} +1 -1
  63. package/dist/client/assets/{authenticate-and-persist-oauth-BCnFzvDj.js → authenticate-and-persist-oauth-DaDpqCGj.js} +1 -1
  64. package/dist/client/assets/{automation-list-row-C4B6-jz7.js → automation-list-row-GJXCE3Ep.js} +1 -1
  65. package/dist/client/assets/{automation-runs-CJLELb-W.js → automation-runs-CggJDo1C.js} +1 -1
  66. package/dist/client/assets/{automations-CfzAa8QR.js → automations-BU9EygDS.js} +1 -1
  67. package/dist/client/assets/{avatar-BVPTvNbx.js → avatar-t8xMECgD.js} +1 -1
  68. package/dist/client/assets/{badge-DEYh3lsF.js → badge-3w-z2q_R.js} +1 -1
  69. package/dist/client/assets/{block-document-gaml5wK8.js → block-document-DBAOy7rM.js} +1 -1
  70. package/dist/client/assets/{buckets-BJ47OYuO.js → buckets-C6KeDFl_.js} +1 -1
  71. package/dist/client/assets/{bulk-category-panel-Cm6C4eoa.js → bulk-category-panel-q0gXcv7r.js} +1 -1
  72. package/dist/client/assets/{capability-load-error-BKa8uWRq.js → capability-load-error-CrnDuhrP.js} +1 -1
  73. package/dist/client/assets/{cards-IFv2L4Nf.js → cards-B116B10c.js} +1 -1
  74. package/dist/client/assets/{category-editor-CPMoUyAF.js → category-editor-J3ebsbj7.js} +1 -1
  75. package/dist/client/assets/{chart-BOOLNfyi.js → chart-B-JWflUf.js} +1 -1
  76. package/dist/client/assets/{chat-context-7iAwPT3G.js → chat-context-DzbskOkq.js} +1 -1
  77. package/dist/client/assets/{checkbox-CSF2Cuv9.js → checkbox-CTK-987j.js} +1 -1
  78. package/dist/client/assets/{choose-editor-CEWpR2U8.js → choose-editor-BiIbar5e.js} +1 -1
  79. package/dist/client/assets/{cli-auth-success-BHwe0edD.js → cli-auth-success-CWZIlaAu.js} +1 -1
  80. package/dist/client/assets/{collection-detail-D5SqWoeM.js → collection-detail-DosMB9QP.js} +1 -1
  81. package/dist/client/assets/{collection-display-button-Cb9GLwoh.js → collection-display-button-RvJk_3kM.js} +1 -1
  82. package/dist/client/assets/{collection-search-C_4JoVLE.js → collection-search-TDcC3qnQ.js} +1 -1
  83. package/dist/client/assets/{collection-table-wrapper-CsvcieMv.js → collection-table-wrapper-AH8YyxhL.js} +1 -1
  84. package/dist/client/assets/{collection-tabs-Byz-R9Xv.js → collection-tabs-mTx4dyj7.js} +1 -1
  85. package/dist/client/assets/{command-PhBctDlr.js → command-BmhGhCGW.js} +1 -1
  86. package/dist/client/assets/{commerce-onboarding-BKT7nKAv.js → commerce-onboarding-DDSFZSw4.js} +1 -1
  87. package/dist/client/assets/{connect-BHN1T4mw.js → connect-BRqyUKct.js} +1 -1
  88. package/dist/client/assets/{connection-CXCtq8kL.js → connection-DPcqqUpI.js} +1 -1
  89. package/dist/client/assets/{connection-card-BvZWo4Ct.js → connection-card-Dg2tFKYT.js} +1 -1
  90. package/dist/client/assets/{connection-detail-Bq3kC0_z.js → connection-detail-BecsUn3M.js} +1 -1
  91. package/dist/client/assets/{connection-form-helpers-_tImHUq7.js → connection-form-helpers-BiSqyE70.js} +1 -1
  92. package/dist/client/assets/{connections-xyA1LZD9.js → connections-BRZcZzvE.js} +1 -1
  93. package/dist/client/assets/{decopilot-sse-pool-CC04GESB.js → decopilot-sse-pool-Cn3-H_-J.js} +1 -1
  94. package/dist/client/assets/{dialog-B-ID22Cs.js → dialog-CaTBZV_d.js} +1 -1
  95. package/dist/client/assets/{domain-settings-h0V-eOyh.js → domain-settings-DSiUt4s6.js} +1 -1
  96. package/dist/client/assets/{drawer-DDewttks.js → drawer-CMaDObPV.js} +1 -1
  97. package/dist/client/assets/{dropdown-menu-C61Vc3bv.js → dropdown-menu-BRNNpXcy.js} +1 -1
  98. package/dist/client/assets/{empty-state-Cspsdv4s.js → empty-state-Dx5RvteD.js} +1 -1
  99. package/dist/client/assets/{extract-connection-data-CY09tW3u.js → extract-connection-data-DDL06q4h.js} +1 -1
  100. package/dist/client/assets/{file-explorer-CwTbpCaE.js → file-explorer-JPclp_ri.js} +1 -1
  101. package/dist/client/assets/{file-type-icon-5cm6BFBk.js → file-type-icon-C2ALTS96.js} +1 -1
  102. package/dist/client/assets/{form-B8ZV29XJ.js → form-C1Z3Pgy9.js} +1 -1
  103. package/dist/client/assets/{general-BaGgu1ir.js → general-wKChpaKt.js} +1 -1
  104. package/dist/client/assets/{github-repo-picker-CXARLCfD.js → github-repo-picker-CghdTD4a.js} +1 -1
  105. package/dist/client/assets/{hooks-CQd7LSxz.js → hooks-BjFStmIb.js} +1 -1
  106. package/dist/client/assets/{index-BzQ1UaLh.js → index-Bv7SAPra.js} +1 -1
  107. package/dist/client/assets/{index-fpI5oh87.js → index-C-3fd8Ck.js} +1 -1
  108. package/dist/client/assets/{index-CdxO332O.js → index-C5dcfsKv.js} +1 -1
  109. package/dist/client/assets/{index-CwkuFBFQ.js → index-CErG4sP_.js} +5 -5
  110. package/dist/client/assets/{index-CnYLyGn-.js → index-DLiSt-zY.js} +3 -3
  111. package/dist/client/assets/{index-BtVQiJcj.js → index-DXHENisy.js} +1 -1
  112. package/dist/client/assets/{index-DR8Vc_mk.js → index-DnfUq0Re.js} +1 -1
  113. package/dist/client/assets/{index-Boj6xTF0.js → index-_2waRVYp.js} +1 -1
  114. package/dist/client/assets/{index-BPU5LFrU.js → index-k4eNrclM.js} +1 -1
  115. package/dist/client/assets/{index-redirect-aEmZpI2G.js → index-redirect-Q-uzQ1ZR.js} +1 -1
  116. package/dist/client/assets/{index-sHd8ysXt.js → index-xiyjF2ia.js} +1 -1
  117. package/dist/client/assets/{infra-billing-4czTCETi.js → infra-billing-C8apIzey.js} +1 -1
  118. package/dist/client/assets/{input-qp3ehySX.js → input-CY_6SiUS.js} +1 -1
  119. package/dist/client/assets/{integration-icon-C3MPCew2.js → integration-icon-CGhJSgDA.js} +1 -1
  120. package/dist/client/assets/{invite-member-dialog-DcyJeLZv.js → invite-member-dialog-B2p8Tm3P.js} +1 -1
  121. package/dist/client/assets/{label-BXCL6ojw.js → label-CIfNh86q.js} +1 -1
  122. package/dist/client/assets/{layout-CNIammK6.js → layout-BCjUdMcW.js} +1 -1
  123. package/dist/client/assets/{login-QoD-2GU_.js → login-Dy6oLdg_.js} +1 -1
  124. package/dist/client/assets/{mcp-oauth-CJVrERob.js → mcp-oauth-DImoLDws.js} +1 -1
  125. package/dist/client/assets/{members-g6FPYGCw.js → members-BeZb8rdR.js} +1 -1
  126. package/dist/client/assets/{monaco-editor-BtjgavWD.js → monaco-editor-ZUjofCql.js} +1 -1
  127. package/dist/client/assets/{monitoring-stats-row-B37Bndma.js → monitoring-stats-row-CwawUUDQ.js} +1 -1
  128. package/dist/client/assets/{multi-select-axzkTy1R.js → multi-select-BasuLjyg.js} +1 -1
  129. package/dist/client/assets/{oauth-callback-DlF18PGp.js → oauth-callback-CkV2aSCc.js} +1 -1
  130. package/dist/client/assets/{oauth-callback-ai-provider-DG9PFy4X.js → oauth-callback-ai-provider-DQzrQ2ZW.js} +1 -1
  131. package/dist/client/assets/{onboarding-C9_kHI8O.js → onboarding-ZjEXHRqc.js} +1 -1
  132. package/dist/client/assets/{org-layout-DlLPSCgV.js → org-layout-BFuYj0lq.js} +1 -1
  133. package/dist/client/assets/{organization-choice-C4BabO4m.js → organization-choice-CNLElHVj.js} +1 -1
  134. package/dist/client/assets/{orgs-Boi_VZPS.js → orgs-DY4SjhQN.js} +1 -1
  135. package/dist/client/assets/{page-seo-form-C_igOzjA.js → page-seo-form-DwRi_S8N.js} +1 -1
  136. package/dist/client/assets/{popover-DVTivA6P.js → popover-lX6wGPom.js} +1 -1
  137. package/dist/client/assets/{post-editor-CDQG92cb.js → post-editor-CHtqUuEA.js} +1 -1
  138. package/dist/client/assets/{primitives-NHzWIAMz.js → primitives-BAE6y0ZV.js} +1 -1
  139. package/dist/client/assets/{profile-P9igbUmP.js → profile-CMoih80z.js} +1 -1
  140. package/dist/client/assets/{project-app-view-BUNka1gD.js → project-app-view-DZkY6r-W.js} +1 -1
  141. package/dist/client/assets/record-editor-BHVAEIpq.js +1 -0
  142. package/dist/client/assets/{redirect-editor-Cp2UnnVs.js → redirect-editor-DfoPFWBF.js} +1 -1
  143. package/dist/client/assets/registry-C7_sqj0C.js +2 -0
  144. package/dist/client/assets/{registry-layout-YokbnQXr.js → registry-layout-7bL7SAGE.js} +1 -1
  145. package/dist/client/assets/{reports-Bk1CY25T.js → reports-BkJ5gkYi.js} +1 -1
  146. package/dist/client/assets/{require-capability-3H_8gER8.js → require-capability-CLTXzK08.js} +1 -1
  147. package/dist/client/assets/{required-auth-layout-BtHCFtLD.js → required-auth-layout-v7tDA1sl.js} +1 -1
  148. package/dist/client/assets/{reset-password-ByDzF-nD.js → reset-password-BKBz_Aon.js} +1 -1
  149. package/dist/client/assets/{roles-1_HP5Ld_.js → roles-qVXSbIQj.js} +1 -1
  150. package/dist/client/assets/{search-input-CGF3h338.js → search-input-4YJ4nTbO.js} +1 -1
  151. package/dist/client/assets/{secrets-BdZXOMk_.js → secrets-D-r8Fhcp.js} +1 -1
  152. package/dist/client/assets/{sections-editor-YW9-n1CT.js → sections-editor-DCdYW5bN.js} +1 -1
  153. package/dist/client/assets/{select-Bjeqqlcd.js → select-BwLC9-0c.js} +1 -1
  154. package/dist/client/assets/{select-model-B359W5Bx.js → select-model-DpD5UXaD.js} +1 -1
  155. package/dist/client/assets/{self-tool-result-GErEikCG.js → self-tool-result-BeRzbQuP.js} +1 -1
  156. package/dist/client/assets/{seo-editor-CTHkKYvH.js → seo-editor-BPRdm9p8.js} +1 -1
  157. package/dist/client/assets/{settings-layout-D-gi753K.js → settings-layout-DTqIuCHt.js} +1 -1
  158. package/dist/client/assets/{shell-controls-RJtn2iG7.js → shell-controls-vM7eX0ni.js} +1 -1
  159. package/dist/client/assets/{shell-layout-KdkyTZyX.js → shell-layout-DEMtIHgw.js} +1 -1
  160. package/dist/client/assets/{spinner-DTq44mnN.js → spinner-Dpvz3p80.js} +1 -1
  161. package/dist/client/assets/{sso-DxROB4QD.js → sso-BxyVr7dm.js} +1 -1
  162. package/dist/client/assets/{store-CmnMk0_-.js → store-CEc4rXka.js} +1 -1
  163. package/dist/client/assets/store-registry-DVE1XJgw.js +2 -0
  164. package/dist/client/assets/{switch-D9HqZr1l.js → switch-DBiih54-.js} +1 -1
  165. package/dist/client/assets/{synced-repos-DXUWWl6n.js → synced-repos-DL_Fe1n5.js} +1 -1
  166. package/dist/client/assets/{tab-id-iqCdxrRx.js → tab-id-DrwxksV4.js} +1 -1
  167. package/dist/client/assets/{table-CfArayQA.js → table-BM3FdIaA.js} +1 -1
  168. package/dist/client/assets/{tabs-CLUX1p4K.js → tabs-C49oMc7W.js} +1 -1
  169. package/dist/client/assets/{task-key-C9Dn17kM.js → task-key-2XocQivt.js} +1 -1
  170. package/dist/client/assets/{tasks-D23lQIny.js → tasks-DIZudm73.js} +1 -1
  171. package/dist/client/assets/{textarea-8Vs83jae.js → textarea-BYMb5MM5.js} +1 -1
  172. package/dist/client/assets/{toggle-group-DElMB87x.js → toggle-group-DmafBxKV.js} +1 -1
  173. package/dist/client/assets/{toolbar-BqmhHIRj.js → toolbar-BOPj8b0I.js} +1 -1
  174. package/dist/client/assets/{track-XAII_vaJ.js → track-Fq5TqDMp.js} +1 -1
  175. package/dist/client/assets/{types-DXPv_W15.js → types-7z_oxg9w.js} +1 -1
  176. package/dist/client/assets/{use-ai-providers-sNdksjc6.js → use-ai-providers-Ck06PFGE.js} +1 -1
  177. package/dist/client/assets/{use-api-keys-DOyyXCpq.js → use-api-keys-yafBkhyf.js} +1 -1
  178. package/dist/client/assets/{use-automations-CKoogGBL.js → use-automations-BrFXzBSZ.js} +1 -1
  179. package/dist/client/assets/{use-autosave-CcLrWXDx.js → use-autosave-DzyEelZn.js} +1 -1
  180. package/dist/client/assets/{use-clock-tick-B2Op8Okt.js → use-clock-tick-anNRVc0o.js} +1 -1
  181. package/dist/client/assets/{use-commerce-diagnostic-DUs_hpu3.js → use-commerce-diagnostic-spCFF13q.js} +1 -1
  182. package/dist/client/assets/{use-connection-DaPmwemg.js → use-connection-r6ziU6lR.js} +1 -1
  183. package/dist/client/assets/{use-copy-BpzzooXQ.js → use-copy-BeCWcJQD.js} +1 -1
  184. package/dist/client/assets/{use-create-virtual-mcp-kO6OtL6-.js → use-create-virtual-mcp-CRJnDKdI.js} +1 -1
  185. package/dist/client/assets/{use-debounced-autosave-DcWuWQPO.js → use-debounced-autosave-B4C2TeP_.js} +1 -1
  186. package/dist/client/assets/{use-debounced-value-DxI7im82.js → use-debounced-value-cAUV3o-a.js} +1 -1
  187. package/dist/client/assets/{use-decopilot-events-CfYLe3Pe.js → use-decopilot-events-DZOEgHZF.js} +1 -1
  188. package/dist/client/assets/{use-delete-connection-DsFuEpxs.js → use-delete-connection-Dkclv4mQ.js} +1 -1
  189. package/dist/client/assets/{use-deployment-admin-C5-hphmv.js → use-deployment-admin-BNiRhHXk.js} +1 -1
  190. package/dist/client/assets/{use-file-configs-CdHPC7eE.js → use-file-configs-DGfh8vOd.js} +1 -1
  191. package/dist/client/assets/{use-infinite-scroll-D5j2GRi7.js → use-infinite-scroll-DsDG7oFh.js} +1 -1
  192. package/dist/client/assets/{use-join-requests-XIkHHOUf.js → use-join-requests-B_O58DBS.js} +1 -1
  193. package/dist/client/assets/{use-mcp-client-DzN7JEpg.js → use-mcp-client-BsB3UQx0.js} +1 -1
  194. package/dist/client/assets/{use-mcp-tools-CSiGzZQj.js → use-mcp-tools-D7WtkO_a.js} +1 -1
  195. package/dist/client/assets/{use-members-Sb4pALNR.js → use-members-DZPpmeBy.js} +1 -1
  196. package/dist/client/assets/{use-navigate-to-agent-gvKnIcYK.js → use-navigate-to-agent-D_YtZ8Nf.js} +1 -1
  197. package/dist/client/assets/{use-org-auth-client-CEPLX-2G.js → use-org-auth-client-CR2NXIGs.js} +1 -1
  198. package/dist/client/assets/{use-org-repo-syncs-D4k95sQf.js → use-org-repo-syncs-B1gYKpB8.js} +1 -1
  199. package/dist/client/assets/{use-org-sso-BKiVpFa_.js → use-org-sso-BhfC5bai.js} +1 -1
  200. package/dist/client/assets/{use-organization-roles-B9K2v2l-.js → use-organization-roles-g149SJyR.js} +1 -1
  201. package/dist/client/assets/{use-organization-settings-DrbYIXtD.js → use-organization-settings-WfyIMnA9.js} +1 -1
  202. package/dist/client/assets/{use-registry-connections-A3Vut8TY.js → use-registry-connections-WDHdHLId.js} +1 -1
  203. package/dist/client/assets/{use-secrets-DOHmOib2.js → use-secrets-MMdltV8V.js} +1 -1
  204. package/dist/client/assets/{use-section-preview-base-Dy4cC8tB.js → use-section-preview-base-WS8WDR0j.js} +1 -1
  205. package/dist/client/assets/{use-status-sounds-Ch-EIcsp.js → use-status-sounds-IuSNJ3uy.js} +1 -1
  206. package/dist/client/assets/{use-tags-BxVhr7X9.js → use-tags-DN3Y1Fjc.js} +1 -1
  207. package/dist/client/assets/{use-view-mode-B2XyAI61.js → use-view-mode-Cecw-Bk2.js} +1 -1
  208. package/dist/client/assets/{use-virtual-mcp-DP6rt-vw.js → use-virtual-mcp-DkibxhFn.js} +1 -1
  209. package/dist/client/assets/useInfiniteQuery-Tdf3vSzC.js +1 -0
  210. package/dist/client/assets/useSuspenseInfiniteQuery-Dgd9ebpu.js +1 -0
  211. package/dist/client/assets/{users-DlEIf6u2.js → users-3pVvJjVm.js} +1 -1
  212. package/dist/client/assets/{variant-calendar-BPCu9T7q.js → variant-calendar-Na_TE_QI.js} +1 -1
  213. package/dist/client/assets/{view-mode-toggle-BQvdN-nf.js → view-mode-toggle-3Ft6ZtrM.js} +1 -1
  214. package/dist/client/index.html +1 -1
  215. package/dist/server/cli.js +1 -1
  216. package/dist/server/server.js +1 -1
  217. package/package.json +1 -1
  218. package/dist/client/assets/record-editor-Bq864Ksp.js +0 -1
  219. package/dist/client/assets/registry-DL1c2zEA.js +0 -2
  220. package/dist/client/assets/store-registry-BjwozchF.js +0 -2
  221. package/dist/client/assets/useInfiniteQuery-CaafA7d_.js +0 -1
  222. package/dist/client/assets/useSuspenseInfiniteQuery-D12U11A7.js +0 -1
@@ -50,7 +50,7 @@
50
50
  <meta name="twitter:description" content="Hire specialized agents, give them access to your tools, and let them deliver real projects — with planning, verification, and observability built in." />
51
51
  <meta name="twitter:image" content="/og-image.png" />
52
52
  <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
53
- <script type="module" crossorigin src="/assets/index-CnYLyGn-.js"></script>
53
+ <script type="module" crossorigin src="/assets/index-DLiSt-zY.js"></script>
54
54
  <link rel="stylesheet" crossorigin href="/assets/index-DZ9B9lIh.css">
55
55
  </head>
56
56
  <body>
@@ -1396,7 +1396,7 @@ Usage: deco services <up|down|status>`),process.exit(1)}}var di1=L(()=>{kf()});f
1396
1396
  `.execute($);if(Number(W.rows[0]?.cnt)===0){console.warn(`Failed to migrate ${J}/${K}, keeping in old table`);continue}}await Qy`
1397
1397
  DELETE FROM kysely_migration WHERE name = ${X}
1398
1398
  `.execute($)}}async function Nr1($){await gt6($),await ht6($);let Z=new Hr1({db:$,provider:{getMigrations:()=>Promise.resolve($n0)}}),{error:X,results:Q}=await Z.migrateToLatest(),Y=0;if(Q?.forEach((G)=>{if(G.status==="Success")Y++;else if(G.status==="Error")console.error(`Failed to execute migration "${G.migrationName}"`)}),X)throw console.error("Failed to migrate"),console.error(X),X;return Y}async function ut6($){let{keepOpen:Z=!1,database:X,skipBetterAuth:Q=!1}=$??{},Y="skipped";if(!Q&&!X)Y=await jl0();let G=X??W6(),J=async()=>{if(!Z&&!X)await cB(G).catch((K)=>{console.warn("Warning: Error closing database:",K)})};try{let K=await Nr1(G.db);return await J(),{betterAuth:Y,kysely:K}}catch(K){throw await J(),K}}async function ct6(){let $=W6(),Z=new Hr1({db:$.db,provider:{getMigrations:()=>Promise.resolve($n0)}}),{error:X,results:Q}=await Z.migrateDown();if(Q?.forEach((Y)=>{if(Y.status==="Success")console.log(`\u2705 Migration "${Y.migrationName}" rolled back successfully`);else if(Y.status==="Error")console.error(`\u274C Failed to rollback migration "${Y.migrationName}"`)}),X)throw console.error("Failed to rollback migration"),console.error(X),X}var Br1=L(()=>{Wr1();zl0();GX()});async function nZ0($){let Z={...process.env},X=y80($,Z);console.log(Tw1(X.settings.encryptionKey));let Q=X.settings.betterAuthSecret||(X.settings.localMode?jp1(X.settings.dataDir):""),{ensureServices:Y}=await Promise.resolve().then(() => ($Z0(),e90)),{outputs:G,services:J}=await Y({home:X.settings.dataDir,externalDatabaseUrl:X.externalDatabaseUrl,externalNatsUrl:X.externalNatsUrl});if(!X.skipMigrations){let{migrateBetterAuth:W}=await Promise.resolve().then(() => (zl0(),Pp1));await W(G.databaseUrl);let{createDatabase:H}=await Promise.resolve().then(() => (GX(),gn1)),{migrateToLatest:F}=await Promise.resolve().then(() => (Br1(),Ur1)),N=H(G.databaseUrl);await F({keepOpen:!0,database:N,skipBetterAuth:!0})}let K={...X.settings,betterAuthSecret:Q,databaseUrl:G.databaseUrl,natsUrls:G.natsUrls,...G.s3?{s3Endpoint:G.s3.endpoint,s3Bucket:G.s3.bucket,s3AccessKeyId:G.s3.accessKeyId,s3SecretAccessKey:G.s3.secretAccessKey,s3ForcePathStyle:G.s3.forcePathStyle}:{},...G.natsTunnel?{natsPublicUrl:G.natsTunnel.publicUrl,natsAccountJwt:G.natsTunnel.accountJwt,natsAccountSigningKey:G.natsTunnel.accountSigningKey,natsOperatorJwt:G.natsTunnel.operatorJwt,natsTunnelPublicEnabled:!0,natsCredsPath:G.natsTunnel.credsPath}:{}};return mi1(K),{settings:K,services:J.map((W)=>({name:W.name==="PostgreSQL"?"Postgres":W.name,port:W.port})),managedServiceNames:J.filter((W)=>W.owner==="managed").map((W)=>W.name)}}var Zn0=L(()=>{kf();zp1();_8()});var wr1={};N0(wr1,{updateService:()=>qE,subscribeCliState:()=>Yn0,setTuiConsoleIntercepted:()=>pZ0,setServerUrl:()=>oi,setMigrationsDone:()=>ti,setDevMode:()=>mt6,resetCliStateForTests:()=>lt6,isTuiConsoleIntercepted:()=>tZ0,getCliState:()=>Qn0,addLogEntry:()=>nB});function Or1(){return{services:[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}],migrationsStatus:"pending",serverUrl:null,logs:[]}}function lt6(){nQ=Or1()}function dt6(){return[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}]}function pi(){for(let $ of Xn0)$()}function Qn0(){return nQ}function Yn0($){return Xn0.add($),()=>Xn0.delete($)}function qE($){nQ={...nQ,services:nQ.services.map((Z)=>Z.name===$.name?$:Z)},pi()}function ti(){nQ={...nQ,migrationsStatus:"done"},pi()}function oi($){nQ={...nQ,serverUrl:$},pi()}function nB($){let Z=[...nQ.logs,$];nQ={...nQ,logs:Z.length>500?Z.slice(-500):Z},pi()}function mt6(){nQ={...nQ,services:[...dt6(),{name:"API",status:"pending",port:0},{name:"Vite",status:"pending",port:0}]},pi()}function pZ0($){Lr1=$}function tZ0(){return Lr1}var nQ,Xn0,Lr1=!1;var ME=L(()=>{nQ=Or1();Xn0=new Set});import{createServer as Dr1}from"net";function it6($){return new Promise((Z)=>{let X=Dr1();X.once("error",()=>Z(!1)),X.listen($,"0.0.0.0",()=>{X.close(()=>Z(!0))})})}async function ri($){if(await it6($))return $;let Z=await new Promise((X,Q)=>{let Y=Dr1();Y.once("error",Q),Y.listen(0,"0.0.0.0",()=>{let G=Y.address(),J=typeof G==="object"&&G?G.port:0;Y.close(()=>X(J))})});return console.warn(`Port ${$} is in use, using port ${Z} instead.`),Z}var Gn0=()=>{};function ai($){return $.replace(/\x1b\[[0-9;]*m/g,"")}var Jn0={};N0(Jn0,{startDevServer:()=>pt6});import{join as nt6}from"path";function Er1($){let Z=$.getReader(),X=new TextDecoder,Q="";function Y(){let G=Q.split(`
1399
- `);Q=G.pop()??"";for(let J of G){let K=ai(J).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;nB({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:K})}}(async()=>{for(;;){let{done:G,value:J}=await Z.read();if(G)break;Q+=X.decode(J,{stream:!0}),Y()}if(Q.trim()){let G=ai(Q).replace(/^\[\d+\]\s*/,"").trim();if(G)nB({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:G})}})()}async function pt6($){let{baseUrl:Z,noTui:X}=$,Q=process.env.HOST==="0.0.0.0"&&Boolean(process.env.PORT),Y=Q?process.env.PORT:$.vitePort,G=Z||`http://localhost:${Y}`,J=Q?await ri(Number(Y)+1):await ri(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await nZ0({port:String(J),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let w of W)qE({name:w.name,status:"ready",port:w.port});ti();let F=nt6(import.meta.dir,"..","..","..","..",".."),N=X===!0,U=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:G,DECOCMS_LOCAL_MODE:String(K.localMode),DECOCMS_HOME:K.dataDir,DATA_DIR:K.dataDir,DECO_CLI:"1",...K.betterAuthSecret?{BETTER_AUTH_SECRET:K.betterAuthSecret}:{},...K.s3Endpoint?{S3_ENDPOINT:K.s3Endpoint,S3_BUCKET:K.s3Bucket??"",S3_ACCESS_KEY_ID:K.s3AccessKeyId??"",S3_SECRET_ACCESS_KEY:K.s3SecretAccessKey??"",S3_FORCE_PATH_STYLE:String(K.s3ForcePathStyle)}:{},...K.natsPublicUrl&&K.natsAccountJwt&&K.natsAccountSigningKey?{NATS_PUBLIC_URL:K.natsPublicUrl,NATS_ACCOUNT_JWT:K.natsAccountJwt,NATS_ACCOUNT_SIGNING_KEY:K.natsAccountSigningKey,NATS_OPERATOR_JWT:K.natsOperatorJwt??"",NATS_TUNNEL_PUBLIC_ENABLED:"true",...K.natsCredsPath?{NATS_CREDS:K.natsCredsPath}:{}}:{}},stdio:["inherit",N?"inherit":"pipe",N?"inherit":"pipe"]});if(!N)Er1(U.stdout),Er1(U.stderr);oi(G),qE({name:"Vite",status:"ready",port:Number(Y)}),qE({name:"API",status:"ready",port:Number(K.port)});let O=async(w)=>{if(U.kill(w),await U.exited,H.length>0){let{stopServices:D}=await Promise.resolve().then(() => ($Z0(),e90));await D(K.dataDir)}};return process.on("SIGINT",()=>O("SIGINT")),process.on("SIGTERM",()=>O("SIGTERM")),{port:Number(Y),process:U}}var Kn0=L(()=>{Zn0();ME();Gn0()});var oZ0;var Wn0=L(()=>{oZ0={name:"decocms",version:"4.255.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","@nats-io/jwt":"0.0.10-5","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});import{Box as ot6,Text as jr1}from"ink";import{jsx as rt6,jsxs as zr1}from"react/jsx-runtime";function Pr1({version:$}){return zr1(ot6,{flexDirection:"column",marginTop:1,children:[TZ0.map((Z,X)=>rt6(jr1,{color:RZ0[X],children:Z},X)),zr1(jr1,{dimColor:!0,children:[" v",$]})]})}var Ar1=L(()=>{bi()});import{Box as VE,Text as pB}from"ink";import{Spinner as at6}from"@inkjs/ui";import{jsx as eY,jsxs as Yy}from"react/jsx-runtime";function Tr1({status:$}){if($==="pending")return eY(at6,{label:""});return eY(pB,{color:"green",children:"\u2713"})}function st6($){return`${$.name}: ${$.port||"...."}`}function Rr1({services:$,migrationsStatus:Z,home:X,serverUrl:Q}){return Yy(VE,{flexDirection:"column",paddingBottom:1,children:[eY(Pr1,{version:oZ0.version}),eY(VE,{marginBottom:1,children:eY(pB,{dimColor:!0,children:"\u2500".repeat(80)})}),eY(VE,{children:Yy(pB,{dimColor:!0,children:["Home: ",X]})}),Yy(VE,{gap:2,children:[$.map((Y)=>Yy(VE,{gap:1,children:[eY(pB,{children:st6(Y)}),eY(Tr1,{status:Y.status})]},Y.name)),Yy(VE,{gap:1,children:[eY(pB,{children:"Migrations"}),eY(Tr1,{status:Z})]})]}),eY(VE,{children:Q?Yy(pB,{children:["Open in browser: ",eY(pB,{color:"cyan",children:Q})]}):eY(pB,{dimColor:!0,children:"Starting..."})})]})}var Ir1=L(()=>{Wn0();Ar1()});import{Box as et6,Text as si}from"ink";import{jsx as Hn0,jsxs as Fn0}from"react/jsx-runtime";function $o6($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function qr1({logs:$}){return Hn0(et6,{flexDirection:"column",children:$.map((Z,X)=>{if(Z.rawLine)return Hn0(si,{dimColor:!0,children:Z.rawLine},X);let Q=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return Fn0(si,{children:[Fn0(si,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),Hn0(si,{color:$o6(Z.status),children:Z.status}),Fn0(si,{dimColor:!0,children:[" ",Q.padStart(8)]})]},X)})})}var Mr1=()=>{};var Nn0={};N0(Nn0,{App:()=>Qo6});import{Box as Zo6}from"ink";import{useSyncExternalStore as Xo6}from"react";import{jsx as Vr1,jsxs as Yo6}from"react/jsx-runtime";function Qo6({home:$}){let Z=Xo6(Yn0,Qn0);return Yo6(Zo6,{flexDirection:"column",children:[Vr1(Rr1,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),Vr1(qr1,{logs:Z.logs})]})}var Un0=L(()=>{Ir1();Mr1();ME()});var uJ="thread-gate",QN="decopilot-hosted-harness",YN="decopilot-hosted-harness-sandboxed",U3="automations",tB="background-tools",kE="task-board-github-reads",SE="jira-push";var kr1="7";function Sr1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:kr1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var Cr1=()=>{};function Go6(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function Bn0($,Z){for(let X=0;X<$.length;X++){let Q=$[X];if(Q===void 0)continue;if(Q===Z)return $[X+1];if(Q.startsWith(`${Z}=`))return Q.slice(Z.length+1)}return}function _r1(){let $=Go6();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:Bn0($,"--cpu-prof-dir")??process.cwd(),name:Bn0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(Bn0($,"--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 vr1(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let X=AE();if(!X)return;let Q={};try{let{heapStats:Y}=await import("bun:jsc"),G=Y(),J=Object.entries(G.objectTypeCounts).sort((K,W)=>W[1]-K[1]).slice(0,20);Q={objectCount:G.objectCount,heapSize:G.heapSize,top:Object.fromEntries(J)}}catch{}console.log(JSON.stringify({msg:"heap-watch",ts:new Date().toISOString(),uptimeS:Math.round(process.uptime()),rss:X.rss,heapUsed:X.heapUsed,heapTotal:X.heapTotal,external:X.external,arrayBuffers:X.arrayBuffers,...Q}))};return Z().catch(()=>{}),rZ0=setInterval(()=>void Z().catch(()=>{}),$),rZ0.unref?.(),process.on("SIGUSR2",()=>{try{let X=Bun.generateHeapSnapshot("v8"),Q=typeof X==="string"?X:JSON.stringify(X),Y=`/tmp/heap-${process.pid}-${Date.now()}.heapsnapshot`;Bun.write(Y,Q),console.log(JSON.stringify({msg:"heap-snapshot-written",path:Y}))}catch(X){console.error("[heap-watch] snapshot failed:",X)}}),()=>{if(rZ0)clearInterval(rZ0)}}var rZ0;var xr1=()=>{};import*as Jo6 from"bun:jsc";function fr1(){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{Ko6()}catch(G){return console.error("[stall-watchdog] failed to start sampling profiler:",G),()=>{}}let X,Q=performance.now()+Z,Y=()=>{let G=performance.now(),J=G-Q;Q=G+Z;let K=[];try{K=Wo6()?.traces??[]}catch{}if(J>$&&K.length>0){let W=new Map;for(let F of K){let N=F.frames.find((O)=>O.sourceURL&&!/Unknown Executable/.test(O.category??""))??F.frames[0];if(!N)continue;let U=(N.sourceURL??"?").replace(/^.*\/node_modules\//,"node_modules/"),B=`${N.name??"?"} @ ${U}:${N.line??"?"}`;W.set(B,(W.get(B)??0)+1)}let H=[...W.entries()].sort((F,N)=>N[1]-F[1]).slice(0,8).map(([F,N])=>({frame:F,count:N}));console.warn(JSON.stringify({msg:"stall-stack",ts:new Date().toISOString(),lagMs:Math.round(J),samplesInWindow:K.length,top:H}))}X=setTimeout(Y,Z),X.unref?.()};return X=setTimeout(Y,Z),X.unref?.(),()=>{if(X)clearTimeout(X)}}var Ko6,Wo6;var br1=L(()=>{({startSamplingProfiler:Ko6,samplingProfilerStackTraces:Wo6}=Jo6)});function yr1(){_r1();let $=[vr1(),Sn1(),fr1()];return()=>{for(let Z of $)Z()}}var gr1=L(()=>{Hl0();xr1();br1()});var CE=v((hr1)=>{Object.defineProperty(hr1,"__esModule",{value:!0});hr1.RepublishHeaders=hr1.DirectMsgHeaders=hr1.JsHeaders=hr1.AdvisoryKind=void 0;hr1.isOrderedPushConsumerOptions=Ho6;hr1.isPullConsumer=Fo6;hr1.isPushConsumer=No6;hr1.isBoundPushConsumerOptions=Uo6;function Ho6($){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 Fo6($){return $.isPullConsumer()}function No6($){return $.isPushConsumer()}function Uo6($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}hr1.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"};hr1.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"};hr1.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};hr1.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var $G=v((cr1)=>{Object.defineProperty(cr1,"__esModule",{value:!0});cr1.TD=cr1.TE=cr1.Empty=void 0;cr1.encode=Po6;cr1.decode=Ao6;cr1.Empty=new Uint8Array(0);cr1.TE=new TextEncoder;cr1.TD=new TextDecoder;function zo6(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let X=new Uint8Array(Z),Q=0;for(let Y=0;Y<$.length;Y++)X.set($[Y],Q),Q+=$[Y].length;return X}function Po6(...$){let Z=[];for(let X=0;X<$.length;X++)Z.push(cr1.TE.encode($[X]));if(Z.length===0)return cr1.Empty;if(Z.length===1)return Z[0];return zo6(...Z)}function Ao6($){if(!$||$.length===0)return"";return cr1.TD.decode($)}});var ZG=v((mr1)=>{Object.defineProperty(mr1,"__esModule",{value:!0});mr1.errors=mr1.PermissionViolationError=mr1.NoRespondersError=mr1.TimeoutError=mr1.RequestError=mr1.ProtocolError=mr1.ConnectionError=mr1.DrainingConnectionError=mr1.ClosedConnectionError=mr1.AuthorizationError=mr1.UserAuthenticationExpiredError=mr1.InvalidOperationError=mr1.InvalidArgumentError=mr1.InvalidSubjectError=void 0;class Ln0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}mr1.InvalidSubjectError=Ln0;class aZ0 extends Error{constructor($,Z){super($,Z);this.name="InvalidArgumentError"}static format($,Z,X){if(Array.isArray(Z)&&Z.length>1)Z=Z[0];if(Array.isArray($))$=$.map((Q)=>`'${Q}'`),$=$.join(",");else $=`'${$}'`;return new aZ0(`${$} ${Z}`,X)}}mr1.InvalidArgumentError=aZ0;class wn0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}mr1.InvalidOperationError=wn0;class sZ0 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new sZ0($);return null}}mr1.UserAuthenticationExpiredError=sZ0;class eZ0 extends Error{constructor($,Z){super($,Z);this.name="AuthorizationError"}static parse($){let Z=["authorization violation","account authentication expired","authentication timeout"],X=$.toLowerCase();for(let Q=0;Q<Z.length;Q++)if(X.indexOf(Z[Q])!==-1)return new eZ0($);return null}}mr1.AuthorizationError=eZ0;class Dn0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}mr1.ClosedConnectionError=Dn0;class En0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}mr1.DrainingConnectionError=En0;class jn0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}mr1.ConnectionError=jn0;class zn0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}mr1.ProtocolError=zn0;class Pn0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof $70}}mr1.RequestError=Pn0;class An0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}mr1.TimeoutError=An0;class $70 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}mr1.NoRespondersError=$70;class Z70 extends Error{operation;subject;queue;constructor($,Z,X,Q,Y){super($,Y);this.name="PermissionViolationError",this.operation=Z,this.subject=X,this.queue=Q}static parse($){if(($?$.toLowerCase():"").indexOf("permissions violation")===-1)return null;let X="publish",Q="",Y=void 0,G=$.match(/(Publish|Subscription) to "(\S+)"/);if(G){if(X=G[1].toLowerCase(),Q=G[2],X==="subscription"){let J=$.match(/using queue "(\S+)"/);if(J)Y=J[1]}}return new Z70($,X,Q,Y)}}mr1.PermissionViolationError=Z70;mr1.errors={AuthorizationError:eZ0,ClosedConnectionError:Dn0,ConnectionError:jn0,DrainingConnectionError:En0,InvalidArgumentError:aZ0,InvalidOperationError:wn0,InvalidSubjectError:Ln0,NoRespondersError:$70,PermissionViolationError:Z70,ProtocolError:zn0,RequestError:Pn0,TimeoutError:An0,UserAuthenticationExpiredError:sZ0}});var cJ=v((or1)=>{Object.defineProperty(or1,"__esModule",{value:!0});or1.SimpleMutex=or1.Perf=void 0;or1.extend=ho6;or1.render=uo6;or1.timeout=co6;or1.delay=lo6;or1.deadline=do6;or1.deferred=Rn0;or1.debugDeferred=mo6;or1.shuffle=io6;or1.collect=no6;or1.jitter=tr1;or1.backoff=po6;or1.nanos=to6;or1.millis=oo6;or1.randomToken=so6;var go6=$G(),Tn0=ZG();function ho6($,...Z){for(let X=0;X<Z.length;X++){let Q=Z[X];Object.keys(Q).forEach(function(Y){$[Y]=Q[Y]})}return $}function uo6($){return go6.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function co6($,Z=!0){let X=Z?new Tn0.TimeoutError:null,Q,Y,G=new Promise((J,K)=>{Q={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(X===null)K(new Tn0.TimeoutError);else K(X)},$)});return Object.assign(G,Q)}function lo6($=0){let Z,X=new Promise((Q)=>{let Y=setTimeout(()=>{Q()},$);Z={cancel:()=>{if(Y)clearTimeout(Y),Q()}}});return Object.assign(X,Z)}async function do6($,Z=1000){let X=Rn0(),Q=setTimeout(()=>{X.reject(new Tn0.TimeoutError)},Z);try{return await Promise.race([$,X])}finally{clearTimeout(Q)}}function Rn0(){let $={},Z=new Promise((X,Q)=>{$={resolve:X,reject:Q}});return Object.assign(Z,$)}function mo6(){let $={},Z=new Promise((X,Q)=>{$={resolve:(Y)=>{console.trace("resolve",Y),X(Y)},reject:(Y)=>{console.trace("reject"),Q(Y)}}});return Object.assign(Z,$)}function io6($){for(let Z=$.length-1;Z>0;Z--){let X=Math.floor(Math.random()*(Z+1));[$[Z],$[X]]=[$[X],$[Z]]}return $}async function no6($){let Z=[];for await(let X of $)Z.push(X);return Z}class nr1{timers;measures;constructor(){this.timers=new Map,this.measures=new Map}mark($){this.timers.set($,performance.now())}measure($,Z,X){let Q=this.timers.get(Z);if(Q===void 0)throw Error(`${Z} is not defined`);let Y=this.timers.get(X);if(Y===void 0)throw Error(`${X} is not defined`);this.measures.set($,Y-Q)}getEntries(){let $=[];return this.measures.forEach((Z,X)=>{$.push({name:X,duration:Z})}),$}}or1.Perf=nr1;class pr1{max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=Rn0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}or1.SimpleMutex=pr1;function tr1($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function po6($=[0,250,250,500,500,3000,5000]){if(!Array.isArray($))$=[0,250,250,500,500,3000,5000];let Z=$.length-1;return{backoff(X){return tr1(X>Z?$[Z]:$[X])}}}function to6($){return $*1e6}function oo6($){return Math.floor($/1e6)}var ro6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",GN=new Uint8Array(62);for(let $=0;$<62;$++)GN[$]=ro6.charCodeAt($);var ao6=218340105584896;function so6(){let $=Math.floor(Math.random()*ao6),Z=$%62,X=GN[Z];$=($-Z)/62,Z=$%62;let Q=GN[Z];$=($-Z)/62,Z=$%62;let Y=GN[Z];$=($-Z)/62,Z=$%62;let G=GN[Z];$=($-Z)/62,Z=$%62;let J=GN[Z];$=($-Z)/62,Z=$%62;let K=GN[Z];$=($-Z)/62,Z=$%62;let W=GN[Z];$=($-Z)/62;let H=GN[$];return String.fromCharCode(X,Q,Y,G,J,K,W,H)}});var Qa1=v((Za1)=>{Object.defineProperty(Za1,"__esModule",{value:!0});Za1.nuid=Za1.NuidImpl=void 0;var Or6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",oB=62,Q70=12,er1=10,ar1=33,Lr6=333,sr1=Q70+er1,qn0=new Uint8Array(oB);for(let $=0;$<oB;$++)qn0[$]=Or6.charCodeAt($);var X70=4294967296,$a1=BigInt(oB)**BigInt(er1),ei=Number($a1/(1n<<32n)),In0=Number($a1%(1n<<32n));function wr6($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function Dr6($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else wr6($)}class Mn0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(sr1),this.cbuf=new Uint8Array(Q70),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(ei+1)),this.seqLo=Math.floor(Math.random()*X70);while($++<8&&this.seqHi===ei&&this.seqLo>=In0);if(this.seqHi===ei&&this.seqLo>=In0)this.seqLo=0;this.inc=Math.random()*(Lr6-ar1)+ar1|0}setPre(){Dr6(this.cbuf);for(let $=0;$<Q70;$++)this.buf[$]=qn0[this.cbuf[$]%oB]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let X=sr1-1;X>=Q70;X--){let Q=Math.floor($/oB),G=($-Q*oB)*X70+Z,J=Math.floor(G/oB),K=G-J*oB;this.buf[X]=qn0[K],$=Q,Z=J}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=X70)this.seqLo-=X70,this.seqHi+=1;if(this.seqHi>ei||this.seqHi===ei&&this.seqLo>=In0)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()}}Za1.NuidImpl=Mn0;Za1.nuid=new Mn0});var Ka1=v((Ga1)=>{Object.defineProperty(Ga1,"__esModule",{value:!0});Ga1.nuid=Ga1.Nuid=void 0;var Ya1=Qa1();Ga1.Nuid=Ya1.NuidImpl;Ga1.nuid=Ya1.nuid});var G70=v((Y70)=>{Object.defineProperty(Y70,"__esModule",{value:!0});Y70.nuid=Y70.Nuid=void 0;var Wa1=Ka1();Object.defineProperty(Y70,"Nuid",{enumerable:!0,get:function(){return Wa1.Nuid}});Object.defineProperty(Y70,"nuid",{enumerable:!0,get:function(){return Wa1.nuid}})});var rB=v((Ha1)=>{Object.defineProperty(Ha1,"__esModule",{value:!0});Ha1.DEFAULT_HOST=Ha1.DEFAULT_PORT=Ha1.Match=void 0;Ha1.syncIterator=Tr6;Ha1.createInbox=Rr6;var Pr6=G70(),Ar6=ZG();Ha1.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function Tr6($){let Z=$[Symbol.asyncIterator]();return{async next(){let X=await Z.next();if(X.done)return Promise.resolve(null);return Promise.resolve(X.value)}}}function Rr6($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw Ar6.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${Pr6.nuid.next()}`}Ha1.DEFAULT_PORT=4222;Ha1.DEFAULT_HOST="127.0.0.1"});var $n=v((Ba1)=>{Object.defineProperty(Ba1,"__esModule",{value:!0});Ba1.DataBuffer=void 0;var Na1=$G();class Ua1{buffers;byteLength;constructor(){this.buffers=[],this.byteLength=0}static concat(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let X=new Uint8Array(Z),Q=0;for(let Y=0;Y<$.length;Y++)X.set($[Y],Q),Q+=$[Y].length;return X}static fromAscii($){if(!$)$="";return Na1.TE.encode($)}static toAscii($){return Na1.TD.decode($)}reset(){this.buffers.length=0,this.byteLength=0}pack(){if(this.buffers.length>1){let $=new Uint8Array(this.byteLength),Z=0;for(let X=0;X<this.buffers.length;X++)$.set(this.buffers[X],Z),Z+=this.buffers[X].length;this.buffers.length=0,this.buffers.push($)}}shift(){if(this.buffers.length){let $=this.buffers.shift();if($)return this.byteLength-=$.length,$}return new Uint8Array(0)}drain($){if(this.buffers.length){this.pack();let Z=this.buffers.pop();if(Z){let X=this.byteLength;if($===void 0||$>X)$=X;let Q=Z.subarray(0,$);if(X>$)this.buffers.push(Z.subarray($));return this.byteLength=X-$,Q}}return new Uint8Array(0)}fill($,...Z){if($)this.buffers.push($),this.byteLength+=$.length;for(let X=0;X<Z.length;X++)if(Z[X]&&Z[X].length)this.buffers.push(Z[X]),this.byteLength+=Z[X].length}peek(){if(this.buffers.length)return this.pack(),this.buffers[0];return new Uint8Array(0)}size(){return this.byteLength}length(){return this.buffers.length}}Ba1.DataBuffer=Ua1});var _E=v((wa1)=>{Object.defineProperty(wa1,"__esModule",{value:!0});wa1.LF=wa1.CR=wa1.CRLF=wa1.CR_LF_LEN=wa1.CR_LF=void 0;wa1.setTransportFactory=_r6;wa1.defaultPort=vr6;wa1.getUrlParseFn=xr6;wa1.newTransport=fr6;wa1.getResolveFn=br6;wa1.protoLen=La1;wa1.extractProtocolMessage=yr6;var kr6=$G(),Sr6=rB(),Cr6=$n(),XG;function _r6($){XG=$}function vr6(){return XG!==void 0&&XG.defaultPort!==void 0?XG.defaultPort:Sr6.DEFAULT_PORT}function xr6(){return XG!==void 0&&XG.urlParseFn?XG.urlParseFn:void 0}function fr6(){if(!XG||typeof XG.factory!=="function")throw Error("transport fn is not set");return XG.factory()}function br6(){return XG!==void 0&&XG.dnsResolveFn?XG.dnsResolveFn:void 0}wa1.CR_LF=`\r
1399
+ `);Q=G.pop()??"";for(let J of G){let K=ai(J).replace(/^\[\d+\]\s*/,"").trim();if(!K)continue;nB({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:K})}}(async()=>{for(;;){let{done:G,value:J}=await Z.read();if(G)break;Q+=X.decode(J,{stream:!0}),Y()}if(Q.trim()){let G=ai(Q).replace(/^\[\d+\]\s*/,"").trim();if(G)nB({method:"",path:"",status:0,duration:0,timestamp:new Date,rawLine:G})}})()}async function pt6($){let{baseUrl:Z,noTui:X}=$,Q=process.env.HOST==="0.0.0.0"&&Boolean(process.env.PORT),Y=Q?process.env.PORT:$.vitePort,G=Z||`http://localhost:${Y}`,J=Q?await ri(Number(Y)+1):await ri(Number($.port)),{settings:K,services:W,managedServiceNames:H}=await nZ0({port:String(J),home:$.home,baseUrl:$.baseUrl,localMode:$.localMode,skipMigrations:$.skipMigrations,noTui:$.noTui,vitePort:$.vitePort});for(let w of W)qE({name:w.name,status:"ready",port:w.port});ti();let F=nt6(import.meta.dir,"..","..","..","..",".."),N=X===!0,U=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:G,DECOCMS_LOCAL_MODE:String(K.localMode),DECOCMS_HOME:K.dataDir,DATA_DIR:K.dataDir,DECO_CLI:"1",...K.betterAuthSecret?{BETTER_AUTH_SECRET:K.betterAuthSecret}:{},...K.s3Endpoint?{S3_ENDPOINT:K.s3Endpoint,S3_BUCKET:K.s3Bucket??"",S3_ACCESS_KEY_ID:K.s3AccessKeyId??"",S3_SECRET_ACCESS_KEY:K.s3SecretAccessKey??"",S3_FORCE_PATH_STYLE:String(K.s3ForcePathStyle)}:{},...K.natsPublicUrl&&K.natsAccountJwt&&K.natsAccountSigningKey?{NATS_PUBLIC_URL:K.natsPublicUrl,NATS_ACCOUNT_JWT:K.natsAccountJwt,NATS_ACCOUNT_SIGNING_KEY:K.natsAccountSigningKey,NATS_OPERATOR_JWT:K.natsOperatorJwt??"",NATS_TUNNEL_PUBLIC_ENABLED:"true",...K.natsCredsPath?{NATS_CREDS:K.natsCredsPath}:{}}:{}},stdio:["inherit",N?"inherit":"pipe",N?"inherit":"pipe"]});if(!N)Er1(U.stdout),Er1(U.stderr);oi(G),qE({name:"Vite",status:"ready",port:Number(Y)}),qE({name:"API",status:"ready",port:Number(K.port)});let O=async(w)=>{if(U.kill(w),await U.exited,H.length>0){let{stopServices:D}=await Promise.resolve().then(() => ($Z0(),e90));await D(K.dataDir)}};return process.on("SIGINT",()=>O("SIGINT")),process.on("SIGTERM",()=>O("SIGTERM")),{port:Number(Y),process:U}}var Kn0=L(()=>{Zn0();ME();Gn0()});var oZ0;var Wn0=L(()=>{oZ0={name:"decocms",version:"4.255.2",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@nats-io/jwt":"0.0.10-5","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});import{Box as ot6,Text as jr1}from"ink";import{jsx as rt6,jsxs as zr1}from"react/jsx-runtime";function Pr1({version:$}){return zr1(ot6,{flexDirection:"column",marginTop:1,children:[TZ0.map((Z,X)=>rt6(jr1,{color:RZ0[X],children:Z},X)),zr1(jr1,{dimColor:!0,children:[" v",$]})]})}var Ar1=L(()=>{bi()});import{Box as VE,Text as pB}from"ink";import{Spinner as at6}from"@inkjs/ui";import{jsx as eY,jsxs as Yy}from"react/jsx-runtime";function Tr1({status:$}){if($==="pending")return eY(at6,{label:""});return eY(pB,{color:"green",children:"\u2713"})}function st6($){return`${$.name}: ${$.port||"...."}`}function Rr1({services:$,migrationsStatus:Z,home:X,serverUrl:Q}){return Yy(VE,{flexDirection:"column",paddingBottom:1,children:[eY(Pr1,{version:oZ0.version}),eY(VE,{marginBottom:1,children:eY(pB,{dimColor:!0,children:"\u2500".repeat(80)})}),eY(VE,{children:Yy(pB,{dimColor:!0,children:["Home: ",X]})}),Yy(VE,{gap:2,children:[$.map((Y)=>Yy(VE,{gap:1,children:[eY(pB,{children:st6(Y)}),eY(Tr1,{status:Y.status})]},Y.name)),Yy(VE,{gap:1,children:[eY(pB,{children:"Migrations"}),eY(Tr1,{status:Z})]})]}),eY(VE,{children:Q?Yy(pB,{children:["Open in browser: ",eY(pB,{color:"cyan",children:Q})]}):eY(pB,{dimColor:!0,children:"Starting..."})})]})}var Ir1=L(()=>{Wn0();Ar1()});import{Box as et6,Text as si}from"ink";import{jsx as Hn0,jsxs as Fn0}from"react/jsx-runtime";function $o6($){if($>=500)return"red";if($>=400)return"yellow";if($>=300)return"cyan";return"green"}function qr1({logs:$}){return Hn0(et6,{flexDirection:"column",children:$.map((Z,X)=>{if(Z.rawLine)return Hn0(si,{dimColor:!0,children:Z.rawLine},X);let Q=Z.duration<1000?`${Z.duration}ms`:`${(Z.duration/1000).toFixed(1)}s`;return Fn0(si,{children:[Fn0(si,{dimColor:!0,children:[Z.method.padEnd(6)," ",Z.path.padEnd(30)," "]}),Hn0(si,{color:$o6(Z.status),children:Z.status}),Fn0(si,{dimColor:!0,children:[" ",Q.padStart(8)]})]},X)})})}var Mr1=()=>{};var Nn0={};N0(Nn0,{App:()=>Qo6});import{Box as Zo6}from"ink";import{useSyncExternalStore as Xo6}from"react";import{jsx as Vr1,jsxs as Yo6}from"react/jsx-runtime";function Qo6({home:$}){let Z=Xo6(Yn0,Qn0);return Yo6(Zo6,{flexDirection:"column",children:[Vr1(Rr1,{services:Z.services,migrationsStatus:Z.migrationsStatus,home:$,serverUrl:Z.serverUrl}),Vr1(qr1,{logs:Z.logs})]})}var Un0=L(()=>{Ir1();Mr1();ME()});var uJ="thread-gate",QN="decopilot-hosted-harness",YN="decopilot-hosted-harness-sandboxed",U3="automations",tB="background-tools",kE="task-board-github-reads",SE="jira-push";var kr1="7";function Sr1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:kr1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}var Cr1=()=>{};function Go6(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function Bn0($,Z){for(let X=0;X<$.length;X++){let Q=$[X];if(Q===void 0)continue;if(Q===Z)return $[X+1];if(Q.startsWith(`${Z}=`))return Q.slice(Z.length+1)}return}function _r1(){let $=Go6();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:Bn0($,"--cpu-prof-dir")??process.cwd(),name:Bn0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(Bn0($,"--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 vr1(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let X=AE();if(!X)return;let Q={};try{let{heapStats:Y}=await import("bun:jsc"),G=Y(),J=Object.entries(G.objectTypeCounts).sort((K,W)=>W[1]-K[1]).slice(0,20);Q={objectCount:G.objectCount,heapSize:G.heapSize,top:Object.fromEntries(J)}}catch{}console.log(JSON.stringify({msg:"heap-watch",ts:new Date().toISOString(),uptimeS:Math.round(process.uptime()),rss:X.rss,heapUsed:X.heapUsed,heapTotal:X.heapTotal,external:X.external,arrayBuffers:X.arrayBuffers,...Q}))};return Z().catch(()=>{}),rZ0=setInterval(()=>void Z().catch(()=>{}),$),rZ0.unref?.(),process.on("SIGUSR2",()=>{try{let X=Bun.generateHeapSnapshot("v8"),Q=typeof X==="string"?X:JSON.stringify(X),Y=`/tmp/heap-${process.pid}-${Date.now()}.heapsnapshot`;Bun.write(Y,Q),console.log(JSON.stringify({msg:"heap-snapshot-written",path:Y}))}catch(X){console.error("[heap-watch] snapshot failed:",X)}}),()=>{if(rZ0)clearInterval(rZ0)}}var rZ0;var xr1=()=>{};import*as Jo6 from"bun:jsc";function fr1(){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{Ko6()}catch(G){return console.error("[stall-watchdog] failed to start sampling profiler:",G),()=>{}}let X,Q=performance.now()+Z,Y=()=>{let G=performance.now(),J=G-Q;Q=G+Z;let K=[];try{K=Wo6()?.traces??[]}catch{}if(J>$&&K.length>0){let W=new Map;for(let F of K){let N=F.frames.find((O)=>O.sourceURL&&!/Unknown Executable/.test(O.category??""))??F.frames[0];if(!N)continue;let U=(N.sourceURL??"?").replace(/^.*\/node_modules\//,"node_modules/"),B=`${N.name??"?"} @ ${U}:${N.line??"?"}`;W.set(B,(W.get(B)??0)+1)}let H=[...W.entries()].sort((F,N)=>N[1]-F[1]).slice(0,8).map(([F,N])=>({frame:F,count:N}));console.warn(JSON.stringify({msg:"stall-stack",ts:new Date().toISOString(),lagMs:Math.round(J),samplesInWindow:K.length,top:H}))}X=setTimeout(Y,Z),X.unref?.()};return X=setTimeout(Y,Z),X.unref?.(),()=>{if(X)clearTimeout(X)}}var Ko6,Wo6;var br1=L(()=>{({startSamplingProfiler:Ko6,samplingProfilerStackTraces:Wo6}=Jo6)});function yr1(){_r1();let $=[vr1(),Sn1(),fr1()];return()=>{for(let Z of $)Z()}}var gr1=L(()=>{Hl0();xr1();br1()});var CE=v((hr1)=>{Object.defineProperty(hr1,"__esModule",{value:!0});hr1.RepublishHeaders=hr1.DirectMsgHeaders=hr1.JsHeaders=hr1.AdvisoryKind=void 0;hr1.isOrderedPushConsumerOptions=Ho6;hr1.isPullConsumer=Fo6;hr1.isPushConsumer=No6;hr1.isBoundPushConsumerOptions=Uo6;function Ho6($){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 Fo6($){return $.isPullConsumer()}function No6($){return $.isPushConsumer()}function Uo6($){if($&&typeof $==="object")return"deliver_subject"in $||"deliver_group"in $||"idle_heartbeat"in $;return!1}hr1.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"};hr1.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"};hr1.DirectMsgHeaders={Stream:"Nats-Stream",Sequence:"Nats-Sequence",TimeStamp:"Nats-Time-Stamp",Subject:"Nats-Subject",LastSequence:"Nats-Last-Sequence",NumPending:"Nats-Num-Pending"};hr1.RepublishHeaders={Stream:"Nats-Stream",Subject:"Nats-Subject",Sequence:"Nats-Sequence",LastSequence:"Nats-Last-Sequence",Size:"Nats-Msg-Size"}});var $G=v((cr1)=>{Object.defineProperty(cr1,"__esModule",{value:!0});cr1.TD=cr1.TE=cr1.Empty=void 0;cr1.encode=Po6;cr1.decode=Ao6;cr1.Empty=new Uint8Array(0);cr1.TE=new TextEncoder;cr1.TD=new TextDecoder;function zo6(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let X=new Uint8Array(Z),Q=0;for(let Y=0;Y<$.length;Y++)X.set($[Y],Q),Q+=$[Y].length;return X}function Po6(...$){let Z=[];for(let X=0;X<$.length;X++)Z.push(cr1.TE.encode($[X]));if(Z.length===0)return cr1.Empty;if(Z.length===1)return Z[0];return zo6(...Z)}function Ao6($){if(!$||$.length===0)return"";return cr1.TD.decode($)}});var ZG=v((mr1)=>{Object.defineProperty(mr1,"__esModule",{value:!0});mr1.errors=mr1.PermissionViolationError=mr1.NoRespondersError=mr1.TimeoutError=mr1.RequestError=mr1.ProtocolError=mr1.ConnectionError=mr1.DrainingConnectionError=mr1.ClosedConnectionError=mr1.AuthorizationError=mr1.UserAuthenticationExpiredError=mr1.InvalidOperationError=mr1.InvalidArgumentError=mr1.InvalidSubjectError=void 0;class Ln0 extends Error{constructor($,Z){super(`illegal subject: '${$}'`,Z);this.name="InvalidSubjectError"}}mr1.InvalidSubjectError=Ln0;class aZ0 extends Error{constructor($,Z){super($,Z);this.name="InvalidArgumentError"}static format($,Z,X){if(Array.isArray(Z)&&Z.length>1)Z=Z[0];if(Array.isArray($))$=$.map((Q)=>`'${Q}'`),$=$.join(",");else $=`'${$}'`;return new aZ0(`${$} ${Z}`,X)}}mr1.InvalidArgumentError=aZ0;class wn0 extends Error{constructor($,Z){super($,Z);this.name="InvalidOperationError"}}mr1.InvalidOperationError=wn0;class sZ0 extends Error{constructor($,Z){super($,Z);this.name="UserAuthenticationExpiredError"}static parse($){if($.toLowerCase().indexOf("user authentication expired")!==-1)return new sZ0($);return null}}mr1.UserAuthenticationExpiredError=sZ0;class eZ0 extends Error{constructor($,Z){super($,Z);this.name="AuthorizationError"}static parse($){let Z=["authorization violation","account authentication expired","authentication timeout"],X=$.toLowerCase();for(let Q=0;Q<Z.length;Q++)if(X.indexOf(Z[Q])!==-1)return new eZ0($);return null}}mr1.AuthorizationError=eZ0;class Dn0 extends Error{constructor(){super("closed connection");this.name="ClosedConnectionError"}}mr1.ClosedConnectionError=Dn0;class En0 extends Error{constructor(){super("connection draining");this.name="DrainingConnectionError"}}mr1.DrainingConnectionError=En0;class jn0 extends Error{constructor($,Z){super($,Z);this.name="ConnectionError"}}mr1.ConnectionError=jn0;class zn0 extends Error{constructor($,Z){super($,Z);this.name="ProtocolError"}}mr1.ProtocolError=zn0;class Pn0 extends Error{constructor($="",Z){super($,Z);this.name="RequestError"}isNoResponders(){return this.cause instanceof $70}}mr1.RequestError=Pn0;class An0 extends Error{constructor($){super("timeout",$);this.name="TimeoutError"}}mr1.TimeoutError=An0;class $70 extends Error{subject;constructor($,Z){super(`no responders: '${$}'`,Z);this.subject=$,this.name="NoResponders"}}mr1.NoRespondersError=$70;class Z70 extends Error{operation;subject;queue;constructor($,Z,X,Q,Y){super($,Y);this.name="PermissionViolationError",this.operation=Z,this.subject=X,this.queue=Q}static parse($){if(($?$.toLowerCase():"").indexOf("permissions violation")===-1)return null;let X="publish",Q="",Y=void 0,G=$.match(/(Publish|Subscription) to "(\S+)"/);if(G){if(X=G[1].toLowerCase(),Q=G[2],X==="subscription"){let J=$.match(/using queue "(\S+)"/);if(J)Y=J[1]}}return new Z70($,X,Q,Y)}}mr1.PermissionViolationError=Z70;mr1.errors={AuthorizationError:eZ0,ClosedConnectionError:Dn0,ConnectionError:jn0,DrainingConnectionError:En0,InvalidArgumentError:aZ0,InvalidOperationError:wn0,InvalidSubjectError:Ln0,NoRespondersError:$70,PermissionViolationError:Z70,ProtocolError:zn0,RequestError:Pn0,TimeoutError:An0,UserAuthenticationExpiredError:sZ0}});var cJ=v((or1)=>{Object.defineProperty(or1,"__esModule",{value:!0});or1.SimpleMutex=or1.Perf=void 0;or1.extend=ho6;or1.render=uo6;or1.timeout=co6;or1.delay=lo6;or1.deadline=do6;or1.deferred=Rn0;or1.debugDeferred=mo6;or1.shuffle=io6;or1.collect=no6;or1.jitter=tr1;or1.backoff=po6;or1.nanos=to6;or1.millis=oo6;or1.randomToken=so6;var go6=$G(),Tn0=ZG();function ho6($,...Z){for(let X=0;X<Z.length;X++){let Q=Z[X];Object.keys(Q).forEach(function(Y){$[Y]=Q[Y]})}return $}function uo6($){return go6.TD.decode($).replace(/\n/g,"\u240A").replace(/\r/g,"\u240D")}function co6($,Z=!0){let X=Z?new Tn0.TimeoutError:null,Q,Y,G=new Promise((J,K)=>{Q={cancel:()=>{if(Y)clearTimeout(Y)}},Y=setTimeout(()=>{if(X===null)K(new Tn0.TimeoutError);else K(X)},$)});return Object.assign(G,Q)}function lo6($=0){let Z,X=new Promise((Q)=>{let Y=setTimeout(()=>{Q()},$);Z={cancel:()=>{if(Y)clearTimeout(Y),Q()}}});return Object.assign(X,Z)}async function do6($,Z=1000){let X=Rn0(),Q=setTimeout(()=>{X.reject(new Tn0.TimeoutError)},Z);try{return await Promise.race([$,X])}finally{clearTimeout(Q)}}function Rn0(){let $={},Z=new Promise((X,Q)=>{$={resolve:X,reject:Q}});return Object.assign(Z,$)}function mo6(){let $={},Z=new Promise((X,Q)=>{$={resolve:(Y)=>{console.trace("resolve",Y),X(Y)},reject:(Y)=>{console.trace("reject"),Q(Y)}}});return Object.assign(Z,$)}function io6($){for(let Z=$.length-1;Z>0;Z--){let X=Math.floor(Math.random()*(Z+1));[$[Z],$[X]]=[$[X],$[Z]]}return $}async function no6($){let Z=[];for await(let X of $)Z.push(X);return Z}class nr1{timers;measures;constructor(){this.timers=new Map,this.measures=new Map}mark($){this.timers.set($,performance.now())}measure($,Z,X){let Q=this.timers.get(Z);if(Q===void 0)throw Error(`${Z} is not defined`);let Y=this.timers.get(X);if(Y===void 0)throw Error(`${X} is not defined`);this.measures.set($,Y-Q)}getEntries(){let $=[];return this.measures.forEach((Z,X)=>{$.push({name:X,duration:Z})}),$}}or1.Perf=nr1;class pr1{max;current;waiting;constructor($=1){this.max=$,this.current=0,this.waiting=[]}lock(){if(this.current++,this.current<=this.max)return Promise.resolve();let $=Rn0();return this.waiting.push($),$}unlock(){this.current--,this.waiting.pop()?.resolve()}}or1.SimpleMutex=pr1;function tr1($){if($===0)return 0;return Math.floor($/2+Math.random()*$)}function po6($=[0,250,250,500,500,3000,5000]){if(!Array.isArray($))$=[0,250,250,500,500,3000,5000];let Z=$.length-1;return{backoff(X){return tr1(X>Z?$[Z]:$[X])}}}function to6($){return $*1e6}function oo6($){return Math.floor($/1e6)}var ro6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",GN=new Uint8Array(62);for(let $=0;$<62;$++)GN[$]=ro6.charCodeAt($);var ao6=218340105584896;function so6(){let $=Math.floor(Math.random()*ao6),Z=$%62,X=GN[Z];$=($-Z)/62,Z=$%62;let Q=GN[Z];$=($-Z)/62,Z=$%62;let Y=GN[Z];$=($-Z)/62,Z=$%62;let G=GN[Z];$=($-Z)/62,Z=$%62;let J=GN[Z];$=($-Z)/62,Z=$%62;let K=GN[Z];$=($-Z)/62,Z=$%62;let W=GN[Z];$=($-Z)/62;let H=GN[$];return String.fromCharCode(X,Q,Y,G,J,K,W,H)}});var Qa1=v((Za1)=>{Object.defineProperty(Za1,"__esModule",{value:!0});Za1.nuid=Za1.NuidImpl=void 0;var Or6="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",oB=62,Q70=12,er1=10,ar1=33,Lr6=333,sr1=Q70+er1,qn0=new Uint8Array(oB);for(let $=0;$<oB;$++)qn0[$]=Or6.charCodeAt($);var X70=4294967296,$a1=BigInt(oB)**BigInt(er1),ei=Number($a1/(1n<<32n)),In0=Number($a1%(1n<<32n));function wr6($){for(let Z=0;Z<$.length;Z++)$[Z]=Math.floor(Math.random()*256)}function Dr6($){if(globalThis?.crypto?.getRandomValues)globalThis.crypto.getRandomValues($);else wr6($)}class Mn0{buf;cbuf;seqHi;seqLo;inc;inited;constructor(){this.buf=new Uint8Array(sr1),this.cbuf=new Uint8Array(Q70),this.inited=!1}init(){this.inited=!0,this.setPre(),this.initSeqAndInc(),this.fillSeq()}initSeqAndInc(){let $=0;do this.seqHi=Math.floor(Math.random()*(ei+1)),this.seqLo=Math.floor(Math.random()*X70);while($++<8&&this.seqHi===ei&&this.seqLo>=In0);if(this.seqHi===ei&&this.seqLo>=In0)this.seqLo=0;this.inc=Math.random()*(Lr6-ar1)+ar1|0}setPre(){Dr6(this.cbuf);for(let $=0;$<Q70;$++)this.buf[$]=qn0[this.cbuf[$]%oB]}fillSeq(){let $=this.seqHi,Z=this.seqLo;for(let X=sr1-1;X>=Q70;X--){let Q=Math.floor($/oB),G=($-Q*oB)*X70+Z,J=Math.floor(G/oB),K=G-J*oB;this.buf[X]=qn0[K],$=Q,Z=J}}next(){if(!this.inited)this.init();if(this.seqLo+=this.inc,this.seqLo>=X70)this.seqLo-=X70,this.seqHi+=1;if(this.seqHi>ei||this.seqHi===ei&&this.seqLo>=In0)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()}}Za1.NuidImpl=Mn0;Za1.nuid=new Mn0});var Ka1=v((Ga1)=>{Object.defineProperty(Ga1,"__esModule",{value:!0});Ga1.nuid=Ga1.Nuid=void 0;var Ya1=Qa1();Ga1.Nuid=Ya1.NuidImpl;Ga1.nuid=Ya1.nuid});var G70=v((Y70)=>{Object.defineProperty(Y70,"__esModule",{value:!0});Y70.nuid=Y70.Nuid=void 0;var Wa1=Ka1();Object.defineProperty(Y70,"Nuid",{enumerable:!0,get:function(){return Wa1.Nuid}});Object.defineProperty(Y70,"nuid",{enumerable:!0,get:function(){return Wa1.nuid}})});var rB=v((Ha1)=>{Object.defineProperty(Ha1,"__esModule",{value:!0});Ha1.DEFAULT_HOST=Ha1.DEFAULT_PORT=Ha1.Match=void 0;Ha1.syncIterator=Tr6;Ha1.createInbox=Rr6;var Pr6=G70(),Ar6=ZG();Ha1.Match={Exact:"exact",CanonicalMIME:"canonical",IgnoreCase:"insensitive"};function Tr6($){let Z=$[Symbol.asyncIterator]();return{async next(){let X=await Z.next();if(X.done)return Promise.resolve(null);return Promise.resolve(X.value)}}}function Rr6($=""){if($=$||"_INBOX",typeof $!=="string")throw TypeError("prefix must be a string");return $.split(".").forEach((Z)=>{if(Z==="*"||Z===">")throw Ar6.InvalidArgumentError.format("prefix",`cannot have wildcards ('${$}')`)}),`${$}.${Pr6.nuid.next()}`}Ha1.DEFAULT_PORT=4222;Ha1.DEFAULT_HOST="127.0.0.1"});var $n=v((Ba1)=>{Object.defineProperty(Ba1,"__esModule",{value:!0});Ba1.DataBuffer=void 0;var Na1=$G();class Ua1{buffers;byteLength;constructor(){this.buffers=[],this.byteLength=0}static concat(...$){let Z=0;for(let Y=0;Y<$.length;Y++)Z+=$[Y].length;let X=new Uint8Array(Z),Q=0;for(let Y=0;Y<$.length;Y++)X.set($[Y],Q),Q+=$[Y].length;return X}static fromAscii($){if(!$)$="";return Na1.TE.encode($)}static toAscii($){return Na1.TD.decode($)}reset(){this.buffers.length=0,this.byteLength=0}pack(){if(this.buffers.length>1){let $=new Uint8Array(this.byteLength),Z=0;for(let X=0;X<this.buffers.length;X++)$.set(this.buffers[X],Z),Z+=this.buffers[X].length;this.buffers.length=0,this.buffers.push($)}}shift(){if(this.buffers.length){let $=this.buffers.shift();if($)return this.byteLength-=$.length,$}return new Uint8Array(0)}drain($){if(this.buffers.length){this.pack();let Z=this.buffers.pop();if(Z){let X=this.byteLength;if($===void 0||$>X)$=X;let Q=Z.subarray(0,$);if(X>$)this.buffers.push(Z.subarray($));return this.byteLength=X-$,Q}}return new Uint8Array(0)}fill($,...Z){if($)this.buffers.push($),this.byteLength+=$.length;for(let X=0;X<Z.length;X++)if(Z[X]&&Z[X].length)this.buffers.push(Z[X]),this.byteLength+=Z[X].length}peek(){if(this.buffers.length)return this.pack(),this.buffers[0];return new Uint8Array(0)}size(){return this.byteLength}length(){return this.buffers.length}}Ba1.DataBuffer=Ua1});var _E=v((wa1)=>{Object.defineProperty(wa1,"__esModule",{value:!0});wa1.LF=wa1.CR=wa1.CRLF=wa1.CR_LF_LEN=wa1.CR_LF=void 0;wa1.setTransportFactory=_r6;wa1.defaultPort=vr6;wa1.getUrlParseFn=xr6;wa1.newTransport=fr6;wa1.getResolveFn=br6;wa1.protoLen=La1;wa1.extractProtocolMessage=yr6;var kr6=$G(),Sr6=rB(),Cr6=$n(),XG;function _r6($){XG=$}function vr6(){return XG!==void 0&&XG.defaultPort!==void 0?XG.defaultPort:Sr6.DEFAULT_PORT}function xr6(){return XG!==void 0&&XG.urlParseFn?XG.urlParseFn:void 0}function fr6(){if(!XG||typeof XG.factory!=="function")throw Error("transport fn is not set");return XG.factory()}function br6(){return XG!==void 0&&XG.dnsResolveFn?XG.dnsResolveFn:void 0}wa1.CR_LF=`\r
1400
1400
  `;wa1.CR_LF_LEN=wa1.CR_LF.length;wa1.CRLF=Cr6.DataBuffer.fromAscii(wa1.CR_LF);wa1.CR=new Uint8Array(wa1.CRLF)[0];wa1.LF=new Uint8Array(wa1.CRLF)[1];function La1($){for(let Z=0;Z<$.length;Z++){let X=Z+1;if($.byteLength>X&&$[Z]===wa1.CR&&$[X]===wa1.LF)return X+1}return 0}function yr6($){let Z=La1($);if(Z>0){let Q=new Uint8Array($).slice(0,Z);return kr6.TD.decode(Q)}return""}});var _n0=v((Ra1)=>{Object.defineProperty(Ra1,"__esModule",{value:!0});Ra1.ipV4=Pa1;Ra1.isIP=tr6;Ra1.parseIP=Aa1;var Zn=4,vE=16,J70=48,za1=57,Ea1=65,nr6=70,ja1=97,pr6=102,Cn0=16777215;function Pa1($,Z,X,Q){let Y=new Uint8Array(vE);return[0,0,0,0,0,0,0,0,0,0,255,255].forEach((J,K)=>{Y[K]=J}),Y[12]=$,Y[13]=Z,Y[14]=X,Y[15]=Q,Y}function tr6($){return Aa1($)!==void 0}function Aa1($){for(let Z=0;Z<$.length;Z++)switch($[Z]){case".":return Ta1($);case":":return or6($)}return}function Ta1($){let Z=new Uint8Array(Zn);for(let X=0;X<Zn;X++){if($.length===0)return;if(X>0){if($[0]!==".")return;$=$.substring(1)}let{n:Q,c:Y,ok:G}=rr6($);if(!G||Q>255)return;$=$.substring(Y),Z[X]=Q}return Pa1(Z[0],Z[1],Z[2],Z[3])}function or6($){let Z=new Uint8Array(vE),X=-1;if($.length>=2&&$[0]===":"&&$[1]===":"){if(X=0,$=$.substring(2),$.length===0)return Z}let Q=0;while(Q<vE){let{n:Y,c:G,ok:J}=ar6($);if(!J||Y>65535)return;if(G<$.length&&$[G]==="."){if(X<0&&Q!=vE-Zn)return;if(Q+Zn>vE)return;let K=Ta1($);if(K===void 0)return;Z[Q]=K[12],Z[Q+1]=K[13],Z[Q+2]=K[14],Z[Q+3]=K[15],$="",Q+=Zn;break}if(Z[Q]=Y>>8,Z[Q+1]=Y,Q+=2,$=$.substring(G),$.length===0)break;if($[0]!==":"||$.length==1)return;if($=$.substring(1),$[0]===":"){if(X>=0)return;if(X=Q,$=$.substring(1),$.length===0)break}}if($.length!==0)return;if(Q<vE){if(X<0)return;let Y=vE-Q;for(let G=Q-1;G>=X;G--)Z[G+Y]=Z[G];for(let G=X+Y-1;G>=X;G--)Z[G]=0}else if(X>=0)return;return Z}function rr6($){let Z=0,X=0;for(Z=0;Z<$.length&&J70<=$.charCodeAt(Z)&&$.charCodeAt(Z)<=za1;Z++)if(X=X*10+($.charCodeAt(Z)-J70),X>=Cn0)return{n:Cn0,c:Z,ok:!1};if(Z===0)return{n:0,c:0,ok:!1};return{n:X,c:Z,ok:!0}}function ar6($){let Z=0,X=0;for(X=0;X<$.length;X++){if(J70<=$.charCodeAt(X)&&$.charCodeAt(X)<=za1)Z*=16,Z+=$.charCodeAt(X)-J70;else if(ja1<=$.charCodeAt(X)&&$.charCodeAt(X)<=pr6)Z*=16,Z+=$.charCodeAt(X)-ja1+10;else if(Ea1<=$.charCodeAt(X)&&$.charCodeAt(X)<=nr6)Z*=16,Z+=$.charCodeAt(X)-Ea1+10;else break;if(Z>=Cn0)return{n:0,c:X,ok:!1}}if(X===0)return{n:0,c:X,ok:!1};return{n:Z,c:X,ok:!0}}});var gn0=v((qa1)=>{Object.defineProperty(qa1,"__esModule",{value:!0});qa1.Servers=qa1.ServerImpl=void 0;qa1.isIPV4OrHostname=Ia1;qa1.hostPort=yn0;var vn0=_E(),xn0=cJ(),fn0=_n0(),Za6=rB(),Xa6=ZG();function Ia1($){if($.indexOf("[")!==-1||$.indexOf("::")!==-1)return!1;if($.indexOf(".")!==-1)return!0;if($.split(":").length<=2)return!0;return!1}function bn0($){return!Ia1($)}function Qa6($){let X=$.toUpperCase().indexOf("::FFFF:");if(X!==-1&&$.indexOf(".")!==-1){let Q=$.substring(X+7);return Q=Q.replace("[",""),Q.replace("]","")}return $}function yn0($){if($=$.trim(),$.match(/^(.*:\/\/)(.*)/m))$=$.replace(/^(.*:\/\/)(.*)/gm,"$2");if($=Qa6($),bn0($)&&$.indexOf("[")===-1)$=`[${$}]`;let Z=bn0($)?$.match(/(]:)(\d+)/):$.match(/(:)(\d+)/),X=Z&&Z.length===3&&Z[1]&&Z[2]?parseInt(Z[2]):Za6.DEFAULT_PORT,Y=new URL(`${X===80?"https":"http"}://${$}`);Y.port=`${X}`;let G=Y.hostname;if(G.charAt(0)==="[")G=G.substring(1,G.length-1);return{listen:Y.host,hostname:G,port:X}}class Gy{src;listen;hostname;port;didConnect;reconnects;lastConnect;gossiped;tlsName;resolves;constructor($,Z=!1){this.src=$,this.tlsName="";let X=yn0($);this.listen=X.listen,this.hostname=X.hostname,this.port=X.port,this.didConnect=!1,this.reconnects=0,this.lastConnect=0,this.gossiped=Z}toString(){return this.listen}async resolve($){if(!$.fn||$.resolve===!1)return[this];let Z=[];if((0,fn0.isIP)(this.hostname))return[this];else{let X=await $.fn(this.hostname);if($.debug)console.log(`resolve ${this.hostname} = ${X.join(",")}`);for(let Q of X){let Y=this.port===80?"https":"http",G=new URL(`${Y}://${bn0(Q)?"["+Q+"]":Q}`);G.port=`${this.port}`;let J=new Gy(G.host,!1);J.tlsName=this.hostname,Z.push(J)}}if($.randomize)(0,xn0.shuffle)(Z);return this.resolves=Z,Z}}qa1.ServerImpl=Gy;class K70{firstSelect;servers;currentServer;tlsName;randomize;constructor($={}){this.firstSelect=!0,this.servers=[],this.tlsName="",this.randomize=$.randomize||!1}setServers($){if(!Array.isArray($)||$.length===0)throw Xa6.InvalidArgumentError.format("servers","cannot be empty");let Z=(0,vn0.getUrlParseFn)(),X=new Map;for(let Y of this.servers)X.set(Y.listen,Y);let Q=[];for(let Y of $){Y=Z?Z(Y):Y;let{listen:G}=yn0(Y),J=X.get(G);if(J)J.gossiped=!1,Q.push(J);else Q.push(new Gy(Y))}if(this.randomize)(0,xn0.shuffle)(Q);if(this.servers=Q,this.currentServer===void 0||!Q.includes(this.currentServer))this.currentServer=Q[0],this.firstSelect=!0}clear(){this.servers.length=0}updateTLSName(){let $=this.getCurrentServer();if(!(0,fn0.isIP)($.hostname))this.tlsName=$.hostname,this.servers.forEach((Z)=>{if(Z.gossiped)Z.tlsName=this.tlsName})}getCurrentServer(){return this.currentServer}addServer($,Z=!1){let X=(0,vn0.getUrlParseFn)();$=X?X($):$;let Q=new Gy($,Z);if((0,fn0.isIP)(Q.hostname))Q.tlsName=this.tlsName;this.servers.push(Q)}selectServer(){if(this.firstSelect)return this.firstSelect=!1,this.currentServer;let $=this.servers.shift();if($)this.servers.push($),this.currentServer=$;return $}removeCurrentServer(){this.removeServer(this.currentServer)}removeServer($){if($){let Z=this.servers.indexOf($);this.servers.splice(Z,1)}}snapshot(){return K70.freezeAll(this.servers)}snapshotForHandler(){let $=this.currentServer;if(!$)return this.snapshot();let Z=this.servers.indexOf($);if(Z<=0)return this.snapshot();return K70.freezeAll([$,...this.servers.slice(0,Z),...this.servers.slice(Z+1)])}static freezeAll($){return $.map((Z)=>Object.freeze({hostname:Z.hostname,port:Z.port,listen:Z.listen,src:Z.src,tlsName:Z.tlsName,reconnects:Z.reconnects,lastConnect:Z.lastConnect,gossiped:Z.gossiped,didConnect:Z.didConnect}))}find($){return this.servers.find((Z)=>Z.listen===$.listen)}setCurrent($){this.currentServer=$}length(){return this.servers.length}next(){return this.servers.length?this.servers[0]:void 0}getServers(){return this.servers}update($,Z){let X=[],Q=[],Y=(0,vn0.getUrlParseFn)(),G=new Map;if($.connect_urls&&$.connect_urls.length>0)$.connect_urls.forEach((K)=>{K=Y?Y(K,Z):K;let W=new Gy(K,!0);G.set(K,W)});let J=[];if(this.servers.forEach((K,W)=>{let H=K.listen;if(K.gossiped&&this.currentServer.listen!==H&&G.get(H)===void 0)J.push(W);G.delete(H)}),J.reverse(),J.forEach((K)=>{let W=this.servers.splice(K,1);Q=Q.concat(W[0].listen)}),G.forEach((K,W)=>{this.servers.push(K),X.push(W)}),this.randomize&&X.length>0){let K=this.currentServer,W=this.servers.filter((H)=>H!==K);(0,xn0.shuffle)(W),this.servers=K?[K,...W]:W}return{added:X,deleted:Q}}}qa1.Servers=K70});var W70=v((Sa1)=>{Object.defineProperty(Sa1,"__esModule",{value:!0});Sa1.QueuedIteratorImpl=void 0;var hn0=cJ(),Va1=ZG();class ka1{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,hn0.deferred)(),this.yields=[],this.iterClosed=(0,hn0.deferred)(),this.time=0,this.yielding=!1,this.didBreak=!1,this.profile=!1}[Symbol.asyncIterator](){return this.iterate()}push($){if(this.done)return;if(this.didBreak){if(typeof $==="function"){let Z=$;try{Z()}catch(X){}}return}if(typeof $==="function")this.pendingFiltered++;this.yields.push($),this.signal.resolve()}async*iterate(){if(this.noIterator)throw new Va1.InvalidOperationError("iterator cannot be used when a callback is registered");if(this.yielding)throw new Va1.InvalidOperationError("iterator is already yielding");this.yielding=!0;try{while(!0){if(this.yields.length===0)await this.signal;if(this.err)throw this.err;let $=this.yields;this.inflight=$.length,this.yields=[];for(let Z=0;Z<$.length;Z++){if(typeof $[Z]==="function"){this.pendingFiltered--;let Q=$[Z];try{Q()}catch(Y){throw Y}if(this.err)throw this.err;continue}this.processed++,this.inflight--;let X=this.profile?Date.now():0;yield $[Z],this.time=this.profile?Date.now()-X:0}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,hn0.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}}Sa1.QueuedIteratorImpl=ka1});var un0=v((xa1)=>{Object.defineProperty(xa1,"__esModule",{value:!0});xa1.MuxSubscription=void 0;var Ka6=rB(),_a1=ZG();class va1{baseInbox;reqs;constructor(){this.reqs=new Map}size(){return this.reqs.size}init($){return this.baseInbox=`${(0,Ka6.createInbox)($)}.`,this.baseInbox}add($){if(!isNaN($.received))$.received=0;this.reqs.set($.token,$)}get($){return this.reqs.get($)}cancel($){this.reqs.delete($.token)}getToken($){let Z=$.subject||"";if(Z.indexOf(this.baseInbox)===0)return Z.substring(this.baseInbox.length);return null}all(){return Array.from(this.reqs.values())}handleError($,Z){if($)return this.all().forEach((X)=>{X.resolver(Z,{})}),!0;if(Z.operation==="publish"){let X=this.all().find((Q)=>{return Q.requestSubject===Z.subject});if(X)return X.resolver(Z,{}),!0}return!1}dispatcher(){return($,Z)=>{let X=this.getToken(Z);if(X){let Q=this.get(X);if(Q){if($===null)$=Z?.data?.length===0&&Z.headers?.code===503?new _a1.NoRespondersError(Q.requestSubject):null;Q.resolver($,Z)}}}}close(){let $=new _a1.RequestError("connection closed");this.reqs.forEach((Z)=>{Z.resolver($,{})})}}xa1.MuxSubscription=va1});var cn0=v((ya1)=>{Object.defineProperty(ya1,"__esModule",{value:!0});ya1.Heartbeat=void 0;var Wa6=cJ();class ba1{ph;interval;maxOut;timer;pendings;constructor($,Z,X){this.ph=$,this.interval=Z,this.maxOut=X,this.pendings=[]}start(){this.cancel(),this._schedule()}cancel($){if(this.timer)clearTimeout(this.timer),this.timer=void 0;if(this._reset(),$)this.ph.disconnect()}_schedule(){this.timer=setTimeout(()=>{if(this.ph.dispatchStatus({type:"ping",pendingPings:this.pendings.length+1}),this.pendings.length===this.maxOut){this.cancel(!0);return}let $=(0,Wa6.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})}}ya1.Heartbeat=ba1});var mn0=v((la1)=>{Object.defineProperty(la1,"__esModule",{value:!0});la1.DenoBuffer=la1.MAX_SIZE=la1.AssertionError=void 0;la1.assert=ua1;la1.concat=ca1;la1.append=Fa6;la1.readAll=Na6;la1.writeAll=Ua6;var Ha6=$G();class ln0 extends Error{constructor($){super($);this.name="AssertionError"}}la1.AssertionError=ln0;function ua1($,Z="Assertion failed."){if(!$)throw new ln0(Z)}var ha1=32768;la1.MAX_SIZE=4294967294;function H70($,Z,X=0){let Q=Z.byteLength-X;if($.byteLength>Q)$=$.subarray(0,Q);return Z.set($,X),$.byteLength}function ca1($,Z){if($===void 0&&Z===void 0)return new Uint8Array(0);if($===void 0)return Z;if(Z===void 0)return $;let X=new Uint8Array($.length+Z.length);return X.set($,0),X.set(Z,$.length),X}function Fa6($,Z){return ca1($,Uint8Array.of(Z))}class dn0{_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($){ua1($<=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=H70(this._buf.subarray(this._off),$);return this._off+=Z,Z}writeByte($){return this.write(Uint8Array.of($))}writeString($){return this.write(Ha6.TE.encode($))}write($){let Z=this._grow($.byteLength);return H70($,this._buf,Z)}_grow($){let Z=this.length;if(Z===0&&this._off!==0)this.reset();let X=this._tryGrowByReslice($);if(X>=0)return X;let Q=this.capacity;if($<=Math.floor(Q/2)-Z)H70(this._buf.subarray(this._off),this._buf);else if(Q+$>la1.MAX_SIZE)throw Error("The buffer cannot be grown beyond the maximum size.");else{let Y=new Uint8Array(Math.min(2*Q+$,la1.MAX_SIZE));H70(this._buf.subarray(this._off),Y),this._buf=Y}return this._off=0,this._reslice(Math.min(Z+$,la1.MAX_SIZE)),Z}grow($){if($<0)throw Error("Buffer._grow: negative count");let Z=this._grow($);this._reslice(Z)}readFrom($){let Z=0,X=new Uint8Array(ha1);while(!0){let Q=this.capacity-this.length<ha1,Y=Q?X:new Uint8Array(this._buf.buffer,this.length),G=$.read(Y);if(G===null)return Z;if(Q)this.write(Y.subarray(0,G));else this._reslice(this.length+G);Z+=G}}}la1.DenoBuffer=dn0;function Na6($){let Z=new dn0;return Z.readFrom($),Z.bytes()}function Ua6($,Z){let X=0;while(X<Z.length)X+=$.write(Z.subarray(X))}});var pn0=v((pa1)=>{Object.defineProperty(pa1,"__esModule",{value:!0});pa1.cc=pa1.State=pa1.Parser=pa1.Kind=void 0;pa1.describe=ja6;var in0=mn0(),nn0=$G();pa1.Kind={OK:0,ERR:1,MSG:2,INFO:3,PING:4,PONG:5};function ja6($){let Z,X="";switch($.kind){case pa1.Kind.MSG:Z="MSG";break;case pa1.Kind.OK:Z="OK";break;case pa1.Kind.ERR:Z="ERR",X=nn0.TD.decode($.data);break;case pa1.Kind.PING:Z="PING";break;case pa1.Kind.PONG:Z="PONG";break;case pa1.Kind.INFO:Z="INFO",X=nn0.TD.decode($.data)}return`${Z}: ${X}`}function ma1(){let $={};return $.sid=-1,$.hdr=-1,$.size=-1,$}var ia1=48,za6=57,Jy=67108864;class na1{dispatcher;state;as;drop;hdr;ma;argBuf;msgBuf;constructor($){this.dispatcher=$,this.state=pa1.State.OP_START,this.as=0,this.drop=0,this.hdr=0}parse($){let Z;for(Z=0;Z<$.length;Z++){let X=$[Z];switch(this.state){case pa1.State.OP_START:switch(X){case pa1.cc.M:case pa1.cc.m:this.state=pa1.State.OP_M,this.hdr=-1,this.ma=ma1();break;case pa1.cc.H:case pa1.cc.h:this.state=pa1.State.OP_H,this.hdr=0,this.ma=ma1();break;case pa1.cc.P:case pa1.cc.p:this.state=pa1.State.OP_P;break;case pa1.cc.PLUS:this.state=pa1.State.OP_PLUS;break;case pa1.cc.MINUS:this.state=pa1.State.OP_MINUS;break;case pa1.cc.I:case pa1.cc.i:this.state=pa1.State.OP_I;break;default:throw this.fail($.subarray(Z))}break;case pa1.State.OP_H:switch(X){case pa1.cc.M:case pa1.cc.m:this.state=pa1.State.OP_M;break;default:throw this.fail($.subarray(Z))}break;case pa1.State.OP_M:switch(X){case pa1.cc.S:case pa1.cc.s:this.state=pa1.State.OP_MS;break;default:throw this.fail($.subarray(Z))}break;case pa1.State.OP_MS:switch(X){case pa1.cc.G:case pa1.cc.g:this.state=pa1.State.OP_MSG;break;default:throw this.fail($.subarray(Z))}break;case pa1.State.OP_MSG:switch(X){case pa1.cc.SPACE:case pa1.cc.TAB:this.state=pa1.State.OP_MSG_SPC;break;default:throw this.fail($.subarray(Z))}break;case pa1.State.OP_MSG_SPC:switch(X){case pa1.cc.SPACE:case pa1.cc.TAB:continue;default:this.state=pa1.State.MSG_ARG,this.as=Z}break;case pa1.State.MSG_ARG:switch(X){case pa1.cc.CR:this.drop=1;break;case pa1.cc.NL:{let Q=this.argBuf?this.argBuf.bytes():$.subarray(this.as,Z-this.drop);this.processMsgArgs(Q),this.drop=0,this.as=Z+1,this.state=pa1.State.MSG_PAYLOAD,Z=this.as+this.ma.size-1;break}default:if(this.argBuf)this.argBuf.writeByte(X)}break;case pa1.State.MSG_PAYLOAD:if(this.msgBuf)if(this.msgBuf.length>=this.ma.size){let Q=this.msgBuf.bytes({copy:!1});this.dispatcher.push({kind:pa1.Kind.MSG,msg:this.ma,data:Q}),this.argBuf=void 0,this.msgBuf=void 0,this.state=pa1.State.MSG_END}else{let Q=this.ma.size-this.msgBuf.length,Y=$.length-Z;if(Y<Q)Q=Y;if(Q>0)this.msgBuf.write($.subarray(Z,Z+Q)),Z=Z+Q-1;else this.msgBuf.writeByte(X)}else if(Z-this.as>=this.ma.size)this.dispatcher.push({kind:pa1.Kind.MSG,msg:this.ma,data:$.subarray(this.as,Z)}),this.argBuf=void 0,this.msgBuf=void 0,this.state=pa1.State.MSG_END;break;case pa1.State.MSG_END:switch(X){case pa1.cc.NL:this.drop=0,this.as=Z+1,this.state=pa1.State.OP_START;break;default:continue}break;case pa1.State.OP_PLUS:switch(X){case pa1.cc.O:case pa1.cc.o:this.state=pa1.State.OP_PLUS_O;break;default:throw this.fail($.subarray(Z))}break;case pa1.State.OP_PLUS_O:switch(X){case pa1.cc.K:case pa1.cc.k:this.state=pa1.State.OP_PLUS_OK;break;default:throw this.fail($.subarray(Z))}break;case pa1.State.OP_PLUS_OK:switch(X){case pa1.cc.NL:this.dispatcher.push({kind:pa1.Kind.OK}),this.drop=0,this.state=pa1.State.OP_START;break}break;case pa1.State.OP_MINUS:switch(X){case pa1.cc.E:case pa1.cc.e:this.state=pa1.State.OP_MINUS_E;break;default:throw this.fail($.subarray(Z))}break;case pa1.State.OP_MINUS_E:switch(X){case pa1.cc.R:case pa1.cc.r:this.state=pa1.State.OP_MINUS_ER;break;default:throw this.fail($.subarray(Z))}break;case pa1.State.OP_MINUS_ER:switch(X){case pa1.cc.R:case pa1.cc.r:this.state=pa1.State.OP_MINUS_ERR;break;default:throw this.fail($.subarray(Z))}break;case pa1.State.OP_MINUS_ERR:switch(X){case pa1.cc.SPACE:case pa1.cc.TAB:this.state=pa1.State.OP_MINUS_ERR_SPC;break;default:throw this.fail($.subarray(Z))}break;case pa1.State.OP_MINUS_ERR_SPC:switch(X){case pa1.cc.SPACE:case pa1.cc.TAB:continue;default:this.state=pa1.State.MINUS_ERR_ARG,this.as=Z}break;case pa1.State.MINUS_ERR_ARG:switch(X){case pa1.cc.CR:this.drop=1;break;case pa1.cc.NL:{let Q;if(this.argBuf)Q=this.argBuf.bytes(),this.argBuf=void 0;else Q=$.subarray(this.as,Z-this.drop);this.dispatcher.push({kind:pa1.Kind.ERR,data:Q}),this.drop=0,this.as=Z+1,this.state=pa1.State.OP_START;break}default:if(this.argBuf)this.argBuf.write(Uint8Array.of(X))}break;case pa1.State.OP_P:switch(X){case pa1.cc.I:case pa1.cc.i:this.state=pa1.State.OP_PI;break;case pa1.cc.O:case pa1.cc.o:this.state=pa1.State.OP_PO;break;default:throw this.fail($.subarray(Z))}break;case pa1.State.OP_PO:switch(X){case pa1.cc.N:case pa1.cc.n:this.state=pa1.State.OP_PON;break;default:throw this.fail($.subarray(Z))}break;case pa1.State.OP_PON:switch(X){case pa1.cc.G:case pa1.cc.g:this.state=pa1.State.OP_PONG;break;default:throw this.fail($.subarray(Z))}break;case pa1.State.OP_PONG:switch(X){case pa1.cc.NL:this.dispatcher.push({kind:pa1.Kind.PONG}),this.drop=0,this.state=pa1.State.OP_START;break}break;case pa1.State.OP_PI:switch(X){case pa1.cc.N:case pa1.cc.n:this.state=pa1.State.OP_PIN;break;default:throw this.fail($.subarray(Z))}break;case pa1.State.OP_PIN:switch(X){case pa1.cc.G:case pa1.cc.g:this.state=pa1.State.OP_PING;break;default:throw this.fail($.subarray(Z))}break;case pa1.State.OP_PING:switch(X){case pa1.cc.NL:this.dispatcher.push({kind:pa1.Kind.PING}),this.drop=0,this.state=pa1.State.OP_START;break}break;case pa1.State.OP_I:switch(X){case pa1.cc.N:case pa1.cc.n:this.state=pa1.State.OP_IN;break;default:throw this.fail($.subarray(Z))}break;case pa1.State.OP_IN:switch(X){case pa1.cc.F:case pa1.cc.f:this.state=pa1.State.OP_INF;break;default:throw this.fail($.subarray(Z))}break;case pa1.State.OP_INF:switch(X){case pa1.cc.O:case pa1.cc.o:this.state=pa1.State.OP_INFO;break;default:throw this.fail($.subarray(Z))}break;case pa1.State.OP_INFO:switch(X){case pa1.cc.SPACE:case pa1.cc.TAB:this.state=pa1.State.OP_INFO_SPC;break;default:throw this.fail($.subarray(Z))}break;case pa1.State.OP_INFO_SPC:switch(X){case pa1.cc.SPACE:case pa1.cc.TAB:continue;default:this.state=pa1.State.INFO_ARG,this.as=Z}break;case pa1.State.INFO_ARG:switch(X){case pa1.cc.CR:this.drop=1;break;case pa1.cc.NL:{let Q;if(this.argBuf)Q=this.argBuf.bytes(),this.argBuf=void 0;else Q=$.subarray(this.as,Z-this.drop);this.dispatcher.push({kind:pa1.Kind.INFO,data:Q}),this.drop=0,this.as=Z+1,this.state=pa1.State.OP_START;break}default:if(this.argBuf)this.argBuf.writeByte(X)}break;default:throw this.fail($.subarray(Z))}}if((this.state===pa1.State.MSG_ARG||this.state===pa1.State.MINUS_ERR_ARG||this.state===pa1.State.INFO_ARG)&&!this.argBuf)this.argBuf=new in0.DenoBuffer($.subarray(this.as,Z-this.drop));if(this.state===pa1.State.MSG_PAYLOAD&&!this.msgBuf){if(!this.argBuf)this.cloneMsgArg();this.msgBuf=new in0.DenoBuffer($.subarray(this.as))}}cloneMsgArg(){let $=this.ma.subject.length,Z=this.ma.reply?this.ma.reply.length:0,X=new Uint8Array($+Z);if(X.set(this.ma.subject),this.ma.reply)X.set(this.ma.reply,$);if(this.argBuf=new in0.DenoBuffer(X),this.ma.subject=X.subarray(0,$),this.ma.reply)this.ma.reply=X.subarray($)}processMsgArgs($){if(this.hdr>=0)return this.processHeaderMsgArgs($);let Z=[],X=-1;for(let Q=0;Q<$.length;Q++)switch($[Q]){case pa1.cc.SPACE:case pa1.cc.TAB:case pa1.cc.CR:case pa1.cc.NL:if(X>=0)Z.push($.subarray(X,Q)),X=-1;break;default:if(X<0)X=Q}if(X>=0)Z.push($.subarray(X));switch(Z.length){case 3:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=void 0,this.ma.size=this.protoParseInt(Z[2],Jy);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],Jy);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}: ${nn0.TD.decode($)}`)}processHeaderMsgArgs($){let Z=[],X=-1;for(let Q=0;Q<$.length;Q++)switch($[Q]){case pa1.cc.SPACE:case pa1.cc.TAB:case pa1.cc.CR:case pa1.cc.NL:if(X>=0)Z.push($.subarray(X,Q)),X=-1;break;default:if(X<0)X=Q}if(X>=0)Z.push($.subarray(X));switch(Z.length){case 4:this.ma.subject=Z[0],this.ma.sid=this.protoParseInt(Z[1]),this.ma.reply=void 0,this.ma.hdr=this.protoParseInt(Z[2],Jy),this.ma.size=this.protoParseInt(Z[3],Jy);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],Jy),this.ma.size=this.protoParseInt(Z[4],Jy);break;default:throw this.fail($,"processHeaderMsgArgs Parse Error")}if(this.ma.sid<0)throw this.fail($,"processHeaderMsgArgs Bad or Missing Sid Error");if(this.ma.hdr<0||this.ma.hdr>this.ma.size)throw this.fail($,"processHeaderMsgArgs Bad or Missing Header Size Error");if(this.ma.size<0)throw this.fail($,"processHeaderMsgArgs Bad or Missing Size Error")}protoParseInt($,Z){if($.length===0||$.length>15)return-1;let X=0;for(let Q=0;Q<$.length;Q++){if($[Q]<ia1||$[Q]>za6)return-1;X=X*10+($[Q]-ia1)}return Z!==void 0&&X>Z?-1:X}}pa1.Parser=na1;pa1.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};pa1.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 U70=v((oa1)=>{Object.defineProperty(oa1,"__esModule",{value:!0});oa1.MsgHdrsImpl=void 0;oa1.canonicalMIMEHeaderKey=on0;oa1.headers=Ta6;var ta1=$G(),lJ=rB(),N70=ZG();function on0($){let F=!0,N=Array($.length);for(let U=0;U<$.length;U++){let B=$.charCodeAt(U);if(B===58||B<33||B>126)throw N70.InvalidArgumentError.format("header",`'${$[U]}' 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;N[U]=B,F=B==45}return String.fromCharCode(...N)}function Ta6($=0,Z=""){if($===0&&Z!=="")throw N70.InvalidArgumentError.format("code","is required");else if($>0&&Z==="")throw N70.InvalidArgumentError.format("description","is required");return new Ky($,Z)}var tn0="NATS/1.0";class Ky{_code;headers;_description;constructor($=0,Z=""){this._code=$,this._description=Z,this.headers=new Map}[Symbol.iterator](){return this.headers.entries()}size(){return this.headers.size}equals($){if($&&this.headers.size===$.headers.size&&this._code===$._code){for(let[Z,X]of this.headers){let Q=$.values(Z);if(X.length!==Q.length)return!1;let Y=[...X].sort(),G=[...Q].sort();for(let J=0;J<Y.length;J++)if(Y[J]!==G[J])return!1}return!0}return!1}static decode($){let Z=new Ky,Q=ta1.TD.decode($).split(`\r
1401
1401
  `),Y=Q[0];if(Y!==tn0){let G=Y.replace(tn0,"").trim();if(G.length>0){if(Z._code=parseInt(G,10),isNaN(Z._code))Z._code=0;let J=Z._code.toString();G=G.replace(J,""),Z._description=G.trim()}}if(Q.length>=1)Q.slice(1).map((G)=>{if(G){let J=G.indexOf(":");if(J>-1){let K=G.slice(0,J),W=G.slice(J+1).trim();Z.append(K,W)}}});return Z}toString(){if(this.headers.size===0&&this._code===0)return"";let $=tn0;if(this._code>0&&this._description!=="")$+=` ${this._code} ${this._description}`;for(let[Z,X]of this.headers)for(let Q=0;Q<X.length;Q++)$=`${$}\r
1402
1402
  ${Z}: ${X[Q]}`;return`${$}\r
@@ -2855,7 +2855,7 @@ Respond with the structured verdict and a short reason.`,Ag$;var Rg$=w(()=>{O4()
2855
2855
  ${G.join(`
2856
2856
  `)}`:Y}function Y36($){let Z=new Set;for(let X of $)for(let Q of X.split(`
2857
2857
  `)){let Y=Q.trim();if(/^Co-authored-by:\s/i.test(Y))Z.add(Y)}return[...Z]}var Kh$=200,oJ6=12,aJ6,eJ6=300,i91=3;var p91=w(()=>{h_();FA0();aJ6={aheadBy:0,behindBy:0,files:[]}});function J36($){if(!$||$.includes(".."))return!1;return G36.test($)}function Fh$($){let Z=typeof $.__resolveType==="string"?$.__resolveType:null;if(!Z||!J36(Z))return null;let{__resolveType:X,...Q}=$;return{resolveType:Z,payload:Q}}function Nh$($,Z){return`${$.replace(/\/+$/,"")}/deco/invoke/${Z}`}var G36;var Uh$=w(()=>{G36=/^[\w./@-]+$/});function n91($){let Z;try{Z=new URL($)}catch{return null}if(!Z.hostname.endsWith(".localhost"))return null;let X=Z.host;return Z.hostname="127.0.0.1",{url:Z.toString(),hostHeader:X}}function qa($,Z){let X=$?.githubRepo;if(!X?.owner||!X?.name)return null;if(!X.connectionId)return X;if(!Z.includes(X.connectionId))return null;return X}async function Oh$($,Z,X,Q){if(!Q.connectionId)throw new c_("Push requires a connected GitHub account. Connect mcp-github for this project and restart the sandbox.");let Y=$.organization?.id;if(!Y)throw new c_(Y9);await sO({ctx:$,connectionId:Q.connectionId,organizationId:Y,forceRefresh:!0,onLegacyMintError:(F)=>{let N=F instanceof Error?F.message:Y9;throw new c_(N)}});let{cloneUrl:G,gitUserName:J,gitUserEmail:W}=await eO(Q.connectionId,Q.owner,Q.name,$.db,$.vault).catch((F)=>{let{code:N,message:U}=_4$(F instanceof Error?F.message:String(F));throw N?new c_(U):F}),K=Yu($),H=await Z.proxyDaemonRequest(X,"/_sandbox/config",{method:"PUT",headers:new Headers({"content-type":"application/json"}),body:JSON.stringify({git:{repository:{cloneUrl:G},identity:{userName:J,userEmail:W}},...K?{operator:K}:{}})});if(!H.ok){let F=await LB(H,W36).catch(()=>H.statusText);throw Error(`Failed to refresh sandbox git credentials (${H.status}): ${F}`)}}var W36=10485760,c_;var t91=w(()=>{pG();sP0();$n();Bm0();ex();c_=class c_ extends Error{constructor($){super($);this.name="GitPushAuthError"}}});function H36($){let Z=$.startsWith("thread:")?$.slice(7):$;if(!Z||Z.length>255||Z.includes("..")||Z.startsWith("/")||Z.endsWith("/")||Z.endsWith(".lock")||!K36.test(Z))throw Error(`Invalid branch name: ${$}`)}function l_($){return AbortSignal.any([$.req.raw.signal,AbortSignal.timeout(N36)])}function U36($,Z,X){let Q=w5($)[Z]?.[X];return!!Q&&Object.keys(IY(Q)).length>0}function d_($){let{runner:Z}=$.get("vmClaim");if(!Z)return $.json({error:"No sandbox runner configured"},503);return Z}async function Fu($){let{virtualMcpMetadata:Z,connectionIds:X}=$.get("vmClaim"),Q=$.var.studioContext,Y=qa(Z,X);if(!Y)throw new h4(404,"AUTH","repo","Project has no GitHub repository");let G=t(Q);return $A0(Q,G.id,Y)}function o91($,Z){if(Z instanceof eP0)return $.json({error:Z.message},429,{..._5,...Z.retryAfterMs===null?{}:{"Retry-After":String(Math.ceil(Z.retryAfterMs/1000))}});if(Z instanceof h4){let Q=Z.status===404?404:Z.status===409||Z.status===422?409:502;return $.json({error:Z.message},Q,_5)}let X=Z instanceof Error?Z.message:String(Z);return $.json({error:X},502,_5)}async function Dh$($,Z,X){let Q;try{Q=await fetch(Z,X)}catch{return $.json({error:"Preview unreachable"},502)}let Y;try{Y=await Q.text()}catch{return $.json({error:"Preview unreachable"},502)}return new Response(Y,{status:Q.status,headers:{"content-type":Q.headers.get("content-type")??"application/json"}})}async function Lh$($){try{let Z=await Fu($),X=await NA0(Z,$.get("vmClaim").branch);return $.json(X,200,_5)}catch(Z){return o91($,Z)}}function Ma($,Z){let Q=(BA0.get($)??Promise.resolve()).catch(()=>{}).then(Z),Y=Q.catch(()=>{});return BA0.set($,Y),Y.finally(()=>{if(BA0.get($)===Y)BA0.delete($)}),Q}async function iZ($,Z,X){if($.get("vmClaim").fastPreview)return $.json({error:"sandbox not found: Fast Preview projects are sandbox-less"},404,_5);let Q=d_($);if(Q instanceof Response)return Q;let{claimName:Y,userId:G,projectRef:J}=$.get("vmClaim"),W=X?.method??"POST",K=null,H=new Headers;if(X?.jsonBody!==void 0)K=X.jsonBody,H.set("content-type","application/json");else if(X?.forwardJsonBody)K=await $.req.text(),H.set("content-type","application/json");let F=X?.signal,N={method:W,headers:H,body:K,...F?{signal:F}:{}},U=async()=>{let O=await Q.proxyDaemonRequest(Y,Z,N);if(X?.map404to410&&O.status===404){try{await O.body?.cancel()}catch{}if(await Q.adoptLiveClaim?.({userId:G,projectRef:J},Y))O=await Q.proxyDaemonRequest(Y,Z,N);if(O.status===404){try{await O.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",..._5}})}}let B=await O.text(),D=X?.redactRepoDirUnlessDesktop&&Q.kind!=="user-desktop"?B36(B):B,L=O.headers.get("content-type")??"application/json";return new Response(D,{status:O.status,headers:{"content-type":L,..._5}})};try{if(F){let O=U();return O.catch(()=>{}),await Promise.race([O,new Promise((D,L)=>{if(F.aborted)return L(F.reason);F.addEventListener("abort",()=>L(F.reason),{once:!0})})])}return await U()}catch(O){let B=O instanceof Error?O.message:String(O);return $.json({error:`Daemon unreachable: ${B}`},502)}}function B36($){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 wA0($,Z,X,Q="GET",Y){let G=await $.proxyDaemonRequest(Z,X,{method:Q,headers:new Headers,body:null});if(G.status===404&&Y){try{await G.body?.cancel()}catch{}if(await $.adoptLiveClaim?.(Y,Z))G=await $.proxyDaemonRequest(Z,X,{method:Q,headers:new Headers,body:null})}if(G.status===404){try{await G.body?.cancel()}catch{}throw Error("SANDBOX_GONE")}let J=await G.text();if(!G.ok){let W=`Daemon error (${G.status})`;try{W=JSON.parse(J).error??W}catch{}throw Error(W)}return JSON.parse(J)}function w36($){return Eh$.includes($)}var K36,Bh$=524288,F36=65536,N36=1e4,wh$=2000,O36,BA0,_5,Eh$,jh$=()=>{let $=new F1;$.use("/:virtualMcpId/:branch/*",O36),$.post("/:virtualMcpId/:branch/write",(X)=>iZ(X,"/_sandbox/write",{forwardJsonBody:!0,signal:l_(X)})),$.post("/:virtualMcpId/:branch/unlink",(X)=>iZ(X,"/_sandbox/unlink",{forwardJsonBody:!0,signal:l_(X)})),$.post("/:virtualMcpId/:branch/mkdir",(X)=>iZ(X,"/_sandbox/mkdir",{forwardJsonBody:!0,signal:l_(X)})),$.post("/:virtualMcpId/:branch/rename",(X)=>iZ(X,"/_sandbox/rename",{forwardJsonBody:!0,signal:l_(X)})),$.post("/:virtualMcpId/:branch/read",(X)=>iZ(X,"/_sandbox/read",{forwardJsonBody:!0,signal:l_(X)})),$.post("/:virtualMcpId/:branch/glob",(X)=>iZ(X,"/_sandbox/glob",{forwardJsonBody:!0,signal:l_(X)})),$.post("/:virtualMcpId/:branch/grep",(X)=>iZ(X,"/_sandbox/grep",{forwardJsonBody:!0,signal:l_(X)})),$.post("/:virtualMcpId/:branch/exec/:script",async(X)=>{let Q=X.req.param("script");if(!Q)return X.json({error:"missing script name"},400);return iZ(X,`/_sandbox/exec/${encodeURIComponent(Q)}`)}),$.post("/:virtualMcpId/:branch/exec/:script/kill",async(X)=>{let Q=X.req.param("script");if(!Q)return X.json({error:"missing script name"},400);return iZ(X,`/_sandbox/exec/${encodeURIComponent(Q)}/kill`)}),$.get("/:virtualMcpId/:branch/config",(X)=>iZ(X,"/_sandbox/config",{method:"GET",map404to410:!0,redactRepoDirUnlessDesktop:!0})),$.put("/:virtualMcpId/:branch/config",(X)=>iZ(X,"/_sandbox/config",{method:"PUT",forwardJsonBody:!0,map404to410:!0})),$.post("/:virtualMcpId/:branch/setup/:step",async(X)=>{let Q=X.req.param("step");if(!Q||!w36(Q))return X.json({error:`step must be one of: ${Eh$.join(", ")}`},400);if(Q==="start"){let Y=X.get("vmClaim");if(Y.runner){let G=t(X.var.studioContext),J=Ly(Y.virtualMcpMetadata);try{await eO0({ctx:X.var.studioContext,runner:Y.runner,handle:Y.claimName,orgId:G.id,userId:Y.callerUserId,entries:J})}catch(W){let K=W instanceof Error?W.message:String(W);return X.json({error:`Failed to push env to daemon: ${K}`},502)}}}return iZ(X,`/_sandbox/setup/${Q}`,{signal:X.req.raw.signal,map404to410:!0})}),$.get("/:virtualMcpId/:branch/events",(X)=>{let Q=X.get("vmClaim");if(!Q.runner)return IN(X,async(Y)=>{await Y.writeSSE({event:"phase",data:JSON.stringify({kind:"failed",reason:"unknown",message:"No sandbox runner configured on this studio instance."})})});return Dg$(X,{ctx:X.var.studioContext,claimName:Q.claimName,runner:Q.runner,virtualMcpId:Q.virtualMcpId,branch:Q.branch,userId:Q.userId,projectRef:Q.projectRef,virtualMcpMetadata:Q.virtualMcpMetadata})}),$.get("/:virtualMcpId/:branch/git/status",(X)=>{if(X.get("vmClaim").fastPreview)return Lh$(X);return Z(X)});let Z=(X)=>iZ(X,"/_sandbox/git/status",{method:"GET",map404to410:!0,signal:AbortSignal.any([X.req.raw.signal,AbortSignal.timeout(wh$)])});return $.post("/:virtualMcpId/:branch/git/status",(X)=>{if(X.get("vmClaim").fastPreview)return Lh$(X);return iZ(X,"/_sandbox/git/status",{map404to410:!0,signal:AbortSignal.any([X.req.raw.signal,AbortSignal.timeout(wh$)])})}),$.post("/:virtualMcpId/:branch/git/diff",async(X)=>{let Q=X.get("vmClaim");if(Q.fastPreview)try{let Y=await X.req.json().catch(()=>({})),G=await Fu(X),J=await UA0(G,Q.branch,Y.base);return X.json(J,200,_5)}catch(Y){return o91(X,Y)}return iZ(X,"/_sandbox/git/diff",{forwardJsonBody:!0,map404to410:!0})}),$.post("/:virtualMcpId/:branch/git/publish",async(X)=>{if(X.get("vmClaim").fastPreview)return X.json({ok:!0},200,_5);let Q=d_(X);if(Q instanceof Response)return Q;let{claimName:Y,virtualMcpMetadata:G,connectionIds:J}=X.get("vmClaim"),W=X.var.studioContext;return Ma(Y,async()=>{try{await q91(W,Q,Y);let K=qa(G,J);if(K)await Oh$(W,Q,Y,K)}catch(K){if(K instanceof c_)return X.json({error:K.message},403,_5);let H=K instanceof Error?K.message:String(K);return X.json({error:H},502,_5)}return iZ(X,"/_sandbox/git/publish",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/discard",async(X)=>{let Q=X.get("vmClaim");if(Q.fastPreview)return Ma(Q.claimName,async()=>{let Y=await X.req.json().catch(()=>({})),G=Array.isArray(Y.filepaths)?Y.filepaths.filter((J)=>typeof J==="string"):[];if(G.length===0)return X.json({error:"filepaths is required"},400,_5);try{let J=await Fu(X);return await Hh$(J,Q.branch,G),X.json({ok:!0},200,_5)}catch(J){let W=J instanceof h4&&J.status===409?409:502,K=J instanceof Error?J.message:String(J);return X.json({error:K},W,_5)}});return Ma(Q.claimName,()=>iZ(X,"/_sandbox/git/discard",{forwardJsonBody:!0,map404to410:!0}))}),$.post("/:virtualMcpId/:branch/git/rebase",async(X)=>{let Q=X.get("vmClaim");if(Q.fastPreview)return Ma(Q.claimName,async()=>{try{let W=await X.req.json().catch(()=>({})),K=await Fu(X),H=W.base??await K.getDefaultBranch();return await OA0(K,Q.branch,H),X.json({ok:!0},200,_5)}catch(W){return o91(X,W)}});let Y=d_(X);if(Y instanceof Response)return Y;let{claimName:G}=X.get("vmClaim"),J=X.var.studioContext;return Ma(G,async()=>{try{await q91(J,Y,G)}catch(W){let K=W instanceof Error?W.message:String(W);return X.json({error:K},502,_5)}return iZ(X,"/_sandbox/git/rebase",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/suggest-commit",k9({maxSize:Bh$,onError:(X)=>X.json({error:"Payload too large"},413,_5)}),async(X)=>{let Q=X.get("vmClaim"),Y=null;if(!Q.fastPreview){let H=d_(X);if(H instanceof Response)return H;Y=H}let{claimName:G,userId:J,projectRef:W}=Q,K=X.var.studioContext;try{let H=await X.req.json().catch(()=>({})),F=H.status,N=H.diff,U=N!=null&&typeof N.diffs==="object"&&N.diffs!==null,[O,B]=V91(F)&&U?[F,N]:Y?await Promise.all([wA0(Y,G,"/_sandbox/git/status","GET",{userId:J,projectRef:W}),wA0(Y,G,"/_sandbox/git/diff","GET",{userId:J,projectRef:W})]):await(async()=>{let L=await Fu(X);return Promise.all([NA0(L,Q.branch),UA0(L,Q.branch)])})(),D=await Pg$(K,O,B);return X.json(D,200,_5)}catch(H){let F=H instanceof Error?H.message:String(H);if(F==="SANDBOX_GONE")return X.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,_5);return X.json({error:F},502,_5)}}),$.post("/:virtualMcpId/:branch/git/judge-review",k9({maxSize:Bh$,onError:(X)=>X.json({error:"Payload too large"},413,_5)}),async(X)=>{let Q=X.get("vmClaim"),Y=null;if(!Q.fastPreview){let H=d_(X);if(H instanceof Response)return H;Y=H}let{claimName:G,userId:J,projectRef:W}=Q,K=X.var.studioContext;try{let H=await X.req.json().catch(()=>({})),F=H.status,N=H.diff,U=N!=null&&typeof N.diffs==="object"&&N.diffs!==null,[O,B]=V91(F)&&U?[F,N]:Y?await Promise.all([wA0(Y,G,"/_sandbox/git/status","GET",{userId:J,projectRef:W}),wA0(Y,G,"/_sandbox/git/diff","GET",{userId:J,projectRef:W})]):await(async()=>{let L=await Fu(X);return Promise.all([NA0(L,Q.branch),UA0(L,Q.branch)])})(),D=await Tg$(K,O,B,typeof H.language==="string"?H.language:void 0);return X.json(D,200,_5)}catch(H){let F=H instanceof Error?H.message:String(H);if(F==="SANDBOX_GONE")return X.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,_5);return X.json({error:F},502,_5)}}),$.get("/:virtualMcpId/:branch/preview-fetch",async(X)=>{let Q=d_(X);if(Q instanceof Response)return Q;let{claimName:Y}=X.get("vmClaim"),G=X.req.query("path");if(!G||!G.startsWith("/")||G.startsWith("//")||G.includes("..")||G.includes("\\"))return X.json({error:"Path not allowed"},403);let J;try{J=await Q.getPreviewUrl(Y)}catch{return X.json({error:"Preview not available"},502)}if(!J)return X.json({error:"Preview not available"},502);let W=J.replace(/\/+$/,""),K=n91(`${W}${G}`);return Dh$(X,K?.url??`${W}${G}`,{...K?{headers:{host:K.hostHeader}}:{}})}),$.post("/:virtualMcpId/:branch/preview-invoke",k9({maxSize:F36,onError:(X)=>X.json({error:"Payload too large"},413)}),async(X)=>{let Q=d_(X);if(Q instanceof Response)return Q;let{claimName:Y}=X.get("vmClaim"),G;try{G=await Q.getPreviewUrl(Y)}catch{return X.json({error:"Preview not available"},502)}if(!G)return X.json({error:"Preview not available"},502);let J;try{J=await X.req.json()}catch{return X.json({error:"Invalid JSON body"},400)}if(!J||typeof J!=="object"||Array.isArray(J))return X.json({error:"Invalid JSON body"},400);let W=Fh$(J);if(!W)return X.json({error:"Invalid or missing __resolveType"},400);let K=Nh$(G,W.resolveType),H=n91(K);return Dh$(X,H?.url??K,{method:"POST",headers:{"content-type":"application/json",...H?{host:H.hostHeader}:{}},body:JSON.stringify(W.payload),signal:AbortSignal.timeout(30000)})}),$};var zh$=w(()=>{w8();DN();Qu();I91();MF();Bg$();v3();pX();P8();eB0();OB();wg$();Lg$();xp0();sp();_91();Rg$();y91();h_();p91();Uh$();t91();K36=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;O36=aP0(async($,Z)=>{let X=$.var.studioContext;try{r(X)}catch{return $.json({error:"Unauthorized"},401)}let Q=Y1(X);if(!Q)return $.json({error:"Unauthorized"},401);let Y;try{Y=t(X)}catch{return $.json({error:"Organization scope required"},403)}let G=$.req.param("virtualMcpId"),J=$.req.param("branch");if(!G||!J)return $.json({error:"virtualMcpId and branch are required"},400);try{H36(J)}catch(O){let B=O instanceof Error?O.message:String(O);return $.json({error:B},400)}let W=await X.storage.virtualMcps.findById(G);if(!W||W.organization_id!==Y.id)return $.json({error:"Virtual MCP not found"},404);let K=wp({orgId:Y.id,virtualMcpId:G,branch:J}),H=await yF(X,J,Q),F=Og$({userId:H,projectRef:K}),N=W.metadata??null;if(tW$(N).fastPreviewCapability&&!U36(N,H,J))return $.set("vmClaim",{claimName:F,callerUserId:Q,runner:null,virtualMcpId:G,branch:J,userId:H,projectRef:K,virtualMcpMetadata:N,connectionIds:W.connections?.map((O)=>O.connection_id)??[],fastPreview:!0}),Z();let U;try{U=(await sX(X,{userId:H,branch:J,virtualMcpMetadata:N})).provider}catch{U=null}if(!U)return $.json({error:"No sandbox runner found"},404);return $.set("vmClaim",{claimName:F,callerUserId:Q,runner:U,virtualMcpId:G,branch:J,userId:H,projectRef:K,virtualMcpMetadata:N,connectionIds:W.connections?.map((O)=>O.connection_id)??[]}),Z()});BA0=new Map;_5={"Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache"};Eh$=["clone","install","start"]});function Ph$($,Z,X){let Q=r91.get($);if(!Q)Q={pending:null,running:!1},r91.set($,Q);if(!Q.pending)Q.pending={set:new Map,del:new Set,deps:Z,resolvers:[],rejecters:[]};let Y=Q.pending;Y.deps=Z;for(let[J,W]of Object.entries(X.set??{}))Y.set.set(J,W),Y.del.delete(J);for(let J of X.delete??[])Y.del.add(J),Y.set.delete(J);let G=new Promise((J,W)=>{Y.resolvers.push(J),Y.rejecters.push(W)});if(!Q.running)L36($,Q);return G}async function L36($,Z){Z.running=!0;try{while(Z.pending){let X=Z.pending;Z.pending=null;try{let Q=await E36(X);for(let Y of X.resolvers)Y(Q)}catch(Q){for(let Y of X.rejecters)Y(Q)}}}finally{if(Z.running=!1,!Z.pending)r91.delete($)}}async function E36($){let{client:Z,branch:X,packagePath:Q}=$.deps;for(let Y=0;;Y++){let G=await Hu(Z,X),J=await Z.getCommitTreeSha(G),W=await Z.getTreeRecursive(J),K=d91(W,Q),H=[],F=new Map(K.map((B)=>[B.path,{stem:B.stem,sha:B.sha}]));for(let[B,D]of $.set){let L=m91(K,B),E=`${JSON.stringify(D,null,2)}
2858
- `,j=await Z.createBlob(E);await Gh$(Z.owner,Z.repo,j,E);let z=L[0]??`${HA0(Q)}/${g91(B)}.json`;H.push({path:z,mode:"100644",type:"blob",sha:j});let A=z.slice(z.lastIndexOf("/")+1,-5);F.set(z,{stem:A,sha:j,content:E});for(let P of L.slice(1))H.push({path:P,mode:"100644",type:"blob",sha:null}),F.delete(P)}for(let B of $.del)for(let D of m91(K,B))H.push({path:D,mode:"100644",type:"blob",sha:null}),F.delete(D);if(H.length===0)return G;let N=Q?`${Q}/.deco/blocks.gen.json`:".deco/blocks.gen.json";if(W.some((B)=>B.type==="blob"&&B.path===N)){let B=await Promise.all([...F.values()].map(async(j)=>({stem:j.stem,content:j.content??await Z.getBlobText(j.sha)}))),{decofile:D,skipped:L}=Aa(B);if(L.length>0)console.warn("decofile gen: dropped blocks that were not valid JSON",{repo:`${Z.owner}/${Z.repo}`,branch:X,packagePath:Q,blocks:L.map((j)=>j.key)});let E=await Z.createBlob(D);H.push({path:N,mode:"100644",type:"blob",sha:E})}let U=await Z.createTree(J,H),O=await Z.createCommit({message:j36($),treeSha:U,parentShas:[G]});try{return await Z.updateRef(X,O),O}catch(B){if(!(B instanceof h4&&B.status===422)||Y>=D36-1)throw B;await k$(tZ(2000,200,Y,2,0.5))}}}function j36($){let Z=(Y)=>{let G=Y.slice(0,3).join(", ");return Y.length>3?`${G} (+${Y.length-3} more)`:G},X=[];if($.set.size>0)X.push(`update ${Z([...$.set.keys()])}`);if($.del.size>0)X.push(`delete ${Z([...$.del])}`);let Q=`chore(decofile): ${X.join("; ")}`;return Gm0(Q,$.deps.coAuthor)}var D36=3,r91;var Ah$=w(()=>{iO0();XA0();c4();h_();FA0();r91=new Map});import{createHmac as Th$,randomBytes as z36,timingSafeEqual as P36}from"crypto";function Rh$(){if(DA0)return DA0;let $;try{let Z=b0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return DA0=$?Buffer.from($):z36(32),DA0}function a91($){let Z=$.nowMs??Date.now(),X={o:$.organizationId,m:$.virtualMcpId,b:$.branch,e:Math.floor((Z+A36)/1000)},Q=Buffer.from(JSON.stringify(X)).toString("base64url"),Y=Th$("sha256",Rh$()).update(Q).digest("base64url");return`${Q}.${Y}`}function Ih$($,Z){let X=$.indexOf(".");if(X<0)return!1;let Q=$.slice(0,X),Y=Buffer.from($.slice(X+1)),G=Buffer.from(Th$("sha256",Rh$()).update(Q).digest("base64url"));if(Y.length!==G.length||!P36(Y,G))return!1;let J;try{J=JSON.parse(Buffer.from(Q,"base64url").toString())}catch{return!1}let W=Math.floor((Z.nowMs??Date.now())/1000);return J.o===Z.organizationId&&J.m===Z.virtualMcpId&&J.b===Z.branch&&typeof J.e==="number"&&J.e>=W}var A36=21600000,DA0=null;var qh$=w(()=>{I$()});import{z as Nu}from"zod";function R36($){return $.length>0&&$.length<=255&&!$.includes("..")&&!$.endsWith("/")&&!$.endsWith(".lock")&&T36.test($)}function kh$($){return $.req.header("x-forwarded-host")??new URL($.req.url).host}async function LA0($){let Z=$.get("decofileScope");return $A0($.var.studioContext,Z.organizationId,Z.githubRepo)}function EA0($,Z){if(Z instanceof h4){let Q=Z.status===404?404:Z.status===409?409:Z.status===422?409:502;return $.json({error:Z.message},Q)}let X=Z instanceof Error?Z.message:String(Z);return $.json({error:X},500)}function Vh$(){let $=new F1;return $.use("/:virtualMcpId/:branch",Mh$),$.use("/:virtualMcpId/:branch/*",Mh$),$.get("/:virtualMcpId/:branch",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await LA0(Z),Y=await Jh$(Q,X.branch,X.packagePath,{createBranchIfMissing:!!X.userId}),G={ETag:`"${Y.sha}"`,"Cache-Control":"no-store","Access-Control-Allow-Origin":"*"};if(Z.req.header("if-none-match")===`"${Y.sha}"`)return Z.body(null,304,G);if(!X.userId)return Z.body(Y.decofile,200,{...G,"content-type":"application/json"});let J=a91({organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,branch:X.branch});return Z.body(`{"version":${JSON.stringify(Y.sha)},"token":${JSON.stringify(J)},"apiHost":${JSON.stringify(kh$(Z))},"decofile":${Y.decofile}}`,200,{...G,"content-type":"application/json"})}catch(Q){return EA0(Z,Q)}}),$.patch("/:virtualMcpId/:branch",async(Z)=>{let X=Z.get("decofileScope"),Q=Z.var.studioContext,Y=I36.safeParse(await Z.req.json().catch(()=>null));if(!Y.success)return Z.json({error:"Invalid body",details:Y.error.issues},400);let G=Y.data;for(let J of[...Object.keys(G.set??{}),...G.delete??[]])try{ZA0(J)}catch(W){let K=W instanceof Error?W.message:String(W);return Z.json({error:K},400)}for(let[J,W]of Object.entries(G.set??{}))if(typeof W!=="object"||W===null||Array.isArray(W))return Z.json({error:`Block "${J}" must be a JSON object`},400);try{let J=await LA0(Z),W=await Ph$(`${X.organizationId}/${X.virtualMcpId}/${X.branch}`,{client:J,branch:X.branch,packagePath:X.packagePath,coAuthor:Yu(Q)},G),K=a91({organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,branch:X.branch});return Z.json({version:W,token:K,apiHost:kh$(Z)})}catch(J){return EA0(Z,J)}}),$.post("/:virtualMcpId/:branch/publish",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await LA0(Z),Y=await Q.getDefaultBranch();if(Y===X.branch)return Z.json({error:"Branch is already the default branch"},400);let G=`chore(decofile): publish ${X.branch}`;try{let J;try{J=await Q.mergeBranch(Y,X.branch,G)}catch(W){if(!(W instanceof h4&&W.status===409))throw W;await OA0(Q,X.branch,Y),J=await Q.mergeBranch(Y,X.branch,G)}return J?Z.json({result:"merged",sha:J}):Z.json({result:"up-to-date"})}catch(J){if(J instanceof h4&&J.status===409)return Z.json({error:"merge-conflict"},409);if(J instanceof h4&&J.status===405){let K=await Q.findOpenPullRequest(Y,X.branch)??await Q.createPullRequest({base:Y,head:X.branch,title:`Publish ${X.branch}`});return Z.json({result:"pull-request",number:K.number,url:K.html_url})}throw J}}catch(Q){return EA0(Z,Q)}}),$.get("/:virtualMcpId/:branch/status",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await LA0(Z),Y=await Q.getDefaultBranch();if(Y===X.branch)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0});try{let{aheadBy:G,behindBy:J}=await Q.compare(Y,X.branch);return Z.json({baseBranch:Y,aheadBy:G,behindBy:J})}catch(G){if(G instanceof h4&&G.status===404)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0});throw G}}catch(Q){return EA0(Z,Q)}}),$}var T36,I36,Mh$;var Sh$=w(()=>{XA0();w8();I91();sP0();t91();y91();Ah$();qh$();p91();h_();FA0();T36=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;I36=Nu.object({set:Nu.record(Nu.string(),Nu.unknown()).optional(),delete:Nu.array(Nu.string()).optional()}).refine(($)=>Object.keys($.set??{}).length>0||($.delete?.length??0)>0,{message:"Patch must set or delete at least one block"}),Mh$=aP0(async($,Z)=>{let X=$.var.studioContext,Q=X.organization;if(!Q)return $.json({error:"Organization scope required"},500);let Y=$.req.param("virtualMcpId"),G=$.req.param("branch");if(!Y||!G)return $.json({error:"virtualMcpId and branch are required"},400);if(!R36(G))return $.json({error:`Invalid branch name: ${G}`},400);let J=X.auth?.user?.id??null;if(!J){let O=$.req.query("token");if(!($.req.method==="GET"&&!$.req.path.match(/\/(publish|status)$/)))return $.json({error:"Unauthorized"},401);if(!O||!Ih$(O,{organizationId:Q.id,virtualMcpId:Y,branch:G}))return $.json({error:"Unauthorized"},401)}let W=await X.storage.virtualMcps.findById(Y);if(!W||W.organization_id!==Q.id)return $.json({error:"Virtual MCP not found"},404);let K=W.metadata??null;if(!sB0(K)||K?.fastPreview!==!0)return $.json({error:"Fast Preview is not enabled for this project"},404);let F=W.connections?.map((O)=>O.connection_id)??[],N=qa(K,F);if(!N)return $.json({error:"Project has no GitHub repository"},404);let U=K?.runtime;return $.set("decofileScope",{organizationId:Q.id,virtualMcpId:Y,branch:G,packagePath:U?.path?.replace(/^\/+|\/+$/g,"")||null,githubRepo:N,userId:J}),Z()})});var Ch$=($)=>{let Z=new F1;if(Z.use("*",S_),Z.route("/",BP0()),Z.route("/",tf$()),Z.route("/",$g$()),Z.route("/",ay$()),Z.route("/",tP0()),Z.route("/tools",Wg$()),Z.route("/",Yg$()),Z.route("/",Sy$({kvStorage:$.kvStorage})),Z.route("/",ky$()),Z.route("/fs",my$({getConnection:$.getNatsConnection})),Z.route("/sandbox",jh$()),Z.route("/decofile",Vh$()),Z.route("/",ty$()),Z.route("/deco-sites",DP0()),Z.route("/sso",KP0()),Z.route("/",oP0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",uf$()),$.mountDevAssets)Z.route("/dev-assets",LP0({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("/",P_$()),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",py$()),Z.route("/mcp",LD0()),Z.route("/mcp/self",nP0()),Z.route("/mcp",zD0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var _h$=w(()=>{w8();n61();cf$();a61();EP0();tr();i61();Vy$();Cy$();iy$();Zt();y61();PD0();E91();ny$();oy$();sy$();Zg$();Gg$();z91();Kg$();P91();ED0();zh$();Sh$()});function q36($){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 M36=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},vh$=()=>{let $=new F1;return $.use("*",M36),$.get("/",async(Z)=>{let X=b0(),Q=X.decoSupabaseUrl,Y=X.decoSupabaseServiceKey;if(!Q||!Y)return Z.json({apps:[]});try{let G=await mZ(Q,Y,"apps?select=name,title,description,logo,category,vendors(alias,url)");return Z.json({apps:q36(G)})}catch(G){return console.error("[deco-apps] GET error:",G),Z.json({error:"Failed to fetch apps"},502)}}),$};var fh$=w(()=>{w8();I$();Nz0()});import{z as M1}from"zod";function KH($,Z="invalid_request_error",X=null,Q=null){return{error:{message:$,type:Z,param:X,code:Q}}}function y36($){if(!$)return null;let Z=$.indexOf(":");if(Z===-1)return{credentialId:null,modelId:$};let X=$.substring(0,Z),Q=$.substring(Z+1);if(!X||!Q)return null;return{credentialId:X,modelId:Q}}function g36($,Z,X){try{return JSON.parse($)}catch{throw new yh$(`Invalid JSON in tool call arguments for function '${X}' (tool_call_id: ${Z}): ${$}`)}}function h36($){let Z={};for(let X of $)if(X.role==="assistant"&&X.tool_calls)for(let Q of X.tool_calls)Z[Q.id]=Q.function.name;return $.map((X)=>{switch(X.role){case"system":return{role:"system",content:X.content};case"user":if(typeof X.content==="string")return{role:"user",content:X.content};return{role:"user",content:X.content.map((Y)=>{if(Y.type==="text")return{type:"text",text:Y.text};return{type:"image",image:Y.image_url.url}})};case"assistant":if(X.tool_calls&&X.tool_calls.length>0)return{role:"assistant",content:X.tool_calls.map((Y)=>({type:"tool-call",toolCallId:Y.id,toolName:Y.function.name,input:g36(Y.function.arguments,Y.id,Y.function.name)}))};return{role:"assistant",content:X.content??""};case"tool":let Q=Z[X.tool_call_id]??"unknown";return{role:"tool",content:[{type:"tool-result",toolCallId:X.tool_call_id,toolName:Q,output:{type:"text",value:X.content}}]}}})}function u36($){let Z=$.map((X)=>{let Q=X.function.parameters?gY(X.function.parameters):gY({type:"object",properties:{}});return[X.function.name,R$({description:X.function.description,inputSchema:Q})]});return Object.fromEntries(Z)}function c36($){if(!$)return;return{openai:{response_format:$}}}function l36(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function bh$($,Z,X,Q,Y,G){let J={model:$,messages:Z,tools:X,temperature:Q.temperature,maxTokens:Q.max_tokens,topP:Q.top_p,frequencyPenalty:Q.frequency_penalty,presencePenalty:Q.presence_penalty,stopSequences:Q.stop?Array.isArray(Q.stop)?Q.stop:[Q.stop]:void 0,abortSignal:G};return Y?{...J,providerOptions:Y}:J}function xh$($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var k36=256,V36,S36,C36,_36,v36,f36,b36,x36,yh$,gh$,hh$;var uh$=w(()=>{O4();w8();Qu();YN();V36=M1.object({type:M1.literal("function"),function:M1.object({name:M1.string(),description:M1.string().optional(),parameters:M1.record(M1.string(),M1.unknown()).optional()})}),S36=M1.object({id:M1.string(),type:M1.literal("function"),function:M1.object({name:M1.string(),arguments:M1.string()})}),C36=M1.discriminatedUnion("role",[M1.object({role:M1.literal("system"),content:M1.string(),name:M1.string().optional()}),M1.object({role:M1.literal("user"),content:M1.union([M1.string(),M1.array(M1.union([M1.object({type:M1.literal("text"),text:M1.string()}),M1.object({type:M1.literal("image_url"),image_url:M1.object({url:M1.string(),detail:M1.string().optional()})})]))]),name:M1.string().optional()}),M1.object({role:M1.literal("assistant"),content:M1.string().nullable().optional(),name:M1.string().optional(),tool_calls:M1.array(S36).optional()}),M1.object({role:M1.literal("tool"),content:M1.string(),tool_call_id:M1.string()})]),_36=M1.object({type:M1.literal("text")}),v36=M1.object({type:M1.literal("json_object")}),f36=M1.object({type:M1.literal("json_schema"),json_schema:M1.object({name:M1.string(),description:M1.string().optional(),schema:M1.record(M1.string(),M1.unknown()),strict:M1.boolean().optional()})}),b36=M1.union([_36,v36,f36]),x36=M1.object({model:M1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:M1.array(C36),stream:M1.boolean().optional().default(!1),temperature:M1.number().min(0).max(2).optional(),max_tokens:M1.number().positive().optional(),top_p:M1.number().min(0).max(1).optional(),frequency_penalty:M1.number().min(-2).max(2).optional(),presence_penalty:M1.number().min(-2).max(2).optional(),stop:M1.union([M1.string(),M1.array(M1.string())]).optional(),tools:M1.array(V36).optional(),tool_choice:M1.union([M1.literal("auto"),M1.literal("none"),M1.literal("required"),M1.object({type:M1.literal("function"),function:M1.object({name:M1.string()})})]).optional(),response_format:b36.optional(),user:M1.string().optional()});yh$=class yh$ extends Error{constructor($){super($);this.name="MessageConversionError"}};gh$=new F1;gh$.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),X=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(KH("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(KH("Organization context is required. Ensure your API key has organization metadata.","invalid_request_error","organization"),400);if((Z.organization.slug??Z.organization.id)!==X)return $.json(KH("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Q=await $.req.json(),Y=x36.safeParse(Q);if(!Y.success){let L=Y.error.issues[0]??{message:"Invalid request",path:[]};return $.json(KH(`Invalid request: ${L.message}`,"invalid_request_error",L.path.length>0?L.path.join("."):null),400)}let G=Y.data,J=y36(G.model);if(!J)return $.json(KH("Invalid model format. Expected 'model_id' or 'credential_id:model_id' (e.g., 'claude-sonnet-4-6' or 'key_abc123:claude-sonnet-4-6')","invalid_request_error","model"),400);let{credentialId:W}=J,{modelId:K}=J;if(!W){let E=(await Z.storage.aiProviderKeys.list({organizationId:Z.organization.id})).find((j)=>yD(j.providerId));if(!E)return $.json(KH("No AI provider credentials configured for this organization. Add a credential in settings or specify one explicitly via 'credential_id:model_id'.","invalid_request_error","model"),400);W=E.id}let H;try{H=await Z.aiProviders.activate(W,Z.organization.id)}catch{return $.json(KH(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(K),N=h36(G.messages),U=G.tools?u36(G.tools):void 0,O=c36(G.response_format),B=l36(),D=Math.floor(Date.now()/1000);if(G.stream)return IN($,async(L)=>{let E=bh$(F,N,U,G,O,$.req.raw.signal);try{let j=rO(E),z=!1,A=0,P="",I=async()=>{if(P.length===0)return;let k=P;P="",await L.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{content:k},finish_reason:null}]})})};for await(let k of j.fullStream){if(!z&&(k.type==="text-delta"||k.type==="tool-call"))await L.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),z=!0;if(k.type==="text-delta"){if(P+=k.text,P.length>=k36)await I()}else if(k.type==="tool-call"){await I();let q=A++;await L.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{tool_calls:[{index:q,id:k.toolCallId,type:"function",function:{name:k.toolName,arguments:JSON.stringify(k.input)}}]},finish_reason:null}]})})}else if(k.type==="finish")await I(),await L.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{},finish_reason:xh$(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 I(),await L.writeSSE({data:"[DONE]"})}catch(j){let z=j;console.error("[openai-compat:stream] Error:",z.message),await L.writeSSE({data:JSON.stringify({error:{message:z.message,type:"server_error"}})})}});else{let L=bh$(F,N,U,G,O,$.req.raw.signal),E=await tO(L),j={role:"assistant",content:E.text||null};if(E.toolCalls&&E.toolCalls.length>0)j.tool_calls=E.toolCalls.map((z)=>({id:z.toolCallId,type:"function",function:{name:z.toolName,arguments:JSON.stringify("input"in z?z.input:{})}})),j.content=null;return $.json({id:B,object:"chat.completion",created:D,model:G.model,choices:[{index:0,message:j,finish_reason:xh$(E.finishReason)}],usage:{prompt_tokens:E.usage?.inputTokens??0,completion_tokens:E.usage?.outputTokens??0,total_tokens:E.usage?.totalTokens??0}})}}catch(Q){let Y=Q;if(Y.name==="AbortError")return $.json(KH("Request aborted","invalid_request_error"),400);if(Y.name==="MessageConversionError")return $.json(KH(Y.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",Y.message,Y.stack),$.json(KH(Y.message,"server_error"),500)}});hh$=gh$});function d36($){if(typeof $!=="object"||$===null)return!1;let X=$.githubRepo?.url;return typeof X==="string"&&X.length>0}function ch$(){let $=new F1;return $.use("*",async(Z,X)=>{await X(),Z.header("Cache-Control","private, no-store"),Z.header("Vary","Cookie")}),$.get("/",async(Z)=>{let X=Z.get("studioContext"),Q=Y1(X);if(!Q)return Z.json({error:"Authentication required"},401);let G=(Z.req.query("site")??"").trim().toLowerCase();if(!cG(G))return Z.json({error:"Invalid site slug"},400);let J=await X.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","=",Q).execute(),W=[];for(let H of J){if(!H.slug||K7(H))continue;let F=await X.storage.virtualMcps.list(H.id);for(let N of F){if(za1(N)!==G)continue;if(!d36(N.metadata))continue;W.push({orgSlug:H.slug,orgName:H.name??H.slug,project:{id:N.id,title:N.title,icon:N.icon??null}})}}let K={matches:W};return Z.json(K)}),$}var lh$=w(()=>{w8();bO()});var mh$;var dh$=w(()=>{mh$={name:"decocms",version:"4.255.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","@nats-io/jwt":"0.0.10-5","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});function p36(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??i36}}var ih$,i36="https://ph.studio.decocms.com",ph$;var nh$=w(()=>{w8();xh0();AC();f9();I$();_61();dh$();ih$=new F1;ih$.get("/",($)=>{let Z={version:mh$.version,theme:pd1(),...ML().logo&&{logo:ML().logo},..._K()&&{internalUrl:TS1()},...b0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!b0().firecrawlApiKey,auth:Gf$(),posthog:p36(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:!_K()&&b0().sandboxProviderKind==="agent-sandbox"}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});ph$=ih$});function Uu($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function s91($){return(Uu($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((X)=>X.charAt(0).toUpperCase()+X.slice(1)).join(" ")}function oh$($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(Uu($))}&sz=${Z}`}function th$($,Z){let X=$.trim();if(X.length<=Z)return X;let Q=X.slice(0,Z-1),Y=Q.lastIndexOf(" ");return`${(Y>Z*0.6?Q.slice(0,Y):Q).trimEnd()}\u2026`}function rh$($){let{brand:Z,domain:X,score:Q,verdict:Y}=$,G=typeof Q==="number"?`${Z} commerce report \u2014 ${Math.round(Q)}/100 \xB7 decocms`:`${Z} commerce report \xB7 decocms`,J=`See the full ${Z} scorecard \u2014 SEO, performance, conversion & AEO signals scored by decocms.`,W=Y?.trim()?th$(`${Y.trim().replace(/\s+/g," ")} \u2014 ${J}`,200):th$(`How does ${X} really perform? ${J}`,200);return{title:G,description:W}}import{z as l0}from"zod";var m_,n36,t36,o36,r36,ah$;var sh$=w(()=>{m_=l0.enum(["good","bad","neutral"]),n36=l0.preprocess(($)=>{if(Array.isArray($))return{kind:"text",value:$.find((X)=>X!==null&&typeof X!=="object")??""};return $!==null&&typeof $==="object"?$:{kind:"text",value:$}},l0.object({kind:l0.enum(["text","number","sparkline","badge","score"]).catch("text"),value:l0.coerce.string().optional(),tone:m_.optional(),muted:l0.boolean().optional(),delta:l0.coerce.string().optional(),deltaDir:l0.enum(["up","down","neutral"]).optional(),points:l0.array(l0.coerce.number()).optional(),label:l0.coerce.string().optional()}).transform(($)=>{if($.kind==="badge"&&$.label==null)$.label=$.value??"";if($.kind==="score"){let Z=Number($.value);if(Number.isNaN(Z))return{...$,kind:"text"}}return $})),t36=l0.preprocess(($)=>{let Z=$;if(Z&&typeof Z==="object"&&!Array.isArray(Z)&&Array.isArray(Z.cells))Z=Z.cells;if(Array.isArray(Z)&&Z.length===1&&Array.isArray(Z[0]))Z=Z[0];if(Array.isArray(Z))return Z;if(Z&&typeof Z==="object")return Object.values(Z);return Z},l0.array(n36)),o36={key:l0.coerce.string(),title:l0.coerce.string(),eyebrow:l0.coerce.string().optional(),headline:l0.coerce.string(),annotation:l0.coerce.string().optional(),methodology:l0.coerce.string().optional(),sources:l0.array(l0.object({name:l0.coerce.string(),logoUrl:l0.coerce.string()})).optional()},r36=l0.discriminatedUnion("template",[l0.object({template:l0.literal("cover"),score:l0.object({value:l0.coerce.number(),max:l0.coerce.number().optional(),grade:l0.coerce.string().optional(),label:l0.coerce.string().optional()}).optional(),brandImage:l0.coerce.string().optional(),screenshot:l0.coerce.string().optional(),mobileScreenshot:l0.coerce.string().optional()}),l0.object({template:l0.literal("cta"),ctaUrl:l0.coerce.string().optional(),ctaLabel:l0.coerce.string().optional(),bullets:l0.array(l0.coerce.string()).optional()}),l0.object({template:l0.literal("series"),points:l0.array(l0.coerce.number()).min(2),xLabels:l0.array(l0.coerce.string()).min(1),unit:l0.coerce.string().optional(),callout:l0.object({index:l0.coerce.number(),value:l0.coerce.string(),tone:m_.optional()})}),l0.object({template:l0.literal("threshold"),value:l0.coerce.string().default(""),metricLabel:l0.coerce.string().optional(),ratio:l0.coerce.number(),thresholdRatio:l0.coerce.number().optional(),thresholdLabel:l0.coerce.string().default(""),tone:m_.optional()}),l0.object({template:l0.literal("stats"),stats:l0.array(l0.object({value:l0.coerce.string(),label:l0.coerce.string(),tone:m_.optional()})).min(1)}),l0.object({template:l0.literal("bars"),items:l0.array(l0.object({value:l0.coerce.string(),label:l0.coerce.string(),ratio:l0.coerce.number(),tone:m_.optional()})).min(1)}),l0.object({template:l0.literal("gauges"),gauges:l0.array(l0.object({label:l0.coerce.string(),value:l0.coerce.string(),status:l0.enum(["good","warn","bad"]).catch("warn"),caption:l0.coerce.string().optional(),ratio:l0.coerce.number().optional()})).min(1)}),l0.object({template:l0.literal("checklist"),checks:l0.array(l0.object({label:l0.coerce.string(),status:l0.enum(["pass","fail","warn"]).catch("fail"),value:l0.coerce.string().optional()})).min(1)}),l0.object({template:l0.literal("table"),columns:l0.array(l0.object({label:l0.coerce.string(),align:l0.enum(["left","right"]).optional()})).min(1),rows:l0.array(t36).min(1),highlightRow:l0.coerce.number().optional()}),l0.object({template:l0.literal("products"),products:l0.array(l0.object({name:l0.coerce.string(),price:l0.coerce.string().optional(),image:l0.coerce.string().optional(),url:l0.coerce.string().optional()})).min(1)}),l0.object({template:l0.literal("list"),entries:l0.array(l0.object({label:l0.coerce.string(),severity:l0.enum(["error","warning","notice"]).catch("notice")})).min(1),moreCount:l0.coerce.number().optional()}),l0.object({template:l0.literal("keywords"),volumeLabel:l0.coerce.string().optional(),keywords:l0.array(l0.object({term:l0.coerce.string(),volume:l0.coerce.string(),position:l0.coerce.number().catch(0)})).min(1)}),l0.object({template:l0.literal("competitor"),metricLabel:l0.coerce.string().optional(),competitors:l0.array(l0.object({name:l0.coerce.string(),value:l0.coerce.string(),tone:m_.optional(),isYou:l0.boolean().optional()})).min(1)}),l0.object({template:l0.literal("scorecard"),rivalLabel:l0.coerce.string().optional(),dimensions:l0.array(l0.object({label:l0.coerce.string(),you:l0.coerce.string(),rival:l0.coerce.string().optional(),rivalName:l0.coerce.string().optional(),tone:m_.optional()})).min(1)})]),ah$=l0.object({...o36,template:r36})});function jA0($){let Z=[],X=[...$.sections].sort((Y,G)=>Y.position-G.position).map((Y)=>{let G=ah$.safeParse(Y.props);if(G.success)return G.data;let J=G.error.issues[0];return Z.push({section_type:Y.section_type,position:Y.position,reason:J?`${J.path.join(".")||"(root)"}: ${J.message}`:"contract violation"}),null}).filter((Y)=>Y!==null),Q=X.filter((Y)=>Y.template.template!=="cover"&&Y.template.template!=="cta").map((Y)=>({key:Y.key,title:Y.title}));return{deck:{meta:{...$.meta,scores:$.summary?.scores,scannedAt:$.scanned_at,toc:Q},slides:X},drops:Z}}var e91=w(()=>{sh$()});import{join as eh$}from"path";async function s36($){try{let Z=await fetch(`${eW({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(a36)});if(!Z.ok)return null;let X=await Z.json(),{deck:Q}=jA0(X);if(!Q.slides.length)return null;let Y=Q.slides.find((W)=>W.template.template==="cover"),G=Y?.template,J=G&&G.template==="cover"?G:void 0;return{brand:Q.meta.brand?.trim()||s91($),score:Q.meta.scores?.cover??J?.score?.value,verdict:Y?.annotation?.trim()||Y?.headline?.trim()||void 0}}catch{return null}}function WG($){return $.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;")}function e36($,Z){let X=Uu($),Q=Z?.brand?.trim()||s91(X),Y=oh$(X,128),J=`${(b0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(X)}`,{title:W,description:K}=rh$({brand:Q,domain:X,score:Z?.score,verdict:Z?.verdict}),H=`${J}/og.png`,F=`${Q} commerce report by decocms`;return[`<title>${WG(W)}</title>`,`<meta name="description" content="${WG(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="${WG(W)}" />`,`<meta property="og:description" content="${WG(K)}" />`,`<meta property="og:url" content="${WG(J)}" />`,`<meta property="og:image" content="${WG(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${WG(F)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${WG(W)}" />`,`<meta name="twitter:description" content="${WG(K)}" />`,`<meta name="twitter:image" content="${WG(H)}" />`,`<meta name="twitter:image:alt" content="${WG(F)}" />`,`<link rel="canonical" href="${WG(J)}" />`,`<link rel="icon" href="${WG(Y)}" sizes="any" />`].join(`
2858
+ `,j=await Z.createBlob(E);await Gh$(Z.owner,Z.repo,j,E);let z=L[0]??`${HA0(Q)}/${g91(B)}.json`;H.push({path:z,mode:"100644",type:"blob",sha:j});let A=z.slice(z.lastIndexOf("/")+1,-5);F.set(z,{stem:A,sha:j,content:E});for(let P of L.slice(1))H.push({path:P,mode:"100644",type:"blob",sha:null}),F.delete(P)}for(let B of $.del)for(let D of m91(K,B))H.push({path:D,mode:"100644",type:"blob",sha:null}),F.delete(D);if(H.length===0)return G;let N=Q?`${Q}/.deco/blocks.gen.json`:".deco/blocks.gen.json";if(W.some((B)=>B.type==="blob"&&B.path===N)){let B=await Promise.all([...F.values()].map(async(j)=>({stem:j.stem,content:j.content??await Z.getBlobText(j.sha)}))),{decofile:D,skipped:L}=Aa(B);if(L.length>0)console.warn("decofile gen: dropped blocks that were not valid JSON",{repo:`${Z.owner}/${Z.repo}`,branch:X,packagePath:Q,blocks:L.map((j)=>j.key)});let E=await Z.createBlob(D);H.push({path:N,mode:"100644",type:"blob",sha:E})}let U=await Z.createTree(J,H),O=await Z.createCommit({message:j36($),treeSha:U,parentShas:[G]});try{return await Z.updateRef(X,O),O}catch(B){if(!(B instanceof h4&&B.status===422)||Y>=D36-1)throw B;await k$(tZ(2000,200,Y,2,0.5))}}}function j36($){let Z=(Y)=>{let G=Y.slice(0,3).join(", ");return Y.length>3?`${G} (+${Y.length-3} more)`:G},X=[];if($.set.size>0)X.push(`update ${Z([...$.set.keys()])}`);if($.del.size>0)X.push(`delete ${Z([...$.del])}`);let Q=`chore(decofile): ${X.join("; ")}`;return Gm0(Q,$.deps.coAuthor)}var D36=3,r91;var Ah$=w(()=>{iO0();XA0();c4();h_();FA0();r91=new Map});import{createHmac as Th$,randomBytes as z36,timingSafeEqual as P36}from"crypto";function Rh$(){if(DA0)return DA0;let $;try{let Z=b0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return DA0=$?Buffer.from($):z36(32),DA0}function a91($){let Z=$.nowMs??Date.now(),X={o:$.organizationId,m:$.virtualMcpId,b:$.branch,e:Math.floor((Z+A36)/1000)},Q=Buffer.from(JSON.stringify(X)).toString("base64url"),Y=Th$("sha256",Rh$()).update(Q).digest("base64url");return`${Q}.${Y}`}function Ih$($,Z){let X=$.indexOf(".");if(X<0)return!1;let Q=$.slice(0,X),Y=Buffer.from($.slice(X+1)),G=Buffer.from(Th$("sha256",Rh$()).update(Q).digest("base64url"));if(Y.length!==G.length||!P36(Y,G))return!1;let J;try{J=JSON.parse(Buffer.from(Q,"base64url").toString())}catch{return!1}let W=Math.floor((Z.nowMs??Date.now())/1000);return J.o===Z.organizationId&&J.m===Z.virtualMcpId&&J.b===Z.branch&&typeof J.e==="number"&&J.e>=W}var A36=21600000,DA0=null;var qh$=w(()=>{I$()});import{z as Nu}from"zod";function R36($){return $.length>0&&$.length<=255&&!$.includes("..")&&!$.endsWith("/")&&!$.endsWith(".lock")&&T36.test($)}function kh$($){return $.req.header("x-forwarded-host")??new URL($.req.url).host}async function LA0($){let Z=$.get("decofileScope");return $A0($.var.studioContext,Z.organizationId,Z.githubRepo)}function EA0($,Z){if(Z instanceof h4){let Q=Z.status===404?404:Z.status===409?409:Z.status===422?409:502;return $.json({error:Z.message},Q)}let X=Z instanceof Error?Z.message:String(Z);return $.json({error:X},500)}function Vh$(){let $=new F1;return $.use("/:virtualMcpId/:branch",Mh$),$.use("/:virtualMcpId/:branch/*",Mh$),$.get("/:virtualMcpId/:branch",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await LA0(Z),Y=await Jh$(Q,X.branch,X.packagePath,{createBranchIfMissing:!!X.userId}),G={ETag:`"${Y.sha}"`,"Cache-Control":"no-store","Access-Control-Allow-Origin":"*"};if(Z.req.header("if-none-match")===`"${Y.sha}"`)return Z.body(null,304,G);if(!X.userId)return Z.body(Y.decofile,200,{...G,"content-type":"application/json"});let J=a91({organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,branch:X.branch});return Z.body(`{"version":${JSON.stringify(Y.sha)},"token":${JSON.stringify(J)},"apiHost":${JSON.stringify(kh$(Z))},"decofile":${Y.decofile}}`,200,{...G,"content-type":"application/json"})}catch(Q){return EA0(Z,Q)}}),$.patch("/:virtualMcpId/:branch",async(Z)=>{let X=Z.get("decofileScope"),Q=Z.var.studioContext,Y=I36.safeParse(await Z.req.json().catch(()=>null));if(!Y.success)return Z.json({error:"Invalid body",details:Y.error.issues},400);let G=Y.data;for(let J of[...Object.keys(G.set??{}),...G.delete??[]])try{ZA0(J)}catch(W){let K=W instanceof Error?W.message:String(W);return Z.json({error:K},400)}for(let[J,W]of Object.entries(G.set??{}))if(typeof W!=="object"||W===null||Array.isArray(W))return Z.json({error:`Block "${J}" must be a JSON object`},400);try{let J=await LA0(Z),W=await Ph$(`${X.organizationId}/${X.virtualMcpId}/${X.branch}`,{client:J,branch:X.branch,packagePath:X.packagePath,coAuthor:Yu(Q)},G),K=a91({organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,branch:X.branch});return Z.json({version:W,token:K,apiHost:kh$(Z)})}catch(J){return EA0(Z,J)}}),$.post("/:virtualMcpId/:branch/publish",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await LA0(Z),Y=await Q.getDefaultBranch();if(Y===X.branch)return Z.json({error:"Branch is already the default branch"},400);let G=`chore(decofile): publish ${X.branch}`;try{let J;try{J=await Q.mergeBranch(Y,X.branch,G)}catch(W){if(!(W instanceof h4&&W.status===409))throw W;await OA0(Q,X.branch,Y),J=await Q.mergeBranch(Y,X.branch,G)}return J?Z.json({result:"merged",sha:J}):Z.json({result:"up-to-date"})}catch(J){if(J instanceof h4&&J.status===409)return Z.json({error:"merge-conflict"},409);if(J instanceof h4&&J.status===405){let K=await Q.findOpenPullRequest(Y,X.branch)??await Q.createPullRequest({base:Y,head:X.branch,title:`Publish ${X.branch}`});return Z.json({result:"pull-request",number:K.number,url:K.html_url})}throw J}}catch(Q){return EA0(Z,Q)}}),$.get("/:virtualMcpId/:branch/status",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await LA0(Z),Y=await Q.getDefaultBranch();if(Y===X.branch)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0});try{let{aheadBy:G,behindBy:J}=await Q.compare(Y,X.branch);return Z.json({baseBranch:Y,aheadBy:G,behindBy:J})}catch(G){if(G instanceof h4&&G.status===404)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0});throw G}}catch(Q){return EA0(Z,Q)}}),$}var T36,I36,Mh$;var Sh$=w(()=>{XA0();w8();I91();sP0();t91();y91();Ah$();qh$();p91();h_();FA0();T36=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;I36=Nu.object({set:Nu.record(Nu.string(),Nu.unknown()).optional(),delete:Nu.array(Nu.string()).optional()}).refine(($)=>Object.keys($.set??{}).length>0||($.delete?.length??0)>0,{message:"Patch must set or delete at least one block"}),Mh$=aP0(async($,Z)=>{let X=$.var.studioContext,Q=X.organization;if(!Q)return $.json({error:"Organization scope required"},500);let Y=$.req.param("virtualMcpId"),G=$.req.param("branch");if(!Y||!G)return $.json({error:"virtualMcpId and branch are required"},400);if(!R36(G))return $.json({error:`Invalid branch name: ${G}`},400);let J=X.auth?.user?.id??null;if(!J){let O=$.req.query("token");if(!($.req.method==="GET"&&!$.req.path.match(/\/(publish|status)$/)))return $.json({error:"Unauthorized"},401);if(!O||!Ih$(O,{organizationId:Q.id,virtualMcpId:Y,branch:G}))return $.json({error:"Unauthorized"},401)}let W=await X.storage.virtualMcps.findById(Y);if(!W||W.organization_id!==Q.id)return $.json({error:"Virtual MCP not found"},404);let K=W.metadata??null;if(!sB0(K)||K?.fastPreview!==!0)return $.json({error:"Fast Preview is not enabled for this project"},404);let F=W.connections?.map((O)=>O.connection_id)??[],N=qa(K,F);if(!N)return $.json({error:"Project has no GitHub repository"},404);let U=K?.runtime;return $.set("decofileScope",{organizationId:Q.id,virtualMcpId:Y,branch:G,packagePath:U?.path?.replace(/^\/+|\/+$/g,"")||null,githubRepo:N,userId:J}),Z()})});var Ch$=($)=>{let Z=new F1;if(Z.use("*",S_),Z.route("/",BP0()),Z.route("/",tf$()),Z.route("/",$g$()),Z.route("/",ay$()),Z.route("/",tP0()),Z.route("/tools",Wg$()),Z.route("/",Yg$()),Z.route("/",Sy$({kvStorage:$.kvStorage})),Z.route("/",ky$()),Z.route("/fs",my$({getConnection:$.getNatsConnection})),Z.route("/sandbox",jh$()),Z.route("/decofile",Vh$()),Z.route("/",ty$()),Z.route("/deco-sites",DP0()),Z.route("/sso",KP0()),Z.route("/",oP0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",uf$()),$.mountDevAssets)Z.route("/dev-assets",LP0({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("/",P_$()),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",py$()),Z.route("/mcp",LD0()),Z.route("/mcp/self",nP0()),Z.route("/mcp",zD0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var _h$=w(()=>{w8();n61();cf$();a61();EP0();tr();i61();Vy$();Cy$();iy$();Zt();y61();PD0();E91();ny$();oy$();sy$();Zg$();Gg$();z91();Kg$();P91();ED0();zh$();Sh$()});function q36($){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 M36=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},vh$=()=>{let $=new F1;return $.use("*",M36),$.get("/",async(Z)=>{let X=b0(),Q=X.decoSupabaseUrl,Y=X.decoSupabaseServiceKey;if(!Q||!Y)return Z.json({apps:[]});try{let G=await mZ(Q,Y,"apps?select=name,title,description,logo,category,vendors(alias,url)");return Z.json({apps:q36(G)})}catch(G){return console.error("[deco-apps] GET error:",G),Z.json({error:"Failed to fetch apps"},502)}}),$};var fh$=w(()=>{w8();I$();Nz0()});import{z as M1}from"zod";function KH($,Z="invalid_request_error",X=null,Q=null){return{error:{message:$,type:Z,param:X,code:Q}}}function y36($){if(!$)return null;let Z=$.indexOf(":");if(Z===-1)return{credentialId:null,modelId:$};let X=$.substring(0,Z),Q=$.substring(Z+1);if(!X||!Q)return null;return{credentialId:X,modelId:Q}}function g36($,Z,X){try{return JSON.parse($)}catch{throw new yh$(`Invalid JSON in tool call arguments for function '${X}' (tool_call_id: ${Z}): ${$}`)}}function h36($){let Z={};for(let X of $)if(X.role==="assistant"&&X.tool_calls)for(let Q of X.tool_calls)Z[Q.id]=Q.function.name;return $.map((X)=>{switch(X.role){case"system":return{role:"system",content:X.content};case"user":if(typeof X.content==="string")return{role:"user",content:X.content};return{role:"user",content:X.content.map((Y)=>{if(Y.type==="text")return{type:"text",text:Y.text};return{type:"image",image:Y.image_url.url}})};case"assistant":if(X.tool_calls&&X.tool_calls.length>0)return{role:"assistant",content:X.tool_calls.map((Y)=>({type:"tool-call",toolCallId:Y.id,toolName:Y.function.name,input:g36(Y.function.arguments,Y.id,Y.function.name)}))};return{role:"assistant",content:X.content??""};case"tool":let Q=Z[X.tool_call_id]??"unknown";return{role:"tool",content:[{type:"tool-result",toolCallId:X.tool_call_id,toolName:Q,output:{type:"text",value:X.content}}]}}})}function u36($){let Z=$.map((X)=>{let Q=X.function.parameters?gY(X.function.parameters):gY({type:"object",properties:{}});return[X.function.name,R$({description:X.function.description,inputSchema:Q})]});return Object.fromEntries(Z)}function c36($){if(!$)return;return{openai:{response_format:$}}}function l36(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function bh$($,Z,X,Q,Y,G){let J={model:$,messages:Z,tools:X,temperature:Q.temperature,maxTokens:Q.max_tokens,topP:Q.top_p,frequencyPenalty:Q.frequency_penalty,presencePenalty:Q.presence_penalty,stopSequences:Q.stop?Array.isArray(Q.stop)?Q.stop:[Q.stop]:void 0,abortSignal:G};return Y?{...J,providerOptions:Y}:J}function xh$($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var k36=256,V36,S36,C36,_36,v36,f36,b36,x36,yh$,gh$,hh$;var uh$=w(()=>{O4();w8();Qu();YN();V36=M1.object({type:M1.literal("function"),function:M1.object({name:M1.string(),description:M1.string().optional(),parameters:M1.record(M1.string(),M1.unknown()).optional()})}),S36=M1.object({id:M1.string(),type:M1.literal("function"),function:M1.object({name:M1.string(),arguments:M1.string()})}),C36=M1.discriminatedUnion("role",[M1.object({role:M1.literal("system"),content:M1.string(),name:M1.string().optional()}),M1.object({role:M1.literal("user"),content:M1.union([M1.string(),M1.array(M1.union([M1.object({type:M1.literal("text"),text:M1.string()}),M1.object({type:M1.literal("image_url"),image_url:M1.object({url:M1.string(),detail:M1.string().optional()})})]))]),name:M1.string().optional()}),M1.object({role:M1.literal("assistant"),content:M1.string().nullable().optional(),name:M1.string().optional(),tool_calls:M1.array(S36).optional()}),M1.object({role:M1.literal("tool"),content:M1.string(),tool_call_id:M1.string()})]),_36=M1.object({type:M1.literal("text")}),v36=M1.object({type:M1.literal("json_object")}),f36=M1.object({type:M1.literal("json_schema"),json_schema:M1.object({name:M1.string(),description:M1.string().optional(),schema:M1.record(M1.string(),M1.unknown()),strict:M1.boolean().optional()})}),b36=M1.union([_36,v36,f36]),x36=M1.object({model:M1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:M1.array(C36),stream:M1.boolean().optional().default(!1),temperature:M1.number().min(0).max(2).optional(),max_tokens:M1.number().positive().optional(),top_p:M1.number().min(0).max(1).optional(),frequency_penalty:M1.number().min(-2).max(2).optional(),presence_penalty:M1.number().min(-2).max(2).optional(),stop:M1.union([M1.string(),M1.array(M1.string())]).optional(),tools:M1.array(V36).optional(),tool_choice:M1.union([M1.literal("auto"),M1.literal("none"),M1.literal("required"),M1.object({type:M1.literal("function"),function:M1.object({name:M1.string()})})]).optional(),response_format:b36.optional(),user:M1.string().optional()});yh$=class yh$ extends Error{constructor($){super($);this.name="MessageConversionError"}};gh$=new F1;gh$.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),X=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(KH("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(KH("Organization context is required. Ensure your API key has organization metadata.","invalid_request_error","organization"),400);if((Z.organization.slug??Z.organization.id)!==X)return $.json(KH("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Q=await $.req.json(),Y=x36.safeParse(Q);if(!Y.success){let L=Y.error.issues[0]??{message:"Invalid request",path:[]};return $.json(KH(`Invalid request: ${L.message}`,"invalid_request_error",L.path.length>0?L.path.join("."):null),400)}let G=Y.data,J=y36(G.model);if(!J)return $.json(KH("Invalid model format. Expected 'model_id' or 'credential_id:model_id' (e.g., 'claude-sonnet-4-6' or 'key_abc123:claude-sonnet-4-6')","invalid_request_error","model"),400);let{credentialId:W}=J,{modelId:K}=J;if(!W){let E=(await Z.storage.aiProviderKeys.list({organizationId:Z.organization.id})).find((j)=>yD(j.providerId));if(!E)return $.json(KH("No AI provider credentials configured for this organization. Add a credential in settings or specify one explicitly via 'credential_id:model_id'.","invalid_request_error","model"),400);W=E.id}let H;try{H=await Z.aiProviders.activate(W,Z.organization.id)}catch{return $.json(KH(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(K),N=h36(G.messages),U=G.tools?u36(G.tools):void 0,O=c36(G.response_format),B=l36(),D=Math.floor(Date.now()/1000);if(G.stream)return IN($,async(L)=>{let E=bh$(F,N,U,G,O,$.req.raw.signal);try{let j=rO(E),z=!1,A=0,P="",I=async()=>{if(P.length===0)return;let k=P;P="",await L.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{content:k},finish_reason:null}]})})};for await(let k of j.fullStream){if(!z&&(k.type==="text-delta"||k.type==="tool-call"))await L.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),z=!0;if(k.type==="text-delta"){if(P+=k.text,P.length>=k36)await I()}else if(k.type==="tool-call"){await I();let q=A++;await L.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{tool_calls:[{index:q,id:k.toolCallId,type:"function",function:{name:k.toolName,arguments:JSON.stringify(k.input)}}]},finish_reason:null}]})})}else if(k.type==="finish")await I(),await L.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{},finish_reason:xh$(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 I(),await L.writeSSE({data:"[DONE]"})}catch(j){let z=j;console.error("[openai-compat:stream] Error:",z.message),await L.writeSSE({data:JSON.stringify({error:{message:z.message,type:"server_error"}})})}});else{let L=bh$(F,N,U,G,O,$.req.raw.signal),E=await tO(L),j={role:"assistant",content:E.text||null};if(E.toolCalls&&E.toolCalls.length>0)j.tool_calls=E.toolCalls.map((z)=>({id:z.toolCallId,type:"function",function:{name:z.toolName,arguments:JSON.stringify("input"in z?z.input:{})}})),j.content=null;return $.json({id:B,object:"chat.completion",created:D,model:G.model,choices:[{index:0,message:j,finish_reason:xh$(E.finishReason)}],usage:{prompt_tokens:E.usage?.inputTokens??0,completion_tokens:E.usage?.outputTokens??0,total_tokens:E.usage?.totalTokens??0}})}}catch(Q){let Y=Q;if(Y.name==="AbortError")return $.json(KH("Request aborted","invalid_request_error"),400);if(Y.name==="MessageConversionError")return $.json(KH(Y.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",Y.message,Y.stack),$.json(KH(Y.message,"server_error"),500)}});hh$=gh$});function d36($){if(typeof $!=="object"||$===null)return!1;let X=$.githubRepo?.url;return typeof X==="string"&&X.length>0}function ch$(){let $=new F1;return $.use("*",async(Z,X)=>{await X(),Z.header("Cache-Control","private, no-store"),Z.header("Vary","Cookie")}),$.get("/",async(Z)=>{let X=Z.get("studioContext"),Q=Y1(X);if(!Q)return Z.json({error:"Authentication required"},401);let G=(Z.req.query("site")??"").trim().toLowerCase();if(!cG(G))return Z.json({error:"Invalid site slug"},400);let J=await X.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","=",Q).execute(),W=[];for(let H of J){if(!H.slug||K7(H))continue;let F=await X.storage.virtualMcps.list(H.id);for(let N of F){if(za1(N)!==G)continue;if(!d36(N.metadata))continue;W.push({orgSlug:H.slug,orgName:H.name??H.slug,project:{id:N.id,title:N.title,icon:N.icon??null}})}}let K={matches:W};return Z.json(K)}),$}var lh$=w(()=>{w8();bO()});var mh$;var dh$=w(()=>{mh$={name:"decocms",version:"4.255.2",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@nats-io/jwt":"0.0.10-5","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});function p36(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??i36}}var ih$,i36="https://ph.studio.decocms.com",ph$;var nh$=w(()=>{w8();xh0();AC();f9();I$();_61();dh$();ih$=new F1;ih$.get("/",($)=>{let Z={version:mh$.version,theme:pd1(),...ML().logo&&{logo:ML().logo},..._K()&&{internalUrl:TS1()},...b0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!b0().firecrawlApiKey,auth:Gf$(),posthog:p36(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:!_K()&&b0().sandboxProviderKind==="agent-sandbox"}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});ph$=ih$});function Uu($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function s91($){return(Uu($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((X)=>X.charAt(0).toUpperCase()+X.slice(1)).join(" ")}function oh$($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(Uu($))}&sz=${Z}`}function th$($,Z){let X=$.trim();if(X.length<=Z)return X;let Q=X.slice(0,Z-1),Y=Q.lastIndexOf(" ");return`${(Y>Z*0.6?Q.slice(0,Y):Q).trimEnd()}\u2026`}function rh$($){let{brand:Z,domain:X,score:Q,verdict:Y}=$,G=typeof Q==="number"?`${Z} commerce report \u2014 ${Math.round(Q)}/100 \xB7 decocms`:`${Z} commerce report \xB7 decocms`,J=`See the full ${Z} scorecard \u2014 SEO, performance, conversion & AEO signals scored by decocms.`,W=Y?.trim()?th$(`${Y.trim().replace(/\s+/g," ")} \u2014 ${J}`,200):th$(`How does ${X} really perform? ${J}`,200);return{title:G,description:W}}import{z as l0}from"zod";var m_,n36,t36,o36,r36,ah$;var sh$=w(()=>{m_=l0.enum(["good","bad","neutral"]),n36=l0.preprocess(($)=>{if(Array.isArray($))return{kind:"text",value:$.find((X)=>X!==null&&typeof X!=="object")??""};return $!==null&&typeof $==="object"?$:{kind:"text",value:$}},l0.object({kind:l0.enum(["text","number","sparkline","badge","score"]).catch("text"),value:l0.coerce.string().optional(),tone:m_.optional(),muted:l0.boolean().optional(),delta:l0.coerce.string().optional(),deltaDir:l0.enum(["up","down","neutral"]).optional(),points:l0.array(l0.coerce.number()).optional(),label:l0.coerce.string().optional()}).transform(($)=>{if($.kind==="badge"&&$.label==null)$.label=$.value??"";if($.kind==="score"){let Z=Number($.value);if(Number.isNaN(Z))return{...$,kind:"text"}}return $})),t36=l0.preprocess(($)=>{let Z=$;if(Z&&typeof Z==="object"&&!Array.isArray(Z)&&Array.isArray(Z.cells))Z=Z.cells;if(Array.isArray(Z)&&Z.length===1&&Array.isArray(Z[0]))Z=Z[0];if(Array.isArray(Z))return Z;if(Z&&typeof Z==="object")return Object.values(Z);return Z},l0.array(n36)),o36={key:l0.coerce.string(),title:l0.coerce.string(),eyebrow:l0.coerce.string().optional(),headline:l0.coerce.string(),annotation:l0.coerce.string().optional(),methodology:l0.coerce.string().optional(),sources:l0.array(l0.object({name:l0.coerce.string(),logoUrl:l0.coerce.string()})).optional()},r36=l0.discriminatedUnion("template",[l0.object({template:l0.literal("cover"),score:l0.object({value:l0.coerce.number(),max:l0.coerce.number().optional(),grade:l0.coerce.string().optional(),label:l0.coerce.string().optional()}).optional(),brandImage:l0.coerce.string().optional(),screenshot:l0.coerce.string().optional(),mobileScreenshot:l0.coerce.string().optional()}),l0.object({template:l0.literal("cta"),ctaUrl:l0.coerce.string().optional(),ctaLabel:l0.coerce.string().optional(),bullets:l0.array(l0.coerce.string()).optional()}),l0.object({template:l0.literal("series"),points:l0.array(l0.coerce.number()).min(2),xLabels:l0.array(l0.coerce.string()).min(1),unit:l0.coerce.string().optional(),callout:l0.object({index:l0.coerce.number(),value:l0.coerce.string(),tone:m_.optional()})}),l0.object({template:l0.literal("threshold"),value:l0.coerce.string().default(""),metricLabel:l0.coerce.string().optional(),ratio:l0.coerce.number(),thresholdRatio:l0.coerce.number().optional(),thresholdLabel:l0.coerce.string().default(""),tone:m_.optional()}),l0.object({template:l0.literal("stats"),stats:l0.array(l0.object({value:l0.coerce.string(),label:l0.coerce.string(),tone:m_.optional()})).min(1)}),l0.object({template:l0.literal("bars"),items:l0.array(l0.object({value:l0.coerce.string(),label:l0.coerce.string(),ratio:l0.coerce.number(),tone:m_.optional()})).min(1)}),l0.object({template:l0.literal("gauges"),gauges:l0.array(l0.object({label:l0.coerce.string(),value:l0.coerce.string(),status:l0.enum(["good","warn","bad"]).catch("warn"),caption:l0.coerce.string().optional(),ratio:l0.coerce.number().optional()})).min(1)}),l0.object({template:l0.literal("checklist"),checks:l0.array(l0.object({label:l0.coerce.string(),status:l0.enum(["pass","fail","warn"]).catch("fail"),value:l0.coerce.string().optional()})).min(1)}),l0.object({template:l0.literal("table"),columns:l0.array(l0.object({label:l0.coerce.string(),align:l0.enum(["left","right"]).optional()})).min(1),rows:l0.array(t36).min(1),highlightRow:l0.coerce.number().optional()}),l0.object({template:l0.literal("products"),products:l0.array(l0.object({name:l0.coerce.string(),price:l0.coerce.string().optional(),image:l0.coerce.string().optional(),url:l0.coerce.string().optional()})).min(1)}),l0.object({template:l0.literal("list"),entries:l0.array(l0.object({label:l0.coerce.string(),severity:l0.enum(["error","warning","notice"]).catch("notice")})).min(1),moreCount:l0.coerce.number().optional()}),l0.object({template:l0.literal("keywords"),volumeLabel:l0.coerce.string().optional(),keywords:l0.array(l0.object({term:l0.coerce.string(),volume:l0.coerce.string(),position:l0.coerce.number().catch(0)})).min(1)}),l0.object({template:l0.literal("competitor"),metricLabel:l0.coerce.string().optional(),competitors:l0.array(l0.object({name:l0.coerce.string(),value:l0.coerce.string(),tone:m_.optional(),isYou:l0.boolean().optional()})).min(1)}),l0.object({template:l0.literal("scorecard"),rivalLabel:l0.coerce.string().optional(),dimensions:l0.array(l0.object({label:l0.coerce.string(),you:l0.coerce.string(),rival:l0.coerce.string().optional(),rivalName:l0.coerce.string().optional(),tone:m_.optional()})).min(1)})]),ah$=l0.object({...o36,template:r36})});function jA0($){let Z=[],X=[...$.sections].sort((Y,G)=>Y.position-G.position).map((Y)=>{let G=ah$.safeParse(Y.props);if(G.success)return G.data;let J=G.error.issues[0];return Z.push({section_type:Y.section_type,position:Y.position,reason:J?`${J.path.join(".")||"(root)"}: ${J.message}`:"contract violation"}),null}).filter((Y)=>Y!==null),Q=X.filter((Y)=>Y.template.template!=="cover"&&Y.template.template!=="cta").map((Y)=>({key:Y.key,title:Y.title}));return{deck:{meta:{...$.meta,scores:$.summary?.scores,scannedAt:$.scanned_at,toc:Q},slides:X},drops:Z}}var e91=w(()=>{sh$()});import{join as eh$}from"path";async function s36($){try{let Z=await fetch(`${eW({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(a36)});if(!Z.ok)return null;let X=await Z.json(),{deck:Q}=jA0(X);if(!Q.slides.length)return null;let Y=Q.slides.find((W)=>W.template.template==="cover"),G=Y?.template,J=G&&G.template==="cover"?G:void 0;return{brand:Q.meta.brand?.trim()||s91($),score:Q.meta.scores?.cover??J?.score?.value,verdict:Y?.annotation?.trim()||Y?.headline?.trim()||void 0}}catch{return null}}function WG($){return $.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;")}function e36($,Z){let X=Uu($),Q=Z?.brand?.trim()||s91(X),Y=oh$(X,128),J=`${(b0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(X)}`,{title:W,description:K}=rh$({brand:Q,domain:X,score:Z?.score,verdict:Z?.verdict}),H=`${J}/og.png`,F=`${Q} commerce report by decocms`;return[`<title>${WG(W)}</title>`,`<meta name="description" content="${WG(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="${WG(W)}" />`,`<meta property="og:description" content="${WG(K)}" />`,`<meta property="og:url" content="${WG(J)}" />`,`<meta property="og:image" content="${WG(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${WG(F)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${WG(W)}" />`,`<meta name="twitter:description" content="${WG(K)}" />`,`<meta name="twitter:image" content="${WG(H)}" />`,`<meta name="twitter:image:alt" content="${WG(F)}" />`,`<link rel="canonical" href="${WG(J)}" />`,`<link rel="icon" href="${WG(Y)}" sizes="any" />`].join(`
2859
2859
  `)}function $W6($,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}
2860
2860
  </head>`)}function $u$($){let Z=new F1;return Z.get("/:domain/og.png",async(X)=>{let Q=Uu(X.req.param("domain")),Y=async()=>{let G=$?Bun.file(eh$($,"report-og-fallback.png")):null;if(!G||!await G.exists())return X.notFound();return X.body(new Uint8Array(await G.arrayBuffer()),200,{"Content-Type":"image/png","Cache-Control":"public, max-age=0, s-maxage=3600"})};try{let G=await fetch(`${eW({})}/api/v2/public/diagnostics/${encodeURIComponent(Q)}/og.png`,{signal:AbortSignal.timeout(ZW6)}),J=G.headers.get("content-type")??"";if(!G.ok||!J.startsWith("image/")||!G.body)return Y();return X.body(G.body,200,{"Content-Type":J,"Cache-Control":"public, max-age=0, s-maxage=604800"})}catch{return Y()}}),Z.get("/:domain",async(X)=>{let Q=X.req.param("domain"),Y=$?eh$($,"index.html"):null,G=Y?Bun.file(Y):null;if(!G||!await G.exists())return X.notFound();let J=await G.text();try{let W=await s36(Uu(Q)),K=e36(Q,W);return X.html($W6(J,K),200,{"Cache-Control":"public, max-age=0, s-maxage=300"})}catch{return X.html(J)}}),Z}var a36=2500,ZW6=1e4;var Zu$=w(()=>{w8();e91();cL();I$()});function ka($,Z){return fetch(`${eW({})}${$}`,Z)}async function XW6($,Z,X){let Q=new URLSearchParams;if(Z)Q.set("pw",Z);if(X)Q.set("lang",X);let Y=Q.toString()?`?${Q.toString()}`:"",G=await ka(`/api/v2/public/diagnostics/${encodeURIComponent($)}${Y}`,{headers:{Accept:"application/json"}});if(G.status===404)return{status:"not_found",deck:null,scanned_at:null,drops:[]};if(!G.ok)throw Error(`report read HTTP ${G.status}`);let J=await G.json(),{deck:W,drops:K}=jA0(J);return{status:W.slides.length?"ready":"empty",deck:W,scanned_at:J.scanned_at,drops:K}}var QW6,MN,Xu$=async($,Z)=>{if(!$.get("reportUser"))return $.json({error:"Authentication required"},401);await Z();return},Qu$;var Yu$=w(()=>{w8();fY();cL();e91();QW6=new Set(["complete","errored","terminated","unknown"]),MN=new F1;MN.use("*",async($,Z)=>{let X=await F8.api.getSession({headers:$.req.raw.headers});$.set("reportUser",X?.user?.id?{email:X.user.email}:void 0),await Z(),$.header("Cache-Control","private, no-store"),$.header("Vary","Cookie");return});MN.use("/link-token/*",Xu$);MN.use("/suggest",Xu$);MN.get("/site/:domain",async($)=>{let Z=$.req.param("domain").trim();if(!Z)return $.json({error:"domain is required"},400);let X=$.get("reportUser"),Q=$.req.query("key")?.trim()||void 0,Y=$.req.query("lang")?.trim()||void 0;try{let G=await XW6(Z,Q,Y);if($.header("Cache-Control","private, no-store"),X||!G.deck)return $.json(G);return $.json({...G,deck:{...G.deck,slides:G.deck.slides.slice(0,1)},truncated:G.status==="ready"})}catch{return $.json({error:"report read failed"},502)}});MN.post("/run",async($)=>{let Z=$.get("reportUser"),X;try{X=await $.req.json()}catch{return $.json({error:"invalid JSON"},400)}let Q=typeof X.domain==="string"?X.domain.trim():"";if(!Q)return $.json({error:"domain is required"},400);let Y=Z?.email,G=typeof X.distinctId==="string"&&X.distinctId.trim()&&X.distinctId.length<=200?X.distinctId.trim():void 0;try{let J=await ka("/api/v2/diagnostics/run",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${uL({})}`},body:JSON.stringify({url:Q,...Y?{email:Y}:{},distinct_id:G})});if(!J.ok)return $.json({error:`run HTTP ${J.status}`},502);let W=await J.json(),K=W.blocked?{state:"blocked"}:W.status==="fresh"?{state:"fresh"}:W.mode==="sync"?{state:"sync"}:{state:"running",id:W.id??null};return $.json(K)}catch{return $.json({error:"run failed"},502)}});MN.get("/status",async($)=>{let Z=$.req.query("id");if(!Z)return $.json({error:"id is required"},400);try{let X=await ka(`/api/v2/diagnostics/status?id=${encodeURIComponent(Z)}`,{headers:{Authorization:`Bearer ${uL({})}`}});if(!X.ok)return $.json({error:`status HTTP ${X.status}`},502);let Y=(await X.json()).status??"unknown",G={done:QW6.has(Y),status:Y};return $.json(G)}catch{return $.json({error:"status failed"},502)}});MN.get("/link-token/:id",async($)=>{let Z=$.req.param("id");try{let X=await ka(`/api/v2/public/link-tokens/${encodeURIComponent(Z)}`,{headers:{Accept:"application/json"}});if(X.status===404)return $.json(null);if(!X.ok)return $.json({error:`link token HTTP ${X.status}`},502);return $.json(await X.json())}catch{return $.json({error:"link token resolve failed"},502)}});MN.get("/suggest",async($)=>{let Z=($.req.query("q")??"").trim().slice(0,64);if(Z.length<2)return $.json({suggestions:[]});try{let X=await ka(`/api/v2/public/suggest?q=${encodeURIComponent(Z)}`,{headers:{Accept:"application/json"}});if(!X.ok)return $.json({suggestions:[]});let Q=await X.json();return $.json({suggestions:Array.isArray(Q.suggestions)?Q.suggestions:[]})}catch{return $.json({suggestions:[]})}});Qu$=MN});import{createHmac as YW6,timingSafeEqual as GW6}from"crypto";function Ju$($,Z,X,Q=Date.now()){if(!Z||!X)return!1;let Y,G=[];for(let H of Z.split(",")){let F=H.indexOf("=");if(F<=0)continue;let N=H.slice(0,F).trim(),U=H.slice(F+1).trim();if(N==="t")Y=U;else if(N==="v1")G.push(U)}if(!Y||G.length===0)return!1;let J=Number(Y);if(!Number.isFinite(J)||Math.abs(Q/1000-J)>JW6)return!1;let W=YW6("sha256",X).update(`${Y}.${$}`).digest("hex"),K=Buffer.from(W,"hex");return G.some((H)=>{let F=Buffer.from(H,"hex");return K.length===F.length&&GW6(K,F)})}function Wu$($){let Z;try{Z=JSON.parse($)}catch{return null}let X=MJ(Z),Q=MJ(MJ(X?.data)?.object);if(!X||typeof X.type!=="string"||!Q)return null;return{id:HH(X.id),type:X.type,created:typeof X.created==="number"?X.created:void 0,livemode:typeof X.livemode==="boolean"?X.livemode:void 0,data:{object:Q}}}function Ku$($){switch($){case"active":case"trialing":return"active";case"past_due":return"past_due";default:return"canceled"}}function HH($){return typeof $==="string"?$:void 0}function MJ($){return typeof $==="object"&&$!==null?$:void 0}function zA0($){return typeof $==="number"?new Date($*1000):null}function XZ1($){return HH($)??HH(MJ($)?.id)}function WW6($){return XZ1($.subscription)??HH(MJ(MJ($.parent)?.subscription_details)?.subscription)}function KW6($){let Z=zA0($.current_period_end);if(Z)return Z;let X=MJ($.items)?.data;if(!Array.isArray(X))return null;let Q=0;for(let Y of X){let G=MJ(Y)?.current_period_end;if(typeof G==="number"&&G>Q)Q=G}return Q>0?new Date(Q*1000):null}function $Z1($,Z){let X=zA0($.created);return!!X&&!!Z.lastStripeEventAt&&X<Z.lastStripeEventAt}function ZZ1($,Z){let X=zA0($.created);if(!X)return;return Z.lastStripeEventAt&&Z.lastStripeEventAt>X?void 0:X}async function HW6($,Z){let X=Z.data.object;switch(Z.type){case"checkout.session.completed":case"checkout.session.async_payment_succeeded":{let Q=HH(MJ(X.metadata)?.orgId);if(!Q)return{handled:!1,reason:"no orgId"};if(HH(MJ(X.metadata)?.kind)==="topup"){if(X.mode!=="payment")return{handled:!1,reason:"topup with wrong mode"};if(HH(X.payment_status)!=="paid")return{handled:!1,reason:"payment not confirmed"};let J=HH(X.id);if(!J)return console.error("stripe webhook: topup session without id",{eventId:Z.id,organizationId:Q}),{handled:!1,reason:"topup session without id"};let W=Number(MJ(X.metadata)?.creditCents);if(!Number.isInteger(W)||W<=0)return console.error("stripe webhook: paid topup with bad metadata \u2014 credit NOT applied",{eventId:Z.id,organizationId:Q,creditCents:MJ(X.metadata)?.creditCents}),{handled:!1,reason:"bad topup metadata"};return{handled:!0,organizationId:Q,topUp:{creditCents:W,referenceId:`stripe-topup:${J}`}}}if(X.mode!=="subscription")return{handled:!1,reason:"not a subscription checkout"};if(HH(X.payment_status)!=="paid")return{handled:!1,reason:"payment not confirmed"};let Y=await $.getBilling(Q);if(!Y)return{handled:!1,reason:"unknown org"};let G=XZ1(X.subscription);if(Y.stripeSubscriptionId&&G&&Y.stripeSubscriptionId!==G)return console.error("stripe webhook: refused checkout rebind",{organizationId:Q,eventId:Z.id}),{handled:!1,reason:"org already bound to another subscription",orphanSubscriptionId:G};if($Z1(Z,Y))return{handled:!1,reason:"stale event"};return await $.updateStripeState(Q,{stripeCustomerId:XZ1(X.customer),stripeSubscriptionId:G,status:"active",lastStripeEventAt:ZZ1(Z,Y)}),{handled:!0,organizationId:Q}}case"customer.subscription.updated":case"customer.subscription.deleted":{let Q=HH(X.id);if(!Q)return{handled:!1,reason:"no sub id"};let Y=await $.getBillingByStripeSubscriptionId(Q);if(!Y)return{handled:!1,reason:"unknown subscription"};let G=Z.type==="customer.subscription.deleted";if(!G&&$Z1(Z,Y))return{handled:!1,reason:"stale event"};let J=G?"canceled":Ku$(X.status);return await $.updateStripeState(Y.organizationId,{status:J,currentPeriodEnd:KW6(X),...G&&{stripeSubscriptionId:null},lastStripeEventAt:ZZ1(Z,Y)}),{handled:!0,organizationId:Y.organizationId}}case"invoice.paid":{let Q=WW6(X);if(!Q)return{handled:!1,reason:"no sub id"};let Y=await $.getBillingByStripeSubscriptionId(Q);if(!Y)return{handled:!1,reason:"unknown subscription"};if($Z1(Z,Y))return{handled:!1,reason:"stale event"};return await $.updateStripeState(Y.organizationId,{status:"active",currentPeriodEnd:zA0(X.period_end),lastStripeEventAt:ZZ1(Z,Y)}),{handled:!0,organizationId:Y.organizationId}}default:return{handled:!1,reason:`unhandled event ${Z.type}`}}}function FW6($,Z){if(!Z.handled||$.livemode===!1)return null;let X=$.data.object;if(Z.topUp)return{name:"credits_topup_succeeded",organizationId:Z.organizationId,properties:{credit_cents:Z.topUp.creditCents}};switch($.type){case"checkout.session.completed":case"checkout.session.async_payment_succeeded":return{name:"subscription_started",organizationId:Z.organizationId,properties:{}};case"customer.subscription.deleted":return{name:"subscription_canceled",organizationId:Z.organizationId,properties:{}};case"customer.subscription.updated":return{name:"subscription_updated",organizationId:Z.organizationId,properties:{status:Ku$(X.status),...typeof X.cancel_at_period_end==="boolean"?{cancel_at_period_end:X.cancel_at_period_end}:{}}};case"invoice.paid":if(X.billing_reason==="subscription_create")return null;return{name:"subscription_renewed",organizationId:Z.organizationId,properties:{}};default:return null}}function Gu$($,Z){let X=FW6($,Z);if(!X)return;VY({event:X.name,organizationId:X.organizationId,...$.id?{uuid:$p1(`stripe:${$.id}:${X.name}`)}:{},...$.created?{timestamp:new Date($.created*1000)}:{},properties:X.properties})}async function Hu$($){let Z=new oW(c8().db),X=await HW6(Z,$);if(!(X.handled&&X.topUp))Gu$($,X);if(X.handled&&X.topUp)await dw$({organizationId:X.organizationId,amountCents:X.topUp.creditCents,referenceId:X.topUp.referenceId}),Gu$($,X);if(!X.handled&&X.orphanSubscriptionId)try{await Ds1(X.orphanSubscriptionId),console.error("stripe webhook: canceled orphan subscription",{subscriptionId:X.orphanSubscriptionId,eventId:$.id})}catch(Q){if(!(Q instanceof bY&&(Q.status===400||Q.status===404)))throw Q}return X}var JW6=300;var Fu$=w(()=>{xG();S4();S60();rL();Be0()});var NW6=1048576,QZ1;var Nu$=w(()=>{w8();DN();I$();Fu$();QZ1=new F1;QZ1.post("/webhook",k9({maxSize:NW6,onError:($)=>$.json({error:"payload too large"},413)}),async($)=>{let Z=b0().stripeWebhookSecret;if(!Z)return $.json({error:"stripe billing not configured"},503);let X=await $.req.text();if(!Ju$(X,$.req.header("stripe-signature"),Z))return $.json({error:"invalid signature"},400);let Y=Wu$(X);if(!Y)return $.json({error:"invalid payload"},400);let G=await Hu$(Y);return console.log("stripe webhook",{eventId:Y.id,type:Y.type,livemode:Y.livemode,...G}),$.json({received:!0})})});import{timingSafeEqual as UW6}from"crypto";function BW6($,Z,X){if(!Z?.startsWith("sha256="))return!1;let Q=new Bun.CryptoHasher("sha256",X).update($).digest("hex"),Y=Z.slice(7);if(Y.length!==Q.length)return!1;return UW6(Buffer.from(Y),Buffer.from(Q))}var OW6=5242880,YZ1;var Uu$=w(()=>{w8();DN();op();YZ1=new F1;YZ1.post("/webhook",k9({maxSize:OW6,onError:($)=>$.json({error:"payload too large"},413)}),async($)=>{let Z=process.env.GITHUB_WEBHOOK_SECRET;if(!Z)return $.json({error:"github webhook not configured"},503);let X=await $.req.text();if(!BW6(X,$.req.header("x-hub-signature-256"),Z))return $.json({error:"invalid signature"},400);if($.req.header("x-github-event")!=="push")return $.json({ok:!0,ignored:"event"});let Q;try{Q=JSON.parse(X)}catch{return $.json({error:"invalid payload"},400)}let Y=Q.ref,G=Q.repository?.full_name;if(!Y||!G)return $.json({ok:!0,ignored:"shape"});let W=(await Sp0())?.markTenantPoolsDirty(G,Y)??[];return $.json({ok:!0,pools:W})})});function Ou$($,Z){if(Z.startsWith("text/html")||Z.startsWith("image/svg"))$.set("Content-Security-Policy","sandbox allow-scripts allow-modals allow-same-origin")}var Bu$,wW6,DW6,wu$;var Du$=w(()=>{w8();O3();cy();Sx();Bu$=new F1,wW6=["range","if-none-match","if-modified-since"],DW6=["content-type","content-length","content-range","accept-ranges","etag","last-modified"];Bu$.get("/:org/files/*",async($)=>{let Z=$.get("studioContext"),X=Z.organization?.id;if(!Z.auth?.user?.id){if(gh($))return $.redirect(`/login?next=${encodeURIComponent($.req.path)}`,302);throw new $$(401,{message:"Authentication required"})}if(!X)throw new $$(401,{message:"Organization context required"});let Q=$.req.path.replace(/^.*\/files\//,"");if(!Q)throw new $$(400,{message:"Missing file key"});let Y=await xn(Q,Z);if(!Y)throw new $$(503,{message:"Object storage not configured"});if(Y.startsWith("data:")&&E3()){let K=Y.match(/^data:([^;]+);base64,(.+)$/s);if(!K)throw new $$(500,{message:"Invalid data URL from storage"});let[,H,F]=K,N=Buffer.from(F,"base64"),U=new Headers({"Content-Type":H,"Cache-Control":"private, max-age=86400"});return Ou$(U,H),new Response(N,{status:200,headers:U})}let G=new Headers;for(let K of wW6){let H=$.req.header(K);if(H)G.set(K,H)}let J=await fetch(Y,{headers:G});if(J.status===403||J.status===404)throw new $$(404,{message:"File not found"});if(!J.ok&&J.status!==304&&J.status!==416)throw console.error(`[files] upstream storage error ${J.status} for key:`,Q),new $$(502,{message:"Upstream storage error"});let W=new Headers;for(let K of DW6){let H=J.headers.get(K);if(H)W.set(K,H)}return W.set("Cache-Control","private, max-age=86400"),Ou$(W,W.get("content-type")??""),new Response(J.body,{status:J.status,headers:W})});wu$=Bu$});var Va=_((i_)=>{var LW6=i_&&i_.__createBinding||(Object.create?function($,Z,X,Q){if(Q===void 0)Q=X;var Y=Object.getOwnPropertyDescriptor(Z,X);if(!Y||("get"in Y?!Z.__esModule:Y.writable||Y.configurable))Y={enumerable:!0,get:function(){return Z[X]}};Object.defineProperty($,Q,Y)}:function($,Z,X,Q){if(Q===void 0)Q=X;$[Q]=Z[X]}),EW6=i_&&i_.__exportStar||function($,Z){for(var X in $)if(X!=="default"&&!Object.prototype.hasOwnProperty.call(Z,X))LW6(Z,$,X)};Object.defineProperty(i_,"__esModule",{value:!0});EW6(OY(),i_)});var ju$=_((Lu$)=>{Object.defineProperty(Lu$,"__esModule",{value:!0});Lu$.version=void 0;Lu$.version="3.4.0"});var Au$=_((FH)=>{var jW6=FH&&FH.__importDefault||function($){return $&&$.__esModule?$:{default:$}};Object.defineProperty(FH,"__esModule",{value:!0});FH.NodeTransport=FH.VERSION=void 0;FH.nodeResolveHost=IW6;var r6=Va(),zW6=z0("net"),GZ1=z0("tls"),PW6=z0("path"),zu$=z0("fs"),AW6=jW6(z0("dns")),TW6=ju$();FH.VERSION=TW6.version;var RW6="nats.js";class Pu${socket;version;lang;yields=[];signal=(0,r6.deferred)();closedNotification=(0,r6.deferred)();options;connected=!1;tlsName="";done=!1;closeError;constructor(){this.lang=RW6,this.version=FH.VERSION}async connect($,Z){this.tlsName=$.tlsName,this.options=Z;let{tls:X}=this.options,{handshakeFirst:Q}=X||{};try{if(Q===!0)this.socket=await this.tlsFirst($);else this.socket=await this.dial($);if(this.done)this.socket?.destroy();let Y=await this.peekInfo();(0,r6.checkOptions)(Y,Z);let{tls_required:G,tls_available:J}=Y,W=J===!0&&Z.tls!==null;if(!Q&&(G||W))this.socket=await this.startTLS();if(this.done)this.socket?.destroy();if(G&&this.socket.encrypted!==!0)throw r6.errors.InvalidArgumentError.format("tls","is not available on this server");return this.connected=!0,this.setupHandlers(),this.signal.resolve(),Promise.resolve()}catch(Y){let G=Y;if(!G)G=new r6.errors.ConnectionError("error connecting - node provided an undefined error");let{code:J}=G,W=J==="ECONNREFUSED"?new r6.errors.ConnectionError("connection refused",{cause:G}):G;throw this.socket?.destroy(),W}}dial($){let Z=(0,r6.deferred)(),X,Q=(0,zW6.createConnection)($.port,$.hostname,()=>{Z.resolve(Q),Q.removeAllListeners()});return Q.on("error",(Y)=>{X=Y}),Q.on("close",()=>{Q.removeAllListeners(),Z.reject(X)}),Q.setNoDelay(!0),Z}get isClosed(){return this.done}close($){return this._closed($,!1)}peekInfo(){let $=(0,r6.deferred)(),Z;return this.socket.on("data",(X)=>{this.yields.push(X);let Q=r6.DataBuffer.concat(...this.yields),Y=(0,r6.extractProtocolMessage)(Q);if(Y!=="")try{let G=r6.INFO.exec(Y);if(!G)throw Error("unexpected response from server");let J=JSON.parse(G[1]);$.resolve(J)}catch(G){$.reject(G)}finally{this.socket.removeAllListeners()}}),this.socket.on("error",(X)=>{Z=X}),this.socket.on("close",()=>{this.socket.removeAllListeners(),$.reject(Z)}),$}loadFile($){if(!$)return Promise.resolve();let Z=(0,r6.deferred)();try{if($=(0,PW6.resolve)($),!(0,zu$.existsSync)($))Z.reject(Error(`${$} doesn't exist`));(0,zu$.readFile)($,(X,Q)=>{if(X)return Z.reject(X);Z.resolve(Q)})}catch(X){Z.reject(X)}return Z}async loadClientCerts(){let $={},{certFile:Z,cert:X,caFile:Q,ca:Y,keyFile:G,key:J}=this.options.tls;try{if(Z){let W=await this.loadFile(Z);if(W)$.cert=W}else if(X)$.cert=X;if(G){let W=await this.loadFile(G);if(W)$.key=W}else if(J)$.key=J;if(Q){let W=await this.loadFile(Q);if(W)$.ca=[W]}else if(Y)$.ca=Y;return Promise.resolve($)}catch(W){return Promise.reject(W)}}async tlsFirst($){let Z,X={servername:this.tlsName,rejectUnauthorized:!0};if(this.socket)X.socket=this.socket;if(typeof this.options.tls==="object")try{let Y=await this.loadClientCerts()||{};X=(0,r6.extend)(X,this.options.tls,Y)}catch(Y){return Promise.reject(new r6.errors.ConnectionError(Y.message,{cause:Y}))}let Q=(0,r6.deferred)();try{let Y=(0,GZ1.connect)($.port,$.hostname,X,()=>{Y.removeAllListeners(),Q.resolve(Y)});Y.on("error",(G)=>{Z=G}),Y.on("secureConnect",()=>{if(X.rejectUnauthorized===!1)return;if(!Y.authorized)throw Y.authorizationError}),Y.on("close",()=>{Q.reject(Z),Y.removeAllListeners()}),Y.setNoDelay(!0)}catch(Y){Q.reject(new r6.errors.ConnectionError(Y.message,{cause:Y}))}return Q}async startTLS(){let $,Z={socket:this.socket,servername:this.tlsName,rejectUnauthorized:!0};if(typeof this.options.tls==="object")try{let Q=await this.loadClientCerts()||{};Z=(0,r6.extend)(Z,this.options.tls,Q)}catch(Q){return Promise.reject(new r6.errors.ConnectionError(Q.message,{cause:Q}))}let X=(0,r6.deferred)();try{let Q=(0,GZ1.connect)(Z,()=>{Q.removeAllListeners(),X.resolve(Q)});Q.on("error",(Y)=>{$=Y}),Q.on("secureConnect",()=>{if(Z.rejectUnauthorized===!1)return;if(!Q.authorized)throw Q.authorizationError}),Q.on("close",()=>{X.reject($),Q.removeAllListeners()})}catch(Q){X.reject(new r6.errors.ConnectionError(Q.message,{cause:Q}))}return X}setupHandlers(){let $;this.socket.on("data",(Z)=>{return this.yields.push(Z),this.signal.resolve()}),this.socket.on("error",(Z)=>{$=Z}),this.socket.on("end",()=>{if(this.socket?.destroyed)return;this.socket?.write(new Uint8Array(0),()=>{this.socket?.end()})}),this.socket.on("close",()=>{this._closed($,!1)})}[Symbol.asyncIterator](){return this.iterate()}async*iterate(){while(!0){if(this.yields.length===0)await this.signal;let $=this.yields;this.yields=[];for(let Z=0;Z<$.length;Z++){if(this.options.debug)console.info(`> ${(0,r6.render)($[Z])}`);yield $[Z]}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,r6.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 GZ1.TLSSocket}_send($){if(this.isClosed||this.socket===void 0)return Promise.resolve();if(this.options.debug)console.info(`< ${(0,r6.render)($)}`);let Z=(0,r6.deferred)();try{this.socket.write($,(X)=>{if(X){if(this.options.debug)console.error(`!!! ${(0,r6.render)($)}: ${X}`);return Z.reject(X)}return Z.resolve()})}catch(X){if(this.options.debug)console.error(`!!! ${(0,r6.render)($)}: ${X}`);Z.reject(X)}return Z}send($){this._send($).catch((X)=>{})}async _closed($,Z=!0){if(!this.connected)return;if(this.done){this.socket?.destroy();return}if(this.closeError=$,!$&&this.socket&&Z)try{await this._send(new TextEncoder().encode(""))}catch(X){if(this.options.debug)console.log("transport close terminated with an error",X)}try{if(this.socket)this.socket.removeAllListeners(),this.socket?.destroy(),this.socket=void 0}catch(X){console.log(X)}this.done=!0,this.closedNotification.resolve(this.closeError)}closed(){return this.closedNotification}}FH.NodeTransport=Pu$;function IW6($){let Z=(0,r6.deferred)();return AW6.default.lookup($,{all:!0},(X,Q)=>{if(X){Z.reject(X);return}let Y=[];for(let G of Q)Y.push(G.address);if(Y.length===0)Y.push($);Z.resolve(Y)}),Z}});var Mu$=_((qu$)=>{Object.defineProperty(qu$,"__esModule",{value:!0});qu$.connect=qW6;var Tu$=Au$(),Ru$=Va(),Iu$=Va();function qW6($={}){if((0,Iu$.hasWsProtocol)($))return Promise.reject(Iu$.errors.InvalidArgumentError.format("servers","node client doesn't support websockets, use the 'wsconnect' function instead"));return(0,Ru$.setTransportFactory)({factory:()=>{return new Tu$.NodeTransport},dnsResolveFn:Tu$.nodeResolveHost}),Ru$.NatsConnectionImpl.connect($)}});var ku$=_((kN)=>{var kW6=kN&&kN.__createBinding||(Object.create?function($,Z,X,Q){if(Q===void 0)Q=X;var Y=Object.getOwnPropertyDescriptor(Z,X);if(!Y||("get"in Y?!Z.__esModule:Y.writable||Y.configurable))Y={enumerable:!0,get:function(){return Z[X]}};Object.defineProperty($,Q,Y)}:function($,Z,X,Q){if(Q===void 0)Q=X;$[Q]=Z[X]}),VW6=kN&&kN.__exportStar||function($,Z){for(var X in $)if(X!=="default"&&!Object.prototype.hasOwnProperty.call(Z,X))kW6(Z,$,X)};Object.defineProperty(kN,"__esModule",{value:!0});kN.connect=void 0;var SW6=Mu$();Object.defineProperty(kN,"connect",{enumerable:!0,get:function(){return SW6.connect}});VW6(Va(),kN)});function _u$($){let Z=$?.connectFn??fW6,X=null,Q=null,Y=!1,G=!1,J=!1,W=[];function K(){return X!==null&&!X.isClosed()&&!X.isDraining()&&!J}function H(){console.log(`[NatsProvider] fireReady: ${W.length} callbacks`);for(let U of W)try{U()}catch{}}function F(U){(async()=>{for await(let O of U.status())if(O.type==="disconnect")console.log("[NatsProvider] Disconnected"),J=!0;else if(O.type==="reconnect")console.log("[NatsProvider] Reconnected, re-firing ready callbacks"),J=!1,Q=null,H()})().catch(()=>{})}async function N(U,O){let B=0;while(!G)try{X=await Z({servers:U,timeout:vW6,reconnect:!0,maxReconnectAttempts:-1,...O?{authenticator:O}:{}}),console.log(`[NatsProvider] Connected to ${X.getServer()} after ${B} attempt(s)`),Q=null,J=!1,F(X),H();return}catch{B++;let D=tZ(_W6,CW6,B-1,2,0.5);await k$(D)}}return{init(U,O){if(Y)return;Y=!0,G=!1;let B=O?.creds?Vu$.credsAuthenticator(new TextEncoder().encode(O.creds)):void 0;N(U,B).catch(()=>{})},isConnected(){return K()},getConnection(){return K()?X:null},getJetStream(){if(!K())return null;if(!Q)Q=Cu$.jetstream(X);return Q},onReady(U){if(W.push(U),K())try{U()}catch{}},async drain(){if(G=!0,Y=!1,Q=null,J=!1,X){let U=X;X=null,await U.drain().catch(()=>{})}}}}function fW6($){return Su$.connect($)}var Vu$,Su$,Cu$,CW6=100,_W6=3000,vW6=3000;var vu$=w(()=>{c4();Vu$=V(yu(),1),Su$=V(ku$(),1),Cu$=V(dw(),1)});function JZ1($,Z){return`${$}.${Z}`}class WZ1{cache;constructor($){this.cache=Rh({ttlMs:$?.ttlMs??bW6,maxSize:$?.maxSize??xW6})}async get($,Z){return this.cache.get(JZ1($,Z))??null}async set($,Z,X){this.cache.set(JZ1($,Z),X)}async invalidate($,Z){this.cache.delete(JZ1($,Z))}teardown(){this.cache.clear()}}var bW6=600000,xW6=5000;var fu$=()=>{};function PA0($,Z){return`${$}:${Z}`}function KZ1($){let Z=Rh({ttlMs:$?.ttlMs??yW6,maxSize:$?.maxSize??gW6}),X=$?.getConnection,Q=crypto.randomUUID(),Y=new TextEncoder,G=new TextDecoder,J=null;function W(K,H){let F=X?.();if(!F)return;try{F.publish(bu$,Y.encode(JSON.stringify({organizationId:K,keyId:H,originId:Q})))}catch(N){console.warn("[ProviderKeyCache] Publish failed (non-critical):",N)}}return{get(K,H){return Z.get(PA0(K,H))},set(K,H,F){Z.set(PA0(K,H),F)},invalidate(K,H){Z.delete(PA0(K,H)),W(K,H)},start(){if(J)return;let K=X?.();if(!K)return;J=K.subscribe(bu$),(async()=>{for await(let H of J)try{let F=JSON.parse(G.decode(H.data));if(F.originId===Q)continue;Z.delete(PA0(F.organizationId,F.keyId))}catch{}})().catch(console.error)},teardown(){J?.unsubscribe(),J=null,Z.clear()}}}var bu$="studio.ai-provider-keys.invalidate",yW6=30000,gW6=5000;var xu$=()=>{};class HZ1{options;subscriptions=[];onCancel=null;encoder=new TextEncoder;originId=crypto.randomUUID();seenMessageIds=new Set;constructor($){this.options=$}async start($){if($)this.onCancel=$;if(this.subscriptions.length>0)return;if(!this.onCancel)return;let Z=this.options.getConnection();if(!Z)return;let X=new TextDecoder;this.subscriptions=yu$.map((Q)=>Z.subscribe(Q));for(let Q of this.subscriptions)(async()=>{for await(let Y of Q)try{let G=JSON.parse(X.decode(Y.data));if(G.originId===this.originId)continue;if(G.messageId&&this.hasSeen(G.messageId))continue;this.onCancel?.(G.taskId)}catch{}})().catch(console.error)}broadcast($){if(/[.*>\s]/.test($)){console.warn("[NatsCancelBroadcast] Invalid threadId, skipping broadcast");return}this.onCancel?.($);try{let Z=this.options.getConnection();if(!Z)return;let X=this.encoder.encode(JSON.stringify({taskId:$,originId:this.originId,messageId:crypto.randomUUID()}));for(let Q of yu$)Z.publish(Q,X)}catch(Z){console.warn("[NatsCancelBroadcast] Publish failed (non-critical):",Z)}}publishControlFrame($,Z){}async stop(){for(let $ of this.subscriptions)$.unsubscribe();this.subscriptions=[],this.seenMessageIds.clear(),this.onCancel=null}hasSeen($){if(this.seenMessageIds.has($))return!0;if(this.seenMessageIds.add($),this.seenMessageIds.size>1000){let Z=this.seenMessageIds.values().next().value;if(Z)this.seenMessageIds.delete(Z)}return!1}}var yu$;var gu$=w(()=>{yu$=["studio.decopilot.cancel","mesh.decopilot.cancel"]});var hu$=($)=>{let Z;return()=>Z??=$()},FZ1,NZ1;var uu$=w(()=>{I6();FZ1=hu$(()=>w$.createHistogram("decopilot.stream.encode_ms",{description:"Per-chunk JSON.stringify+encode time for decopilot stream",unit:"ms"})),NZ1=hu$(()=>w$.createCounter("decopilot.stream.published_chunks",{description:"Logical decopilot stream chunks published to JetStream",unit:"{chunks}"}))});function iW6(){return{name:tF,subjects:[`${pw0}.>`],storage:HW.StorageType.File,max_age:cW6,max_bytes:dW6,max_msgs_per_subject:mW6,discard:HW.DiscardPolicy.Old,retention:HW.RetentionPolicy.Limits,duplicate_window:lW6,num_replicas:1}}class du${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 cu$($){let Z=lu$.headers();for(let[X,Q]of Object.entries($))Z.set(X,Q);return Z}function oW6($,Z){let X=0;return{publish(Q,Y,G,J){Q.publish(Y,G,J?{headers:J}:void 0).catch((W)=>{if(X++,uW6().add(1,{"org.id":Z??"unknown"}),X===1||X%100===0)console.warn(`[Decopilot] JetStream publish failed for thread ${$} (${X} total):`,W)})},get errorCount(){return X}}}function rW6($){if(!($ instanceof Error))return!1;if($.name==="TimeoutError")return!0;return/timeout|no responders|503/i.test($.message)}class UZ1{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=iW6(),X=await f5(async()=>{let Q=this.options.getJetStreamManager?await this.options.getJetStreamManager():await HW.jetstreamManager($);try{await Q.streams.info(tF),await Q.streams.update(tF,Z)}catch(Y){if(Y instanceof Error&&Y.message.includes("stream not found"))await Q.streams.add(Z);else if(Y instanceof Error&&/can ?not change.*storage|storage type/i.test(Y.message))await Q.streams.delete(tF),await Q.streams.add(Z);else throw Y}return Q},{maxAttempts:5,minTimeout:250,maxTimeout:4000,jitter:0.5,isRetriable:rW6});this.js=this.options.getJetStream(),this.jsm=X,console.log(`[Decopilot] StreamBuffer.init ${this.js?"ready":"degraded (js=null)"}`)}pump($,Z,X,Q){let Y=this.js;if(!Y)return console.warn(`[Decopilot] pump: JetStream client unavailable for thread ${Z}; chunks NOT published to NATS`),Promise.resolve();let G=oW6(Z,Q),J=!1,W=()=>{if(J)return;J=!0;let H=pF$(Z);Y.publish(H.subject,H.data).catch(()=>{})};X.addEventListener("abort",W,{once:!0});let K=(H)=>{let F=performance.now(),N=bo0(H,{runId:Z}),U=performance.now()-F;if(FZ1().record(U),NZ1().add(1,{"org.id":Q??"unknown"}),tW6?.record(U,N.reduce((O,B)=>O+B.data.length,0)),N.length===0){console.warn(`[Decopilot] dropping oversized stream chunk for thread ${Z}`);return}for(let O of N)G.publish(Y,O.subject,O.data,O.headers?cu$(O.headers):void 0)};return(async()=>{let H=$.getReader(),F=0,N=0,U;try{while(!0){let{done:O,value:B}=await H.read();if(O)break;if(K(B),N++,++F>=64)F=0,await new Promise((D)=>setImmediate(D))}}catch(O){U=O,console.warn(`[Decopilot] stream pump error for thread ${Z}:`,O?.message??O)}finally{if(H.releaseLock(),W(),nW6)console.warn(JSON.stringify({msg:"decopilot-stream-diag",event:"pump-done",taskId:Z,publishedChunks:N,publishErrors:G.errorCount}))}if(U!==void 0)throw U})()}async publishRawChunk($,Z,X){let Q=this.js;if(!Q)return!1;let Y=performance.now(),G=bo0(Z,{runId:$,dedup:X});if(FZ1().record(performance.now()-Y),NZ1().add(1),G.length===0)return console.warn(`[Decopilot] dropping oversized raw chunk for thread ${$} (> MAX_CHUNKED_BYTES)`),!0;for(let J of G)await Q.publish(J.subject,J.data,{...J.headers?{headers:cu$(J.headers)}:{},...J.msgId?{msgID:J.msgId}:{}});return!0}async publishDone($,Z,X){let Q=this.js;if(!Q)return!1;let Y=iF$({runId:$,fenceToken:Z,finalSeq:X});return await Q.publish(Y.subject,Y.data,{msgID:Y.msgId}),!0}async createTailStream($,Z,X){let Q=this.js;if(!Q)return console.warn(`[Decopilot] createTailStream: JetStream client unavailable for thread ${$}; no live tail`),null;let Y=X?.deliverPolicy==="new"?HW.DeliverPolicy.New:HW.DeliverPolicy.All,G=X?.closeOnDone??!1,J=bB($),W;try{W=await(await Q.consumers.get(tF,{filter_subjects:J,deliver_policy:Y})).consume()}catch(D){return console.warn("[Decopilot] JetStream tail unavailable (non-critical):",D?.message??D),null}let F=aw0({messages:async function*(){try{for await(let D of W)yield{subject:D.subject,data:D.data,headers:D.headers}}finally{W.stop()}}(),onCancel:()=>W.stop()}).pipeThrough(nw0()).pipeThrough(tw0()).getReader(),N=!1,U=()=>{if(N)return;N=!0;try{F.releaseLock()}catch{}},O=!1,B=()=>{if(O)return;O=!0,W.stop(),F.cancel().catch(()=>{}),U()};return Z?.addEventListener("abort",B,{once:!0}),new ReadableStream({async pull(D){for(;;){let{done:L,value:E}=await F.read();if(L){B(),D.close();return}let j=E;if(j.kind==="done"){if(G){B(),D.close();return}continue}D.enqueue(j.chunk);return}},cancel(){B()}})}purge($){if(!this.jsm)return;this.jsm.streams.purge(tF,{filter:bB($)}).catch(()=>{})}teardown(){this.js=null,this.jsm=null}}var HW,lu$,hW6=($)=>{let Z;return()=>Z??=$()},uW6,cW6=86400000000000,lW6=120000000000,dW6=4294967296,mW6=500000,pW6,nW6,tW6;var mu$=w(()=>{c4();xo0();sw0();ow0();I6();uu$();HW=V(dw(),1),lu$=V(yu(),1),uW6=hW6(()=>w$.createCounter("decopilot.stream.publish_errors",{description:"Number of JetStream publish failures for decopilot stream chunks",unit:"{errors}"}));pW6=process.env.STREAM_ENCODE_TRACE==="1",nW6=process.env.DECOPILOT_STREAM_TRACE==="1";tW6=pW6?new du$:null});function AA0($,Z,X,Q){if(!Q)return!1;return $.emit(Z,_W(X,Q.status,{title:Q.title??void 0,virtualMcpId:Q.virtual_mcp_id??void 0,createdBy:Q.created_by??void 0,triggerId:Q.trigger_id??null,branch:Q.branch??null,harnessId:Q.harness_id??void 0,createdAt:Q.created_at,updatedAt:Q.updated_at})),!0}var iu$=w(()=>{P8()});class OZ1{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}}async function pu$($,Z,X){let Q=Z.organizationId;if(Z.status!=="in_review")return!1;if(!cr(X))return!1;if(await $.storage.taskBoard.hasHumanRejectedDone(Z.id,Q))return!1;let Y=await $.storage.taskBoard.update(Z.id,Q,{status:"done"},Z.updatedBy);return await F6($,{taskBoardItemId:Z.id,action:"status_changed",actorId:null,data:{from:Z.status,to:"done",reason:"pr_merged"}}),h$(Q,Y),console.log(`[task-board-review-sweeper] ${Z.id}: linked PR already merged \u2014 moved to done`),!0}var nu$=w(()=>{JX();lr();E5()});function QK6($){return $ instanceof t7}function YK6($,Z){return Z-$>=ZK6}class BZ1{taskBoard;contextFactory;billing;options;timer=null;running=!1;cursor=null;constructor($,Z,X,Q={}){this.taskBoard=$;this.contextFactory=Z;this.billing=X;this.options=Q}start(){if(this.timer)return;let $=this.options.intervalMs??aW6;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??eW6,X=this.options.itemIntervalMs??sW6,Q=new Date(Date.now()-X),Y=await this.taskBoard.listItemsPendingReview(Z,this.cursor,Q),G=Y.at(-1);this.cursor=Y.length===Z&&G?{updatedAt:G.updatedAt,id:G.id}:null;for(let{id:J,organizationId:W}of Y)try{if(await this.reconcileItem(J,W,Q))$++}catch(K){console.error(`[task-board-review-sweeper] ${J} 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()-Yt0),vt0);for(let X of Z)console.warn(`[task-board-review-sweeper] failed never-started thread ${X.threadId} on ${X.itemId}`)}catch(Z){console.error("[task-board-review-sweeper] reaping failed",Z)}}async reactToUnhandledFailures($){let Z=await this.taskBoard.listItemsStuckAfterFailure($,new Date(Date.now()-XK6));for(let{id:X,organizationId:Q,threadId:Y}of Z)try{console.warn(`[task-board-review-sweeper] reacting to an unhandled failure on ${X}`),await Ct0(this.taskBoard,Y,Q),await _t0(this.taskBoard,this.billing,Y,Q)}catch(G){console.error(`[task-board-review-sweeper] unhandled-failure reaction for ${X} failed`,G)}}async dispatchDueRetries($){let Z=0,X=await this.taskBoard.listItemsDueForRetry($,new Date);for(let{id:Q,organizationId:Y,attempts:G}of X)try{if(!await this.taskBoard.claimDueRetry(Q,Y,new Date))continue;let J=await this.taskBoard.getById(Q,Y);if(!J||J.status!=="in_progress"||J.assigneeId!==T8)continue;let W=await this.contextFactory(Y,J.assignedBy??J.createdBy);if(!W)continue;await d3(W,J,{runClass:"retry"}),Z++,console.warn(`[task-board-review-sweeper] re-dispatched ${Q} after a failure (attempt ${G})`)}catch(J){if(console.error(`[task-board-review-sweeper] retry dispatch for ${Q} failed`,J),QK6(J)){await this.returnToTodo(Q,Y,J instanceof Error?J.message:String(J));continue}await this.taskBoard.scheduleRunRetry(Q,Y,G,new Date(Date.now()+$K6)).catch((W)=>console.error(`[task-board-review-sweeper] re-arming ${Q} failed`,W))}return Z}async returnToTodo($,Z,X){try{let Q=await this.taskBoard.getById($,Z);if(!Q||Q.status!=="in_progress")return;let Y=await this.taskBoard.returnToTodoAfterFailure($,Z,Q.updatedBy);if(!Y)return;await this.taskBoard.recordActivity({taskBoardItemId:$,action:"status_changed",actorId:null,data:{from:"in_progress",to:"todo",reason:X}}).catch(()=>{}),h$(Z,Y)}catch(Q){console.error(`[task-board-review-sweeper] returning ${$} to todo failed`,Q)}}async handOffReviewWithoutPr($,Z){let X=await this.taskBoard.listActivity(Z.id,Z.organizationId);if(!YK6(PF(X),Date.now()))return;await CK($,Z,"no pull request is linked to this task \u2014 there is nothing for a "+"reviewer to review")}async reconcileItem($,Z,X){if(!await this.taskBoard.claimSweep($,Z,X))return!1;let Q=await this.taskBoard.getById($,Z);if(!Q)return!1;if(Q.status!=="in_review")return!1;let Y=Q.assigneeId===T8,G=await this.taskBoard.listPrs($,Z),J=await this.contextFactory(Z,Q.assignedBy??Q.createdBy);if(!J)return!1;if(G.length===0){if(Y)await this.handOffReviewWithoutPr(J,Q);return!1}let W=await Promise.all(G.map(async(K)=>({...K,...await uy(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 pu$(J,Q,W.map((K)=>K.merged)))return!0;if(await _N$(J,Q))return!0;if(!Y)return!1;if(!et0(W))return!1;return await Dw0(J,Q,{previewMatchesHead:$o0(W)}),!0}dispose(){if(this.timer)clearInterval(this.timer),this.timer=null}}var aW6=60000,sW6=300000,eW6=50,$K6=60000,ZK6=900000,XK6=120000;var tu$=w(()=>{X9();mt0();SK();on();nu$();E5();dG();ft0();JJ();_n()});import{readdir as GK6,rm as TA0}from"fs/promises";import{join as RA0}from"path";async function IA0($){let Z=new Date;Z.setUTCDate(Z.getUTCDate()-JK6),Z.setUTCHours(0,0,0,0);let X=0;try{let Q=await p_($);for(let Y of Q)if(/^\d{4}$/.test(Y))X+=await ou$($,Y,Z);else if(!Y.startsWith(".")){let G=RA0($,Y),J=await p_(G);for(let K of J){if(!/^\d{4}$/.test(K))continue;X+=await ou$(G,K,Z)}if((await p_(G)).length===0)await TA0(G,{recursive:!0,force:!0})}}catch(Q){console.warn("monitoring retention cleanup failed:",Q)}return X}async function ou$($,Z,X){let Q=0,Y=RA0($,Z),G=await p_(Y);for(let W of G){if(!/^\d{2}$/.test(W))continue;let K=RA0(Y,W),H=await p_(K);for(let N of H){if(!/^\d{2}$/.test(N))continue;let U=new Date(`${Z}-${W}-${N}T00:00:00Z`);if(isNaN(U.getTime()))continue;if(U<X){let O=RA0(K,N);await TA0(O,{recursive:!0,force:!0}),Q++}}if((await p_(K)).length===0)await TA0(K,{recursive:!0,force:!0})}if((await p_(Y)).length===0)await TA0(Y,{recursive:!0,force:!0});return Q}async function p_($){try{return(await GK6($)).filter((X)=>!X.startsWith("."))}catch{return[]}}var JK6=30;var wZ1=()=>{};import{DBOS as DZ1,SchedulerMode as WK6}from"@dbos-inc/dbos-sdk";async function HK6(){let $=[CJ(),n_(),BH()],Z=0;for(let X of $)try{Z+=await IA0(X)}catch(Q){console.error("[monitoring-retention] cleanup failed:",Q)}return console.log(`[monitoring-retention] deleted ${Z} day-dir(s) across ${$.length} signal dir(s)`),{deleted:Z,dirs:$.length}}async function FK6($,Z){await DZ1.runStep(()=>HK6(),{name:"monitoringRetention"})}function au$(){if(ru$)return;ru$=!0;let $=DZ1.registerWorkflow(FK6,{name:"monitoringRetentionWorkflow"});DZ1.registerScheduled($,{name:"monitoringRetentionWorkflow",crontab:KK6,mode:WK6.ExactlyOncePerIntervalWhenActive})}var KK6="23 4 * * *",ru$=!1;var su$=w(()=>{HY();wZ1()});function eu$($){return async(Z,X)=>{let Q=await $.db.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["member.role","organization.id as orgId","organization.slug as orgSlug","organization.name as orgName"]).where("member.userId","=",X).where("member.organizationId","=",Z).executeTakeFirst();if(!Q)return console.warn(`[automationContextFactory] User ${X} not found in org ${Z} \u2014 returning null`),null;let Y=await YJ.create();Y.auth.user={id:X,role:Q.role},Y.organization={id:Q.orgId,slug:Q.orgSlug,name:Q.orgName};let G=await w61($.db,Z,Q.role);return Y.boundAuth=B61({auth:Y.authInstance,headers:new Headers,role:Q.role,permissions:G,userId:X}),Y.access=new TL(X,void 0,Y.boundAuth,Q.role,"self"),VB(Y,{id:Q.orgId,slug:Q.orgSlug}),Y}}var $c$=w(()=>{RL();UC()});function NK6(){return{services:[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}],migrationsStatus:"pending",serverUrl:null,logs:[]}}function OK6(){for(let $ of UK6)$()}function Zc$($){let Z=[...LZ1.logs,$];LZ1={...LZ1,logs:Z.length>500?Z.slice(-500):Z},OK6()}function EZ1(){return BK6}var LZ1,UK6,BK6=!1;var jZ1=w(()=>{LZ1=NK6(),UK6=new Set});import{EventEmitter as wK6}from"events";var zZ1;var Xc$=w(()=>{jZ1();zZ1=new wK6;zZ1.on("request",($)=>{Zc$($)})});function Qc$(){return async($,Z)=>{let X=Date.now(),Q=$.req.method,Y=$.req.path;if(Y==="/api/auth/get-session"||Y.includes("favicon")){await Z();return}let G="",J=!1;if(Y.startsWith("/mcp")&&Q==="POST"){J=!0;try{if($.req.header("Content-Type")?.includes("application/json")){let U=await $.req.raw.clone().json();if(U.method==="tools/call"&&U.params?.name){let O=Ou(U.params.name),B=U.params.arguments||{},D=Object.keys(B).map((E)=>Ou(E)),L=D.length>0?D.slice(0,3).join(",")+(D.length>3?"\u2026":""):"";G=`${G5.tool}${O}${G5.dim}(${L})${G5.reset}`}else if(U.method)G=`${G5.dim}${Ou(U.method)}${G5.reset}`}}catch{}}let W=Ou(Y);if(Y.startsWith("/mcp/conn_")){let F=Y.split("/")[2]??"";W=`/mcp/${G5.mcp}${Ou(F.slice(0,12))}\u2026${G5.reset}`}else if(Y==="/mcp")W=`${G5.mcp}/mcp${G5.reset}`;else if(Y==="/mcp/registry")W=`${G5.mcp}/mcp/registry${G5.reset}`;let K=LK6(Q),H=J?"\u25C0":"\u2190";if(!EZ1())console.log(`${G5.dim}${H}${G5.reset} ${K}${Q}${G5.reset} ${W}${G?` ${G}`:""}`);try{await Z()}finally{let F=Date.now()-X,N=$.res.status,U=DK6(N),O=F<1000?`${F}ms`:`${(F/1000).toFixed(1)}s`,B=J?"\u25B6":"\u2192";if(!EZ1())console.log(`${G5.dim}${B}${G5.reset} ${K}${Q}${G5.reset} ${W}${G?` ${G}`:""} ${U}${N}${G5.reset} ${G5.duration}${O}${G5.reset}`);zZ1.emit("request",{method:Q,path:Ou(Y),status:N,duration:F,timestamp:new Date})}}}var G5,DK6=($)=>{if($>=500)return G5.serverError;if($>=400)return G5.clientError;if($>=300)return G5.redirect;return G5.ok},LK6=($)=>{return G5[$]||G5.reset},Ou=($)=>{return $.replace(/\r/g,"").replace(/\n/g,"").replace(/\x1b\[[0-9;]*m/g,"").replace(/[\x00-\x1f\x7f-\x9f]/g,"")};var Yc$=w(()=>{jZ1();Xc$();G5={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 Kc$}from"crypto";import{mkdir as EK6,readdir as jK6,rm as Gc$,stat as Hc$}from"fs/promises";import{join as AZ1,relative as zK6}from"path";import{z as P$}from"zod";function Nc$($){let Z=$.replace(/[^a-zA-Z0-9_-]/g,"_");return AZ1(PK6,Z)}function Uc$($){return $.replace(/^\/+/,"").replace(/\.\./g,"")}function PZ1($,Z){let X=Nc$($),Q=Uc$(Z);return AZ1(X,Q)}function AK6($,Z,X,Q){let Y=b0().encryptionKey||"dev-secret",G=`${$}:${Z}:${X}:${Q}`;return Kc$("sha256",Y).update(G).digest("hex")}function Wc$($,Z,X,Q,Y){let G=Math.floor(Date.now()/1000)+Q,J=AK6(Z,X,G,Y),W=new URL(`/api/dev-assets/${Z}/${Uc$(X)}`,$);return W.searchParams.set("expires",G.toString()),W.searchParams.set("signature",J),W.searchParams.set("method",Y),W.toString()}function Oc$($,Z,X){let Q=`${$}:${Z.getTime()}:${X}`;return`"${Kc$("md5","etag").update(Q).digest("hex")}"`}async function Bc$($,Z,X,Q,Y){try{let G=await jK6($,{withFileTypes:!0});for(let J of G){let W=AZ1($,J.name),H=zK6(Z,W).replace(/\\/g,"/");if(X&&!H.startsWith(X))continue;if(J.isDirectory())if(Q){let F=H+"/";if(!X||F.startsWith(X)){if(!(X?H.slice(X.length):H).includes("/"))Y.commonPrefixes.add(F)}}else await Bc$(W,Z,X,Q,Y);else if(J.isFile()){if(Q&&X){let F=H.slice(X.length);if(F.includes(Q)){let N=F.indexOf(Q),U=X+F.slice(0,N+1);Y.commonPrefixes.add(U);continue}}try{let F=await Hc$(W);Y.objects.push({key:H,size:F.size,lastModified:F.mtime.toISOString(),etag:Oc$(W,F.mtime,F.size)})}catch{}}}}catch{}}function wc$($,Z){let Q=t($).id;return[{name:"LIST_OBJECTS",description:"List objects in the local assets directory with pagination support",inputSchema:P$.object({prefix:P$.string().optional(),maxKeys:P$.number().optional().default(1000),continuationToken:P$.string().optional(),delimiter:P$.string().optional()}),outputSchema:P$.object({objects:P$.array(P$.object({key:P$.string(),size:P$.number(),lastModified:P$.string(),etag:P$.string()})),nextContinuationToken:P$.string().optional(),isTruncated:P$.boolean(),commonPrefixes:P$.array(P$.string()).optional()}),handler:async(Y)=>{let G=Y,J=G.prefix||"",W=G.maxKeys??1000,K=G.delimiter,H=G.continuationToken,F=Nc$(Q);await EK6(F,{recursive:!0});let N={objects:[],commonPrefixes:new Set};await Bc$(F,F,J,K,N),N.objects.sort((L,E)=>L.key.localeCompare(E.key));let U=0;if(H){if(U=N.objects.findIndex((L)=>L.key>H),U===-1)U=N.objects.length}let O=N.objects.slice(U,U+W),B=U+W<N.objects.length,D=B?O[O.length-1]?.key:void 0;return{objects:O,isTruncated:B,nextContinuationToken:D,commonPrefixes:Array.from(N.commonPrefixes).sort()}}},{name:"GET_OBJECT_METADATA",description:"Get metadata for a file in the local assets directory",inputSchema:P$.object({key:P$.string()}),outputSchema:P$.object({contentType:P$.string().optional(),contentLength:P$.number(),lastModified:P$.string(),etag:P$.string(),metadata:P$.record(P$.string(),P$.string()).optional()}),handler:async(Y)=>{let G=Y,J=PZ1(Q,G.key),W=await Hc$(J);return{contentType:e61(G.key),contentLength:W.size,lastModified:W.mtime.toISOString(),etag:Oc$(J,W.mtime,W.size)}}},{name:"GET_PRESIGNED_URL",description:"Generate a presigned URL for downloading a file from local storage",inputSchema:P$.object({key:P$.string(),expiresIn:P$.number().optional()}),outputSchema:P$.object({url:P$.string(),expiresIn:P$.number()}),handler:async(Y)=>{let G=Y,J=G.expiresIn??Jc$;return{url:Wc$(Z,Q,G.key,J,"GET"),expiresIn:J}}},{name:"PUT_PRESIGNED_URL",description:"Generate a presigned URL for uploading a file to local storage",inputSchema:P$.object({key:P$.string(),expiresIn:P$.number().optional(),contentType:P$.string().optional()}),outputSchema:P$.object({url:P$.string(),expiresIn:P$.number()}),handler:async(Y)=>{let G=Y,J=G.expiresIn??Jc$;return{url:Wc$(Z,Q,G.key,J,"PUT"),expiresIn:J}}},{name:"DELETE_OBJECT",description:"Delete a single file from local storage",inputSchema:P$.object({key:P$.string()}),outputSchema:P$.object({success:P$.boolean(),key:P$.string()}),handler:async(Y)=>{let G=Y,J=PZ1(Q,G.key);try{return await Gc$(J),{success:!0,key:G.key}}catch{return{success:!1,key:G.key}}}},{name:"DELETE_OBJECTS",description:"Delete multiple files from local storage",inputSchema:P$.object({keys:P$.array(P$.string()).max(1000)}),outputSchema:P$.object({deleted:P$.array(P$.string()),errors:P$.array(P$.object({key:P$.string(),message:P$.string()}))}),handler:async(Y)=>{let G=Y,J=[],W=[];return await Promise.all(G.keys.map(async(K)=>{let H=PZ1(Q,K);try{await Gc$(H),J.push(K)}catch(F){W.push({key:K,message:F instanceof Error?F.message:"Unknown error"})}})),{deleted:J,errors:W}}}]}async function TZ1($,Z,X){let Q=wc$(Z,X),Y=new hW({name:"dev-assets-mcp",version:"1.0.0"},{capabilities:{tools:{}},jsonSchemaValidator:F5});for(let J of Q){let W="shape"in J.inputSchema?J.inputSchema.shape:P$.object({}).shape,K=J.outputSchema&&"shape"in J.outputSchema?J.outputSchema.shape:P$.object({}).shape;Y.registerTool(J.name,{description:J.description??"",inputSchema:W,outputSchema:K,annotations:J.annotations,_meta:J._meta},async(H)=>{try{let F=await J.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 G=new ZQ({enableJsonResponse:$.headers.get("Accept")?.includes("application/json")??!1});return await Y.connect(G),NJ(Y,G,$,"mcp:dev-assets")}async function Dc$($,Z,X,Q){let G=wc$(X,Q).find((J)=>J.name===$);if(!G)return{content:[{type:"text",text:`Tool not found: ${$}`}],isError:!0};try{let J=await G.handler(Z);return{content:[{type:"text",text:JSON.stringify(J)}]}}catch(J){return{content:[{type:"text",text:J instanceof Error?J.message:String(J)}],isError:!0}}}var PK6="./data/assets",Jc$=3600,Fc$,Lc$;var Ec$=w(()=>{I$();$g();w8();Jd();VC();fX();EP0();Fc$=new F1;Fc$.all("/",async($)=>{let Z=$.get("studioContext"),X=new URL($.req.url),Q=`${X.protocol}//${X.host}`;return TZ1($.req.raw,Z,Q)});Lc$=Fc$});var jc$={};G4(jc$,{mountDevRoutes:()=>TK6});function TK6($,Z){$.all("/mcp/:connectionId{.*_dev-assets$}",Z,async(Q)=>{let Y=Q.get("studioContext"),G=new URL(Q.req.url),J=`${G.protocol}//${G.host}`;return TZ1(Q.req.raw,Y,J)}),$.all("/mcp/:connectionId{.*_dev-assets$}/call-tool/:toolName",Z,async(Q)=>{let Y=Q.get("studioContext"),G=new URL(Q.req.url),J=`${G.protocol}//${G.host}`,W=Q.req.param("toolName");if(!W)return Q.json({error:"Missing tool name"},400);let K=await Q.req.json(),H=await Dc$(W,K,Y,J);if(H.isError)return Q.json(H.content,500);return Q.json(H.content)}),$.use("/mcp/dev-assets",Z),$.route("/mcp/dev-assets",Lc$);let X=new F1;X.use("*",WW({mountPath:"/api/dev-assets"})),X.route("/",LP0({orgFromPath:!1})),$.route("/api/dev-assets",X)}var zc$=w(()=>{w8();p61();EP0();Ec$()});import{sql as RK6}from"kysely";import{randomUUID as Pc$}from"crypto";import{z as IK6}from"zod";async function MK6($){let Z=new Date().toISOString(),X=Pc$(),Q=k4.SELF($.organizationId),Y="registry.publish_request.created",G={requestId:$.request.id,requestedId:$.request.requested_id,title:$.request.title,status:$.request.status,createdAt:$.request.created_at,requester:{name:$.request.requester_name,email:$.request.requester_email}};await $.db.insertInto("events").values({id:X,organization_id:$.organizationId,type:"registry.publish_request.created",source:Q,specversion:"1.0",subject:$.request.id,time:Z,datacontenttype:"application/json",dataschema:null,data:JSON.stringify(G),cron:null,status:"pending",attempts:0,last_error:null,next_retry_at:null,created_at:Z,updated_at:Z}).execute();let J=await $.db.selectFrom("event_subscriptions").select(["id"]).where("organization_id","=",$.organizationId).where("enabled","=",1).where("event_type","=","registry.publish_request.created").where((W)=>W.or([W("publisher","is",null),W("publisher","=",Q)])).execute();if(J.length>0)await $.db.insertInto("event_deliveries").values(J.map((W)=>({id:Pc$(),event_id:X,subscription_id:W.id,status:"pending",attempts:0,last_error:null,delivered_at:null,next_retry_at:null,created_at:Z}))).execute();try{await RK6`SELECT
2861
2861
  pg_notify('studio_events', ${X}),