decocms 4.537.0 → 4.537.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 (394) hide show
  1. package/dist/client/assets/{ActiveShapeUtils-y_apbvuY.js → ActiveShapeUtils-yhcUtHHS.js} +1 -1
  2. package/dist/client/assets/{AlertCircle-DRnRYwqq.js → AlertCircle-DsSNGaRO.js} +1 -1
  3. package/dist/client/assets/{AreaChart-qZjFj5zm.js → AreaChart-BAQGKkiD.js} +1 -1
  4. package/dist/client/assets/{ArrowLeft-dhJPRoJc.js → ArrowLeft-B01RxJRj.js} +1 -1
  5. package/dist/client/assets/{ArrowUp-DCa9i3G5.js → ArrowUp-Bu18irF8.js} +1 -1
  6. package/dist/client/assets/{BarChart-C6vIIs8P.js → BarChart-C5cLeRST.js} +1 -1
  7. package/dist/client/assets/{Building02-CVQp36XY.js → Building02-D-2NbAZo.js} +1 -1
  8. package/dist/client/assets/{CartesianChart-Bgq-aAjd.js → CartesianChart-8vSKNYyy.js} +1 -1
  9. package/dist/client/assets/{CategoricalChart-iu2AXlfn.js → CategoricalChart-DCX1zl8x.js} +1 -1
  10. package/dist/client/assets/{CheckCircle-DXy-8Gdi.js → CheckCircle-B4-Ff7Qe.js} +1 -1
  11. package/dist/client/assets/{ChevronSelectorVertical-D8NLW3aV.js → ChevronSelectorVertical-adxPKAxb.js} +1 -1
  12. package/dist/client/assets/{ChevronUp-CF7bSX44.js → ChevronUp-D7JVZ_BI.js} +1 -1
  13. package/dist/client/assets/{Copy01-V7GirmsP.js → Copy01-F5_ROU3s.js} +1 -1
  14. package/dist/client/assets/{CreditCard01-DlBr5Kei.js → CreditCard01-CgE_ZJJj.js} +1 -1
  15. package/dist/client/assets/{DotsVertical-DE1RrMZs.js → DotsVertical-hdwmfsYl.js} +1 -1
  16. package/dist/client/assets/{ErrorBarContext-D5PscfUk.js → ErrorBarContext-BSipIxD5.js} +1 -1
  17. package/dist/client/assets/{Globe04-C-hJB9ic.js → Globe04-BLJZauXI.js} +1 -1
  18. package/dist/client/assets/{Image01-CJFRkMXP.js → Image01-DPi9CgXb.js} +1 -1
  19. package/dist/client/assets/{Key01-BH_Io8ws.js → Key01-BrDjS2pL.js} +1 -1
  20. package/dist/client/assets/{Link01-BkANjVDr.js → Link01-CtgaWX0o.js} +1 -1
  21. package/dist/client/assets/{LinkBroken01-K245w0c9.js → LinkBroken01-Dd7298F5.js} +1 -1
  22. package/dist/client/assets/{Minus-BwkA6Ip-.js → Minus-Ct2ChLHg.js} +1 -1
  23. package/dist/client/assets/{Monitor01-mSGRD2AJ.js → Monitor01-CScek5CL.js} +1 -1
  24. package/dist/client/assets/{Play-CBQYMq3X.js → Play-CH9WhvU1.js} +1 -1
  25. package/dist/client/assets/{Plus-C71dI_wT.js → Plus-CU39WUtG.js} +1 -1
  26. package/dist/client/assets/{ReferenceLine-CzNoqyDS.js → ReferenceLine-CeyUUBIl.js} +1 -1
  27. package/dist/client/assets/{SearchMd-DU_oXGnf.js → SearchMd-urqTL2Em.js} +1 -1
  28. package/dist/client/assets/{Sector-DzJLml2K.js → Sector-CvZL63_f.js} +1 -1
  29. package/dist/client/assets/{ShoppingBag01-BjpYBEx2.js → ShoppingBag01-B86_QWlx.js} +1 -1
  30. package/dist/client/assets/{Sun-X-JIUgrn.js → Sun-DxJF0OxD.js} +1 -1
  31. package/dist/client/assets/{SwitchHorizontal01-CMscdcfe.js → SwitchHorizontal01-CR3vOgLU.js} +1 -1
  32. package/dist/client/assets/{Tool01-BWgVn6V3.js → Tool01-CVApp_1G.js} +1 -1
  33. package/dist/client/assets/{Trash01-5TBIiVL1.js → Trash01-EkCl9YTp.js} +1 -1
  34. package/dist/client/assets/{Upload01-BU-XpefE.js → Upload01-1uTS_89T.js} +1 -1
  35. package/dist/client/assets/{UserSquare-B1jSdGVS.js → UserSquare-C1dwG7kT.js} +1 -1
  36. package/dist/client/assets/{Users01-BdkxkowI.js → Users01-B_qvNCiA.js} +1 -1
  37. package/dist/client/assets/{XClose-CDN_v21b.js → XClose-DvIVBQdA.js} +1 -1
  38. package/dist/client/assets/{ZoomOut-D1ZMZ7Ql.js → ZoomOut-f9tZKJSQ.js} +1 -1
  39. package/dist/client/assets/{access-gate-ClGPmPHt.js → access-gate-Cyf9akuC.js} +1 -1
  40. package/dist/client/assets/{add-connection-dialog-CMyo6oKy.js → add-connection-dialog-Dbcpql79.js} +1 -1
  41. package/dist/client/assets/{agent-analytics-BVA-hdXj.js → agent-analytics-Dea_Sm2-.js} +1 -1
  42. package/dist/client/assets/agent-app-DtceHxFF.js +1 -0
  43. package/dist/client/assets/{agent-assets-6uaUqu-8.js → agent-assets-BRZ3h-_m.js} +1 -1
  44. package/dist/client/assets/{agent-automation-CyA1eJ7V.js → agent-automation-CC_lLFSH.js} +1 -1
  45. package/dist/client/assets/{agent-automations-BsD4sRtI.js → agent-automations-DHlAGZqt.js} +1 -1
  46. package/dist/client/assets/{agent-calendar-y11lHEIG.js → agent-calendar-CxREsux6.js} +1 -1
  47. package/dist/client/assets/{agent-connect-sources-CRiv9LNt.js → agent-connect-sources-Cc5YgmZz.js} +1 -1
  48. package/dist/client/assets/agent-deck-W_6gGRWO.js +1 -0
  49. package/dist/client/assets/{agent-e2e-BzG5Njlc.js → agent-e2e-CioASlMh.js} +1 -1
  50. package/dist/client/assets/agent-experiments-CcumhNxI.js +1 -0
  51. package/dist/client/assets/{agent-file-BJmjvL-m.js → agent-file-so3Ekgz4.js} +1 -1
  52. package/dist/client/assets/{agent-hosting-B1V0UQdc.js → agent-hosting-D1g9tqwP.js} +1 -1
  53. package/dist/client/assets/{agent-icon-B_qYhKCV.js → agent-icon-DdxCtAec.js} +1 -1
  54. package/dist/client/assets/agent-library-file-Ba-KbKkE.js +1 -0
  55. package/dist/client/assets/agent-library-v2dzRuYM.js +1 -0
  56. package/dist/client/assets/agent-monitor-CDPdxMY7.js +1 -0
  57. package/dist/client/assets/{agent-overview-CWssV5Yc.js → agent-overview-DzUwaDPE.js} +1 -1
  58. package/dist/client/assets/{agent-releases-UAZXpaXI.js → agent-releases-DwCJjs1Q.js} +1 -1
  59. package/dist/client/assets/agent-settings--ns22OIv.js +1 -0
  60. package/dist/client/assets/{agent-site-editor-B49sCcgj.js → agent-site-editor-CHB6L936.js} +1 -1
  61. package/dist/client/assets/agent-site-editor-code-rnWgDK69.js +2 -0
  62. package/dist/client/assets/agent-site-editor-content-wfNxlhTc.js +1 -0
  63. package/dist/client/assets/agent-site-editor-preview-BR5d0muf.js +1 -0
  64. package/dist/client/assets/agent-view-BvqKVVI5.js +1 -0
  65. package/dist/client/assets/{agent-view-guard-DQWcU1Ta.js → agent-view-guard-ClXzE-63.js} +1 -1
  66. package/dist/client/assets/{agents-list-CXRwlTsL.js → agents-list-DpIfckJp.js} +1 -1
  67. package/dist/client/assets/{ai-providers-DpN4-Rc5.js → ai-providers-8aNYexZO.js} +1 -1
  68. package/dist/client/assets/{alert-WCvCZtxv.js → alert-DywPCve6.js} +1 -1
  69. package/dist/client/assets/{analytics-sections-CM96IJ_a.js → analytics-sections-CnVdxown.js} +1 -1
  70. package/dist/client/assets/api-keys-DMelMJEn.js +1 -0
  71. package/dist/client/assets/{api-keys-CeA4G_71.js → api-keys-DwmN5uqI.js} +1 -1
  72. package/dist/client/assets/{app-editor-Busvh7Vl.js → app-editor-D0rjcOEQ.js} +1 -1
  73. package/dist/client/assets/{asset-utils-Cvf4BiC5.js → asset-utils-DOIw71D7.js} +1 -1
  74. package/dist/client/assets/{auth-BskCOxxm.js → auth-CCEtTsph.js} +1 -1
  75. package/dist/client/assets/{auth-catchall-C2bNuCgr.js → auth-catchall-BiTfI2yn.js} +1 -1
  76. package/dist/client/assets/{auth-entry-DVFGgDo3.js → auth-entry-DvtPCAAG.js} +1 -1
  77. package/dist/client/assets/{auth-split-layout-DlL1FKYz.js → auth-split-layout-DIWXo7Gc.js} +1 -1
  78. package/dist/client/assets/{authenticate-and-persist-oauth-DvAD85kB.js → authenticate-and-persist-oauth-6k6dgv04.js} +1 -1
  79. package/dist/client/assets/{automation-list-row-DiCSbeEW.js → automation-list-row-jw2OeMwv.js} +1 -1
  80. package/dist/client/assets/{automation-runs-DYOdKm7X.js → automation-runs-CkP3Dw5Q.js} +1 -1
  81. package/dist/client/assets/{automations-DU9elJA8.js → automations-BVaTi9yR.js} +1 -1
  82. package/dist/client/assets/{autosend-ymUlN8FG.js → autosend-BZ1ebJtY.js} +1 -1
  83. package/dist/client/assets/{badge-CpDbvGYV.js → badge-DcwG1m6V.js} +1 -1
  84. package/dist/client/assets/{block-document-8rBkiUe7.js → block-document-OSuuHlgP.js} +1 -1
  85. package/dist/client/assets/{blocks-preview-workspace-context-BTTauzVT.js → blocks-preview-workspace-context-Ciybb5dj.js} +1 -1
  86. package/dist/client/assets/{blocks-tab-states-KtRMrzHp.js → blocks-tab-states-x44-eBGF.js} +1 -1
  87. package/dist/client/assets/{blog-schema-DjJrwM8w.js → blog-schema-BhpyM93k.js} +1 -1
  88. package/dist/client/assets/{buckets-CqBAv48G.js → buckets-DqjY95YI.js} +1 -1
  89. package/dist/client/assets/{build-improve-prompt-doc-CtlNAkdJ.js → build-improve-prompt-doc-DRyZLp5K.js} +1 -1
  90. package/dist/client/assets/{calendar-CW9zUPQR.js → calendar-oJys4zZv.js} +1 -1
  91. package/dist/client/assets/{capability-load-error-DoOw8kK-.js → capability-load-error-DAkHaZ7h.js} +1 -1
  92. package/dist/client/assets/{category-editor-BWMIrz-A.js → category-editor-Duc2ZwzI.js} +1 -1
  93. package/dist/client/assets/{cdn-tab-Bpp4qG9y.js → cdn-tab-I-wgZFbg.js} +1 -1
  94. package/dist/client/assets/{chart-o_A4s6u6.js → chart-ucSG4w2I.js} +1 -1
  95. package/dist/client/assets/{chat-context-BkD7cnTX.js → chat-context-B1aQFxFE.js} +1 -1
  96. package/dist/client/assets/{chat-draft-IizDUWYX.js → chat-draft-BvTOIlI2.js} +1 -1
  97. package/dist/client/assets/{checkbox-DCZoKc7p.js → checkbox-DNPIatCE.js} +1 -1
  98. package/dist/client/assets/{choose-editor-BxAQqsH4.js → choose-editor-UoMkV9t4.js} +1 -1
  99. package/dist/client/assets/{cli-auth-success-iTSJzvih.js → cli-auth-success-DNkw3dEj.js} +1 -1
  100. package/dist/client/assets/{client-icons-Cui6El0q.js → client-icons-lVC2u726.js} +1 -1
  101. package/dist/client/assets/{cms-settings-editor-2I5xipyw.js → cms-settings-editor-CxbAj_F8.js} +1 -1
  102. package/dist/client/assets/{collapsible-Durvl14U.js → collapsible-CrBKXUy-.js} +1 -1
  103. package/dist/client/assets/{collection-detail-gEKfAeD7.js → collection-detail-D7GUC7Dd.js} +1 -1
  104. package/dist/client/assets/{collection-display-button-DO-A4M7I.js → collection-display-button-pzAVpzEr.js} +1 -1
  105. package/dist/client/assets/{collection-search-B9JK80fQ.js → collection-search-BhydX10Z.js} +1 -1
  106. package/dist/client/assets/{collection-table-wrapper-DocmS6Tc.js → collection-table-wrapper-BARBu1vh.js} +1 -1
  107. package/dist/client/assets/{collection-tabs-BSiUMQsV.js → collection-tabs-Cp1aS08H.js} +1 -1
  108. package/dist/client/assets/{column-rules-OoHv0JiH.js → column-rules-D1e6dBZX.js} +1 -1
  109. package/dist/client/assets/{combobox-WMsgd0Hv.js → combobox-dm7wbcfJ.js} +1 -1
  110. package/dist/client/assets/{command-BIb5FsHz.js → command-Cbu8fmOM.js} +1 -1
  111. package/dist/client/assets/{companion-mcps-section-D1zN7Mff.js → companion-mcps-section-Du5SYEcB.js} +1 -1
  112. package/dist/client/assets/{config-D4iPB0e9.js → config-D-WhNnKe.js} +1 -1
  113. package/dist/client/assets/{connect-CHkKmE6B.js → connect-DCArRhMu.js} +1 -1
  114. package/dist/client/assets/{connect-layout-CNlQiKvR.js → connect-layout-rbbb5nyp.js} +1 -1
  115. package/dist/client/assets/{connect-source-dialog-CWR4mzJ5.js → connect-source-dialog-CJoxgNIe.js} +1 -1
  116. package/dist/client/assets/{connection--sIRN7Zz.js → connection-DgniLm7d.js} +1 -1
  117. package/dist/client/assets/{connection-card-PkrvBZMA.js → connection-card-Cw8hQEWn.js} +1 -1
  118. package/dist/client/assets/{connection-detail-BwPdukE_.js → connection-detail-BTzq0-mw.js} +1 -1
  119. package/dist/client/assets/{connection-form-helpers-BrcWs3bo.js → connection-form-helpers-4Hsujj3d.js} +1 -1
  120. package/dist/client/assets/{connections-QKF1QePN.js → connections-BKsPGhzD.js} +1 -1
  121. package/dist/client/assets/{content-tab-CymL7-AU.js → content-tab-C1joQocl.js} +3 -3
  122. package/dist/client/assets/{context-D5pMnHyU.js → context-BBNRm0cY.js} +1 -1
  123. package/dist/client/assets/{context-menu-CGqIcw34.js → context-menu-BH71okli.js} +1 -1
  124. package/dist/client/assets/{context-shell-CVMVXPAa.js → context-shell-BudktJu-.js} +3 -3
  125. package/dist/client/assets/{core.esm-BYO5Z6so.js → core.esm-BFZ42Fv-.js} +1 -1
  126. package/dist/client/assets/{create-organization-dialog-CcgFc2Vy.js → create-organization-dialog-CYQqeQxi.js} +1 -1
  127. package/dist/client/assets/{daily-pulse-BvP7pwHI.js → daily-pulse-B-UdOCnV.js} +1 -1
  128. package/dist/client/assets/{discover-DJgQKXJH.js → discover-C-gupiYw.js} +1 -1
  129. package/dist/client/assets/{domain-settings-DNVwbeRA.js → domain-settings-dKTh9O6x.js} +1 -1
  130. package/dist/client/assets/{drawer-Cxv0RJJc.js → drawer-YkScn96W.js} +1 -1
  131. package/dist/client/assets/{editor-CAg6_OHN.js → editor-CmkWU8tF.js} +1 -1
  132. package/dist/client/assets/{editor-classes-65iPHzyu.js → editor-classes-AwfBlmhb.js} +1 -1
  133. package/dist/client/assets/{empty-state-CbtDK1p4.js → empty-state-90fmDGX0.js} +1 -1
  134. package/dist/client/assets/{empty-state-Cnib0rT2.js → empty-state-B3GXzASb.js} +1 -1
  135. package/dist/client/assets/{experiments-tab-l3lCfqnU.js → experiments-tab-6jnr153j.js} +1 -1
  136. package/dist/client/assets/{experiments-tab-choice-BF5vCkwx.js → experiments-tab-choice-DWXV3ugT.js} +1 -1
  137. package/dist/client/assets/{extract-connection-data-BlzNpU0g.js → extract-connection-data-BRjQoUH9.js} +1 -1
  138. package/dist/client/assets/{feature-gate-BMkqzt-o.js → feature-gate-_OoKH8Jk.js} +1 -1
  139. package/dist/client/assets/{feature-paywall-BNIBgu15.js → feature-paywall-DVIw8_0X.js} +1 -1
  140. package/dist/client/assets/{file-explorer-OcuWAbtA.js → file-explorer-CEjKhMr5.js} +1 -1
  141. package/dist/client/assets/{file-preview-DVzYKzBM.js → file-preview-Cvk8WhE8.js} +1 -1
  142. package/dist/client/assets/{file-share-button-DUzrxnvD.js → file-share-button-DXk4glwK.js} +1 -1
  143. package/dist/client/assets/{file-type-icon-DgEz6vKD.js → file-type-icon-DvOOhYea.js} +1 -1
  144. package/dist/client/assets/{folder-icon-BvWvz4ba.js → folder-icon-D_WM_HWT.js} +1 -1
  145. package/dist/client/assets/{form-eY6ZFlTm.js → form-BhcKMpGj.js} +1 -1
  146. package/dist/client/assets/{general-BqcsPemZ.js → general-CeOBobjk.js} +1 -1
  147. package/dist/client/assets/{held-block-view-CFt9Epg_.js → held-block-view-DkrnAzuf.js} +3 -3
  148. package/dist/client/assets/{home-THfWLX1Q.js → home-CfIaMz61.js} +1 -1
  149. package/dist/client/assets/{hosted-publish-feedback-MplGvkIn.js → hosted-publish-feedback-XDssqS4G.js} +1 -1
  150. package/dist/client/assets/{icon-button-zFSlO6o0.js → icon-button-_ohlwTDE.js} +1 -1
  151. package/dist/client/assets/{index-nip7iOYK.js → index--yOMwZND.js} +1 -1
  152. package/dist/client/assets/{index-B8dQ7TV1.js → index-BXQ48iRT.js} +1 -1
  153. package/dist/client/assets/{index-BQy1fC7s.js → index-BsOvs6Ud.js} +1 -1
  154. package/dist/client/assets/{index-GMTk4kpU.js → index-BtxGXVC2.js} +1 -1
  155. package/dist/client/assets/{index-DWVvKiTX.js → index-C5dfiFIi.js} +1 -1
  156. package/dist/client/assets/{index-DHtu77UN.js → index-C_be57Rz.js} +1 -1
  157. package/dist/client/assets/{index-XCJY2Rrb.js → index-CmCTycna.js} +3 -3
  158. package/dist/client/assets/{index-CLAZinux.js → index-DO7O5_6P.js} +1 -1
  159. package/dist/client/assets/{index-D6_0KaHs.js → index-DkVNMG5q.js} +1 -1
  160. package/dist/client/assets/{index-DsiaaSSc.js → index-DpNp-ve5.js} +1 -1
  161. package/dist/client/assets/{index-zUB8FFE1.js → index-Dzx12qZo.js} +1 -1
  162. package/dist/client/assets/{index-AYos0XvL.js → index-Rt22aFrD.js} +1 -1
  163. package/dist/client/assets/{index-6f3vVVaF.js → index-VBuL7prM.js} +1 -1
  164. package/dist/client/assets/{index-CsApew6l.js → index-dyo6wh5U.js} +1 -1
  165. package/dist/client/assets/{index-redirect-CRKl1so8.js → index-redirect-DMltTqzD.js} +1 -1
  166. package/dist/client/assets/{index-fxFKE7Rw.js → index-yPsmQJUX.js} +1 -1
  167. package/dist/client/assets/{infiniteQueryObserver-SqL3Niv0.js → infiniteQueryObserver-CLbhIHpL.js} +1 -1
  168. package/dist/client/assets/{infra-billing-ByQAtfnW.js → infra-billing-weSo9hes.js} +1 -1
  169. package/dist/client/assets/{input-D2ABoz4g.js → input-BvXOMQxX.js} +3 -3
  170. package/dist/client/assets/{input-fak0uH7y.js → input-Cc7xo0Fp.js} +1 -1
  171. package/dist/client/assets/{integration-icon-ChUs9lab.js → integration-icon-Doe4P0Kl.js} +1 -1
  172. package/dist/client/assets/{jira-icon-DVEz-ds4.js → jira-icon-Chsuz196.js} +1 -1
  173. package/dist/client/assets/{label-BuH5Zpb0.js → label-C5E6YdDo.js} +1 -1
  174. package/dist/client/assets/{layout-D6sPMagm.js → layout-riOmO6on.js} +1 -1
  175. package/dist/client/assets/{legacy-agents-deep-y8J0GP6s.js → legacy-agents-deep-oaDc8wO4.js} +1 -1
  176. package/dist/client/assets/{legacy-main-redirect-Bb9KPjW0.js → legacy-main-redirect-DwVqZb3U.js} +1 -1
  177. package/dist/client/assets/library-Dt_VODwM.js +1 -0
  178. package/dist/client/assets/{login-BBM8BuVw.js → login-DgUtsKWW.js} +1 -1
  179. package/dist/client/assets/{markdown-DI6hVa7Y.js → markdown-DAn8k64V.js} +1 -1
  180. package/dist/client/assets/{mcp-app-renderer-DYthJUs1.js → mcp-app-renderer-GoIuZHuL.js} +1 -1
  181. package/dist/client/assets/{mcp-oauth-CRXIwZNg.js → mcp-oauth-DmOKmZVC.js} +1 -1
  182. package/dist/client/assets/{mcp-oauth-CblPqKgI.js → mcp-oauth-GNmXiFFs.js} +1 -1
  183. package/dist/client/assets/{members-C3RrM6Y9.js → members-Cip4CN1C.js} +1 -1
  184. package/dist/client/assets/{memory-DnnTazxf.js → memory-_pGxZsnC.js} +1 -1
  185. package/dist/client/assets/{mini-report-page-B4LPZV2X.js → mini-report-page-CyrcjR-n.js} +1 -1
  186. package/dist/client/assets/{mock-board-qhB2rKsU.js → mock-board-0xaTtb2M.js} +3 -3
  187. package/dist/client/assets/{monaco-editor-Dueqt8rk.js → monaco-editor-CcV2aDa3.js} +1 -1
  188. package/dist/client/assets/monitoring-CfBB8r1M.js +1 -0
  189. package/dist/client/assets/{monitoring-stats-row-Bq961t1j.js → monitoring-stats-row--0zJofeS.js} +1 -1
  190. package/dist/client/assets/{multi-select-CwOtZVAK.js → multi-select-4N4vHK34.js} +1 -1
  191. package/dist/client/assets/{mustache-DOlp7gZ2.js → mustache-Bg8EgQ-_.js} +1 -1
  192. package/dist/client/assets/{named-rule-uses-H7aokudG.js → named-rule-uses-BukH47Cc.js} +1 -1
  193. package/dist/client/assets/{new-project-dialog-DNY2vbtl.js → new-project-dialog-KDS7pzFq.js} +1 -1
  194. package/dist/client/assets/{oauth-callback-CqZGgWEK.js → oauth-callback-DbbVim0F.js} +1 -1
  195. package/dist/client/assets/{oauth-callback-ai-provider-ByQdMtU8.js → oauth-callback-ai-provider-ByP_klHX.js} +1 -1
  196. package/dist/client/assets/{onboarding-BSEVsBMK.js → onboarding-j1GMg75H.js} +1 -1
  197. package/dist/client/assets/{openai-conversation-Cab1JdwW.js → openai-conversation-P0zqVN-S.js} +1 -1
  198. package/dist/client/assets/{optimistic-project-sidebar-views-C0OxSQE7.js → optimistic-project-sidebar-views-CnClfQJl.js} +1 -1
  199. package/dist/client/assets/{order-monitor-day-CUDQDazN.js → order-monitor-day-t2WYWs4x.js} +1 -1
  200. package/dist/client/assets/{organization-choice-DF8NVX7q.js → organization-choice-XuLR3C-R.js} +1 -1
  201. package/dist/client/assets/{orgs-CPSuPDLg.js → orgs-Cs710gnu.js} +1 -1
  202. package/dist/client/assets/{page-seo-form-CQ8JiEYO.js → page-seo-form-DYrNzAep.js} +1 -1
  203. package/dist/client/assets/{pair-BPGH0UX4.js → pair-BDAPJ4rm.js} +1 -1
  204. package/dist/client/assets/{parse-sections-COIV3ooN.js → parse-sections-W3MPdtXH.js} +1 -1
  205. package/dist/client/assets/{plan-CfDWTivB.js → plan-fCa7FPkH.js} +1 -1
  206. package/dist/client/assets/{plan-ladder-BzTsrX2B.js → plan-ladder-BEBIL2qt.js} +1 -1
  207. package/dist/client/assets/{popover-CnAr_EpU.js → popover-DNkrJQB1.js} +1 -1
  208. package/dist/client/assets/{post-calendar-tWBlYSWZ.js → post-calendar-BB3uOqaC.js} +1 -1
  209. package/dist/client/assets/{post-editor-CgszQakJ.js → post-editor-Q2zNazl3.js} +1 -1
  210. package/dist/client/assets/{preview-content-DRTZx9Bm.js → preview-content-cF1uruZg.js} +1 -1
  211. package/dist/client/assets/{preview-dialog-D983fZOy.js → preview-dialog-uNk-Chy3.js} +1 -1
  212. package/dist/client/assets/{preview-panel-O0kBlxM5.js → preview-panel-DUt7zZ3m.js} +1 -1
  213. package/dist/client/assets/{preview-tab-CvaKf5d6.js → preview-tab-Xru15zHI.js} +3 -3
  214. package/dist/client/assets/{product-picker-dialog-CEj1fFi5.js → product-picker-dialog-Cl91xabc.js} +1 -1
  215. package/dist/client/assets/{profile-DrTKObjn.js → profile-BsxWlumA.js} +1 -1
  216. package/dist/client/assets/{project-app-view-xsT09BTO.js → project-app-view-DvMT9mh-.js} +1 -1
  217. package/dist/client/assets/{project-apps-DT45o3Ib.js → project-apps-C2Jbw7FY.js} +1 -1
  218. package/dist/client/assets/{project-feed-Blm5WMCJ.js → project-feed-euP67ikd.js} +1 -1
  219. package/dist/client/assets/{project-icon-4djiAraX.js → project-icon-Dfjy3t6s.js} +1 -1
  220. package/dist/client/assets/project-reports-IGQXKPN5.js +1 -0
  221. package/dist/client/assets/project-tasks-CY2-X4de.js +1 -0
  222. package/dist/client/assets/{projects-BMFJ8lWh.js → projects-Dv4lrItl.js} +1 -1
  223. package/dist/client/assets/{projects-empty-state-CtT4w4Zw.js → projects-empty-state-BgRJeB5B.js} +1 -1
  224. package/dist/client/assets/{prompts-yk9XkKJq.js → prompts-B_F4GkjW.js} +1 -1
  225. package/dist/client/assets/record-editor-XcAYObGw.js +1 -0
  226. package/dist/client/assets/{redirect-editor-DLz0OohS.js → redirect-editor-BUmsS01w.js} +1 -1
  227. package/dist/client/assets/{releases-api-QVw7Rj4b.js → releases-api-2dcptM-m.js} +1 -1
  228. package/dist/client/assets/reports-DHZ9jnE-.js +1 -0
  229. package/dist/client/assets/{reports-onboarding-Ul6JEKVy.js → reports-onboarding-BAV-tGI2.js} +1 -1
  230. package/dist/client/assets/{reports-tab-DhjP52wy.js → reports-tab-BeUKP0xb.js} +2 -2
  231. package/dist/client/assets/{reports-DdigpKAD.js → reports-wfUqOvyX.js} +1 -1
  232. package/dist/client/assets/{repositories-D84WLywY.js → repositories-B5dh5AKC.js} +1 -1
  233. package/dist/client/assets/repositories-CtTuC1Hs.js +1 -0
  234. package/dist/client/assets/{repository-binding-CTtYHb-Z.js → repository-binding-CThoSyHv.js} +1 -1
  235. package/dist/client/assets/{repository-import-picker-C77VQar8.js → repository-import-picker-qAuaD12k.js} +1 -1
  236. package/dist/client/assets/{repository-picker-B7eKH7Vb.js → repository-picker-DDRyvQsk.js} +1 -1
  237. package/dist/client/assets/{require-capability-DhL0sK8n.js → require-capability-DNr9UvJX.js} +1 -1
  238. package/dist/client/assets/{required-auth-layout-72vwEXGr.js → required-auth-layout-CTbioyWv.js} +1 -1
  239. package/dist/client/assets/{reset-password-CWJBwyhD.js → reset-password-MrCjOeyS.js} +1 -1
  240. package/dist/client/assets/{resizable-Dy8CIRPz.js → resizable-0Gk3-z7N.js} +1 -1
  241. package/dist/client/assets/{resolve-tab-icon-CBUsBNB8.js → resolve-tab-icon-Qu0kefvi.js} +1 -1
  242. package/dist/client/assets/{review-settings-BsYqbcN2.js → review-settings-Booi8OB4.js} +1 -1
  243. package/dist/client/assets/{roles-yd97r8fq.js → roles-DoAZd2f4.js} +1 -1
  244. package/dist/client/assets/route-BYI1w_04.js +1 -0
  245. package/dist/client/assets/{route-Ct7_ewBL.js → route-DR5ZYcAb.js} +1 -1
  246. package/dist/client/assets/{route-dZA-wMYj.js → route-Es1NvkGT.js} +1 -1
  247. package/dist/client/assets/{sandbox-lifecycle-context-llpDvqG_.js → sandbox-lifecycle-context-DAMj2AMG.js} +1 -1
  248. package/dist/client/assets/{schema-DYbCJAzi.js → schema-BR0l4kRv.js} +1 -1
  249. package/dist/client/assets/{schema-I274PqDR.js → schema-C7tXzejf.js} +1 -1
  250. package/dist/client/assets/{scroll-area-BED1KeeA.js → scroll-area-BYxy4OBv.js} +1 -1
  251. package/dist/client/assets/{search-input-uZhyE3_X.js → search-input-BR0FL_fC.js} +1 -1
  252. package/dist/client/assets/{search-toggle-l8vk8n5z.js → search-toggle-DcHknRA4.js} +1 -1
  253. package/dist/client/assets/{secret-picker-BLUn_4nc.js → secret-picker-BzajETTn.js} +1 -1
  254. package/dist/client/assets/{secrets-BXN3pXLj.js → secrets-B87bnnT8.js} +1 -1
  255. package/dist/client/assets/{section-array-field-D0cRnZh-.js → section-array-field-BwqyQovG.js} +1 -1
  256. package/dist/client/assets/{sections-By49OdzN.js → sections-CSz7GDoH.js} +1 -1
  257. package/dist/client/assets/{sections-editor-D66Xq71z.js → sections-editor-BDT8nJ8M.js} +1 -1
  258. package/dist/client/assets/{select-BMOocRM-.js → select-DnNBXCrg.js} +1 -1
  259. package/dist/client/assets/{select-model-CJjqgzAL.js → select-model-B6ZHDJHF.js} +1 -1
  260. package/dist/client/assets/{seo-editor-BBPgZZ02.js → seo-editor-Bk86pp7s.js} +1 -1
  261. package/dist/client/assets/{separator-Cc6-dV_Q.js → separator-DwMB-4Kw.js} +1 -1
  262. package/dist/client/assets/settings-tab-C-wgOIRP.js +1 -0
  263. package/dist/client/assets/{sheet-DWuyd_rj.js → sheet-ChxaMPjW.js} +1 -1
  264. package/dist/client/assets/{shell-layout-Clz71xPl.js → shell-layout-CFh0mRqD.js} +1 -1
  265. package/dist/client/assets/{site-draft-actions-BzPfC31f.js → site-draft-actions-CU_5sg8P.js} +1 -1
  266. package/dist/client/assets/{site-draft-view-Ci_mlKWw.js → site-draft-view-DOLlSFeR.js} +2 -2
  267. package/dist/client/assets/site-editor-C2-TKEXJ.js +1 -0
  268. package/dist/client/assets/{site-editor-toast-84yUu6Hk.js → site-editor-toast-BP7D4YGW.js} +1 -1
  269. package/dist/client/assets/{skills-BjJIGPkE.js → skills-BDo7F1SW.js} +1 -1
  270. package/dist/client/assets/{slider-B2JpdpyA.js → slider-nQTOuF1W.js} +1 -1
  271. package/dist/client/assets/{sortable.esm-BXB60_eg.js → sortable.esm-Cwxw88KL.js} +1 -1
  272. package/dist/client/assets/{sso-aL7cdgbc.js → sso-BnmIWVxe.js} +1 -1
  273. package/dist/client/assets/{suggestion-LovLSSJc.js → suggestion-DuRjk-tw.js} +1 -1
  274. package/dist/client/assets/{switch-B_9nxf01.js → switch-DAt1CJQ8.js} +1 -1
  275. package/dist/client/assets/{symbol-CSicVVsL.js → symbol-Bc71_aUK.js} +1 -1
  276. package/dist/client/assets/{synced-repos-CI3_H3AT.js → synced-repos-BkrGinYm.js} +1 -1
  277. package/dist/client/assets/{tab-icon-glyph-dsPv8CTR.js → tab-icon-glyph-BKCxoiYW.js} +1 -1
  278. package/dist/client/assets/{table-BZJiClHE.js → table-CVuS1iPX.js} +1 -1
  279. package/dist/client/assets/{tabs-DfGzsnLH.js → tabs-Cd2agB38.js} +1 -1
  280. package/dist/client/assets/{task-assignee-avatar-BHKH97zf.js → task-assignee-avatar-BYBjsWL5.js} +1 -1
  281. package/dist/client/assets/{task-board-Dm8bNO3K.js → task-board-B9avN4_l.js} +1 -1
  282. package/dist/client/assets/{task-route-BBHrPXRE.js → task-route-BNqkQrrq.js} +1 -1
  283. package/dist/client/assets/{task-status-_IE7-zSZ.js → task-status-C8jLc7eg.js} +1 -1
  284. package/dist/client/assets/{taskboard-analytics-D8ekHlR-.js → taskboard-analytics-purMmAP5.js} +1 -1
  285. package/dist/client/assets/tasks-Dpq1mXlQ.js +1 -0
  286. package/dist/client/assets/{tasks-D4tEflS7.js → tasks-lqMRM7Lw.js} +1 -1
  287. package/dist/client/assets/{textarea-CAKcv24n.js → textarea-DbQbF1Rv.js} +1 -1
  288. package/dist/client/assets/{thread-analytics-G6rStSUo.js → thread-analytics-CtcTR_ij.js} +1 -1
  289. package/dist/client/assets/{thread-intent-BsxGmuSR.js → thread-intent-DaBdZVqc.js} +1 -1
  290. package/dist/client/assets/{thread-route-9cRZNr2M.js → thread-route-BRf6T_zJ.js} +1 -1
  291. package/dist/client/assets/{thread-route-D3729KYI.js → thread-route-CwX7v_t7.js} +1 -1
  292. package/dist/client/assets/{thread-sheet-body-VzBt0XoY.js → thread-sheet-body-C9UBmWVp.js} +1 -1
  293. package/dist/client/assets/{time-range-picker-91AV0HS6.js → time-range-picker-COWgknWY.js} +1 -1
  294. package/dist/client/assets/{toggle-group-ClSmh9vS.js → toggle-group-DmRyqh-L.js} +1 -1
  295. package/dist/client/assets/{tool-namespace-B0q3DmKt.js → tool-namespace-B-IQX1un.js} +1 -1
  296. package/dist/client/assets/{toolbar-icon-button-BucahLbT.js → toolbar-icon-button-BeP-M8G4.js} +1 -1
  297. package/dist/client/assets/{tooltip-Brg7rMxu.js → tooltip-C8XjApFK.js} +1 -1
  298. package/dist/client/assets/{tooltipContext-CAWfaR40.js → tooltipContext-DbOa_n2v.js} +1 -1
  299. package/dist/client/assets/{track-Dq6Jabi-.js → track-BMd3S4Lk.js} +1 -1
  300. package/dist/client/assets/{types-U_XTGsEf.js → types-XsRyHzlO.js} +1 -1
  301. package/dist/client/assets/{url-slug-BsWc5zfO.js → url-slug-CdB6un30.js} +1 -1
  302. package/dist/client/assets/{usage-stats-HoR2JsD9.js → usage-stats-BWCyT0Gy.js} +1 -1
  303. package/dist/client/assets/{use-ai-providers-x8ij_PJo.js → use-ai-providers-qH4Ik-Pc.js} +1 -1
  304. package/dist/client/assets/{use-apply-named-rule-Cx-2y6sV.js → use-apply-named-rule-DIfU8GBM.js} +1 -1
  305. package/dist/client/assets/{use-automations-Fc63b_KG.js → use-automations-KuMX1Eyf.js} +1 -1
  306. package/dist/client/assets/{use-autosave-C8L8-ch2.js → use-autosave-BZS_B-Eb.js} +1 -1
  307. package/dist/client/assets/{use-chat-layout-state-NN7EAnzB.js → use-chat-layout-state-BpHEG8dN.js} +1 -1
  308. package/dist/client/assets/{use-clock-tick-UZOKVfKg.js → use-clock-tick-COVD-B6i.js} +1 -1
  309. package/dist/client/assets/{use-cms-publish-actions-jt_q-R4U.js → use-cms-publish-actions-CS1iAXW2.js} +1 -1
  310. package/dist/client/assets/{use-connect-companion-zHTvNdYj.js → use-connect-companion-BvXlvTHo.js} +1 -1
  311. package/dist/client/assets/{use-connection-Cgc61Xtr.js → use-connection-lO4qVssV.js} +1 -1
  312. package/dist/client/assets/{use-copy-BSSYnYt9.js → use-copy-BaREpT5V.js} +1 -1
  313. package/dist/client/assets/{use-create-virtual-mcp-Z6TZ50Qb.js → use-create-virtual-mcp-aivifbd6.js} +1 -1
  314. package/dist/client/assets/{use-date-fns-locale-bZYQDNW6.js → use-date-fns-locale-QxOFdnEj.js} +1 -1
  315. package/dist/client/assets/{use-debounced-autosave-D_8PFTvj.js → use-debounced-autosave-Clk1wdBH.js} +1 -1
  316. package/dist/client/assets/{use-debounced-value-DnQLcCv-.js → use-debounced-value-CAD_ySlO.js} +1 -1
  317. package/dist/client/assets/{use-deco-credits-CMm_AUOd.js → use-deco-credits-xIVL56ak.js} +1 -1
  318. package/dist/client/assets/{use-decopilot-events-CN2WGi1W.js → use-decopilot-events-BvC-A7tm.js} +1 -1
  319. package/dist/client/assets/{use-delete-connection-5k_2oH_8.js → use-delete-connection-BpPKD9TJ.js} +1 -1
  320. package/dist/client/assets/{use-deployment-admin-CxT-vvMI.js → use-deployment-admin-Dgaa002n.js} +1 -1
  321. package/dist/client/assets/{use-fast-preview-draft-url-DAUi5Ssd.js → use-fast-preview-draft-url-xz2OlXDn.js} +1 -1
  322. package/dist/client/assets/{use-file-configs-BgZRiuct.js → use-file-configs-Ct3nydab.js} +1 -1
  323. package/dist/client/assets/{use-inbox-feed-YVQqQ73y.js → use-inbox-feed-eeGQ_DN1.js} +1 -1
  324. package/dist/client/assets/{use-infinite-scroll-bLa9D24Y.js → use-infinite-scroll-Ds-mHwfs.js} +1 -1
  325. package/dist/client/assets/{use-join-requests-Ddt-qrso.js → use-join-requests-BNlc0_Bi.js} +1 -1
  326. package/dist/client/assets/{use-main-panel-tabs-BAOwa19w.js → use-main-panel-tabs-DUv47Jut.js} +1 -1
  327. package/dist/client/assets/{use-mcp-auth-status-B97IRKUL.js → use-mcp-auth-status-CpBO6uQr.js} +1 -1
  328. package/dist/client/assets/{use-mcp-client-hu17ZOJ8.js → use-mcp-client-BbedkTYy.js} +1 -1
  329. package/dist/client/assets/{use-mcp-prompts-MX-NMwu3.js → use-mcp-prompts-A7WmAoPP.js} +1 -1
  330. package/dist/client/assets/{use-mcp-tools-Cj7uxxfh.js → use-mcp-tools-S-Ft2NlW.js} +1 -1
  331. package/dist/client/assets/{use-mobile-Dejc85O1.js → use-mobile-P3Ya8YzS.js} +1 -1
  332. package/dist/client/assets/{use-move-blocks-B4T5W0Hm.js → use-move-blocks-X_W67yy1.js} +1 -1
  333. package/dist/client/assets/{use-navigate-to-agent-BF-f4wie.js → use-navigate-to-agent-stfnpiNn.js} +1 -1
  334. package/dist/client/assets/{use-org-fs-rZplhn-U.js → use-org-fs-CmhGHpB2.js} +1 -1
  335. package/dist/client/assets/{use-org-repo-syncs-DVS_Dr6a.js → use-org-repo-syncs-CN2eHzh7.js} +1 -1
  336. package/dist/client/assets/{use-org-sso-0OPGq_oO.js → use-org-sso-BiJlyTWV.js} +1 -1
  337. package/dist/client/assets/{use-organization-roles-DM9PZMxQ.js → use-organization-roles-DG2pmJnC.js} +1 -1
  338. package/dist/client/assets/{use-organization-settings-DEIq_9Uh.js → use-organization-settings-Ba9V58eH.js} +1 -1
  339. package/dist/client/assets/{use-panel-navigate-BgatPgUi.js → use-panel-navigate-KByh7290.js} +1 -1
  340. package/dist/client/assets/{use-project-native-view-presence-CVHdUdbq.js → use-project-native-view-presence-C8uysnzz.js} +1 -1
  341. package/dist/client/assets/{use-project-scope-PXmIipBd.js → use-project-scope-DrGGvmGY.js} +1 -1
  342. package/dist/client/assets/{use-recent-apps-Be78Lwep.js → use-recent-apps-iXMg85OK.js} +1 -1
  343. package/dist/client/assets/{use-releases-C5KIUtRf.js → use-releases-DKA5o_an.js} +1 -1
  344. package/dist/client/assets/{use-reports-diagnostic-DE5GXSzJ.js → use-reports-diagnostic-CkbnKRM_.js} +1 -1
  345. package/dist/client/assets/{use-sandbox-events-CiXFYvVz.js → use-sandbox-events-CaiD-g_5.js} +1 -1
  346. package/dist/client/assets/{use-secrets-B8Abfs3j.js → use-secrets-C2A91dbb.js} +1 -1
  347. package/dist/client/assets/{use-section-preview-base-COTqEG7O.js → use-section-preview-base-Dga6-V7k.js} +1 -1
  348. package/dist/client/assets/{use-session-runtime-2LelPUAr.js → use-session-runtime-ByD3JgBL.js} +1 -1
  349. package/dist/client/assets/{use-sidebar-collapsed-j-XPIanS.js → use-sidebar-collapsed-YrrukETl.js} +1 -1
  350. package/dist/client/assets/{use-tags-Dgk1VEgl.js → use-tags-BCKxyzCy.js} +1 -1
  351. package/dist/client/assets/{use-task-board-analytics-C0GEKBZw.js → use-task-board-analytics-CXMAo-OF.js} +1 -1
  352. package/dist/client/assets/{use-task-board-events-Dt8aUDv3.js → use-task-board-events-BWy3_9E5.js} +1 -1
  353. package/dist/client/assets/{use-task-board-item-prs-n4vW5QFa.js → use-task-board-item-prs-BZUwdBXT.js} +1 -1
  354. package/dist/client/assets/{use-task-metadata-De7tla9K.js → use-task-metadata-CkJJa11v.js} +1 -1
  355. package/dist/client/assets/{use-thread-analytics-DfIaX1Ap.js → use-thread-analytics-CrSfQ1un.js} +1 -1
  356. package/dist/client/assets/{use-thread-outputs-CSdE0zYx.js → use-thread-outputs-4nuB3F97.js} +1 -1
  357. package/dist/client/assets/useInfiniteQuery-Cx_zUJaS.js +1 -0
  358. package/dist/client/assets/{useQueries-CNIDshJH.js → useQueries-4rQGIbkH.js} +1 -1
  359. package/dist/client/assets/useSuspenseInfiniteQuery-IJype0e6.js +1 -0
  360. package/dist/client/assets/{users-B-TILjnq.js → users-CEnYzpyP.js} +1 -1
  361. package/dist/client/assets/{utils-DadC4ah8.js → utils-CJvdN7wG.js} +1 -1
  362. package/dist/client/assets/{variant-calendar-D8PiAx9x.js → variant-calendar-D2fauPat.js} +1 -1
  363. package/dist/client/assets/{variant-matcher-override-2g9uBTl1.js → variant-matcher-override-BjTp5TPV.js} +1 -1
  364. package/dist/client/assets/{view-header-BhtSyFCr.js → view-header-948FwwEa.js} +1 -1
  365. package/dist/client/assets/{virtual-mcp-BDwuOLFs.js → virtual-mcp-Wp_Mdi2k.js} +1 -1
  366. package/dist/client/assets/{watch-sse-pool-oOrd5Rne.js → watch-sse-pool-BzRfvQHl.js} +1 -1
  367. package/dist/client/index.html +1 -1
  368. package/dist/server/server.js +1 -1
  369. package/package.json +1 -1
  370. package/dist/client/assets/agent-app-DSRZxbw3.js +0 -1
  371. package/dist/client/assets/agent-deck-A2-c0m6O.js +0 -1
  372. package/dist/client/assets/agent-experiments-wlW8VJJw.js +0 -1
  373. package/dist/client/assets/agent-library-CWF4NlBt.js +0 -1
  374. package/dist/client/assets/agent-library-file-D_sX0uS4.js +0 -1
  375. package/dist/client/assets/agent-monitor-BQH5Yx_e.js +0 -1
  376. package/dist/client/assets/agent-settings-bg4cFL2R.js +0 -1
  377. package/dist/client/assets/agent-site-editor-code-Bt27Wh-E.js +0 -2
  378. package/dist/client/assets/agent-site-editor-content-iErVjhBr.js +0 -1
  379. package/dist/client/assets/agent-site-editor-preview-9wBg_nt8.js +0 -1
  380. package/dist/client/assets/agent-view-Cq0YK235.js +0 -1
  381. package/dist/client/assets/api-keys-Bib1K_pR.js +0 -1
  382. package/dist/client/assets/library-CYc9fg8c.js +0 -1
  383. package/dist/client/assets/monitoring-D3H0I7hi.js +0 -1
  384. package/dist/client/assets/project-reports-DfiqiVgS.js +0 -1
  385. package/dist/client/assets/project-tasks-B4-5xZpm.js +0 -1
  386. package/dist/client/assets/record-editor-CgyyGcPu.js +0 -1
  387. package/dist/client/assets/reports-DBTfN5pF.js +0 -1
  388. package/dist/client/assets/repositories-DszPvY1k.js +0 -1
  389. package/dist/client/assets/route--iMMdfwf.js +0 -1
  390. package/dist/client/assets/settings-tab-BWjVxYyu.js +0 -1
  391. package/dist/client/assets/site-editor-DbCGWerX.js +0 -1
  392. package/dist/client/assets/tasks-Br3akql5.js +0 -1
  393. package/dist/client/assets/useInfiniteQuery-dDc-QqMO.js +0 -1
  394. package/dist/client/assets/useSuspenseInfiniteQuery-DdDhWqvv.js +0 -1
@@ -4568,7 +4568,7 @@ ${X}`:`${Y}
4568
4568
 
4569
4569
  ${X}
4570
4570
  ${J.slice(Y.length).trimStart()}`}function qE8($){return $?.match(aF5)?.[1]?.toLowerCase()??null}async function ZU5($,Z,Q){let[Y,X]=await Promise.all([$.client.listDecofileEntries(Z,$.packagePath),$.client.listDecofileEntries(Q,$.packagePath)]),J=new Map(KW(Y,$.packagePath).map((H)=>[H.path,H.sha])),G=KW(X,$.packagePath),W=new Set(G.map((H)=>H.path)),K=[];for(let H of G){if(J.get(H.path)===H.sha)continue;K.push({path:H.path,copyFromRef:Q})}for(let H of J.keys())if(!W.has(H))K.push({path:H,deleted:!0});return{changes:K,tree:Y,next:G.map((H)=>({stem:H.stem,sha:H.sha}))}}async function TE8($,Z){try{return await XY0($.client,$.packagePath,Z)}catch(Q){if(Q instanceof l2)return null;throw Q}}async function RE8($,Z,Q){let Y=JO($.packagePath),[X,J]=await Promise.all([$.client.getEntriesAtPaths(Z,[Y]),$.client.getEntriesAtPaths(Q,[Y])]);if(X.get(Y)?.sha===J.get(Y)?.sha)return!1;let[G,W]=await Promise.all([TE8($,Z),TE8($,Q)]);return G!==W}async function ME8($,Z){if(!eB0(Z))throw new Dl;if(!await Vq1($.store,$.site,Z))throw new Dl}async function VE8($,Z){await ME8($,Z);let Q=await C5($.client,$.mainBranch);return RE8($,Q,Z)}async function IE8($,Z,Q={},Y={}){await ME8($,Z);let X=await $.client.readCommit(Z);if(!X)throw new Dl;let J=await C5($.client,$.mainBranch),G=await ZU5($,J,Z);if(G.changes.length===0)return{result:"up-to-date"};let W=await RE8($,J,Z);if(W)console.info("hosted reapply: schema differs",{site:$.site,target:Z,head:J});let K=await Iq1($,J,G,$U5(X,Z,Q.coAuthor));return{result:"merged",sha:K,release:await Uh0($,K,Y),schemaChanged:W}}var Dl,sF5="Reapplied-From",aF5;var vq1=L(()=>{Tp();W5();pK();KB();GY0();Fh0();AE8();Dl=class Dl extends Error{constructor(){super("This commit has no release");this.name="NotPublishedError"}};aF5=/^Reapplied-From:\s*([0-9a-f]{40})\s*$/im});async function kE8($,Z,Q){let[Y,X,J]=await Promise.all([JY0($.store,$.site),L2$($.store,$.site),Z.listCommits({ref:$.mainBranch,since:YU5,cursor:Q,limit:QU5})]),G=new Map(J.items.map((H)=>[H.sha,H.date])),W=J.items.map((H)=>qE8(H.body));await Promise.all([...new Set(W)].filter((H)=>H!==null&&!G.has(H)).map(async(H)=>{let F=await $.client.readCommit(H).catch(()=>null);if(F)G.set(H,F.date)}));let K=J.items.map((H,F)=>{let U=W[F];return{sha:H.sha,date:H.date,message:H.message,author:H.author.name??H.author.login,hasRelease:X.has(H.sha),reapplyOf:U?{sha:U,date:G.get(U)??null}:null}});return{current:Y,commits:K,nextCursor:J.nextCursor}}async function CE8($){let Z=await C5($.client,$.mainBranch),Q=await kq1($,Z);return Cq1($,{revision:Z,schemaHash:Q,publishedAt:new Date().toISOString()})}var QU5=50,YU5="1970-01-01T00:00:00Z";var SE8=L(()=>{W5();KB();GY0();vq1()});function _E8($){return`site-tokens:${$}`}function XU5($){let Z=$?.tokens;if(!Array.isArray(Z))return[];return Z.filter((Q)=>typeof Q==="object"&&Q!==null&&typeof Q.kid==="string"&&typeof Q.iat==="number")}function vE8($){return crypto.subtle.importKey("pkcs8",Buffer.from($,"base64"),{name:"Ed25519"},!1,["sign"])}async function JU5($,Z){let Q=(J)=>bq1(new TextEncoder().encode(JSON.stringify(J))),Y=`${Q({alg:"EdDSA",typ:"JWT"})}.${Q({site:Z.site,kid:Z.kid,iat:Z.iat})}`,X=await crypto.subtle.sign({name:"Ed25519"},$,new TextEncoder().encode(Y));return`${Y}.${bq1(X)}`}function bE8($){let Z=async(Q,Y)=>XU5(await $.kv.get(Q,_E8(Y)));return{list:Z,async issue(Q,Y){let X=await Z(Q,Y),J={kid:bq1(crypto.getRandomValues(new Uint8Array(16))),iat:Math.floor(Date.now()/1000)},G=await JU5(await $.signingKey(),{site:Y,...J});return await $.kv.set(Q,_E8(Y),{tokens:[...X,J]}),{token:G,record:J}}}}var bq1=($)=>Buffer.from($ instanceof Uint8Array?$:new Uint8Array($)).toString("base64url");function WU5(){let $=iq();return $?{store:$,purge:Wh0()}:null}async function jh0($){let Z=$.var.delivery();if(!Z)return null;let Q=$.get("hostedProject"),Y=await $.var.repoClientFor($.var.studioContext,Q.organizationId,Q.repository);return{client:Y,packagePath:Q.packagePath,mainBranch:await Y.getDefaultBranch(),store:Z.store,purge:Z.purge,site:Q.site,previewHosts:await Kh0({site:Q.site,metadata:Q.metadata,domains:$.var.siteDomains})}}function xE8($){let Z=B0().siteTokenSigningKey;if(!Z)return null;return bE8({kv:$.var.studioContext.storage.kv,signingKey:()=>vE8(Z)})}function ps($,Z){let Q=Z instanceof Error?Z.message:String(Z);if(Z instanceof l2)return $.json({error:Q},409);if(Z instanceof Nh0)return console.error("hosted: latest.json update failed",{error:Q}),$.json({error:"latest-update-failed"},502);let Y=y3(Z);if(Y!==null)return $.json({error:Q},Y===404?404:502);return console.error("hosted: request failed",{error:Q}),$.json({error:Q},500)}function fE8($={}){let Z=new $1,Q=$.repoClientFor??h3,Y=$.insightsFor??EE$,X=$.delivery??WU5;return Z.use("*",async(J,G)=>{J.set("repoClientFor",Q),J.set("delivery",X),J.set("siteDomains",$.siteDomains),await G()}),Z.use("/:virtualMcpId/*",GU5),Z.get("/:virtualMcpId/releases",async(J)=>{try{let G=await jh0(J);if(!G)return J.json(Oh0,503);let W=J.get("hostedProject"),K=await Y(J.var.studioContext,W.organizationId,W.repository);return J.json(await kE8(G,K,J.req.query("cursor")??null),200,{"Cache-Control":"no-store"})}catch(G){return ps(J,G)}}),Z.post("/:virtualMcpId/releases/retry",async(J)=>{try{let G=await jh0(J);if(!G)return J.json(Oh0,503);let W=await J.req.json().catch(()=>({})),K=await CE8(G),H=J.var.studioContext.auth?.user?.id;if(typeof W.branch==="string"&&W.branch&&typeof W.draftEtag==="string"&&W.draftEtag&&H){let F=J.get("hostedProject");await Sq1(G,YD0({kv:J.var.studioContext.storage.kv,store:G.store}),{organizationId:F.organizationId,virtualMcpId:F.virtualMcpId,branch:W.branch,site:F.site,editor:H},W.draftEtag)}return J.json({current:K})}catch(G){return ps(J,G)}}),Z.get("/:virtualMcpId/releases/:sha/reapply",async(J)=>{try{let G=await jh0(J);if(!G)return J.json(Oh0,503);return J.json({schemaChanged:await VE8(G,J.req.param("sha"))})}catch(G){if(G instanceof Dl)return J.json({error:G.message},404);return ps(J,G)}}),Z.post("/:virtualMcpId/releases/:sha/reapply",async(J)=>{try{let G=await jh0(J);if(!G)return J.json(Oh0,503);let W=await IE8(G,J.req.param("sha"),{coAuthor:DO(J.var.studioContext)});return J.json(W)}catch(G){if(G instanceof Dl)return J.json({error:G.message},404);if(G instanceof Bl)return J.json({error:"main-moved"},409);return ps(J,G)}}),Z.get("/:virtualMcpId/site-tokens",async(J)=>{let G=J.get("hostedProject"),W=xE8(J);if(!W)return J.json({error:"site tokens not configured"},503);return J.json({site:G.site,tokens:await W.list(G.organizationId,G.site)})}),Z.post("/:virtualMcpId/site-tokens",async(J)=>{let G=J.get("hostedProject"),W=xE8(J);if(!W)return J.json({error:"site tokens not configured"},503);try{let K=await J.var.repoClientFor(J.var.studioContext,G.organizationId,G.repository),H=await pq(K,G.packagePath,await K.getDefaultBranch());if(await ui(J.var.studioContext.storage.virtualMcps,{id:G.virtualMcpId,organizationId:G.organizationId,metadata:G.metadata},H,J.var.studioContext.auth?.user?.id??"system"),!H)return J.json({error:"not a Blocks v8 site"},409);return J.json(await W.issue(G.organizationId,G.site))}catch(K){return ps(J,K)}}),Z}var GU5,Oh0;var yE8=L(()=>{uF();H8();ig0();_3();lF();W5();KB();Eq1();XD0();GY0();Mq1();Fh0();SE8();vq1();s40();nq();hi();l1();dP();GU5=vs(async($,Z)=>{let Q=$.var.studioContext,Y=Q.organization;if(!Y)return $.json({error:"Organization scope required"},500);if(!Q.auth?.user?.id)return $.json({error:"Unauthorized"},401);if(!await qQ(Q,Y.id,"cms"))return $.json({error:"This organization's plan does not include the CMS",code:"feature_not_in_plan"},403);let X=$.req.param("virtualMcpId")??"",J=await Q.storage.virtualMcps.findById(X);if(!J||J.organization_id!==Y.id)return $.json({error:"Virtual MCP not found"},404);if(!CQ(await e7(Q),X))return $.json({error:"Virtual MCP not found"},404);let G=J.metadata??null,W=BW(G,J.connections?.map((H)=>H.connection_id)??[]);if(!W)return $.json({error:"Project has no repository"},404);try{let H=await $.var.repoClientFor(Q,Y.id,W);if(!await GD0({projects:Q.storage.virtualMcps,project:{id:X,organizationId:Y.id,metadata:G},by:Q.auth.user.id,client:H,mainBranch:await H.getDefaultBranch()}))return $.json({error:"Not found"},404)}catch(H){return ps($,H)}let K=await JD0(Q.storage.orgSites,X,Y.id);if(!K)return $.json(gi,409);return $.set("hostedProject",{organizationId:Y.id,virtualMcpId:X,site:K,packagePath:HB(G),repository:W,metadata:G}),Z()}),Oh0={error:"hosted delivery not configured"}});var gE8=($)=>{let Z=new $1;if(Z.use("*",Qs),Z.use("*",cN8),Z.route("/",lN8($.voiceSessions)),Z.route("/",ty0()),Z.route("/",vB8()),Z.route("/",iB8()),Z.route("/",IB8()),Z.route("/",oO8()),Z.route("/",aO8()),Z.route("/",lO8()),Z.route("/",nO8()),Z.route("/",cO8()),Z.route("/",mg0()),Z.route("/tools",Xj8()),Z.route("/",Zj8()),Z.route("/",zO8({kvStorage:$.kvStorage})),Z.route("/",EO8()),Z.route("/fs",_O8({getConnection:$.getNatsConnection})),Z.route("/sandbox",qw8()),Z.route("/decofile",jE8()),Z.route("/hosted",fE8()),Z.route("/",gO8()),Z.route("/",bO8()),Z.route("/deco-sites",sy0()),Z.route("/hosting",$B8()),Z.route("/monitor",jB8()),Z.route("/order-monitor",qB8()),Z.route("/sso",my0()),Z.route("/",cg0({tokenStorage:$.tokenStorage,automationEventDispatcher:$.automationEventDispatcher})),Z.route("/webhooks",oN8()),$.mountDevAssets)Z.route("/dev-assets",Gg0({orgFromPath:!0}));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);for(let Q of _T1)Z.use(`${Q}/:threadId`,$.mcpAuth);Z.route("/",vG8()),Z.get("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",$.betterAuthProtectedResourceHandler),Z.get("/mcp/.well-known/oauth-protected-resource",$.betterAuthProtectedResourceHandler);for(let Q of _T1)Z.route(Q,fO8());return Z.route("/mcp",Gx0()),Z.route("/mcp/self",gg0()),Z.route("/mcp",Hx0()),Z.all("/oauth-proxy/:connectionId/*",$.oauthProxyHandler),Z.get("/watch",$.watchHandler),Z};var hE8=L(()=>{H8();mN8();dN8();Sy0();sN8();JA1();ZB8();wB8();RB8();Wg0();v2();$A1();bB8();UA1();PO8();AO8();vO8();xO8();HZ0();i21();Fx0();ST1();yO8();hO8();mO8();dO8();xT1();sO8();rO8();Qj8();fT1();Jj8();yT1();Wx0();Rw8();wE8();yE8()});import{z as Ll}from"zod";class xq1{adapter;getConnection;kvPromise;constructor($,Z){this.adapter=$;this.getConnection=Z}kv(){let $=this.getConnection();if(!$||$.isClosed())throw new R1(503,{message:"Voice transport is unavailable"});return this.kvPromise??=new mE8.Kvm(wh0.jetstream($)).create("STUDIO_VOICE_SESSIONS",{storage:wh0.StorageType.Memory,ttl:cE8.nanos(vO),max_bytes:10485760}).catch((Z)=>{throw this.kvPromise=void 0,Z}),this.kvPromise}async conversationAgent($){let Z=await this.kv(),Q=`agent.${$.conversationKey}`,Y=Date.now()+45000;while(Date.now()<Y){let X=await Z.get(Q),J=X?.operation==="PUT"?lE8.parse(X.json()):null;if(J?.state==="ready")return J.agentId;if(J?.state==="creating"&&J.expiresAt>Date.now()){await G$(200);continue}let G=uE8.encode(JSON.stringify({state:"creating",expiresAt:Date.now()+40000})),W;try{W=X&&J?await Z.update(Q,G,X.revision):await Z.create(Q,G)}catch{await G$(200);continue}try{let K=await $.ensureConversationAgent();return await Z.update(Q,uE8.encode(JSON.stringify({state:"ready",agentId:K})),W),K}catch(K){throw await Z.delete(Q,{previousSeq:W}).catch(()=>{}),K}}throw new R1(503,{message:"Voice conversation is starting; try again"})}async createSession($){let Z=this.adapter.forConversationModel($.model),Q=await this.conversationAgent(Z);try{return{provider:"elevenlabs",conversationToken:await Z.createConversationToken(Q)}}catch(Y){let X=await this.kv(),J=`agent.${Z.conversationKey}`,G=await X.get(J),W=G?.operation==="PUT"?lE8.parse(G.json()):null;if(G&&W?.state==="ready"&&W.agentId===Q)await X.delete(J,{previousSeq:G.revision}).catch(()=>{});throw Y}}}var wh0,mE8,cE8,uE8,lE8;var dE8=L(()=>{F3();bB();g$();wh0=_(nH(),1),mE8=_(Pq(),1),cE8=_(UA(),1),uE8=new TextEncoder,lE8=Ll.discriminatedUnion("state",[Ll.object({state:Ll.literal("ready"),agentId:Ll.string()}),Ll.object({state:Ll.literal("creating"),expiresAt:Ll.number()})])});import{z as ns}from"zod";function KU5($){return{model:$.model,instructions:`${Ji$}
4571
- Start in ${$.language==="pt"?"Brazilian Portuguese":"English"}, and follow the user's language.`,delegation:{type:"client"},audio:{output:{voice:$.voice}},store:!1}}class fq1{config;constructor($){this.config=$}async createSession(){return{provider:"openai",transport:"webrtc"}}async negotiate($){let Z=await fetch("https://api.openai.com/v1/live/sessions",{method:"POST",headers:{Authorization:`Bearer ${this.config.apiKey}`,"Content-Type":"application/json","OpenAI-Safety-Identifier":$.safetyIdentifier},body:JSON.stringify({session:KU5({...this.config,language:$.language,model:$.model}),transport:{type:"webrtc",sdp:$.sdp}}),signal:AbortSignal.timeout(15000)});if(!Z.ok)throw await Z.body?.cancel(),Error(`OpenAI Live request failed (${Z.status})`);return{sdp:ns.object({session:ns.object({id:ns.string().min(1)}),transport:ns.object({type:ns.literal("webrtc"),sdp:ns.string().min(1).max(1e5)})}).parse(await Z.json()).transport.sdp}}}var iE8=L(()=>{bB()});var pE8;var nE8=L(()=>{pE8=[{name:"delegate_to_agent",description:"Submit a complete request to the selected Studio agent. Returns after acceptance while work continues in the background. Results arrive later.",parameters:{type:"object",properties:{request:{type:"string",description:"The complete user request, with relevant conversational details. Preserve intent and constraints."}},required:["request"]}},{name:"get_agent_status",description:"Read the current chat's work status and known results. This does not track independent organization tasks; delegate fresh task-status queries to the Studio agent. Use when asked, never poll.",parameters:{type:"object",properties:{}}},{name:"stop_agent_work",description:"Request cancellation in the current chat ONLY when the user explicitly asks. Speaking over the companion is not cancellation. To stop independent tasks, delegate that request to the Studio agent.",parameters:{type:"object",properties:{}}}]});function yq1($){return{conversation_config:{agent:{first_message:"",language:"en",prompt:{prompt:Yi$,llm:$.conversationModel,thinking_budget:0,max_tokens:512,tools:pE8.map((Z)=>({...Z,type:"client",expects_response:!0,response_timeout_secs:Z.name==="delegate_to_agent"?20:5,...Z.name==="delegate_to_agent"?{execution_mode:"async",interruption_mode:"allow",pre_tool_speech:"off"}:{}}))}},asr:{provider:"scribe_realtime",quality:"high"},turn:{turn_eagerness:"normal",turn_timeout:-1,silence_end_call_timeout:-1},tts:{voice_id:$.voiceId,model_id:$.model},conversation:{max_duration_seconds:vO/1000,client_events:["audio","interruption","user_transcript","agent_response","client_tool_call","vad_score"]}},platform_settings:{auth:{enable_auth:!0},privacy:{record_voice:!1,retention_days:1,delete_audio:!0,delete_transcript_and_pii:!0},overrides:{conversation_config_override:{agent:{language:!0}}}}}}var tE8=L(()=>{bB();nE8()});import{z as rJ}from"zod";import{createHash as HU5,createHmac as FU5}from"crypto";class Eh0{config;conversationKey;configurationKey;constructor($){this.config=$;this.configurationKey=HU5("sha256").update(JSON.stringify(yq1($))).digest("hex"),this.conversationKey=FU5("sha256",$.apiKey).update(this.configurationKey).digest("hex")}forConversationModel($){return $===this.config.conversationModel?this:new Eh0({...this.config,conversationModel:$})}async request($,Z,Q){let Y=await fetch(`https://api.elevenlabs.io/v1${$}`,{method:Z===void 0?"GET":"POST",headers:{"xi-api-key":this.config.apiKey,"Content-Type":"application/json"},body:JSON.stringify(Z),signal:Q});if(!Y.ok)throw await Y.body?.cancel(),Error(`ElevenLabs request failed (${Y.status})`);return Y}async ensureConversationAgent(){let $=`Studio voice ${this.configurationKey.slice(0,24)}`,Z=await this.request(`/convai/agents?search=${encodeURIComponent($)}&page_size=100`,void 0,AbortSignal.timeout(15000)),{agents:Q}=rJ.object({agents:rJ.array(rJ.object({agent_id:rJ.string(),name:rJ.string()}))}).parse(await Z.json()),Y=Q.find((J)=>J.name===$);if(Y){let J=await this.request(`/convai/agents/${encodeURIComponent(Y.agent_id)}`,void 0,AbortSignal.timeout(15000));return rJ.object({platform_settings:rJ.object({auth:rJ.object({enable_auth:rJ.literal(!0)})})}).parse(await J.json()),Y.agent_id}let X=await this.request("/convai/agents/create",{name:$,...yq1(this.config)},AbortSignal.timeout(15000));return rJ.object({agent_id:rJ.string().min(1)}).parse(await X.json()).agent_id}async createConversationToken($){let Z=await this.request(`/convai/conversation/token?agent_id=${encodeURIComponent($)}`,void 0,AbortSignal.timeout(15000));return rJ.object({token:rJ.string().min(1)}).parse(await Z.json()).token}async createTranscriptionToken(){let $=await this.request("/single-use-token/realtime_scribe",{},AbortSignal.timeout(15000));return rJ.object({token:rJ.string().min(1)}).parse(await $.json()).token}synthesize($,Z){return this.request(`/text-to-speech/${encodeURIComponent(this.config.voiceId)}/stream?output_format=mp3_44100_128`,{text:$,model_id:this.config.model},AbortSignal.any([Z,AbortSignal.timeout(60000)]))}}var oE8=L(()=>{tE8()});import{createHmac as UU5,timingSafeEqual as NU5}from"crypto";import{z as ts}from"zod";function aE8($,Z){if(!Z)throw Error("Voice requires a shared authentication secret");return UU5("sha256",Z).update(`studio-voice-session:v1:${$}`).digest("base64url")}function rE8($,Z){let Q=Buffer.from(JSON.stringify(sE8.parse($))).toString("base64url");return`${Q}.${aE8(Q,Z)}`}function eE8($,Z,Q=Date.now()){if(!Z||$.length>4096)return null;let Y=$.split(".");if(Y.length!==2)return null;let[X,J]=Y;if(!X||!J)return null;let G=Buffer.from(aE8(X,Z)),W=Buffer.from(J);if(W.length!==G.length||!NU5(W,G))return null;try{let K=sE8.safeParse(JSON.parse(Buffer.from(X,"base64url").toString()));if(!K.success||K.data.expiresAt<=Q||K.data.expiresAt>Q+vO)return null;return K.data}catch{return null}}var sE8;var $P8=L(()=>{bB();sE8=ts.object({sessionId:ts.string().uuid(),organizationId:ts.string().min(1).max(256),userId:ts.string().min(1).max(256),threadId:ts.string().min(1).max(256),expiresAt:ts.number().int().positive()})});import{z as gq1}from"zod";function ZP8($,Z){if(Z?.voice_model!=null&&Z.voice_provider==null)throw Error("A voice model override requires a provider");let Q=Z?.voice_provider??$.voiceConversationProvider;return hq1.parse({provider:Q,model:Z?.voice_model??(Q==="openai"?$.openaiLiveModel:$.elevenlabsConversationModel)})}var hq1;var QP8=L(()=>{hq1=gq1.object({provider:gq1.enum(["elevenlabs","openai"]),model:gq1.string().trim().min(1).max(128)})});import{createHash as BU5}from"crypto";import{z as os}from"zod";function ss($){return`user.${BU5("sha256").update(JSON.stringify([$.organizationId,$.userId])).digest("hex")}`}class lq1{deps;kvPromise;constructor($){this.deps=$}kv(){let $=this.deps.getConnection();if(!$||$.isClosed())throw new R1(503,{message:"Voice transport is unavailable"});return this.kvPromise??=new YP8.Kvm(zh0.jetstream($)).create("STUDIO_VOICE_SESSIONS",{storage:zh0.StorageType.Memory,ttl:XP8.nanos(vO),max_bytes:10485760}).catch((Z)=>{throw this.kvPromise=void 0,Z}),this.kvPromise}adapter(){if(!this.deps.adapter)throw new R1(503,{message:"Voice is not configured on this deployment"});return this.deps.adapter}async create($,Z=!1,Q="en",Y){let X;if(Z)try{X=ZP8(this.deps.defaults,Y)}catch{throw new R1(503,{message:"Voice configuration is invalid"})}let J=X?this.deps.conversationAdapters[X.provider]:this.adapter();if(!J)throw new R1(503,{message:"Voice is not configured on this deployment"});let G={...$,sessionId:crypto.randomUUID(),expiresAt:Date.now()+vO},W=rE8(G,this.deps.secret),K=await this.kv(),H=ss(G),F=await K.get(H),U=F?.operation==="PUT"?Ph0.parse(F.json()):null,N=uq1.encode(JSON.stringify({sessionId:G.sessionId,expiresAt:G.expiresAt,conversation:X,characters:0,requests:0}));try{if(F&&U&&U.expiresAt<=Date.now())await K.update(H,N,F.revision);else await K.create(H,N)}catch{throw new R1(409,{message:"Close your other voice session before starting a new one"})}try{if(X&&"createSession"in J){let D=await J.createSession({language:Q,model:X.model,safetyIdentifier:ss($)});return{token:W,...D,expiresAt:G.expiresAt}}let B=await this.adapter().createTranscriptionToken();return{token:W,transcriptionToken:B,expiresAt:G.expiresAt}}catch(B){throw await this.release(G),B}}authorize($,Z){let Q=eE8(Z,this.deps.secret);if(!Q||Q.organizationId!==$.organizationId||Q.userId!==$.userId||Q.threadId!==$.threadId)throw new R1(403,{message:"Invalid voice session"});return Q}async connect($,Z){let Q=this.authorize($,Z.token),Y=await this.kv(),X=ss(Q),J=await Y.get(X),G=J?.operation==="PUT"?Ph0.parse(J.json()):null;if(!J||!G||G.sessionId!==Q.sessionId||G.expiresAt<=Date.now())throw new R1(403,{message:"Voice session expired"});let W=G.conversation?this.deps.conversationAdapters[G.conversation.provider]:null;if(!W?.negotiate||!G.conversation)throw new R1(409,{message:"Voice session does not support SDP negotiation"});if(G.connected)throw new R1(409,{message:"Voice session already connected"});try{await Y.update(X,uq1.encode(JSON.stringify({...G,connected:!0})),J.revision)}catch{throw new R1(409,{message:"Voice session is busy"})}return W.negotiate({sdp:Z.sdp,language:Z.language,model:G.conversation.model,safetyIdentifier:X})}async speak($,Z,Q,Y){let X=this.authorize($,Z),J=await this.kv(),G=ss(X);for(let W=0;;W++){let K=await J.get(G),H=K?.operation==="PUT"?Ph0.parse(K.json()):null;if(!K||!H||H.sessionId!==X.sessionId||H.expiresAt<=Date.now())throw new R1(403,{message:"Voice session expired"});if(H.characters+Q.length>24000||H.requests>=120)throw new R1(429,{message:"Voice session speech limit reached"});try{await J.update(G,uq1.encode(JSON.stringify({...H,characters:H.characters+Q.length,requests:H.requests+1})),K.revision);break}catch{if(W>=2)throw new R1(409,{message:"Voice session is busy"})}}return this.adapter().synthesize(Q,Y)}async release($){let Z=await this.kv(),Q=await Z.get(ss($));if(Q?.operation==="PUT"&&Ph0.parse(Q.json()).sessionId===$.sessionId)await Z.delete(ss($),{previousSeq:Q.revision})}async revoke($,Z){await this.release(this.authorize($,Z))}}var zh0,YP8,XP8,Ph0,uq1;var JP8=L(()=>{F3();bB();$P8();QP8();zh0=_(nH(),1),YP8=_(Pq(),1),XP8=_(UA(),1),Ph0=os.object({sessionId:os.string().uuid(),expiresAt:os.number(),connected:os.boolean().optional(),conversation:hq1.optional(),characters:os.number().int().nonnegative(),requests:os.number().int().nonnegative()}),uq1=new TextEncoder});import{z as c1}from"zod";function wD($,Z="invalid_request_error",Q=null,Y=null){return{error:{message:$,type:Z,param:Q,code:Y}}}function TU5($){if(!$)return null;let Z=$.indexOf(":");if(Z===-1)return{credentialId:null,modelId:$};let Q=$.substring(0,Z),Y=$.substring(Z+1);if(!Q||!Y)return null;return{credentialId:Q,modelId:Y}}function qU5($,Z,Q){try{return JSON.parse($)}catch{throw new KP8(`Invalid JSON in tool call arguments for function '${Q}' (tool_call_id: ${Z}): ${$}`)}}function RU5($){let Z={};for(let Q of $)if(Q.role==="assistant"&&Q.tool_calls)for(let Y of Q.tool_calls)Z[Y.id]=Y.function.name;return $.map((Q)=>{switch(Q.role){case"system":return{role:"system",content:Q.content};case"user":if(typeof Q.content==="string")return{role:"user",content:Q.content};return{role:"user",content:Q.content.map((X)=>{if(X.type==="text")return{type:"text",text:X.text};return{type:"image",image:X.image_url.url}})};case"assistant":if(Q.tool_calls&&Q.tool_calls.length>0)return{role:"assistant",content:Q.tool_calls.map((X)=>({type:"tool-call",toolCallId:X.id,toolName:X.function.name,input:qU5(X.function.arguments,X.id,X.function.name)}))};return{role:"assistant",content:Q.content??""};case"tool":let Y=Z[Q.tool_call_id]??"unknown";return{role:"tool",content:[{type:"tool-result",toolCallId:Q.tool_call_id,toolName:Y,output:{type:"text",value:Q.content}}]}}})}function MU5($){let Z=$.map((Q)=>{let Y=Q.function.parameters?CN(Q.function.parameters):CN({type:"object",properties:{}});return[Q.function.name,a$({description:Q.function.description,inputSchema:Y})]});return Object.fromEntries(Z)}function VU5($){if(!$)return;return{openai:{response_format:$}}}function IU5(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function GP8($,Z,Q,Y,X,J){let G={model:$,instructions:Z.filter((W)=>W.role==="system"),messages:Z.filter((W)=>W.role!=="system"),tools:Q,temperature:Y.temperature,maxOutputTokens:Y.max_tokens,topP:Y.top_p,frequencyPenalty:Y.frequency_penalty,presencePenalty:Y.presence_penalty,stopSequences:Y.stop?Array.isArray(Y.stop)?Y.stop:[Y.stop]:void 0,abortSignal:J};return X?{...G,providerOptions:X}:G}function WP8($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var DU5=256,LU5,OU5,jU5,wU5,EU5,PU5,zU5,AU5,KP8,HP8,FP8;var UP8=L(()=>{u4();H8();_s();LU();LU5=c1.object({type:c1.literal("function"),function:c1.object({name:c1.string(),description:c1.string().optional(),parameters:c1.record(c1.string(),c1.unknown()).optional()})}),OU5=c1.object({id:c1.string(),type:c1.literal("function"),function:c1.object({name:c1.string(),arguments:c1.string()})}),jU5=c1.discriminatedUnion("role",[c1.object({role:c1.literal("system"),content:c1.string(),name:c1.string().optional()}),c1.object({role:c1.literal("user"),content:c1.union([c1.string(),c1.array(c1.union([c1.object({type:c1.literal("text"),text:c1.string()}),c1.object({type:c1.literal("image_url"),image_url:c1.object({url:c1.string(),detail:c1.string().optional()})})]))]),name:c1.string().optional()}),c1.object({role:c1.literal("assistant"),content:c1.string().nullable().optional(),name:c1.string().optional(),tool_calls:c1.array(OU5).optional()}),c1.object({role:c1.literal("tool"),content:c1.string(),tool_call_id:c1.string()})]),wU5=c1.object({type:c1.literal("text")}),EU5=c1.object({type:c1.literal("json_object")}),PU5=c1.object({type:c1.literal("json_schema"),json_schema:c1.object({name:c1.string(),description:c1.string().optional(),schema:c1.record(c1.string(),c1.unknown()),strict:c1.boolean().optional()})}),zU5=c1.union([wU5,EU5,PU5]),AU5=c1.object({model:c1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:c1.array(jU5),stream:c1.boolean().optional().default(!1),temperature:c1.number().min(0).max(2).optional(),max_tokens:c1.number().positive().optional(),top_p:c1.number().min(0).max(1).optional(),frequency_penalty:c1.number().min(-2).max(2).optional(),presence_penalty:c1.number().min(-2).max(2).optional(),stop:c1.union([c1.string(),c1.array(c1.string())]).optional(),tools:c1.array(LU5).optional(),tool_choice:c1.union([c1.literal("auto"),c1.literal("none"),c1.literal("required"),c1.object({type:c1.literal("function"),function:c1.object({name:c1.string()})})]).optional(),response_format:zU5.optional(),user:c1.string().optional()});KP8=class KP8 extends Error{constructor($){super($);this.name="MessageConversionError"}};HP8=new $1;HP8.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),Q=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(wD("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(wD("Organization context is required. Ensure your API key has organization metadata.","invalid_request_error","organization"),400);if((Z.organization.slug??Z.organization.id)!==Q)return $.json(wD("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Y=await $.req.json(),X=AU5.safeParse(Y);if(!X.success){let j=X.error.issues[0]??{message:"Invalid request",path:[]};return $.json(wD(`Invalid request: ${j.message}`,"invalid_request_error",j.path.length>0?j.path.join("."):null),400)}let J=X.data,G=TU5(J.model);if(!G)return $.json(wD("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}=G,{modelId:K}=G;if(!W){let w=(await Z.storage.aiProviderKeys.list({organizationId:Z.organization.id})).find((E)=>DT(E.providerId));if(!w)return $.json(wD("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=w.id}let H;try{H=await Z.aiProviders.activate(W,Z.organization.id)}catch{return $.json(wD(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(K),U=RU5(J.messages),N=J.tools?MU5(J.tools):void 0,B=VU5(J.response_format),D=IU5(),O=Math.floor(Date.now()/1000);if(J.stream)return Sj($,async(j)=>{let w=GP8(F,U,N,J,B,$.req.raw.signal);try{let E=Rn(w),P=!1,T=0,z="",A=async()=>{if(z.length===0)return;let M=z;z="",await j.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:O,model:J.model,choices:[{index:0,delta:{content:M},finish_reason:null}]})})};for await(let M of E.stream){if(!P&&(M.type==="text-delta"||M.type==="tool-call"))await j.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:O,model:J.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),P=!0;if(M.type==="text-delta"){if(z+=M.text,z.length>=DU5)await A()}else if(M.type==="tool-call"){await A();let f=T++;await j.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:O,model:J.model,choices:[{index:0,delta:{tool_calls:[{index:f,id:M.toolCallId,type:"function",function:{name:M.toolName,arguments:JSON.stringify(M.input)}}]},finish_reason:null}]})})}else if(M.type==="finish")await A(),await j.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:O,model:J.model,choices:[{index:0,delta:{},finish_reason:WP8(M.finishReason)}],usage:M.totalUsage?{prompt_tokens:M.totalUsage.inputTokens??0,completion_tokens:M.totalUsage.outputTokens??0,total_tokens:M.totalUsage.totalTokens??0}:void 0})})}await A(),await j.writeSSE({data:"[DONE]"})}catch(E){let P=E;console.error("[openai-compat:stream] Error:",P.message),await j.writeSSE({data:JSON.stringify({error:{message:P.message,type:"server_error"}})})}});else{let j=GP8(F,U,N,J,B,$.req.raw.signal),w=await fO(j),E={role:"assistant",content:w.text||null};if(w.toolCalls&&w.toolCalls.length>0)E.tool_calls=w.toolCalls.map((P)=>({id:P.toolCallId,type:"function",function:{name:P.toolName,arguments:JSON.stringify("input"in P?P.input:{})}})),E.content=null;return $.json({id:D,object:"chat.completion",created:O,model:J.model,choices:[{index:0,message:E,finish_reason:WP8(w.finishReason)}],usage:{prompt_tokens:w.usage?.inputTokens??0,completion_tokens:w.usage?.outputTokens??0,total_tokens:w.usage?.totalTokens??0}})}}catch(Y){let X=Y;if(X.name==="AbortError")return $.json(wD("Request aborted","invalid_request_error"),400);if(X.name==="MessageConversionError")return $.json(wD(X.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",X.message,X.stack),$.json(wD(X.message,"server_error"),500)}});FP8=HP8});function kU5($){if(typeof $!=="object"||$===null)return!1;let Q=$.repository?.url;return typeof Q==="string"&&Q.length>0}function NP8(){let $=new $1;return $.use("*",async(Z,Q)=>{await Q(),Z.header("Cache-Control","private, no-store"),Z.header("Vary","Cookie")}),$.get("/",async(Z)=>{let Q=Z.get("studioContext"),Y=k0(Q);if(!Y)return Z.json({error:"Authentication required"},401);let J=(Z.req.query("site")??"").trim().toLowerCase();if(!l5(J))return Z.json({error:"Invalid site slug"},400);let G=await Q.db.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["organization.id as id","organization.slug as slug","organization.name as name","organization.metadata as metadata"]).where("member.userId","=",Y).execute(),W=[];for(let H of G){if(!H.slug||_9(H))continue;let F=await Q.storage.virtualMcps.list(H.id);for(let U of F){if(fT(U)!==J)continue;if(!kU5(U.metadata))continue;W.push({orgSlug:H.slug,orgName:H.name??H.slug,project:{id:U.id,title:U.title,icon:U.icon??null}})}}let K={matches:W};return Z.json(K)}),$}var BP8=L(()=>{H8();HX()});var Ah0;var mq1=L(()=>{Ah0={name:"decocms",version:"4.537.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 dev:server","dev:server":"NODE_ENV=development bun --env-file=.env --watch 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":"^4.0.58","@ai-sdk/google":"^4.0.76","@ai-sdk/openai":"^4.0.71","@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","@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":"^3.1.0","@opentelemetry/core":"^2.6.0",kysely:"^0.28.12","posthog-node":"^5.0.0"},devDependencies:{"@ai-sdk/provider":"^4.0.17","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/blocks":"8.8.0","@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:"^7.0.107","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 _U5(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??SU5}}var DP8,SU5="https://ph.studio.decocms.com",LP8;var OP8=L(()=>{H8();Ee();ph();B9();l1();wU();k21();mq1();DP8=new $1;DP8.get("/",($)=>{let Z={version:Ah0.version,theme:C4$(),...WF().logo&&{logo:WF().logo},...tO()&&{internalUrl:C8$()},...B0().enableDecoImport&&{enableDecoImport:!0},hostingEnabled:!!B0().controlplaneRestUrl&&!!B0().controlplaneServiceToken,hostingControlPlaneGa:B0().hostingControlPlaneGa,monitorEnabled:!!B0().clickhouseAnalyticsUrl&&!!B0().clickhouseAnalyticsPassword,monitorGa:B0().monitorGa,orderMonitorEnabled:!!B0().orderMonitorIngestUrl&&oJ(),plansEnabled:B0().plansEnabled,auth:CU8(),posthog:_U5(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:bU()}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});LP8=DP8});import{z as M$}from"zod";var vU5,jP8;var wP8=L(()=>{vU5=M$.object({check_id:M$.string(),title:M$.string(),description:M$.string().optional(),impact:M$.string().optional(),why:M$.string().optional(),category:M$.string(),severity:M$.string(),value_band:M$.string().optional(),value_driver:M$.string().optional(),controllability:M$.string().optional(),pages:M$.array(M$.string()),tasks:M$.array(M$.string()),evidence:M$.string(),sample_scope:M$.string().optional(),sources:M$.array(M$.string())}),jP8=M$.object({domain:M$.string(),brand:M$.string(),favicon:M$.string().optional(),scanned_at:M$.string().nullable(),lang:M$.string(),score:M$.number().nullable(),band:M$.string().nullable(),totals:M$.object({measured:M$.number(),registry_total:M$.number(),passed:M$.number(),failed:M$.number(),blocked:M$.number()}),buckets:M$.array(M$.object({id:M$.enum(["critical","important","worth"]),label:M$.string(),items:M$.array(vU5)})),passing:M$.object({count:M$.number(),items:M$.array(M$.object({check_id:M$.string(),title:M$.string()}))}),not_measured:M$.object({count:M$.number(),groups:M$.array(M$.object({reason:M$.string(),label:M$.string(),count:M$.number(),checks:M$.array(M$.string())}))}),categories:M$.array(M$.object({key:M$.string(),label:M$.string(),score:M$.number().nullable(),band:M$.string().nullable(),pass:M$.number(),fail:M$.number()})),screenshots:M$.array(M$.object({url:M$.string(),page_type:M$.string().optional(),viewport:M$.enum(["desktop","mobile"]),image_url:M$.string()}))})});function EP8($,Z,Q){let Y=Q?`?${new URLSearchParams({lang:Q}).toString()}`:"";return`${xK({})}/api/v2/public/diagnostics/${encodeURIComponent($)}/onepager${Z}${Y}`}async function Th0($,Z={}){let Q=await fetch(EP8($,"",Z.lang),{headers:{Accept:"application/json"},signal:Z.signal});if(Q.status===404)return null;if(!Q.ok)throw Error(`onepager read HTTP ${Q.status}`);return jP8.parse(await Q.json())}async function PP8($,Z={}){let Q=await fetch(EP8($,".md",Z.lang),{headers:{Accept:"text/markdown"},signal:Z.signal});if(Q.status===404)return null;if(!Q.ok)throw Error(`onepager markdown HTTP ${Q.status}`);return Q.text()}var cq1=L(()=>{wP8();dL()});import{join as zP8}from"path";async function xU5($){try{let Z=await Th0($,{signal:AbortSignal.timeout(bU5)});if(!Z?.scanned_at)return null;return{brand:Z.brand.trim()||aw1($),...Z.score!==null?{score:Z.score}:{}}}catch{return null}}function DG($){return $.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;")}function fU5($,Z){let Q=Tu($),Y=Z?.brand?.trim()||aw1(Q),X=kJ8(Q,128),G=`${(B0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(Q)}`,{title:W,description:K}=CJ8({brand:Y,domain:Q,score:Z?.score}),H=`${G}/og.png`,F=`${Y} Deco Score by decocms`;return[`<title>${DG(W)}</title>`,`<meta name="description" content="${DG(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="${DG(W)}" />`,`<meta property="og:description" content="${DG(K)}" />`,`<meta property="og:url" content="${DG(G)}" />`,`<meta property="og:image" content="${DG(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${DG(F)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${DG(W)}" />`,`<meta name="twitter:description" content="${DG(K)}" />`,`<meta name="twitter:image" content="${DG(H)}" />`,`<meta name="twitter:image:alt" content="${DG(F)}" />`,`<link rel="canonical" href="${DG(G)}" />`,`<link rel="alternate" type="text/markdown" href="${DG(G)}.md" />`,`<link rel="icon" href="${DG(X)}" sizes="any" />`].join(`
4571
+ Start in ${$.language==="pt"?"Brazilian Portuguese":"English"}, and follow the user's language.`,delegation:{type:"client"},audio:{output:{voice:$.voice}},store:!1}}class fq1{config;constructor($){this.config=$}async createSession(){return{provider:"openai",transport:"webrtc"}}async negotiate($){let Z=await fetch("https://api.openai.com/v1/live/sessions",{method:"POST",headers:{Authorization:`Bearer ${this.config.apiKey}`,"Content-Type":"application/json","OpenAI-Safety-Identifier":$.safetyIdentifier},body:JSON.stringify({session:KU5({...this.config,language:$.language,model:$.model}),transport:{type:"webrtc",sdp:$.sdp}}),signal:AbortSignal.timeout(15000)});if(!Z.ok)throw await Z.body?.cancel(),Error(`OpenAI Live request failed (${Z.status})`);return{sdp:ns.object({session:ns.object({id:ns.string().min(1)}),transport:ns.object({type:ns.literal("webrtc"),sdp:ns.string().min(1).max(1e5)})}).parse(await Z.json()).transport.sdp}}}var iE8=L(()=>{bB()});var pE8;var nE8=L(()=>{pE8=[{name:"delegate_to_agent",description:"Submit a complete request to the selected Studio agent. Returns after acceptance while work continues in the background. Results arrive later.",parameters:{type:"object",properties:{request:{type:"string",description:"The complete user request, with relevant conversational details. Preserve intent and constraints."}},required:["request"]}},{name:"get_agent_status",description:"Read the current chat's work status and known results. This does not track independent organization tasks; delegate fresh task-status queries to the Studio agent. Use when asked, never poll.",parameters:{type:"object",properties:{}}},{name:"stop_agent_work",description:"Request cancellation in the current chat ONLY when the user explicitly asks. Speaking over the companion is not cancellation. To stop independent tasks, delegate that request to the Studio agent.",parameters:{type:"object",properties:{}}}]});function yq1($){return{conversation_config:{agent:{first_message:"",language:"en",prompt:{prompt:Yi$,llm:$.conversationModel,thinking_budget:0,max_tokens:512,tools:pE8.map((Z)=>({...Z,type:"client",expects_response:!0,response_timeout_secs:Z.name==="delegate_to_agent"?20:5,...Z.name==="delegate_to_agent"?{execution_mode:"async",interruption_mode:"allow",pre_tool_speech:"off"}:{}}))}},asr:{provider:"scribe_realtime",quality:"high"},turn:{turn_eagerness:"normal",turn_timeout:-1,silence_end_call_timeout:-1},tts:{voice_id:$.voiceId,model_id:$.model},conversation:{max_duration_seconds:vO/1000,client_events:["audio","interruption","user_transcript","agent_response","client_tool_call","vad_score"]}},platform_settings:{auth:{enable_auth:!0},privacy:{record_voice:!1,retention_days:1,delete_audio:!0,delete_transcript_and_pii:!0},overrides:{conversation_config_override:{agent:{language:!0}}}}}}var tE8=L(()=>{bB();nE8()});import{z as rJ}from"zod";import{createHash as HU5,createHmac as FU5}from"crypto";class Eh0{config;conversationKey;configurationKey;constructor($){this.config=$;this.configurationKey=HU5("sha256").update(JSON.stringify(yq1($))).digest("hex"),this.conversationKey=FU5("sha256",$.apiKey).update(this.configurationKey).digest("hex")}forConversationModel($){return $===this.config.conversationModel?this:new Eh0({...this.config,conversationModel:$})}async request($,Z,Q){let Y=await fetch(`https://api.elevenlabs.io/v1${$}`,{method:Z===void 0?"GET":"POST",headers:{"xi-api-key":this.config.apiKey,"Content-Type":"application/json"},body:JSON.stringify(Z),signal:Q});if(!Y.ok)throw await Y.body?.cancel(),Error(`ElevenLabs request failed (${Y.status})`);return Y}async ensureConversationAgent(){let $=`Studio voice ${this.configurationKey.slice(0,24)}`,Z=await this.request(`/convai/agents?search=${encodeURIComponent($)}&page_size=100`,void 0,AbortSignal.timeout(15000)),{agents:Q}=rJ.object({agents:rJ.array(rJ.object({agent_id:rJ.string(),name:rJ.string()}))}).parse(await Z.json()),Y=Q.find((J)=>J.name===$);if(Y){let J=await this.request(`/convai/agents/${encodeURIComponent(Y.agent_id)}`,void 0,AbortSignal.timeout(15000));return rJ.object({platform_settings:rJ.object({auth:rJ.object({enable_auth:rJ.literal(!0)})})}).parse(await J.json()),Y.agent_id}let X=await this.request("/convai/agents/create",{name:$,...yq1(this.config)},AbortSignal.timeout(15000));return rJ.object({agent_id:rJ.string().min(1)}).parse(await X.json()).agent_id}async createConversationToken($){let Z=await this.request(`/convai/conversation/token?agent_id=${encodeURIComponent($)}`,void 0,AbortSignal.timeout(15000));return rJ.object({token:rJ.string().min(1)}).parse(await Z.json()).token}async createTranscriptionToken(){let $=await this.request("/single-use-token/realtime_scribe",{},AbortSignal.timeout(15000));return rJ.object({token:rJ.string().min(1)}).parse(await $.json()).token}synthesize($,Z){return this.request(`/text-to-speech/${encodeURIComponent(this.config.voiceId)}/stream?output_format=mp3_44100_128`,{text:$,model_id:this.config.model},AbortSignal.any([Z,AbortSignal.timeout(60000)]))}}var oE8=L(()=>{tE8()});import{createHmac as UU5,timingSafeEqual as NU5}from"crypto";import{z as ts}from"zod";function aE8($,Z){if(!Z)throw Error("Voice requires a shared authentication secret");return UU5("sha256",Z).update(`studio-voice-session:v1:${$}`).digest("base64url")}function rE8($,Z){let Q=Buffer.from(JSON.stringify(sE8.parse($))).toString("base64url");return`${Q}.${aE8(Q,Z)}`}function eE8($,Z,Q=Date.now()){if(!Z||$.length>4096)return null;let Y=$.split(".");if(Y.length!==2)return null;let[X,J]=Y;if(!X||!J)return null;let G=Buffer.from(aE8(X,Z)),W=Buffer.from(J);if(W.length!==G.length||!NU5(W,G))return null;try{let K=sE8.safeParse(JSON.parse(Buffer.from(X,"base64url").toString()));if(!K.success||K.data.expiresAt<=Q||K.data.expiresAt>Q+vO)return null;return K.data}catch{return null}}var sE8;var $P8=L(()=>{bB();sE8=ts.object({sessionId:ts.string().uuid(),organizationId:ts.string().min(1).max(256),userId:ts.string().min(1).max(256),threadId:ts.string().min(1).max(256),expiresAt:ts.number().int().positive()})});import{z as gq1}from"zod";function ZP8($,Z){if(Z?.voice_model!=null&&Z.voice_provider==null)throw Error("A voice model override requires a provider");let Q=Z?.voice_provider??$.voiceConversationProvider;return hq1.parse({provider:Q,model:Z?.voice_model??(Q==="openai"?$.openaiLiveModel:$.elevenlabsConversationModel)})}var hq1;var QP8=L(()=>{hq1=gq1.object({provider:gq1.enum(["elevenlabs","openai"]),model:gq1.string().trim().min(1).max(128)})});import{createHash as BU5}from"crypto";import{z as os}from"zod";function ss($){return`user.${BU5("sha256").update(JSON.stringify([$.organizationId,$.userId])).digest("hex")}`}class lq1{deps;kvPromise;constructor($){this.deps=$}kv(){let $=this.deps.getConnection();if(!$||$.isClosed())throw new R1(503,{message:"Voice transport is unavailable"});return this.kvPromise??=new YP8.Kvm(zh0.jetstream($)).create("STUDIO_VOICE_SESSIONS",{storage:zh0.StorageType.Memory,ttl:XP8.nanos(vO),max_bytes:10485760}).catch((Z)=>{throw this.kvPromise=void 0,Z}),this.kvPromise}adapter(){if(!this.deps.adapter)throw new R1(503,{message:"Voice is not configured on this deployment"});return this.deps.adapter}async create($,Z=!1,Q="en",Y){let X;if(Z)try{X=ZP8(this.deps.defaults,Y)}catch{throw new R1(503,{message:"Voice configuration is invalid"})}let J=X?this.deps.conversationAdapters[X.provider]:this.adapter();if(!J)throw new R1(503,{message:"Voice is not configured on this deployment"});let G={...$,sessionId:crypto.randomUUID(),expiresAt:Date.now()+vO},W=rE8(G,this.deps.secret),K=await this.kv(),H=ss(G),F=await K.get(H),U=F?.operation==="PUT"?Ph0.parse(F.json()):null,N=uq1.encode(JSON.stringify({sessionId:G.sessionId,expiresAt:G.expiresAt,conversation:X,characters:0,requests:0}));try{if(F&&U&&U.expiresAt<=Date.now())await K.update(H,N,F.revision);else await K.create(H,N)}catch{throw new R1(409,{message:"Close your other voice session before starting a new one"})}try{if(X&&"createSession"in J){let D=await J.createSession({language:Q,model:X.model,safetyIdentifier:ss($)});return{token:W,...D,expiresAt:G.expiresAt}}let B=await this.adapter().createTranscriptionToken();return{token:W,transcriptionToken:B,expiresAt:G.expiresAt}}catch(B){throw await this.release(G),B}}authorize($,Z){let Q=eE8(Z,this.deps.secret);if(!Q||Q.organizationId!==$.organizationId||Q.userId!==$.userId||Q.threadId!==$.threadId)throw new R1(403,{message:"Invalid voice session"});return Q}async connect($,Z){let Q=this.authorize($,Z.token),Y=await this.kv(),X=ss(Q),J=await Y.get(X),G=J?.operation==="PUT"?Ph0.parse(J.json()):null;if(!J||!G||G.sessionId!==Q.sessionId||G.expiresAt<=Date.now())throw new R1(403,{message:"Voice session expired"});let W=G.conversation?this.deps.conversationAdapters[G.conversation.provider]:null;if(!W?.negotiate||!G.conversation)throw new R1(409,{message:"Voice session does not support SDP negotiation"});if(G.connected)throw new R1(409,{message:"Voice session already connected"});try{await Y.update(X,uq1.encode(JSON.stringify({...G,connected:!0})),J.revision)}catch{throw new R1(409,{message:"Voice session is busy"})}return W.negotiate({sdp:Z.sdp,language:Z.language,model:G.conversation.model,safetyIdentifier:X})}async speak($,Z,Q,Y){let X=this.authorize($,Z),J=await this.kv(),G=ss(X);for(let W=0;;W++){let K=await J.get(G),H=K?.operation==="PUT"?Ph0.parse(K.json()):null;if(!K||!H||H.sessionId!==X.sessionId||H.expiresAt<=Date.now())throw new R1(403,{message:"Voice session expired"});if(H.characters+Q.length>24000||H.requests>=120)throw new R1(429,{message:"Voice session speech limit reached"});try{await J.update(G,uq1.encode(JSON.stringify({...H,characters:H.characters+Q.length,requests:H.requests+1})),K.revision);break}catch{if(W>=2)throw new R1(409,{message:"Voice session is busy"})}}return this.adapter().synthesize(Q,Y)}async release($){let Z=await this.kv(),Q=await Z.get(ss($));if(Q?.operation==="PUT"&&Ph0.parse(Q.json()).sessionId===$.sessionId)await Z.delete(ss($),{previousSeq:Q.revision})}async revoke($,Z){await this.release(this.authorize($,Z))}}var zh0,YP8,XP8,Ph0,uq1;var JP8=L(()=>{F3();bB();$P8();QP8();zh0=_(nH(),1),YP8=_(Pq(),1),XP8=_(UA(),1),Ph0=os.object({sessionId:os.string().uuid(),expiresAt:os.number(),connected:os.boolean().optional(),conversation:hq1.optional(),characters:os.number().int().nonnegative(),requests:os.number().int().nonnegative()}),uq1=new TextEncoder});import{z as c1}from"zod";function wD($,Z="invalid_request_error",Q=null,Y=null){return{error:{message:$,type:Z,param:Q,code:Y}}}function TU5($){if(!$)return null;let Z=$.indexOf(":");if(Z===-1)return{credentialId:null,modelId:$};let Q=$.substring(0,Z),Y=$.substring(Z+1);if(!Q||!Y)return null;return{credentialId:Q,modelId:Y}}function qU5($,Z,Q){try{return JSON.parse($)}catch{throw new KP8(`Invalid JSON in tool call arguments for function '${Q}' (tool_call_id: ${Z}): ${$}`)}}function RU5($){let Z={};for(let Q of $)if(Q.role==="assistant"&&Q.tool_calls)for(let Y of Q.tool_calls)Z[Y.id]=Y.function.name;return $.map((Q)=>{switch(Q.role){case"system":return{role:"system",content:Q.content};case"user":if(typeof Q.content==="string")return{role:"user",content:Q.content};return{role:"user",content:Q.content.map((X)=>{if(X.type==="text")return{type:"text",text:X.text};return{type:"image",image:X.image_url.url}})};case"assistant":if(Q.tool_calls&&Q.tool_calls.length>0)return{role:"assistant",content:Q.tool_calls.map((X)=>({type:"tool-call",toolCallId:X.id,toolName:X.function.name,input:qU5(X.function.arguments,X.id,X.function.name)}))};return{role:"assistant",content:Q.content??""};case"tool":let Y=Z[Q.tool_call_id]??"unknown";return{role:"tool",content:[{type:"tool-result",toolCallId:Q.tool_call_id,toolName:Y,output:{type:"text",value:Q.content}}]}}})}function MU5($){let Z=$.map((Q)=>{let Y=Q.function.parameters?CN(Q.function.parameters):CN({type:"object",properties:{}});return[Q.function.name,a$({description:Q.function.description,inputSchema:Y})]});return Object.fromEntries(Z)}function VU5($){if(!$)return;return{openai:{response_format:$}}}function IU5(){return`chatcmpl-${crypto.randomUUID().replace(/-/g,"").substring(0,29)}`}function GP8($,Z,Q,Y,X,J){let G={model:$,instructions:Z.filter((W)=>W.role==="system"),messages:Z.filter((W)=>W.role!=="system"),tools:Q,temperature:Y.temperature,maxOutputTokens:Y.max_tokens,topP:Y.top_p,frequencyPenalty:Y.frequency_penalty,presencePenalty:Y.presence_penalty,stopSequences:Y.stop?Array.isArray(Y.stop)?Y.stop:[Y.stop]:void 0,abortSignal:J};return X?{...G,providerOptions:X}:G}function WP8($){if($==="tool-calls")return"tool_calls";if($==="length")return"length";return"stop"}var DU5=256,LU5,OU5,jU5,wU5,EU5,PU5,zU5,AU5,KP8,HP8,FP8;var UP8=L(()=>{u4();H8();_s();LU();LU5=c1.object({type:c1.literal("function"),function:c1.object({name:c1.string(),description:c1.string().optional(),parameters:c1.record(c1.string(),c1.unknown()).optional()})}),OU5=c1.object({id:c1.string(),type:c1.literal("function"),function:c1.object({name:c1.string(),arguments:c1.string()})}),jU5=c1.discriminatedUnion("role",[c1.object({role:c1.literal("system"),content:c1.string(),name:c1.string().optional()}),c1.object({role:c1.literal("user"),content:c1.union([c1.string(),c1.array(c1.union([c1.object({type:c1.literal("text"),text:c1.string()}),c1.object({type:c1.literal("image_url"),image_url:c1.object({url:c1.string(),detail:c1.string().optional()})})]))]),name:c1.string().optional()}),c1.object({role:c1.literal("assistant"),content:c1.string().nullable().optional(),name:c1.string().optional(),tool_calls:c1.array(OU5).optional()}),c1.object({role:c1.literal("tool"),content:c1.string(),tool_call_id:c1.string()})]),wU5=c1.object({type:c1.literal("text")}),EU5=c1.object({type:c1.literal("json_object")}),PU5=c1.object({type:c1.literal("json_schema"),json_schema:c1.object({name:c1.string(),description:c1.string().optional(),schema:c1.record(c1.string(),c1.unknown()),strict:c1.boolean().optional()})}),zU5=c1.union([wU5,EU5,PU5]),AU5=c1.object({model:c1.string().describe("Format: 'model_id' or 'credential_id:model_id'"),messages:c1.array(jU5),stream:c1.boolean().optional().default(!1),temperature:c1.number().min(0).max(2).optional(),max_tokens:c1.number().positive().optional(),top_p:c1.number().min(0).max(1).optional(),frequency_penalty:c1.number().min(-2).max(2).optional(),presence_penalty:c1.number().min(-2).max(2).optional(),stop:c1.union([c1.string(),c1.array(c1.string())]).optional(),tools:c1.array(LU5).optional(),tool_choice:c1.union([c1.literal("auto"),c1.literal("none"),c1.literal("required"),c1.object({type:c1.literal("function"),function:c1.object({name:c1.string()})})]).optional(),response_format:zU5.optional(),user:c1.string().optional()});KP8=class KP8 extends Error{constructor($){super($);this.name="MessageConversionError"}};HP8=new $1;HP8.post("/:org/v1/chat/completions",async($)=>{let Z=$.get("studioContext"),Q=$.req.param("org");try{if(!Z.auth.apiKey?.id)return $.json(wD("API key authentication required. Provide a valid API key via Authorization header.","authentication_error"),401);if(!Z.organization)return $.json(wD("Organization context is required. Ensure your API key has organization metadata.","invalid_request_error","organization"),400);if((Z.organization.slug??Z.organization.id)!==Q)return $.json(wD("Organization mismatch. The API key's organization does not match the requested organization.","invalid_request_error","organization"),403);let Y=await $.req.json(),X=AU5.safeParse(Y);if(!X.success){let j=X.error.issues[0]??{message:"Invalid request",path:[]};return $.json(wD(`Invalid request: ${j.message}`,"invalid_request_error",j.path.length>0?j.path.join("."):null),400)}let J=X.data,G=TU5(J.model);if(!G)return $.json(wD("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}=G,{modelId:K}=G;if(!W){let w=(await Z.storage.aiProviderKeys.list({organizationId:Z.organization.id})).find((E)=>DT(E.providerId));if(!w)return $.json(wD("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=w.id}let H;try{H=await Z.aiProviders.activate(W,Z.organization.id)}catch{return $.json(wD(`AI provider credential not found or inaccessible: ${W}`,"invalid_request_error","model"),404)}let F=H.aiSdk.languageModel(K),U=RU5(J.messages),N=J.tools?MU5(J.tools):void 0,B=VU5(J.response_format),D=IU5(),O=Math.floor(Date.now()/1000);if(J.stream)return Sj($,async(j)=>{let w=GP8(F,U,N,J,B,$.req.raw.signal);try{let E=Rn(w),P=!1,T=0,z="",A=async()=>{if(z.length===0)return;let M=z;z="",await j.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:O,model:J.model,choices:[{index:0,delta:{content:M},finish_reason:null}]})})};for await(let M of E.stream){if(!P&&(M.type==="text-delta"||M.type==="tool-call"))await j.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:O,model:J.model,choices:[{index:0,delta:{role:"assistant",content:""},finish_reason:null}]})}),P=!0;if(M.type==="text-delta"){if(z+=M.text,z.length>=DU5)await A()}else if(M.type==="tool-call"){await A();let f=T++;await j.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:O,model:J.model,choices:[{index:0,delta:{tool_calls:[{index:f,id:M.toolCallId,type:"function",function:{name:M.toolName,arguments:JSON.stringify(M.input)}}]},finish_reason:null}]})})}else if(M.type==="finish")await A(),await j.writeSSE({data:JSON.stringify({id:D,object:"chat.completion.chunk",created:O,model:J.model,choices:[{index:0,delta:{},finish_reason:WP8(M.finishReason)}],usage:M.totalUsage?{prompt_tokens:M.totalUsage.inputTokens??0,completion_tokens:M.totalUsage.outputTokens??0,total_tokens:M.totalUsage.totalTokens??0}:void 0})})}await A(),await j.writeSSE({data:"[DONE]"})}catch(E){let P=E;console.error("[openai-compat:stream] Error:",P.message),await j.writeSSE({data:JSON.stringify({error:{message:P.message,type:"server_error"}})})}});else{let j=GP8(F,U,N,J,B,$.req.raw.signal),w=await fO(j),E={role:"assistant",content:w.text||null};if(w.toolCalls&&w.toolCalls.length>0)E.tool_calls=w.toolCalls.map((P)=>({id:P.toolCallId,type:"function",function:{name:P.toolName,arguments:JSON.stringify("input"in P?P.input:{})}})),E.content=null;return $.json({id:D,object:"chat.completion",created:O,model:J.model,choices:[{index:0,message:E,finish_reason:WP8(w.finishReason)}],usage:{prompt_tokens:w.usage?.inputTokens??0,completion_tokens:w.usage?.outputTokens??0,total_tokens:w.usage?.totalTokens??0}})}}catch(Y){let X=Y;if(X.name==="AbortError")return $.json(wD("Request aborted","invalid_request_error"),400);if(X.name==="MessageConversionError")return $.json(wD(X.message,"invalid_request_error","messages"),400);return console.error("[openai-compat] Error:",X.message,X.stack),$.json(wD(X.message,"server_error"),500)}});FP8=HP8});function kU5($){if(typeof $!=="object"||$===null)return!1;let Q=$.repository?.url;return typeof Q==="string"&&Q.length>0}function NP8(){let $=new $1;return $.use("*",async(Z,Q)=>{await Q(),Z.header("Cache-Control","private, no-store"),Z.header("Vary","Cookie")}),$.get("/",async(Z)=>{let Q=Z.get("studioContext"),Y=k0(Q);if(!Y)return Z.json({error:"Authentication required"},401);let J=(Z.req.query("site")??"").trim().toLowerCase();if(!l5(J))return Z.json({error:"Invalid site slug"},400);let G=await Q.db.selectFrom("member").innerJoin("organization","organization.id","member.organizationId").select(["organization.id as id","organization.slug as slug","organization.name as name","organization.metadata as metadata"]).where("member.userId","=",Y).execute(),W=[];for(let H of G){if(!H.slug||_9(H))continue;let F=await Q.storage.virtualMcps.list(H.id);for(let U of F){if(fT(U)!==J)continue;if(!kU5(U.metadata))continue;W.push({orgSlug:H.slug,orgName:H.name??H.slug,project:{id:U.id,title:U.title,icon:U.icon??null}})}}let K={matches:W};return Z.json(K)}),$}var BP8=L(()=>{H8();HX()});var Ah0;var mq1=L(()=>{Ah0={name:"decocms",version:"4.537.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 dev:server","dev:server":"NODE_ENV=development bun --env-file=.env --watch 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":"^4.0.58","@ai-sdk/google":"^4.0.76","@ai-sdk/openai":"^4.0.71","@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","@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":"^3.1.0","@opentelemetry/core":"^2.6.0",kysely:"^0.28.12","posthog-node":"^5.0.0"},devDependencies:{"@ai-sdk/provider":"^4.0.17","@better-auth/sso":"1.4.1","@decocms/better-auth":"1.5.17","@decocms/bindings":"workspace:*","@decocms/blocks":"8.8.0","@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:"^7.0.107","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 _U5(){let $=process.env.POSTHOG_KEY;if(!$)return null;return{key:$,host:process.env.POSTHOG_HOST??SU5}}var DP8,SU5="https://ph.studio.decocms.com",LP8;var OP8=L(()=>{H8();Ee();ph();B9();l1();wU();k21();mq1();DP8=new $1;DP8.get("/",($)=>{let Z={version:Ah0.version,theme:C4$(),...WF().logo&&{logo:WF().logo},...tO()&&{internalUrl:C8$()},...B0().enableDecoImport&&{enableDecoImport:!0},hostingEnabled:!!B0().controlplaneRestUrl&&!!B0().controlplaneServiceToken,hostingControlPlaneGa:B0().hostingControlPlaneGa,monitorEnabled:!!B0().clickhouseAnalyticsUrl&&!!B0().clickhouseAnalyticsPassword,monitorGa:B0().monitorGa,orderMonitorEnabled:!!B0().orderMonitorIngestUrl&&oJ(),plansEnabled:B0().plansEnabled,auth:CU8(),posthog:_U5(),googleMapsApiKey:process.env.GOOGLE_MAPS_API_KEY?.trim()||null,runtime:{agentSandbox:bU()}};return $.header("Cache-Control","no-store"),$.json({success:!0,config:Z})});LP8=DP8});import{z as M$}from"zod";var vU5,jP8;var wP8=L(()=>{vU5=M$.object({check_id:M$.string(),title:M$.string(),description:M$.string().optional(),impact:M$.string().optional(),why:M$.string().optional(),category:M$.string(),severity:M$.string(),value_band:M$.string().optional(),value_driver:M$.string().optional(),controllability:M$.string().optional(),pages:M$.array(M$.string()),tasks:M$.array(M$.string()),evidence:M$.string(),sample_scope:M$.string().optional(),sources:M$.array(M$.string())}),jP8=M$.object({domain:M$.string(),brand:M$.string(),favicon:M$.string().optional(),scanned_at:M$.string().nullable(),lang:M$.string(),score:M$.number().nullable(),band:M$.string().nullable(),totals:M$.object({measured:M$.number(),registry_total:M$.number(),passed:M$.number(),failed:M$.number(),blocked:M$.number()}),buckets:M$.array(M$.object({id:M$.enum(["critical","important","worth"]),label:M$.string(),items:M$.array(vU5)})),passing:M$.object({count:M$.number(),items:M$.array(M$.object({check_id:M$.string(),title:M$.string()}))}),not_measured:M$.object({count:M$.number(),groups:M$.array(M$.object({reason:M$.string(),label:M$.string(),count:M$.number(),checks:M$.array(M$.string())}))}),categories:M$.array(M$.object({key:M$.string(),label:M$.string(),score:M$.number().nullable(),band:M$.string().nullable(),pass:M$.number(),fail:M$.number()})),screenshots:M$.array(M$.object({url:M$.string(),page_type:M$.string().optional(),viewport:M$.enum(["desktop","mobile"]),image_url:M$.string()}))})});function EP8($,Z,Q){let Y=Q?`?${new URLSearchParams({lang:Q}).toString()}`:"";return`${xK({})}/api/v2/public/diagnostics/${encodeURIComponent($)}/onepager${Z}${Y}`}async function Th0($,Z={}){let Q=await fetch(EP8($,"",Z.lang),{headers:{Accept:"application/json"},signal:Z.signal});if(Q.status===404)return null;if(!Q.ok)throw Error(`onepager read HTTP ${Q.status}`);return jP8.parse(await Q.json())}async function PP8($,Z={}){let Q=await fetch(EP8($,".md",Z.lang),{headers:{Accept:"text/markdown"},signal:Z.signal});if(Q.status===404)return null;if(!Q.ok)throw Error(`onepager markdown HTTP ${Q.status}`);return Q.text()}var cq1=L(()=>{wP8();dL()});import{join as zP8}from"path";async function xU5($){try{let Z=await Th0($,{signal:AbortSignal.timeout(bU5)});if(!Z?.scanned_at)return null;return{brand:Z.brand.trim()||aw1($),...Z.score!==null?{score:Z.score}:{}}}catch{return null}}function DG($){return $.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;").replaceAll('"',"&quot;")}function fU5($,Z){let Q=Tu($),Y=Z?.brand?.trim()||aw1(Q),X=kJ8(Q,128),G=`${(B0().baseUrl??"https://studio.decocms.com").replace(/\/+$/,"")}/report/${encodeURIComponent(Q)}`,{title:W,description:K}=CJ8({brand:Y,domain:Q,score:Z?.score}),H=`${G}/og.png`,F=`${Y} Deco Score by decocms`;return[`<title>${DG(W)}</title>`,`<meta name="description" content="${DG(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="${DG(W)}" />`,`<meta property="og:description" content="${DG(K)}" />`,`<meta property="og:url" content="${DG(G)}" />`,`<meta property="og:image" content="${DG(H)}" />`,'<meta property="og:image:width" content="1200" />','<meta property="og:image:height" content="630" />',`<meta property="og:image:alt" content="${DG(F)}" />`,'<meta name="twitter:card" content="summary_large_image" />',`<meta name="twitter:title" content="${DG(W)}" />`,`<meta name="twitter:description" content="${DG(K)}" />`,`<meta name="twitter:image" content="${DG(H)}" />`,`<meta name="twitter:image:alt" content="${DG(F)}" />`,`<link rel="canonical" href="${DG(G)}" />`,`<link rel="alternate" type="text/markdown" href="${DG(G)}.md" />`,`<link rel="icon" href="${DG(X)}" sizes="any" />`].join(`
4572
4572
  `)}function yU5($,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}
4573
4573
  </head>`)}function AP8($){let Z=new $1;return Z.get("/:domain/og.png",async(Q)=>{let Y=Tu(Q.req.param("domain")),X=async()=>{let J=$?Bun.file(zP8($,"report-og-fallback.png")):null;if(!J||!await J.exists())return Q.notFound();return Q.body(new Uint8Array(await J.arrayBuffer()),200,{"Content-Type":"image/png","Cache-Control":"public, max-age=0, s-maxage=3600"})};try{let J=await fetch(`${xK({})}/api/v2/public/diagnostics/${encodeURIComponent(Y)}/og.png`,{signal:AbortSignal.timeout(gU5)}),G=J.headers.get("content-type")??"";if(!J.ok||!G.startsWith("image/")||!J.body)return X();return Q.body(J.body,200,{"Content-Type":G,"Cache-Control":"public, max-age=0, s-maxage=604800"})}catch{return X()}}),Z.get("/:file{.+\\.md}",async(Q)=>{let Y=Tu(Q.req.param("file").replace(/\.md$/,""));try{let X=await PP8(Y,{lang:Q.req.query("lang")?.trim()||void 0,signal:AbortSignal.timeout(hU5)});if(X===null)return Q.text("Deco Score not found",404);return Q.body(X,200,{"Content-Type":"text/markdown; charset=utf-8","Cache-Control":"public, max-age=600, stale-while-revalidate=3600","Access-Control-Allow-Origin":"*"})}catch{return Q.text("Deco Score unavailable",502)}}),Z.get("/:domain",async(Q)=>{let Y=Q.req.param("domain"),X=$?zP8($,"index.html"):null,J=X?Bun.file(X):null;if(!J||!await J.exists())return Q.notFound();let G=await J.text();try{let W=await xU5(Tu(Y)),K=fU5(Y,W);return Q.html(yU5(G,K),200,{"Cache-Control":"public, max-age=0, s-maxage=300"})}catch{return Q.html(G)}}),Z}var bU5=2500,gU5=1e4,hU5=1e4;var TP8=L(()=>{H8();dL();cq1();l1()});function qh0($,Z){return fetch(`${xK({})}${$}`,Z)}async function uU5($,Z){let Q=await Th0($,{lang:Z});if(!Q)return{status:"not_found",report:null};return Q.scanned_at?{status:"ready",report:Q}:{status:"empty",report:null}}function cU5($){let Z=typeof $==="object"&&$!==null?$:{},Q=typeof Z.domain==="string"?Z.domain.trim():"",Y=typeof Z.distinctId==="string"&&Z.distinctId.trim()&&Z.distinctId.length<=200?Z.distinctId.trim():void 0;return{domain:Q,distinctId:Y}}var lU5,mU5=8192,bj,qP8=async($,Z)=>{if(!$.get("reportUser"))return $.json({error:"Authentication required"},401);await Z();return},RP8;var MP8=L(()=>{H8();FG();ZH();dL();cq1();lU5=new Set(["complete","errored","terminated","unknown"]);bj=new $1;bj.use("*",async($,Z)=>{let Q=await U4.api.getSession({headers:$.req.raw.headers});$.set("reportUser",Q?.user?.id?{email:Q.user.email}:void 0),await Z(),$.header("Cache-Control","private, no-store"),$.header("Vary","Cookie");return});bj.use("/link-token/*",qP8);bj.use("/suggest",qP8);bj.get("/site/:domain",async($)=>{let Z=$.req.param("domain").trim();if(!Z)return $.json({error:"domain is required"},400);let Q=$.req.query("lang")?.trim()||void 0;try{return $.json(await uU5(Z,Q))}catch{return $.json({error:"report read failed"},502)}});bj.post("/run",b6({maxSize:mU5,onError:($)=>$.json({error:"request body too large"},413)}),async($)=>{let Z=$.get("reportUser"),Q;try{Q=await $.req.json()}catch{return $.json({error:"invalid JSON"},400)}let{domain:Y,distinctId:X}=cU5(Q);if(!Y)return $.json({error:"domain is required"},400);let J=Z?.email;try{let G=await qh0("/api/v2/diagnostics/run",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${dE({})}`},body:JSON.stringify({url:Y,...J?{email:J}:{},distinct_id:X})});if(!G.ok)return $.json({error:`run HTTP ${G.status}`},502);let W=await G.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)}});bj.get("/status",async($)=>{let Z=$.req.query("id");if(!Z)return $.json({error:"id is required"},400);try{let Q=await qh0(`/api/v2/diagnostics/status?id=${encodeURIComponent(Z)}`,{headers:{Authorization:`Bearer ${dE({})}`}});if(!Q.ok)return $.json({error:`status HTTP ${Q.status}`},502);let X=(await Q.json()).status??"unknown",J={done:lU5.has(X),status:X};return $.json(J)}catch{return $.json({error:"status failed"},502)}});bj.get("/link-token/:id",async($)=>{let Z=$.req.param("id");try{let Q=await qh0(`/api/v2/public/link-tokens/${encodeURIComponent(Z)}`,{headers:{Accept:"application/json"}});if(Q.status===404)return $.json(null);if(!Q.ok)return $.json({error:`link token HTTP ${Q.status}`},502);return $.json(await Q.json())}catch{return $.json({error:"link token resolve failed"},502)}});bj.get("/suggest",async($)=>{let Z=($.req.query("q")??"").trim().slice(0,64);if(Z.length<2)return $.json({suggestions:[]});try{let Q=await qh0(`/api/v2/public/suggest?q=${encodeURIComponent(Z)}`,{headers:{Accept:"application/json"}});if(!Q.ok)return $.json({suggestions:[]});let Y=await Q.json();return $.json({suggestions:Array.isArray(Y.suggestions)?Y.suggestions:[]})}catch{return $.json({suggestions:[]})}});RP8=bj});var dU5=1048576,dq1;var VP8=L(()=>{H8();FG();l1();D21();dq1=new $1;dq1.post("/webhook",b6({maxSize:dU5,onError:($)=>$.json({error:"payload too large"},413)}),async($)=>{let Z=B0().stripeWebhookSecret;if(!Z)return $.json({error:"stripe billing not configured"},503);let Q=await $.req.text();if(!cF8(Q,$.req.header("stripe-signature"),Z))return $.json({error:"invalid signature"},400);let X=dF8(Q);if(!X)return $.json({error:"invalid payload"},400);let J=await iF8(X);return console.log("stripe webhook",{eventId:X.id,type:X.type,livemode:X.livemode,...J}),$.json({received:!0})})});import{timingSafeEqual as iU5}from"crypto";function tU5($,Z,Q){if(!Z?.startsWith("sha256="))return!1;let Y=new Bun.CryptoHasher("sha256",Q).update($).digest("hex"),X=Z.slice(7);if(X.length!==Y.length)return!1;return iU5(Buffer.from(X),Buffer.from(Y))}function oU5($,Z){let Q=Z,Y=Q?.repository?.name,X=Q?.repository?.owner?.login;if(typeof Y!=="string"||typeof X!=="string")return[];let J=[];if($==="check_suite"){if(Q.action!=="completed")return[];let G=Q.check_suite?.pull_requests;for(let W of Array.isArray(G)?G:[]){let K=W?.number;if(typeof K==="number")J.push(K)}}else if($==="issue_comment"&&Q.issue?.pull_request){let G=Q.issue.number;if(typeof G==="number")J.push(G)}return[...new Set(J)].map((G)=>({repoOwner:X,repoName:Y,number:G}))}function IP8($){let Z=new $1;return Z.post("/webhook",b6({maxSize:pU5,onError:(Q)=>Q.json({error:"payload too large"},413)}),async(Q)=>{let Y=process.env.GITHUB_WEBHOOK_SECRET;if(!Y)return Q.json({error:"github webhook not configured"},503);let X=await Q.req.text();if(!tU5(X,Q.req.header("x-hub-signature-256"),Y))return Q.json({error:"invalid signature"},400);let J=Q.req.header("x-github-event");if(J!=="push"&&!nU5.has(J??""))return Q.json({ok:!0,ignored:"event"});let G;try{G=JSON.parse(X)}catch{return Q.json({error:"invalid payload"},400)}if(J==="push"){let H=G.ref,F=G.repository?.full_name;if(!H||!F)return Q.json({ok:!0,ignored:"shape"});return n60().then((U)=>U?.markTenantPoolsDirty(`https://github.com/${F}`,H)).catch((U)=>console.warn(`[github-webhook] tenant pool refresh for ${F}@${H} failed: ${U instanceof Error?U.message:String(U)}`)),Q.json({ok:!0})}let W=oU5(J??"",G);if(W.length===0)return Q.json({ok:!0,ignored:"no-pr"});let K=await sU5($,W);return Q.json({ok:!0,refreshed:K})}),Z}async function sU5($,Z){let Q=0;for(let Y of Z){let X=$.taskBoard(),J;try{J=await X.findPrLinks(Y)}catch(G){console.error("[github-webhook] pr link lookup failed:",G);continue}for(let G of J)try{let W=await X.getById(G.taskBoardItemId,G.organizationId),K=W?await $.contextFactory()(G.organizationId,W.assignedBy??W.createdBy):null;if(!K)continue;if((await K.storage.demoBoard.frozenItemIds(G.organizationId)).has(G.taskBoardItemId))continue;if(await Gv0(K,G.organizationId,G.taskBoardItemId)!==null)Q++}catch(W){console.error(`[github-webhook] pr card refresh failed for ${G.taskBoardItemId}:`,W)}}return Q}var pU5=5242880,nU5;var kP8=L(()=>{H8();FG();xX();I7();nU5=new Set(["check_suite","issue_comment"])});import{DBOS as pq1,SchedulerMode as aU5}from"@dbos-inc/dbos-sdk";async function eU5(){try{return await $N5()}catch($){return console.warn(`[sandbox-credential-push] push failed: ${$ instanceof Error?$.message:String($)}`),null}}async function $N5(){if(!p60())return null;let[{RemoteSandboxProvider:$},{SandboxProviderRouter:Z}]=await Promise.all([Promise.resolve().then(() => (nK1(),pK1)),Promise.resolve().then(() => (iK1(),dK1))]),Q=await n60(),Y=Q instanceof Z?Q.providers.kubernetes:Q;if(!(Y instanceof $))return null;let{db:X}=E8(),{sandboxes:J,pools:G}=await Y.list(),W=Date.now(),K=fm$({sandboxes:J,pools:G,records:await ym$(X,J,G),legacyPools:IC0(process.env.STUDIO_SANDBOX_TENANT_POOLS),now:W}),{batches:H,failed:F}=await gm$(K,oO0(X,new NJ(B0().encryptionKey)),{now:W,orgFsLifetimeMs:SC0}),U=0,N=0,B=0;for(let D of H)try{let O=await Y.pushCredentials(D);U+=O.stored,N+=O.kept}catch(O){B++,console.warn(`[sandbox-credential-push] a push batch failed: ${O instanceof Error?O.message:String(O)}`)}return{sandboxes:J.length,pushed:U,kept:N,refused:K.refused,failed:F+B}}async function ZN5($,Z){let Q=await pq1.runStep(eU5,{name:"pushSandboxCredentials"});if(Q&&(Q.refused>0||Q.failed>0))console.warn(`[sandbox-credential-push] ${Q.sandboxes} sandboxes: pushed ${Q.pushed}, kept ${Q.kept}, refused ${Q.refused}, failed ${Q.failed}`)}function CP8(){if(iq1)return;if(!B0().agentSandboxEnabled||!p60())return;iq1=pq1.registerWorkflow(ZN5,{name:"sandboxCredentialPushWorkflow"}),pq1.registerScheduled(iq1,{name:"sandboxCredentialPushWorkflow",crontab:rU5,mode:aU5.ExactlyOncePerIntervalWhenActive})}var rU5="1,11,21,31,41,51 * * * *",iq1=null;var SP8=L(()=>{bG();Sw();_31();_C0();kC0();xX();l1()});function _P8($){let Z=new wj($.db,new NJ($.encryptionKey)),Q=new $1;return Q.get("/attachments/:token",async(Y)=>{let X=Er$(Y.req.param("token"));if(!X)return Y.json({error:"Invalid or expired link"},404);let J=await Z.getByOrg(X.organizationId);if(!J)return Y.json({error:"Jira is not connected"},404);let W=await new QQ(J.siteUrl,J.email,J.apiToken).downloadAttachment(X.attachmentId);if(!W.ok||!W.body)return Y.json({error:"Jira refused the download"},502);let K=new Headers;for(let H of["content-type","content-length","content-disposition"]){let F=W.headers.get(H);if(F)K.set(H,F)}return K.set("cache-control","no-store"),new Response(W.body,{status:200,headers:K})}),Q}var vP8=L(()=>{H8();Sw();TU1();gO()});function Rh0(){try{return B0().jiraSettleSeconds*1000}catch{return mz}}function bP8($,Z){let Q=Z.windowMs??mz,Y=$.at(-1);if(!Y)return null;if(Z.changeId!==void 0&&Y.id!==Z.changeId)return{kind:"superseded"};if(Z.now!==void 0&&Z.now-Y.at<Q)return{kind:"moving"};let X=QN5($,Q);if((X.id&&Y.toId?X.id===Y.toId:!1)||!X.id&&X.name===Y.to)return{kind:"returned",change:Y};return{kind:"moved",change:Y,from:X}}function QN5($,Z){for(let Y=$.length-2;Y>=0;Y--){let X=$[Y],J=$[Y+1];if(X&&J&&J.at-X.at>=Z)return{id:X.toId,name:X.to}}let Q=$[0];return{id:Q?.fromId??null,name:Q?.from??null}}var nq1=L(()=>{sO();l1()});function xP8($){if(typeof $!=="object"||$===null)return null;let Z=$;if(Z.webhookEvent!=="jira:issue_updated")return null;let Q=Z.issue?.id,Y=Z.issue?.key,X=Z.changelog?.id;if(typeof Q!=="string"&&typeof Q!=="number"||typeof Y!=="string"||typeof X!=="string"&&typeof X!=="number")return null;let J=Z.changelog?.items?.find((G)=>G.field==="status");if(!J||typeof J.toString!=="string")return null;return{issueId:String(Q),issueKey:Y,toStatus:J.toString,changelogId:String(X)}}async function tq1($,Z,Q){if(!Z.enabled)return"disabled";let Y=Z.organizationId,X=new QQ(Z.siteUrl,Z.email,Z.apiToken),J=bP8(await X.listStatusChanges(Q.issueId),{changeId:Q.changelogId,now:Q.now,windowMs:Rh0()});if(!J)return"no_rule";if(J.kind!=="moved")return J.kind;let{change:G,from:W}=J,K=(await $.storage.automations.listJiraTransitionTriggers(Y,{jiraStatus:G.to,activeOnly:!0})).map((N)=>({...N,from:lz(N)})),H=K48(K)&&Z.boardId?W48(await X.getBoardColumnStatusIds(Z.boardId),W.id,G.toId):null,F=G48(K,W.name,H);if(!F)return"no_rule";if(!await $.storage.jiraIntegrations.claimTrigger(Y,Q.issueId,G.id))return"duplicate";return await BH({automationId:F.automation_id,organizationId:Y,triggerId:F.id,target:{kind:"jira",issues:[Q.issueId],move:{toStatus:G.to,fromStatus:W.name,movedBy:G.by,movedAt:new Date(G.at).toISOString()},eventKey:G.id}},{idempotencyKey:`jira:${F.id}:${G.id}`}),"fired"}var oq1=L(()=>{NU();gO();Ut();nq1()});import{DBOS as d2,SchedulerMode as YN5}from"@dbos-inc/dbos-sdk";function fP8($){aq1=$}function eq1(){if(!aq1)throw Error("[jira-trigger] runtime not initialized \u2014 setJiraTriggerSweepRuntime() must run before the workflow fires");return aq1}function $R1(){let $=eq1();return new wj($.db,new NJ($.encryptionKey))}async function KN5($){try{let Z=await $R1().getById($);if(!Z?.enabled||!Z.boardId)return{integrationId:$,fired:0};let Q=await gY(eq1().db,Z.organizationId);if(!Q)return{integrationId:$,fired:0};if((await Q.storage.automations.listJiraTransitionTriggers(Z.organizationId,{activeOnly:!0})).length===0)return{integrationId:$,fired:0};let X=new QQ(Z.siteUrl,Z.email,Z.apiToken),G=`(${await X.getBoardScopeJql(Z.boardId)}) AND status CHANGED AFTER "-${JN5}m"`,W=0,K;for(let H=0;H<GN5;H++){let F=await X.searchIssues({jql:G,nextPageToken:K});for(let U of F.issues)if(await tq1(Q,Z,{issueId:U.id,now:Date.now()})==="fired")W++;if(K=F.nextPageToken??void 0,!K)break}return{integrationId:$,fired:W}}catch(Z){return{integrationId:$,fired:0,error:Z instanceof Error?Z.message:String(Z)}}}async function HN5($,Z){let Q=await d2.runStep(()=>$R1().listEnabledIds(),{name:"loadJiraIntegrations"});if(Q.length===0)return;let Y=await Promise.all(Q.map((X)=>d2.runStep(()=>KN5(X),{name:`sweepJira:${X}`})));for(let X of Y)if(X.error)console.warn(`[jira-trigger] integration ${X.integrationId} failed: ${X.error}`);else if(X.fired>0)console.log(`[jira-trigger] integration ${X.integrationId} fired ${X.fired} automation(s) the webhook missed`)}async function FN5($,Z){try{let Q=await $R1().getById($);if(!Q?.enabled)return"disabled";let Y=await gY(eq1().db,Q.organizationId);if(!Y)return"disabled";let X=await tq1(Y,Q,{issueId:Z.issueId,changelogId:Z.changelogId});if(X==="fired")console.log(`[jira-trigger] fired an automation for ${Z.issueKey} after it settled`);else if(X==="returned")console.log(`[jira-trigger] ${Z.issueKey} went back where it was before settling in "${Z.toStatus}"; no fire`);return X}catch(Q){return console.error(`[jira-trigger] settling ${Z.issueKey} failed`,Q instanceof Error?Q.message:Q),"error"}}async function UN5($,Z){await d2.sleep(Rh0()+WN5),await d2.runStep(()=>FN5($,Z),{name:"settleJiraMove"})}async function yP8($,Z){if(!rq1)throw Error("[jira-trigger] settle workflow is not registered");await d2.startWorkflow(rq1,{workflowID:`jira-settle:${$}:${Z.changelogId}`})($,Z)}function gP8(){if(sq1)return;rq1=d2.registerWorkflow(UN5,{name:"jiraSettleWorkflow"}),sq1=d2.registerWorkflow(HN5,{name:"jiraTriggerSweepWorkflow"}),d2.registerScheduled(sq1,{name:"jiraTriggerSweepWorkflow",crontab:XN5,mode:YN5.ExactlyOncePerIntervalWhenActive})}var XN5="*/5 * * * *",JN5=20,GN5=5,WN5=5000,aq1=null,rq1=null,sq1=null;var ZR1=L(()=>{Sw();dO();gO();nq1();oq1()});function hP8($){let Z=new wj($.db,new NJ($.encryptionKey)),Q=Sz($.db);async function Y(J,G){let W=xP8(G);if(!W)return;let K=await Z.getByWebhookSecret(J);if(!K?.enabled)return;if((await Q.listJiraTransitionTriggers(K.organizationId,{activeOnly:!0})).length===0)return;await yP8(K.id,W)}let X=new $1;return X.post("/webhook/:secret",b6({maxSize:NN5}),async(J)=>{let G=J.req.param("secret");if(!await Z.getByWebhookSecret(G))return J.json({error:"Unknown webhook"},404);let K;try{K=await J.req.json()}catch{return J.json({error:"Body must be JSON"},400)}return Y(G,K).catch((H)=>{console.error("[jira-webhook] trigger failed",H)}),J.body(null,202)}),X}var NN5=1048576;var uP8=L(()=>{H8();FG();Sw();ZR1();oq1();p50()});function lP8($,Z){if(Z.startsWith("text/html")||Z.startsWith("image/svg"))$.set("Content-Security-Policy","sandbox allow-scripts allow-modals allow-same-origin")}var mP8,BN5,DN5,cP8;var dP8=L(()=>{H8();F3();rn();qi();mP8=new $1,BN5=["range","if-none-match","if-modified-since"],DN5=["content-type","content-length","content-range","accept-ranges","etag","last-modified"];mP8.get("/:org/files/*",async($)=>{let Z=$.get("studioContext"),Q=Z.organization?.id;if(!Z.auth?.user?.id){if(Zs($))return $.redirect(`/login?next=${encodeURIComponent($.req.path)}`,302);throw new R1(401,{message:"Authentication required"})}if(!Q)throw new R1(401,{message:"Organization context required"});let Y=$.req.path.replace(/^.*\/files\//,"");if(!Y)throw new R1(400,{message:"Missing file key"});let X=await S90(Y,Z);if(!X)throw new R1(503,{message:"Object storage not configured"});if(X.startsWith("data:")&&cK()){let K=X.match(/^data:([^;]+);base64,(.+)$/s);if(!K)throw new R1(500,{message:"Invalid data URL from storage"});let[,H,F]=K,U=Buffer.from(F,"base64"),N=new Headers({"Content-Type":H,"Cache-Control":"private, max-age=86400"});return lP8(N,H),new Response(U,{status:200,headers:N})}let J=new Headers;for(let K of BN5){let H=$.req.header(K);if(H)J.set(K,H)}let G=await fetch(X,{headers:J});if(G.status===403||G.status===404)throw new R1(404,{message:"File not found"});if(!G.ok&&G.status!==304&&G.status!==416)throw console.error(`[files] upstream storage error ${G.status} for key:`,Y),new R1(502,{message:"Upstream storage error"});let W=new Headers;for(let K of DN5){let H=G.headers.get(K);if(H)W.set(K,H)}return W.set("Cache-Control","private, max-age=86400"),lP8(W,W.get("content-type")??""),new Response(G.body,{status:G.status,headers:W})});cP8=mP8});var HY0=y((Ol)=>{var LN5=Ol&&Ol.__createBinding||(Object.create?function($,Z,Q,Y){if(Y===void 0)Y=Q;var X=Object.getOwnPropertyDescriptor(Z,Q);if(!X||("get"in X?!Z.__esModule:X.writable||X.configurable))X={enumerable:!0,get:function(){return Z[Q]}};Object.defineProperty($,Y,X)}:function($,Z,Q,Y){if(Y===void 0)Y=Q;$[Y]=Z[Q]}),ON5=Ol&&Ol.__exportStar||function($,Z){for(var Q in $)if(Q!=="default"&&!Object.prototype.hasOwnProperty.call(Z,Q))LN5(Z,$,Q)};Object.defineProperty(Ol,"__esModule",{value:!0});ON5(AG(),Ol)});var nP8=y((iP8)=>{Object.defineProperty(iP8,"__esModule",{value:!0});iP8.version=void 0;iP8.version="3.4.0"});var sP8=y((ED)=>{var jN5=ED&&ED.__importDefault||function($){return $&&$.__esModule?$:{default:$}};Object.defineProperty(ED,"__esModule",{value:!0});ED.NodeTransport=ED.VERSION=void 0;ED.nodeResolveHost=TN5;var H9=HY0(),wN5=M0("net"),QR1=M0("tls"),EN5=M0("path"),tP8=M0("fs"),PN5=jN5(M0("dns")),zN5=nP8();ED.VERSION=zN5.version;var AN5="nats.js";class oP8{socket;version;lang;yields=[];signal=(0,H9.deferred)();closedNotification=(0,H9.deferred)();options;connected=!1;tlsName="";done=!1;closeError;constructor(){this.lang=AN5,this.version=ED.VERSION}async connect($,Z){this.tlsName=$.tlsName,this.options=Z;let{tls:Q}=this.options,{handshakeFirst:Y}=Q||{};try{if(Y===!0)this.socket=await this.tlsFirst($);else this.socket=await this.dial($);if(this.done)this.socket?.destroy();let X=await this.peekInfo();(0,H9.checkOptions)(X,Z);let{tls_required:J,tls_available:G}=X,W=G===!0&&Z.tls!==null;if(!Y&&(J||W))this.socket=await this.startTLS();if(this.done)this.socket?.destroy();if(J&&this.socket.encrypted!==!0)throw H9.errors.InvalidArgumentError.format("tls","is not available on this server");return this.connected=!0,this.setupHandlers(),this.signal.resolve(),Promise.resolve()}catch(X){let J=X;if(!J)J=new H9.errors.ConnectionError("error connecting - node provided an undefined error");let{code:G}=J,W=G==="ECONNREFUSED"?new H9.errors.ConnectionError("connection refused",{cause:J}):J;throw this.socket?.destroy(),W}}dial($){let Z=(0,H9.deferred)(),Q,Y=(0,wN5.createConnection)($.port,$.hostname,()=>{Z.resolve(Y),Y.removeAllListeners()});return Y.on("error",(X)=>{Q=X}),Y.on("close",()=>{Y.removeAllListeners(),Z.reject(Q)}),Y.setNoDelay(!0),Z}get isClosed(){return this.done}close($){return this._closed($,!1)}peekInfo(){let $=(0,H9.deferred)(),Z;return this.socket.on("data",(Q)=>{this.yields.push(Q);let Y=H9.DataBuffer.concat(...this.yields),X=(0,H9.extractProtocolMessage)(Y);if(X!=="")try{let J=H9.INFO.exec(X);if(!J)throw Error("unexpected response from server");let G=JSON.parse(J[1]);$.resolve(G)}catch(J){$.reject(J)}finally{this.socket.removeAllListeners()}}),this.socket.on("error",(Q)=>{Z=Q}),this.socket.on("close",()=>{this.socket.removeAllListeners(),$.reject(Z)}),$}loadFile($){if(!$)return Promise.resolve();let Z=(0,H9.deferred)();try{if($=(0,EN5.resolve)($),!(0,tP8.existsSync)($))Z.reject(Error(`${$} doesn't exist`));(0,tP8.readFile)($,(Q,Y)=>{if(Q)return Z.reject(Q);Z.resolve(Y)})}catch(Q){Z.reject(Q)}return Z}async loadClientCerts(){let $={},{certFile:Z,cert:Q,caFile:Y,ca:X,keyFile:J,key:G}=this.options.tls;try{if(Z){let W=await this.loadFile(Z);if(W)$.cert=W}else if(Q)$.cert=Q;if(J){let W=await this.loadFile(J);if(W)$.key=W}else if(G)$.key=G;if(Y){let W=await this.loadFile(Y);if(W)$.ca=[W]}else if(X)$.ca=X;return Promise.resolve($)}catch(W){return Promise.reject(W)}}async tlsFirst($){let Z,Q={servername:this.tlsName,rejectUnauthorized:!0};if(this.socket)Q.socket=this.socket;if(typeof this.options.tls==="object")try{let X=await this.loadClientCerts()||{};Q=(0,H9.extend)(Q,this.options.tls,X)}catch(X){return Promise.reject(new H9.errors.ConnectionError(X.message,{cause:X}))}let Y=(0,H9.deferred)();try{let X=(0,QR1.connect)($.port,$.hostname,Q,()=>{X.removeAllListeners(),Y.resolve(X)});X.on("error",(J)=>{Z=J}),X.on("secureConnect",()=>{if(Q.rejectUnauthorized===!1)return;if(!X.authorized)throw X.authorizationError}),X.on("close",()=>{Y.reject(Z),X.removeAllListeners()}),X.setNoDelay(!0)}catch(X){Y.reject(new H9.errors.ConnectionError(X.message,{cause:X}))}return Y}async startTLS(){let $,Z={socket:this.socket,servername:this.tlsName,rejectUnauthorized:!0};if(typeof this.options.tls==="object")try{let Y=await this.loadClientCerts()||{};Z=(0,H9.extend)(Z,this.options.tls,Y)}catch(Y){return Promise.reject(new H9.errors.ConnectionError(Y.message,{cause:Y}))}let Q=(0,H9.deferred)();try{let Y=(0,QR1.connect)(Z,()=>{Y.removeAllListeners(),Q.resolve(Y)});Y.on("error",(X)=>{$=X}),Y.on("secureConnect",()=>{if(Z.rejectUnauthorized===!1)return;if(!Y.authorized)throw Y.authorizationError}),Y.on("close",()=>{Q.reject($),Y.removeAllListeners()})}catch(Y){Q.reject(new H9.errors.ConnectionError(Y.message,{cause:Y}))}return Q}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,H9.render)($[Z])}`);yield $[Z]}if(this.done)break;else if(this.yields.length===0)$.length=0,this.yields=$,this.signal=(0,H9.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 QR1.TLSSocket}_send($){if(this.isClosed||this.socket===void 0)return Promise.resolve();if(this.options.debug)console.info(`< ${(0,H9.render)($)}`);let Z=(0,H9.deferred)();try{this.socket.write($,(Q)=>{if(Q){if(this.options.debug)console.error(`!!! ${(0,H9.render)($)}: ${Q}`);return Z.reject(Q)}return Z.resolve()})}catch(Q){if(this.options.debug)console.error(`!!! ${(0,H9.render)($)}: ${Q}`);Z.reject(Q)}return Z}send($){this._send($).catch((Q)=>{})}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(Q){if(this.options.debug)console.log("transport close terminated with an error",Q)}try{if(this.socket)this.socket.removeAllListeners(),this.socket?.destroy(),this.socket=void 0}catch(Q){console.log(Q)}this.done=!0,this.closedNotification.resolve(this.closeError)}closed(){return this.closedNotification}}ED.NodeTransport=oP8;function TN5($){let Z=(0,H9.deferred)();return PN5.default.lookup($,{all:!0},(Q,Y)=>{if(Q){Z.reject(Q);return}let X=[];for(let J of Y)X.push(J.address);if(X.length===0)X.push($);Z.resolve(X)}),Z}});var Zz8=y(($z8)=>{Object.defineProperty($z8,"__esModule",{value:!0});$z8.connect=qN5;var aP8=sP8(),rP8=HY0(),eP8=HY0();function qN5($={}){if((0,eP8.hasWsProtocol)($))return Promise.reject(eP8.errors.InvalidArgumentError.format("servers","node client doesn't support websockets, use the 'wsconnect' function instead"));return(0,rP8.setTransportFactory)({factory:()=>{return new aP8.NodeTransport},dnsResolveFn:aP8.nodeResolveHost}),rP8.NatsConnectionImpl.connect($)}});var Qz8=y((xj)=>{var MN5=xj&&xj.__createBinding||(Object.create?function($,Z,Q,Y){if(Y===void 0)Y=Q;var X=Object.getOwnPropertyDescriptor(Z,Q);if(!X||("get"in X?!Z.__esModule:X.writable||X.configurable))X={enumerable:!0,get:function(){return Z[Q]}};Object.defineProperty($,Y,X)}:function($,Z,Q,Y){if(Y===void 0)Y=Q;$[Y]=Z[Q]}),VN5=xj&&xj.__exportStar||function($,Z){for(var Q in $)if(Q!=="default"&&!Object.prototype.hasOwnProperty.call(Z,Q))MN5(Z,$,Q)};Object.defineProperty(xj,"__esModule",{value:!0});xj.connect=void 0;var IN5=Zz8();Object.defineProperty(xj,"connect",{enumerable:!0,get:function(){return IN5.connect}});VN5(HY0(),xj)});function Jz8($){let Z=$?.connectFn??_N5,Q=null,Y=null,X=!1,J=!1,G=!1,W=[];function K(){return Q!==null&&!Q.isClosed()&&!Q.isDraining()&&!G}function H(){console.log(`[NatsProvider] fireReady: ${W.length} callbacks`);for(let N of W)try{N()}catch{}}function F(N){(async()=>{for await(let B of N.status())if(B.type==="disconnect")console.log("[NatsProvider] Disconnected"),G=!0;else if(B.type==="reconnect")console.log("[NatsProvider] Reconnected, re-firing ready callbacks"),G=!1,Y=null,H()})().catch(()=>{})}async function U(N,B){let D=0;while(!J)try{Q=await Z({servers:N,timeout:SN5,reconnect:!0,maxReconnectAttempts:-1,...B?{authenticator:B}:{}}),console.log(`[NatsProvider] Connected to ${Q.getServer()} after ${D} attempt(s)`),Y=null,G=!1,F(Q),H();return}catch{D++;let O=b7(CN5,kN5,D-1,2,0.5);await G$(O)}}return{init(N,B){if(X)return;X=!0,J=!1;let D=B?.creds?Mh0.credsAuthenticator(new TextEncoder().encode(B.creds)):B?.user?Mh0.usernamePasswordAuthenticator(B.user,B.password):void 0;U(N,D).catch(()=>{})},isConnected(){return K()},getConnection(){return K()?Q:null},getJetStream(){if(!K())return null;if(!Y)Y=Xz8.jetstream(Q);return Y},onReady(N){if(W.push(N),K())try{N()}catch{}},async drain(){if(J=!0,X=!1,Y=null,G=!1,Q){let N=Q;Q=null,await N.drain().catch(()=>{})}}}}function _N5($){return Yz8.connect($)}var Mh0,Yz8,Xz8,kN5=100,CN5=3000,SN5=3000;var Gz8=L(()=>{g$();Mh0=_(UA(),1),Yz8=_(Qz8(),1),Xz8=_(nH(),1)});function Vh0($,Z){return`${$}.${Z}`}class YR1{cache;constructor($){this.cache=WB({ttlMs:$?.ttlMs??vN5,maxSize:$?.maxSize??bN5})}async get($,Z){return this.cache.get(Vh0($,Z))??null}async set($,Z,Q){this.cache.set(Vh0($,Z),Q)}async invalidate($,Z){this.cache.delete(Vh0($,Z)),this.cache.delete(Vh0($,`${Z}:decisions`))}teardown(){this.cache.clear()}}var vN5=600000,bN5=5000;var Wz8=()=>{};function Ih0($,Z){return`${$}:${Z}`}function XR1($){let Z=WB({ttlMs:$?.ttlMs??xN5,maxSize:$?.maxSize??fN5}),Q=$?.getConnection,Y=crypto.randomUUID(),X=new TextEncoder,J=new TextDecoder,G=null;function W(K,H){let F=Q?.();if(!F)return;try{F.publish(Kz8,X.encode(JSON.stringify({organizationId:K,keyId:H,originId:Y})))}catch(U){console.warn("[ProviderKeyCache] Publish failed (non-critical):",U)}}return{get(K,H){return Z.get(Ih0(K,H))},set(K,H,F){Z.set(Ih0(K,H),F)},invalidate(K,H){Z.delete(Ih0(K,H)),W(K,H)},start(){if(G)return;let K=Q?.();if(!K)return;G=K.subscribe(Kz8),(async()=>{for await(let H of G)try{let F=JSON.parse(J.decode(H.data));if(F.originId===Y)continue;Z.delete(Ih0(F.organizationId,F.keyId))}catch{}})().catch(console.error)},teardown(){G?.unsubscribe(),G=null,Z.clear()}}}var Kz8="studio.ai-provider-keys.invalidate",xN5=30000,fN5=5000;var Hz8=()=>{};class JR1{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 Q=new TextDecoder,Y=Z.subscribe("studio.decopilot.cancel");this.subscription=Y,(async()=>{for await(let X of Y)try{let J=JSON.parse(Q.decode(X.data));if(J.originId===this.originId)continue;this.onCancel?.(J.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 Q=this.encoder.encode(JSON.stringify({taskId:$,originId:this.originId}));Z.publish("studio.decopilot.cancel",Q)}catch(Z){console.warn("[NatsCancelBroadcast] Publish failed (non-critical):",Z)}}async stop(){this.subscription?.unsubscribe(),this.subscription=null,this.onCancel=null}}var Fz8=($)=>{let Z;return()=>Z??=$()},GR1,WR1;var Uz8=L(()=>{y6();GR1=Fz8(()=>W$.createHistogram("decopilot.stream.encode_ms",{description:"Per-chunk JSON.stringify+encode time for decopilot stream",unit:"ms"})),WR1=Fz8(()=>W$.createCounter("decopilot.stream.published_chunks",{description:"Logical decopilot stream chunks published to JetStream",unit:"{chunks}"}))});function cN5($=Dz8){return{name:nB,subjects:[`${LD1}.>`],storage:SU.StorageType.File,max_age:hN5,max_bytes:lN5,max_msgs_per_subject:mN5,discard:SU.DiscardPolicy.Old,retention:SU.RetentionPolicy.Limits,duplicate_window:uN5,num_replicas:$}}class Lz8{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 Nz8($){let Z=Bz8.headers();for(let[Q,Y]of Object.entries($))Z.set(Q,Y);return Z}function nN5($,Z){let Q=0;return{publish(Y,X,J,G){Y.publish(X,J,G?{headers:G}:void 0).catch((W)=>{if(Q++,gN5().add(1,{"org.id":Z??"unknown"}),Q===1||Q%100===0)console.warn(`[Decopilot] JetStream publish failed for thread ${$} (${Q} total):`,W)})},get errorCount(){return Q}}}function tN5($,Z){return $.info?.cluster?Z:1}function oN5($){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 KR1{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(Y,X)=>{let J=cN5(X);try{await Y.streams.info(nB),await Y.streams.update(nB,J)}catch(G){if(G instanceof Error&&G.message.includes("stream not found"))await Y.streams.add(J),await Y.streams.update(nB,J);else if(G instanceof Error&&/can ?not change.*storage|storage type/i.test(G.message))await Y.streams.delete(nB),await Y.streams.add(J);else throw G}},Q=await $8(async()=>{let Y=this.options.getJetStreamManager?await this.options.getJetStreamManager():await SU.jetstreamManager($),X=tN5($,Dz8);try{await Z(Y,X)}catch(J){if(X<=1||!oN5(J))throw J;console.warn(`[Decopilot] StreamBuffer: NATS rejected num_replicas=${X} (${J.message}); falling back to an unreplicated stream`),await Z(Y,1)}return Y},{maxAttempts:5,minTimeout:250,maxTimeout:4000,jitter:0.5,isRetriable:Ft});this.js=this.options.getJetStream(),this.jsm=Q,console.log(`[Decopilot] StreamBuffer.init ${this.js?"ready":"degraded (js=null)"}`)}pump($,Z,Q,Y){let X=this.js;if(!X)return console.warn(`[Decopilot] pump: JetStream client unavailable for thread ${Z}; chunks NOT published to NATS`),Promise.resolve();let J=nN5(Z,Y),G=!1,W=()=>{if(G)return;G=!0;let H=x88(Z);X.publish(H.subject,H.data).catch(()=>{})};Q.addEventListener("abort",W,{once:!0});let K=(H)=>{let F=performance.now(),U=jD1(H,{runId:Z}),N=performance.now()-F;GR1().record(N),WR1().add(1,{"org.id":Y??"unknown"}),pN5?.record(N,U.reduce((B,D)=>B+D.data.length,0));for(let B of U)J.publish(X,B.subject,B.data,B.headers?Nz8(B.headers):void 0)};return(async()=>{let H=$.getReader(),F=0,U=0,N;try{while(!0){let{done:B,value:D}=await H.read();if(B)break;if(K(D),U++,++F>=64)F=0,await new Promise((O)=>setImmediate(O))}}catch(B){N=B,console.warn(`[Decopilot] stream pump error for thread ${Z}:`,B?.message??B)}finally{if(H.releaseLock(),W(),iN5)console.warn(JSON.stringify({msg:"decopilot-stream-diag",event:"pump-done",taskId:Z,publishedChunks:U,publishErrors:J.errorCount}))}if(N!==void 0)throw N})()}async publishSerialized($,Z){try{return await $8(()=>$.publish(Z.subject,Z.data,{...Z.headers?{headers:Nz8(Z.headers)}:{},...Z.msgId?{msgID:Z.msgId}:{}}),{maxAttempts:6,minTimeout:250,maxTimeout:5000,jitter:0.5,isRetriable:Ft}),!0}catch(Q){return console.error(`[Decopilot] publish failed after retries subject=${Z.subject}`,Q),!1}}async publishRawChunk($,Z,Q){let Y=this.js;if(!Y)return!1;let X=performance.now(),J=jD1(Z,{runId:$,dedup:Q});GR1().record(performance.now()-X),WR1().add(1);for(let G of J)if(!await this.publishSerialized(Y,G))return!1;return!0}async publishDone($,Z,Q){let Y=this.js;if(!Y)return!1;let X=b88({runId:$,fenceToken:Z,finalSeq:Q});return await this.publishSerialized(Y,X)}async createTailStream($,Z,Q){let Y=this.js;if(!Y)return console.warn(`[Decopilot] createTailStream: JetStream client unavailable for thread ${$}; no live tail`),null;let X=Q?.deliverPolicy==="new"?SU.DeliverPolicy.New:SU.DeliverPolicy.All,J=Q?.closeOnDone??!1,G=uz($),W;try{W=await $8(async()=>{return(await Y.consumers.get(nB,{filter_subjects:G,deliver_policy:X})).consume()},{maxAttempts:6,minTimeout:250,maxTimeout:5000,jitter:0.5,isRetriable:Ft})}catch(O){return console.warn("[Decopilot] JetStream tail unavailable (non-critical):",O?.message??O),null}let F=Qb0({messages:async function*(){try{for await(let O of W)yield{subject:O.subject,data:O.data,headers:O.headers}}finally{W.stop()}}(),onCancel:()=>W.stop()}).pipeThrough(rv0()).pipeThrough(ev0()).getReader(),U=!1,N=()=>{if(U)return;U=!0;try{F.releaseLock()}catch{}},B=!1,D=()=>{if(B)return;B=!0,W.stop(),F.cancel().catch(()=>{}),N()};return Z?.addEventListener("abort",D,{once:!0}),new ReadableStream({async pull(O){for(;;){let{done:j,value:w}=await F.read();if(j){D(),O.close();return}let E=w;if(E.kind==="done"){if(J){D(),O.close();return}continue}O.enqueue(E.chunk);return}},cancel(){D()}})}purge($){if(!this.jsm)return;this.jsm.streams.purge(nB,{filter:uz($)}).catch(()=>{})}teardown(){this.js=null,this.jsm=null}}var SU,Bz8,yN5=($)=>{let Z;return()=>Z??=$()},gN5,hN5=86400000000000,uN5=120000000000,lN5=4294967296,Dz8,mN5=500000,dN5,iN5,pN5;var Oz8=L(()=>{g$();wD1();Yb0();$b0();y6();Uz8();SU=_(nH(),1),Bz8=_(UA(),1),gN5=yN5(()=>W$.createCounter("decopilot.stream.publish_errors",{description:"Number of JetStream publish failures for decopilot stream chunks",unit:"{errors}"})),Dz8=Math.max(1,Number(process.env.DECOPILOT_STREAM_REPLICAS??3)||3);dN5=process.env.STREAM_ENCODE_TRACE==="1",iN5=process.env.DECOPILOT_STREAM_TRACE==="1";pN5=dN5?new Lz8:null});function kh0($,Z,Q,Y){if(!Y)return!1;return $.emit(Z,QN(Q,Y.status,{title:Y.title??void 0,virtualMcpId:Y.virtual_mcp_id??void 0,createdBy:Y.created_by??void 0,triggerId:Y.trigger_id??null,branch:Y.branch??null,harnessId:Y.harness_id??void 0,createdAt:Y.created_at,updatedAt:Y.updated_at})),!0}var jz8=L(()=>{q8()});class HR1{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}}function sN5($,Z,Q={}){let Y=$.startsWith("thread:")?XU($,Q):$;return[...new Set([Z,Y].filter((X)=>!!X))]}async function FR1($,Z){let Q=Z.organizationId;try{let Y=await $.storage.taskBoard.linkedThreadIds(Z.id,Q);for(let X of Y){let J=await JU($,X);if(!J?.owner||!J?.name)continue;let G=await $.storage.threads.get(X),W=await vB($,{threadId:X,runBranch:G?.branch}),K=await w80($,Q,eN0(J)).catch(()=>null);if(!K){console.warn(`[task-board] no credential for ${J.owner}/${J.name} \u2014 `+`cannot look up ${Z.id}'s change request by branch`);continue}let H=sN5(W,await ZS0($,X),{flat:Dh(K.repo.provider)});for(let F of H){let U=await K.readForBranch(F).catch(()=>null);if(!U)continue;return await $.storage.taskBoard.linkPr({taskBoardItemId:Z.id,organizationId:Q,url:U.url,prNumber:U.number,repo:K.repo}),await $.storage.taskBoard.openReviewCycleIfInProgress(Z.id,Q),await iJ(Q).catch(()=>{}),console.log(`[task-board] ${Z.id}: linked ${U.url} found on branch ${F}`),!0}}}catch(Y){console.error("[task-board] PR lookup by branch failed",Y)}return!1}var wz8=L(()=>{W5();yQ();I7()});async function Ez8($,Z,Q){let Y=Z.organizationId;if(!dJ(Z))return!1;if(!ch(Q))return!1;if(!await Tc($,Y,ae))return!1;if(await $.storage.taskBoard.hasHumanRejectedDone(Z.id,Y))return!1;let X=Q1.shipped,J=await $.storage.taskBoard.update(Z.id,Y,{status:X},Z.updatedBy);return await J9($,{taskBoardItemId:Z.id,action:"status_changed",actorId:null,data:{from:Z.status,to:X,reason:"pr_merged"}}),r$(Y,J),console.log(`[task-board-review-sweeper] ${Z.id}: linked PR already merged \u2014 moved to ${X}`),!0}var Pz8=L(()=>{D3();I8();hX();cn();UU();F5()});function zz8($,Z){return Z-$>=ZB5}class UR1{taskBoard;contextFactory;options;timer=null;running=!1;cursor=null;constructor($,Z,Q={}){this.taskBoard=$;this.contextFactory=Z;this.options=Q}start(){if(this.timer)return;let $=this.options.intervalMs??aN5;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??eN5,Q=this.options.itemIntervalMs??rN5,Y=new Date(Date.now()-Q),X=await this.taskBoard.listItemsPendingReview(Z,this.cursor,Y),J=X.at(-1);this.cursor=X.length===Z&&J?{updatedAt:J.updatedAt,id:J.id}:null;for(let{id:G,organizationId:W}of X)try{if(await this.reconcileItem(G,W,Y))$++}catch(K){console.error(`[task-board-review-sweeper] ${G} failed`,K)}await this.reapAbandonedThreads(Z),$+=await this.dispatchDueRetries(Z),await this.reactToUnhandledFailures(Z),$+=await this.settleFinishedRunsWithoutPr(Z,Y)}catch(Z){console.error("[task-board-review-sweeper] sweep failed",Z)}finally{this.running=!1}return $}async reapAbandonedThreads($){try{let Z=await this.taskBoard.failAbandonedLinkedThreads($,new Date(Date.now()-OU1),{neverStarted:iN1,stalled:xB1});for(let Q of Z)console.warn(`[task-board-review-sweeper] failed abandoned thread ${Q.threadId} on ${Q.itemId}`)}catch(Z){console.error("[task-board-review-sweeper] reaping failed",Z)}}async reactToUnhandledFailures($){let Z=await this.taskBoard.listItemsStuckAfterFailure($,new Date(Date.now()-QB5));for(let{id:Q,organizationId:Y,threadId:X}of Z)try{console.warn(`[task-board-review-sweeper] reacting to an unhandled failure on ${Q}`),await dN1(this.taskBoard,X,Y)}catch(J){console.error(`[task-board-review-sweeper] unhandled-failure reaction for ${Q} failed`,J)}}async settleFinishedRunsWithoutPr($,Z){let Q=0,Y=await this.taskBoard.listItemsFinishedWithoutPr($,Z);for(let{id:X,organizationId:J,finishedAt:G}of Y)try{if(!await this.taskBoard.claimSweep(X,J,Z))continue;let W=await this.taskBoard.getById(X,J);if(!W||W.status!==Q1.progress||dJ(W)||W.assigneeId!==u$)continue;let K=await this.contextFactory(J,W.assignedBy??W.createdBy);if(!K)continue;if(await FR1(K,W)){if(await this.taskBoard.clearSweepBudget(X,J),await this.reconcileItem(X,J,Z))Q++;continue}if(!zz8(G.getTime(),Date.now()))continue;let H="the run finished without opening a pull request \u2014 there is "+"nothing for a reviewer to review",F=await this.taskBoard.advanceFromProgress(X,J,Q1.review,W.updatedBy);if(!F)continue;await this.taskBoard.recordActivity({taskBoardItemId:X,action:"status_changed",actorId:null,data:{from:Q1.progress,to:Q1.review,reason:H}}).catch(()=>{}),r$(J,F),await cB(K,F,H)}catch(W){console.error(`[task-board-review-sweeper] settling finished run on ${X} failed`,W)}return Q}async dispatchDueRetries($){let Z=0,Q=await this.taskBoard.listItemsDueForRetry($,new Date);for(let{id:Y,organizationId:X,attempts:J}of Q)try{if(!await this.taskBoard.claimDueRetry(Y,X,new Date))continue;let G=await this.taskBoard.getById(Y,X);if(!G||G.status!==Q1.progress||G.assigneeId!==u$)continue;let W=await this.contextFactory(X,G.assignedBy??G.createdBy);if(!W)continue;await iO(W,G,{runClass:"retry"}),Z++,console.warn(`[task-board-review-sweeper] re-dispatched ${Y} after a failure (attempt ${J})`)}catch(G){console.error(`[task-board-review-sweeper] retry dispatch for ${Y} failed`,G),await this.taskBoard.scheduleRunRetry(Y,X,J,new Date(Date.now()+$B5)).catch((W)=>console.error(`[task-board-review-sweeper] re-arming ${Y} failed`,W))}return Z}async handOffReviewWithoutPr($,Z){let Q=await this.taskBoard.listActivity(Z.id,Z.organizationId);if(!zz8(BL(Q,Z.reviewCycleStartedAt),Date.now()))return;await cB($,Z,"no pull request is linked to this task \u2014 there is nothing for a "+"reviewer to review")}async reconcileItem($,Z,Q){if(!await this.taskBoard.claimSweep($,Z,Q))return!1;let Y=await this.taskBoard.getById($,Z);if(!Y)return!1;if(!dJ(Y))return!1;let X=Y.assigneeId===u$,J=await this.taskBoard.listPrs($,Z),G=await this.contextFactory(Z,Y.assignedBy??Y.createdBy);if(!G)return!1;if(J.length===0){if(await FR1(G,Y))J=await this.taskBoard.listPrs($,Z);if(J.length===0){if(X)await this.handOffReviewWithoutPr(G,Y);return!1}}let W=await Promise.all(J.map(async(K)=>({...K,...await nn(Z,K)})));if(W.every((K)=>K.state===null))console.warn(`[task-board-review-sweeper] ${$}: no live PR state from GitHub (${W.length} PR(s)) \u2014 proceeding on unknown`);if(await Ez8(G,Y,W))return!0;if(!X)return!1;if(await b08(G,Y))return!0;if(!uN1(W))return!1;return await pn(G,Y,{previewMatchesHead:lN1(W)}),!0}dispose(){if(this.timer)clearInterval(this.timer),this.timer=null}}var aN5=60000,rN5=300000,eN5=50,$B5=60000,ZB5=900000,QB5=120000;var Az8=L(()=>{I8();a_0();wz8();dB();an();UU();Pz8();F5();pN1();fB1();I7();Q90()});async function Tz8($,Z,Q=mz){return await Rz8($,Z,Q,{})}async function qz8($,Z,Q,Y=mz){return await Rz8($,Q,Y,{activityId:Z})}async function Rz8($,Z,Q,Y){let X=await $.automations.findActiveBoardColumnTriggers();if(X.length===0)return 0;let J=new Map;for(let K of X){let H=K.automation.organization_id;J.set(H,[...J.get(H)??[],K])}let G=await $.taskBoard.listSettledTransitions({organizationIds:[...J.keys()],since:new Date(Z-YB5),settledBefore:new Date(Z-Q),limit:XB5,...Y}),W=0;for(let K of G)try{let H=(J.get(K.organizationId)??[]).filter((U)=>U.column_key===K.to&&Date.parse(U.created_at)<Date.parse(K.occurredAt));if(H.length===0)continue;let F=await JB5($.taskBoard,K,Q);for(let U of H){if(!F48(U,{from:F,to:K.to}))continue;if(!await $.automations.claimTriggerFire(U.id,K.activityId))continue;await $.fire({automationId:U.automation_id,organizationId:K.organizationId,triggerId:U.id,target:{kind:"card",itemId:K.itemId,columnKey:K.to,eventKey:K.activityId,movedBy:K.actorId}},{idempotencyKey:`board:${U.id}:${K.activityId}`}),W++}}catch(H){console.error(`[automations] board transition ${K.activityId} failed`,H)}return W}async function JB5($,Z,Q){let X=(await $.listActivity(Z.itemId,Z.organizationId)).flatMap((J)=>{let G=J.data;if(J.action!=="status_changed"||typeof G?.to!=="string")return[];let W=typeof G.from==="string"?G.from:null;return W===G.to?[]:[{from:W,to:G.to,occurredAt:J.occurredAt}]});return X.length>0?U48(X,Q):Z.from}var YB5=1800000,XB5=200;var Mz8=L(()=>{sO()});import{DBOS as i2,DBOSClient as GB5,SchedulerMode as WB5}from"@dbos-inc/dbos-sdk";function Vz8($){fj=$}async function FB5($){if(!fj)return 0;try{return await qz8(fj,$,Date.now(),fj.settleMs)}catch(Z){return console.error(`[automations] settling board move ${$} failed`,Z),0}}async function UB5(){if(!fj)return 0;try{return await Tz8(fj,Date.now(),fj.settleMs)}catch($){return console.error("[automations] board transition sweep failed",$),0}}async function NB5($){await i2.sleep((fj?.settleMs??mz)+HB5),await i2.runStep(()=>FB5($),{name:"settleBoardMove"})}async function BB5($,Z){let Q=await i2.runStep(()=>UB5(),{name:"sweepBoardMoves"});if(Q>0)console.log(`[automations] board transition sweep fired ${Q} trigger(s) the settle wait missed`)}async function kz8($){let Z=fj;if(!Z||!BR1)return;if(!await Z.automations.hasActiveBoardColumnTrigger($.taskBoardItemId,$.to))return;let Q=`board-settle:${$.activityId}`;if(!i2.isWithinWorkflow()){await i2.startWorkflow(BR1,{workflowID:Q,queueName:r2})($.activityId);return}let Y=await GB5.create({systemDatabaseUrl:Z.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:1});try{await Y.enqueue({workflowName:Iz8,queueName:r2,workflowID:Q},$.activityId)}finally{await Y.destroy()}}function Cz8(){if(NR1)return;BR1=i2.registerWorkflow(NB5,{name:Iz8}),NR1=i2.registerWorkflow(BB5,{name:"boardTransitionSweepWorkflow"}),i2.registerScheduled(NR1,{name:"boardTransitionSweepWorkflow",crontab:KB5,mode:WB5.ExactlyOncePerIntervalWhenActive})}var KB5="*/5 * * * *",HB5=2000,fj=null,Iz8="boardTransitionSettleWorkflow",BR1=null,NR1=null;var Sz8=L(()=>{sO();Mz8()});import{readdir as DB5,rm as Ch0}from"fs/promises";import{join as Sh0}from"path";async function _h0($){let Z=new Date;Z.setUTCDate(Z.getUTCDate()-LB5),Z.setUTCHours(0,0,0,0);let Q=0;try{let Y=await jl($);for(let X of Y)if(/^\d{4}$/.test(X))Q+=await _z8($,X,Z);else if(!X.startsWith(".")){let J=Sh0($,X),G=await jl(J);for(let K of G){if(!/^\d{4}$/.test(K))continue;Q+=await _z8(J,K,Z)}if((await jl(J)).length===0)await Ch0(J,{recursive:!0,force:!0})}}catch(Y){console.warn("monitoring retention cleanup failed:",Y)}return Q}async function _z8($,Z,Q){let Y=0,X=Sh0($,Z),J=await jl(X);for(let W of J){if(!/^\d{2}$/.test(W))continue;let K=Sh0(X,W),H=await jl(K);for(let U of H){if(!/^\d{2}$/.test(U))continue;let N=new Date(`${Z}-${W}-${U}T00:00:00Z`);if(isNaN(N.getTime()))continue;if(N<Q){let B=Sh0(K,U);await Ch0(B,{recursive:!0,force:!0}),Y++}}if((await jl(K)).length===0)await Ch0(K,{recursive:!0,force:!0})}if((await jl(X)).length===0)await Ch0(X,{recursive:!0,force:!0});return Y}async function jl($){try{return(await DB5($)).filter((Q)=>!Q.startsWith("."))}catch{return[]}}var LB5=30;var DR1=()=>{};import{DBOS as LR1,SchedulerMode as OB5}from"@dbos-inc/dbos-sdk";async function wB5(){let $=[hH(),Ml(),ID()],Z=0;for(let Q of $)try{Z+=await _h0(Q)}catch(Y){console.error("[monitoring-retention] cleanup failed:",Y)}return console.log(`[monitoring-retention] deleted ${Z} day-dir(s) across ${$.length} signal dir(s)`),{deleted:Z,dirs:$.length}}async function EB5($,Z){await LR1.runStep(()=>wB5(),{name:"monitoringRetention"})}function bz8(){if(vz8)return;vz8=!0;let $=LR1.registerWorkflow(EB5,{name:"monitoringRetentionWorkflow"});LR1.registerScheduled($,{name:"monitoringRetentionWorkflow",crontab:jB5,mode:OB5.ExactlyOncePerIntervalWhenActive})}var jB5="23 4 * * *",vz8=!1;var xz8=L(()=>{aW();DR1()});function fz8($){return async(Z,Q)=>{let Y=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","=",Q).where("member.organizationId","=",Z).executeTakeFirst();if(!Y)return console.warn(`[automationContextFactory] User ${Q} not found in org ${Z} \u2014 returning null`),null;let X=await hY.create();X.auth.user={id:Q,role:Y.role},X.organization={id:Y.orgId,slug:Y.orgSlug,name:Y.orgName};let J=await zP($.db,Z,Y.role);return X.boundAuth=oz1({auth:X.authInstance,headers:new Headers,role:Y.role,permissions:J,userId:Q}),X.access=new cT(Q,void 0,X.boundAuth,Y.role,"self"),yz(X,{id:Y.orgId,slug:Y.orgSlug}),X}}var yz8=L(()=>{jQ();yF()});function gz8(){return async($,Z)=>{let Q=Date.now(),Y=$.req.method,X=$.req.path;if(X==="/api/auth/get-session"||X.includes("favicon")){await Z();return}let J="",G=!1;if(X.startsWith("/mcp")&&Y==="POST"){G=!0;try{if($.req.header("Content-Type")?.includes("application/json")){let N=await $.req.raw.clone().json();if(N.method==="tools/call"&&N.params?.name){let B=FY0(N.params.name),D=N.params.arguments||{},O=Object.keys(D).map((w)=>FY0(w)),j=O.length>0?O.slice(0,3).join(",")+(O.length>3?"\u2026":""):"";J=`${E9.tool}${B}${E9.dim}(${j})${E9.reset}`}else if(N.method)J=`${E9.dim}${FY0(N.method)}${E9.reset}`}}catch{}}let W=FY0(X);if(X.startsWith("/mcp/conn_")){let F=X.split("/")[2]??"";W=`/mcp/${E9.mcp}${FY0(F.slice(0,12))}\u2026${E9.reset}`}else if(X==="/mcp")W=`${E9.mcp}/mcp${E9.reset}`;else if(X==="/mcp/registry")W=`${E9.mcp}/mcp/registry${E9.reset}`;let K=zB5(Y),H=G?"\u25C0":"\u2190";console.log(`${E9.dim}${H}${E9.reset} ${K}${Y}${E9.reset} ${W}${J?` ${J}`:""}`);try{await Z()}finally{let F=Date.now()-Q,U=$.res.status,N=PB5(U),B=F<1000?`${F}ms`:`${(F/1000).toFixed(1)}s`,D=G?"\u25B6":"\u2192";console.log(`${E9.dim}${D}${E9.reset} ${K}${Y}${E9.reset} ${W}${J?` ${J}`:""} ${N}${U}${E9.reset} ${E9.duration}${B}${E9.reset}`)}}}var E9,PB5=($)=>{if($>=500)return E9.serverError;if($>=400)return E9.clientError;if($>=300)return E9.redirect;return E9.ok},zB5=($)=>{return E9[$]||E9.reset},FY0=($)=>{return $.replace(/\r/g,"").replace(/\n/g,"").replace(/\x1b\[[0-9;]*m/g,"").replace(/[\x00-\x1f\x7f-\x9f]/g,"")};var hz8=L(()=>{E9={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 cz8}from"crypto";import{mkdir as AB5,readdir as TB5,rm as uz8,stat as dz8}from"fs/promises";import{join as jR1,relative as qB5}from"path";import{z as W8}from"zod";function pz8($){let Z=$.replace(/[^a-zA-Z0-9_-]/g,"_");return jR1(RB5,Z)}function nz8($){return $.replace(/^\/+/,"").replace(/\.\./g,"")}function OR1($,Z){let Q=pz8($),Y=nz8(Z);return jR1(Q,Y)}function MB5($,Z,Q,Y){let X=B0().encryptionKey||"dev-secret",J=`${$}:${Z}:${Q}:${Y}`;return cz8("sha256",X).update(J).digest("hex")}function mz8($,Z,Q,Y,X){let J=Math.floor(Date.now()/1000)+Y,G=MB5(Z,Q,J,X),W=new URL(`/api/dev-assets/${Z}/${nz8(Q)}`,$);return W.searchParams.set("expires",J.toString()),W.searchParams.set("signature",G),W.searchParams.set("method",X),W.toString()}function tz8($,Z,Q){let Y=`${$}:${Z.getTime()}:${Q}`;return`"${cz8("md5","etag").update(Y).digest("hex")}"`}async function oz8($,Z,Q,Y,X){try{let J=await TB5($,{withFileTypes:!0});for(let G of J){let W=jR1($,G.name),H=qB5(Z,W).replace(/\\/g,"/");if(Q&&!H.startsWith(Q))continue;if(G.isDirectory())if(Y){let F=H+"/";if(!Q||F.startsWith(Q)){if(!(Q?H.slice(Q.length):H).includes("/"))X.commonPrefixes.add(F)}}else await oz8(W,Z,Q,Y,X);else if(G.isFile()){if(Y&&Q){let F=H.slice(Q.length);if(F.includes(Y)){let U=F.indexOf(Y),N=Q+F.slice(0,U+1);X.commonPrefixes.add(N);continue}}try{let F=await dz8(W);X.objects.push({key:H,size:F.size,lastModified:F.mtime.toISOString(),etag:tz8(W,F.mtime,F.size)})}catch{}}}}catch{}}function sz8($,Z){let Y=Z0($).id;return[{name:"LIST_OBJECTS",description:"List objects in the local assets directory with pagination support",inputSchema:W8.object({prefix:W8.string().optional(),maxKeys:W8.number().optional().default(1000),continuationToken:W8.string().optional(),delimiter:W8.string().optional()}),outputSchema:W8.object({objects:W8.array(W8.object({key:W8.string(),size:W8.number(),lastModified:W8.string(),etag:W8.string()})),nextContinuationToken:W8.string().optional(),isTruncated:W8.boolean(),commonPrefixes:W8.array(W8.string()).optional()}),handler:async(X)=>{let J=X,G=J.prefix||"",W=J.maxKeys??1000,K=J.delimiter,H=J.continuationToken,F=pz8(Y);await AB5(F,{recursive:!0});let U={objects:[],commonPrefixes:new Set};await oz8(F,F,G,K,U),U.objects.sort((j,w)=>j.key.localeCompare(w.key));let N=0;if(H){if(N=U.objects.findIndex((j)=>j.key>H),N===-1)N=U.objects.length}let B=U.objects.slice(N,N+W),D=N+W<U.objects.length,O=D?B[B.length-1]?.key:void 0;return{objects:B,isTruncated:D,nextContinuationToken:O,commonPrefixes:Array.from(U.commonPrefixes).sort()}}},{name:"GET_OBJECT_METADATA",description:"Get metadata for a file in the local assets directory",inputSchema:W8.object({key:W8.string()}),outputSchema:W8.object({contentType:W8.string().optional(),contentLength:W8.number(),lastModified:W8.string(),etag:W8.string(),metadata:W8.record(W8.string(),W8.string()).optional()}),handler:async(X)=>{let J=X,G=OR1(Y,J.key),W=await dz8(G);return{contentType:HA1(J.key),contentLength:W.size,lastModified:W.mtime.toISOString(),etag:tz8(G,W.mtime,W.size)}}},{name:"GET_PRESIGNED_URL",description:"Generate a presigned URL for downloading a file from local storage",inputSchema:W8.object({key:W8.string(),expiresIn:W8.number().optional()}),outputSchema:W8.object({url:W8.string(),expiresIn:W8.number()}),handler:async(X)=>{let J=X,G=Jj(J.expiresIn,lz8);return{url:mz8(Z,Y,J.key,G,"GET"),expiresIn:G}}},{name:"PUT_PRESIGNED_URL",description:"Generate a presigned URL for uploading a file to local storage",inputSchema:W8.object({key:W8.string(),expiresIn:W8.number().optional(),contentType:W8.string().optional()}),outputSchema:W8.object({url:W8.string(),expiresIn:W8.number()}),handler:async(X)=>{let J=X,G=Jj(J.expiresIn,lz8);return{url:mz8(Z,Y,J.key,G,"PUT"),expiresIn:G}}},{name:"DELETE_OBJECT",description:"Delete a single file from local storage",inputSchema:W8.object({key:W8.string()}),outputSchema:W8.object({success:W8.boolean(),key:W8.string()}),handler:async(X)=>{let J=X,G=OR1(Y,J.key);try{return await uz8(G),{success:!0,key:J.key}}catch{return{success:!1,key:J.key}}}},{name:"DELETE_OBJECTS",description:"Delete multiple files from local storage",inputSchema:W8.object({keys:W8.array(W8.string()).max(1000)}),outputSchema:W8.object({deleted:W8.array(W8.string()),errors:W8.array(W8.object({key:W8.string(),message:W8.string()}))}),handler:async(X)=>{let J=X,G=[],W=[];return await Promise.all(J.keys.map(async(K)=>{let H=OR1(Y,K);try{await uz8(H),G.push(K)}catch(F){W.push({key:K,message:F instanceof Error?F.message:"Unknown error"})}})),{deleted:G,errors:W}}}]}async function wR1($,Z,Q){let Y=sz8(Z,Q),X=new FE({name:"dev-assets-mcp",version:"1.0.0"},{capabilities:{tools:{}},jsonSchemaValidator:SZ});for(let G of Y){let W="shape"in G.inputSchema?G.inputSchema.shape:W8.object({}).shape,K=G.outputSchema&&"shape"in G.outputSchema?G.outputSchema.shape:W8.object({}).shape;X.registerTool(G.name,{description:G.description??"",inputSchema:W,outputSchema:K,annotations:G.annotations,_meta:G._meta},async(H)=>{try{let F=await G.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 J=new SW({enableJsonResponse:$.headers.get("Accept")?.includes("application/json")??!1});return await X.connect(J),TH(X,J,$,"mcp:dev-assets")}async function az8($,Z,Q,Y){let J=sz8(Q,Y).find((G)=>G.name===$);if(!J)return{content:[{type:"text",text:`Tool not found: ${$}`}],isError:!0};try{let G=await J.handler(Z);return{content:[{type:"text",text:JSON.stringify(G)}]}}catch(G){return{content:[{type:"text",text:G instanceof Error?G.message:String(G)}],isError:!0}}}var RB5="./data/assets",lz8=3600,iz8,rz8;var ez8=L(()=>{l1();kt();H8();vH0();It();zJ();Gj();Wg0();iz8=new $1;iz8.all("/",async($)=>{let Z=$.get("studioContext"),Q=new URL($.req.url),Y=`${Q.protocol}//${Q.host}`;return wR1($.req.raw,Z,Y)});rz8=iz8});var $28={};P6($28,{mountDevRoutes:()=>VB5});function VB5($,Z){$.all("/mcp/:connectionId{.*_dev-assets$}",Z,async(Y)=>{let X=Y.get("studioContext"),J=new URL(Y.req.url),G=`${J.protocol}//${J.host}`;return wR1(Y.req.raw,X,G)}),$.all("/mcp/:connectionId{.*_dev-assets$}/call-tool/:toolName",Z,async(Y)=>{let X=Y.get("studioContext"),J=new URL(Y.req.url),G=`${J.protocol}//${J.host}`,W=Y.req.param("toolName");if(!W)return Y.json({error:"Missing tool name"},400);let K=await Y.req.json(),H=await az8(W,K,X,G);if(H.isError)return Y.json(H.content,500);return Y.json(H.content)}),$.use("/mcp/dev-assets",Z),$.route("/mcp/dev-assets",rz8);let Q=new $1;Q.use("*",VU({mountPath:"/api/dev-assets"})),Q.route("/",Gg0({orgFromPath:!1})),$.route("/api/dev-assets",Q)}var Z28=L(()=>{H8();ZA1();Wg0();ez8()});var U28={};P6(U28,{watchHandler:()=>F28,resolveVoiceSigningSecret:()=>W28,resolveCorsOrigin:()=>K28,isSsoExemptPath:()=>G28,isAllowedOAuthRedirectUri:()=>H28,createApp:()=>gB5});import{readFileSync as IB5}from"fs";import{randomBytes as kB5}from"crypto";import{PrometheusSerializer as CB5}from"@opentelemetry/exporter-prometheus";import{DBOS as PD}from"@dbos-inc/dbos-sdk";import{oAuthDiscoveryMetadata as vB5,oAuthProtectedResourceMetadata as bB5}from"better-auth/plugins";async function SB5($){let Z=$.connect(),Q;try{Q=await Promise.race([Z,Y28(Q28)])}catch{return Z.then((Y)=>Y.release(!0)).catch(()=>{}),!1}try{return await Promise.race([Q.query("SELECT 1"),Y28(Q28)]),Q.release(),!0}catch{return Q.release(!0),!1}}function Y28($){return new Promise((Z,Q)=>setTimeout(()=>Q(Error("pg health-check timeout")),$))}function G28($){return $.startsWith("/api/org-sso/")||/^\/api\/[^/]+\/sso\//.test($)||$.startsWith("/api/auth/")||$.startsWith("/api/tools/management")||$.startsWith("/oauth-proxy/")||/^\/api\/[^/]+\/oauth-proxy\//.test($)||$.startsWith(`${hy0}/`)||$.startsWith(`${vy0}/`)}function W28($){let Z=$.studioJwtSecret||$.betterAuthSecret;if(Z)return Z;return console.warn("STUDIO_JWT_SECRET/BETTER_AUTH_SECRET not set - generating a random secret for voice sessions (not persistent across restarts)"),kB5(32).toString("base64")}function K28($,{baseUrl:Z,requestOrigin:Q}){let Y;try{Y=new URL($).hostname}catch{return null}if(Y==="localhost"||Y==="127.0.0.1")return $;let X=Z??Q;try{if(new URL(X).origin===$)return $}catch{}return null}function H28($,Z){return $.origin===new URL(Z).origin||$.hostname==="localhost"}async function gB5($={}){let Z=$.database??E8(),Q=!1;_6.stop().catch((h)=>{console.error("[SSEHub] Error stopping previous broadcast (HMR cleanup):",h)});let Y,X,J,G,W=new YR1,K,H,F,U=null;if($.disableNats)K=XR1(),Y={get:async()=>null,set:async()=>{},invalidate:async()=>{},teardown:()=>{}},X=null,J=null,G=new KZ0,H={start:async()=>{},broadcast:()=>{},stop:async()=>{}},F={init:async()=>{},pump:(h)=>{return(async()=>{let U0=h.getReader();try{while(!0){let{done:N0}=await U0.read();if(N0)break}}catch{}finally{U0.releaseLock()}})()},publishRawChunk:async()=>!1,publishDone:async()=>!1,createTailStream:async()=>null,purge:()=>{},teardown:()=>{}};else{U=Jz8();let h=B0().natsCredsPath,U0;if(h)try{U0=IB5(h,"utf8")}catch(k$){console.error(`[app] failed to read NATS_CREDS at ${h}; connecting anonymously`,k$)}U.init(B0().natsUrls,{creds:U0,user:B0().natsUser,password:B0().natsPassword});let N0=A91()?new K91({getJetStream:()=>U.getJetStream(),selfListVersion:Ah0.version}):null;N0?.init().catch(()=>{}),Y=N0;let q0=new TZ1({getJetStream:()=>U.getJetStream()});q0.init().catch(()=>{}),X=q0;let y0=new dh(bN1,{getJetStream:()=>U.getJetStream()}),T1=new dh(Y90,{getJetStream:()=>U.getJetStream()});y0.init().catch(()=>{}),T1.init().catch(()=>{}),J={reads:y0,cards:T1};let Q8=new mO1({getJetStream:()=>U.getJetStream()});Q8.init().catch(()=>{}),G=Q8,K=XR1({getConnection:()=>U.getConnection()}),H=new JR1({getConnection:()=>U.getConnection()}),F=new KR1({getConnection:()=>U.getConnection(),getJetStream:()=>U.getJetStream()}),UU8(U),U.onReady(()=>{N0?.init().catch((k$)=>{console.error("[McpListCache] Deferred init failed:",k$)}),q0.init().catch((k$)=>{console.error("[SkillCatalogCache] Deferred init failed:",k$)}),y0.init().catch((k$)=>{console.error("[PrReadCache] Deferred init failed:",k$)}),T1.init().catch((k$)=>{console.error("[PrCardCache] Deferred init failed:",k$)}),Q8.init().catch((k$)=>{console.error("[ConnectionCircuitStore] Deferred init failed:",k$)}),K.start(),nj$(()=>U.getConnection()),F.init().catch((k$)=>{console.warn("[Decopilot] StreamBuffer init failed (late-join disabled):",k$)})})}if(p2)await p2();H91(Y),RZ1(X),X71(()=>U?.getConnection()??null),xN1(J),cO1(G);let B={storage:new un(Z.db),sseHub:_6,onThreadFinished:async(h,U0)=>on(new UH(Z.db),h,U0)},D=new hB1(B),O=new r70(Z.db),j=new HR1(O);j.start(),w48(H),H.start((h)=>{mv0(h),D.execute({type:"CANCEL",taskId:h}).catch((U0)=>{console.error("[Decopilot] CancelBroadcast execute failed:",U0)})}).catch((h)=>{console.error("[Decopilot] CancelBroadcast start failed:",h)}),U?.onReady(()=>{H.start().catch((h)=>{console.error("[CancelBroadcast] Deferred start failed:",h)})});let w=()=>U?.getConnection()??null;o21(w),U?.onReady(()=>o21(w)),qj1(w),U?.onReady(()=>qj1(w)),F.init().catch((h)=>{console.warn("[Decopilot] StreamBuffer init failed, attach/late-join disabled:",h)}),p2=async()=>{await D.stopAll(),D.dispose(),j.dispose(),H.stop().catch(()=>{}),SN8(),F.teardown(),Y?.teardown(),X?.teardown(),J?.reads.teardown(),J?.cards.teardown(),W.teardown(),K.teardown(),tj$(),G.teardown(),H91(null),RZ1(null),X71(null),xN1(null),cO1(null)};let E=new $1;if(E.use("*",hO1({enabled:(h)=>$s(h,"debug")==="1"})),E.use("*",$u0),E.use("/*",GU8({origin:(h,U0)=>K28(h,{baseUrl:B0().baseUrl,requestOrigin:new URL(U0.req.url).origin}),credentials:!0,allowMethods:["GET","POST","PUT","DELETE","OPTIONS"],allowHeaders:["Content-Type","Authorization","mcp-protocol-version"],exposeHeaders:["WWW-Authenticate"]})),E.use("*",async(h,U0)=>{if(await U0(),h.req.path.includes("/files/"))return;if(h.req.path.includes("/fs/")&&h.req.path.endsWith("/read"))return;h.header("X-Frame-Options","DENY"),h.header("Content-Security-Policy","frame-ancestors 'none'")}),B0().nodeEnv==="development")E.use("*",gz8());E.use("*",async(h,U0)=>{if(await U0(),Ga(h.req.path))return;if(h.res.status>=500){let q0=await h.res.clone().text();console.error(`[5xx Response] ${h.req.method} ${h.req.path} - ${h.res.status}:`,q0)}}),E.get($J.HEALTH,(h)=>{if(Q)return h.json({status:"shutting_down"},503);return h.json({status:"ok"})}),E.get($J.HEALTH_LIVE,(h)=>{return h.json({status:"ok"})}),E.get($J.HEALTH_READY,async(h)=>{if(Q)return h.json({status:"shutting_down"},503);let U0={};if(U0.postgres={status:await SB5(Z.pool)?"up":"down"},U)U0.nats=U.isConnected()?{status:"up"}:{status:"down"};else U0.nats={status:"down"};let N0=U0.postgres.status==="up",q0=N0?200:503;return h.json({status:N0?"ready":"not_ready",services:U0},q0)}),E.get($J.METRICS,async(h)=>{try{let U0=await Xu0.collect(),N0=_B5.serialize(U0.resourceMetrics);return h.text(N0,200,{"Content-Type":"text/plain; version=0.0.4; charset=utf-8"})}catch(U0){return console.error("Failed to collect metrics:",U0),h.text("# Error collecting metrics",500)}});let P=1800000;E.get(`${$J.DBOS_QUEUE_DEPTH_PREFIX}:queueName`,async(h)=>{let U0=h.req.param("queueName");if(!xB5.has(U0))return h.json({error:`Unknown queue: ${U0}`},404);let[N0,q0]=await Promise.all([PD.listQueuedWorkflows({queueName:U0,status:"ENQUEUED",loadInput:!1,loadOutput:!1}),PD.listQueuedWorkflows({queueName:U0,status:"PENDING",loadInput:!1,loadOutput:!1,dequeuedAfter:new Date(Date.now()-P).toISOString()})]);return h.json({queue_length:N0.length,in_flight:q0.length})}),E.route("/api/config",LP8),E.route("/api/_reports",RP8),E.route("/api/_stripe",dq1),E.route("/api/_github",IP8({taskBoard:()=>m,contextFactory:()=>b})),E.route("/api/_git",Ls);let T={db:Z.db,encryptionKey:B0().encryptionKey};E.route("/api/_jira",hP8(T)),E.route("/api/_jira",_P8(T)),E.route("/report",AP8($.clientDir)),E.route("/api/auth/custom",SU8),E.all("/api/auth/admin/*",wN8),E.all("/api/auth/*",async(h)=>{return await U4.handler(h.req.raw)});let z=_G8();z.use("/.well-known/oauth-protected-resource/mcp/:connectionId",HQ0),z.use("/mcp/:connectionId/.well-known/oauth-protected-resource",HQ0),E.route("/",z),E.get("/.well-known/oauth-protected-resource/api/:org/mcp/:connectionId",hZ0),E.route("/",yG8()),E.use("/oauth-proxy/:connectionId/*",HQ0),E.all("/oauth-proxy/:connectionId/*",X28);let A=async(h)=>{let N0=await fB5()(h.req.raw),q0=await N0.json();return Response.json(q0,N0)};E.use("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",HQ0),E.get("/mcp/:gateway?/:connectionId/.well-known/oauth-protected-resource/*",A);let M=async(h)=>{let N0=await yB5()(h.req.raw),q0=await N0.json();return Response.json(q0,N0)};E.get("/.well-known/oauth-authorization-server/*/:gateway?/:connectionId?",M);let f=KU8({ttlMs:120000}),S=await jF8({db:Z.db,auth:U4,encryption:{key:B0().encryptionKey},observability:{tracer:dj,meter:W$},modelListCache:W,providerKeyCache:K,memberRoleCache:f});hY.set(S),j8$({db:Z.db,baseUrl:z5()}),wF8({db:Z.db}),AF8({db:Z.db}),MF8({db:Z.db}),gF8({db:Z.db}),pF8({db:Z.db}),fP8({db:Z.db,encryptionKey:B0().encryptionKey}),qe$({db:Z.db}),rF8({db:Z.db}),W08({db:Z.db});let V=Sz(Z.db),v=new o70(Z.db),b=fz8({db:Z.db});tD1({storage:V,studioContextFactory:b,orgContextFactory:(h)=>gY(Z.db,h),systemDatabaseUrl:_e(B0().databaseUrl,B0().databasePgSsl)}),CD1({systemDatabaseUrl:_e(B0().databaseUrl,B0().databasePgSsl),studioContextFactory:b,deps:{runRegistry:D,cancelBroadcast:H,streamBuffer:F,sseHub:_6}}),qD1({dispatchRunFn:V88,studioContextFactory:b,deps:{runRegistry:D,cancelBroadcast:H,streamBuffer:F,sseHub:_6}});let u=new un(Z.db),m=new UH(Z.db),i=new UR1(m,b);if(B0().taskBoardReviewSweeperEnabled){i.start();let h=p2;p2=async()=>{await h?.(),i.dispose()}}Vz8({automations:V,taskBoard:m,fire:BH,systemDatabaseUrl:_e(B0().databaseUrl,B0().databasePgSsl),settleMs:B0().boardTransitionSettleSeconds*1000}),he$(kz8),t88({getJetStream:()=>U?.getJetStream()??null,getJetStreamManager:async()=>{let h=U?.getConnection();return h?await J28.jetstreamManager(h):null},messageParts:u.messageParts(),resolveRun:async(h)=>{let U0=await Z.db.selectFrom("threads").select(["organization_id","created_by","message_storage_version","status","run_fence_token","title"]).where("id","=",h).executeTakeFirst();return U0?{orgId:U0.organization_id,createdBy:U0.created_by,version:U0.message_storage_version??1,status:U0.status,runFenceToken:U0.run_fence_token,title:U0.title??null}:null},completeRunIfNotCompleted:async(h,U0)=>{let N0=await u.completeRunIfNotCompleted(h,U0);if(kh0(_6,U0,h,N0),N0)await on(m,h,U0);return N0},markRunRequiresAction:async(h,U0)=>{let N0=await u.requiresActionIfInProgress(h,U0);return kh0(_6,U0,h,N0),N0},markRunFailed:async(h,U0,N0,q0)=>{let y0=await u.markRunFailed(h,U0,N0,q0);if(kh0(_6,U0,h,y0),y0)await on(m,h,U0);return y0},clearSynthesizedError:async(h,U0)=>{await u.messageParts().replaceMessageParts(h,hz(h,U0),[])},persistTitle:(h,U0,N0)=>u.update(h,U0,{title:N0}),onTitleUpdated:async({runId:h,orgId:U0,title:N0})=>{let q0=await u.get(h,U0).catch(()=>null);_6.emit(U0,QN(h,q0?.status??"in_progress",{title:N0,virtualMcpId:q0?.virtual_mcp_id??void 0,createdBy:q0?.created_by,triggerId:q0?.trigger_id,branch:q0?.branch??null,harnessId:q0?.harness_id??void 0,createdAt:q0?.created_at,updatedAt:q0?.updated_at}))},bumpProgress:async({runId:h,orgId:U0})=>{await u.bumpProgress(h,U0)},recordCompleted:async({runId:h,orgId:U0,distinctId:N0,usage:q0})=>{m1.capture({distinctId:N0,event:"chat_message_completed",groups:{organization:U0},properties:{organization_id:U0,thread_id:h,transport:"projector",input_tokens:q0.inputTokens,output_tokens:q0.outputTokens,total_tokens:q0.totalTokens}})},recordFailed:async({runId:h,orgId:U0,distinctId:N0,reason:q0,kind:y0})=>{m1.capture({distinctId:N0,event:"chat_message_failed",groups:{organization:U0},properties:{organization_id:U0,thread_id:h,transport:"projector",error_category:y0,error_message:q0}})},purgeRun:async(h)=>{F.purge(h)}}),s$8({studioContextFactory:b,systemDatabaseUrl:_e(B0().databaseUrl,B0().databasePgSsl),streamBuffer:F}),bz8(),w8$(),PF8(),qF8(),IF8(),uF8(),tF8(),gP8(),Cz8(),ke$(),$U8(),K08(),CP8();let G0=async(h,U0,N0)=>{let q0=await V.findById(h,U0);if(!q0)throw Error("Automation not found");return eD1({automationId:q0.id,organizationId:q0.organization_id,triggerId:null})},I0=new Ws(V,({automation:h,trigger:U0,contextMessages:N0,idempotencyKey:q0})=>BH({automationId:h.id,organizationId:h.organization_id,triggerId:U0.id,contextMessages:N0},{idempotencyKey:q0})),X0=[hH(),Ml(),ID()];for(let h of X0)_h0(h).then(()=>{}).catch((U0)=>console.error("[monitoring] Retention cleanup failed:",U0));let H0=()=>U4.api.deleteAllExpiredApiKeys().catch((h)=>console.error("[auth] Expired API key cleanup failed:",h));H0(),setInterval(H0,86400000).unref(),E.use("*",async(h,U0)=>{if(rh0(h.req.path))return U0();let N0={measure:async(y0,T1)=>{AH(h,y0);try{return await T1()}finally{_W(h,y0)}}},q0=await hY.create(h.req.raw,{timings:N0});q0.automationRunner=G0,h.set("studioContext",q0);try{await U0()}finally{let y0=q0.pendingRevalidations;if(y0.length>0)Promise.race([Promise.allSettled(y0),G$(30000)]).catch((Q8)=>console.error("[studio] revalidation cleanup error:",Q8))}}),E.use("/api/:org/decopilot/*",Qs),E.use("/api/:org/v1/*",Qs),E.use("/api/:org/files/*",Qs),E.use("*",async(h,U0)=>{if(G28(h.req.path))return U0();let N0=h.get("studioContext");if(!N0?.organization?.id||!N0?.auth?.user?.id)return U0();if(!(await N0.storage.orgSsoConfig.getByOrgId(N0.organization.id))?.enforced)return U0();if(!await N0.storage.orgSsoSessions.isValid(N0.auth.user.id,N0.organization.id))return h.json({error:"SSO authentication required for this organization"},403);return U0()});let s=new $1;s.use("*",VU({mountPath:"/api/org-sso"})),s.route("/",my0()),E.route("/api/org-sso",s),E.get("/api/tools/management",(h)=>{return h.json({tools:we,grouped:GT()})}),E.use("/mcp/*",async(h,U0)=>{AH(h,"mcp");try{return await U0()}finally{_W(h,"mcp")}});let o=async(h,U0)=>{let N0=h.var.studioContext;if(!N0.auth.user?.id&&!N0.auth.apiKey?.id){let q0=new URL(h.req.url),y0=h.req.header("x-forwarded-proto")?.split(",")[0]?.trim(),T1=y0?`${y0}://${q0.host}`:q0.origin;return h.res=new Response(null,{status:401,headers:{"WWW-Authenticate":`Bearer realm="mcp",resource_metadata="${T1}${q0.pathname}/.well-known/oauth-protected-resource"`}})}return await U0()};if(E.use("/mcp/:connectionId?",o),E.use("/mcp/gateway/:virtualMcpId?",o),E.use("/mcp/virtual-mcp/:virtualMcpId?",o),E.use("/mcp/self",o),cK()){let{mountDevRoutes:h}=(Z28(),uh0($28));h(E,o)}let r=new $1;r.use("*",VU({mountPath:"/mcp"})),r.route("/",Gx0()),E.route("/mcp",r);let Q0=new $1;Q0.use("*",VU({mountPath:"/mcp/self"})),Q0.route("/",gg0()),E.route("/mcp/self",Q0);let J0=new $1;J0.use("*",VU({mountPath:"/mcp"})),J0.route("/",Hx0()),E.route("/mcp",J0),E.use("/api/:org/models/*",async(h,U0)=>{AH(h,"llm_models");try{return await U0()}finally{_W(h,"llm_models")}});let u0=yN8({cancelBroadcast:H,streamBuffer:F,runRegistry:D});E.route("/api",u0),E.route("/api",cP8);let C0=new $1;C0.use("*",VU({mountPath:"/api"})),C0.route("/",mg0()),E.route("/api",C0),E.route("/api",FP8);let Y1=new $1;Y1.use("*",VU({mountPath:"/api"})),Y1.route("/",cg0({tokenStorage:v,automationEventDispatcher:I0})),E.route("/api",Y1);let i0=new s70(Z.db),j0=new $1;j0.use("*",VU({mountPath:"/api"})),j0.route("/",ty0()),E.route("/api",j0),E.route("/api/deco-sites",rN8());let E0=new $1;E0.use("*",VU({mountPath:"/api/deco-sites"})),E0.route("/",sy0()),E.route("/api/deco-sites",E0),E.route(hy0,EN8()),E.route(iO8,tO8()),E.route("/api/_editor-resolve",NP8()),E.route(yU8,gU8()),E.route(vy0,eU8());let m0=B0(),B1=m0.elevenlabsApiKey?new Eh0({apiKey:m0.elevenlabsApiKey,model:m0.elevenlabsVoiceModel,conversationModel:m0.elevenlabsConversationModel,voiceId:m0.elevenlabsVoiceId}):null,H1={openai:m0.openaiLiveApiKey?new fq1({apiKey:m0.openaiLiveApiKey,voice:m0.openaiLiveVoice}):null,elevenlabs:B1?new xq1(B1,()=>U?.getConnection()??null):null},_0=new lq1({adapter:B1,conversationAdapters:H1,defaults:m0,secret:W28(m0),getConnection:()=>U?.getConnection()??null}),c0=gE8({voiceSessions:_0,kvStorage:i0,runRegistry:D,streamBuffer:F,sseHub:_6,cancelBroadcast:H,tokenStorage:v,automationEventDispatcher:I0,mountDevAssets:cK(),mcpAuth:o,oauthProxyHandler:X28,watchHandler:F28,betterAuthProtectedResourceHandler:A,getNatsConnection:()=>U?.getConnection()??null});return E.route("/api/:org",c0),E.notFound((h)=>{return h.json({error:"Not Found",path:h.req.path},404)}),E.onError(hN8),Object.assign(E,{markShuttingDown:()=>{Q=!0},shutdown:async()=>{if(console.log("[shutdown] Stopping workers..."),await Promise.allSettled([_6.stop(),p2?Promise.resolve(p2()).finally(()=>{p2=null}):Promise.resolve()]),U)await U.drain().catch((h)=>console.error("[shutdown] NATS drain error:",h));console.log("[shutdown] Flushing telemetry..."),await $3().catch((h)=>console.error("[shutdown] Telemetry flush error:",h)),console.log("[shutdown] Closing database..."),await p5$(Z).catch((h)=>console.error("[shutdown] Database close error:",h)),console.log("[shutdown] Cleanup complete.")},initDbos:async()=>{await PD.registerQueue(wG,{partitionQueue:!0,concurrency:iD1,minPollingIntervalMs:pD1}),await PD.registerQueue(sW,{partitionQueue:!0,concurrency:ID1,priorityEnabled:!0}),await PD.registerQueue(RD,{workerConcurrency:B0().decopilotMaxConcurrentHostedRuns,priorityEnabled:!0}),await PD.registerQueue(MD,{workerConcurrency:B0().sandboxMaxConcurrentHostedRuns,priorityEnabled:!0}),await PD.registerQueue(cj,{partitionQueue:!0,concurrency:o$8}),await PD.registerQueue(a2,G08),await PD.registerQueue(r2),await QA1(V),await Promise.allSettled(["automations-gate","automations-global","jira-push"].map((h)=>PD.deleteQueue(h))),await nD1(Z.pool),CK$().catch((h)=>{console.error("[studio-pack-backfill] failed:",h)}),Ac(Z.db).catch((h)=>{console.error("[automations] built-in seed failed:",h)}),E8$().catch((h)=>{console.error("[org-fs] public-sets boot sync kick failed:",h)})}})}var J28,Q28=5000,p2=null,X28=async($)=>{let Z=$.req.param("connectionId");if(!Z)return $.json({error:"Missing connectionId"},400);let Q=$.req.path.split("/").filter(Boolean),Y=Q[Q.length-1],X=$.get("studioContext");if(!X)X=await hY.create($.req.raw),$.set("studioContext",X);let J=$.req.param("org")?X.organization?.id:void 0,G=await X.storage.connections.findById(Z,J);if(!G?.connection_url)return $.json({error:"Connection not found"},404);if(Y==="register"&&G.oauth_config?.clientId){let v=await $.req.json().catch(()=>({}));return $.json({...typeof v==="object"&&v!==null?v:{},client_id:G.oauth_config.clientId,...G.oauth_config.clientSecret?{client_secret:G.oauth_config.clientSecret}:{},client_secret_expires_at:0})}let W=await Go(G.connection_url),K,H=new URL(G.connection_url),U=(typeof G.metadata?.oauthResource==="string"&&G.metadata.oauthResource.length>0?G.metadata.oauthResource:void 0)??G.connection_url;if(W.ok)K=ZP1(await W.json());if(!K)K=H.origin;let N=await uZ0(K);if(!N.ok)return $.json({error:"Failed to get auth server metadata"},502);let B=await N.json(),D;if(Y==="authorize")D=B.authorization_endpoint;else if(Y==="token")D=B.token_endpoint;else if(Y==="register")D=B.registration_endpoint;if(!D)return $.json({error:`Unknown OAuth endpoint: ${Y}`},404);let O=fG8(D);if(O)return O;let j=new URL(D),w=new URL($.req.url);if(j.search=w.search,Y==="authorize"){let v=j.searchParams.get("redirect_uri");if(v){let b=B0().baseUrl??w.origin;try{if(!H28(new URL(v),b))return $.json({error:"invalid_request",error_description:"redirect_uri is not allowed"},400)}catch{return $.json({error:"invalid_request",error_description:"redirect_uri is malformed"},400)}j.searchParams.set("redirect_uri",v)}if(j.searchParams.has("resource"))j.searchParams.set("resource",U);if(QU8(G.connection_url))j.searchParams.set("auto_personal","true"),j.searchParams.set("force_new","true");return $.redirect(j.toString(),302)}let E={Accept:$.req.header("Accept")||"application/json"},P=$.req.header("Content-Type");if(P)E["Content-Type"]=P;let T=$.req.header("Authorization");if(T)E.Authorization=T;let z,A=null,M=null;if($.req.method!=="GET"&&$.req.method!=="HEAD")if(Y==="token"&&P?.includes("application/x-www-form-urlencoded")){if(T?.toLowerCase().startsWith("basic "))try{let i=atob(T.slice(6).trim()),G0=i.indexOf(":");if(G0!==-1){let I0=decodeURIComponent(i.slice(0,G0)),X0=decodeURIComponent(i.slice(G0+1));A=I0||null,M=X0||null}}catch{}let v=await $.req.formData();if(v.has("resource"))v.set("resource",U);let b=v.get("client_id"),u=v.get("client_secret");if(typeof b==="string"&&b)A=b;if(typeof u==="string"&&u)M=u;let m=new URLSearchParams;for(let[i,G0]of v.entries())m.append(i,G0.toString());z=m.toString()}else if(Y==="register"&&P?.toLowerCase().includes("application/json")){let v=await X.db.selectFrom("organization").select(["id","slug","name"]).where("id","=",G.organization_id).executeTakeFirst(),b=await $.req.text(),u={};try{u=b?JSON.parse(b):{}}catch{z=b}let m=typeof u==="object"&&u!==null&&!Array.isArray(u);if(z===void 0&&!m)z=b;if(z===void 0){let i=u,G0=i.metadata&&typeof i.metadata==="object"?i.metadata:{};i.metadata={...G0,organization_id:G.organization_id,...v?.slug?{organization_slug:v.slug}:{},...v?.name?{organization_name:v.name}:{}},z=JSON.stringify(i),E["Content-Type"]="application/json"}}else z=$.req.raw.body??void 0;let f=await fetch(j.toString(),{method:$.req.method,headers:E,body:z,duplex:"half",redirect:"manual"}),S=new Headers,V=["connection","keep-alive","transfer-encoding","content-encoding","content-length"];for(let[v,b]of f.headers.entries())if(!V.includes(v.toLowerCase()))S.set(v,b);if(Y==="token"&&f.ok){let v=await f.text();try{let b=JSON.parse(v);if(typeof b.access_token==="string"&&b.access_token){let u=typeof b.expires_in==="number"?new Date(Date.now()+b.expires_in*1000):null,m=null;try{m=await J2(G.connection_url)??D}catch{m=D}let i={connectionId:Z,accessToken:b.access_token,refreshToken:typeof b.refresh_token==="string"?b.refresh_token:null,scope:typeof b.scope==="string"?b.scope:null,expiresAt:u,clientId:A,clientSecret:M,tokenEndpoint:m};await new Y9(X.db,X.vault).upsert(i)}}catch(b){console.error("[oauth-proxy] failed to persist downstream token:",b)}return new Response(v,{status:f.status,statusText:f.statusText,headers:S})}return new Response(f.body,{status:f.status,statusText:f.statusText,headers:S})},F28=async($)=>{let Z=$.var.studioContext,Q=Z.auth.user?.id??Z.auth.apiKey?.userId;if(!Q)return $.json({error:"Unauthorized"},401);let Y=Z.organization?.id;if(!Y)return $.json({error:"organization id missing"},400);let X=$.req.query("types"),J=X?X.split(",").map((H)=>H.trim()).filter(Boolean):null,G=$.req.query("scope")==="all";if(G&&(!lB(Y)||!await mB(Z)))return $.json({error:"forbidden"},403);let W=G?x_0:Y;if(G)cO({action:"watch_all_orgs",actorUserId:Q,actorOrgId:Y,targetOrgId:"all"});let K=crypto.randomUUID();return Sj($,async(H)=>{if(await H.writeSSE({event:"connected",data:JSON.stringify({listenerId:K,organizationId:Y,typePatterns:J,connectedAt:new Date().toISOString()})}),!_6.add({id:K,organizationId:W,typePatterns:J?.length?J:null,push:(N,B)=>{H.writeSSE({id:N.id,event:N.type,data:JSON.stringify(G?{...N,organizationId:B}:N)}).catch(()=>{_6.remove(W,K)})}})){await H.writeSSE({event:"error",data:JSON.stringify({error:"Too many connections",message:"SSE connection limit reached. Try again later."})});return}let U=setInterval(()=>{H.writeSSE({event:"keepalive",data:""}).catch(()=>{clearInterval(U),_6.remove(W,K)})},30000);await new Promise((N)=>{H.onAbort(()=>{clearInterval(U),_6.remove(W,K),N()})})})},_B5,xB5,fB5=()=>bB5(U4),yB5=()=>vB5(U4);var N28=L(()=>{g$();l1();P8$();zF8();RF8();kF8();lF8();oF8();OZ0();HN1();ZU8();Q90();B9();qi();q8();H8();ky0();WU8();uO1();ZH();yF();A21();bG();y6();W6();k21();hU8();$N8();f21();PN8();i21();e21();$A1();lK();lZ0();ZA1();uN8();Sy0();hE8();dE8();iE8();oE8();JP8();JA1();Wx0();HZ0();UP8();Fx0();yT1();BP8();xT1();OP8();TP8();MP8();VP8();kP8();SP8();vP8();uP8();ZR1();UA1();dP8();fT1();ST1();RY0();Gz8();mq1();IJ();WB0();f80();yN1();m$0();d$0();iO1();Wz8();Hz8();s21();Oz8();_v0();jz8();r50();mO();F5();vz1();Az8();Sz8();D3();dO();xz8();KF0();DR1();aW();YA1();uO();AD1();KF0();g90();p50();wz1();yz8();xw();hz8();_s();A21();ln();Wt();cv0();J28=_(nH(),1);_B5=new CB5,xB5=new Set([wG,sW,RD,MD,cj,a2])});var O28={};P6(O28,{resolveClientDir:()=>iB5,resolveAssetPathWithTraversalCheck:()=>L28,isPathWithinDirectory:()=>D28,createAssetHandler:()=>pB5});import{resolve as UY0,dirname as hB5,join as uB5,extname as lB5,basename as mB5,sep as B28}from"path";function cB5($,Z){if($===Z||mB5($)==="index.html")return{"Cache-Control":"no-cache"};if($.includes(`${B28}assets${B28}`))return{"Cache-Control":"public, max-age=31536000, immutable"};return{}}function D28($,Z){let Q=UY0(Z),Y=UY0($);return Y===Q||Y.startsWith(Q+"/")}function L28({requestPath:$,clientDir:Z}){let Q=$.startsWith("/")?$.slice(1):$,Y=UY0(Z,Q);if(!D28(Y,Z))return null;return Y}function iB5($,Z="../client"){let Q=new URL($),Y=hB5(Q.pathname);return UY0(Y,Z)}function pB5($={}){let{env:Z="production",clientDir:Q=dB5,isServerPath:Y=()=>!1}=$;if(Z==="development")return async function(J){return null};return async function(J){if(J.method!=="GET")return null;let G=new URL(J.url),W;try{W=decodeURIComponent(G.pathname)}catch{return null}if(Y(W))return null;let K=L28({requestPath:W,clientDir:Q});if(!K)return null;let H=uB5(K,"index.html"),F=UY0(Q,"index.html"),U=J.headers.get("accept"),B=U?.includes("text/html")||U?.includes("*/*")&&["",".html"].includes(lB5(K))?[H,F]:[];for(let D of[K,...B])try{let O=Bun.file(D);if(await O.exists())return new Response(O,{headers:cB5(D,F)})}catch{}if(W.includes("/assets/"))return new Response("Not Found",{status:404,headers:{"Cache-Control":"no-store"}});return null}}var dB5="./dist/client";var j28=()=>{};var w28={};P6(w28,{tryUpgradePreviewWs:()=>QD5,tryHandlePreviewHttp:()=>rB5,previewWebSocketHandler:()=>YD5,parsePreviewBaseDomain:()=>aB5,isPreviewWsData:()=>vh0,extractHandleFromHost:()=>ER1});function oB5($){if($.method!=="GET")return!1;return($.headers.get("accept")??"").includes("text/html")}function sB5(){return new Response(tB5,{status:503,headers:{"content-type":"text/html; charset=utf-8","cache-control":"no-store","retry-after":"1","access-control-allow-origin":"*"}})}function aB5($){if(!$||$.trim()==="")return null;let Z=$.includes("{handle}")?$.replace("{handle}","__handle__"):$,Q;try{Q=new URL(Z)}catch{return null}let Y=Q.hostname;if($.includes("{handle}")){let X=Y.indexOf(".");if(X<=0||X===Y.length-1)return null;return Y.slice(X+1)}return Y}function ER1($,Z){if(!$||!Z)return null;let Q=$.indexOf(":"),Y=(Q>=0?$.slice(0,Q):$).toLowerCase(),J=`.${Z.toLowerCase().replace(/^\.+|\.+$/g,"")}`;if(!Y.endsWith(J))return null;let G=Y.slice(0,Y.length-J.length);if(!G||G.includes("."))return null;return G}async function rB5($,Z){let Q=ER1($.headers.get("host"),Z.baseDomain);if(!Q)return null;let{handle:Y,slug:X}=g31(Q),J=await Z.getRunner();if(!J)return BY0(503,"preview proxy not configured");let G=await J.proxyPreviewRequest(Y,X?ZD5($,X):$);if(G.headers.get(tp)&&oB5($))return sB5();return G.headers.delete(tp),G}function $D5($){return{protocols:$.upstreamProtocols,headers:{[y31]:$.appSlug}}}function ZD5($,Z){let Q=new Headers($.headers);return Q.set(y31,Z),new Request($,{headers:Q})}function BY0($,Z){return new Response(JSON.stringify({error:Z}),{status:$,headers:{"content-type":"application/json","access-control-allow-origin":"*"}})}function vh0($){return typeof $==="object"&&$!==null&&$.kind==="preview"}async function QD5($,Z,Q){if(($.headers.get("upgrade")??"").toLowerCase()!=="websocket")return null;let Y=ER1($.headers.get("host"),Q.baseDomain);if(!Y)return null;let{handle:X,slug:J}=g31(Y),G=await Q.getRunner();if(!G)return BY0(503,"preview proxy not configured");let W=await G.resolvePreviewUpstreamUrl(X);if(!W)return BY0(404,"sandbox not found");let K=new URL($.url);if(K.pathname.startsWith("/_sandbox"))return BY0(404,"not found");let H=`${W.replace(/^http/,"ws")}${K.pathname}${K.search}`,F=$.headers.get("sec-websocket-protocol"),U=F?F.split(",").map((D)=>D.trim()).filter(Boolean):[],N={kind:"preview",upstreamUrl:H,upstreamProtocols:U,...J?{appSlug:J}:{},pending:[],upstream:null,closed:!1};if(!Z.upgrade($,{data:N}))return BY0(426,"upgrade failed");return}function NY0($,Z,Q,Y){if(Z.closed)return;Z.closed=!0;try{$.close(Q,Y)}catch{}try{Z.upstream?.close()}catch{}}var nB5=256,tB5='<!DOCTYPE html><html><head><meta charset="utf-8"><title>Connecting\u2026</title><style>body{font-family:system-ui,sans-serif;display:flex;align-items:center;justify-content:center;min-height:100vh;margin:0;background:#fafafa;color:#555}div{text-align:center;max-width:420px;padding:24px}h3{margin:0 0 8px}p{margin:0;font-size:14px;color:#999;line-height:1.5}</style></head><body><div><h3>Connecting to sandbox\u2026</h3><p>Waiting for the sandbox to come online. This page refreshes automatically.</p></div><script>setTimeout(function(){window.location.reload()},1500)</script></body></html>',eB5,YD5;var E28=L(()=>{h60();eB5=WebSocket;YD5={open($){let Z=$.data;if(!vh0(Z))return;let Q;try{Q=Z.appSlug?new eB5(Z.upstreamUrl,$D5(Z)):Z.upstreamProtocols.length>0?new WebSocket(Z.upstreamUrl,Z.upstreamProtocols):new WebSocket(Z.upstreamUrl)}catch(Y){console.warn(`[preview-ws] failed to dial upstream ${Z.upstreamUrl}: ${Y instanceof Error?Y.message:String(Y)}`),NY0($,Z,1011,"upstream connect failed");return}Q.binaryType="arraybuffer",Z.upstream=Q,Q.addEventListener("open",()=>{while(Z.pending.length>0){let Y=Z.pending.shift();if(Y!==void 0)Q.send(Y)}}),Q.addEventListener("message",(Y)=>{if(Z.closed)return;$.send(Y.data)}),Q.addEventListener("close",(Y)=>{NY0($,Z,Y.code||1000,Y.reason||"")}),Q.addEventListener("error",()=>{NY0($,Z,1011,"upstream error")})},message($,Z){let Q=$.data;if(!vh0(Q))return;let Y=Q.upstream;if(Y&&Y.readyState===WebSocket.OPEN){Y.send(Z);return}if(Q.pending.length>=nB5){NY0($,Q,1011,"preview ws backlog overflow");return}Q.pending.push(Z)},close($){let Z=$.data;if(!vh0(Z))return;NY0($,Z,1000,"")}}});g$();var _R1="14";function vR1($){return{name:"decocms",systemDatabaseUrl:$.systemDatabaseUrl,systemDatabaseSchemaName:"dbos",systemDatabasePoolSize:$.poolSize,runAdminServer:!1,executorID:$.executorID,applicationVersion:_R1,...$.listenQueues!==void 0?{listenQueues:$.listenQueues}:{}}}g$();import y28 from"pg";var bR1=8314027461559302n,g28=600000,h28=500;async function xR1($,Z){let{databaseUrl:Q,lockTimeoutMs:Y=g28}=$,X=$.log??((K)=>console.log(K)),J=new y28.Client({connectionString:Q});await J.connect();let G=Date.now(),W=!1;try{while(!W){if(W=(await J.query("SELECT pg_try_advisory_lock($1) AS locked",[bR1.toString()])).rows[0]?.locked===!0,W)break;if(Date.now()-G>=Y)throw Error(`Timed out after ${Y}ms waiting for the DBOS migration lock. Another process is still migrating the dbos schema; this pod will restart and retry.`);await G$(h28)}let K=Date.now()-G;if(K>1000)X(`[dbos] waited ${K}ms for the migration lock; another process migrated first`);return await Z()}finally{if(W)try{await J.query("SELECT pg_advisory_unlock($1)",[bR1.toString()])}catch{}await J.end().catch(()=>{})}}l1();dh0();y6();function yA8(){let $=(process.env.BUN_OPTIONS??"").split(/\s+/).filter(Boolean);return[...process.argv.slice(1),...$]}function Wu0($,Z){for(let Q=0;Q<$.length;Q++){let Y=$[Q];if(Y===void 0)continue;if(Y===Z)return $[Q+1];if(Y.startsWith(`${Z}=`))return Y.slice(Z.length+1)}return}function jM1(){let $=yA8();if($.includes("--cpu-prof")){console.log(JSON.stringify({msg:"cpu-profiling-active",dir:Wu0($,"--cpu-prof-dir")??process.cwd(),name:Wu0($,"--cpu-prof-name"),markdown:$.includes("--cpu-prof-md"),intervalUs:Number(Wu0($,"--cpu-prof-interval")??1000),note:"profile is written on process exit"}));return}if(process.env.CPU_PROFILE)console.warn(JSON.stringify({msg:"cpu-profiling-requested-but-inactive",hint:'CPU profiling is a Bun launch flag. Set BUN_OPTIONS="--cpu-prof --cpu-prof-md --cpu-prof-dir=/tmp" before starting the process.'}))}Fu0();var IY0;function MM1(){if(process.env.HEAP_WATCH!=="1")return()=>{};let $=Number(process.env.HEAP_WATCH_INTERVAL_MS??60000),Z=async()=>{let Q=ZA();if(!Q)return;let Y={};try{let{heapStats:X}=await import("bun:jsc"),J=X(),G=Object.entries(J.objectTypeCounts).sort((W,K)=>K[1]-W[1]).slice(0,20);Y={objectCount:J.objectCount,heapSize:J.heapSize,top:Object.fromEntries(G)}}catch{}console.log(JSON.stringify({msg:"heap-watch",ts:new Date().toISOString(),uptimeS:Math.round(process.uptime()),rss:Q.rss,heapUsed:Q.heapUsed,heapTotal:Q.heapTotal,external:Q.external,arrayBuffers:Q.arrayBuffers,...Y}))};return Z().catch(()=>{}),IY0=setInterval(()=>void Z().catch(()=>{}),$),IY0.unref?.(),process.on("SIGUSR2",()=>{try{let Q=Bun.generateHeapSnapshot("v8"),Y=typeof Q==="string"?Q:JSON.stringify(Q),X=`/tmp/heap-${process.pid}-${Date.now()}.heapsnapshot`;Bun.write(X,Y),console.log(JSON.stringify({msg:"heap-snapshot-written",path:X}))}catch(Q){console.error("[heap-watch] snapshot failed:",Q)}}),()=>{if(IY0)clearInterval(IY0)}}import*as uA8 from"bun:jsc";var{startSamplingProfiler:lA8,samplingProfilerStackTraces:mA8}=uA8;function VM1(){if(process.env.STALL_WATCHDOG!=="1")return()=>{};let $=Number(process.env.STALL_WATCHDOG_MS??100),Z=Number(process.env.STALL_WATCHDOG_TICK_MS??50);try{lA8()}catch(J){return console.error("[stall-watchdog] failed to start sampling profiler:",J),()=>{}}let Q,Y=performance.now()+Z,X=()=>{let J=performance.now(),G=J-Y;Y=J+Z;let W=[];try{W=mA8()?.traces??[]}catch{}if(G>$&&W.length>0){let K=new Map;for(let F of W){let U=F.frames.find((D)=>D.sourceURL&&!/Unknown Executable/.test(D.category??""))??F.frames[0];if(!U)continue;let N=(U.sourceURL??"?").replace(/^.*\/node_modules\//,"node_modules/"),B=`${U.name??"?"} @ ${N}:${U.line??"?"}`;K.set(B,(K.get(B)??0)+1)}let H=[...K.entries()].sort((F,U)=>U[1]-F[1]).slice(0,8).map(([F,U])=>({frame:F,count:U}));console.warn(JSON.stringify({msg:"stall-stack",ts:new Date().toISOString(),lagMs:Math.round(G),samplesInWindow:W.length,top:H}))}Q=setTimeout(X,Z),Q.unref?.()};return Q=setTimeout(X,Z),Q.unref?.(),()=>{if(Q)clearTimeout(Q)}}function IM1(){jM1();let $=[MM1(),RM1(),VM1()];return()=>{for(let Z of $)Z()}}import{existsSync as UD5}from"fs";var tW=B0();DM1();var{DBOS:DY0,DBOSClient:XD5}=await import("@dbos-inc/dbos-sdk");function RR1($,Z){if(!Z)return $;let Q=new URL($);if(!Q.searchParams.has("sslmode"))Q.searchParams.set("sslmode","verify-full");return Q.toString()}var JD5=[wG,sW,RD,MD,cj,a2,r2],GD5=tW.dispatchRole==="worker"?JD5:tW.dispatchRole==="api"?[]:void 0;DY0.setConfig(vR1({systemDatabaseUrl:RR1(tW.databaseUrl,tW.databasePgSsl),poolSize:tW.dbosPoolSize,executorID:tW.podName,listenQueues:GD5}));var{createApp:WD5}=await Promise.resolve().then(() => (N28(),U28)),{isServerPath:KD5}=await Promise.resolve().then(() => (RY0(),aR1)),{createAssetHandler:HD5,resolveClientDir:q28}=await Promise.resolve().then(() => (j28(),O28)),FD5=tW.port,P28=q28(import.meta.url,"../client"),R28=UD5(P28)?P28:q28(import.meta.url,"../dist/client"),ND5=HD5({clientDir:R28,isServerPath:KD5}),BD5={"X-Frame-Options":"DENY","Content-Security-Policy":"frame-ancestors 'none'"};function DD5($){let Z=new Headers($.headers);for(let[Q,Y]of Object.entries(BD5))Z.set(Q,Y);return new Response($.body,{status:$.status,statusText:$.statusText,headers:Z})}var{parsePreviewBaseDomain:LD5,tryHandlePreviewHttp:OD5,tryUpgradePreviewWs:jD5,previewWebSocketHandler:PR1,isPreviewWsData:zR1}=await Promise.resolve().then(() => (E28(),w28)),{getOrInitSharedRunner:M28}=await Promise.resolve().then(() => (xX(),ec$)),V28=LD5(process.env.STUDIO_SANDBOX_PREVIEW_URL_PATTERN),z28={baseDomain:V28??"",getRunner:M28};if(process.env.STUDIO_SANDBOX_TENANT_POOLS?.trim())M28().catch(($)=>{console.warn("[lifecycle] eager sandbox provider init for tenant pools failed:",$ instanceof Error?$.message:String($))});var bh0=await WD5({clientDir:R28}),AR1=process.env.DBOS_CONDUCTOR_KEY?.trim(),A28=process.env.DBOS_CONDUCTOR_URL?.trim();await xR1({databaseUrl:RR1(tW.databaseUrl,tW.databasePgSsl)},()=>DY0.launch({...AR1?{conductorKey:AR1}:{},...AR1&&A28?{conductorURL:A28}:{}}));console.log(`[dbos] application version: ${DY0.applicationVersion}`);var TR1=5,qR1=0;await $8(async()=>{qR1++;try{return await bh0.initDbos()}catch($){let Z=qR1>=TR1?"giving up":"retrying";throw console.warn(`[dbos] initDbos attempt ${qR1}/${TR1} failed, ${Z}`,$),$}},{maxAttempts:TR1,minTimeout:1000,maxTimeout:1e4,jitter:0.5});var wD5=Bun.serve({idleTimeout:0,port:FD5,hostname:"0.0.0.0",fetch:async($,Z)=>{if(V28){let Y=await jD5($,Z,z28);if(Y===void 0)return;if(Y)return Y;let X=await OD5($,z28);if(X)return X}let Q=await ND5($);if(Q)return DD5(Q);return bh0.fetch($,{server:Z})},websocket:{open($){if(zR1($.data))PR1.open($)},message($,Z){if(zR1($.data))PR1.message($,Z)},close($){if(zR1($.data))PR1.close($)}},development:!1}),ED5=IM1();if(tW.localMode)Promise.resolve().then(() => (ph(),Rv0)).then(async({seedLocalMode:$,markSeedComplete:Z,healLocalJwks:Q})=>{try{let Y=await Q();if(Y>0)console.log(`[local-mode] cleared ${Y} undecryptable JWKS key(s); Better Auth will generate a fresh one`);let X=await $()}catch(Y){console.error("Failed to seed local mode:",Y)}finally{Z()}}).catch(async($)=>{console.error("Failed to load local-mode module:",$);try{let{markSeedComplete:Z}=await Promise.resolve().then(() => (ph(),Rv0));Z()}catch{}});var T28=!1;async function PD5($){let Z;try{Z=await XD5.create({systemDatabaseUrl:RR1(tW.databaseUrl,tW.databasePgSsl),systemDatabaseSchemaName:"dbos"});let Q=await Z.listWorkflows({status:"PENDING",queueName:sW,executorId:$,loadInput:!1,loadOutput:!1});if(Q.length===0){console.log(`[shutdown] no in-flight thread-gate gates to hand off (executor ${$})`);return}let Y=Q.map((X)=>X.workflowID);await Z.resumeWorkflows(Y,{queueName:sW}),console.log(`[shutdown] re-enqueued ${Y.length} in-flight thread-gate gate(s) for re-adoption by a live executor (from ${$}):`,Y)}catch(Q){console.error("[shutdown] thread-gate handoff failed:",Q)}finally{await Z?.destroy().catch(()=>{})}}async function xh0($){if(T28)return;T28=!0,console.log(`
4574
4574
  [shutdown] Received ${$}, shutting down gracefully...`);let Z=Number(process.env.SHUTDOWN_GRACE_SECONDS??60)*1000,Q=Math.max(Z-5000,1e4),Y=setTimeout(()=>{console.error(`[shutdown] Timed out after ${Q}ms, forcing exit.`),process.exit(1)},Q);Y.unref?.();let X=0;try{ED5(),bh0.markShuttingDown();let J=fR1(tW.dispatchRole,Q,process.env.SHUTDOWN_DRAIN_MS);await G$(J),await wD5.stop(!0);let G=DY0.executorID;await DY0.shutdown(),await PD5(G),await bh0.shutdown()}catch(J){console.error("[shutdown] Error during shutdown:",J),X=1}clearTimeout(Y),process.exit(X)}process.on("SIGTERM",()=>xh0("SIGTERM"));process.on("SIGINT",()=>xh0("SIGINT"));process.on("SIGHUP",()=>xh0("SIGHUP"));process.on("unhandledRejection",($)=>{console.error("[process] Unhandled rejection:",$)});process.on("uncaughtException",($)=>{console.error("[process] Uncaught exception:",$),xh0("uncaughtException")});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "decocms",
3
- "version": "4.537.0",
3
+ "version": "4.537.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 d,j as a,a2 as g}from"./index-XCJY2Rrb.js";import{C as x}from"./index-fxFKE7Rw.js";import{a as h}from"./thread-route-D3729KYI.js";import{u as $}from"./use-task-metadata-De7tla9K.js";import{AppViewContent as A}from"./project-app-view-xsT09BTO.js";import"./use-mobile-Dejc85O1.js";import"./use-sidebar-collapsed-j-XPIanS.js";import"./use-chat-layout-state-NN7EAnzB.js";import"./use-panel-navigate-BgatPgUi.js";import"./use-project-scope-PXmIipBd.js";import"./repository-binding-CTtYHb-Z.js";import"./use-mcp-client-hu17ZOJ8.js";import"./auth-BskCOxxm.js";import"./thread-intent-BsxGmuSR.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./watch-sse-pool-oOrd5Rne.js";import"./task-board-Dm8bNO3K.js";import"./schema-DYbCJAzi.js";import"./slugify-CEUa2lfQ.js";import"./agent-icon-B_qYhKCV.js";import"./AlertCircle-DRnRYwqq.js";import"./Tool01-BWgVn6V3.js";import"./ArrowUp-DCa9i3G5.js";import"./ArrowLeft-dhJPRoJc.js";import"./LinkBroken01-K245w0c9.js";import"./ShoppingBag01-BjpYBEx2.js";import"./ZoomOut-D1ZMZ7Ql.js";import"./Building02-CVQp36XY.js";import"./CheckCircle-DXy-8Gdi.js";import"./ChevronUp-CF7bSX44.js";import"./ChevronSelectorVertical-D8NLW3aV.js";import"./UserSquare-B1jSdGVS.js";import"./Copy01-V7GirmsP.js";import"./CreditCard01-DlBr5Kei.js";import"./DotsVertical-DE1RrMZs.js";import"./Image01-CJFRkMXP.js";import"./Globe04-C-hJB9ic.js";import"./SwitchHorizontal01-CMscdcfe.js";import"./Key01-BH_Io8ws.js";import"./Link01-BkANjVDr.js";import"./Minus-BwkA6Ip-.js";import"./Monitor01-mSGRD2AJ.js";import"./Sun-X-JIUgrn.js";import"./Play-CBQYMq3X.js";import"./Plus-C71dI_wT.js";import"./SearchMd-DU_oXGnf.js";import"./Trash01-5TBIiVL1.js";import"./Upload01-BU-XpefE.js";import"./Users01-BdkxkowI.js";import"./XClose-CDN_v21b.js";import"./tooltip-Brg7rMxu.js";import"./index-nip7iOYK.js";import"./toolbar-icon-button-BucahLbT.js";import"./shell-layout-Clz71xPl.js";import"./use-deployment-admin-CxT-vvMI.js";import"./admin-fetch-BhTJlAsX.js";import"./use-clock-tick-UZOKVfKg.js";import"./command-BIb5FsHz.js";import"./index-DsiaaSSc.js";import"./integration-icon-ChUs9lab.js";import"./project-icon-4djiAraX.js";import"./new-project-dialog-DNY2vbtl.js";import"./label-BuH5Zpb0.js";import"./repository-import-picker-C77VQar8.js";import"./use-navigate-to-agent-BF-f4wie.js";import"./repository-picker-B7eKH7Vb.js";import"./useInfiniteQuery-dDc-QqMO.js";import"./infiniteQueryObserver-SqL3Niv0.js";import"./collection-search-B9JK80fQ.js";import"./use-debounced-value-DnQLcCv-.js";import"./use-organization-settings-DEIq_9Uh.js";import"./required-auth-layout-72vwEXGr.js";import"./autosend-ymUlN8FG.js";import"./use-org-sso-0OPGq_oO.js";import"./sheet-DWuyd_rj.js";import"./resizable-Dy8CIRPz.js";import"./tool-namespace-B0q3DmKt.js";import"./use-mcp-tools-Cj7uxxfh.js";import"./content-blocks-o63cs2vh.js";import"./mcp-app-renderer-DYthJUs1.js";import"./types-U_XTGsEf.js";import"./chat-context-BkD7cnTX.js";import"./use-decopilot-events-CN2WGi1W.js";import"./use-ai-providers-x8ij_PJo.js";import"./location-V0VwTJTt.js";import"./task-route-BBHrPXRE.js";import"./task-key-BCHdFiOO.js";import"./core.esm-BYO5Z6so.js";import"./connect-source-dialog-CWR4mzJ5.js";import"./site-url-en5df9c-.js";import"./use-connect-companion-zHTvNdYj.js";import"./companions-core-DzyeM-yJ.js";import"./metadata-D72DunRR.js";import"./github-repo-scope-ByTYKy_L.js";import"./form-eY6ZFlTm.js";import"./icon-button-zFSlO6o0.js";import"./provision-repo-scoped-github-connection-lckxpDHD.js";import"./useQueries-CNIDshJH.js";import"./authenticate-and-persist-oauth-DvAD85kB.js";import"./mcp-oauth-CRXIwZNg.js";import"./mcp-oauth-CblPqKgI.js";import"./track-Dq6Jabi-.js";import"./extract-connection-data-BlzNpU0g.js";import"./connection--sIRN7Zz.js";import"./url-slug-BsWc5zfO.js";const l=g("/shell/$org/org-shell/agent-shell/projects/$agentId/apps/$connectionId/$toolName");function j(){const t=d.c(10),{connectionId:o,toolName:r}=l.useParams(),{args:i}=l.useSearch(),u=h(),e=$(u);let p;t[0]!==o||t[1]!==e?.expanded_tools||t[2]!==r?(p=e?.expanded_tools?.find(c=>c.appId===o&&c.toolName===r),t[0]=o,t[1]=e?.expanded_tools,t[2]=r,t[3]=p):p=t[3];const f=p,s=`${o}:${r}`,n=f?.args;let m;return t[4]!==i||t[5]!==o||t[6]!==s||t[7]!==n||t[8]!==r?(m=a.jsx(A,{connectionId:o,toolName:r,args:n,searchArgs:i},s),t[4]=i,t[5]=o,t[6]=s,t[7]=n,t[8]=r,t[9]=m):m=t[9],m}function jo(){const t=d.c(1);let o;return t[0]===Symbol.for("react.memo_cache_sentinel")?(o=a.jsx(x.Content,{children:a.jsx(j,{})}),t[0]=o):o=t[0],o}export{jo as default};
@@ -1 +0,0 @@
1
- import{c,j as e,bB as b,u as g}from"./index-XCJY2Rrb.js";import{C as j}from"./index-fxFKE7Rw.js";import{F as v,H as S}from"./file-share-button-DUzrxnvD.js";import{c as k,a as y,e as _}from"./use-org-fs-rZplhn-U.js";import{S as w}from"./settings-tab-BWjVxYyu.js";import{b as M}from"./thread-route-D3729KYI.js";import"./use-mobile-Dejc85O1.js";import"./use-sidebar-collapsed-j-XPIanS.js";import"./use-chat-layout-state-NN7EAnzB.js";import"./use-panel-navigate-BgatPgUi.js";import"./use-project-scope-PXmIipBd.js";import"./repository-binding-CTtYHb-Z.js";import"./use-mcp-client-hu17ZOJ8.js";import"./auth-BskCOxxm.js";import"./thread-intent-BsxGmuSR.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./watch-sse-pool-oOrd5Rne.js";import"./task-board-Dm8bNO3K.js";import"./schema-DYbCJAzi.js";import"./slugify-CEUa2lfQ.js";import"./agent-icon-B_qYhKCV.js";import"./AlertCircle-DRnRYwqq.js";import"./Tool01-BWgVn6V3.js";import"./ArrowUp-DCa9i3G5.js";import"./ArrowLeft-dhJPRoJc.js";import"./LinkBroken01-K245w0c9.js";import"./ShoppingBag01-BjpYBEx2.js";import"./ZoomOut-D1ZMZ7Ql.js";import"./Building02-CVQp36XY.js";import"./CheckCircle-DXy-8Gdi.js";import"./ChevronUp-CF7bSX44.js";import"./ChevronSelectorVertical-D8NLW3aV.js";import"./UserSquare-B1jSdGVS.js";import"./Copy01-V7GirmsP.js";import"./CreditCard01-DlBr5Kei.js";import"./DotsVertical-DE1RrMZs.js";import"./Image01-CJFRkMXP.js";import"./Globe04-C-hJB9ic.js";import"./SwitchHorizontal01-CMscdcfe.js";import"./Key01-BH_Io8ws.js";import"./Link01-BkANjVDr.js";import"./Minus-BwkA6Ip-.js";import"./Monitor01-mSGRD2AJ.js";import"./Sun-X-JIUgrn.js";import"./Play-CBQYMq3X.js";import"./Plus-C71dI_wT.js";import"./SearchMd-DU_oXGnf.js";import"./Trash01-5TBIiVL1.js";import"./Upload01-BU-XpefE.js";import"./Users01-BdkxkowI.js";import"./XClose-CDN_v21b.js";import"./tooltip-Brg7rMxu.js";import"./index-nip7iOYK.js";import"./toolbar-icon-button-BucahLbT.js";import"./shell-layout-Clz71xPl.js";import"./use-deployment-admin-CxT-vvMI.js";import"./admin-fetch-BhTJlAsX.js";import"./use-clock-tick-UZOKVfKg.js";import"./command-BIb5FsHz.js";import"./index-DsiaaSSc.js";import"./integration-icon-ChUs9lab.js";import"./project-icon-4djiAraX.js";import"./new-project-dialog-DNY2vbtl.js";import"./label-BuH5Zpb0.js";import"./repository-import-picker-C77VQar8.js";import"./use-navigate-to-agent-BF-f4wie.js";import"./repository-picker-B7eKH7Vb.js";import"./useInfiniteQuery-dDc-QqMO.js";import"./infiniteQueryObserver-SqL3Niv0.js";import"./collection-search-B9JK80fQ.js";import"./use-debounced-value-DnQLcCv-.js";import"./use-organization-settings-DEIq_9Uh.js";import"./required-auth-layout-72vwEXGr.js";import"./autosend-ymUlN8FG.js";import"./use-org-sso-0OPGq_oO.js";import"./sheet-DWuyd_rj.js";import"./resizable-Dy8CIRPz.js";import"./popover-CnAr_EpU.js";import"./index-B8dQ7TV1.js";import"./extract-connection-data-BlzNpU0g.js";import"./metadata-D72DunRR.js";import"./connection--sIRN7Zz.js";import"./url-slug-BsWc5zfO.js";import"./chat-context-BkD7cnTX.js";import"./use-decopilot-events-CN2WGi1W.js";import"./use-ai-providers-x8ij_PJo.js";import"./location-V0VwTJTt.js";import"./build-improve-prompt-doc-CtlNAkdJ.js";import"./empty-state-Cnib0rT2.js";import"./use-date-fns-locale-bZYQDNW6.js";import"./mcp-oauth-CRXIwZNg.js";import"./mcp-oauth-CblPqKgI.js";import"./textarea-CAKcv24n.js";import"./use-connection-Cgc61Xtr.js";import"./use-debounced-autosave-D_8PFTvj.js";import"./add-connection-dialog-CMyo6oKy.js";import"./connection-card-PkrvBZMA.js";import"./connection-slug-CITJ0kGN.js";import"./drawer-Cxv0RJJc.js";import"./form-eY6ZFlTm.js";import"./select-BMOocRM-.js";import"./index-BdQq_4o_.js";import"./schema-I274PqDR.js";import"./connection-form-helpers-BrcWs3bo.js";import"./authenticate-and-persist-oauth-DvAD85kB.js";import"./collection-tabs-BSiUMQsV.js";import"./badge-CpDbvGYV.js";import"./use-infinite-scroll-bLa9D24Y.js";import"./useSuspenseInfiniteQuery-DdDhWqvv.js";import"./file-type-icon-DgEz6vKD.js";import"./checkbox-DCZoKc7p.js";import"./search-input-uZhyE3_X.js";import"./use-mcp-auth-status-B97IRKUL.js";import"./types-U_XTGsEf.js";import"./use-mcp-tools-Cj7uxxfh.js";import"./use-mcp-prompts-MX-NMwu3.js";import"./utils-CVEq3hMx.js";import"./switch-B_9nxf01.js";import"./scroll-area-BED1KeeA.js";import"./experiments-tab-choice-BF5vCkwx.js";import"./use-project-native-view-presence-CVHdUdbq.js";import"./match-site-slug-config-D3fUJ6vX.js";import"./use-file-configs-BgZRiuct.js";import"./site-slug-DebpOoQq.js";import"./optimistic-project-sidebar-views-C0OxSQE7.js";import"./sections-By49OdzN.js";import"./use-copy-BSSYnYt9.js";import"./virtual-mcp-BDwuOLFs.js";import"./sandbox-url-D3mC8qhT.js";import"./secret-picker-BLUn_4nc.js";import"./use-secrets-B8Abfs3j.js";import"./omit-sandbox-map-jj4lCB2U.js";import"./app-preview-url-9Od4s8Sz.js";import"./serial-task-queue-CGOeQgpr.js";const x="home";function P(i){const t=c.c(5),{label:r}=i;let p;t[0]===Symbol.for("react.memo_cache_sentinel")?(p=e.jsx(b,{className:"aspect-video w-2/3 max-w-xl"}),t[0]=p):p=t[0];let o;t[1]!==r?(o=r&&e.jsx("p",{className:"text-xs text-muted-foreground",children:r}),t[1]=r,t[2]=o):o=t[2];let m;return t[3]!==o?(m=e.jsxs("div",{className:"flex h-full w-full flex-col items-center justify-center gap-3 bg-background",children:[p,o]}),t[3]=o,t[4]=m):m=t[4],m}function D(i){const t=c.c(15),{path:r}=i;let p;t[0]===Symbol.for("react.memo_cache_sentinel")?(p={refetchIntervalWhenAbsent:2e3},t[0]=p):p=t[0];const o=k(x,r,p),m=y(x)(r);if(o.isPending||!o.data){const h=!o.isPending&&!o.data?"Waiting for the deck to sync…":void 0;let l;return t[1]!==h?(l=e.jsx(P,{label:h}),t[1]=h,t[2]=l):l=t[2],l}let s;t[3]!==o.data?(s=_(o.data),t[3]=o.data,t[4]=s):s=t[4];const f=o.data.shareMode??"private",u=o.data.effectivePublic??!1,d=window.location.origin+m;let a;t[5]!==r||t[6]!==f||t[7]!==u||t[8]!==d?(a=e.jsx(v,{volume:x,path:r,shareMode:f,effectivePublic:u,url:d}),t[5]=r,t[6]=f,t[7]=u,t[8]=d,t[9]=a):a=t[9];let n;return t[10]!==r||t[11]!==m||t[12]!==s||t[13]!==a?(n=e.jsx(S,{readUrl:m,marker:s,title:r,savePath:r,trailing:a}),t[10]=r,t[11]=m,t[12]=s,t[13]=a,t[14]=n):n=t[14],n}function C(){const i=c.c(4);let t;i[0]===Symbol.for("react.memo_cache_sentinel")?(t={strict:!1},i[0]=t):t=i[0];const r=g(t),p=M(),o="path"in r&&typeof r.path=="string"?r.path:void 0;let m;return i[1]!==o||i[2]!==p?(m=o?e.jsx(D,{path:o},o):e.jsx(w,{virtualMcpId:p}),i[1]=o,i[2]=p,i[3]=m):m=i[3],m}function mr(){const i=c.c(1);let t;return i[0]===Symbol.for("react.memo_cache_sentinel")?(t=e.jsx(j.Content,{children:e.jsx(C,{})}),i[0]=t):t=i[0],t}export{mr as default};
@@ -1 +0,0 @@
1
- import{c as m,j as i}from"./index-XCJY2Rrb.js";import{C as n}from"./index-fxFKE7Rw.js";import{S as a}from"./site-draft-actions-BzPfC31f.js";import{E as c,a as l}from"./experiments-tab-l3lCfqnU.js";import{S as u}from"./settings-tab-BWjVxYyu.js";import{e as f}from"./use-organization-settings-DEIq_9Uh.js";import{b as x}from"./thread-route-D3729KYI.js";import{u as b,b as j,h as d}from"./experiments-tab-choice-BF5vCkwx.js";import"./use-mobile-Dejc85O1.js";import"./use-sidebar-collapsed-j-XPIanS.js";import"./use-chat-layout-state-NN7EAnzB.js";import"./use-panel-navigate-BgatPgUi.js";import"./use-project-scope-PXmIipBd.js";import"./repository-binding-CTtYHb-Z.js";import"./use-mcp-client-hu17ZOJ8.js";import"./auth-BskCOxxm.js";import"./thread-intent-BsxGmuSR.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./watch-sse-pool-oOrd5Rne.js";import"./task-board-Dm8bNO3K.js";import"./schema-DYbCJAzi.js";import"./slugify-CEUa2lfQ.js";import"./agent-icon-B_qYhKCV.js";import"./AlertCircle-DRnRYwqq.js";import"./Tool01-BWgVn6V3.js";import"./ArrowUp-DCa9i3G5.js";import"./ArrowLeft-dhJPRoJc.js";import"./LinkBroken01-K245w0c9.js";import"./ShoppingBag01-BjpYBEx2.js";import"./ZoomOut-D1ZMZ7Ql.js";import"./Building02-CVQp36XY.js";import"./CheckCircle-DXy-8Gdi.js";import"./ChevronUp-CF7bSX44.js";import"./ChevronSelectorVertical-D8NLW3aV.js";import"./UserSquare-B1jSdGVS.js";import"./Copy01-V7GirmsP.js";import"./CreditCard01-DlBr5Kei.js";import"./DotsVertical-DE1RrMZs.js";import"./Image01-CJFRkMXP.js";import"./Globe04-C-hJB9ic.js";import"./SwitchHorizontal01-CMscdcfe.js";import"./Key01-BH_Io8ws.js";import"./Link01-BkANjVDr.js";import"./Minus-BwkA6Ip-.js";import"./Monitor01-mSGRD2AJ.js";import"./Sun-X-JIUgrn.js";import"./Play-CBQYMq3X.js";import"./Plus-C71dI_wT.js";import"./SearchMd-DU_oXGnf.js";import"./Trash01-5TBIiVL1.js";import"./Upload01-BU-XpefE.js";import"./Users01-BdkxkowI.js";import"./XClose-CDN_v21b.js";import"./tooltip-Brg7rMxu.js";import"./index-nip7iOYK.js";import"./toolbar-icon-button-BucahLbT.js";import"./shell-layout-Clz71xPl.js";import"./use-deployment-admin-CxT-vvMI.js";import"./admin-fetch-BhTJlAsX.js";import"./use-clock-tick-UZOKVfKg.js";import"./command-BIb5FsHz.js";import"./index-DsiaaSSc.js";import"./integration-icon-ChUs9lab.js";import"./project-icon-4djiAraX.js";import"./new-project-dialog-DNY2vbtl.js";import"./label-BuH5Zpb0.js";import"./repository-import-picker-C77VQar8.js";import"./use-navigate-to-agent-BF-f4wie.js";import"./repository-picker-B7eKH7Vb.js";import"./useInfiniteQuery-dDc-QqMO.js";import"./infiniteQueryObserver-SqL3Niv0.js";import"./collection-search-B9JK80fQ.js";import"./use-debounced-value-DnQLcCv-.js";import"./required-auth-layout-72vwEXGr.js";import"./autosend-ymUlN8FG.js";import"./use-org-sso-0OPGq_oO.js";import"./sheet-DWuyd_rj.js";import"./resizable-Dy8CIRPz.js";import"./separator-Cc6-dV_Q.js";import"./chat-context-BkD7cnTX.js";import"./use-decopilot-events-CN2WGi1W.js";import"./use-ai-providers-x8ij_PJo.js";import"./location-V0VwTJTt.js";import"./site-editor-toast-84yUu6Hk.js";import"./use-session-runtime-2LelPUAr.js";import"./sandbox-url-D3mC8qhT.js";import"./utils-DadC4ah8.js";import"./use-sandbox-events-CiXFYvVz.js";import"./sandbox-git-api-DcqI6XE4.js";import"./popover-CnAr_EpU.js";import"./tabs-DfGzsnLH.js";import"./active-indicator-CCMhAsc_.js";import"./use-releases-C5KIUtRf.js";import"./serial-task-queue-CGOeQgpr.js";import"./virtual-mcp-BDwuOLFs.js";import"./url-slug-BsWc5zfO.js";import"./use-fast-preview-draft-url-DAUi5Ssd.js";import"./section-preview-url-7zfngvgW.js";import"./preview-link-C762yHOt.js";import"./variant-draft-pointer-BeAKcq_c.js";import"./parse-sections-COIV3ooN.js";import"./index-CLAZinux.js";import"./tool-namespace-B0q3DmKt.js";import"./drawer-Cxv0RJJc.js";import"./use-mcp-prompts-MX-NMwu3.js";import"./usage-stats-HoR2JsD9.js";import"./form-eY6ZFlTm.js";import"./utils-CVEq3hMx.js";import"./markdown-DI6hVa7Y.js";import"./use-copy-BSSYnYt9.js";import"./input-D2ABoz4g.js";import"./icon-button-zFSlO6o0.js";import"./file-type-icon-DgEz6vKD.js";import"./chat-draft-IizDUWYX.js";import"./select-BMOocRM-.js";import"./index-BdQq_4o_.js";import"./use-deco-credits-CMm_AUOd.js";import"./toggle-group-ClSmh9vS.js";import"./index-DHtu77UN.js";import"./checkbox-DCZoKc7p.js";import"./ai-providers-logos-DD3qZ33J.js";import"./input-fak0uH7y.js";import"./suggestion-LovLSSJc.js";import"./use-org-fs-rZplhn-U.js";import"./question-004-sINsf4GQ.js";import"./feature-paywall-BNIBgu15.js";import"./plan-ladder-BzTsrX2B.js";import"./add-connection-dialog-CMyo6oKy.js";import"./extract-connection-data-BlzNpU0g.js";import"./metadata-D72DunRR.js";import"./connection--sIRN7Zz.js";import"./connection-card-PkrvBZMA.js";import"./connection-slug-CITJ0kGN.js";import"./textarea-CAKcv24n.js";import"./use-connection-Cgc61Xtr.js";import"./schema-I274PqDR.js";import"./connection-form-helpers-BrcWs3bo.js";import"./authenticate-and-persist-oauth-DvAD85kB.js";import"./mcp-oauth-CRXIwZNg.js";import"./mcp-oauth-CblPqKgI.js";import"./collection-tabs-BSiUMQsV.js";import"./badge-CpDbvGYV.js";import"./use-infinite-scroll-bLa9D24Y.js";import"./useSuspenseInfiniteQuery-DdDhWqvv.js";import"./use-task-board-events-Dt8aUDv3.js";import"./pair-BPGH0UX4.js";import"./collapsible-Durvl14U.js";import"./content-blocks-o63cs2vh.js";import"./mcp-app-renderer-DYthJUs1.js";import"./types-U_XTGsEf.js";import"./omit-sandbox-map-jj4lCB2U.js";import"./use-thread-outputs-CSdE0zYx.js";import"./hosted-publish-feedback-MplGvkIn.js";import"./use-cms-publish-actions-jt_q-R4U.js";import"./named-rule-uses-H7aokudG.js";import"./device-hint-SeLRi17j.js";import"./editor-CAg6_OHN.js";import"./section-array-field-D0cRnZh-.js";import"./alert-WCvCZtxv.js";import"./save-changes-debug-nBi-n9eV.js";import"./releases-api-QVw7Rj4b.js";import"./sandbox-lifecycle-context-llpDvqG_.js";import"./sandbox-start-errors-BK_aDCyt.js";import"./table-BZJiClHE.js";import"./empty-state-CbtDK1p4.js";import"./site-slug-DebpOoQq.js";import"./blocks-tab-states-KtRMrzHp.js";import"./slider-B2JpdpyA.js";import"./index-D6_0KaHs.js";import"./tooltipContext-CAWfaR40.js";import"./CategoricalChart-iu2AXlfn.js";import"./index-AYos0XvL.js";import"./ActiveShapeUtils-y_apbvuY.js";import"./Sector-DzJLml2K.js";import"./symbol-CSicVVsL.js";import"./empty-state-Cnib0rT2.js";import"./view-header-BhtSyFCr.js";import"./site-draft-view-Ci_mlKWw.js";import"./use-apply-named-rule-Cx-2y6sV.js";import"./use-move-blocks-B4T5W0Hm.js";import"./search-toggle-l8vk8n5z.js";import"./use-task-board-item-prs-n4vW5QFa.js";import"./index-B8dQ7TV1.js";import"./build-improve-prompt-doc-CtlNAkdJ.js";import"./use-date-fns-locale-bZYQDNW6.js";import"./use-debounced-autosave-D_8PFTvj.js";import"./search-input-uZhyE3_X.js";import"./use-mcp-auth-status-B97IRKUL.js";import"./use-mcp-tools-Cj7uxxfh.js";import"./switch-B_9nxf01.js";import"./scroll-area-BED1KeeA.js";import"./use-project-native-view-presence-CVHdUdbq.js";import"./match-site-slug-config-D3fUJ6vX.js";import"./use-file-configs-BgZRiuct.js";import"./optimistic-project-sidebar-views-C0OxSQE7.js";import"./sections-By49OdzN.js";import"./secret-picker-BLUn_4nc.js";import"./use-secrets-B8Abfs3j.js";import"./app-preview-url-9Od4s8Sz.js";function E(){const t=m.c(5),r=x(),p=f(),e=b(r),s=j(r);switch(d({orgEnabled:p.experiments,siteMajor:e,lastFoundV8:s})){case"tab":{let o;return t[0]!==r?(o=i.jsx(l,{virtualMcpId:r}),t[0]=r,t[1]=o):o=t[1],o}case"loading":{let o;return t[2]===Symbol.for("react.memo_cache_sentinel")?(o=i.jsx(c,{}),t[2]=o):o=t[2],o}case"settings":{let o;return t[3]!==r?(o=i.jsx(u,{virtualMcpId:r}),t[3]=r,t[4]=o):o=t[4],o}}}function mi(){const t=m.c(1);let r;return t[0]===Symbol.for("react.memo_cache_sentinel")?(r=i.jsx(n.Content,{actions:i.jsx(a,{blocksOnly:!0}),children:i.jsx(E,{})}),t[0]=r):r=t[0],r}export{mi as default};
@@ -1 +0,0 @@
1
- import{c as E,a4 as F,q as I,K as P,m as N,as as S,f4 as b,b as v,ad as g,u as _,j as u}from"./index-XCJY2Rrb.js";import{C}from"./index-fxFKE7Rw.js";import{C as h,L as j,p as L}from"./context-shell-CVMVXPAa.js";import{c as O,d as R,H as V,e as M}from"./location-V0VwTJTt.js";import{n as q}from"./use-org-fs-rZplhn-U.js";import{u as D}from"./use-project-scope-PXmIipBd.js";import{V as w}from"./index-B8dQ7TV1.js";import"./use-mobile-Dejc85O1.js";import"./use-sidebar-collapsed-j-XPIanS.js";import"./use-chat-layout-state-NN7EAnzB.js";import"./thread-route-D3729KYI.js";import"./use-panel-navigate-BgatPgUi.js";import"./thread-intent-BsxGmuSR.js";import"./use-mcp-client-hu17ZOJ8.js";import"./auth-BskCOxxm.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./watch-sse-pool-oOrd5Rne.js";import"./task-board-Dm8bNO3K.js";import"./schema-DYbCJAzi.js";import"./slugify-CEUa2lfQ.js";import"./agent-icon-B_qYhKCV.js";import"./AlertCircle-DRnRYwqq.js";import"./Tool01-BWgVn6V3.js";import"./ArrowUp-DCa9i3G5.js";import"./ArrowLeft-dhJPRoJc.js";import"./LinkBroken01-K245w0c9.js";import"./ShoppingBag01-BjpYBEx2.js";import"./ZoomOut-D1ZMZ7Ql.js";import"./Building02-CVQp36XY.js";import"./CheckCircle-DXy-8Gdi.js";import"./ChevronUp-CF7bSX44.js";import"./ChevronSelectorVertical-D8NLW3aV.js";import"./UserSquare-B1jSdGVS.js";import"./Copy01-V7GirmsP.js";import"./CreditCard01-DlBr5Kei.js";import"./DotsVertical-DE1RrMZs.js";import"./Image01-CJFRkMXP.js";import"./Globe04-C-hJB9ic.js";import"./SwitchHorizontal01-CMscdcfe.js";import"./Key01-BH_Io8ws.js";import"./Link01-BkANjVDr.js";import"./Minus-BwkA6Ip-.js";import"./Monitor01-mSGRD2AJ.js";import"./Sun-X-JIUgrn.js";import"./Play-CBQYMq3X.js";import"./Plus-C71dI_wT.js";import"./SearchMd-DU_oXGnf.js";import"./Trash01-5TBIiVL1.js";import"./Upload01-BU-XpefE.js";import"./Users01-BdkxkowI.js";import"./XClose-CDN_v21b.js";import"./tooltip-Brg7rMxu.js";import"./index-nip7iOYK.js";import"./toolbar-icon-button-BucahLbT.js";import"./shell-layout-Clz71xPl.js";import"./use-deployment-admin-CxT-vvMI.js";import"./admin-fetch-BhTJlAsX.js";import"./use-clock-tick-UZOKVfKg.js";import"./command-BIb5FsHz.js";import"./index-DsiaaSSc.js";import"./integration-icon-ChUs9lab.js";import"./project-icon-4djiAraX.js";import"./new-project-dialog-DNY2vbtl.js";import"./label-BuH5Zpb0.js";import"./repository-import-picker-C77VQar8.js";import"./use-navigate-to-agent-BF-f4wie.js";import"./repository-binding-CTtYHb-Z.js";import"./repository-picker-B7eKH7Vb.js";import"./useInfiniteQuery-dDc-QqMO.js";import"./infiniteQueryObserver-SqL3Niv0.js";import"./collection-search-B9JK80fQ.js";import"./use-debounced-value-DnQLcCv-.js";import"./use-organization-settings-DEIq_9Uh.js";import"./required-auth-layout-72vwEXGr.js";import"./autosend-ymUlN8FG.js";import"./use-org-sso-0OPGq_oO.js";import"./sheet-DWuyd_rj.js";import"./resizable-Dy8CIRPz.js";import"./icon-button-zFSlO6o0.js";import"./search-input-uZhyE3_X.js";import"./search-toggle-l8vk8n5z.js";import"./chat-context-BkD7cnTX.js";import"./use-decopilot-events-CN2WGi1W.js";import"./use-ai-providers-x8ij_PJo.js";import"./use-org-repo-syncs-DVS_Dr6a.js";import"./textarea-CAKcv24n.js";import"./markdown-DI6hVa7Y.js";import"./use-copy-BSSYnYt9.js";import"./file-share-button-DUzrxnvD.js";import"./popover-CnAr_EpU.js";import"./preview-dialog-D983fZOy.js";import"./preview-content-DRTZx9Bm.js";import"./file-preview-DVzYKzBM.js";import"./utils-DadC4ah8.js";import"./editor-CAg6_OHN.js";import"./file-type-icon-DgEz6vKD.js";import"./folder-icon-BvWvz4ba.js";import"./empty-state-CbtDK1p4.js";import"./toggle-group-ClSmh9vS.js";import"./active-indicator-CCMhAsc_.js";import"./table-BZJiClHE.js";import"./require-capability-DhL0sK8n.js";import"./access-gate-ClGPmPHt.js";import"./capability-load-error-DoOw8kK-.js";import"./sections-By49OdzN.js";import"./empty-state-Cnib0rT2.js";import"./extract-connection-data-BlzNpU0g.js";import"./metadata-D72DunRR.js";import"./connection--sIRN7Zz.js";import"./url-slug-BsWc5zfO.js";import"./build-improve-prompt-doc-CtlNAkdJ.js";import"./use-date-fns-locale-bZYQDNW6.js";import"./mcp-oauth-CRXIwZNg.js";import"./mcp-oauth-CblPqKgI.js";import"./use-connection-Cgc61Xtr.js";import"./use-debounced-autosave-D_8PFTvj.js";import"./add-connection-dialog-CMyo6oKy.js";import"./connection-card-PkrvBZMA.js";import"./connection-slug-CITJ0kGN.js";import"./drawer-Cxv0RJJc.js";import"./form-eY6ZFlTm.js";import"./select-BMOocRM-.js";import"./index-BdQq_4o_.js";import"./schema-I274PqDR.js";import"./connection-form-helpers-BrcWs3bo.js";import"./authenticate-and-persist-oauth-DvAD85kB.js";import"./collection-tabs-BSiUMQsV.js";import"./badge-CpDbvGYV.js";import"./use-infinite-scroll-bLa9D24Y.js";import"./useSuspenseInfiniteQuery-DdDhWqvv.js";import"./checkbox-DCZoKc7p.js";import"./use-mcp-auth-status-B97IRKUL.js";import"./types-U_XTGsEf.js";import"./use-mcp-tools-Cj7uxxfh.js";import"./use-mcp-prompts-MX-NMwu3.js";import"./utils-CVEq3hMx.js";import"./switch-B_9nxf01.js";import"./scroll-area-BED1KeeA.js";import"./experiments-tab-choice-BF5vCkwx.js";import"./use-project-native-view-presence-CVHdUdbq.js";import"./match-site-slug-config-D3fUJ6vX.js";import"./use-file-configs-BgZRiuct.js";import"./site-slug-DebpOoQq.js";import"./optimistic-project-sidebar-views-C0OxSQE7.js";import"./virtual-mcp-BDwuOLFs.js";import"./sandbox-url-D3mC8qhT.js";import"./secret-picker-BLUn_4nc.js";import"./use-secrets-B8Abfs3j.js";import"./omit-sandbox-map-jj4lCB2U.js";import"./app-preview-url-9Od4s8Sz.js";import"./serial-task-queue-CGOeQgpr.js";function A(t){const i=E.c(14),{org:o}=F(),r=I();let m;i[0]!==o.id||i[1]!==t?(m=P.projectFolderEnsure(o.id,t?.id??"",t?O(t):""),i[0]=o.id,i[1]=t,i[2]=m):m=i[2];let e;i[3]!==o.id||i[4]!==o.slug||i[5]!==t?.id||i[6]!==r?(e=async()=>{const l=await S(o.slug,"PROJECT_FOLDER_ENSURE",{id:t?.id??""});return l.created&&(q(r,o.id,V),b(r,o.id,"VIRTUAL_MCP")),l},i[3]=o.id,i[4]=o.slug,i[5]=t?.id,i[6]=r,i[7]=e):e=i[7];let s;i[8]!==t?(s=!!t&&!R(t),i[8]=t,i[9]=s):s=i[9];let p;i[10]!==m||i[11]!==e||i[12]!==s?(p={queryKey:m,queryFn:e,enabled:s,staleTime:Number.POSITIVE_INFINITY,gcTime:Number.POSITIVE_INFINITY,retry:!1},i[10]=m,i[11]=e,i[12]=s,i[13]=p):p=i[13],N(p)}function Lo(){const t=E.c(24),{project:i}=D(),o=v(),r=g();let m;t[0]===Symbol.for("react.memo_cache_sentinel")?(m={strict:!1},t[0]=m):m=t[0];const{section:e}=_(m);A(i);const s=i?.id??"pending";let p;t[1]!==i?(p=i?M(i):void 0,t[1]=i,t[2]=p):p=t[2];let l;t[3]!==i?.title||t[4]!==r||t[5]!==o?(l=r?o("sidebar.navDestinations.context"):i?.title??void 0,t[3]=i?.title,t[4]=r,t[5]=o,t[6]=l):l=t[6];const y=r?"dialog":void 0;let d;t[7]!==r||t[8]!==s||t[9]!==p||t[10]!==l||t[11]!==y?(d=u.jsx(j,{root:p,rootLabel:l,filePreview:y,context:r},s),t[7]=r,t[8]=s,t[9]=p,t[10]=l,t[11]=y,t[12]=d):d=t[12];const a=d;if(!r){let T;return t[13]!==a?(T=u.jsx(C.Content,{children:a}),t[13]=a,t[14]=T):T=t[14],T}let f;t[15]!==e?(f=L(e),t[15]=e,t[16]=f):f=t[16];const n=f;let c;t[17]!==n||t[18]!==a||t[19]!==i?(c=n==="files"?a:i?u.jsx(w,{virtualMcpId:i.id,contextSection:n}):null,t[17]=n,t[18]=a,t[19]=i,t[20]=c):c=t[20];let x;return t[21]!==n||t[22]!==c?(x=u.jsx(C.Content,{children:u.jsx(h,{scope:"project",section:n,children:c})}),t[21]=n,t[22]=c,t[23]=x):x=t[23],x}export{Lo as default};
@@ -1 +0,0 @@
1
- import{c as a,j as e,u as n}from"./index-XCJY2Rrb.js";import{C as c}from"./index-fxFKE7Rw.js";import{L as l}from"./preview-panel-O0kBlxM5.js";import{a as u}from"./use-panel-navigate-BgatPgUi.js";import{S as f}from"./settings-tab-BWjVxYyu.js";import{b as h}from"./thread-route-D3729KYI.js";import"./use-mobile-Dejc85O1.js";import"./use-sidebar-collapsed-j-XPIanS.js";import"./use-chat-layout-state-NN7EAnzB.js";import"./thread-intent-BsxGmuSR.js";import"./use-mcp-client-hu17ZOJ8.js";import"./auth-BskCOxxm.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./watch-sse-pool-oOrd5Rne.js";import"./task-board-Dm8bNO3K.js";import"./schema-DYbCJAzi.js";import"./slugify-CEUa2lfQ.js";import"./agent-icon-B_qYhKCV.js";import"./AlertCircle-DRnRYwqq.js";import"./Tool01-BWgVn6V3.js";import"./ArrowUp-DCa9i3G5.js";import"./ArrowLeft-dhJPRoJc.js";import"./LinkBroken01-K245w0c9.js";import"./ShoppingBag01-BjpYBEx2.js";import"./ZoomOut-D1ZMZ7Ql.js";import"./Building02-CVQp36XY.js";import"./CheckCircle-DXy-8Gdi.js";import"./ChevronUp-CF7bSX44.js";import"./ChevronSelectorVertical-D8NLW3aV.js";import"./UserSquare-B1jSdGVS.js";import"./Copy01-V7GirmsP.js";import"./CreditCard01-DlBr5Kei.js";import"./DotsVertical-DE1RrMZs.js";import"./Image01-CJFRkMXP.js";import"./Globe04-C-hJB9ic.js";import"./SwitchHorizontal01-CMscdcfe.js";import"./Key01-BH_Io8ws.js";import"./Link01-BkANjVDr.js";import"./Minus-BwkA6Ip-.js";import"./Monitor01-mSGRD2AJ.js";import"./Sun-X-JIUgrn.js";import"./Play-CBQYMq3X.js";import"./Plus-C71dI_wT.js";import"./SearchMd-DU_oXGnf.js";import"./Trash01-5TBIiVL1.js";import"./Upload01-BU-XpefE.js";import"./Users01-BdkxkowI.js";import"./XClose-CDN_v21b.js";import"./tooltip-Brg7rMxu.js";import"./index-nip7iOYK.js";import"./toolbar-icon-button-BucahLbT.js";import"./shell-layout-Clz71xPl.js";import"./use-deployment-admin-CxT-vvMI.js";import"./admin-fetch-BhTJlAsX.js";import"./use-project-scope-PXmIipBd.js";import"./repository-binding-CTtYHb-Z.js";import"./use-clock-tick-UZOKVfKg.js";import"./command-BIb5FsHz.js";import"./index-DsiaaSSc.js";import"./integration-icon-ChUs9lab.js";import"./project-icon-4djiAraX.js";import"./new-project-dialog-DNY2vbtl.js";import"./label-BuH5Zpb0.js";import"./repository-import-picker-C77VQar8.js";import"./use-navigate-to-agent-BF-f4wie.js";import"./repository-picker-B7eKH7Vb.js";import"./useInfiniteQuery-dDc-QqMO.js";import"./infiniteQueryObserver-SqL3Niv0.js";import"./collection-search-B9JK80fQ.js";import"./use-debounced-value-DnQLcCv-.js";import"./use-organization-settings-DEIq_9Uh.js";import"./required-auth-layout-72vwEXGr.js";import"./autosend-ymUlN8FG.js";import"./use-org-sso-0OPGq_oO.js";import"./sheet-DWuyd_rj.js";import"./resizable-Dy8CIRPz.js";import"./preview-content-DRTZx9Bm.js";import"./icon-button-zFSlO6o0.js";import"./file-share-button-DUzrxnvD.js";import"./use-org-fs-rZplhn-U.js";import"./popover-CnAr_EpU.js";import"./file-preview-DVzYKzBM.js";import"./utils-DadC4ah8.js";import"./editor-CAg6_OHN.js";import"./file-type-icon-DgEz6vKD.js";import"./markdown-DI6hVa7Y.js";import"./use-copy-BSSYnYt9.js";import"./location-V0VwTJTt.js";import"./index-B8dQ7TV1.js";import"./extract-connection-data-BlzNpU0g.js";import"./metadata-D72DunRR.js";import"./connection--sIRN7Zz.js";import"./url-slug-BsWc5zfO.js";import"./chat-context-BkD7cnTX.js";import"./use-decopilot-events-CN2WGi1W.js";import"./use-ai-providers-x8ij_PJo.js";import"./build-improve-prompt-doc-CtlNAkdJ.js";import"./empty-state-Cnib0rT2.js";import"./use-date-fns-locale-bZYQDNW6.js";import"./mcp-oauth-CRXIwZNg.js";import"./mcp-oauth-CblPqKgI.js";import"./textarea-CAKcv24n.js";import"./use-connection-Cgc61Xtr.js";import"./use-debounced-autosave-D_8PFTvj.js";import"./add-connection-dialog-CMyo6oKy.js";import"./connection-card-PkrvBZMA.js";import"./connection-slug-CITJ0kGN.js";import"./drawer-Cxv0RJJc.js";import"./form-eY6ZFlTm.js";import"./select-BMOocRM-.js";import"./index-BdQq_4o_.js";import"./schema-I274PqDR.js";import"./connection-form-helpers-BrcWs3bo.js";import"./authenticate-and-persist-oauth-DvAD85kB.js";import"./collection-tabs-BSiUMQsV.js";import"./badge-CpDbvGYV.js";import"./use-infinite-scroll-bLa9D24Y.js";import"./useSuspenseInfiniteQuery-DdDhWqvv.js";import"./checkbox-DCZoKc7p.js";import"./search-input-uZhyE3_X.js";import"./use-mcp-auth-status-B97IRKUL.js";import"./types-U_XTGsEf.js";import"./use-mcp-tools-Cj7uxxfh.js";import"./use-mcp-prompts-MX-NMwu3.js";import"./utils-CVEq3hMx.js";import"./switch-B_9nxf01.js";import"./scroll-area-BED1KeeA.js";import"./experiments-tab-choice-BF5vCkwx.js";import"./use-project-native-view-presence-CVHdUdbq.js";import"./match-site-slug-config-D3fUJ6vX.js";import"./use-file-configs-BgZRiuct.js";import"./site-slug-DebpOoQq.js";import"./optimistic-project-sidebar-views-C0OxSQE7.js";import"./sections-By49OdzN.js";import"./virtual-mcp-BDwuOLFs.js";import"./sandbox-url-D3mC8qhT.js";import"./secret-picker-BLUn_4nc.js";import"./use-secrets-B8Abfs3j.js";import"./omit-sandbox-map-jj4lCB2U.js";import"./app-preview-url-9Od4s8Sz.js";import"./serial-task-queue-CGOeQgpr.js";function b(r){const t=a.c(5),{path:m}=r,{closePanel:p}=u();let o;t[0]!==p?(o=()=>p(),t[0]=p,t[1]=o):o=t[1];const i=o;let s;return t[2]!==i||t[3]!==m?(s=e.jsx(l,{previewPath:m,onClose:i,showSeeInLibrary:!0}),t[2]=i,t[3]=m,t[4]=s):s=t[4],s}function x(){const r=a.c(4);let t;r[0]===Symbol.for("react.memo_cache_sentinel")?(t={strict:!1},r[0]=t):t=r[0];const m=n(t),p=h(),o="path"in m&&typeof m.path=="string"?m.path:void 0;let i;return r[1]!==o||r[2]!==p?(i=o?e.jsx(b,{path:o},o):e.jsx(f,{virtualMcpId:p}),r[1]=o,r[2]=p,r[3]=i):i=r[3],i}function Xr(){const r=a.c(1);let t;return r[0]===Symbol.for("react.memo_cache_sentinel")?(t=e.jsx(c.Content,{children:e.jsx(x,{})}),r[0]=t):t=r[0],t}export{Xr as default};
@@ -1 +0,0 @@
1
- import{c as e,j as r,bU as n}from"./index-XCJY2Rrb.js";import{C as s}from"./index-fxFKE7Rw.js";import{C as a}from"./cdn-tab-Bpp4qG9y.js";import{S as c}from"./settings-tab-BWjVxYyu.js";import{e as u}from"./use-organization-settings-DEIq_9Uh.js";import{b as l}from"./thread-route-D3729KYI.js";import{F as f}from"./feature-gate-BMkqzt-o.js";import"./use-mobile-Dejc85O1.js";import"./use-sidebar-collapsed-j-XPIanS.js";import"./use-chat-layout-state-NN7EAnzB.js";import"./use-panel-navigate-BgatPgUi.js";import"./use-project-scope-PXmIipBd.js";import"./repository-binding-CTtYHb-Z.js";import"./use-mcp-client-hu17ZOJ8.js";import"./auth-BskCOxxm.js";import"./thread-intent-BsxGmuSR.js";import"./delay-CnY5UFtP.js";import"./backoff-CrEUbyZT.js";import"./watch-sse-pool-oOrd5Rne.js";import"./task-board-Dm8bNO3K.js";import"./schema-DYbCJAzi.js";import"./slugify-CEUa2lfQ.js";import"./agent-icon-B_qYhKCV.js";import"./AlertCircle-DRnRYwqq.js";import"./Tool01-BWgVn6V3.js";import"./ArrowUp-DCa9i3G5.js";import"./ArrowLeft-dhJPRoJc.js";import"./LinkBroken01-K245w0c9.js";import"./ShoppingBag01-BjpYBEx2.js";import"./ZoomOut-D1ZMZ7Ql.js";import"./Building02-CVQp36XY.js";import"./CheckCircle-DXy-8Gdi.js";import"./ChevronUp-CF7bSX44.js";import"./ChevronSelectorVertical-D8NLW3aV.js";import"./UserSquare-B1jSdGVS.js";import"./Copy01-V7GirmsP.js";import"./CreditCard01-DlBr5Kei.js";import"./DotsVertical-DE1RrMZs.js";import"./Image01-CJFRkMXP.js";import"./Globe04-C-hJB9ic.js";import"./SwitchHorizontal01-CMscdcfe.js";import"./Key01-BH_Io8ws.js";import"./Link01-BkANjVDr.js";import"./Minus-BwkA6Ip-.js";import"./Monitor01-mSGRD2AJ.js";import"./Sun-X-JIUgrn.js";import"./Play-CBQYMq3X.js";import"./Plus-C71dI_wT.js";import"./SearchMd-DU_oXGnf.js";import"./Trash01-5TBIiVL1.js";import"./Upload01-BU-XpefE.js";import"./Users01-BdkxkowI.js";import"./XClose-CDN_v21b.js";import"./tooltip-Brg7rMxu.js";import"./index-nip7iOYK.js";import"./toolbar-icon-button-BucahLbT.js";import"./shell-layout-Clz71xPl.js";import"./use-deployment-admin-CxT-vvMI.js";import"./admin-fetch-BhTJlAsX.js";import"./use-clock-tick-UZOKVfKg.js";import"./command-BIb5FsHz.js";import"./index-DsiaaSSc.js";import"./integration-icon-ChUs9lab.js";import"./project-icon-4djiAraX.js";import"./new-project-dialog-DNY2vbtl.js";import"./label-BuH5Zpb0.js";import"./repository-import-picker-C77VQar8.js";import"./use-navigate-to-agent-BF-f4wie.js";import"./repository-picker-B7eKH7Vb.js";import"./useInfiniteQuery-dDc-QqMO.js";import"./infiniteQueryObserver-SqL3Niv0.js";import"./collection-search-B9JK80fQ.js";import"./use-debounced-value-DnQLcCv-.js";import"./required-auth-layout-72vwEXGr.js";import"./autosend-ymUlN8FG.js";import"./use-org-sso-0OPGq_oO.js";import"./sheet-DWuyd_rj.js";import"./resizable-Dy8CIRPz.js";import"./chart-o_A4s6u6.js";import"./index-AYos0XvL.js";import"./symbol-CSicVVsL.js";import"./CategoricalChart-iu2AXlfn.js";import"./empty-state-CbtDK1p4.js";import"./popover-CnAr_EpU.js";import"./select-BMOocRM-.js";import"./index-BdQq_4o_.js";import"./site-slug-DebpOoQq.js";import"./experiments-tab-choice-BF5vCkwx.js";import"./AreaChart-qZjFj5zm.js";import"./CartesianChart-Bgq-aAjd.js";import"./ReferenceLine-CzNoqyDS.js";import"./order-monitor-day-CUDQDazN.js";import"./badge-CpDbvGYV.js";import"./calendar-CW9zUPQR.js";import"./useQueries-CNIDshJH.js";import"./ErrorBarContext-D5PscfUk.js";import"./ActiveShapeUtils-y_apbvuY.js";import"./Sector-DzJLml2K.js";import"./index-B8dQ7TV1.js";import"./extract-connection-data-BlzNpU0g.js";import"./metadata-D72DunRR.js";import"./connection--sIRN7Zz.js";import"./url-slug-BsWc5zfO.js";import"./chat-context-BkD7cnTX.js";import"./use-decopilot-events-CN2WGi1W.js";import"./use-ai-providers-x8ij_PJo.js";import"./location-V0VwTJTt.js";import"./build-improve-prompt-doc-CtlNAkdJ.js";import"./empty-state-Cnib0rT2.js";import"./use-date-fns-locale-bZYQDNW6.js";import"./mcp-oauth-CRXIwZNg.js";import"./mcp-oauth-CblPqKgI.js";import"./textarea-CAKcv24n.js";import"./use-connection-Cgc61Xtr.js";import"./use-debounced-autosave-D_8PFTvj.js";import"./add-connection-dialog-CMyo6oKy.js";import"./connection-card-PkrvBZMA.js";import"./connection-slug-CITJ0kGN.js";import"./drawer-Cxv0RJJc.js";import"./form-eY6ZFlTm.js";import"./schema-I274PqDR.js";import"./connection-form-helpers-BrcWs3bo.js";import"./authenticate-and-persist-oauth-DvAD85kB.js";import"./collection-tabs-BSiUMQsV.js";import"./use-infinite-scroll-bLa9D24Y.js";import"./useSuspenseInfiniteQuery-DdDhWqvv.js";import"./file-type-icon-DgEz6vKD.js";import"./use-org-fs-rZplhn-U.js";import"./checkbox-DCZoKc7p.js";import"./search-input-uZhyE3_X.js";import"./use-mcp-auth-status-B97IRKUL.js";import"./types-U_XTGsEf.js";import"./use-mcp-tools-Cj7uxxfh.js";import"./use-mcp-prompts-MX-NMwu3.js";import"./utils-CVEq3hMx.js";import"./switch-B_9nxf01.js";import"./scroll-area-BED1KeeA.js";import"./use-project-native-view-presence-CVHdUdbq.js";import"./match-site-slug-config-D3fUJ6vX.js";import"./use-file-configs-BgZRiuct.js";import"./optimistic-project-sidebar-views-C0OxSQE7.js";import"./sections-By49OdzN.js";import"./use-copy-BSSYnYt9.js";import"./virtual-mcp-BDwuOLFs.js";import"./sandbox-url-D3mC8qhT.js";import"./secret-picker-BLUn_4nc.js";import"./use-secrets-B8Abfs3j.js";import"./omit-sandbox-map-jj4lCB2U.js";import"./app-preview-url-9Od4s8Sz.js";import"./serial-task-queue-CGOeQgpr.js";import"./feature-paywall-BNIBgu15.js";import"./plan-ladder-BzTsrX2B.js";function x(){const t=e.c(4),o=l(),p=u(),i=n();let m;return t[0]!==i||t[1]!==p.monitor||t[2]!==o?(m=p.monitor&&(i.monitorEnabled===!0||i.auth.localMode===!0)?r.jsx(a,{virtualMcpId:o}):r.jsx(c,{virtualMcpId:o}),t[0]=i,t[1]=p.monitor,t[2]=o,t[3]=m):m=t[3],m}function er(){const t=e.c(1);let o;return t[0]===Symbol.for("react.memo_cache_sentinel")?(o=r.jsx(s.Content,{children:r.jsx(f,{feature:"monitoring",children:r.jsx(x,{})})}),t[0]=o):o=t[0],o}export{er as default};