decocms 4.253.0 → 4.253.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 (223) hide show
  1. package/dist/client/assets/{AlertCircle-QRvupulp.js → AlertCircle-WVgkyww-.js} +1 -1
  2. package/dist/client/assets/{AreaChart-CCk6weX5.js → AreaChart--hq_VOjD.js} +1 -1
  3. package/dist/client/assets/{ArrowLeft-B5MHfAc9.js → ArrowLeft-BxUhb4Se.js} +1 -1
  4. package/dist/client/assets/{ArrowUp-C9quT3vr.js → ArrowUp-CZdNU8ts.js} +1 -1
  5. package/dist/client/assets/{Check-D_9UblFe.js → Check-DGXd05kS.js} +1 -1
  6. package/dist/client/assets/{CheckCircle-Cy6SdoFE.js → CheckCircle-aE2qJBCG.js} +1 -1
  7. package/dist/client/assets/{ChevronDown-q-BDTE1a.js → ChevronDown-3lnlPbk4.js} +1 -1
  8. package/dist/client/assets/{ChevronRight-CuobrFWw.js → ChevronRight-CNiBUxsz.js} +1 -1
  9. package/dist/client/assets/{ChevronSelectorVertical-BcFPQB0k.js → ChevronSelectorVertical-HlYfGNJe.js} +1 -1
  10. package/dist/client/assets/{ChevronUp-BacGGupp.js → ChevronUp-BY_K4ldy.js} +1 -1
  11. package/dist/client/assets/{Copy01-pzrzel7S.js → Copy01-BfeJvkDc.js} +1 -1
  12. package/dist/client/assets/{CreditCard01-CpM7NKRX.js → CreditCard01-CxB2LiPJ.js} +1 -1
  13. package/dist/client/assets/{DotsVertical-o1GHxv-O.js → DotsVertical-C-NN--IL.js} +1 -1
  14. package/dist/client/assets/{Download01-BSl0a_Zn.js → Download01-BZZSM15O.js} +1 -1
  15. package/dist/client/assets/{Eye-Bj5mHV4n.js → Eye-DWpSVWon.js} +1 -1
  16. package/dist/client/assets/{FilterLines-DIklhgSj.js → FilterLines-BrKrVblo.js} +1 -1
  17. package/dist/client/assets/{Globe01-DjttPvlo.js → Globe01-C9-vpiiM.js} +1 -1
  18. package/dist/client/assets/{Globe04-Du02Sz3e.js → Globe04-CQw8Smi4.js} +1 -1
  19. package/dist/client/assets/{HardDrive-BqmgISbb.js → HardDrive-Bh6R5v6K.js} +1 -1
  20. package/dist/client/assets/{Key01-Jr4ZErv5.js → Key01-CcQvBprZ.js} +1 -1
  21. package/dist/client/assets/{LinkExternal01-D26mL5EB.js → LinkExternal01-DCpzjKFq.js} +1 -1
  22. package/dist/client/assets/{LockUnlocked01-e3NzZWP7.js → LockUnlocked01-C6TS010c.js} +1 -1
  23. package/dist/client/assets/{LogOut01-C2lMNeV5.js → LogOut01-BTljGEAd.js} +1 -1
  24. package/dist/client/assets/{Monitor01-1Nj95W_q.js → Monitor01-h_s65iJ-.js} +1 -1
  25. package/dist/client/assets/{Palette-Dypc2-1c.js → Palette-BiBHbwyR.js} +1 -1
  26. package/dist/client/assets/{Play-CjHdlkgd.js → Play-DsQCAyIU.js} +1 -1
  27. package/dist/client/assets/{Plus-D3gVZHV3.js → Plus-B5kR65gK.js} +1 -1
  28. package/dist/client/assets/{SearchLg-wR1sB7EA.js → SearchLg-BGQlOmON.js} +1 -1
  29. package/dist/client/assets/{SearchMd-CtZAfK8E.js → SearchMd-BfrtiC1y.js} +1 -1
  30. package/dist/client/assets/{Settings02-C53ZHmtS.js → Settings02-BRvjIo21.js} +1 -1
  31. package/dist/client/assets/{Share07-CmibR8O_.js → Share07-D09Unp6C.js} +1 -1
  32. package/dist/client/assets/{Shield01-aty-BQPO.js → Shield01-CFCv8IWj.js} +1 -1
  33. package/dist/client/assets/{Stars01-C-HncgpH.js → Stars01-CVPGmDt0.js} +1 -1
  34. package/dist/client/assets/{Stars02-DLN9VN0K.js → Stars02-fp5iftV7.js} +1 -1
  35. package/dist/client/assets/{Sun-oAlH4Et6.js → Sun-CowfpjiJ.js} +1 -1
  36. package/dist/client/assets/{SwitchHorizontal01-2UlAne4E.js → SwitchHorizontal01-Bjp-h_7G.js} +1 -1
  37. package/dist/client/assets/{Tool01-CrNXzXQW.js → Tool01-BUOkQPFJ.js} +1 -1
  38. package/dist/client/assets/{Tool02-D_KV3wgq.js → Tool02-DD3D4IqG.js} +1 -1
  39. package/dist/client/assets/{Trash01-DjBUHDUL.js → Trash01-p21FTL5d.js} +1 -1
  40. package/dist/client/assets/{TrendUp01-DXDuqLu0.js → TrendUp01-ChLbiU8r.js} +1 -1
  41. package/dist/client/assets/{Upload01-84XWvjLa.js → Upload01-BqSLDTv6.js} +1 -1
  42. package/dist/client/assets/{User01-PXX2g5Cu.js → User01-CUFiV8Kn.js} +1 -1
  43. package/dist/client/assets/{UserSquare-C-beLoyR.js → UserSquare-DJrPVFCb.js} +1 -1
  44. package/dist/client/assets/{Users01-Da4R3QxE.js → Users01-OA638fk5.js} +1 -1
  45. package/dist/client/assets/{Users03-CbPlXAXd.js → Users03-DN5PYUqg.js} +1 -1
  46. package/dist/client/assets/{XCircle-9-Hs99HF.js → XCircle-ByKBvISP.js} +1 -1
  47. package/dist/client/assets/{XClose-DcETJU_8.js → XClose-Br6NElcs.js} +1 -1
  48. package/dist/client/assets/{YAxis-Cz9kXWR-.js → YAxis-CGHW7jKJ.js} +1 -1
  49. package/dist/client/assets/{Zap-ZIyGqf5L.js → Zap-DDpqJ8OO.js} +1 -1
  50. package/dist/client/assets/{ZapSquare-4nM0D99S.js → ZapSquare-BCW4svUL.js} +1 -1
  51. package/dist/client/assets/{access-gate-B3kqph5v.js → access-gate-CSIVHvx_.js} +1 -1
  52. package/dist/client/assets/{agent-icon-B-qYByRc.js → agent-icon-BLP-aNUm.js} +1 -1
  53. package/dist/client/assets/{agents-list-UaAApF6s.js → agents-list-BBdowsyi.js} +1 -1
  54. package/dist/client/assets/{ai-providers-BgQGYjrZ.js → ai-providers-CvEf0QOg.js} +1 -1
  55. package/dist/client/assets/{alert-dialog-CBk8lpg7.js → alert-dialog-BY2sRyvm.js} +1 -1
  56. package/dist/client/assets/{alert-D0Qt4xSz.js → alert-s-k7M4W4.js} +1 -1
  57. package/dist/client/assets/{api-keys-B6hPo8ZJ.js → api-keys-vTj6zPjK.js} +1 -1
  58. package/dist/client/assets/{app-editor-DA--ZSly.js → app-editor-DVHLIkTs.js} +1 -1
  59. package/dist/client/assets/{auth-catchall-CoDRrO1W.js → auth-catchall-2ZHWcNPT.js} +1 -1
  60. package/dist/client/assets/{auth-entry-6ZtbhK-T.js → auth-entry-Ba_OzsXk.js} +1 -1
  61. package/dist/client/assets/{auth-X1MIUPaZ.js → auth-r_0ovuYc.js} +1 -1
  62. package/dist/client/assets/{auth-split-layout-Cwo3URbs.js → auth-split-layout-CuPoHlK-.js} +1 -1
  63. package/dist/client/assets/{authenticate-and-persist-oauth-D_ggvhPQ.js → authenticate-and-persist-oauth-Cp8P-_QC.js} +1 -1
  64. package/dist/client/assets/{automation-list-row-B6ybaa8x.js → automation-list-row-Cyj-mvIt.js} +1 -1
  65. package/dist/client/assets/{automation-runs-CtItpnbR.js → automation-runs-CZolIdIm.js} +1 -1
  66. package/dist/client/assets/{automations-DseZQX2k.js → automations-BUWQZUHr.js} +1 -1
  67. package/dist/client/assets/{avatar-QtF_6_2t.js → avatar-Czz8Ppg5.js} +1 -1
  68. package/dist/client/assets/{badge-D4sNhvwo.js → badge-Dtec_4Os.js} +1 -1
  69. package/dist/client/assets/{block-document-BP32WLcN.js → block-document-jniNIToV.js} +1 -1
  70. package/dist/client/assets/{buckets-DQ-s2j_l.js → buckets-BL5CMeQc.js} +1 -1
  71. package/dist/client/assets/{bulk-category-panel-9VQLE4O-.js → bulk-category-panel-DVHmrcRz.js} +1 -1
  72. package/dist/client/assets/{capability-load-error-tIVH3Ul1.js → capability-load-error-DKQcU6ZG.js} +1 -1
  73. package/dist/client/assets/{cards-DJvq3P6E.js → cards-DdUe4Y7E.js} +1 -1
  74. package/dist/client/assets/{category-editor-B05XhJvm.js → category-editor-CG-oqz6s.js} +1 -1
  75. package/dist/client/assets/{chart-D-Syy_FF.js → chart-DVItqbre.js} +1 -1
  76. package/dist/client/assets/{chat-context-B5O3LrXl.js → chat-context-Du1Ynk0G.js} +1 -1
  77. package/dist/client/assets/{checkbox-DbnsLTvV.js → checkbox-OpuM1_rN.js} +1 -1
  78. package/dist/client/assets/{choose-editor-a8lRrAOa.js → choose-editor-kjyLsT-6.js} +1 -1
  79. package/dist/client/assets/{cli-auth-success-GQaDEUv_.js → cli-auth-success-DpFWUu1u.js} +1 -1
  80. package/dist/client/assets/{collection-detail-Cms5Xwxe.js → collection-detail-CioHaSfs.js} +1 -1
  81. package/dist/client/assets/{collection-display-button-Cib6YxvS.js → collection-display-button-mtQfHIKK.js} +1 -1
  82. package/dist/client/assets/{collection-search-DU8GH5Z3.js → collection-search-qnfvi0v8.js} +1 -1
  83. package/dist/client/assets/{collection-table-wrapper-D9kfbk5G.js → collection-table-wrapper-CC-Gv_qV.js} +1 -1
  84. package/dist/client/assets/{collection-tabs-CYE3kEie.js → collection-tabs-DMBM4yqM.js} +1 -1
  85. package/dist/client/assets/{command-fmbL7i-3.js → command-CRRfkjPr.js} +1 -1
  86. package/dist/client/assets/{commerce-onboarding-iKjMKzqi.js → commerce-onboarding-CulvXmb3.js} +1 -1
  87. package/dist/client/assets/{connect-D0iUq3Oz.js → connect-B18YwDyh.js} +1 -1
  88. package/dist/client/assets/{connection-D_bhXhuF.js → connection-CsxdRwE5.js} +1 -1
  89. package/dist/client/assets/{connection-card-BxQsLM1f.js → connection-card-CeS0Istv.js} +1 -1
  90. package/dist/client/assets/{connection-detail-BhIv5zq_.js → connection-detail-BD5aNvKQ.js} +1 -1
  91. package/dist/client/assets/{connection-form-helpers-BWs30DdI.js → connection-form-helpers-DCxQjSP6.js} +1 -1
  92. package/dist/client/assets/{connections-65EV_Dku.js → connections-CDms9eCG.js} +1 -1
  93. package/dist/client/assets/{decopilot-sse-pool-Cvt6e7r9.js → decopilot-sse-pool-DPED7D2A.js} +1 -1
  94. package/dist/client/assets/{dialog-BnYOWv1V.js → dialog-BIPdA336.js} +1 -1
  95. package/dist/client/assets/{domain-settings-B8iRiDab.js → domain-settings-C4bFWg7s.js} +1 -1
  96. package/dist/client/assets/{drawer-CYg0htVn.js → drawer-vzSyfDvu.js} +1 -1
  97. package/dist/client/assets/{dropdown-menu-BYZO8zGY.js → dropdown-menu-lrj1AuBG.js} +1 -1
  98. package/dist/client/assets/{empty-state-DgpXFEpT.js → empty-state-DcCHru3k.js} +1 -1
  99. package/dist/client/assets/{extract-connection-data-Z1nXcHUN.js → extract-connection-data-DiHPdf7q.js} +1 -1
  100. package/dist/client/assets/{file-explorer-D5B-7g6B.js → file-explorer-DaaFlEF2.js} +1 -1
  101. package/dist/client/assets/{file-type-icon-C4bZM4LI.js → file-type-icon-y3nCyNPn.js} +1 -1
  102. package/dist/client/assets/{form-CvSGLXDv.js → form-J1gw4Qk_.js} +1 -1
  103. package/dist/client/assets/{general-Dm5CVVDP.js → general-BU0uYs8L.js} +1 -1
  104. package/dist/client/assets/{github-repo-picker-BuEJt9Wg.js → github-repo-picker-D2vV39oz.js} +1 -1
  105. package/dist/client/assets/{hooks-DZORtnpm.js → hooks-DdVRuhEZ.js} +1 -1
  106. package/dist/client/assets/{index-CZ5dXTGz.js → index-8Qjw8_TO.js} +1 -1
  107. package/dist/client/assets/{index-CzcLVdds.js → index-BclLNjGe.js} +3 -3
  108. package/dist/client/assets/{index-Ds8jmHNA.js → index-BeEaq4Rh.js} +1 -1
  109. package/dist/client/assets/{index-BKT7N985.js → index-BpKTgLQK.js} +1 -1
  110. package/dist/client/assets/{index-BfGV4McT.js → index-BtRb-rGv.js} +1 -1
  111. package/dist/client/assets/{index-nslqiNOZ.js → index-CEKSaGzO.js} +1 -1
  112. package/dist/client/assets/{index-Cyqvxp1H.js → index-CO80f0WB.js} +1 -1
  113. package/dist/client/assets/{index-CuCSQaJ9.js → index-CZVnjscz.js} +5 -5
  114. package/dist/client/assets/{index-Fsf5PLbW.js → index-CmZRfjvH.js} +1 -1
  115. package/dist/client/assets/{index-DIGkPnPI.js → index-DRwoMU01.js} +1 -1
  116. package/dist/client/assets/{index-redirect-BJrwIK_8.js → index-redirect-D9XohjTY.js} +1 -1
  117. package/dist/client/assets/{infra-billing-DEuNXfcS.js → infra-billing-BmHeKMVb.js} +1 -1
  118. package/dist/client/assets/{input-CgelyuM7.js → input-nDPWgHCd.js} +1 -1
  119. package/dist/client/assets/{integration-icon-DzMUF0dd.js → integration-icon-gfFSvGiG.js} +1 -1
  120. package/dist/client/assets/{invite-member-dialog-CfSqc13I.js → invite-member-dialog-CaoNu1mr.js} +1 -1
  121. package/dist/client/assets/{label-Dvnf0feU.js → label-DGmx8Imr.js} +1 -1
  122. package/dist/client/assets/{layout-BQLUPszm.js → layout-BKxkz2Ye.js} +1 -1
  123. package/dist/client/assets/{login-BP6rwGNR.js → login-vhF5CMIy.js} +1 -1
  124. package/dist/client/assets/{mcp-oauth-jcyez0an.js → mcp-oauth-DOoM2ckU.js} +1 -1
  125. package/dist/client/assets/{members-Dpse4xW3.js → members-Cywe_NkG.js} +1 -1
  126. package/dist/client/assets/{monaco-editor-CsC4XPkJ.js → monaco-editor-CbPVc8vU.js} +1 -1
  127. package/dist/client/assets/{monitoring-stats-row-CLNzJUKR.js → monitoring-stats-row-DeyIlVFp.js} +1 -1
  128. package/dist/client/assets/{multi-select-C3Oa4f0S.js → multi-select-CnXJwfQH.js} +1 -1
  129. package/dist/client/assets/{oauth-callback-CReSAxvZ.js → oauth-callback-BuWOkGsW.js} +1 -1
  130. package/dist/client/assets/{oauth-callback-ai-provider-C_GBa25j.js → oauth-callback-ai-provider-DZZigV6N.js} +1 -1
  131. package/dist/client/assets/{onboarding-CzDb95DL.js → onboarding-D0uI7-kQ.js} +1 -1
  132. package/dist/client/assets/{org-layout-DUzJC78P.js → org-layout-DoN48nJf.js} +1 -1
  133. package/dist/client/assets/{organization-choice-C7YFivwE.js → organization-choice-CTRa0oo8.js} +1 -1
  134. package/dist/client/assets/{orgs-CyuH0Dcq.js → orgs-BiH7BRr2.js} +1 -1
  135. package/dist/client/assets/{page-seo-form-mWzJ-btw.js → page-seo-form-Dea2xJef.js} +1 -1
  136. package/dist/client/assets/{popover-CBGKD0s7.js → popover-CeodfKZO.js} +1 -1
  137. package/dist/client/assets/{post-editor-Djvncljj.js → post-editor-vDlDjRCC.js} +1 -1
  138. package/dist/client/assets/{primitives-BhoyIjg_.js → primitives-DBfa9hB0.js} +1 -1
  139. package/dist/client/assets/{profile-DJsx1goj.js → profile-C4T_eaEe.js} +1 -1
  140. package/dist/client/assets/{project-app-view-CvDr-XCU.js → project-app-view-BIRlbRCo.js} +1 -1
  141. package/dist/client/assets/record-editor-C4_nxX6K.js +1 -0
  142. package/dist/client/assets/{redirect-editor-DUYltyw3.js → redirect-editor-UWqpDZXZ.js} +1 -1
  143. package/dist/client/assets/registry-WMZ-DRCx.js +2 -0
  144. package/dist/client/assets/{registry-layout-DASkuy8G.js → registry-layout-DlS42cbQ.js} +1 -1
  145. package/dist/client/assets/{reports-CXa28_sb.js → reports-D6_7Kl40.js} +1 -1
  146. package/dist/client/assets/{require-capability-CTNMEb_7.js → require-capability-DhaWwRnV.js} +1 -1
  147. package/dist/client/assets/{required-auth-layout-BM2rQ75_.js → required-auth-layout-LN8Si53_.js} +1 -1
  148. package/dist/client/assets/{reset-password-Bv-BDbeu.js → reset-password-Dq0BuVe2.js} +1 -1
  149. package/dist/client/assets/{roles-DDH319xG.js → roles-BGvaDFJ5.js} +1 -1
  150. package/dist/client/assets/{search-input-BSD38UOX.js → search-input-CS8Ct-0G.js} +1 -1
  151. package/dist/client/assets/{secrets-YnJjdwYC.js → secrets-CFD7nlk0.js} +1 -1
  152. package/dist/client/assets/{sections-editor-klWoNNna.js → sections-editor-O6ywpF7W.js} +1 -1
  153. package/dist/client/assets/{select-Czw8e7ON.js → select-Bqsr49tC.js} +1 -1
  154. package/dist/client/assets/{select-model-s6Q1RhIQ.js → select-model-Bxjzua6V.js} +1 -1
  155. package/dist/client/assets/{self-tool-result-BIIdVkKE.js → self-tool-result-d13oM_zw.js} +1 -1
  156. package/dist/client/assets/{seo-editor-Qd-OCL7p.js → seo-editor-D2QWKyta.js} +1 -1
  157. package/dist/client/assets/{settings-layout-DL0SzmOv.js → settings-layout-CJLte-dW.js} +1 -1
  158. package/dist/client/assets/{shell-controls-CSm6ytzb.js → shell-controls-DLlCUBmb.js} +1 -1
  159. package/dist/client/assets/{shell-layout-BKnL_FxA.js → shell-layout-BpnQ4cG6.js} +1 -1
  160. package/dist/client/assets/{spinner-CzB_jOUK.js → spinner-B2FzBAMR.js} +1 -1
  161. package/dist/client/assets/{sso-BCCUP3vV.js → sso-BJI6dRMO.js} +1 -1
  162. package/dist/client/assets/{store-Cj03_fvj.js → store-GqEyr_pt.js} +1 -1
  163. package/dist/client/assets/store-registry-59xbzlwa.js +2 -0
  164. package/dist/client/assets/{switch-CFRxsEDs.js → switch-BZkTGTCs.js} +1 -1
  165. package/dist/client/assets/{synced-repos-Ct0rUyr3.js → synced-repos-Dj-rz3Pn.js} +1 -1
  166. package/dist/client/assets/{tab-id-y2UEhF46.js → tab-id-Ds3C7o-Q.js} +1 -1
  167. package/dist/client/assets/{table-BhmhDJ4F.js → table-DHYowlzp.js} +1 -1
  168. package/dist/client/assets/{tabs-BCUMuslr.js → tabs-OfH26t07.js} +1 -1
  169. package/dist/client/assets/{task-key-DepFkHpi.js → task-key-CqEHQkeN.js} +1 -1
  170. package/dist/client/assets/{tasks-UFQh5X5R.js → tasks-Bfnw5ir8.js} +1 -1
  171. package/dist/client/assets/{textarea-DcfHRbIa.js → textarea-DvePac_2.js} +1 -1
  172. package/dist/client/assets/{toggle-group-BLeLfUJ1.js → toggle-group-CC_Dl3He.js} +1 -1
  173. package/dist/client/assets/{toolbar-Dt2tacki.js → toolbar-CWal9bG6.js} +1 -1
  174. package/dist/client/assets/{track-Bc8k7xVr.js → track-DJbyd3E3.js} +1 -1
  175. package/dist/client/assets/{types-B6aVwO4P.js → types-CwF0VJrL.js} +1 -1
  176. package/dist/client/assets/{use-ai-providers-CTaiOWxl.js → use-ai-providers-na-0KkzE.js} +1 -1
  177. package/dist/client/assets/{use-api-keys-xNOMIJJ8.js → use-api-keys-xrMq8TIR.js} +1 -1
  178. package/dist/client/assets/{use-automations-BqdBb32F.js → use-automations-Cj8hXDp1.js} +1 -1
  179. package/dist/client/assets/{use-autosave-HRUnqOmY.js → use-autosave-DRjaD6_q.js} +1 -1
  180. package/dist/client/assets/{use-clock-tick-B09DIw8S.js → use-clock-tick-LapJdX9W.js} +1 -1
  181. package/dist/client/assets/{use-commerce-diagnostic-CYSLePUq.js → use-commerce-diagnostic-BxP4VoOs.js} +1 -1
  182. package/dist/client/assets/{use-connection-CxlxZXew.js → use-connection-8EPdTWZr.js} +1 -1
  183. package/dist/client/assets/{use-copy-Dmwl1VxR.js → use-copy-8agNupqf.js} +1 -1
  184. package/dist/client/assets/{use-create-virtual-mcp-D29M4QcP.js → use-create-virtual-mcp-CGDNSnWc.js} +1 -1
  185. package/dist/client/assets/{use-debounced-autosave-BIppXeai.js → use-debounced-autosave-BjWmGT8J.js} +1 -1
  186. package/dist/client/assets/{use-debounced-value-IIaOOxZg.js → use-debounced-value-Dx3z1woS.js} +1 -1
  187. package/dist/client/assets/{use-decopilot-events-DsFgyl9p.js → use-decopilot-events-BUk6NHPf.js} +1 -1
  188. package/dist/client/assets/{use-delete-connection-k63TvZYv.js → use-delete-connection-BsIIWZAo.js} +1 -1
  189. package/dist/client/assets/{use-deployment-admin-BeIYRauP.js → use-deployment-admin-CqMhK46B.js} +1 -1
  190. package/dist/client/assets/{use-file-configs-y4xbFYVM.js → use-file-configs-CgpBRH0k.js} +1 -1
  191. package/dist/client/assets/{use-infinite-scroll-CLh0uciU.js → use-infinite-scroll-FxGy_57d.js} +1 -1
  192. package/dist/client/assets/{use-join-requests-DS4ZqYOu.js → use-join-requests-DVpghseC.js} +1 -1
  193. package/dist/client/assets/{use-mcp-client-Nl7jMP-w.js → use-mcp-client-CF6K7Xbx.js} +1 -1
  194. package/dist/client/assets/{use-mcp-tools-CBLV4W5e.js → use-mcp-tools-COBwavmq.js} +1 -1
  195. package/dist/client/assets/{use-members-BhvCwErg.js → use-members-DqghJ-MT.js} +1 -1
  196. package/dist/client/assets/{use-navigate-to-agent-D-SPcarg.js → use-navigate-to-agent-B40BWbsD.js} +1 -1
  197. package/dist/client/assets/{use-org-auth-client-D5LQtapF.js → use-org-auth-client-BVyhHLqS.js} +1 -1
  198. package/dist/client/assets/{use-org-repo-syncs-BPPWlF5W.js → use-org-repo-syncs-BUztWYOu.js} +1 -1
  199. package/dist/client/assets/{use-org-sso-BZeg8Kd0.js → use-org-sso-B3er5nZW.js} +1 -1
  200. package/dist/client/assets/{use-organization-roles-Cv_sEf0N.js → use-organization-roles-DqBwuPUA.js} +1 -1
  201. package/dist/client/assets/{use-organization-settings-ALGjoNhu.js → use-organization-settings-BBNU4XWS.js} +1 -1
  202. package/dist/client/assets/{use-registry-connections-X4HwLyVi.js → use-registry-connections-C2QMQtcg.js} +1 -1
  203. package/dist/client/assets/{use-secrets-BRM80mro.js → use-secrets-BBDXAR_y.js} +1 -1
  204. package/dist/client/assets/{use-section-preview-base-BpNpB2pu.js → use-section-preview-base-CyWP_8Tr.js} +1 -1
  205. package/dist/client/assets/{use-status-sounds-CCWNlp1N.js → use-status-sounds-DTtKleES.js} +1 -1
  206. package/dist/client/assets/{use-tags-H3HQshqI.js → use-tags-BSP-BiSB.js} +1 -1
  207. package/dist/client/assets/{use-view-mode-Doil9hB7.js → use-view-mode-oIGzRpko.js} +1 -1
  208. package/dist/client/assets/{use-virtual-mcp-Qsmk-Li1.js → use-virtual-mcp-BZDew3_r.js} +1 -1
  209. package/dist/client/assets/useInfiniteQuery-2CWVFI7J.js +1 -0
  210. package/dist/client/assets/useSuspenseInfiniteQuery-e_qVcT1E.js +1 -0
  211. package/dist/client/assets/{users-BxK6kPRW.js → users-Bxu25uRF.js} +1 -1
  212. package/dist/client/assets/{variant-calendar-BLeb8bxN.js → variant-calendar-CrqOmqi6.js} +1 -1
  213. package/dist/client/assets/{view-mode-toggle-BEGBs_8b.js → view-mode-toggle-BSHiQy8a.js} +1 -1
  214. package/dist/client/index.html +1 -1
  215. package/dist/server/cli.js +452 -444
  216. package/dist/server/migrate.js +134 -126
  217. package/dist/server/server.js +1 -1
  218. package/package.json +1 -1
  219. package/dist/client/assets/record-editor-nxD5Rafv.js +0 -1
  220. package/dist/client/assets/registry-7mX30HD0.js +0 -2
  221. package/dist/client/assets/store-registry-CGHaWw_9.js +0 -2
  222. package/dist/client/assets/useInfiniteQuery-Niu3Iyqd.js +0 -1
  223. package/dist/client/assets/useSuspenseInfiniteQuery-IqOl9p5d.js +0 -1
@@ -2850,7 +2850,7 @@ Respond with the structured verdict and a short reason.`,Dg$;var Eg$=w(()=>{P4()
2850
2850
  ${G.join(`
2851
2851
  `)}`:Y}function iJ6($){let Z=new Set;for(let X of $)for(let Q of X.split(`
2852
2852
  `)){let Y=Q.trim();if(/^Co-authored-by:\s/i.test(Y))Z.add(Y)}return[...Z]}var Xh$=200,xJ6=12,gJ6,uJ6=300,c91=3;var l91=w(()=>{b_();JA0();gJ6={aheadBy:0,behindBy:0,files:[]}});function nJ6($){if(!$||$.includes(".."))return!1;return pJ6.test($)}function Yh$($){let Z=typeof $.__resolveType==="string"?$.__resolveType:null;if(!Z||!nJ6(Z))return null;let{__resolveType:X,...Q}=$;return{resolveType:Z,payload:Q}}function Gh$($,Z){return`${$.replace(/\/+$/,"")}/deco/invoke/${Z}`}var pJ6;var Jh$=w(()=>{pJ6=/^[\w./@-]+$/});function d91($){let Z;try{Z=new URL($)}catch{return null}if(!Z.hostname.endsWith(".localhost"))return null;let X=Z.host;return Z.hostname="127.0.0.1",{url:Z.toString(),hostHeader:X}}function za($,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 Wh$($,Z,X,Q){if(!Q.connectionId)throw new y_("Push requires a connected GitHub account. Connect mcp-github for this project and restart the sandbox.");let Y=$.organization?.id;if(!Y)throw new y_(Q9);await rO({ctx:$,connectionId:Q.connectionId,organizationId:Y,forceRefresh:!0,onLegacyMintError:(F)=>{let N=F instanceof Error?F.message:Q9;throw new y_(N)}});let{cloneUrl:G,gitUserName:J,gitUserEmail:W}=await aO(Q.connectionId,Q.owner,Q.name,$.db,$.vault).catch((F)=>{let{code:N,message:U}=k4$(F instanceof Error?F.message:String(F));throw N?new y_(U):F}),K=eh($),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 wB(H,tJ6).catch(()=>H.statusText);throw Error(`Failed to refresh sandbox git credentials (${H.status}): ${F}`)}}var tJ6=10485760,y_;var m91=w(()=>{mG();tP0();rp();Fm0();ox();y_=class y_ extends Error{constructor($){super($);this.name="GitPushAuthError"}}});function rJ6($){let Z=$.startsWith("thread:")?$.slice(7):$;if(!Z||Z.length>255||Z.includes("..")||Z.startsWith("/")||Z.endsWith("/")||Z.endsWith(".lock")||!oJ6.test(Z))throw Error(`Invalid branch name: ${$}`)}function g_($){return AbortSignal.any([$.req.raw.signal,AbortSignal.timeout(sJ6)])}function eJ6($,Z,X){let Q=w5($)[Z]?.[X];return!!Q&&Object.keys(IY(Q)).length>0}function h_($){let{runner:Z}=$.get("vmClaim");if(!Z)return $.json({error:"No sandbox runner configured"},503);return Z}async function Gu($){let{virtualMcpMetadata:Z,connectionIds:X}=$.get("vmClaim"),Q=$.var.studioContext,Y=za(Z,X);if(!Y)throw new g4(404,"AUTH","repo","Project has no GitHub repository");let G=t(Q);return rP0(Q,G.id,Y)}function i91($,Z){if(Z instanceof oP0)return $.json({error:Z.message},429,{...C5,...Z.retryAfterMs===null?{}:{"Retry-After":String(Math.ceil(Z.retryAfterMs/1000))}});if(Z instanceof g4){let Q=Z.status===404?404:Z.status===409||Z.status===422?409:502;return $.json({error:Z.message},Q,C5)}let X=Z instanceof Error?Z.message:String(Z);return $.json({error:X},502,C5)}async function Fh$($,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 Nh$($){try{let Z=await Gu($),X=await WA0(Z,$.get("vmClaim").branch);return $.json(X,200,C5)}catch(Z){return i91($,Z)}}function Pa($,Z){let Q=(FA0.get($)??Promise.resolve()).catch(()=>{}).then(Z),Y=Q.catch(()=>{});return FA0.set($,Y),Y.finally(()=>{if(FA0.get($)===Y)FA0.delete($)}),Q}async function mZ($,Z,X){if($.get("vmClaim").fastPreview)return $.json({error:"sandbox not found: Fast Preview projects are sandbox-less"},404,C5);let Q=h_($);if(Q instanceof Response)return Q;let{claimName:Y,userId:G,projectRef:J}=$.get("vmClaim"),W=X?.method??"POST",K=null,H=new Headers;if(X?.jsonBody!==void 0)K=X.jsonBody,H.set("content-type","application/json");else if(X?.forwardJsonBody)K=await $.req.text(),H.set("content-type","application/json");let F=X?.signal,N={method:W,headers:H,body:K,...F?{signal:F}:{}},U=async()=>{let O=await Q.proxyDaemonRequest(Y,Z,N);if(X?.map404to410&&O.status===404){try{await O.body?.cancel()}catch{}if(await Q.adoptLiveClaim?.({userId:G,projectRef:J},Y))O=await Q.proxyDaemonRequest(Y,Z,N);if(O.status===404){try{await O.body?.cancel()}catch{}return new Response(JSON.stringify({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."}),{status:410,headers:{"content-type":"application/json",...C5}})}}let B=await O.text(),D=X?.redactRepoDirUnlessDesktop&&Q.kind!=="user-desktop"?Z36(B):B,L=O.headers.get("content-type")??"application/json";return new Response(D,{status:O.status,headers:{"content-type":L,...C5}})};try{if(F){let O=U();return O.catch(()=>{}),await Promise.race([O,new Promise((D,L)=>{if(F.aborted)return L(F.reason);F.addEventListener("abort",()=>L(F.reason),{once:!0})})])}return await U()}catch(O){let B=O instanceof Error?O.message:String(O);return $.json({error:`Daemon unreachable: ${B}`},502)}}function Z36($){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 NA0($,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 X36($){return Uh$.includes($)}var oJ6,Kh$=524288,aJ6=65536,sJ6=1e4,Hh$=2000,$36,FA0,C5,Uh$,Oh$=()=>{let $=new F1;$.use("/:virtualMcpId/:branch/*",$36),$.post("/:virtualMcpId/:branch/write",(X)=>mZ(X,"/_sandbox/write",{forwardJsonBody:!0,signal:g_(X)})),$.post("/:virtualMcpId/:branch/unlink",(X)=>mZ(X,"/_sandbox/unlink",{forwardJsonBody:!0,signal:g_(X)})),$.post("/:virtualMcpId/:branch/mkdir",(X)=>mZ(X,"/_sandbox/mkdir",{forwardJsonBody:!0,signal:g_(X)})),$.post("/:virtualMcpId/:branch/rename",(X)=>mZ(X,"/_sandbox/rename",{forwardJsonBody:!0,signal:g_(X)})),$.post("/:virtualMcpId/:branch/read",(X)=>mZ(X,"/_sandbox/read",{forwardJsonBody:!0,signal:g_(X)})),$.post("/:virtualMcpId/:branch/glob",(X)=>mZ(X,"/_sandbox/glob",{forwardJsonBody:!0,signal:g_(X)})),$.post("/:virtualMcpId/:branch/grep",(X)=>mZ(X,"/_sandbox/grep",{forwardJsonBody:!0,signal:g_(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 mZ(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 mZ(X,`/_sandbox/exec/${encodeURIComponent(Q)}/kill`)}),$.get("/:virtualMcpId/:branch/config",(X)=>mZ(X,"/_sandbox/config",{method:"GET",map404to410:!0,redactRepoDirUnlessDesktop:!0})),$.put("/:virtualMcpId/:branch/config",(X)=>mZ(X,"/_sandbox/config",{method:"PUT",forwardJsonBody:!0,map404to410:!0})),$.post("/:virtualMcpId/:branch/setup/:step",async(X)=>{let Q=X.req.param("step");if(!Q||!X36(Q))return X.json({error:`step must be one of: ${Uh$.join(", ")}`},400);if(Q==="start"){let Y=X.get("vmClaim");if(Y.runner){let G=t(X.var.studioContext),J=Oy(Y.virtualMcpMetadata);try{await tO0({ctx:X.var.studioContext,runner:Y.runner,handle:Y.claimName,orgId:G.id,userId:Y.callerUserId,entries:J})}catch(W){let K=W instanceof Error?W.message:String(W);return X.json({error:`Failed to push env to daemon: ${K}`},502)}}}return mZ(X,`/_sandbox/setup/${Q}`,{signal:X.req.raw.signal,map404to410:!0})}),$.get("/:virtualMcpId/:branch/events",(X)=>{let Q=X.get("vmClaim");if(!Q.runner)return 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 Fg$(X,{ctx:X.var.studioContext,claimName:Q.claimName,runner:Q.runner,virtualMcpId:Q.virtualMcpId,branch:Q.branch,userId:Q.userId,projectRef:Q.projectRef,virtualMcpMetadata:Q.virtualMcpMetadata})}),$.get("/:virtualMcpId/:branch/git/status",(X)=>{if(X.get("vmClaim").fastPreview)return Nh$(X);return Z(X)});let Z=(X)=>mZ(X,"/_sandbox/git/status",{method:"GET",map404to410:!0,signal:AbortSignal.any([X.req.raw.signal,AbortSignal.timeout(Hh$)])});return $.post("/:virtualMcpId/:branch/git/status",(X)=>{if(X.get("vmClaim").fastPreview)return Nh$(X);return mZ(X,"/_sandbox/git/status",{map404to410:!0,signal:AbortSignal.any([X.req.raw.signal,AbortSignal.timeout(Hh$)])})}),$.post("/:virtualMcpId/:branch/git/diff",async(X)=>{let Q=X.get("vmClaim");if(Q.fastPreview)try{let Y=await X.req.json().catch(()=>({})),G=await Gu(X),J=await KA0(G,Q.branch,Y.base);return X.json(J,200,C5)}catch(Y){return i91(X,Y)}return mZ(X,"/_sandbox/git/diff",{forwardJsonBody:!0,map404to410:!0})}),$.post("/:virtualMcpId/:branch/git/publish",async(X)=>{if(X.get("vmClaim").fastPreview)return X.json({ok:!0},200,C5);let Q=h_(X);if(Q instanceof Response)return Q;let{claimName:Y,virtualMcpMetadata:G,connectionIds:J}=X.get("vmClaim"),W=X.var.studioContext;return Pa(Y,async()=>{try{await A91(W,Q,Y);let K=za(G,J);if(K)await Wh$(W,Q,Y,K)}catch(K){if(K instanceof y_)return X.json({error:K.message},403,C5);let H=K instanceof Error?K.message:String(K);return X.json({error:H},502,C5)}return mZ(X,"/_sandbox/git/publish",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/discard",async(X)=>{let Q=X.get("vmClaim");if(Q.fastPreview)return Pa(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,C5);try{let J=await Gu(X);return await Qh$(J,Q.branch,G),X.json({ok:!0},200,C5)}catch(J){let W=J instanceof g4&&J.status===409?409:502,K=J instanceof Error?J.message:String(J);return X.json({error:K},W,C5)}});return Pa(Q.claimName,()=>mZ(X,"/_sandbox/git/discard",{forwardJsonBody:!0,map404to410:!0}))}),$.post("/:virtualMcpId/:branch/git/rebase",async(X)=>{let Q=X.get("vmClaim");if(Q.fastPreview)return Pa(Q.claimName,async()=>{try{let W=await X.req.json().catch(()=>({})),K=await Gu(X),H=W.base??await K.getDefaultBranch();return await HA0(K,Q.branch,H),X.json({ok:!0},200,C5)}catch(W){return i91(X,W)}});let Y=h_(X);if(Y instanceof Response)return Y;let{claimName:G}=X.get("vmClaim"),J=X.var.studioContext;return Pa(G,async()=>{try{await A91(J,Y,G)}catch(W){let K=W instanceof Error?W.message:String(W);return X.json({error:K},502,C5)}return mZ(X,"/_sandbox/git/rebase",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/suggest-commit",k9({maxSize:Kh$,onError:(X)=>X.json({error:"Payload too large"},413,C5)}),async(X)=>{let Q=X.get("vmClaim"),Y=null;if(!Q.fastPreview){let H=h_(X);if(H instanceof Response)return H;Y=H}let{claimName:G,userId:J,projectRef:W}=Q,K=X.var.studioContext;try{let H=await X.req.json().catch(()=>({})),F=H.status,N=H.diff,U=N!=null&&typeof N.diffs==="object"&&N.diffs!==null,[O,B]=I91(F)&&U?[F,N]:Y?await Promise.all([NA0(Y,G,"/_sandbox/git/status","GET",{userId:J,projectRef:W}),NA0(Y,G,"/_sandbox/git/diff","GET",{userId:J,projectRef:W})]):await(async()=>{let L=await Gu(X);return Promise.all([WA0(L,Q.branch),KA0(L,Q.branch)])})(),D=await wg$(K,O,B);return X.json(D,200,C5)}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,C5);return X.json({error:F},502,C5)}}),$.post("/:virtualMcpId/:branch/git/judge-review",k9({maxSize:Kh$,onError:(X)=>X.json({error:"Payload too large"},413,C5)}),async(X)=>{let Q=X.get("vmClaim"),Y=null;if(!Q.fastPreview){let H=h_(X);if(H instanceof Response)return H;Y=H}let{claimName:G,userId:J,projectRef:W}=Q,K=X.var.studioContext;try{let H=await X.req.json().catch(()=>({})),F=H.status,N=H.diff,U=N!=null&&typeof N.diffs==="object"&&N.diffs!==null,[O,B]=I91(F)&&U?[F,N]:Y?await Promise.all([NA0(Y,G,"/_sandbox/git/status","GET",{userId:J,projectRef:W}),NA0(Y,G,"/_sandbox/git/diff","GET",{userId:J,projectRef:W})]):await(async()=>{let L=await Gu(X);return Promise.all([WA0(L,Q.branch),KA0(L,Q.branch)])})(),D=await Lg$(K,O,B,typeof H.language==="string"?H.language:void 0);return X.json(D,200,C5)}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,C5);return X.json({error:F},502,C5)}}),$.get("/:virtualMcpId/:branch/preview-fetch",async(X)=>{let Q=h_(X);if(Q instanceof Response)return Q;let{claimName:Y}=X.get("vmClaim"),G=X.req.query("path");if(!G||!G.startsWith("/")||G.startsWith("//")||G.includes("..")||G.includes("\\"))return X.json({error:"Path not allowed"},403);let J;try{J=await Q.getPreviewUrl(Y)}catch{return X.json({error:"Preview not available"},502)}if(!J)return X.json({error:"Preview not available"},502);let W=J.replace(/\/+$/,""),K=d91(`${W}${G}`);return Fh$(X,K?.url??`${W}${G}`,{...K?{headers:{host:K.hostHeader}}:{}})}),$.post("/:virtualMcpId/:branch/preview-invoke",k9({maxSize:aJ6,onError:(X)=>X.json({error:"Payload too large"},413)}),async(X)=>{let Q=h_(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=Yh$(J);if(!W)return X.json({error:"Invalid or missing __resolveType"},400);let K=Gh$(G,W.resolveType),H=d91(K);return Fh$(X,H?.url??K,{method:"POST",headers:{"content-type":"application/json",...H?{host:H.hostHeader}:{}},body:JSON.stringify(W.payload),signal:AbortSignal.timeout(30000)})}),$};var Bh$=w(()=>{w8();wN();sh();P91();RF();Kg$();_3();iX();P8();tB0();NB();Hg$();Ng$();_p0();tp();k91();Eg$();v91();b_();l91();Jh$();m91();oJ6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;$36=nP0(async($,Z)=>{let X=$.var.studioContext;try{r(X)}catch{return $.json({error:"Unauthorized"},401)}let Q=G1(X);if(!Q)return $.json({error:"Unauthorized"},401);let Y;try{Y=t(X)}catch{return $.json({error:"Organization scope required"},403)}let G=$.req.param("virtualMcpId"),J=$.req.param("branch");if(!G||!J)return $.json({error:"virtualMcpId and branch are required"},400);try{rJ6(J)}catch(O){let B=O instanceof Error?O.message:String(O);return $.json({error:B},400)}let W=await X.storage.virtualMcps.findById(G);if(!W||W.organization_id!==Y.id)return $.json({error:"Virtual MCP not found"},404);let K=Np({orgId:Y.id,virtualMcpId:G,branch:J}),H=await fF(X,J,Q),F=Wg$({userId:H,projectRef:K}),N=W.metadata??null;if(mW$(N).fastPreviewCapability&&!eJ6(N,H,J))return $.set("vmClaim",{claimName:F,callerUserId:Q,runner:null,virtualMcpId:G,branch:J,userId:H,projectRef:K,virtualMcpMetadata:N,connectionIds:W.connections?.map((O)=>O.connection_id)??[],fastPreview:!0}),Z();let U;try{U=(await aX(X,{userId:H,branch:J,virtualMcpMetadata:N})).provider}catch{U=null}if(!U)return $.json({error:"No sandbox runner found"},404);return $.set("vmClaim",{claimName:F,callerUserId:Q,runner:U,virtualMcpId:G,branch:J,userId:H,projectRef:K,virtualMcpMetadata:N,connectionIds:W.connections?.map((O)=>O.connection_id)??[]}),Z()});FA0=new Map;C5={"Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache"};Uh$=["clone","install","start"]});function wh$($,Z,X){let Q=p91.get($);if(!Q)Q={pending:null,running:!1},p91.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)Y36($,Q);return G}async function Y36($,Z){Z.running=!0;try{while(Z.pending){let X=Z.pending;Z.pending=null;try{let Q=await G36(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)p91.delete($)}}async function G36($){let{client:Z,branch:X,packagePath:Q}=$.deps;for(let Y=0;;Y++){let G=await Yu(Z,X),J=await Z.getCommitTreeSha(G),W=await Z.getTreeRecursive(J),K=h91(W,Q),H=[],F=new Map(K.map((B)=>[B.path,{stem:B.stem,sha:B.sha}]));for(let[B,D]of $.set){let L=u91(K,B),E=`${JSON.stringify(D,null,2)}
2853
- `,j=await Z.createBlob(E);await eg$(Z.owner,Z.repo,j,E);let z=L[0]??`${GA0(Q)}/${f91(B)}.json`;H.push({path:z,mode:"100644",type:"blob",sha:j});let A=z.slice(z.lastIndexOf("/")+1,-5);F.set(z,{stem:A,sha:j,content:E});for(let P of L.slice(1))H.push({path:P,mode:"100644",type:"blob",sha:null}),F.delete(P)}for(let B of $.del)for(let D of u91(K,B))H.push({path:D,mode:"100644",type:"blob",sha:null}),F.delete(D);if(H.length===0)return G;let N=Q?`${Q}/.deco/blocks.gen.json`:".deco/blocks.gen.json";if(W.some((B)=>B.type==="blob"&&B.path===N)){let B=await Promise.all([...F.values()].map(async(j)=>({stem:j.stem,content:j.content??await Z.getBlobText(j.sha)}))),{decofile:D,skipped:L}=Da(B);if(L.length>0)console.warn("decofile gen: dropped blocks that were not valid JSON",{repo:`${Z.owner}/${Z.repo}`,branch:X,packagePath:Q,blocks:L.map((j)=>j.key)});let E=await Z.createBlob(D);H.push({path:N,mode:"100644",type:"blob",sha:E})}let U=await Z.createTree(J,H),O=await Z.createCommit({message:J36($),treeSha:U,parentShas:[G]});try{return await Z.updateRef(X,O),O}catch(B){if(!(B instanceof g4&&B.status===422)||Y>=Q36-1)throw B;await k$(nZ(2000,200,Y,2,0.5))}}}function J36($){let Z=(Y)=>{let G=Y.slice(0,3).join(", ");return Y.length>3?`${G} (+${Y.length-3} more)`:G},X=[];if($.set.size>0)X.push(`update ${Z([...$.set.keys()])}`);if($.del.size>0)X.push(`delete ${Z([...$.del])}`);let Q=`chore(decofile): ${X.join("; ")}`;return Zm0(Q,$.deps.coAuthor)}var Q36=3,p91;var Dh$=w(()=>{uO0();sP0();u4();b_();JA0();p91=new Map});import{createHmac as Lh$,randomBytes as W36,timingSafeEqual as K36}from"crypto";function Eh$(){if(UA0)return UA0;let $;try{let Z=b0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return UA0=$?Buffer.from($):W36(32),UA0}function n91($){let Z=$.nowMs??Date.now(),X={o:$.organizationId,m:$.virtualMcpId,b:$.branch,e:Math.floor((Z+H36)/1000)},Q=Buffer.from(JSON.stringify(X)).toString("base64url"),Y=Lh$("sha256",Eh$()).update(Q).digest("base64url");return`${Q}.${Y}`}function jh$($,Z){let X=$.indexOf(".");if(X<0)return!1;let Q=$.slice(0,X),Y=Buffer.from($.slice(X+1)),G=Buffer.from(Lh$("sha256",Eh$()).update(Q).digest("base64url"));if(Y.length!==G.length||!K36(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 H36=21600000,UA0=null;var zh$=w(()=>{I$()});import{z as Ju}from"zod";function N36($){return $.length>0&&$.length<=255&&!$.includes("..")&&!$.endsWith("/")&&!$.endsWith(".lock")&&F36.test($)}function Ah$($){return $.req.header("x-forwarded-host")??new URL($.req.url).host}async function OA0($){let Z=$.get("decofileScope");return rP0($.var.studioContext,Z.organizationId,Z.githubRepo)}function BA0($,Z){if(Z instanceof g4){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 Th$(){let $=new F1;return $.use("/:virtualMcpId/:branch",Ph$),$.use("/:virtualMcpId/:branch/*",Ph$),$.get("/:virtualMcpId/:branch",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await OA0(Z),Y=await $h$(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=n91({organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,branch:X.branch});return Z.body(`{"version":${JSON.stringify(Y.sha)},"token":${JSON.stringify(J)},"apiHost":${JSON.stringify(Ah$(Z))},"decofile":${Y.decofile}}`,200,{...G,"content-type":"application/json"})}catch(Q){return BA0(Z,Q)}}),$.patch("/:virtualMcpId/:branch",async(Z)=>{let X=Z.get("decofileScope"),Q=Z.var.studioContext,Y=U36.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{aP0(J)}catch(W){let K=W instanceof Error?W.message:String(W);return Z.json({error:K},400)}for(let[J,W]of Object.entries(G.set??{}))if(typeof W!=="object"||W===null||Array.isArray(W))return Z.json({error:`Block "${J}" must be a JSON object`},400);try{let J=await OA0(Z),W=await wh$(`${X.organizationId}/${X.virtualMcpId}/${X.branch}`,{client:J,branch:X.branch,packagePath:X.packagePath,coAuthor:eh(Q)},G),K=n91({organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,branch:X.branch});return Z.json({version:W,token:K,apiHost:Ah$(Z)})}catch(J){return BA0(Z,J)}}),$.post("/:virtualMcpId/:branch/publish",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await OA0(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 g4&&W.status===409))throw W;await HA0(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 g4&&J.status===409)return Z.json({error:"merge-conflict"},409);if(J instanceof g4&&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 BA0(Z,Q)}}),$.get("/:virtualMcpId/:branch/status",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await OA0(Z),Y=await Q.getDefaultBranch();if(Y===X.branch)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0});try{let{aheadBy:G,behindBy:J}=await Q.compare(Y,X.branch);return Z.json({baseBranch:Y,aheadBy:G,behindBy:J})}catch(G){if(G instanceof g4&&G.status===404)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0});throw G}}catch(Q){return BA0(Z,Q)}}),$}var F36,U36,Ph$;var Rh$=w(()=>{sP0();w8();P91();tP0();m91();v91();Dh$();zh$();l91();b_();JA0();F36=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;U36=Ju.object({set:Ju.record(Ju.string(),Ju.unknown()).optional(),delete:Ju.array(Ju.string()).optional()}).refine(($)=>Object.keys($.set??{}).length>0||($.delete?.length??0)>0,{message:"Patch must set or delete at least one block"}),Ph$=nP0(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(!N36(G))return $.json({error:`Invalid branch name: ${G}`},400);let J=X.auth?.user?.id??null;if(!J){let O=$.req.query("token");if(!($.req.method==="GET"&&!$.req.path.match(/\/(publish|status)$/)))return $.json({error:"Unauthorized"},401);if(!O||!jh$(O,{organizationId:Q.id,virtualMcpId:Y,branch:G}))return $.json({error:"Unauthorized"},401)}let W=await X.storage.virtualMcps.findById(Y);if(!W||W.organization_id!==Q.id)return $.json({error:"Virtual MCP not found"},404);let K=W.metadata??null;if(!nB0(K)||K?.fastPreview!==!0)return $.json({error:"Fast Preview is not enabled for this project"},404);let F=W.connections?.map((O)=>O.connection_id)??[],N=za(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 Ih$=($)=>{let Z=new F1;if(Z.use("*",q_),Z.route("/",FP0()),Z.route("/",lf$()),Z.route("/",ty$()),Z.route("/",iy$()),Z.route("/",mP0()),Z.route("/tools",Zg$()),Z.route("/",sy$()),Z.route("/",Ry$({kvStorage:$.kvStorage})),Z.route("/",Ay$()),Z.route("/fs",gy$({getConnection:$.getNatsConnection})),Z.route("/sandbox",Oh$()),Z.route("/decofile",Th$()),Z.route("/",ly$()),Z.route("/deco-sites",UP0()),Z.route("/sso",YP0()),Z.route("/",iP0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",ff$()),$.mountDevAssets)Z.route("/dev-assets",OP0({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("/",w_$()),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",uy$()),Z.route("/mcp",OD0()),Z.route("/mcp/self",dP0()),Z.route("/mcp",DD0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var qh$=w(()=>{w8();d61();bf$();n61();BP0();lr();c61();Ty$();Iy$();hy$();on();v61();LD0();B91();cy$();dy$();py$();oy$();ey$();D91();Xg$();L91();BD0();Bh$();Rh$()});function O36($){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 B36=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},Mh$=()=>{let $=new F1;return $.use("*",B36),$.get("/",async(Z)=>{let X=b0(),Q=X.decoSupabaseUrl,Y=X.decoSupabaseServiceKey;if(!Q||!Y)return Z.json({apps:[]});try{let G=await dZ(Q,Y,"apps?select=name,title,description,logo,category,vendors(alias,url)");return Z.json({apps:O36(G)})}catch(G){return console.error("[deco-apps] GET error:",G),Z.json({error:"Failed to fetch apps"},502)}}),$};var kh$=w(()=>{w8();I$();Wz0()});import{z as M1}from"zod";function GH($,Z="invalid_request_error",X=null,Q=null){return{error:{message:$,type:Z,param:X,code:Q}}}function R36($){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 I36($,Z,X){try{return JSON.parse($)}catch{throw new Ch$(`Invalid JSON in tool call arguments for function '${X}' (tool_call_id: ${Z}): ${$}`)}}function q36($){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:I36(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 M36($){let Z=$.map((X)=>{let Q=X.function.parameters?gY(X.function.parameters):gY({type:"object",properties:{}});return[X.function.name,R$({description:X.function.description,inputSchema:Q})]});return Object.fromEntries(Z)}function k36($){if(!$)return;return{openai:{response_format:$}}}function V36(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function Vh$($,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 Sh$($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var w36=256,D36,L36,E36,j36,z36,P36,A36,T36,Ch$,_h$,vh$;var fh$=w(()=>{P4();w8();sh();QN();D36=M1.object({type:M1.literal("function"),function:M1.object({name:M1.string(),description:M1.string().optional(),parameters:M1.record(M1.string(),M1.unknown()).optional()})}),L36=M1.object({id:M1.string(),type:M1.literal("function"),function:M1.object({name:M1.string(),arguments:M1.string()})}),E36=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(L36).optional()}),M1.object({role:M1.literal("tool"),content:M1.string(),tool_call_id:M1.string()})]),j36=M1.object({type:M1.literal("text")}),z36=M1.object({type:M1.literal("json_object")}),P36=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()})}),A36=M1.union([j36,z36,P36]),T36=M1.object({model:M1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:M1.array(E36),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(D36).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:A36.optional(),user:M1.string().optional()});Ch$=class Ch$ extends Error{constructor($){super($);this.name="MessageConversionError"}};_h$=new F1;_h$.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),X=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(GH("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(GH("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(GH("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Q=await $.req.json(),Y=T36.safeParse(Q);if(!Y.success){let L=Y.error.issues[0]??{message:"Invalid request",path:[]};return $.json(GH(`Invalid request: ${L.message}`,"invalid_request_error",L.path.length>0?L.path.join("."):null),400)}let G=Y.data,J=R36(G.model);if(!J)return $.json(GH("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)=>fD(j.providerId));if(!E)return $.json(GH("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(GH(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(K),N=q36(G.messages),U=G.tools?M36(G.tools):void 0,O=k36(G.response_format),B=V36(),D=Math.floor(Date.now()/1000);if(G.stream)return RN($,async(L)=>{let E=Vh$(F,N,U,G,O,$.req.raw.signal);try{let j=tO(E),z=!1,A=0,P="",I=async()=>{if(P.length===0)return;let k=P;P="",await L.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{content:k},finish_reason:null}]})})};for await(let k of j.fullStream){if(!z&&(k.type==="text-delta"||k.type==="tool-call"))await L.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),z=!0;if(k.type==="text-delta"){if(P+=k.text,P.length>=w36)await I()}else if(k.type==="tool-call"){await I();let q=A++;await L.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{tool_calls:[{index:q,id:k.toolCallId,type:"function",function:{name:k.toolName,arguments:JSON.stringify(k.input)}}]},finish_reason:null}]})})}else if(k.type==="finish")await I(),await L.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{},finish_reason:Sh$(k.finishReason)}],usage:k.totalUsage?{prompt_tokens:k.totalUsage.inputTokens??0,completion_tokens:k.totalUsage.outputTokens??0,total_tokens:k.totalUsage.totalTokens??0}:void 0})})}await I(),await L.writeSSE({data:"[DONE]"})}catch(j){let z=j;console.error("[openai-compat:stream] Error:",z.message),await L.writeSSE({data:JSON.stringify({error:{message:z.message,type:"server_error"}})})}});else{let L=Vh$(F,N,U,G,O,$.req.raw.signal),E=await pO(L),j={role:"assistant",content:E.text||null};if(E.toolCalls&&E.toolCalls.length>0)j.tool_calls=E.toolCalls.map((z)=>({id:z.toolCallId,type:"function",function:{name:z.toolName,arguments:JSON.stringify("input"in z?z.input:{})}})),j.content=null;return $.json({id:B,object:"chat.completion",created:D,model:G.model,choices:[{index:0,message:j,finish_reason:Sh$(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(GH("Request aborted","invalid_request_error"),400);if(Y.name==="MessageConversionError")return $.json(GH(Y.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",Y.message,Y.stack),$.json(GH(Y.message,"server_error"),500)}});vh$=_h$});function S36($){if(typeof $!=="object"||$===null)return!1;let X=$.githubRepo?.url;return typeof X==="string"&&X.length>0}function bh$(){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=G1(X);if(!Q)return Z.json({error:"Authentication required"},401);let G=(Z.req.query("site")??"").trim().toLowerCase();if(!uG(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||W7(H))continue;let F=await X.storage.virtualMcps.list(H.id);for(let N of F){if(Da1(N)!==G)continue;if(!S36(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 xh$=w(()=>{w8();fO()});var gh$;var yh$=w(()=>{gh$={name:"decocms",version:"4.253.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","@nats-io/jwt":"0.0.10-5","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});function v36(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??_36}}var hh$,_36="https://ph.studio.decocms.com",uh$;var ch$=w(()=>{w8();_h0();EC();f9();I$();k61();yh$();hh$=new F1;hh$.get("/",($)=>{let Z={version:gh$.version,theme:ld1(),...RL().logo&&{logo:RL().logo},...SK()&&{internalUrl:jS1()},...b0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!b0().firecrawlApiKey,auth:ev$(),posthog:v36(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:!SK()&&b0().sandboxProviderKind==="agent-sandbox"}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});uh$=hh$});function Wu($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function t91($){return(Wu($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((X)=>X.charAt(0).toUpperCase()+X.slice(1)).join(" ")}function dh$($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(Wu($))}&sz=${Z}`}function lh$($,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 mh$($){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()?lh$(`${Y.trim().replace(/\s+/g," ")} \u2014 ${J}`,200):lh$(`How does ${X} really perform? ${J}`,200);return{title:G,description:W}}import{z as l0}from"zod";var u_,f36,b36,x36,y36,ih$;var ph$=w(()=>{u_=l0.enum(["good","bad","neutral"]),f36=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:u_.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 $})),b36=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(f36)),x36={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()},y36=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:u_.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:u_.optional()}),l0.object({template:l0.literal("stats"),stats:l0.array(l0.object({value:l0.coerce.string(),label:l0.coerce.string(),tone:u_.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:u_.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(b36).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:u_.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:u_.optional()})).min(1)})]),ih$=l0.object({...x36,template:y36})});function wA0($){let Z=[],X=[...$.sections].sort((Y,G)=>Y.position-G.position).map((Y)=>{let G=ih$.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 o91=w(()=>{ph$()});import{join as nh$}from"path";async function h36($){try{let Z=await fetch(`${sW({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(g36)});if(!Z.ok)return null;let X=await Z.json(),{deck:Q}=wA0(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()||t91($),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 u36($,Z){let X=Wu($),Q=Z?.brand?.trim()||t91(X),Y=dh$(X,128),J=`${(b0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(X)}`,{title:W,description:K}=mh$({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(`
2853
+ `,j=await Z.createBlob(E);await eg$(Z.owner,Z.repo,j,E);let z=L[0]??`${GA0(Q)}/${f91(B)}.json`;H.push({path:z,mode:"100644",type:"blob",sha:j});let A=z.slice(z.lastIndexOf("/")+1,-5);F.set(z,{stem:A,sha:j,content:E});for(let P of L.slice(1))H.push({path:P,mode:"100644",type:"blob",sha:null}),F.delete(P)}for(let B of $.del)for(let D of u91(K,B))H.push({path:D,mode:"100644",type:"blob",sha:null}),F.delete(D);if(H.length===0)return G;let N=Q?`${Q}/.deco/blocks.gen.json`:".deco/blocks.gen.json";if(W.some((B)=>B.type==="blob"&&B.path===N)){let B=await Promise.all([...F.values()].map(async(j)=>({stem:j.stem,content:j.content??await Z.getBlobText(j.sha)}))),{decofile:D,skipped:L}=Da(B);if(L.length>0)console.warn("decofile gen: dropped blocks that were not valid JSON",{repo:`${Z.owner}/${Z.repo}`,branch:X,packagePath:Q,blocks:L.map((j)=>j.key)});let E=await Z.createBlob(D);H.push({path:N,mode:"100644",type:"blob",sha:E})}let U=await Z.createTree(J,H),O=await Z.createCommit({message:J36($),treeSha:U,parentShas:[G]});try{return await Z.updateRef(X,O),O}catch(B){if(!(B instanceof g4&&B.status===422)||Y>=Q36-1)throw B;await k$(nZ(2000,200,Y,2,0.5))}}}function J36($){let Z=(Y)=>{let G=Y.slice(0,3).join(", ");return Y.length>3?`${G} (+${Y.length-3} more)`:G},X=[];if($.set.size>0)X.push(`update ${Z([...$.set.keys()])}`);if($.del.size>0)X.push(`delete ${Z([...$.del])}`);let Q=`chore(decofile): ${X.join("; ")}`;return Zm0(Q,$.deps.coAuthor)}var Q36=3,p91;var Dh$=w(()=>{uO0();sP0();u4();b_();JA0();p91=new Map});import{createHmac as Lh$,randomBytes as W36,timingSafeEqual as K36}from"crypto";function Eh$(){if(UA0)return UA0;let $;try{let Z=b0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return UA0=$?Buffer.from($):W36(32),UA0}function n91($){let Z=$.nowMs??Date.now(),X={o:$.organizationId,m:$.virtualMcpId,b:$.branch,e:Math.floor((Z+H36)/1000)},Q=Buffer.from(JSON.stringify(X)).toString("base64url"),Y=Lh$("sha256",Eh$()).update(Q).digest("base64url");return`${Q}.${Y}`}function jh$($,Z){let X=$.indexOf(".");if(X<0)return!1;let Q=$.slice(0,X),Y=Buffer.from($.slice(X+1)),G=Buffer.from(Lh$("sha256",Eh$()).update(Q).digest("base64url"));if(Y.length!==G.length||!K36(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 H36=21600000,UA0=null;var zh$=w(()=>{I$()});import{z as Ju}from"zod";function N36($){return $.length>0&&$.length<=255&&!$.includes("..")&&!$.endsWith("/")&&!$.endsWith(".lock")&&F36.test($)}function Ah$($){return $.req.header("x-forwarded-host")??new URL($.req.url).host}async function OA0($){let Z=$.get("decofileScope");return rP0($.var.studioContext,Z.organizationId,Z.githubRepo)}function BA0($,Z){if(Z instanceof g4){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 Th$(){let $=new F1;return $.use("/:virtualMcpId/:branch",Ph$),$.use("/:virtualMcpId/:branch/*",Ph$),$.get("/:virtualMcpId/:branch",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await OA0(Z),Y=await $h$(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=n91({organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,branch:X.branch});return Z.body(`{"version":${JSON.stringify(Y.sha)},"token":${JSON.stringify(J)},"apiHost":${JSON.stringify(Ah$(Z))},"decofile":${Y.decofile}}`,200,{...G,"content-type":"application/json"})}catch(Q){return BA0(Z,Q)}}),$.patch("/:virtualMcpId/:branch",async(Z)=>{let X=Z.get("decofileScope"),Q=Z.var.studioContext,Y=U36.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{aP0(J)}catch(W){let K=W instanceof Error?W.message:String(W);return Z.json({error:K},400)}for(let[J,W]of Object.entries(G.set??{}))if(typeof W!=="object"||W===null||Array.isArray(W))return Z.json({error:`Block "${J}" must be a JSON object`},400);try{let J=await OA0(Z),W=await wh$(`${X.organizationId}/${X.virtualMcpId}/${X.branch}`,{client:J,branch:X.branch,packagePath:X.packagePath,coAuthor:eh(Q)},G),K=n91({organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,branch:X.branch});return Z.json({version:W,token:K,apiHost:Ah$(Z)})}catch(J){return BA0(Z,J)}}),$.post("/:virtualMcpId/:branch/publish",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await OA0(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 g4&&W.status===409))throw W;await HA0(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 g4&&J.status===409)return Z.json({error:"merge-conflict"},409);if(J instanceof g4&&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 BA0(Z,Q)}}),$.get("/:virtualMcpId/:branch/status",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await OA0(Z),Y=await Q.getDefaultBranch();if(Y===X.branch)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0});try{let{aheadBy:G,behindBy:J}=await Q.compare(Y,X.branch);return Z.json({baseBranch:Y,aheadBy:G,behindBy:J})}catch(G){if(G instanceof g4&&G.status===404)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0});throw G}}catch(Q){return BA0(Z,Q)}}),$}var F36,U36,Ph$;var Rh$=w(()=>{sP0();w8();P91();tP0();m91();v91();Dh$();zh$();l91();b_();JA0();F36=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;U36=Ju.object({set:Ju.record(Ju.string(),Ju.unknown()).optional(),delete:Ju.array(Ju.string()).optional()}).refine(($)=>Object.keys($.set??{}).length>0||($.delete?.length??0)>0,{message:"Patch must set or delete at least one block"}),Ph$=nP0(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(!N36(G))return $.json({error:`Invalid branch name: ${G}`},400);let J=X.auth?.user?.id??null;if(!J){let O=$.req.query("token");if(!($.req.method==="GET"&&!$.req.path.match(/\/(publish|status)$/)))return $.json({error:"Unauthorized"},401);if(!O||!jh$(O,{organizationId:Q.id,virtualMcpId:Y,branch:G}))return $.json({error:"Unauthorized"},401)}let W=await X.storage.virtualMcps.findById(Y);if(!W||W.organization_id!==Q.id)return $.json({error:"Virtual MCP not found"},404);let K=W.metadata??null;if(!nB0(K)||K?.fastPreview!==!0)return $.json({error:"Fast Preview is not enabled for this project"},404);let F=W.connections?.map((O)=>O.connection_id)??[],N=za(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 Ih$=($)=>{let Z=new F1;if(Z.use("*",q_),Z.route("/",FP0()),Z.route("/",lf$()),Z.route("/",ty$()),Z.route("/",iy$()),Z.route("/",mP0()),Z.route("/tools",Zg$()),Z.route("/",sy$()),Z.route("/",Ry$({kvStorage:$.kvStorage})),Z.route("/",Ay$()),Z.route("/fs",gy$({getConnection:$.getNatsConnection})),Z.route("/sandbox",Oh$()),Z.route("/decofile",Th$()),Z.route("/",ly$()),Z.route("/deco-sites",UP0()),Z.route("/sso",YP0()),Z.route("/",iP0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",ff$()),$.mountDevAssets)Z.route("/dev-assets",OP0({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("/",w_$()),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",uy$()),Z.route("/mcp",OD0()),Z.route("/mcp/self",dP0()),Z.route("/mcp",DD0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var qh$=w(()=>{w8();d61();bf$();n61();BP0();lr();c61();Ty$();Iy$();hy$();on();v61();LD0();B91();cy$();dy$();py$();oy$();ey$();D91();Xg$();L91();BD0();Bh$();Rh$()});function O36($){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 B36=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},Mh$=()=>{let $=new F1;return $.use("*",B36),$.get("/",async(Z)=>{let X=b0(),Q=X.decoSupabaseUrl,Y=X.decoSupabaseServiceKey;if(!Q||!Y)return Z.json({apps:[]});try{let G=await dZ(Q,Y,"apps?select=name,title,description,logo,category,vendors(alias,url)");return Z.json({apps:O36(G)})}catch(G){return console.error("[deco-apps] GET error:",G),Z.json({error:"Failed to fetch apps"},502)}}),$};var kh$=w(()=>{w8();I$();Wz0()});import{z as M1}from"zod";function GH($,Z="invalid_request_error",X=null,Q=null){return{error:{message:$,type:Z,param:X,code:Q}}}function R36($){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 I36($,Z,X){try{return JSON.parse($)}catch{throw new Ch$(`Invalid JSON in tool call arguments for function '${X}' (tool_call_id: ${Z}): ${$}`)}}function q36($){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:I36(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 M36($){let Z=$.map((X)=>{let Q=X.function.parameters?gY(X.function.parameters):gY({type:"object",properties:{}});return[X.function.name,R$({description:X.function.description,inputSchema:Q})]});return Object.fromEntries(Z)}function k36($){if(!$)return;return{openai:{response_format:$}}}function V36(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function Vh$($,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 Sh$($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var w36=256,D36,L36,E36,j36,z36,P36,A36,T36,Ch$,_h$,vh$;var fh$=w(()=>{P4();w8();sh();QN();D36=M1.object({type:M1.literal("function"),function:M1.object({name:M1.string(),description:M1.string().optional(),parameters:M1.record(M1.string(),M1.unknown()).optional()})}),L36=M1.object({id:M1.string(),type:M1.literal("function"),function:M1.object({name:M1.string(),arguments:M1.string()})}),E36=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(L36).optional()}),M1.object({role:M1.literal("tool"),content:M1.string(),tool_call_id:M1.string()})]),j36=M1.object({type:M1.literal("text")}),z36=M1.object({type:M1.literal("json_object")}),P36=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()})}),A36=M1.union([j36,z36,P36]),T36=M1.object({model:M1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:M1.array(E36),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(D36).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:A36.optional(),user:M1.string().optional()});Ch$=class Ch$ extends Error{constructor($){super($);this.name="MessageConversionError"}};_h$=new F1;_h$.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),X=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(GH("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(GH("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(GH("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Q=await $.req.json(),Y=T36.safeParse(Q);if(!Y.success){let L=Y.error.issues[0]??{message:"Invalid request",path:[]};return $.json(GH(`Invalid request: ${L.message}`,"invalid_request_error",L.path.length>0?L.path.join("."):null),400)}let G=Y.data,J=R36(G.model);if(!J)return $.json(GH("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)=>fD(j.providerId));if(!E)return $.json(GH("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(GH(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(K),N=q36(G.messages),U=G.tools?M36(G.tools):void 0,O=k36(G.response_format),B=V36(),D=Math.floor(Date.now()/1000);if(G.stream)return RN($,async(L)=>{let E=Vh$(F,N,U,G,O,$.req.raw.signal);try{let j=tO(E),z=!1,A=0,P="",I=async()=>{if(P.length===0)return;let k=P;P="",await L.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{content:k},finish_reason:null}]})})};for await(let k of j.fullStream){if(!z&&(k.type==="text-delta"||k.type==="tool-call"))await L.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),z=!0;if(k.type==="text-delta"){if(P+=k.text,P.length>=w36)await I()}else if(k.type==="tool-call"){await I();let q=A++;await L.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{tool_calls:[{index:q,id:k.toolCallId,type:"function",function:{name:k.toolName,arguments:JSON.stringify(k.input)}}]},finish_reason:null}]})})}else if(k.type==="finish")await I(),await L.writeSSE({data:JSON.stringify({id:B,object:"chat.completion.chunk",created:D,model:G.model,choices:[{index:0,delta:{},finish_reason:Sh$(k.finishReason)}],usage:k.totalUsage?{prompt_tokens:k.totalUsage.inputTokens??0,completion_tokens:k.totalUsage.outputTokens??0,total_tokens:k.totalUsage.totalTokens??0}:void 0})})}await I(),await L.writeSSE({data:"[DONE]"})}catch(j){let z=j;console.error("[openai-compat:stream] Error:",z.message),await L.writeSSE({data:JSON.stringify({error:{message:z.message,type:"server_error"}})})}});else{let L=Vh$(F,N,U,G,O,$.req.raw.signal),E=await pO(L),j={role:"assistant",content:E.text||null};if(E.toolCalls&&E.toolCalls.length>0)j.tool_calls=E.toolCalls.map((z)=>({id:z.toolCallId,type:"function",function:{name:z.toolName,arguments:JSON.stringify("input"in z?z.input:{})}})),j.content=null;return $.json({id:B,object:"chat.completion",created:D,model:G.model,choices:[{index:0,message:j,finish_reason:Sh$(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(GH("Request aborted","invalid_request_error"),400);if(Y.name==="MessageConversionError")return $.json(GH(Y.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",Y.message,Y.stack),$.json(GH(Y.message,"server_error"),500)}});vh$=_h$});function S36($){if(typeof $!=="object"||$===null)return!1;let X=$.githubRepo?.url;return typeof X==="string"&&X.length>0}function bh$(){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=G1(X);if(!Q)return Z.json({error:"Authentication required"},401);let G=(Z.req.query("site")??"").trim().toLowerCase();if(!uG(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||W7(H))continue;let F=await X.storage.virtualMcps.list(H.id);for(let N of F){if(Da1(N)!==G)continue;if(!S36(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 xh$=w(()=>{w8();fO()});var gh$;var yh$=w(()=>{gh$={name:"decocms",version:"4.253.1",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@nats-io/jwt":"0.0.10-5","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});function v36(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??_36}}var hh$,_36="https://ph.studio.decocms.com",uh$;var ch$=w(()=>{w8();_h0();EC();f9();I$();k61();yh$();hh$=new F1;hh$.get("/",($)=>{let Z={version:gh$.version,theme:ld1(),...RL().logo&&{logo:RL().logo},...SK()&&{internalUrl:jS1()},...b0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!b0().firecrawlApiKey,auth:ev$(),posthog:v36(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:!SK()&&b0().sandboxProviderKind==="agent-sandbox"}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});uh$=hh$});function Wu($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function t91($){return(Wu($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((X)=>X.charAt(0).toUpperCase()+X.slice(1)).join(" ")}function dh$($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(Wu($))}&sz=${Z}`}function lh$($,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 mh$($){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()?lh$(`${Y.trim().replace(/\s+/g," ")} \u2014 ${J}`,200):lh$(`How does ${X} really perform? ${J}`,200);return{title:G,description:W}}import{z as l0}from"zod";var u_,f36,b36,x36,y36,ih$;var ph$=w(()=>{u_=l0.enum(["good","bad","neutral"]),f36=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:u_.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 $})),b36=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(f36)),x36={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()},y36=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:u_.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:u_.optional()}),l0.object({template:l0.literal("stats"),stats:l0.array(l0.object({value:l0.coerce.string(),label:l0.coerce.string(),tone:u_.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:u_.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(b36).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:u_.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:u_.optional()})).min(1)})]),ih$=l0.object({...x36,template:y36})});function wA0($){let Z=[],X=[...$.sections].sort((Y,G)=>Y.position-G.position).map((Y)=>{let G=ih$.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 o91=w(()=>{ph$()});import{join as nh$}from"path";async function h36($){try{let Z=await fetch(`${sW({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(g36)});if(!Z.ok)return null;let X=await Z.json(),{deck:Q}=wA0(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()||t91($),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 u36($,Z){let X=Wu($),Q=Z?.brand?.trim()||t91(X),Y=dh$(X,128),J=`${(b0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(X)}`,{title:W,description:K}=mh$({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(`
2854
2854
  `)}function c36($,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}
2855
2855
  </head>`)}function th$($){let Z=new F1;return Z.get("/:domain/og.png",async(X)=>{let Q=Wu(X.req.param("domain")),Y=async()=>{let G=$?Bun.file(nh$($,"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(`${sW({})}/api/v2/public/diagnostics/${encodeURIComponent(Q)}/og.png`,{signal:AbortSignal.timeout(l36)}),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=$?nh$($,"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 h36(Wu(Q)),K=u36(Q,W);return X.html(c36(J,K),200,{"Cache-Control":"public, max-age=0, s-maxage=300"})}catch{return X.html(J)}}),Z}var g36=2500,l36=1e4;var oh$=w(()=>{w8();o91();gL();I$()});function Aa($,Z){return fetch(`${sW({})}${$}`,Z)}async function d36($,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 Aa(`/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}=wA0(J);return{status:W.slides.length?"ready":"empty",deck:W,scanned_at:J.scanned_at,drops:K}}var m36,qN,rh$=async($,Z)=>{if(!$.get("reportUser"))return $.json({error:"Authentication required"},401);await Z();return},ah$;var sh$=w(()=>{w8();fY();gL();o91();m36=new Set(["complete","errored","terminated","unknown"]),qN=new F1;qN.use("*",async($,Z)=>{let X=await H8.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});qN.use("/link-token/*",rh$);qN.use("/suggest",rh$);qN.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 d36(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)}});qN.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 Aa("/api/v2/diagnostics/run",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${yL({})}`},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)}});qN.get("/status",async($)=>{let Z=$.req.query("id");if(!Z)return $.json({error:"id is required"},400);try{let X=await Aa(`/api/v2/diagnostics/status?id=${encodeURIComponent(Z)}`,{headers:{Authorization:`Bearer ${yL({})}`}});if(!X.ok)return $.json({error:`status HTTP ${X.status}`},502);let Y=(await X.json()).status??"unknown",G={done:m36.has(Y),status:Y};return $.json(G)}catch{return $.json({error:"status failed"},502)}});qN.get("/link-token/:id",async($)=>{let Z=$.req.param("id");try{let X=await Aa(`/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)}});qN.get("/suggest",async($)=>{let Z=($.req.query("q")??"").trim().slice(0,64);if(Z.length<2)return $.json({suggestions:[]});try{let X=await Aa(`/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:[]})}});ah$=qN});import{createHmac as i36,timingSafeEqual as p36}from"crypto";function $u$($,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)>n36)return!1;let W=i36("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&&p36(K,F)})}function Zu$($){let Z;try{Z=JSON.parse($)}catch{return null}let X=IJ(Z),Q=IJ(IJ(X?.data)?.object);if(!X||typeof X.type!=="string"||!Q)return null;return{id:JH(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 Xu$($){switch($){case"active":case"trialing":return"active";case"past_due":return"past_due";default:return"canceled"}}function JH($){return typeof $==="string"?$:void 0}function IJ($){return typeof $==="object"&&$!==null?$:void 0}function DA0($){return typeof $==="number"?new Date($*1000):null}function s91($){return JH($)??JH(IJ($)?.id)}function t36($){return s91($.subscription)??JH(IJ(IJ($.parent)?.subscription_details)?.subscription)}function o36($){let Z=DA0($.current_period_end);if(Z)return Z;let X=IJ($.items)?.data;if(!Array.isArray(X))return null;let Q=0;for(let Y of X){let G=IJ(Y)?.current_period_end;if(typeof G==="number"&&G>Q)Q=G}return Q>0?new Date(Q*1000):null}function r91($,Z){let X=DA0($.created);return!!X&&!!Z.lastStripeEventAt&&X<Z.lastStripeEventAt}function a91($,Z){let X=DA0($.created);if(!X)return;return Z.lastStripeEventAt&&Z.lastStripeEventAt>X?void 0:X}async function r36($,Z){let X=Z.data.object;switch(Z.type){case"checkout.session.completed":case"checkout.session.async_payment_succeeded":{let Q=JH(IJ(X.metadata)?.orgId);if(!Q)return{handled:!1,reason:"no orgId"};if(JH(IJ(X.metadata)?.kind)==="topup"){if(X.mode!=="payment")return{handled:!1,reason:"topup with wrong mode"};if(JH(X.payment_status)!=="paid")return{handled:!1,reason:"payment not confirmed"};let J=JH(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(IJ(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:IJ(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(JH(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=s91(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(r91(Z,Y))return{handled:!1,reason:"stale event"};return await $.updateStripeState(Q,{stripeCustomerId:s91(X.customer),stripeSubscriptionId:G,status:"active",lastStripeEventAt:a91(Z,Y)}),{handled:!0,organizationId:Q}}case"customer.subscription.updated":case"customer.subscription.deleted":{let Q=JH(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&&r91(Z,Y))return{handled:!1,reason:"stale event"};let J=G?"canceled":Xu$(X.status);return await $.updateStripeState(Y.organizationId,{status:J,currentPeriodEnd:o36(X),...G&&{stripeSubscriptionId:null},lastStripeEventAt:a91(Z,Y)}),{handled:!0,organizationId:Y.organizationId}}case"invoice.paid":{let Q=t36(X);if(!Q)return{handled:!1,reason:"no sub id"};let Y=await $.getBillingByStripeSubscriptionId(Q);if(!Y)return{handled:!1,reason:"unknown subscription"};if(r91(Z,Y))return{handled:!1,reason:"stale event"};return await $.updateStripeState(Y.organizationId,{status:"active",currentPeriodEnd:DA0(X.period_end),lastStripeEventAt:a91(Z,Y)}),{handled:!0,organizationId:Y.organizationId}}default:return{handled:!1,reason:`unhandled event ${Z.type}`}}}function a36($,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:Xu$(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 eh$($,Z){let X=a36($,Z);if(!X)return;VY({event:X.name,organizationId:X.organizationId,...$.id?{uuid:ri1(`stripe:${$.id}:${X.name}`)}:{},...$.created?{timestamp:new Date($.created*1000)}:{},properties:X.properties})}async function Qu$($){let Z=new tW(u8().db),X=await r36(Z,$);if(!(X.handled&&X.topUp))eh$($,X);if(X.handled&&X.topUp)await yw$({organizationId:X.organizationId,amountCents:X.topUp.creditCents,referenceId:X.topUp.referenceId}),eh$($,X);if(!X.handled&&X.orphanSubscriptionId)try{await Us1(X.orphanSubscriptionId),console.error("stripe webhook: canceled orphan subscription",{subscriptionId:X.orphanSubscriptionId,eventId:$.id})}catch(Q){if(!(Q instanceof bY&&(Q.status===400||Q.status===404)))throw Q}return X}var n36=300;var Yu$=w(()=>{bG();V4();R60();nL();Fe0()});var s36=1048576,e91;var Gu$=w(()=>{w8();wN();I$();Yu$();e91=new F1;e91.post("/webhook",k9({maxSize:s36,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(!$u$(X,$.req.header("stripe-signature"),Z))return $.json({error:"invalid signature"},400);let Y=Zu$(X);if(!Y)return $.json({error:"invalid payload"},400);let G=await Qu$(Y);return console.log("stripe webhook",{eventId:Y.id,type:Y.type,livemode:Y.livemode,...G}),$.json({received:!0})})});import{timingSafeEqual as e36}from"crypto";function ZW6($,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 e36(Buffer.from(Y),Buffer.from(Q))}var $W6=5242880,$Z1;var Ju$=w(()=>{w8();wN();ip();$Z1=new F1;$Z1.post("/webhook",k9({maxSize:$W6,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(!ZW6(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 qp0())?.markTenantPoolsDirty(G,Y)??[];return $.json({ok:!0,pools:W})})});function Wu$($,Z){if(Z.startsWith("text/html")||Z.startsWith("image/svg"))$.set("Content-Security-Policy","sandbox allow-scripts allow-modals allow-same-origin")}var Ku$,XW6,QW6,Hu$;var Fu$=w(()=>{w8();N3();xy();qx();Ku$=new F1,XW6=["range","if-none-match","if-modified-since"],QW6=["content-type","content-length","content-range","accept-ranges","etag","last-modified"];Ku$.get("/:org/files/*",async($)=>{let Z=$.get("studioContext"),X=Z.organization?.id;if(!Z.auth?.user?.id){if(vh($))return $.redirect(`/login?next=${encodeURIComponent($.req.path)}`,302);throw new $$(401,{message:"Authentication required"})}if(!X)throw new $$(401,{message:"Organization context required"});let Q=$.req.path.replace(/^.*\/files\//,"");if(!Q)throw new $$(400,{message:"Missing file key"});let Y=await _n(Q,Z);if(!Y)throw new $$(503,{message:"Object storage not configured"});if(Y.startsWith("data:")&&D3()){let K=Y.match(/^data:([^;]+);base64,(.+)$/s);if(!K)throw new $$(500,{message:"Invalid data URL from storage"});let[,H,F]=K,N=Buffer.from(F,"base64"),U=new Headers({"Content-Type":H,"Cache-Control":"private, max-age=86400"});return Wu$(U,H),new Response(N,{status:200,headers:U})}let G=new Headers;for(let K of XW6){let H=$.req.header(K);if(H)G.set(K,H)}let J=await fetch(Y,{headers:G});if(J.status===403||J.status===404)throw new $$(404,{message:"File not found"});if(!J.ok&&J.status!==304&&J.status!==416)throw console.error(`[files] upstream storage error ${J.status} for key:`,Q),new $$(502,{message:"Upstream storage error"});let W=new Headers;for(let K of QW6){let H=J.headers.get(K);if(H)W.set(K,H)}return W.set("Cache-Control","private, max-age=86400"),Wu$(W,W.get("content-type")??""),new Response(J.body,{status:J.status,headers:W})});Hu$=Ku$});var Ta=_((c_)=>{var YW6=c_&&c_.__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]}),GW6=c_&&c_.__exportStar||function($,Z){for(var X in $)if(X!=="default"&&!Object.prototype.hasOwnProperty.call(Z,X))YW6(Z,$,X)};Object.defineProperty(c_,"__esModule",{value:!0});GW6(OY(),c_)});var Ou$=_((Nu$)=>{Object.defineProperty(Nu$,"__esModule",{value:!0});Nu$.version=void 0;Nu$.version="3.4.0"});var Du$=_((WH)=>{var JW6=WH&&WH.__importDefault||function($){return $&&$.__esModule?$:{default:$}};Object.defineProperty(WH,"__esModule",{value:!0});WH.NodeTransport=WH.VERSION=void 0;WH.nodeResolveHost=UW6;var r6=Ta(),WW6=z0("net"),ZZ1=z0("tls"),KW6=z0("path"),Bu$=z0("fs"),HW6=JW6(z0("dns")),FW6=Ou$();WH.VERSION=FW6.version;var NW6="nats.js";class wu${socket;version;lang;yields=[];signal=(0,r6.deferred)();closedNotification=(0,r6.deferred)();options;connected=!1;tlsName="";done=!1;closeError;constructor(){this.lang=NW6,this.version=WH.VERSION}async connect($,Z){this.tlsName=$.tlsName,this.options=Z;let{tls:X}=this.options,{handshakeFirst:Q}=X||{};try{if(Q===!0)this.socket=await this.tlsFirst($);else this.socket=await this.dial($);if(this.done)this.socket?.destroy();let Y=await this.peekInfo();(0,r6.checkOptions)(Y,Z);let{tls_required:G,tls_available:J}=Y,W=J===!0&&Z.tls!==null;if(!Q&&(G||W))this.socket=await this.startTLS();if(this.done)this.socket?.destroy();if(G&&this.socket.encrypted!==!0)throw r6.errors.InvalidArgumentError.format("tls","is not available on this server");return this.connected=!0,this.setupHandlers(),this.signal.resolve(),Promise.resolve()}catch(Y){let G=Y;if(!G)G=new r6.errors.ConnectionError("error connecting - node provided an undefined error");let{code:J}=G,W=J==="ECONNREFUSED"?new r6.errors.ConnectionError("connection refused",{cause:G}):G;throw this.socket?.destroy(),W}}dial($){let Z=(0,r6.deferred)(),X,Q=(0,WW6.createConnection)($.port,$.hostname,()=>{Z.resolve(Q),Q.removeAllListeners()});return Q.on("error",(Y)=>{X=Y}),Q.on("close",()=>{Q.removeAllListeners(),Z.reject(X)}),Q.setNoDelay(!0),Z}get isClosed(){return this.done}close($){return this._closed($,!1)}peekInfo(){let $=(0,r6.deferred)(),Z;return this.socket.on("data",(X)=>{this.yields.push(X);let Q=r6.DataBuffer.concat(...this.yields),Y=(0,r6.extractProtocolMessage)(Q);if(Y!=="")try{let G=r6.INFO.exec(Y);if(!G)throw Error("unexpected response from server");let J=JSON.parse(G[1]);$.resolve(J)}catch(G){$.reject(G)}finally{this.socket.removeAllListeners()}}),this.socket.on("error",(X)=>{Z=X}),this.socket.on("close",()=>{this.socket.removeAllListeners(),$.reject(Z)}),$}loadFile($){if(!$)return Promise.resolve();let Z=(0,r6.deferred)();try{if($=(0,KW6.resolve)($),!(0,Bu$.existsSync)($))Z.reject(Error(`${$} doesn't exist`));(0,Bu$.readFile)($,(X,Q)=>{if(X)return Z.reject(X);Z.resolve(Q)})}catch(X){Z.reject(X)}return Z}async loadClientCerts(){let $={},{certFile:Z,cert:X,caFile:Q,ca:Y,keyFile:G,key:J}=this.options.tls;try{if(Z){let W=await this.loadFile(Z);if(W)$.cert=W}else if(X)$.cert=X;if(G){let W=await this.loadFile(G);if(W)$.key=W}else if(J)$.key=J;if(Q){let W=await this.loadFile(Q);if(W)$.ca=[W]}else if(Y)$.ca=Y;return Promise.resolve($)}catch(W){return Promise.reject(W)}}async tlsFirst($){let Z,X={servername:this.tlsName,rejectUnauthorized:!0};if(this.socket)X.socket=this.socket;if(typeof this.options.tls==="object")try{let Y=await this.loadClientCerts()||{};X=(0,r6.extend)(X,this.options.tls,Y)}catch(Y){return Promise.reject(new r6.errors.ConnectionError(Y.message,{cause:Y}))}let Q=(0,r6.deferred)();try{let Y=(0,ZZ1.connect)($.port,$.hostname,X,()=>{Y.removeAllListeners(),Q.resolve(Y)});Y.on("error",(G)=>{Z=G}),Y.on("secureConnect",()=>{if(X.rejectUnauthorized===!1)return;if(!Y.authorized)throw Y.authorizationError}),Y.on("close",()=>{Q.reject(Z),Y.removeAllListeners()}),Y.setNoDelay(!0)}catch(Y){Q.reject(new r6.errors.ConnectionError(Y.message,{cause:Y}))}return Q}async startTLS(){let $,Z={socket:this.socket,servername:this.tlsName,rejectUnauthorized:!0};if(typeof this.options.tls==="object")try{let Q=await this.loadClientCerts()||{};Z=(0,r6.extend)(Z,this.options.tls,Q)}catch(Q){return Promise.reject(new r6.errors.ConnectionError(Q.message,{cause:Q}))}let X=(0,r6.deferred)();try{let Q=(0,ZZ1.connect)(Z,()=>{Q.removeAllListeners(),X.resolve(Q)});Q.on("error",(Y)=>{$=Y}),Q.on("secureConnect",()=>{if(Z.rejectUnauthorized===!1)return;if(!Q.authorized)throw Q.authorizationError}),Q.on("close",()=>{X.reject($),Q.removeAllListeners()})}catch(Q){X.reject(new r6.errors.ConnectionError(Q.message,{cause:Q}))}return X}setupHandlers(){let $;this.socket.on("data",(Z)=>{return this.yields.push(Z),this.signal.resolve()}),this.socket.on("error",(Z)=>{$=Z}),this.socket.on("end",()=>{if(this.socket?.destroyed)return;this.socket?.write(new Uint8Array(0),()=>{this.socket?.end()})}),this.socket.on("close",()=>{this._closed($,!1)})}[Symbol.asyncIterator](){return this.iterate()}async*iterate(){while(!0){if(this.yields.length===0)await this.signal;let $=this.yields;this.yields=[];for(let Z=0;Z<$.length;Z++){if(this.options.debug)console.info(`> ${(0,r6.render)($[Z])}`);yield $[Z]}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,r6.deferred)()}}discard(){if(this.done=!0,this.socket)try{this.socket.removeAllListeners(),this.socket.destroy()}catch{}}disconnect(){this._closed(void 0,!0).then().catch()}isEncrypted(){return this.socket instanceof ZZ1.TLSSocket}_send($){if(this.isClosed||this.socket===void 0)return Promise.resolve();if(this.options.debug)console.info(`< ${(0,r6.render)($)}`);let Z=(0,r6.deferred)();try{this.socket.write($,(X)=>{if(X){if(this.options.debug)console.error(`!!! ${(0,r6.render)($)}: ${X}`);return Z.reject(X)}return Z.resolve()})}catch(X){if(this.options.debug)console.error(`!!! ${(0,r6.render)($)}: ${X}`);Z.reject(X)}return Z}send($){this._send($).catch((X)=>{})}async _closed($,Z=!0){if(!this.connected)return;if(this.done){this.socket?.destroy();return}if(this.closeError=$,!$&&this.socket&&Z)try{await this._send(new TextEncoder().encode(""))}catch(X){if(this.options.debug)console.log("transport close terminated with an error",X)}try{if(this.socket)this.socket.removeAllListeners(),this.socket?.destroy(),this.socket=void 0}catch(X){console.log(X)}this.done=!0,this.closedNotification.resolve(this.closeError)}closed(){return this.closedNotification}}WH.NodeTransport=wu$;function UW6($){let Z=(0,r6.deferred)();return HW6.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 Pu$=_((zu$)=>{Object.defineProperty(zu$,"__esModule",{value:!0});zu$.connect=OW6;var Lu$=Du$(),Eu$=Ta(),ju$=Ta();function OW6($={}){if((0,ju$.hasWsProtocol)($))return Promise.reject(ju$.errors.InvalidArgumentError.format("servers","node client doesn't support websockets, use the 'wsconnect' function instead"));return(0,Eu$.setTransportFactory)({factory:()=>{return new Lu$.NodeTransport},dnsResolveFn:Lu$.nodeResolveHost}),Eu$.NatsConnectionImpl.connect($)}});var Au$=_((MN)=>{var wW6=MN&&MN.__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]}),DW6=MN&&MN.__exportStar||function($,Z){for(var X in $)if(X!=="default"&&!Object.prototype.hasOwnProperty.call(Z,X))wW6(Z,$,X)};Object.defineProperty(MN,"__esModule",{value:!0});MN.connect=void 0;var LW6=Pu$();Object.defineProperty(MN,"connect",{enumerable:!0,get:function(){return LW6.connect}});DW6(Ta(),MN)});function qu$($){let Z=$?.connectFn??PW6,X=null,Q=null,Y=!1,G=!1,J=!1,W=[];function K(){return X!==null&&!X.isClosed()&&!X.isDraining()&&!J}function H(){console.log(`[NatsProvider] fireReady: ${W.length} callbacks`);for(let U of W)try{U()}catch{}}function F(U){(async()=>{for await(let O of U.status())if(O.type==="disconnect")console.log("[NatsProvider] Disconnected"),J=!0;else if(O.type==="reconnect")console.log("[NatsProvider] Reconnected, re-firing ready callbacks"),J=!1,Q=null,H()})().catch(()=>{})}async function N(U,O){let B=0;while(!G)try{X=await Z({servers:U,timeout:zW6,reconnect:!0,maxReconnectAttempts:-1,...O?{authenticator:O}:{}}),console.log(`[NatsProvider] Connected to ${X.getServer()} after ${B} attempt(s)`),Q=null,J=!1,F(X),H();return}catch{B++;let D=nZ(jW6,EW6,B-1,2,0.5);await k$(D)}}return{init(U,O){if(Y)return;Y=!0,G=!1;let B=O?.creds?Tu$.credsAuthenticator(new TextEncoder().encode(O.creds)):void 0;N(U,B).catch(()=>{})},isConnected(){return K()},getConnection(){return K()?X:null},getJetStream(){if(!K())return null;if(!Q)Q=Iu$.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 PW6($){return Ru$.connect($)}var Tu$,Ru$,Iu$,EW6=100,jW6=3000,zW6=3000;var Mu$=w(()=>{u4();Tu$=V(_u(),1),Ru$=V(Au$(),1),Iu$=V(uw(),1)});function XZ1($,Z){return`${$}.${Z}`}class QZ1{cache;constructor($){this.cache=jh({ttlMs:$?.ttlMs??AW6,maxSize:$?.maxSize??TW6})}async get($,Z){return this.cache.get(XZ1($,Z))??null}async set($,Z,X){this.cache.set(XZ1($,Z),X)}async invalidate($,Z){this.cache.delete(XZ1($,Z))}teardown(){this.cache.clear()}}var AW6=600000,TW6=5000;var ku$=()=>{};function LA0($,Z){return`${$}:${Z}`}function YZ1($){let Z=jh({ttlMs:$?.ttlMs??RW6,maxSize:$?.maxSize??IW6}),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(Vu$,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(LA0(K,H))},set(K,H,F){Z.set(LA0(K,H),F)},invalidate(K,H){Z.delete(LA0(K,H)),W(K,H)},start(){if(J)return;let K=X?.();if(!K)return;J=K.subscribe(Vu$),(async()=>{for await(let H of J)try{let F=JSON.parse(G.decode(H.data));if(F.originId===Q)continue;Z.delete(LA0(F.organizationId,F.keyId))}catch{}})().catch(console.error)},teardown(){J?.unsubscribe(),J=null,Z.clear()}}}var Vu$="studio.ai-provider-keys.invalidate",RW6=30000,IW6=5000;var Su$=()=>{};class GZ1{options;subscriptions=[];onCancel=null;encoder=new TextEncoder;originId=crypto.randomUUID();seenMessageIds=new Set;constructor($){this.options=$}async start($){if($)this.onCancel=$;if(this.subscriptions.length>0)return;if(!this.onCancel)return;let Z=this.options.getConnection();if(!Z)return;let X=new TextDecoder;this.subscriptions=Cu$.map((Q)=>Z.subscribe(Q));for(let Q of this.subscriptions)(async()=>{for await(let Y of Q)try{let G=JSON.parse(X.decode(Y.data));if(G.originId===this.originId)continue;if(G.messageId&&this.hasSeen(G.messageId))continue;this.onCancel?.(G.taskId)}catch{}})().catch(console.error)}broadcast($){if(/[.*>\s]/.test($)){console.warn("[NatsCancelBroadcast] Invalid threadId, skipping broadcast");return}this.onCancel?.($);try{let Z=this.options.getConnection();if(!Z)return;let X=this.encoder.encode(JSON.stringify({taskId:$,originId:this.originId,messageId:crypto.randomUUID()}));for(let Q of Cu$)Z.publish(Q,X)}catch(Z){console.warn("[NatsCancelBroadcast] Publish failed (non-critical):",Z)}}publishControlFrame($,Z){}async stop(){for(let $ of this.subscriptions)$.unsubscribe();this.subscriptions=[],this.seenMessageIds.clear(),this.onCancel=null}hasSeen($){if(this.seenMessageIds.has($))return!0;if(this.seenMessageIds.add($),this.seenMessageIds.size>1000){let Z=this.seenMessageIds.values().next().value;if(Z)this.seenMessageIds.delete(Z)}return!1}}var Cu$;var _u$=w(()=>{Cu$=["studio.decopilot.cancel","mesh.decopilot.cancel"]});var vu$=($)=>{let Z;return()=>Z??=$()},JZ1,WZ1;var fu$=w(()=>{R6();JZ1=vu$(()=>w$.createHistogram("decopilot.stream.encode_ms",{description:"Per-chunk JSON.stringify+encode time for decopilot stream",unit:"ms"})),WZ1=vu$(()=>w$.createCounter("decopilot.stream.published_chunks",{description:"Logical decopilot stream chunks published to JetStream",unit:"{chunks}"}))});function _W6(){return{name:pF,subjects:[`${lw0}.>`],storage:KW.StorageType.File,max_age:kW6,max_bytes:SW6,max_msgs_per_subject:CW6,discard:KW.DiscardPolicy.Old,retention:KW.RetentionPolicy.Limits,duplicate_window:VW6,num_replicas:1}}class yu${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 bu$($){let Z=xu$.headers();for(let[X,Q]of Object.entries($))Z.set(X,Q);return Z}function xW6($,Z){let X=0;return{publish(Q,Y,G,J){Q.publish(Y,G,J?{headers:J}:void 0).catch((W)=>{if(X++,MW6().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 yW6($){if(!($ instanceof Error))return!1;if($.name==="TimeoutError")return!0;return/timeout|no responders|503/i.test($.message)}class KZ1{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=_W6(),X=await v5(async()=>{let Q=this.options.getJetStreamManager?await this.options.getJetStreamManager():await KW.jetstreamManager($);try{await Q.streams.info(pF),await Q.streams.update(pF,Z)}catch(Y){if(Y instanceof Error&&Y.message.includes("stream not found"))await Q.streams.add(Z);else if(Y instanceof Error&&/can ?not change.*storage|storage type/i.test(Y.message))await Q.streams.delete(pF),await Q.streams.add(Z);else throw Y}return Q},{maxAttempts:5,minTimeout:250,maxTimeout:4000,jitter:0.5,isRetriable:yW6});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=xW6(Z,Q),J=!1,W=()=>{if(J)return;J=!0;let H=cF$(Z);Y.publish(H.subject,H.data).catch(()=>{})};X.addEventListener("abort",W,{once:!0});let K=(H)=>{let F=performance.now(),N=_o0(H,{runId:Z}),U=performance.now()-F;if(JZ1().record(U),WZ1().add(1,{"org.id":Q??"unknown"}),bW6?.record(U,N.reduce((O,B)=>O+B.data.length,0)),N.length===0){console.warn(`[Decopilot] dropping oversized stream chunk for thread ${Z}`);return}for(let O of N)G.publish(Y,O.subject,O.data,O.headers?bu$(O.headers):void 0)};return(async()=>{let H=$.getReader(),F=0,N=0,U;try{while(!0){let{done:O,value:B}=await H.read();if(O)break;if(K(B),N++,++F>=64)F=0,await new Promise((D)=>setImmediate(D))}}catch(O){U=O,console.warn(`[Decopilot] stream pump error for thread ${Z}:`,O?.message??O)}finally{if(H.releaseLock(),W(),fW6)console.warn(JSON.stringify({msg:"decopilot-stream-diag",event:"pump-done",taskId:Z,publishedChunks:N,publishErrors:G.errorCount}))}if(U!==void 0)throw U})()}async publishRawChunk($,Z,X){let Q=this.js;if(!Q)return!1;let Y=performance.now(),G=_o0(Z,{runId:$,dedup:X});if(JZ1().record(performance.now()-Y),WZ1().add(1),G.length===0)return console.warn(`[Decopilot] dropping oversized raw chunk for thread ${$} (> MAX_CHUNKED_BYTES)`),!0;for(let J of G)await Q.publish(J.subject,J.data,{...J.headers?{headers:bu$(J.headers)}:{},...J.msgId?{msgID:J.msgId}:{}});return!0}async publishDone($,Z,X){let Q=this.js;if(!Q)return!1;let Y=uF$({runId:$,fenceToken:Z,finalSeq:X});return await Q.publish(Y.subject,Y.data,{msgID:Y.msgId}),!0}async createTailStream($,Z,X){let Q=this.js;if(!Q)return console.warn(`[Decopilot] createTailStream: JetStream client unavailable for thread ${$}; no live tail`),null;let Y=X?.deliverPolicy==="new"?KW.DeliverPolicy.New:KW.DeliverPolicy.All,G=X?.closeOnDone??!1,J=_B($),W;try{W=await(await Q.consumers.get(pF,{filter_subjects:J,deliver_policy:Y})).consume()}catch(D){return console.warn("[Decopilot] JetStream tail unavailable (non-critical):",D?.message??D),null}let F=nw0({messages:async function*(){try{for await(let D of W)yield{subject:D.subject,data:D.data,headers:D.headers}}finally{W.stop()}}(),onCancel:()=>W.stop()}).pipeThrough(dw0()).pipeThrough(mw0()).getReader(),N=!1,U=()=>{if(N)return;N=!0;try{F.releaseLock()}catch{}},O=!1,B=()=>{if(O)return;O=!0,W.stop(),F.cancel().catch(()=>{}),U()};return Z?.addEventListener("abort",B,{once:!0}),new ReadableStream({async pull(D){for(;;){let{done:L,value:E}=await F.read();if(L){B(),D.close();return}let j=E;if(j.kind==="done"){if(G){B(),D.close();return}continue}D.enqueue(j.chunk);return}},cancel(){B()}})}purge($){if(!this.jsm)return;this.jsm.streams.purge(pF,{filter:_B($)}).catch(()=>{})}teardown(){this.js=null,this.jsm=null}}var KW,xu$,qW6=($)=>{let Z;return()=>Z??=$()},MW6,kW6=86400000000000,VW6=120000000000,SW6=4294967296,CW6=500000,vW6,fW6,bW6;var gu$=w(()=>{u4();vo0();tw0();iw0();R6();fu$();KW=V(uw(),1),xu$=V(_u(),1),MW6=qW6(()=>w$.createCounter("decopilot.stream.publish_errors",{description:"Number of JetStream publish failures for decopilot stream chunks",unit:"{errors}"}));vW6=process.env.STREAM_ENCODE_TRACE==="1",fW6=process.env.DECOPILOT_STREAM_TRACE==="1";bW6=vW6?new yu$:null});function EA0($,Z,X,Q){if(!Q)return!1;return $.emit(Z,CW(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 hu$=w(()=>{P8()});class HZ1{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 uu$($,Z,X){let Q=Z.organizationId;if(Z.status!=="in_review")return!1;if(!br(X))return!1;if(await $.storage.taskBoard.hasHumanRejectedDone(Z.id,Q))return!1;let Y=await $.storage.taskBoard.update(Z.id,Q,{status:"done"},Z.updatedBy);return await v6($,{taskBoardItemId:Z.id,action:"status_changed",actorId:null,data:{from:Z.status,to:"done",reason:"pr_merged"}}),F8(Q,Y),console.log(`[task-board-review-sweeper] ${Z.id}: linked PR already merged \u2014 moved to done`),!0}var cu$=w(()=>{$Q();xr();l5()});function mW6($){return $ instanceof n7}function iW6($,Z){return Z-$>=lW6}class FZ1{taskBoard;contextFactory;billing;options;timer=null;running=!1;cursor=null;constructor($,Z,X,Q={}){this.taskBoard=$;this.contextFactory=Z;this.billing=X;this.options=Q}start(){if(this.timer)return;let $=this.options.intervalMs??gW6;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??uW6,X=this.options.itemIntervalMs??hW6,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()-$t0),St0);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()-dW6));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 kt0(this.taskBoard,Y,Q),await Vt0(this.taskBoard,this.billing,Y,Q)}catch(G){console.error(`[task-board-review-sweeper] unhandled-failure reaction for ${X} failed`,G)}}async dispatchDueRetries($){let Z=0,X=await this.taskBoard.listItemsDueForRetry($,new Date);for(let{id:Q,organizationId:Y,attempts:G}of X)try{if(!await this.taskBoard.claimDueRetry(Q,Y,new Date))continue;let J=await this.taskBoard.getById(Q,Y);if(!J||J.status!=="in_progress"||J.assigneeId!==t8)continue;let W=await this.contextFactory(Y,J.assignedBy??J.createdBy);if(!W)continue;await iF(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),mW6(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()+cW6)).catch((W)=>console.error(`[task-board-review-sweeper] re-arming ${Q} failed`,W))}return Z}async returnToTodo($,Z,X){try{let Q=await this.taskBoard.getById($,Z);if(!Q||Q.status!=="in_progress")return;let Y=await this.taskBoard.returnToTodoAfterFailure($,Z,Q.updatedBy);if(!Y)return;await this.taskBoard.recordActivity({taskBoardItemId:$,action:"status_changed",actorId:null,data:{from:"in_progress",to:"todo",reason:X}}).catch(()=>{}),F8(Z,Y)}catch(Q){console.error(`[task-board-review-sweeper] returning ${$} to todo failed`,Q)}}async handOffReviewWithoutPr($,Z){let X=await this.taskBoard.listActivity(Z.id,Z.organizationId);if(!iW6(EF(X),Date.now()))return;await VK($,Z,"no pull request is linked to this task \u2014 there is nothing for a "+"reviewer to review")}async reconcileItem($,Z,X){if(!await this.taskBoard.claimSweep($,Z,X))return!1;let Q=await this.taskBoard.getById($,Z);if(!Q)return!1;if(Q.status!=="in_review")return!1;let Y=Q.assigneeId===t8,G=await this.taskBoard.listPrs($,Z),J=await this.contextFactory(Z,Q.assignedBy??Q.createdBy);if(!J)return!1;if(G.length===0){if(Y)await this.handOffReviewWithoutPr(J,Q);return!1}let W=await Promise.all(G.map(async(K)=>({...K,...await fy(Z,K)})));if(W.every((K)=>K.state===null))console.warn(`[task-board-review-sweeper] ${$}: no live PR state from GitHub (${W.length} PR(s)) \u2014 proceeding on unknown`);if(await uu$(J,Q,W.map((K)=>K.merged)))return!0;if(await MN$(J,Q))return!0;if(!Y)return!1;if(!rt0(W))return!1;return await Uw0(J,Q,{previewMatchesHead:at0(W)}),!0}dispose(){if(this.timer)clearInterval(this.timer),this.timer=null}}var gW6=60000,hW6=300000,uW6=50,cW6=60000,lW6=900000,dW6=120000;var lu$=w(()=>{j9();ct0();lF();dn();cu$();l5();z3();Ct0();l3();kn()});import{readdir as pW6,rm as jA0}from"fs/promises";import{join as zA0}from"path";async function PA0($){let Z=new Date;Z.setUTCDate(Z.getUTCDate()-nW6),Z.setUTCHours(0,0,0,0);let X=0;try{let Q=await l_($);for(let Y of Q)if(/^\d{4}$/.test(Y))X+=await du$($,Y,Z);else if(!Y.startsWith(".")){let G=zA0($,Y),J=await l_(G);for(let K of J){if(!/^\d{4}$/.test(K))continue;X+=await du$(G,K,Z)}if((await l_(G)).length===0)await jA0(G,{recursive:!0,force:!0})}}catch(Q){console.warn("monitoring retention cleanup failed:",Q)}return X}async function du$($,Z,X){let Q=0,Y=zA0($,Z),G=await l_(Y);for(let W of G){if(!/^\d{2}$/.test(W))continue;let K=zA0(Y,W),H=await l_(K);for(let N of H){if(!/^\d{2}$/.test(N))continue;let U=new Date(`${Z}-${W}-${N}T00:00:00Z`);if(isNaN(U.getTime()))continue;if(U<X){let O=zA0(K,N);await jA0(O,{recursive:!0,force:!0}),Q++}}if((await l_(K)).length===0)await jA0(K,{recursive:!0,force:!0})}if((await l_(Y)).length===0)await jA0(Y,{recursive:!0,force:!0});return Q}async function l_($){try{return(await pW6($)).filter((X)=>!X.startsWith("."))}catch{return[]}}var nW6=30;var NZ1=()=>{};import{DBOS as UZ1,SchedulerMode as tW6}from"@dbos-inc/dbos-sdk";async function rW6(){let $=[VJ(),d_(),NH()],Z=0;for(let X of $)try{Z+=await PA0(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 aW6($,Z){await UZ1.runStep(()=>rW6(),{name:"monitoringRetention"})}function iu$(){if(mu$)return;mu$=!0;let $=UZ1.registerWorkflow(aW6,{name:"monitoringRetentionWorkflow"});UZ1.registerScheduled($,{name:"monitoringRetentionWorkflow",crontab:oW6,mode:tW6.ExactlyOncePerIntervalWhenActive})}var oW6="23 4 * * *",mu$=!1;var pu$=w(()=>{HY();NZ1()});function nu$($){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 XJ.create();Y.auth.user={id:X,role:Q.role},Y.organization={id:Q.orgId,slug:Q.orgSlug,name:Q.orgName};let G=await N61($.db,Z,Q.role);return Y.boundAuth=F61({auth:Y.authInstance,headers:new Headers,role:Q.role,permissions:G,userId:X}),Y.access=new zL(X,void 0,Y.boundAuth,Q.role,"self"),MB(Y,{id:Q.orgId,slug:Q.orgSlug}),Y}}var tu$=w(()=>{PL();KC()});function sW6(){return{services:[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}],migrationsStatus:"pending",serverUrl:null,logs:[]}}function $K6(){for(let $ of eW6)$()}function ou$($){let Z=[...OZ1.logs,$];OZ1={...OZ1,logs:Z.length>500?Z.slice(-500):Z},$K6()}function BZ1(){return ZK6}var OZ1,eW6,ZK6=!1;var wZ1=w(()=>{OZ1=sW6(),eW6=new Set});import{EventEmitter as XK6}from"events";var DZ1;var ru$=w(()=>{wZ1();DZ1=new XK6;DZ1.on("request",($)=>{ou$($)})});function au$(){return async($,Z)=>{let X=Date.now(),Q=$.req.method,Y=$.req.path;if(Y==="/api/auth/get-session"||Y.includes("favicon")){await Z();return}let G="",J=!1;if(Y.startsWith("/mcp")&&Q==="POST"){J=!0;try{if($.req.header("Content-Type")?.includes("application/json")){let U=await $.req.raw.clone().json();if(U.method==="tools/call"&&U.params?.name){let O=Ku(U.params.name),B=U.params.arguments||{},D=Object.keys(B).map((E)=>Ku(E)),L=D.length>0?D.slice(0,3).join(",")+(D.length>3?"\u2026":""):"";G=`${G5.tool}${O}${G5.dim}(${L})${G5.reset}`}else if(U.method)G=`${G5.dim}${Ku(U.method)}${G5.reset}`}}catch{}}let W=Ku(Y);if(Y.startsWith("/mcp/conn_")){let F=Y.split("/")[2]??"";W=`/mcp/${G5.mcp}${Ku(F.slice(0,12))}\u2026${G5.reset}`}else if(Y==="/mcp")W=`${G5.mcp}/mcp${G5.reset}`;else if(Y==="/mcp/registry")W=`${G5.mcp}/mcp/registry${G5.reset}`;let K=YK6(Q),H=J?"\u25C0":"\u2190";if(!BZ1())console.log(`${G5.dim}${H}${G5.reset} ${K}${Q}${G5.reset} ${W}${G?` ${G}`:""}`);try{await Z()}finally{let F=Date.now()-X,N=$.res.status,U=QK6(N),O=F<1000?`${F}ms`:`${(F/1000).toFixed(1)}s`,B=J?"\u25B6":"\u2192";if(!BZ1())console.log(`${G5.dim}${B}${G5.reset} ${K}${Q}${G5.reset} ${W}${G?` ${G}`:""} ${U}${N}${G5.reset} ${G5.duration}${O}${G5.reset}`);DZ1.emit("request",{method:Q,path:Ku(Y),status:N,duration:F,timestamp:new Date})}}}var G5,QK6=($)=>{if($>=500)return G5.serverError;if($>=400)return G5.clientError;if($>=300)return G5.redirect;return G5.ok},YK6=($)=>{return G5[$]||G5.reset},Ku=($)=>{return $.replace(/\r/g,"").replace(/\n/g,"").replace(/\x1b\[[0-9;]*m/g,"").replace(/[\x00-\x1f\x7f-\x9f]/g,"")};var su$=w(()=>{wZ1();ru$();G5={reset:"\x1B[0m",dim:"\x1B[2m",bold:"\x1B[1m",GET:"\x1B[36m",POST:"\x1B[33m",PUT:"\x1B[35m",DELETE:"\x1B[31m",ok:"\x1B[32m",redirect:"\x1B[36m",clientError:"\x1B[33m",serverError:"\x1B[31m",mcp:"\x1B[35m",tool:"\x1B[96m",duration:"\x1B[90m"}});import{createHmac as Xc$}from"crypto";import{mkdir as GK6,readdir as JK6,rm as eu$,stat as Qc$}from"fs/promises";import{join as EZ1,relative as WK6}from"path";import{z as P$}from"zod";function Gc$($){let Z=$.replace(/[^a-zA-Z0-9_-]/g,"_");return EZ1(KK6,Z)}function Jc$($){return $.replace(/^\/+/,"").replace(/\.\./g,"")}function LZ1($,Z){let X=Gc$($),Q=Jc$(Z);return EZ1(X,Q)}function HK6($,Z,X,Q){let Y=b0().encryptionKey||"dev-secret",G=`${$}:${Z}:${X}:${Q}`;return Xc$("sha256",Y).update(G).digest("hex")}function Zc$($,Z,X,Q,Y){let G=Math.floor(Date.now()/1000)+Q,J=HK6(Z,X,G,Y),W=new URL(`/api/dev-assets/${Z}/${Jc$(X)}`,$);return W.searchParams.set("expires",G.toString()),W.searchParams.set("signature",J),W.searchParams.set("method",Y),W.toString()}function Wc$($,Z,X){let Q=`${$}:${Z.getTime()}:${X}`;return`"${Xc$("md5","etag").update(Q).digest("hex")}"`}async function Kc$($,Z,X,Q,Y){try{let G=await JK6($,{withFileTypes:!0});for(let J of G){let W=EZ1($,J.name),H=WK6(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 Kc$(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 Qc$(W);Y.objects.push({key:H,size:F.size,lastModified:F.mtime.toISOString(),etag:Wc$(W,F.mtime,F.size)})}catch{}}}}catch{}}function Hc$($,Z){let Q=t($).id;return[{name:"LIST_OBJECTS",description:"List objects in the local assets directory with pagination support",inputSchema:P$.object({prefix:P$.string().optional(),maxKeys:P$.number().optional().default(1000),continuationToken:P$.string().optional(),delimiter:P$.string().optional()}),outputSchema:P$.object({objects:P$.array(P$.object({key:P$.string(),size:P$.number(),lastModified:P$.string(),etag:P$.string()})),nextContinuationToken:P$.string().optional(),isTruncated:P$.boolean(),commonPrefixes:P$.array(P$.string()).optional()}),handler:async(Y)=>{let G=Y,J=G.prefix||"",W=G.maxKeys??1000,K=G.delimiter,H=G.continuationToken,F=Gc$(Q);await GK6(F,{recursive:!0});let N={objects:[],commonPrefixes:new Set};await Kc$(F,F,J,K,N),N.objects.sort((L,E)=>L.key.localeCompare(E.key));let U=0;if(H){if(U=N.objects.findIndex((L)=>L.key>H),U===-1)U=N.objects.length}let O=N.objects.slice(U,U+W),B=U+W<N.objects.length,D=B?O[O.length-1]?.key:void 0;return{objects:O,isTruncated:B,nextContinuationToken:D,commonPrefixes:Array.from(N.commonPrefixes).sort()}}},{name:"GET_OBJECT_METADATA",description:"Get metadata for a file in the local assets directory",inputSchema:P$.object({key:P$.string()}),outputSchema:P$.object({contentType:P$.string().optional(),contentLength:P$.number(),lastModified:P$.string(),etag:P$.string(),metadata:P$.record(P$.string(),P$.string()).optional()}),handler:async(Y)=>{let G=Y,J=LZ1(Q,G.key),W=await Qc$(J);return{contentType:o61(G.key),contentLength:W.size,lastModified:W.mtime.toISOString(),etag:Wc$(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??$c$;return{url:Zc$(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??$c$;return{url:Zc$(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=LZ1(Q,G.key);try{return await eu$(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=LZ1(Q,K);try{await eu$(H),J.push(K)}catch(F){W.push({key:K,message:F instanceof Error?F.message:"Unknown error"})}})),{deleted:J,errors:W}}}]}async function jZ1($,Z,X){let Q=Hc$(Z,X),Y=new gW({name:"dev-assets-mcp",version:"1.0.0"},{capabilities:{tools:{}},jsonSchemaValidator:F5});for(let J of Q){let W="shape"in J.inputSchema?J.inputSchema.shape:P$.object({}).shape,K=J.outputSchema&&"shape"in J.outputSchema?J.outputSchema.shape:P$.object({}).shape;Y.registerTool(J.name,{description:J.description??"",inputSchema:W,outputSchema:K,annotations:J.annotations,_meta:J._meta},async(H)=>{try{let F=await J.handler(H);return{content:[{type:"text",text:JSON.stringify(F)}],structuredContent:F}}catch(F){return{content:[{type:"text",text:`Error: ${F.message}`}],isError:!0}}})}let G=new ZQ({enableJsonResponse:$.headers.get("Accept")?.includes("application/json")??!1});return await Y.connect(G),HJ(Y,G,$,"mcp:dev-assets")}async function Fc$($,Z,X,Q){let G=Hc$(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 KK6="./data/assets",$c$=3600,Yc$,Nc$;var Uc$=w(()=>{I$();oy();w8();Zd();IC();vX();BP0();Yc$=new F1;Yc$.all("/",async($)=>{let Z=$.get("studioContext"),X=new URL($.req.url),Q=`${X.protocol}//${X.host}`;return jZ1($.req.raw,Z,Q)});Nc$=Yc$});var Oc$={};G4(Oc$,{mountDevRoutes:()=>FK6});function FK6($,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 jZ1(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 Fc$(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",Nc$);let X=new F1;X.use("*",JW({mountPath:"/api/dev-assets"})),X.route("/",OP0({orgFromPath:!1})),$.route("/api/dev-assets",X)}var Bc$=w(()=>{w8();l61();BP0();Uc$()});import{sql as NK6}from"kysely";import{randomUUID as wc$}from"crypto";import{z as UK6}from"zod";async function BK6($){let Z=new Date().toISOString(),X=wc$(),Q=m4.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:wc$(),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 NK6`SELECT
2856
2856
  pg_notify('studio_events', ${X}),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "decocms",
3
- "version": "4.253.0",
3
+ "version": "4.253.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{c as B,b as L,j as r}from"./index-CzcLVdds.js";import{I as A}from"./input-CgelyuM7.js";import{L as P}from"./label-Dvnf0feU.js";import{S as R,a as V,b as z,c as J,d as O}from"./select-Czw8e7ON.js";import{T as D}from"./textarea-DcfHRbIa.js";import{F as M,T as $,J as q,V as G,a0 as H}from"./index-CuCSQaJ9.js";import{s as F}from"./primitives-BhoyIjg_.js";import{u as Q}from"./use-autosave-HRUnqOmY.js";import"./Check-D_9UblFe.js";import"./ChevronDown-q-BDTE1a.js";import"./ChevronUp-BacGGupp.js";import"./ArrowUp-C9quT3vr.js";import"./chat-context-B5O3LrXl.js";import"./tab-id-y2UEhF46.js";import"./dialog-BnYOWv1V.js";import"./Copy01-pzrzel7S.js";import"./Download01-BSl0a_Zn.js";import"./hooks-DZORtnpm.js";import"./use-mcp-client-Nl7jMP-w.js";import"./constants-_08zpzmT.js";import"./auth-X1MIUPaZ.js";import"./decopilot-sse-pool-Cvt6e7r9.js";import"./backoff-CrEUbyZT.js";import"./delay-CnY5UFtP.js";import"./use-is-desktop-app-BNujXJc_.js";import"./use-virtual-mcp-Qsmk-Li1.js";import"./use-ai-providers-CTaiOWxl.js";import"./use-decopilot-events-DsFgyl9p.js";import"./use-organization-settings-ALGjoNhu.js";import"./automation-runs-CtItpnbR.js";import"./agent-icon-B-qYByRc.js";import"./AlertCircle-QRvupulp.js";import"./Tool01-CrNXzXQW.js";import"./ArrowLeft-B5MHfAc9.js";import"./Tool02-D_KV3wgq.js";import"./XCircle-9-Hs99HF.js";import"./TrendUp01-DXDuqLu0.js";import"./ZapSquare-4nM0D99S.js";import"./Users03-CbPlXAXd.js";import"./CheckCircle-Cy6SdoFE.js";import"./ChevronRight-CuobrFWw.js";import"./ChevronSelectorVertical-BcFPQB0k.js";import"./DotsVertical-o1GHxv-O.js";import"./Stars02-DLN9VN0K.js";import"./UserSquare-C-beLoyR.js";import"./CreditCard01-CpM7NKRX.js";import"./Settings02-C53ZHmtS.js";import"./Eye-Bj5mHV4n.js";import"./FilterLines-DIklhgSj.js";import"./Share07-CmibR8O_.js";import"./Globe01-DjttPvlo.js";import"./Globe04-Du02Sz3e.js";import"./SwitchHorizontal01-2UlAne4E.js";import"./HardDrive-BqmgISbb.js";import"./Key01-Jr4ZErv5.js";import"./LinkExternal01-D26mL5EB.js";import"./LockUnlocked01-e3NzZWP7.js";import"./LogOut01-C2lMNeV5.js";import"./Monitor01-1Nj95W_q.js";import"./Sun-oAlH4Et6.js";import"./Palette-Dypc2-1c.js";import"./Play-CjHdlkgd.js";import"./Plus-D3gVZHV3.js";import"./SearchLg-wR1sB7EA.js";import"./SearchMd-CtZAfK8E.js";import"./Shield01-aty-BQPO.js";import"./Stars01-C-HncgpH.js";import"./Trash01-DjBUHDUL.js";import"./Upload01-84XWvjLa.js";import"./User01-PXX2g5Cu.js";import"./Users01-Da4R3QxE.js";import"./XClose-DcETJU_8.js";import"./Zap-ZIyGqf5L.js";import"./useInfiniteQuery-Niu3Iyqd.js";import"./use-infinite-scroll-CLh0uciU.js";import"./use-connection-CxlxZXew.js";import"./table-BhmhDJ4F.js";import"./empty-state-DgpXFEpT.js";import"./use-members-BhvCwErg.js";import"./use-org-auth-client-D5LQtapF.js";import"./use-clock-tick-B09DIw8S.js";import"./use-automations-BqdBb32F.js";import"./useSuspenseInfiniteQuery-IqOl9p5d.js";import"./avatar-QtF_6_2t.js";import"./format-time-BnbuEtat.js";import"./differenceInSeconds-NQ4PDo0z.js";import"./use-copy-Dmwl1VxR.js";import"./monaco-editor-CsC4XPkJ.js";import"./spinner-CzB_jOUK.js";import"./types-B6aVwO4P.js";import"./shell-layout-BKnL_FxA.js";import"./required-auth-layout-BM2rQ75_.js";import"./use-org-sso-BZeg8Kd0.js";import"./integration-icon-DzMUF0dd.js";import"./use-navigate-to-agent-D-SPcarg.js";import"./reusable-new-chat-CouMjkYR.js";import"./chart-D-Syy_FF.js";import"./index-CZ5dXTGz.js";import"./form-CvSGLXDv.js";import"./file-type-icon-C4bZM4LI.js";import"./drawer-CYg0htVn.js";import"./collection-search-DU8GH5Z3.js";import"./deco-site-production-url-BjY4ZYd-.js";import"./tabs-BCUMuslr.js";import"./toggle-group-BLeLfUJ1.js";import"./use-commerce-diagnostic-CYSLePUq.js";import"./popover-CBGKD0s7.js";import"./self-tool-result-BIIdVkKE.js";import"./alert-dialog-CBk8lpg7.js";import"./extract-connection-data-Z1nXcHUN.js";import"./metadata-dUsYcpuu.js";import"./provision-repo-scoped-github-connection-CMPWtdMv.js";import"./use-debounced-value-IIaOOxZg.js";import"./authenticate-and-persist-oauth-D_ggvhPQ.js";import"./mcp-oauth-jcyez0an.js";import"./track-Bc8k7xVr.js";import"./toolbar-Dt2tacki.js";import"./github-repo-picker-BuEJt9Wg.js";import"./use-mcp-tools-CBLV4W5e.js";import"./agent-capabilities-C4tLW0Za.js";import"./connection-card-BxQsLM1f.js";import"./use-registry-connections-X4HwLyVi.js";import"./retry-CErkP7V6.js";import"./connection-slug-eyAPH6o3.js";import"./connection-form-helpers-BWs30DdI.js";import"./collection-tabs-CYE3kEie.js";import"./badge-D4sNhvwo.js";import"./command-fmbL7i-3.js";import"./index-BKT7N985.js";import"./select-model-s6Q1RhIQ.js";import"./checkbox-DbnsLTvV.js";import"./ai-providers-logos-DD3qZ33J.js";import"./cards-DJvq3P6E.js";import"./dropdown-menu-BYZO8zGY.js";import"./question-004-sINsf4GQ.js";import"./use-status-sounds-CCWNlp1N.js";import"./use-file-configs-y4xbFYVM.js";import"./pt-BR-CLy76QW2.js";import"./switch-CFRxsEDs.js";import"./use-debounced-autosave-BIppXeai.js";import"./search-input-BSD38UOX.js";import"./index-nslqiNOZ.js";import"./use-secrets-BRM80mro.js";import"./AreaChart-CCk6weX5.js";import"./task-key-DepFkHpi.js";import"./use-tags-H3HQshqI.js";import"./get-initials-D-f_fDFw.js";import"./automation-list-row-B6ybaa8x.js";import"./use-org-repo-syncs-BPPWlF5W.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,T=W[a];let n;t[14]!==i||t[15]!==T?(n=i(T),t[14]=i,t[15]=T,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 N=U[a];let x;if(t[25]!==e||t[26]!==s||t[27]!==i||t[28]!==N){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(P,{htmlFor:o.key,children:i(o.labelKey)}),r.jsxs(R,{value:F(e[o.key])||o.options?.[0]?.value,onValueChange:m=>s(o.key,m),children:[r.jsx(V,{id:o.key,className:"h-10 w-full",children:r.jsx(z,{placeholder:i(o.labelKey)})}),r.jsx(J,{children:(o.options??[]).map(m=>r.jsx(O,{value:m.value,children:i(m.labelKey)},m.value))})]})]}):r.jsxs(r.Fragment,{children:[r.jsx(P,{htmlFor:o.key,children:i(o.labelKey)}),o.widget==="textarea"?r.jsx(D,{id:o.key,value:F(e[o.key]),onChange:m=>s(o.key,m.target.value),rows:3}):r.jsx(A,{id:o.key,value:F(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=N.map(l),t[25]=e,t[26]=s,t[27]=i,t[28]=N,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-DASkuy8G.js","assets/index-CzcLVdds.js","assets/index-DZ9B9lIh.css","assets/Tool02-D_KV3wgq.js","assets/CheckCircle-Cy6SdoFE.js","assets/Settings02-C53ZHmtS.js","assets/use-mcp-client-Nl7jMP-w.js","assets/constants-_08zpzmT.js","assets/auth-X1MIUPaZ.js","assets/useInfiniteQuery-Niu3Iyqd.js","assets/use-infinite-scroll-CLh0uciU.js","assets/badge-D4sNhvwo.js","assets/input-CgelyuM7.js","assets/dropdown-menu-BYZO8zGY.js","assets/Check-D_9UblFe.js","assets/ChevronRight-CuobrFWw.js","assets/DotsVertical-o1GHxv-O.js","assets/table-BhmhDJ4F.js","assets/toggle-group-BLeLfUJ1.js","assets/use-view-mode-Doil9hB7.js","assets/FilterLines-DIklhgSj.js","assets/Globe01-DjttPvlo.js","assets/SearchMd-CtZAfK8E.js","assets/dialog-BnYOWv1V.js","assets/AlertCircle-QRvupulp.js","assets/Download01-BSl0a_Zn.js","assets/Upload01-84XWvjLa.js","assets/metadata-dUsYcpuu.js","assets/alert-dialog-CBk8lpg7.js","assets/Trash01-DjBUHDUL.js","assets/label-Dvnf0feU.js","assets/select-Czw8e7ON.js","assets/ChevronDown-q-BDTE1a.js","assets/ChevronUp-BacGGupp.js","assets/switch-CFRxsEDs.js","assets/textarea-DcfHRbIa.js","assets/ArrowLeft-B5MHfAc9.js","assets/XCircle-9-Hs99HF.js","assets/checkbox-DbnsLTvV.js","assets/Eye-Bj5mHV4n.js","assets/LinkExternal01-D26mL5EB.js","assets/use-copy-Dmwl1VxR.js","assets/Copy01-pzrzel7S.js","assets/Key01-Jr4ZErv5.js","assets/Plus-D3gVZHV3.js","assets/mcp-oauth-jcyez0an.js","assets/Play-CjHdlkgd.js"])))=>i.map(i=>d[i]);
2
- import{c as i,j as e,r as s,k as a,bc as o}from"./index-CzcLVdds.js";import{R as c}from"./require-capability-CTNMEb_7.js";import"./access-gate-B3kqph5v.js";import"./capability-load-error-tIVH3Ul1.js";const n=s.lazy(()=>o(()=>import("./registry-layout-DASkuy8G.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(c,{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(n,{})})}),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-DASkuy8G.js","assets/index-CzcLVdds.js","assets/index-DZ9B9lIh.css","assets/Tool02-D_KV3wgq.js","assets/CheckCircle-Cy6SdoFE.js","assets/Settings02-C53ZHmtS.js","assets/use-mcp-client-Nl7jMP-w.js","assets/constants-_08zpzmT.js","assets/auth-X1MIUPaZ.js","assets/useInfiniteQuery-Niu3Iyqd.js","assets/use-infinite-scroll-CLh0uciU.js","assets/badge-D4sNhvwo.js","assets/input-CgelyuM7.js","assets/dropdown-menu-BYZO8zGY.js","assets/Check-D_9UblFe.js","assets/ChevronRight-CuobrFWw.js","assets/DotsVertical-o1GHxv-O.js","assets/table-BhmhDJ4F.js","assets/toggle-group-BLeLfUJ1.js","assets/use-view-mode-Doil9hB7.js","assets/FilterLines-DIklhgSj.js","assets/Globe01-DjttPvlo.js","assets/SearchMd-CtZAfK8E.js","assets/dialog-BnYOWv1V.js","assets/AlertCircle-QRvupulp.js","assets/Download01-BSl0a_Zn.js","assets/Upload01-84XWvjLa.js","assets/metadata-dUsYcpuu.js","assets/alert-dialog-CBk8lpg7.js","assets/Trash01-DjBUHDUL.js","assets/label-Dvnf0feU.js","assets/select-Czw8e7ON.js","assets/ChevronDown-q-BDTE1a.js","assets/ChevronUp-BacGGupp.js","assets/switch-CFRxsEDs.js","assets/textarea-DcfHRbIa.js","assets/ArrowLeft-B5MHfAc9.js","assets/XCircle-9-Hs99HF.js","assets/checkbox-DbnsLTvV.js","assets/Eye-Bj5mHV4n.js","assets/LinkExternal01-D26mL5EB.js","assets/use-copy-Dmwl1VxR.js","assets/Copy01-pzrzel7S.js","assets/Key01-Jr4ZErv5.js","assets/Plus-D3gVZHV3.js","assets/mcp-oauth-jcyez0an.js","assets/Play-CjHdlkgd.js"])))=>i.map(i=>d[i]);
2
- import{c,d as n,f as m,j as t,k as f,r as l,bc as p}from"./index-CzcLVdds.js";import{R as u}from"./require-capability-CTNMEb_7.js";import"./access-gate-B3kqph5v.js";import"./capability-load-error-tIVH3Ul1.js";const g=l.lazy(()=>p(()=>import("./registry-layout-DASkuy8G.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=c.c(5),i=n();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 u}from"./use-infinite-scroll-CLh0uciU.js";import{eR as i}from"./index-CzcLVdds.js";function t(e,r){return i(e,u,r)}export{t as u};
@@ -1 +0,0 @@
1
- import{I as s}from"./use-infinite-scroll-CLh0uciU.js";import{eR as u,bD as n}from"./index-CzcLVdds.js";function a(e,r){return u({...e,enabled:!0,suspense:!0,throwOnError:n},s,r)}export{a as u};