decocms 4.312.0 → 4.312.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (245) hide show
  1. package/dist/client/assets/{AlertCircle-erQ61Csc.js → AlertCircle-BeLg0OEa.js} +1 -1
  2. package/dist/client/assets/{AreaChart-DMEQyUac.js → AreaChart-DHYlsQ-J.js} +1 -1
  3. package/dist/client/assets/{ArrowLeft-DUvY_Ggx.js → ArrowLeft-Hziz3hcX.js} +1 -1
  4. package/dist/client/assets/{ArrowUp-PEgywjVQ.js → ArrowUp-Bkv1BktZ.js} +1 -1
  5. package/dist/client/assets/{Check-BMnpWKJZ.js → Check-DlW3wh-F.js} +1 -1
  6. package/dist/client/assets/{CheckCircle-C7ZjzPbu.js → CheckCircle-B3d31M5X.js} +1 -1
  7. package/dist/client/assets/{ChevronDown-9PKtT3SZ.js → ChevronDown-CCa4Us74.js} +1 -1
  8. package/dist/client/assets/{ChevronRight-BCHrZPUm.js → ChevronRight-AHVYwswH.js} +1 -1
  9. package/dist/client/assets/{ChevronSelectorVertical-BolxxISg.js → ChevronSelectorVertical-D26mjmAD.js} +1 -1
  10. package/dist/client/assets/{ChevronUp-lUj1GxXD.js → ChevronUp-C075PJNI.js} +1 -1
  11. package/dist/client/assets/{Copy01-CSAF6Gjy.js → Copy01-eVEUO1BR.js} +1 -1
  12. package/dist/client/assets/{CreditCard01-DYSIVOD4.js → CreditCard01-DBGe9HCk.js} +1 -1
  13. package/dist/client/assets/{DotsVertical-D2-2t9Qs.js → DotsVertical-hFGARBcT.js} +1 -1
  14. package/dist/client/assets/{Download01-CfPNpe6a.js → Download01-DSDKgJCG.js} +1 -1
  15. package/dist/client/assets/{ErrorBarContext-DGp8F9QK.js → ErrorBarContext-DRTB_5km.js} +1 -1
  16. package/dist/client/assets/{Eye-BUSWHmBR.js → Eye-Dh17VJzf.js} +1 -1
  17. package/dist/client/assets/{FilterLines-DiqR_6_e.js → FilterLines-O8w3z-kd.js} +1 -1
  18. package/dist/client/assets/{GitBranch01-SJfqK69-.js → GitBranch01-BZIL8jPO.js} +1 -1
  19. package/dist/client/assets/{Globe01-Cu-3J1fk.js → Globe01-DlGTkTi1.js} +1 -1
  20. package/dist/client/assets/{Globe04-Cl_DAF5T.js → Globe04-DWGaGi1K.js} +1 -1
  21. package/dist/client/assets/{HardDrive-Bg03Z2Sd.js → HardDrive-Bf5DJy_t.js} +1 -1
  22. package/dist/client/assets/{Image01-QOxG5W7w.js → Image01-9ce8M4Sh.js} +1 -1
  23. package/dist/client/assets/{Key01-B-BkMHjC.js → Key01-K5uAg_mE.js} +1 -1
  24. package/dist/client/assets/{LinkExternal01-R8OleOUn.js → LinkExternal01-BdNDHIdq.js} +1 -1
  25. package/dist/client/assets/{LockUnlocked01-CtpkJM6p.js → LockUnlocked01-DjfKP5dD.js} +1 -1
  26. package/dist/client/assets/{LogOut01-BM-degft.js → LogOut01-B8SByZKY.js} +1 -1
  27. package/dist/client/assets/{Monitor01-BnMjKug_.js → Monitor01-a-sERFH8.js} +1 -1
  28. package/dist/client/assets/{Package-Dg1w9jFn.js → Package-CnR5_k0a.js} +1 -1
  29. package/dist/client/assets/{Palette-DSTOliNE.js → Palette-DUhptTZK.js} +1 -1
  30. package/dist/client/assets/{Play-D0gv8izV.js → Play-ChfmDXwL.js} +1 -1
  31. package/dist/client/assets/{Plus-ZZbNHet6.js → Plus-Bf67j5b4.js} +1 -1
  32. package/dist/client/assets/{SearchLg-BSIsO9PI.js → SearchLg-D8Oaed-v.js} +1 -1
  33. package/dist/client/assets/{SearchMd-DDRA5KzP.js → SearchMd-CtObeRxQ.js} +1 -1
  34. package/dist/client/assets/{Sector-GwyrKxm-.js → Sector-D77uf4tx.js} +1 -1
  35. package/dist/client/assets/{Settings02-B24bXABo.js → Settings02-oOn1G0-W.js} +1 -1
  36. package/dist/client/assets/{Share07-BDCRsY0K.js → Share07-DAodQSUf.js} +1 -1
  37. package/dist/client/assets/{Shield01-Cm6GGaec.js → Shield01-DVufBFqD.js} +1 -1
  38. package/dist/client/assets/{Stars01-CbfoVgjy.js → Stars01-BV8PG32C.js} +1 -1
  39. package/dist/client/assets/{Stars02-BTetYz_Q.js → Stars02-CiaxpT3Q.js} +1 -1
  40. package/dist/client/assets/{Sun-DIPy3vdQ.js → Sun-Cf2oAfah.js} +1 -1
  41. package/dist/client/assets/{SwitchHorizontal01-DsahFk9R.js → SwitchHorizontal01-CLuWiWYV.js} +1 -1
  42. package/dist/client/assets/{Tool01-ZTea2nwD.js → Tool01-URKRN1LV.js} +1 -1
  43. package/dist/client/assets/{Tool02-BzYaX_I6.js → Tool02-TJJ3t6gz.js} +1 -1
  44. package/dist/client/assets/{Trash01-DylHh_3b.js → Trash01-DteOLmHF.js} +1 -1
  45. package/dist/client/assets/{TrendUp01-DGgs-Mwp.js → TrendUp01-CBYdlVlW.js} +1 -1
  46. package/dist/client/assets/{Upload01-sbpI7c_G.js → Upload01--st4GqN4.js} +1 -1
  47. package/dist/client/assets/{User01-BY3xo1l2.js → User01-CiaygqP-.js} +1 -1
  48. package/dist/client/assets/{UserSquare-Cdb0tuVA.js → UserSquare-Dlw2cZF9.js} +1 -1
  49. package/dist/client/assets/{Users01-DJ5M915m.js → Users01-B5Pe4_EA.js} +1 -1
  50. package/dist/client/assets/{Users03-DsPwUzEr.js → Users03-BNqf4Qly.js} +1 -1
  51. package/dist/client/assets/{XCircle-DzGXFEFq.js → XCircle-BB4ly_Fy.js} +1 -1
  52. package/dist/client/assets/{XClose-BZWOFNOV.js → XClose-Baw37AtZ.js} +1 -1
  53. package/dist/client/assets/{YAxis-C9J4nnzP.js → YAxis-BwD16Nm6.js} +1 -1
  54. package/dist/client/assets/{Zap-DKYzDMdW.js → Zap-mYSr0Wek.js} +1 -1
  55. package/dist/client/assets/{ZapSquare-BKXpEnlX.js → ZapSquare-DxNJd2U6.js} +1 -1
  56. package/dist/client/assets/{ZoomOut-B09dHsOp.js → ZoomOut-C8AuqoVh.js} +1 -1
  57. package/dist/client/assets/{access-gate-V9YXd7W-.js → access-gate-wL5NSDmD.js} +1 -1
  58. package/dist/client/assets/{agent-icon-B8ZyU8To.js → agent-icon-D1sCSiKF.js} +1 -1
  59. package/dist/client/assets/{agents-list-Dkktt606.js → agents-list-CPUTjxnw.js} +1 -1
  60. package/dist/client/assets/{ai-providers-dP2Q8sZt.js → ai-providers-CXTyNqA0.js} +1 -1
  61. package/dist/client/assets/{alert-sPvSeGyT.js → alert-BlU_j-cs.js} +1 -1
  62. package/dist/client/assets/{alert-dialog-CAn2oyVG.js → alert-dialog-B9Wu713C.js} +1 -1
  63. package/dist/client/assets/{analytics-tab-CTNHU39S.js → analytics-tab-DGzM7wh5.js} +1 -1
  64. package/dist/client/assets/{api-keys-Cx6crAGM.js → api-keys-CLZXfheg.js} +1 -1
  65. package/dist/client/assets/{app-editor-BTTt8mc0.js → app-editor-DBQlRvtL.js} +1 -1
  66. package/dist/client/assets/{auth-catchall-DuyCK1BB.js → auth-catchall-X5P-yb07.js} +1 -1
  67. package/dist/client/assets/{auth-entry-gxjrUngv.js → auth-entry-DIkJT2dc.js} +1 -1
  68. package/dist/client/assets/{auth-C1mLE9XU.js → auth-s6A3uRfL.js} +1 -1
  69. package/dist/client/assets/{auth-split-layout-BNoU88EG.js → auth-split-layout-BriNsvP7.js} +1 -1
  70. package/dist/client/assets/{authenticate-and-persist-oauth-4dr0p6al.js → authenticate-and-persist-oauth-M6Pg3L3l.js} +1 -1
  71. package/dist/client/assets/{automation-list-row-cL19IvLP.js → automation-list-row-BUy6GKki.js} +1 -1
  72. package/dist/client/assets/{automation-runs-tc_kUg3V.js → automation-runs-DlX6iGrS.js} +1 -1
  73. package/dist/client/assets/{automations-D9BbifAz.js → automations-CtUhg84k.js} +1 -1
  74. package/dist/client/assets/{avatar-UefRqfZY.js → avatar-BZTCe8-5.js} +1 -1
  75. package/dist/client/assets/{badge-CD65OXUc.js → badge-BsIPlJZV.js} +1 -1
  76. package/dist/client/assets/{block-document-_0lPYWb2.js → block-document-C0tIKifa.js} +1 -1
  77. package/dist/client/assets/{breadcrumb-C5DKBsgD.js → breadcrumb-BEa20Dq9.js} +1 -1
  78. package/dist/client/assets/{buckets-Ddry_dgw.js → buckets-DKZhUEFV.js} +1 -1
  79. package/dist/client/assets/{bulk-category-panel-NjpI6WG8.js → bulk-category-panel-NtDZjpJx.js} +1 -1
  80. package/dist/client/assets/{capability-load-error-CQIyho8_.js → capability-load-error-vTUXqY_i.js} +1 -1
  81. package/dist/client/assets/{cards-i7V3Ohf-.js → cards-C56w1Fhr.js} +1 -1
  82. package/dist/client/assets/{category-editor-mNXHYNk2.js → category-editor-BU0xvtCV.js} +1 -1
  83. package/dist/client/assets/{cdn-tab-BioYizIF.js → cdn-tab-CdLpbYfX.js} +1 -1
  84. package/dist/client/assets/{chart-Bk-JKPD2.js → chart-DH8NQFrc.js} +1 -1
  85. package/dist/client/assets/{chat-context-CsE4Em9d.js → chat-context-Cwy4gYt7.js} +1 -1
  86. package/dist/client/assets/{checkbox-CTg3o0P5.js → checkbox-BEoCyOwg.js} +1 -1
  87. package/dist/client/assets/{choose-editor-B-eRpEoa.js → choose-editor-DPiEXuMR.js} +1 -1
  88. package/dist/client/assets/{cli-auth-success-ChyGW1Xy.js → cli-auth-success-CuK7-rMh.js} +1 -1
  89. package/dist/client/assets/{collection-detail-B6n4EqsW.js → collection-detail--IPFv0o8.js} +1 -1
  90. package/dist/client/assets/{collection-display-button-ABCgwPii.js → collection-display-button-AcS0giyH.js} +1 -1
  91. package/dist/client/assets/{collection-search-DXVVf-zL.js → collection-search-Ox8kO5-h.js} +1 -1
  92. package/dist/client/assets/{collection-table-wrapper-CJMkA0mZ.js → collection-table-wrapper-ir1L5Clr.js} +1 -1
  93. package/dist/client/assets/{collection-tabs-CKcZSEUk.js → collection-tabs-8W0AH_AN.js} +1 -1
  94. package/dist/client/assets/{command-Cl72rv1d.js → command-BoGLFuE1.js} +1 -1
  95. package/dist/client/assets/{commerce-onboarding-B6C887Bh.js → commerce-onboarding-Cnslk33o.js} +1 -1
  96. package/dist/client/assets/{config-CAlIhXzi.js → config-disexc7o.js} +1 -1
  97. package/dist/client/assets/{connect-DkFEiagk.js → connect-YzQH064j.js} +1 -1
  98. package/dist/client/assets/{connection-rjsohKII.js → connection-DRd_wbWi.js} +1 -1
  99. package/dist/client/assets/{connection-card-B2HE0nqR.js → connection-card-CuIllKjp.js} +1 -1
  100. package/dist/client/assets/{connection-detail-CsBP4TKq.js → connection-detail-ClbmAcs3.js} +1 -1
  101. package/dist/client/assets/{connection-form-helpers-DotZ9Tl_.js → connection-form-helpers-tTfZ1zYn.js} +1 -1
  102. package/dist/client/assets/{connections-CEd9Km_8.js → connections-ldtGv7AO.js} +1 -1
  103. package/dist/client/assets/{decopilot-sse-pool-CZ1SP7T0.js → decopilot-sse-pool-C1nAL3yc.js} +1 -1
  104. package/dist/client/assets/{dialog-DDlgJ2sN.js → dialog-BJPX4yI2.js} +1 -1
  105. package/dist/client/assets/{domain-settings-Dil7AZhc.js → domain-settings-BNdJCIRF.js} +1 -1
  106. package/dist/client/assets/{drawer-KmmV0iEA.js → drawer-DH7Urq9Z.js} +1 -1
  107. package/dist/client/assets/{dropdown-menu-DcwzyPlb.js → dropdown-menu-Dx_97Ipc.js} +1 -1
  108. package/dist/client/assets/{e2e-tab-B1arysxd.js → e2e-tab-CtRAUCuG.js} +1 -1
  109. package/dist/client/assets/{editor-DGv-NuIB.js → editor-JroEa3Bu.js} +1 -1
  110. package/dist/client/assets/{empty-state-C06cDtPO.js → empty-state-CWWwYJhH.js} +1 -1
  111. package/dist/client/assets/{empty-state-DHrEGwcJ.js → empty-state-CngNBOI9.js} +1 -1
  112. package/dist/client/assets/{extract-connection-data-DlYlKYlH.js → extract-connection-data-BdEwlxLC.js} +1 -1
  113. package/dist/client/assets/{file-explorer-m3D5UgM7.js → file-explorer-CqOahf5V.js} +1 -1
  114. package/dist/client/assets/{file-type-icon-BhCVUCKb.js → file-type-icon-DTCeB_g8.js} +1 -1
  115. package/dist/client/assets/{folder-icon-eeQxBxpz.js → folder-icon--fbNhzfK.js} +1 -1
  116. package/dist/client/assets/{form-BluEq8Yf.js → form-CqdxfPhD.js} +1 -1
  117. package/dist/client/assets/{general-DJTlhLew.js → general-8HZ2H4cW.js} +1 -1
  118. package/dist/client/assets/{github-repo-picker-Cm0kjDEN.js → github-repo-picker-DPxC3SwT.js} +1 -1
  119. package/dist/client/assets/{hooks-bYz7fMXj.js → hooks-CrpJ_Ffi.js} +1 -1
  120. package/dist/client/assets/{hosting-tab-D2yuGnM5.js → hosting-tab-Cm1q8Snw.js} +1 -1
  121. package/dist/client/assets/{index-D7FRJn1g.js → index-BfXcbVpj.js} +6 -6
  122. package/dist/client/assets/{index-E_4hu3Iq.js → index-Br4lTs6E.js} +1 -1
  123. package/dist/client/assets/{index-BV5AjgPF.js → index-BuO63nSj.js} +1 -1
  124. package/dist/client/assets/{index-BaN-afoy.js → index-CbN6ma5j.js} +4 -4
  125. package/dist/client/assets/{index-BW79-pJh.js → index-Cm5Hqdiw.js} +1 -1
  126. package/dist/client/assets/{index-Bly0CQdb.js → index-DdnUJn4f.js} +1 -1
  127. package/dist/client/assets/{index-BEyplRzf.js → index-G1UMf5P8.js} +1 -1
  128. package/dist/client/assets/{index-CU0N13O2.js → index-MUNLcSyC.js} +1 -1
  129. package/dist/client/assets/{index-redirect-Dveb789_.js → index-redirect-B5p-QGda.js} +1 -1
  130. package/dist/client/assets/{index-6-MmFcOG.js → index-zw-h8M0l.js} +1 -1
  131. package/dist/client/assets/{infra-billing-trxZjHff.js → infra-billing-JqG8Xskk.js} +1 -1
  132. package/dist/client/assets/{input-BL44R0Ow.js → input-C18De6mQ.js} +1 -1
  133. package/dist/client/assets/{integration-icon-D1d3ScC9.js → integration-icon-CN9JaWW3.js} +1 -1
  134. package/dist/client/assets/{invite-member-dialog-B3LcOcZC.js → invite-member-dialog-DCquNquA.js} +1 -1
  135. package/dist/client/assets/{label-CnHLay7c.js → label-Cyj7Mlpb.js} +1 -1
  136. package/dist/client/assets/{layout-CfKGpisG.js → layout-BTUut94e.js} +1 -1
  137. package/dist/client/assets/{login-ylTvVCUW.js → login-DdVi_XRW.js} +1 -1
  138. package/dist/client/assets/{markdown-rRIwF6Tl.js → markdown-oh1ZxLHh.js} +1 -1
  139. package/dist/client/assets/{mcp-oauth-XE5sb7Li.js → mcp-oauth-ByVtbEgc.js} +1 -1
  140. package/dist/client/assets/{members-BFSOXBan.js → members-C6PdY9_H.js} +1 -1
  141. package/dist/client/assets/{monaco-editor-Bufxgtcu.js → monaco-editor-qMQJVBu4.js} +1 -1
  142. package/dist/client/assets/{monitoring-stats-row-fltpddPR.js → monitoring-stats-row-C-dmP6_l.js} +1 -1
  143. package/dist/client/assets/{multi-select-CcokUCBV.js → multi-select-KPDWdyKR.js} +1 -1
  144. package/dist/client/assets/{oauth-callback-DCtbHhkK.js → oauth-callback-DIJK8d3f.js} +1 -1
  145. package/dist/client/assets/{oauth-callback-ai-provider-i01GHizU.js → oauth-callback-ai-provider-fA4kkvO9.js} +1 -1
  146. package/dist/client/assets/{onboarding-myIoeddF.js → onboarding-D58axd8e.js} +1 -1
  147. package/dist/client/assets/{org-layout-lJol4Sjl.js → org-layout-a3jtp5qf.js} +1 -1
  148. package/dist/client/assets/{organization-choice-crjScBhg.js → organization-choice-VmRD3eZw.js} +1 -1
  149. package/dist/client/assets/{orgs-ByO9NcVJ.js → orgs-CU2Kw24q.js} +1 -1
  150. package/dist/client/assets/{page-seo-form-3CjuSXDX.js → page-seo-form-Cgw8bupx.js} +1 -1
  151. package/dist/client/assets/{popover-DuSVBlRA.js → popover-aV_Xg4Of.js} +1 -1
  152. package/dist/client/assets/{post-calendar-DJ6sTffw.js → post-calendar-BAIpUky1.js} +1 -1
  153. package/dist/client/assets/{post-editor-DWkALQer.js → post-editor-CDSpu4HO.js} +1 -1
  154. package/dist/client/assets/{primitives-CcR_JPr4.js → primitives-D4IkKSAn.js} +1 -1
  155. package/dist/client/assets/{profile-CbWrhNgm.js → profile-RBbgYNnM.js} +1 -1
  156. package/dist/client/assets/{project-app-view-CvH6Q6sP.js → project-app-view-Dlaw0ocq.js} +1 -1
  157. package/dist/client/assets/{prompts-BG0NCulT.js → prompts-Bi-yWMBp.js} +1 -1
  158. package/dist/client/assets/record-editor-DsXomBNF.js +1 -0
  159. package/dist/client/assets/{redirect-editor-dGpn_F9_.js → redirect-editor-CyuqoBw5.js} +1 -1
  160. package/dist/client/assets/registry-DJpcR69q.js +2 -0
  161. package/dist/client/assets/{registry-layout-B-AziaDa.js → registry-layout-Ciz7TP1B.js} +1 -1
  162. package/dist/client/assets/{reports-FtBFkp0W.js → reports-Bh4F11YF.js} +1 -1
  163. package/dist/client/assets/{require-capability-BwDCk_FF.js → require-capability-D8VH_KIH.js} +1 -1
  164. package/dist/client/assets/{required-auth-layout-CW9KKvJs.js → required-auth-layout-wRUdr2Rt.js} +1 -1
  165. package/dist/client/assets/{reset-password-CDHej_G1.js → reset-password-BgD4KJnI.js} +1 -1
  166. package/dist/client/assets/{review-settings-BVvEcggD.js → review-settings-BoJ3J-F0.js} +1 -1
  167. package/dist/client/assets/{roles-Cu6TMRVS.js → roles-C4ES-Aon.js} +1 -1
  168. package/dist/client/assets/{scroll-area-B1E7KSoI.js → scroll-area-BD73l_MJ.js} +1 -1
  169. package/dist/client/assets/{search-input-CysL8VTq.js → search-input-DQtmhNT9.js} +1 -1
  170. package/dist/client/assets/{secrets-DSpE0DaQ.js → secrets-bm-_nAau.js} +1 -1
  171. package/dist/client/assets/{sections-editor-Ci_h7-uN.js → sections-editor-eM9jwgqr.js} +1 -1
  172. package/dist/client/assets/{select-Ah6pA4WN.js → select-BQzsZ-B7.js} +1 -1
  173. package/dist/client/assets/{select-model-DJmYmPNQ.js → select-model-CiLI6nbI.js} +1 -1
  174. package/dist/client/assets/{self-tool-result-YY_PA6Ei.js → self-tool-result-BmFehtOS.js} +1 -1
  175. package/dist/client/assets/{seo-editor-Drl4Gi4p.js → seo-editor-DCbq4v24.js} +1 -1
  176. package/dist/client/assets/{settings-layout-DSnMkgLB.js → settings-layout-CvXscfIk.js} +1 -1
  177. package/dist/client/assets/{shell-controls-BE34Sa0j.js → shell-controls-BrarSy_t.js} +1 -1
  178. package/dist/client/assets/{shell-layout-Boak5urx.js → shell-layout-yqhz6OJ1.js} +1 -1
  179. package/dist/client/assets/{skill-preview-CDTzUPvk.js → skill-preview-Dk1uxwvd.js} +1 -1
  180. package/dist/client/assets/{skills-DXspCwcR.js → skills-CR-RwzWt.js} +1 -1
  181. package/dist/client/assets/{spinner-SR766PmX.js → spinner-Dx3J3X02.js} +1 -1
  182. package/dist/client/assets/{sso-CEUArSyO.js → sso-ClkZmQZj.js} +1 -1
  183. package/dist/client/assets/{store-OuLO7VHm.js → store-Bo4N7ChW.js} +1 -1
  184. package/dist/client/assets/store-registry-Dnr-V5pa.js +2 -0
  185. package/dist/client/assets/{super-agent-icon-t8-vanF-.js → super-agent-icon-DT9gV29F.js} +1 -1
  186. package/dist/client/assets/{switch-Cx3ZmK87.js → switch-Cfm7xrhv.js} +1 -1
  187. package/dist/client/assets/{synced-repos-C9eH23G9.js → synced-repos-BvufVT7t.js} +1 -1
  188. package/dist/client/assets/{table-rAhdo7uM.js → table-DbgCteiy.js} +1 -1
  189. package/dist/client/assets/{tabs-B2NRD1wq.js → tabs-D7nkJkAn.js} +1 -1
  190. package/dist/client/assets/{task-board-B-f8o5g_.js → task-board-CUiyFV7F.js} +1 -1
  191. package/dist/client/assets/{tasks-D3_jDwUh.js → tasks-Dgrb01PR.js} +1 -1
  192. package/dist/client/assets/{textarea-jO9kOIyu.js → textarea-DREuUgoZ.js} +1 -1
  193. package/dist/client/assets/{thread-route-Cc0oiNVD.js → thread-route-yERvFgpw.js} +1 -1
  194. package/dist/client/assets/{toggle-group-BPIvKnoi.js → toggle-group-BfL3tBzt.js} +1 -1
  195. package/dist/client/assets/{toolbar-CnijzIes.js → toolbar-DAnvoOO1.js} +1 -1
  196. package/dist/client/assets/{track-0h1IHC3e.js → track-DttJLiju.js} +1 -1
  197. package/dist/client/assets/{types--ygO-aFd.js → types-BKOepUVw.js} +1 -1
  198. package/dist/client/assets/{use-ai-providers-DswwTPO_.js → use-ai-providers-USgv0Lge.js} +1 -1
  199. package/dist/client/assets/{use-api-keys-BqQ0vnH9.js → use-api-keys-UpUv5Qqu.js} +1 -1
  200. package/dist/client/assets/{use-automations-kd9YNBmk.js → use-automations-BqN1nSMD.js} +1 -1
  201. package/dist/client/assets/{use-autosave-CEn6yDj-.js → use-autosave-ksFVHJ-0.js} +1 -1
  202. package/dist/client/assets/{use-connection-B9E5eLlH.js → use-connection-B_OVL3Jk.js} +1 -1
  203. package/dist/client/assets/{use-copy-DqhHJBdl.js → use-copy-D-O1MnWU.js} +1 -1
  204. package/dist/client/assets/{use-create-virtual-mcp-IUZtjgHU.js → use-create-virtual-mcp-DcTOkHSx.js} +1 -1
  205. package/dist/client/assets/{use-debounced-autosave--bvwrjLG.js → use-debounced-autosave-CSG2EKxO.js} +1 -1
  206. package/dist/client/assets/{use-debounced-value-Cl74M2HJ.js → use-debounced-value-Yya3_JlS.js} +1 -1
  207. package/dist/client/assets/{use-decopilot-events-DV09peZc.js → use-decopilot-events-DOhv8wvC.js} +1 -1
  208. package/dist/client/assets/{use-delete-connection-DQtzXEg-.js → use-delete-connection-gmofZhlv.js} +1 -1
  209. package/dist/client/assets/{use-deployment-admin-BzPkTGxv.js → use-deployment-admin-CAa7wGOX.js} +1 -1
  210. package/dist/client/assets/{use-destination-route-BzVEL0ve.js → use-destination-route-byNo8h9K.js} +1 -1
  211. package/dist/client/assets/{use-file-configs-B-ob-2D3.js → use-file-configs-ARsbyaV7.js} +1 -1
  212. package/dist/client/assets/{use-infinite-scroll-CRQF25ox.js → use-infinite-scroll-CUcvQqq5.js} +1 -1
  213. package/dist/client/assets/{use-join-requests-DmBkUwLI.js → use-join-requests-Dq1ByCe6.js} +1 -1
  214. package/dist/client/assets/{use-mcp-auth-status-41-K0lLH.js → use-mcp-auth-status-pGe-YSyX.js} +1 -1
  215. package/dist/client/assets/{use-mcp-client-BguAtqWP.js → use-mcp-client-BJoeSWeX.js} +1 -1
  216. package/dist/client/assets/{use-mcp-tools-Cl6zryQg.js → use-mcp-tools-CLqEV7iK.js} +1 -1
  217. package/dist/client/assets/{use-members-DMhcpvq9.js → use-members-DJaHuFO1.js} +1 -1
  218. package/dist/client/assets/{use-navigate-to-agent-BIUyGmt7.js → use-navigate-to-agent-D8zO-9YM.js} +1 -1
  219. package/dist/client/assets/{use-org-auth-client-Ci7AOL97.js → use-org-auth-client-BwNls522.js} +1 -1
  220. package/dist/client/assets/{use-org-repo-syncs-CR7zmwC_.js → use-org-repo-syncs-BCMyyzro.js} +1 -1
  221. package/dist/client/assets/{use-org-sso-C_OrVAlz.js → use-org-sso-HTKWbqxY.js} +1 -1
  222. package/dist/client/assets/{use-organization-roles-C9a2KiSW.js → use-organization-roles-CCn7EMNO.js} +1 -1
  223. package/dist/client/assets/{use-organization-settings-BT8Xme5X.js → use-organization-settings-DHxnfho9.js} +1 -1
  224. package/dist/client/assets/{use-panel-navigate-n9Wui3sy.js → use-panel-navigate-HE2P57kX.js} +1 -1
  225. package/dist/client/assets/{use-registry-connections-Y_DFULfU.js → use-registry-connections-D-NJdohj.js} +1 -1
  226. package/dist/client/assets/{use-secrets-BMr9hE9Y.js → use-secrets-pfFAZLh2.js} +1 -1
  227. package/dist/client/assets/{use-section-preview-base-D9Yujtha.js → use-section-preview-base-Dt4n4az0.js} +1 -1
  228. package/dist/client/assets/{use-status-sounds-SQ-suLiI.js → use-status-sounds-CdWIBKaN.js} +1 -1
  229. package/dist/client/assets/{use-tags-f3wgTc7t.js → use-tags-zjDSb_I3.js} +1 -1
  230. package/dist/client/assets/{use-view-mode-CxT4TFxL.js → use-view-mode-PuBHwWeq.js} +1 -1
  231. package/dist/client/assets/{use-virtual-mcp-DwE0rC-u.js → use-virtual-mcp-BVTWnLlf.js} +1 -1
  232. package/dist/client/assets/useInfiniteQuery-h0APTPuA.js +1 -0
  233. package/dist/client/assets/useSuspenseInfiniteQuery-R4NiE8S2.js +1 -0
  234. package/dist/client/assets/{users-CuerTfaL.js → users-DLr4OQZz.js} +1 -1
  235. package/dist/client/assets/{variant-calendar-hIvNmRnK.js → variant-calendar-B-VbIqLG.js} +1 -1
  236. package/dist/client/assets/{view-mode-toggle-a_OKH8_-.js → view-mode-toggle-gbBc35Wa.js} +1 -1
  237. package/dist/client/index.html +1 -1
  238. package/dist/server/cli.js +1 -1
  239. package/dist/server/server.js +1 -1
  240. package/package.json +1 -1
  241. package/dist/client/assets/record-editor-D_rGbsMi.js +0 -1
  242. package/dist/client/assets/registry-CrPfhBFV.js +0 -2
  243. package/dist/client/assets/store-registry-C1iNd_Wx.js +0 -2
  244. package/dist/client/assets/useInfiniteQuery-B60Agqd0.js +0 -1
  245. package/dist/client/assets/useSuspenseInfiniteQuery-B2cNszKk.js +0 -1
@@ -2980,7 +2980,7 @@ Respond with the structured verdict and a short reason.`,ic$;var nc$=D(()=>{c4()
2980
2980
  ${G.join(`
2981
2981
  `)}`:Y}function rU6($){let Z=new Set;for(let X of $)for(let Q of X.split(`
2982
2982
  `)){let Y=Q.trim();if(/^Co-authored-by:\s/i.test(Y))Z.add(Y)}return[...Z]}var kd$=200,uU6=12,cU6,mU6=300,e71=3;var $X1=D(()=>{QL();vT0();cU6={aheadBy:0,behindBy:0,files:[]}});function sU6($){if(!$||$.includes(".."))return!1;return aU6.test($)}function Sd$($){let Z=typeof $.__resolveType==="string"?$.__resolveType:null;if(!Z||!sU6(Z))return null;let{__resolveType:X,...Q}=$;return{resolveType:Z,payload:Q}}function Cd$($,Z){return`${$.replace(/\/+$/,"")}/deco/invoke/${Z}`}var aU6;var _d$=D(()=>{aU6=/^[\w./@-]+$/});function ks($,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 vd$($,Z,X,Q){if(!Q.connectionId)throw new kv("Push requires a connected GitHub account. Connect mcp-github for this project and restart the sandbox.");let Y=$.organization?.id;if(!Y)throw new kv(H9);await lO({ctx:$,connectionId:Q.connectionId,organizationId:Y,forceRefresh:!0,onLegacyMintError:(F)=>{let N=F instanceof Error?F.message:H9;throw new kv(N)}});let{cloneUrl:G,gitUserName:J,gitUserEmail:W}=await bK(Q.connectionId,Q.owner,Q.name,$.db,$.vault).catch((F)=>{let{code:N,message:U}=F9$(F instanceof Error?F.message:String(F));throw N?new kv(U):F}),K=Zl($),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 uO(H,eU6).catch(()=>H.statusText);throw Error(`Failed to refresh sandbox git credentials (${H.status}): ${F}`)}}var eU6=10485760,kv;var ZX1=D(()=>{HJ();AT0();En();li0();ly();kv=class kv extends Error{constructor($){super($);this.name="GitPushAuthError"}}});function ZB6($){let Z=$.startsWith("thread:")?$.slice(7):$;if(!Z||Z.length>255||Z.includes("..")||Z.startsWith("/")||Z.endsWith("/")||Z.endsWith(".lock")||!$B6.test(Z))throw Error(`Invalid branch name: ${$}`)}function Vv($){return AbortSignal.any([$.req.raw.signal,AbortSignal.timeout(QB6)])}async function GB6($,Z){let X=$.var.studioContext,Q=WJ(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=VC(J?.metadata?.runtime);if(W)return W;let K=HD0(Z.virtualMcpMetadata),H=K==="cms"?await b71(X,{claimName:Z.claimName}):"alive",F=K==="cms"&&H!=="alive"?"cms":"sandbox",N=!!J&&(H==="gone"||H==="alive"&&K==="cms");if(N&&J)tn(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 JB6($){let Z=$.get("vmClaim");if(Z.runner)return Z.runner;try{return await WQ($.var.studioContext)}catch{return null}}function Sv($){let{runner:Z}=$.get("vmClaim");if(!Z)return $.json({error:"No sandbox runner configured"},503);return Z}async function Jl($){let{virtualMcpMetadata:Z,connectionIds:X}=$.get("vmClaim"),Q=$.var.studioContext,Y=ks(Z,X);if(!Y)throw new h4(404,"AUTH","repo","Project has no GitHub repository");let G=n(Q);return TT0(Q,G.id,Y)}function XX1($,Z){if(Z instanceof qA0)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 xd$($,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 yd$($){try{let Z=await Jl($),X=await fT0(Z,$.get("vmClaim").branch);return $.json(X,200,T5)}catch(Z){return XX1($,Z)}}function Vs($,Z){let Q=(yT0.get($)??Promise.resolve()).catch(()=>{}).then(Z),Y=Q.catch(()=>{});return yT0.set($,Y),Y.finally(()=>{if(yT0.get($)===Y)yT0.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??Sv($);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?WB6(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 WB6($){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 gT0($,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 KB6($){return gd$.includes($)}var $B6,fd$=524288,XB6=65536,QB6=1e4,bd$=2000,YB6,yT0,T5,gd$,hd$=()=>{let $=new K1;$.use("/:virtualMcpId/:branch/*",YB6),$.post("/:virtualMcpId/:branch/write",(X)=>X7(X,"/_sandbox/write",{forwardJsonBody:!0,signal:Vv(X)})),$.post("/:virtualMcpId/:branch/unlink",(X)=>X7(X,"/_sandbox/unlink",{forwardJsonBody:!0,signal:Vv(X)})),$.post("/:virtualMcpId/:branch/mkdir",(X)=>X7(X,"/_sandbox/mkdir",{forwardJsonBody:!0,signal:Vv(X)})),$.post("/:virtualMcpId/:branch/rename",(X)=>X7(X,"/_sandbox/rename",{forwardJsonBody:!0,signal:Vv(X)})),$.post("/:virtualMcpId/:branch/read",(X)=>X7(X,"/_sandbox/read",{forwardJsonBody:!0,signal:Vv(X)})),$.post("/:virtualMcpId/:branch/glob",(X)=>X7(X,"/_sandbox/glob",{forwardJsonBody:!0,signal:Vv(X)})),$.post("/:virtualMcpId/:branch/grep",(X)=>X7(X,"/_sandbox/grep",{forwardJsonBody:!0,signal:Vv(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||!KB6(Q))return X.json({error:`step must be one of: ${gd$.join(", ")}`},400);let Y=X.get("vmClaim"),G=await b71(X.var.studioContext,{claimName:Y.claimName})==="gone"?null:await JB6(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=hy(Y.virtualMcpMetadata);try{await I70({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 ZU(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 hc$(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 yd$(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(bd$)])});return $.post("/:virtualMcpId/:branch/git/status",(X)=>{if(X.get("vmClaim").runtime==="cms")return yd$(X);return X7(X,"/_sandbox/git/status",{map404to410:!0,signal:AbortSignal.any([X.req.raw.signal,AbortSignal.timeout(bd$)])})}),$.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 Jl(X),J=await bT0(G,Q.branch,Y.base);return X.json(J,200,T5)}catch(Y){return XX1(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=Sv(X);if(Q instanceof Response)return Q;let{claimName:Y,virtualMcpMetadata:G,connectionIds:J}=X.get("vmClaim"),W=X.var.studioContext;return Vs(Y,async()=>{try{await x71(W,Q,Y);let K=ks(G,J);if(K)await vd$(W,Q,Y,K)}catch(K){if(K instanceof kv)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 Vs(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 Jl(X);return await Vd$(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 Vs(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 Vs(Q.claimName,async()=>{try{let W=await X.req.json().catch(()=>({})),K=await Jl(X),H=W.base??await K.getDefaultBranch();return await xT0(K,Q.branch,H),X.json({ok:!0},200,T5)}catch(W){return XX1(X,W)}});let Y=Sv(X);if(Y instanceof Response)return Y;let{claimName:G}=X.get("vmClaim"),J=X.var.studioContext;return Vs(G,async()=>{try{await x71(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",r5({maxSize:fd$,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=Sv(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]=h71(F)&&U?[F,N]:Y?await Promise.all([gT0(Y,G,"/_sandbox/git/status","GET",{userId:J,projectRef:W}),gT0(Y,G,"/_sandbox/git/diff","GET",{userId:J,projectRef:W})]):await(async()=>{let w=await Jl(X);return Promise.all([fT0(w,Q.branch),bT0(w,Q.branch)])})(),L=await mc$(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",r5({maxSize:fd$,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=Sv(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]=h71(F)&&U?[F,N]:Y?await Promise.all([gT0(Y,G,"/_sandbox/git/status","GET",{userId:J,projectRef:W}),gT0(Y,G,"/_sandbox/git/diff","GET",{userId:J,projectRef:W})]):await(async()=>{let w=await Jl(X);return Promise.all([fT0(w,Q.branch),bT0(w,Q.branch)])})(),L=await pc$(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=Sv(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 xd$(X,`${W}${G}`)}),$.post("/:virtualMcpId/:branch/preview-invoke",r5({maxSize:XB6,onError:(X)=>X.json({error:"Payload too large"},413)}),async(X)=>{let Q=Sv(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=Sd$(J);if(!W)return X.json({error:"Invalid or missing __resolveType"},400);let K=Cd$(G,W.resolveType);return xd$(X,K,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(W.payload),signal:AbortSignal.timeout(30000)})}),$};var ud$=D(()=>{X8();MH();$l();f71();Bn();xc$();n3();Yg();yc$();s3();gc$();uc$();gi0();Ln();c71();nc$();m71();QL();$X1();_d$();ZX1();$B6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;YB6=PT0(async($,Z)=>{let X=$.var.studioContext;try{o(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{ZB6(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=Nn({orgId:Y.id,virtualMcpId:G,branch:J}),H=await _i0(X,J),F=vi0(H,Q),N=bc$({userId:F,projectRef:K}),U=W.metadata??null,B=await GB6($,{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 WQ(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()});yT0=new Map;T5={"Cache-Control":"no-store, no-cache, must-revalidate",Pragma:"no-cache"};gd$=["clone","install","start"]});function ld$($,Z,X){let Q=QX1.get($);if(!Q)Q={pending:null,running:!1},QX1.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)FB6($,Q);return G}async function FB6($,Z){Z.running=!0;try{while(Z.pending){let X=Z.pending;Z.pending=null;try{let Q=await NB6(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)QX1.delete($)}}async function NB6($){let{client:Z,branch:X,packagePath:Q}=$.deps;for(let Y=0;;Y++){let G=await Gl(Z,X),J=await Z.getCommitTreeSha(G),W=await Z.getDecofileTree(J,Q),K=a71(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=s71(K,O),E=`${JSON.stringify(L,null,2)}
2983
- `,j=await Z.createBlob(E);await Id$(Z.owner,Z.repo,j,E);let z=w[0]??`${_T0(Q)}/${p71(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 s71(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}=Rs(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:UB6($),treeSha:U,parentShas:[G]});try{return await Z.updateRef(X,B),B}catch(O){if(!(O instanceof h4&&O.status===422)||Y>=HB6-1)throw O;await w$(G7(2000,200,Y,2,0.5))}}}function UB6($){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 qi0(Q,$.deps.coAuthor)}var HB6=3,QX1;var cd$=D(()=>{QD0();IT0();W4();QL();vT0();QX1=new Map});import{createHmac as dd$,randomBytes as BB6,timingSafeEqual as OB6}from"crypto";function md$(){if(hT0)return hT0;let $;try{let Z=C0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return hT0=$?Buffer.from($):BB6(32),hT0}function YX1($){let Z=$.nowMs??Date.now(),X={o:$.organizationId,m:$.virtualMcpId,b:$.branch,e:Math.floor((Z+DB6)/1000)},Q=Buffer.from(JSON.stringify(X)).toString("base64url"),Y=dd$("sha256",md$()).update(Q).digest("base64url");return`${Q}.${Y}`}function id$($,Z){let X=$.indexOf(".");if(X<0)return!1;let Q=$.slice(0,X),Y=Buffer.from($.slice(X+1)),G=Buffer.from(dd$("sha256",md$()).update(Q).digest("base64url"));if(Y.length!==G.length||!OB6(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 DB6=21600000,hT0=null;var pd$=D(()=>{E$()});import{z as Wl}from"zod";function wB6($){return $.length>0&&$.length<=255&&!$.includes("..")&&!$.endsWith("/")&&!$.endsWith(".lock")&&LB6.test($)}function ad$($){return $.req.header("x-forwarded-host")??new URL($.req.url).host}async function Ss($){let Z=$.get("decofileScope");return TT0($.var.studioContext,Z.organizationId,Z.githubRepo)}function Cs($,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 sd$(){let $=new K1;return $.use("/:virtualMcpId/:branch",rd$),$.use("/:virtualMcpId/:branch/*",rd$),$.get("/:virtualMcpId/:branch",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await Ss(Z),Y=await qd$(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=YX1({organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,branch:X.branch});return Z.body(`{"version":${JSON.stringify(Y.sha)},"token":${JSON.stringify(J)},"apiHost":${JSON.stringify(ad$(Z))},"decofile":${Y.decofile}}`,200,{...G,"content-type":"application/json"})}catch(Q){return Cs(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 Ss(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 Cs(Z,Y)}}),$.patch("/:virtualMcpId/:branch",jB6,async(Z)=>{let X=Z.get("decofileScope"),Q=Z.var.studioContext,Y=zB6.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{RT0(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(i71(J))return Z.json({error:`Block key "${J}" collides with a framework resolver module and cannot be written`},400)}try{let J=await Ss(Z),W=await ld$(`${X.organizationId}/${X.virtualMcpId}/${X.branch}`,{client:J,branch:X.branch,packagePath:X.packagePath,coAuthor:Zl(Q)},G),K=YX1({organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,branch:X.branch});return Z.json({version:W,token:K,apiHost:ad$(Z)})}catch(J){return Cs(Z,J)}}),$.post("/:virtualMcpId/:branch/publish",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await Ss(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 xT0(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 Cs(Z,Q)}}),$.get("/:virtualMcpId/:branch/status",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await Ss(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 Cs(Z,Q)}}),$}var LB6,nd$=500,td$=1048576,od$=1024,EB6=8388608,jB6,zB6,rd$;var ed$=D(()=>{Kt0();IT0();X8();MH();f71();AT0();ZX1();m71();cd$();pd$();$X1();QL();vT0();LB6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;jB6=r5({maxSize:EB6,onError:($)=>$.json({error:"Payload too large"},413)}),zB6=Wl.object({set:Wl.record(Wl.string(),Wl.unknown()).optional(),delete:Wl.array(Wl.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)<=nd$,{message:`Patch cannot touch more than ${nd$} blocks`}).refine(($)=>Object.values($.set??{}).every((Z)=>JSON.stringify(Z).length<=td$),{message:`Each block must be at most ${td$} bytes`}).refine(($)=>[...Object.keys($.set??{}),...$.delete??[]].every((Z)=>Z.length<=od$),{message:`Each block key must be at most ${od$} characters`}),rd$=PT0(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(!wB6(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||!id$(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(!KD0(K))return $.json({error:"Project has no preview server configured"},404);let F=W.connections?.map((B)=>B.connection_id)??[],N=ks(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 $m$=($)=>{let Z=new K1;if(Z.use("*",Ev),Z.route("/",xA0()),Z.route("/",Lh$()),Z.route("/",Ac$()),Z.route("/",jc$()),Z.route("/",ET0()),Z.route("/tools",Vc$()),Z.route("/",qc$()),Z.route("/",sl$({kvStorage:$.kvStorage})),Z.route("/",rl$()),Z.route("/fs",Uc$({getConnection:$.getNatsConnection})),Z.route("/sandbox",hd$()),Z.route("/decofile",sd$()),Z.route("/",Lc$()),Z.route("/deco-sites",gA0()),Z.route("/hosting",Gh$()),Z.route("/monitor",Uh$()),Z.route("/sso",SA0()),Z.route("/",jT0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",sg$()),$.mountDevAssets)Z.route("/dev-assets",lA0({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("/",jx$()),Z.get("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",$.betterAuthProtectedResourceHandler),Z.get("/mcp/.well-known/oauth-protected-resource",$.betterAuthProtectedResourceHandler),Z.route("/mcp/task-run",Oc$()),Z.route("/mcp",uw0()),Z.route("/mcp/self",wT0()),Z.route("/mcp",dw0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var Zm$=D(()=>{X8();$Z1();eg$();YZ1();Jh$();Bh$();cA0();ra();s91();al$();el$();Bc$();Qo();p91();mw0();M71();Dc$();wc$();zc$();Tc$();Mc$();V71();Sc$();S71();lw0();ud$();ed$()});function PB6($){return $.filter((Z)=>Z.vendors?.alias).map((Z)=>({name:Z.name,title:Z.title,description:Z.description,logo:Z.logo,category:Z.category,vendor:{alias:Z.vendors.alias,url:Z.vendors.url}}))}var AB6=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},Xm$=()=>{let $=new K1;return $.use("*",AB6),$.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:PB6(G)})}catch(G){return console.error("[deco-apps] GET error:",G),Z.json({error:"Failed to fetch apps"},502)}}),$};var Qm$=D(()=>{X8();E$();fP0()});import{z as M1}from"zod";function vH($,Z="invalid_request_error",X=null,Q=null){return{error:{message:$,type:Z,param:X,code:Q}}}function _B6($){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 vB6($,Z,X){try{return JSON.parse($)}catch{throw new Jm$(`Invalid JSON in tool call arguments for function '${X}' (tool_call_id: ${Z}): ${$}`)}}function fB6($){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:vB6(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 bB6($){let Z=$.map((X)=>{let Q=X.function.parameters?aY(X.function.parameters):aY({type:"object",properties:{}});return[X.function.name,h$({description:X.function.description,inputSchema:Q})]});return Object.fromEntries(Z)}function xB6($){if(!$)return;return{openai:{response_format:$}}}function yB6(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function Ym$($,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 Gm$($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var TB6=256,RB6,IB6,qB6,MB6,kB6,VB6,SB6,CB6,Jm$,Wm$,Km$;var Hm$=D(()=>{c4();X8();$l();fN();RB6=M1.object({type:M1.literal("function"),function:M1.object({name:M1.string(),description:M1.string().optional(),parameters:M1.record(M1.string(),M1.unknown()).optional()})}),IB6=M1.object({id:M1.string(),type:M1.literal("function"),function:M1.object({name:M1.string(),arguments:M1.string()})}),qB6=M1.discriminatedUnion("role",[M1.object({role:M1.literal("system"),content:M1.string(),name:M1.string().optional()}),M1.object({role:M1.literal("user"),content:M1.union([M1.string(),M1.array(M1.union([M1.object({type:M1.literal("text"),text:M1.string()}),M1.object({type:M1.literal("image_url"),image_url:M1.object({url:M1.string(),detail:M1.string().optional()})})]))]),name:M1.string().optional()}),M1.object({role:M1.literal("assistant"),content:M1.string().nullable().optional(),name:M1.string().optional(),tool_calls:M1.array(IB6).optional()}),M1.object({role:M1.literal("tool"),content:M1.string(),tool_call_id:M1.string()})]),MB6=M1.object({type:M1.literal("text")}),kB6=M1.object({type:M1.literal("json_object")}),VB6=M1.object({type:M1.literal("json_schema"),json_schema:M1.object({name:M1.string(),description:M1.string().optional(),schema:M1.record(M1.string(),M1.unknown()),strict:M1.boolean().optional()})}),SB6=M1.union([MB6,kB6,VB6]),CB6=M1.object({model:M1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:M1.array(qB6),stream:M1.boolean().optional().default(!1),temperature:M1.number().min(0).max(2).optional(),max_tokens:M1.number().positive().optional(),top_p:M1.number().min(0).max(1).optional(),frequency_penalty:M1.number().min(-2).max(2).optional(),presence_penalty:M1.number().min(-2).max(2).optional(),stop:M1.union([M1.string(),M1.array(M1.string())]).optional(),tools:M1.array(RB6).optional(),tool_choice:M1.union([M1.literal("auto"),M1.literal("none"),M1.literal("required"),M1.object({type:M1.literal("function"),function:M1.object({name:M1.string()})})]).optional(),response_format:SB6.optional(),user:M1.string().optional()});Jm$=class Jm$ extends Error{constructor($){super($);this.name="MessageConversionError"}};Wm$=new K1;Wm$.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),X=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(vH("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(vH("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(vH("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Q=await $.req.json(),Y=CB6.safeParse(Q);if(!Y.success){let w=Y.error.issues[0]??{message:"Invalid request",path:[]};return $.json(vH(`Invalid request: ${w.message}`,"invalid_request_error",w.path.length>0?w.path.join("."):null),400)}let G=Y.data,J=_B6(G.model);if(!J)return $.json(vH("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)=>zw(j.providerId));if(!E)return $.json(vH("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(vH(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(K),N=fB6(G.messages),U=G.tools?bB6(G.tools):void 0,B=xB6(G.response_format),O=yB6(),L=Math.floor(Date.now()/1000);if(G.stream)return ZU($,async(w)=>{let E=Ym$(F,N,U,G,B,$.req.raw.signal);try{let j=bO(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>=TB6)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:Gm$(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=Ym$(F,N,U,G,B,$.req.raw.signal),E=await vO(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:Gm$(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(vH("Request aborted","invalid_request_error"),400);if(Y.name==="MessageConversionError")return $.json(vH(Y.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",Y.message,Y.stack),$.json(vH(Y.message,"server_error"),500)}});Km$=Wm$});function gB6($){if(typeof $!=="object"||$===null)return!1;let X=$.githubRepo?.url;return typeof X==="string"&&X.length>0}function Fm$(){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(!XJ(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||hZ(H))continue;let F=await X.storage.virtualMcps.list(H.id);for(let N of F){if(le1(N)!==G)continue;if(!gB6(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 Nm$=D(()=>{X8();DO()});var Bm$;var Um$=D(()=>{Bm$={name:"decocms",version:"4.312.0",description:"Deco CMS \u2014 Self-hostable MCP Gateway for managing AI connections and tools",author:"Deco team",repository:{type:"git",url:"git+https://github.com/decocms/studio.git",directory:"apps/api"},bugs:{url:"https://github.com/decocms/studio/issues"},type:"module",bin:{deco:"./dist/server/cli.js"},files:["dist/**/*"],scripts:{dev:"bun run migrate && bun run dev:server","dev:server":"bun run --cwd=../../packages/sandbox build && NODE_ENV=development bun --env-file=.env --hot run src/index.ts",build:"bun run build:server","build:server":"bun run scripts/bundle-server-script.ts --dist ./dist/server","generate:tool-contracts":"bun run scripts/generate-tool-contracts.ts","db:migrate":"bun run ./dist/server/migrate.js","db:migrate:dbos":"bun run ./dist/server/migrate-dbos.js",check:"tsc --noEmit",start:"bun run ./dist/server/server.js",migrate:"bun run src/database/migrate.ts","migrate:dbos":"bun run src/database/migrate-dbos.ts",test:"bun test src","better-auth:migrate":"bunx --bun @better-auth/cli migrate -y --config src/auth/index.ts",prepublishOnly:"bun run --cwd=../.. build:studio"},optionalDependencies:{"@duckdb/node-api":"^1.5.0-r.1"},dependencies:{"@ai-sdk/anthropic":"^3.0.85","@ai-sdk/google":"^3.0.83","@ai-sdk/openai":"^3.0.73","@anthropic-ai/sdk":"^0.105.0","@aws-sdk/client-s3":"^3.1013.0","@aws-sdk/client-sts":"^3.1013.0","@aws-sdk/lib-storage":"^3.1013.0","@aws-sdk/s3-request-presigner":"^3.1013.0","@clickhouse/client":"^1.8.1","@dbos-inc/dbos-sdk":"^4.21.6","@inkjs/ui":"^2.0.0","@nats-io/jetstream":"3.4.0","@nats-io/kv":"3.4.0","@nats-io/nats-core":"3.4.0","@nats-io/transport-node":"3.4.0","@openrouter/ai-sdk-provider":"^2.9.1","@opentelemetry/core":"^2.6.0","embedded-postgres":"^18.3.0-beta.16",ink:"^6.8.0",kysely:"^0.28.12","posthog-node":"^5.0.0",react:"^19.2.6","react-dom":"^19.2.6"},devDependencies:{"@ai-sdk/provider":"^3.0.10","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/mcp-utils":"workspace:*","@decocms/runtime":"workspace:*","@decocms/sandbox":"workspace:*","@decocms/shared":"workspace:*","@jitl/quickjs-wasmfile-release-sync":"0.31.0","@modelcontextprotocol/sdk":"1.29.0","@opentelemetry/api":"^1.9.0","@opentelemetry/api-logs":"^0.211.0","@opentelemetry/exporter-logs-otlp-proto":"^0.211.0","@opentelemetry/exporter-prometheus":"^0.208.0","@opentelemetry/exporter-trace-otlp-proto":"^0.207.0","@opentelemetry/instrumentation-runtime-node":"^0.24.0","@opentelemetry/resources":"^2.6.0","@opentelemetry/sdk-logs":"^0.211.0","@opentelemetry/sdk-metrics":"^2.2.0","@opentelemetry/sdk-node":"^0.207.0","@opentelemetry/sdk-trace-base":"^2.5.0","@types/bun":"^1.3.1","@types/google.maps":"^3.65.2","@types/pg":"^8.15.6","@types/react-syntax-highlighter":"^15.5.13","@vercel/nft":"^1.1.1",ai:"^6.0.208","better-auth":"1.4.22",croner:"^9.1.0",degit:"^2.8.4",hono:"^4.10.7",jose:"^6.0.11",nanoid:"^5.1.6",pg:"^8.16.3",typescript:"^7.0.2",typescript5:"npm:typescript@^5.9.3",zod:"4.3.6"},homepage:"https://github.com/decocms/studio",keywords:["mcp","model-context-protocol","ai","gateway","self-hosted","tools"],license:"MIT",publishConfig:{access:"public"}}});function lB6(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??uB6}}var Om$,uB6="https://ph.studio.decocms.com",Dm$;var Lm$=D(()=>{X8();X90();sC();Y9();E$();y91();Um$();Om$=new K1;Om$.get("/",($)=>{let Z={version:Bm$.version,theme:Qp1(),..._F().logo&&{logo:_F().logo},...PN()&&{internalUrl:v_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:Kg$(),posthog:lB6(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:hs()}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});Dm$=Om$});function Kl($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function GX1($){return(Kl($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((X)=>X.charAt(0).toUpperCase()+X.slice(1)).join(" ")}function Em$($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(Kl($))}&sz=${Z}`}function wm$($,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 jm$($){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()?wm$(`${Y.trim().replace(/\s+/g," ")} \u2014 ${J}`,200):wm$(`How does ${X} really perform? ${J}`,200);return{title:G,description:W}}import{z as c0}from"zod";var Cv,cB6,dB6,mB6,iB6,zm$;var Pm$=D(()=>{Cv=c0.enum(["good","bad","neutral"]),cB6=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:Cv.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 $})),dB6=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(cB6)),mB6={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()},iB6=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:Cv.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:Cv.optional()}),c0.object({template:c0.literal("stats"),stats:c0.array(c0.object({value:c0.coerce.string(),label:c0.coerce.string(),tone:Cv.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:Cv.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(dB6).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:Cv.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:Cv.optional()})).min(1)})]),zm$=c0.object({...mB6,template:iB6})});function uT0($){let Z=[],X=[...$.sections].sort((Y,G)=>Y.position-G.position).map((Y)=>{let G=zm$.safeParse(Y.props);if(G.success)return G.data;let J=G.error.issues[0];return Z.push({section_type:Y.section_type,position:Y.position,reason:J?`${J.path.join(".")||"(root)"}: ${J.message}`:"contract violation"}),null}).filter((Y)=>Y!==null),Q=X.filter((Y)=>Y.template.template!=="cover"&&Y.template.template!=="cta").map((Y)=>({key:Y.key,title:Y.title}));return{deck:{meta:{...$.meta,scores:$.summary?.scores,scannedAt:$.scanned_at,toc:Q},slides:X},drops:Z}}var JX1=D(()=>{Pm$()});import{join as Am$}from"path";async function nB6($){try{let Z=await fetch(`${LK({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(pB6)});if(!Z.ok)return null;let X=await Z.json(),{deck:Q}=uT0(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()||GX1($),score:Q.meta.scores?.cover??J?.score?.value,verdict:Y?.annotation?.trim()||Y?.headline?.trim()||void 0}}catch{return null}}function PG($){return $.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;")}function tB6($,Z){let X=Kl($),Q=Z?.brand?.trim()||GX1(X),Y=Em$(X,128),J=`${(C0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(X)}`,{title:W,description:K}=jm$({brand:Q,domain:X,score:Z?.score,verdict:Z?.verdict}),H=`${J}/og.png`,F=`${Q} commerce report by decocms`;return[`<title>${PG(W)}</title>`,`<meta name="description" content="${PG(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="${PG(W)}" />`,`<meta property="og:description" content="${PG(K)}" />`,`<meta property="og:url" content="${PG(J)}" />`,`<meta property="og:image" content="${PG(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${PG(F)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${PG(W)}" />`,`<meta name="twitter:description" content="${PG(K)}" />`,`<meta name="twitter:image" content="${PG(H)}" />`,`<meta name="twitter:image:alt" content="${PG(F)}" />`,`<link rel="canonical" href="${PG(J)}" />`,`<link rel="icon" href="${PG(Y)}" sizes="any" />`].join(`
2983
+ `,j=await Z.createBlob(E);await Id$(Z.owner,Z.repo,j,E);let z=w[0]??`${_T0(Q)}/${p71(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 s71(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}=Rs(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:UB6($),treeSha:U,parentShas:[G]});try{return await Z.updateRef(X,B),B}catch(O){if(!(O instanceof h4&&O.status===422)||Y>=HB6-1)throw O;await w$(G7(2000,200,Y,2,0.5))}}}function UB6($){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 qi0(Q,$.deps.coAuthor)}var HB6=3,QX1;var cd$=D(()=>{QD0();IT0();W4();QL();vT0();QX1=new Map});import{createHmac as dd$,randomBytes as BB6,timingSafeEqual as OB6}from"crypto";function md$(){if(hT0)return hT0;let $;try{let Z=C0();$=Z.studioJwtSecret??Z.betterAuthSecret}catch{$=void 0}return hT0=$?Buffer.from($):BB6(32),hT0}function YX1($){let Z=$.nowMs??Date.now(),X={o:$.organizationId,m:$.virtualMcpId,b:$.branch,e:Math.floor((Z+DB6)/1000)},Q=Buffer.from(JSON.stringify(X)).toString("base64url"),Y=dd$("sha256",md$()).update(Q).digest("base64url");return`${Q}.${Y}`}function id$($,Z){let X=$.indexOf(".");if(X<0)return!1;let Q=$.slice(0,X),Y=Buffer.from($.slice(X+1)),G=Buffer.from(dd$("sha256",md$()).update(Q).digest("base64url"));if(Y.length!==G.length||!OB6(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 DB6=21600000,hT0=null;var pd$=D(()=>{E$()});import{z as Wl}from"zod";function wB6($){return $.length>0&&$.length<=255&&!$.includes("..")&&!$.endsWith("/")&&!$.endsWith(".lock")&&LB6.test($)}function ad$($){return $.req.header("x-forwarded-host")??new URL($.req.url).host}async function Ss($){let Z=$.get("decofileScope");return TT0($.var.studioContext,Z.organizationId,Z.githubRepo)}function Cs($,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 sd$(){let $=new K1;return $.use("/:virtualMcpId/:branch",rd$),$.use("/:virtualMcpId/:branch/*",rd$),$.get("/:virtualMcpId/:branch",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await Ss(Z),Y=await qd$(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=YX1({organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,branch:X.branch});return Z.body(`{"version":${JSON.stringify(Y.sha)},"token":${JSON.stringify(J)},"apiHost":${JSON.stringify(ad$(Z))},"decofile":${Y.decofile}}`,200,{...G,"content-type":"application/json"})}catch(Q){return Cs(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 Ss(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 Cs(Z,Y)}}),$.patch("/:virtualMcpId/:branch",jB6,async(Z)=>{let X=Z.get("decofileScope"),Q=Z.var.studioContext,Y=zB6.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{RT0(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(i71(J))return Z.json({error:`Block key "${J}" collides with a framework resolver module and cannot be written`},400)}try{let J=await Ss(Z),W=await ld$(`${X.organizationId}/${X.virtualMcpId}/${X.branch}`,{client:J,branch:X.branch,packagePath:X.packagePath,coAuthor:Zl(Q)},G),K=YX1({organizationId:X.organizationId,virtualMcpId:X.virtualMcpId,branch:X.branch});return Z.json({version:W,token:K,apiHost:ad$(Z)})}catch(J){return Cs(Z,J)}}),$.post("/:virtualMcpId/:branch/publish",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await Ss(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 xT0(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 Cs(Z,Q)}}),$.get("/:virtualMcpId/:branch/status",async(Z)=>{let X=Z.get("decofileScope");try{let Q=await Ss(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 Cs(Z,Q)}}),$}var LB6,nd$=500,td$=1048576,od$=1024,EB6=8388608,jB6,zB6,rd$;var ed$=D(()=>{Kt0();IT0();X8();MH();f71();AT0();ZX1();m71();cd$();pd$();$X1();QL();vT0();LB6=/^[a-zA-Z0-9][a-zA-Z0-9/._-]*$/;jB6=r5({maxSize:EB6,onError:($)=>$.json({error:"Payload too large"},413)}),zB6=Wl.object({set:Wl.record(Wl.string(),Wl.unknown()).optional(),delete:Wl.array(Wl.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)<=nd$,{message:`Patch cannot touch more than ${nd$} blocks`}).refine(($)=>Object.values($.set??{}).every((Z)=>JSON.stringify(Z).length<=td$),{message:`Each block must be at most ${td$} bytes`}).refine(($)=>[...Object.keys($.set??{}),...$.delete??[]].every((Z)=>Z.length<=od$),{message:`Each block key must be at most ${od$} characters`}),rd$=PT0(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(!wB6(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||!id$(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(!KD0(K))return $.json({error:"Project has no preview server configured"},404);let F=W.connections?.map((B)=>B.connection_id)??[],N=ks(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 $m$=($)=>{let Z=new K1;if(Z.use("*",Ev),Z.route("/",xA0()),Z.route("/",Lh$()),Z.route("/",Ac$()),Z.route("/",jc$()),Z.route("/",ET0()),Z.route("/tools",Vc$()),Z.route("/",qc$()),Z.route("/",sl$({kvStorage:$.kvStorage})),Z.route("/",rl$()),Z.route("/fs",Uc$({getConnection:$.getNatsConnection})),Z.route("/sandbox",hd$()),Z.route("/decofile",sd$()),Z.route("/",Lc$()),Z.route("/deco-sites",gA0()),Z.route("/hosting",Gh$()),Z.route("/monitor",Uh$()),Z.route("/sso",SA0()),Z.route("/",jT0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",sg$()),$.mountDevAssets)Z.route("/dev-assets",lA0({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("/",jx$()),Z.get("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",$.betterAuthProtectedResourceHandler),Z.get("/mcp/.well-known/oauth-protected-resource",$.betterAuthProtectedResourceHandler),Z.route("/mcp/task-run",Oc$()),Z.route("/mcp",uw0()),Z.route("/mcp/self",wT0()),Z.route("/mcp",dw0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var Zm$=D(()=>{X8();$Z1();eg$();YZ1();Jh$();Bh$();cA0();ra();s91();al$();el$();Bc$();Qo();p91();mw0();M71();Dc$();wc$();zc$();Tc$();Mc$();V71();Sc$();S71();lw0();ud$();ed$()});function PB6($){return $.filter((Z)=>Z.vendors?.alias).map((Z)=>({name:Z.name,title:Z.title,description:Z.description,logo:Z.logo,category:Z.category,vendor:{alias:Z.vendors.alias,url:Z.vendors.url}}))}var AB6=async($,Z)=>{if(!$.get("studioContext").auth.user?.id)return $.json({error:"Unauthorized"},401);return Z()},Xm$=()=>{let $=new K1;return $.use("*",AB6),$.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:PB6(G)})}catch(G){return console.error("[deco-apps] GET error:",G),Z.json({error:"Failed to fetch apps"},502)}}),$};var Qm$=D(()=>{X8();E$();fP0()});import{z as M1}from"zod";function vH($,Z="invalid_request_error",X=null,Q=null){return{error:{message:$,type:Z,param:X,code:Q}}}function _B6($){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 vB6($,Z,X){try{return JSON.parse($)}catch{throw new Jm$(`Invalid JSON in tool call arguments for function '${X}' (tool_call_id: ${Z}): ${$}`)}}function fB6($){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:vB6(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 bB6($){let Z=$.map((X)=>{let Q=X.function.parameters?aY(X.function.parameters):aY({type:"object",properties:{}});return[X.function.name,h$({description:X.function.description,inputSchema:Q})]});return Object.fromEntries(Z)}function xB6($){if(!$)return;return{openai:{response_format:$}}}function yB6(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function Ym$($,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 Gm$($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var TB6=256,RB6,IB6,qB6,MB6,kB6,VB6,SB6,CB6,Jm$,Wm$,Km$;var Hm$=D(()=>{c4();X8();$l();fN();RB6=M1.object({type:M1.literal("function"),function:M1.object({name:M1.string(),description:M1.string().optional(),parameters:M1.record(M1.string(),M1.unknown()).optional()})}),IB6=M1.object({id:M1.string(),type:M1.literal("function"),function:M1.object({name:M1.string(),arguments:M1.string()})}),qB6=M1.discriminatedUnion("role",[M1.object({role:M1.literal("system"),content:M1.string(),name:M1.string().optional()}),M1.object({role:M1.literal("user"),content:M1.union([M1.string(),M1.array(M1.union([M1.object({type:M1.literal("text"),text:M1.string()}),M1.object({type:M1.literal("image_url"),image_url:M1.object({url:M1.string(),detail:M1.string().optional()})})]))]),name:M1.string().optional()}),M1.object({role:M1.literal("assistant"),content:M1.string().nullable().optional(),name:M1.string().optional(),tool_calls:M1.array(IB6).optional()}),M1.object({role:M1.literal("tool"),content:M1.string(),tool_call_id:M1.string()})]),MB6=M1.object({type:M1.literal("text")}),kB6=M1.object({type:M1.literal("json_object")}),VB6=M1.object({type:M1.literal("json_schema"),json_schema:M1.object({name:M1.string(),description:M1.string().optional(),schema:M1.record(M1.string(),M1.unknown()),strict:M1.boolean().optional()})}),SB6=M1.union([MB6,kB6,VB6]),CB6=M1.object({model:M1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:M1.array(qB6),stream:M1.boolean().optional().default(!1),temperature:M1.number().min(0).max(2).optional(),max_tokens:M1.number().positive().optional(),top_p:M1.number().min(0).max(1).optional(),frequency_penalty:M1.number().min(-2).max(2).optional(),presence_penalty:M1.number().min(-2).max(2).optional(),stop:M1.union([M1.string(),M1.array(M1.string())]).optional(),tools:M1.array(RB6).optional(),tool_choice:M1.union([M1.literal("auto"),M1.literal("none"),M1.literal("required"),M1.object({type:M1.literal("function"),function:M1.object({name:M1.string()})})]).optional(),response_format:SB6.optional(),user:M1.string().optional()});Jm$=class Jm$ extends Error{constructor($){super($);this.name="MessageConversionError"}};Wm$=new K1;Wm$.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),X=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(vH("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(vH("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(vH("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Q=await $.req.json(),Y=CB6.safeParse(Q);if(!Y.success){let w=Y.error.issues[0]??{message:"Invalid request",path:[]};return $.json(vH(`Invalid request: ${w.message}`,"invalid_request_error",w.path.length>0?w.path.join("."):null),400)}let G=Y.data,J=_B6(G.model);if(!J)return $.json(vH("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)=>zw(j.providerId));if(!E)return $.json(vH("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(vH(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(K),N=fB6(G.messages),U=G.tools?bB6(G.tools):void 0,B=xB6(G.response_format),O=yB6(),L=Math.floor(Date.now()/1000);if(G.stream)return ZU($,async(w)=>{let E=Ym$(F,N,U,G,B,$.req.raw.signal);try{let j=bO(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>=TB6)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:Gm$(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=Ym$(F,N,U,G,B,$.req.raw.signal),E=await vO(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:Gm$(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(vH("Request aborted","invalid_request_error"),400);if(Y.name==="MessageConversionError")return $.json(vH(Y.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",Y.message,Y.stack),$.json(vH(Y.message,"server_error"),500)}});Km$=Wm$});function gB6($){if(typeof $!=="object"||$===null)return!1;let X=$.githubRepo?.url;return typeof X==="string"&&X.length>0}function Fm$(){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(!XJ(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||hZ(H))continue;let F=await X.storage.virtualMcps.list(H.id);for(let N of F){if(le1(N)!==G)continue;if(!gB6(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 Nm$=D(()=>{X8();DO()});var Bm$;var Um$=D(()=>{Bm$={name:"decocms",version:"4.312.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 lB6(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??uB6}}var Om$,uB6="https://ph.studio.decocms.com",Dm$;var Lm$=D(()=>{X8();X90();sC();Y9();E$();y91();Um$();Om$=new K1;Om$.get("/",($)=>{let Z={version:Bm$.version,theme:Qp1(),..._F().logo&&{logo:_F().logo},...PN()&&{internalUrl:v_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:Kg$(),posthog:lB6(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:hs()}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});Dm$=Om$});function Kl($){let Z=($??"").trim().toLowerCase();return Z=Z.replace(/^https?:\/\//,""),Z=Z.replace(/^www\./,""),Z=Z.split(/[/?#]/)[0]??"",Z.replace(/\/+$/,"")}function GX1($){return(Kl($).split(".")[0]||$).replace(/[-_]/g," ").split(" ").filter(Boolean).map((X)=>X.charAt(0).toUpperCase()+X.slice(1)).join(" ")}function Em$($,Z=64){return`https://www.google.com/s2/favicons?domain=${encodeURIComponent(Kl($))}&sz=${Z}`}function wm$($,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 jm$($){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()?wm$(`${Y.trim().replace(/\s+/g," ")} \u2014 ${J}`,200):wm$(`How does ${X} really perform? ${J}`,200);return{title:G,description:W}}import{z as c0}from"zod";var Cv,cB6,dB6,mB6,iB6,zm$;var Pm$=D(()=>{Cv=c0.enum(["good","bad","neutral"]),cB6=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:Cv.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 $})),dB6=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(cB6)),mB6={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()},iB6=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:Cv.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:Cv.optional()}),c0.object({template:c0.literal("stats"),stats:c0.array(c0.object({value:c0.coerce.string(),label:c0.coerce.string(),tone:Cv.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:Cv.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(dB6).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:Cv.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:Cv.optional()})).min(1)})]),zm$=c0.object({...mB6,template:iB6})});function uT0($){let Z=[],X=[...$.sections].sort((Y,G)=>Y.position-G.position).map((Y)=>{let G=zm$.safeParse(Y.props);if(G.success)return G.data;let J=G.error.issues[0];return Z.push({section_type:Y.section_type,position:Y.position,reason:J?`${J.path.join(".")||"(root)"}: ${J.message}`:"contract violation"}),null}).filter((Y)=>Y!==null),Q=X.filter((Y)=>Y.template.template!=="cover"&&Y.template.template!=="cta").map((Y)=>({key:Y.key,title:Y.title}));return{deck:{meta:{...$.meta,scores:$.summary?.scores,scannedAt:$.scanned_at,toc:Q},slides:X},drops:Z}}var JX1=D(()=>{Pm$()});import{join as Am$}from"path";async function nB6($){try{let Z=await fetch(`${LK({})}/api/v2/public/diagnostics/${encodeURIComponent($)}`,{headers:{Accept:"application/json"},signal:AbortSignal.timeout(pB6)});if(!Z.ok)return null;let X=await Z.json(),{deck:Q}=uT0(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()||GX1($),score:Q.meta.scores?.cover??J?.score?.value,verdict:Y?.annotation?.trim()||Y?.headline?.trim()||void 0}}catch{return null}}function PG($){return $.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;")}function tB6($,Z){let X=Kl($),Q=Z?.brand?.trim()||GX1(X),Y=Em$(X,128),J=`${(C0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(X)}`,{title:W,description:K}=jm$({brand:Q,domain:X,score:Z?.score,verdict:Z?.verdict}),H=`${J}/og.png`,F=`${Q} commerce report by decocms`;return[`<title>${PG(W)}</title>`,`<meta name="description" content="${PG(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="${PG(W)}" />`,`<meta property="og:description" content="${PG(K)}" />`,`<meta property="og:url" content="${PG(J)}" />`,`<meta property="og:image" content="${PG(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${PG(F)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${PG(W)}" />`,`<meta name="twitter:description" content="${PG(K)}" />`,`<meta name="twitter:image" content="${PG(H)}" />`,`<meta name="twitter:image:alt" content="${PG(F)}" />`,`<link rel="canonical" href="${PG(J)}" />`,`<link rel="icon" href="${PG(Y)}" sizes="any" />`].join(`
2984
2984
  `)}function oB6($,Z){return $.replace(/<title>[\s\S]*?<\/title>\s*/i,"").replace(/<meta\s+name="(?:description|twitter:[^"]*)"[^>]*>\s*/gi,"").replace(/<meta\s+property="og:[^"]*"[^>]*>\s*/gi,"").replace(/<link\s+rel="icon"[^>]*>\s*/gi,"").replace("</head>",` ${Z}
2985
2985
  </head>`)}function Tm$($){let Z=new K1;return Z.get("/:domain/og.png",async(X)=>{let Q=Kl(X.req.param("domain")),Y=async()=>{let G=$?Bun.file(Am$($,"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(`${LK({})}/api/v2/public/diagnostics/${encodeURIComponent(Q)}/og.png`,{signal:AbortSignal.timeout(rB6)}),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=$?Am$($,"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 nB6(Kl(Q)),K=tB6(Q,W);return X.html(oB6(J,K),200,{"Cache-Control":"public, max-age=0, s-maxage=300"})}catch{return X.html(J)}}),Z}var pB6=2500,rB6=1e4;var Rm$=D(()=>{X8();JX1();TE();E$()});function _s($,Z){return fetch(`${LK({})}${$}`,Z)}async function aB6($,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 _s(`/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}=uT0(J);return{status:W.slides.length?"ready":"empty",deck:W,scanned_at:J.scanned_at,drops:K}}var sB6,QU,Im$=async($,Z)=>{if(!$.get("reportUser"))return $.json({error:"Authentication required"},401);await Z();return},qm$;var Mm$=D(()=>{X8();nY();TE();JX1();sB6=new Set(["complete","errored","terminated","unknown"]),QU=new K1;QU.use("*",async($,Z)=>{let X=await s$.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});QU.use("/link-token/*",Im$);QU.use("/suggest",Im$);QU.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 aB6(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)}});QU.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 _s("/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)}});QU.get("/status",async($)=>{let Z=$.req.query("id");if(!Z)return $.json({error:"id is required"},400);try{let X=await _s(`/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:sB6.has(Y),status:Y};return $.json(G)}catch{return $.json({error:"status failed"},502)}});QU.get("/link-token/:id",async($)=>{let Z=$.req.param("id");try{let X=await _s(`/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)}});QU.get("/suggest",async($)=>{let Z=($.req.query("q")??"").trim().slice(0,64);if(Z.length<2)return $.json({suggestions:[]});try{let X=await _s(`/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:[]})}});qm$=QU});import{createHmac as eB6,timingSafeEqual as $O6}from"crypto";function Vm$($,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)>ZO6)return!1;let W=eB6("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&&$O6(K,F)})}function Sm$($){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:fH(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 Cm$($){switch($){case"active":case"trialing":return"active";case"past_due":return"past_due";default:return"canceled"}}function fH($){return typeof $==="string"?$:void 0}function mJ($){return typeof $==="object"&&$!==null?$:void 0}function lT0($){return typeof $==="number"?new Date($*1000):null}function HX1($){return fH($)??fH(mJ($)?.id)}function XO6($){return HX1($.subscription)??fH(mJ(mJ($.parent)?.subscription_details)?.subscription)}function QO6($){let Z=lT0($.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 WX1($,Z){let X=lT0($.created);return!!X&&!!Z.lastStripeEventAt&&X<Z.lastStripeEventAt}function KX1($,Z){let X=lT0($.created);if(!X)return;return Z.lastStripeEventAt&&Z.lastStripeEventAt>X?void 0:X}async function YO6($,Z){let X=Z.data.object;switch(Z.type){case"checkout.session.completed":case"checkout.session.async_payment_succeeded":{let Q=fH(mJ(X.metadata)?.orgId);if(!Q)return{handled:!1,reason:"no orgId"};if(fH(mJ(X.metadata)?.kind)==="topup"){if(X.mode!=="payment")return{handled:!1,reason:"topup with wrong mode"};if(fH(X.payment_status)!=="paid")return{handled:!1,reason:"payment not confirmed"};let J=fH(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(fH(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=HX1(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(WX1(Z,Y))return{handled:!1,reason:"stale event"};return await $.updateStripeState(Q,{stripeCustomerId:HX1(X.customer),stripeSubscriptionId:G,status:"active",lastStripeEventAt:KX1(Z,Y)}),{handled:!0,organizationId:Q}}case"customer.subscription.updated":case"customer.subscription.deleted":{let Q=fH(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&&WX1(Z,Y))return{handled:!1,reason:"stale event"};let J=G?"canceled":Cm$(X.status);return await $.updateStripeState(Y.organizationId,{status:J,currentPeriodEnd:QO6(X),...G&&{stripeSubscriptionId:null},lastStripeEventAt:KX1(Z,Y)}),{handled:!0,organizationId:Y.organizationId}}case"invoice.paid":{let Q=XO6(X);if(!Q)return{handled:!1,reason:"no sub id"};let Y=await $.getBillingByStripeSubscriptionId(Q);if(!Y)return{handled:!1,reason:"unknown subscription"};if(WX1(Z,Y))return{handled:!1,reason:"stale event"};return await $.updateStripeState(Y.organizationId,{status:"active",currentPeriodEnd:lT0(X.period_end),lastStripeEventAt:KX1(Z,Y)}),{handled:!0,organizationId:Y.organizationId}}default:return{handled:!1,reason:`unhandled event ${Z.type}`}}}function GO6($,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:Cm$(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 km$($,Z){let X=GO6($,Z);if(!X)return;dY({event:X.name,organizationId:X.organizationId,...$.id?{uuid:Nt1(`stripe:${$.id}:${X.name}`)}:{},...$.created?{timestamp:new Date($.created*1000)}:{},properties:X.properties})}async function _m$($){let Z=new UK(r8().db),X=await YO6(Z,$);if(!(X.handled&&X.topUp))km$($,X);if(X.handled&&X.topUp)await dj$({organizationId:X.organizationId,amountCents:X.topUp.creditCents,referenceId:X.topUp.referenceId}),km$($,X);if(!X.handled&&X.orphanSubscriptionId)try{await h0$(X.orphanSubscriptionId),console.error("stripe webhook: canceled orphan subscription",{subscriptionId:X.orphanSubscriptionId,eventId:$.id})}catch(Q){if(!(Q instanceof tY&&(Q.status===400||Q.status===404)))throw Q}return X}var ZO6=300;var vm$=D(()=>{oG();S4();b50();vE();w11()});var JO6=1048576,FX1;var fm$=D(()=>{X8();MH();E$();vm$();FX1=new K1;FX1.post("/webhook",r5({maxSize:JO6,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(!Vm$(X,$.req.header("stripe-signature"),Z))return $.json({error:"invalid signature"},400);let Y=Sm$(X);if(!Y)return $.json({error:"invalid payload"},400);let G=await _m$(Y);return console.log("stripe webhook",{eventId:Y.id,type:Y.type,livemode:Y.livemode,...G}),$.json({received:!0})})});import{timingSafeEqual as WO6}from"crypto";function HO6($,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 WO6(Buffer.from(Y),Buffer.from(Q))}var KO6=5242880,NX1;var bm$=D(()=>{X8();MH();s3();NX1=new K1;NX1.post("/webhook",r5({maxSize:KO6,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(!HO6(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 Jt0())?.markTenantPoolsDirty(G,Y)??[];return $.json({ok:!0,pools:W})})});function xm$($,Z){if(Z.startsWith("text/html")||Z.startsWith("image/svg"))$.set("Content-Security-Policy","sandbox allow-scripts allow-modals allow-same-origin")}var ym$,FO6,NO6,gm$;var hm$=D(()=>{X8();S3();Mg();Ey();ym$=new K1,FO6=["range","if-none-match","if-modified-since"],NO6=["content-type","content-length","content-range","accept-ranges","etag","last-modified"];ym$.get("/:org/files/*",async($)=>{let Z=$.get("studioContext"),X=Z.organization?.id;if(!Z.auth?.user?.id){if(fu($))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 kt(Q,Z);if(!Y)throw new Z$(503,{message:"Object storage not configured"});if(Y.startsWith("data:")&&eG()){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 xm$(U,H),new Response(N,{status:200,headers:U})}let G=new Headers;for(let K of FO6){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 NO6){let H=J.headers.get(K);if(H)W.set(K,H)}return W.set("Cache-Control","private, max-age=86400"),xm$(W,W.get("content-type")??""),new Response(J.body,{status:J.status,headers:W})});gm$=ym$});var vs=_((_v)=>{var UO6=_v&&_v.__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]}),BO6=_v&&_v.__exportStar||function($,Z){for(var X in $)if(X!=="default"&&!Object.prototype.hasOwnProperty.call(Z,X))UO6(Z,$,X)};Object.defineProperty(_v,"__esModule",{value:!0});BO6(kY(),_v)});var cm$=_((um$)=>{Object.defineProperty(um$,"__esModule",{value:!0});um$.version=void 0;um$.version="3.4.0"});var im$=_((bH)=>{var OO6=bH&&bH.__importDefault||function($){return $&&$.__esModule?$:{default:$}};Object.defineProperty(bH,"__esModule",{value:!0});bH.NodeTransport=bH.VERSION=void 0;bH.nodeResolveHost=zO6;var e6=vs(),DO6=P0("net"),UX1=P0("tls"),LO6=P0("path"),dm$=P0("fs"),wO6=OO6(P0("dns")),EO6=cm$();bH.VERSION=EO6.version;var jO6="nats.js";class mm${socket;version;lang;yields=[];signal=(0,e6.deferred)();closedNotification=(0,e6.deferred)();options;connected=!1;tlsName="";done=!1;closeError;constructor(){this.lang=jO6,this.version=bH.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,e6.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 e6.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 e6.errors.ConnectionError("error connecting - node provided an undefined error");let{code:J}=G,W=J==="ECONNREFUSED"?new e6.errors.ConnectionError("connection refused",{cause:G}):G;throw this.socket?.destroy(),W}}dial($){let Z=(0,e6.deferred)(),X,Q=(0,DO6.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,e6.deferred)(),Z;return this.socket.on("data",(X)=>{this.yields.push(X);let Q=e6.DataBuffer.concat(...this.yields),Y=(0,e6.extractProtocolMessage)(Q);if(Y!=="")try{let G=e6.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,e6.deferred)();try{if($=(0,LO6.resolve)($),!(0,dm$.existsSync)($))Z.reject(Error(`${$} doesn't exist`));(0,dm$.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,e6.extend)(X,this.options.tls,Y)}catch(Y){return Promise.reject(new e6.errors.ConnectionError(Y.message,{cause:Y}))}let Q=(0,e6.deferred)();try{let Y=(0,UX1.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 e6.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,e6.extend)(Z,this.options.tls,Q)}catch(Q){return Promise.reject(new e6.errors.ConnectionError(Q.message,{cause:Q}))}let X=(0,e6.deferred)();try{let Q=(0,UX1.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 e6.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,e6.render)($[Z])}`);yield $[Z]}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,e6.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 UX1.TLSSocket}_send($){if(this.isClosed||this.socket===void 0)return Promise.resolve();if(this.options.debug)console.info(`< ${(0,e6.render)($)}`);let Z=(0,e6.deferred)();try{this.socket.write($,(X)=>{if(X){if(this.options.debug)console.error(`!!! ${(0,e6.render)($)}: ${X}`);return Z.reject(X)}return Z.resolve()})}catch(X){if(this.options.debug)console.error(`!!! ${(0,e6.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}}bH.NodeTransport=mm$;function zO6($){let Z=(0,e6.deferred)();return wO6.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 rm$=_((om$)=>{Object.defineProperty(om$,"__esModule",{value:!0});om$.connect=PO6;var pm$=im$(),nm$=vs(),tm$=vs();function PO6($={}){if((0,tm$.hasWsProtocol)($))return Promise.reject(tm$.errors.InvalidArgumentError.format("servers","node client doesn't support websockets, use the 'wsconnect' function instead"));return(0,nm$.setTransportFactory)({factory:()=>{return new pm$.NodeTransport},dnsResolveFn:pm$.nodeResolveHost}),nm$.NatsConnectionImpl.connect($)}});var am$=_((YU)=>{var TO6=YU&&YU.__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]}),RO6=YU&&YU.__exportStar||function($,Z){for(var X in $)if(X!=="default"&&!Object.prototype.hasOwnProperty.call(Z,X))TO6(Z,$,X)};Object.defineProperty(YU,"__esModule",{value:!0});YU.connect=void 0;var IO6=rm$();Object.defineProperty(YU,"connect",{enumerable:!0,get:function(){return IO6.connect}});RO6(vs(),YU)});function Zi$($){let Z=$?.connectFn??VO6,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:kO6,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(MO6,qO6,O-1,2,0.5);await w$(L)}}return{init(U,B){if(Y)return;Y=!0,G=!1;let O=B?.creds?sm$.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=$i$.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 VO6($){return em$.connect($)}var sm$,em$,$i$,qO6=100,MO6=3000,kO6=3000;var Xi$=D(()=>{W4();sm$=V(vl(),1),em$=V(am$(),1),$i$=V(ML(),1)});function BX1($,Z){return`${$}.${Z}`}class OX1{cache;constructor($){this.cache=Du({ttlMs:$?.ttlMs??SO6,maxSize:$?.maxSize??CO6})}async get($,Z){return this.cache.get(BX1($,Z))??null}async set($,Z,X){this.cache.set(BX1($,Z),X)}async invalidate($,Z){this.cache.delete(BX1($,Z))}teardown(){this.cache.clear()}}var SO6=600000,CO6=5000;var Qi$=()=>{};function cT0($,Z){return`${$}:${Z}`}function DX1($){let Z=Du({ttlMs:$?.ttlMs??_O6,maxSize:$?.maxSize??vO6}),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(Yi$,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(cT0(K,H))},set(K,H,F){Z.set(cT0(K,H),F)},invalidate(K,H){Z.delete(cT0(K,H)),W(K,H)},start(){if(J)return;let K=X?.();if(!K)return;J=K.subscribe(Yi$),(async()=>{for await(let H of J)try{let F=JSON.parse(G.decode(H.data));if(F.originId===Q)continue;Z.delete(cT0(F.organizationId,F.keyId))}catch{}})().catch(console.error)},teardown(){J?.unsubscribe(),J=null,Z.clear()}}}var Yi$="studio.ai-provider-keys.invalidate",_O6=30000,vO6=5000;var Gi$=()=>{};class LX1{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 Ji$=($)=>{let Z;return()=>Z??=$()},wX1,EX1;var Wi$=D(()=>{B6();wX1=Ji$(()=>W$.createHistogram("decopilot.stream.encode_ms",{description:"Per-chunk JSON.stringify+encode time for decopilot stream",unit:"ms"})),EX1=Ji$(()=>W$.createCounter("decopilot.stream.published_chunks",{description:"Logical decopilot stream chunks published to JetStream",unit:"{chunks}"}))});function uO6($=Fi$){return{name:$H,subjects:[`${Ma0}.>`],storage:IW.StorageType.File,max_age:xO6,max_bytes:gO6,max_msgs_per_subject:hO6,discard:IW.DiscardPolicy.Old,retention:IW.RetentionPolicy.Limits,duplicate_window:yO6,num_replicas:$}}class Ni${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 Ki$($){let Z=Hi$.headers();for(let[X,Q]of Object.entries($))Z.set(X,Q);return Z}function mO6($,Z){let X=0;return{publish(Q,Y,G,J){Q.publish(Y,G,J?{headers:J}:void 0).catch((W)=>{if(X++,bO6().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 iO6($,Z){return $.info?.cluster?Z:1}function pO6($){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 jX1{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=uO6(Y);try{await Q.streams.info($H),await Q.streams.update($H,G)}catch(J){if(J instanceof Error&&J.message.includes("stream not found"))await Q.streams.add(G),await Q.streams.update($H,G);else if(J instanceof Error&&/can ?not change.*storage|storage type/i.test(J.message))await Q.streams.delete($H),await Q.streams.add(G);else throw J}},X=await h6(async()=>{let Q=this.options.getJetStreamManager?await this.options.getJetStreamManager():await IW.jetstreamManager($),Y=iO6($,Fi$);try{await Z(Q,Y)}catch(G){if(Y<=1||!pO6(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:gg});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=mO6(Z,Q),J=!1,W=()=>{if(J)return;J=!0;let H=VO$(Z);Y.publish(H.subject,H.data).catch(()=>{})};X.addEventListener("abort",W,{once:!0});let K=(H)=>{let F=performance.now(),N=Va0(H,{runId:Z}),U=performance.now()-F;wX1().record(U),EX1().add(1,{"org.id":Q??"unknown"}),dO6?.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?Ki$(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(),cO6)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 h6(()=>$.publish(Z.subject,Z.data,{...Z.headers?{headers:Ki$(Z.headers)}:{},...Z.msgId?{msgID:Z.msgId}:{}}),{maxAttempts:6,minTimeout:250,maxTimeout:5000,jitter:0.5,isRetriable:gg}),!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=Va0(Z,{runId:$,dedup:X});wX1().record(performance.now()-Y),EX1().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=kO$({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 h6(async()=>{return(await Q.consumers.get($H,{filter_subjects:J,deliver_policy:Y})).consume()},{maxAttempts:6,minTimeout:250,maxTimeout:5000,jitter:0.5,isRetriable:gg})}catch(L){return console.warn("[Decopilot] JetStream tail unavailable (non-critical):",L?.message??L),null}let F=zw0({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(Lw0()).pipeThrough(ww0()).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($H,{filter:jD($)}).catch(()=>{})}teardown(){this.js=null,this.jsm=null}}var IW,Hi$,fO6=($)=>{let Z;return()=>Z??=$()},bO6,xO6=86400000000000,yO6=120000000000,gO6=4294967296,Fi$,hO6=500000,lO6,cO6,dO6;var Ui$=D(()=>{W4();Sa0();Pw0();Ew0();B6();Wi$();IW=V(ML(),1),Hi$=V(vl(),1),bO6=fO6(()=>W$.createCounter("decopilot.stream.publish_errors",{description:"Number of JetStream publish failures for decopilot stream chunks",unit:"{errors}"})),Fi$=Math.max(1,Number(process.env.DECOPILOT_STREAM_REPLICAS??3)||3);lO6=process.env.STREAM_ENCODE_TRACE==="1",cO6=process.env.DECOPILOT_STREAM_TRACE==="1";dO6=lO6?new Ni$:null});function dT0($,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 Bi$=D(()=>{_8()});class zX1{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 Oi$($,Z,X){let Q=Z.organizationId;if(!ZY(Z,(await v5($,Q)).review))return!1;if(!tC(X))return!1;if(await $.storage.taskBoard.hasHumanRejectedDone(Z.id,Q))return!1;let Y=await $.storage.organizationSettings.get(Q),G=qK(Y?.flags),J=await j5($,Q),W=await $.storage.taskBoard.update(Z.id,Q,BJ(J,G),Z.updatedBy);return await A6($,{taskBoardItemId:Z.id,action:"status_changed",actorId:null,data:{from:Z.status,to:G,reason:"pr_merged"}}),b$(Q,W),console.log(`[task-board-review-sweeper] ${Z.id}: linked PR already merged \u2014 moved to ${G}`),!0}var Di$=D(()=>{j6();BX();Rg();p5();pK();z5()});function eO6($){return $ instanceof $Q}function $D6($,Z){return Z-$>=aO6}class PX1{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??nO6;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??oO6,X=this.options.itemIntervalMs??tO6,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()-tt0),no0);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()-sO6));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 mo0(this.taskBoard,Y,Q,await KN(this.db,Q)),await io0(this.taskBoard,this.billing,Y,Q)}catch(G){console.error(`[task-board-review-sweeper] unhandled-failure reaction for ${X} failed`,G)}}async dispatchDueRetries($){let Z=0,X=await this.taskBoard.listItemsDueForRetry($,new Date);for(let{id:Q,organizationId:Y,attempts:G}of X)try{if(!await this.taskBoard.claimDueRetry(Q,Y,new Date))continue;let J=await this.taskBoard.getById(Q,Y);if(!J||J.status!=="in_progress"||J.assigneeId!==Q8)continue;let W=await this.contextFactory(Y,J.assignedBy??J.createdBy);if(!W)continue;await jN(W,J,{runClass:"retry"}),Z++,console.warn(`[task-board-review-sweeper] re-dispatched ${Q} after a failure (attempt ${G})`)}catch(J){if(console.error(`[task-board-review-sweeper] retry dispatch for ${Q} failed`,J),eO6(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()+rO6),(await KN(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 KN(this.db,Z),Y=await this.taskBoard.getById($,Z);if(!Y||Y.status!=="in_progress")return;let G=await this.taskBoard.returnToTodoAfterFailure($,Z,Y.updatedBy,Q);if(!G)return;await this.taskBoard.recordActivity({taskBoardItemId:$,action:"status_changed",actorId:null,data:{from:"in_progress",to:"todo",reason:X}}).catch(()=>{}),b$(Z,G)}catch(Q){console.error(`[task-board-review-sweeper] returning ${$} to todo failed`,Q)}}async handOffReviewWithoutPr($,Z){let X=await this.taskBoard.listActivity(Z.id,Z.organizationId);if(!$D6(dF(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 KN(this.db,Z);if(!ZY(Q,Y.review))return!1;let G=Q.assigneeId===Q8,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 qg(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 Oi$(W,Q,K))return!0;if(await zD$(W,Q))return!0;if(await this.resolveConflictFromSweep(W,Q,K))return!0;if(!G)return!1;if(!Ur0(K))return!1;return await CL0(W,Q,{previewMatchesHead:Br0(K)}),!0}async resolveConflictFromSweep($,Z,X){let Q=X.find((Y)=>Y.state!=="closed"&&Y.conflict===!0);if(!Q)return!1;return await UD($,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 nO6=60000,tO6=300000,oO6=50,rO6=60000,aO6=900000,sO6=120000;var Li$=D(()=>{p5();j6();Yr0();EN();ot();pK();Di$();z5();YJ();to0();JG();Rt();Ig()});import{readdir as ZD6,rm as mT0}from"fs/promises";import{join as iT0}from"path";async function pT0($){let Z=new Date;Z.setUTCDate(Z.getUTCDate()-XD6),Z.setUTCHours(0,0,0,0);let X=0;try{let Q=await vv($);for(let Y of Q)if(/^\d{4}$/.test(Y))X+=await wi$($,Y,Z);else if(!Y.startsWith(".")){let G=iT0($,Y),J=await vv(G);for(let K of J){if(!/^\d{4}$/.test(K))continue;X+=await wi$(G,K,Z)}if((await vv(G)).length===0)await mT0(G,{recursive:!0,force:!0})}}catch(Q){console.warn("monitoring retention cleanup failed:",Q)}return X}async function wi$($,Z,X){let Q=0,Y=iT0($,Z),G=await vv(Y);for(let W of G){if(!/^\d{2}$/.test(W))continue;let K=iT0(Y,W),H=await vv(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=iT0(K,N);await mT0(B,{recursive:!0,force:!0}),Q++}}if((await vv(K)).length===0)await mT0(K,{recursive:!0,force:!0})}if((await vv(Y)).length===0)await mT0(Y,{recursive:!0,force:!0});return Q}async function vv($){try{return(await ZD6($)).filter((X)=>!X.startsWith("."))}catch{return[]}}var XD6=30;var AX1=()=>{};import{DBOS as TX1,SchedulerMode as QD6}from"@dbos-inc/dbos-sdk";async function GD6(){let $=[nJ(),fv(),gH()],Z=0;for(let X of $)try{Z+=await pT0(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 JD6($,Z){await TX1.runStep(()=>GD6(),{name:"monitoringRetention"})}function ji$(){if(Ei$)return;Ei$=!0;let $=TX1.registerWorkflow(JD6,{name:"monitoringRetentionWorkflow"});TX1.registerScheduled($,{name:"monitoringRetentionWorkflow",crontab:YD6,mode:QD6.ExactlyOncePerIntervalWhenActive})}var YD6="23 4 * * *",Ei$=!1;var zi$=D(()=>{RY();AX1()});function Pi$($){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 wJ.create();Y.auth.user={id:X,role:Q.role},Y.organization={id:Q.orgId,slug:Q.orgSlug,name:Q.orgName};let G=await _t($.db,Z,Q.role);return Y.boundAuth=z91({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 Ai$=D(()=>{pB();HD()});function WD6(){return[{name:"Postgres",status:"pending",port:0},{name:"NATS",status:"pending",port:0}]}function KD6(){return{services:WD6(),migrationsStatus:"pending",serverUrl:null,logs:[]}}function FD6(){for(let $ of HD6)$()}function Ti$($){let Z=[...RX1.logs,$];RX1={...RX1,logs:Z.length>500?Z.slice(-500):Z},FD6()}function IX1(){return ND6}var RX1,HD6,ND6=!1;var qX1=D(()=>{RX1=KD6(),HD6=new Set});import{EventEmitter as UD6}from"events";var MX1;var Ri$=D(()=>{qX1();MX1=new UD6;MX1.on("request",($)=>{Ti$($)})});function Ii$(){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=Hl(U.params.name),O=U.params.arguments||{},L=Object.keys(O).map((E)=>Hl(E)),w=L.length>0?L.slice(0,3).join(",")+(L.length>3?"\u2026":""):"";G=`${W5.tool}${B}${W5.dim}(${w})${W5.reset}`}else if(U.method)G=`${W5.dim}${Hl(U.method)}${W5.reset}`}}catch{}}let W=Hl(Y);if(Y.startsWith("/mcp/conn_")){let F=Y.split("/")[2]??"";W=`/mcp/${W5.mcp}${Hl(F.slice(0,12))}\u2026${W5.reset}`}else if(Y==="/mcp")W=`${W5.mcp}/mcp${W5.reset}`;else if(Y==="/mcp/registry")W=`${W5.mcp}/mcp/registry${W5.reset}`;let K=OD6(Q),H=J?"\u25C0":"\u2190";if(!IX1())console.log(`${W5.dim}${H}${W5.reset} ${K}${Q}${W5.reset} ${W}${G?` ${G}`:""}`);try{await Z()}finally{let F=Date.now()-X,N=$.res.status,U=BD6(N),B=F<1000?`${F}ms`:`${(F/1000).toFixed(1)}s`,O=J?"\u25B6":"\u2192";if(!IX1())console.log(`${W5.dim}${O}${W5.reset} ${K}${Q}${W5.reset} ${W}${G?` ${G}`:""} ${U}${N}${W5.reset} ${W5.duration}${B}${W5.reset}`);MX1.emit("request",{method:Q,path:Hl(Y),status:N,duration:F,timestamp:new Date})}}}var W5,BD6=($)=>{if($>=500)return W5.serverError;if($>=400)return W5.clientError;if($>=300)return W5.redirect;return W5.ok},OD6=($)=>{return W5[$]||W5.reset},Hl=($)=>{return $.replace(/\r/g,"").replace(/\n/g,"").replace(/\x1b\[[0-9;]*m/g,"").replace(/[\x00-\x1f\x7f-\x9f]/g,"")};var qi$=D(()=>{qX1();Ri$();W5={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 Si$}from"crypto";import{mkdir as DD6,readdir as LD6,rm as Mi$,stat as Ci$}from"fs/promises";import{join as VX1,relative as wD6}from"path";import{z as A$}from"zod";function vi$($){let Z=$.replace(/[^a-zA-Z0-9_-]/g,"_");return VX1(ED6,Z)}function fi$($){return $.replace(/^\/+/,"").replace(/\.\./g,"")}function kX1($,Z){let X=vi$($),Q=fi$(Z);return VX1(X,Q)}function jD6($,Z,X,Q){let Y=C0().encryptionKey||"dev-secret",G=`${$}:${Z}:${X}:${Q}`;return Si$("sha256",Y).update(G).digest("hex")}function Vi$($,Z,X,Q,Y){let G=Math.floor(Date.now()/1000)+Q,J=jD6(Z,X,G,Y),W=new URL(`/api/dev-assets/${Z}/${fi$(X)}`,$);return W.searchParams.set("expires",G.toString()),W.searchParams.set("signature",J),W.searchParams.set("method",Y),W.toString()}function bi$($,Z,X){let Q=`${$}:${Z.getTime()}:${X}`;return`"${Si$("md5","etag").update(Q).digest("hex")}"`}async function xi$($,Z,X,Q,Y){try{let G=await LD6($,{withFileTypes:!0});for(let J of G){let W=VX1($,J.name),H=wD6(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 xi$(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 Ci$(W);Y.objects.push({key:H,size:F.size,lastModified:F.mtime.toISOString(),etag:bi$(W,F.mtime,F.size)})}catch{}}}}catch{}}function yi$($,Z){let Q=n($).id;return[{name:"LIST_OBJECTS",description:"List objects in the local assets directory with pagination support",inputSchema:A$.object({prefix:A$.string().optional(),maxKeys:A$.number().optional().default(1000),continuationToken:A$.string().optional(),delimiter:A$.string().optional()}),outputSchema:A$.object({objects:A$.array(A$.object({key:A$.string(),size:A$.number(),lastModified:A$.string(),etag:A$.string()})),nextContinuationToken:A$.string().optional(),isTruncated:A$.boolean(),commonPrefixes:A$.array(A$.string()).optional()}),handler:async(Y)=>{let G=Y,J=G.prefix||"",W=G.maxKeys??1000,K=G.delimiter,H=G.continuationToken,F=vi$(Q);await DD6(F,{recursive:!0});let N={objects:[],commonPrefixes:new Set};await xi$(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:A$.object({key:A$.string()}),outputSchema:A$.object({contentType:A$.string().optional(),contentLength:A$.number(),lastModified:A$.string(),etag:A$.string(),metadata:A$.record(A$.string(),A$.string()).optional()}),handler:async(Y)=>{let G=Y,J=kX1(Q,G.key),W=await Ci$(J);return{contentType:KZ1(G.key),contentLength:W.size,lastModified:W.mtime.toISOString(),etag:bi$(J,W.mtime,W.size)}}},{name:"GET_PRESIGNED_URL",description:"Generate a presigned URL for downloading a file from local storage",inputSchema:A$.object({key:A$.string(),expiresIn:A$.number().optional()}),outputSchema:A$.object({url:A$.string(),expiresIn:A$.number()}),handler:async(Y)=>{let G=Y,J=G.expiresIn??ki$;return{url:Vi$(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:A$.object({key:A$.string(),expiresIn:A$.number().optional(),contentType:A$.string().optional()}),outputSchema:A$.object({url:A$.string(),expiresIn:A$.number()}),handler:async(Y)=>{let G=Y,J=G.expiresIn??ki$;return{url:Vi$(Z,Q,G.key,J,"PUT"),expiresIn:J}}},{name:"DELETE_OBJECT",description:"Delete a single file from local storage",inputSchema:A$.object({key:A$.string()}),outputSchema:A$.object({success:A$.boolean(),key:A$.string()}),handler:async(Y)=>{let G=Y,J=kX1(Q,G.key);try{return await Mi$(J),{success:!0,key:G.key}}catch{return{success:!1,key:G.key}}}},{name:"DELETE_OBJECTS",description:"Delete multiple files from local storage",inputSchema:A$.object({keys:A$.array(A$.string()).max(1000)}),outputSchema:A$.object({deleted:A$.array(A$.string()),errors:A$.array(A$.object({key:A$.string(),message:A$.string()}))}),handler:async(Y)=>{let G=Y,J=[],W=[];return await Promise.all(G.keys.map(async(K)=>{let H=kX1(Q,K);try{await Mi$(H),J.push(K)}catch(F){W.push({key:K,message:F instanceof Error?F.message:"Unknown error"})}})),{deleted:J,errors:W}}}]}async function SX1($,Z,X){let Q=yi$(Z,X),Y=new XK({name:"dev-assets-mcp",version:"1.0.0"},{capabilities:{tools:{}},jsonSchemaValidator:U5});for(let J of Q){let W="shape"in J.inputSchema?J.inputSchema.shape:A$.object({}).shape,K=J.outputSchema&&"shape"in J.outputSchema?J.outputSchema.shape:A$.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 HQ({enableJsonResponse:$.headers.get("Accept")?.includes("application/json")??!1});return await Y.connect(G),MJ(Y,G,$,"mcp:dev-assets")}async function gi$($,Z,X,Q){let G=yi$(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 ED6="./data/assets",ki$=3600,_i$,hi$;var ui$=D(()=>{E$();ig();X8();Xm();L_();mX();cA0();_i$=new K1;_i$.all("/",async($)=>{let Z=$.get("studioContext"),X=new URL($.req.url),Q=`${X.protocol}//${X.host}`;return SX1($.req.raw,Z,Q)});hi$=_i$});var li$={};J4(li$,{mountDevRoutes:()=>zD6});function zD6($,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 SX1(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 gi$(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",hi$);let X=new K1;X.use("*",TW({mountPath:"/api/dev-assets"})),X.route("/",lA0({orgFromPath:!1})),$.route("/api/dev-assets",X)}var ci$=D(()=>{X8();e91();cA0();ui$()});import{sql as PD6}from"kysely";import{randomUUID as di$}from"crypto";import{z as AD6}from"zod";async function RD6($){let Z=new Date().toISOString(),X=di$(),Q=C8.SELF($.organizationId),Y="registry.publish_request.created",G={requestId:$.request.id,requestedId:$.request.requested_id,title:$.request.title,status:$.request.status,createdAt:$.request.created_at,requester:{name:$.request.requester_name,email:$.request.requester_email}};await $.db.insertInto("events").values({id:X,organization_id:$.organizationId,type:"registry.publish_request.created",source:Q,specversion:"1.0",subject:$.request.id,time:Z,datacontenttype:"application/json",dataschema:null,data:JSON.stringify(G),cron:null,status:"pending",attempts:0,last_error:null,next_retry_at:null,created_at:Z,updated_at:Z}).execute();let J=await $.db.selectFrom("event_subscriptions").select(["id"]).where("organization_id","=",$.organizationId).where("enabled","=",1).where("event_type","=","registry.publish_request.created").where((W)=>W.or([W("publisher","is",null),W("publisher","=",Q)])).execute();if(J.length>0)await $.db.insertInto("event_deliveries").values(J.map((W)=>({id:di$(),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 PD6`SELECT
2986
2986
  pg_notify('studio_events', ${X}),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "decocms",
3
- "version": "4.312.0",
3
+ "version": "4.312.1",
4
4
  "description": "Deco CMS — Self-hostable MCP Gateway for managing AI connections and tools",
5
5
  "author": "Deco team",
6
6
  "repository": {
@@ -1 +0,0 @@
1
- import{c as B,b as L,j as r}from"./index-BaN-afoy.js";import{I as z}from"./input-BL44R0Ow.js";import{L as F}from"./label-CnHLay7c.js";import{S as A,a as R,b as O,c as V,d as D}from"./select-Ah6pA4WN.js";import{T as J}from"./textarea-jO9kOIyu.js";import{g as M,x as $,k as q,z as G,K as H}from"./index-D7FRJn1g.js";import{s as P}from"./primitives-CcR_JPr4.js";import{u as Q}from"./use-autosave-CEn6yDj-.js";import"./Check-BMnpWKJZ.js";import"./ChevronDown-9PKtT3SZ.js";import"./ChevronUp-lUj1GxXD.js";import"./ArrowUp-PEgywjVQ.js";import"./chat-context-CsE4Em9d.js";import"./use-panel-navigate-n9Wui3sy.js";import"./use-destination-route-BzVEL0ve.js";import"./thread-route-Cc0oiNVD.js";import"./dialog-DDlgJ2sN.js";import"./Copy01-CSAF6Gjy.js";import"./Download01-CfPNpe6a.js";import"./constants-dLUUoWH7.js";import"./session-runtime-C-KTDVeQ.js";import"./slugify-CEUa2lfQ.js";import"./hooks-bYz7fMXj.js";import"./use-mcp-client-BguAtqWP.js";import"./auth-C1mLE9XU.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./decopilot-sse-pool-CZ1SP7T0.js";import"./task-board-B-f8o5g_.js";import"./use-is-desktop-app-BNujXJc_.js";import"./use-virtual-mcp-DwE0rC-u.js";import"./use-ai-providers-DswwTPO_.js";import"./location-oTTXFrSF.js";import"./use-decopilot-events-DV09peZc.js";import"./use-organization-settings-BT8Xme5X.js";import"./automation-runs-tc_kUg3V.js";import"./agent-icon-B8ZyU8To.js";import"./AlertCircle-erQ61Csc.js";import"./UserSquare-Cdb0tuVA.js";import"./Tool01-ZTea2nwD.js";import"./ArrowLeft-DUvY_Ggx.js";import"./Tool02-BzYaX_I6.js";import"./XCircle-DzGXFEFq.js";import"./TrendUp01-DGgs-Mwp.js";import"./ZapSquare-BKXpEnlX.js";import"./ZoomOut-B09dHsOp.js";import"./Users03-DsPwUzEr.js";import"./CheckCircle-C7ZjzPbu.js";import"./ChevronRight-BCHrZPUm.js";import"./ChevronSelectorVertical-BolxxISg.js";import"./DotsVertical-D2-2t9Qs.js";import"./Stars02-BTetYz_Q.js";import"./CreditCard01-DYSIVOD4.js";import"./Settings02-B24bXABo.js";import"./Eye-BUSWHmBR.js";import"./FilterLines-DiqR_6_e.js";import"./Share07-BDCRsY0K.js";import"./GitBranch01-SJfqK69-.js";import"./Globe01-Cu-3J1fk.js";import"./Globe04-Cl_DAF5T.js";import"./SwitchHorizontal01-DsahFk9R.js";import"./HardDrive-Bg03Z2Sd.js";import"./Image01-QOxG5W7w.js";import"./Key01-B-BkMHjC.js";import"./LinkExternal01-R8OleOUn.js";import"./LockUnlocked01-CtpkJM6p.js";import"./LogOut01-BM-degft.js";import"./Monitor01-BnMjKug_.js";import"./Sun-DIPy3vdQ.js";import"./Package-Dg1w9jFn.js";import"./Palette-DSTOliNE.js";import"./Play-D0gv8izV.js";import"./Plus-ZZbNHet6.js";import"./SearchLg-BSIsO9PI.js";import"./SearchMd-DDRA5KzP.js";import"./Shield01-Cm6GGaec.js";import"./Stars01-CbfoVgjy.js";import"./Trash01-DylHh_3b.js";import"./Upload01-sbpI7c_G.js";import"./User01-BY3xo1l2.js";import"./Users01-DJ5M915m.js";import"./XClose-BZWOFNOV.js";import"./Zap-DKYzDMdW.js";import"./useInfiniteQuery-B60Agqd0.js";import"./use-infinite-scroll-CRQF25ox.js";import"./use-connection-B9E5eLlH.js";import"./table-rAhdo7uM.js";import"./empty-state-DHrEGwcJ.js";import"./use-members-DMhcpvq9.js";import"./use-org-auth-client-Ci7AOL97.js";import"./use-automations-kd9YNBmk.js";import"./useSuspenseInfiniteQuery-B2cNszKk.js";import"./avatar-UefRqfZY.js";import"./format-time-BnbuEtat.js";import"./differenceInSeconds-NQ4PDo0z.js";import"./use-copy-DqhHJBdl.js";import"./markdown-rRIwF6Tl.js";import"./monaco-editor-Bufxgtcu.js";import"./spinner-SR766PmX.js";import"./editor-DGv-NuIB.js";import"./types--ygO-aFd.js";import"./shell-layout-Boak5urx.js";import"./required-auth-layout-CW9KKvJs.js";import"./use-org-sso-C_OrVAlz.js";import"./integration-icon-D1d3ScC9.js";import"./use-navigate-to-agent-BIUyGmt7.js";import"./chart-Bk-JKPD2.js";import"./index-BW79-pJh.js";import"./AreaChart-DMEQyUac.js";import"./form-BluEq8Yf.js";import"./file-type-icon-BhCVUCKb.js";import"./drawer-KmmV0iEA.js";import"./collection-search-DXVVf-zL.js";import"./tabs-B2NRD1wq.js";import"./toggle-group-BPIvKnoi.js";import"./super-agent-icon-t8-vanF-.js";import"./self-tool-result-YY_PA6Ei.js";import"./alert-dialog-CAn2oyVG.js";import"./extract-connection-data-DlYlKYlH.js";import"./metadata-dUsYcpuu.js";import"./provision-repo-scoped-github-connection-CMPWtdMv.js";import"./use-debounced-value-Cl74M2HJ.js";import"./authenticate-and-persist-oauth-4dr0p6al.js";import"./mcp-oauth-XE5sb7Li.js";import"./track-0h1IHC3e.js";import"./popover-DuSVBlRA.js";import"./toolbar-CnijzIes.js";import"./github-repo-picker-Cm0kjDEN.js";import"./use-mcp-tools-Cl6zryQg.js";import"./agent-capabilities-B52k7xCe.js";import"./connection-card-B2HE0nqR.js";import"./use-registry-connections-Y_DFULfU.js";import"./retry-CErkP7V6.js";import"./connection-slug-CITJ0kGN.js";import"./connection-form-helpers-DotZ9Tl_.js";import"./collection-tabs-CKcZSEUk.js";import"./badge-CD65OXUc.js";import"./select-model-DJmYmPNQ.js";import"./checkbox-CTg3o0P5.js";import"./ai-providers-logos-DD3qZ33J.js";import"./folder-icon-eeQxBxpz.js";import"./dropdown-menu-DcwzyPlb.js";import"./question-004-sINsf4GQ.js";import"./use-status-sounds-SQ-suLiI.js";import"./skill-preview-CDTzUPvk.js";import"./use-file-configs-B-ob-2D3.js";import"./pt-BR-CLy76QW2.js";import"./use-debounced-autosave--bvwrjLG.js";import"./scroll-area-B1E7KSoI.js";import"./search-input-CysL8VTq.js";import"./use-mcp-auth-status-41-K0lLH.js";import"./switch-Cx3ZmK87.js";import"./use-secrets-BMr9hE9Y.js";import"./config-CAlIhXzi.js";import"./command-Cl72rv1d.js";import"./index-BV5AjgPF.js";import"./get-initials-D-f_fDFw.js";import"./breadcrumb-C5DKBsgD.js";import"./use-tags-f3wgTc7t.js";import"./automation-list-row-cL19IvLP.js";import"./site-error--i37Vnuw.js";import"./use-org-repo-syncs-CR7zmwC_.js";import"./cards-i7V3Ohf-.js";const U={authors:[{key:"name",labelKey:"sandbox.recordEditor.fieldName",widget:"text"},{key:"type",labelKey:"sandbox.recordEditor.fieldType",widget:"select",options:[{value:"Person",labelKey:"sandbox.recordEditor.optionPerson"},{value:"Organization",labelKey:"sandbox.recordEditor.optionOrganization"}]},{key:"email",labelKey:"sandbox.recordEditor.fieldEmail",widget:"text",placeholderKey:"sandbox.recordEditor.placeholderEmail"},{key:"jobTitle",labelKey:"sandbox.recordEditor.fieldJobTitle",widget:"text"},{key:"company",labelKey:"sandbox.recordEditor.fieldCompany",widget:"text"},{key:"avatar",labelKey:"sandbox.recordEditor.fieldAvatar",widget:"image"}]},W={authors:"sandbox.recordEditor.titleAuthor"};function Zr(I){const t=B.c(39),{orgSlug:E,virtualMcpId:K,branch:w,kind:a,blockKey:b,block:f}=I,i=L();let h;t[0]!==w||t[1]!==E||t[2]!==K?(h={orgSlug:E,virtualMcpId:K,branch:w},t[0]=w,t[1]=E,t[2]=K,t[3]=h):h=t[3];const p=M(h);let g;t[4]!==f||t[5]!==a?(g=$(f,a),t[4]=f,t[5]=a,t[6]=g):g=t[6];const C=g;let k;t[7]!==b||t[8]!==a||t[9]!==p?(k=l=>{p.mutate({blockKey:b,data:G(b,a,l)})},t[7]=b,t[8]=a,t[9]=p,t[10]=k):k=t[10];const[e,S]=Q(C,k);let v;t[11]!==e||t[12]!==S?(v=(l,o)=>S({...e,[l]:o}),t[11]=e,t[12]=S,t[13]=v):v=t[13];const s=v,N=W[a];let n;t[14]!==i||t[15]!==N?(n=i(N),t[14]=i,t[15]=N,t[16]=n):n=t[16];let c;t[17]!==n?(c=r.jsx("span",{className:"text-sm font-medium",children:n}),t[17]=n,t[18]=c):c=t[18];let d;t[19]!==p.isError||t[20]!==p.isPending?(d=r.jsx(q,{isPending:p.isPending,isError:p.isError}),t[19]=p.isError,t[20]=p.isPending,t[21]=d):d=t[21];let y;t[22]!==c||t[23]!==d?(y=r.jsxs("div",{className:"flex h-12 shrink-0 items-center justify-between border-b px-6",children:[c,d]}),t[22]=c,t[23]=d,t[24]=y):y=t[24];const T=U[a];let x;if(t[25]!==e||t[26]!==s||t[27]!==i||t[28]!==T){let l;t[30]!==e||t[31]!==s||t[32]!==i?(l=o=>r.jsx("div",{className:"space-y-2",children:o.widget==="image"?r.jsx(H,{schema:{type:"string",format:"image-uri",title:i(o.labelKey)},value:e[o.key],onChange:m=>s(o.key,m),path:o.key,label:i(o.labelKey)}):o.widget==="select"?r.jsxs(r.Fragment,{children:[r.jsx(F,{htmlFor:o.key,children:i(o.labelKey)}),r.jsxs(A,{value:P(e[o.key])||o.options?.[0]?.value,onValueChange:m=>s(o.key,m),children:[r.jsx(R,{id:o.key,className:"h-10 w-full",children:r.jsx(O,{placeholder:i(o.labelKey)})}),r.jsx(V,{children:(o.options??[]).map(m=>r.jsx(D,{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(J,{id:o.key,value:P(e[o.key]),onChange:m=>s(o.key,m.target.value),rows:3}):r.jsx(z,{id:o.key,value:P(e[o.key]),placeholder:o.placeholderKey?i(o.placeholderKey):void 0,onChange:m=>s(o.key,m.target.value),className:"h-10"})]})},o.key),t[30]=e,t[31]=s,t[32]=i,t[33]=l):l=t[33],x=T.map(l),t[25]=e,t[26]=s,t[27]=i,t[28]=T,t[29]=x}else x=t[29];let u;t[34]!==x?(u=r.jsx("div",{className:"min-w-0 flex-1 overflow-y-auto px-6 py-6",children:r.jsx("div",{className:"mx-auto max-w-xl space-y-6",children:x})}),t[34]=x,t[35]=u):u=t[35];let j;return t[36]!==u||t[37]!==y?(j=r.jsxs("div",{className:"flex h-full flex-col",children:[y,u]}),t[36]=u,t[37]=y,t[38]=j):j=t[38],j}export{Zr as RecordEditor};
@@ -1,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/registry-layout-B-AziaDa.js","assets/index-BaN-afoy.js","assets/index-DZ3ZDC5F.css","assets/Tool02-BzYaX_I6.js","assets/CheckCircle-C7ZjzPbu.js","assets/Settings02-B24bXABo.js","assets/use-mcp-client-BguAtqWP.js","assets/constants-dLUUoWH7.js","assets/auth-C1mLE9XU.js","assets/useInfiniteQuery-B60Agqd0.js","assets/use-infinite-scroll-CRQF25ox.js","assets/badge-CD65OXUc.js","assets/input-BL44R0Ow.js","assets/dropdown-menu-DcwzyPlb.js","assets/Check-BMnpWKJZ.js","assets/ChevronRight-BCHrZPUm.js","assets/DotsVertical-D2-2t9Qs.js","assets/table-rAhdo7uM.js","assets/toggle-group-BPIvKnoi.js","assets/use-view-mode-CxT4TFxL.js","assets/FilterLines-DiqR_6_e.js","assets/Globe01-Cu-3J1fk.js","assets/SearchMd-DDRA5KzP.js","assets/dialog-DDlgJ2sN.js","assets/AlertCircle-erQ61Csc.js","assets/Download01-CfPNpe6a.js","assets/Upload01-sbpI7c_G.js","assets/metadata-dUsYcpuu.js","assets/alert-dialog-CAn2oyVG.js","assets/Trash01-DylHh_3b.js","assets/label-CnHLay7c.js","assets/select-Ah6pA4WN.js","assets/ChevronDown-9PKtT3SZ.js","assets/ChevronUp-lUj1GxXD.js","assets/switch-Cx3ZmK87.js","assets/textarea-jO9kOIyu.js","assets/ArrowLeft-DUvY_Ggx.js","assets/XCircle-DzGXFEFq.js","assets/checkbox-CTg3o0P5.js","assets/Eye-BUSWHmBR.js","assets/LinkExternal01-R8OleOUn.js","assets/use-copy-DqhHJBdl.js","assets/Copy01-CSAF6Gjy.js","assets/Key01-B-BkMHjC.js","assets/Plus-ZZbNHet6.js","assets/mcp-oauth-XE5sb7Li.js","assets/Play-D0gv8izV.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-BaN-afoy.js";import{R as n}from"./require-capability-BwDCk_FF.js";import"./access-gate-V9YXd7W-.js";import"./capability-load-error-CQIyho8_.js";const c=s.lazy(()=>o(()=>import("./registry-layout-B-AziaDa.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-B-AziaDa.js","assets/index-BaN-afoy.js","assets/index-DZ3ZDC5F.css","assets/Tool02-BzYaX_I6.js","assets/CheckCircle-C7ZjzPbu.js","assets/Settings02-B24bXABo.js","assets/use-mcp-client-BguAtqWP.js","assets/constants-dLUUoWH7.js","assets/auth-C1mLE9XU.js","assets/useInfiniteQuery-B60Agqd0.js","assets/use-infinite-scroll-CRQF25ox.js","assets/badge-CD65OXUc.js","assets/input-BL44R0Ow.js","assets/dropdown-menu-DcwzyPlb.js","assets/Check-BMnpWKJZ.js","assets/ChevronRight-BCHrZPUm.js","assets/DotsVertical-D2-2t9Qs.js","assets/table-rAhdo7uM.js","assets/toggle-group-BPIvKnoi.js","assets/use-view-mode-CxT4TFxL.js","assets/FilterLines-DiqR_6_e.js","assets/Globe01-Cu-3J1fk.js","assets/SearchMd-DDRA5KzP.js","assets/dialog-DDlgJ2sN.js","assets/AlertCircle-erQ61Csc.js","assets/Download01-CfPNpe6a.js","assets/Upload01-sbpI7c_G.js","assets/metadata-dUsYcpuu.js","assets/alert-dialog-CAn2oyVG.js","assets/Trash01-DylHh_3b.js","assets/label-CnHLay7c.js","assets/select-Ah6pA4WN.js","assets/ChevronDown-9PKtT3SZ.js","assets/ChevronUp-lUj1GxXD.js","assets/switch-Cx3ZmK87.js","assets/textarea-jO9kOIyu.js","assets/ArrowLeft-DUvY_Ggx.js","assets/XCircle-DzGXFEFq.js","assets/checkbox-CTg3o0P5.js","assets/Eye-BUSWHmBR.js","assets/LinkExternal01-R8OleOUn.js","assets/use-copy-DqhHJBdl.js","assets/Copy01-CSAF6Gjy.js","assets/Key01-B-BkMHjC.js","assets/Plus-ZZbNHet6.js","assets/mcp-oauth-XE5sb7Li.js","assets/Play-D0gv8izV.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-BaN-afoy.js";import{R as u}from"./require-capability-BwDCk_FF.js";import"./access-gate-V9YXd7W-.js";import"./capability-load-error-CQIyho8_.js";const g=l.lazy(()=>p(()=>import("./registry-layout-B-AziaDa.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-CRQF25ox.js";import{fg as i}from"./index-BaN-afoy.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-CRQF25ox.js";import{fg as u,b$ as n}from"./index-BaN-afoy.js";function a(r,e){return u({...r,enabled:!0,suspense:!0,throwOnError:n},s,e)}export{a as u};