decocms 4.311.0 → 4.311.1

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 (239) hide show
  1. package/dist/client/assets/{AlertCircle-C0recpiM.js → AlertCircle-CV0wkmkm.js} +1 -1
  2. package/dist/client/assets/{AreaChart-XSelV74e.js → AreaChart-C1cHRb4_.js} +1 -1
  3. package/dist/client/assets/{ArrowLeft-B2Z12k58.js → ArrowLeft-IJ5Bt6rF.js} +1 -1
  4. package/dist/client/assets/{ArrowUp-B_j1WdZ5.js → ArrowUp-D1z7pWNj.js} +1 -1
  5. package/dist/client/assets/{Check-BejV2053.js → Check-BHC3_AaF.js} +1 -1
  6. package/dist/client/assets/{CheckCircle-CFTFD5Ed.js → CheckCircle-Ck6NP4ZR.js} +1 -1
  7. package/dist/client/assets/{ChevronDown-D5RFRhzf.js → ChevronDown-B7_Xvf9X.js} +1 -1
  8. package/dist/client/assets/{ChevronRight-DV9U9V1C.js → ChevronRight-BAd6R5vM.js} +1 -1
  9. package/dist/client/assets/{ChevronSelectorVertical-CsU1yTcH.js → ChevronSelectorVertical-BuMW96nw.js} +1 -1
  10. package/dist/client/assets/{ChevronUp-D4IrNOCC.js → ChevronUp-BwgqH970.js} +1 -1
  11. package/dist/client/assets/{Copy01-Cr3MDnu-.js → Copy01-CCWxdpWb.js} +1 -1
  12. package/dist/client/assets/{CreditCard01-D_XNSGw3.js → CreditCard01-DygKVzhJ.js} +1 -1
  13. package/dist/client/assets/{DotsVertical-DqsE4vgP.js → DotsVertical-DDZxDsoM.js} +1 -1
  14. package/dist/client/assets/{Download01-Cu0GEQBo.js → Download01-B-85Q1ff.js} +1 -1
  15. package/dist/client/assets/{Eye-DhUWQAZM.js → Eye-CFdbtUej.js} +1 -1
  16. package/dist/client/assets/{FilterLines-DahI-t1v.js → FilterLines-Dcx0EftC.js} +1 -1
  17. package/dist/client/assets/{GitBranch01-B7UokEiw.js → GitBranch01-CMJwWlxW.js} +1 -1
  18. package/dist/client/assets/{Globe01-8plmq2TA.js → Globe01-qzkbgw6Z.js} +1 -1
  19. package/dist/client/assets/{Globe04-DlFdM3LP.js → Globe04-D9zY4y4d.js} +1 -1
  20. package/dist/client/assets/{HardDrive-57Sc_B7u.js → HardDrive-Bn4IEQJY.js} +1 -1
  21. package/dist/client/assets/{Image01-HOTAu7DE.js → Image01-D-AxQSgh.js} +1 -1
  22. package/dist/client/assets/{Key01-DLcgmMi7.js → Key01-BpVUK5pT.js} +1 -1
  23. package/dist/client/assets/{LinkExternal01-C5L2pr2x.js → LinkExternal01-BE54YHhd.js} +1 -1
  24. package/dist/client/assets/{LockUnlocked01-BleHTt-O.js → LockUnlocked01-871SLvf7.js} +1 -1
  25. package/dist/client/assets/{LogOut01-CfPLGrdh.js → LogOut01-CJWERaXO.js} +1 -1
  26. package/dist/client/assets/{Monitor01-CGzGmiSx.js → Monitor01-CsG8STIy.js} +1 -1
  27. package/dist/client/assets/{Package-WyJYCcJV.js → Package-BuYOwIZB.js} +1 -1
  28. package/dist/client/assets/{Palette-ivE2ilgf.js → Palette-BGSolCEG.js} +1 -1
  29. package/dist/client/assets/{Play-CsI3qh5P.js → Play-CKSey6H3.js} +1 -1
  30. package/dist/client/assets/{Plus-BNnPvfG8.js → Plus-nBmz9X8R.js} +1 -1
  31. package/dist/client/assets/{SearchLg-Ccchnc4p.js → SearchLg-BIcfiyKV.js} +1 -1
  32. package/dist/client/assets/{SearchMd-BJmbTOt_.js → SearchMd-BFdtfhDn.js} +1 -1
  33. package/dist/client/assets/{Settings02-By8pQbcj.js → Settings02-CuNh9WdQ.js} +1 -1
  34. package/dist/client/assets/{Share07-dg97NqNd.js → Share07-DswLt_KK.js} +1 -1
  35. package/dist/client/assets/{Shield01-CxgaYLbk.js → Shield01-BuMl41yz.js} +1 -1
  36. package/dist/client/assets/{Stars01-C5bXx9wk.js → Stars01-BisNbns8.js} +1 -1
  37. package/dist/client/assets/{Stars02-Dco9Mo0t.js → Stars02-CK8VDMM0.js} +1 -1
  38. package/dist/client/assets/{Sun-CZ4AN-2E.js → Sun-B0Nzj3KW.js} +1 -1
  39. package/dist/client/assets/{SwitchHorizontal01-BfZwTC3u.js → SwitchHorizontal01-CnsWKOU4.js} +1 -1
  40. package/dist/client/assets/{Tool01-BPHywJEb.js → Tool01-h31Lne8n.js} +1 -1
  41. package/dist/client/assets/{Tool02-D4AQe9SD.js → Tool02-CNWGQ_ok.js} +1 -1
  42. package/dist/client/assets/{Trash01-Bkd5f3e4.js → Trash01-Dc1xlq4H.js} +1 -1
  43. package/dist/client/assets/{TrendUp01-C29DtCbZ.js → TrendUp01-CFqXlqp7.js} +1 -1
  44. package/dist/client/assets/{Upload01-CPHyTAd0.js → Upload01-C9iaZjZJ.js} +1 -1
  45. package/dist/client/assets/{User01-rDgL3Cs0.js → User01-Cwj6RUTo.js} +1 -1
  46. package/dist/client/assets/{UserSquare-BO9lFHlw.js → UserSquare-CujtKzAT.js} +1 -1
  47. package/dist/client/assets/{Users01-CGiHQkW6.js → Users01-CJ5UoxWH.js} +1 -1
  48. package/dist/client/assets/{Users03-K46FZ0yi.js → Users03-Cg9bNhp7.js} +1 -1
  49. package/dist/client/assets/{XCircle-Dgz569F-.js → XCircle-DIVDWsBu.js} +1 -1
  50. package/dist/client/assets/{XClose-DRl5snCd.js → XClose-ehDN2GbO.js} +1 -1
  51. package/dist/client/assets/{YAxis-BunnDhD0.js → YAxis-D9p2zL9v.js} +1 -1
  52. package/dist/client/assets/{Zap-CqYQM_jt.js → Zap-IBwSvyRi.js} +1 -1
  53. package/dist/client/assets/{ZapSquare-C3xSe5yB.js → ZapSquare-BeFw43GM.js} +1 -1
  54. package/dist/client/assets/{ZoomOut-B8EEsxrO.js → ZoomOut-CDRlJdUE.js} +1 -1
  55. package/dist/client/assets/{access-gate-BL_s88yN.js → access-gate-D9WZsOrC.js} +1 -1
  56. package/dist/client/assets/{agent-icon-BGP9U6d6.js → agent-icon-CY9ycwem.js} +1 -1
  57. package/dist/client/assets/{agents-list-C83xGM8F.js → agents-list-BYNSI_jE.js} +1 -1
  58. package/dist/client/assets/{ai-providers-B0dgXRVJ.js → ai-providers-BLTn-7iD.js} +1 -1
  59. package/dist/client/assets/{alert-ABstJkwk.js → alert-B_RUXka_.js} +1 -1
  60. package/dist/client/assets/{alert-dialog-Csnli2CD.js → alert-dialog-BJ4wEVSQ.js} +1 -1
  61. package/dist/client/assets/{api-keys-BMxF1-9_.js → api-keys-Bz4lMS3L.js} +1 -1
  62. package/dist/client/assets/{app-editor-6p_LrTu2.js → app-editor-Cg3q49SP.js} +1 -1
  63. package/dist/client/assets/{auth-CYohcmQZ.js → auth-CLm5_F0l.js} +1 -1
  64. package/dist/client/assets/{auth-catchall-BDEFidGh.js → auth-catchall-QxxpsKnp.js} +1 -1
  65. package/dist/client/assets/{auth-entry-CKyE-hFY.js → auth-entry-BGVJUHAs.js} +1 -1
  66. package/dist/client/assets/{auth-split-layout-Duguccx1.js → auth-split-layout-DeofWKZe.js} +1 -1
  67. package/dist/client/assets/{authenticate-and-persist-oauth-Ds-Znneo.js → authenticate-and-persist-oauth-CB4PlrBf.js} +1 -1
  68. package/dist/client/assets/{automation-list-row-ByC4kR2D.js → automation-list-row-i7POabA6.js} +1 -1
  69. package/dist/client/assets/{automation-runs-8GLe55cG.js → automation-runs-Fq4mNYDj.js} +1 -1
  70. package/dist/client/assets/{automations-OEcEm9qP.js → automations-DdbReSDn.js} +1 -1
  71. package/dist/client/assets/{avatar-BuHFImQ0.js → avatar-Wa6VrEnP.js} +1 -1
  72. package/dist/client/assets/{badge-CO8RwMr5.js → badge-B61gpb4G.js} +1 -1
  73. package/dist/client/assets/{block-document-BqLhkJsx.js → block-document-Bp2k8Wc9.js} +1 -1
  74. package/dist/client/assets/{breadcrumb-B40XpKTU.js → breadcrumb-BPv7fTV_.js} +1 -1
  75. package/dist/client/assets/{buckets-CIG9EGU3.js → buckets-BSde592M.js} +1 -1
  76. package/dist/client/assets/{bulk-category-panel-DKVwuCXm.js → bulk-category-panel-Cla8YbNK.js} +1 -1
  77. package/dist/client/assets/{capability-load-error-BqilZ1PU.js → capability-load-error-89RNplOP.js} +1 -1
  78. package/dist/client/assets/{cards-vcKmBwGO.js → cards-CtYnELx3.js} +1 -1
  79. package/dist/client/assets/{category-editor-CYCrdpS-.js → category-editor-mFpEwJXE.js} +1 -1
  80. package/dist/client/assets/{chart-Z15NQIs8.js → chart-CT4bmwai.js} +1 -1
  81. package/dist/client/assets/{chat-context-CY2SGM0h.js → chat-context-BHrex6rH.js} +1 -1
  82. package/dist/client/assets/{checkbox-oWGgw210.js → checkbox-B7WKgEsi.js} +1 -1
  83. package/dist/client/assets/{choose-editor-DPo8388D.js → choose-editor-dBiqStIP.js} +1 -1
  84. package/dist/client/assets/{cli-auth-success-Bd0MHIpk.js → cli-auth-success-CZqw8_EH.js} +1 -1
  85. package/dist/client/assets/{collection-detail-CjvpPo2_.js → collection-detail-DceIOUlA.js} +1 -1
  86. package/dist/client/assets/{collection-display-button-rTFLLVxa.js → collection-display-button-vdSC1mZB.js} +1 -1
  87. package/dist/client/assets/{collection-search-BJAxACkb.js → collection-search-Br3z0w3m.js} +1 -1
  88. package/dist/client/assets/{collection-table-wrapper-DbZwnA9i.js → collection-table-wrapper-CSU5MEwz.js} +1 -1
  89. package/dist/client/assets/{collection-tabs-Lzes2Hm5.js → collection-tabs-DlzEhHVW.js} +1 -1
  90. package/dist/client/assets/{command-Bp1UIw04.js → command-8ooWizOU.js} +1 -1
  91. package/dist/client/assets/{commerce-onboarding-rZiNksbG.js → commerce-onboarding-Dz04S2-9.js} +1 -1
  92. package/dist/client/assets/{config-DRDl0YmS.js → config-BgO9IgWA.js} +1 -1
  93. package/dist/client/assets/{connect-ClZgmNOs.js → connect-N4YVPEVP.js} +1 -1
  94. package/dist/client/assets/{connection-49NkL3aX.js → connection-Bs46H06Q.js} +1 -1
  95. package/dist/client/assets/{connection-card-IfNei3OO.js → connection-card-CbmmPQd2.js} +1 -1
  96. package/dist/client/assets/{connection-detail-MTvaJYNp.js → connection-detail-rw5xbHIJ.js} +1 -1
  97. package/dist/client/assets/{connection-form-helpers-C174Udb3.js → connection-form-helpers-BiyQETTa.js} +1 -1
  98. package/dist/client/assets/{connections-CHRgTc8W.js → connections-maNXjMd_.js} +1 -1
  99. package/dist/client/assets/decopilot-sse-pool-Btz5P3dg.js +1 -0
  100. package/dist/client/assets/{dialog-hItRl0PM.js → dialog-EZiQKr-k.js} +1 -1
  101. package/dist/client/assets/{domain-settings-DWE5A_EC.js → domain-settings-BvHByewm.js} +1 -1
  102. package/dist/client/assets/{drawer-DuLBqwDu.js → drawer-BuLJB_Ng.js} +1 -1
  103. package/dist/client/assets/{dropdown-menu-LWFsRDES.js → dropdown-menu-LJireLy5.js} +1 -1
  104. package/dist/client/assets/{editor-C4Sw9hGx.js → editor-DSb1EWz5.js} +1 -1
  105. package/dist/client/assets/{empty-state-DhZFNn9P.js → empty-state-aNTsPxQg.js} +1 -1
  106. package/dist/client/assets/{extract-connection-data-DPiIwaYg.js → extract-connection-data-H0biCpIG.js} +1 -1
  107. package/dist/client/assets/{file-explorer-BH-3KCjE.js → file-explorer-CH3ShuuH.js} +1 -1
  108. package/dist/client/assets/{file-type-icon-zHhC_odk.js → file-type-icon-C1V83sRx.js} +1 -1
  109. package/dist/client/assets/{folder-icon-CnUII1sC.js → folder-icon-DPyDuMsa.js} +1 -1
  110. package/dist/client/assets/{form-BTWHqvdt.js → form-DFbk408D.js} +1 -1
  111. package/dist/client/assets/{general-DhZ7IsJ7.js → general-DIEQLeUB.js} +1 -1
  112. package/dist/client/assets/{github-repo-picker-olEJzk4H.js → github-repo-picker-BS5F3L-U.js} +1 -1
  113. package/dist/client/assets/{hooks-CkIombAK.js → hooks-X49XWoE0.js} +1 -1
  114. package/dist/client/assets/{index-BRM630BW.js → index-7Eri-5FF.js} +1 -1
  115. package/dist/client/assets/{index-BuyUDL-f.js → index-BFUkCadY.js} +3 -3
  116. package/dist/client/assets/{index-BbLo6MAX.js → index-BoXZxFc9.js} +1 -1
  117. package/dist/client/assets/{index-qyhd0IMj.js → index-BsBcva3V.js} +1 -1
  118. package/dist/client/assets/{index-C_7lMH7J.js → index-CF7KjtFB.js} +1 -1
  119. package/dist/client/assets/{index-DmOnt-rS.js → index-DcWWjsQx.js} +6 -6
  120. package/dist/client/assets/{index-DhgCD36A.js → index-Di7eH1Bd.js} +1 -1
  121. package/dist/client/assets/{index-PL6ljojl.js → index-nBmHAkVz.js} +1 -1
  122. package/dist/client/assets/{index-redirect-Cy_NnU2a.js → index-redirect-oLZruQry.js} +1 -1
  123. package/dist/client/assets/{index-DuLRhFZC.js → index-zJiZ-442.js} +1 -1
  124. package/dist/client/assets/{infra-billing-CmiuUO1m.js → infra-billing-yGKUAjy3.js} +1 -1
  125. package/dist/client/assets/{input-Cb9iSFEg.js → input-B9IgjWfA.js} +1 -1
  126. package/dist/client/assets/{integration-icon-DDXwHQKF.js → integration-icon-BO6Z-DRY.js} +1 -1
  127. package/dist/client/assets/{invite-member-dialog-CWPn4669.js → invite-member-dialog-DSu8X4wK.js} +1 -1
  128. package/dist/client/assets/{label-BkQvhQIM.js → label-DkU_8hZR.js} +1 -1
  129. package/dist/client/assets/{layout-DEY36XRI.js → layout-DTB8w965.js} +1 -1
  130. package/dist/client/assets/{login-D6sPFCW8.js → login-BaXuN3jF.js} +1 -1
  131. package/dist/client/assets/{markdown-0fiCCcV1.js → markdown-BG1ybiOX.js} +1 -1
  132. package/dist/client/assets/{mcp-oauth-DBjycbCF.js → mcp-oauth-DC5O97rk.js} +1 -1
  133. package/dist/client/assets/{members-h-rh3eGF.js → members-Tq-14Ycu.js} +1 -1
  134. package/dist/client/assets/{monaco-editor-C-Q5HTYn.js → monaco-editor-DkEyyAuR.js} +1 -1
  135. package/dist/client/assets/{monitoring-stats-row-B4FAuCa9.js → monitoring-stats-row-DvtCfJhr.js} +1 -1
  136. package/dist/client/assets/{multi-select-Cs1r8Ubg.js → multi-select-DTZRJI8W.js} +1 -1
  137. package/dist/client/assets/{oauth-callback-CM5je5KD.js → oauth-callback-BCxzsOVA.js} +1 -1
  138. package/dist/client/assets/{oauth-callback-ai-provider-Bcr-4szJ.js → oauth-callback-ai-provider-CMNxP96j.js} +1 -1
  139. package/dist/client/assets/{onboarding-Lb-gRBGv.js → onboarding-JQ_L8T3S.js} +1 -1
  140. package/dist/client/assets/{org-layout-CZ39vVwh.js → org-layout-BLxZm0mH.js} +1 -1
  141. package/dist/client/assets/{organization-choice-D1rU5_LS.js → organization-choice-ORfyYu4G.js} +1 -1
  142. package/dist/client/assets/{orgs-YHtQLebS.js → orgs-DjoyAiP1.js} +1 -1
  143. package/dist/client/assets/{page-seo-form-C3aLwSt0.js → page-seo-form-n3Jr5UKD.js} +1 -1
  144. package/dist/client/assets/{popover-CzFHMi1-.js → popover-kWquax2C.js} +1 -1
  145. package/dist/client/assets/{post-calendar-DX9-IYRC.js → post-calendar-V5YkHzT5.js} +1 -1
  146. package/dist/client/assets/{post-editor-C_J5WNPs.js → post-editor-Dw0XoUW-.js} +1 -1
  147. package/dist/client/assets/{primitives-B9LqLGWx.js → primitives-BBB2PKL9.js} +1 -1
  148. package/dist/client/assets/{profile-D8e5tSeS.js → profile-BAP7bs-P.js} +1 -1
  149. package/dist/client/assets/{project-app-view-B27k8y98.js → project-app-view-CMOtQWit.js} +1 -1
  150. package/dist/client/assets/{prompts-DlKoJN67.js → prompts-CeZHcagY.js} +1 -1
  151. package/dist/client/assets/record-editor-D8eYeCmw.js +1 -0
  152. package/dist/client/assets/{redirect-editor-DJxCUYg3.js → redirect-editor-ZpJCTshJ.js} +1 -1
  153. package/dist/client/assets/registry-Dk9PWC-T.js +2 -0
  154. package/dist/client/assets/{registry-layout-Cpcl6TSK.js → registry-layout-BZAYM7jo.js} +1 -1
  155. package/dist/client/assets/{reports-DTxubJgw.js → reports-DdHpzxeM.js} +1 -1
  156. package/dist/client/assets/{require-capability-DuFIGwof.js → require-capability-mikSj6Ng.js} +1 -1
  157. package/dist/client/assets/{required-auth-layout-DGJe8Mlj.js → required-auth-layout-Dfxw0YDf.js} +1 -1
  158. package/dist/client/assets/{reset-password-DxbtkbOg.js → reset-password-B-Q8Xis7.js} +1 -1
  159. package/dist/client/assets/{review-settings-DnhAqpkA.js → review-settings-C8yPcONA.js} +1 -1
  160. package/dist/client/assets/{roles-3q89My_0.js → roles-CZZnv709.js} +1 -1
  161. package/dist/client/assets/{scroll-area-Djm3-sbg.js → scroll-area-DhVLP3PL.js} +1 -1
  162. package/dist/client/assets/{search-input-qkdY6KsE.js → search-input-CEzUTux_.js} +1 -1
  163. package/dist/client/assets/{secrets-DEA-aVW1.js → secrets-BbaKQqXw.js} +1 -1
  164. package/dist/client/assets/{sections-editor-B_M-97ti.js → sections-editor-Dp1jPPnU.js} +1 -1
  165. package/dist/client/assets/{select-BOHmdb8C.js → select-CWvBEvKe.js} +1 -1
  166. package/dist/client/assets/{select-model-CPmeNaNO.js → select-model-YQjbGnxo.js} +1 -1
  167. package/dist/client/assets/{self-tool-result-xX9-YD6Y.js → self-tool-result-CecU6Ah-.js} +1 -1
  168. package/dist/client/assets/{seo-editor-DJVpxpW3.js → seo-editor-DesDFA61.js} +1 -1
  169. package/dist/client/assets/{settings-layout-CeyvpLOE.js → settings-layout-B--7Pa-e.js} +1 -1
  170. package/dist/client/assets/{shell-controls-CXOCgzwX.js → shell-controls-CyjYu8xs.js} +1 -1
  171. package/dist/client/assets/{shell-layout-TUjOtQhE.js → shell-layout-khmxpGoo.js} +1 -1
  172. package/dist/client/assets/{skill-preview-B4NfqEEV.js → skill-preview-Bw7bGCaH.js} +1 -1
  173. package/dist/client/assets/{skills-CzZ5YAGr.js → skills-DmBwHZTU.js} +1 -1
  174. package/dist/client/assets/{spinner-BQad3GmW.js → spinner-C9VRn5KD.js} +1 -1
  175. package/dist/client/assets/{sso-bHeadfgf.js → sso-WSFa-jq1.js} +1 -1
  176. package/dist/client/assets/{store-C4oH3kPo.js → store-BqJVQJcM.js} +1 -1
  177. package/dist/client/assets/store-registry-CACSGdig.js +2 -0
  178. package/dist/client/assets/{super-agent-icon-CPbKPIBh.js → super-agent-icon-BGH3Ovdk.js} +1 -1
  179. package/dist/client/assets/{switch-dQhgVuCH.js → switch-C5WRym-1.js} +1 -1
  180. package/dist/client/assets/{synced-repos-Cbj-TInP.js → synced-repos-Oa6XPby4.js} +1 -1
  181. package/dist/client/assets/{table-D_CXPJQu.js → table-9A7mh_ze.js} +1 -1
  182. package/dist/client/assets/{tabs-DZiIU_cf.js → tabs-VcTBcGpQ.js} +1 -1
  183. package/dist/client/assets/{task-board-C5vC-P5k.js → task-board-BsEuBpWv.js} +1 -1
  184. package/dist/client/assets/{tasks-C1pjzmKc.js → tasks-B134eJj-.js} +1 -1
  185. package/dist/client/assets/{textarea-CliLWMBV.js → textarea-ClB5SMay.js} +1 -1
  186. package/dist/client/assets/{thread-route-bh7ZH4NA.js → thread-route-DZ4IYYBA.js} +1 -1
  187. package/dist/client/assets/{toggle-group-Dwtxjfc4.js → toggle-group-BHdQxqTI.js} +1 -1
  188. package/dist/client/assets/{toolbar-3fMfxNen.js → toolbar-CRVklWRM.js} +1 -1
  189. package/dist/client/assets/{track-9YygJVzx.js → track-CN0o4_D1.js} +1 -1
  190. package/dist/client/assets/{types-nGmsoTZv.js → types-LyowwSS5.js} +1 -1
  191. package/dist/client/assets/{use-ai-providers-DwlhpRes.js → use-ai-providers-BtgQbZIG.js} +1 -1
  192. package/dist/client/assets/{use-api-keys-B5cZ7wvR.js → use-api-keys-ChE1m_Yw.js} +1 -1
  193. package/dist/client/assets/{use-automations-CmgiIky3.js → use-automations-wHx6KnEj.js} +1 -1
  194. package/dist/client/assets/{use-autosave-2HBwk4wx.js → use-autosave-WBXLWYPk.js} +1 -1
  195. package/dist/client/assets/{use-connection-bZgPnZOr.js → use-connection-BKvd7uNd.js} +1 -1
  196. package/dist/client/assets/{use-copy-Cq30lUsM.js → use-copy-CPtc2zDl.js} +1 -1
  197. package/dist/client/assets/{use-create-virtual-mcp-DMHxG54f.js → use-create-virtual-mcp-DAlSNJRt.js} +1 -1
  198. package/dist/client/assets/{use-debounced-autosave-DvptVode.js → use-debounced-autosave-BjLAKNcT.js} +1 -1
  199. package/dist/client/assets/{use-debounced-value-DqFNyMpP.js → use-debounced-value-DMcS7FSl.js} +1 -1
  200. package/dist/client/assets/{use-decopilot-events-Cv4HgIi3.js → use-decopilot-events-CeQUVSoy.js} +1 -1
  201. package/dist/client/assets/{use-delete-connection-CsW8T7ZH.js → use-delete-connection-B1W-lrMY.js} +1 -1
  202. package/dist/client/assets/{use-deployment-admin-aSXK_ggq.js → use-deployment-admin-B98G8PcG.js} +1 -1
  203. package/dist/client/assets/{use-destination-route-B_24Whcs.js → use-destination-route-CghQsdF8.js} +1 -1
  204. package/dist/client/assets/{use-file-configs-EoWVXyV1.js → use-file-configs-JseEd11j.js} +1 -1
  205. package/dist/client/assets/{use-infinite-scroll-CY3oO4vc.js → use-infinite-scroll-CMDxuacA.js} +1 -1
  206. package/dist/client/assets/{use-join-requests-EgMaCxaX.js → use-join-requests-DZbIPLac.js} +1 -1
  207. package/dist/client/assets/{use-mcp-auth-status-DObWVXL7.js → use-mcp-auth-status-CY1yj4lV.js} +1 -1
  208. package/dist/client/assets/{use-mcp-client-BISqHyTj.js → use-mcp-client-DBxtnKrM.js} +1 -1
  209. package/dist/client/assets/{use-mcp-tools-Dtv8_qE-.js → use-mcp-tools-TLuFrkim.js} +1 -1
  210. package/dist/client/assets/{use-members-CGZd946r.js → use-members-DaPDZRH4.js} +1 -1
  211. package/dist/client/assets/{use-navigate-to-agent-DDo0Ri7O.js → use-navigate-to-agent-B-ZKJ--7.js} +1 -1
  212. package/dist/client/assets/{use-org-auth-client-DK9IhaDS.js → use-org-auth-client-CLWvfwor.js} +1 -1
  213. package/dist/client/assets/{use-org-repo-syncs-DDOe1mEV.js → use-org-repo-syncs-OQj8Y5Nz.js} +1 -1
  214. package/dist/client/assets/{use-org-sso-BlnuVfy8.js → use-org-sso-DwTAjKoT.js} +1 -1
  215. package/dist/client/assets/{use-organization-roles-vQX1qheI.js → use-organization-roles-BHiS6OQv.js} +1 -1
  216. package/dist/client/assets/{use-organization-settings-9gyyAmDC.js → use-organization-settings-DpT8kLw9.js} +1 -1
  217. package/dist/client/assets/{use-panel-navigate-Dl8TU9Fq.js → use-panel-navigate-DAN1_bgS.js} +1 -1
  218. package/dist/client/assets/{use-registry-connections-C6Vm545i.js → use-registry-connections-2ihnJXRy.js} +1 -1
  219. package/dist/client/assets/{use-secrets-CebeVclF.js → use-secrets-DQgK4fpK.js} +1 -1
  220. package/dist/client/assets/{use-section-preview-base-C3CbXEpd.js → use-section-preview-base-BBcuF_Mg.js} +1 -1
  221. package/dist/client/assets/{use-status-sounds-CZScO2ta.js → use-status-sounds-BHyKjwK2.js} +1 -1
  222. package/dist/client/assets/{use-tags-Bo6st0jt.js → use-tags-dgY3696p.js} +1 -1
  223. package/dist/client/assets/{use-view-mode-CfFp3geX.js → use-view-mode-DVQqdIQZ.js} +1 -1
  224. package/dist/client/assets/{use-virtual-mcp-B6D2i_ny.js → use-virtual-mcp-CBOJyRo8.js} +1 -1
  225. package/dist/client/assets/useInfiniteQuery-DgMDXNM-.js +1 -0
  226. package/dist/client/assets/useSuspenseInfiniteQuery-Ce9i6Dj2.js +1 -0
  227. package/dist/client/assets/{users-KKKtts0z.js → users-Q8mpydd0.js} +1 -1
  228. package/dist/client/assets/{variant-calendar-DPptfq0B.js → variant-calendar-CnvdiA98.js} +1 -1
  229. package/dist/client/assets/{view-mode-toggle-CkVDMUHU.js → view-mode-toggle-DU9mNhqt.js} +1 -1
  230. package/dist/client/index.html +1 -1
  231. package/dist/server/cli.js +1 -1
  232. package/dist/server/server.js +1 -1
  233. package/package.json +1 -1
  234. package/dist/client/assets/decopilot-sse-pool-MEiWGftu.js +0 -1
  235. package/dist/client/assets/record-editor-CAQX4Dhe.js +0 -1
  236. package/dist/client/assets/registry-CgaDNZ4i.js +0 -2
  237. package/dist/client/assets/store-registry-OTCH0UWM.js +0 -2
  238. package/dist/client/assets/useInfiniteQuery-D5GGzERO.js +0 -1
  239. package/dist/client/assets/useSuspenseInfiniteQuery-Dq_znrqe.js +0 -1
@@ -2883,7 +2883,7 @@ Respond with the structured verdict and a short reason.`,ql$;var kl$=D(()=>{l4()
2883
2883
  ${G.join(`
2884
2884
  `)}`:Y}function BU6($){let Z=new Set;for(let X of $)for(let Q of X.split(`
2885
2885
  `)){let Y=Q.trim();if(/^Co-authored-by:\s/i.test(Y))Z.add(Y)}return[...Z]}var Hd$=200,QU6=12,GU6,WU6=300,c71=3;var l71=D(()=>{aD();RT0();GU6={aheadBy:0,behindBy:0,files:[]}});function DU6($){if(!$||$.includes(".."))return!1;return OU6.test($)}function Nd$($){let Z=typeof $.__resolveType==="string"?$.__resolveType:null;if(!Z||!DU6(Z))return null;let{__resolveType:X,...Q}=$;return{resolveType:Z,payload:Q}}function Ud$($,Z){return`${$.replace(/\/+$/,"")}/deco/invoke/${Z}`}var OU6;var Bd$=D(()=>{OU6=/^[\w./@-]+$/});function Pa($,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 Od$($,Z,X,Q){if(!Q.connectionId)throw new Av("Push requires a connected GitHub account. Connect mcp-github for this project and restart the sandbox.");let Y=$.organization?.id;if(!Y)throw new Av(K9);await xO({ctx:$,connectionId:Q.connectionId,organizationId:Y,forceRefresh:!0,onLegacyMintError:(F)=>{let N=F instanceof Error?F.message:K9;throw new Av(N)}});let{cloneUrl:G,gitUserName:J,gitUserEmail:W}=await SK(Q.connectionId,Q.owner,Q.name,$.db,$.vault).catch((F)=>{let{code:N,message:U}=a5$(F instanceof Error?F.message:String(F));throw N?new Av(U):F}),K=tu($),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 bO(H,LU6).catch(()=>H.statusText);throw Error(`Failed to refresh sandbox git credentials (${H.status}): ${F}`)}}var LU6=10485760,Av;var d71=D(()=>{WJ();BT0();Nn();_i0();by();Av=class Av extends Error{constructor($){super($);this.name="GitPushAuthError"}}});function EU6($){let Z=$.startsWith("thread:")?$.slice(7):$;if(!Z||Z.length>255||Z.includes("..")||Z.startsWith("/")||Z.endsWith("/")||Z.endsWith(".lock")||!wU6.test(Z))throw Error(`Invalid branch name: ${$}`)}function Tv($){return AbortSignal.any([$.req.raw.signal,AbortSignal.timeout(zU6)])}async function AU6($,Z){let X=$.var.studioContext,Q=GJ(Z.branch),Y=$.req.query("thread")??Q,G=Y&&Y===Q?Z.branchThread:Y?await X.storage.threads.get(Y).catch(()=>null):null,J=G?.virtual_mcp_id===Z.virtualMcpId?G:null,W=RC(J?.metadata?.runtime);if(W)return W;let K=XD0(Z.virtualMcpMetadata),H=K==="cms"?await T71(X,{claimName:Z.claimName}):"alive",F=K==="cms"&&H!=="alive"?"cms":"sandbox",N=!!J&&(H==="gone"||H==="alive"&&K==="cms");if(N&&J)un(X,J.id,F);if(K==="cms")console.log("sandbox proxy: no runtime stamp",{route:$.req.path,method:$.req.method,reason:J?"unstamped":"threadless",liveness:H,resolved:F,stamped:N});return F}async function TU6($){let Z=$.get("vmClaim");if(Z.runner)return Z.runner;try{return await YQ($.var.studioContext)}catch{return null}}function Rv($){let{runner:Z}=$.get("vmClaim");if(!Z)return $.json({error:"No sandbox runner configured"},503);return Z}async function eu($){let{virtualMcpMetadata:Z,connectionIds:X}=$.get("vmClaim"),Q=$.var.studioContext,Y=Pa(Z,X);if(!Y)throw new h4(404,"AUTH","repo","Project has no GitHub repository");let G=o(Q);return OT0(Q,G.id,Y)}function m71($,Z){if(Z instanceof jA0)return $.json({error:Z.message},429,{...A5,...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,A5)}let X=Z instanceof Error?Z.message:String(Z);return $.json({error:X},502,A5)}async function wd$($,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 Ed$($){try{let Z=await eu($),X=await IT0(Z,$.get("vmClaim").branch);return $.json(X,200,A5)}catch(Z){return m71($,Z)}}function Aa($,Z){let Q=(kT0.get($)??Promise.resolve()).catch(()=>{}).then(Z),Y=Q.catch(()=>{});return kT0.set($,Y),Y.finally(()=>{if(kT0.get($)===Y)kT0.delete($)}),Q}async function eZ($,Z,X){if(!X?.runner&&$.get("vmClaim").runtime==="cms")return $.json({error:"sandbox not found: this session is sandbox-less"},404,A5);let Q=X?.runner??Rv($);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 B=await Q.proxyDaemonRequest(Y,Z,N);if(X?.map404to410&&B.status===404){try{await B.body?.cancel()}catch{}if(await Q.adoptLiveClaim({userId:G,projectRef:J},Y))B=await Q.proxyDaemonRequest(Y,Z,N);if(B.status===404){try{await B.body?.cancel()}catch{}return new Response(JSON.stringify({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."}),{status:410,headers:{"content-type":"application/json",...A5}})}}let O=await B.text(),L=X?.redactRepoDir?RU6(O):O,w=B.headers.get("content-type")??"application/json";return new Response(L,{status:B.status,headers:{"content-type":w,...A5}})};try{if(F){let B=U();return B.catch(()=>{}),await Promise.race([B,new Promise((L,w)=>{if(F.aborted)return w(F.reason);F.addEventListener("abort",()=>w(F.reason),{once:!0})})])}return await U()}catch(B){let O=B instanceof Error?B.message:String(B);return $.json({error:`Daemon unreachable: ${O}`},502)}}function RU6($){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 VT0($,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 IU6($){return jd$.includes($)}var wU6,Dd$=524288,jU6=65536,zU6=1e4,Ld$=2000,PU6,kT0,A5,jd$,zd$=()=>{let $=new F1;$.use("/:virtualMcpId/:branch/*",PU6),$.post("/:virtualMcpId/:branch/write",(X)=>eZ(X,"/_sandbox/write",{forwardJsonBody:!0,signal:Tv(X)})),$.post("/:virtualMcpId/:branch/unlink",(X)=>eZ(X,"/_sandbox/unlink",{forwardJsonBody:!0,signal:Tv(X)})),$.post("/:virtualMcpId/:branch/mkdir",(X)=>eZ(X,"/_sandbox/mkdir",{forwardJsonBody:!0,signal:Tv(X)})),$.post("/:virtualMcpId/:branch/rename",(X)=>eZ(X,"/_sandbox/rename",{forwardJsonBody:!0,signal:Tv(X)})),$.post("/:virtualMcpId/:branch/read",(X)=>eZ(X,"/_sandbox/read",{forwardJsonBody:!0,signal:Tv(X)})),$.post("/:virtualMcpId/:branch/glob",(X)=>eZ(X,"/_sandbox/glob",{forwardJsonBody:!0,signal:Tv(X)})),$.post("/:virtualMcpId/:branch/grep",(X)=>eZ(X,"/_sandbox/grep",{forwardJsonBody:!0,signal:Tv(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 eZ(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 eZ(X,`/_sandbox/exec/${encodeURIComponent(Q)}/kill`)}),$.get("/:virtualMcpId/:branch/config",(X)=>eZ(X,"/_sandbox/config",{method:"GET",map404to410:!0,redactRepoDir:!0})),$.put("/:virtualMcpId/:branch/config",(X)=>eZ(X,"/_sandbox/config",{method:"PUT",forwardJsonBody:!0,map404to410:!0})),$.post("/:virtualMcpId/:branch/setup/:step",async(X)=>{let Q=X.req.param("step");if(!Q||!IU6(Q))return X.json({error:`step must be one of: ${jd$.join(", ")}`},400);let Y=X.get("vmClaim"),G=await T71(X.var.studioContext,{claimName:Y.claimName})==="gone"?null:await TU6(X);if(!G)return X.json({error:"sandbox not found: nothing is running at this ref"},404,A5);if(Q==="start"){let J=o(X.var.studioContext),W=vy(Y.virtualMcpMetadata);try{await E70({ctx:X.var.studioContext,runner:G,handle:Y.claimName,orgId:J.id,userId:Y.callerUserId,entries:W})}catch(K){let H=K instanceof Error?K.message:String(K);return X.json({error:`Failed to push env to daemon: ${H}`},502)}}return eZ(X,`/_sandbox/setup/${Q}`,{signal:X.req.raw.signal,map404to410:!0,runner:G})}),$.get("/:virtualMcpId/:branch/events",(X)=>{let Q=X.get("vmClaim");if(!Q.runner)return rN(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 zl$(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").runtime==="cms")return Ed$(X);return Z(X)});let Z=(X)=>eZ(X,"/_sandbox/git/status",{method:"GET",map404to410:!0,signal:AbortSignal.any([X.req.raw.signal,AbortSignal.timeout(Ld$)])});return $.post("/:virtualMcpId/:branch/git/status",(X)=>{if(X.get("vmClaim").runtime==="cms")return Ed$(X);return eZ(X,"/_sandbox/git/status",{map404to410:!0,signal:AbortSignal.any([X.req.raw.signal,AbortSignal.timeout(Ld$)])})}),$.post("/:virtualMcpId/:branch/git/diff",async(X)=>{let Q=X.get("vmClaim");if(Q.runtime==="cms")try{let Y=await X.req.json().catch(()=>({})),G=await eu(X),J=await qT0(G,Q.branch,Y.base);return X.json(J,200,A5)}catch(Y){return m71(X,Y)}return eZ(X,"/_sandbox/git/diff",{forwardJsonBody:!0,map404to410:!0})}),$.post("/:virtualMcpId/:branch/git/publish",async(X)=>{if(X.get("vmClaim").runtime==="cms")return X.json({ok:!0},200,A5);let Q=Rv(X);if(Q instanceof Response)return Q;let{claimName:Y,virtualMcpMetadata:G,connectionIds:J}=X.get("vmClaim"),W=X.var.studioContext;return Aa(Y,async()=>{try{await R71(W,Q,Y);let K=Pa(G,J);if(K)await Od$(W,Q,Y,K)}catch(K){if(K instanceof Av)return X.json({error:K.message},403,A5);let H=K instanceof Error?K.message:String(K);return X.json({error:H},502,A5)}return eZ(X,"/_sandbox/git/publish",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/discard",async(X)=>{let Q=X.get("vmClaim");if(Q.runtime==="cms")return Aa(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,A5);try{let J=await eu(X);return await Fd$(J,Q.branch,G),X.json({ok:!0},200,A5)}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,A5)}});return Aa(Q.claimName,()=>eZ(X,"/_sandbox/git/discard",{forwardJsonBody:!0,map404to410:!0}))}),$.post("/:virtualMcpId/:branch/git/rebase",async(X)=>{let Q=X.get("vmClaim");if(Q.runtime==="cms")return Aa(Q.claimName,async()=>{try{let W=await X.req.json().catch(()=>({})),K=await eu(X),H=W.base??await K.getDefaultBranch();return await MT0(K,Q.branch,H),X.json({ok:!0},200,A5)}catch(W){return m71(X,W)}});let Y=Rv(X);if(Y instanceof Response)return Y;let{claimName:G}=X.get("vmClaim"),J=X.var.studioContext;return Aa(G,async()=>{try{await R71(J,Y,G)}catch(W){let K=W instanceof Error?W.message:String(W);return X.json({error:K},502,A5)}return eZ(X,"/_sandbox/git/rebase",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/suggest-commit",o5({maxSize:Dd$,onError:(X)=>X.json({error:"Payload too large"},413,A5)}),async(X)=>{let Q=X.get("vmClaim"),Y=null;if(Q.runtime!=="cms"){let H=Rv(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,[B,O]=M71(F)&&U?[F,N]:Y?await Promise.all([VT0(Y,G,"/_sandbox/git/status","GET",{userId:J,projectRef:W}),VT0(Y,G,"/_sandbox/git/diff","GET",{userId:J,projectRef:W})]):await(async()=>{let w=await eu(X);return Promise.all([IT0(w,Q.branch),qT0(w,Q.branch)])})(),L=await Il$(K,B,O);return X.json(L,200,A5)}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,A5);return X.json({error:F},502,A5)}}),$.post("/:virtualMcpId/:branch/git/judge-review",o5({maxSize:Dd$,onError:(X)=>X.json({error:"Payload too large"},413,A5)}),async(X)=>{let Q=X.get("vmClaim"),Y=null;if(Q.runtime!=="cms"){let H=Rv(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,[B,O]=M71(F)&&U?[F,N]:Y?await Promise.all([VT0(Y,G,"/_sandbox/git/status","GET",{userId:J,projectRef:W}),VT0(Y,G,"/_sandbox/git/diff","GET",{userId:J,projectRef:W})]):await(async()=>{let w=await eu(X);return Promise.all([IT0(w,Q.branch),qT0(w,Q.branch)])})(),L=await Ml$(K,B,O,typeof H.language==="string"?H.language:void 0);return X.json(L,200,A5)}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,A5);return X.json({error:F},502,A5)}}),$.get("/:virtualMcpId/:branch/preview-fetch",async(X)=>{let Q=Rv(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(/\/+$/,"");return wd$(X,`${W}${G}`)}),$.post("/:virtualMcpId/:branch/preview-invoke",o5({maxSize:jU6,onError:(X)=>X.json({error:"Payload too large"},413)}),async(X)=>{let Q=Rv(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=Nd$(J);if(!W)return X.json({error:"Invalid or missing __resolveType"},400);let K=Ud$(G,W.resolveType);return wd$(X,K,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(W.payload),signal:AbortSignal.timeout(30000)})}),$};var Pd$=D(()=>{U8();AH();nu();A71();Jn();wl$();d3();ay();El$();t3();jl$();Pl$();Vi0();Hn();S71();kl$();_71();aD();l71();Bd$();d71();wU6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;PU6=UT0(async($,Z)=>{let X=$.var.studioContext;try{t(X)}catch{return $.json({error:"Unauthorized"},401)}let Q=o0(X);if(!Q)return $.json({error:"Unauthorized"},401);let Y;try{Y=o(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{EU6(J)}catch(L){let w=L instanceof Error?L.message:String(L);return $.json({error:w},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=Yn({orgId:Y.id,virtualMcpId:G,branch:J}),H=await Ti0(X,J),F=Ri0(H,Q),N=Ll$({userId:F,projectRef:K}),U=W.metadata??null,B=await AU6($,{claimName:N,branch:J,virtualMcpId:G,sandboxUserId:F,virtualMcpMetadata:U,branchThread:H});if(B==="cms")return $.set("vmClaim",{claimName:N,callerUserId:Q,runner:null,virtualMcpId:G,branch:J,userId:F,projectRef:K,virtualMcpMetadata:U,connectionIds:W.connections?.map((L)=>L.connection_id)??[],runtime:B}),Z();let O;try{O=await YQ(X)}catch{O=null}if(!O)return $.json({error:"No sandbox runner found"},404);return $.set("vmClaim",{claimName:N,callerUserId:Q,runner:O,virtualMcpId:G,branch:J,userId:F,projectRef:K,virtualMcpMetadata:U,connectionIds:W.connections?.map((L)=>L.connection_id)??[],runtime:B}),Z()});kT0=new Map;A5={"Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache"};jd$=["clone","install","start"]});function Ad$($,Z,X){let Q=i71.get($);if(!Q)Q={pending:null,running:!1},i71.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)MU6($,Q);return G}async function MU6($,Z){Z.running=!0;try{while(Z.pending){let X=Z.pending;Z.pending=null;try{let Q=await kU6(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)i71.delete($)}}async function kU6($){let{client:Z,branch:X,packagePath:Q}=$.deps;for(let Y=0;;Y++){let G=await au(Z,X),J=await Z.getCommitTreeSha(G),W=await Z.getDecofileTree(J,Q),K=h71(W,Q),H=[],F=new Map(K.map((O)=>[O.path,{stem:O.stem,sha:O.sha}]));for(let[O,L]of $.set){let w=u71(K,O),E=`${JSON.stringify(L,null,2)}
2886
- `,j=await Z.createBlob(E);await Jd$(Z.owner,Z.repo,j,E);let z=w[0]??`${TT0(Q)}/${f71(O)}.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 w.slice(1))H.push({path:P,mode:"100644",type:"blob",sha:null}),F.delete(P)}for(let O of $.del)for(let L of u71(K,O))H.push({path:L,mode:"100644",type:"blob",sha:null}),F.delete(L);if(H.length===0)return G;let N=Q?`${Q}/.deco/blocks.gen.json`:".deco/blocks.gen.json";if(W.some((O)=>O.type==="blob"&&O.path===N)){let O=await Promise.all([...F.values()].map(async(j)=>({stem:j.stem,content:j.content??await Z.getBlobText(j.sha)}))),{decofile:L,skipped:w}=wa(O);if(w.length>0)console.warn("decofile gen: dropped blocks that were not valid JSON",{repo:`${Z.owner}/${Z.repo}`,branch:X,packagePath:Q,blocks:w.map((j)=>j.key)});let E=await Z.createBlob(L);H.push({path:N,mode:"100644",type:"blob",sha:E})}let U=await Z.createTree(J,H),B=await Z.createCommit({message:VU6($),treeSha:U,parentShas:[G]});try{return await Z.updateRef(X,B),B}catch(O){if(!(O instanceof h4&&O.status===422)||Y>=qU6-1)throw O;await w$(X7(2000,200,Y,2,0.5))}}}function VU6($){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 wi0(Q,$.deps.coAuthor)}var qU6=3,i71;var Td$=D(()=>{rO0();LT0();W4();aD();RT0();i71=new Map});import{createHmac as Rd$,randomBytes as SU6,timingSafeEqual as CU6}from"crypto";function Id$(){if(ST0)return ST0;let $;try{let Z=b0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return ST0=$?Buffer.from($):SU6(32),ST0}function p71($){let Z=$.nowMs??Date.now(),X={o:$.organizationId,m:$.virtualMcpId,b:$.branch,e:Math.floor((Z+_U6)/1000)},Q=Buffer.from(JSON.stringify(X)).toString("base64url"),Y=Rd$("sha256",Id$()).update(Q).digest("base64url");return`${Q}.${Y}`}function qd$($,Z){let X=$.indexOf(".");if(X<0)return!1;let Q=$.slice(0,X),Y=Buffer.from($.slice(X+1)),G=Buffer.from(Rd$("sha256",Id$()).update(Q).digest("base64url"));if(Y.length!==G.length||!CU6(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 _U6=21600000,ST0=null;var Md$=D(()=>{R$()});import{z as $c}from"zod";function fU6($){return $.length>0&&$.length<=255&&!$.includes("..")&&!$.endsWith("/")&&!$.endsWith(".lock")&&vU6.test($)}function _d$($){return $.req.header("x-forwarded-host")??new URL($.req.url).host}async function Ta($){let Z=$.get("decofileScope");return OT0($.var.studioContext,Z.organizationId,Z.githubRepo)}function Ra($,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 vd$(){let $=new F1;return $.use("/:virtualMcpId/:branch",Cd$),$.use("/:virtualMcpId/:branch/*",Cd$),$.get("/:virtualMcpId/:branch",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await Ta(Z),Y=await Wd$(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=p71({organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,branch:X.branch});return Z.body(`{"version":${JSON.stringify(Y.sha)},"token":${JSON.stringify(J)},"apiHost":${JSON.stringify(_d$(Z))},"decofile":${Y.decofile}}`,200,{...G,"content-type":"application/json"})}catch(Q){return Ra(Z,Q)}}),$.get("/:virtualMcpId/:branch/meta",async(Z)=>{let X=Z.get("decofileScope"),Q=X.packagePath?`${X.packagePath}/.deco/meta.gen.json`:".deco/meta.gen.json";try{let Y=await Ta(Z),G=await Y.getFileTextAtRef(X.branch,Q);if(G===null){let J=await Y.getDefaultBranch();if(J!==X.branch)G=await Y.getFileTextAtRef(J,Q)}if(G===null)return Z.json({error:"meta.gen.json not committed"},404);return Z.body(G,200,{"content-type":"application/json","Cache-Control":"no-store","Access-Control-Allow-Origin":"*"})}catch(Y){return Ra(Z,Y)}}),$.patch("/:virtualMcpId/:branch",xU6,async(Z)=>{let X=Z.get("decofileScope"),Q=Z.var.studioContext,Y=yU6.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{DT0(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);if(v71(J))return Z.json({error:`Block key "${J}" collides with a framework resolver module and cannot be written`},400)}try{let J=await Ta(Z),W=await Ad$(`${X.organizationId}/${X.virtualMcpId}/${X.branch}`,{client:J,branch:X.branch,packagePath:X.packagePath,coAuthor:tu(Q)},G),K=p71({organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,branch:X.branch});return Z.json({version:W,token:K,apiHost:_d$(Z)})}catch(J){return Ra(Z,J)}}),$.post("/:virtualMcpId/:branch/publish",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await Ta(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 MT0(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 Ra(Z,Q)}}),$.get("/:virtualMcpId/:branch/status",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await Ta(Z),Y=await Q.getDefaultBranch();if(Y===X.branch)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0,lastCommitAt:null});try{let[{aheadBy:G,behindBy:J},W]=await Promise.all([Q.compare(Y,X.branch),Q.getBranchHead(X.branch)]);return Z.json({baseBranch:Y,aheadBy:G,behindBy:J,lastCommitAt:W.committedAt})}catch(G){if(G instanceof h4&&G.status===404)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0,lastCommitAt:null});throw G}}catch(Q){return Ra(Z,Q)}}),$}var vU6,kd$=500,Vd$=1048576,Sd$=1024,bU6=8388608,xU6,yU6,Cd$;var fd$=D(()=>{en0();LT0();U8();AH();A71();BT0();d71();_71();Td$();Md$();l71();aD();RT0();vU6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;xU6=o5({maxSize:bU6,onError:($)=>$.json({error:"Payload too large"},413)}),yU6=$c.object({set:$c.record($c.string(),$c.unknown()).optional(),delete:$c.array($c.string()).optional()}).refine(($)=>Object.keys($.set??{}).length>0||($.delete?.length??0)>0,{message:"Patch must set or delete at least one block"}).refine(($)=>Object.keys($.set??{}).length+($.delete?.length??0)<=kd$,{message:`Patch cannot touch more than ${kd$} blocks`}).refine(($)=>Object.values($.set??{}).every((Z)=>JSON.stringify(Z).length<=Vd$),{message:`Each block must be at most ${Vd$} bytes`}).refine(($)=>[...Object.keys($.set??{}),...$.delete??[]].every((Z)=>Z.length<=Sd$),{message:`Each block key must be at most ${Sd$} characters`}),Cd$=UT0(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(!fU6(G))return $.json({error:`Invalid branch name: ${G}`},400);let J=X.auth?.user?.id??null;if(!J){let B=$.req.query("token");if(!($.req.method==="GET"&&!$.req.path.match(/\/(publish|status)$/)))return $.json({error:"Unauthorized"},401);if(!B||!qd$(B,{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(!ZD0(K))return $.json({error:"Project has no preview server configured"},404);let F=W.connections?.map((B)=>B.connection_id)??[],N=Pa(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 bd$=($)=>{let Z=new F1;if(Z.use("*",Uv),Z.route("/",VA0()),Z.route("/",sg$()),Z.route("/",Ql$()),Z.route("/",$l$()),Z.route("/",HT0()),Z.route("/tools",Fl$()),Z.route("/",Wl$()),Z.route("/",vc$({kvStorage:$.kvStorage})),Z.route("/",Cc$()),Z.route("/fs",nc$({getConnection:$.getNatsConnection})),Z.route("/sandbox",zd$()),Z.route("/decofile",vd$()),Z.route("/",sc$()),Z.route("/deco-sites",CA0()),Z.route("/sso",TA0()),Z.route("/",FT0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",dg$()),$.mountDevAssets)Z.route("/dev-assets",_A0({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("/",Fx$()),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",oc$()),Z.route("/mcp",vw0()),Z.route("/mcp/self",KT0()),Z.route("/mcp",xw0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var xd$=D(()=>{U8();m91();mg$();t91();vA0();ds();l91();_c$();fc$();tc$();rt();x91();yw0();D71();rc$();ac$();Zl$();Yl$();Kl$();w71();Nl$();E71();fw0();Pd$();fd$()});function gU6($){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 hU6=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},yd$=()=>{let $=new F1;return $.use("*",hU6),$.get("/",async(Z)=>{let X=b0(),Q=X.decoSupabaseUrl,Y=X.decoSupabaseServiceKey;if(!Q||!Y)return Z.json({apps:[]});try{let G=await aZ(Q,Y,"apps?select=name,title,description,logo,category,vendors(alias,url)");return Z.json({apps:gU6(G)})}catch(G){return console.error("[deco-apps] GET error:",G),Z.json({error:"Failed to fetch apps"},502)}}),$};var gd$=D(()=>{U8();R$();MP0()});import{z as M1}from"zod";function MH($,Z="invalid_request_error",X=null,Q=null){return{error:{message:$,type:Z,param:X,code:Q}}}function oU6($){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 rU6($,Z,X){try{return JSON.parse($)}catch{throw new cd$(`Invalid JSON in tool call arguments for function '${X}' (tool_call_id: ${Z}): ${$}`)}}function sU6($){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:rU6(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 aU6($){let Z=$.map((X)=>{let Q=X.function.parameters?oY(X.function.parameters):oY({type:"object",properties:{}});return[X.function.name,h$({description:X.function.description,inputSchema:Q})]});return Object.fromEntries(Z)}function eU6($){if(!$)return;return{openai:{response_format:$}}}function $B6(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function hd$($,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 ud$($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var uU6=256,cU6,lU6,dU6,mU6,iU6,pU6,nU6,tU6,cd$,ld$,dd$;var md$=D(()=>{l4();U8();nu();VN();cU6=M1.object({type:M1.literal("function"),function:M1.object({name:M1.string(),description:M1.string().optional(),parameters:M1.record(M1.string(),M1.unknown()).optional()})}),lU6=M1.object({id:M1.string(),type:M1.literal("function"),function:M1.object({name:M1.string(),arguments:M1.string()})}),dU6=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(lU6).optional()}),M1.object({role:M1.literal("tool"),content:M1.string(),tool_call_id:M1.string()})]),mU6=M1.object({type:M1.literal("text")}),iU6=M1.object({type:M1.literal("json_object")}),pU6=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()})}),nU6=M1.union([mU6,iU6,pU6]),tU6=M1.object({model:M1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:M1.array(dU6),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(cU6).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:nU6.optional(),user:M1.string().optional()});cd$=class cd$ extends Error{constructor($){super($);this.name="MessageConversionError"}};ld$=new F1;ld$.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),X=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(MH("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(MH("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(MH("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Q=await $.req.json(),Y=tU6.safeParse(Q);if(!Y.success){let w=Y.error.issues[0]??{message:"Invalid request",path:[]};return $.json(MH(`Invalid request: ${w.message}`,"invalid_request_error",w.path.length>0?w.path.join("."):null),400)}let G=Y.data,J=oU6(G.model);if(!J)return $.json(MH("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)=>Dw(j.providerId));if(!E)return $.json(MH("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(MH(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(K),N=sU6(G.messages),U=G.tools?aU6(G.tools):void 0,B=eU6(G.response_format),O=$B6(),L=Math.floor(Date.now()/1000);if(G.stream)return rN($,async(w)=>{let E=hd$(F,N,U,G,B,$.req.raw.signal);try{let j=SO(E),z=!1,A=0,P="",I=async()=>{if(P.length===0)return;let k=P;P="",await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,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 w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,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>=uU6)await I()}else if(k.type==="tool-call"){await I();let M=A++;await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,model:G.model,choices:[{index:0,delta:{tool_calls:[{index:M,id:k.toolCallId,type:"function",function:{name:k.toolName,arguments:JSON.stringify(k.input)}}]},finish_reason:null}]})})}else if(k.type==="finish")await I(),await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,model:G.model,choices:[{index:0,delta:{},finish_reason:ud$(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 w.writeSSE({data:"[DONE]"})}catch(j){let z=j;console.error("[openai-compat:stream] Error:",z.message),await w.writeSSE({data:JSON.stringify({error:{message:z.message,type:"server_error"}})})}});else{let w=hd$(F,N,U,G,B,$.req.raw.signal),E=await kO(w),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:O,object:"chat.completion",created:L,model:G.model,choices:[{index:0,message:j,finish_reason:ud$(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(MH("Request aborted","invalid_request_error"),400);if(Y.name==="MessageConversionError")return $.json(MH(Y.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",Y.message,Y.stack),$.json(MH(Y.message,"server_error"),500)}});dd$=ld$});function ZB6($){if(typeof $!=="object"||$===null)return!1;let X=$.githubRepo?.url;return typeof X==="string"&&X.length>0}function id$(){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=o0(X);if(!Q)return Z.json({error:"Authentication required"},401);let G=(Z.req.query("site")??"").trim().toLowerCase();if(!$J(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||yZ(H))continue;let F=await X.storage.virtualMcps.list(H.id);for(let N of F){if(Ve1(N)!==G)continue;if(!ZB6(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 pd$=D(()=>{U8();FO()});var td$;var nd$=D(()=>{td$={name:"decocms",version:"4.311.0",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});function YB6(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??QB6}}var od$,QB6="https://ph.studio.decocms.com",rd$;var sd$=D(()=>{U8();o50();nC();Q9();R$();M91();nd$();od$=new F1;od$.get("/",($)=>{let Z={version:td$.version,theme:ii1(),...MF().logo&&{logo:MF().logo},...LN()&&{internalUrl:P_1()},...b0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!b0().firecrawlApiKey,auth:ey$(),posthog:YB6(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:_a()}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});rd$=od$});function Zc($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function n71($){return(Zc($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((X)=>X.charAt(0).toUpperCase()+X.slice(1)).join(" ")}function ed$($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(Zc($))}&sz=${Z}`}function ad$($,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 $m$($){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()?ad$(`${Y.trim().replace(/\s+/g," ")} \u2014 ${J}`,200):ad$(`How does ${X} really perform? ${J}`,200);return{title:G,description:W}}import{z as l0}from"zod";var Iv,GB6,JB6,WB6,KB6,Zm$;var Xm$=D(()=>{Iv=l0.enum(["good","bad","neutral"]),GB6=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:Iv.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 $})),JB6=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(GB6)),WB6={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()},KB6=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:Iv.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:Iv.optional()}),l0.object({template:l0.literal("stats"),stats:l0.array(l0.object({value:l0.coerce.string(),label:l0.coerce.string(),tone:Iv.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:Iv.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(JB6).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:Iv.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:Iv.optional()})).min(1)})]),Zm$=l0.object({...WB6,template:KB6})});function CT0($){let Z=[],X=[...$.sections].sort((Y,G)=>Y.position-G.position).map((Y)=>{let G=Zm$.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 t71=D(()=>{Xm$()});import{join as Qm$}from"path";async function FB6($){try{let Z=await fetch(`${NK({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(HB6)});if(!Z.ok)return null;let X=await Z.json(),{deck:Q}=CT0(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()||n71($),score:Q.meta.scores?.cover??J?.score?.value,verdict:Y?.annotation?.trim()||Y?.headline?.trim()||void 0}}catch{return null}}function jG($){return $.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;")}function NB6($,Z){let X=Zc($),Q=Z?.brand?.trim()||n71(X),Y=ed$(X,128),J=`${(b0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(X)}`,{title:W,description:K}=$m$({brand:Q,domain:X,score:Z?.score,verdict:Z?.verdict}),H=`${J}/og.png`,F=`${Q} commerce report by decocms`;return[`<title>${jG(W)}</title>`,`<meta name="description" content="${jG(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="${jG(W)}" />`,`<meta property="og:description" content="${jG(K)}" />`,`<meta property="og:url" content="${jG(J)}" />`,`<meta property="og:image" content="${jG(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${jG(F)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${jG(W)}" />`,`<meta name="twitter:description" content="${jG(K)}" />`,`<meta name="twitter:image" content="${jG(H)}" />`,`<meta name="twitter:image:alt" content="${jG(F)}" />`,`<link rel="canonical" href="${jG(J)}" />`,`<link rel="icon" href="${jG(Y)}" sizes="any" />`].join(`
2886
+ `,j=await Z.createBlob(E);await Jd$(Z.owner,Z.repo,j,E);let z=w[0]??`${TT0(Q)}/${f71(O)}.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 w.slice(1))H.push({path:P,mode:"100644",type:"blob",sha:null}),F.delete(P)}for(let O of $.del)for(let L of u71(K,O))H.push({path:L,mode:"100644",type:"blob",sha:null}),F.delete(L);if(H.length===0)return G;let N=Q?`${Q}/.deco/blocks.gen.json`:".deco/blocks.gen.json";if(W.some((O)=>O.type==="blob"&&O.path===N)){let O=await Promise.all([...F.values()].map(async(j)=>({stem:j.stem,content:j.content??await Z.getBlobText(j.sha)}))),{decofile:L,skipped:w}=wa(O);if(w.length>0)console.warn("decofile gen: dropped blocks that were not valid JSON",{repo:`${Z.owner}/${Z.repo}`,branch:X,packagePath:Q,blocks:w.map((j)=>j.key)});let E=await Z.createBlob(L);H.push({path:N,mode:"100644",type:"blob",sha:E})}let U=await Z.createTree(J,H),B=await Z.createCommit({message:VU6($),treeSha:U,parentShas:[G]});try{return await Z.updateRef(X,B),B}catch(O){if(!(O instanceof h4&&O.status===422)||Y>=qU6-1)throw O;await w$(X7(2000,200,Y,2,0.5))}}}function VU6($){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 wi0(Q,$.deps.coAuthor)}var qU6=3,i71;var Td$=D(()=>{rO0();LT0();W4();aD();RT0();i71=new Map});import{createHmac as Rd$,randomBytes as SU6,timingSafeEqual as CU6}from"crypto";function Id$(){if(ST0)return ST0;let $;try{let Z=b0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return ST0=$?Buffer.from($):SU6(32),ST0}function p71($){let Z=$.nowMs??Date.now(),X={o:$.organizationId,m:$.virtualMcpId,b:$.branch,e:Math.floor((Z+_U6)/1000)},Q=Buffer.from(JSON.stringify(X)).toString("base64url"),Y=Rd$("sha256",Id$()).update(Q).digest("base64url");return`${Q}.${Y}`}function qd$($,Z){let X=$.indexOf(".");if(X<0)return!1;let Q=$.slice(0,X),Y=Buffer.from($.slice(X+1)),G=Buffer.from(Rd$("sha256",Id$()).update(Q).digest("base64url"));if(Y.length!==G.length||!CU6(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 _U6=21600000,ST0=null;var Md$=D(()=>{R$()});import{z as $c}from"zod";function fU6($){return $.length>0&&$.length<=255&&!$.includes("..")&&!$.endsWith("/")&&!$.endsWith(".lock")&&vU6.test($)}function _d$($){return $.req.header("x-forwarded-host")??new URL($.req.url).host}async function Ta($){let Z=$.get("decofileScope");return OT0($.var.studioContext,Z.organizationId,Z.githubRepo)}function Ra($,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 vd$(){let $=new F1;return $.use("/:virtualMcpId/:branch",Cd$),$.use("/:virtualMcpId/:branch/*",Cd$),$.get("/:virtualMcpId/:branch",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await Ta(Z),Y=await Wd$(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=p71({organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,branch:X.branch});return Z.body(`{"version":${JSON.stringify(Y.sha)},"token":${JSON.stringify(J)},"apiHost":${JSON.stringify(_d$(Z))},"decofile":${Y.decofile}}`,200,{...G,"content-type":"application/json"})}catch(Q){return Ra(Z,Q)}}),$.get("/:virtualMcpId/:branch/meta",async(Z)=>{let X=Z.get("decofileScope"),Q=X.packagePath?`${X.packagePath}/.deco/meta.gen.json`:".deco/meta.gen.json";try{let Y=await Ta(Z),G=await Y.getFileTextAtRef(X.branch,Q);if(G===null){let J=await Y.getDefaultBranch();if(J!==X.branch)G=await Y.getFileTextAtRef(J,Q)}if(G===null)return Z.json({error:"meta.gen.json not committed"},404);return Z.body(G,200,{"content-type":"application/json","Cache-Control":"no-store","Access-Control-Allow-Origin":"*"})}catch(Y){return Ra(Z,Y)}}),$.patch("/:virtualMcpId/:branch",xU6,async(Z)=>{let X=Z.get("decofileScope"),Q=Z.var.studioContext,Y=yU6.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{DT0(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);if(v71(J))return Z.json({error:`Block key "${J}" collides with a framework resolver module and cannot be written`},400)}try{let J=await Ta(Z),W=await Ad$(`${X.organizationId}/${X.virtualMcpId}/${X.branch}`,{client:J,branch:X.branch,packagePath:X.packagePath,coAuthor:tu(Q)},G),K=p71({organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,branch:X.branch});return Z.json({version:W,token:K,apiHost:_d$(Z)})}catch(J){return Ra(Z,J)}}),$.post("/:virtualMcpId/:branch/publish",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await Ta(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 MT0(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 Ra(Z,Q)}}),$.get("/:virtualMcpId/:branch/status",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await Ta(Z),Y=await Q.getDefaultBranch();if(Y===X.branch)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0,lastCommitAt:null});try{let[{aheadBy:G,behindBy:J},W]=await Promise.all([Q.compare(Y,X.branch),Q.getBranchHead(X.branch)]);return Z.json({baseBranch:Y,aheadBy:G,behindBy:J,lastCommitAt:W.committedAt})}catch(G){if(G instanceof h4&&G.status===404)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0,lastCommitAt:null});throw G}}catch(Q){return Ra(Z,Q)}}),$}var vU6,kd$=500,Vd$=1048576,Sd$=1024,bU6=8388608,xU6,yU6,Cd$;var fd$=D(()=>{en0();LT0();U8();AH();A71();BT0();d71();_71();Td$();Md$();l71();aD();RT0();vU6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;xU6=o5({maxSize:bU6,onError:($)=>$.json({error:"Payload too large"},413)}),yU6=$c.object({set:$c.record($c.string(),$c.unknown()).optional(),delete:$c.array($c.string()).optional()}).refine(($)=>Object.keys($.set??{}).length>0||($.delete?.length??0)>0,{message:"Patch must set or delete at least one block"}).refine(($)=>Object.keys($.set??{}).length+($.delete?.length??0)<=kd$,{message:`Patch cannot touch more than ${kd$} blocks`}).refine(($)=>Object.values($.set??{}).every((Z)=>JSON.stringify(Z).length<=Vd$),{message:`Each block must be at most ${Vd$} bytes`}).refine(($)=>[...Object.keys($.set??{}),...$.delete??[]].every((Z)=>Z.length<=Sd$),{message:`Each block key must be at most ${Sd$} characters`}),Cd$=UT0(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(!fU6(G))return $.json({error:`Invalid branch name: ${G}`},400);let J=X.auth?.user?.id??null;if(!J){let B=$.req.query("token");if(!($.req.method==="GET"&&!$.req.path.match(/\/(publish|status)$/)))return $.json({error:"Unauthorized"},401);if(!B||!qd$(B,{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(!ZD0(K))return $.json({error:"Project has no preview server configured"},404);let F=W.connections?.map((B)=>B.connection_id)??[],N=Pa(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 bd$=($)=>{let Z=new F1;if(Z.use("*",Uv),Z.route("/",VA0()),Z.route("/",sg$()),Z.route("/",Ql$()),Z.route("/",$l$()),Z.route("/",HT0()),Z.route("/tools",Fl$()),Z.route("/",Wl$()),Z.route("/",vc$({kvStorage:$.kvStorage})),Z.route("/",Cc$()),Z.route("/fs",nc$({getConnection:$.getNatsConnection})),Z.route("/sandbox",zd$()),Z.route("/decofile",vd$()),Z.route("/",sc$()),Z.route("/deco-sites",CA0()),Z.route("/sso",TA0()),Z.route("/",FT0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",dg$()),$.mountDevAssets)Z.route("/dev-assets",_A0({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("/",Fx$()),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",oc$()),Z.route("/mcp",vw0()),Z.route("/mcp/self",KT0()),Z.route("/mcp",xw0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var xd$=D(()=>{U8();m91();mg$();t91();vA0();ds();l91();_c$();fc$();tc$();rt();x91();yw0();D71();rc$();ac$();Zl$();Yl$();Kl$();w71();Nl$();E71();fw0();Pd$();fd$()});function gU6($){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 hU6=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},yd$=()=>{let $=new F1;return $.use("*",hU6),$.get("/",async(Z)=>{let X=b0(),Q=X.decoSupabaseUrl,Y=X.decoSupabaseServiceKey;if(!Q||!Y)return Z.json({apps:[]});try{let G=await aZ(Q,Y,"apps?select=name,title,description,logo,category,vendors(alias,url)");return Z.json({apps:gU6(G)})}catch(G){return console.error("[deco-apps] GET error:",G),Z.json({error:"Failed to fetch apps"},502)}}),$};var gd$=D(()=>{U8();R$();MP0()});import{z as M1}from"zod";function MH($,Z="invalid_request_error",X=null,Q=null){return{error:{message:$,type:Z,param:X,code:Q}}}function oU6($){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 rU6($,Z,X){try{return JSON.parse($)}catch{throw new cd$(`Invalid JSON in tool call arguments for function '${X}' (tool_call_id: ${Z}): ${$}`)}}function sU6($){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:rU6(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 aU6($){let Z=$.map((X)=>{let Q=X.function.parameters?oY(X.function.parameters):oY({type:"object",properties:{}});return[X.function.name,h$({description:X.function.description,inputSchema:Q})]});return Object.fromEntries(Z)}function eU6($){if(!$)return;return{openai:{response_format:$}}}function $B6(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function hd$($,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 ud$($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var uU6=256,cU6,lU6,dU6,mU6,iU6,pU6,nU6,tU6,cd$,ld$,dd$;var md$=D(()=>{l4();U8();nu();VN();cU6=M1.object({type:M1.literal("function"),function:M1.object({name:M1.string(),description:M1.string().optional(),parameters:M1.record(M1.string(),M1.unknown()).optional()})}),lU6=M1.object({id:M1.string(),type:M1.literal("function"),function:M1.object({name:M1.string(),arguments:M1.string()})}),dU6=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(lU6).optional()}),M1.object({role:M1.literal("tool"),content:M1.string(),tool_call_id:M1.string()})]),mU6=M1.object({type:M1.literal("text")}),iU6=M1.object({type:M1.literal("json_object")}),pU6=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()})}),nU6=M1.union([mU6,iU6,pU6]),tU6=M1.object({model:M1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:M1.array(dU6),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(cU6).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:nU6.optional(),user:M1.string().optional()});cd$=class cd$ extends Error{constructor($){super($);this.name="MessageConversionError"}};ld$=new F1;ld$.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),X=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(MH("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(MH("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(MH("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Q=await $.req.json(),Y=tU6.safeParse(Q);if(!Y.success){let w=Y.error.issues[0]??{message:"Invalid request",path:[]};return $.json(MH(`Invalid request: ${w.message}`,"invalid_request_error",w.path.length>0?w.path.join("."):null),400)}let G=Y.data,J=oU6(G.model);if(!J)return $.json(MH("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)=>Dw(j.providerId));if(!E)return $.json(MH("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(MH(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(K),N=sU6(G.messages),U=G.tools?aU6(G.tools):void 0,B=eU6(G.response_format),O=$B6(),L=Math.floor(Date.now()/1000);if(G.stream)return rN($,async(w)=>{let E=hd$(F,N,U,G,B,$.req.raw.signal);try{let j=SO(E),z=!1,A=0,P="",I=async()=>{if(P.length===0)return;let k=P;P="",await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,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 w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,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>=uU6)await I()}else if(k.type==="tool-call"){await I();let M=A++;await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,model:G.model,choices:[{index:0,delta:{tool_calls:[{index:M,id:k.toolCallId,type:"function",function:{name:k.toolName,arguments:JSON.stringify(k.input)}}]},finish_reason:null}]})})}else if(k.type==="finish")await I(),await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,model:G.model,choices:[{index:0,delta:{},finish_reason:ud$(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 w.writeSSE({data:"[DONE]"})}catch(j){let z=j;console.error("[openai-compat:stream] Error:",z.message),await w.writeSSE({data:JSON.stringify({error:{message:z.message,type:"server_error"}})})}});else{let w=hd$(F,N,U,G,B,$.req.raw.signal),E=await kO(w),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:O,object:"chat.completion",created:L,model:G.model,choices:[{index:0,message:j,finish_reason:ud$(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(MH("Request aborted","invalid_request_error"),400);if(Y.name==="MessageConversionError")return $.json(MH(Y.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",Y.message,Y.stack),$.json(MH(Y.message,"server_error"),500)}});dd$=ld$});function ZB6($){if(typeof $!=="object"||$===null)return!1;let X=$.githubRepo?.url;return typeof X==="string"&&X.length>0}function id$(){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=o0(X);if(!Q)return Z.json({error:"Authentication required"},401);let G=(Z.req.query("site")??"").trim().toLowerCase();if(!$J(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||yZ(H))continue;let F=await X.storage.virtualMcps.list(H.id);for(let N of F){if(Ve1(N)!==G)continue;if(!ZB6(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 pd$=D(()=>{U8();FO()});var td$;var nd$=D(()=>{td$={name:"decocms",version:"4.311.1",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});function YB6(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??QB6}}var od$,QB6="https://ph.studio.decocms.com",rd$;var sd$=D(()=>{U8();o50();nC();Q9();R$();M91();nd$();od$=new F1;od$.get("/",($)=>{let Z={version:td$.version,theme:ii1(),...MF().logo&&{logo:MF().logo},...LN()&&{internalUrl:P_1()},...b0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!b0().firecrawlApiKey,auth:ey$(),posthog:YB6(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:_a()}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});rd$=od$});function Zc($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function n71($){return(Zc($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((X)=>X.charAt(0).toUpperCase()+X.slice(1)).join(" ")}function ed$($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(Zc($))}&sz=${Z}`}function ad$($,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 $m$($){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()?ad$(`${Y.trim().replace(/\s+/g," ")} \u2014 ${J}`,200):ad$(`How does ${X} really perform? ${J}`,200);return{title:G,description:W}}import{z as l0}from"zod";var Iv,GB6,JB6,WB6,KB6,Zm$;var Xm$=D(()=>{Iv=l0.enum(["good","bad","neutral"]),GB6=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:Iv.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 $})),JB6=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(GB6)),WB6={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()},KB6=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:Iv.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:Iv.optional()}),l0.object({template:l0.literal("stats"),stats:l0.array(l0.object({value:l0.coerce.string(),label:l0.coerce.string(),tone:Iv.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:Iv.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(JB6).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:Iv.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:Iv.optional()})).min(1)})]),Zm$=l0.object({...WB6,template:KB6})});function CT0($){let Z=[],X=[...$.sections].sort((Y,G)=>Y.position-G.position).map((Y)=>{let G=Zm$.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 t71=D(()=>{Xm$()});import{join as Qm$}from"path";async function FB6($){try{let Z=await fetch(`${NK({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(HB6)});if(!Z.ok)return null;let X=await Z.json(),{deck:Q}=CT0(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()||n71($),score:Q.meta.scores?.cover??J?.score?.value,verdict:Y?.annotation?.trim()||Y?.headline?.trim()||void 0}}catch{return null}}function jG($){return $.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;")}function NB6($,Z){let X=Zc($),Q=Z?.brand?.trim()||n71(X),Y=ed$(X,128),J=`${(b0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(X)}`,{title:W,description:K}=$m$({brand:Q,domain:X,score:Z?.score,verdict:Z?.verdict}),H=`${J}/og.png`,F=`${Q} commerce report by decocms`;return[`<title>${jG(W)}</title>`,`<meta name="description" content="${jG(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="${jG(W)}" />`,`<meta property="og:description" content="${jG(K)}" />`,`<meta property="og:url" content="${jG(J)}" />`,`<meta property="og:image" content="${jG(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${jG(F)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${jG(W)}" />`,`<meta name="twitter:description" content="${jG(K)}" />`,`<meta name="twitter:image" content="${jG(H)}" />`,`<meta name="twitter:image:alt" content="${jG(F)}" />`,`<link rel="canonical" href="${jG(J)}" />`,`<link rel="icon" href="${jG(Y)}" sizes="any" />`].join(`
2887
2887
  `)}function UB6($,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}
2888
2888
  </head>`)}function Ym$($){let Z=new F1;return Z.get("/:domain/og.png",async(X)=>{let Q=Zc(X.req.param("domain")),Y=async()=>{let G=$?Bun.file(Qm$($,"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(`${NK({})}/api/v2/public/diagnostics/${encodeURIComponent(Q)}/og.png`,{signal:AbortSignal.timeout(BB6)}),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=$?Qm$($,"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 FB6(Zc(Q)),K=NB6(Q,W);return X.html(UB6(J,K),200,{"Cache-Control":"public, max-age=0, s-maxage=300"})}catch{return X.html(J)}}),Z}var HB6=2500,BB6=1e4;var Gm$=D(()=>{U8();t71();EE();R$()});function Ia($,Z){return fetch(`${NK({})}${$}`,Z)}async function OB6($,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 Ia(`/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}=CT0(J);return{status:W.slides.length?"ready":"empty",deck:W,scanned_at:J.scanned_at,drops:K}}var DB6,aN,Jm$=async($,Z)=>{if(!$.get("reportUser"))return $.json({error:"Authentication required"},401);await Z();return},Wm$;var Km$=D(()=>{U8();iY();EE();t71();DB6=new Set(["complete","errored","terminated","unknown"]),aN=new F1;aN.use("*",async($,Z)=>{let X=await a$.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});aN.use("/link-token/*",Jm$);aN.use("/suggest",Jm$);aN.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 OB6(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)}});aN.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 Ia("/api/v2/diagnostics/run",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${wE({})}`},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)}});aN.get("/status",async($)=>{let Z=$.req.query("id");if(!Z)return $.json({error:"id is required"},400);try{let X=await Ia(`/api/v2/diagnostics/status?id=${encodeURIComponent(Z)}`,{headers:{Authorization:`Bearer ${wE({})}`}});if(!X.ok)return $.json({error:`status HTTP ${X.status}`},502);let Y=(await X.json()).status??"unknown",G={done:DB6.has(Y),status:Y};return $.json(G)}catch{return $.json({error:"status failed"},502)}});aN.get("/link-token/:id",async($)=>{let Z=$.req.param("id");try{let X=await Ia(`/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)}});aN.get("/suggest",async($)=>{let Z=($.req.query("q")??"").trim().slice(0,64);if(Z.length<2)return $.json({suggestions:[]});try{let X=await Ia(`/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:[]})}});Wm$=aN});import{createHmac as LB6,timingSafeEqual as wB6}from"crypto";function Fm$($,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)>EB6)return!1;let W=LB6("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&&wB6(K,F)})}function Nm$($){let Z;try{Z=JSON.parse($)}catch{return null}let X=cJ(Z),Q=cJ(cJ(X?.data)?.object);if(!X||typeof X.type!=="string"||!Q)return null;return{id:kH(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 Um$($){switch($){case"active":case"trialing":return"active";case"past_due":return"past_due";default:return"canceled"}}function kH($){return typeof $==="string"?$:void 0}function cJ($){return typeof $==="object"&&$!==null?$:void 0}function _T0($){return typeof $==="number"?new Date($*1000):null}function s71($){return kH($)??kH(cJ($)?.id)}function jB6($){return s71($.subscription)??kH(cJ(cJ($.parent)?.subscription_details)?.subscription)}function zB6($){let Z=_T0($.current_period_end);if(Z)return Z;let X=cJ($.items)?.data;if(!Array.isArray(X))return null;let Q=0;for(let Y of X){let G=cJ(Y)?.current_period_end;if(typeof G==="number"&&G>Q)Q=G}return Q>0?new Date(Q*1000):null}function o71($,Z){let X=_T0($.created);return!!X&&!!Z.lastStripeEventAt&&X<Z.lastStripeEventAt}function r71($,Z){let X=_T0($.created);if(!X)return;return Z.lastStripeEventAt&&Z.lastStripeEventAt>X?void 0:X}async function PB6($,Z){let X=Z.data.object;switch(Z.type){case"checkout.session.completed":case"checkout.session.async_payment_succeeded":{let Q=kH(cJ(X.metadata)?.orgId);if(!Q)return{handled:!1,reason:"no orgId"};if(kH(cJ(X.metadata)?.kind)==="topup"){if(X.mode!=="payment")return{handled:!1,reason:"topup with wrong mode"};if(kH(X.payment_status)!=="paid")return{handled:!1,reason:"payment not confirmed"};let J=kH(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(cJ(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:cJ(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(kH(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=s71(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(o71(Z,Y))return{handled:!1,reason:"stale event"};return await $.updateStripeState(Q,{stripeCustomerId:s71(X.customer),stripeSubscriptionId:G,status:"active",lastStripeEventAt:r71(Z,Y)}),{handled:!0,organizationId:Q}}case"customer.subscription.updated":case"customer.subscription.deleted":{let Q=kH(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&&o71(Z,Y))return{handled:!1,reason:"stale event"};let J=G?"canceled":Um$(X.status);return await $.updateStripeState(Y.organizationId,{status:J,currentPeriodEnd:zB6(X),...G&&{stripeSubscriptionId:null},lastStripeEventAt:r71(Z,Y)}),{handled:!0,organizationId:Y.organizationId}}case"invoice.paid":{let Q=jB6(X);if(!Q)return{handled:!1,reason:"no sub id"};let Y=await $.getBillingByStripeSubscriptionId(Q);if(!Y)return{handled:!1,reason:"unknown subscription"};if(o71(Z,Y))return{handled:!1,reason:"stale event"};return await $.updateStripeState(Y.organizationId,{status:"active",currentPeriodEnd:_T0(X.period_end),lastStripeEventAt:r71(Z,Y)}),{handled:!0,organizationId:Y.organizationId}}default:return{handled:!1,reason:`unhandled event ${Z.type}`}}}function AB6($,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:Um$(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 Hm$($,Z){let X=AB6($,Z);if(!X)return;cY({event:X.name,organizationId:X.organizationId,...$.id?{uuid:en1(`stripe:${$.id}:${X.name}`)}:{},...$.created?{timestamp:new Date($.created*1000)}:{},properties:X.properties})}async function Bm$($){let Z=new WK(r8().db),X=await PB6(Z,$);if(!(X.handled&&X.topUp))Hm$($,X);if(X.handled&&X.topUp)await Cj$({organizationId:X.organizationId,amountCents:X.topUp.creditCents,referenceId:X.topUp.referenceId}),Hm$($,X);if(!X.handled&&X.orphanSubscriptionId)try{await M0$(X.orphanSubscriptionId),console.error("stripe webhook: canceled orphan subscription",{subscriptionId:X.orphanSubscriptionId,eventId:$.id})}catch(Q){if(!(Q instanceof pY&&(Q.status===400||Q.status===404)))throw Q}return X}var EB6=300;var Om$=D(()=>{nG();S4();k50();kE();K11()});var TB6=1048576,a71;var Dm$=D(()=>{U8();AH();R$();Om$();a71=new F1;a71.post("/webhook",o5({maxSize:TB6,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(!Fm$(X,$.req.header("stripe-signature"),Z))return $.json({error:"invalid signature"},400);let Y=Nm$(X);if(!Y)return $.json({error:"invalid payload"},400);let G=await Bm$(Y);return console.log("stripe webhook",{eventId:Y.id,type:Y.type,livemode:Y.livemode,...G}),$.json({received:!0})})});import{timingSafeEqual as RB6}from"crypto";function qB6($,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 RB6(Buffer.from(Y),Buffer.from(Q))}var IB6=5242880,e71;var Lm$=D(()=>{U8();AH();t3();e71=new F1;e71.post("/webhook",o5({maxSize:IB6,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(!qB6(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 sn0())?.markTenantPoolsDirty(G,Y)??[];return $.json({ok:!0,pools:W})})});function wm$($,Z){if(Z.startsWith("text/html")||Z.startsWith("image/svg"))$.set("Content-Security-Policy","sandbox allow-scripts allow-modals allow-same-origin")}var Em$,MB6,kB6,jm$;var zm$=D(()=>{U8();q3();Pg();Uy();Em$=new F1,MB6=["range","if-none-match","if-modified-since"],kB6=["content-type","content-length","content-range","accept-ranges","etag","last-modified"];Em$.get("/:org/files/*",async($)=>{let Z=$.get("studioContext"),X=Z.organization?.id;if(!Z.auth?.user?.id){if(ku($))return $.redirect(`/login?next=${encodeURIComponent($.req.path)}`,302);throw new Z$(401,{message:"Authentication required"})}if(!X)throw new Z$(401,{message:"Organization context required"});let Q=$.req.path.replace(/^.*\/files\//,"");if(!Q)throw new Z$(400,{message:"Missing file key"});let Y=await Pt(Q,Z);if(!Y)throw new Z$(503,{message:"Object storage not configured"});if(Y.startsWith("data:")&&sG()){let K=Y.match(/^data:([^;]+);base64,(.+)$/s);if(!K)throw new Z$(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 wm$(U,H),new Response(N,{status:200,headers:U})}let G=new Headers;for(let K of MB6){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 Z$(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 Z$(502,{message:"Upstream storage error"});let W=new Headers;for(let K of kB6){let H=J.headers.get(K);if(H)W.set(K,H)}return W.set("Cache-Control","private, max-age=86400"),wm$(W,W.get("content-type")??""),new Response(J.body,{status:J.status,headers:W})});jm$=Em$});var qa=_((qv)=>{var VB6=qv&&qv.__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]}),SB6=qv&&qv.__exportStar||function($,Z){for(var X in $)if(X!=="default"&&!Object.prototype.hasOwnProperty.call(Z,X))VB6(Z,$,X)};Object.defineProperty(qv,"__esModule",{value:!0});SB6(qY(),qv)});var Tm$=_((Pm$)=>{Object.defineProperty(Pm$,"__esModule",{value:!0});Pm$.version=void 0;Pm$.version="3.4.0"});var qm$=_((VH)=>{var CB6=VH&&VH.__importDefault||function($){return $&&$.__esModule?$:{default:$}};Object.defineProperty(VH,"__esModule",{value:!0});VH.NodeTransport=VH.VERSION=void 0;VH.nodeResolveHost=yB6;var a6=qa(),_B6=P0("net"),$X1=P0("tls"),vB6=P0("path"),Rm$=P0("fs"),fB6=CB6(P0("dns")),bB6=Tm$();VH.VERSION=bB6.version;var xB6="nats.js";class Im${socket;version;lang;yields=[];signal=(0,a6.deferred)();closedNotification=(0,a6.deferred)();options;connected=!1;tlsName="";done=!1;closeError;constructor(){this.lang=xB6,this.version=VH.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,a6.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 a6.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 a6.errors.ConnectionError("error connecting - node provided an undefined error");let{code:J}=G,W=J==="ECONNREFUSED"?new a6.errors.ConnectionError("connection refused",{cause:G}):G;throw this.socket?.destroy(),W}}dial($){let Z=(0,a6.deferred)(),X,Q=(0,_B6.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,a6.deferred)(),Z;return this.socket.on("data",(X)=>{this.yields.push(X);let Q=a6.DataBuffer.concat(...this.yields),Y=(0,a6.extractProtocolMessage)(Q);if(Y!=="")try{let G=a6.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,a6.deferred)();try{if($=(0,vB6.resolve)($),!(0,Rm$.existsSync)($))Z.reject(Error(`${$} doesn't exist`));(0,Rm$.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,a6.extend)(X,this.options.tls,Y)}catch(Y){return Promise.reject(new a6.errors.ConnectionError(Y.message,{cause:Y}))}let Q=(0,a6.deferred)();try{let Y=(0,$X1.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 a6.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,a6.extend)(Z,this.options.tls,Q)}catch(Q){return Promise.reject(new a6.errors.ConnectionError(Q.message,{cause:Q}))}let X=(0,a6.deferred)();try{let Q=(0,$X1.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 a6.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,a6.render)($[Z])}`);yield $[Z]}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,a6.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 $X1.TLSSocket}_send($){if(this.isClosed||this.socket===void 0)return Promise.resolve();if(this.options.debug)console.info(`< ${(0,a6.render)($)}`);let Z=(0,a6.deferred)();try{this.socket.write($,(X)=>{if(X){if(this.options.debug)console.error(`!!! ${(0,a6.render)($)}: ${X}`);return Z.reject(X)}return Z.resolve()})}catch(X){if(this.options.debug)console.error(`!!! ${(0,a6.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}}VH.NodeTransport=Im$;function yB6($){let Z=(0,a6.deferred)();return fB6.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 Cm$=_((Sm$)=>{Object.defineProperty(Sm$,"__esModule",{value:!0});Sm$.connect=gB6;var Mm$=qm$(),km$=qa(),Vm$=qa();function gB6($={}){if((0,Vm$.hasWsProtocol)($))return Promise.reject(Vm$.errors.InvalidArgumentError.format("servers","node client doesn't support websockets, use the 'wsconnect' function instead"));return(0,km$.setTransportFactory)({factory:()=>{return new Mm$.NodeTransport},dnsResolveFn:Mm$.nodeResolveHost}),km$.NatsConnectionImpl.connect($)}});var _m$=_((eN)=>{var uB6=eN&&eN.__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]}),cB6=eN&&eN.__exportStar||function($,Z){for(var X in $)if(X!=="default"&&!Object.prototype.hasOwnProperty.call(Z,X))uB6(Z,$,X)};Object.defineProperty(eN,"__esModule",{value:!0});eN.connect=void 0;var lB6=Cm$();Object.defineProperty(eN,"connect",{enumerable:!0,get:function(){return lB6.connect}});cB6(qa(),eN)});function xm$($){let Z=$?.connectFn??pB6,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 B of U.status())if(B.type==="disconnect")console.log("[NatsProvider] Disconnected"),J=!0;else if(B.type==="reconnect")console.log("[NatsProvider] Reconnected, re-firing ready callbacks"),J=!1,Q=null,H()})().catch(()=>{})}async function N(U,B){let O=0;while(!G)try{X=await Z({servers:U,timeout:iB6,reconnect:!0,maxReconnectAttempts:-1,...B?{authenticator:B}:{}}),console.log(`[NatsProvider] Connected to ${X.getServer()} after ${O} attempt(s)`),Q=null,J=!1,F(X),H();return}catch{O++;let L=X7(mB6,dB6,O-1,2,0.5);await w$(L)}}return{init(U,B){if(Y)return;Y=!0,G=!1;let O=B?.creds?vm$.credsAuthenticator(new TextEncoder().encode(B.creds)):void 0;N(U,O).catch(()=>{})},isConnected(){return K()},getConnection(){return K()?X:null},getJetStream(){if(!K())return null;if(!Q)Q=bm$.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 pB6($){return fm$.connect($)}var vm$,fm$,bm$,dB6=100,mB6=3000,iB6=3000;var ym$=D(()=>{W4();vm$=V(qc(),1),fm$=V(_m$(),1),bm$=V(AL(),1)});function ZX1($,Z){return`${$}.${Z}`}class XX1{cache;constructor($){this.cache=Hu({ttlMs:$?.ttlMs??nB6,maxSize:$?.maxSize??tB6})}async get($,Z){return this.cache.get(ZX1($,Z))??null}async set($,Z,X){this.cache.set(ZX1($,Z),X)}async invalidate($,Z){this.cache.delete(ZX1($,Z))}teardown(){this.cache.clear()}}var nB6=600000,tB6=5000;var gm$=()=>{};function vT0($,Z){return`${$}:${Z}`}function QX1($){let Z=Hu({ttlMs:$?.ttlMs??oB6,maxSize:$?.maxSize??rB6}),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(hm$,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(vT0(K,H))},set(K,H,F){Z.set(vT0(K,H),F)},invalidate(K,H){Z.delete(vT0(K,H)),W(K,H)},start(){if(J)return;let K=X?.();if(!K)return;J=K.subscribe(hm$),(async()=>{for await(let H of J)try{let F=JSON.parse(G.decode(H.data));if(F.originId===Q)continue;Z.delete(vT0(F.organizationId,F.keyId))}catch{}})().catch(console.error)},teardown(){J?.unsubscribe(),J=null,Z.clear()}}}var hm$="studio.ai-provider-keys.invalidate",oB6=30000,rB6=5000;var um$=()=>{};class YX1{options;subscription=null;onCancel=null;encoder=new TextEncoder;originId=crypto.randomUUID();constructor($){this.options=$}async start($){if($)this.onCancel=$;if(this.subscription)return;if(!this.onCancel)return;let Z=this.options.getConnection();if(!Z)return;let X=new TextDecoder,Q=Z.subscribe("studio.decopilot.cancel");this.subscription=Q,(async()=>{for await(let Y of Q)try{let G=JSON.parse(X.decode(Y.data));if(G.originId===this.originId)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}));Z.publish("studio.decopilot.cancel",X)}catch(Z){console.warn("[NatsCancelBroadcast] Publish failed (non-critical):",Z)}}async stop(){this.subscription?.unsubscribe(),this.subscription=null,this.onCancel=null}}var cm$=($)=>{let Z;return()=>Z??=$()},GX1,JX1;var lm$=D(()=>{B6();GX1=cm$(()=>W$.createHistogram("decopilot.stream.encode_ms",{description:"Per-chunk JSON.stringify+encode time for decopilot stream",unit:"ms"})),JX1=cm$(()=>W$.createCounter("decopilot.stream.published_chunks",{description:"Logical decopilot stream chunks published to JetStream",unit:"{chunks}"}))});function QO6($=im$){return{name:oK,subjects:[`${Es0}.>`],storage:PW.StorageType.File,max_age:eB6,max_bytes:ZO6,max_msgs_per_subject:XO6,discard:PW.DiscardPolicy.Old,retention:PW.RetentionPolicy.Limits,duplicate_window:$O6,num_replicas:$}}class pm${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 dm$($){let Z=mm$.headers();for(let[X,Q]of Object.entries($))Z.set(X,Q);return Z}function WO6($,Z){let X=0;return{publish(Q,Y,G,J){Q.publish(Y,G,J?{headers:J}:void 0).catch((W)=>{if(X++,aB6().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 KO6($,Z){return $.info?.cluster?Z:1}function HO6($){if(!($ instanceof Error))return!1;if(/non-clustered/i.test($.message))return!0;return/replicas?\b/i.test($.message)&&/not supported|can ?not|exceed|insufficient|greater than/i.test($.message)}class WX1{options;js=null;jsm=null;constructor($){this.options=$}async init(){let $=this.options.getConnection();if(!$){console.log("[Decopilot] StreamBuffer.init skipped: NATS not connected yet");return}let Z=async(Q,Y)=>{let G=QO6(Y);try{await Q.streams.info(oK),await Q.streams.update(oK,G)}catch(J){if(J instanceof Error&&J.message.includes("stream not found"))await Q.streams.add(G),await Q.streams.update(oK,G);else if(J instanceof Error&&/can ?not change.*storage|storage type/i.test(J.message))await Q.streams.delete(oK),await Q.streams.add(G);else throw J}},X=await g6(async()=>{let Q=this.options.getJetStreamManager?await this.options.getJetStreamManager():await PW.jetstreamManager($),Y=KO6($,im$);try{await Z(Q,Y)}catch(G){if(Y<=1||!HO6(G))throw G;console.warn(`[Decopilot] StreamBuffer: NATS rejected num_replicas=${Y} (${G.message}); falling back to an unreplicated stream`),await Z(Q,1)}return Q},{maxAttempts:5,minTimeout:250,maxTimeout:4000,jitter:0.5,isRetriable:_g});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=WO6(Z,Q),J=!1,W=()=>{if(J)return;J=!0;let H=wO$(Z);Y.publish(H.subject,H.data).catch(()=>{})};X.addEventListener("abort",W,{once:!0});let K=(H)=>{let F=performance.now(),N=zs0(H,{runId:Z}),U=performance.now()-F;GX1().record(U),JX1().add(1,{"org.id":Q??"unknown"}),JO6?.record(U,N.reduce((B,O)=>B+O.data.length,0));for(let B of N)G.publish(Y,B.subject,B.data,B.headers?dm$(B.headers):void 0)};return(async()=>{let H=$.getReader(),F=0,N=0,U;try{while(!0){let{done:B,value:O}=await H.read();if(B)break;if(K(O),N++,++F>=64)F=0,await new Promise((L)=>setImmediate(L))}}catch(B){U=B,console.warn(`[Decopilot] stream pump error for thread ${Z}:`,B?.message??B)}finally{if(H.releaseLock(),W(),GO6)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 publishSerialized($,Z){try{return await g6(()=>$.publish(Z.subject,Z.data,{...Z.headers?{headers:dm$(Z.headers)}:{},...Z.msgId?{msgID:Z.msgId}:{}}),{maxAttempts:6,minTimeout:250,maxTimeout:5000,jitter:0.5,isRetriable:_g}),!0}catch(X){return console.error(`[Decopilot] publish failed after retries subject=${Z.subject}`,X),!1}}async publishRawChunk($,Z,X){let Q=this.js;if(!Q)return!1;let Y=performance.now(),G=zs0(Z,{runId:$,dedup:X});GX1().record(performance.now()-Y),JX1().add(1);for(let J of G)if(!await this.publishSerialized(Q,J))return!1;return!0}async publishDone($,Z,X){let Q=this.js;if(!Q)return!1;let Y=LO$({runId:$,fenceToken:Z,finalSeq:X});return await this.publishSerialized(Q,Y)}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"?PW.DeliverPolicy.New:PW.DeliverPolicy.All,G=X?.closeOnDone??!1,J=OD($),W;try{W=await g6(async()=>{return(await Q.consumers.get(oK,{filter_subjects:J,deliver_policy:Y})).consume()},{maxAttempts:6,minTimeout:250,maxTimeout:5000,jitter:0.5,isRetriable:_g})}catch(L){return console.warn("[Decopilot] JetStream tail unavailable (non-critical):",L?.message??L),null}let F=Bw0({messages:async function*(){try{for await(let L of W)yield{subject:L.subject,data:L.data,headers:L.headers}}finally{W.stop()}}(),onCancel:()=>W.stop()}).pipeThrough(Hw0()).pipeThrough(Fw0()).getReader(),N=!1,U=()=>{if(N)return;N=!0;try{F.releaseLock()}catch{}},B=!1,O=()=>{if(B)return;B=!0,W.stop(),F.cancel().catch(()=>{}),U()};return Z?.addEventListener("abort",O,{once:!0}),new ReadableStream({async pull(L){for(;;){let{done:w,value:E}=await F.read();if(w){O(),L.close();return}let j=E;if(j.kind==="done"){if(G){O(),L.close();return}continue}L.enqueue(j.chunk);return}},cancel(){O()}})}purge($){if(!this.jsm)return;this.jsm.streams.purge(oK,{filter:OD($)}).catch(()=>{})}teardown(){this.js=null,this.jsm=null}}var PW,mm$,sB6=($)=>{let Z;return()=>Z??=$()},aB6,eB6=86400000000000,$O6=120000000000,ZO6=4294967296,im$,XO6=500000,YO6,GO6,JO6;var nm$=D(()=>{W4();Ps0();Ow0();Nw0();B6();lm$();PW=V(AL(),1),mm$=V(qc(),1),aB6=sB6(()=>W$.createCounter("decopilot.stream.publish_errors",{description:"Number of JetStream publish failures for decopilot stream chunks",unit:"{errors}"})),im$=Math.max(1,Number(process.env.DECOPILOT_STREAM_REPLICAS??3)||3);YO6=process.env.STREAM_ENCODE_TRACE==="1",GO6=process.env.DECOPILOT_STREAM_TRACE==="1";JO6=YO6?new pm$:null});function fT0($,Z,X,Q){if(!Q)return!1;return $.emit(Z,mW(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 tm$=D(()=>{_8()});class KX1{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 om$($,Z,X){let Q=Z.organizationId;if(!eQ(Z,(await _5($,Q)).review))return!1;if(!dC(X))return!1;if(await $.storage.taskBoard.hasHumanRejectedDone(Z.id,Q))return!1;let Y=await $.storage.organizationSettings.get(Q),G=PK(Y?.flags),J=await E5($,Q),W=await $.storage.taskBoard.update(Z.id,Q,NJ(J,G),Z.updatedBy);return await A6($,{taskBoardItemId:Z.id,action:"status_changed",actorId:null,data:{from:Z.status,to:G,reason:"pr_merged"}}),b$(Q,W),console.log(`[task-board-review-sweeper] ${Z.id}: linked PR already merged \u2014 moved to ${G}`),!0}var rm$=D(()=>{j6();NX();Eg();i5();cK();j5()});function LO6($){return $ instanceof sX}function wO6($,Z){return Z-$>=OO6}class HX1{taskBoard;contextFactory;billing;db;options;timer=null;running=!1;cursor=null;constructor($,Z,X,Q,Y={}){this.taskBoard=$;this.contextFactory=Z;this.billing=X;this.db=Q;this.options=Y}start(){if(this.timer)return;let $=this.options.intervalMs??FO6;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??UO6,X=this.options.itemIntervalMs??NO6,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()-ht0),go0);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()-DO6));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 bo0(this.taskBoard,Y,Q,await QN(this.db,Q)),await xo0(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!==X8)continue;let W=await this.contextFactory(Y,J.assignedBy??J.createdBy);if(!W)continue;await ON(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),LO6(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()+BO6),(await QN(this.db,Y)).progress).catch((W)=>console.error(`[task-board-review-sweeper] re-arming ${Q} failed`,W))}return Z}async returnToTodo($,Z,X){try{let Q=await QN(this.db,Z),Y=await this.taskBoard.getById($,Z);if(!Y||Y.status!=="in_progress")return;let G=await this.taskBoard.returnToTodoAfterFailure($,Z,Y.updatedBy,Q);if(!G)return;await this.taskBoard.recordActivity({taskBoardItemId:$,action:"status_changed",actorId:null,data:{from:"in_progress",to:"todo",reason:X}}).catch(()=>{}),b$(Z,G)}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(!wO6(gF(X,Z.reviewCycleStartedAt),Date.now()))return;await dK($,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;let Y=await QN(this.db,Z);if(!eQ(Q,Y.review))return!1;let G=Q.assigneeId===X8,J=await this.taskBoard.listPrs($,Z),W=await this.contextFactory(Z,Q.assignedBy??Q.createdBy);if(!W)return!1;if(J.length===0){if(G)await this.handOffReviewWithoutPr(W,Q);return!1}let K=await Promise.all(J.map(async(H)=>({...H,...await zg(Z,H)})));if(K.every((H)=>H.state===null))console.warn(`[task-board-review-sweeper] ${$}: no live PR state from GitHub (${K.length} PR(s)) \u2014 proceeding on unknown`);if(await om$(W,Q,K))return!0;if(await KD$(W,Q))return!0;if(await this.resolveConflictFromSweep(W,Q,K))return!0;if(!G)return!1;if(!Qr0(K))return!1;return await RL0(W,Q,{previewMatchesHead:Yr0(K)}),!0}async resolveConflictFromSweep($,Z,X){let Q=X.find((Y)=>Y.state!=="closed"&&Y.conflict===!0);if(!Q)return!1;return await WD($,Z.organizationId,Z,{pr:{number:Q.number,url:Q.url},conflict:!0}).catch((Y)=>{return console.error("[task-board-review-sweeper] conflict resolve failed",Y),!1})}dispose(){if(this.timer)clearInterval(this.timer),this.timer=null}}var FO6=60000,NO6=300000,UO6=50,BO6=60000,OO6=900000,DO6=120000;var sm$=D(()=>{i5();j6();oo0();BN();lt();cK();rm$();j5();XJ();ho0();YG();wt();jg()});import{readdir as EO6,rm as bT0}from"fs/promises";import{join as xT0}from"path";async function yT0($){let Z=new Date;Z.setUTCDate(Z.getUTCDate()-jO6),Z.setUTCHours(0,0,0,0);let X=0;try{let Q=await Mv($);for(let Y of Q)if(/^\d{4}$/.test(Y))X+=await am$($,Y,Z);else if(!Y.startsWith(".")){let G=xT0($,Y),J=await Mv(G);for(let K of J){if(!/^\d{4}$/.test(K))continue;X+=await am$(G,K,Z)}if((await Mv(G)).length===0)await bT0(G,{recursive:!0,force:!0})}}catch(Q){console.warn("monitoring retention cleanup failed:",Q)}return X}async function am$($,Z,X){let Q=0,Y=xT0($,Z),G=await Mv(Y);for(let W of G){if(!/^\d{2}$/.test(W))continue;let K=xT0(Y,W),H=await Mv(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 B=xT0(K,N);await bT0(B,{recursive:!0,force:!0}),Q++}}if((await Mv(K)).length===0)await bT0(K,{recursive:!0,force:!0})}if((await Mv(Y)).length===0)await bT0(Y,{recursive:!0,force:!0});return Q}async function Mv($){try{return(await EO6($)).filter((X)=>!X.startsWith("."))}catch{return[]}}var jO6=30;var FX1=()=>{};import{DBOS as NX1,SchedulerMode as zO6}from"@dbos-inc/dbos-sdk";async function AO6(){let $=[dJ(),kv(),vH()],Z=0;for(let X of $)try{Z+=await yT0(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 TO6($,Z){await NX1.runStep(()=>AO6(),{name:"monitoringRetention"})}function $i$(){if(em$)return;em$=!0;let $=NX1.registerWorkflow(TO6,{name:"monitoringRetentionWorkflow"});NX1.registerScheduled($,{name:"monitoringRetentionWorkflow",crontab:PO6,mode:zO6.ExactlyOncePerIntervalWhenActive})}var PO6="23 4 * * *",em$=!1;var Zi$=D(()=>{AY();FX1()});function Xi$($){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 DJ.create();Y.auth.user={id:X,role:Q.role},Y.organization={id:Q.orgId,slug:Q.orgSlug,name:Q.orgName};let G=await It($.db,Z,Q.role);return Y.boundAuth=F91({auth:Y.authInstance,headers:new Headers,role:Q.role,permissions:G,userId:X}),Y.access=new XE(X,void 0,Y.boundAuth,Q.role,"self"),QD(Y,{id:Q.orgId,slug:Q.orgSlug}),Y}}var Qi$=D(()=>{cB();YD()});function RO6(){return[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}]}function IO6(){return{services:RO6(),migrationsStatus:"pending",serverUrl:null,logs:[]}}function MO6(){for(let $ of qO6)$()}function Yi$($){let Z=[...UX1.logs,$];UX1={...UX1,logs:Z.length>500?Z.slice(-500):Z},MO6()}function BX1(){return kO6}var UX1,qO6,kO6=!1;var OX1=D(()=>{UX1=IO6(),qO6=new Set});import{EventEmitter as VO6}from"events";var DX1;var Gi$=D(()=>{OX1();DX1=new VO6;DX1.on("request",($)=>{Yi$($)})});function Ji$(){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 B=Xc(U.params.name),O=U.params.arguments||{},L=Object.keys(O).map((E)=>Xc(E)),w=L.length>0?L.slice(0,3).join(",")+(L.length>3?"\u2026":""):"";G=`${J5.tool}${B}${J5.dim}(${w})${J5.reset}`}else if(U.method)G=`${J5.dim}${Xc(U.method)}${J5.reset}`}}catch{}}let W=Xc(Y);if(Y.startsWith("/mcp/conn_")){let F=Y.split("/")[2]??"";W=`/mcp/${J5.mcp}${Xc(F.slice(0,12))}\u2026${J5.reset}`}else if(Y==="/mcp")W=`${J5.mcp}/mcp${J5.reset}`;else if(Y==="/mcp/registry")W=`${J5.mcp}/mcp/registry${J5.reset}`;let K=CO6(Q),H=J?"\u25C0":"\u2190";if(!BX1())console.log(`${J5.dim}${H}${J5.reset} ${K}${Q}${J5.reset} ${W}${G?` ${G}`:""}`);try{await Z()}finally{let F=Date.now()-X,N=$.res.status,U=SO6(N),B=F<1000?`${F}ms`:`${(F/1000).toFixed(1)}s`,O=J?"\u25B6":"\u2192";if(!BX1())console.log(`${J5.dim}${O}${J5.reset} ${K}${Q}${J5.reset} ${W}${G?` ${G}`:""} ${U}${N}${J5.reset} ${J5.duration}${B}${J5.reset}`);DX1.emit("request",{method:Q,path:Xc(Y),status:N,duration:F,timestamp:new Date})}}}var J5,SO6=($)=>{if($>=500)return J5.serverError;if($>=400)return J5.clientError;if($>=300)return J5.redirect;return J5.ok},CO6=($)=>{return J5[$]||J5.reset},Xc=($)=>{return $.replace(/\r/g,"").replace(/\n/g,"").replace(/\x1b\[[0-9;]*m/g,"").replace(/[\x00-\x1f\x7f-\x9f]/g,"")};var Wi$=D(()=>{OX1();Gi$();J5={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 Ni$}from"crypto";import{mkdir as _O6,readdir as vO6,rm as Ki$,stat as Ui$}from"fs/promises";import{join as wX1,relative as fO6}from"path";import{z as P$}from"zod";function Oi$($){let Z=$.replace(/[^a-zA-Z0-9_-]/g,"_");return wX1(bO6,Z)}function Di$($){return $.replace(/^\/+/,"").replace(/\.\./g,"")}function LX1($,Z){let X=Oi$($),Q=Di$(Z);return wX1(X,Q)}function xO6($,Z,X,Q){let Y=b0().encryptionKey||"dev-secret",G=`${$}:${Z}:${X}:${Q}`;return Ni$("sha256",Y).update(G).digest("hex")}function Fi$($,Z,X,Q,Y){let G=Math.floor(Date.now()/1000)+Q,J=xO6(Z,X,G,Y),W=new URL(`/api/dev-assets/${Z}/${Di$(X)}`,$);return W.searchParams.set("expires",G.toString()),W.searchParams.set("signature",J),W.searchParams.set("method",Y),W.toString()}function Li$($,Z,X){let Q=`${$}:${Z.getTime()}:${X}`;return`"${Ni$("md5","etag").update(Q).digest("hex")}"`}async function wi$($,Z,X,Q,Y){try{let G=await vO6($,{withFileTypes:!0});for(let J of G){let W=wX1($,J.name),H=fO6(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 wi$(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 Ui$(W);Y.objects.push({key:H,size:F.size,lastModified:F.mtime.toISOString(),etag:Li$(W,F.mtime,F.size)})}catch{}}}}catch{}}function Ei$($,Z){let Q=o($).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=Oi$(Q);await _O6(F,{recursive:!0});let N={objects:[],commonPrefixes:new Set};await wi$(F,F,J,K,N),N.objects.sort((w,E)=>w.key.localeCompare(E.key));let U=0;if(H){if(U=N.objects.findIndex((w)=>w.key>H),U===-1)U=N.objects.length}let B=N.objects.slice(U,U+W),O=U+W<N.objects.length,L=O?B[B.length-1]?.key:void 0;return{objects:B,isTruncated:O,nextContinuationToken:L,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=LX1(Q,G.key),W=await Ui$(J);return{contentType:r91(G.key),contentLength:W.size,lastModified:W.mtime.toISOString(),etag:Li$(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??Hi$;return{url:Fi$(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??Hi$;return{url:Fi$(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=LX1(Q,G.key);try{return await Ki$(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=LX1(Q,K);try{await Ki$(H),J.push(K)}catch(F){W.push({key:K,message:F instanceof Error?F.message:"Unknown error"})}})),{deleted:J,errors:W}}}]}async function EX1($,Z,X){let Q=Ei$(Z,X),Y=new sW({name:"dev-assets-mcp",version:"1.0.0"},{capabilities:{tools:{}},jsonSchemaValidator:N5});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 JQ({enableJsonResponse:$.headers.get("Accept")?.includes("application/json")??!1});return await Y.connect(G),IJ(Y,G,$,"mcp:dev-assets")}async function ji$($,Z,X,Q){let G=Ei$(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 bO6="./data/assets",Hi$=3600,Bi$,zi$;var Pi$=D(()=>{R$();hg();U8();od();N_();lX();vA0();Bi$=new F1;Bi$.all("/",async($)=>{let Z=$.get("studioContext"),X=new URL($.req.url),Q=`${X.protocol}//${X.host}`;return EX1($.req.raw,Z,Q)});zi$=Bi$});var Ai$={};J4(Ai$,{mountDevRoutes:()=>yO6});function yO6($,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 EX1(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 ji$(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",zi$);let X=new F1;X.use("*",jW({mountPath:"/api/dev-assets"})),X.route("/",_A0({orgFromPath:!1})),$.route("/api/dev-assets",X)}var Ti$=D(()=>{U8();d91();vA0();Pi$()});import{sql as gO6}from"kysely";import{randomUUID as Ri$}from"crypto";import{z as hO6}from"zod";async function cO6($){let Z=new Date().toISOString(),X=Ri$(),Q=C8.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:Ri$(),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 gO6`SELECT
2889
2889
  pg_notify('studio_events', ${X}),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "decocms",
3
- "version": "4.311.0",
3
+ "version": "4.311.1",
4
4
  "description": "Deco CMS — Self-hostable MCP Gateway for managing AI connections and tools",
5
5
  "author": "Deco team",
6
6
  "repository": {
@@ -1 +0,0 @@
1
- import"./index-BuyUDL-f.js";import{T as A,f as C}from"./task-board-C5vC-P5k.js";import{e as O}from"./backoff-CrEUbyZT.js";const k={STEP:"decopilot.step",FINISH:"decopilot.finish",THREAD_STATUS:"decopilot.thread.status"},_=Object.values(k),m="notification.created",g=3e4,I=1e3;function M(o){const{buildUrl:u,eventTypes:d,name:i,crossTab:f=!1}=o,a=new Map,c=f&&typeof BroadcastChannel<"u"&&typeof navigator<"u"&&typeof navigator.locks<"u";if(c&&!i)throw new Error("createSSESubscription: `name` is required when crossTab");function l(e,t){e.bootDone=!0;for(const r of e.handlers)try{r(t)}catch{}}function p(e){for(const t of e.reconnectHandlers)try{t()}catch{}}function h(e){const t=new EventSource(u(e.key));e.es=t,t.onopen=()=>{e.reconnectAttempt=0,e.bootDone&&(p(e),e.channel?.postMessage({kind:"reconnect"})),e.bootDone=!0},t.onerror=()=>{e.es===t&&t.readyState===EventSource.CLOSED&&L(e)};const r=n=>{e.channel?.postMessage({kind:"event",type:n.type,data:n.data}),l(e,n)};for(const n of d)t.addEventListener(n,r)}function L(e){if(e.refCount<=0||e.reconnectTimer)return;const t=O(g,I,e.reconnectAttempt,2,0);e.reconnectAttempt++,e.reconnectTimer=setTimeout(()=>{e.reconnectTimer=null,!(e.refCount<=0||!e.isLeader)&&(e.es?.close(),h(e))},t)}function S(e){if(e.refCount<=0){e.releaseLeadership?.(),e.releaseLeadership=null;return}e.isLeader=!0,h(e)}function D(e){if(!c){S(e);return}e.lockAbort=new AbortController,navigator.locks.request(`sse-leader:${i}:${e.key}`,{signal:e.lockAbort.signal},()=>new Promise(t=>{e.releaseLeadership=t,S(e)})).catch(()=>{})}function y(e,t){t.kind==="event"?l(e,new MessageEvent(t.type,{data:t.data})):t.kind==="reconnect"&&p(e)}function v(e){const t=a.get(e);if(t)return t;const r={key:e,refCount:0,handlers:new Set,reconnectHandlers:new Set,bootDone:!1,es:null,isLeader:!1,reconnectAttempt:0,reconnectTimer:null,channel:null,lockAbort:null,releaseLeadership:null};if(a.set(e,r),c){const n=new BroadcastChannel(`sse:${i}:${e}`);n.onmessage=s=>y(r,s.data),r.channel=n}return r}function N(e){e.reconnectTimer&&(clearTimeout(e.reconnectTimer),e.reconnectTimer=null),e.es?.close(),e.es=null,e.releaseLeadership?.(),e.releaseLeadership=null,e.lockAbort?.abort(),e.lockAbort=null,e.channel?.close(),e.channel=null,a.delete(e.key)}return{subscribe(e,t,r){const n=!a.has(e),s=v(e);s.refCount++,s.handlers.add(t),r&&s.reconnectHandlers.add(r),n&&D(s);let b=!1;return()=>{b||(b=!0,s.handlers.delete(t),r&&s.reconnectHandlers.delete(r),s.refCount--,s.refCount<=0&&N(s))}}}}function E(o,u){const d=new Set(u);return{subscribe(i,f,a){const c=l=>{d.has(l.type)&&f(l)};return o.subscribe(i,c,a)}}}const w=[..._,A,C,m],H=w,P=w,T=M({name:"watch",buildUrl:o=>`/api/${encodeURIComponent(o)}/watch?types=${H.join(",")}`,eventTypes:P,crossTab:!0}),V=E(T,[..._]),U=E(T,[A,C]),Y=E(T,[m]),$=V;export{k as D,$ as d,Y as n,U as t};
@@ -1 +0,0 @@
1
- import{c as B,b as L,j as r}from"./index-BuyUDL-f.js";import{I as A}from"./input-Cb9iSFEg.js";import{L as F}from"./label-BkQvhQIM.js";import{S as R,a as z,b as J,c as O,d as V}from"./select-BOHmdb8C.js";import{T as D}from"./textarea-CliLWMBV.js";import{e as M,w as $,j as q,y as G,J as H}from"./index-DmOnt-rS.js";import{s as P}from"./primitives-B9LqLGWx.js";import{u as Q}from"./use-autosave-2HBwk4wx.js";import"./Check-BejV2053.js";import"./ChevronDown-D5RFRhzf.js";import"./ChevronUp-D4IrNOCC.js";import"./ArrowUp-B_j1WdZ5.js";import"./chat-context-CY2SGM0h.js";import"./use-panel-navigate-Dl8TU9Fq.js";import"./use-destination-route-B_24Whcs.js";import"./thread-route-bh7ZH4NA.js";import"./dialog-hItRl0PM.js";import"./Copy01-Cr3MDnu-.js";import"./Download01-Cu0GEQBo.js";import"./constants-dLUUoWH7.js";import"./session-runtime-C-KTDVeQ.js";import"./slugify-CEUa2lfQ.js";import"./hooks-CkIombAK.js";import"./use-mcp-client-BISqHyTj.js";import"./auth-CYohcmQZ.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./decopilot-sse-pool-MEiWGftu.js";import"./task-board-C5vC-P5k.js";import"./use-is-desktop-app-BNujXJc_.js";import"./use-virtual-mcp-B6D2i_ny.js";import"./use-ai-providers-DwlhpRes.js";import"./location-oTTXFrSF.js";import"./use-decopilot-events-Cv4HgIi3.js";import"./use-organization-settings-9gyyAmDC.js";import"./automation-runs-8GLe55cG.js";import"./agent-icon-BGP9U6d6.js";import"./AlertCircle-C0recpiM.js";import"./UserSquare-BO9lFHlw.js";import"./Tool01-BPHywJEb.js";import"./ArrowLeft-B2Z12k58.js";import"./Tool02-D4AQe9SD.js";import"./XCircle-Dgz569F-.js";import"./TrendUp01-C29DtCbZ.js";import"./ZapSquare-C3xSe5yB.js";import"./ZoomOut-B8EEsxrO.js";import"./Users03-K46FZ0yi.js";import"./CheckCircle-CFTFD5Ed.js";import"./ChevronRight-DV9U9V1C.js";import"./ChevronSelectorVertical-CsU1yTcH.js";import"./DotsVertical-DqsE4vgP.js";import"./Stars02-Dco9Mo0t.js";import"./CreditCard01-D_XNSGw3.js";import"./Settings02-By8pQbcj.js";import"./Eye-DhUWQAZM.js";import"./FilterLines-DahI-t1v.js";import"./Share07-dg97NqNd.js";import"./GitBranch01-B7UokEiw.js";import"./Globe01-8plmq2TA.js";import"./Globe04-DlFdM3LP.js";import"./SwitchHorizontal01-BfZwTC3u.js";import"./HardDrive-57Sc_B7u.js";import"./Image01-HOTAu7DE.js";import"./Key01-DLcgmMi7.js";import"./LinkExternal01-C5L2pr2x.js";import"./LockUnlocked01-BleHTt-O.js";import"./LogOut01-CfPLGrdh.js";import"./Monitor01-CGzGmiSx.js";import"./Sun-CZ4AN-2E.js";import"./Package-WyJYCcJV.js";import"./Palette-ivE2ilgf.js";import"./Play-CsI3qh5P.js";import"./Plus-BNnPvfG8.js";import"./SearchLg-Ccchnc4p.js";import"./SearchMd-BJmbTOt_.js";import"./Shield01-CxgaYLbk.js";import"./Stars01-C5bXx9wk.js";import"./Trash01-Bkd5f3e4.js";import"./Upload01-CPHyTAd0.js";import"./User01-rDgL3Cs0.js";import"./Users01-CGiHQkW6.js";import"./XClose-DRl5snCd.js";import"./Zap-CqYQM_jt.js";import"./useInfiniteQuery-D5GGzERO.js";import"./use-infinite-scroll-CY3oO4vc.js";import"./use-connection-bZgPnZOr.js";import"./table-D_CXPJQu.js";import"./empty-state-DhZFNn9P.js";import"./use-members-CGZd946r.js";import"./use-org-auth-client-DK9IhaDS.js";import"./use-automations-CmgiIky3.js";import"./useSuspenseInfiniteQuery-Dq_znrqe.js";import"./avatar-BuHFImQ0.js";import"./format-time-BnbuEtat.js";import"./differenceInSeconds-NQ4PDo0z.js";import"./use-copy-Cq30lUsM.js";import"./markdown-0fiCCcV1.js";import"./monaco-editor-C-Q5HTYn.js";import"./spinner-BQad3GmW.js";import"./editor-C4Sw9hGx.js";import"./types-nGmsoTZv.js";import"./shell-layout-TUjOtQhE.js";import"./required-auth-layout-DGJe8Mlj.js";import"./use-org-sso-BlnuVfy8.js";import"./integration-icon-DDXwHQKF.js";import"./use-navigate-to-agent-DDo0Ri7O.js";import"./chart-Z15NQIs8.js";import"./index-BRM630BW.js";import"./form-BTWHqvdt.js";import"./file-type-icon-zHhC_odk.js";import"./drawer-DuLBqwDu.js";import"./collection-search-BJAxACkb.js";import"./tabs-DZiIU_cf.js";import"./toggle-group-Dwtxjfc4.js";import"./super-agent-icon-CPbKPIBh.js";import"./self-tool-result-xX9-YD6Y.js";import"./alert-dialog-Csnli2CD.js";import"./extract-connection-data-DPiIwaYg.js";import"./metadata-dUsYcpuu.js";import"./provision-repo-scoped-github-connection-CMPWtdMv.js";import"./use-debounced-value-DqFNyMpP.js";import"./authenticate-and-persist-oauth-Ds-Znneo.js";import"./mcp-oauth-DBjycbCF.js";import"./track-9YygJVzx.js";import"./popover-CzFHMi1-.js";import"./toolbar-3fMfxNen.js";import"./github-repo-picker-olEJzk4H.js";import"./use-mcp-tools-Dtv8_qE-.js";import"./agent-capabilities-B52k7xCe.js";import"./connection-card-IfNei3OO.js";import"./use-registry-connections-C6Vm545i.js";import"./retry-CErkP7V6.js";import"./connection-slug-CITJ0kGN.js";import"./connection-form-helpers-C174Udb3.js";import"./collection-tabs-Lzes2Hm5.js";import"./badge-CO8RwMr5.js";import"./select-model-CPmeNaNO.js";import"./checkbox-oWGgw210.js";import"./ai-providers-logos-DD3qZ33J.js";import"./folder-icon-CnUII1sC.js";import"./dropdown-menu-LWFsRDES.js";import"./question-004-sINsf4GQ.js";import"./use-status-sounds-CZScO2ta.js";import"./skill-preview-B4NfqEEV.js";import"./use-file-configs-EoWVXyV1.js";import"./pt-BR-CLy76QW2.js";import"./use-debounced-autosave-DvptVode.js";import"./scroll-area-Djm3-sbg.js";import"./search-input-qkdY6KsE.js";import"./use-mcp-auth-status-DObWVXL7.js";import"./switch-dQhgVuCH.js";import"./use-secrets-CebeVclF.js";import"./AreaChart-XSelV74e.js";import"./config-DRDl0YmS.js";import"./command-Bp1UIw04.js";import"./index-C_7lMH7J.js";import"./get-initials-D-f_fDFw.js";import"./breadcrumb-B40XpKTU.js";import"./use-tags-Bo6st0jt.js";import"./automation-list-row-ByC4kR2D.js";import"./site-error--i37Vnuw.js";import"./use-org-repo-syncs-DDOe1mEV.js";import"./cards-vcKmBwGO.js";const U={authors:[{key:"name",labelKey:"sandbox.recordEditor.fieldName",widget:"text"},{key:"type",labelKey:"sandbox.recordEditor.fieldType",widget:"select",options:[{value:"Person",labelKey:"sandbox.recordEditor.optionPerson"},{value:"Organization",labelKey:"sandbox.recordEditor.optionOrganization"}]},{key:"email",labelKey:"sandbox.recordEditor.fieldEmail",widget:"text",placeholderKey:"sandbox.recordEditor.placeholderEmail"},{key:"jobTitle",labelKey:"sandbox.recordEditor.fieldJobTitle",widget:"text"},{key:"company",labelKey:"sandbox.recordEditor.fieldCompany",widget:"text"},{key:"avatar",labelKey:"sandbox.recordEditor.fieldAvatar",widget:"image"}]},W={authors:"sandbox.recordEditor.titleAuthor"};function Zr(I){const t=B.c(39),{orgSlug:E,virtualMcpId:K,branch:w,kind:a,blockKey:b,block:f}=I,i=L();let h;t[0]!==w||t[1]!==E||t[2]!==K?(h={orgSlug:E,virtualMcpId:K,branch:w},t[0]=w,t[1]=E,t[2]=K,t[3]=h):h=t[3];const p=M(h);let g;t[4]!==f||t[5]!==a?(g=$(f,a),t[4]=f,t[5]=a,t[6]=g):g=t[6];const C=g;let k;t[7]!==b||t[8]!==a||t[9]!==p?(k=l=>{p.mutate({blockKey:b,data:G(b,a,l)})},t[7]=b,t[8]=a,t[9]=p,t[10]=k):k=t[10];const[e,S]=Q(C,k);let v;t[11]!==e||t[12]!==S?(v=(l,o)=>S({...e,[l]:o}),t[11]=e,t[12]=S,t[13]=v):v=t[13];const s=v,N=W[a];let n;t[14]!==i||t[15]!==N?(n=i(N),t[14]=i,t[15]=N,t[16]=n):n=t[16];let c;t[17]!==n?(c=r.jsx("span",{className:"text-sm font-medium",children:n}),t[17]=n,t[18]=c):c=t[18];let d;t[19]!==p.isError||t[20]!==p.isPending?(d=r.jsx(q,{isPending:p.isPending,isError:p.isError}),t[19]=p.isError,t[20]=p.isPending,t[21]=d):d=t[21];let y;t[22]!==c||t[23]!==d?(y=r.jsxs("div",{className:"flex h-12 shrink-0 items-center justify-between border-b px-6",children:[c,d]}),t[22]=c,t[23]=d,t[24]=y):y=t[24];const T=U[a];let x;if(t[25]!==e||t[26]!==s||t[27]!==i||t[28]!==T){let l;t[30]!==e||t[31]!==s||t[32]!==i?(l=o=>r.jsx("div",{className:"space-y-2",children:o.widget==="image"?r.jsx(H,{schema:{type:"string",format:"image-uri",title:i(o.labelKey)},value:e[o.key],onChange:m=>s(o.key,m),path:o.key,label:i(o.labelKey)}):o.widget==="select"?r.jsxs(r.Fragment,{children:[r.jsx(F,{htmlFor:o.key,children:i(o.labelKey)}),r.jsxs(R,{value:P(e[o.key])||o.options?.[0]?.value,onValueChange:m=>s(o.key,m),children:[r.jsx(z,{id:o.key,className:"h-10 w-full",children:r.jsx(J,{placeholder:i(o.labelKey)})}),r.jsx(O,{children:(o.options??[]).map(m=>r.jsx(V,{value:m.value,children:i(m.labelKey)},m.value))})]})]}):r.jsxs(r.Fragment,{children:[r.jsx(F,{htmlFor:o.key,children:i(o.labelKey)}),o.widget==="textarea"?r.jsx(D,{id:o.key,value:P(e[o.key]),onChange:m=>s(o.key,m.target.value),rows:3}):r.jsx(A,{id:o.key,value:P(e[o.key]),placeholder:o.placeholderKey?i(o.placeholderKey):void 0,onChange:m=>s(o.key,m.target.value),className:"h-10"})]})},o.key),t[30]=e,t[31]=s,t[32]=i,t[33]=l):l=t[33],x=T.map(l),t[25]=e,t[26]=s,t[27]=i,t[28]=T,t[29]=x}else x=t[29];let u;t[34]!==x?(u=r.jsx("div",{className:"min-w-0 flex-1 overflow-y-auto px-6 py-6",children:r.jsx("div",{className:"mx-auto max-w-xl space-y-6",children:x})}),t[34]=x,t[35]=u):u=t[35];let j;return t[36]!==u||t[37]!==y?(j=r.jsxs("div",{className:"flex h-full flex-col",children:[y,u]}),t[36]=u,t[37]=y,t[38]=j):j=t[38],j}export{Zr as RecordEditor};
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/registry-layout-Cpcl6TSK.js","assets/index-BuyUDL-f.js","assets/index-DS-wHxfn.css","assets/Tool02-D4AQe9SD.js","assets/CheckCircle-CFTFD5Ed.js","assets/Settings02-By8pQbcj.js","assets/use-mcp-client-BISqHyTj.js","assets/constants-dLUUoWH7.js","assets/auth-CYohcmQZ.js","assets/useInfiniteQuery-D5GGzERO.js","assets/use-infinite-scroll-CY3oO4vc.js","assets/badge-CO8RwMr5.js","assets/input-Cb9iSFEg.js","assets/dropdown-menu-LWFsRDES.js","assets/Check-BejV2053.js","assets/ChevronRight-DV9U9V1C.js","assets/DotsVertical-DqsE4vgP.js","assets/table-D_CXPJQu.js","assets/toggle-group-Dwtxjfc4.js","assets/use-view-mode-CfFp3geX.js","assets/FilterLines-DahI-t1v.js","assets/Globe01-8plmq2TA.js","assets/SearchMd-BJmbTOt_.js","assets/dialog-hItRl0PM.js","assets/AlertCircle-C0recpiM.js","assets/Download01-Cu0GEQBo.js","assets/Upload01-CPHyTAd0.js","assets/metadata-dUsYcpuu.js","assets/alert-dialog-Csnli2CD.js","assets/Trash01-Bkd5f3e4.js","assets/label-BkQvhQIM.js","assets/select-BOHmdb8C.js","assets/ChevronDown-D5RFRhzf.js","assets/ChevronUp-D4IrNOCC.js","assets/switch-dQhgVuCH.js","assets/textarea-CliLWMBV.js","assets/ArrowLeft-B2Z12k58.js","assets/XCircle-Dgz569F-.js","assets/checkbox-oWGgw210.js","assets/Eye-DhUWQAZM.js","assets/LinkExternal01-C5L2pr2x.js","assets/use-copy-Cq30lUsM.js","assets/Copy01-Cr3MDnu-.js","assets/Key01-DLcgmMi7.js","assets/Plus-BNnPvfG8.js","assets/mcp-oauth-DBjycbCF.js","assets/Play-CsI3qh5P.js"])))=>i.map(i=>d[i]);
2
- import{c as i,j as e,r as s,k as a,bp as o}from"./index-BuyUDL-f.js";import{R as n}from"./require-capability-DuFIGwof.js";import"./access-gate-BL_s88yN.js";import"./capability-load-error-BqilZ1PU.js";const c=s.lazy(()=>o(()=>import("./registry-layout-Cpcl6TSK.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46])));function u(){const r=i.c(1);let t;return r[0]===Symbol.for("react.memo_cache_sentinel")?(t=e.jsx(n,{capability:"registry:manage",area:"the registry",children:e.jsx(s.Suspense,{fallback:e.jsx("div",{className:"flex-1 flex items-center justify-center",children:e.jsx(a,{size:20,className:"animate-spin text-muted-foreground"})}),children:e.jsx(c,{})})}),r[0]=t):t=r[0],t}export{u as default};
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/registry-layout-Cpcl6TSK.js","assets/index-BuyUDL-f.js","assets/index-DS-wHxfn.css","assets/Tool02-D4AQe9SD.js","assets/CheckCircle-CFTFD5Ed.js","assets/Settings02-By8pQbcj.js","assets/use-mcp-client-BISqHyTj.js","assets/constants-dLUUoWH7.js","assets/auth-CYohcmQZ.js","assets/useInfiniteQuery-D5GGzERO.js","assets/use-infinite-scroll-CY3oO4vc.js","assets/badge-CO8RwMr5.js","assets/input-Cb9iSFEg.js","assets/dropdown-menu-LWFsRDES.js","assets/Check-BejV2053.js","assets/ChevronRight-DV9U9V1C.js","assets/DotsVertical-DqsE4vgP.js","assets/table-D_CXPJQu.js","assets/toggle-group-Dwtxjfc4.js","assets/use-view-mode-CfFp3geX.js","assets/FilterLines-DahI-t1v.js","assets/Globe01-8plmq2TA.js","assets/SearchMd-BJmbTOt_.js","assets/dialog-hItRl0PM.js","assets/AlertCircle-C0recpiM.js","assets/Download01-Cu0GEQBo.js","assets/Upload01-CPHyTAd0.js","assets/metadata-dUsYcpuu.js","assets/alert-dialog-Csnli2CD.js","assets/Trash01-Bkd5f3e4.js","assets/label-BkQvhQIM.js","assets/select-BOHmdb8C.js","assets/ChevronDown-D5RFRhzf.js","assets/ChevronUp-D4IrNOCC.js","assets/switch-dQhgVuCH.js","assets/textarea-CliLWMBV.js","assets/ArrowLeft-B2Z12k58.js","assets/XCircle-Dgz569F-.js","assets/checkbox-oWGgw210.js","assets/Eye-DhUWQAZM.js","assets/LinkExternal01-C5L2pr2x.js","assets/use-copy-Cq30lUsM.js","assets/Copy01-Cr3MDnu-.js","assets/Key01-DLcgmMi7.js","assets/Plus-BNnPvfG8.js","assets/mcp-oauth-DBjycbCF.js","assets/Play-CsI3qh5P.js"])))=>i.map(i=>d[i]);
2
- import{c as n,d as c,f as m,j as t,k as f,r as l,bp as p}from"./index-BuyUDL-f.js";import{R as u}from"./require-capability-DuFIGwof.js";import"./access-gate-BL_s88yN.js";import"./capability-load-error-BqilZ1PU.js";const g=l.lazy(()=>p(()=>import("./registry-layout-Cpcl6TSK.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46])));function h(){const e=n.c(5),i=c();let s;e[0]===Symbol.for("react.memo_cache_sentinel")?(s={from:"/shell/$org"},e[0]=s):s=e[0];const{org:o}=m(s);let r;e[1]===Symbol.for("react.memo_cache_sentinel")?(r=t.jsx("div",{className:"h-full flex items-center justify-center",children:t.jsx(f,{size:20,className:"animate-spin text-muted-foreground"})}),e[1]=r):r=e[1];let a;return e[2]!==i||e[3]!==o?(a=t.jsx(u,{capability:"registry:manage",area:"the registry",children:t.jsx(l.Suspense,{fallback:r,children:t.jsx(g,{onBack:()=>i({to:"/$org/settings/store",params:{org:o}})})})}),e[2]=i,e[3]=o,e[4]=a):a=e[4],a}export{h as default};
@@ -1 +0,0 @@
1
- import{I as i}from"./use-infinite-scroll-CY3oO4vc.js";import{fi as u}from"./index-BuyUDL-f.js";function t(e,r){return u(e,i,r)}export{t as u};
@@ -1 +0,0 @@
1
- import{I as s}from"./use-infinite-scroll-CY3oO4vc.js";import{fi as u,b$ as n}from"./index-BuyUDL-f.js";function i(r,e){return u({...r,enabled:!0,suspense:!0,throwOnError:n},s,e)}export{i as u};