decocms 4.329.9 → 4.330.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (274) hide show
  1. package/dist/client/assets/{AlertCircle-C3LoifMU.js → AlertCircle-jy0frqbf.js} +1 -1
  2. package/dist/client/assets/{AreaChart-CDm5bL_P.js → AreaChart-B1x8DVFG.js} +1 -1
  3. package/dist/client/assets/{ArrowLeft-B1xlMMf7.js → ArrowLeft-BUQYrPiB.js} +1 -1
  4. package/dist/client/assets/{ArrowUp-ClAJQium.js → ArrowUp-Avwdkd90.js} +1 -1
  5. package/dist/client/assets/{Check-CRib0DYD.js → Check-CxhsqO-U.js} +1 -1
  6. package/dist/client/assets/{CheckCircle-CqjXQQar.js → CheckCircle-FHm0D3iO.js} +1 -1
  7. package/dist/client/assets/{ChevronRight-D1ZP1lTE.js → ChevronRight-BiHn5vM-.js} +1 -1
  8. package/dist/client/assets/{ChevronSelectorVertical-CtALiTfe.js → ChevronSelectorVertical-BbRv2olL.js} +1 -1
  9. package/dist/client/assets/{ChevronUp-DMr_Wd-m.js → ChevronUp-DKezAGzO.js} +1 -1
  10. package/dist/client/assets/{Copy01-CqZdC3Iz.js → Copy01-Bmz39xbH.js} +1 -1
  11. package/dist/client/assets/{CreditCard01-B_93t25t.js → CreditCard01-C5e5Hx42.js} +1 -1
  12. package/dist/client/assets/{DotsVertical-Cm1eM3WR.js → DotsVertical-8AlMAR5c.js} +1 -1
  13. package/dist/client/assets/{Download01-DWG0sleJ.js → Download01-CPeLy8ol.js} +1 -1
  14. package/dist/client/assets/{ErrorBarContext-C6tA_A4b.js → ErrorBarContext-3LhkDp4X.js} +1 -1
  15. package/dist/client/assets/{Eye-DTZwtLhN.js → Eye-DusgBAO3.js} +1 -1
  16. package/dist/client/assets/{GitBranch01-CaAHRAAs.js → GitBranch01-CfVfwURq.js} +1 -1
  17. package/dist/client/assets/{Globe01-DLIxci_G.js → Globe01-wWGdeE3H.js} +1 -1
  18. package/dist/client/assets/{HardDrive-Uu4_IDmh.js → HardDrive-CA1tnjg8.js} +1 -1
  19. package/dist/client/assets/{Image01-uIGiropd.js → Image01-DYzKv2ko.js} +1 -1
  20. package/dist/client/assets/{Key01-rPnY8MXp.js → Key01-CGEDvfUF.js} +1 -1
  21. package/dist/client/assets/{Link01-BR5WsLAe.js → Link01-DXelhbvI.js} +1 -1
  22. package/dist/client/assets/{LinkExternal01-DmLtBDzc.js → LinkExternal01-DNSJJFeL.js} +1 -1
  23. package/dist/client/assets/{Monitor01-BdeUVVjA.js → Monitor01-CH4zCn1-.js} +1 -1
  24. package/dist/client/assets/{Package-dd8Ej5fp.js → Package-Z0p4dNPa.js} +1 -1
  25. package/dist/client/assets/{Palette-DeAY5oYq.js → Palette-3dQlQIWI.js} +1 -1
  26. package/dist/client/assets/{Play-Btz8ch8N.js → Play-DsDbYPnC.js} +1 -1
  27. package/dist/client/assets/{Plus-DuAHW1Gi.js → Plus-sgFP0HSc.js} +1 -1
  28. package/dist/client/assets/{SearchMd-DwtkgExc.js → SearchMd-DUxlDNtX.js} +1 -1
  29. package/dist/client/assets/{Sector-CQ1UQxx5.js → Sector-B74hc5Ef.js} +1 -1
  30. package/dist/client/assets/{Settings02-BBjxFEhG.js → Settings02-BiZT44gx.js} +1 -1
  31. package/dist/client/assets/{Share07-BqnpVx68.js → Share07-BUsrOXMs.js} +1 -1
  32. package/dist/client/assets/{Shield01-D5teTWzy.js → Shield01-BkWJSg7j.js} +1 -1
  33. package/dist/client/assets/{Stars01-_V6kPVkS.js → Stars01-D42AB0fG.js} +1 -1
  34. package/dist/client/assets/{Sun-CN8rCL7E.js → Sun-CCthEe37.js} +1 -1
  35. package/dist/client/assets/{Tool01-Cfifxqbk.js → Tool01-Bww8mLXx.js} +1 -1
  36. package/dist/client/assets/{Tool02-DbxYQXJB.js → Tool02-CMTwSQ00.js} +1 -1
  37. package/dist/client/assets/{Trash01-CeiHA_Cf.js → Trash01-Cy8JukTX.js} +1 -1
  38. package/dist/client/assets/{TrendUp01-wKu74L0k.js → TrendUp01-C1Wh3jCv.js} +1 -1
  39. package/dist/client/assets/{Upload01-CHJWPT7q.js → Upload01-Vx_sWXby.js} +1 -1
  40. package/dist/client/assets/{User01-BDiBNFRN.js → User01-wgouKLSs.js} +1 -1
  41. package/dist/client/assets/{UserSquare-BKKMbWcC.js → UserSquare-1xv6DUe1.js} +1 -1
  42. package/dist/client/assets/{Users01-DTNX_nQZ.js → Users01-C6KwtT99.js} +1 -1
  43. package/dist/client/assets/{Users03-Et2Iq-LT.js → Users03-EPnVo0bB.js} +1 -1
  44. package/dist/client/assets/{XCircle-C8jIOZwA.js → XCircle-DiB9hL7i.js} +1 -1
  45. package/dist/client/assets/{XClose-Xm8e9o2O.js → XClose-C1xUyQZv.js} +1 -1
  46. package/dist/client/assets/{Zap-CydiGRzM.js → Zap-DSXl6Hp2.js} +1 -1
  47. package/dist/client/assets/{ZoomOut-wA1AxiJ4.js → ZoomOut-C-2R5l8I.js} +1 -1
  48. package/dist/client/assets/{access-gate-Cq4IMSa2.js → access-gate-BdiZftQz.js} +1 -1
  49. package/dist/client/assets/{agent-icon-CPE8YyuT.js → agent-icon-CyHpCstK.js} +1 -1
  50. package/dist/client/assets/agents-list-KDoq76g0.js +1 -0
  51. package/dist/client/assets/ai-providers-BrVf1e6J.js +1 -0
  52. package/dist/client/assets/{alert-1d_si55t.js → alert-CFsymptD.js} +1 -1
  53. package/dist/client/assets/{alert-dialog-DD8gmLEV.js → alert-dialog-DW1zmq7a.js} +1 -1
  54. package/dist/client/assets/{analytics-tab-DL1OjuDO.js → analytics-tab-BlBfbh2a.js} +1 -1
  55. package/dist/client/assets/api-keys-D3sWWgsA.js +1 -0
  56. package/dist/client/assets/{api-keys-CpAxzi4a.js → api-keys-S2LvxycO.js} +1 -1
  57. package/dist/client/assets/app-editor-DFmDheE3.js +1 -0
  58. package/dist/client/assets/{auth-CKSU3JsT.js → auth-DgZXO_E8.js} +1 -1
  59. package/dist/client/assets/{auth-catchall-BsTYpTDz.js → auth-catchall-BpojlvjI.js} +1 -1
  60. package/dist/client/assets/{auth-entry-OOarbR_P.js → auth-entry-DB4_abZA.js} +1 -1
  61. package/dist/client/assets/{auth-split-layout-BTGfNyXQ.js → auth-split-layout-DsZoXTVd.js} +1 -1
  62. package/dist/client/assets/{authenticate-and-persist-oauth-05_Aj2HR.js → authenticate-and-persist-oauth-BXQocgtU.js} +1 -1
  63. package/dist/client/assets/{automation-list-row-DZHqRqWd.js → automation-list-row-C5K4rGy8.js} +1 -1
  64. package/dist/client/assets/{automation-runs-3ggKqNs7.js → automation-runs-CbmnlhbC.js} +1 -1
  65. package/dist/client/assets/automations-DlejsTXn.js +1 -0
  66. package/dist/client/assets/{avatar-BS0IyPAV.js → avatar-BHNnQU49.js} +1 -1
  67. package/dist/client/assets/{badge-CtAQawYl.js → badge-Df0POpHX.js} +1 -1
  68. package/dist/client/assets/{block-document-CjZVKj0w.js → block-document-C9jm1koE.js} +1 -1
  69. package/dist/client/assets/{breadcrumb-BCL2Kwa4.js → breadcrumb-EUBB2GC0.js} +1 -1
  70. package/dist/client/assets/{buckets-CtppbAIz.js → buckets-B_HtmkX0.js} +1 -1
  71. package/dist/client/assets/{bulk-category-panel-DKLu3ji6.js → bulk-category-panel-WadLNqYR.js} +1 -1
  72. package/dist/client/assets/{capability-load-error-DIIALIs2.js → capability-load-error-D_PjnnSN.js} +1 -1
  73. package/dist/client/assets/{cards-CBsYAM47.js → cards-gW-s4zlH.js} +1 -1
  74. package/dist/client/assets/category-editor-Dsjpm8Rs.js +1 -0
  75. package/dist/client/assets/{cdn-tab-BMufGN6k.js → cdn-tab-OVIvDZML.js} +1 -1
  76. package/dist/client/assets/{chart-DpOfrAMr.js → chart-CQ4Em7wn.js} +1 -1
  77. package/dist/client/assets/chat-context-DPbGstfa.js +35 -0
  78. package/dist/client/assets/{checkbox-BXjIirqE.js → checkbox-CUAxY5xy.js} +1 -1
  79. package/dist/client/assets/{choose-editor-4sfwDsGQ.js → choose-editor-CqIcKKAC.js} +1 -1
  80. package/dist/client/assets/{cli-auth-success-CwHUCiHn.js → cli-auth-success-osB4eK21.js} +1 -1
  81. package/dist/client/assets/{client-icons-D4B8Mz13.js → client-icons-ErQpUWbT.js} +1 -1
  82. package/dist/client/assets/collection-detail-D3FBmEm5.js +1 -0
  83. package/dist/client/assets/{collection-display-button-BioCX_AB.js → collection-display-button-AMsRk-So.js} +1 -1
  84. package/dist/client/assets/{collection-search-DO_p4EqG.js → collection-search-C22mEeLw.js} +1 -1
  85. package/dist/client/assets/{collection-table-wrapper-C7uBo59c.js → collection-table-wrapper-BJ3Neq9J.js} +1 -1
  86. package/dist/client/assets/{collection-tabs-FQDiUPHt.js → collection-tabs-DTwxsscI.js} +1 -1
  87. package/dist/client/assets/{command-DeVA58FJ.js → command-CRqAgH1a.js} +1 -1
  88. package/dist/client/assets/{commerce-onboarding-BKX7YdsD.js → commerce-onboarding-B6_VUkvw.js} +1 -1
  89. package/dist/client/assets/{connect-BRY5NS1A.js → connect-CxVuoW2Z.js} +1 -1
  90. package/dist/client/assets/{connect-layout-CZzvRMqx.js → connect-layout-sj45J0Mr.js} +1 -1
  91. package/dist/client/assets/{connection-CtWb4rTZ.js → connection-BWzxBGaR.js} +1 -1
  92. package/dist/client/assets/{connection-card-sSkeOh9M.js → connection-card-FOWu6o2x.js} +1 -1
  93. package/dist/client/assets/connection-detail-CiSJLPae.js +1 -0
  94. package/dist/client/assets/{connection-form-helpers-CjCc6frD.js → connection-form-helpers-tCou3o46.js} +1 -1
  95. package/dist/client/assets/{connections-Ce1XTF4A.js → connections-DBSoZzyn.js} +1 -1
  96. package/dist/client/assets/{create-organization-dialog-C_kWgH_k.js → create-organization-dialog-Crs_YDp8.js} +1 -1
  97. package/dist/client/assets/{decopilot-sse-pool-Dc_oXr8h.js → decopilot-sse-pool-BrId94vM.js} +1 -1
  98. package/dist/client/assets/{dialog-BIFznZm3.js → dialog-BdUmjS4-.js} +1 -1
  99. package/dist/client/assets/{domain-settings-2op7kQxI.js → domain-settings-CTbN1J2P.js} +1 -1
  100. package/dist/client/assets/{drawer-CtAdPy7J.js → drawer-D36n-WIv.js} +1 -1
  101. package/dist/client/assets/{dropdown-menu-C37VfJ59.js → dropdown-menu-Dn-LBZem.js} +1 -1
  102. package/dist/client/assets/e2e-tab--nH1lXQP.js +1 -0
  103. package/dist/client/assets/{editor-DyArv3FJ.js → editor-CyAR_I_A.js} +1 -1
  104. package/dist/client/assets/{empty-state-DSmLsgCN.js → empty-state-DLmWbVUB.js} +1 -1
  105. package/dist/client/assets/{empty-state--OBkbBal.js → empty-state-DxSmwhAQ.js} +1 -1
  106. package/dist/client/assets/{extract-connection-data-wF3Br-pC.js → extract-connection-data-B1I5FGQh.js} +1 -1
  107. package/dist/client/assets/file-explorer-Cbb3XtE4.js +2 -0
  108. package/dist/client/assets/{file-type-icon-CX9ORitn.js → file-type-icon-CVdgx22A.js} +1 -1
  109. package/dist/client/assets/{folder-icon-BUAMuIJo.js → folder-icon-D_WY3arE.js} +1 -1
  110. package/dist/client/assets/{form-CK_lIk7s.js → form-BvhSFZHb.js} +1 -1
  111. package/dist/client/assets/{general-uOO6AYK8.js → general-WcU5fWyG.js} +1 -1
  112. package/dist/client/assets/{github-repo-picker-TX2CWT3P.js → github-repo-picker-Cz94q9dS.js} +1 -1
  113. package/dist/client/assets/hooks-SuxNrCzM.js +15 -0
  114. package/dist/client/assets/{hosting-tab-DTF_9cjU.js → hosting-tab-Vlb9Z9ng.js} +1 -1
  115. package/dist/client/assets/index-5qx3FSW_.js +1 -0
  116. package/dist/client/assets/{index-BaLS9mjA.js → index-B18-trnw.js} +1 -1
  117. package/dist/client/assets/{index-C1ThefqC.js → index-BKZihWQd.js} +1 -1
  118. package/dist/client/assets/index-Ba4EfV0C.js +1 -0
  119. package/dist/client/assets/{index-zmYpYC9e.js → index-BjTjNr_G.js} +1 -1
  120. package/dist/client/assets/index-BqRfxAzW.css +1 -0
  121. package/dist/client/assets/{index-ClRahW5l.js → index-BxLEr4iz.js} +1 -1
  122. package/dist/client/assets/{index-9xpznWaq.js → index-CWs8c_71.js} +1 -1
  123. package/dist/client/assets/index-Cd2r3_aA.js +823 -0
  124. package/dist/client/assets/{index-CMu2jKL9.js → index-D87zQKXw.js} +2 -2
  125. package/dist/client/assets/{index-DIoG5Nzm.js → index-lSAvH_rL.js} +7 -7
  126. package/dist/client/assets/{index-redirect-DSiIg2Aa.js → index-redirect-BL62_A_W.js} +1 -1
  127. package/dist/client/assets/{infra-billing-69mIk1VP.js → infra-billing-jIqLmoI5.js} +1 -1
  128. package/dist/client/assets/{input-B3ER89GU.js → input-BdcqHmsD.js} +1 -1
  129. package/dist/client/assets/{integration-icon-Dhw6uO2L.js → integration-icon-DTTuvbMM.js} +1 -1
  130. package/dist/client/assets/{invite-member-dialog-8SU0VJal.js → invite-member-dialog-BW87V_xF.js} +1 -1
  131. package/dist/client/assets/{label-BCOu20U5.js → label-DFynpq17.js} +1 -1
  132. package/dist/client/assets/{layout-Cvs_I42t.js → layout-CF6grxfQ.js} +1 -1
  133. package/dist/client/assets/{login-P7bQsRN6.js → login-DtED1ahd.js} +1 -1
  134. package/dist/client/assets/{markdown-B1UHHM2w.js → markdown-t8p7flD6.js} +1 -1
  135. package/dist/client/assets/{mcp-oauth-3DlwOsvC.js → mcp-oauth-DomiX3XJ.js} +1 -1
  136. package/dist/client/assets/{members-PuWi75Iq.js → members-Ctc7ayH9.js} +1 -1
  137. package/dist/client/assets/{monaco-editor-C35vQ6TU.js → monaco-editor-mHVc8yep.js} +1 -1
  138. package/dist/client/assets/{monitoring-stats-row-Cyyvr64v.js → monitoring-stats-row-CL1X09To.js} +1 -1
  139. package/dist/client/assets/{multi-select-CSpGSNnV.js → multi-select-Tgem-Hhf.js} +1 -1
  140. package/dist/client/assets/{oauth-callback-H6KXAZUX.js → oauth-callback-GxJ6DISd.js} +1 -1
  141. package/dist/client/assets/{oauth-callback-ai-provider-Bnd7NmMV.js → oauth-callback-ai-provider-Dgp581R5.js} +1 -1
  142. package/dist/client/assets/{onboarding-Ci8NOzEM.js → onboarding-CItp4Z7f.js} +1 -1
  143. package/dist/client/assets/org-layout-D6ojmqyV.js +1 -0
  144. package/dist/client/assets/{organization-choice-CCvKP5-m.js → organization-choice-CKJgJUKz.js} +1 -1
  145. package/dist/client/assets/{orgs-Fs1TSSXd.js → orgs-B2ojCkix.js} +1 -1
  146. package/dist/client/assets/page-seo-form-w8HjBh5r.js +1 -0
  147. package/dist/client/assets/{popover-CMt7ScML.js → popover-DqoSLPyP.js} +1 -1
  148. package/dist/client/assets/post-calendar-09DAXKhm.js +1 -0
  149. package/dist/client/assets/post-editor-D5yb1Jd9.js +1 -0
  150. package/dist/client/assets/{primitives-CGvINqkE.js → primitives-DTr9rusv.js} +1 -1
  151. package/dist/client/assets/{profile-CHhLzHqm.js → profile-DQHF82sh.js} +1 -1
  152. package/dist/client/assets/project-app-view-BON2Qo3G.js +1 -0
  153. package/dist/client/assets/{project-icon-zQ71aK6_.js → project-icon-BIuwk_d_.js} +1 -1
  154. package/dist/client/assets/{prompts-Dxu8B2jv.js → prompts-DBh87Nh-.js} +1 -1
  155. package/dist/client/assets/record-editor-Dfnjy26m.js +1 -0
  156. package/dist/client/assets/redirect-editor-Dx846JCn.js +1 -0
  157. package/dist/client/assets/registry-DtIvqOVY.js +2 -0
  158. package/dist/client/assets/{registry-layout-C968nUGe.js → registry-layout-DSBGNtl3.js} +1 -1
  159. package/dist/client/assets/{reports-DGXzAhUl.js → reports-DXwcd3N8.js} +1 -1
  160. package/dist/client/assets/{require-capability-D-jq44dD.js → require-capability-BRvSlC3v.js} +1 -1
  161. package/dist/client/assets/{required-auth-layout-Cb1jXi5Q.js → required-auth-layout-DFpZjgWz.js} +1 -1
  162. package/dist/client/assets/{reset-password-ClAymL8k.js → reset-password-CSt7aD-W.js} +1 -1
  163. package/dist/client/assets/{review-settings-hu-gYYYY.js → review-settings-ll1dG96m.js} +1 -1
  164. package/dist/client/assets/{roles-C2D1oNwm.js → roles-BkIPtp-o.js} +1 -1
  165. package/dist/client/assets/{schema-Dk7DmR5a.js → schema-CnLqwTPD.js} +1 -1
  166. package/dist/client/assets/{scroll-area-DBm8Zg_x.js → scroll-area-PP_r4msI.js} +1 -1
  167. package/dist/client/assets/{search-input-C33OeTuG.js → search-input-DfOXuzww.js} +1 -1
  168. package/dist/client/assets/{secrets-BcRhexXX.js → secrets-5A0vK4C0.js} +1 -1
  169. package/dist/client/assets/sections-editor-Dm7uM18_.js +2 -0
  170. package/dist/client/assets/{select-O-Se58mM.js → select-DX41f4VA.js} +1 -1
  171. package/dist/client/assets/{select-model-Cd6ICjyE.js → select-model-DtEtPkIv.js} +1 -1
  172. package/dist/client/assets/{self-tool-result-BhjRI4OY.js → self-tool-result-CdKMJCXt.js} +1 -1
  173. package/dist/client/assets/seo-editor-aQO3Fni3.js +1 -0
  174. package/dist/client/assets/settings-layout-CeJtjB19.js +1 -0
  175. package/dist/client/assets/{settings-sidebar-CQ1aAA-S.js → settings-sidebar-q0M_1AHR.js} +1 -1
  176. package/dist/client/assets/{shell-controls-BlbYUBa1.js → shell-controls-C6dFl2EC.js} +1 -1
  177. package/dist/client/assets/shell-layout-gA5hZo5F.js +1 -0
  178. package/dist/client/assets/{skill-preview-DTwyXcxp.js → skill-preview-DXO3ykC1.js} +1 -1
  179. package/dist/client/assets/{skills-CQg-jY0q.js → skills-BYoh3bJo.js} +1 -1
  180. package/dist/client/assets/{sso-BTGZw929.js → sso-BI0wGWNb.js} +1 -1
  181. package/dist/client/assets/store-registry-UiEHPHdI.js +2 -0
  182. package/dist/client/assets/{store-Duwv96-m.js → store-w5DiLQdh.js} +1 -1
  183. package/dist/client/assets/{switch-DN6L7pZ8.js → switch-DW4RRppR.js} +1 -1
  184. package/dist/client/assets/synced-repos-DGuZHHJX.js +1 -0
  185. package/dist/client/assets/{table-DGED2-oV.js → table-Cc0JpHRt.js} +1 -1
  186. package/dist/client/assets/{tabs-qHv1d8oo.js → tabs-C_0yZwsZ.js} +1 -1
  187. package/dist/client/assets/{task-board-k97eyP2H.js → task-board-DkI8yDIf.js} +1 -1
  188. package/dist/client/assets/task-route-jBzYs7u0.js +1 -0
  189. package/dist/client/assets/{tasks-O1E9rRmi.js → tasks-_uhom2KC.js} +1 -1
  190. package/dist/client/assets/{textarea-BbMVdhTn.js → textarea-Dyj892-C.js} +1 -1
  191. package/dist/client/assets/thread-intent-Bbkl_NvG.js +1 -0
  192. package/dist/client/assets/thread-route-C9hr7yjZ.js +1 -0
  193. package/dist/client/assets/{toggle-group-qR7WwCzn.js → toggle-group-DuOU3Yna.js} +1 -1
  194. package/dist/client/assets/{toolbar-BPBaAXqU.js → toolbar-DIlFGJBQ.js} +1 -1
  195. package/dist/client/assets/{toolbar-icon-button-BJozCrFv.js → toolbar-icon-button-CGvKs4Hb.js} +1 -1
  196. package/dist/client/assets/{track-CG4JE7lp.js → track-BQLynX7D.js} +1 -1
  197. package/dist/client/assets/{types-CFUtvqwZ.js → types-yL1rZwC2.js} +1 -1
  198. package/dist/client/assets/{use-ai-providers-DL0YRrHe.js → use-ai-providers-C4A-yG8S.js} +1 -1
  199. package/dist/client/assets/{use-automations-Ds4HjjM1.js → use-automations-D1LLY7GK.js} +1 -1
  200. package/dist/client/assets/{use-autosave-BUi_34XG.js → use-autosave-S3BS9dJB.js} +1 -1
  201. package/dist/client/assets/{use-connection-1ZElPQlS.js → use-connection-DIMvnEsW.js} +1 -1
  202. package/dist/client/assets/{use-copy-DwaiWxiT.js → use-copy-CDL_kFPB.js} +1 -1
  203. package/dist/client/assets/{use-create-virtual-mcp-DBiPMj7Z.js → use-create-virtual-mcp-BZjj2wtD.js} +1 -1
  204. package/dist/client/assets/{use-debounced-autosave-CrlGGbA0.js → use-debounced-autosave-ClxVXQPW.js} +1 -1
  205. package/dist/client/assets/{use-debounced-value-BkHp8ZQC.js → use-debounced-value-BTGahjD6.js} +1 -1
  206. package/dist/client/assets/{use-decopilot-events-D2a6ajEJ.js → use-decopilot-events-qYtca9N_.js} +1 -1
  207. package/dist/client/assets/{use-delete-connection-B379gXvX.js → use-delete-connection-DArfbR_g.js} +1 -1
  208. package/dist/client/assets/{use-deployment-admin-CfDE9qIF.js → use-deployment-admin-DZgxyu-a.js} +1 -1
  209. package/dist/client/assets/{use-destination-route-BlILx1Gc.js → use-destination-route-CTNH3xDX.js} +1 -1
  210. package/dist/client/assets/{use-file-configs-BfdHEl9C.js → use-file-configs-C93nUH97.js} +1 -1
  211. package/dist/client/assets/{use-infinite-scroll-DwV9LPlS.js → use-infinite-scroll-DeU5Rpn4.js} +1 -1
  212. package/dist/client/assets/{use-join-requests-CETprio3.js → use-join-requests-DSWsS1rN.js} +1 -1
  213. package/dist/client/assets/{use-mcp-auth-status-DeDl63Lc.js → use-mcp-auth-status-upTMow-Z.js} +1 -1
  214. package/dist/client/assets/{use-mcp-client-Da8e-_d8.js → use-mcp-client-llSiXbX8.js} +1 -1
  215. package/dist/client/assets/{use-mcp-prompts-CLFow0WP.js → use-mcp-prompts-BOxAK29u.js} +1 -1
  216. package/dist/client/assets/{use-members-DlyrPYOE.js → use-members-D_V3G9Gd.js} +1 -1
  217. package/dist/client/assets/use-navigate-to-agent-BooqwyPz.js +5 -0
  218. package/dist/client/assets/{use-org-auth-client-BfsZ-M6z.js → use-org-auth-client-BWThb-V9.js} +1 -1
  219. package/dist/client/assets/{use-org-sso-J995Ng6-.js → use-org-sso-DJzTKHrH.js} +1 -1
  220. package/dist/client/assets/{use-organization-roles-EQ3qWfHU.js → use-organization-roles-CrdtsKsA.js} +1 -1
  221. package/dist/client/assets/{use-organization-settings-DenVKwFP.js → use-organization-settings-BfIVlNk5.js} +1 -1
  222. package/dist/client/assets/{use-panel-navigate-xY92PiXA.js → use-panel-navigate-yCX_W63n.js} +1 -1
  223. package/dist/client/assets/{use-registry-connections-BTqpii1e.js → use-registry-connections-8jKgVSu8.js} +1 -1
  224. package/dist/client/assets/{use-secrets-Dn6GUcMj.js → use-secrets-CHDcCDFt.js} +1 -1
  225. package/dist/client/assets/{use-section-preview-base-OA2RwVZn.js → use-section-preview-base-Bnck9XZi.js} +1 -1
  226. package/dist/client/assets/{use-status-sounds-C0H9gTlC.js → use-status-sounds-D3Nv9moR.js} +1 -1
  227. package/dist/client/assets/{use-tags-Dj5fhd_Z.js → use-tags-Bjvv3Ict.js} +1 -1
  228. package/dist/client/assets/{use-view-mode-8gUnp8xY.js → use-view-mode-Bj7dvmOc.js} +1 -1
  229. package/dist/client/assets/{use-virtual-mcp-BdzzM_-Q.js → use-virtual-mcp-C5WBYfhP.js} +1 -1
  230. package/dist/client/assets/useInfiniteQuery-DO69sta5.js +1 -0
  231. package/dist/client/assets/useSuspenseInfiniteQuery-BqTEtPhA.js +1 -0
  232. package/dist/client/assets/{users-Ct5OViZj.js → users-8qyHeXl2.js} +1 -1
  233. package/dist/client/assets/variant-calendar-CoASsVeg.js +1 -0
  234. package/dist/client/assets/{view-mode-toggle-Bnltru_2.js → view-mode-toggle-BOnt9KuJ.js} +1 -1
  235. package/dist/client/index.html +2 -2
  236. package/dist/server/cli.js +1 -1
  237. package/dist/server/server.js +1 -1
  238. package/package.json +1 -1
  239. package/dist/client/assets/agents-list-Dtmme4F_.js +0 -1
  240. package/dist/client/assets/ai-providers-BZazhfxl.js +0 -1
  241. package/dist/client/assets/api-keys-DJrTLD2M.js +0 -1
  242. package/dist/client/assets/app-editor-DRQY_wGe.js +0 -1
  243. package/dist/client/assets/automations-BlLAqIe8.js +0 -1
  244. package/dist/client/assets/category-editor-Bm8XKvhm.js +0 -1
  245. package/dist/client/assets/chat-context-DylitU6A.js +0 -35
  246. package/dist/client/assets/collection-detail-DHhSzlUe.js +0 -1
  247. package/dist/client/assets/connection-detail-DFoIn0E6.js +0 -1
  248. package/dist/client/assets/download-app-dialog-BA4Zg8f-.js +0 -1
  249. package/dist/client/assets/e2e-tab-WXvENx_8.js +0 -1
  250. package/dist/client/assets/file-explorer-Tz4oZVnj.js +0 -2
  251. package/dist/client/assets/hooks-Dv3PpADk.js +0 -15
  252. package/dist/client/assets/index-DN9-7YC2.css +0 -1
  253. package/dist/client/assets/index-DrWCPBsu.js +0 -1
  254. package/dist/client/assets/index-EEBcPxzK.js +0 -823
  255. package/dist/client/assets/index-d_2S8ony.js +0 -1
  256. package/dist/client/assets/org-layout-DElTO9q0.js +0 -1
  257. package/dist/client/assets/page-seo-form-DIStXbQF.js +0 -1
  258. package/dist/client/assets/post-calendar-BXASG_XF.js +0 -1
  259. package/dist/client/assets/post-editor-usPnnznb.js +0 -1
  260. package/dist/client/assets/project-app-view-DKsoF9KE.js +0 -1
  261. package/dist/client/assets/record-editor-fS_XUrDG.js +0 -1
  262. package/dist/client/assets/redirect-editor-B0GL2-VI.js +0 -1
  263. package/dist/client/assets/registry-BaeKs9f0.js +0 -2
  264. package/dist/client/assets/sections-editor-Dz0cOD7v.js +0 -2
  265. package/dist/client/assets/seo-editor-BUIpJLVV.js +0 -1
  266. package/dist/client/assets/settings-layout-CSkBbDyt.js +0 -1
  267. package/dist/client/assets/shell-layout-C_TEKmkm.js +0 -1
  268. package/dist/client/assets/store-registry-CjeaHFsT.js +0 -2
  269. package/dist/client/assets/synced-repos-C_ygkA-Z.js +0 -1
  270. package/dist/client/assets/task-route-BERNM1EV.js +0 -1
  271. package/dist/client/assets/use-navigate-to-agent-EQeauX1Q.js +0 -5
  272. package/dist/client/assets/useInfiniteQuery-C_Sj0Ine.js +0 -1
  273. package/dist/client/assets/useSuspenseInfiniteQuery-DjGFzQWy.js +0 -1
  274. package/dist/client/assets/variant-calendar-D0qqLCLI.js +0 -1
@@ -2980,7 +2980,7 @@ Respond with ONLY a JSON object of this shape, and nothing else:
2980
2980
  ${G.join(`
2981
2981
  `)}`:Y}function PB6($){let Z=new Set;for(let Q of $)for(let X of Q.split(`
2982
2982
  `)){let Y=X.trim();if(/^Co-authored-by:\s/i.test(Y))Z.add(Y)}return[...Z]}var Sd$=200,UB6=12,BB6,DB6=300,JQ1=3;var WQ1=D(()=>{Zw();uT0();BB6={aheadBy:0,behindBy:0,files:[]}});function TB6($){if(!$||$.includes(".."))return!1;return AB6.test($)}function _d$($){let Z=typeof $.__resolveType==="string"?$.__resolveType:null;if(!Z||!TB6(Z))return null;let{__resolveType:Q,...X}=$;return{resolveType:Z,payload:X}}function vd$($,Z){return`${$.replace(/\/+$/,"")}/deco/invoke/${Z}`}var AB6;var fd$=D(()=>{AB6=/^[\w./@-]+$/});function vs($,Z){let Q=$?.githubRepo;if(!Q?.owner||!Q?.name)return null;if(!Q.connectionId)return Q;if(!Z.includes(Q.connectionId))return null;return Q}async function bd$($,Z,Q,X){if(!X.connectionId)throw new bv("Push requires a connected GitHub account. Connect mcp-github for this project and restart the sandbox.");let Y=$.organization?.id;if(!Y)throw new bv(H9);await uO({ctx:$,connectionId:X.connectionId,organizationId:Y,forceRefresh:!0,onLegacyMintError:(H)=>{let U=H instanceof Error?H.message:H9;throw new bv(U)}});let{cloneUrl:G,gitUserName:J,gitUserEmail:W}=await xK(X.connectionId,X.owner,X.name,$.db,$.vault).catch((H)=>{let{code:U,message:N}=v9$(H instanceof Error?H.message:String(H));throw U?new bv(N):H}),K=Gl($),F=await Z.proxyDaemonRequest(Q,"/_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(!F.ok){let H=await hO(F,RB6).catch(()=>F.statusText);throw Error(`Failed to refresh sandbox git credentials (${F.status}): ${H}`)}}var RB6=10485760,bv;var KQ1=D(()=>{FJ();VT0();Tn();ri0();oy();bv=class bv extends Error{constructor($){super($);this.name="GitPushAuthError"}}});function qB6($){let Z=$.startsWith("thread:")?$.slice(7):$;if(!Z||Z.length>255||Z.includes("..")||Z.startsWith("/")||Z.endsWith("/")||Z.endsWith(".lock")||!IB6.test(Z))throw Error(`Invalid branch name: ${$}`)}function xv($){return AbortSignal.any([$.req.raw.signal,AbortSignal.timeout(kB6)])}async function SB6($,Z){let Q=$.var.studioContext,X=WJ(Z.branch),Y=$.req.query("thread")??X,G=Y&&Y===X?Z.branchThread:Y?await Q.storage.threads.get(Y).catch(()=>null):null,J=G?.virtual_mcp_id===Z.virtualMcpId?G:null,W=_C(J?.metadata?.runtime);if(W)return W;let K=wD0(Z.virtualMcpMetadata),F=K==="cms"?await c71(Q,{claimName:Z.claimName}):"alive",H=K==="cms"&&F!=="alive"?"cms":"sandbox",U=!!J&&(F==="gone"||F==="alive"&&K==="cms");if(U&&J)sn(Q,J.id,H);if(K==="cms")console.log("sandbox proxy: no runtime stamp",{route:$.req.path,method:$.req.method,reason:J?"unstamped":"threadless",liveness:F,resolved:H,stamped:U});return H}async function CB6($){let Z=$.get("vmClaim");if(Z.runner)return Z.runner;try{return await FX($.var.studioContext)}catch{return null}}function yv($){let{runner:Z}=$.get("vmClaim");if(!Z)return $.json({error:"No sandbox runner configured"},503);return Z}async function Hl($){let{virtualMcpMetadata:Z,connectionIds:Q}=$.get("vmClaim"),X=$.var.studioContext,Y=vs(Z,Q);if(!Y)throw new d4(404,"AUTH","repo","Project has no GitHub repository");let G=n(X);return ST0(X,G.id,Y)}function FQ1($,Z){if(Z instanceof _A0)return $.json({error:Z.message},429,{...R5,...Z.retryAfterMs===null?{}:{"Retry-After":String(Math.ceil(Z.retryAfterMs/1000))}});if(Z instanceof d4){let X=Z.status===404?404:Z.status===409||Z.status===422?409:502;return $.json({error:Z.message},X,R5)}let Q=Z instanceof Error?Z.message:String(Z);return $.json({error:Q},502,R5)}async function gd$($,Z,Q){let X;try{X=await fetch(Z,Q)}catch{return $.json({error:"Preview unreachable"},502)}let Y;try{Y=await X.text()}catch{return $.json({error:"Preview unreachable"},502)}return new Response(Y,{status:X.status,headers:{"content-type":X.headers.get("content-type")??"application/json"}})}async function hd$($){try{let Z=await Hl($),Q=await lT0(Z,$.get("vmClaim").branch);return $.json(Q,200,R5)}catch(Z){return FQ1($,Z)}}function fs($,Z){let X=(mT0.get($)??Promise.resolve()).catch(()=>{}).then(Z),Y=X.catch(()=>{});return mT0.set($,Y),Y.finally(()=>{if(mT0.get($)===Y)mT0.delete($)}),X}async function eZ($,Z,Q){if(!Q?.runner&&$.get("vmClaim").runtime==="cms")return $.json({error:"sandbox not found: this session is sandbox-less"},404,R5);let X=Q?.runner??yv($);if(X instanceof Response)return X;let{claimName:Y,userId:G,projectRef:J}=$.get("vmClaim"),W=Q?.method??"POST",K=null,F=new Headers;if(Q?.jsonBody!==void 0)K=Q.jsonBody,F.set("content-type","application/json");else if(Q?.forwardJsonBody)K=await $.req.text(),F.set("content-type","application/json");let H=Q?.signal,U={method:W,headers:F,body:K,...H?{signal:H}:{}},N=async()=>{let B=await X.proxyDaemonRequest(Y,Z,U);if(Q?.map404to410&&B.status===404){try{await B.body?.cancel()}catch{}if(await X.adoptLiveClaim({userId:G,projectRef:J},Y))B=await X.proxyDaemonRequest(Y,Z,U);if(B.status===404){try{await B.body?.cancel()}catch{}return new Response(JSON.stringify({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."}),{status:410,headers:{"content-type":"application/json",...R5}})}}let O=await B.text(),w=Q?.redactRepoDir?_B6(O):O,L=B.headers.get("content-type")??"application/json";return new Response(w,{status:B.status,headers:{"content-type":L,...R5}})};try{if(H){let B=N();return B.catch(()=>{}),await Promise.race([B,new Promise((w,L)=>{if(H.aborted)return L(H.reason);H.addEventListener("abort",()=>L(H.reason),{once:!0})})])}return await N()}catch(B){let O=B instanceof Error?B.message:String(B);return $.json({error:`Daemon unreachable: ${O}`},502)}}function _B6($){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 iT0($,Z,Q,X="GET",Y){let G=await $.proxyDaemonRequest(Z,Q,{method:X,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,Q,{method:X,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 vB6($){return ud$.includes($)}var IB6,xd$=524288,MB6=65536,kB6=1e4,yd$=2000,VB6,mT0,R5,ud$,ld$=()=>{let $=new J1;$.use("/:virtualMcpId/:branch/*",VB6),$.post("/:virtualMcpId/:branch/write",(Q)=>eZ(Q,"/_sandbox/write",{forwardJsonBody:!0,signal:xv(Q)})),$.post("/:virtualMcpId/:branch/unlink",(Q)=>eZ(Q,"/_sandbox/unlink",{forwardJsonBody:!0,signal:xv(Q)})),$.post("/:virtualMcpId/:branch/mkdir",(Q)=>eZ(Q,"/_sandbox/mkdir",{forwardJsonBody:!0,signal:xv(Q)})),$.post("/:virtualMcpId/:branch/rename",(Q)=>eZ(Q,"/_sandbox/rename",{forwardJsonBody:!0,signal:xv(Q)})),$.post("/:virtualMcpId/:branch/read",(Q)=>eZ(Q,"/_sandbox/read",{forwardJsonBody:!0,signal:xv(Q)})),$.post("/:virtualMcpId/:branch/glob",(Q)=>eZ(Q,"/_sandbox/glob",{forwardJsonBody:!0,signal:xv(Q)})),$.post("/:virtualMcpId/:branch/grep",(Q)=>eZ(Q,"/_sandbox/grep",{forwardJsonBody:!0,signal:xv(Q)})),$.post("/:virtualMcpId/:branch/exec/:script",async(Q)=>{let X=Q.req.param("script");if(!X)return Q.json({error:"missing script name"},400);return eZ(Q,`/_sandbox/exec/${encodeURIComponent(X)}`)}),$.post("/:virtualMcpId/:branch/exec/:script/kill",async(Q)=>{let X=Q.req.param("script");if(!X)return Q.json({error:"missing script name"},400);return eZ(Q,`/_sandbox/exec/${encodeURIComponent(X)}/kill`)}),$.get("/:virtualMcpId/:branch/config",(Q)=>eZ(Q,"/_sandbox/config",{method:"GET",map404to410:!0,redactRepoDir:!0})),$.put("/:virtualMcpId/:branch/config",(Q)=>eZ(Q,"/_sandbox/config",{method:"PUT",forwardJsonBody:!0,map404to410:!0})),$.post("/:virtualMcpId/:branch/setup/:step",async(Q)=>{let X=Q.req.param("step");if(!X||!vB6(X))return Q.json({error:`step must be one of: ${ud$.join(", ")}`},400);let Y=Q.get("vmClaim"),G=await c71(Q.var.studioContext,{claimName:Y.claimName})==="gone"?null:await CB6(Q);if(!G)return Q.json({error:"sandbox not found: nothing is running at this ref"},404,R5);if(X==="start"){let J=n(Q.var.studioContext),W=ny(Y.virtualMcpMetadata);try{await b70({ctx:Q.var.studioContext,runner:G,handle:Y.claimName,orgId:J.id,userId:Y.callerUserId,entries:W})}catch(K){let F=K instanceof Error?K.message:String(K);return Q.json({error:`Failed to push env to daemon: ${F}`},502)}}return eZ(Q,`/_sandbox/setup/${X}`,{signal:Q.req.raw.signal,map404to410:!0,runner:G})}),$.get("/:virtualMcpId/:branch/events",(Q)=>{let X=Q.get("vmClaim");if(!X.runner)return QN(Q,async(Y)=>{await Y.writeSSE({event:"phase",data:JSON.stringify({kind:"failed",reason:"unknown",message:"No sandbox runner configured on this studio instance."})})});return lc$(Q,{ctx:Q.var.studioContext,claimName:X.claimName,runner:X.runner,virtualMcpId:X.virtualMcpId,branch:X.branch,userId:X.userId,projectRef:X.projectRef,virtualMcpMetadata:X.virtualMcpMetadata})}),$.get("/:virtualMcpId/:branch/git/status",(Q)=>{if(Q.get("vmClaim").runtime==="cms")return hd$(Q);return Z(Q)});let Z=(Q)=>eZ(Q,"/_sandbox/git/status",{method:"GET",map404to410:!0,signal:AbortSignal.any([Q.req.raw.signal,AbortSignal.timeout(yd$)])});return $.post("/:virtualMcpId/:branch/git/status",(Q)=>{if(Q.get("vmClaim").runtime==="cms")return hd$(Q);return eZ(Q,"/_sandbox/git/status",{map404to410:!0,signal:AbortSignal.any([Q.req.raw.signal,AbortSignal.timeout(yd$)])})}),$.post("/:virtualMcpId/:branch/git/diff",async(Q)=>{let X=Q.get("vmClaim");if(X.runtime==="cms")try{let Y=await Q.req.json().catch(()=>({})),G=await Hl(Q),J=await cT0(G,X.branch,Y.base);return Q.json(J,200,R5)}catch(Y){return FQ1(Q,Y)}return eZ(Q,"/_sandbox/git/diff",{forwardJsonBody:!0,map404to410:!0})}),$.post("/:virtualMcpId/:branch/git/publish",async(Q)=>{if(Q.get("vmClaim").runtime==="cms")return Q.json({ok:!0},200,R5);let X=yv(Q);if(X instanceof Response)return X;let{claimName:Y,virtualMcpMetadata:G,connectionIds:J}=Q.get("vmClaim"),W=Q.var.studioContext;return fs(Y,async()=>{try{await d71(W,X,Y);let K=vs(G,J);if(K)await bd$(W,X,Y,K)}catch(K){if(K instanceof bv)return Q.json({error:K.message},403,R5);let F=K instanceof Error?K.message:String(K);return Q.json({error:F},502,R5)}return eZ(Q,"/_sandbox/git/publish",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/discard",async(Q)=>{let X=Q.get("vmClaim");if(X.runtime==="cms")return fs(X.claimName,async()=>{let Y=await Q.req.json().catch(()=>({})),G=Array.isArray(Y.filepaths)?Y.filepaths.filter((J)=>typeof J==="string"):[];if(G.length===0)return Q.json({error:"filepaths is required"},400,R5);try{let J=await Hl(Q);return await Cd$(J,X.branch,G),Q.json({ok:!0},200,R5)}catch(J){let W=J instanceof d4&&J.status===409?409:502,K=J instanceof Error?J.message:String(J);return Q.json({error:K},W,R5)}});return fs(X.claimName,()=>eZ(Q,"/_sandbox/git/discard",{forwardJsonBody:!0,map404to410:!0}))}),$.post("/:virtualMcpId/:branch/git/rebase",async(Q)=>{let X=Q.get("vmClaim");if(X.runtime==="cms")return fs(X.claimName,async()=>{try{let W=await Q.req.json().catch(()=>({})),K=await Hl(Q),F=W.base??await K.getDefaultBranch();return await dT0(K,X.branch,F),Q.json({ok:!0},200,R5)}catch(W){return FQ1(Q,W)}});let Y=yv(Q);if(Y instanceof Response)return Y;let{claimName:G}=Q.get("vmClaim"),J=Q.var.studioContext;return fs(G,async()=>{try{await d71(J,Y,G)}catch(W){let K=W instanceof Error?W.message:String(W);return Q.json({error:K},502,R5)}return eZ(Q,"/_sandbox/git/rebase",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/suggest-commit",a5({maxSize:xd$,onError:(Q)=>Q.json({error:"Payload too large"},413,R5)}),async(Q)=>{let X=Q.get("vmClaim"),Y=null;if(X.runtime!=="cms"){let F=yv(Q);if(F instanceof Response)return F;Y=F}let{claimName:G,userId:J,projectRef:W}=X,K=Q.var.studioContext;try{let F=await Q.req.json().catch(()=>({})),H=F.status,U=F.diff,N=U!=null&&typeof U.diffs==="object"&&U.diffs!==null,[B,O]=p71(H)&&N?[H,U]:Y?await Promise.all([iT0(Y,G,"/_sandbox/git/status","GET",{userId:J,projectRef:W}),iT0(Y,G,"/_sandbox/git/diff","GET",{userId:J,projectRef:W})]):await(async()=>{let L=await Hl(Q);return Promise.all([lT0(L,X.branch),cT0(L,X.branch)])})(),w=await pc$(K,B,O);return Q.json(w,200,R5)}catch(F){let H=F instanceof Error?F.message:String(F);if(H==="SANDBOX_GONE")return Q.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,R5);return Q.json({error:H},502,R5)}}),$.post("/:virtualMcpId/:branch/git/judge-review",a5({maxSize:xd$,onError:(Q)=>Q.json({error:"Payload too large"},413,R5)}),async(Q)=>{let X=Q.get("vmClaim"),Y=null;if(X.runtime!=="cms"){let F=yv(Q);if(F instanceof Response)return F;Y=F}let{claimName:G,userId:J,projectRef:W}=X,K=Q.var.studioContext;try{let F=await Q.req.json().catch(()=>({})),H=F.status,U=F.diff,N=U!=null&&typeof U.diffs==="object"&&U.diffs!==null,[B,O]=p71(H)&&N?[H,U]:Y?await Promise.all([iT0(Y,G,"/_sandbox/git/status","GET",{userId:J,projectRef:W}),iT0(Y,G,"/_sandbox/git/diff","GET",{userId:J,projectRef:W})]):await(async()=>{let L=await Hl(Q);return Promise.all([lT0(L,X.branch),cT0(L,X.branch)])})(),w=await tc$(K,B,O,typeof F.language==="string"?F.language:void 0);return Q.json(w,200,R5)}catch(F){let H=F instanceof Error?F.message:String(F);if(H==="SANDBOX_GONE")return Q.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,R5);return Q.json({error:H},502,R5)}}),$.get("/:virtualMcpId/:branch/preview-fetch",async(Q)=>{let X=yv(Q);if(X instanceof Response)return X;let{claimName:Y}=Q.get("vmClaim"),G=Q.req.query("path");if(!G||!G.startsWith("/")||G.startsWith("//")||G.includes("..")||G.includes("\\"))return Q.json({error:"Path not allowed"},403);let J;try{J=await X.getPreviewUrl(Y)}catch{return Q.json({error:"Preview not available"},502)}if(!J)return Q.json({error:"Preview not available"},502);let W=J.replace(/\/+$/,"");return gd$(Q,`${W}${G}`)}),$.post("/:virtualMcpId/:branch/preview-invoke",a5({maxSize:MB6,onError:(Q)=>Q.json({error:"Payload too large"},413)}),async(Q)=>{let X=yv(Q);if(X instanceof Response)return X;let{claimName:Y}=Q.get("vmClaim"),G;try{G=await X.getPreviewUrl(Y)}catch{return Q.json({error:"Preview not available"},502)}if(!G)return Q.json({error:"Preview not available"},502);let J;try{J=await Q.req.json()}catch{return Q.json({error:"Invalid JSON body"},400)}if(!J||typeof J!=="object"||Array.isArray(J))return Q.json({error:"Invalid JSON body"},400);let W=_d$(J);if(!W)return Q.json({error:"Invalid or missing __resolveType"},400);let K=vd$(G,W.resolveType);return gd$(Q,K,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(W.payload),signal:AbortSignal.timeout(30000)})}),$};var cd$=D(()=>{d$();VF();Yl();l71();Ln();gc$();n3();Ng();hc$();s3();uc$();cc$();ni0();Pn();o71();oc$();a71();Zw();WQ1();fd$();KQ1();IB6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;VB6=kT0(async($,Z)=>{let Q=$.var.studioContext;try{t(Q)}catch{return $.json({error:"Unauthorized"},401)}let X=t0(Q);if(!X)return $.json({error:"Unauthorized"},401);let Y;try{Y=n(Q)}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{qB6(J)}catch(w){let L=w instanceof Error?w.message:String(w);return $.json({error:L},400)}let W=await Q.storage.virtualMcps.findById(G);if(!W||W.organization_id!==Y.id)return $.json({error:"Virtual MCP not found"},404);let K=Dn({orgId:Y.id,virtualMcpId:G,branch:J}),F=await li0(Q,J),H=ci0(F,X),U=yc$({userId:H,projectRef:K}),N=W.metadata??null,B=await SB6($,{claimName:U,branch:J,virtualMcpId:G,sandboxUserId:H,virtualMcpMetadata:N,branchThread:F});if(B==="cms")return $.set("vmClaim",{claimName:U,callerUserId:X,runner:null,virtualMcpId:G,branch:J,userId:H,projectRef:K,virtualMcpMetadata:N,connectionIds:W.connections?.map((w)=>w.connection_id)??[],runtime:B}),Z();let O;try{O=await FX(Q)}catch{O=null}if(!O)return $.json({error:"No sandbox runner found"},404);return $.set("vmClaim",{claimName:U,callerUserId:X,runner:O,virtualMcpId:G,branch:J,userId:H,projectRef:K,virtualMcpMetadata:N,connectionIds:W.connections?.map((w)=>w.connection_id)??[],runtime:B}),Z()});mT0=new Map;R5={"Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache"};ud$=["clone","install","start"]});function dd$($,Z,Q){let X=HQ1.get($);if(!X)X={pending:null,running:!1},HQ1.set($,X);if(!X.pending)X.pending={set:new Map,del:new Set,deps:Z,resolvers:[],rejecters:[]};let Y=X.pending;Y.deps=Z;for(let[J,W]of Object.entries(Q.set??{}))Y.set.set(J,W),Y.del.delete(J);for(let J of Q.delete??[])Y.del.add(J),Y.set.delete(J);let G=new Promise((J,W)=>{Y.resolvers.push(J),Y.rejecters.push(W)});if(!X.running)bB6($,X);return G}async function bB6($,Z){Z.running=!0;try{while(Z.pending){let Q=Z.pending;Z.pending=null;try{let X=await xB6(Q);for(let Y of Q.resolvers)Y(X)}catch(X){for(let Y of Q.rejecters)Y(X)}}}finally{if(Z.running=!1,!Z.pending)HQ1.delete($)}}async function xB6($){let{client:Z,branch:Q,packagePath:X}=$.deps;for(let Y=0;;Y++){let G=await Fl(Z,Q),J=await Z.getCommitTreeSha(G),W=await Z.getDecofileTree(J,X),K=YQ1(W,X),F=[],H=new Map(K.map((O)=>[O.path,{stem:O.stem,sha:O.sha}]));for(let[O,w]of $.set){let L=GQ1(K,O),E=`${JSON.stringify(w,null,2)}
2983
- `,j=await Z.createBlob(E);await Md$(Z.owner,Z.repo,j,E);let z=L[0]??`${hT0(X)}/${e71(O)}.json`;F.push({path:z,mode:"100644",type:"blob",sha:j});let P=z.slice(z.lastIndexOf("/")+1,-5);H.set(z,{stem:P,sha:j,content:E});for(let A of L.slice(1))F.push({path:A,mode:"100644",type:"blob",sha:null}),H.delete(A)}for(let O of $.del)for(let w of GQ1(K,O))F.push({path:w,mode:"100644",type:"blob",sha:null}),H.delete(w);if(F.length===0)return G;let U=X?`${X}/.deco/blocks.gen.json`:".deco/blocks.gen.json";if(W.some((O)=>O.type==="blob"&&O.path===U)){let O=await Promise.all([...H.values()].map(async(j)=>({stem:j.stem,content:j.content??await Z.getBlobText(j.sha)}))),{decofile:w,skipped:L}=Vs(O);if(L.length>0)console.warn("decofile gen: dropped blocks that were not valid JSON",{repo:`${Z.owner}/${Z.repo}`,branch:Q,packagePath:X,blocks:L.map((j)=>j.key)});let E=await Z.createBlob(w);F.push({path:U,mode:"100644",type:"blob",sha:E})}let N=await Z.createTree(J,F),B=await Z.createCommit({message:yB6($),treeSha:N,parentShas:[G]});try{return await Z.updateRef(Q,B),B}catch(O){if(!(O instanceof d4&&O.status===422)||Y>=fB6-1)throw O;await L$(Q7(2000,200,Y,2,0.5))}}}function yB6($){let Z=(Y)=>{let G=Y.slice(0,3).join(", ");return Y.length>3?`${G} (+${Y.length-3} more)`:G},Q=[];if($.set.size>0)Q.push(`update ${Z([...$.set.keys()])}`);if($.del.size>0)Q.push(`delete ${Z([...$.del])}`);let X=`chore(decofile): ${Q.join("; ")}`;return Ci0(X,$.deps.coAuthor)}var fB6=3,HQ1;var md$=D(()=>{S70();_T0();a8();Zw();uT0();HQ1=new Map});import{createHmac as id$,randomBytes as gB6,timingSafeEqual as hB6}from"crypto";function pd$(){if(pT0)return pT0;let $;try{let Z=V0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return pT0=$?Buffer.from($):gB6(32),pT0}function UQ1($){let Z=$.nowMs??Date.now(),Q={o:$.organizationId,m:$.virtualMcpId,b:$.branch,e:Math.floor((Z+uB6)/1000)},X=Buffer.from(JSON.stringify(Q)).toString("base64url"),Y=id$("sha256",pd$()).update(X).digest("base64url");return`${X}.${Y}`}function nd$($,Z){let Q=$.indexOf(".");if(Q<0)return!1;let X=$.slice(0,Q),Y=Buffer.from($.slice(Q+1)),G=Buffer.from(id$("sha256",pd$()).update(X).digest("base64url"));if(Y.length!==G.length||!hB6(Y,G))return!1;let J;try{J=JSON.parse(Buffer.from(X,"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 uB6=21600000,pT0=null;var td$=D(()=>{D$()});import{z as Ul}from"zod";function cB6($){return $.length>0&&$.length<=255&&!$.includes("..")&&!$.endsWith("/")&&!$.endsWith(".lock")&&lB6.test($)}function ed$($){return $.req.header("x-forwarded-host")??new URL($.req.url).host}async function bs($){let Z=$.get("decofileScope");return ST0($.var.studioContext,Z.organizationId,Z.githubRepo)}function xs($,Z){if(Z instanceof d4){let X=Z.status===404?404:Z.status===409?409:Z.status===422?409:502;return $.json({error:Z.message},X)}let Q=Z instanceof Error?Z.message:String(Z);return $.json({error:Q},500)}function $m$(){let $=new J1;return $.use("/:virtualMcpId/:branch",sd$),$.use("/:virtualMcpId/:branch/*",sd$),$.get("/:virtualMcpId/:branch",async(Z)=>{let Q=Z.get("decofileScope");try{let X=await bs(Z),Y=await kd$(X,Q.branch,Q.packagePath,{createBranchIfMissing:!!Q.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(!Q.userId)return Z.body(Y.decofile,200,{...G,"content-type":"application/json"});let J=UQ1({organizationId:Q.organizationId,virtualMcpId:Q.virtualMcpId,branch:Q.branch});return Z.body(`{"version":${JSON.stringify(Y.sha)},"token":${JSON.stringify(J)},"apiHost":${JSON.stringify(ed$(Z))},"decofile":${Y.decofile}}`,200,{...G,"content-type":"application/json"})}catch(X){return xs(Z,X)}}),$.get("/:virtualMcpId/:branch/meta",async(Z)=>{let Q=Z.get("decofileScope"),X=Q.packagePath?`${Q.packagePath}/.deco/meta.gen.json`:".deco/meta.gen.json";try{let Y=await bs(Z),G=await Y.getFileTextAtRef(Q.branch,X);if(G===null){let J=await Y.getDefaultBranch();if(J!==Q.branch)G=await Y.getFileTextAtRef(J,X)}if(G===null)return Z.json({error:"meta.gen.json not committed"},404);return Z.body(G,200,{"content-type":"application/json","Cache-Control":"no-store","Access-Control-Allow-Origin":"*"})}catch(Y){return xs(Z,Y)}}),$.patch("/:virtualMcpId/:branch",mB6,async(Z)=>{let Q=Z.get("decofileScope"),X=Z.var.studioContext,Y=iB6.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{CT0(J)}catch(W){let K=W instanceof Error?W.message:String(W);return Z.json({error:K},400)}for(let[J,W]of Object.entries(G.set??{})){if(typeof W!=="object"||W===null||Array.isArray(W))return Z.json({error:`Block "${J}" must be a JSON object`},400);if(s71(J))return Z.json({error:`Block key "${J}" collides with a framework resolver module and cannot be written`},400)}try{let J=await bs(Z),W=await dd$(`${Q.organizationId}/${Q.virtualMcpId}/${Q.branch}`,{client:J,branch:Q.branch,packagePath:Q.packagePath,coAuthor:Gl(X)},G),K=UQ1({organizationId:Q.organizationId,virtualMcpId:Q.virtualMcpId,branch:Q.branch});return Z.json({version:W,token:K,apiHost:ed$(Z)})}catch(J){return xs(Z,J)}}),$.post("/:virtualMcpId/:branch/publish",async(Z)=>{let Q=Z.get("decofileScope");try{let X=await bs(Z),Y=await X.getDefaultBranch();if(Y===Q.branch)return Z.json({error:"Branch is already the default branch"},400);let G=`chore(decofile): publish ${Q.branch}`;try{let J;try{J=await X.mergeBranch(Y,Q.branch,G)}catch(W){if(!(W instanceof d4&&W.status===409))throw W;await dT0(X,Q.branch,Y),J=await X.mergeBranch(Y,Q.branch,G)}return J?Z.json({result:"merged",sha:J}):Z.json({result:"up-to-date"})}catch(J){if(J instanceof d4&&J.status===409)return Z.json({error:"merge-conflict"},409);if(J instanceof d4&&J.status===405){let K=await X.findOpenPullRequest(Y,Q.branch)??await X.createPullRequest({base:Y,head:Q.branch,title:`Publish ${Q.branch}`});return Z.json({result:"pull-request",number:K.number,url:K.html_url})}throw J}}catch(X){return xs(Z,X)}}),$.get("/:virtualMcpId/:branch/status",async(Z)=>{let Q=Z.get("decofileScope");try{let X=await bs(Z),Y=await X.getDefaultBranch();if(Y===Q.branch)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0,lastCommitAt:null});try{let[{aheadBy:G,behindBy:J},W]=await Promise.all([X.compare(Y,Q.branch),X.getBranchHead(Q.branch)]);return Z.json({baseBranch:Y,aheadBy:G,behindBy:J,lastCommitAt:W.committedAt})}catch(G){if(G instanceof d4&&G.status===404)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0,lastCommitAt:null});throw G}}catch(X){return xs(Z,X)}}),$}var lB6,od$=500,rd$=1048576,ad$=1024,dB6=8388608,mB6,iB6,sd$;var Zm$=D(()=>{Dt0();_T0();d$();VF();l71();VT0();KQ1();a71();md$();td$();WQ1();Zw();uT0();lB6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;mB6=a5({maxSize:dB6,onError:($)=>$.json({error:"Payload too large"},413)}),iB6=Ul.object({set:Ul.record(Ul.string(),Ul.unknown()).optional(),delete:Ul.array(Ul.string()).optional()}).refine(($)=>Object.keys($.set??{}).length>0||($.delete?.length??0)>0,{message:"Patch must set or delete at least one block"}).refine(($)=>Object.keys($.set??{}).length+($.delete?.length??0)<=od$,{message:`Patch cannot touch more than ${od$} blocks`}).refine(($)=>Object.values($.set??{}).every((Z)=>JSON.stringify(Z).length<=rd$),{message:`Each block must be at most ${rd$} bytes`}).refine(($)=>[...Object.keys($.set??{}),...$.delete??[]].every((Z)=>Z.length<=ad$),{message:`Each block key must be at most ${ad$} characters`}),sd$=kT0(async($,Z)=>{let Q=$.var.studioContext,X=Q.organization;if(!X)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(!cB6(G))return $.json({error:`Invalid branch name: ${G}`},400);let J=Q.auth?.user?.id??null;if(!J){let B=$.req.query("token");if(!($.req.method==="GET"&&!$.req.path.match(/\/(publish|status)$/)))return $.json({error:"Unauthorized"},401);if(!B||!nd$(B,{organizationId:X.id,virtualMcpId:Y,branch:G}))return $.json({error:"Unauthorized"},401)}let W=await Q.storage.virtualMcps.findById(Y);if(!W||W.organization_id!==X.id)return $.json({error:"Virtual MCP not found"},404);let K=W.metadata??null;if(!DD0(K))return $.json({error:"Project has no preview server configured"},404);let H=W.connections?.map((B)=>B.connection_id)??[],U=vs(K,H);if(!U)return $.json({error:"Project has no GitHub repository"},404);let N=K?.runtime;return $.set("decofileScope",{organizationId:X.id,virtualMcpId:Y,branch:G,packagePath:N?.path?.replace(/^\/+|\/+$/g,"")||null,githubRepo:U,userId:J}),Z()})});var Qm$=($)=>{let Z=new J1;if(Z.use("*",Tv),Z.route("/",cA0()),Z.route("/",Eh$()),Z.route("/",Rc$()),Z.route("/",Pc$()),Z.route("/",IT0()),Z.route("/tools",Cc$()),Z.route("/",kc$()),Z.route("/",$c$({kvStorage:$.kvStorage})),Z.route("/",sl$()),Z.route("/fs",Oc$({getConnection:$.getNatsConnection})),Z.route("/sandbox",ld$()),Z.route("/decofile",$m$()),Z.route("/",Ec$()),Z.route("/deco-sites",mA0()),Z.route("/hosting",Wh$()),Z.route("/monitor",Oh$()),Z.route("/sso",xA0()),Z.route("/",qT0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",Qh$()),$.mountDevAssets)Z.route("/dev-assets",tA0({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("/",Ix$()),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",wc$()),Z.route("/mcp",iL0()),Z.route("/mcp/self",RT0()),Z.route("/mcp",tL0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var Xm$=D(()=>{d$();SA0();Xh$();UZ1();Kh$();Dh$();oA0();Zs();JZ1();el$();Zc$();Dc$();Qo();$Z1();oL0();f71();Lc$();jc$();Ac$();Ic$();Vc$();x71();_c$();y71();pL0();cd$();Zm$()});function pB6($){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 nB6=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},Ym$=()=>{let $=new J1;return $.use("*",nB6),$.get("/",async(Z)=>{let Q=V0(),X=Q.decoSupabaseUrl,Y=Q.decoSupabaseServiceKey;if(!X||!Y)return Z.json({apps:[]});try{let G=await PY(X,Y,"apps?select=name,title,description,logo,category,vendors(alias,url)");return Z.json({apps:pB6(G)})}catch(G){return console.error("[deco-apps] GET error:",G),Z.json({error:"Failed to fetch apps"},502)}}),$};var Gm$=D(()=>{d$();D$();hP0()});import{z as q1}from"zod";function bF($,Z="invalid_request_error",Q=null,X=null){return{error:{message:$,type:Z,param:Q,code:X}}}function XO6($){if(!$)return null;let Z=$.indexOf(":");if(Z===-1)return{credentialId:null,modelId:$};let Q=$.substring(0,Z),X=$.substring(Z+1);if(!Q||!X)return null;return{credentialId:Q,modelId:X}}function YO6($,Z,Q){try{return JSON.parse($)}catch{throw new Km$(`Invalid JSON in tool call arguments for function '${Q}' (tool_call_id: ${Z}): ${$}`)}}function GO6($){let Z={};for(let Q of $)if(Q.role==="assistant"&&Q.tool_calls)for(let X of Q.tool_calls)Z[X.id]=X.function.name;return $.map((Q)=>{switch(Q.role){case"system":return{role:"system",content:Q.content};case"user":if(typeof Q.content==="string")return{role:"user",content:Q.content};return{role:"user",content:Q.content.map((Y)=>{if(Y.type==="text")return{type:"text",text:Y.text};return{type:"image",image:Y.image_url.url}})};case"assistant":if(Q.tool_calls&&Q.tool_calls.length>0)return{role:"assistant",content:Q.tool_calls.map((Y)=>({type:"tool-call",toolCallId:Y.id,toolName:Y.function.name,input:YO6(Y.function.arguments,Y.id,Y.function.name)}))};return{role:"assistant",content:Q.content??""};case"tool":let X=Z[Q.tool_call_id]??"unknown";return{role:"tool",content:[{type:"tool-result",toolCallId:Q.tool_call_id,toolName:X,output:{type:"text",value:Q.content}}]}}})}function JO6($){let Z=$.map((Q)=>{let X=Q.function.parameters?sY(Q.function.parameters):sY({type:"object",properties:{}});return[Q.function.name,V$({description:Q.function.description,inputSchema:X})]});return Object.fromEntries(Z)}function WO6($){if(!$)return;return{openai:{response_format:$}}}function KO6(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function Jm$($,Z,Q,X,Y,G){let J={model:$,messages:Z,tools:Q,temperature:X.temperature,maxTokens:X.max_tokens,topP:X.top_p,frequencyPenalty:X.frequency_penalty,presencePenalty:X.presence_penalty,stopSequences:X.stop?Array.isArray(X.stop)?X.stop:[X.stop]:void 0,abortSignal:G};return Y?{...J,providerOptions:Y}:J}function Wm$($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var tB6=256,oB6,rB6,aB6,sB6,eB6,$O6,ZO6,QO6,Km$,Fm$,Hm$;var Um$=D(()=>{g4();d$();Yl();fU();oB6=q1.object({type:q1.literal("function"),function:q1.object({name:q1.string(),description:q1.string().optional(),parameters:q1.record(q1.string(),q1.unknown()).optional()})}),rB6=q1.object({id:q1.string(),type:q1.literal("function"),function:q1.object({name:q1.string(),arguments:q1.string()})}),aB6=q1.discriminatedUnion("role",[q1.object({role:q1.literal("system"),content:q1.string(),name:q1.string().optional()}),q1.object({role:q1.literal("user"),content:q1.union([q1.string(),q1.array(q1.union([q1.object({type:q1.literal("text"),text:q1.string()}),q1.object({type:q1.literal("image_url"),image_url:q1.object({url:q1.string(),detail:q1.string().optional()})})]))]),name:q1.string().optional()}),q1.object({role:q1.literal("assistant"),content:q1.string().nullable().optional(),name:q1.string().optional(),tool_calls:q1.array(rB6).optional()}),q1.object({role:q1.literal("tool"),content:q1.string(),tool_call_id:q1.string()})]),sB6=q1.object({type:q1.literal("text")}),eB6=q1.object({type:q1.literal("json_object")}),$O6=q1.object({type:q1.literal("json_schema"),json_schema:q1.object({name:q1.string(),description:q1.string().optional(),schema:q1.record(q1.string(),q1.unknown()),strict:q1.boolean().optional()})}),ZO6=q1.union([sB6,eB6,$O6]),QO6=q1.object({model:q1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:q1.array(aB6),stream:q1.boolean().optional().default(!1),temperature:q1.number().min(0).max(2).optional(),max_tokens:q1.number().positive().optional(),top_p:q1.number().min(0).max(1).optional(),frequency_penalty:q1.number().min(-2).max(2).optional(),presence_penalty:q1.number().min(-2).max(2).optional(),stop:q1.union([q1.string(),q1.array(q1.string())]).optional(),tools:q1.array(oB6).optional(),tool_choice:q1.union([q1.literal("auto"),q1.literal("none"),q1.literal("required"),q1.object({type:q1.literal("function"),function:q1.object({name:q1.string()})})]).optional(),response_format:ZO6.optional(),user:q1.string().optional()});Km$=class Km$ extends Error{constructor($){super($);this.name="MessageConversionError"}};Fm$=new J1;Fm$.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),Q=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(bF("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(bF("Organization context is required. Ensure your API key has organization metadata.","invalid_request_error","organization"),400);if((Z.organization.slug??Z.organization.id)!==Q)return $.json(bF("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let X=await $.req.json(),Y=QO6.safeParse(X);if(!Y.success){let L=Y.error.issues[0]??{message:"Invalid request",path:[]};return $.json(bF(`Invalid request: ${L.message}`,"invalid_request_error",L.path.length>0?L.path.join("."):null),400)}let G=Y.data,J=XO6(G.model);if(!J)return $.json(bF("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)=>EL(j.providerId));if(!E)return $.json(bF("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 F;try{F=await Z.aiProviders.activate(W,Z.organization.id)}catch{return $.json(bF(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let H=F.aiSdk.languageModel(K),U=GO6(G.messages),N=G.tools?JO6(G.tools):void 0,B=WO6(G.response_format),O=KO6(),w=Math.floor(Date.now()/1000);if(G.stream)return QN($,async(L)=>{let E=Jm$(H,U,N,G,B,$.req.raw.signal);try{let j=fO(E),z=!1,P=0,A="",I=async()=>{if(A.length===0)return;let k=A;A="",await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:w,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:O,object:"chat.completion.chunk",created:w,model:G.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),z=!0;if(k.type==="text-delta"){if(A+=k.text,A.length>=tB6)await I()}else if(k.type==="tool-call"){await I();let M=P++;await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:w,model:G.model,choices:[{index:0,delta:{tool_calls:[{index:M,id:k.toolCallId,type:"function",function:{name:k.toolName,arguments:JSON.stringify(k.input)}}]},finish_reason:null}]})})}else if(k.type==="finish")await I(),await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:w,model:G.model,choices:[{index:0,delta:{},finish_reason:Wm$(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=Jm$(H,U,N,G,B,$.req.raw.signal),E=await _O(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:O,object:"chat.completion",created:w,model:G.model,choices:[{index:0,message:j,finish_reason:Wm$(E.finishReason)}],usage:{prompt_tokens:E.usage?.inputTokens??0,completion_tokens:E.usage?.outputTokens??0,total_tokens:E.usage?.totalTokens??0}})}}catch(X){let Y=X;if(Y.name==="AbortError")return $.json(bF("Request aborted","invalid_request_error"),400);if(Y.name==="MessageConversionError")return $.json(bF(Y.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",Y.message,Y.stack),$.json(bF(Y.message,"server_error"),500)}});Hm$=Fm$});function FO6($){if(typeof $!=="object"||$===null)return!1;let Q=$.githubRepo?.url;return typeof Q==="string"&&Q.length>0}function Nm$(){let $=new J1;return $.use("*",async(Z,Q)=>{await Q(),Z.header("Cache-Control","private, no-store"),Z.header("Vary","Cookie")}),$.get("/",async(Z)=>{let Q=Z.get("studioContext"),X=t0(Q);if(!X)return Z.json({error:"Authentication required"},401);let G=(Z.req.query("site")??"").trim().toLowerCase();if(!sQ(G))return Z.json({error:"Invalid site slug"},400);let J=await Q.db.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["organization.id as id","organization.slug as slug","organization.name as name","organization.metadata as metadata"]).where("member.userId","=",X).execute(),W=[];for(let F of J){if(!F.slug||m9(F))continue;let H=await Q.storage.virtualMcps.list(F.id);for(let U of H){if(Q0$(U)!==G)continue;if(!FO6(U.metadata))continue;W.push({orgSlug:F.slug,orgName:F.name??F.slug,project:{id:U.id,title:U.title,icon:U.icon??null}})}}let K={matches:W};return Z.json(K)}),$}var Bm$=D(()=>{d$();cH()});var Dm$;var Om$=D(()=>{Dm$={name:"decocms",version:"4.329.9",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});function NO6(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??UO6}}var wm$,UO6="https://ph.studio.decocms.com",Lm$;var Em$=D(()=>{d$();K90();J_();u5();D$();c91();Om$();wm$=new J1;wm$.get("/",($)=>{let Z={version:Dm$.version,theme:Ep1(),...bH().logo&&{logo:bH().logo},...PU()&&{internalUrl:m_1()},...V0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!V0().firecrawlApiKey,hostingEnabled:!!V0().controlplaneRestUrl&&!!V0().controlplaneServiceToken,hostingControlPlaneGa:V0().hostingControlPlaneGa,monitorEnabled:!!V0().clickhouseAnalyticsUrl&&!!V0().clickhouseAnalyticsPassword,monitorGa:V0().monitorGa,auth:Wg$(),posthog:NO6(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:ms()}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});Lm$=wm$});function Nl($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function NQ1($){return(Nl($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((Q)=>Q.charAt(0).toUpperCase()+Q.slice(1)).join(" ")}function zm$($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(Nl($))}&sz=${Z}`}function jm$($,Z){let Q=$.trim();if(Q.length<=Z)return Q;let X=Q.slice(0,Z-1),Y=X.lastIndexOf(" ");return`${(Y>Z*0.6?X.slice(0,Y):X).trimEnd()}\u2026`}function Pm$($){let{brand:Z,domain:Q,score:X,verdict:Y}=$,G=typeof X==="number"?`${Z} commerce report \u2014 ${Math.round(X)}/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()?jm$(`${Y.trim().replace(/\s+/g," ")} \u2014 ${J}`,200):jm$(`How does ${Q} really perform? ${J}`,200);return{title:G,description:W}}import{z as l0}from"zod";var gv,BO6,OO6,DO6,wO6,Am$;var Tm$=D(()=>{gv=l0.enum(["good","bad","neutral"]),BO6=l0.preprocess(($)=>{if(Array.isArray($))return{kind:"text",value:$.find((Q)=>Q!==null&&typeof Q!=="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:gv.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 $})),OO6=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(BO6)),DO6={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()},wO6=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:gv.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:gv.optional()}),l0.object({template:l0.literal("stats"),stats:l0.array(l0.object({value:l0.coerce.string(),label:l0.coerce.string(),tone:gv.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:gv.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(OO6).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:gv.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:gv.optional()})).min(1)})]),Am$=l0.object({...DO6,template:wO6})});function nT0($){let Z=[],Q=[...$.sections].sort((Y,G)=>Y.position-G.position).map((Y)=>{let G=Am$.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),X=Q.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:X},slides:Q},drops:Z}}var BQ1=D(()=>{Tm$()});import{join as Rm$}from"path";async function EO6($){try{let Z=await fetch(`${LK({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(LO6)});if(!Z.ok)return null;let Q=await Z.json(),{deck:X}=nT0(Q);if(!X.slides.length)return null;let Y=X.slides.find((W)=>W.template.template==="cover"),G=Y?.template,J=G&&G.template==="cover"?G:void 0;return{brand:X.meta.brand?.trim()||NQ1($),score:X.meta.scores?.cover??J?.score?.value,verdict:Y?.annotation?.trim()||Y?.headline?.trim()||void 0}}catch{return null}}function TG($){return $.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;")}function jO6($,Z){let Q=Nl($),X=Z?.brand?.trim()||NQ1(Q),Y=zm$(Q,128),J=`${(V0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(Q)}`,{title:W,description:K}=Pm$({brand:X,domain:Q,score:Z?.score,verdict:Z?.verdict}),F=`${J}/og.png`,H=`${X} commerce report by decocms`;return[`<title>${TG(W)}</title>`,`<meta name="description" content="${TG(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="${TG(W)}" />`,`<meta property="og:description" content="${TG(K)}" />`,`<meta property="og:url" content="${TG(J)}" />`,`<meta property="og:image" content="${TG(F)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${TG(H)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${TG(W)}" />`,`<meta name="twitter:description" content="${TG(K)}" />`,`<meta name="twitter:image" content="${TG(F)}" />`,`<meta name="twitter:image:alt" content="${TG(H)}" />`,`<link rel="canonical" href="${TG(J)}" />`,`<link rel="icon" href="${TG(Y)}" sizes="any" />`].join(`
2983
+ `,j=await Z.createBlob(E);await Md$(Z.owner,Z.repo,j,E);let z=L[0]??`${hT0(X)}/${e71(O)}.json`;F.push({path:z,mode:"100644",type:"blob",sha:j});let P=z.slice(z.lastIndexOf("/")+1,-5);H.set(z,{stem:P,sha:j,content:E});for(let A of L.slice(1))F.push({path:A,mode:"100644",type:"blob",sha:null}),H.delete(A)}for(let O of $.del)for(let w of GQ1(K,O))F.push({path:w,mode:"100644",type:"blob",sha:null}),H.delete(w);if(F.length===0)return G;let U=X?`${X}/.deco/blocks.gen.json`:".deco/blocks.gen.json";if(W.some((O)=>O.type==="blob"&&O.path===U)){let O=await Promise.all([...H.values()].map(async(j)=>({stem:j.stem,content:j.content??await Z.getBlobText(j.sha)}))),{decofile:w,skipped:L}=Vs(O);if(L.length>0)console.warn("decofile gen: dropped blocks that were not valid JSON",{repo:`${Z.owner}/${Z.repo}`,branch:Q,packagePath:X,blocks:L.map((j)=>j.key)});let E=await Z.createBlob(w);F.push({path:U,mode:"100644",type:"blob",sha:E})}let N=await Z.createTree(J,F),B=await Z.createCommit({message:yB6($),treeSha:N,parentShas:[G]});try{return await Z.updateRef(Q,B),B}catch(O){if(!(O instanceof d4&&O.status===422)||Y>=fB6-1)throw O;await L$(Q7(2000,200,Y,2,0.5))}}}function yB6($){let Z=(Y)=>{let G=Y.slice(0,3).join(", ");return Y.length>3?`${G} (+${Y.length-3} more)`:G},Q=[];if($.set.size>0)Q.push(`update ${Z([...$.set.keys()])}`);if($.del.size>0)Q.push(`delete ${Z([...$.del])}`);let X=`chore(decofile): ${Q.join("; ")}`;return Ci0(X,$.deps.coAuthor)}var fB6=3,HQ1;var md$=D(()=>{S70();_T0();a8();Zw();uT0();HQ1=new Map});import{createHmac as id$,randomBytes as gB6,timingSafeEqual as hB6}from"crypto";function pd$(){if(pT0)return pT0;let $;try{let Z=V0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return pT0=$?Buffer.from($):gB6(32),pT0}function UQ1($){let Z=$.nowMs??Date.now(),Q={o:$.organizationId,m:$.virtualMcpId,b:$.branch,e:Math.floor((Z+uB6)/1000)},X=Buffer.from(JSON.stringify(Q)).toString("base64url"),Y=id$("sha256",pd$()).update(X).digest("base64url");return`${X}.${Y}`}function nd$($,Z){let Q=$.indexOf(".");if(Q<0)return!1;let X=$.slice(0,Q),Y=Buffer.from($.slice(Q+1)),G=Buffer.from(id$("sha256",pd$()).update(X).digest("base64url"));if(Y.length!==G.length||!hB6(Y,G))return!1;let J;try{J=JSON.parse(Buffer.from(X,"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 uB6=21600000,pT0=null;var td$=D(()=>{D$()});import{z as Ul}from"zod";function cB6($){return $.length>0&&$.length<=255&&!$.includes("..")&&!$.endsWith("/")&&!$.endsWith(".lock")&&lB6.test($)}function ed$($){return $.req.header("x-forwarded-host")??new URL($.req.url).host}async function bs($){let Z=$.get("decofileScope");return ST0($.var.studioContext,Z.organizationId,Z.githubRepo)}function xs($,Z){if(Z instanceof d4){let X=Z.status===404?404:Z.status===409?409:Z.status===422?409:502;return $.json({error:Z.message},X)}let Q=Z instanceof Error?Z.message:String(Z);return $.json({error:Q},500)}function $m$(){let $=new J1;return $.use("/:virtualMcpId/:branch",sd$),$.use("/:virtualMcpId/:branch/*",sd$),$.get("/:virtualMcpId/:branch",async(Z)=>{let Q=Z.get("decofileScope");try{let X=await bs(Z),Y=await kd$(X,Q.branch,Q.packagePath,{createBranchIfMissing:!!Q.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(!Q.userId)return Z.body(Y.decofile,200,{...G,"content-type":"application/json"});let J=UQ1({organizationId:Q.organizationId,virtualMcpId:Q.virtualMcpId,branch:Q.branch});return Z.body(`{"version":${JSON.stringify(Y.sha)},"token":${JSON.stringify(J)},"apiHost":${JSON.stringify(ed$(Z))},"decofile":${Y.decofile}}`,200,{...G,"content-type":"application/json"})}catch(X){return xs(Z,X)}}),$.get("/:virtualMcpId/:branch/meta",async(Z)=>{let Q=Z.get("decofileScope"),X=Q.packagePath?`${Q.packagePath}/.deco/meta.gen.json`:".deco/meta.gen.json";try{let Y=await bs(Z),G=await Y.getFileTextAtRef(Q.branch,X);if(G===null){let J=await Y.getDefaultBranch();if(J!==Q.branch)G=await Y.getFileTextAtRef(J,X)}if(G===null)return Z.json({error:"meta.gen.json not committed"},404);return Z.body(G,200,{"content-type":"application/json","Cache-Control":"no-store","Access-Control-Allow-Origin":"*"})}catch(Y){return xs(Z,Y)}}),$.patch("/:virtualMcpId/:branch",mB6,async(Z)=>{let Q=Z.get("decofileScope"),X=Z.var.studioContext,Y=iB6.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{CT0(J)}catch(W){let K=W instanceof Error?W.message:String(W);return Z.json({error:K},400)}for(let[J,W]of Object.entries(G.set??{})){if(typeof W!=="object"||W===null||Array.isArray(W))return Z.json({error:`Block "${J}" must be a JSON object`},400);if(s71(J))return Z.json({error:`Block key "${J}" collides with a framework resolver module and cannot be written`},400)}try{let J=await bs(Z),W=await dd$(`${Q.organizationId}/${Q.virtualMcpId}/${Q.branch}`,{client:J,branch:Q.branch,packagePath:Q.packagePath,coAuthor:Gl(X)},G),K=UQ1({organizationId:Q.organizationId,virtualMcpId:Q.virtualMcpId,branch:Q.branch});return Z.json({version:W,token:K,apiHost:ed$(Z)})}catch(J){return xs(Z,J)}}),$.post("/:virtualMcpId/:branch/publish",async(Z)=>{let Q=Z.get("decofileScope");try{let X=await bs(Z),Y=await X.getDefaultBranch();if(Y===Q.branch)return Z.json({error:"Branch is already the default branch"},400);let G=`chore(decofile): publish ${Q.branch}`;try{let J;try{J=await X.mergeBranch(Y,Q.branch,G)}catch(W){if(!(W instanceof d4&&W.status===409))throw W;await dT0(X,Q.branch,Y),J=await X.mergeBranch(Y,Q.branch,G)}return J?Z.json({result:"merged",sha:J}):Z.json({result:"up-to-date"})}catch(J){if(J instanceof d4&&J.status===409)return Z.json({error:"merge-conflict"},409);if(J instanceof d4&&J.status===405){let K=await X.findOpenPullRequest(Y,Q.branch)??await X.createPullRequest({base:Y,head:Q.branch,title:`Publish ${Q.branch}`});return Z.json({result:"pull-request",number:K.number,url:K.html_url})}throw J}}catch(X){return xs(Z,X)}}),$.get("/:virtualMcpId/:branch/status",async(Z)=>{let Q=Z.get("decofileScope");try{let X=await bs(Z),Y=await X.getDefaultBranch();if(Y===Q.branch)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0,lastCommitAt:null});try{let[{aheadBy:G,behindBy:J},W]=await Promise.all([X.compare(Y,Q.branch),X.getBranchHead(Q.branch)]);return Z.json({baseBranch:Y,aheadBy:G,behindBy:J,lastCommitAt:W.committedAt})}catch(G){if(G instanceof d4&&G.status===404)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0,lastCommitAt:null});throw G}}catch(X){return xs(Z,X)}}),$}var lB6,od$=500,rd$=1048576,ad$=1024,dB6=8388608,mB6,iB6,sd$;var Zm$=D(()=>{Dt0();_T0();d$();VF();l71();VT0();KQ1();a71();md$();td$();WQ1();Zw();uT0();lB6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;mB6=a5({maxSize:dB6,onError:($)=>$.json({error:"Payload too large"},413)}),iB6=Ul.object({set:Ul.record(Ul.string(),Ul.unknown()).optional(),delete:Ul.array(Ul.string()).optional()}).refine(($)=>Object.keys($.set??{}).length>0||($.delete?.length??0)>0,{message:"Patch must set or delete at least one block"}).refine(($)=>Object.keys($.set??{}).length+($.delete?.length??0)<=od$,{message:`Patch cannot touch more than ${od$} blocks`}).refine(($)=>Object.values($.set??{}).every((Z)=>JSON.stringify(Z).length<=rd$),{message:`Each block must be at most ${rd$} bytes`}).refine(($)=>[...Object.keys($.set??{}),...$.delete??[]].every((Z)=>Z.length<=ad$),{message:`Each block key must be at most ${ad$} characters`}),sd$=kT0(async($,Z)=>{let Q=$.var.studioContext,X=Q.organization;if(!X)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(!cB6(G))return $.json({error:`Invalid branch name: ${G}`},400);let J=Q.auth?.user?.id??null;if(!J){let B=$.req.query("token");if(!($.req.method==="GET"&&!$.req.path.match(/\/(publish|status)$/)))return $.json({error:"Unauthorized"},401);if(!B||!nd$(B,{organizationId:X.id,virtualMcpId:Y,branch:G}))return $.json({error:"Unauthorized"},401)}let W=await Q.storage.virtualMcps.findById(Y);if(!W||W.organization_id!==X.id)return $.json({error:"Virtual MCP not found"},404);let K=W.metadata??null;if(!DD0(K))return $.json({error:"Project has no preview server configured"},404);let H=W.connections?.map((B)=>B.connection_id)??[],U=vs(K,H);if(!U)return $.json({error:"Project has no GitHub repository"},404);let N=K?.runtime;return $.set("decofileScope",{organizationId:X.id,virtualMcpId:Y,branch:G,packagePath:N?.path?.replace(/^\/+|\/+$/g,"")||null,githubRepo:U,userId:J}),Z()})});var Qm$=($)=>{let Z=new J1;if(Z.use("*",Tv),Z.route("/",cA0()),Z.route("/",Eh$()),Z.route("/",Rc$()),Z.route("/",Pc$()),Z.route("/",IT0()),Z.route("/tools",Cc$()),Z.route("/",kc$()),Z.route("/",$c$({kvStorage:$.kvStorage})),Z.route("/",sl$()),Z.route("/fs",Oc$({getConnection:$.getNatsConnection})),Z.route("/sandbox",ld$()),Z.route("/decofile",$m$()),Z.route("/",Ec$()),Z.route("/deco-sites",mA0()),Z.route("/hosting",Wh$()),Z.route("/monitor",Oh$()),Z.route("/sso",xA0()),Z.route("/",qT0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",Qh$()),$.mountDevAssets)Z.route("/dev-assets",tA0({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("/",Ix$()),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",wc$()),Z.route("/mcp",iL0()),Z.route("/mcp/self",RT0()),Z.route("/mcp",tL0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var Xm$=D(()=>{d$();SA0();Xh$();UZ1();Kh$();Dh$();oA0();Zs();JZ1();el$();Zc$();Dc$();Qo();$Z1();oL0();f71();Lc$();jc$();Ac$();Ic$();Vc$();x71();_c$();y71();pL0();cd$();Zm$()});function pB6($){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 nB6=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},Ym$=()=>{let $=new J1;return $.use("*",nB6),$.get("/",async(Z)=>{let Q=V0(),X=Q.decoSupabaseUrl,Y=Q.decoSupabaseServiceKey;if(!X||!Y)return Z.json({apps:[]});try{let G=await PY(X,Y,"apps?select=name,title,description,logo,category,vendors(alias,url)");return Z.json({apps:pB6(G)})}catch(G){return console.error("[deco-apps] GET error:",G),Z.json({error:"Failed to fetch apps"},502)}}),$};var Gm$=D(()=>{d$();D$();hP0()});import{z as q1}from"zod";function bF($,Z="invalid_request_error",Q=null,X=null){return{error:{message:$,type:Z,param:Q,code:X}}}function XO6($){if(!$)return null;let Z=$.indexOf(":");if(Z===-1)return{credentialId:null,modelId:$};let Q=$.substring(0,Z),X=$.substring(Z+1);if(!Q||!X)return null;return{credentialId:Q,modelId:X}}function YO6($,Z,Q){try{return JSON.parse($)}catch{throw new Km$(`Invalid JSON in tool call arguments for function '${Q}' (tool_call_id: ${Z}): ${$}`)}}function GO6($){let Z={};for(let Q of $)if(Q.role==="assistant"&&Q.tool_calls)for(let X of Q.tool_calls)Z[X.id]=X.function.name;return $.map((Q)=>{switch(Q.role){case"system":return{role:"system",content:Q.content};case"user":if(typeof Q.content==="string")return{role:"user",content:Q.content};return{role:"user",content:Q.content.map((Y)=>{if(Y.type==="text")return{type:"text",text:Y.text};return{type:"image",image:Y.image_url.url}})};case"assistant":if(Q.tool_calls&&Q.tool_calls.length>0)return{role:"assistant",content:Q.tool_calls.map((Y)=>({type:"tool-call",toolCallId:Y.id,toolName:Y.function.name,input:YO6(Y.function.arguments,Y.id,Y.function.name)}))};return{role:"assistant",content:Q.content??""};case"tool":let X=Z[Q.tool_call_id]??"unknown";return{role:"tool",content:[{type:"tool-result",toolCallId:Q.tool_call_id,toolName:X,output:{type:"text",value:Q.content}}]}}})}function JO6($){let Z=$.map((Q)=>{let X=Q.function.parameters?sY(Q.function.parameters):sY({type:"object",properties:{}});return[Q.function.name,V$({description:Q.function.description,inputSchema:X})]});return Object.fromEntries(Z)}function WO6($){if(!$)return;return{openai:{response_format:$}}}function KO6(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function Jm$($,Z,Q,X,Y,G){let J={model:$,messages:Z,tools:Q,temperature:X.temperature,maxTokens:X.max_tokens,topP:X.top_p,frequencyPenalty:X.frequency_penalty,presencePenalty:X.presence_penalty,stopSequences:X.stop?Array.isArray(X.stop)?X.stop:[X.stop]:void 0,abortSignal:G};return Y?{...J,providerOptions:Y}:J}function Wm$($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var tB6=256,oB6,rB6,aB6,sB6,eB6,$O6,ZO6,QO6,Km$,Fm$,Hm$;var Um$=D(()=>{g4();d$();Yl();fU();oB6=q1.object({type:q1.literal("function"),function:q1.object({name:q1.string(),description:q1.string().optional(),parameters:q1.record(q1.string(),q1.unknown()).optional()})}),rB6=q1.object({id:q1.string(),type:q1.literal("function"),function:q1.object({name:q1.string(),arguments:q1.string()})}),aB6=q1.discriminatedUnion("role",[q1.object({role:q1.literal("system"),content:q1.string(),name:q1.string().optional()}),q1.object({role:q1.literal("user"),content:q1.union([q1.string(),q1.array(q1.union([q1.object({type:q1.literal("text"),text:q1.string()}),q1.object({type:q1.literal("image_url"),image_url:q1.object({url:q1.string(),detail:q1.string().optional()})})]))]),name:q1.string().optional()}),q1.object({role:q1.literal("assistant"),content:q1.string().nullable().optional(),name:q1.string().optional(),tool_calls:q1.array(rB6).optional()}),q1.object({role:q1.literal("tool"),content:q1.string(),tool_call_id:q1.string()})]),sB6=q1.object({type:q1.literal("text")}),eB6=q1.object({type:q1.literal("json_object")}),$O6=q1.object({type:q1.literal("json_schema"),json_schema:q1.object({name:q1.string(),description:q1.string().optional(),schema:q1.record(q1.string(),q1.unknown()),strict:q1.boolean().optional()})}),ZO6=q1.union([sB6,eB6,$O6]),QO6=q1.object({model:q1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:q1.array(aB6),stream:q1.boolean().optional().default(!1),temperature:q1.number().min(0).max(2).optional(),max_tokens:q1.number().positive().optional(),top_p:q1.number().min(0).max(1).optional(),frequency_penalty:q1.number().min(-2).max(2).optional(),presence_penalty:q1.number().min(-2).max(2).optional(),stop:q1.union([q1.string(),q1.array(q1.string())]).optional(),tools:q1.array(oB6).optional(),tool_choice:q1.union([q1.literal("auto"),q1.literal("none"),q1.literal("required"),q1.object({type:q1.literal("function"),function:q1.object({name:q1.string()})})]).optional(),response_format:ZO6.optional(),user:q1.string().optional()});Km$=class Km$ extends Error{constructor($){super($);this.name="MessageConversionError"}};Fm$=new J1;Fm$.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),Q=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(bF("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(bF("Organization context is required. Ensure your API key has organization metadata.","invalid_request_error","organization"),400);if((Z.organization.slug??Z.organization.id)!==Q)return $.json(bF("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let X=await $.req.json(),Y=QO6.safeParse(X);if(!Y.success){let L=Y.error.issues[0]??{message:"Invalid request",path:[]};return $.json(bF(`Invalid request: ${L.message}`,"invalid_request_error",L.path.length>0?L.path.join("."):null),400)}let G=Y.data,J=XO6(G.model);if(!J)return $.json(bF("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)=>EL(j.providerId));if(!E)return $.json(bF("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 F;try{F=await Z.aiProviders.activate(W,Z.organization.id)}catch{return $.json(bF(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let H=F.aiSdk.languageModel(K),U=GO6(G.messages),N=G.tools?JO6(G.tools):void 0,B=WO6(G.response_format),O=KO6(),w=Math.floor(Date.now()/1000);if(G.stream)return QN($,async(L)=>{let E=Jm$(H,U,N,G,B,$.req.raw.signal);try{let j=fO(E),z=!1,P=0,A="",I=async()=>{if(A.length===0)return;let k=A;A="",await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:w,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:O,object:"chat.completion.chunk",created:w,model:G.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),z=!0;if(k.type==="text-delta"){if(A+=k.text,A.length>=tB6)await I()}else if(k.type==="tool-call"){await I();let M=P++;await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:w,model:G.model,choices:[{index:0,delta:{tool_calls:[{index:M,id:k.toolCallId,type:"function",function:{name:k.toolName,arguments:JSON.stringify(k.input)}}]},finish_reason:null}]})})}else if(k.type==="finish")await I(),await L.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:w,model:G.model,choices:[{index:0,delta:{},finish_reason:Wm$(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=Jm$(H,U,N,G,B,$.req.raw.signal),E=await _O(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:O,object:"chat.completion",created:w,model:G.model,choices:[{index:0,message:j,finish_reason:Wm$(E.finishReason)}],usage:{prompt_tokens:E.usage?.inputTokens??0,completion_tokens:E.usage?.outputTokens??0,total_tokens:E.usage?.totalTokens??0}})}}catch(X){let Y=X;if(Y.name==="AbortError")return $.json(bF("Request aborted","invalid_request_error"),400);if(Y.name==="MessageConversionError")return $.json(bF(Y.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",Y.message,Y.stack),$.json(bF(Y.message,"server_error"),500)}});Hm$=Fm$});function FO6($){if(typeof $!=="object"||$===null)return!1;let Q=$.githubRepo?.url;return typeof Q==="string"&&Q.length>0}function Nm$(){let $=new J1;return $.use("*",async(Z,Q)=>{await Q(),Z.header("Cache-Control","private, no-store"),Z.header("Vary","Cookie")}),$.get("/",async(Z)=>{let Q=Z.get("studioContext"),X=t0(Q);if(!X)return Z.json({error:"Authentication required"},401);let G=(Z.req.query("site")??"").trim().toLowerCase();if(!sQ(G))return Z.json({error:"Invalid site slug"},400);let J=await Q.db.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["organization.id as id","organization.slug as slug","organization.name as name","organization.metadata as metadata"]).where("member.userId","=",X).execute(),W=[];for(let F of J){if(!F.slug||m9(F))continue;let H=await Q.storage.virtualMcps.list(F.id);for(let U of H){if(Q0$(U)!==G)continue;if(!FO6(U.metadata))continue;W.push({orgSlug:F.slug,orgName:F.name??F.slug,project:{id:U.id,title:U.title,icon:U.icon??null}})}}let K={matches:W};return Z.json(K)}),$}var Bm$=D(()=>{d$();cH()});var Dm$;var Om$=D(()=>{Dm$={name:"decocms",version:"4.330.0",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});function NO6(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??UO6}}var wm$,UO6="https://ph.studio.decocms.com",Lm$;var Em$=D(()=>{d$();K90();J_();u5();D$();c91();Om$();wm$=new J1;wm$.get("/",($)=>{let Z={version:Dm$.version,theme:Ep1(),...bH().logo&&{logo:bH().logo},...PU()&&{internalUrl:m_1()},...V0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!V0().firecrawlApiKey,hostingEnabled:!!V0().controlplaneRestUrl&&!!V0().controlplaneServiceToken,hostingControlPlaneGa:V0().hostingControlPlaneGa,monitorEnabled:!!V0().clickhouseAnalyticsUrl&&!!V0().clickhouseAnalyticsPassword,monitorGa:V0().monitorGa,auth:Wg$(),posthog:NO6(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:ms()}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});Lm$=wm$});function Nl($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function NQ1($){return(Nl($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((Q)=>Q.charAt(0).toUpperCase()+Q.slice(1)).join(" ")}function zm$($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(Nl($))}&sz=${Z}`}function jm$($,Z){let Q=$.trim();if(Q.length<=Z)return Q;let X=Q.slice(0,Z-1),Y=X.lastIndexOf(" ");return`${(Y>Z*0.6?X.slice(0,Y):X).trimEnd()}\u2026`}function Pm$($){let{brand:Z,domain:Q,score:X,verdict:Y}=$,G=typeof X==="number"?`${Z} commerce report \u2014 ${Math.round(X)}/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()?jm$(`${Y.trim().replace(/\s+/g," ")} \u2014 ${J}`,200):jm$(`How does ${Q} really perform? ${J}`,200);return{title:G,description:W}}import{z as l0}from"zod";var gv,BO6,OO6,DO6,wO6,Am$;var Tm$=D(()=>{gv=l0.enum(["good","bad","neutral"]),BO6=l0.preprocess(($)=>{if(Array.isArray($))return{kind:"text",value:$.find((Q)=>Q!==null&&typeof Q!=="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:gv.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 $})),OO6=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(BO6)),DO6={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()},wO6=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:gv.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:gv.optional()}),l0.object({template:l0.literal("stats"),stats:l0.array(l0.object({value:l0.coerce.string(),label:l0.coerce.string(),tone:gv.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:gv.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(OO6).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:gv.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:gv.optional()})).min(1)})]),Am$=l0.object({...DO6,template:wO6})});function nT0($){let Z=[],Q=[...$.sections].sort((Y,G)=>Y.position-G.position).map((Y)=>{let G=Am$.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),X=Q.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:X},slides:Q},drops:Z}}var BQ1=D(()=>{Tm$()});import{join as Rm$}from"path";async function EO6($){try{let Z=await fetch(`${LK({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(LO6)});if(!Z.ok)return null;let Q=await Z.json(),{deck:X}=nT0(Q);if(!X.slides.length)return null;let Y=X.slides.find((W)=>W.template.template==="cover"),G=Y?.template,J=G&&G.template==="cover"?G:void 0;return{brand:X.meta.brand?.trim()||NQ1($),score:X.meta.scores?.cover??J?.score?.value,verdict:Y?.annotation?.trim()||Y?.headline?.trim()||void 0}}catch{return null}}function TG($){return $.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;")}function jO6($,Z){let Q=Nl($),X=Z?.brand?.trim()||NQ1(Q),Y=zm$(Q,128),J=`${(V0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(Q)}`,{title:W,description:K}=Pm$({brand:X,domain:Q,score:Z?.score,verdict:Z?.verdict}),F=`${J}/og.png`,H=`${X} commerce report by decocms`;return[`<title>${TG(W)}</title>`,`<meta name="description" content="${TG(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="${TG(W)}" />`,`<meta property="og:description" content="${TG(K)}" />`,`<meta property="og:url" content="${TG(J)}" />`,`<meta property="og:image" content="${TG(F)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${TG(H)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${TG(W)}" />`,`<meta name="twitter:description" content="${TG(K)}" />`,`<meta name="twitter:image" content="${TG(F)}" />`,`<meta name="twitter:image:alt" content="${TG(H)}" />`,`<link rel="canonical" href="${TG(J)}" />`,`<link rel="icon" href="${TG(Y)}" sizes="any" />`].join(`
2984
2984
  `)}function zO6($,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}
2985
2985
  </head>`)}function Im$($){let Z=new J1;return Z.get("/:domain/og.png",async(Q)=>{let X=Nl(Q.req.param("domain")),Y=async()=>{let G=$?Bun.file(Rm$($,"report-og-fallback.png")):null;if(!G||!await G.exists())return Q.notFound();return Q.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(`${LK({})}/api/v2/public/diagnostics/${encodeURIComponent(X)}/og.png`,{signal:AbortSignal.timeout(PO6)}),J=G.headers.get("content-type")??"";if(!G.ok||!J.startsWith("image/")||!G.body)return Y();return Q.body(G.body,200,{"Content-Type":J,"Cache-Control":"public, max-age=0, s-maxage=604800"})}catch{return Y()}}),Z.get("/:domain",async(Q)=>{let X=Q.req.param("domain"),Y=$?Rm$($,"index.html"):null,G=Y?Bun.file(Y):null;if(!G||!await G.exists())return Q.notFound();let J=await G.text();try{let W=await EO6(Nl(X)),K=jO6(X,W);return Q.html(zO6(J,K),200,{"Cache-Control":"public, max-age=0, s-maxage=300"})}catch{return Q.html(J)}}),Z}var LO6=2500,PO6=1e4;var qm$=D(()=>{d$();BQ1();TE();D$()});function ys($,Z){return fetch(`${LK({})}${$}`,Z)}async function AO6($,Z,Q){let X=new URLSearchParams;if(Z)X.set("pw",Z);if(Q)X.set("lang",Q);let Y=X.toString()?`?${X.toString()}`:"",G=await ys(`/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}=nT0(J);return{status:W.slides.length?"ready":"empty",deck:W,scanned_at:J.scanned_at,drops:K}}var TO6,YN,Mm$=async($,Z)=>{if(!$.get("reportUser"))return $.json({error:"Authentication required"},401);await Z();return},km$;var Vm$=D(()=>{d$();tY();TE();BQ1();TO6=new Set(["complete","errored","terminated","unknown"]),YN=new J1;YN.use("*",async($,Z)=>{let Q=await $8.api.getSession({headers:$.req.raw.headers});$.set("reportUser",Q?.user?.id?{email:Q.user.email}:void 0),await Z(),$.header("Cache-Control","private, no-store"),$.header("Vary","Cookie");return});YN.use("/link-token/*",Mm$);YN.use("/suggest",Mm$);YN.get("/site/:domain",async($)=>{let Z=$.req.param("domain").trim();if(!Z)return $.json({error:"domain is required"},400);let Q=$.get("reportUser"),X=$.req.query("key")?.trim()||void 0,Y=$.req.query("lang")?.trim()||void 0;try{let G=await AO6(Z,X,Y);if($.header("Cache-Control","private, no-store"),Q||!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)}});YN.post("/run",async($)=>{let Z=$.get("reportUser"),Q;try{Q=await $.req.json()}catch{return $.json({error:"invalid JSON"},400)}let X=typeof Q.domain==="string"?Q.domain.trim():"";if(!X)return $.json({error:"domain is required"},400);let Y=Z?.email,G=typeof Q.distinctId==="string"&&Q.distinctId.trim()&&Q.distinctId.length<=200?Q.distinctId.trim():void 0;try{let J=await ys("/api/v2/diagnostics/run",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${AE({})}`},body:JSON.stringify({url:X,...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)}});YN.get("/status",async($)=>{let Z=$.req.query("id");if(!Z)return $.json({error:"id is required"},400);try{let Q=await ys(`/api/v2/diagnostics/status?id=${encodeURIComponent(Z)}`,{headers:{Authorization:`Bearer ${AE({})}`}});if(!Q.ok)return $.json({error:`status HTTP ${Q.status}`},502);let Y=(await Q.json()).status??"unknown",G={done:TO6.has(Y),status:Y};return $.json(G)}catch{return $.json({error:"status failed"},502)}});YN.get("/link-token/:id",async($)=>{let Z=$.req.param("id");try{let Q=await ys(`/api/v2/public/link-tokens/${encodeURIComponent(Z)}`,{headers:{Accept:"application/json"}});if(Q.status===404)return $.json(null);if(!Q.ok)return $.json({error:`link token HTTP ${Q.status}`},502);return $.json(await Q.json())}catch{return $.json({error:"link token resolve failed"},502)}});YN.get("/suggest",async($)=>{let Z=($.req.query("q")??"").trim().slice(0,64);if(Z.length<2)return $.json({suggestions:[]});try{let Q=await ys(`/api/v2/public/suggest?q=${encodeURIComponent(Z)}`,{headers:{Accept:"application/json"}});if(!Q.ok)return $.json({suggestions:[]});let X=await Q.json();return $.json({suggestions:Array.isArray(X.suggestions)?X.suggestions:[]})}catch{return $.json({suggestions:[]})}});km$=YN});import{createHmac as RO6,timingSafeEqual as IO6}from"crypto";function Cm$($,Z,Q,X=Date.now()){if(!Z||!Q)return!1;let Y,G=[];for(let F of Z.split(",")){let H=F.indexOf("=");if(H<=0)continue;let U=F.slice(0,H).trim(),N=F.slice(H+1).trim();if(U==="t")Y=N;else if(U==="v1")G.push(N)}if(!Y||G.length===0)return!1;let J=Number(Y);if(!Number.isFinite(J)||Math.abs(X/1000-J)>qO6)return!1;let W=RO6("sha256",Q).update(`${Y}.${$}`).digest("hex"),K=Buffer.from(W,"hex");return G.some((F)=>{let H=Buffer.from(F,"hex");return K.length===H.length&&IO6(K,H)})}function _m$($){let Z;try{Z=JSON.parse($)}catch{return null}let Q=mJ(Z),X=mJ(mJ(Q?.data)?.object);if(!Q||typeof Q.type!=="string"||!X)return null;return{id:xF(Q.id),type:Q.type,created:typeof Q.created==="number"?Q.created:void 0,livemode:typeof Q.livemode==="boolean"?Q.livemode:void 0,data:{object:X}}}function vm$($){switch($){case"active":case"trialing":return"active";case"past_due":return"past_due";default:return"canceled"}}function xF($){return typeof $==="string"?$:void 0}function mJ($){return typeof $==="object"&&$!==null?$:void 0}function tT0($){return typeof $==="number"?new Date($*1000):null}function wQ1($){return xF($)??xF(mJ($)?.id)}function MO6($){return wQ1($.subscription)??xF(mJ(mJ($.parent)?.subscription_details)?.subscription)}function kO6($){let Z=tT0($.current_period_end);if(Z)return Z;let Q=mJ($.items)?.data;if(!Array.isArray(Q))return null;let X=0;for(let Y of Q){let G=mJ(Y)?.current_period_end;if(typeof G==="number"&&G>X)X=G}return X>0?new Date(X*1000):null}function OQ1($,Z){let Q=tT0($.created);return!!Q&&!!Z.lastStripeEventAt&&Q<Z.lastStripeEventAt}function DQ1($,Z){let Q=tT0($.created);if(!Q)return;return Z.lastStripeEventAt&&Z.lastStripeEventAt>Q?void 0:Q}async function VO6($,Z){let Q=Z.data.object;switch(Z.type){case"checkout.session.completed":case"checkout.session.async_payment_succeeded":{let X=xF(mJ(Q.metadata)?.orgId);if(!X)return{handled:!1,reason:"no orgId"};if(xF(mJ(Q.metadata)?.kind)==="topup"){if(Q.mode!=="payment")return{handled:!1,reason:"topup with wrong mode"};if(xF(Q.payment_status)!=="paid")return{handled:!1,reason:"payment not confirmed"};let J=xF(Q.id);if(!J)return console.error("stripe webhook: topup session without id",{eventId:Z.id,organizationId:X}),{handled:!1,reason:"topup session without id"};let W=Number(mJ(Q.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:X,creditCents:mJ(Q.metadata)?.creditCents}),{handled:!1,reason:"bad topup metadata"};return{handled:!0,organizationId:X,topUp:{creditCents:W,referenceId:`stripe-topup:${J}`}}}if(Q.mode!=="subscription")return{handled:!1,reason:"not a subscription checkout"};if(xF(Q.payment_status)!=="paid")return{handled:!1,reason:"payment not confirmed"};let Y=await $.getBilling(X);if(!Y)return{handled:!1,reason:"unknown org"};let G=wQ1(Q.subscription);if(Y.stripeSubscriptionId&&G&&Y.stripeSubscriptionId!==G)return console.error("stripe webhook: refused checkout rebind",{organizationId:X,eventId:Z.id}),{handled:!1,reason:"org already bound to another subscription",orphanSubscriptionId:G};if(OQ1(Z,Y))return{handled:!1,reason:"stale event"};return await $.updateStripeState(X,{stripeCustomerId:wQ1(Q.customer),stripeSubscriptionId:G,status:"active",lastStripeEventAt:DQ1(Z,Y)}),{handled:!0,organizationId:X}}case"customer.subscription.updated":case"customer.subscription.deleted":{let X=xF(Q.id);if(!X)return{handled:!1,reason:"no sub id"};let Y=await $.getBillingByStripeSubscriptionId(X);if(!Y)return{handled:!1,reason:"unknown subscription"};let G=Z.type==="customer.subscription.deleted";if(!G&&OQ1(Z,Y))return{handled:!1,reason:"stale event"};let J=G?"canceled":vm$(Q.status);return await $.updateStripeState(Y.organizationId,{status:J,currentPeriodEnd:kO6(Q),...G&&{stripeSubscriptionId:null},lastStripeEventAt:DQ1(Z,Y)}),{handled:!0,organizationId:Y.organizationId}}case"invoice.paid":{let X=MO6(Q);if(!X)return{handled:!1,reason:"no sub id"};let Y=await $.getBillingByStripeSubscriptionId(X);if(!Y)return{handled:!1,reason:"unknown subscription"};if(OQ1(Z,Y))return{handled:!1,reason:"stale event"};return await $.updateStripeState(Y.organizationId,{status:"active",currentPeriodEnd:tT0(Q.period_end),lastStripeEventAt:DQ1(Z,Y)}),{handled:!0,organizationId:Y.organizationId}}default:return{handled:!1,reason:`unhandled event ${Z.type}`}}}function SO6($,Z){if(!Z.handled||$.livemode===!1)return null;let Q=$.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:vm$(Q.status),...typeof Q.cancel_at_period_end==="boolean"?{cancel_at_period_end:Q.cancel_at_period_end}:{}}};case"invoice.paid":if(Q.billing_reason==="subscription_create")return null;return{name:"subscription_renewed",organizationId:Z.organizationId,properties:{}};default:return null}}function Sm$($,Z){let Q=SO6($,Z);if(!Q)return;dY({event:Q.name,organizationId:Q.organizationId,...$.id?{uuid:qt1(`stripe:${$.id}:${Q.name}`)}:{},...$.created?{timestamp:new Date($.created*1000)}:{},properties:Q.properties})}async function fm$($){let Z=new BK(B8().db),Q=await VO6(Z,$);if(!(Q.handled&&Q.topUp))Sm$($,Q);if(Q.handled&&Q.topUp)await aj$({organizationId:Q.organizationId,amountCents:Q.topUp.creditCents,referenceId:Q.topUp.referenceId}),Sm$($,Q);if(!Q.handled&&Q.orphanSubscriptionId)try{await Q1$(Q.orphanSubscriptionId),console.error("stripe webhook: canceled orphan subscription",{subscriptionId:Q.orphanSubscriptionId,eventId:$.id})}catch(X){if(!(X instanceof oY&&(X.status===400||X.status===404)))throw X}return Q}var qO6=300;var bm$=D(()=>{aG();v4();l50();bE();R11()});var CO6=1048576,LQ1;var xm$=D(()=>{d$();VF();D$();bm$();LQ1=new J1;LQ1.post("/webhook",a5({maxSize:CO6,onError:($)=>$.json({error:"payload too large"},413)}),async($)=>{let Z=V0().stripeWebhookSecret;if(!Z)return $.json({error:"stripe billing not configured"},503);let Q=await $.req.text();if(!Cm$(Q,$.req.header("stripe-signature"),Z))return $.json({error:"invalid signature"},400);let Y=_m$(Q);if(!Y)return $.json({error:"invalid payload"},400);let G=await fm$(Y);return console.log("stripe webhook",{eventId:Y.id,type:Y.type,livemode:Y.livemode,...G}),$.json({received:!0})})});import{timingSafeEqual as _O6}from"crypto";function fO6($,Z,Q){if(!Z?.startsWith("sha256="))return!1;let X=new Bun.CryptoHasher("sha256",Q).update($).digest("hex"),Y=Z.slice(7);if(Y.length!==X.length)return!1;return _O6(Buffer.from(Y),Buffer.from(X))}var vO6=5242880,EQ1;var ym$=D(()=>{d$();VF();s3();EQ1=new J1;EQ1.post("/webhook",a5({maxSize:vO6,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 Q=await $.req.text();if(!fO6(Q,$.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 X;try{X=JSON.parse(Q)}catch{return $.json({error:"invalid payload"},400)}let Y=X.ref,G=X.repository?.full_name;if(!Y||!G)return $.json({ok:!0,ignored:"shape"});let W=(await Bt0())?.markTenantPoolsDirty(G,Y)??[];return $.json({ok:!0,pools:W})})});function gm$($){let Z=new pU($.db,new uQ($.encryptionKey)),Q=new J1;return Q.get("/attachments/:token",async(X)=>{let Y=oK$(X.req.param("token"));if(!Y)return X.json({error:"Invalid or expired link"},404);let G=await Z.getByOrg(Y.organizationId);if(!G)return X.json({error:"Jira is not connected"},404);let W=await new JG(G.siteUrl,G.email,G.apiToken).downloadAttachment(Y.attachmentId);if(!W.ok||!W.body)return X.json({error:"Jira refused the download"},502);let K=new Headers;for(let F of["content-type","content-length","content-disposition"]){let H=W.headers.get(F);if(H)K.set(F,H)}return K.set("cache-control","no-store"),new Response(W.body,{status:200,headers:K})}),Q}var hm$=D(()=>{d$();tN();Fo0();dC()});function um$($){if(typeof $!=="object"||$===null)return null;let Z=$;if(Z.webhookEvent!=="jira:issue_updated")return null;let Q=Z.issue?.id,X=Z.issue?.key,Y=Z.changelog?.id;if(typeof Q!=="string"&&typeof Q!=="number"||typeof X!=="string"||typeof Y!=="string"&&typeof Y!=="number")return null;let G=Z.changelog?.items?.find((J)=>J.field==="status");if(!G||typeof G.toString!=="string")return null;return{issueId:String(Q),issueKey:X,toStatus:G.toString,changelogId:String(Y)}}function lm$($,Z,Q){let X=[];for(let Y of Z){if(new Date(Y.created).getTime()<Q.getTime())continue;let G=Y.items.find((J)=>J.field==="status");if(!G||typeof G.toString!=="string")continue;X.push({issueId:$.id,issueKey:$.key,toStatus:G.toString,changelogId:Y.id})}return X.sort((Y,G)=>Number(Y.changelogId)-Number(G.changelogId))}function yO6($){return`Jira ${$.key}: ${$.summary}`}async function oT0($,Z,Q){if(!Z.enabled)return"disabled";let X=Z.organizationId,Y=await $.storage.jiraIntegrations.getAutomation(X,Q.toStatus);if(!Y)return"no_rule";let G=new JG(Z.siteUrl,Z.email,Z.apiToken),J=await Kw0(G,Z.siteUrl,Q.issueId),W=await gO6($,Z,Q,J);if(!await $.storage.jiraIntegrations.claimTrigger(X,Q.issueId,Q.changelogId))return"duplicate";let F=await $.storage.taskBoard.update(W.id,X,{assigneeId:m$,assignedBy:Z.createdBy},Z.createdBy);try{await XW($,F,{instruction:Y.prompt??bO6,source:{kind:"jira",issueKey:J.key,title:yO6(J),body:`${Fw0(J)}
2986
2986
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "decocms",
3
- "version": "4.329.9",
3
+ "version": "4.330.0",
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 he,b as ue,j as o,v as Ae,ab as Ie,B as le,b2 as Te,W as ye,n as Le,a as Fe,r as Q,m as ke,K as xe,e as Ee,o as U,t as pe,l as Pe,b8 as Ge,P as de}from"./index-DIoG5Nzm.js";import{a as ce,b as we,D as ge,c as fe}from"./dropdown-menu-C37VfJ59.js";import{b as Me}from"./Users03-Et2Iq-LT.js";import{G as ve,b as ze,a as Oe}from"./github-repo-picker-TX2CWT3P.js";import{a as Be,b as Ue,c as Re}from"./use-virtual-mcp-BdzzM_-Q.js";import{i as $e}from"./DotsVertical-Cm1eM3WR.js";import{a as Ve}from"./Settings02-BBjxFEhG.js";import{s as He}from"./Trash01-CeiHA_Cf.js";import{p as Ke,f as je}from"./pt-BR-CLy76QW2.js";import{A as qe,b8 as Qe}from"./agent-icon-CPE8YyuT.js";import{u as _e}from"./use-navigate-to-agent-EQeauX1Q.js";import{l as Je}from"./use-organization-settings-DenVKwFP.js";import{E as We}from"./empty-state-DSmLsgCN.js";import{u as Ye}from"./use-create-virtual-mcp-DBiPMj7Z.js";import{u as Xe}from"./use-connection-1ZElPQlS.js";import{u as be}from"./use-mcp-client-Da8e-_d8.js";import{S as Ze}from"./constants-DNuUCxmW.js";import{F as et,G as tt}from"./chat-context-DylitU6A.js";import{b as ot,f as st,a as it,G as rt,p as nt}from"./provision-repo-scoped-github-connection-WQFARyHG.js";import{D as lt,b as at,c as ct,d as mt,e as dt}from"./dialog-BIFznZm3.js";import{i as ut}from"./ArrowLeft-B1xlMMf7.js";import{C as pt}from"./collection-search-DO_p4EqG.js";import{c as gt,d as ft,b as ht,f as xt,g as jt,e as bt,a as Ct,A as Dt}from"./alert-dialog-DD8gmLEV.js";import{S as yt}from"./search-input-C33OeTuG.js";import{s as Ce}from"./Plus-DuAHW1Gi.js";import{u as wt}from"./use-debounced-value-BkHp8ZQC.js";import"./Check-CRib0DYD.js";import"./ChevronRight-D1ZP1lTE.js";import"./authenticate-and-persist-oauth-05_Aj2HR.js";import"./mcp-oauth-3DlwOsvC.js";import"./auth-CKSU3JsT.js";import"./LinkExternal01-DmLtBDzc.js";import"./Share07-BqnpVx68.js";import"./extract-connection-data-wF3Br-pC.js";import"./metadata-dUsYcpuu.js";import"./connection-CtWb4rTZ.js";import"./differenceInSeconds-NQ4PDo0z.js";import"./AlertCircle-C3LoifMU.js";import"./Tool01-Cfifxqbk.js";import"./ArrowUp-ClAJQium.js";import"./Tool02-DbxYQXJB.js";import"./XCircle-C8jIOZwA.js";import"./TrendUp01-wKu74L0k.js";import"./ZoomOut-wA1AxiJ4.js";import"./CheckCircle-CqjXQQar.js";import"./ChevronUp-DMr_Wd-m.js";import"./ChevronSelectorVertical-CtALiTfe.js";import"./UserSquare-BKKMbWcC.js";import"./Copy01-CqZdC3Iz.js";import"./CreditCard01-B_93t25t.js";import"./Download01-DWG0sleJ.js";import"./Eye-DTZwtLhN.js";import"./GitBranch01-CaAHRAAs.js";import"./Globe01-DLIxci_G.js";import"./XClose-Xm8e9o2O.js";import"./HardDrive-Uu4_IDmh.js";import"./Image01-uIGiropd.js";import"./Key01-rPnY8MXp.js";import"./Link01-BR5WsLAe.js";import"./Monitor01-BdeUVVjA.js";import"./Sun-CN8rCL7E.js";import"./Package-dd8Ej5fp.js";import"./Palette-DeAY5oYq.js";import"./Play-Btz8ch8N.js";import"./SearchMd-DwtkgExc.js";import"./Shield01-D5teTWzy.js";import"./Stars01-_V6kPVkS.js";import"./Upload01-CHJWPT7q.js";import"./User01-BDiBNFRN.js";import"./Users01-DTNX_nQZ.js";import"./Zap-CydiGRzM.js";import"./use-destination-route-BlILx1Gc.js";import"./hooks-Dv3PpADk.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./decopilot-sse-pool-Dc_oXr8h.js";import"./task-board-k97eyP2H.js";import"./schema-Dk7DmR5a.js";import"./github-repo-COLY3wWI.js";import"./use-panel-navigate-xY92PiXA.js";import"./slugify-CEUa2lfQ.js";import"./use-is-desktop-app-BNujXJc_.js";import"./use-ai-providers-DL0YRrHe.js";import"./location-oTTXFrSF.js";import"./use-decopilot-events-D2a6ajEJ.js";function De(t){const e=he.c(26),{onCreateFromScratch:r,onImportGitHub:i,onImportDeco:l,isCreating:b,align:y,side:M,showBetaBadge:f,showDecoImport:w}=t,v=y===void 0?"end":y,p=ue();let d;e[0]===Symbol.for("react.memo_cache_sentinel")?(d=o.jsx(Me,{size:14}),e[0]=d):d=e[0];let g;e[1]!==p?(g=p("common.createAgentDropdown.createFromScratch"),e[1]=p,e[2]=g):g=e[2];let c;e[3]!==b||e[4]!==r||e[5]!==g?(c=o.jsxs(ce,{disabled:b,onClick:r,children:[d,g]}),e[3]=b,e[4]=r,e[5]=g,e[6]=c):c=e[6];let _;e[7]===Symbol.for("react.memo_cache_sentinel")?(_=o.jsx(ve,{className:"size-3.5"}),e[7]=_):_=e[7];let m;e[8]!==p?(m=p("common.createAgentDropdown.importFromGitHub"),e[8]=p,e[9]=m):m=e[9];let n;e[10]!==f?(n=f&&o.jsx("span",{className:"ml-auto text-[10px] font-medium text-muted-foreground bg-muted rounded px-1 py-0.5",children:"Beta"}),e[10]=f,e[11]=n):n=e[11];let a;e[12]!==i||e[13]!==m||e[14]!==n?(a=o.jsxs(ce,{onClick:i,children:[_,m,n]}),e[12]=i,e[13]=m,e[14]=n,e[15]=a):a=e[15];let u;e[16]!==l||e[17]!==w||e[18]!==p?(u=w&&o.jsxs(ce,{onClick:l,children:[o.jsx("img",{src:"/logos/deco%20logo.svg",alt:"deco.cx",className:"size-3.5"}),p("common.createAgentDropdown.importFromDeco")]}),e[16]=l,e[17]=w,e[18]=p,e[19]=u):u=e[19];let h;return e[20]!==v||e[21]!==M||e[22]!==c||e[23]!==a||e[24]!==u?(h=o.jsxs(we,{side:M,align:v,className:"w-48",children:[c,a,u]}),e[20]=v,e[21]=M,e[22]=c,e[23]=a,e[24]=u,e[25]=h):h=e[25],h}function vt(t){const e=he.c(50),{project:r,lastUsedAt:i,onDeleteClick:l}=t,b=_e(),y=ue(),[M]=Ae(),f=M.language==="pt-BR"?Ke:void 0,w=r.metadata?.ui?.layout;let v;e[0]!==w?(v=Ie(w),e[0]=w,e[1]=v):v=e[1];const p=v;let d;e[2]!==p||e[3]!==b||e[4]!==r.id?(d=()=>b(r.id,{panel:p}),e[2]=p,e[3]=b,e[4]=r.id,e[5]=d):d=e[5];let g;e[6]!==r.title||e[7]!==d?(g=o.jsx("button",{type:"button",onClick:d,className:"absolute inset-0 z-0","aria-label":r.title}),e[6]=r.title,e[7]=d,e[8]=g):g=e[8];let c;e[9]!==r.icon||e[10]!==r.title?(c=o.jsx(qe,{icon:r.icon,name:r.title,size:"sm",className:"shrink-0 shadow-sm"}),e[9]=r.icon,e[10]=r.title,e[11]=c):c=e[11];let _;e[12]===Symbol.for("react.memo_cache_sentinel")?(_=o.jsx(ge,{asChild:!0,children:o.jsx(le,{variant:"ghost",size:"sm",className:"h-8 w-8 p-0",children:o.jsx($e,{size:20})})}),e[12]=_):_=e[12];let m;e[13]!==b||e[14]!==r.id?(m=()=>b(r.id,{panel:"settings"}),e[13]=b,e[14]=r.id,e[15]=m):m=e[15];let n;e[16]===Symbol.for("react.memo_cache_sentinel")?(n=o.jsx(Ve,{size:16}),e[16]=n):n=e[16];let a;e[17]!==m?(a=o.jsxs(ce,{onClick:m,children:[n,"Settings"]}),e[17]=m,e[18]=a):a=e[18];let u;e[19]!==l?(u=l&&o.jsxs(ce,{variant:"destructive",onClick:C=>{C.stopPropagation(),l(C)},children:[o.jsx(He,{size:16}),"Delete"]}),e[19]=l,e[20]=u):u=e[20];let h;e[21]!==u||e[22]!==a?(h=o.jsx("div",{className:"relative z-10 pointer-events-auto transition-opacity sm:opacity-0 sm:group-hover:opacity-100",children:o.jsxs(fe,{children:[_,o.jsxs(we,{align:"end",children:[a,u]})]})}),e[21]=u,e[22]=a,e[23]=h):h=e[23];let x;e[24]!==h||e[25]!==c?(x=o.jsxs("div",{className:"flex items-start justify-between",children:[c,h]}),e[24]=h,e[25]=c,e[26]=x):x=e[26];let z;e[27]!==r.title?(z=o.jsx("div",{className:"flex items-center gap-2 min-w-0",children:o.jsx("h3",{className:"text-sm font-medium text-foreground truncate",children:r.title})}),e[27]=r.title,e[28]=z):z=e[28];const E=r.description||"No description";let P;e[29]!==E?(P=o.jsx("p",{className:"text-sm text-muted-foreground line-clamp-2",children:E}),e[29]=E,e[30]=P):P=e[30];let S;e[31]!==z||e[32]!==P?(S=o.jsxs("div",{className:"flex flex-col gap-1",children:[z,P]}),e[31]=z,e[32]=P,e[33]=S):S=e[33];let I;e[34]!==x||e[35]!==S?(I=o.jsxs("div",{className:"flex flex-col gap-3 p-4.5",children:[x,S]}),e[34]=x,e[35]=S,e[36]=I):I=e[36];let T;e[37]!==i||e[38]!==f||e[39]!==r.updated_at||e[40]!==y?(T=i?y("home.projectCard.lastUsed",{time:je(new Date(i),{addSuffix:!0,locale:f})}):y("home.projectCard.updated",{time:je(new Date(r.updated_at),{addSuffix:!0,locale:f})}),e[37]=i,e[38]=f,e[39]=r.updated_at,e[40]=y,e[41]=T):T=e[41];let N;e[42]!==T?(N=o.jsx("div",{className:"border-t border-border mt-auto",children:o.jsx("div",{className:"h-10 flex items-center px-4.5",children:o.jsx("p",{className:"text-xs text-muted-foreground",children:T})})}),e[42]=T,e[43]=N):N=e[43];let j;e[44]!==I||e[45]!==N?(j=o.jsxs("div",{className:"flex flex-col flex-1 pointer-events-none",children:[I,N]}),e[44]=I,e[45]=N,e[46]=j):j=e[46];let s;return e[47]!==j||e[48]!==g?(s=o.jsxs(Te,{className:"relative transition-colors group overflow-hidden flex flex-col h-full hover:bg-muted/50",children:[g,j]}),e[47]=j,e[48]=g,e[49]=s):s=e[49],s}const _t="deco-sites";function St(t){if(!t||typeof t!="object")return null;const e=t.github;if(!e||typeof e!="object")return null;const r=e.owner,i=e.repo;return typeof r!="string"||typeof i!="string"||r.length===0||i.length===0?null:{owner:r,repo:i}}function Nt(t,e){const r=e?St(e):null,i=r?.owner??_t,l=r?.repo??t;return{owner:i,name:l,url:`https://github.com/${i}/${l}`}}function At(t){return t.toLowerCase().trim().replace(/[^a-z0-9\s-]/g,"").replace(/\s+/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,"")}async function Se(t,e,r){const i=await fetch(t,e),l=await i.json().catch(()=>({}));if(!i.ok)throw new Error(l.error??`${r} (${i.status})`);return l}function It(t){return Se(`/api/${t}/deco-sites`,void 0,"Failed to load sites")}function Tt({open:t,onOpenChange:e,onBack:r}){const i=ue(),{org:l}=ye(),b=_e(),y=Le(),{data:M}=Fe.useSession(),[f,w]=Q.useState(null),[v,p]=Q.useState(null),[d,g]=Q.useState(""),c=be({connectionId:Ze,orgId:l.id,orgSlug:l.slug}),_=Xe({slug:"mcp-github"}),m=ot(_),n=ze({enabled:t&&m.length===0}),a=m.length===1?m[0]??null:v,u=m.length>1&&!a,h=be({connectionId:a?.id??"",orgId:l.id,orgSlug:l.slug}),x=t&&m.length===0&&(n.status==="installing"||n.status==="authenticating"||n.status==="idle"),{data:z,isLoading:E,error:P}=ke({queryKey:xe.decoSites(M?.user?.email),queryFn:()=>It(l.slug),enabled:t&&!!M?.user?.email,staleTime:6e4,retry:!1}),S=z?.sites??[],I=s=>{s||(w(null),p(null),g("")),e(s)},T=S.filter(s=>s.name.toLowerCase().includes(d.toLowerCase())||(s.domains?.[0]?.domain?.toLowerCase().includes(d.toLowerCase())??!1)),N=!f||T.some(s=>s.name===f),j=Ee({mutationFn:async s=>{if(!a)throw new Error(i("common.importFromDecoDialog.githubNotConnected"));U("deco_site_import_started",{site_name:s});const{installations:C}=await st(k=>c.callTool(k),a.id),L=S.find(k=>k.name===s);if(!L)throw new Error(i("common.importFromDecoDialog.siteNoLongerAvailable"));const D=Nt(s,L.metadata),F=it(C,D.owner);if(!F)throw new Error(i("common.importFromDecoDialog.installGithubApp",{owner:D.owner,installUrl:rt}));let O=null,K=null;const ae=async()=>{K&&await c.callTool({name:"COLLECTION_VIRTUAL_MCP_DELETE",arguments:{id:K}}).catch(()=>{}),O&&await c.callTool({name:"COLLECTION_CONNECTIONS_DELETE",arguments:{id:O,force:!0}}).catch(()=>{})};try{const k=await Se(`/api/${l.slug}/deco-sites/prepare`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({siteName:s})},i("common.importFromDecoDialog.failedToPrepareImport")),{childConnectionId:B,reused:H}=await nt({orgSlug:l.slug,sourceConnection:a,installationId:F.installationId,owner:D.owner,repo:D.name,githubCallTool:q=>h.callTool(q),selfCallTool:q=>c.callTool(q)});O=H?null:B;const R=k.icon??null,J=At(s),W=s.toLowerCase(),$=et(s),V=await c.callTool({name:"COLLECTION_VIRTUAL_MCP_CREATE",arguments:{data:{title:s,description:"Imported from deco.cx",pinned:!1,icon:R??null,metadata:{instructions:null,enabled_plugins:[],siteSlug:W,previewServerUrl:$,productionUrl:$,githubRepo:{owner:D.owner,name:D.name,url:D.url,installationId:F.installationId,connectionId:B},ui:{banner:null,bannerColor:"#22C55E",icon:R,themeColor:"#22C55E",slug:J,pinnedViews:null,layout:{defaultMainView:{type:"site-editor"},chatDefaultOpen:!1}}},connections:[{connection_id:B}]}}}),G=V.structuredContent??V;if(!G.item?.id)throw new Error(i("common.importFromDecoDialog.failedToCreateAgent"));return K=G.item.id,{slug:J,virtualMcpId:G.item.id,item:G.item}}catch(k){throw await ae(),k}},onSuccess:({slug:s,virtualMcpId:C,item:L})=>{U("deco_site_import_succeeded",{site_name:L.title,virtual_mcp_id:C,slug:s}),y.setQueryData(xe.collectionItem(c,l.id,"","VIRTUAL_MCP",C),{item:L}),y.invalidateQueries({predicate:D=>{const F=D.queryKey;return F[1]===l.id&&F[3]==="collection"&&F[4]==="VIRTUAL_MCP"}}),pe.success(i("common.importFromDecoDialog.importSuccess",{slug:s})),I(!1),b(C)},onError:s=>{U("deco_site_import_failed",{error:s instanceof Error?s.message:"Unknown error"}),pe.error(i("common.importFromDecoDialog.importFailed",{error:(s instanceof Error?s.message:i("common.importFromDecoDialog.unknownError"))??""}))}});return o.jsx(lt,{open:t,onOpenChange:I,children:o.jsxs(at,{className:"sm:max-w-[900px] p-0 gap-0 overflow-hidden",children:[o.jsx(ct,{className:"sr-only",children:o.jsx(mt,{children:i("common.importFromDecoDialog.title")})}),o.jsxs("div",{className:"flex items-center h-12 border-b border-border px-4 gap-3",children:[r&&o.jsx("button",{type:"button",onClick:r,className:"flex items-center justify-center text-muted-foreground hover:text-foreground transition-colors","aria-label":i("common.importFromDecoDialog.goBack"),children:o.jsx(ut,{size:18})}),o.jsx("span",{className:"text-sm font-medium text-foreground",children:i("common.importFromDecoDialog.title")})]}),o.jsx("div",{children:o.jsx(pt,{value:d,onChange:g,placeholder:i("common.importFromDecoDialog.searchPlaceholder"),onKeyDown:s=>{s.key==="Escape"&&g("")}})}),o.jsxs("div",{className:"pb-0 min-h-[300px]",children:[n.status==="error"&&o.jsxs("div",{className:"flex flex-col items-center justify-center gap-3 h-48 px-8 text-center",children:[o.jsx("p",{className:"text-sm text-destructive",children:n.error??i("common.importFromDecoDialog.failedToConnectGithub")}),o.jsx(le,{variant:"outline",size:"sm",onClick:n.retry,children:i("common.importFromDecoDialog.retryGithubSetup")})]}),x&&n.status!=="error"&&o.jsx("div",{className:"flex items-center justify-center h-48 text-sm text-muted-foreground",children:i("common.importFromDecoDialog.settingUpGithub")}),u&&!x&&n.status!=="error"&&o.jsxs("div",{className:"flex flex-col py-2",children:[o.jsx("div",{className:"px-8 py-2",children:o.jsx("p",{className:"text-xs font-medium text-muted-foreground",children:i("common.importFromDecoDialog.selectGithubConnection")})}),m.map(s=>o.jsxs("button",{type:"button",onClick:()=>p(s),className:"flex items-center gap-3 px-8 py-3 hover:bg-accent transition-colors text-left",children:[s.icon?o.jsx("img",{src:s.icon,alt:s.title,className:"size-7 rounded-full shrink-0"}):o.jsx("div",{className:"size-7 rounded-full bg-muted flex items-center justify-center shrink-0",children:o.jsx(ve,{className:"size-3.5 text-muted-foreground"})}),o.jsx("span",{className:"text-sm font-medium",children:s.title})]},s.id))]}),E&&!x&&n.status!=="error"&&o.jsx("div",{className:"flex items-center justify-center h-48 text-sm text-muted-foreground",children:i("common.importFromDecoDialog.loadingSites")}),!E&&!x&&!u&&n.status!=="error"&&!P&&S.length===0&&o.jsx("div",{className:"flex items-center justify-center h-48 text-sm text-muted-foreground",children:i("common.importFromDecoDialog.noSitesFound")}),!E&&!x&&!u&&n.status!=="error"&&S.length>0&&o.jsxs("div",{className:"grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 gap-4 max-h-[420px] overflow-y-auto py-4 px-8 [scrollbar-gutter:stable]",children:[T.length===0&&o.jsx("p",{className:"col-span-3 text-sm text-muted-foreground text-center py-8",children:i("common.importFromDecoDialog.noSitesMatch",{search:d})}),T.map(s=>{const C=tt(s.domains),L=f===s.name;return o.jsxs("button",{type:"button",onClick:()=>w(s.name),className:Pe("flex flex-col rounded-xl border overflow-hidden text-left transition-all cursor-pointer",L?"border-primary ring-1 ring-primary":"border-border hover:border-muted-foreground/40"),children:[o.jsx("div",{className:"w-full aspect-video bg-muted overflow-hidden",children:s.thumb_url?o.jsx("img",{src:s.thumb_url,alt:s.name,className:"w-full h-full object-cover",loading:"lazy"}):o.jsx("div",{className:"w-full h-full bg-muted"})}),o.jsxs("div",{className:"px-4 py-3",children:[o.jsx("p",{className:"text-sm font-medium text-foreground truncate",children:s.name}),C&&o.jsx("p",{className:"text-xs text-muted-foreground truncate mt-0.5",children:C})]})]},s.name)})]})]}),o.jsxs(dt,{className:"px-8 py-5 border-t border-border",children:[o.jsx(le,{variant:"outline",onClick:()=>I(!1),disabled:j.isPending,children:i("common.importFromDecoDialog.cancel")}),o.jsx(le,{disabled:!f||!N||j.isPending||E||x||u||!a||n.status==="error",onClick:()=>f&&j.mutate(f),children:j.isPending?i("common.importFromDecoDialog.importing"):i("common.importFromDecoDialog.import")})]})]})})}function ms(){const t=he.c(82),e=ue(),{org:r}=ye(),[i,l]=Q.useState(""),b=wt(i,300);let y;t[0]!==b?(y={searchTerm:b},t[0]=b,t[1]=y):y=t[1];const M=Be(y),f=Ue();let w;t[2]===Symbol.for("react.memo_cache_sentinel")?(w={navigateOnCreate:!0},t[2]=w):w=t[2];const{createVirtualMCP:v,isCreating:p}=Ye(w),[d,g]=Q.useState(null),[c,_]=Q.useState(!1),[m,n]=Q.useState(!1),{granted:a}=Ge("agents:manage"),u=Je();let h;t[3]!==r?(h=A=>A.id!==r.id,t[3]=r,t[4]=h):h=t[4];const x=M.filter(h),{data:z}=Re(x.map(Lt));let E;t[5]!==f||t[6]!==d||t[7]!==e?(E=async()=>{if(!d)return;const{id:A,title:Ne}=d;g(null);try{await f.delete.mutateAsync(A),U("agent_deleted",{agent_id:A,source:"agents_list"}),pe.success(e("routes.agentsList.deletedAgent",{title:Ne}))}catch{}},t[5]=f,t[6]=d,t[7]=e,t[8]=E):E=t[8];const P=E,S=de,I=de,T=de;let N;t[9]!==e?(N=e("routes.agentsList.title"),t[9]=e,t[10]=N):N=t[10];let j;t[11]!==N?(j=o.jsx(de.Title,{children:N}),t[11]=N,t[12]=j):j=t[12];let s;t[13]!==e?(s=e("routes.agentsList.searchPlaceholder"),t[13]=e,t[14]=s):s=t[14];let C;t[15]===Symbol.for("react.memo_cache_sentinel")?(C=A=>{A.key==="Escape"&&(l(""),A.target.blur())},t[15]=C):C=t[15];let L;t[16]!==i||t[17]!==s?(L=o.jsx(yt,{value:i,onChange:l,placeholder:s,className:"w-full md:w-[375px]",onKeyDown:C}),t[16]=i,t[17]=s,t[18]=L):L=t[18];let D;t[19]!==a||t[20]!==v||t[21]!==p||t[22]!==u||t[23]!==e?(D=a&&o.jsxs(fe,{children:[o.jsx(ge,{asChild:!0,children:o.jsxs(le,{size:"sm",children:[o.jsx(Ce,{size:14}),e("routes.agentsList.createAgent")]})}),o.jsx(De,{onCreateFromScratch:()=>{U("agent_create_clicked",{source:"agents_list",method:"scratch"}),v()},onImportGitHub:()=>{U("agent_create_clicked",{source:"agents_list",method:"github"}),n(!0)},onImportDeco:()=>{U("agent_create_clicked",{source:"agents_list",method:"deco"}),_(!0)},isCreating:p,align:"end",showDecoImport:u})]}),t[19]=a,t[20]=v,t[21]=p,t[22]=u,t[23]=e,t[24]=D):D=t[24];let F;t[25]!==L||t[26]!==D?(F=o.jsxs("div",{className:"flex flex-wrap items-center justify-between gap-3",children:[L,D]}),t[25]=L,t[26]=D,t[27]=F):F=t[27];let O;t[28]!==F||t[29]!==j?(O=o.jsxs("div",{className:"flex flex-col gap-6",children:[j,F]}),t[28]=F,t[29]=j,t[30]=O):O=t[30];const K=x.length===0&&o.jsx("div",{className:"flex items-center justify-center py-20",children:o.jsx(We,{image:o.jsx(Qe,{size:48,className:"text-muted-foreground"}),title:e(i?"routes.agentsList.noAgentsFound":"routes.agentsList.noAgentsYet"),description:i?e("routes.agentsList.noAgentsMatchSearch",{search:i}):e(a?"routes.agentsList.createAgentToGetStarted":"routes.agentsList.askAdminToCreate"),actions:!i&&a&&o.jsxs(fe,{children:[o.jsx(ge,{asChild:!0,children:o.jsxs(le,{size:"sm",children:[o.jsx(Ce,{size:14}),e("routes.agentsList.createAgent")]})}),o.jsx(De,{onCreateFromScratch:()=>{U("agent_create_clicked",{source:"agents_list_empty",method:"scratch"}),v()},onImportGitHub:()=>{U("agent_create_clicked",{source:"agents_list_empty",method:"github"}),n(!0)},onImportDeco:()=>{U("agent_create_clicked",{source:"agents_list_empty",method:"deco"}),_(!0)},isCreating:p,align:"center",showBetaBadge:!0,showDecoImport:u})]})})}),ae=x.length>0&&o.jsxs("div",{className:"mt-6 @container",children:[o.jsx("h3",{className:"text-sm font-medium text-muted-foreground mb-3",children:e("routes.agentsList.agentsHeading")}),o.jsx("div",{className:"grid grid-cols-1 @lg:grid-cols-2 @4xl:grid-cols-3 @6xl:grid-cols-4 gap-4",children:x.map(A=>o.jsx(vt,{project:A,lastUsedAt:z?.get(A.id)?.last_used_at,onDeleteClick:a?()=>g({id:A.id,title:A.title}):void 0},A.id))})]});let k;t[31]!==O||t[32]!==K||t[33]!==ae||t[34]!==T.Body?(k=o.jsxs(T.Body,{children:[O,K,ae]}),t[31]=O,t[32]=K,t[33]=ae,t[34]=T.Body,t[35]=k):k=t[35];let B;t[36]!==k||t[37]!==I.Content?(B=o.jsx(I.Content,{children:k}),t[36]=k,t[37]=I.Content,t[38]=B):B=t[38];let H;t[39]!==m?(H=o.jsx(Oe,{open:m,onOpenChange:n}),t[39]=m,t[40]=H):H=t[40];let R;t[41]!==c?(R=o.jsx(Tt,{open:c,onOpenChange:_}),t[41]=c,t[42]=R):R=t[42];const J=!!d;let W;t[43]===Symbol.for("react.memo_cache_sentinel")?(W=A=>!A&&g(null),t[43]=W):W=t[43];let $;t[44]!==e?($=e("routes.agentsList.deleteAgentTitle"),t[44]=e,t[45]=$):$=t[45];let V;t[46]!==$?(V=o.jsx(gt,{children:$}),t[46]=$,t[47]=V):V=t[47];let G;t[48]!==e?(G=e("routes.agentsList.deleteAgentDescription"),t[48]=e,t[49]=G):G=t[49];const q=d?.title;let Y;t[50]!==q?(Y=o.jsx("span",{className:"font-medium text-foreground",children:q}),t[50]=q,t[51]=Y):Y=t[51];let X;t[52]!==G||t[53]!==Y?(X=o.jsxs(ft,{children:[G," ",Y,"."]}),t[52]=G,t[53]=Y,t[54]=X):X=t[54];let Z;t[55]!==V||t[56]!==X?(Z=o.jsxs(ht,{children:[V,X]}),t[55]=V,t[56]=X,t[57]=Z):Z=t[57];let ee;t[58]!==e?(ee=e("routes.agentsList.cancelButton"),t[58]=e,t[59]=ee):ee=t[59];let te;t[60]!==ee?(te=o.jsx(xt,{children:ee}),t[60]=ee,t[61]=te):te=t[61];let oe;t[62]!==e?(oe=e("routes.agentsList.deleteButton"),t[62]=e,t[63]=oe):oe=t[63];let se;t[64]!==P||t[65]!==oe?(se=o.jsx(jt,{onClick:P,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:oe}),t[64]=P,t[65]=oe,t[66]=se):se=t[66];let ie;t[67]!==te||t[68]!==se?(ie=o.jsxs(bt,{children:[te,se]}),t[67]=te,t[68]=se,t[69]=ie):ie=t[69];let re;t[70]!==Z||t[71]!==ie?(re=o.jsxs(Ct,{children:[Z,ie]}),t[70]=Z,t[71]=ie,t[72]=re):re=t[72];let ne;t[73]!==J||t[74]!==re?(ne=o.jsx(Dt,{open:J,onOpenChange:W,children:re}),t[73]=J,t[74]=re,t[75]=ne):ne=t[75];let me;return t[76]!==S||t[77]!==B||t[78]!==H||t[79]!==R||t[80]!==ne?(me=o.jsxs(S,{children:[B,H,R,ne]}),t[76]=S,t[77]=B,t[78]=H,t[79]=R,t[80]=ne,t[81]=me):me=t[81],me}function Lt(t){return t.id}export{ms as default};
@@ -1 +0,0 @@
1
- import{c as J,b as se,ar as Te,aq as Oe,r as W,j as s,as as et,dr as Fe,t as X,dq as Ie,dp as ke,b7 as Ue,W as be,a7 as re,n as je,e as le,K as te,m as Ke,b4 as $e,l as we,B as ee,v as qe,o as Ae,h as tt,ae as st,ag as Pe,dt as it}from"./index-DIoG5Nzm.js";import{i as lt}from"./AlertCircle-C3LoifMU.js";import{u as He,b as _e,i as rt,c as ot,p as nt,d as De,e as at,f as ze}from"./use-ai-providers-DL0YRrHe.js";import{i as ct}from"./CheckCircle-CqjXQQar.js";import{b as dt,g as mt}from"./use-organization-settings-DenVKwFP.js";import{S as ut}from"./schema-Dk7DmR5a.js";import{c as ft,d as Be,P as pt,C as Ee}from"./select-model-Cd6ICjyE.js";import{u as gt}from"./use-debounced-autosave-CrlGGbA0.js";import{I as ye}from"./input-B3ER89GU.js";import{a as Re,T as xt}from"./toggle-group-qR7WwCzn.js";import{c as Ve,d as Le,b as Qe,f as Ge,g as Ye,e as We,a as Je,A as Xe}from"./alert-dialog-DD8gmLEV.js";import{s as ht}from"./Plus-DuAHW1Gi.js";import{p as vt,f as yt}from"./pt-BR-CLy76QW2.js";import{a as bt}from"./Tool01-Cfifxqbk.js";import{s as jt}from"./Trash01-CeiHA_Cf.js";import{A as St}from"./avatar-BS0IyPAV.js";import{P as Ct}from"./ai-providers-logos-DD3qZ33J.js";import{i as _t}from"./Settings02-BBjxFEhG.js";import{s as Nt}from"./Eye-DTZwtLhN.js";import{d as Pt,c as It,b as kt,D as Kt,e as Dt}from"./dialog-BIFznZm3.js";import{R as wt}from"./require-capability-D-jq44dD.js";import"./constants-DNuUCxmW.js";import"./task-board-k97eyP2H.js";import"./drawer-CtAdPy7J.js";import"./chat-context-DylitU6A.js";import"./use-panel-navigate-xY92PiXA.js";import"./use-destination-route-BlILx1Gc.js";import"./hooks-Dv3PpADk.js";import"./use-mcp-client-Da8e-_d8.js";import"./auth-CKSU3JsT.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./decopilot-sse-pool-Dc_oXr8h.js";import"./slugify-CEUa2lfQ.js";import"./use-is-desktop-app-BNujXJc_.js";import"./use-virtual-mcp-BdzzM_-Q.js";import"./location-oTTXFrSF.js";import"./use-decopilot-events-D2a6ajEJ.js";import"./checkbox-BXjIirqE.js";import"./Check-CRib0DYD.js";import"./select-O-Se58mM.js";import"./ChevronUp-DMr_Wd-m.js";import"./ArrowLeft-B1xlMMf7.js";import"./ChevronSelectorVertical-CtALiTfe.js";import"./Key01-rPnY8MXp.js";import"./SearchMd-DwtkgExc.js";import"./Monitor01-BdeUVVjA.js";import"./ChevronRight-D1ZP1lTE.js";import"./download-app-dialog-BA4Zg8f-.js";import"./Copy01-CqZdC3Iz.js";import"./Download01-DWG0sleJ.js";import"./Image01-uIGiropd.js";import"./Stars01-_V6kPVkS.js";import"./differenceInSeconds-NQ4PDo0z.js";import"./User01-BDiBNFRN.js";import"./access-gate-Cq4IMSa2.js";import"./capability-load-error-DIIALIs2.js";const At=e=>e.capabilities?.includes("image")===!0,Et=e=>rt(e),Rt=e=>ot(e),Mt=[{key:"fast",filter:void 0},{key:"smart",filter:void 0},{key:"thinking",filter:void 0},{key:"image",filter:At},{key:"web_search",filter:Et},{key:"deep_research",filter:Rt}];function Tt(e){const t=J.c(30),{slot:i,onSlotChange:o,filterModels:n,defaultKeyId:c}=e,a=He(),l=a.some(C=>C.id===i?.keyId)?i?.keyId:null,[u,_]=W.useState(l??c);let b,r;t[0]!==l?(b=()=>{l&&_(l)},r=[l],t[0]=l,t[1]=b,t[2]=r):(b=t[1],r=t[2]),W.useEffect(b,r);let p;t[3]!==a||t[4]!==c||t[5]!==u?(p=a.some(C=>C.id===u)?u:c,t[3]=a,t[4]=c,t[5]=u,t[6]=p):p=t[6];const m=p;let f;t[7]!==m||t[8]!==a?(f=m?a.find(C=>C.id===m):null,t[7]=m,t[8]=a,t[9]=f):f=t[9];const P=f,{models:h,isLoading:v}=_e(n?m??void 0:void 0),g=n?v||h.some(n):!0;let N;t[10]!==i||t[11]!==P?.providerId||t[12]!==l?(N=i&&l?{modelId:i.modelId,title:i.title??i.modelId,keyId:i.keyId,providerId:P?.providerId??"deco",description:null,logo:null,capabilities:[],limits:null,costs:null}:null,t[10]=i,t[11]=P?.providerId,t[12]=l,t[13]=N):N=t[13];const k=N,x=se();if(n&&!g){let C;t[14]!==x?(C=x("settings.simpleModeSection.notAvailableWithCurrentProvider"),t[14]=x,t[15]=C):C=t[15];let K;return t[16]!==C?(K=s.jsx("p",{className:"text-xs text-muted-foreground italic",children:C}),t[16]=C,t[17]=K):K=t[17],K}let j;t[18]!==x?(j=x("settings.simpleModeSection.pickModel"),t[18]=x,t[19]=j):j=t[19];let S;t[20]===Symbol.for("react.memo_cache_sentinel")?(S=C=>_(C),t[20]=S):S=t[20];let d;t[21]!==m||t[22]!==o?(d=C=>{const K=C.keyId??m??"";_(K),o({keyId:K,modelId:C.modelId,title:C.title})},t[21]=m,t[22]=o,t[23]=d):d=t[23];let y;return t[24]!==m||t[25]!==n||t[26]!==k||t[27]!==j||t[28]!==d?(y=s.jsx(ft,{variant:"bordered",placeholder:j,model:k,credentialId:m,filterModels:n,onCredentialChange:S,onModelChange:d}),t[24]=m,t[25]=n,t[26]=k,t[27]=j,t[28]=d,t[29]=y):y=t[29],y}function Ot(e){const t=J.c(10),{isPending:i,showSaved:o}=e,n=se();if(i){let c;t[0]===Symbol.for("react.memo_cache_sentinel")?(c=s.jsx(Ue,{size:12,className:"animate-spin"}),t[0]=c):c=t[0];let a;t[1]!==n?(a=n("settings.simpleModeSection.saving"),t[1]=n,t[2]=a):a=t[2];let l;return t[3]!==a?(l=s.jsxs("span",{className:"flex items-center gap-1 text-xs text-muted-foreground",children:[c,a]}),t[3]=a,t[4]=l):l=t[4],l}if(o){let c;t[5]===Symbol.for("react.memo_cache_sentinel")?(c=s.jsx(ct,{size:12}),t[5]=c):c=t[5];let a;t[6]!==n?(a=n("settings.simpleModeSection.saved"),t[6]=n,t[7]=a):a=t[7];let l;return t[8]!==a?(l=s.jsxs("span",{className:"flex items-center gap-1 text-xs text-muted-foreground",children:[c,a]}),t[8]=a,t[9]=l):l=t[9],l}return null}function Ft(){const e=J.c(58),t=se(),i=He(),o=dt(),n=i.length>0;let c;e[0]===Symbol.for("react.memo_cache_sentinel")?(c=Te(ut),e[0]=c):c=e[0];let a;e[1]!==o?(a={resolver:c,values:o,mode:"onChange"},e[1]=o,e[2]=a):a=e[2];const l=Oe(a),{mutate:u,isPending:_,isSuccess:b}=mt(),r=l.formState.isDirty;let p;e[3]!==l||e[4]!==o||e[5]!==t||e[6]!==u?(p={delayMs:250,save:async()=>{const I=l.getValues();u(I,{onSuccess:()=>l.reset(I,{keepValues:!0}),onError:T=>{l.reset(o),X.error(t("settings.simpleModeSection.failedToSave",{error:T.message}))}})}},e[3]=l,e[4]=o,e[5]=t,e[6]=u,e[7]=p):p=e[7];const{schedule:m}=gt(p),f=i[0],P=i[1],h=i[2],{models:v}=_e(f?.id),{models:g}=_e(P?.id),{models:N}=_e(h?.id);let k,x;e[8]!==l||e[9]!==n?(k=()=>{n||l.reset({tiers:{fast:null,smart:null,thinking:null,image:null,web_search:null,deep_research:null}})},x=[n,l],e[8]=l,e[9]=n,e[10]=k,e[11]=x):(k=e[10],x=e[11]),W.useEffect(k,x);let j;e[12]!==i||e[13]!==l||e[14]!==f||e[15]!==P||e[16]!==h||e[17]!==v||e[18]!==g||e[19]!==N?(j=()=>{const I=l.getValues(),T=new Set(i.map(Ut)),O={};f?.id&&(O[f.id]=v),P?.id&&(O[P.id]=g),h?.id&&(O[h.id]=N);const M=Q=>Q!=null&&!T.has(Q.keyId),D={fast:M(I.tiers.fast)?null:I.tiers.fast,smart:M(I.tiers.smart)?null:I.tiers.smart,thinking:M(I.tiers.thinking)?null:I.tiers.thinking,image:M(I.tiers.image)?null:I.tiers.image,web_search:M(I.tiers.web_search)?null:I.tiers.web_search,deep_research:M(I.tiers.deep_research)?null:I.tiers.deep_research},G=!D.fast||!D.smart||!D.thinking||!D.image||!D.web_search||!D.deep_research,Y=D.fast===I.tiers.fast&&D.smart===I.tiers.smart&&D.thinking===I.tiers.thinking&&D.image===I.tiers.image&&D.web_search===I.tiers.web_search&&D.deep_research===I.tiers.deep_research;if(!G&&Y)return;const z=nt(i,O);l.reset({tiers:{fast:D.fast??z.chat.fast,smart:D.smart??z.chat.smart,thinking:D.thinking??z.chat.thinking,image:D.image??z.image,web_search:D.web_search??z.webSearch,deep_research:D.deep_research??z.deepResearch}},{keepDirty:!0})},e[12]=i,e[13]=l,e[14]=f,e[15]=P,e[16]=h,e[17]=v,e[18]=g,e[19]=N,e[20]=j):j=e[20];const S=f?.id,d=P?.id,y=h?.id;let C;e[21]!==i||e[22]!==l||e[23]!==v||e[24]!==g||e[25]!==N||e[26]!==S||e[27]!==d||e[28]!==y?(C=[l,i,v,g,N,S,d,y],e[21]=i,e[22]=l,e[23]=v,e[24]=g,e[25]=N,e[26]=S,e[27]=d,e[28]=y,e[29]=C):C=e[29],W.useEffect(j,C);let K;e[30]!==t?(K=I=>({fast:t("settings.simpleModeSection.tierFast"),smart:t("settings.simpleModeSection.tierSmart"),thinking:t("settings.simpleModeSection.tierThinking"),image:t("settings.simpleModeSection.tierImage"),web_search:t("settings.simpleModeSection.tierWebSearch"),deep_research:t("settings.simpleModeSection.tierDeepResearch")})[I]||I,e[30]=t,e[31]=K):K=e[31];const A=K;let w;e[32]!==t?(w=I=>({fast:t("settings.simpleModeSection.tierFastDesc"),smart:t("settings.simpleModeSection.tierSmartDesc"),thinking:t("settings.simpleModeSection.tierThinkingDesc"),image:t("settings.simpleModeSection.tierImageDesc"),web_search:t("settings.simpleModeSection.tierWebSearchDesc"),deep_research:t("settings.simpleModeSection.tierDeepResearchDesc")})[I]||"",e[32]=t,e[33]=w):w=e[33];const E=w;let R;e[34]!==t?(R=t("settings.simpleModeSection.defaultModels"),e[34]=t,e[35]=R):R=e[35];let F;e[36]!==t?(F=t("settings.simpleModeSection.modelsPowerDescription"),e[36]=t,e[37]=F):F=e[37];let B;e[38]!==F?(B=s.jsx("p",{className:"text-sm text-muted-foreground",children:F}),e[38]=F,e[39]=B):B=e[39];const L=b&&!r;let U;e[40]!==_||e[41]!==L?(U=s.jsx(Ot,{isPending:_,showSaved:L}),e[40]=_,e[41]=L,e[42]=U):U=e[42];let $;e[43]!==B||e[44]!==U?($=s.jsxs("div",{className:"flex items-center justify-between -mt-2 mb-2",children:[B,U]}),e[43]=B,e[44]=U,e[45]=$):$=e[45];let q;e[46]!==i[0]?.id||e[47]!==l.control||e[48]!==E||e[49]!==A||e[50]!==m?(q=Mt.map(I=>s.jsx(et,{control:l.control,name:`tiers.${I.key}`,render:T=>{const{field:O}=T;return s.jsx(Fe,{title:A(I.key),description:E(I.key),action:s.jsx(Tt,{slot:O.value,defaultKeyId:i[0]?.id??null,filterModels:I.filter,onSlotChange:M=>{O.onChange(M),m()}})})}},I.key)),e[46]=i[0]?.id,e[47]=l.control,e[48]=E,e[49]=A,e[50]=m,e[51]=q):q=e[51];let H;e[52]!==q?(H=s.jsx(Ie,{children:q}),e[52]=q,e[53]=H):H=e[53];let V;return e[54]!==R||e[55]!==$||e[56]!==H?(V=s.jsxs(ke,{title:R,headerClassName:"pl-0",children:[$,H]}),e[54]=R,e[55]=$,e[56]=H,e[57]=V):V=e[57],V}function Ut(e){return e.id}const $t={usd:[10,20,100],brl:[50,100,500]};function qt(){const e=J.c(30),t=se(),i=re(),[o]=qe(),[n,c]=W.useState(!1);let a;e[0]!==t?(a=d=>{X.error(t("settings.decoCreditsHero.topUpFailed",{message:d.message}))},e[0]=t,e[1]=a):a=e[1];const{mutate:l,isPending:u}=le({mutationFn:async d=>{const{url:y}=await i.call("AI_PROVIDER_TOPUP_URL",{providerId:"deco",amountCents:d,currency:m});return y},onSuccess:Ht,onError:a}),[_,b]=W.useState(""),[r,p]=W.useState(o.language==="pt-BR"?"brl":"usd"),m=r,f=parseFloat(_),P=!isNaN(f)&&f>=1,h=m==="brl"?"R$":"$";let v;e[2]!==p?(v=d=>{d&&p(d)},e[2]=p,e[3]=v):v=e[3];let g,N;e[4]===Symbol.for("react.memo_cache_sentinel")?(g=s.jsx(Re,{value:"usd",className:"px-3.5 text-sm",children:"USD"}),N=s.jsx(Re,{value:"brl",className:"px-3.5 text-sm",children:"BRL"}),e[4]=g,e[5]=N):(g=e[4],N=e[5]);let k;e[6]!==m||e[7]!==v?(k=s.jsxs(xt,{type:"single",variant:"outline",size:"default",value:m,onValueChange:v,children:[g,N]}),e[6]=m,e[7]=v,e[8]=k):k=e[8];let x;e[9]!==m||e[10]!==h||e[11]!==n||e[12]!==u||e[13]!==t||e[14]!==l?(x=!n&&s.jsxs(s.Fragment,{children:[$t[m].map(d=>s.jsxs(ee,{variant:"outline",className:"h-10 px-4 text-sm font-medium tabular-nums",disabled:u,onClick:()=>l(d*100),children:[h,d]},d)),s.jsx(ee,{variant:"ghost",className:"h-10 px-4 text-sm text-muted-foreground",onClick:()=>c(!0),disabled:u,children:t("settings.decoCreditsHero.custom")})]}),e[9]=m,e[10]=h,e[11]=n,e[12]=u,e[13]=t,e[14]=l,e[15]=x):x=e[15];let j;e[16]!==h||e[17]!==_||e[18]!==f||e[19]!==n||e[20]!==P||e[21]!==u||e[22]!==b||e[23]!==t||e[24]!==l?(j=n&&s.jsxs(s.Fragment,{children:[s.jsxs("div",{className:"relative max-w-[140px]",children:[s.jsx("span",{className:"absolute left-3 top-1/2 -translate-y-1/2 text-sm text-muted-foreground select-none",children:h}),s.jsx(ye,{type:"number",min:"1",step:"1",placeholder:t("settings.decoCreditsHero.amountPlaceholder"),value:_,onChange:d=>b(d.target.value),className:"h-10 text-sm pl-7",autoFocus:!0})]}),s.jsx(ee,{className:"h-10",disabled:!P||u,onClick:()=>l(Math.round(f*100)),children:u?"...":t("settings.decoCreditsHero.add")}),s.jsx(ee,{variant:"ghost",className:"h-10 text-sm text-muted-foreground",onClick:()=>{c(!1),b("")},children:t("settings.decoCreditsHero.cancel")})]}),e[16]=h,e[17]=_,e[18]=f,e[19]=n,e[20]=P,e[21]=u,e[22]=b,e[23]=t,e[24]=l,e[25]=j):j=e[25];let S;return e[26]!==k||e[27]!==x||e[28]!==j?(S=s.jsx("div",{className:"flex flex-col gap-2.5",children:s.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[k,x,j]})}),e[26]=k,e[27]=x,e[28]=j,e[29]=S):S=e[29],S}function Ht(e){e&&window.open(e,"_blank","noopener,noreferrer")}function zt(e){return e<=0?"text-destructive":e<=1?"text-warning":"text-foreground"}function Bt(){const e=J.c(121),t=se(),{org:i}=be(),o=re(),n=je(),c=De();let a;e[0]!==c?(a=c.find(Vt),e[0]=c,e[1]=a):a=e[1];const l=a,[u,_]=W.useState(!1);let b;e[2]!==l||e[3]!==o?(b=async()=>{l&&await o.call("AI_PROVIDER_KEY_DELETE",{keyId:l.id})},e[2]=l,e[3]=o,e[4]=b):b=e[4];let r;e[5]!==i.id||e[6]!==n||e[7]!==t?(r=()=>{n.invalidateQueries({queryKey:te.aiProviderKeys(i.id)}),n.invalidateQueries({queryKey:te.aiProviders(i.id)}),X.success(t("settings.decoCreditsHero.disconnectSuccess")),_(!1)},e[5]=i.id,e[6]=n,e[7]=t,e[8]=r):r=e[8];let p;e[9]!==t?(p=Ze=>{X.error(t("settings.decoCreditsHero.disconnectError",{message:Ze.message}))},e[9]=t,e[10]=p):p=e[10];let m;e[11]!==b||e[12]!==r||e[13]!==p?(m={mutationFn:b,onSuccess:r,onError:p},e[11]=b,e[12]=r,e[13]=p,e[14]=m):m=e[14];const{mutate:f,isPending:P}=le(m);let h;e[15]!==i.id?(h=te.aiProviderCredits(i.id,"deco"),e[15]=i.id,e[16]=h):h=e[16];const v=!!l;let g;e[17]!==o?(g=async()=>{try{return await o.call("AI_PROVIDER_CREDITS",{providerId:"deco"})}catch{return null}},e[17]=o,e[18]=g):g=e[18];let N;e[19]!==h||e[20]!==v||e[21]!==g?(N={queryKey:h,enabled:v,staleTime:6e4,queryFn:g},e[19]=h,e[20]=v,e[21]=g,e[22]=N):N=e[22];const{data:k,isLoading:x,refetch:j,isFetching:S}=Ke(N);if(!l)return null;const d=k?.balanceCents!=null?k.balanceCents/100:null;let y;e[23]!==d?(y=d!=null?`$${d.toFixed(2)}`:"—",e[23]=d,e[24]=y):y=e[24];const C=y;let K;e[25]!==t?(K=t("settings.decoCreditsHero.title"),e[25]=t,e[26]=K):K=e[26];let A;e[27]!==t?(A=t("settings.decoCreditsHero.decoAiGatewayAlt"),e[27]=t,e[28]=A):A=e[28];let w;e[29]!==A?(w=s.jsx("img",{src:"/logos/deco%20logo.svg",alt:A,className:"size-9 rounded-lg object-contain dark:bg-white dark:p-0.5"}),e[29]=A,e[30]=w):w=e[30];let E;e[31]!==t?(E=t("settings.decoCreditsHero.accessModels"),e[31]=t,e[32]=E):E=e[32];let R;e[33]!==E?(R=s.jsx("div",{children:s.jsx("p",{className:"text-xs text-muted-foreground",children:E})}),e[33]=E,e[34]=R):R=e[34];let F;e[35]!==w||e[36]!==R?(F=s.jsxs("div",{className:"flex items-center gap-3",children:[w,R]}),e[35]=w,e[36]=R,e[37]=F):F=e[37];let B;e[38]===Symbol.for("react.memo_cache_sentinel")?(B=()=>_(!0),e[38]=B):B=e[38];let L;e[39]!==t?(L=t("settings.decoCreditsHero.disconnect"),e[39]=t,e[40]=L):L=e[40];let U;e[41]!==P||e[42]!==L?(U=s.jsx(ee,{variant:"ghost",size:"sm",className:"text-xs text-muted-foreground hover:text-destructive",onClick:B,disabled:P,children:L}),e[41]=P,e[42]=L,e[43]=U):U=e[43];let $;e[44]!==F||e[45]!==U?($=s.jsxs("div",{className:"flex items-center justify-between",children:[F,U]}),e[44]=F,e[45]=U,e[46]=$):$=e[46];let q;e[47]!==t?(q=t("settings.decoCreditsHero.disconnectTitle"),e[47]=t,e[48]=q):q=e[48];let H;e[49]!==q?(H=s.jsx(Ve,{children:q}),e[49]=q,e[50]=H):H=e[50];let V;e[51]!==t?(V=t("settings.decoCreditsHero.disconnectDescription"),e[51]=t,e[52]=V):V=e[52];let I;e[53]!==V?(I=s.jsx(Le,{children:V}),e[53]=V,e[54]=I):I=e[54];let T;e[55]!==H||e[56]!==I?(T=s.jsxs(Qe,{children:[H,I]}),e[55]=H,e[56]=I,e[57]=T):T=e[57];let O;e[58]!==t?(O=t("settings.decoCreditsHero.cancelButton"),e[58]=t,e[59]=O):O=e[59];let M;e[60]!==O?(M=s.jsx(Ge,{children:O}),e[60]=O,e[61]=M):M=e[61];let D;e[62]!==f?(D=()=>f(),e[62]=f,e[63]=D):D=e[63];let G;e[64]!==t?(G=t("settings.decoCreditsHero.disconnectButton"),e[64]=t,e[65]=G):G=e[65];let Y;e[66]!==D||e[67]!==G?(Y=s.jsx(Ye,{onClick:D,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:G}),e[66]=D,e[67]=G,e[68]=Y):Y=e[68];let z;e[69]!==M||e[70]!==Y?(z=s.jsxs(We,{children:[M,Y]}),e[69]=M,e[70]=Y,e[71]=z):z=e[71];let Q;e[72]!==T||e[73]!==z?(Q=s.jsxs(Je,{children:[T,z]}),e[72]=T,e[73]=z,e[74]=Q):Q=e[74];let ie;e[75]!==u||e[76]!==Q?(ie=s.jsx(Xe,{open:u,onOpenChange:_,children:Q}),e[75]=u,e[76]=Q,e[77]=ie):ie=e[77];let Z;e[78]!==d||e[79]!==C||e[80]!==S||e[81]!==x?(Z=x||S?s.jsx($e,{className:"h-9 w-24"}):s.jsx("span",{className:we("text-3xl font-semibold tabular-nums tracking-tight",d!=null&&zt(d)),children:C}),e[78]=d,e[79]=C,e[80]=S,e[81]=x,e[82]=Z):Z=e[82];let oe;e[83]!==j?(oe=()=>j(),e[83]=j,e[84]=oe):oe=e[84];let ne;e[85]!==t?(ne=t("settings.decoCreditsHero.refreshBalance"),e[85]=t,e[86]=ne):ne=e[86];const Ne=S&&"animate-spin";let ae;e[87]!==Ne?(ae=we(Ne),e[87]=Ne,e[88]=ae):ae=e[88];let ce;e[89]!==ae?(ce=s.jsx(Ue,{size:14,className:ae}),e[89]=ae,e[90]=ce):ce=e[90];let de;e[91]!==S||e[92]!==oe||e[93]!==ne||e[94]!==ce?(de=s.jsx("button",{type:"button",onClick:oe,disabled:S,className:"text-muted-foreground hover:text-foreground disabled:opacity-50 transition-colors p-1 rounded-md hover:bg-muted/50","aria-label":ne,children:ce}),e[91]=S,e[92]=oe,e[93]=ne,e[94]=ce,e[95]=de):de=e[95];let me;e[96]!==Z||e[97]!==de?(me=s.jsxs("div",{className:"flex items-baseline gap-2",children:[Z,de]}),e[96]=Z,e[97]=de,e[98]=me):me=e[98];let ue;e[99]!==t?(ue=t("settings.decoCreditsHero.availableBalance"),e[99]=t,e[100]=ue):ue=e[100];let fe;e[101]!==ue?(fe=s.jsx("p",{className:"text-xs text-muted-foreground",children:ue}),e[101]=ue,e[102]=fe):fe=e[102];let pe;e[103]!==me||e[104]!==fe?(pe=s.jsxs("div",{className:"flex flex-col gap-2 pt-2",children:[me,fe]}),e[103]=me,e[104]=fe,e[105]=pe):pe=e[105];let ge;e[106]!==t?(ge=t("settings.decoCreditsHero.addCredits"),e[106]=t,e[107]=ge):ge=e[107];let xe;e[108]!==ge?(xe=s.jsx("p",{className:"text-xs font-medium text-muted-foreground mb-2.5",children:ge}),e[108]=ge,e[109]=xe):xe=e[109];let Se;e[110]===Symbol.for("react.memo_cache_sentinel")?(Se=s.jsx(qt,{}),e[110]=Se):Se=e[110];let he;e[111]!==xe?(he=s.jsxs("div",{className:"pt-4 border-t border-border/60",children:[xe,Se]}),e[111]=xe,e[112]=he):he=e[112];let ve;e[113]!==$||e[114]!==ie||e[115]!==pe||e[116]!==he?(ve=s.jsx(Ie,{children:s.jsxs("div",{className:"px-5 py-5 flex flex-col gap-5",children:[$,ie,pe,he]})}),e[113]=$,e[114]=ie,e[115]=pe,e[116]=he,e[117]=ve):ve=e[117];let Ce;return e[118]!==K||e[119]!==ve?(Ce=s.jsx(ke,{title:K,children:ve}),e[118]=K,e[119]=ve,e[120]=Ce):Ce=e[120],Ce}function Vt(e){return e.providerId==="deco"}function Lt(){const e=J.c(12),{org:t}=be(),i=re(),o=je(),n=se();let c;e[0]!==i?(c=async()=>{await i.call("AI_PROVIDER_PROVISION_KEY",{providerId:"deco"})},e[0]=i,e[1]=c):c=e[1];let a;e[2]!==t||e[3]!==o||e[4]!==n?(a=()=>{Ae("ai_provider_provision_succeeded",{provider_id:"deco"}),o.invalidateQueries({queryKey:te.aiProviderKeys(t.id)}),o.invalidateQueries({queryKey:te.aiProviders(t.id)}),X.success(n("settings.aiProviders.decoConnectSuccess"))},e[2]=t,e[3]=o,e[4]=n,e[5]=a):a=e[5];let l;e[6]!==n?(l=_=>{Ae("ai_provider_provision_failed",{provider_id:"deco",error:_.message}),X.error(n("settings.aiProviders.decoConnectError",{error:_.message}))},e[6]=n,e[7]=l):l=e[7];let u;return e[8]!==c||e[9]!==a||e[10]!==l?(u={mutationFn:c,onSuccess:a,onError:l},e[8]=c,e[9]=a,e[10]=l,e[11]=u):u=e[11],le(u)}function Qt(){const e=J.c(37),t=se(),{mutate:i,isPending:o}=Lt();let n;e[0]===Symbol.for("react.memo_cache_sentinel")?(n=["radial-gradient(ellipse 50% 150% at -15% 50%, rgba(165,149,255,0.14) 0%, transparent 60%)","radial-gradient(ellipse 50% 150% at 115% 50%, rgba(208,236,26,0.11) 0%, transparent 60%)"],e[0]=n):n=e[0];let c;e[1]===Symbol.for("react.memo_cache_sentinel")?(c=s.jsx("div",{className:"absolute inset-0 pointer-events-none",style:{backgroundImage:n.join(", ")}}),e[1]=c):c=e[1];let a;e[2]!==t?(a=t("settings.decoNudgeCard.decoAiGateway"),e[2]=t,e[3]=a):a=e[3];let l;e[4]!==a?(l=s.jsx("img",{src:"/logos/deco%20logo.svg",alt:a,className:"size-12 shrink-0 rounded-xl object-contain dark:bg-white dark:p-1"}),e[4]=a,e[5]=l):l=e[5];let u;e[6]!==t?(u=t("settings.decoNudgeCard.decoAiGateway"),e[6]=t,e[7]=u):u=e[7];let _;e[8]!==u?(_=s.jsx("p",{className:"text-base font-semibold",children:u}),e[8]=u,e[9]=_):_=e[9];let b;e[10]!==t?(b=t("settings.decoNudgeCard.recommended"),e[10]=t,e[11]=b):b=e[11];let r;e[12]!==b?(r=s.jsx("span",{className:"rounded-full border border-border/60 bg-background/60 px-2 py-0.5 text-[10px] font-medium text-muted-foreground",children:b}),e[12]=b,e[13]=r):r=e[13];let p;e[14]!==_||e[15]!==r?(p=s.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[_,r]}),e[14]=_,e[15]=r,e[16]=p):p=e[16];let m;e[17]!==t?(m=t("settings.decoNudgeCard.description"),e[17]=t,e[18]=m):m=e[18];let f;e[19]!==m?(f=s.jsx("p",{className:"text-sm text-muted-foreground",children:m}),e[19]=m,e[20]=f):f=e[20];let P;e[21]!==f||e[22]!==p?(P=s.jsxs("div",{className:"flex-1 min-w-0",children:[p,f]}),e[21]=f,e[22]=p,e[23]=P):P=e[23];let h;e[24]!==i?(h=()=>i(),e[24]=i,e[25]=h):h=e[25];let v;e[26]!==o||e[27]!==t?(v=t(o?"settings.decoNudgeCard.connecting":"settings.decoNudgeCard.connectDeco"),e[26]=o,e[27]=t,e[28]=v):v=e[28];let g;e[29]!==o||e[30]!==h||e[31]!==v?(g=s.jsx(ee,{variant:"outline",disabled:o,onClick:h,children:v}),e[29]=o,e[30]=h,e[31]=v,e[32]=g):g=e[32];let N;return e[33]!==P||e[34]!==g||e[35]!==l?(N=s.jsxs("div",{className:"relative rounded-xl border border-border overflow-hidden",children:[c,s.jsxs("div",{className:"relative flex items-center gap-5 px-6 py-5",children:[l,P,g]})]}),e[33]=P,e[34]=g,e[35]=l,e[36]=N):N=e[36],N}const Gt=e=>st({label:Pe().min(1,e("settings.editProviderDialog.labelRequired")).max(100),apiKey:Pe().optional(),baseUrl:Pe().optional()});function Yt({isOpenAICompatible:e,baseUrl:t,currentBaseUrl:i,apiKey:o}){return e&&!!t&&t!==i&&!o}function Wt({providerKey:e,provider:t,preset:i,maskedKey:o,currentLabel:n,currentBaseUrl:c,onCancel:a,onSuccess:l}){const{org:u}=be(),_=re(),b=je(),r=se(),[p,m]=W.useState(!1),f=t.id==="openai-compatible",P=t.supportedMethods.includes("api-key"),h=Gt(r),{register:v,handleSubmit:g,watch:N,setError:k,formState:{errors:x}}=Oe({resolver:Te(h),defaultValues:{label:n,apiKey:"",baseUrl:c??""}}),j=N("apiKey")??"",{mutate:S,isPending:d}=le({mutationFn:async y=>{let C;y.apiKey&&(f?C=JSON.stringify({baseUrl:y.baseUrl||c||"",apiKey:y.apiKey}):C=y.apiKey),await _.call("AI_PROVIDER_KEY_UPDATE",{keyId:e.id,label:y.label,...C!==void 0?{apiKey:C}:{}})},onSuccess:()=>{b.invalidateQueries({queryKey:te.aiProviderKeys(u.id)}),b.invalidateQueries({queryKey:te.aiProviders(u.id)}),X.success(r("settings.editProviderDialog.providerUpdated")),l()},onError:y=>X.error(r("settings.editProviderDialog.failedToUpdate",{error:y.message}))});return s.jsxs("form",{onSubmit:g(y=>{if(Yt({isOpenAICompatible:f,baseUrl:y.baseUrl,currentBaseUrl:c,apiKey:y.apiKey})){k("apiKey",{message:r("settings.editProviderDialog.apiKeyRequiredForBaseUrlChange")});return}S(y)}),className:"space-y-3",children:[s.jsxs("div",{className:"space-y-1",children:[s.jsx("label",{className:"text-xs font-medium text-muted-foreground",children:r("settings.editProviderDialog.label")}),s.jsx(ye,{placeholder:r("settings.editProviderDialog.labelPlaceholder"),...v("label"),className:"h-8 text-sm"}),x.label&&s.jsx("p",{className:"text-xs text-destructive",children:x.label.message})]}),f&&!i?.defaultBaseUrl&&s.jsxs("div",{className:"space-y-1",children:[s.jsx("label",{className:"text-xs font-medium text-muted-foreground",children:r("settings.editProviderDialog.baseUrl")}),s.jsx(ye,{type:"url",placeholder:i?.baseUrlPlaceholder??r("settings.editProviderDialog.baseUrlPlaceholder"),...v("baseUrl"),className:"h-8 text-sm"})]}),P&&s.jsxs("div",{className:"space-y-1",children:[s.jsxs("label",{className:"text-xs font-medium text-muted-foreground",children:[r("settings.editProviderDialog.apiKey")," ",s.jsxs("span",{className:"text-muted-foreground/60",children:["(",r("settings.editProviderDialog.leaveBlankHint"),")"]})]}),s.jsxs("div",{className:"relative",children:[s.jsx(ye,{type:p&&j?"text":"password",placeholder:o,...v("apiKey"),className:"ph-no-capture h-8 text-sm pr-8"}),j&&s.jsx("button",{type:"button",onClick:()=>m(!p),"aria-label":r(p?"settings.editProviderDialog.hideApiKey":"settings.editProviderDialog.showApiKey"),className:"absolute right-2 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground",children:p?s.jsx(_t,{size:14}):s.jsx(Nt,{size:14})})]}),x.apiKey&&s.jsx("p",{className:"text-xs text-destructive",children:x.apiKey.message})]}),i?.helpText&&s.jsx("p",{className:"text-xs text-muted-foreground",children:i.helpText}),s.jsxs(Dt,{children:[s.jsx(ee,{type:"button",variant:"ghost",size:"sm",onClick:a,disabled:d,children:r("settings.editProviderDialog.cancel")}),s.jsx(ee,{type:"submit",size:"sm",disabled:d,children:r(d?"settings.editProviderDialog.saving":"settings.editProviderDialog.save")})]})]})}function Jt(e){const t=J.c(31),{providerKey:i,provider:o,open:n,onOpenChange:c}=e,a=se(),l=re(),u=o.id==="openai-compatible"&&i.presetId?Be(i.presetId):void 0,_=u?.name??o.name;let b;t[0]!==i.id?(b=te.aiProviderKeyPreview(i.id),t[0]=i.id,t[1]=b):b=t[1];let r;t[2]!==i.id||t[3]!==l?(r=()=>l.call("AI_PROVIDER_KEY_PREVIEW",{keyId:i.id}),t[2]=i.id,t[3]=l,t[4]=r):r=t[4];let p;t[5]!==n||t[6]!==b||t[7]!==r?(p={queryKey:b,queryFn:r,enabled:n,staleTime:0},t[5]=n,t[6]=b,t[7]=r,t[8]=p):p=t[8];const{data:m,isLoading:f}=Ke(p),P=Kt,h=kt,v="sm:max-w-md",g=It,N=Pt,k=a("settings.editProviderDialog.editTitle",{name:_});let x;t[9]!==N||t[10]!==k?(x=s.jsx(N,{children:k}),t[9]=N,t[10]=k,t[11]=x):x=t[11];let j;t[12]!==g||t[13]!==x?(j=s.jsx(g,{children:x}),t[12]=g,t[13]=x,t[14]=j):j=t[14];let S;t[15]!==f||t[16]!==c||t[17]!==u||t[18]!==m||t[19]!==o||t[20]!==i?(S=f||!m?s.jsx("div",{className:"flex justify-center py-8",children:s.jsx(tt,{})}):s.jsx(Wt,{providerKey:i,provider:o,preset:u,maskedKey:m.maskedKey,currentLabel:m.label,currentBaseUrl:m.baseUrl,onCancel:()=>c(!1),onSuccess:()=>c(!1)}),t[15]=f,t[16]=c,t[17]=u,t[18]=m,t[19]=o,t[20]=i,t[21]=S):S=t[21];let d;t[22]!==h||t[23]!==j||t[24]!==S?(d=s.jsxs(h,{className:v,children:[j,S]}),t[22]=h,t[23]=j,t[24]=S,t[25]=d):d=t[25];let y;return t[26]!==P||t[27]!==c||t[28]!==n||t[29]!==d?(y=s.jsx(P,{open:n,onOpenChange:c,children:d}),t[26]=P,t[27]=c,t[28]=n,t[29]=d,t[30]=y):y=t[30],y}function Xt(e){const t=J.c(86),{providerKey:i,provider:o}=e,{org:n}=be(),c=re(),a=je(),[l,u]=W.useState(!1),[_,b]=W.useState(!1),r=se(),[p]=qe(),m=p.language==="pt-BR"?vt:void 0,f=o?.id==="openai-compatible";let P;t[0]!==f||t[1]!==i.presetId?(P=f&&i.presetId?Be(i.presetId):void 0,t[0]=f,t[1]=i.presetId,t[2]=P):P=t[2];const h=P;let v;t[3]!==f||t[4]!==h||t[5]!==o?.name||t[6]!==i.providerId||t[7]!==r?(v=h?h.name:f?r("settings.aiProviders.customOpenAiCompatible"):o?.name??(i.providerId==="claude-code"?r("settings.providerKeyRow.claudeCode"):i.providerId==="codex"?r("settings.providerKeyRow.codex"):i.providerId),t[3]=f,t[4]=h,t[5]=o?.name,t[6]=i.providerId,t[7]=r,t[8]=v):v=t[8];const g=v,N=h?.logo??o?.logo??Ct[i.providerId];let k;e:{if(f){k=i.label;break e}let Z;t[9]!==m||t[10]!==i.createdAt||t[11]!==i.label||t[12]!==r?(Z=r("settings.providerKeyRow.addedTimeAgo",{label:i.label,time:yt(new Date(i.createdAt),{locale:m})}),t[9]=m,t[10]=i.createdAt,t[11]=i.label,t[12]=r,t[13]=Z):Z=t[13],k=Z}const x=k;let j;t[14]!==i.id||t[15]!==c?(j=async()=>{await c.call("AI_PROVIDER_KEY_DELETE",{keyId:i.id})},t[14]=i.id,t[15]=c,t[16]=j):j=t[16];let S;t[17]!==n||t[18]!==i.id||t[19]!==a||t[20]!==r?(S=()=>{a.invalidateQueries({queryKey:te.aiProviderKeys(n.id)}),a.invalidateQueries({queryKey:te.aiProviders(n.id)}),a.invalidateQueries({queryKey:te.aiProviderModels(n.id,i.id)}),X.success(r("settings.providerKeyRow.keyDeleted")),u(!1)},t[17]=n,t[18]=i.id,t[19]=a,t[20]=r,t[21]=S):S=t[21];let d;t[22]!==r?(d=Z=>X.error(r("settings.providerKeyRow.failedToDeleteKey",{error:Z.message})),t[22]=r,t[23]=d):d=t[23];let y;t[24]!==j||t[25]!==S||t[26]!==d?(y={mutationFn:j,onSuccess:S,onError:d},t[24]=j,t[25]=S,t[26]=d,t[27]=y):y=t[27];const{mutate:C,isPending:K}=le(y);let A;t[28]!==g||t[29]!==N?(A=N?s.jsx("img",{src:N,alt:g,className:"size-8 rounded-md object-contain dark:bg-white dark:p-0.5"}):s.jsx(St,{fallback:g.charAt(0),className:"size-8 bg-primary/10 text-primary"}),t[28]=g,t[29]=N,t[30]=A):A=t[30];let w;t[31]!==o||t[32]!==r?(w=o?s.jsx(ee,{variant:"ghost",size:"icon","aria-label":r("settings.providerKeyRow.editProviderKey"),className:"h-7 w-7 text-muted-foreground hover:text-foreground",onClick:()=>b(!0),children:s.jsx(bt,{size:14})}):null,t[31]=o,t[32]=r,t[33]=w):w=t[33];let E;t[34]!==r?(E=r("settings.providerKeyRow.deleteProviderKey"),t[34]=r,t[35]=E):E=t[35];let R,F;t[36]===Symbol.for("react.memo_cache_sentinel")?(R=()=>u(!0),F=s.jsx(jt,{size:14}),t[36]=R,t[37]=F):(R=t[36],F=t[37]);let B;t[38]!==K||t[39]!==E?(B=s.jsx(ee,{variant:"ghost",size:"icon","aria-label":E,className:"h-7 w-7 text-muted-foreground hover:text-destructive",disabled:K,onClick:R,children:F}),t[38]=K,t[39]=E,t[40]=B):B=t[40];let L;t[41]!==B||t[42]!==w?(L=s.jsxs("div",{className:"flex items-center gap-0.5",children:[w,B]}),t[41]=B,t[42]=w,t[43]=L):L=t[43];let U;t[44]!==x||t[45]!==g||t[46]!==L||t[47]!==A?(U=s.jsx(Fe,{icon:A,title:g,description:x,action:L}),t[44]=x,t[45]=g,t[46]=L,t[47]=A,t[48]=U):U=t[48];let $;t[49]!==_||t[50]!==o||t[51]!==i?($=o?s.jsx(Jt,{providerKey:i,provider:o,open:_,onOpenChange:b}):null,t[49]=_,t[50]=o,t[51]=i,t[52]=$):$=t[52];let q;t[53]!==r?(q=r("settings.providerKeyRow.deleteApiKey"),t[53]=r,t[54]=q):q=t[54];let H;t[55]!==q?(H=s.jsx(Ve,{children:q}),t[55]=q,t[56]=H):H=t[56];let V;t[57]!==i.label?(V=s.jsxs(Le,{children:["This action cannot be undone. This will permanently delete"," ",s.jsx("span",{className:"font-medium text-foreground",children:i.label}),"."]}),t[57]=i.label,t[58]=V):V=t[58];let I;t[59]!==H||t[60]!==V?(I=s.jsxs(Qe,{children:[H,V]}),t[59]=H,t[60]=V,t[61]=I):I=t[61];let T;t[62]!==r?(T=r("settings.providerKeyRow.cancel"),t[62]=r,t[63]=T):T=t[63];let O;t[64]!==T?(O=s.jsx(Ge,{children:T}),t[64]=T,t[65]=O):O=t[65];let M;t[66]!==C?(M=()=>C(),t[66]=C,t[67]=M):M=t[67];let D;t[68]!==r?(D=r("settings.providerKeyRow.delete"),t[68]=r,t[69]=D):D=t[69];let G;t[70]!==M||t[71]!==D?(G=s.jsx(Ye,{onClick:M,className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:D}),t[70]=M,t[71]=D,t[72]=G):G=t[72];let Y;t[73]!==O||t[74]!==G?(Y=s.jsxs(We,{children:[O,G]}),t[73]=O,t[74]=G,t[75]=Y):Y=t[75];let z;t[76]!==I||t[77]!==Y?(z=s.jsxs(Je,{children:[I,Y]}),t[76]=I,t[77]=Y,t[78]=z):z=t[78];let Q;t[79]!==l||t[80]!==z?(Q=s.jsx(Xe,{open:l,onOpenChange:u,children:z}),t[79]=l,t[80]=z,t[81]=Q):Q=t[81];let ie;return t[82]!==U||t[83]!==$||t[84]!==Q?(ie=s.jsxs(s.Fragment,{children:[U,$,Q]}),t[82]=U,t[83]=$,t[84]=Q,t[85]=ie):ie=t[85],ie}function Zt(e){const t=e.filter(i=>at(i.providerId));return{hasInventory:e.length>0,hasHostedProvider:t.length>0,hasDeco:t.some(i=>i.providerId==="deco")}}function es(e,t){return e.filter(i=>i.providerId!=="deco").map(i=>({key:i,provider:t.find(o=>o.id===i.providerId)??null}))}function Me(e){const t=J.c(13),{onConnectClick:i}=e,o=se(),n=De(),c=ze();let a;if(t[0]!==c?.providers||t[1]!==n||t[2]!==i||t[3]!==o){const l=c?.providers??[],u=es(n,l);let _;t[5]!==o?(_=o("settings.connectedProvidersSection.sectionTitle"),t[5]=o,t[6]=_):_=t[6];let b;t[7]===Symbol.for("react.memo_cache_sentinel")?(b=s.jsx(ht,{size:14}),t[7]=b):b=t[7];let r;t[8]!==o?(r=o("settings.connectedProvidersSection.connectButton"),t[8]=o,t[9]=r):r=t[9];let p;t[10]!==i||t[11]!==r?(p=s.jsxs(ee,{size:"sm",onClick:i,children:[b,r]}),t[10]=i,t[11]=r,t[12]=p):p=t[12],a=s.jsx(ke,{title:_,headerClassName:"px-0",actions:p,children:u.length===0?s.jsx("p",{className:"text-sm text-muted-foreground px-1",children:o("settings.connectedProvidersSection.emptyState")}):s.jsx(Ie,{children:u.map(ts)})}),t[0]=c?.providers,t[1]=n,t[2]=i,t[3]=o,t[4]=a}else a=t[4];return a}function ts(e){const{key:t,provider:i}=e;return s.jsx(Xt,{providerKey:t,provider:i},t.id)}function ss(){const e=J.c(55),t=se(),{org:i}=be(),o=re(),n=je(),[c,a]=W.useState("");let l;e[0]!==i.id?(l=te.claudeSubscription(i.id),e[0]=i.id,e[1]=l):l=e[1];let u;e[2]!==o?(u=()=>o.call("CLAUDE_SUBSCRIPTION_STATUS",{}),e[2]=o,e[3]=u):u=e[3];let _;e[4]!==l||e[5]!==u?(_={queryKey:l,queryFn:u},e[4]=l,e[5]=u,e[6]=_):_=e[6];const b=Ke(_);let r;e[7]!==i.id||e[8]!==n?(r=()=>n.invalidateQueries({queryKey:te.claudeSubscription(i.id)}),e[7]=i.id,e[8]=n,e[9]=r):r=e[9];const p=r;let m;e[10]!==o||e[11]!==c?(m=()=>o.call("CLAUDE_SUBSCRIPTION_CONNECT",{token:c}),e[10]=o,e[11]=c,e[12]=m):m=e[12];let f;e[13]!==p||e[14]!==t?(f=async()=>{a(""),await p(),X.success(t("settings.claudeSubscription.connected"))},e[13]=p,e[14]=t,e[15]=f):f=e[15];let P;e[16]!==m||e[17]!==f?(P={mutationFn:m,onSuccess:f,onError:ls},e[16]=m,e[17]=f,e[18]=P):P=e[18];const h=le(P);let v;e[19]!==o?(v=()=>o.call("CLAUDE_SUBSCRIPTION_DISCONNECT",{}),e[19]=o,e[20]=v):v=e[20];let g;e[21]!==p||e[22]!==t?(g=async()=>{await p(),X.success(t("settings.claudeSubscription.disconnected"))},e[21]=p,e[22]=t,e[23]=g):g=e[23];let N;e[24]!==v||e[25]!==g?(N={mutationFn:v,onSuccess:g,onError:is},e[24]=v,e[25]=g,e[26]=N):N=e[26];const k=le(N),x=b.data?.connected===!0,j=!x&&!!b.data?.linkedAt;let S;e[27]!==t?(S=t("settings.claudeSubscription.title"),e[27]=t,e[28]=S):S=e[28];let d;e[29]!==S?(d=s.jsx("p",{className:"text-base font-semibold",children:S}),e[29]=S,e[30]=d):d=e[30];let y;e[31]!==x||e[32]!==j||e[33]!==t?(y=t(x?"settings.claudeSubscription.active":j?"settings.claudeSubscription.expired":"settings.claudeSubscription.description"),e[31]=x,e[32]=j,e[33]=t,e[34]=y):y=e[34];let C;e[35]!==y?(C=s.jsx("p",{className:"text-sm text-muted-foreground",children:y}),e[35]=y,e[36]=C):C=e[36];let K;e[37]!==d||e[38]!==C?(K=s.jsxs("div",{className:"flex-1 min-w-0",children:[d,C]}),e[37]=d,e[38]=C,e[39]=K):K=e[39];let A;e[40]!==x||e[41]!==k||e[42]!==t?(A=x?s.jsx(ee,{variant:"outline",disabled:k.isPending,onClick:()=>k.mutate(),children:t("settings.claudeSubscription.disconnect")}):null,e[40]=x,e[41]=k,e[42]=t,e[43]=A):A=e[43];let w;e[44]!==K||e[45]!==A?(w=s.jsxs("div",{className:"flex items-center gap-4",children:[K,A]}),e[44]=K,e[45]=A,e[46]=w):w=e[46];let E;e[47]!==h||e[48]!==x||e[49]!==t||e[50]!==c?(E=x?null:s.jsxs("div",{className:"flex flex-col gap-2",children:[s.jsxs("p",{className:"text-sm text-muted-foreground",children:[t("settings.claudeSubscription.howTo")," ",s.jsx("code",{className:"rounded bg-muted px-1.5 py-0.5 text-xs",children:"claude setup-token"})]}),s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx(ye,{type:"password",value:c,onChange:F=>a(F.target.value),placeholder:t("settings.claudeSubscription.tokenPlaceholder")}),s.jsx(ee,{disabled:c.trim().length===0||h.isPending,onClick:()=>h.mutate(),children:t("settings.claudeSubscription.connect")})]})]}),e[47]=h,e[48]=x,e[49]=t,e[50]=c,e[51]=E):E=e[51];let R;return e[52]!==w||e[53]!==E?(R=s.jsxs("div",{className:"rounded-xl border border-border px-6 py-5 flex flex-col gap-4",children:[w,E]}),e[52]=w,e[53]=E,e[54]=R):R=e[54],R}function is(e){return X.error(e.message)}function ls(e){return X.error(e.message)}function rs(e){const t=J.c(3),{error:i}=e;let o;t[0]===Symbol.for("react.memo_cache_sentinel")?(o=s.jsx(lt,{size:16}),t[0]=o):o=t[0];let n;return t[1]!==i.message?(n=s.jsxs("div",{className:"p-4 rounded-md bg-destructive/10 text-destructive flex items-center gap-2",children:[o,s.jsxs("span",{className:"text-sm font-medium",children:["Failed to load AI providers: ",i.message]})]}),t[1]=i.message,t[2]=n):n=t[2],n}function os(){const e=J.c(27),t=De();let i;e[0]!==t?(i=Zt(t),e[0]=t,e[1]=i):i=e[1];const{hasInventory:o,hasHostedProvider:n,hasDeco:c}=i,[a,l]=W.useState(!1),[u,_]=W.useState(null),b=ze();let r;e[2]!==b?.providers?(r=b?.providers??[],e[2]=b?.providers,e[3]=r):r=e[3];const p=r;if(!n){let N;e[4]===Symbol.for("react.memo_cache_sentinel")?(N=()=>l(!0),e[4]=N):N=e[4];let k;e[5]!==p?(k=s.jsx(pt,{providers:p,onSelect:_,onShowAll:N}),e[5]=p,e[6]=k):k=e[6];const x=u!==null||a;let j;e[7]===Symbol.for("react.memo_cache_sentinel")?(j=K=>{K||(_(null),l(!1))},e[7]=j):j=e[7];const S=u??void 0;let d;e[8]!==x||e[9]!==S?(d=s.jsx(Ee,{open:x,onOpenChange:j,initialProvider:S}),e[8]=x,e[9]=S,e[10]=d):d=e[10];let y;e[11]!==o?(y=o?s.jsx(Me,{onConnectClick:()=>l(!0)}):null,e[11]=o,e[12]=y):y=e[12];let C;return e[13]!==k||e[14]!==d||e[15]!==y?(C=s.jsxs(s.Fragment,{children:[k,d,y]}),e[13]=k,e[14]=d,e[15]=y,e[16]=C):C=e[16],C}let m;e[17]===Symbol.for("react.memo_cache_sentinel")?(m=s.jsx(W.Suspense,{fallback:s.jsx($e,{className:"h-16 w-full"}),children:s.jsx(Ft,{})}),e[17]=m):m=e[17];let f;e[18]!==c?(f=c?s.jsx(Bt,{}):s.jsx(Qt,{}),e[18]=c,e[19]=f):f=e[19];let P;e[20]===Symbol.for("react.memo_cache_sentinel")?(P=s.jsx(ss,{}),e[20]=P):P=e[20];let h;e[21]===Symbol.for("react.memo_cache_sentinel")?(h=s.jsx(Me,{onConnectClick:()=>l(!0)}),e[21]=h):h=e[21];let v;e[22]!==a?(v=s.jsx(Ee,{open:a,onOpenChange:l}),e[22]=a,e[23]=v):v=e[23];let g;return e[24]!==f||e[25]!==v?(g=s.jsxs(s.Fragment,{children:[m,f,P,h,v]}),e[24]=f,e[25]=v,e[26]=g):g=e[26],g}function ns(){const e=J.c(1);let t;return e[0]===Symbol.for("react.memo_cache_sentinel")?(t=s.jsx(it,{group:"billing",errorFallback:as,children:s.jsx(os,{})}),e[0]=t):t=e[0],t}function as(e){const{error:t}=e;return s.jsx(rs,{error:t??new Error("Failed to load AI providers")})}function ui(){const e=J.c(1);let t;return e[0]===Symbol.for("react.memo_cache_sentinel")?(t=s.jsx(wt,{capability:"ai-providers:manage",area:"AI providers",children:s.jsx(ns,{})}),e[0]=t):t=e[0],t}export{ui as default};
@@ -1 +0,0 @@
1
- import{c as o,j as r}from"./index-DIoG5Nzm.js";import{O as m}from"./api-keys-CpAxzi4a.js";import{R as p}from"./require-capability-D-jq44dD.js";import"./AlertCircle-C3LoifMU.js";import"./Copy01-CqZdC3Iz.js";import"./Key01-rPnY8MXp.js";import"./Plus-DuAHW1Gi.js";import"./Trash01-CeiHA_Cf.js";import"./alert-dialog-DD8gmLEV.js";import"./dialog-BIFznZm3.js";import"./input-B3ER89GU.js";import"./label-BCOu20U5.js";import"./use-mcp-client-Da8e-_d8.js";import"./constants-DNuUCxmW.js";import"./auth-CKSU3JsT.js";import"./access-gate-Cq4IMSa2.js";import"./capability-load-error-DIIALIs2.js";function A(){const t=o.c(1);let i;return t[0]===Symbol.for("react.memo_cache_sentinel")?(i=r.jsx(p,{capability:"api-keys:manage",area:"api-keys",children:r.jsx(m,{})}),t[0]=i):i=t[0],i}export{A as default};
@@ -1 +0,0 @@
1
- import{c as jt,b as Bt,r as A,j as o,l as _t,h as wt,t as ht}from"./index-DIoG5Nzm.js";import{b as At}from"./chat-context-DylitU6A.js";import{i as Et}from"./ChevronRight-D1ZP1lTE.js";import{S as Nt}from"./scroll-area-DBm8Zg_x.js";import{u as Rt,A as Tt}from"./use-section-preview-base-OA2RwVZn.js";import{n as Ct,r as Kt,c as Pt,d as Ft,e as Ot,g as Ut,h as $t,S as It,i as zt,j as Lt}from"./index-EEBcPxzK.js";import"./use-panel-navigate-xY92PiXA.js";import"./use-destination-route-BlILx1Gc.js";import"./hooks-Dv3PpADk.js";import"./constants-DNuUCxmW.js";import"./use-mcp-client-Da8e-_d8.js";import"./auth-CKSU3JsT.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./decopilot-sse-pool-Dc_oXr8h.js";import"./task-board-k97eyP2H.js";import"./schema-Dk7DmR5a.js";import"./slugify-CEUa2lfQ.js";import"./use-is-desktop-app-BNujXJc_.js";import"./use-virtual-mcp-BdzzM_-Q.js";import"./use-ai-providers-DL0YRrHe.js";import"./location-oTTXFrSF.js";import"./use-decopilot-events-D2a6ajEJ.js";import"./use-organization-settings-DenVKwFP.js";import"./select-O-Se58mM.js";import"./Check-CRib0DYD.js";import"./ChevronUp-DMr_Wd-m.js";import"./agent-icon-CPE8YyuT.js";import"./AlertCircle-C3LoifMU.js";import"./Tool01-Cfifxqbk.js";import"./ArrowUp-ClAJQium.js";import"./ArrowLeft-B1xlMMf7.js";import"./Tool02-DbxYQXJB.js";import"./XCircle-C8jIOZwA.js";import"./TrendUp01-wKu74L0k.js";import"./ZoomOut-wA1AxiJ4.js";import"./Users03-Et2Iq-LT.js";import"./CheckCircle-CqjXQQar.js";import"./ChevronSelectorVertical-CtALiTfe.js";import"./DotsVertical-Cm1eM3WR.js";import"./UserSquare-BKKMbWcC.js";import"./Copy01-CqZdC3Iz.js";import"./CreditCard01-B_93t25t.js";import"./Download01-DWG0sleJ.js";import"./Settings02-BBjxFEhG.js";import"./Eye-DTZwtLhN.js";import"./Share07-BqnpVx68.js";import"./GitBranch01-CaAHRAAs.js";import"./Globe01-DLIxci_G.js";import"./XClose-Xm8e9o2O.js";import"./HardDrive-Uu4_IDmh.js";import"./Image01-uIGiropd.js";import"./Key01-rPnY8MXp.js";import"./Link01-BR5WsLAe.js";import"./LinkExternal01-DmLtBDzc.js";import"./Monitor01-BdeUVVjA.js";import"./Sun-CN8rCL7E.js";import"./Package-dd8Ej5fp.js";import"./Palette-DeAY5oYq.js";import"./Play-Btz8ch8N.js";import"./Plus-DuAHW1Gi.js";import"./SearchMd-DwtkgExc.js";import"./Shield01-D5teTWzy.js";import"./Stars01-_V6kPVkS.js";import"./Trash01-CeiHA_Cf.js";import"./Upload01-CHJWPT7q.js";import"./User01-BDiBNFRN.js";import"./Users01-DTNX_nQZ.js";import"./Zap-CydiGRzM.js";import"./dialog-BIFznZm3.js";import"./input-B3ER89GU.js";import"./automation-runs-3ggKqNs7.js";import"./useInfiniteQuery-C_Sj0Ine.js";import"./use-infinite-scroll-DwV9LPlS.js";import"./use-connection-1ZElPQlS.js";import"./table-DGED2-oV.js";import"./empty-state-DSmLsgCN.js";import"./use-members-DlyrPYOE.js";import"./use-org-auth-client-BfsZ-M6z.js";import"./use-automations-Ds4HjjM1.js";import"./useSuspenseInfiniteQuery-DjGFzQWy.js";import"./avatar-BS0IyPAV.js";import"./format-time-BnbuEtat.js";import"./differenceInSeconds-NQ4PDo0z.js";import"./use-copy-DwaiWxiT.js";import"./markdown-B1UHHM2w.js";import"./monaco-editor-C35vQ6TU.js";import"./editor-DyArv3FJ.js";import"./types-CFUtvqwZ.js";import"./shell-layout-C_TEKmkm.js";import"./download-app-dialog-BA4Zg8f-.js";import"./project-icon-zQ71aK6_.js";import"./github-repo-COLY3wWI.js";import"./command-DeVA58FJ.js";import"./index-9xpznWaq.js";import"./required-auth-layout-Cb1jXi5Q.js";import"./use-org-sso-J995Ng6-.js";import"./integration-icon-Dhw6uO2L.js";import"./use-navigate-to-agent-EQeauX1Q.js";import"./use-mcp-prompts-CLFow0WP.js";import"./form-CK_lIk7s.js";import"./label-BCOu20U5.js";import"./file-type-icon-CX9ORitn.js";import"./drawer-CtAdPy7J.js";import"./collection-search-DO_p4EqG.js";import"./tabs-qHv1d8oo.js";import"./toggle-group-qR7WwCzn.js";import"./task-route-BERNM1EV.js";import"./toolbar-icon-button-BJozCrFv.js";import"./popover-CMt7ScML.js";import"./github-repo-picker-TX2CWT3P.js";import"./use-debounced-value-BkHp8ZQC.js";import"./authenticate-and-persist-oauth-05_Aj2HR.js";import"./mcp-oauth-3DlwOsvC.js";import"./extract-connection-data-wF3Br-pC.js";import"./metadata-dUsYcpuu.js";import"./connection-CtWb4rTZ.js";import"./provision-repo-scoped-github-connection-WQFARyHG.js";import"./connection-card-sSkeOh9M.js";import"./use-registry-connections-BTqpii1e.js";import"./retry-CErkP7V6.js";import"./connection-slug-CITJ0kGN.js";import"./textarea-BbMVdhTn.js";import"./connection-form-helpers-CjCc6frD.js";import"./collection-tabs-FQDiUPHt.js";import"./badge-CtAQawYl.js";import"./use-file-configs-BfdHEl9C.js";import"./site-slug-uya6Wp4-.js";import"./dropdown-menu-C37VfJ59.js";import"./get-initials-D-f_fDFw.js";import"./select-model-Cd6ICjyE.js";import"./checkbox-BXjIirqE.js";import"./ai-providers-logos-DD3qZ33J.js";import"./folder-icon-BUAMuIJo.js";import"./question-004-sINsf4GQ.js";import"./use-status-sounds-C0H9gTlC.js";import"./toolbar-BPBaAXqU.js";import"./skill-preview-DTwyXcxp.js";import"./pt-BR-CLy76QW2.js";import"./alert-dialog-DD8gmLEV.js";import"./use-debounced-autosave-CrlGGbA0.js";import"./search-input-C33OeTuG.js";import"./use-mcp-auth-status-DeDl63Lc.js";import"./switch-DN6L7pZ8.js";import"./use-secrets-Dn6GUcMj.js";import"./client-icons-D4B8Mz13.js";import"./connect-layout-CZzvRMqx.js";import"./self-tool-result-BhjRI4OY.js";import"./track-CG4JE7lp.js";import"./use-tags-Dj5fhd_Z.js";import"./breadcrumb-BCL2Kwa4.js";import"./safe-image-url-D5z803Ot.js";import"./automation-list-row-DZHqRqWd.js";import"./site-error--i37Vnuw.js";import"./cards-CBsYAM47.js";function Vt(n,t){const s=(n.title||n.resolveType.split("/").pop()||"").replace(/\.(tsx?|jsx?)$/,"").replace(/[^A-Za-z0-9_-]/g,""),i=/^[A-Za-z]/.test(s)&&s.length>0?s:"Section",m=Ct(t,i);return{blockKey:m,data:{__resolveType:n.resolveType,name:m}}}function Ir(n){const t=jt.c(79),{orgSlug:s,virtualMcpId:i,branch:m,blockKey:p,block:x,meta:a,decofile:l,title:bt,excludeFields:Z,schemaPending:lt,previewBaseUrl:ct}=n,D=lt===void 0?!1:lt,H=ct===void 0?null:ct,G=At()?.taskId??null,c=Bt();let N;t[0]!==H||t[1]!==i?(N={virtualMcpId:i,sandboxUrl:H},t[0]=H,t[1]=i,t[2]=N):N=t[2];const h=Rt(N),v=typeof x?.__resolveType=="string"?x.__resolveType:"";let R;t[3]!==Z||t[4]!==a||t[5]!==v?(R=Kt(v,a,Z),t[3]=Z,t[4]=a,t[5]=v,t[6]=R):R=t[6];const b=R;let T;t[7]!==b?(T=!!b&&Object.keys(b.properties??{}).length>0,t[7]=b,t[8]=T):T=t[8];const J=T,dt=bt??(x?Pt(p,x,a):p);let C;t[9]!==m||t[10]!==s||t[11]!==i?(C={orgSlug:s,virtualMcpId:i,branch:m},t[9]=m,t[10]=s,t[11]=i,t[12]=C):C=t[12];const{save:S,flush:Q,isPending:W}=Ft(C);let K;t[13]!==m||t[14]!==s||t[15]!==i?(K={orgSlug:s,virtualMcpId:i,branch:m},t[13]=m,t[14]=s,t[15]=i,t[16]=K):K=t[16];const X=Ot(K);let P;t[17]!==S?(P=zt((e,r)=>S(e,r)),t[17]=S,t[18]=P):P=t[18];const Y=P,[vt,St]=A.useState(p),[tt,ut]=A.useState(null),[et,ft]=A.useState(0);let F;t[19]===Symbol.for("react.memo_cache_sentinel")?(F=[],t[19]=F):F=t[19];const[g,xt]=A.useState(F),[ot,d]=A.useState(!1),O=A.useRef(null);vt!==p&&(St(p),ut(null),ft(Mt),xt([]));let U;t[20]!==x?(U=x??{},t[20]=x,t[21]=U):U=t[21];const rt=U;let y;t[22]!==tt?(y=tt??{},t[22]=tt,t[23]=y):y=t[23];let $;t[24]!==rt||t[25]!==y?($={...rt,...y},t[24]=rt,t[25]=y,t[26]=$):$=t[26];const it=$;let I;t[27]!==p||t[28]!==v||t[29]!==S?(I=e=>{const r=e;ut(r),S(p,{...r,__resolveType:v})},t[27]=p,t[28]=v,t[29]=S,t[30]=I):I=t[30];const st=I;let z;t[31]===Symbol.for("react.memo_cache_sentinel")?(z=e=>{xt(e)},t[31]=z):z=t[31];const E=z;let L;t[32]!==l||t[33]!==Q||t[34]!==X||t[35]!==c?(L=async(e,r)=>{try{const{blockKey:u,data:f}=Vt(e,l);await X.mutateAsync({blockKey:u,data:f}),ht.success(c("sandbox.appEditor.createdSection",{name:u})),r({__resolveType:u}),Q()}catch(u){const f=u,kt=f instanceof Error?f.message:c("sandbox.appEditor.failedAddSection");throw ht.error(kt),f}},t[32]=l,t[33]=Q,t[34]=X,t[35]=c,t[36]=L):L=t[36];const k=L;let V;t[37]!==d?(V=e=>{O.current=e.append,d(!0)},t[37]=d,t[38]=V):V=t[38];const mt=V;let q;t[39]!==k||t[40]!==d?(q=async e=>{const r=O.current;if(r)try{await k(e,u=>{r(u),d(!1),O.current=null})}catch{}},t[39]=k,t[40]=d,t[41]=q):q=t[41];const pt=q,at=g.length>0?[dt,...g]:[],gt="flex h-full flex-col",yt="flex h-12 shrink-0 items-center justify-between border-b px-6",nt=at.length>0?o.jsx("nav",{"aria-label":c("sandbox.appEditor.editingBreadcrumb"),className:"flex min-w-0 flex-1 items-center gap-1 overflow-hidden text-sm",children:at.map((e,r)=>{const u=r===at.length-1,f=Ut(e);return o.jsxs("span",{className:"flex min-w-0 items-center gap-1 overflow-hidden",children:[r>0&&o.jsx(Et,{className:"size-3 shrink-0 text-muted-foreground/60"}),o.jsx("button",{type:"button",onClick:()=>{E(r===0?[]:$t(g,r)),ft(qt)},title:f,className:_t("min-w-0 truncate rounded-md px-1 py-0.5 text-left transition-colors",u?"font-medium text-foreground":"text-muted-foreground hover:bg-accent hover:text-accent-foreground"),children:f})]},`${f}-${r}`)})}):o.jsx("span",{className:"text-sm font-medium",children:dt});let j;t[42]!==W?(j=o.jsx(Lt,{isPending:W,isError:!1}),t[42]=W,t[43]=j):j=t[43];let B;t[44]!==nt||t[45]!==j?(B=o.jsxs("div",{className:yt,children:[nt,j]}),t[44]=nt,t[45]=j,t[46]=B):B=t[46];let _;t[47]!==p||t[48]!==m||t[49]!==g||t[50]!==l||t[51]!==it||t[52]!==et||t[53]!==k||t[54]!==E||t[55]!==st||t[56]!==mt||t[57]!==J||t[58]!==a||t[59]!==s||t[60]!==Y||t[61]!==b||t[62]!==D||t[63]!==h||t[64]!==c||t[65]!==G||t[66]!==i?(_=o.jsx(Nt,{className:"min-h-0 min-w-0 flex-1 [&_[data-slot=scroll-area-viewport]>div]:!block",children:o.jsx("div",{className:"px-6 py-6",children:o.jsx("div",{className:"mx-auto max-w-xl",children:J?o.jsx(It,{schema:b,value:it,onChange:st,basePath:"",breadcrumbPath:g,onBreadcrumbChange:E,decofile:l,meta:a,onSaveReferencedBlock:Y,previewBaseUrl:h,onAddSectionItem:k,onRequestAddSection:mt,sandbox:{orgSlug:s,virtualMcpId:i,branch:m,threadId:G}},`${p}:${et}`):D?o.jsxs("div",{className:"flex flex-col items-center gap-2 py-6 text-center text-xs text-muted-foreground",children:[o.jsx(wt,{className:"size-4"}),c("sandbox.appEditor.loadingSchema")]}):o.jsx("div",{className:"py-6 text-center text-xs text-muted-foreground",children:c("sandbox.appEditor.noEditableSchema")})})})}),t[47]=p,t[48]=m,t[49]=g,t[50]=l,t[51]=it,t[52]=et,t[53]=k,t[54]=E,t[55]=st,t[56]=mt,t[57]=J,t[58]=a,t[59]=s,t[60]=Y,t[61]=b,t[62]=D,t[63]=h,t[64]=c,t[65]=G,t[66]=i,t[67]=_):_=t[67];let w;t[68]!==ot||t[69]!==l||t[70]!==pt||t[71]!==a||t[72]!==h||t[73]!==d?(w=h&&o.jsx(Tt,{open:ot,onOpenChange:e=>{d(e),e||(O.current=null)},meta:a,decofile:l,previewBaseUrl:h,onSelect:e=>{pt(e)}}),t[68]=ot,t[69]=l,t[70]=pt,t[71]=a,t[72]=h,t[73]=d,t[74]=w):w=t[74];let M;return t[75]!==B||t[76]!==_||t[77]!==w?(M=o.jsxs("div",{className:gt,children:[B,_,w]}),t[75]=B,t[76]=_,t[77]=w,t[78]=M):M=t[78],M}function qt(n){return n+1}function Mt(n){return n+1}export{Ir as AppEditor};
@@ -1 +0,0 @@
1
- import{c as B,j as o,b as $,W as D,d as M,r as q,P as d,B as V,o as R}from"./index-DIoG5Nzm.js";import{s as W}from"./Plus-DuAHW1Gi.js";import{i as S}from"./Zap-CydiGRzM.js";import{S as F}from"./search-input-C33OeTuG.js";import{E as T}from"./empty-state-DSmLsgCN.js";import{c as G}from"./use-automations-Ds4HjjM1.js";import{u as H}from"./use-navigate-to-agent-EQeauX1Q.js";import{A as J}from"./automation-list-row-DZHqRqWd.js";import{h as K}from"./constants-DNuUCxmW.js";import{a as O}from"./use-virtual-mcp-BdzzM_-Q.js";import{R as Q}from"./require-capability-D-jq44dD.js";import"./SearchMd-DwtkgExc.js";import"./use-mcp-client-Da8e-_d8.js";import"./auth-CKSU3JsT.js";import"./use-destination-route-BlILx1Gc.js";import"./hooks-Dv3PpADk.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./decopilot-sse-pool-Dc_oXr8h.js";import"./task-board-k97eyP2H.js";import"./schema-Dk7DmR5a.js";import"./chat-context-DylitU6A.js";import"./use-panel-navigate-xY92PiXA.js";import"./slugify-CEUa2lfQ.js";import"./use-is-desktop-app-BNujXJc_.js";import"./use-ai-providers-DL0YRrHe.js";import"./location-oTTXFrSF.js";import"./use-decopilot-events-D2a6ajEJ.js";import"./use-organization-settings-DenVKwFP.js";import"./github-repo-COLY3wWI.js";import"./alert-dialog-DD8gmLEV.js";import"./dropdown-menu-C37VfJ59.js";import"./Check-CRib0DYD.js";import"./ChevronRight-D1ZP1lTE.js";import"./DotsVertical-Cm1eM3WR.js";import"./agent-icon-CPE8YyuT.js";import"./AlertCircle-C3LoifMU.js";import"./Tool01-Cfifxqbk.js";import"./ArrowUp-ClAJQium.js";import"./ArrowLeft-B1xlMMf7.js";import"./Tool02-DbxYQXJB.js";import"./XCircle-C8jIOZwA.js";import"./TrendUp01-wKu74L0k.js";import"./ZoomOut-wA1AxiJ4.js";import"./Users03-Et2Iq-LT.js";import"./CheckCircle-CqjXQQar.js";import"./ChevronUp-DMr_Wd-m.js";import"./ChevronSelectorVertical-CtALiTfe.js";import"./UserSquare-BKKMbWcC.js";import"./Copy01-CqZdC3Iz.js";import"./CreditCard01-B_93t25t.js";import"./Download01-DWG0sleJ.js";import"./Settings02-BBjxFEhG.js";import"./Eye-DTZwtLhN.js";import"./Share07-BqnpVx68.js";import"./GitBranch01-CaAHRAAs.js";import"./Globe01-DLIxci_G.js";import"./XClose-Xm8e9o2O.js";import"./HardDrive-Uu4_IDmh.js";import"./Image01-uIGiropd.js";import"./Key01-rPnY8MXp.js";import"./Link01-BR5WsLAe.js";import"./LinkExternal01-DmLtBDzc.js";import"./Monitor01-BdeUVVjA.js";import"./Sun-CN8rCL7E.js";import"./Package-dd8Ej5fp.js";import"./Palette-DeAY5oYq.js";import"./Play-Btz8ch8N.js";import"./Shield01-D5teTWzy.js";import"./Stars01-_V6kPVkS.js";import"./Trash01-CeiHA_Cf.js";import"./Upload01-CHJWPT7q.js";import"./User01-BDiBNFRN.js";import"./Users01-DTNX_nQZ.js";import"./access-gate-Cq4IMSa2.js";import"./capability-load-error-DIIALIs2.js";function U(){const t=B.c(20),i=$(),{org:l}=D(),{data:C}=G(void 0),g=C===void 0?[]:C,k=O(),P=H(),f=M(),[x,E]=q.useState(""),h=x.toLowerCase(),A=new Map(k.map(X)),b=g.filter(e=>{if(!h||e.name.toLowerCase().includes(h))return!0;if(e.virtual_mcp_id){const p=A.get(e.virtual_mcp_id);if(p&&p.title.toLowerCase().includes(h))return!0}return!1}),z=(e,p)=>{const N=p&&A.has(p)?p:K(l.id);R("automations_list_row_clicked",{automation_id:e,agent_id:N,source:"settings_automations"}),P(N,{panel:`automation:${e}`})};let c;t[0]!==f||t[1]!==l.slug?(c=()=>{R("automations_empty_state_browse_agents_clicked"),f({to:"/$org/settings/agents",params:{org:l.slug}})},t[0]=f,t[1]=l.slug,t[2]=c):c=t[2];const L=c,j=d,v=d,w=d;let s;t[3]!==i?(s=i("settings.automations.pageTitle"),t[3]=i,t[4]=s):s=t[4];let r;t[5]!==s?(r=o.jsx(d.Title,{children:s}),t[5]=s,t[6]=r):r=t[6];const _=g.length>0&&o.jsx(F,{value:x,onChange:E,placeholder:i("settings.automations.searchPlaceholder"),className:"w-full md:w-[375px]"});let m;t[7]!==r||t[8]!==_?(m=o.jsxs("div",{className:"flex flex-col gap-6",children:[r,_]}),t[7]=r,t[8]=_,t[9]=m):m=t[9];const y=g.length===0?o.jsx("div",{className:"flex items-center justify-center py-20",children:o.jsx(T,{image:o.jsx(S,{size:48,className:"text-muted-foreground"}),title:i("settings.automations.emptyTitle"),description:i("settings.automations.emptyDescription"),actions:o.jsxs(V,{size:"sm",onClick:L,children:[o.jsx(W,{size:14}),i("settings.automations.browseAgentsButton")]})})}):b.length===0?o.jsx("div",{className:"flex items-center justify-center py-20",children:o.jsx(T,{image:o.jsx(S,{size:48,className:"text-muted-foreground"}),title:i("settings.automations.noResultsTitle"),description:i("settings.automations.noResultsDescription",{search:x})})}):o.jsx("div",{className:"mt-6 rounded-xl border border-border overflow-hidden",children:b.map(e=>o.jsx(J,{automation:e,showAgent:!0,onClick:()=>z(e.id,e.virtual_mcp_id)},e.id))});let n;t[10]!==w.Body||t[11]!==m||t[12]!==y?(n=o.jsxs(w.Body,{children:[m,y]}),t[10]=w.Body,t[11]=m,t[12]=y,t[13]=n):n=t[13];let a;t[14]!==v.Content||t[15]!==n?(a=o.jsx(v.Content,{children:n}),t[14]=v.Content,t[15]=n,t[16]=a):a=t[16];let u;return t[17]!==j||t[18]!==a?(u=o.jsx(j,{children:a}),t[17]=j,t[18]=a,t[19]=u):u=t[19],u}function X(t){return[t.id,t]}function wo(){const t=B.c(1);let i;return t[0]===Symbol.for("react.memo_cache_sentinel")?(i=o.jsx(Q,{capability:"automations:manage",area:"automations",children:o.jsx(U,{})}),t[0]=i):i=t[0],i}export{wo as default};
@@ -1 +0,0 @@
1
- import{c as X,r as k,l as Y,j as t,b as Z,B as $,h as _,t as H}from"./index-DIoG5Nzm.js";import{b as K}from"./chat-context-DylitU6A.js";import{i as tt}from"./XCircle-C8jIOZwA.js";import{i as U}from"./ZoomOut-wA1AxiJ4.js";import{n as ot}from"./LinkExternal01-DmLtBDzc.js";import{bj as et}from"./agent-icon-CPE8YyuT.js";import{A as rt,a as it,b as st,c as at,d as nt,e as mt,f as lt,g as pt}from"./alert-dialog-DD8gmLEV.js";import{I as W}from"./input-B3ER89GU.js";import{L as M}from"./label-BCOu20U5.js";import{e as ct,v as dt,w as ut,a5 as gt,j as xt,y as A,H as ft,a6 as ht,z as yt}from"./index-EEBcPxzK.js";import{c as bt,B as jt,a as vt}from"./block-document-CjZVKj0w.js";import{u as Et}from"./use-autosave-BUi_34XG.js";import{t as Ct}from"./ChevronUp-DMr_Wd-m.js";import{al as Nt,am as St,an as wt}from"./automation-runs-3ggKqNs7.js";import{s as j,E as kt}from"./primitives-CGvINqkE.js";import"./use-panel-navigate-xY92PiXA.js";import"./use-destination-route-BlILx1Gc.js";import"./hooks-Dv3PpADk.js";import"./constants-DNuUCxmW.js";import"./use-mcp-client-Da8e-_d8.js";import"./auth-CKSU3JsT.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./decopilot-sse-pool-Dc_oXr8h.js";import"./task-board-k97eyP2H.js";import"./schema-Dk7DmR5a.js";import"./slugify-CEUa2lfQ.js";import"./use-is-desktop-app-BNujXJc_.js";import"./use-virtual-mcp-BdzzM_-Q.js";import"./use-ai-providers-DL0YRrHe.js";import"./location-oTTXFrSF.js";import"./use-decopilot-events-D2a6ajEJ.js";import"./use-organization-settings-DenVKwFP.js";import"./AlertCircle-C3LoifMU.js";import"./Tool01-Cfifxqbk.js";import"./ArrowUp-ClAJQium.js";import"./ArrowLeft-B1xlMMf7.js";import"./Tool02-DbxYQXJB.js";import"./TrendUp01-wKu74L0k.js";import"./Users03-Et2Iq-LT.js";import"./CheckCircle-CqjXQQar.js";import"./Check-CRib0DYD.js";import"./ChevronRight-D1ZP1lTE.js";import"./ChevronSelectorVertical-CtALiTfe.js";import"./DotsVertical-Cm1eM3WR.js";import"./UserSquare-BKKMbWcC.js";import"./Copy01-CqZdC3Iz.js";import"./CreditCard01-B_93t25t.js";import"./Download01-DWG0sleJ.js";import"./Settings02-BBjxFEhG.js";import"./Eye-DTZwtLhN.js";import"./Share07-BqnpVx68.js";import"./GitBranch01-CaAHRAAs.js";import"./Globe01-DLIxci_G.js";import"./XClose-Xm8e9o2O.js";import"./HardDrive-Uu4_IDmh.js";import"./Image01-uIGiropd.js";import"./Key01-rPnY8MXp.js";import"./Link01-BR5WsLAe.js";import"./Monitor01-BdeUVVjA.js";import"./Sun-CN8rCL7E.js";import"./Package-dd8Ej5fp.js";import"./Palette-DeAY5oYq.js";import"./Play-Btz8ch8N.js";import"./Plus-DuAHW1Gi.js";import"./SearchMd-DwtkgExc.js";import"./Shield01-D5teTWzy.js";import"./Stars01-_V6kPVkS.js";import"./Trash01-CeiHA_Cf.js";import"./Upload01-CHJWPT7q.js";import"./User01-BDiBNFRN.js";import"./Users01-DTNX_nQZ.js";import"./Zap-CydiGRzM.js";import"./dialog-BIFznZm3.js";import"./drawer-CtAdPy7J.js";import"./collection-search-DO_p4EqG.js";import"./use-mcp-prompts-CLFow0WP.js";import"./shell-layout-C_TEKmkm.js";import"./avatar-BS0IyPAV.js";import"./download-app-dialog-BA4Zg8f-.js";import"./project-icon-zQ71aK6_.js";import"./github-repo-COLY3wWI.js";import"./command-DeVA58FJ.js";import"./index-9xpznWaq.js";import"./required-auth-layout-Cb1jXi5Q.js";import"./use-org-sso-J995Ng6-.js";import"./use-navigate-to-agent-EQeauX1Q.js";import"./form-CK_lIk7s.js";import"./select-O-Se58mM.js";import"./tabs-qHv1d8oo.js";import"./toggle-group-qR7WwCzn.js";import"./task-route-BERNM1EV.js";import"./toolbar-icon-button-BJozCrFv.js";import"./popover-CMt7ScML.js";import"./github-repo-picker-TX2CWT3P.js";import"./use-debounced-value-BkHp8ZQC.js";import"./use-connection-1ZElPQlS.js";import"./authenticate-and-persist-oauth-05_Aj2HR.js";import"./mcp-oauth-3DlwOsvC.js";import"./extract-connection-data-wF3Br-pC.js";import"./metadata-dUsYcpuu.js";import"./connection-CtWb4rTZ.js";import"./provision-repo-scoped-github-connection-WQFARyHG.js";import"./connection-card-sSkeOh9M.js";import"./use-registry-connections-BTqpii1e.js";import"./useInfiniteQuery-C_Sj0Ine.js";import"./use-infinite-scroll-DwV9LPlS.js";import"./retry-CErkP7V6.js";import"./connection-slug-CITJ0kGN.js";import"./integration-icon-Dhw6uO2L.js";import"./textarea-BbMVdhTn.js";import"./connection-form-helpers-CjCc6frD.js";import"./collection-tabs-FQDiUPHt.js";import"./badge-CtAQawYl.js";import"./useSuspenseInfiniteQuery-DjGFzQWy.js";import"./use-file-configs-BfdHEl9C.js";import"./site-slug-uya6Wp4-.js";import"./dropdown-menu-C37VfJ59.js";import"./get-initials-D-f_fDFw.js";import"./select-model-Cd6ICjyE.js";import"./checkbox-BXjIirqE.js";import"./ai-providers-logos-DD3qZ33J.js";import"./folder-icon-BUAMuIJo.js";import"./question-004-sINsf4GQ.js";import"./use-members-DlyrPYOE.js";import"./use-org-auth-client-BfsZ-M6z.js";import"./use-status-sounds-C0H9gTlC.js";import"./empty-state-DSmLsgCN.js";import"./toolbar-BPBaAXqU.js";import"./types-CFUtvqwZ.js";import"./file-type-icon-CX9ORitn.js";import"./skill-preview-DTwyXcxp.js";import"./markdown-B1UHHM2w.js";import"./editor-DyArv3FJ.js";import"./pt-BR-CLy76QW2.js";import"./differenceInSeconds-NQ4PDo0z.js";import"./use-debounced-autosave-CrlGGbA0.js";import"./scroll-area-DBm8Zg_x.js";import"./search-input-C33OeTuG.js";import"./use-mcp-auth-status-DeDl63Lc.js";import"./switch-DN6L7pZ8.js";import"./use-secrets-Dn6GUcMj.js";import"./client-icons-D4B8Mz13.js";import"./format-time-BnbuEtat.js";import"./connect-layout-CZzvRMqx.js";import"./self-tool-result-BhjRI4OY.js";import"./track-CG4JE7lp.js";import"./use-tags-Dj5fhd_Z.js";import"./breadcrumb-BCL2Kwa4.js";import"./use-copy-DwaiWxiT.js";import"./monaco-editor-C35vQ6TU.js";import"./safe-image-url-D5z803Ot.js";import"./use-automations-Ds4HjjM1.js";import"./automation-list-row-DZHqRqWd.js";import"./site-error--i37Vnuw.js";import"./cards-CBsYAM47.js";import"./table-DGED2-oV.js";function Pt(h){const o=X.c(18),{icon:d,title:n,defaultOpen:v,children:u}=h,P=v===void 0?!1:v,[g,D]=k.useState(P);let m;o[0]!==d?(m=t.jsx(d,{size:15}),o[0]=d,o[1]=m):m=o[1];let r;o[2]!==n?(r=t.jsx("span",{className:"flex-1 text-left",children:n}),o[2]=n,o[3]=r):r=o[3];const y=g&&"rotate-180";let s;o[4]!==y?(s=Y("transition-transform",y),o[4]=y,o[5]=s):s=o[5];let l;o[6]!==s?(l=t.jsx(Ct,{size:15,className:s}),o[6]=s,o[7]=l):l=o[7];let p;o[8]!==m||o[9]!==r||o[10]!==l?(p=t.jsx(Nt,{asChild:!0,children:t.jsxs("button",{type:"button",className:"flex w-full items-center gap-2 rounded-md px-2 py-1.5 text-sm font-medium text-muted-foreground transition-colors hover:bg-muted hover:text-foreground cursor-pointer",children:[m,r,l]})}),o[8]=m,o[9]=r,o[10]=l,o[11]=p):p=o[11];let i;o[12]!==u?(i=t.jsx(St,{className:"px-2 pt-4",children:u}),o[12]=u,o[13]=i):i=o[13];let x;return o[14]!==g||o[15]!==p||o[16]!==i?(x=t.jsxs(wt,{open:g,onOpenChange:D,className:"mt-4",children:[p,i]}),o[14]=g,o[15]=p,o[16]=i,o[17]=x):x=o[17],x}function Sr({orgSlug:h,virtualMcpId:o,branch:d,blockKey:n,block:v,decofile:u,meta:P,onManagePosts:g,onOpenPost:D,previewBaseUrl:m}){const r=Z(),y=K()?.taskId??null,s=ct({orgSlug:h,virtualMcpId:o,branch:d}),l=dt({orgSlug:h,virtualMcpId:o,branch:d}),p=ut(v,"categories"),[i,x,q]=Et(p,e=>{s.mutate({blockKey:n,data:A(n,"categories",e)})}),E=(e,w)=>x({...i,[e]:w}),z=bt({decofile:u,category:i,previewBaseUrl:m,draftPointer:l}),a=j(i.slug),[B,b]=k.useState(a),[c,C]=k.useState(null),[N,T]=k.useState(!1),F=a?gt(u).filter(e=>e.categorySlugs.includes(a)):[],S=F.length,G=e=>E("slug",e),J=async(e,w)=>{const V=j(i.name);T(!0);try{let f=0;for(const{key:R,payload:I}of ft(u,"posts")){const L=ht(I,e,{name:V,slug:w});L!==I&&(await s.mutateAsync({blockKey:R,data:A(R,"posts",yt(L))}),f+=1)}const O={...i,slug:w};await s.mutateAsync({blockKey:n,data:A(n,"categories",O)}),q(O),H.success(f>0?r("sandbox.categoryEditor.renameSuccessWithPosts",{count:String(f)}):r("sandbox.categoryEditor.renameSuccessNoPosts")),C(null)}catch(f){b(e),C(null),H.error(f instanceof Error?f.message:r("sandbox.categoryEditor.renameFailed"))}finally{T(!1)}},Q=()=>{const e=B.trim();if(e===a){B!==e&&b(e);return}if(!e){b(a);return}if(S===0){G(e);return}C({oldSlug:a,newSlug:e,count:S})};return t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"flex h-full flex-col",children:[t.jsxs("div",{className:"flex h-12 shrink-0 items-center justify-between border-b px-6",children:[t.jsx("span",{className:"truncate text-sm font-medium",children:j(i.name)||r("sandbox.categoryEditor.untitledCategory")}),t.jsxs("div",{className:"flex shrink-0 items-center gap-3",children:[t.jsx(xt,{isPending:s.isPending,isError:s.isError}),z&&t.jsxs($,{type:"button",variant:"outline",size:"sm",title:r("sandbox.categoryEditor.previewTooltip"),onClick:()=>window.open(z,"_blank","noopener,noreferrer"),children:[t.jsx(ot,{size:14}),r("sandbox.categoryEditor.seeCategoryPreview")]})]})]}),t.jsx("div",{className:"min-w-0 flex-1 overflow-y-auto",children:t.jsxs("div",{className:"mx-auto max-w-4xl px-8 py-8",children:[t.jsx(kt,{value:j(i.name),onChange:e=>E("name",e),placeholder:r("sandbox.categoryEditor.categoryNamePlaceholder"),className:"py-1 text-3xl font-bold text-foreground"}),t.jsxs("div",{className:"mt-4 space-y-2",children:[t.jsx(M,{htmlFor:"category-slug",children:r("sandbox.categoryEditor.slugLabel")}),t.jsx(W,{id:"category-slug",value:B,onChange:e=>b(e.target.value),onBlur:Q,placeholder:r("sandbox.categoryEditor.slugPlaceholder"),className:"h-10"})]}),t.jsxs("div",{className:"mt-4 space-y-2",children:[t.jsx(M,{htmlFor:"category-description",children:r("sandbox.categoryEditor.descriptionLabel")}),t.jsx(W,{id:"category-description",value:j(i.description),onChange:e=>E("description",e.target.value),placeholder:r("sandbox.categoryEditor.descriptionPlaceholder"),className:"h-10"})]}),t.jsx(Pt,{icon:et,title:r("sandbox.categoryEditor.contentTitle"),defaultOpen:!0,children:t.jsx(jt,{value:vt(i.sections),onChange:e=>E("sections",e),meta:P,sandboxRef:{orgSlug:h,virtualMcpId:o,branch:d,threadId:y},emptyMessage:r("sandbox.categoryEditor.noContentEmpty")})}),t.jsxs("div",{className:"mt-6 overflow-hidden rounded-lg border bg-muted/30",children:[t.jsxs("div",{className:"flex items-center justify-between gap-3 px-4 py-3",children:[t.jsxs("div",{className:"flex min-w-0 items-center gap-2",children:[t.jsx(U,{size:16,className:"shrink-0 text-muted-foreground"}),t.jsx("span",{className:"text-sm",children:r("sandbox.categoryEditor.postsInCategory",{count:String(S)})})]}),t.jsxs($,{type:"button",variant:"outline",size:"sm",disabled:!a,title:r(a?"sandbox.categoryEditor.pickPostsTooltip":"sandbox.categoryEditor.setSlugTooltip"),onClick:()=>g(a),children:[r("sandbox.categoryEditor.addPostsButton"),t.jsx(tt,{size:14})]})]}),S>0&&t.jsx("ul",{className:"divide-y border-t bg-background",children:F.map(e=>t.jsx("li",{children:t.jsxs("button",{type:"button",onClick:()=>D(e.key),className:"flex w-full items-center gap-2.5 px-4 py-2.5 text-left transition-colors hover:bg-muted cursor-pointer",children:[t.jsx(U,{size:14,className:"shrink-0 text-muted-foreground"}),t.jsxs("span",{className:"min-w-0 flex-1",children:[t.jsx("span",{className:"block truncate text-sm",children:e.title||r("sandbox.categoryEditor.untitledPost")}),e.slug&&t.jsx("span",{className:"block truncate text-xs text-muted-foreground",children:e.slug})]})]})},e.key))})]})]})})]}),t.jsx(rt,{open:!!c,onOpenChange:e=>{e||N||(b(a),C(null))},children:t.jsxs(it,{children:[t.jsxs(st,{children:[t.jsx(at,{children:r("sandbox.categoryEditor.renameDialogTitle")}),t.jsx(nt,{children:c?r("sandbox.categoryEditor.renameDialogDescription",{oldSlug:c.oldSlug,newSlug:c.newSlug,count:String(c.count)}):null})]}),t.jsxs(mt,{children:[t.jsx(lt,{disabled:N,children:r("sandbox.categoryEditor.cancelButton")}),t.jsx(pt,{onClick:e=>{e.preventDefault(),c&&J(c.oldSlug,c.newSlug)},disabled:N,children:N?t.jsxs(t.Fragment,{children:[t.jsx(_,{className:"size-3.5"}),r("sandbox.categoryEditor.renamingLabel")]}):r("sandbox.categoryEditor.renameActionButton")})]})]})})]})}export{Sr as CategoryEditor};