decocms 4.319.1 → 4.319.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (247) hide show
  1. package/dist/client/assets/{AlertCircle-CvTl8GUk.js → AlertCircle-D9xToIMB.js} +1 -1
  2. package/dist/client/assets/{AreaChart-DJSypADj.js → AreaChart-CxkPRYZA.js} +1 -1
  3. package/dist/client/assets/{ArrowLeft-En4cxPnP.js → ArrowLeft-BjMncG6U.js} +1 -1
  4. package/dist/client/assets/{ArrowUp-D8TsT0Lm.js → ArrowUp-CrGAU3G2.js} +1 -1
  5. package/dist/client/assets/{Check-DSjqiSlI.js → Check-DrJ5WDdf.js} +1 -1
  6. package/dist/client/assets/{CheckCircle-D6G-NhwM.js → CheckCircle-waoO5z0g.js} +1 -1
  7. package/dist/client/assets/{ChevronDown-DhjGSQsl.js → ChevronDown-BsHyJSwB.js} +1 -1
  8. package/dist/client/assets/{ChevronRight-CFq-xjDr.js → ChevronRight-6fJEb030.js} +1 -1
  9. package/dist/client/assets/{ChevronSelectorVertical-BE4HzvdJ.js → ChevronSelectorVertical-BtjD2Krx.js} +1 -1
  10. package/dist/client/assets/{ChevronUp-B8O2JP9t.js → ChevronUp-CCrhZnmK.js} +1 -1
  11. package/dist/client/assets/{Copy01-DFbLtEE_.js → Copy01-CUcc1rT7.js} +1 -1
  12. package/dist/client/assets/{CreditCard01-BedV58xE.js → CreditCard01-Lvg_l2cC.js} +1 -1
  13. package/dist/client/assets/{DotsVertical-D9HzRd7W.js → DotsVertical-D-G3pLTC.js} +1 -1
  14. package/dist/client/assets/{Download01-fMmULFBI.js → Download01-CHg3oeOm.js} +1 -1
  15. package/dist/client/assets/{ErrorBarContext-CVm5cqF_.js → ErrorBarContext-Byj5YBDV.js} +1 -1
  16. package/dist/client/assets/{Eye-Dsgi67Qs.js → Eye-D7CF9t7J.js} +1 -1
  17. package/dist/client/assets/{FilterLines-_6k9yUOL.js → FilterLines-tHfmLV3o.js} +1 -1
  18. package/dist/client/assets/{GitBranch01-DtCvW7mH.js → GitBranch01-cVkQTFYe.js} +1 -1
  19. package/dist/client/assets/{Globe01-CpbZ1qSV.js → Globe01-fsAll_5J.js} +1 -1
  20. package/dist/client/assets/{Globe04-sA6q1ulU.js → Globe04-iZWncuvw.js} +1 -1
  21. package/dist/client/assets/{HardDrive-jZCTSG6y.js → HardDrive-DWD1AAge.js} +1 -1
  22. package/dist/client/assets/{Image01-QhTk0EJi.js → Image01-BuDmuyt4.js} +1 -1
  23. package/dist/client/assets/{Key01-DI1s7GXT.js → Key01-NqAAYAzO.js} +1 -1
  24. package/dist/client/assets/{LinkExternal01-BZQeEyC_.js → LinkExternal01-CnH1drDd.js} +1 -1
  25. package/dist/client/assets/{LockUnlocked01-D6aTu88G.js → LockUnlocked01-Dy39VZD5.js} +1 -1
  26. package/dist/client/assets/{LogOut01-C-Z_9N06.js → LogOut01-CepTDjIg.js} +1 -1
  27. package/dist/client/assets/{Monitor01-CKGo6W4T.js → Monitor01-DuJsYKiY.js} +1 -1
  28. package/dist/client/assets/{Package-GAQe_Wih.js → Package-CYdI6izf.js} +1 -1
  29. package/dist/client/assets/{Palette-wN0ma8Xt.js → Palette-gW-UafNV.js} +1 -1
  30. package/dist/client/assets/{Play-C9_Cyluj.js → Play-D9HObFa4.js} +1 -1
  31. package/dist/client/assets/{Plus-C1-Ar8V6.js → Plus-DBZfXSlG.js} +1 -1
  32. package/dist/client/assets/{SearchLg-C6D1oQXi.js → SearchLg-W2Sns64K.js} +1 -1
  33. package/dist/client/assets/{SearchMd-Cbw_793f.js → SearchMd-ohuS85CT.js} +1 -1
  34. package/dist/client/assets/{Sector-Bf-Qay5j.js → Sector-Bg-HDvfD.js} +1 -1
  35. package/dist/client/assets/{Settings02-vjLIHGa1.js → Settings02-DmnWdsnV.js} +1 -1
  36. package/dist/client/assets/{Share07-C1Uf7qgT.js → Share07-DbERY_pc.js} +1 -1
  37. package/dist/client/assets/{Shield01-Ce5yG-A0.js → Shield01-QpK6G-Gm.js} +1 -1
  38. package/dist/client/assets/{Stars01-DrMQPFwe.js → Stars01-YS6onfeZ.js} +1 -1
  39. package/dist/client/assets/{Stars02-CNJhdHZL.js → Stars02-r7zSgG8J.js} +1 -1
  40. package/dist/client/assets/{Sun-C_FOMwDI.js → Sun-1VzmYVaz.js} +1 -1
  41. package/dist/client/assets/{SwitchHorizontal01-CVGPFZX2.js → SwitchHorizontal01-Du4rbjq3.js} +1 -1
  42. package/dist/client/assets/{Tool01-FZuiStzo.js → Tool01-CCBlQ0Zq.js} +1 -1
  43. package/dist/client/assets/{Tool02-4ay4Rltz.js → Tool02-Bgo46UaV.js} +1 -1
  44. package/dist/client/assets/{Trash01-B6uMSqgT.js → Trash01-6BnXuuT1.js} +1 -1
  45. package/dist/client/assets/{TrendUp01-BlXVhMez.js → TrendUp01-8KB74JpW.js} +1 -1
  46. package/dist/client/assets/{Upload01-ILgL8mQU.js → Upload01-B9Jn6SFL.js} +1 -1
  47. package/dist/client/assets/{User01-BP-jVp5a.js → User01-DPbWRvQH.js} +1 -1
  48. package/dist/client/assets/{UserSquare-Ci10BLiP.js → UserSquare-CIzmAXPF.js} +1 -1
  49. package/dist/client/assets/{Users01-7X-sDRIV.js → Users01-BVp8PWY9.js} +1 -1
  50. package/dist/client/assets/{Users03-DoYa8GlE.js → Users03-Cwe_MBwk.js} +1 -1
  51. package/dist/client/assets/{XCircle-fDpSGJss.js → XCircle-DET_WiPa.js} +1 -1
  52. package/dist/client/assets/{XClose-Bk3zrAvS.js → XClose-BXQKrstX.js} +1 -1
  53. package/dist/client/assets/{YAxis-JqlW1pzJ.js → YAxis-PomXVlSd.js} +1 -1
  54. package/dist/client/assets/{Zap-CWUKEmdj.js → Zap-BqvTeTTF.js} +1 -1
  55. package/dist/client/assets/{ZapSquare-CuLB3vSB.js → ZapSquare-CKJZ8MMK.js} +1 -1
  56. package/dist/client/assets/{ZoomOut-DBEFR5j8.js → ZoomOut-DEARxChf.js} +1 -1
  57. package/dist/client/assets/{access-gate-R7rS3NRc.js → access-gate-CAnPAIdH.js} +1 -1
  58. package/dist/client/assets/{agent-icon-XAlp8Jca.js → agent-icon-B7KCMUKT.js} +1 -1
  59. package/dist/client/assets/{agents-list-DJDHQl_p.js → agents-list-BsLY-OrZ.js} +1 -1
  60. package/dist/client/assets/{ai-providers-ovKzvoUf.js → ai-providers-CzMAl3al.js} +1 -1
  61. package/dist/client/assets/{alert-B_ty8fFy.js → alert-B-kSlW5B.js} +1 -1
  62. package/dist/client/assets/{alert-dialog-DaZn9Nvz.js → alert-dialog-BX_76dkp.js} +1 -1
  63. package/dist/client/assets/{analytics-tab-_iyzvtNR.js → analytics-tab-C-jyBHy-.js} +1 -1
  64. package/dist/client/assets/{api-keys-Bb9QXkN-.js → api-keys-BT-Q2Njw.js} +1 -1
  65. package/dist/client/assets/{app-editor-DNjE3Tws.js → app-editor-5gg5JYa_.js} +1 -1
  66. package/dist/client/assets/{auth-u2nXBxlp.js → auth-7vEypH_C.js} +1 -1
  67. package/dist/client/assets/{auth-catchall-Cz340bxQ.js → auth-catchall-DcnRS6UR.js} +1 -1
  68. package/dist/client/assets/{auth-entry-Db8RbPsZ.js → auth-entry-DxGAUUiT.js} +1 -1
  69. package/dist/client/assets/{auth-split-layout-DM1xIRfw.js → auth-split-layout-CK5SZyA4.js} +1 -1
  70. package/dist/client/assets/{authenticate-and-persist-oauth-BIKOg1Y0.js → authenticate-and-persist-oauth-DmV864sJ.js} +1 -1
  71. package/dist/client/assets/{automation-list-row-B2rpCbUW.js → automation-list-row-C3SkObA3.js} +1 -1
  72. package/dist/client/assets/{automation-runs-CEP_ybkW.js → automation-runs-BRlHTbJm.js} +1 -1
  73. package/dist/client/assets/automations-qVdHEF5m.js +1 -0
  74. package/dist/client/assets/{avatar-BbSi4Ahi.js → avatar-C68r2IKR.js} +1 -1
  75. package/dist/client/assets/{badge-uxylkj2W.js → badge-PMvZlcsL.js} +1 -1
  76. package/dist/client/assets/{block-document-2dSaUuES.js → block-document-t85_nrmf.js} +1 -1
  77. package/dist/client/assets/{breadcrumb-ClZlgUkn.js → breadcrumb-CNiJbftU.js} +1 -1
  78. package/dist/client/assets/{buckets-C1McOmnw.js → buckets-CV02urs5.js} +1 -1
  79. package/dist/client/assets/{bulk-category-panel-cHla35pG.js → bulk-category-panel-CXC2ADm8.js} +1 -1
  80. package/dist/client/assets/{capability-load-error-C_sjvMSo.js → capability-load-error-B0FOp6ZJ.js} +1 -1
  81. package/dist/client/assets/{cards-CImABGVq.js → cards-DBV_vuEJ.js} +1 -1
  82. package/dist/client/assets/{category-editor-D98MjsDA.js → category-editor-BZFOv_At.js} +1 -1
  83. package/dist/client/assets/{cdn-tab-JA-Kz5p8.js → cdn-tab-CCweLl8k.js} +1 -1
  84. package/dist/client/assets/{chart-GkhxWJ7A.js → chart-CV1nYiMO.js} +1 -1
  85. package/dist/client/assets/{chat-context-BmrkHxvs.js → chat-context-Zn18Z3ax.js} +1 -1
  86. package/dist/client/assets/{checkbox-BBMI6E1M.js → checkbox-Bq0DvC7H.js} +1 -1
  87. package/dist/client/assets/{choose-editor-Bc3VbNpZ.js → choose-editor-pnS7Oq3J.js} +1 -1
  88. package/dist/client/assets/{cli-auth-success-BXpopNQp.js → cli-auth-success-psqbnXT9.js} +1 -1
  89. package/dist/client/assets/{collection-detail-CUg20CSh.js → collection-detail-2d3bTI3G.js} +1 -1
  90. package/dist/client/assets/{collection-display-button-3azPhvCh.js → collection-display-button-CExej5ZS.js} +1 -1
  91. package/dist/client/assets/{collection-search-CMowvqDA.js → collection-search-CCxZPf1G.js} +1 -1
  92. package/dist/client/assets/{collection-table-wrapper-C__SydZ0.js → collection-table-wrapper-C_waHWeW.js} +1 -1
  93. package/dist/client/assets/{collection-tabs-CuiCeffA.js → collection-tabs-CI3Rpip3.js} +1 -1
  94. package/dist/client/assets/{command-BDxbk6Rw.js → command-Bi7-0rva.js} +1 -1
  95. package/dist/client/assets/{commerce-onboarding-CU85ItiC.js → commerce-onboarding-DcRSodo7.js} +1 -1
  96. package/dist/client/assets/{config-BzzgD7df.js → config-CqVzIvRg.js} +1 -1
  97. package/dist/client/assets/{connect-Cyogzaom.js → connect-xC594bA5.js} +1 -1
  98. package/dist/client/assets/{connection-DsGtWkhk.js → connection-CHkAUVu6.js} +1 -1
  99. package/dist/client/assets/{connection-card-zpHiniPN.js → connection-card-8FPfJwxj.js} +1 -1
  100. package/dist/client/assets/{connection-detail-CWttNhAC.js → connection-detail-BCSxeAui.js} +1 -1
  101. package/dist/client/assets/{connection-form-helpers-ic8oRIkL.js → connection-form-helpers-leEWaGzs.js} +1 -1
  102. package/dist/client/assets/{connections-B_nL0W0U.js → connections-CbkuNYMp.js} +1 -1
  103. package/dist/client/assets/{decopilot-sse-pool-BRSPyUN1.js → decopilot-sse-pool-DQeLKSQU.js} +1 -1
  104. package/dist/client/assets/{dialog-DTBCjL3p.js → dialog-RnHnbV2_.js} +1 -1
  105. package/dist/client/assets/{domain-settings-COCrk0x3.js → domain-settings-C1MzNkZ3.js} +1 -1
  106. package/dist/client/assets/{drawer-RsO7C1I2.js → drawer-BF4YBqbu.js} +1 -1
  107. package/dist/client/assets/{dropdown-menu-FLYHHrdp.js → dropdown-menu-CcSRV6X6.js} +1 -1
  108. package/dist/client/assets/{e2e-tab-PaXKH9Cw.js → e2e-tab-BnvxibR_.js} +1 -1
  109. package/dist/client/assets/{editor-B1qIIE_V.js → editor-DOrxdGH1.js} +1 -1
  110. package/dist/client/assets/{empty-state-DKcBij1q.js → empty-state-CnB1NOOy.js} +1 -1
  111. package/dist/client/assets/{empty-state-tnyEwnqd.js → empty-state-DBQAydU_.js} +1 -1
  112. package/dist/client/assets/{extract-connection-data-TCmhOKLZ.js → extract-connection-data-CCWg7dLs.js} +1 -1
  113. package/dist/client/assets/{file-explorer-BTlDwvay.js → file-explorer-DxEj1-uh.js} +1 -1
  114. package/dist/client/assets/{file-type-icon-CEM_VOCL.js → file-type-icon-D3H2SAiO.js} +1 -1
  115. package/dist/client/assets/{folder-icon-DcobLOu-.js → folder-icon-CEkJkTKM.js} +1 -1
  116. package/dist/client/assets/{form-BD0h205i.js → form-B6rNtu5n.js} +1 -1
  117. package/dist/client/assets/{general-DULiHd3G.js → general-DQG7bfIk.js} +1 -1
  118. package/dist/client/assets/{github-repo-picker-Bk4yNfvo.js → github-repo-picker-Cj0tedJk.js} +1 -1
  119. package/dist/client/assets/{hooks-D5T_ngz5.js → hooks-CW9tPvKI.js} +1 -1
  120. package/dist/client/assets/{hosting-tab-AlW6z3Ts.js → hosting-tab-BWz1Rifu.js} +1 -1
  121. package/dist/client/assets/{index-DzWX3Cp7.js → index-B1nt3Xdg.js} +3 -3
  122. package/dist/client/assets/{index-B4wbJl2-.js → index-B7UTyiz1.js} +1 -1
  123. package/dist/client/assets/{index-CNT7bMK2.js → index-BY6Y74a-.js} +1 -1
  124. package/dist/client/assets/{index-CUbU69yL.js → index-Bh7YQlM-.js} +6 -6
  125. package/dist/client/assets/{index-hfWuXEpo.js → index-CX217zO_.js} +1 -1
  126. package/dist/client/assets/{index-Pso9Jce7.js → index-CcFQdqTB.js} +1 -1
  127. package/dist/client/assets/{index-BO-tSOuS.js → index-DBkSX1EH.js} +1 -1
  128. package/dist/client/assets/{index-CljteriX.js → index-De3PwXta.js} +1 -1
  129. package/dist/client/assets/{index-L0M-Tq0q.js → index-Y3J6_aX3.js} +1 -1
  130. package/dist/client/assets/{index-redirect-CQGI1LqZ.js → index-redirect-BdxnsoLD.js} +1 -1
  131. package/dist/client/assets/{infra-billing-B9ehXqR3.js → infra-billing-De-zJaVt.js} +1 -1
  132. package/dist/client/assets/{input-CeihZKzh.js → input-AdYfWDmT.js} +1 -1
  133. package/dist/client/assets/{integration-icon-BoEQOkUl.js → integration-icon-YJyRf5_z.js} +1 -1
  134. package/dist/client/assets/{invite-member-dialog-DvQQSsRa.js → invite-member-dialog-IekHsbTT.js} +1 -1
  135. package/dist/client/assets/{label-CSACuw4I.js → label-4zu9GnvJ.js} +1 -1
  136. package/dist/client/assets/{layout-BsnmkJl7.js → layout-D2Og4zyW.js} +1 -1
  137. package/dist/client/assets/{login-Ci_HosYv.js → login-DHpeps8b.js} +1 -1
  138. package/dist/client/assets/{markdown-CC0DcQj5.js → markdown-BGpHEHgs.js} +1 -1
  139. package/dist/client/assets/{mcp-oauth-BtBczYS0.js → mcp-oauth-Bo0lMjNG.js} +1 -1
  140. package/dist/client/assets/{members-9AKRU2nz.js → members-BbL_rO2A.js} +1 -1
  141. package/dist/client/assets/{monaco-editor-D2SIw1Et.js → monaco-editor-CNVDinF9.js} +1 -1
  142. package/dist/client/assets/{monitoring-stats-row-DTQH8sNd.js → monitoring-stats-row-D3Yva9xu.js} +1 -1
  143. package/dist/client/assets/{multi-select-DxWXmPWH.js → multi-select-DZWacpH9.js} +1 -1
  144. package/dist/client/assets/{oauth-callback-paI3XED5.js → oauth-callback-DMR_8NzV.js} +1 -1
  145. package/dist/client/assets/{oauth-callback-ai-provider-BUZWpy0b.js → oauth-callback-ai-provider-pclp7BS9.js} +1 -1
  146. package/dist/client/assets/{onboarding-DhjYcdmw.js → onboarding-B7tzD_wv.js} +1 -1
  147. package/dist/client/assets/{org-layout-C1xAd8Q3.js → org-layout-BcgRtVYv.js} +1 -1
  148. package/dist/client/assets/{organization-choice-MfVQ1OYv.js → organization-choice-ChXQyt1W.js} +1 -1
  149. package/dist/client/assets/{orgs-D_fEEc2L.js → orgs-MgLRr29s.js} +1 -1
  150. package/dist/client/assets/{page-seo-form-DRkzT-Ul.js → page-seo-form-ZRPTbq0Y.js} +1 -1
  151. package/dist/client/assets/{popover-VOQv4Dwp.js → popover-d5pnR-7w.js} +1 -1
  152. package/dist/client/assets/{post-calendar-D5IWrV90.js → post-calendar-D-wwbyry.js} +1 -1
  153. package/dist/client/assets/{post-editor-B5MVT2nZ.js → post-editor-C8lc6qEV.js} +1 -1
  154. package/dist/client/assets/{primitives-D6jSNUFx.js → primitives-Bps96uJM.js} +1 -1
  155. package/dist/client/assets/{profile-KluKzf4t.js → profile-DiMlv_H2.js} +1 -1
  156. package/dist/client/assets/{project-app-view-B-jIEdf5.js → project-app-view-CUt_liAa.js} +1 -1
  157. package/dist/client/assets/{prompts-CrPIhdaR.js → prompts-D2Mgo7FE.js} +1 -1
  158. package/dist/client/assets/record-editor-DOFAihnC.js +1 -0
  159. package/dist/client/assets/{redirect-editor-Bijres5C.js → redirect-editor-DNwDB1vG.js} +1 -1
  160. package/dist/client/assets/registry-DifJku7O.js +2 -0
  161. package/dist/client/assets/{registry-layout-_CAlX2VJ.js → registry-layout-birBFMDD.js} +1 -1
  162. package/dist/client/assets/{reports-AmEF8q2O.js → reports-mijRGZeE.js} +1 -1
  163. package/dist/client/assets/{require-capability-DJ721q13.js → require-capability-CupXunWP.js} +1 -1
  164. package/dist/client/assets/{required-auth-layout-ByPgJ6gr.js → required-auth-layout-C_aaKZ8h.js} +1 -1
  165. package/dist/client/assets/{reset-password-DSdZQfIo.js → reset-password-C8o9h2HB.js} +1 -1
  166. package/dist/client/assets/{review-settings-ByCcJhQ1.js → review-settings-BUXLiYmT.js} +1 -1
  167. package/dist/client/assets/{roles-Cb7b2DDM.js → roles-npiwCAmS.js} +1 -1
  168. package/dist/client/assets/{schema-D8AYNAy-.js → schema-t2BCCSG_.js} +1 -1
  169. package/dist/client/assets/{scroll-area-B1JJpr8q.js → scroll-area-B65aUbeU.js} +1 -1
  170. package/dist/client/assets/{search-input-CXLNkNlg.js → search-input-B8CD4GuP.js} +1 -1
  171. package/dist/client/assets/{secrets-Ca2KPdh8.js → secrets-C6sHJALS.js} +1 -1
  172. package/dist/client/assets/{sections-editor-CNhE5pkV.js → sections-editor-BslE1_a0.js} +1 -1
  173. package/dist/client/assets/{select-BmVeV1Oo.js → select-BPrUFCUH.js} +1 -1
  174. package/dist/client/assets/{select-model-DkVH4gVC.js → select-model-tWr3AELq.js} +1 -1
  175. package/dist/client/assets/{self-tool-result-B86OvIYq.js → self-tool-result-CFOjIdNd.js} +1 -1
  176. package/dist/client/assets/{seo-editor-5tJg1G9U.js → seo-editor-91mKoEGU.js} +1 -1
  177. package/dist/client/assets/{settings-layout-CAPV6Q6Z.js → settings-layout-B82LAkUC.js} +1 -1
  178. package/dist/client/assets/{shell-controls-Cpo2ou-z.js → shell-controls-WnpG5EUP.js} +1 -1
  179. package/dist/client/assets/{shell-layout-DRlxyJgc.js → shell-layout-Br2i63X9.js} +1 -1
  180. package/dist/client/assets/{skill-preview-BX5g9fdR.js → skill-preview-CdOTeq68.js} +1 -1
  181. package/dist/client/assets/{skills-DBsfZCk9.js → skills-D-6GjN0l.js} +1 -1
  182. package/dist/client/assets/{spinner-C4CawlPH.js → spinner-qaRZoI-h.js} +1 -1
  183. package/dist/client/assets/{sso-CISXL3nq.js → sso-CVzxB6QV.js} +1 -1
  184. package/dist/client/assets/{store-j8ILUeQ1.js → store-Chd7Y-fP.js} +1 -1
  185. package/dist/client/assets/store-registry-DeONfXCw.js +2 -0
  186. package/dist/client/assets/{super-agent-icon-BgHgBnGI.js → super-agent-icon-0ovU2hoU.js} +1 -1
  187. package/dist/client/assets/{switch-Bjx8pCq6.js → switch-CQSBTLyw.js} +1 -1
  188. package/dist/client/assets/{synced-repos-p7vjIRrV.js → synced-repos-D_5GK1W1.js} +1 -1
  189. package/dist/client/assets/{table-CH6JgQ5S.js → table-BvVnzPED.js} +1 -1
  190. package/dist/client/assets/{tabs-CQgkEoZ3.js → tabs-BQt0J04y.js} +1 -1
  191. package/dist/client/assets/{task-board-5gg33Ohs.js → task-board-BkvpnY9-.js} +1 -1
  192. package/dist/client/assets/{tasks-D60a-Odp.js → tasks-Dfa_uAGS.js} +1 -1
  193. package/dist/client/assets/{textarea-9Rz3z4Fn.js → textarea-CV-ocC88.js} +1 -1
  194. package/dist/client/assets/{thread-route-DeHkzwDt.js → thread-route-DN2Q30L2.js} +1 -1
  195. package/dist/client/assets/{toggle-group-ZsqxhHJY.js → toggle-group-UoWQ_AtK.js} +1 -1
  196. package/dist/client/assets/{toolbar-CElQJFOW.js → toolbar-D-0oFxmT.js} +1 -1
  197. package/dist/client/assets/{track-Bm2TIrkx.js → track-Cub3Lb2y.js} +1 -1
  198. package/dist/client/assets/{types-DQk9hRll.js → types-BTwf5TlH.js} +1 -1
  199. package/dist/client/assets/{use-ai-providers-aLNvcjYm.js → use-ai-providers-Cn2yDSye.js} +1 -1
  200. package/dist/client/assets/{use-api-keys-UXPEqfgx.js → use-api-keys-D6gaGAjx.js} +1 -1
  201. package/dist/client/assets/{use-automations-CFWyNfS1.js → use-automations-iQEkQijk.js} +1 -1
  202. package/dist/client/assets/{use-autosave-Dq4geAJo.js → use-autosave-DadYZ6sr.js} +1 -1
  203. package/dist/client/assets/{use-connection-VZ53ErwX.js → use-connection-DcqZj-F6.js} +1 -1
  204. package/dist/client/assets/{use-copy-CG3mMOGM.js → use-copy-CITJlsiy.js} +1 -1
  205. package/dist/client/assets/{use-create-virtual-mcp-DFwltqic.js → use-create-virtual-mcp-Ih6DOo09.js} +1 -1
  206. package/dist/client/assets/{use-debounced-autosave-C5UaQZ0N.js → use-debounced-autosave-Btd2LOd8.js} +1 -1
  207. package/dist/client/assets/{use-debounced-value-CbZNeTWE.js → use-debounced-value-BxU7i6-p.js} +1 -1
  208. package/dist/client/assets/{use-decopilot-events-DjOPFnW5.js → use-decopilot-events-DuC0EbuZ.js} +1 -1
  209. package/dist/client/assets/{use-delete-connection-D_vjQVZS.js → use-delete-connection-DFHWsi9k.js} +1 -1
  210. package/dist/client/assets/{use-deployment-admin-BDwdk9i9.js → use-deployment-admin-BjOMAAY-.js} +1 -1
  211. package/dist/client/assets/{use-destination-route-5ohWT7Qh.js → use-destination-route-Bwq_DPii.js} +1 -1
  212. package/dist/client/assets/{use-file-configs-CsmxRybV.js → use-file-configs-B9XSPn7m.js} +1 -1
  213. package/dist/client/assets/{use-infinite-scroll-BlsiddiC.js → use-infinite-scroll-C2jw4kdn.js} +1 -1
  214. package/dist/client/assets/{use-join-requests-BGqw0ibm.js → use-join-requests-CKexvxjN.js} +1 -1
  215. package/dist/client/assets/{use-mcp-auth-status-BMecBA5H.js → use-mcp-auth-status-B6vKC19j.js} +1 -1
  216. package/dist/client/assets/{use-mcp-client-BSJVCOyq.js → use-mcp-client-DutrBTnT.js} +1 -1
  217. package/dist/client/assets/{use-mcp-tools-Cfilxpil.js → use-mcp-tools-DzgtLEIJ.js} +1 -1
  218. package/dist/client/assets/{use-members-j7jWCFsT.js → use-members-DbV9xmyX.js} +1 -1
  219. package/dist/client/assets/{use-navigate-to-agent-q-tSB2RT.js → use-navigate-to-agent-CcVU_Ryk.js} +1 -1
  220. package/dist/client/assets/{use-org-auth-client-ByKmCPrY.js → use-org-auth-client-B6iUTUcY.js} +1 -1
  221. package/dist/client/assets/{use-org-repo-syncs-C0jcZ4_s.js → use-org-repo-syncs-EJuBIpSm.js} +1 -1
  222. package/dist/client/assets/{use-org-sso-DQw6J9tz.js → use-org-sso-QzYNJ2_E.js} +1 -1
  223. package/dist/client/assets/{use-organization-roles-CGewgr2G.js → use-organization-roles-CJUZNmDU.js} +1 -1
  224. package/dist/client/assets/{use-organization-settings-MqNQsyj4.js → use-organization-settings-BKp-wao-.js} +1 -1
  225. package/dist/client/assets/{use-panel-navigate-DgzMtV_g.js → use-panel-navigate-Hc2laixt.js} +1 -1
  226. package/dist/client/assets/{use-registry-connections-eAaDtKjz.js → use-registry-connections-DoFwJATj.js} +1 -1
  227. package/dist/client/assets/{use-secrets-L2RIZChP.js → use-secrets-ZK76w5qn.js} +1 -1
  228. package/dist/client/assets/{use-section-preview-base-D4Uenzpk.js → use-section-preview-base-CcgeQUfT.js} +1 -1
  229. package/dist/client/assets/{use-status-sounds-BEnPvRlF.js → use-status-sounds-DFquzdaG.js} +1 -1
  230. package/dist/client/assets/{use-tags-DtZPkyN3.js → use-tags-BBJMCH1R.js} +1 -1
  231. package/dist/client/assets/{use-view-mode-Co0Tc3Mm.js → use-view-mode-BmofvN5B.js} +1 -1
  232. package/dist/client/assets/{use-virtual-mcp-rD7iTKaS.js → use-virtual-mcp-RRdOWPQj.js} +1 -1
  233. package/dist/client/assets/useInfiniteQuery-DWm9g10K.js +1 -0
  234. package/dist/client/assets/useSuspenseInfiniteQuery-DT-LGN37.js +1 -0
  235. package/dist/client/assets/{users-DzAbrtJN.js → users-BUfRCBZX.js} +1 -1
  236. package/dist/client/assets/{variant-calendar-KXgZBkDT.js → variant-calendar-BH8j4l6C.js} +1 -1
  237. package/dist/client/assets/{view-mode-toggle-C51uvdGs.js → view-mode-toggle-Cc_85Q-g.js} +1 -1
  238. package/dist/client/index.html +1 -1
  239. package/dist/server/cli.js +1 -1
  240. package/dist/server/server.js +1 -1
  241. package/package.json +1 -1
  242. package/dist/client/assets/automations-B5H5aosp.js +0 -1
  243. package/dist/client/assets/record-editor-BHDcqWBQ.js +0 -1
  244. package/dist/client/assets/registry-B651gXvI.js +0 -2
  245. package/dist/client/assets/store-registry-CZfZeq46.js +0 -2
  246. package/dist/client/assets/useInfiniteQuery-Dq0Mnrq6.js +0 -1
  247. package/dist/client/assets/useSuspenseInfiniteQuery-Cohw3A6l.js +0 -1
@@ -2981,7 +2981,7 @@ Respond with ONLY a JSON object of this shape, and nothing else:
2981
2981
  ${G.join(`
2982
2982
  `)}`:Y}function iB6($){let Z=new Set;for(let X of $)for(let Q of X.split(`
2983
2983
  `)){let Y=Q.trim();if(/^Co-authored-by:\s/i.test(Y))Z.add(Y)}return[...Z]}var Gm$=200,bB6=12,yB6,hB6=300,LX1=3;var wX1=D(()=>{QL();dT0();yB6={aheadBy:0,behindBy:0,files:[]}});function nB6($){if(!$||$.includes(".."))return!1;return pB6.test($)}function Wm$($){let Z=typeof $.__resolveType==="string"?$.__resolveType:null;if(!Z||!nB6(Z))return null;let{__resolveType:X,...Q}=$;return{resolveType:Z,payload:Q}}function Km$($,Z){return`${$.replace(/\/+$/,"")}/deco/invoke/${Z}`}var pB6;var Hm$=D(()=>{pB6=/^[\w./@-]+$/});function ga($,Z){let X=$?.githubRepo;if(!X?.owner||!X?.name)return null;if(!X.connectionId)return X;if(!Z.includes(X.connectionId))return null;return X}async function Fm$($,Z,X,Q){if(!Q.connectionId)throw new Cv("Push requires a connected GitHub account. Connect mcp-github for this project and restart the sandbox.");let Y=$.organization?.id;if(!Y)throw new Cv(H9);await cO({ctx:$,connectionId:Q.connectionId,organizationId:Y,forceRefresh:!0,onLegacyMintError:(F)=>{let N=F instanceof Error?F.message:H9;throw new Cv(N)}});let{cloneUrl:G,gitUserName:J,gitUserEmail:W}=await fK(Q.connectionId,Q.owner,Q.name,$.db,$.vault).catch((F)=>{let{code:N,message:U}=k9$(F instanceof Error?F.message:String(F));throw N?new Cv(U):F}),K=Kl($),H=await Z.proxyDaemonRequest(X,"/_sandbox/config",{method:"PUT",headers:new Headers({"content-type":"application/json"}),body:JSON.stringify({git:{repository:{cloneUrl:G},identity:{userName:J,userEmail:W}},...K?{operator:K}:{}})});if(!H.ok){let F=await lO(H,tB6).catch(()=>H.statusText);throw Error(`Failed to refresh sandbox git credentials (${H.status}): ${F}`)}}var tB6=10485760,Cv;var EX1=D(()=>{NJ();_T0();Tn();si0();py();Cv=class Cv extends Error{constructor($){super($);this.name="GitPushAuthError"}}});function rB6($){let Z=$.startsWith("thread:")?$.slice(7):$;if(!Z||Z.length>255||Z.includes("..")||Z.startsWith("/")||Z.endsWith("/")||Z.endsWith(".lock")||!oB6.test(Z))throw Error(`Invalid branch name: ${$}`)}function _v($){return AbortSignal.any([$.req.raw.signal,AbortSignal.timeout(aB6)])}async function $O6($,Z){let X=$.var.studioContext,Q=HJ(Z.branch),Y=$.req.query("thread")??Q,G=Y&&Y===Q?Z.branchThread:Y?await X.storage.threads.get(Y).catch(()=>null):null,J=G?.virtual_mcp_id===Z.virtualMcpId?G:null,W=SC(J?.metadata?.runtime);if(W)return W;let K=jD0(Z.virtualMcpMetadata),H=K==="cms"?await a71(X,{claimName:Z.claimName}):"alive",F=K==="cms"&&H!=="alive"?"cms":"sandbox",N=!!J&&(H==="gone"||H==="alive"&&K==="cms");if(N&&J)en(X,J.id,F);if(K==="cms")console.log("sandbox proxy: no runtime stamp",{route:$.req.path,method:$.req.method,reason:J?"unstamped":"threadless",liveness:H,resolved:F,stamped:N});return F}async function ZO6($){let Z=$.get("vmClaim");if(Z.runner)return Z.runner;try{return await KQ($.var.studioContext)}catch{return null}}function vv($){let{runner:Z}=$.get("vmClaim");if(!Z)return $.json({error:"No sandbox runner configured"},503);return Z}async function Bl($){let{virtualMcpMetadata:Z,connectionIds:X}=$.get("vmClaim"),Q=$.var.studioContext,Y=ga(Z,X);if(!Y)throw new h4(404,"AUTH","repo","Project has no GitHub repository");let G=n(Q);return vT0(Q,G.id,Y)}function jX1($,Z){if(Z instanceof bA0)return $.json({error:Z.message},429,{...T5,...Z.retryAfterMs===null?{}:{"Retry-After":String(Math.ceil(Z.retryAfterMs/1000))}});if(Z instanceof h4){let Q=Z.status===404?404:Z.status===409||Z.status===422?409:502;return $.json({error:Z.message},Q,T5)}let X=Z instanceof Error?Z.message:String(Z);return $.json({error:X},502,T5)}async function Bm$($,Z,X){let Q;try{Q=await fetch(Z,X)}catch{return $.json({error:"Preview unreachable"},502)}let Y;try{Y=await Q.text()}catch{return $.json({error:"Preview unreachable"},502)}return new Response(Y,{status:Q.status,headers:{"content-type":Q.headers.get("content-type")??"application/json"}})}async function Om$($){try{let Z=await Bl($),X=await mT0(Z,$.get("vmClaim").branch);return $.json(X,200,T5)}catch(Z){return jX1($,Z)}}function ha($,Z){let Q=(nT0.get($)??Promise.resolve()).catch(()=>{}).then(Z),Y=Q.catch(()=>{});return nT0.set($,Y),Y.finally(()=>{if(nT0.get($)===Y)nT0.delete($)}),Q}async function X7($,Z,X){if(!X?.runner&&$.get("vmClaim").runtime==="cms")return $.json({error:"sandbox not found: this session is sandbox-less"},404,T5);let Q=X?.runner??vv($);if(Q instanceof Response)return Q;let{claimName:Y,userId:G,projectRef:J}=$.get("vmClaim"),W=X?.method??"POST",K=null,H=new Headers;if(X?.jsonBody!==void 0)K=X.jsonBody,H.set("content-type","application/json");else if(X?.forwardJsonBody)K=await $.req.text(),H.set("content-type","application/json");let F=X?.signal,N={method:W,headers:H,body:K,...F?{signal:F}:{}},U=async()=>{let B=await Q.proxyDaemonRequest(Y,Z,N);if(X?.map404to410&&B.status===404){try{await B.body?.cancel()}catch{}if(await Q.adoptLiveClaim({userId:G,projectRef:J},Y))B=await Q.proxyDaemonRequest(Y,Z,N);if(B.status===404){try{await B.body?.cancel()}catch{}return new Response(JSON.stringify({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."}),{status:410,headers:{"content-type":"application/json",...T5}})}}let O=await B.text(),L=X?.redactRepoDir?XO6(O):O,w=B.headers.get("content-type")??"application/json";return new Response(L,{status:B.status,headers:{"content-type":w,...T5}})};try{if(F){let B=U();return B.catch(()=>{}),await Promise.race([B,new Promise((L,w)=>{if(F.aborted)return w(F.reason);F.addEventListener("abort",()=>w(F.reason),{once:!0})})])}return await U()}catch(B){let O=B instanceof Error?B.message:String(B);return $.json({error:`Daemon unreachable: ${O}`},502)}}function XO6($){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 tT0($,Z,X,Q="GET",Y){let G=await $.proxyDaemonRequest(Z,X,{method:Q,headers:new Headers,body:null});if(G.status===404&&Y){try{await G.body?.cancel()}catch{}if(await $.adoptLiveClaim(Y,Z))G=await $.proxyDaemonRequest(Z,X,{method:Q,headers:new Headers,body:null})}if(G.status===404){try{await G.body?.cancel()}catch{}throw Error("SANDBOX_GONE")}let J=await G.text();if(!G.ok){let W=`Daemon error (${G.status})`;try{W=JSON.parse(J).error??W}catch{}throw Error(W)}return JSON.parse(J)}function QO6($){return Dm$.includes($)}var oB6,Nm$=524288,sB6=65536,aB6=1e4,Um$=2000,eB6,nT0,T5,Dm$,Lm$=()=>{let $=new K1;$.use("/:virtualMcpId/:branch/*",eB6),$.post("/:virtualMcpId/:branch/write",(X)=>X7(X,"/_sandbox/write",{forwardJsonBody:!0,signal:_v(X)})),$.post("/:virtualMcpId/:branch/unlink",(X)=>X7(X,"/_sandbox/unlink",{forwardJsonBody:!0,signal:_v(X)})),$.post("/:virtualMcpId/:branch/mkdir",(X)=>X7(X,"/_sandbox/mkdir",{forwardJsonBody:!0,signal:_v(X)})),$.post("/:virtualMcpId/:branch/rename",(X)=>X7(X,"/_sandbox/rename",{forwardJsonBody:!0,signal:_v(X)})),$.post("/:virtualMcpId/:branch/read",(X)=>X7(X,"/_sandbox/read",{forwardJsonBody:!0,signal:_v(X)})),$.post("/:virtualMcpId/:branch/glob",(X)=>X7(X,"/_sandbox/glob",{forwardJsonBody:!0,signal:_v(X)})),$.post("/:virtualMcpId/:branch/grep",(X)=>X7(X,"/_sandbox/grep",{forwardJsonBody:!0,signal:_v(X)})),$.post("/:virtualMcpId/:branch/exec/:script",async(X)=>{let Q=X.req.param("script");if(!Q)return X.json({error:"missing script name"},400);return X7(X,`/_sandbox/exec/${encodeURIComponent(Q)}`)}),$.post("/:virtualMcpId/:branch/exec/:script/kill",async(X)=>{let Q=X.req.param("script");if(!Q)return X.json({error:"missing script name"},400);return X7(X,`/_sandbox/exec/${encodeURIComponent(Q)}/kill`)}),$.get("/:virtualMcpId/:branch/config",(X)=>X7(X,"/_sandbox/config",{method:"GET",map404to410:!0,redactRepoDir:!0})),$.put("/:virtualMcpId/:branch/config",(X)=>X7(X,"/_sandbox/config",{method:"PUT",forwardJsonBody:!0,map404to410:!0})),$.post("/:virtualMcpId/:branch/setup/:step",async(X)=>{let Q=X.req.param("step");if(!Q||!QO6(Q))return X.json({error:`step must be one of: ${Dm$.join(", ")}`},400);let Y=X.get("vmClaim"),G=await a71(X.var.studioContext,{claimName:Y.claimName})==="gone"?null:await ZO6(X);if(!G)return X.json({error:"sandbox not found: nothing is running at this ref"},404,T5);if(Q==="start"){let J=n(X.var.studioContext),W=my(Y.virtualMcpMetadata);try{await b70({ctx:X.var.studioContext,runner:G,handle:Y.claimName,orgId:J.id,userId:Y.callerUserId,entries:W})}catch(K){let H=K instanceof Error?K.message:String(K);return X.json({error:`Failed to push env to daemon: ${H}`},502)}}return X7(X,`/_sandbox/setup/${Q}`,{signal:X.req.raw.signal,map404to410:!0,runner:G})}),$.get("/:virtualMcpId/:branch/events",(X)=>{let Q=X.get("vmClaim");if(!Q.runner)return QU(X,async(Y)=>{await Y.writeSSE({event:"phase",data:JSON.stringify({kind:"failed",reason:"unknown",message:"No sandbox runner configured on this studio instance."})})});return Ld$(X,{ctx:X.var.studioContext,claimName:Q.claimName,runner:Q.runner,virtualMcpId:Q.virtualMcpId,branch:Q.branch,userId:Q.userId,projectRef:Q.projectRef,virtualMcpMetadata:Q.virtualMcpMetadata})}),$.get("/:virtualMcpId/:branch/git/status",(X)=>{if(X.get("vmClaim").runtime==="cms")return Om$(X);return Z(X)});let Z=(X)=>X7(X,"/_sandbox/git/status",{method:"GET",map404to410:!0,signal:AbortSignal.any([X.req.raw.signal,AbortSignal.timeout(Um$)])});return $.post("/:virtualMcpId/:branch/git/status",(X)=>{if(X.get("vmClaim").runtime==="cms")return Om$(X);return X7(X,"/_sandbox/git/status",{map404to410:!0,signal:AbortSignal.any([X.req.raw.signal,AbortSignal.timeout(Um$)])})}),$.post("/:virtualMcpId/:branch/git/diff",async(X)=>{let Q=X.get("vmClaim");if(Q.runtime==="cms")try{let Y=await X.req.json().catch(()=>({})),G=await Bl(X),J=await iT0(G,Q.branch,Y.base);return X.json(J,200,T5)}catch(Y){return jX1(X,Y)}return X7(X,"/_sandbox/git/diff",{forwardJsonBody:!0,map404to410:!0})}),$.post("/:virtualMcpId/:branch/git/publish",async(X)=>{if(X.get("vmClaim").runtime==="cms")return X.json({ok:!0},200,T5);let Q=vv(X);if(Q instanceof Response)return Q;let{claimName:Y,virtualMcpMetadata:G,connectionIds:J}=X.get("vmClaim"),W=X.var.studioContext;return ha(Y,async()=>{try{await e71(W,Q,Y);let K=ga(G,J);if(K)await Fm$(W,Q,Y,K)}catch(K){if(K instanceof Cv)return X.json({error:K.message},403,T5);let H=K instanceof Error?K.message:String(K);return X.json({error:H},502,T5)}return X7(X,"/_sandbox/git/publish",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/discard",async(X)=>{let Q=X.get("vmClaim");if(Q.runtime==="cms")return ha(Q.claimName,async()=>{let Y=await X.req.json().catch(()=>({})),G=Array.isArray(Y.filepaths)?Y.filepaths.filter((J)=>typeof J==="string"):[];if(G.length===0)return X.json({error:"filepaths is required"},400,T5);try{let J=await Bl(X);return await Jm$(J,Q.branch,G),X.json({ok:!0},200,T5)}catch(J){let W=J instanceof h4&&J.status===409?409:502,K=J instanceof Error?J.message:String(J);return X.json({error:K},W,T5)}});return ha(Q.claimName,()=>X7(X,"/_sandbox/git/discard",{forwardJsonBody:!0,map404to410:!0}))}),$.post("/:virtualMcpId/:branch/git/rebase",async(X)=>{let Q=X.get("vmClaim");if(Q.runtime==="cms")return ha(Q.claimName,async()=>{try{let W=await X.req.json().catch(()=>({})),K=await Bl(X),H=W.base??await K.getDefaultBranch();return await pT0(K,Q.branch,H),X.json({ok:!0},200,T5)}catch(W){return jX1(X,W)}});let Y=vv(X);if(Y instanceof Response)return Y;let{claimName:G}=X.get("vmClaim"),J=X.var.studioContext;return ha(G,async()=>{try{await e71(J,Y,G)}catch(W){let K=W instanceof Error?W.message:String(W);return X.json({error:K},502,T5)}return X7(X,"/_sandbox/git/rebase",{forwardJsonBody:!0,map404to410:!0})})}),$.post("/:virtualMcpId/:branch/git/suggest-commit",o5({maxSize:Nm$,onError:(X)=>X.json({error:"Payload too large"},413,T5)}),async(X)=>{let Q=X.get("vmClaim"),Y=null;if(Q.runtime!=="cms"){let H=vv(X);if(H instanceof Response)return H;Y=H}let{claimName:G,userId:J,projectRef:W}=Q,K=X.var.studioContext;try{let H=await X.req.json().catch(()=>({})),F=H.status,N=H.diff,U=N!=null&&typeof N.diffs==="object"&&N.diffs!==null,[B,O]=XX1(F)&&U?[F,N]:Y?await Promise.all([tT0(Y,G,"/_sandbox/git/status","GET",{userId:J,projectRef:W}),tT0(Y,G,"/_sandbox/git/diff","GET",{userId:J,projectRef:W})]):await(async()=>{let w=await Bl(X);return Promise.all([mT0(w,Q.branch),iT0(w,Q.branch)])})(),L=await Pd$(K,B,O);return X.json(L,200,T5)}catch(H){let F=H instanceof Error?H.message:String(H);if(F==="SANDBOX_GONE")return X.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,T5);return X.json({error:F},502,T5)}}),$.post("/:virtualMcpId/:branch/git/judge-review",o5({maxSize:Nm$,onError:(X)=>X.json({error:"Payload too large"},413,T5)}),async(X)=>{let Q=X.get("vmClaim"),Y=null;if(Q.runtime!=="cms"){let H=vv(X);if(H instanceof Response)return H;Y=H}let{claimName:G,userId:J,projectRef:W}=Q,K=X.var.studioContext;try{let H=await X.req.json().catch(()=>({})),F=H.status,N=H.diff,U=N!=null&&typeof N.diffs==="object"&&N.diffs!==null,[B,O]=XX1(F)&&U?[F,N]:Y?await Promise.all([tT0(Y,G,"/_sandbox/git/status","GET",{userId:J,projectRef:W}),tT0(Y,G,"/_sandbox/git/diff","GET",{userId:J,projectRef:W})]):await(async()=>{let w=await Bl(X);return Promise.all([mT0(w,Q.branch),iT0(w,Q.branch)])})(),L=await Td$(K,B,O,typeof H.language==="string"?H.language:void 0);return X.json(L,200,T5)}catch(H){let F=H instanceof Error?H.message:String(H);if(F==="SANDBOX_GONE")return X.json({error:"Sandbox handle is gone. The sandbox needs to be re-provisioned."},410,T5);return X.json({error:F},502,T5)}}),$.get("/:virtualMcpId/:branch/preview-fetch",async(X)=>{let Q=vv(X);if(Q instanceof Response)return Q;let{claimName:Y}=X.get("vmClaim"),G=X.req.query("path");if(!G||!G.startsWith("/")||G.startsWith("//")||G.includes("..")||G.includes("\\"))return X.json({error:"Path not allowed"},403);let J;try{J=await Q.getPreviewUrl(Y)}catch{return X.json({error:"Preview not available"},502)}if(!J)return X.json({error:"Preview not available"},502);let W=J.replace(/\/+$/,"");return Bm$(X,`${W}${G}`)}),$.post("/:virtualMcpId/:branch/preview-invoke",o5({maxSize:sB6,onError:(X)=>X.json({error:"Payload too large"},413)}),async(X)=>{let Q=vv(X);if(Q instanceof Response)return Q;let{claimName:Y}=X.get("vmClaim"),G;try{G=await Q.getPreviewUrl(Y)}catch{return X.json({error:"Preview not available"},502)}if(!G)return X.json({error:"Preview not available"},502);let J;try{J=await X.req.json()}catch{return X.json({error:"Invalid JSON body"},400)}if(!J||typeof J!=="object"||Array.isArray(J))return X.json({error:"Invalid JSON body"},400);let W=Wm$(J);if(!W)return X.json({error:"Invalid or missing __resolveType"},400);let K=Km$(G,W.resolveType);return Bm$(X,K,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(W.payload),signal:AbortSignal.timeout(30000)})}),$};var wm$=D(()=>{Q8();kH();Wl();s71();En();Bd$();n3();Hg();Od$();a3();Dd$();wd$();ti0();Pn();GX1();Rd$();WX1();QL();wX1();Hm$();EX1();oB6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;eB6=CT0(async($,Z)=>{let X=$.var.studioContext;try{t(X)}catch{return $.json({error:"Unauthorized"},401)}let Q=o0(X);if(!Q)return $.json({error:"Unauthorized"},401);let Y;try{Y=n(X)}catch{return $.json({error:"Organization scope required"},403)}let G=$.req.param("virtualMcpId"),J=$.req.param("branch");if(!G||!J)return $.json({error:"virtualMcpId and branch are required"},400);try{rB6(J)}catch(L){let w=L instanceof Error?L.message:String(L);return $.json({error:w},400)}let W=await X.storage.virtualMcps.findById(G);if(!W||W.organization_id!==Y.id)return $.json({error:"Virtual MCP not found"},404);let K=Ln({orgId:Y.id,virtualMcpId:G,branch:J}),H=await ci0(X,J),F=di0(H,Q),N=Ud$({userId:F,projectRef:K}),U=W.metadata??null,B=await $O6($,{claimName:N,branch:J,virtualMcpId:G,sandboxUserId:F,virtualMcpMetadata:U,branchThread:H});if(B==="cms")return $.set("vmClaim",{claimName:N,callerUserId:Q,runner:null,virtualMcpId:G,branch:J,userId:F,projectRef:K,virtualMcpMetadata:U,connectionIds:W.connections?.map((L)=>L.connection_id)??[],runtime:B}),Z();let O;try{O=await KQ(X)}catch{O=null}if(!O)return $.json({error:"No sandbox runner found"},404);return $.set("vmClaim",{claimName:N,callerUserId:Q,runner:O,virtualMcpId:G,branch:J,userId:F,projectRef:K,virtualMcpMetadata:U,connectionIds:W.connections?.map((L)=>L.connection_id)??[],runtime:B}),Z()});nT0=new Map;T5={"Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache"};Dm$=["clone","install","start"]});function Em$($,Z,X){let Q=zX1.get($);if(!Q)Q={pending:null,running:!1},zX1.set($,Q);if(!Q.pending)Q.pending={set:new Map,del:new Set,deps:Z,resolvers:[],rejecters:[]};let Y=Q.pending;Y.deps=Z;for(let[J,W]of Object.entries(X.set??{}))Y.set.set(J,W),Y.del.delete(J);for(let J of X.delete??[])Y.del.add(J),Y.set.delete(J);let G=new Promise((J,W)=>{Y.resolvers.push(J),Y.rejecters.push(W)});if(!Q.running)GO6($,Q);return G}async function GO6($,Z){Z.running=!0;try{while(Z.pending){let X=Z.pending;Z.pending=null;try{let Q=await JO6(X);for(let Y of X.resolvers)Y(Q)}catch(Q){for(let Y of X.rejecters)Y(Q)}}}finally{if(Z.running=!1,!Z.pending)zX1.delete($)}}async function JO6($){let{client:Z,branch:X,packagePath:Q}=$.deps;for(let Y=0;;Y++){let G=await Ul(Z,X),J=await Z.getCommitTreeSha(G),W=await Z.getDecofileTree(J,Q),K=OX1(W,Q),H=[],F=new Map(K.map((O)=>[O.path,{stem:O.stem,sha:O.sha}]));for(let[O,L]of $.set){let w=DX1(K,O),E=`${JSON.stringify(L,null,2)}
2984
- `,j=await Z.createBlob(E);await Xm$(Z.owner,Z.repo,j,E);let z=w[0]??`${cT0(Q)}/${HX1(O)}.json`;H.push({path:z,mode:"100644",type:"blob",sha:j});let A=z.slice(z.lastIndexOf("/")+1,-5);F.set(z,{stem:A,sha:j,content:E});for(let P of w.slice(1))H.push({path:P,mode:"100644",type:"blob",sha:null}),F.delete(P)}for(let O of $.del)for(let L of DX1(K,O))H.push({path:L,mode:"100644",type:"blob",sha:null}),F.delete(L);if(H.length===0)return G;let N=Q?`${Q}/.deco/blocks.gen.json`:".deco/blocks.gen.json";if(W.some((O)=>O.type==="blob"&&O.path===N)){let O=await Promise.all([...F.values()].map(async(j)=>({stem:j.stem,content:j.content??await Z.getBlobText(j.sha)}))),{decofile:L,skipped:w}=fa(O);if(w.length>0)console.warn("decofile gen: dropped blocks that were not valid JSON",{repo:`${Z.owner}/${Z.repo}`,branch:X,packagePath:Q,blocks:w.map((j)=>j.key)});let E=await Z.createBlob(L);H.push({path:N,mode:"100644",type:"blob",sha:E})}let U=await Z.createTree(J,H),B=await Z.createCommit({message:WO6($),treeSha:U,parentShas:[G]});try{return await Z.updateRef(X,B),B}catch(O){if(!(O instanceof h4&&O.status===422)||Y>=YO6-1)throw O;await w$(G7(2000,200,Y,2,0.5))}}}function WO6($){let Z=(Y)=>{let G=Y.slice(0,3).join(", ");return Y.length>3?`${G} (+${Y.length-3} more)`:G},X=[];if($.set.size>0)X.push(`update ${Z([...$.set.keys()])}`);if($.del.size>0)X.push(`delete ${Z([...$.del])}`);let Q=`chore(decofile): ${X.join("; ")}`;return xi0(Q,$.deps.coAuthor)}var YO6=3,zX1;var jm$=D(()=>{BD0();bT0();W4();QL();dT0();zX1=new Map});import{createHmac as zm$,randomBytes as KO6,timingSafeEqual as HO6}from"crypto";function Pm$(){if(oT0)return oT0;let $;try{let Z=C0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return oT0=$?Buffer.from($):KO6(32),oT0}function PX1($){let Z=$.nowMs??Date.now(),X={o:$.organizationId,m:$.virtualMcpId,b:$.branch,e:Math.floor((Z+FO6)/1000)},Q=Buffer.from(JSON.stringify(X)).toString("base64url"),Y=zm$("sha256",Pm$()).update(Q).digest("base64url");return`${Q}.${Y}`}function Am$($,Z){let X=$.indexOf(".");if(X<0)return!1;let Q=$.slice(0,X),Y=Buffer.from($.slice(X+1)),G=Buffer.from(zm$("sha256",Pm$()).update(Q).digest("base64url"));if(Y.length!==G.length||!HO6(Y,G))return!1;let J;try{J=JSON.parse(Buffer.from(Q,"base64url").toString())}catch{return!1}let W=Math.floor((Z.nowMs??Date.now())/1000);return J.o===Z.organizationId&&J.m===Z.virtualMcpId&&J.b===Z.branch&&typeof J.e==="number"&&J.e>=W}var FO6=21600000,oT0=null;var Tm$=D(()=>{E$()});import{z as Ol}from"zod";function UO6($){return $.length>0&&$.length<=255&&!$.includes("..")&&!$.endsWith("/")&&!$.endsWith(".lock")&&NO6.test($)}function km$($){return $.req.header("x-forwarded-host")??new URL($.req.url).host}async function ua($){let Z=$.get("decofileScope");return vT0($.var.studioContext,Z.organizationId,Z.githubRepo)}function la($,Z){if(Z instanceof h4){let Q=Z.status===404?404:Z.status===409?409:Z.status===422?409:502;return $.json({error:Z.message},Q)}let X=Z instanceof Error?Z.message:String(Z);return $.json({error:X},500)}function Vm$(){let $=new K1;return $.use("/:virtualMcpId/:branch",Mm$),$.use("/:virtualMcpId/:branch/*",Mm$),$.get("/:virtualMcpId/:branch",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await ua(Z),Y=await Qm$(Q,X.branch,X.packagePath,{createBranchIfMissing:!!X.userId}),G={ETag:`"${Y.sha}"`,"Cache-Control":"no-store","Access-Control-Allow-Origin":"*"};if(Z.req.header("if-none-match")===`"${Y.sha}"`)return Z.body(null,304,G);if(!X.userId)return Z.body(Y.decofile,200,{...G,"content-type":"application/json"});let J=PX1({organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,branch:X.branch});return Z.body(`{"version":${JSON.stringify(Y.sha)},"token":${JSON.stringify(J)},"apiHost":${JSON.stringify(km$(Z))},"decofile":${Y.decofile}}`,200,{...G,"content-type":"application/json"})}catch(Q){return la(Z,Q)}}),$.get("/:virtualMcpId/:branch/meta",async(Z)=>{let X=Z.get("decofileScope"),Q=X.packagePath?`${X.packagePath}/.deco/meta.gen.json`:".deco/meta.gen.json";try{let Y=await ua(Z),G=await Y.getFileTextAtRef(X.branch,Q);if(G===null){let J=await Y.getDefaultBranch();if(J!==X.branch)G=await Y.getFileTextAtRef(J,Q)}if(G===null)return Z.json({error:"meta.gen.json not committed"},404);return Z.body(G,200,{"content-type":"application/json","Cache-Control":"no-store","Access-Control-Allow-Origin":"*"})}catch(Y){return la(Z,Y)}}),$.patch("/:virtualMcpId/:branch",OO6,async(Z)=>{let X=Z.get("decofileScope"),Q=Z.var.studioContext,Y=DO6.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{fT0(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(KX1(J))return Z.json({error:`Block key "${J}" collides with a framework resolver module and cannot be written`},400)}try{let J=await ua(Z),W=await Em$(`${X.organizationId}/${X.virtualMcpId}/${X.branch}`,{client:J,branch:X.branch,packagePath:X.packagePath,coAuthor:Kl(Q)},G),K=PX1({organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,branch:X.branch});return Z.json({version:W,token:K,apiHost:km$(Z)})}catch(J){return la(Z,J)}}),$.post("/:virtualMcpId/:branch/publish",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await ua(Z),Y=await Q.getDefaultBranch();if(Y===X.branch)return Z.json({error:"Branch is already the default branch"},400);let G=`chore(decofile): publish ${X.branch}`;try{let J;try{J=await Q.mergeBranch(Y,X.branch,G)}catch(W){if(!(W instanceof h4&&W.status===409))throw W;await pT0(Q,X.branch,Y),J=await Q.mergeBranch(Y,X.branch,G)}return J?Z.json({result:"merged",sha:J}):Z.json({result:"up-to-date"})}catch(J){if(J instanceof h4&&J.status===409)return Z.json({error:"merge-conflict"},409);if(J instanceof h4&&J.status===405){let K=await Q.findOpenPullRequest(Y,X.branch)??await Q.createPullRequest({base:Y,head:X.branch,title:`Publish ${X.branch}`});return Z.json({result:"pull-request",number:K.number,url:K.html_url})}throw J}}catch(Q){return la(Z,Q)}}),$.get("/:virtualMcpId/:branch/status",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await ua(Z),Y=await Q.getDefaultBranch();if(Y===X.branch)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0,lastCommitAt:null});try{let[{aheadBy:G,behindBy:J},W]=await Promise.all([Q.compare(Y,X.branch),Q.getBranchHead(X.branch)]);return Z.json({baseBranch:Y,aheadBy:G,behindBy:J,lastCommitAt:W.committedAt})}catch(G){if(G instanceof h4&&G.status===404)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0,lastCommitAt:null});throw G}}catch(Q){return la(Z,Q)}}),$}var NO6,Rm$=500,Im$=1048576,qm$=1024,BO6=8388608,OO6,DO6,Mm$;var Sm$=D(()=>{jt0();bT0();Q8();kH();s71();_T0();EX1();WX1();jm$();Tm$();wX1();QL();dT0();NO6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;OO6=o5({maxSize:BO6,onError:($)=>$.json({error:"Payload too large"},413)}),DO6=Ol.object({set:Ol.record(Ol.string(),Ol.unknown()).optional(),delete:Ol.array(Ol.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)<=Rm$,{message:`Patch cannot touch more than ${Rm$} blocks`}).refine(($)=>Object.values($.set??{}).every((Z)=>JSON.stringify(Z).length<=Im$),{message:`Each block must be at most ${Im$} bytes`}).refine(($)=>[...Object.keys($.set??{}),...$.delete??[]].every((Z)=>Z.length<=qm$),{message:`Each block key must be at most ${qm$} characters`}),Mm$=CT0(async($,Z)=>{let X=$.var.studioContext,Q=X.organization;if(!Q)return $.json({error:"Organization scope required"},500);let Y=$.req.param("virtualMcpId"),G=$.req.param("branch");if(!Y||!G)return $.json({error:"virtualMcpId and branch are required"},400);if(!UO6(G))return $.json({error:`Invalid branch name: ${G}`},400);let J=X.auth?.user?.id??null;if(!J){let B=$.req.query("token");if(!($.req.method==="GET"&&!$.req.path.match(/\/(publish|status)$/)))return $.json({error:"Unauthorized"},401);if(!B||!Am$(B,{organizationId:Q.id,virtualMcpId:Y,branch:G}))return $.json({error:"Unauthorized"},401)}let W=await X.storage.virtualMcps.findById(Y);if(!W||W.organization_id!==Q.id)return $.json({error:"Virtual MCP not found"},404);let K=W.metadata??null;if(!ED0(K))return $.json({error:"Project has no preview server configured"},404);let F=W.connections?.map((B)=>B.connection_id)??[],N=ga(K,F);if(!N)return $.json({error:"Project has no GitHub repository"},404);let U=K?.runtime;return $.set("decofileScope",{organizationId:Q.id,virtualMcpId:Y,branch:G,packagePath:U?.path?.replace(/^\/+|\/+$/g,"")||null,githubRepo:N,userId:J}),Z()})});var Cm$=($)=>{let Z=new K1;if(Z.use("*",Pv),Z.route("/",iA0()),Z.route("/",nh$()),Z.route("/",ec$()),Z.route("/",rc$()),Z.route("/",kT0()),Z.route("/tools",Jd$()),Z.route("/",Qd$()),Z.route("/",Vc$({kvStorage:$.kvStorage})),Z.route("/",Mc$()),Z.route("/fs",dc$({getConnection:$.getNatsConnection})),Z.route("/sandbox",Lm$()),Z.route("/decofile",Vm$()),Z.route("/",nc$()),Z.route("/deco-sites",nA0()),Z.route("/hosting",xh$()),Z.route("/monitor",dh$()),Z.route("/sso",hA0()),Z.route("/",VT0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",Vh$()),$.mountDevAssets)Z.route("/dev-assets",sA0({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("/",sx$()),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",ic$()),Z.route("/mcp",rw0()),Z.route("/mcp/self",MT0()),Z.route("/mcp",ew0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var _m$=D(()=>{Q8();wZ1();Sh$();PZ1();yh$();mh$();aA0();Ja();DZ1();kc$();Sc$();mc$();Ho();HZ1();$E0();m71();pc$();tc$();sc$();$d$();Yd$();p71();Wd$();n71();sw0();wm$();Sm$()});function LO6($){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 wO6=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},vm$=()=>{let $=new K1;return $.use("*",wO6),$.get("/",async(Z)=>{let X=C0(),Q=X.decoSupabaseUrl,Y=X.decoSupabaseServiceKey;if(!Q||!Y)return Z.json({apps:[]});try{let G=await Z7(Q,Y,"apps?select=name,title,description,logo,category,vendors(alias,url)");return Z.json({apps:LO6(G)})}catch(G){return console.error("[deco-apps] GET error:",G),Z.json({error:"Failed to fetch apps"},502)}}),$};var fm$=D(()=>{Q8();E$();mP0()});import{z as k1}from"zod";function fH($,Z="invalid_request_error",X=null,Q=null){return{error:{message:$,type:Z,param:X,code:Q}}}function MO6($){if(!$)return null;let Z=$.indexOf(":");if(Z===-1)return{credentialId:null,modelId:$};let X=$.substring(0,Z),Q=$.substring(Z+1);if(!X||!Q)return null;return{credentialId:X,modelId:Q}}function kO6($,Z,X){try{return JSON.parse($)}catch{throw new ym$(`Invalid JSON in tool call arguments for function '${X}' (tool_call_id: ${Z}): ${$}`)}}function VO6($){let Z={};for(let X of $)if(X.role==="assistant"&&X.tool_calls)for(let Q of X.tool_calls)Z[Q.id]=Q.function.name;return $.map((X)=>{switch(X.role){case"system":return{role:"system",content:X.content};case"user":if(typeof X.content==="string")return{role:"user",content:X.content};return{role:"user",content:X.content.map((Y)=>{if(Y.type==="text")return{type:"text",text:Y.text};return{type:"image",image:Y.image_url.url}})};case"assistant":if(X.tool_calls&&X.tool_calls.length>0)return{role:"assistant",content:X.tool_calls.map((Y)=>({type:"tool-call",toolCallId:Y.id,toolName:Y.function.name,input:kO6(Y.function.arguments,Y.id,Y.function.name)}))};return{role:"assistant",content:X.content??""};case"tool":let Q=Z[X.tool_call_id]??"unknown";return{role:"tool",content:[{type:"tool-result",toolCallId:X.tool_call_id,toolName:Q,output:{type:"text",value:X.content}}]}}})}function SO6($){let Z=$.map((X)=>{let Q=X.function.parameters?ZG(X.function.parameters):ZG({type:"object",properties:{}});return[X.function.name,u$({description:X.function.description,inputSchema:Q})]});return Object.fromEntries(Z)}function CO6($){if(!$)return;return{openai:{response_format:$}}}function _O6(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function bm$($,Z,X,Q,Y,G){let J={model:$,messages:Z,tools:X,temperature:Q.temperature,maxTokens:Q.max_tokens,topP:Q.top_p,frequencyPenalty:Q.frequency_penalty,presencePenalty:Q.presence_penalty,stopSequences:Q.stop?Array.isArray(Q.stop)?Q.stop:[Q.stop]:void 0,abortSignal:G};return Y?{...J,providerOptions:Y}:J}function xm$($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var EO6=256,jO6,zO6,PO6,AO6,TO6,RO6,IO6,qO6,ym$,gm$,hm$;var um$=D(()=>{c4();Q8();Wl();xN();jO6=k1.object({type:k1.literal("function"),function:k1.object({name:k1.string(),description:k1.string().optional(),parameters:k1.record(k1.string(),k1.unknown()).optional()})}),zO6=k1.object({id:k1.string(),type:k1.literal("function"),function:k1.object({name:k1.string(),arguments:k1.string()})}),PO6=k1.discriminatedUnion("role",[k1.object({role:k1.literal("system"),content:k1.string(),name:k1.string().optional()}),k1.object({role:k1.literal("user"),content:k1.union([k1.string(),k1.array(k1.union([k1.object({type:k1.literal("text"),text:k1.string()}),k1.object({type:k1.literal("image_url"),image_url:k1.object({url:k1.string(),detail:k1.string().optional()})})]))]),name:k1.string().optional()}),k1.object({role:k1.literal("assistant"),content:k1.string().nullable().optional(),name:k1.string().optional(),tool_calls:k1.array(zO6).optional()}),k1.object({role:k1.literal("tool"),content:k1.string(),tool_call_id:k1.string()})]),AO6=k1.object({type:k1.literal("text")}),TO6=k1.object({type:k1.literal("json_object")}),RO6=k1.object({type:k1.literal("json_schema"),json_schema:k1.object({name:k1.string(),description:k1.string().optional(),schema:k1.record(k1.string(),k1.unknown()),strict:k1.boolean().optional()})}),IO6=k1.union([AO6,TO6,RO6]),qO6=k1.object({model:k1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:k1.array(PO6),stream:k1.boolean().optional().default(!1),temperature:k1.number().min(0).max(2).optional(),max_tokens:k1.number().positive().optional(),top_p:k1.number().min(0).max(1).optional(),frequency_penalty:k1.number().min(-2).max(2).optional(),presence_penalty:k1.number().min(-2).max(2).optional(),stop:k1.union([k1.string(),k1.array(k1.string())]).optional(),tools:k1.array(jO6).optional(),tool_choice:k1.union([k1.literal("auto"),k1.literal("none"),k1.literal("required"),k1.object({type:k1.literal("function"),function:k1.object({name:k1.string()})})]).optional(),response_format:IO6.optional(),user:k1.string().optional()});ym$=class ym$ extends Error{constructor($){super($);this.name="MessageConversionError"}};gm$=new K1;gm$.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),X=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(fH("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(fH("Organization context is required. Ensure your API key has organization metadata.","invalid_request_error","organization"),400);if((Z.organization.slug??Z.organization.id)!==X)return $.json(fH("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Q=await $.req.json(),Y=qO6.safeParse(Q);if(!Y.success){let w=Y.error.issues[0]??{message:"Invalid request",path:[]};return $.json(fH(`Invalid request: ${w.message}`,"invalid_request_error",w.path.length>0?w.path.join("."):null),400)}let G=Y.data,J=MO6(G.model);if(!J)return $.json(fH("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)=>jw(j.providerId));if(!E)return $.json(fH("No AI provider credentials configured for this organization. Add a credential in settings or specify one explicitly via 'credential_id:model_id'.","invalid_request_error","model"),400);W=E.id}let H;try{H=await Z.aiProviders.activate(W,Z.organization.id)}catch{return $.json(fH(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(K),N=VO6(G.messages),U=G.tools?SO6(G.tools):void 0,B=CO6(G.response_format),O=_O6(),L=Math.floor(Date.now()/1000);if(G.stream)return QU($,async(w)=>{let E=bm$(F,N,U,G,B,$.req.raw.signal);try{let j=xO(E),z=!1,A=0,P="",I=async()=>{if(P.length===0)return;let k=P;P="",await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,model:G.model,choices:[{index:0,delta:{content:k},finish_reason:null}]})})};for await(let k of j.fullStream){if(!z&&(k.type==="text-delta"||k.type==="tool-call"))await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,model:G.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),z=!0;if(k.type==="text-delta"){if(P+=k.text,P.length>=EO6)await I()}else if(k.type==="tool-call"){await I();let M=A++;await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,model:G.model,choices:[{index:0,delta:{tool_calls:[{index:M,id:k.toolCallId,type:"function",function:{name:k.toolName,arguments:JSON.stringify(k.input)}}]},finish_reason:null}]})})}else if(k.type==="finish")await I(),await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,model:G.model,choices:[{index:0,delta:{},finish_reason:xm$(k.finishReason)}],usage:k.totalUsage?{prompt_tokens:k.totalUsage.inputTokens??0,completion_tokens:k.totalUsage.outputTokens??0,total_tokens:k.totalUsage.totalTokens??0}:void 0})})}await I(),await w.writeSSE({data:"[DONE]"})}catch(j){let z=j;console.error("[openai-compat:stream] Error:",z.message),await w.writeSSE({data:JSON.stringify({error:{message:z.message,type:"server_error"}})})}});else{let w=bm$(F,N,U,G,B,$.req.raw.signal),E=await fO(w),j={role:"assistant",content:E.text||null};if(E.toolCalls&&E.toolCalls.length>0)j.tool_calls=E.toolCalls.map((z)=>({id:z.toolCallId,type:"function",function:{name:z.toolName,arguments:JSON.stringify("input"in z?z.input:{})}})),j.content=null;return $.json({id:O,object:"chat.completion",created:L,model:G.model,choices:[{index:0,message:j,finish_reason:xm$(E.finishReason)}],usage:{prompt_tokens:E.usage?.inputTokens??0,completion_tokens:E.usage?.outputTokens??0,total_tokens:E.usage?.totalTokens??0}})}}catch(Q){let Y=Q;if(Y.name==="AbortError")return $.json(fH("Request aborted","invalid_request_error"),400);if(Y.name==="MessageConversionError")return $.json(fH(Y.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",Y.message,Y.stack),$.json(fH(Y.message,"server_error"),500)}});hm$=gm$});function vO6($){if(typeof $!=="object"||$===null)return!1;let X=$.githubRepo?.url;return typeof X==="string"&&X.length>0}function lm$(){let $=new K1;return $.use("*",async(Z,X)=>{await X(),Z.header("Cache-Control","private, no-store"),Z.header("Vary","Cookie")}),$.get("/",async(Z)=>{let X=Z.get("studioContext"),Q=o0(X);if(!Q)return Z.json({error:"Authentication required"},401);let G=(Z.req.query("site")??"").trim().toLowerCase();if(!aX(G))return Z.json({error:"Invalid site slug"},400);let J=await X.db.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["organization.id as id","organization.slug as slug","organization.name as name","organization.metadata as metadata"]).where("member.userId","=",Q).execute(),W=[];for(let H of J){if(!H.slug||uZ(H))continue;let F=await X.storage.virtualMcps.list(H.id);for(let N of F){if(G0$(N)!==G)continue;if(!vO6(N.metadata))continue;W.push({orgSlug:H.slug,orgName:H.name??H.slug,project:{id:N.id,title:N.title,icon:N.icon??null}})}}let K={matches:W};return Z.json(K)}),$}var cm$=D(()=>{Q8();cF()});var mm$;var dm$=D(()=>{mm$={name:"decocms",version:"4.319.1",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});function xO6(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??bO6}}var im$,bO6="https://ph.studio.decocms.com",pm$;var nm$=D(()=>{Q8();B90();$_();Q9();E$();a91();dm$();im$=new K1;im$.get("/",($)=>{let Z={version:mm$.version,theme:Pp1(),...bF().logo&&{logo:bF().logo},...TN()&&{internalUrl:r_1()},...C0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!C0().firecrawlApiKey,hostingEnabled:!!C0().controlplaneRestUrl&&!!C0().controlplaneServiceToken,hostingControlPlaneGa:C0().hostingControlPlaneGa,monitorEnabled:!!C0().clickhouseAnalyticsUrl&&!!C0().clickhouseAnalyticsPassword,monitorGa:C0().monitorGa,auth:hg$(),posthog:xO6(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:oa()}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});pm$=im$});function Dl($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function AX1($){return(Dl($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((X)=>X.charAt(0).toUpperCase()+X.slice(1)).join(" ")}function om$($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(Dl($))}&sz=${Z}`}function tm$($,Z){let X=$.trim();if(X.length<=Z)return X;let Q=X.slice(0,Z-1),Y=Q.lastIndexOf(" ");return`${(Y>Z*0.6?Q.slice(0,Y):Q).trimEnd()}\u2026`}function rm$($){let{brand:Z,domain:X,score:Q,verdict:Y}=$,G=typeof Q==="number"?`${Z} commerce report \u2014 ${Math.round(Q)}/100 \xB7 decocms`:`${Z} commerce report \xB7 decocms`,J=`See the full ${Z} scorecard \u2014 SEO, performance, conversion & AEO signals scored by decocms.`,W=Y?.trim()?tm$(`${Y.trim().replace(/\s+/g," ")} \u2014 ${J}`,200):tm$(`How does ${X} really perform? ${J}`,200);return{title:G,description:W}}import{z as c0}from"zod";var fv,yO6,gO6,hO6,uO6,sm$;var am$=D(()=>{fv=c0.enum(["good","bad","neutral"]),yO6=c0.preprocess(($)=>{if(Array.isArray($))return{kind:"text",value:$.find((X)=>X!==null&&typeof X!=="object")??""};return $!==null&&typeof $==="object"?$:{kind:"text",value:$}},c0.object({kind:c0.enum(["text","number","sparkline","badge","score"]).catch("text"),value:c0.coerce.string().optional(),tone:fv.optional(),muted:c0.boolean().optional(),delta:c0.coerce.string().optional(),deltaDir:c0.enum(["up","down","neutral"]).optional(),points:c0.array(c0.coerce.number()).optional(),label:c0.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 $})),gO6=c0.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},c0.array(yO6)),hO6={key:c0.coerce.string(),title:c0.coerce.string(),eyebrow:c0.coerce.string().optional(),headline:c0.coerce.string(),annotation:c0.coerce.string().optional(),methodology:c0.coerce.string().optional(),sources:c0.array(c0.object({name:c0.coerce.string(),logoUrl:c0.coerce.string()})).optional()},uO6=c0.discriminatedUnion("template",[c0.object({template:c0.literal("cover"),score:c0.object({value:c0.coerce.number(),max:c0.coerce.number().optional(),grade:c0.coerce.string().optional(),label:c0.coerce.string().optional()}).optional(),brandImage:c0.coerce.string().optional(),screenshot:c0.coerce.string().optional(),mobileScreenshot:c0.coerce.string().optional()}),c0.object({template:c0.literal("cta"),ctaUrl:c0.coerce.string().optional(),ctaLabel:c0.coerce.string().optional(),bullets:c0.array(c0.coerce.string()).optional()}),c0.object({template:c0.literal("series"),points:c0.array(c0.coerce.number()).min(2),xLabels:c0.array(c0.coerce.string()).min(1),unit:c0.coerce.string().optional(),callout:c0.object({index:c0.coerce.number(),value:c0.coerce.string(),tone:fv.optional()})}),c0.object({template:c0.literal("threshold"),value:c0.coerce.string().default(""),metricLabel:c0.coerce.string().optional(),ratio:c0.coerce.number(),thresholdRatio:c0.coerce.number().optional(),thresholdLabel:c0.coerce.string().default(""),tone:fv.optional()}),c0.object({template:c0.literal("stats"),stats:c0.array(c0.object({value:c0.coerce.string(),label:c0.coerce.string(),tone:fv.optional()})).min(1)}),c0.object({template:c0.literal("bars"),items:c0.array(c0.object({value:c0.coerce.string(),label:c0.coerce.string(),ratio:c0.coerce.number(),tone:fv.optional()})).min(1)}),c0.object({template:c0.literal("gauges"),gauges:c0.array(c0.object({label:c0.coerce.string(),value:c0.coerce.string(),status:c0.enum(["good","warn","bad"]).catch("warn"),caption:c0.coerce.string().optional(),ratio:c0.coerce.number().optional()})).min(1)}),c0.object({template:c0.literal("checklist"),checks:c0.array(c0.object({label:c0.coerce.string(),status:c0.enum(["pass","fail","warn"]).catch("fail"),value:c0.coerce.string().optional()})).min(1)}),c0.object({template:c0.literal("table"),columns:c0.array(c0.object({label:c0.coerce.string(),align:c0.enum(["left","right"]).optional()})).min(1),rows:c0.array(gO6).min(1),highlightRow:c0.coerce.number().optional()}),c0.object({template:c0.literal("products"),products:c0.array(c0.object({name:c0.coerce.string(),price:c0.coerce.string().optional(),image:c0.coerce.string().optional(),url:c0.coerce.string().optional()})).min(1)}),c0.object({template:c0.literal("list"),entries:c0.array(c0.object({label:c0.coerce.string(),severity:c0.enum(["error","warning","notice"]).catch("notice")})).min(1),moreCount:c0.coerce.number().optional()}),c0.object({template:c0.literal("keywords"),volumeLabel:c0.coerce.string().optional(),keywords:c0.array(c0.object({term:c0.coerce.string(),volume:c0.coerce.string(),position:c0.coerce.number().catch(0)})).min(1)}),c0.object({template:c0.literal("competitor"),metricLabel:c0.coerce.string().optional(),competitors:c0.array(c0.object({name:c0.coerce.string(),value:c0.coerce.string(),tone:fv.optional(),isYou:c0.boolean().optional()})).min(1)}),c0.object({template:c0.literal("scorecard"),rivalLabel:c0.coerce.string().optional(),dimensions:c0.array(c0.object({label:c0.coerce.string(),you:c0.coerce.string(),rival:c0.coerce.string().optional(),rivalName:c0.coerce.string().optional(),tone:fv.optional()})).min(1)})]),sm$=c0.object({...hO6,template:uO6})});function rT0($){let Z=[],X=[...$.sections].sort((Y,G)=>Y.position-G.position).map((Y)=>{let G=sm$.safeParse(Y.props);if(G.success)return G.data;let J=G.error.issues[0];return Z.push({section_type:Y.section_type,position:Y.position,reason:J?`${J.path.join(".")||"(root)"}: ${J.message}`:"contract violation"}),null}).filter((Y)=>Y!==null),Q=X.filter((Y)=>Y.template.template!=="cover"&&Y.template.template!=="cta").map((Y)=>({key:Y.key,title:Y.title}));return{deck:{meta:{...$.meta,scores:$.summary?.scores,scannedAt:$.scanned_at,toc:Q},slides:X},drops:Z}}var TX1=D(()=>{am$()});import{join as em$}from"path";async function cO6($){try{let Z=await fetch(`${DK({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(lO6)});if(!Z.ok)return null;let X=await Z.json(),{deck:Q}=rT0(X);if(!Q.slides.length)return null;let Y=Q.slides.find((W)=>W.template.template==="cover"),G=Y?.template,J=G&&G.template==="cover"?G:void 0;return{brand:Q.meta.brand?.trim()||AX1($),score:Q.meta.scores?.cover??J?.score?.value,verdict:Y?.annotation?.trim()||Y?.headline?.trim()||void 0}}catch{return null}}function RG($){return $.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;")}function dO6($,Z){let X=Dl($),Q=Z?.brand?.trim()||AX1(X),Y=om$(X,128),J=`${(C0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(X)}`,{title:W,description:K}=rm$({brand:Q,domain:X,score:Z?.score,verdict:Z?.verdict}),H=`${J}/og.png`,F=`${Q} commerce report by decocms`;return[`<title>${RG(W)}</title>`,`<meta name="description" content="${RG(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="${RG(W)}" />`,`<meta property="og:description" content="${RG(K)}" />`,`<meta property="og:url" content="${RG(J)}" />`,`<meta property="og:image" content="${RG(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${RG(F)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${RG(W)}" />`,`<meta name="twitter:description" content="${RG(K)}" />`,`<meta name="twitter:image" content="${RG(H)}" />`,`<meta name="twitter:image:alt" content="${RG(F)}" />`,`<link rel="canonical" href="${RG(J)}" />`,`<link rel="icon" href="${RG(Y)}" sizes="any" />`].join(`
2984
+ `,j=await Z.createBlob(E);await Xm$(Z.owner,Z.repo,j,E);let z=w[0]??`${cT0(Q)}/${HX1(O)}.json`;H.push({path:z,mode:"100644",type:"blob",sha:j});let A=z.slice(z.lastIndexOf("/")+1,-5);F.set(z,{stem:A,sha:j,content:E});for(let P of w.slice(1))H.push({path:P,mode:"100644",type:"blob",sha:null}),F.delete(P)}for(let O of $.del)for(let L of DX1(K,O))H.push({path:L,mode:"100644",type:"blob",sha:null}),F.delete(L);if(H.length===0)return G;let N=Q?`${Q}/.deco/blocks.gen.json`:".deco/blocks.gen.json";if(W.some((O)=>O.type==="blob"&&O.path===N)){let O=await Promise.all([...F.values()].map(async(j)=>({stem:j.stem,content:j.content??await Z.getBlobText(j.sha)}))),{decofile:L,skipped:w}=fa(O);if(w.length>0)console.warn("decofile gen: dropped blocks that were not valid JSON",{repo:`${Z.owner}/${Z.repo}`,branch:X,packagePath:Q,blocks:w.map((j)=>j.key)});let E=await Z.createBlob(L);H.push({path:N,mode:"100644",type:"blob",sha:E})}let U=await Z.createTree(J,H),B=await Z.createCommit({message:WO6($),treeSha:U,parentShas:[G]});try{return await Z.updateRef(X,B),B}catch(O){if(!(O instanceof h4&&O.status===422)||Y>=YO6-1)throw O;await w$(G7(2000,200,Y,2,0.5))}}}function WO6($){let Z=(Y)=>{let G=Y.slice(0,3).join(", ");return Y.length>3?`${G} (+${Y.length-3} more)`:G},X=[];if($.set.size>0)X.push(`update ${Z([...$.set.keys()])}`);if($.del.size>0)X.push(`delete ${Z([...$.del])}`);let Q=`chore(decofile): ${X.join("; ")}`;return xi0(Q,$.deps.coAuthor)}var YO6=3,zX1;var jm$=D(()=>{BD0();bT0();W4();QL();dT0();zX1=new Map});import{createHmac as zm$,randomBytes as KO6,timingSafeEqual as HO6}from"crypto";function Pm$(){if(oT0)return oT0;let $;try{let Z=C0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return oT0=$?Buffer.from($):KO6(32),oT0}function PX1($){let Z=$.nowMs??Date.now(),X={o:$.organizationId,m:$.virtualMcpId,b:$.branch,e:Math.floor((Z+FO6)/1000)},Q=Buffer.from(JSON.stringify(X)).toString("base64url"),Y=zm$("sha256",Pm$()).update(Q).digest("base64url");return`${Q}.${Y}`}function Am$($,Z){let X=$.indexOf(".");if(X<0)return!1;let Q=$.slice(0,X),Y=Buffer.from($.slice(X+1)),G=Buffer.from(zm$("sha256",Pm$()).update(Q).digest("base64url"));if(Y.length!==G.length||!HO6(Y,G))return!1;let J;try{J=JSON.parse(Buffer.from(Q,"base64url").toString())}catch{return!1}let W=Math.floor((Z.nowMs??Date.now())/1000);return J.o===Z.organizationId&&J.m===Z.virtualMcpId&&J.b===Z.branch&&typeof J.e==="number"&&J.e>=W}var FO6=21600000,oT0=null;var Tm$=D(()=>{E$()});import{z as Ol}from"zod";function UO6($){return $.length>0&&$.length<=255&&!$.includes("..")&&!$.endsWith("/")&&!$.endsWith(".lock")&&NO6.test($)}function km$($){return $.req.header("x-forwarded-host")??new URL($.req.url).host}async function ua($){let Z=$.get("decofileScope");return vT0($.var.studioContext,Z.organizationId,Z.githubRepo)}function la($,Z){if(Z instanceof h4){let Q=Z.status===404?404:Z.status===409?409:Z.status===422?409:502;return $.json({error:Z.message},Q)}let X=Z instanceof Error?Z.message:String(Z);return $.json({error:X},500)}function Vm$(){let $=new K1;return $.use("/:virtualMcpId/:branch",Mm$),$.use("/:virtualMcpId/:branch/*",Mm$),$.get("/:virtualMcpId/:branch",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await ua(Z),Y=await Qm$(Q,X.branch,X.packagePath,{createBranchIfMissing:!!X.userId}),G={ETag:`"${Y.sha}"`,"Cache-Control":"no-store","Access-Control-Allow-Origin":"*"};if(Z.req.header("if-none-match")===`"${Y.sha}"`)return Z.body(null,304,G);if(!X.userId)return Z.body(Y.decofile,200,{...G,"content-type":"application/json"});let J=PX1({organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,branch:X.branch});return Z.body(`{"version":${JSON.stringify(Y.sha)},"token":${JSON.stringify(J)},"apiHost":${JSON.stringify(km$(Z))},"decofile":${Y.decofile}}`,200,{...G,"content-type":"application/json"})}catch(Q){return la(Z,Q)}}),$.get("/:virtualMcpId/:branch/meta",async(Z)=>{let X=Z.get("decofileScope"),Q=X.packagePath?`${X.packagePath}/.deco/meta.gen.json`:".deco/meta.gen.json";try{let Y=await ua(Z),G=await Y.getFileTextAtRef(X.branch,Q);if(G===null){let J=await Y.getDefaultBranch();if(J!==X.branch)G=await Y.getFileTextAtRef(J,Q)}if(G===null)return Z.json({error:"meta.gen.json not committed"},404);return Z.body(G,200,{"content-type":"application/json","Cache-Control":"no-store","Access-Control-Allow-Origin":"*"})}catch(Y){return la(Z,Y)}}),$.patch("/:virtualMcpId/:branch",OO6,async(Z)=>{let X=Z.get("decofileScope"),Q=Z.var.studioContext,Y=DO6.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{fT0(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(KX1(J))return Z.json({error:`Block key "${J}" collides with a framework resolver module and cannot be written`},400)}try{let J=await ua(Z),W=await Em$(`${X.organizationId}/${X.virtualMcpId}/${X.branch}`,{client:J,branch:X.branch,packagePath:X.packagePath,coAuthor:Kl(Q)},G),K=PX1({organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,branch:X.branch});return Z.json({version:W,token:K,apiHost:km$(Z)})}catch(J){return la(Z,J)}}),$.post("/:virtualMcpId/:branch/publish",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await ua(Z),Y=await Q.getDefaultBranch();if(Y===X.branch)return Z.json({error:"Branch is already the default branch"},400);let G=`chore(decofile): publish ${X.branch}`;try{let J;try{J=await Q.mergeBranch(Y,X.branch,G)}catch(W){if(!(W instanceof h4&&W.status===409))throw W;await pT0(Q,X.branch,Y),J=await Q.mergeBranch(Y,X.branch,G)}return J?Z.json({result:"merged",sha:J}):Z.json({result:"up-to-date"})}catch(J){if(J instanceof h4&&J.status===409)return Z.json({error:"merge-conflict"},409);if(J instanceof h4&&J.status===405){let K=await Q.findOpenPullRequest(Y,X.branch)??await Q.createPullRequest({base:Y,head:X.branch,title:`Publish ${X.branch}`});return Z.json({result:"pull-request",number:K.number,url:K.html_url})}throw J}}catch(Q){return la(Z,Q)}}),$.get("/:virtualMcpId/:branch/status",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await ua(Z),Y=await Q.getDefaultBranch();if(Y===X.branch)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0,lastCommitAt:null});try{let[{aheadBy:G,behindBy:J},W]=await Promise.all([Q.compare(Y,X.branch),Q.getBranchHead(X.branch)]);return Z.json({baseBranch:Y,aheadBy:G,behindBy:J,lastCommitAt:W.committedAt})}catch(G){if(G instanceof h4&&G.status===404)return Z.json({baseBranch:Y,aheadBy:0,behindBy:0,lastCommitAt:null});throw G}}catch(Q){return la(Z,Q)}}),$}var NO6,Rm$=500,Im$=1048576,qm$=1024,BO6=8388608,OO6,DO6,Mm$;var Sm$=D(()=>{jt0();bT0();Q8();kH();s71();_T0();EX1();WX1();jm$();Tm$();wX1();QL();dT0();NO6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;OO6=o5({maxSize:BO6,onError:($)=>$.json({error:"Payload too large"},413)}),DO6=Ol.object({set:Ol.record(Ol.string(),Ol.unknown()).optional(),delete:Ol.array(Ol.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)<=Rm$,{message:`Patch cannot touch more than ${Rm$} blocks`}).refine(($)=>Object.values($.set??{}).every((Z)=>JSON.stringify(Z).length<=Im$),{message:`Each block must be at most ${Im$} bytes`}).refine(($)=>[...Object.keys($.set??{}),...$.delete??[]].every((Z)=>Z.length<=qm$),{message:`Each block key must be at most ${qm$} characters`}),Mm$=CT0(async($,Z)=>{let X=$.var.studioContext,Q=X.organization;if(!Q)return $.json({error:"Organization scope required"},500);let Y=$.req.param("virtualMcpId"),G=$.req.param("branch");if(!Y||!G)return $.json({error:"virtualMcpId and branch are required"},400);if(!UO6(G))return $.json({error:`Invalid branch name: ${G}`},400);let J=X.auth?.user?.id??null;if(!J){let B=$.req.query("token");if(!($.req.method==="GET"&&!$.req.path.match(/\/(publish|status)$/)))return $.json({error:"Unauthorized"},401);if(!B||!Am$(B,{organizationId:Q.id,virtualMcpId:Y,branch:G}))return $.json({error:"Unauthorized"},401)}let W=await X.storage.virtualMcps.findById(Y);if(!W||W.organization_id!==Q.id)return $.json({error:"Virtual MCP not found"},404);let K=W.metadata??null;if(!ED0(K))return $.json({error:"Project has no preview server configured"},404);let F=W.connections?.map((B)=>B.connection_id)??[],N=ga(K,F);if(!N)return $.json({error:"Project has no GitHub repository"},404);let U=K?.runtime;return $.set("decofileScope",{organizationId:Q.id,virtualMcpId:Y,branch:G,packagePath:U?.path?.replace(/^\/+|\/+$/g,"")||null,githubRepo:N,userId:J}),Z()})});var Cm$=($)=>{let Z=new K1;if(Z.use("*",Pv),Z.route("/",iA0()),Z.route("/",nh$()),Z.route("/",ec$()),Z.route("/",rc$()),Z.route("/",kT0()),Z.route("/tools",Jd$()),Z.route("/",Qd$()),Z.route("/",Vc$({kvStorage:$.kvStorage})),Z.route("/",Mc$()),Z.route("/fs",dc$({getConnection:$.getNatsConnection})),Z.route("/sandbox",Lm$()),Z.route("/decofile",Vm$()),Z.route("/",nc$()),Z.route("/deco-sites",nA0()),Z.route("/hosting",xh$()),Z.route("/monitor",dh$()),Z.route("/sso",hA0()),Z.route("/",VT0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",Vh$()),$.mountDevAssets)Z.route("/dev-assets",sA0({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("/",sx$()),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",ic$()),Z.route("/mcp",rw0()),Z.route("/mcp/self",MT0()),Z.route("/mcp",ew0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var _m$=D(()=>{Q8();wZ1();Sh$();PZ1();yh$();mh$();aA0();Ja();DZ1();kc$();Sc$();mc$();Ho();HZ1();$E0();m71();pc$();tc$();sc$();$d$();Yd$();p71();Wd$();n71();sw0();wm$();Sm$()});function LO6($){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 wO6=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},vm$=()=>{let $=new K1;return $.use("*",wO6),$.get("/",async(Z)=>{let X=C0(),Q=X.decoSupabaseUrl,Y=X.decoSupabaseServiceKey;if(!Q||!Y)return Z.json({apps:[]});try{let G=await Z7(Q,Y,"apps?select=name,title,description,logo,category,vendors(alias,url)");return Z.json({apps:LO6(G)})}catch(G){return console.error("[deco-apps] GET error:",G),Z.json({error:"Failed to fetch apps"},502)}}),$};var fm$=D(()=>{Q8();E$();mP0()});import{z as k1}from"zod";function fH($,Z="invalid_request_error",X=null,Q=null){return{error:{message:$,type:Z,param:X,code:Q}}}function MO6($){if(!$)return null;let Z=$.indexOf(":");if(Z===-1)return{credentialId:null,modelId:$};let X=$.substring(0,Z),Q=$.substring(Z+1);if(!X||!Q)return null;return{credentialId:X,modelId:Q}}function kO6($,Z,X){try{return JSON.parse($)}catch{throw new ym$(`Invalid JSON in tool call arguments for function '${X}' (tool_call_id: ${Z}): ${$}`)}}function VO6($){let Z={};for(let X of $)if(X.role==="assistant"&&X.tool_calls)for(let Q of X.tool_calls)Z[Q.id]=Q.function.name;return $.map((X)=>{switch(X.role){case"system":return{role:"system",content:X.content};case"user":if(typeof X.content==="string")return{role:"user",content:X.content};return{role:"user",content:X.content.map((Y)=>{if(Y.type==="text")return{type:"text",text:Y.text};return{type:"image",image:Y.image_url.url}})};case"assistant":if(X.tool_calls&&X.tool_calls.length>0)return{role:"assistant",content:X.tool_calls.map((Y)=>({type:"tool-call",toolCallId:Y.id,toolName:Y.function.name,input:kO6(Y.function.arguments,Y.id,Y.function.name)}))};return{role:"assistant",content:X.content??""};case"tool":let Q=Z[X.tool_call_id]??"unknown";return{role:"tool",content:[{type:"tool-result",toolCallId:X.tool_call_id,toolName:Q,output:{type:"text",value:X.content}}]}}})}function SO6($){let Z=$.map((X)=>{let Q=X.function.parameters?ZG(X.function.parameters):ZG({type:"object",properties:{}});return[X.function.name,u$({description:X.function.description,inputSchema:Q})]});return Object.fromEntries(Z)}function CO6($){if(!$)return;return{openai:{response_format:$}}}function _O6(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function bm$($,Z,X,Q,Y,G){let J={model:$,messages:Z,tools:X,temperature:Q.temperature,maxTokens:Q.max_tokens,topP:Q.top_p,frequencyPenalty:Q.frequency_penalty,presencePenalty:Q.presence_penalty,stopSequences:Q.stop?Array.isArray(Q.stop)?Q.stop:[Q.stop]:void 0,abortSignal:G};return Y?{...J,providerOptions:Y}:J}function xm$($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var EO6=256,jO6,zO6,PO6,AO6,TO6,RO6,IO6,qO6,ym$,gm$,hm$;var um$=D(()=>{c4();Q8();Wl();xN();jO6=k1.object({type:k1.literal("function"),function:k1.object({name:k1.string(),description:k1.string().optional(),parameters:k1.record(k1.string(),k1.unknown()).optional()})}),zO6=k1.object({id:k1.string(),type:k1.literal("function"),function:k1.object({name:k1.string(),arguments:k1.string()})}),PO6=k1.discriminatedUnion("role",[k1.object({role:k1.literal("system"),content:k1.string(),name:k1.string().optional()}),k1.object({role:k1.literal("user"),content:k1.union([k1.string(),k1.array(k1.union([k1.object({type:k1.literal("text"),text:k1.string()}),k1.object({type:k1.literal("image_url"),image_url:k1.object({url:k1.string(),detail:k1.string().optional()})})]))]),name:k1.string().optional()}),k1.object({role:k1.literal("assistant"),content:k1.string().nullable().optional(),name:k1.string().optional(),tool_calls:k1.array(zO6).optional()}),k1.object({role:k1.literal("tool"),content:k1.string(),tool_call_id:k1.string()})]),AO6=k1.object({type:k1.literal("text")}),TO6=k1.object({type:k1.literal("json_object")}),RO6=k1.object({type:k1.literal("json_schema"),json_schema:k1.object({name:k1.string(),description:k1.string().optional(),schema:k1.record(k1.string(),k1.unknown()),strict:k1.boolean().optional()})}),IO6=k1.union([AO6,TO6,RO6]),qO6=k1.object({model:k1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:k1.array(PO6),stream:k1.boolean().optional().default(!1),temperature:k1.number().min(0).max(2).optional(),max_tokens:k1.number().positive().optional(),top_p:k1.number().min(0).max(1).optional(),frequency_penalty:k1.number().min(-2).max(2).optional(),presence_penalty:k1.number().min(-2).max(2).optional(),stop:k1.union([k1.string(),k1.array(k1.string())]).optional(),tools:k1.array(jO6).optional(),tool_choice:k1.union([k1.literal("auto"),k1.literal("none"),k1.literal("required"),k1.object({type:k1.literal("function"),function:k1.object({name:k1.string()})})]).optional(),response_format:IO6.optional(),user:k1.string().optional()});ym$=class ym$ extends Error{constructor($){super($);this.name="MessageConversionError"}};gm$=new K1;gm$.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),X=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(fH("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(fH("Organization context is required. Ensure your API key has organization metadata.","invalid_request_error","organization"),400);if((Z.organization.slug??Z.organization.id)!==X)return $.json(fH("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Q=await $.req.json(),Y=qO6.safeParse(Q);if(!Y.success){let w=Y.error.issues[0]??{message:"Invalid request",path:[]};return $.json(fH(`Invalid request: ${w.message}`,"invalid_request_error",w.path.length>0?w.path.join("."):null),400)}let G=Y.data,J=MO6(G.model);if(!J)return $.json(fH("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)=>jw(j.providerId));if(!E)return $.json(fH("No AI provider credentials configured for this organization. Add a credential in settings or specify one explicitly via 'credential_id:model_id'.","invalid_request_error","model"),400);W=E.id}let H;try{H=await Z.aiProviders.activate(W,Z.organization.id)}catch{return $.json(fH(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(K),N=VO6(G.messages),U=G.tools?SO6(G.tools):void 0,B=CO6(G.response_format),O=_O6(),L=Math.floor(Date.now()/1000);if(G.stream)return QU($,async(w)=>{let E=bm$(F,N,U,G,B,$.req.raw.signal);try{let j=xO(E),z=!1,A=0,P="",I=async()=>{if(P.length===0)return;let k=P;P="",await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,model:G.model,choices:[{index:0,delta:{content:k},finish_reason:null}]})})};for await(let k of j.fullStream){if(!z&&(k.type==="text-delta"||k.type==="tool-call"))await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,model:G.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),z=!0;if(k.type==="text-delta"){if(P+=k.text,P.length>=EO6)await I()}else if(k.type==="tool-call"){await I();let M=A++;await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,model:G.model,choices:[{index:0,delta:{tool_calls:[{index:M,id:k.toolCallId,type:"function",function:{name:k.toolName,arguments:JSON.stringify(k.input)}}]},finish_reason:null}]})})}else if(k.type==="finish")await I(),await w.writeSSE({data:JSON.stringify({id:O,object:"chat.completion.chunk",created:L,model:G.model,choices:[{index:0,delta:{},finish_reason:xm$(k.finishReason)}],usage:k.totalUsage?{prompt_tokens:k.totalUsage.inputTokens??0,completion_tokens:k.totalUsage.outputTokens??0,total_tokens:k.totalUsage.totalTokens??0}:void 0})})}await I(),await w.writeSSE({data:"[DONE]"})}catch(j){let z=j;console.error("[openai-compat:stream] Error:",z.message),await w.writeSSE({data:JSON.stringify({error:{message:z.message,type:"server_error"}})})}});else{let w=bm$(F,N,U,G,B,$.req.raw.signal),E=await fO(w),j={role:"assistant",content:E.text||null};if(E.toolCalls&&E.toolCalls.length>0)j.tool_calls=E.toolCalls.map((z)=>({id:z.toolCallId,type:"function",function:{name:z.toolName,arguments:JSON.stringify("input"in z?z.input:{})}})),j.content=null;return $.json({id:O,object:"chat.completion",created:L,model:G.model,choices:[{index:0,message:j,finish_reason:xm$(E.finishReason)}],usage:{prompt_tokens:E.usage?.inputTokens??0,completion_tokens:E.usage?.outputTokens??0,total_tokens:E.usage?.totalTokens??0}})}}catch(Q){let Y=Q;if(Y.name==="AbortError")return $.json(fH("Request aborted","invalid_request_error"),400);if(Y.name==="MessageConversionError")return $.json(fH(Y.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",Y.message,Y.stack),$.json(fH(Y.message,"server_error"),500)}});hm$=gm$});function vO6($){if(typeof $!=="object"||$===null)return!1;let X=$.githubRepo?.url;return typeof X==="string"&&X.length>0}function lm$(){let $=new K1;return $.use("*",async(Z,X)=>{await X(),Z.header("Cache-Control","private, no-store"),Z.header("Vary","Cookie")}),$.get("/",async(Z)=>{let X=Z.get("studioContext"),Q=o0(X);if(!Q)return Z.json({error:"Authentication required"},401);let G=(Z.req.query("site")??"").trim().toLowerCase();if(!aX(G))return Z.json({error:"Invalid site slug"},400);let J=await X.db.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["organization.id as id","organization.slug as slug","organization.name as name","organization.metadata as metadata"]).where("member.userId","=",Q).execute(),W=[];for(let H of J){if(!H.slug||uZ(H))continue;let F=await X.storage.virtualMcps.list(H.id);for(let N of F){if(G0$(N)!==G)continue;if(!vO6(N.metadata))continue;W.push({orgSlug:H.slug,orgName:H.name??H.slug,project:{id:N.id,title:N.title,icon:N.icon??null}})}}let K={matches:W};return Z.json(K)}),$}var cm$=D(()=>{Q8();cF()});var mm$;var dm$=D(()=>{mm$={name:"decocms",version:"4.319.2",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@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 xO6(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??bO6}}var im$,bO6="https://ph.studio.decocms.com",pm$;var nm$=D(()=>{Q8();B90();$_();Q9();E$();a91();dm$();im$=new K1;im$.get("/",($)=>{let Z={version:mm$.version,theme:Pp1(),...bF().logo&&{logo:bF().logo},...TN()&&{internalUrl:r_1()},...C0().enableDecoImport&&{enableDecoImport:!0},brandExtractEnabled:!!C0().firecrawlApiKey,hostingEnabled:!!C0().controlplaneRestUrl&&!!C0().controlplaneServiceToken,hostingControlPlaneGa:C0().hostingControlPlaneGa,monitorEnabled:!!C0().clickhouseAnalyticsUrl&&!!C0().clickhouseAnalyticsPassword,monitorGa:C0().monitorGa,auth:hg$(),posthog:xO6(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:oa()}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});pm$=im$});function Dl($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function AX1($){return(Dl($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((X)=>X.charAt(0).toUpperCase()+X.slice(1)).join(" ")}function om$($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(Dl($))}&sz=${Z}`}function tm$($,Z){let X=$.trim();if(X.length<=Z)return X;let Q=X.slice(0,Z-1),Y=Q.lastIndexOf(" ");return`${(Y>Z*0.6?Q.slice(0,Y):Q).trimEnd()}\u2026`}function rm$($){let{brand:Z,domain:X,score:Q,verdict:Y}=$,G=typeof Q==="number"?`${Z} commerce report \u2014 ${Math.round(Q)}/100 \xB7 decocms`:`${Z} commerce report \xB7 decocms`,J=`See the full ${Z} scorecard \u2014 SEO, performance, conversion & AEO signals scored by decocms.`,W=Y?.trim()?tm$(`${Y.trim().replace(/\s+/g," ")} \u2014 ${J}`,200):tm$(`How does ${X} really perform? ${J}`,200);return{title:G,description:W}}import{z as c0}from"zod";var fv,yO6,gO6,hO6,uO6,sm$;var am$=D(()=>{fv=c0.enum(["good","bad","neutral"]),yO6=c0.preprocess(($)=>{if(Array.isArray($))return{kind:"text",value:$.find((X)=>X!==null&&typeof X!=="object")??""};return $!==null&&typeof $==="object"?$:{kind:"text",value:$}},c0.object({kind:c0.enum(["text","number","sparkline","badge","score"]).catch("text"),value:c0.coerce.string().optional(),tone:fv.optional(),muted:c0.boolean().optional(),delta:c0.coerce.string().optional(),deltaDir:c0.enum(["up","down","neutral"]).optional(),points:c0.array(c0.coerce.number()).optional(),label:c0.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 $})),gO6=c0.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},c0.array(yO6)),hO6={key:c0.coerce.string(),title:c0.coerce.string(),eyebrow:c0.coerce.string().optional(),headline:c0.coerce.string(),annotation:c0.coerce.string().optional(),methodology:c0.coerce.string().optional(),sources:c0.array(c0.object({name:c0.coerce.string(),logoUrl:c0.coerce.string()})).optional()},uO6=c0.discriminatedUnion("template",[c0.object({template:c0.literal("cover"),score:c0.object({value:c0.coerce.number(),max:c0.coerce.number().optional(),grade:c0.coerce.string().optional(),label:c0.coerce.string().optional()}).optional(),brandImage:c0.coerce.string().optional(),screenshot:c0.coerce.string().optional(),mobileScreenshot:c0.coerce.string().optional()}),c0.object({template:c0.literal("cta"),ctaUrl:c0.coerce.string().optional(),ctaLabel:c0.coerce.string().optional(),bullets:c0.array(c0.coerce.string()).optional()}),c0.object({template:c0.literal("series"),points:c0.array(c0.coerce.number()).min(2),xLabels:c0.array(c0.coerce.string()).min(1),unit:c0.coerce.string().optional(),callout:c0.object({index:c0.coerce.number(),value:c0.coerce.string(),tone:fv.optional()})}),c0.object({template:c0.literal("threshold"),value:c0.coerce.string().default(""),metricLabel:c0.coerce.string().optional(),ratio:c0.coerce.number(),thresholdRatio:c0.coerce.number().optional(),thresholdLabel:c0.coerce.string().default(""),tone:fv.optional()}),c0.object({template:c0.literal("stats"),stats:c0.array(c0.object({value:c0.coerce.string(),label:c0.coerce.string(),tone:fv.optional()})).min(1)}),c0.object({template:c0.literal("bars"),items:c0.array(c0.object({value:c0.coerce.string(),label:c0.coerce.string(),ratio:c0.coerce.number(),tone:fv.optional()})).min(1)}),c0.object({template:c0.literal("gauges"),gauges:c0.array(c0.object({label:c0.coerce.string(),value:c0.coerce.string(),status:c0.enum(["good","warn","bad"]).catch("warn"),caption:c0.coerce.string().optional(),ratio:c0.coerce.number().optional()})).min(1)}),c0.object({template:c0.literal("checklist"),checks:c0.array(c0.object({label:c0.coerce.string(),status:c0.enum(["pass","fail","warn"]).catch("fail"),value:c0.coerce.string().optional()})).min(1)}),c0.object({template:c0.literal("table"),columns:c0.array(c0.object({label:c0.coerce.string(),align:c0.enum(["left","right"]).optional()})).min(1),rows:c0.array(gO6).min(1),highlightRow:c0.coerce.number().optional()}),c0.object({template:c0.literal("products"),products:c0.array(c0.object({name:c0.coerce.string(),price:c0.coerce.string().optional(),image:c0.coerce.string().optional(),url:c0.coerce.string().optional()})).min(1)}),c0.object({template:c0.literal("list"),entries:c0.array(c0.object({label:c0.coerce.string(),severity:c0.enum(["error","warning","notice"]).catch("notice")})).min(1),moreCount:c0.coerce.number().optional()}),c0.object({template:c0.literal("keywords"),volumeLabel:c0.coerce.string().optional(),keywords:c0.array(c0.object({term:c0.coerce.string(),volume:c0.coerce.string(),position:c0.coerce.number().catch(0)})).min(1)}),c0.object({template:c0.literal("competitor"),metricLabel:c0.coerce.string().optional(),competitors:c0.array(c0.object({name:c0.coerce.string(),value:c0.coerce.string(),tone:fv.optional(),isYou:c0.boolean().optional()})).min(1)}),c0.object({template:c0.literal("scorecard"),rivalLabel:c0.coerce.string().optional(),dimensions:c0.array(c0.object({label:c0.coerce.string(),you:c0.coerce.string(),rival:c0.coerce.string().optional(),rivalName:c0.coerce.string().optional(),tone:fv.optional()})).min(1)})]),sm$=c0.object({...hO6,template:uO6})});function rT0($){let Z=[],X=[...$.sections].sort((Y,G)=>Y.position-G.position).map((Y)=>{let G=sm$.safeParse(Y.props);if(G.success)return G.data;let J=G.error.issues[0];return Z.push({section_type:Y.section_type,position:Y.position,reason:J?`${J.path.join(".")||"(root)"}: ${J.message}`:"contract violation"}),null}).filter((Y)=>Y!==null),Q=X.filter((Y)=>Y.template.template!=="cover"&&Y.template.template!=="cta").map((Y)=>({key:Y.key,title:Y.title}));return{deck:{meta:{...$.meta,scores:$.summary?.scores,scannedAt:$.scanned_at,toc:Q},slides:X},drops:Z}}var TX1=D(()=>{am$()});import{join as em$}from"path";async function cO6($){try{let Z=await fetch(`${DK({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(lO6)});if(!Z.ok)return null;let X=await Z.json(),{deck:Q}=rT0(X);if(!Q.slides.length)return null;let Y=Q.slides.find((W)=>W.template.template==="cover"),G=Y?.template,J=G&&G.template==="cover"?G:void 0;return{brand:Q.meta.brand?.trim()||AX1($),score:Q.meta.scores?.cover??J?.score?.value,verdict:Y?.annotation?.trim()||Y?.headline?.trim()||void 0}}catch{return null}}function RG($){return $.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;")}function dO6($,Z){let X=Dl($),Q=Z?.brand?.trim()||AX1(X),Y=om$(X,128),J=`${(C0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(X)}`,{title:W,description:K}=rm$({brand:Q,domain:X,score:Z?.score,verdict:Z?.verdict}),H=`${J}/og.png`,F=`${Q} commerce report by decocms`;return[`<title>${RG(W)}</title>`,`<meta name="description" content="${RG(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="${RG(W)}" />`,`<meta property="og:description" content="${RG(K)}" />`,`<meta property="og:url" content="${RG(J)}" />`,`<meta property="og:image" content="${RG(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${RG(F)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${RG(W)}" />`,`<meta name="twitter:description" content="${RG(K)}" />`,`<meta name="twitter:image" content="${RG(H)}" />`,`<meta name="twitter:image:alt" content="${RG(F)}" />`,`<link rel="canonical" href="${RG(J)}" />`,`<link rel="icon" href="${RG(Y)}" sizes="any" />`].join(`
2985
2985
  `)}function mO6($,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}
2986
2986
  </head>`)}function $i$($){let Z=new K1;return Z.get("/:domain/og.png",async(X)=>{let Q=Dl(X.req.param("domain")),Y=async()=>{let G=$?Bun.file(em$($,"report-og-fallback.png")):null;if(!G||!await G.exists())return X.notFound();return X.body(new Uint8Array(await G.arrayBuffer()),200,{"Content-Type":"image/png","Cache-Control":"public, max-age=0, s-maxage=3600"})};try{let G=await fetch(`${DK({})}/api/v2/public/diagnostics/${encodeURIComponent(Q)}/og.png`,{signal:AbortSignal.timeout(iO6)}),J=G.headers.get("content-type")??"";if(!G.ok||!J.startsWith("image/")||!G.body)return Y();return X.body(G.body,200,{"Content-Type":J,"Cache-Control":"public, max-age=0, s-maxage=604800"})}catch{return Y()}}),Z.get("/:domain",async(X)=>{let Q=X.req.param("domain"),Y=$?em$($,"index.html"):null,G=Y?Bun.file(Y):null;if(!G||!await G.exists())return X.notFound();let J=await G.text();try{let W=await cO6(Dl(Q)),K=dO6(Q,W);return X.html(mO6(J,K),200,{"Cache-Control":"public, max-age=0, s-maxage=300"})}catch{return X.html(J)}}),Z}var lO6=2500,iO6=1e4;var Zi$=D(()=>{Q8();TX1();TE();E$()});function ca($,Z){return fetch(`${DK({})}${$}`,Z)}async function pO6($,Z,X){let Q=new URLSearchParams;if(Z)Q.set("pw",Z);if(X)Q.set("lang",X);let Y=Q.toString()?`?${Q.toString()}`:"",G=await ca(`/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}=rT0(J);return{status:W.slides.length?"ready":"empty",deck:W,scanned_at:J.scanned_at,drops:K}}var nO6,GU,Xi$=async($,Z)=>{if(!$.get("reportUser"))return $.json({error:"Authentication required"},401);await Z();return},Qi$;var Yi$=D(()=>{Q8();sY();TE();TX1();nO6=new Set(["complete","errored","terminated","unknown"]),GU=new K1;GU.use("*",async($,Z)=>{let X=await e$.api.getSession({headers:$.req.raw.headers});$.set("reportUser",X?.user?.id?{email:X.user.email}:void 0),await Z(),$.header("Cache-Control","private, no-store"),$.header("Vary","Cookie");return});GU.use("/link-token/*",Xi$);GU.use("/suggest",Xi$);GU.get("/site/:domain",async($)=>{let Z=$.req.param("domain").trim();if(!Z)return $.json({error:"domain is required"},400);let X=$.get("reportUser"),Q=$.req.query("key")?.trim()||void 0,Y=$.req.query("lang")?.trim()||void 0;try{let G=await pO6(Z,Q,Y);if($.header("Cache-Control","private, no-store"),X||!G.deck)return $.json(G);return $.json({...G,deck:{...G.deck,slides:G.deck.slides.slice(0,1)},truncated:G.status==="ready"})}catch{return $.json({error:"report read failed"},502)}});GU.post("/run",async($)=>{let Z=$.get("reportUser"),X;try{X=await $.req.json()}catch{return $.json({error:"invalid JSON"},400)}let Q=typeof X.domain==="string"?X.domain.trim():"";if(!Q)return $.json({error:"domain is required"},400);let Y=Z?.email,G=typeof X.distinctId==="string"&&X.distinctId.trim()&&X.distinctId.length<=200?X.distinctId.trim():void 0;try{let J=await ca("/api/v2/diagnostics/run",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${AE({})}`},body:JSON.stringify({url:Q,...Y?{email:Y}:{},distinct_id:G})});if(!J.ok)return $.json({error:`run HTTP ${J.status}`},502);let W=await J.json(),K=W.blocked?{state:"blocked"}:W.status==="fresh"?{state:"fresh"}:W.mode==="sync"?{state:"sync"}:{state:"running",id:W.id??null};return $.json(K)}catch{return $.json({error:"run failed"},502)}});GU.get("/status",async($)=>{let Z=$.req.query("id");if(!Z)return $.json({error:"id is required"},400);try{let X=await ca(`/api/v2/diagnostics/status?id=${encodeURIComponent(Z)}`,{headers:{Authorization:`Bearer ${AE({})}`}});if(!X.ok)return $.json({error:`status HTTP ${X.status}`},502);let Y=(await X.json()).status??"unknown",G={done:nO6.has(Y),status:Y};return $.json(G)}catch{return $.json({error:"status failed"},502)}});GU.get("/link-token/:id",async($)=>{let Z=$.req.param("id");try{let X=await ca(`/api/v2/public/link-tokens/${encodeURIComponent(Z)}`,{headers:{Accept:"application/json"}});if(X.status===404)return $.json(null);if(!X.ok)return $.json({error:`link token HTTP ${X.status}`},502);return $.json(await X.json())}catch{return $.json({error:"link token resolve failed"},502)}});GU.get("/suggest",async($)=>{let Z=($.req.query("q")??"").trim().slice(0,64);if(Z.length<2)return $.json({suggestions:[]});try{let X=await ca(`/api/v2/public/suggest?q=${encodeURIComponent(Z)}`,{headers:{Accept:"application/json"}});if(!X.ok)return $.json({suggestions:[]});let Q=await X.json();return $.json({suggestions:Array.isArray(Q.suggestions)?Q.suggestions:[]})}catch{return $.json({suggestions:[]})}});Qi$=GU});import{createHmac as tO6,timingSafeEqual as oO6}from"crypto";function Ji$($,Z,X,Q=Date.now()){if(!Z||!X)return!1;let Y,G=[];for(let H of Z.split(",")){let F=H.indexOf("=");if(F<=0)continue;let N=H.slice(0,F).trim(),U=H.slice(F+1).trim();if(N==="t")Y=U;else if(N==="v1")G.push(U)}if(!Y||G.length===0)return!1;let J=Number(Y);if(!Number.isFinite(J)||Math.abs(Q/1000-J)>rO6)return!1;let W=tO6("sha256",X).update(`${Y}.${$}`).digest("hex"),K=Buffer.from(W,"hex");return G.some((H)=>{let F=Buffer.from(H,"hex");return K.length===F.length&&oO6(K,F)})}function Wi$($){let Z;try{Z=JSON.parse($)}catch{return null}let X=mJ(Z),Q=mJ(mJ(X?.data)?.object);if(!X||typeof X.type!=="string"||!Q)return null;return{id:bH(X.id),type:X.type,created:typeof X.created==="number"?X.created:void 0,livemode:typeof X.livemode==="boolean"?X.livemode:void 0,data:{object:Q}}}function Ki$($){switch($){case"active":case"trialing":return"active";case"past_due":return"past_due";default:return"canceled"}}function bH($){return typeof $==="string"?$:void 0}function mJ($){return typeof $==="object"&&$!==null?$:void 0}function sT0($){return typeof $==="number"?new Date($*1000):null}function qX1($){return bH($)??bH(mJ($)?.id)}function sO6($){return qX1($.subscription)??bH(mJ(mJ($.parent)?.subscription_details)?.subscription)}function aO6($){let Z=sT0($.current_period_end);if(Z)return Z;let X=mJ($.items)?.data;if(!Array.isArray(X))return null;let Q=0;for(let Y of X){let G=mJ(Y)?.current_period_end;if(typeof G==="number"&&G>Q)Q=G}return Q>0?new Date(Q*1000):null}function RX1($,Z){let X=sT0($.created);return!!X&&!!Z.lastStripeEventAt&&X<Z.lastStripeEventAt}function IX1($,Z){let X=sT0($.created);if(!X)return;return Z.lastStripeEventAt&&Z.lastStripeEventAt>X?void 0:X}async function eO6($,Z){let X=Z.data.object;switch(Z.type){case"checkout.session.completed":case"checkout.session.async_payment_succeeded":{let Q=bH(mJ(X.metadata)?.orgId);if(!Q)return{handled:!1,reason:"no orgId"};if(bH(mJ(X.metadata)?.kind)==="topup"){if(X.mode!=="payment")return{handled:!1,reason:"topup with wrong mode"};if(bH(X.payment_status)!=="paid")return{handled:!1,reason:"payment not confirmed"};let J=bH(X.id);if(!J)return console.error("stripe webhook: topup session without id",{eventId:Z.id,organizationId:Q}),{handled:!1,reason:"topup session without id"};let W=Number(mJ(X.metadata)?.creditCents);if(!Number.isInteger(W)||W<=0)return console.error("stripe webhook: paid topup with bad metadata \u2014 credit NOT applied",{eventId:Z.id,organizationId:Q,creditCents:mJ(X.metadata)?.creditCents}),{handled:!1,reason:"bad topup metadata"};return{handled:!0,organizationId:Q,topUp:{creditCents:W,referenceId:`stripe-topup:${J}`}}}if(X.mode!=="subscription")return{handled:!1,reason:"not a subscription checkout"};if(bH(X.payment_status)!=="paid")return{handled:!1,reason:"payment not confirmed"};let Y=await $.getBilling(Q);if(!Y)return{handled:!1,reason:"unknown org"};let G=qX1(X.subscription);if(Y.stripeSubscriptionId&&G&&Y.stripeSubscriptionId!==G)return console.error("stripe webhook: refused checkout rebind",{organizationId:Q,eventId:Z.id}),{handled:!1,reason:"org already bound to another subscription",orphanSubscriptionId:G};if(RX1(Z,Y))return{handled:!1,reason:"stale event"};return await $.updateStripeState(Q,{stripeCustomerId:qX1(X.customer),stripeSubscriptionId:G,status:"active",lastStripeEventAt:IX1(Z,Y)}),{handled:!0,organizationId:Q}}case"customer.subscription.updated":case"customer.subscription.deleted":{let Q=bH(X.id);if(!Q)return{handled:!1,reason:"no sub id"};let Y=await $.getBillingByStripeSubscriptionId(Q);if(!Y)return{handled:!1,reason:"unknown subscription"};let G=Z.type==="customer.subscription.deleted";if(!G&&RX1(Z,Y))return{handled:!1,reason:"stale event"};let J=G?"canceled":Ki$(X.status);return await $.updateStripeState(Y.organizationId,{status:J,currentPeriodEnd:aO6(X),...G&&{stripeSubscriptionId:null},lastStripeEventAt:IX1(Z,Y)}),{handled:!0,organizationId:Y.organizationId}}case"invoice.paid":{let Q=sO6(X);if(!Q)return{handled:!1,reason:"no sub id"};let Y=await $.getBillingByStripeSubscriptionId(Q);if(!Y)return{handled:!1,reason:"unknown subscription"};if(RX1(Z,Y))return{handled:!1,reason:"stale event"};return await $.updateStripeState(Y.organizationId,{status:"active",currentPeriodEnd:sT0(X.period_end),lastStripeEventAt:IX1(Z,Y)}),{handled:!0,organizationId:Y.organizationId}}default:return{handled:!1,reason:`unhandled event ${Z.type}`}}}function $D6($,Z){if(!Z.handled||$.livemode===!1)return null;let X=$.data.object;if(Z.topUp)return{name:"credits_topup_succeeded",organizationId:Z.organizationId,properties:{credit_cents:Z.topUp.creditCents}};switch($.type){case"checkout.session.completed":case"checkout.session.async_payment_succeeded":return{name:"subscription_started",organizationId:Z.organizationId,properties:{}};case"customer.subscription.deleted":return{name:"subscription_canceled",organizationId:Z.organizationId,properties:{}};case"customer.subscription.updated":return{name:"subscription_updated",organizationId:Z.organizationId,properties:{status:Ki$(X.status),...typeof X.cancel_at_period_end==="boolean"?{cancel_at_period_end:X.cancel_at_period_end}:{}}};case"invoice.paid":if(X.billing_reason==="subscription_create")return null;return{name:"subscription_renewed",organizationId:Z.organizationId,properties:{}};default:return null}}function Gi$($,Z){let X=$D6($,Z);if(!X)return;nY({event:X.name,organizationId:X.organizationId,...$.id?{uuid:Vt1(`stripe:${$.id}:${X.name}`)}:{},...$.created?{timestamp:new Date($.created*1000)}:{},properties:X.properties})}async function Hi$($){let Z=new NK(B8().db),X=await eO6(Z,$);if(!(X.handled&&X.topUp))Gi$($,X);if(X.handled&&X.topUp)await Pz$({organizationId:X.organizationId,amountCents:X.topUp.creditCents,referenceId:X.topUp.referenceId}),Gi$($,X);if(!X.handled&&X.orphanSubscriptionId)try{await Q1$(X.orphanSubscriptionId),console.error("stripe webhook: canceled orphan subscription",{subscriptionId:X.orphanSubscriptionId,eventId:$.id})}catch(Q){if(!(Q instanceof aY&&(Q.status===400||Q.status===404)))throw Q}return X}var rO6=300;var Fi$=D(()=>{aG();S4();p50();fE();v11()});var ZD6=1048576,MX1;var Ni$=D(()=>{Q8();kH();E$();Fi$();MX1=new K1;MX1.post("/webhook",o5({maxSize:ZD6,onError:($)=>$.json({error:"payload too large"},413)}),async($)=>{let Z=C0().stripeWebhookSecret;if(!Z)return $.json({error:"stripe billing not configured"},503);let X=await $.req.text();if(!Ji$(X,$.req.header("stripe-signature"),Z))return $.json({error:"invalid signature"},400);let Y=Wi$(X);if(!Y)return $.json({error:"invalid payload"},400);let G=await Hi$(Y);return console.log("stripe webhook",{eventId:Y.id,type:Y.type,livemode:Y.livemode,...G}),$.json({received:!0})})});import{timingSafeEqual as XD6}from"crypto";function YD6($,Z,X){if(!Z?.startsWith("sha256="))return!1;let Q=new Bun.CryptoHasher("sha256",X).update($).digest("hex"),Y=Z.slice(7);if(Y.length!==Q.length)return!1;return XD6(Buffer.from(Y),Buffer.from(Q))}var QD6=5242880,kX1;var Ui$=D(()=>{Q8();kH();a3();kX1=new K1;kX1.post("/webhook",o5({maxSize:QD6,onError:($)=>$.json({error:"payload too large"},413)}),async($)=>{let Z=process.env.GITHUB_WEBHOOK_SECRET;if(!Z)return $.json({error:"github webhook not configured"},503);let X=await $.req.text();if(!YD6(X,$.req.header("x-hub-signature-256"),Z))return $.json({error:"invalid signature"},400);if($.req.header("x-github-event")!=="push")return $.json({ok:!0,ignored:"event"});let Q;try{Q=JSON.parse(X)}catch{return $.json({error:"invalid payload"},400)}let Y=Q.ref,G=Q.repository?.full_name;if(!Y||!G)return $.json({ok:!0,ignored:"shape"});let W=(await wt0())?.markTenantPoolsDirty(G,Y)??[];return $.json({ok:!0,pools:W})})});function Bi$($,Z){if(Z.startsWith("text/html")||Z.startsWith("image/svg"))$.set("Content-Security-Policy","sandbox allow-scripts allow-modals allow-same-origin")}var Oi$,GD6,JD6,Di$;var Li$=D(()=>{Q8();S3();fg();Ty();Oi$=new K1,GD6=["range","if-none-match","if-modified-since"],JD6=["content-type","content-length","content-range","accept-ranges","etag","last-modified"];Oi$.get("/:org/files/*",async($)=>{let Z=$.get("studioContext"),X=Z.organization?.id;if(!Z.auth?.user?.id){if(lu($))return $.redirect(`/login?next=${encodeURIComponent($.req.path)}`,302);throw new Z$(401,{message:"Authentication required"})}if(!X)throw new Z$(401,{message:"Organization context required"});let Q=$.req.path.replace(/^.*\/files\//,"");if(!Q)throw new Z$(400,{message:"Missing file key"});let Y=await ft(Q,Z);if(!Y)throw new Z$(503,{message:"Object storage not configured"});if(Y.startsWith("data:")&&XJ()){let K=Y.match(/^data:([^;]+);base64,(.+)$/s);if(!K)throw new Z$(500,{message:"Invalid data URL from storage"});let[,H,F]=K,N=Buffer.from(F,"base64"),U=new Headers({"Content-Type":H,"Cache-Control":"private, max-age=86400"});return Bi$(U,H),new Response(N,{status:200,headers:U})}let G=new Headers;for(let K of GD6){let H=$.req.header(K);if(H)G.set(K,H)}let J=await fetch(Y,{headers:G});if(J.status===403||J.status===404)throw new Z$(404,{message:"File not found"});if(!J.ok&&J.status!==304&&J.status!==416)throw console.error(`[files] upstream storage error ${J.status} for key:`,Q),new Z$(502,{message:"Upstream storage error"});let W=new Headers;for(let K of JD6){let H=J.headers.get(K);if(H)W.set(K,H)}return W.set("Cache-Control","private, max-age=86400"),Bi$(W,W.get("content-type")??""),new Response(J.body,{status:J.status,headers:W})});Di$=Oi$});var da=_((bv)=>{var WD6=bv&&bv.__createBinding||(Object.create?function($,Z,X,Q){if(Q===void 0)Q=X;var Y=Object.getOwnPropertyDescriptor(Z,X);if(!Y||("get"in Y?!Z.__esModule:Y.writable||Y.configurable))Y={enumerable:!0,get:function(){return Z[X]}};Object.defineProperty($,Q,Y)}:function($,Z,X,Q){if(Q===void 0)Q=X;$[Q]=Z[X]}),KD6=bv&&bv.__exportStar||function($,Z){for(var X in $)if(X!=="default"&&!Object.prototype.hasOwnProperty.call(Z,X))WD6(Z,$,X)};Object.defineProperty(bv,"__esModule",{value:!0});KD6(_Y(),bv)});var ji$=_((wi$)=>{Object.defineProperty(wi$,"__esModule",{value:!0});wi$.version=void 0;wi$.version="3.4.0"});var Ai$=_((xH)=>{var HD6=xH&&xH.__importDefault||function($){return $&&$.__esModule?$:{default:$}};Object.defineProperty(xH,"__esModule",{value:!0});xH.NodeTransport=xH.VERSION=void 0;xH.nodeResolveHost=DD6;var $5=da(),FD6=T0("net"),VX1=T0("tls"),ND6=T0("path"),zi$=T0("fs"),UD6=HD6(T0("dns")),BD6=ji$();xH.VERSION=BD6.version;var OD6="nats.js";class Pi${socket;version;lang;yields=[];signal=(0,$5.deferred)();closedNotification=(0,$5.deferred)();options;connected=!1;tlsName="";done=!1;closeError;constructor(){this.lang=OD6,this.version=xH.VERSION}async connect($,Z){this.tlsName=$.tlsName,this.options=Z;let{tls:X}=this.options,{handshakeFirst:Q}=X||{};try{if(Q===!0)this.socket=await this.tlsFirst($);else this.socket=await this.dial($);if(this.done)this.socket?.destroy();let Y=await this.peekInfo();(0,$5.checkOptions)(Y,Z);let{tls_required:G,tls_available:J}=Y,W=J===!0&&Z.tls!==null;if(!Q&&(G||W))this.socket=await this.startTLS();if(this.done)this.socket?.destroy();if(G&&this.socket.encrypted!==!0)throw $5.errors.InvalidArgumentError.format("tls","is not available on this server");return this.connected=!0,this.setupHandlers(),this.signal.resolve(),Promise.resolve()}catch(Y){let G=Y;if(!G)G=new $5.errors.ConnectionError("error connecting - node provided an undefined error");let{code:J}=G,W=J==="ECONNREFUSED"?new $5.errors.ConnectionError("connection refused",{cause:G}):G;throw this.socket?.destroy(),W}}dial($){let Z=(0,$5.deferred)(),X,Q=(0,FD6.createConnection)($.port,$.hostname,()=>{Z.resolve(Q),Q.removeAllListeners()});return Q.on("error",(Y)=>{X=Y}),Q.on("close",()=>{Q.removeAllListeners(),Z.reject(X)}),Q.setNoDelay(!0),Z}get isClosed(){return this.done}close($){return this._closed($,!1)}peekInfo(){let $=(0,$5.deferred)(),Z;return this.socket.on("data",(X)=>{this.yields.push(X);let Q=$5.DataBuffer.concat(...this.yields),Y=(0,$5.extractProtocolMessage)(Q);if(Y!=="")try{let G=$5.INFO.exec(Y);if(!G)throw Error("unexpected response from server");let J=JSON.parse(G[1]);$.resolve(J)}catch(G){$.reject(G)}finally{this.socket.removeAllListeners()}}),this.socket.on("error",(X)=>{Z=X}),this.socket.on("close",()=>{this.socket.removeAllListeners(),$.reject(Z)}),$}loadFile($){if(!$)return Promise.resolve();let Z=(0,$5.deferred)();try{if($=(0,ND6.resolve)($),!(0,zi$.existsSync)($))Z.reject(Error(`${$} doesn't exist`));(0,zi$.readFile)($,(X,Q)=>{if(X)return Z.reject(X);Z.resolve(Q)})}catch(X){Z.reject(X)}return Z}async loadClientCerts(){let $={},{certFile:Z,cert:X,caFile:Q,ca:Y,keyFile:G,key:J}=this.options.tls;try{if(Z){let W=await this.loadFile(Z);if(W)$.cert=W}else if(X)$.cert=X;if(G){let W=await this.loadFile(G);if(W)$.key=W}else if(J)$.key=J;if(Q){let W=await this.loadFile(Q);if(W)$.ca=[W]}else if(Y)$.ca=Y;return Promise.resolve($)}catch(W){return Promise.reject(W)}}async tlsFirst($){let Z,X={servername:this.tlsName,rejectUnauthorized:!0};if(this.socket)X.socket=this.socket;if(typeof this.options.tls==="object")try{let Y=await this.loadClientCerts()||{};X=(0,$5.extend)(X,this.options.tls,Y)}catch(Y){return Promise.reject(new $5.errors.ConnectionError(Y.message,{cause:Y}))}let Q=(0,$5.deferred)();try{let Y=(0,VX1.connect)($.port,$.hostname,X,()=>{Y.removeAllListeners(),Q.resolve(Y)});Y.on("error",(G)=>{Z=G}),Y.on("secureConnect",()=>{if(X.rejectUnauthorized===!1)return;if(!Y.authorized)throw Y.authorizationError}),Y.on("close",()=>{Q.reject(Z),Y.removeAllListeners()}),Y.setNoDelay(!0)}catch(Y){Q.reject(new $5.errors.ConnectionError(Y.message,{cause:Y}))}return Q}async startTLS(){let $,Z={socket:this.socket,servername:this.tlsName,rejectUnauthorized:!0};if(typeof this.options.tls==="object")try{let Q=await this.loadClientCerts()||{};Z=(0,$5.extend)(Z,this.options.tls,Q)}catch(Q){return Promise.reject(new $5.errors.ConnectionError(Q.message,{cause:Q}))}let X=(0,$5.deferred)();try{let Q=(0,VX1.connect)(Z,()=>{Q.removeAllListeners(),X.resolve(Q)});Q.on("error",(Y)=>{$=Y}),Q.on("secureConnect",()=>{if(Z.rejectUnauthorized===!1)return;if(!Q.authorized)throw Q.authorizationError}),Q.on("close",()=>{X.reject($),Q.removeAllListeners()})}catch(Q){X.reject(new $5.errors.ConnectionError(Q.message,{cause:Q}))}return X}setupHandlers(){let $;this.socket.on("data",(Z)=>{return this.yields.push(Z),this.signal.resolve()}),this.socket.on("error",(Z)=>{$=Z}),this.socket.on("end",()=>{if(this.socket?.destroyed)return;this.socket?.write(new Uint8Array(0),()=>{this.socket?.end()})}),this.socket.on("close",()=>{this._closed($,!1)})}[Symbol.asyncIterator](){return this.iterate()}async*iterate(){while(!0){if(this.yields.length===0)await this.signal;let $=this.yields;this.yields=[];for(let Z=0;Z<$.length;Z++){if(this.options.debug)console.info(`> ${(0,$5.render)($[Z])}`);yield $[Z]}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,$5.deferred)()}}discard(){if(this.done=!0,this.socket)try{this.socket.removeAllListeners(),this.socket.destroy()}catch{}}disconnect(){this._closed(void 0,!0).then().catch()}isEncrypted(){return this.socket instanceof VX1.TLSSocket}_send($){if(this.isClosed||this.socket===void 0)return Promise.resolve();if(this.options.debug)console.info(`< ${(0,$5.render)($)}`);let Z=(0,$5.deferred)();try{this.socket.write($,(X)=>{if(X){if(this.options.debug)console.error(`!!! ${(0,$5.render)($)}: ${X}`);return Z.reject(X)}return Z.resolve()})}catch(X){if(this.options.debug)console.error(`!!! ${(0,$5.render)($)}: ${X}`);Z.reject(X)}return Z}send($){this._send($).catch((X)=>{})}async _closed($,Z=!0){if(!this.connected)return;if(this.done){this.socket?.destroy();return}if(this.closeError=$,!$&&this.socket&&Z)try{await this._send(new TextEncoder().encode(""))}catch(X){if(this.options.debug)console.log("transport close terminated with an error",X)}try{if(this.socket)this.socket.removeAllListeners(),this.socket?.destroy(),this.socket=void 0}catch(X){console.log(X)}this.done=!0,this.closedNotification.resolve(this.closeError)}closed(){return this.closedNotification}}xH.NodeTransport=Pi$;function DD6($){let Z=(0,$5.deferred)();return UD6.default.lookup($,{all:!0},(X,Q)=>{if(X){Z.reject(X);return}let Y=[];for(let G of Q)Y.push(G.address);if(Y.length===0)Y.push($);Z.resolve(Y)}),Z}});var Mi$=_((qi$)=>{Object.defineProperty(qi$,"__esModule",{value:!0});qi$.connect=LD6;var Ti$=Ai$(),Ri$=da(),Ii$=da();function LD6($={}){if((0,Ii$.hasWsProtocol)($))return Promise.reject(Ii$.errors.InvalidArgumentError.format("servers","node client doesn't support websockets, use the 'wsconnect' function instead"));return(0,Ri$.setTransportFactory)({factory:()=>{return new Ti$.NodeTransport},dnsResolveFn:Ti$.nodeResolveHost}),Ri$.NatsConnectionImpl.connect($)}});var ki$=_((JU)=>{var ED6=JU&&JU.__createBinding||(Object.create?function($,Z,X,Q){if(Q===void 0)Q=X;var Y=Object.getOwnPropertyDescriptor(Z,X);if(!Y||("get"in Y?!Z.__esModule:Y.writable||Y.configurable))Y={enumerable:!0,get:function(){return Z[X]}};Object.defineProperty($,Q,Y)}:function($,Z,X,Q){if(Q===void 0)Q=X;$[Q]=Z[X]}),jD6=JU&&JU.__exportStar||function($,Z){for(var X in $)if(X!=="default"&&!Object.prototype.hasOwnProperty.call(Z,X))ED6(Z,$,X)};Object.defineProperty(JU,"__esModule",{value:!0});JU.connect=void 0;var zD6=Mi$();Object.defineProperty(JU,"connect",{enumerable:!0,get:function(){return zD6.connect}});jD6(da(),JU)});function _i$($){let Z=$?.connectFn??RD6,X=null,Q=null,Y=!1,G=!1,J=!1,W=[];function K(){return X!==null&&!X.isClosed()&&!X.isDraining()&&!J}function H(){console.log(`[NatsProvider] fireReady: ${W.length} callbacks`);for(let U of W)try{U()}catch{}}function F(U){(async()=>{for await(let B of U.status())if(B.type==="disconnect")console.log("[NatsProvider] Disconnected"),J=!0;else if(B.type==="reconnect")console.log("[NatsProvider] Reconnected, re-firing ready callbacks"),J=!1,Q=null,H()})().catch(()=>{})}async function N(U,B){let O=0;while(!G)try{X=await Z({servers:U,timeout:TD6,reconnect:!0,maxReconnectAttempts:-1,...B?{authenticator:B}:{}}),console.log(`[NatsProvider] Connected to ${X.getServer()} after ${O} attempt(s)`),Q=null,J=!1,F(X),H();return}catch{O++;let L=G7(AD6,PD6,O-1,2,0.5);await w$(L)}}return{init(U,B){if(Y)return;Y=!0,G=!1;let O=B?.creds?Vi$.credsAuthenticator(new TextEncoder().encode(B.creds)):void 0;N(U,O).catch(()=>{})},isConnected(){return K()},getConnection(){return K()?X:null},getJetStream(){if(!K())return null;if(!Q)Q=Ci$.jetstream(X);return Q},onReady(U){if(W.push(U),K())try{U()}catch{}},async drain(){if(G=!0,Y=!1,Q=null,J=!1,X){let U=X;X=null,await U.drain().catch(()=>{})}}}}function RD6($){return Si$.connect($)}var Vi$,Si$,Ci$,PD6=100,AD6=3000,TD6=3000;var vi$=D(()=>{W4();Vi$=V(ul(),1),Si$=V(ki$(),1),Ci$=V(wU(),1)});function SX1($,Z){return`${$}.${Z}`}class CX1{cache;constructor($){this.cache=Au({ttlMs:$?.ttlMs??ID6,maxSize:$?.maxSize??qD6})}async get($,Z){return this.cache.get(SX1($,Z))??null}async set($,Z,X){this.cache.set(SX1($,Z),X)}async invalidate($,Z){this.cache.delete(SX1($,Z))}teardown(){this.cache.clear()}}var ID6=600000,qD6=5000;var fi$=()=>{};function aT0($,Z){return`${$}:${Z}`}function _X1($){let Z=Au({ttlMs:$?.ttlMs??MD6,maxSize:$?.maxSize??kD6}),X=$?.getConnection,Q=crypto.randomUUID(),Y=new TextEncoder,G=new TextDecoder,J=null;function W(K,H){let F=X?.();if(!F)return;try{F.publish(bi$,Y.encode(JSON.stringify({organizationId:K,keyId:H,originId:Q})))}catch(N){console.warn("[ProviderKeyCache] Publish failed (non-critical):",N)}}return{get(K,H){return Z.get(aT0(K,H))},set(K,H,F){Z.set(aT0(K,H),F)},invalidate(K,H){Z.delete(aT0(K,H)),W(K,H)},start(){if(J)return;let K=X?.();if(!K)return;J=K.subscribe(bi$),(async()=>{for await(let H of J)try{let F=JSON.parse(G.decode(H.data));if(F.originId===Q)continue;Z.delete(aT0(F.organizationId,F.keyId))}catch{}})().catch(console.error)},teardown(){J?.unsubscribe(),J=null,Z.clear()}}}var bi$="studio.ai-provider-keys.invalidate",MD6=30000,kD6=5000;var xi$=()=>{};class vX1{options;subscription=null;onCancel=null;encoder=new TextEncoder;originId=crypto.randomUUID();constructor($){this.options=$}async start($){if($)this.onCancel=$;if(this.subscription)return;if(!this.onCancel)return;let Z=this.options.getConnection();if(!Z)return;let X=new TextDecoder,Q=Z.subscribe("studio.decopilot.cancel");this.subscription=Q,(async()=>{for await(let Y of Q)try{let G=JSON.parse(X.decode(Y.data));if(G.originId===this.originId)continue;this.onCancel?.(G.taskId)}catch{}})().catch(console.error)}broadcast($){if(/[.*>\s]/.test($)){console.warn("[NatsCancelBroadcast] Invalid threadId, skipping broadcast");return}this.onCancel?.($);try{let Z=this.options.getConnection();if(!Z)return;let X=this.encoder.encode(JSON.stringify({taskId:$,originId:this.originId}));Z.publish("studio.decopilot.cancel",X)}catch(Z){console.warn("[NatsCancelBroadcast] Publish failed (non-critical):",Z)}}async stop(){this.subscription?.unsubscribe(),this.subscription=null,this.onCancel=null}}var yi$=($)=>{let Z;return()=>Z??=$()},fX1,bX1;var gi$=D(()=>{G6();fX1=yi$(()=>J$.createHistogram("decopilot.stream.encode_ms",{description:"Per-chunk JSON.stringify+encode time for decopilot stream",unit:"ms"})),bX1=yi$(()=>J$.createCounter("decopilot.stream.published_chunks",{description:"Logical decopilot stream chunks published to JetStream",unit:"{chunks}"}))});function bD6($=li$){return{name:ZH,subjects:[`${ds0}.>`],storage:IW.StorageType.File,max_age:CD6,max_bytes:vD6,max_msgs_per_subject:fD6,discard:IW.DiscardPolicy.Old,retention:IW.RetentionPolicy.Limits,duplicate_window:_D6,num_replicas:$}}class ci${chunks=0;encodeMs=0;maxMs=0;bytes=0;windowStart=performance.now();constructor(){setInterval(()=>this.flush(),1e4).unref?.()}record($,Z){if(this.chunks++,this.encodeMs+=$,$>this.maxMs)this.maxMs=$;this.bytes+=Z}flush(){let $=performance.now(),Z=$-this.windowStart;if(this.chunks>0&&Z>0)console.warn(JSON.stringify({msg:"stream-encode-trace",windowMs:Math.round(Z),chunks:this.chunks,encodeMs:Math.round(this.encodeMs),pctOfLoop:+(this.encodeMs/Z*100).toFixed(1),maxChunkMs:+this.maxMs.toFixed(2),mbEncoded:+(this.bytes/1048576).toFixed(2)}));this.chunks=0,this.encodeMs=0,this.maxMs=0,this.bytes=0,this.windowStart=$}}function hi$($){let Z=ui$.headers();for(let[X,Q]of Object.entries($))Z.set(X,Q);return Z}function hD6($,Z){let X=0;return{publish(Q,Y,G,J){Q.publish(Y,G,J?{headers:J}:void 0).catch((W)=>{if(X++,SD6().add(1,{"org.id":Z??"unknown"}),X===1||X%100===0)console.warn(`[Decopilot] JetStream publish failed for thread ${$} (${X} total):`,W)})},get errorCount(){return X}}}function uD6($,Z){return $.info?.cluster?Z:1}function lD6($){if(!($ instanceof Error))return!1;if(/non-clustered/i.test($.message))return!0;return/replicas?\b/i.test($.message)&&/not supported|can ?not|exceed|insufficient|greater than/i.test($.message)}class xX1{options;js=null;jsm=null;constructor($){this.options=$}async init(){let $=this.options.getConnection();if(!$){console.log("[Decopilot] StreamBuffer.init skipped: NATS not connected yet");return}let Z=async(Q,Y)=>{let G=bD6(Y);try{await Q.streams.info(ZH),await Q.streams.update(ZH,G)}catch(J){if(J instanceof Error&&J.message.includes("stream not found"))await Q.streams.add(G),await Q.streams.update(ZH,G);else if(J instanceof Error&&/can ?not change.*storage|storage type/i.test(J.message))await Q.streams.delete(ZH),await Q.streams.add(G);else throw J}},X=await u6(async()=>{let Q=this.options.getJetStreamManager?await this.options.getJetStreamManager():await IW.jetstreamManager($),Y=uD6($,li$);try{await Z(Q,Y)}catch(G){if(Y<=1||!lD6(G))throw G;console.warn(`[Decopilot] StreamBuffer: NATS rejected num_replicas=${Y} (${G.message}); falling back to an unreplicated stream`),await Z(Q,1)}return Q},{maxAttempts:5,minTimeout:250,maxTimeout:4000,jitter:0.5,isRetriable:ig});this.js=this.options.getJetStream(),this.jsm=X,console.log(`[Decopilot] StreamBuffer.init ${this.js?"ready":"degraded (js=null)"}`)}pump($,Z,X,Q){let Y=this.js;if(!Y)return console.warn(`[Decopilot] pump: JetStream client unavailable for thread ${Z}; chunks NOT published to NATS`),Promise.resolve();let G=hD6(Z,Q),J=!1,W=()=>{if(J)return;J=!0;let H=WD$(Z);Y.publish(H.subject,H.data).catch(()=>{})};X.addEventListener("abort",W,{once:!0});let K=(H)=>{let F=performance.now(),N=is0(H,{runId:Z}),U=performance.now()-F;fX1().record(U),bX1().add(1,{"org.id":Q??"unknown"}),gD6?.record(U,N.reduce((B,O)=>B+O.data.length,0));for(let B of N)G.publish(Y,B.subject,B.data,B.headers?hi$(B.headers):void 0)};return(async()=>{let H=$.getReader(),F=0,N=0,U;try{while(!0){let{done:B,value:O}=await H.read();if(B)break;if(K(O),N++,++F>=64)F=0,await new Promise((L)=>setImmediate(L))}}catch(B){U=B,console.warn(`[Decopilot] stream pump error for thread ${Z}:`,B?.message??B)}finally{if(H.releaseLock(),W(),yD6)console.warn(JSON.stringify({msg:"decopilot-stream-diag",event:"pump-done",taskId:Z,publishedChunks:N,publishErrors:G.errorCount}))}if(U!==void 0)throw U})()}async publishSerialized($,Z){try{return await u6(()=>$.publish(Z.subject,Z.data,{...Z.headers?{headers:hi$(Z.headers)}:{},...Z.msgId?{msgID:Z.msgId}:{}}),{maxAttempts:6,minTimeout:250,maxTimeout:5000,jitter:0.5,isRetriable:ig}),!0}catch(X){return console.error(`[Decopilot] publish failed after retries subject=${Z.subject}`,X),!1}}async publishRawChunk($,Z,X){let Q=this.js;if(!Q)return!1;let Y=performance.now(),G=is0(Z,{runId:$,dedup:X});fX1().record(performance.now()-Y),bX1().add(1);for(let J of G)if(!await this.publishSerialized(Q,J))return!1;return!0}async publishDone($,Z,X){let Q=this.js;if(!Q)return!1;let Y=JD$({runId:$,fenceToken:Z,finalSeq:X});return await this.publishSerialized(Q,Y)}async createTailStream($,Z,X){let Q=this.js;if(!Q)return console.warn(`[Decopilot] createTailStream: JetStream client unavailable for thread ${$}; no live tail`),null;let Y=X?.deliverPolicy==="new"?IW.DeliverPolicy.New:IW.DeliverPolicy.All,G=X?.closeOnDone??!1,J=jD($),W;try{W=await u6(async()=>{return(await Q.consumers.get(ZH,{filter_subjects:J,deliver_policy:Y})).consume()},{maxAttempts:6,minTimeout:250,maxTimeout:5000,jitter:0.5,isRetriable:ig})}catch(L){return console.warn("[Decopilot] JetStream tail unavailable (non-critical):",L?.message??L),null}let F=Sw0({messages:async function*(){try{for await(let L of W)yield{subject:L.subject,data:L.data,headers:L.headers}}finally{W.stop()}}(),onCancel:()=>W.stop()}).pipeThrough(qw0()).pipeThrough(Mw0()).getReader(),N=!1,U=()=>{if(N)return;N=!0;try{F.releaseLock()}catch{}},B=!1,O=()=>{if(B)return;B=!0,W.stop(),F.cancel().catch(()=>{}),U()};return Z?.addEventListener("abort",O,{once:!0}),new ReadableStream({async pull(L){for(;;){let{done:w,value:E}=await F.read();if(w){O(),L.close();return}let j=E;if(j.kind==="done"){if(G){O(),L.close();return}continue}L.enqueue(j.chunk);return}},cancel(){O()}})}purge($){if(!this.jsm)return;this.jsm.streams.purge(ZH,{filter:jD($)}).catch(()=>{})}teardown(){this.js=null,this.jsm=null}}var IW,ui$,VD6=($)=>{let Z;return()=>Z??=$()},SD6,CD6=86400000000000,_D6=120000000000,vD6=4294967296,li$,fD6=500000,xD6,yD6,gD6;var di$=D(()=>{W4();ps0();Cw0();kw0();G6();gi$();IW=V(wU(),1),ui$=V(ul(),1),SD6=VD6(()=>J$.createCounter("decopilot.stream.publish_errors",{description:"Number of JetStream publish failures for decopilot stream chunks",unit:"{errors}"})),li$=Math.max(1,Number(process.env.DECOPILOT_STREAM_REPLICAS??3)||3);xD6=process.env.STREAM_ENCODE_TRACE==="1",yD6=process.env.DECOPILOT_STREAM_TRACE==="1";gD6=xD6?new ci$:null});function eT0($,Z,X,Q){if(!Q)return!1;return $.emit(Z,tW(X,Q.status,{title:Q.title??void 0,virtualMcpId:Q.virtual_mcp_id??void 0,createdBy:Q.created_by??void 0,triggerId:Q.trigger_id??null,branch:Q.branch??null,harnessId:Q.harness_id??void 0,createdAt:Q.created_at,updatedAt:Q.updated_at})),!0}var mi$=D(()=>{v8()});class yX1{storage;options;timer=null;constructor($,Z={}){this.storage=$;this.options=Z}start(){if(this.timer)return;let $=this.options.intervalMs??300000;this.timer=setInterval(()=>{this.runOnce()},$)}async runOnce(){let $=this.options.staleAfterMs??3600000;try{let Z=await this.storage.sweepAbandoned($);if(Z>0)console.log(`[async-research-sweeper] marked ${Z} stale jobs as abandoned`);return Z}catch(Z){return console.error("[async-research-sweeper] sweep failed",Z),0}}dispose(){if(this.timer)clearInterval(this.timer),this.timer=null}}async function ii$($,Z,X){let Q=Z.organizationId;if(!YY(Z,(await t9($,Q)).review))return!1;if(!mC(X))return!1;if(await $.storage.taskBoard.hasHumanRejectedDone(Z.id,Q))return!1;let Y=await $.storage.organizationSettings.get(Q),G=IK(Y?.flags),J=await A6($,Q),W=await $.storage.taskBoard.update(Z.id,Q,QY(J,G),Z.updatedBy);return await T6($,{taskBoardItemId:Z.id,action:"status_changed",actorId:null,data:{from:Z.status,to:G,reason:"pr_merged"}}),x$(Q,W),console.log(`[task-board-review-sweeper] ${Z.id}: linked PR already merged \u2014 moved to ${G}`),!0}var pi$=D(()=>{j6();BX();Mg();v5();pK();z5()});function tD6($){return $ instanceof ZQ}function oD6($,Z){return Z-$>=pD6}class gX1{taskBoard;contextFactory;billing;db;options;timer=null;running=!1;cursor=null;constructor($,Z,X,Q,Y={}){this.taskBoard=$;this.contextFactory=Z;this.billing=X;this.db=Q;this.options=Y}start(){if(this.timer)return;let $=this.options.intervalMs??cD6;this.timer=setInterval(()=>{this.runOnce()},$),this.timer.unref()}async runOnce(){if(this.running)return 0;this.running=!0;let $=0;try{let Z=this.options.batchSize??mD6,X=this.options.itemIntervalMs??dD6,Q=new Date(Date.now()-X),Y=await this.taskBoard.listItemsPendingReview(Z,this.cursor,Q),G=Y.at(-1);this.cursor=Y.length===Z&&G?{updatedAt:G.updatedAt,id:G.id}:null;for(let{id:J,organizationId:W}of Y)try{if(await this.reconcileItem(J,W,Q))$++}catch(K){console.error(`[task-board-review-sweeper] ${J} failed`,K)}await this.reapNeverStartedThreads(Z),$+=await this.dispatchDueRetries(Z),await this.reactToUnhandledFailures(Z)}catch(Z){console.error("[task-board-review-sweeper] sweep failed",Z)}finally{this.running=!1}return $}async reapNeverStartedThreads($){try{let Z=await this.taskBoard.failNeverStartedLinkedThreads($,new Date(Date.now()-Ko0),Ir0);for(let X of Z)console.warn(`[task-board-review-sweeper] failed never-started thread ${X.threadId} on ${X.itemId}`)}catch(Z){console.error("[task-board-review-sweeper] reaping failed",Z)}}async reactToUnhandledFailures($){let Z=await this.taskBoard.listItemsStuckAfterFailure($,new Date(Date.now()-nD6));for(let{id:X,organizationId:Q,threadId:Y}of Z)try{console.warn(`[task-board-review-sweeper] reacting to an unhandled failure on ${X}`),await Ar0(this.taskBoard,Y,Q,await lK(this.db,Q)),await Tr0(this.taskBoard,this.billing,Y,Q)}catch(G){console.error(`[task-board-review-sweeper] unhandled-failure reaction for ${X} failed`,G)}}async dispatchDueRetries($){let Z=0,X=await this.taskBoard.listItemsDueForRetry($,new Date);for(let{id:Q,organizationId:Y,attempts:G}of X)try{if(!await this.taskBoard.claimDueRetry(Q,Y,new Date))continue;let J=await this.taskBoard.getById(Q,Y),W=await lK(this.db,Y);if(!J||J.status!==W.progress||J.assigneeId!==Y8)continue;let K=await this.contextFactory(Y,J.assignedBy??J.createdBy);if(!K)continue;await zN(K,J,{runClass:"retry"}),Z++,console.warn(`[task-board-review-sweeper] re-dispatched ${Q} after a failure (attempt ${G})`)}catch(J){if(console.error(`[task-board-review-sweeper] retry dispatch for ${Q} failed`,J),tD6(J)){await this.returnToTodo(Q,Y,J instanceof Error?J.message:String(J));continue}await this.taskBoard.scheduleRunRetry(Q,Y,G,new Date(Date.now()+iD6),(await lK(this.db,Y)).progress).catch((W)=>console.error(`[task-board-review-sweeper] re-arming ${Q} failed`,W))}return Z}async returnToTodo($,Z,X){try{let Q=await lK(this.db,Z),Y=await this.taskBoard.getById($,Z);if(!Y||Y.status!==Q.progress)return;let G=await this.taskBoard.returnToTodoAfterFailure($,Z,Y.updatedBy,Q);if(!G)return;await this.taskBoard.recordActivity({taskBoardItemId:$,action:"status_changed",actorId:null,data:{from:"in_progress",to:"todo",reason:X}}).catch(()=>{}),x$(Z,G)}catch(Q){console.error(`[task-board-review-sweeper] returning ${$} to todo failed`,Q)}}async handOffReviewWithoutPr($,Z){let X=await this.taskBoard.listActivity(Z.id,Z.organizationId);if(!oD6(nF(X,Z.reviewCycleStartedAt),Date.now()))return;await tK($,Z,"no pull request is linked to this task \u2014 there is nothing for a "+"reviewer to review")}async reconcileItem($,Z,X){if(!await this.taskBoard.claimSweep($,Z,X))return!1;let Q=await this.taskBoard.getById($,Z);if(!Q)return!1;let Y=await lK(this.db,Z);if(!YY(Q,Y.review))return!1;let G=Q.assigneeId===Y8,J=await this.taskBoard.listPrs($,Z),W=await this.contextFactory(Z,Q.assignedBy??Q.createdBy);if(!W)return!1;if(J.length===0){if(G)await this.handOffReviewWithoutPr(W,Q);return!1}let K=await Promise.all(J.map(async(H)=>({...H,...await Vg(Z,H)})));if(K.every((H)=>H.state===null))console.warn(`[task-board-review-sweeper] ${$}: no live PR state from GitHub (${K.length} PR(s)) \u2014 proceeding on unknown`);if(await ii$(W,Q,K))return!0;if(await aD$(W,Q))return!0;if(await this.resolveConflictFromSweep(W,Q,K))return!0;if(!G)return!1;if(!Hr0(K))return!1;return await fL0(W,Q,{previewMatchesHead:Fr0(K)}),!0}async resolveConflictFromSweep($,Z,X){let Q=X.find((Y)=>Y.state!=="closed"&&Y.conflict===!0);if(!Q)return!1;return await ND($,Z.organizationId,Z,{pr:{number:Q.number,url:Q.url},conflict:!0}).catch((Y)=>{return console.error("[task-board-review-sweeper] conflict resolve failed",Y),!1})}dispose(){if(this.timer)clearInterval(this.timer),this.timer=null}}var cD6=60000,dD6=300000,mD6=50,iD6=60000,pD6=900000,nD6=120000;var ni$=D(()=>{v5();j6();Zr0();PN();Zo();pK();pi$();z5();JJ();qr0();GY();St();kg()});import{readdir as rD6,rm as $20}from"fs/promises";import{join as Z20}from"path";async function X20($){let Z=new Date;Z.setUTCDate(Z.getUTCDate()-sD6),Z.setUTCHours(0,0,0,0);let X=0;try{let Q=await xv($);for(let Y of Q)if(/^\d{4}$/.test(Y))X+=await ti$($,Y,Z);else if(!Y.startsWith(".")){let G=Z20($,Y),J=await xv(G);for(let K of J){if(!/^\d{4}$/.test(K))continue;X+=await ti$(G,K,Z)}if((await xv(G)).length===0)await $20(G,{recursive:!0,force:!0})}}catch(Q){console.warn("monitoring retention cleanup failed:",Q)}return X}async function ti$($,Z,X){let Q=0,Y=Z20($,Z),G=await xv(Y);for(let W of G){if(!/^\d{2}$/.test(W))continue;let K=Z20(Y,W),H=await xv(K);for(let N of H){if(!/^\d{2}$/.test(N))continue;let U=new Date(`${Z}-${W}-${N}T00:00:00Z`);if(isNaN(U.getTime()))continue;if(U<X){let B=Z20(K,N);await $20(B,{recursive:!0,force:!0}),Q++}}if((await xv(K)).length===0)await $20(K,{recursive:!0,force:!0})}if((await xv(Y)).length===0)await $20(Y,{recursive:!0,force:!0});return Q}async function xv($){try{return(await rD6($)).filter((X)=>!X.startsWith("."))}catch{return[]}}var sD6=30;var hX1=()=>{};import{DBOS as uX1,SchedulerMode as aD6}from"@dbos-inc/dbos-sdk";async function $L6(){let $=[nJ(),yv(),uH()],Z=0;for(let X of $)try{Z+=await X20(X)}catch(Q){console.error("[monitoring-retention] cleanup failed:",Q)}return console.log(`[monitoring-retention] deleted ${Z} day-dir(s) across ${$.length} signal dir(s)`),{deleted:Z,dirs:$.length}}async function ZL6($,Z){await uX1.runStep(()=>$L6(),{name:"monitoringRetention"})}function ri$(){if(oi$)return;oi$=!0;let $=uX1.registerWorkflow(ZL6,{name:"monitoringRetentionWorkflow"});uX1.registerScheduled($,{name:"monitoringRetentionWorkflow",crontab:eD6,mode:aD6.ExactlyOncePerIntervalWhenActive})}var eD6="23 4 * * *",oi$=!1;var si$=D(()=>{kY();hX1()});function ai$($){return async(Z,X)=>{let Q=await $.db.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["member.role","organization.id as orgId","organization.slug as orgSlug","organization.name as orgName"]).where("member.userId","=",X).where("member.organizationId","=",Z).executeTakeFirst();if(!Q)return console.warn(`[automationContextFactory] User ${X} not found in org ${Z} \u2014 returning null`),null;let Y=await EJ.create();Y.auth.user={id:X,role:Q.role},Y.organization={id:Q.orgId,slug:Q.orgSlug,name:Q.orgName};let G=await gt($.db,Z,Q.role);return Y.boundAuth=b91({auth:Y.authInstance,headers:new Headers,role:Q.role,permissions:G,userId:X}),Y.access=new WE(X,void 0,Y.boundAuth,Q.role,"self"),KD(Y,{id:Q.orgId,slug:Q.orgSlug}),Y}}var ei$=D(()=>{tB();HD()});function XL6(){return[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}]}function QL6(){return{services:XL6(),migrationsStatus:"pending",serverUrl:null,logs:[]}}function GL6(){for(let $ of YL6)$()}function $p$($){let Z=[...lX1.logs,$];lX1={...lX1,logs:Z.length>500?Z.slice(-500):Z},GL6()}function cX1(){return JL6}var lX1,YL6,JL6=!1;var dX1=D(()=>{lX1=QL6(),YL6=new Set});import{EventEmitter as WL6}from"events";var mX1;var Zp$=D(()=>{dX1();mX1=new WL6;mX1.on("request",($)=>{$p$($)})});function Xp$(){return async($,Z)=>{let X=Date.now(),Q=$.req.method,Y=$.req.path;if(Y==="/api/auth/get-session"||Y.includes("favicon")){await Z();return}let G="",J=!1;if(Y.startsWith("/mcp")&&Q==="POST"){J=!0;try{if($.req.header("Content-Type")?.includes("application/json")){let U=await $.req.raw.clone().json();if(U.method==="tools/call"&&U.params?.name){let B=Ll(U.params.name),O=U.params.arguments||{},L=Object.keys(O).map((E)=>Ll(E)),w=L.length>0?L.slice(0,3).join(",")+(L.length>3?"\u2026":""):"";G=`${K5.tool}${B}${K5.dim}(${w})${K5.reset}`}else if(U.method)G=`${K5.dim}${Ll(U.method)}${K5.reset}`}}catch{}}let W=Ll(Y);if(Y.startsWith("/mcp/conn_")){let F=Y.split("/")[2]??"";W=`/mcp/${K5.mcp}${Ll(F.slice(0,12))}\u2026${K5.reset}`}else if(Y==="/mcp")W=`${K5.mcp}/mcp${K5.reset}`;else if(Y==="/mcp/registry")W=`${K5.mcp}/mcp/registry${K5.reset}`;let K=HL6(Q),H=J?"\u25C0":"\u2190";if(!cX1())console.log(`${K5.dim}${H}${K5.reset} ${K}${Q}${K5.reset} ${W}${G?` ${G}`:""}`);try{await Z()}finally{let F=Date.now()-X,N=$.res.status,U=KL6(N),B=F<1000?`${F}ms`:`${(F/1000).toFixed(1)}s`,O=J?"\u25B6":"\u2192";if(!cX1())console.log(`${K5.dim}${O}${K5.reset} ${K}${Q}${K5.reset} ${W}${G?` ${G}`:""} ${U}${N}${K5.reset} ${K5.duration}${B}${K5.reset}`);mX1.emit("request",{method:Q,path:Ll(Y),status:N,duration:F,timestamp:new Date})}}}var K5,KL6=($)=>{if($>=500)return K5.serverError;if($>=400)return K5.clientError;if($>=300)return K5.redirect;return K5.ok},HL6=($)=>{return K5[$]||K5.reset},Ll=($)=>{return $.replace(/\r/g,"").replace(/\n/g,"").replace(/\x1b\[[0-9;]*m/g,"").replace(/[\x00-\x1f\x7f-\x9f]/g,"")};var Qp$=D(()=>{dX1();Zp$();K5={reset:"\x1B[0m",dim:"\x1B[2m",bold:"\x1B[1m",GET:"\x1B[36m",POST:"\x1B[33m",PUT:"\x1B[35m",DELETE:"\x1B[31m",ok:"\x1B[32m",redirect:"\x1B[36m",clientError:"\x1B[33m",serverError:"\x1B[31m",mcp:"\x1B[35m",tool:"\x1B[96m",duration:"\x1B[90m"}});import{createHmac as Wp$}from"crypto";import{mkdir as FL6,readdir as NL6,rm as Yp$,stat as Kp$}from"fs/promises";import{join as pX1,relative as UL6}from"path";import{z as T$}from"zod";function Fp$($){let Z=$.replace(/[^a-zA-Z0-9_-]/g,"_");return pX1(BL6,Z)}function Np$($){return $.replace(/^\/+/,"").replace(/\.\./g,"")}function iX1($,Z){let X=Fp$($),Q=Np$(Z);return pX1(X,Q)}function OL6($,Z,X,Q){let Y=C0().encryptionKey||"dev-secret",G=`${$}:${Z}:${X}:${Q}`;return Wp$("sha256",Y).update(G).digest("hex")}function Jp$($,Z,X,Q,Y){let G=Math.floor(Date.now()/1000)+Q,J=OL6(Z,X,G,Y),W=new URL(`/api/dev-assets/${Z}/${Np$(X)}`,$);return W.searchParams.set("expires",G.toString()),W.searchParams.set("signature",J),W.searchParams.set("method",Y),W.toString()}function Up$($,Z,X){let Q=`${$}:${Z.getTime()}:${X}`;return`"${Wp$("md5","etag").update(Q).digest("hex")}"`}async function Bp$($,Z,X,Q,Y){try{let G=await NL6($,{withFileTypes:!0});for(let J of G){let W=pX1($,J.name),H=UL6(Z,W).replace(/\\/g,"/");if(X&&!H.startsWith(X))continue;if(J.isDirectory())if(Q){let F=H+"/";if(!X||F.startsWith(X)){if(!(X?H.slice(X.length):H).includes("/"))Y.commonPrefixes.add(F)}}else await Bp$(W,Z,X,Q,Y);else if(J.isFile()){if(Q&&X){let F=H.slice(X.length);if(F.includes(Q)){let N=F.indexOf(Q),U=X+F.slice(0,N+1);Y.commonPrefixes.add(U);continue}}try{let F=await Kp$(W);Y.objects.push({key:H,size:F.size,lastModified:F.mtime.toISOString(),etag:Up$(W,F.mtime,F.size)})}catch{}}}}catch{}}function Op$($,Z){let Q=n($).id;return[{name:"LIST_OBJECTS",description:"List objects in the local assets directory with pagination support",inputSchema:T$.object({prefix:T$.string().optional(),maxKeys:T$.number().optional().default(1000),continuationToken:T$.string().optional(),delimiter:T$.string().optional()}),outputSchema:T$.object({objects:T$.array(T$.object({key:T$.string(),size:T$.number(),lastModified:T$.string(),etag:T$.string()})),nextContinuationToken:T$.string().optional(),isTruncated:T$.boolean(),commonPrefixes:T$.array(T$.string()).optional()}),handler:async(Y)=>{let G=Y,J=G.prefix||"",W=G.maxKeys??1000,K=G.delimiter,H=G.continuationToken,F=Fp$(Q);await FL6(F,{recursive:!0});let N={objects:[],commonPrefixes:new Set};await Bp$(F,F,J,K,N),N.objects.sort((w,E)=>w.key.localeCompare(E.key));let U=0;if(H){if(U=N.objects.findIndex((w)=>w.key>H),U===-1)U=N.objects.length}let B=N.objects.slice(U,U+W),O=U+W<N.objects.length,L=O?B[B.length-1]?.key:void 0;return{objects:B,isTruncated:O,nextContinuationToken:L,commonPrefixes:Array.from(N.commonPrefixes).sort()}}},{name:"GET_OBJECT_METADATA",description:"Get metadata for a file in the local assets directory",inputSchema:T$.object({key:T$.string()}),outputSchema:T$.object({contentType:T$.string().optional(),contentLength:T$.number(),lastModified:T$.string(),etag:T$.string(),metadata:T$.record(T$.string(),T$.string()).optional()}),handler:async(Y)=>{let G=Y,J=iX1(Q,G.key),W=await Kp$(J);return{contentType:IZ1(G.key),contentLength:W.size,lastModified:W.mtime.toISOString(),etag:Up$(J,W.mtime,W.size)}}},{name:"GET_PRESIGNED_URL",description:"Generate a presigned URL for downloading a file from local storage",inputSchema:T$.object({key:T$.string(),expiresIn:T$.number().optional()}),outputSchema:T$.object({url:T$.string(),expiresIn:T$.number()}),handler:async(Y)=>{let G=Y,J=G.expiresIn??Gp$;return{url:Jp$(Z,Q,G.key,J,"GET"),expiresIn:J}}},{name:"PUT_PRESIGNED_URL",description:"Generate a presigned URL for uploading a file to local storage",inputSchema:T$.object({key:T$.string(),expiresIn:T$.number().optional(),contentType:T$.string().optional()}),outputSchema:T$.object({url:T$.string(),expiresIn:T$.number()}),handler:async(Y)=>{let G=Y,J=G.expiresIn??Gp$;return{url:Jp$(Z,Q,G.key,J,"PUT"),expiresIn:J}}},{name:"DELETE_OBJECT",description:"Delete a single file from local storage",inputSchema:T$.object({key:T$.string()}),outputSchema:T$.object({success:T$.boolean(),key:T$.string()}),handler:async(Y)=>{let G=Y,J=iX1(Q,G.key);try{return await Yp$(J),{success:!0,key:G.key}}catch{return{success:!1,key:G.key}}}},{name:"DELETE_OBJECTS",description:"Delete multiple files from local storage",inputSchema:T$.object({keys:T$.array(T$.string()).max(1000)}),outputSchema:T$.object({deleted:T$.array(T$.string()),errors:T$.array(T$.object({key:T$.string(),message:T$.string()}))}),handler:async(Y)=>{let G=Y,J=[],W=[];return await Promise.all(G.keys.map(async(K)=>{let H=iX1(Q,K);try{await Yp$(H),J.push(K)}catch(F){W.push({key:K,message:F instanceof Error?F.message:"Unknown error"})}})),{deleted:J,errors:W}}}]}async function nX1($,Z,X){let Q=Op$(Z,X),Y=new ZK({name:"dev-assets-mcp",version:"1.0.0"},{capabilities:{tools:{}},jsonSchemaValidator:B5});for(let J of Q){let W="shape"in J.inputSchema?J.inputSchema.shape:T$.object({}).shape,K=J.outputSchema&&"shape"in J.outputSchema?J.outputSchema.shape:T$.object({}).shape;Y.registerTool(J.name,{description:J.description??"",inputSchema:W,outputSchema:K,annotations:J.annotations,_meta:J._meta},async(H)=>{try{let F=await J.handler(H);return{content:[{type:"text",text:JSON.stringify(F)}],structuredContent:F}}catch(F){return{content:[{type:"text",text:`Error: ${F.message}`}],isError:!0}}})}let G=new NQ({enableJsonResponse:$.headers.get("Accept")?.includes("application/json")??!1});return await Y.connect(G),MJ(Y,G,$,"mcp:dev-assets")}async function Dp$($,Z,X,Q){let G=Op$(X,Q).find((J)=>J.name===$);if(!G)return{content:[{type:"text",text:`Tool not found: ${$}`}],isError:!0};try{let J=await G.handler(Z);return{content:[{type:"text",text:JSON.stringify(J)}]}}catch(J){return{content:[{type:"text",text:J instanceof Error?J.message:String(J)}],isError:!0}}}var BL6="./data/assets",Gp$=3600,Hp$,Lp$;var wp$=D(()=>{E$();ag();Q8();Hm();E_();mX();aA0();Hp$=new K1;Hp$.all("/",async($)=>{let Z=$.get("studioContext"),X=new URL($.req.url),Q=`${X.protocol}//${X.host}`;return nX1($.req.raw,Z,Q)});Lp$=Hp$});var Ep$={};J4(Ep$,{mountDevRoutes:()=>DL6});function DL6($,Z){$.all("/mcp/:connectionId{.*_dev-assets$}",Z,async(Q)=>{let Y=Q.get("studioContext"),G=new URL(Q.req.url),J=`${G.protocol}//${G.host}`;return nX1(Q.req.raw,Y,J)}),$.all("/mcp/:connectionId{.*_dev-assets$}/call-tool/:toolName",Z,async(Q)=>{let Y=Q.get("studioContext"),G=new URL(Q.req.url),J=`${G.protocol}//${G.host}`,W=Q.req.param("toolName");if(!W)return Q.json({error:"Missing tool name"},400);let K=await Q.req.json(),H=await Dp$(W,K,Y,J);if(H.isError)return Q.json(H.content,500);return Q.json(H.content)}),$.use("/mcp/dev-assets",Z),$.route("/mcp/dev-assets",Lp$);let X=new K1;X.use("*",TW({mountPath:"/api/dev-assets"})),X.route("/",sA0({orgFromPath:!1})),$.route("/api/dev-assets",X)}var jp$=D(()=>{Q8();LZ1();aA0();wp$()});import{sql as LL6}from"kysely";import{randomUUID as zp$}from"crypto";import{z as wL6}from"zod";async function jL6($){let Z=new Date().toISOString(),X=zp$(),Q=_8.SELF($.organizationId),Y="registry.publish_request.created",G={requestId:$.request.id,requestedId:$.request.requested_id,title:$.request.title,status:$.request.status,createdAt:$.request.created_at,requester:{name:$.request.requester_name,email:$.request.requester_email}};await $.db.insertInto("events").values({id:X,organization_id:$.organizationId,type:"registry.publish_request.created",source:Q,specversion:"1.0",subject:$.request.id,time:Z,datacontenttype:"application/json",dataschema:null,data:JSON.stringify(G),cron:null,status:"pending",attempts:0,last_error:null,next_retry_at:null,created_at:Z,updated_at:Z}).execute();let J=await $.db.selectFrom("event_subscriptions").select(["id"]).where("organization_id","=",$.organizationId).where("enabled","=",1).where("event_type","=","registry.publish_request.created").where((W)=>W.or([W("publisher","is",null),W("publisher","=",Q)])).execute();if(J.length>0)await $.db.insertInto("event_deliveries").values(J.map((W)=>({id:zp$(),event_id:X,subscription_id:W.id,status:"pending",attempts:0,last_error:null,delivered_at:null,next_retry_at:null,created_at:Z}))).execute();try{await LL6`SELECT
2987
2987
  pg_notify('studio_events', ${X}),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "decocms",
3
- "version": "4.319.1",
3
+ "version": "4.319.2",
4
4
  "description": "Deco CMS — Self-hostable MCP Gateway for managing AI connections and tools",
5
5
  "author": "Deco team",
6
6
  "repository": {
@@ -1 +0,0 @@
1
- import{c as B,j as o,b as $,H as D,d as M,r as q,P as d,B as H,q as R}from"./index-DzWX3Cp7.js";import{s as V}from"./Plus-C1-Ar8V6.js";import{i as S}from"./Zap-CWUKEmdj.js";import{S as F}from"./search-input-CXLNkNlg.js";import{E as T}from"./empty-state-DKcBij1q.js";import{c as G}from"./use-automations-CFWyNfS1.js";import{c as J}from"./use-navigate-to-agent-q-tSB2RT.js";import{A as K}from"./automation-list-row-B2rpCbUW.js";import{h as O}from"./constants-dLUUoWH7.js";import{u as Q}from"./use-virtual-mcp-rD7iTKaS.js";import{R as U}from"./require-capability-DJ721q13.js";import"./SearchMd-Cbw_793f.js";import"./use-mcp-client-BSJVCOyq.js";import"./auth-u2nXBxlp.js";import"./use-destination-route-5ohWT7Qh.js";import"./hooks-D5T_ngz5.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./decopilot-sse-pool-BRSPyUN1.js";import"./task-board-5gg33Ohs.js";import"./schema-D8AYNAy-.js";import"./session-runtime-C-KTDVeQ.js";import"./slugify-CEUa2lfQ.js";import"./alert-dialog-DaZn9Nvz.js";import"./dropdown-menu-FLYHHrdp.js";import"./Check-DSjqiSlI.js";import"./ChevronRight-CFq-xjDr.js";import"./DotsVertical-D9HzRd7W.js";import"./Stars02-CNJhdHZL.js";import"./Trash01-B6uMSqgT.js";import"./agent-icon-XAlp8Jca.js";import"./AlertCircle-CvTl8GUk.js";import"./UserSquare-Ci10BLiP.js";import"./Tool01-FZuiStzo.js";import"./ArrowUp-D8TsT0Lm.js";import"./ArrowLeft-En4cxPnP.js";import"./Tool02-4ay4Rltz.js";import"./XCircle-fDpSGJss.js";import"./TrendUp01-BlXVhMez.js";import"./ZapSquare-CuLB3vSB.js";import"./ZoomOut-DBEFR5j8.js";import"./Users03-DoYa8GlE.js";import"./CheckCircle-D6G-NhwM.js";import"./ChevronDown-DhjGSQsl.js";import"./ChevronSelectorVertical-BE4HzvdJ.js";import"./ChevronUp-B8O2JP9t.js";import"./Copy01-DFbLtEE_.js";import"./CreditCard01-BedV58xE.js";import"./Download01-fMmULFBI.js";import"./Settings02-vjLIHGa1.js";import"./Eye-Dsgi67Qs.js";import"./FilterLines-_6k9yUOL.js";import"./Share07-C1Uf7qgT.js";import"./GitBranch01-DtCvW7mH.js";import"./Globe01-CpbZ1qSV.js";import"./Globe04-sA6q1ulU.js";import"./SwitchHorizontal01-CVGPFZX2.js";import"./HardDrive-jZCTSG6y.js";import"./Image01-QhTk0EJi.js";import"./Key01-DI1s7GXT.js";import"./LinkExternal01-BZQeEyC_.js";import"./LockUnlocked01-D6aTu88G.js";import"./LogOut01-C-Z_9N06.js";import"./Monitor01-CKGo6W4T.js";import"./Sun-C_FOMwDI.js";import"./Package-GAQe_Wih.js";import"./Palette-wN0ma8Xt.js";import"./Play-C9_Cyluj.js";import"./SearchLg-C6D1oQXi.js";import"./Shield01-Ce5yG-A0.js";import"./Stars01-DrMQPFwe.js";import"./Upload01-ILgL8mQU.js";import"./User01-BP-jVp5a.js";import"./Users01-7X-sDRIV.js";import"./XClose-Bk3zrAvS.js";import"./access-gate-R7rS3NRc.js";import"./capability-load-error-C_sjvMSo.js";function W(){const t=B.c(20),i=$(),{org:l}=D(),{data:C}=G(void 0),g=C===void 0?[]:C,k=Q(),P=J(),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:O(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(H,{size:"sm",onClick:L,children:[o.jsx(V,{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(K,{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 _o(){const t=B.c(1);let i;return t[0]===Symbol.for("react.memo_cache_sentinel")?(i=o.jsx(U,{capability:"automations:manage",area:"automations",children:o.jsx(W,{})}),t[0]=i):i=t[0],i}export{_o as default};
@@ -1 +0,0 @@
1
- import{c as B,b as L,j as r}from"./index-DzWX3Cp7.js";import{I as A}from"./input-CeihZKzh.js";import{L as F}from"./label-CSACuw4I.js";import{S as R,a as z,b as J,c as O,d as V}from"./select-BmVeV1Oo.js";import{T as D}from"./textarea-9Rz3z4Fn.js";import{e as M,w as $,j as q,y as G,J as H}from"./index-CUbU69yL.js";import{s as P}from"./primitives-D6jSNUFx.js";import{u as Q}from"./use-autosave-Dq4geAJo.js";import"./Check-DSjqiSlI.js";import"./ChevronDown-DhjGSQsl.js";import"./ChevronUp-B8O2JP9t.js";import"./ArrowUp-D8TsT0Lm.js";import"./chat-context-BmrkHxvs.js";import"./use-panel-navigate-DgzMtV_g.js";import"./use-destination-route-5ohWT7Qh.js";import"./thread-route-DeHkzwDt.js";import"./dialog-DTBCjL3p.js";import"./Copy01-DFbLtEE_.js";import"./Download01-fMmULFBI.js";import"./constants-dLUUoWH7.js";import"./session-runtime-C-KTDVeQ.js";import"./slugify-CEUa2lfQ.js";import"./hooks-D5T_ngz5.js";import"./use-mcp-client-BSJVCOyq.js";import"./auth-u2nXBxlp.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./decopilot-sse-pool-BRSPyUN1.js";import"./task-board-5gg33Ohs.js";import"./schema-D8AYNAy-.js";import"./use-is-desktop-app-BNujXJc_.js";import"./use-virtual-mcp-rD7iTKaS.js";import"./use-ai-providers-aLNvcjYm.js";import"./location-oTTXFrSF.js";import"./use-decopilot-events-DjOPFnW5.js";import"./use-organization-settings-MqNQsyj4.js";import"./automation-runs-CEP_ybkW.js";import"./agent-icon-XAlp8Jca.js";import"./AlertCircle-CvTl8GUk.js";import"./UserSquare-Ci10BLiP.js";import"./Tool01-FZuiStzo.js";import"./ArrowLeft-En4cxPnP.js";import"./Tool02-4ay4Rltz.js";import"./XCircle-fDpSGJss.js";import"./TrendUp01-BlXVhMez.js";import"./ZapSquare-CuLB3vSB.js";import"./ZoomOut-DBEFR5j8.js";import"./Users03-DoYa8GlE.js";import"./CheckCircle-D6G-NhwM.js";import"./ChevronRight-CFq-xjDr.js";import"./ChevronSelectorVertical-BE4HzvdJ.js";import"./DotsVertical-D9HzRd7W.js";import"./Stars02-CNJhdHZL.js";import"./CreditCard01-BedV58xE.js";import"./Settings02-vjLIHGa1.js";import"./Eye-Dsgi67Qs.js";import"./FilterLines-_6k9yUOL.js";import"./Share07-C1Uf7qgT.js";import"./GitBranch01-DtCvW7mH.js";import"./Globe01-CpbZ1qSV.js";import"./Globe04-sA6q1ulU.js";import"./SwitchHorizontal01-CVGPFZX2.js";import"./HardDrive-jZCTSG6y.js";import"./Image01-QhTk0EJi.js";import"./Key01-DI1s7GXT.js";import"./LinkExternal01-BZQeEyC_.js";import"./LockUnlocked01-D6aTu88G.js";import"./LogOut01-C-Z_9N06.js";import"./Monitor01-CKGo6W4T.js";import"./Sun-C_FOMwDI.js";import"./Package-GAQe_Wih.js";import"./Palette-wN0ma8Xt.js";import"./Play-C9_Cyluj.js";import"./Plus-C1-Ar8V6.js";import"./SearchLg-C6D1oQXi.js";import"./SearchMd-Cbw_793f.js";import"./Shield01-Ce5yG-A0.js";import"./Stars01-DrMQPFwe.js";import"./Trash01-B6uMSqgT.js";import"./Upload01-ILgL8mQU.js";import"./User01-BP-jVp5a.js";import"./Users01-7X-sDRIV.js";import"./XClose-Bk3zrAvS.js";import"./Zap-CWUKEmdj.js";import"./useInfiniteQuery-Dq0Mnrq6.js";import"./use-infinite-scroll-BlsiddiC.js";import"./use-connection-VZ53ErwX.js";import"./table-CH6JgQ5S.js";import"./empty-state-DKcBij1q.js";import"./use-members-j7jWCFsT.js";import"./use-org-auth-client-ByKmCPrY.js";import"./use-automations-CFWyNfS1.js";import"./useSuspenseInfiniteQuery-Cohw3A6l.js";import"./avatar-BbSi4Ahi.js";import"./format-time-BnbuEtat.js";import"./differenceInSeconds-NQ4PDo0z.js";import"./use-copy-CG3mMOGM.js";import"./markdown-CC0DcQj5.js";import"./monaco-editor-D2SIw1Et.js";import"./spinner-C4CawlPH.js";import"./editor-B1qIIE_V.js";import"./types-DQk9hRll.js";import"./shell-layout-DRlxyJgc.js";import"./required-auth-layout-ByPgJ6gr.js";import"./use-org-sso-DQw6J9tz.js";import"./integration-icon-BoEQOkUl.js";import"./use-navigate-to-agent-q-tSB2RT.js";import"./chart-GkhxWJ7A.js";import"./index-CljteriX.js";import"./AreaChart-DJSypADj.js";import"./form-BD0h205i.js";import"./file-type-icon-CEM_VOCL.js";import"./drawer-RsO7C1I2.js";import"./collection-search-CMowvqDA.js";import"./agent-capabilities-B52k7xCe.js";import"./use-mcp-tools-Cfilxpil.js";import"./tabs-CQgkEoZ3.js";import"./toggle-group-ZsqxhHJY.js";import"./super-agent-icon-BgHgBnGI.js";import"./self-tool-result-B86OvIYq.js";import"./alert-dialog-DaZn9Nvz.js";import"./extract-connection-data-TCmhOKLZ.js";import"./metadata-dUsYcpuu.js";import"./provision-repo-scoped-github-connection-CMPWtdMv.js";import"./use-debounced-value-CbZNeTWE.js";import"./authenticate-and-persist-oauth-BIKOg1Y0.js";import"./mcp-oauth-BtBczYS0.js";import"./track-Bm2TIrkx.js";import"./popover-VOQv4Dwp.js";import"./toolbar-CElQJFOW.js";import"./github-repo-picker-Bk4yNfvo.js";import"./connection-card-zpHiniPN.js";import"./use-registry-connections-eAaDtKjz.js";import"./retry-CErkP7V6.js";import"./connection-slug-CITJ0kGN.js";import"./connection-form-helpers-ic8oRIkL.js";import"./collection-tabs-CuiCeffA.js";import"./badge-uxylkj2W.js";import"./select-model-DkVH4gVC.js";import"./checkbox-BBMI6E1M.js";import"./ai-providers-logos-DD3qZ33J.js";import"./folder-icon-DcobLOu-.js";import"./dropdown-menu-FLYHHrdp.js";import"./question-004-sINsf4GQ.js";import"./use-status-sounds-BEnPvRlF.js";import"./skill-preview-BX5g9fdR.js";import"./use-file-configs-CsmxRybV.js";import"./site-slug-uya6Wp4-.js";import"./pt-BR-CLy76QW2.js";import"./use-debounced-autosave-C5UaQZ0N.js";import"./scroll-area-B1JJpr8q.js";import"./search-input-CXLNkNlg.js";import"./use-mcp-auth-status-BMecBA5H.js";import"./switch-Bjx8pCq6.js";import"./use-secrets-L2RIZChP.js";import"./config-BzzgD7df.js";import"./command-BDxbk6Rw.js";import"./index-Pso9Jce7.js";import"./get-initials-D-f_fDFw.js";import"./breadcrumb-ClZlgUkn.js";import"./use-tags-DtZPkyN3.js";import"./automation-list-row-B2rpCbUW.js";import"./site-error--i37Vnuw.js";import"./use-org-repo-syncs-C0jcZ4_s.js";import"./cards-CImABGVq.js";const U={authors:[{key:"name",labelKey:"sandbox.recordEditor.fieldName",widget:"text"},{key:"type",labelKey:"sandbox.recordEditor.fieldType",widget:"select",options:[{value:"Person",labelKey:"sandbox.recordEditor.optionPerson"},{value:"Organization",labelKey:"sandbox.recordEditor.optionOrganization"}]},{key:"email",labelKey:"sandbox.recordEditor.fieldEmail",widget:"text",placeholderKey:"sandbox.recordEditor.placeholderEmail"},{key:"jobTitle",labelKey:"sandbox.recordEditor.fieldJobTitle",widget:"text"},{key:"company",labelKey:"sandbox.recordEditor.fieldCompany",widget:"text"},{key:"avatar",labelKey:"sandbox.recordEditor.fieldAvatar",widget:"image"}]},W={authors:"sandbox.recordEditor.titleAuthor"};function ti(I){const t=B.c(39),{orgSlug:E,virtualMcpId:K,branch:w,kind:a,blockKey:b,block:f}=I,i=L();let h;t[0]!==w||t[1]!==E||t[2]!==K?(h={orgSlug:E,virtualMcpId:K,branch:w},t[0]=w,t[1]=E,t[2]=K,t[3]=h):h=t[3];const p=M(h);let g;t[4]!==f||t[5]!==a?(g=$(f,a),t[4]=f,t[5]=a,t[6]=g):g=t[6];const C=g;let k;t[7]!==b||t[8]!==a||t[9]!==p?(k=l=>{p.mutate({blockKey:b,data:G(b,a,l)})},t[7]=b,t[8]=a,t[9]=p,t[10]=k):k=t[10];const[e,S]=Q(C,k);let v;t[11]!==e||t[12]!==S?(v=(l,o)=>S({...e,[l]:o}),t[11]=e,t[12]=S,t[13]=v):v=t[13];const s=v,N=W[a];let n;t[14]!==i||t[15]!==N?(n=i(N),t[14]=i,t[15]=N,t[16]=n):n=t[16];let c;t[17]!==n?(c=r.jsx("span",{className:"text-sm font-medium",children:n}),t[17]=n,t[18]=c):c=t[18];let d;t[19]!==p.isError||t[20]!==p.isPending?(d=r.jsx(q,{isPending:p.isPending,isError:p.isError}),t[19]=p.isError,t[20]=p.isPending,t[21]=d):d=t[21];let y;t[22]!==c||t[23]!==d?(y=r.jsxs("div",{className:"flex h-12 shrink-0 items-center justify-between border-b px-6",children:[c,d]}),t[22]=c,t[23]=d,t[24]=y):y=t[24];const T=U[a];let x;if(t[25]!==e||t[26]!==s||t[27]!==i||t[28]!==T){let l;t[30]!==e||t[31]!==s||t[32]!==i?(l=o=>r.jsx("div",{className:"space-y-2",children:o.widget==="image"?r.jsx(H,{schema:{type:"string",format:"image-uri",title:i(o.labelKey)},value:e[o.key],onChange:m=>s(o.key,m),path:o.key,label:i(o.labelKey)}):o.widget==="select"?r.jsxs(r.Fragment,{children:[r.jsx(F,{htmlFor:o.key,children:i(o.labelKey)}),r.jsxs(R,{value:P(e[o.key])||o.options?.[0]?.value,onValueChange:m=>s(o.key,m),children:[r.jsx(z,{id:o.key,className:"h-10 w-full",children:r.jsx(J,{placeholder:i(o.labelKey)})}),r.jsx(O,{children:(o.options??[]).map(m=>r.jsx(V,{value:m.value,children:i(m.labelKey)},m.value))})]})]}):r.jsxs(r.Fragment,{children:[r.jsx(F,{htmlFor:o.key,children:i(o.labelKey)}),o.widget==="textarea"?r.jsx(D,{id:o.key,value:P(e[o.key]),onChange:m=>s(o.key,m.target.value),rows:3}):r.jsx(A,{id:o.key,value:P(e[o.key]),placeholder:o.placeholderKey?i(o.placeholderKey):void 0,onChange:m=>s(o.key,m.target.value),className:"h-10"})]})},o.key),t[30]=e,t[31]=s,t[32]=i,t[33]=l):l=t[33],x=T.map(l),t[25]=e,t[26]=s,t[27]=i,t[28]=T,t[29]=x}else x=t[29];let u;t[34]!==x?(u=r.jsx("div",{className:"min-w-0 flex-1 overflow-y-auto px-6 py-6",children:r.jsx("div",{className:"mx-auto max-w-xl space-y-6",children:x})}),t[34]=x,t[35]=u):u=t[35];let j;return t[36]!==u||t[37]!==y?(j=r.jsxs("div",{className:"flex h-full flex-col",children:[y,u]}),t[36]=u,t[37]=y,t[38]=j):j=t[38],j}export{ti as RecordEditor};
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/registry-layout-_CAlX2VJ.js","assets/index-DzWX3Cp7.js","assets/index-Blq7G79G.css","assets/Tool02-4ay4Rltz.js","assets/CheckCircle-D6G-NhwM.js","assets/Settings02-vjLIHGa1.js","assets/use-mcp-client-BSJVCOyq.js","assets/constants-dLUUoWH7.js","assets/auth-u2nXBxlp.js","assets/useInfiniteQuery-Dq0Mnrq6.js","assets/use-infinite-scroll-BlsiddiC.js","assets/badge-uxylkj2W.js","assets/input-CeihZKzh.js","assets/dropdown-menu-FLYHHrdp.js","assets/Check-DSjqiSlI.js","assets/ChevronRight-CFq-xjDr.js","assets/DotsVertical-D9HzRd7W.js","assets/table-CH6JgQ5S.js","assets/toggle-group-ZsqxhHJY.js","assets/use-view-mode-Co0Tc3Mm.js","assets/FilterLines-_6k9yUOL.js","assets/Globe01-CpbZ1qSV.js","assets/SearchMd-Cbw_793f.js","assets/dialog-DTBCjL3p.js","assets/AlertCircle-CvTl8GUk.js","assets/Download01-fMmULFBI.js","assets/Upload01-ILgL8mQU.js","assets/metadata-dUsYcpuu.js","assets/alert-dialog-DaZn9Nvz.js","assets/Trash01-B6uMSqgT.js","assets/label-CSACuw4I.js","assets/select-BmVeV1Oo.js","assets/ChevronDown-DhjGSQsl.js","assets/ChevronUp-B8O2JP9t.js","assets/switch-Bjx8pCq6.js","assets/textarea-9Rz3z4Fn.js","assets/ArrowLeft-En4cxPnP.js","assets/XCircle-fDpSGJss.js","assets/checkbox-BBMI6E1M.js","assets/Eye-Dsgi67Qs.js","assets/LinkExternal01-BZQeEyC_.js","assets/use-copy-CG3mMOGM.js","assets/Copy01-DFbLtEE_.js","assets/Key01-DI1s7GXT.js","assets/Plus-C1-Ar8V6.js","assets/mcp-oauth-BtBczYS0.js","assets/Play-C9_Cyluj.js"])))=>i.map(i=>d[i]);
2
- import{c as i,j as e,r as s,k as a,bq as o}from"./index-DzWX3Cp7.js";import{R as n}from"./require-capability-DJ721q13.js";import"./access-gate-R7rS3NRc.js";import"./capability-load-error-C_sjvMSo.js";const c=s.lazy(()=>o(()=>import("./registry-layout-_CAlX2VJ.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46])));function u(){const r=i.c(1);let t;return r[0]===Symbol.for("react.memo_cache_sentinel")?(t=e.jsx(n,{capability:"registry:manage",area:"the registry",children:e.jsx(s.Suspense,{fallback:e.jsx("div",{className:"flex-1 flex items-center justify-center",children:e.jsx(a,{size:20,className:"animate-spin text-muted-foreground"})}),children:e.jsx(c,{})})}),r[0]=t):t=r[0],t}export{u as default};
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/registry-layout-_CAlX2VJ.js","assets/index-DzWX3Cp7.js","assets/index-Blq7G79G.css","assets/Tool02-4ay4Rltz.js","assets/CheckCircle-D6G-NhwM.js","assets/Settings02-vjLIHGa1.js","assets/use-mcp-client-BSJVCOyq.js","assets/constants-dLUUoWH7.js","assets/auth-u2nXBxlp.js","assets/useInfiniteQuery-Dq0Mnrq6.js","assets/use-infinite-scroll-BlsiddiC.js","assets/badge-uxylkj2W.js","assets/input-CeihZKzh.js","assets/dropdown-menu-FLYHHrdp.js","assets/Check-DSjqiSlI.js","assets/ChevronRight-CFq-xjDr.js","assets/DotsVertical-D9HzRd7W.js","assets/table-CH6JgQ5S.js","assets/toggle-group-ZsqxhHJY.js","assets/use-view-mode-Co0Tc3Mm.js","assets/FilterLines-_6k9yUOL.js","assets/Globe01-CpbZ1qSV.js","assets/SearchMd-Cbw_793f.js","assets/dialog-DTBCjL3p.js","assets/AlertCircle-CvTl8GUk.js","assets/Download01-fMmULFBI.js","assets/Upload01-ILgL8mQU.js","assets/metadata-dUsYcpuu.js","assets/alert-dialog-DaZn9Nvz.js","assets/Trash01-B6uMSqgT.js","assets/label-CSACuw4I.js","assets/select-BmVeV1Oo.js","assets/ChevronDown-DhjGSQsl.js","assets/ChevronUp-B8O2JP9t.js","assets/switch-Bjx8pCq6.js","assets/textarea-9Rz3z4Fn.js","assets/ArrowLeft-En4cxPnP.js","assets/XCircle-fDpSGJss.js","assets/checkbox-BBMI6E1M.js","assets/Eye-Dsgi67Qs.js","assets/LinkExternal01-BZQeEyC_.js","assets/use-copy-CG3mMOGM.js","assets/Copy01-DFbLtEE_.js","assets/Key01-DI1s7GXT.js","assets/Plus-C1-Ar8V6.js","assets/mcp-oauth-BtBczYS0.js","assets/Play-C9_Cyluj.js"])))=>i.map(i=>d[i]);
2
- import{c as n,d as c,f as m,j as t,k as f,r as l,bq as p}from"./index-DzWX3Cp7.js";import{R as u}from"./require-capability-DJ721q13.js";import"./access-gate-R7rS3NRc.js";import"./capability-load-error-C_sjvMSo.js";const g=l.lazy(()=>p(()=>import("./registry-layout-_CAlX2VJ.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46])));function h(){const e=n.c(5),i=c();let s;e[0]===Symbol.for("react.memo_cache_sentinel")?(s={from:"/shell/$org"},e[0]=s):s=e[0];const{org:o}=m(s);let r;e[1]===Symbol.for("react.memo_cache_sentinel")?(r=t.jsx("div",{className:"h-full flex items-center justify-center",children:t.jsx(f,{size:20,className:"animate-spin text-muted-foreground"})}),e[1]=r):r=e[1];let a;return e[2]!==i||e[3]!==o?(a=t.jsx(u,{capability:"registry:manage",area:"the registry",children:t.jsx(l.Suspense,{fallback:r,children:t.jsx(g,{onBack:()=>i({to:"/$org/settings/store",params:{org:o}})})})}),e[2]=i,e[3]=o,e[4]=a):a=e[4],a}export{h as default};
@@ -1 +0,0 @@
1
- import{I as u}from"./use-infinite-scroll-BlsiddiC.js";import{fg as i}from"./index-DzWX3Cp7.js";function t(e,r){return i(e,u,r)}export{t as u};
@@ -1 +0,0 @@
1
- import{I as s}from"./use-infinite-scroll-BlsiddiC.js";import{fg as u,b$ as n}from"./index-DzWX3Cp7.js";function a(r,e){return u({...r,enabled:!0,suspense:!0,throwOnError:n},s,e)}export{a as u};